{"version":3,"file":"app.js","mappings":"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CJ,GACrEK,GAAqC,IAAgCJ,GACrEK,GAAqC,IAAgCJ,GACrE4F,GAAqC,IAAgCvF,GACrEwF,GAAqC,IAAgCvF,GACrEwF,GAAqC,IAAgCvF,GACrEwF,GAAqC,IAAgCvF,GACrEwF,GAAqC,IAAgCvF,GACrEwF,GAAqC,IAAgCvF,GACrEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,GACtEwF,GAAsC,IAAgCvF,IACtEwF,GAAsC,IAAgCvF,IACtEwF,GAAsC,IAAgCvF,IACtEwF,GAAsC,IAAgCvF,IACtEwF,GAAsC,IAAgCvF,IACtEwF,GAAsC,IAAgCvF,IACtEwF,GAAsC,IAAgCvF,IACtEwF,GAAsC,IAAgCvF,IACtEwF,GAAsC,IAAgCvF,IACtEwF,GAAsC,IAAgCvF,IACtEwF,GAAsC,IAAgCvF,IACtEwF,GAAsC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G,kBAAmB,GACnBC,QAAS,CACL,OAAU,qBAIlB,OAAO/pB,KAAKopB,KAAKK,GAAU9b,MAAK,SAACqc,GAC7B,OAAO,EAAKulB,eAAevlB,EAC/B,IAAG,SAACA,GACA,GAAIA,EAAUE,OACV,OAAO,EAAKqlB,eAAevlB,GAC/B,MAAMA,CACV,GACJ,EAEU,YAAAulB,eAAV,SAAyBplB,GACrB,IAKQC,EALFF,EAASC,EAASD,OAGxB,GAAe,MAAXA,EAIA,OADAE,EAA8B,MAFxBC,EAAgBF,EAASpd,MAEI,KAAO6c,KAAK5jB,MAAMqkB,EAAerqB,KAAKmpB,kBAClEnpB,KAAKqpB,EAAEiB,QAAQF,GAEnB,GAAe,MAAXF,GAA6B,MAAXA,EAAgB,CACzC,IAAMG,EAAgBF,EAASpd,KAC/B,OAAOwd,EAAevqB,KAAKqpB,EAAG,uCAAwCa,EAAQG,EAT9D,CAAC,EAUrB,CACA,OAAOrqB,KAAKqpB,EAAEiB,QAAgB,KAClC,CACJ,CAvIA,GAuaA,SAAYrC,GACR,iDACA,iFACA,6DACA,+EACA,2FACA,mEACA,yEACA,qFACA,mEACA,gFACA,gEACA,4EACA,0DACA,kFACA,wDACA,8DACA,wDACA,oEACA,kDACA,0EACA,gDACA,sDACA,kCACA,sDACA,kDACA,sEACA,oEACA,0EACA,4FACA,4FACA,wDACA,gDACA,oEACA,4DACA,0FACA,oFACA,gGACA,0EACA,sFACA,wGACA,oHACA,oEACA,kFACA,kHACA,oEACA,kFACA,kHACA,8EACA,oEACA,8FACA,8EACA,oFACA,gGACA,0EACA,sFACA,sEACA,kFACA,wDACA,4CACA,oEACA,0CACA,gDACA,8EACA,0FACA,oFACA,0EACA,gGACA,sFACA,gDACA,wDACA,4CACA,4DACA,wEACA,sEACA,kFACA,sEACA,oGACA,0FACA,gHACA,sGACA,sGACA,4FACA,kHACA,wGACA,8EACA,0FACA,kEACA,8EACA,0DACA,sEACA,sEACA,kFACA,gEACA,0EACA,4EACA,wFACA,kEACA,8EACA,2FACA,qGACA,2FACA,iHACA,uGACA,uGACA,6FACA,mHACA,yGACA,2FACA,+EACA,mFACA,yEACA,qFACA,uEACA,mFACA,uEACA,mFACA,yDACA,yDACA,2DACA,+CACA,mEACA,uEACA,6DACA,+DACA,2EACA,uDACA,yDACA,mEACA,+EACA,2FACA,+EACA,mFACA,yEACA,qFACA,uEACA,mFACA,mFACA,yEACA,qFACA,yFACA,iEACA,6EACA,6DACA,uEACA,mFACA,mEACA,+EACA,qFACA,2EACA,iGACA,iEACA,uEACA,mFACA,6EACA,+EACA,iGACA,mEACA,uEACA,uEACA,mGACA,2FACA,8EACH,CAnKD,CAAYA,IAAAA,EAAsB,KAuMlC,SAAYC,GACR,iCACA,yBACA,qCACA,iCACA,uBACA,iCACA,uBACA,+BACA,uBACA,wBACA,oBACA,gDACA,4BACA,wCACA,4CACA,4BACA,wDACA,4DACA,gCACA,sBACA,8BACA,sDACA,8DACA,wDACA,kDACA,4CACA,oCACA,kDACA,sDACA,oDACA,sDACA,4CACA,0CACA,kDACA,gCACA,wCACA,gDACA,sDACA,0CACA,8CACA,8CACA,4DACA,sDACA,8CACA,0CACA,sCACA,gCACA,4CACA,kDACA,sDACA,sDACA,gDACA,wDACA,gDACA,oDACA,oDACA,8CACA,kDACA,sDACA,gDACA,sDACA,yCACH,CA/DD,CAAYA,IAAAA,EAAiB,KAiE7B,SAAYC,GACR,qBACA,mCACA,2CACA,uBACA,wCACH,CAND,CAAYA,IAAAA,EAAsB,KAQlC,SAAYC,GACR,mDACA,mEACA,qEACA,2EACA,qEACA,mEACA,2EACA,qEACA,mEACA,sEACA,8DACA,gEACA,sFACA,wGACA,oEACA,4EACA,oEACA,8DACA,sEACA,gEACA,wGACA,sFACA,8EACA,sEACA,oFACA,4EACA,sFACA,wGACA,4EACA,oEACA,sFACA,wGACA,oEACA,8EACA,sEACA,oFACA,4EACA,4GACA,oGACA,wGACA,4EACA,oEACA,wDACA,4GACA,oGACA,wGACA,8EACA,sEACA,oFACA,4EACA,oDACA,wGACA,wDACA,4EACA,oEACA,wDACA,8EACA,sEACA,oFACA,4EACA,oGACA,uGACH,CA/DD,CAAYA,IAAAA,EAAO,KAiEnB,SAAYC,GACR,mDACA,uDACA,+DACA,iCACA,mCACA,6CACA,+CACA,uBACA,8BACA,sCACA,wDACA,wBACA,8BACA,wBACA,wCACA,kCACA,4DACA,0DACA,8DACA,8BACA,0DACA,sDACA,8DACA,kDACA,0CACA,sCACA,0CACA,oDACA,0CACA,sDACA,8DACA,wDACA,gDACA,8CACA,wDACA,8BACA,oCACA,8BACA,oDACA,sDACA,0CACA,gCACA,gCACA,sCACA,sDACA,wDACA,4CACA,wDACA,0DACA,wDACA,sDACA,oEACA,4EACA,wEACA,sDACA,4CACA,sFACA,8DACA,8EACA,wDACA,8CACA,gCACA,wEACA,uEACH,CAjED,CAAYA,IAAAA,EAAe,KA8P3B,SAAYC,GACR,2DACA,iEACA,yCACA,8CACH,CALD,CAAYA,IAAAA,EAAkB,KAiC9B,SAAYC,GACR,eACA,eACA,eACA,cACH,CALD,CAAYA,IAAAA,EAAU,KAiqBtB,SAAYC,GACR,6BACA,+BACA,2BACA,0BACH,CALD,CAAYA,IAAAA,EAAa,KAOzB,SAAYC,GACR,iBACA,iCACA,mCACA,yCACA,mDACA,iDACA,2CACA,6CACA,iEACA,sEACA,kCACA,sBACA,iBACH,CAdD,CAAYA,IAAAA,EAAU,KAgBtB,SAAYC,GACR,yBACA,6BACA,uCACA,6DACA,yBACA,iDACA,6DACA,uEACA,wBACA,gCACA,kCACA,oCACA,oDACA,0EACA,wEACA,8DACA,0DACA,kFACA,wDACA,8DACA,wDACA,oEACA,0CACA,4CACA,kDACA,0EACA,gDACA,sDACA,4DACA,sCACA,wDACA,sEACA,0CACA,4BACA,4BACA,4BACA,wBACA,0CACA,4DACA,gDACA,4DACA,4CACA,8BACA,wEACA,8DACA,8CACA,uCACH,CAhDD,CAAYA,IAAAA,EAAoB,KAkDhC,SAAYC,GACR,eACA,2BACA,wBACH,CAJD,CAAYA,IAAAA,EAAiB,KAoD7B,SAAYC,GACR,yBACA,qBACA,yBACA,8BACH,CALD,CAAYA,IAAAA,EAAmB,KAO/B,SAAYC,GACR,qDACA,yDACA,mHACA,mGACA,iEACA,uCACA,uDACA,qDACA,iEACA,4FACA,oGACA,sBACA,oDACA,4EACA,4DACA,kFACA,sDACA,sCACA,0CACA,4DACA,oDACA,oCACA,0HACA,gJACA,8FACA,wIACA,gGACA,oFACA,oHACA,gGACA,oFACA,gFACA,oFACA,kEACA,gKACA,gFACA,gFACA,kGACA,8EACA,sDACA,8DACA,sCACA,kGACA,8CACA,kGACA,8IACA,gIACA,sEACA,8DACA,sDACA,8EACA,0FACA,gDACA,0EACA,kLACA,8CACA,gFACA,8CACA,kEACA,0EACA,8CACA,sEACA,sCACA,oBACA,0DACA,gCACA,sEACA,4CACA,kEACA,8CACA,oCACA,8CACA,wCACA,wCACA,8BACA,sDACA,sEACA,4DACA,oFACA,4EACA,wGACA,4GACA,gCACA,kDACA,gDACA,gEACA,wGACA,8CACA,0FACA,oDACA,sFACA,kCACH,CA7FD,CAAYA,IAAAA,EAAiB,KAuc7B,SAAYC,GACR,mBACA,2CACA,6BACA,gBACH,CALD,CAAYA,IAAAA,EAAgC,KA4c5C,SAAYC,GACR,6BACA,iCACA,qCACA,6CACA,sCACH,CAND,CAAYA,IAAAA,EAAS,KAy6GrB,kBAOI,WAAY/mB,EAAiBkoB,EAAgBC,EAAkBJ,EAAkCle,GAC7F,QAAK,YAAE,YASD,EAAA2jC,oBAAqB,EAP3B,EAAKxtC,QAAUA,EACf,EAAKkoB,OAASA,EACd,EAAKC,SAAWA,EAChB,EAAKJ,QAAUA,EACf,EAAKle,OAASA,GAClB,CAOJ,OAtBsC,OAmB3B,EAAA2jC,mBAAP,SAA0BC,GACtB,OAAkC,IAA3BA,EAAID,kBACf,EACJ,EAtBA,CAAsCntC,OAwBtC,SAASkoB,EAAelB,EAAiBrnB,EAAiBkoB,EAAgBC,EAAkBJ,EAAkCle,GAC1H,OAAIA,QACOwd,EAAEqmB,OAAO7jC,GAETwd,EAAEqmB,OAAO,IAAIC,EAAiB3tC,EAASkoB,EAAQC,EAAUJ,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","sources":["webpack://vdot-portal-frontend/webpack/runtime/chunk loaded","webpack://vdot-portal-frontend/webpack/runtime/load script","webpack://vdot-portal-frontend/./libs/ui-select/select.js","webpack://vdot-portal-frontend/./app/dashboard/dashboard-grid/css/grid-filter.css","webpack://vdot-portal-frontend/./css/site.css","webpack://vdot-portal-frontend/./css/wvs-icons.css","webpack://vdot-portal-frontend/./libs/ui-select/select.css","webpack://vdot-portal-frontend/./app/api.ts","webpack://vdot-portal-frontend/./app/lazy-states.ts","webpack://vdot-portal-frontend/./app/config-routes.ts","webpack://vdot-portal-frontend/./app/shared/util/parseFormIdFromAppId.ts","webpack://vdot-portal-frontend/./app/dashboard/bulk-submit/bulk-submit-form/bulk-submit-form.controller.ts","webpack://vdot-portal-frontend/./app/forms-system/util/registerTheseStates.ts","webpack://vdot-portal-frontend/./app/home/home.controller.ts","webpack://vdot-portal-frontend/./app/home/home.component.ts","webpack://vdot-portal-frontend/./app/home/home.html","webpack://vdot-portal-frontend/./app/home/home.state.ts","webpack://vdot-portal-frontend/./app/home/public/home-public.component.ts","webpack://vdot-portal-frontend/./app/home/public/home-public.html","webpack://vdot-portal-frontend/./libs/ui-select/select.css?8f52","webpack://vdot-portal-frontend/./app/lib.ts","webpack://vdot-portal-frontend/./css/site.css?fa31","webpack://vdot-portal-frontend/./css/wvs-icons.css?96af","webpack://vdot-portal-frontend/./app/site-shim.ts","webpack://vdot-portal-frontend/./app/components/discussion/discussion-navbar.directive.ts","webpack://vdot-portal-frontend/./app/components/discussion/discussion-navbar.html","webpack://vdot-portal-frontend/./app/components/discussion/discussion-overview-icon.directive.ts","webpack://vdot-portal-frontend/./app/components/discussion/discussion-overview-icon.html","webpack://vdot-portal-frontend/./app/components/discussion/discussion.module.ts","webpack://vdot-portal-frontend/./app/components/utilities/bulk-attachments.controller.ts","webpack://vdot-portal-frontend/./app/shared/components/reviewPriority/review-priority.controller.ts","webpack://vdot-portal-frontend/./app/shared/components/reviewPriority/review-priority.component.ts","webpack://vdot-portal-frontend/./app/shared/components/reviewPriority/review-priority.html","webpack://vdot-portal-frontend/./app/shared/directives/vita.password.directive.ts","webpack://vdot-portal-frontend/./app/shared/directives/circle-number.directive.ts","webpack://vdot-portal-frontend/./app/shared/directives/circle-number.html","webpack://vdot-portal-frontend/./app/shared/directives/restrict-to.directive.ts","webpack://vdot-portal-frontend/./app/shared/directives/authorized.directive.ts","webpack://vdot-portal-frontend/./app/shared/directives/if-authorized.directive.ts","webpack://vdot-portal-frontend/./app/shared/util/getBlockNodes.ts","webpack://vdot-portal-frontend/./app/shared/directives/scroll-to.directive.ts","webpack://vdot-portal-frontend/./app/shared/directives/pearl.directive.ts","webpack://vdot-portal-frontend/./app/shared/directives/pearl.html","webpack://vdot-portal-frontend/./app/shared/directives/required-indication-icon.directive.ts","webpack://vdot-portal-frontend/./app/shared/directives/required-indication-icon.html","webpack://vdot-portal-frontend/./app/shared/directives/form-navigator.directive.ts","webpack://vdot-portal-frontend/./app/shared/directives/form-navigator.html","webpack://vdot-portal-frontend/./app/shared/directives/required-attachment.directive.ts","webpack://vdot-portal-frontend/./app/shared/directives/required-attachment.html","webpack://vdot-portal-frontend/./app/shared/directives/download-scorecard.directive.ts","webpack://vdot-portal-frontend/./app/shared/directives/has-permission.directive.ts","webpack://vdot-portal-frontend/./app/shared/directives/pdf-export.directive.ts","webpack://vdot-portal-frontend/./app/shared/directives/pdf-export.html","webpack://vdot-portal-frontend/./app/shared/services/errorLog.factory.ts","webpack://vdot-portal-frontend/./app/shared/directives/compare-diff-button.directive.ts","webpack://vdot-portal-frontend/./app/shared/directives/compare-diff-button.html","webpack://vdot-portal-frontend/./app/shared/directives/grid-filters/grid-filters.directive.ts","webpack://vdot-portal-frontend/./app/shared/directives/grid-filters/grid-filters.html","webpack://vdot-portal-frontend/./app/shared/common.module.ts","webpack://vdot-portal-frontend/./app/shared/filters/tel.ts","webpack://vdot-portal-frontend/./app/shared/filters/startFrom.ts","webpack://vdot-portal-frontend/./app/shared/filters/range.ts","webpack://vdot-portal-frontend/./app/shared/filters/convertDate.ts","webpack://vdot-portal-frontend/./app/shared/filters/index.ts","webpack://vdot-portal-frontend/./app/shared/header/header.html","webpack://vdot-portal-frontend/./app/shared/header/main-header.directive.ts","webpack://vdot-portal-frontend/./app/shared/modules/app.error.module.ts","webpack://vdot-portal-frontend/./app/shared/modules/model.state.error.directive.html","webpack://vdot-portal-frontend/./app/account/login/login.controller.ts","webpack://vdot-portal-frontend/./app/account/login/noticeModal.html","webpack://vdot-portal-frontend/./app/account/login/login.component.ts","webpack://vdot-portal-frontend/./app/account/login/login.html","webpack://vdot-portal-frontend/./app/account/login/forgot-password.controller.ts","webpack://vdot-portal-frontend/./app/account/login/forgot-password.component.ts","webpack://vdot-portal-frontend/./app/account/login/forgot-password.html","webpack://vdot-portal-frontend/./app/home/home.module.ts","webpack://vdot-portal-frontend/./app/home/home-footer/home-footer.component.ts","webpack://vdot-portal-frontend/./app/home/home-footer/home-footer.html","webpack://vdot-portal-frontend/./app/error/404.html","webpack://vdot-portal-frontend/./app/error/error.states.ts","webpack://vdot-portal-frontend/./app/error/500.html","webpack://vdot-portal-frontend/./app/error/401.html","webpack://vdot-portal-frontend/./app/error/403.html","webpack://vdot-portal-frontend/./app/error/error.module.ts","webpack://vdot-portal-frontend/./app/app-module.ts","webpack://vdot-portal-frontend/./app/app-bootstrap.ts","webpack://vdot-portal-frontend/./app/legacy/applications/application/forms/2022/smart-scale/full/sups-section/enter-sups-button/enter-sups-button.controller.ts","webpack://vdot-portal-frontend/./app/legacy/applications/application/forms/2022/smart-scale/full/sups-section/sups-section.controller.ts","webpack://vdot-portal-frontend/./app/legacy/services/applicationComparison.ts","webpack://vdot-portal-frontend/./app/shared/util/capitalize.ts","webpack://vdot-portal-frontend/./app/legacy/services/entityManager.ts","webpack://vdot-portal-frontend/./app/react/components/areas-served/areas-served.types.ts","webpack://vdot-portal-frontend/./app/react/components/modules/modules.types.ts","webpack://vdot-portal-frontend/./app/shared/LegacyFidRouteDictionary.ts","webpack://vdot-portal-frontend/./app/shared/api-clients/application-client.service.ts","webpack://vdot-portal-frontend/./app/shared/api-clients/discussion-client.service.ts","webpack://vdot-portal-frontend/./app/shared/api-clients/report-client.service.ts","webpack://vdot-portal-frontend/./app/shared/api-clients/index.ts","webpack://vdot-portal-frontend/./app/shared/controllers/modal.controller.ts","webpack://vdot-portal-frontend/./app/shared/directives/comments-panel/comments-panel.html","webpack://vdot-portal-frontend/./app/shared/directives/comments-panel/comments-panel.directive.ts","webpack://vdot-portal-frontend/./app/shared/enums.ts","webpack://vdot-portal-frontend/./app/shared/services/SessionTimer.ts","webpack://vdot-portal-frontend/./app/shared/services/application.service.ts","webpack://vdot-portal-frontend/./app/shared/services/auth.events.ts","webpack://vdot-portal-frontend/./app/shared/services/auth.service.ts","webpack://vdot-portal-frontend/./app/shared/services/authInterceptor.service.ts","webpack://vdot-portal-frontend/./app/shared/services/comparison.service.ts","webpack://vdot-portal-frontend/./app/shared/services/event.service.ts","webpack://vdot-portal-frontend/./app/shared/services/form.service.ts","webpack://vdot-portal-frontend/./app/shared/services/forms-api-service.ts","webpack://vdot-portal-frontend/./app/shared/services/discussion.service.ts","webpack://vdot-portal-frontend/./app/shared/services/fileAttachment.service.ts","webpack://vdot-portal-frontend/./app/shared/services/lookup.service.ts","webpack://vdot-portal-frontend/./app/shared/services/notice.service.ts","webpack://vdot-portal-frontend/./app/shared/services/organization.service.ts","webpack://vdot-portal-frontend/./app/shared/services/project.service.ts","webpack://vdot-portal-frontend/./app/shared/services/requiredAttachments.service.ts","webpack://vdot-portal-frontend/./app/shared/services/reviewPriority.service.ts","webpack://vdot-portal-frontend/./app/shared/services/role.service.ts","webpack://vdot-portal-frontend/./app/shared/services/smoothScrolling.service.ts","webpack://vdot-portal-frontend/./app/shared/services/user.service.ts","webpack://vdot-portal-frontend/./app/shared/services/validation.service.ts","webpack://vdot-portal-frontend/./app/shared/services/index.ts","webpack://vdot-portal-frontend/./app/shared/services/maintenance.service.ts","webpack://vdot-portal-frontend/./app/shared/services/programApplication.service.ts","webpack://vdot-portal-frontend/./app/shared/services/readinessApproval.service.ts","webpack://vdot-portal-frontend/./app/shared/services/syip-active.service.ts","webpack://vdot-portal-frontend/./app/shared/services/syip.service.ts","webpack://vdot-portal-frontend/./app/shared/services/validationTool.service.ts","webpack://vdot-portal-frontend/./app/shared/util/formatted-date.ts","webpack://vdot-portal-frontend/./app/shared/util/isNullOrUndefined.ts","webpack://vdot-portal-frontend/./app/shared/util/openWindowWithPost.ts","webpack://vdot-portal-frontend/./app/shared/util/page-title.ts","webpack://vdot-portal-frontend/./app/shared/waitingDialog.ts","webpack://vdot-portal-frontend/./app/site.ts","webpack://vdot-portal-frontend/webpack/bootstrap","webpack://vdot-portal-frontend/webpack/runtime/compat get default export","webpack://vdot-portal-frontend/webpack/runtime/define property getters","webpack://vdot-portal-frontend/webpack/runtime/ensure chunk","webpack://vdot-portal-frontend/webpack/runtime/get javascript chunk filename","webpack://vdot-portal-frontend/webpack/runtime/global","webpack://vdot-portal-frontend/webpack/runtime/hasOwnProperty shorthand","webpack://vdot-portal-frontend/webpack/runtime/make namespace object","webpack://vdot-portal-frontend/webpack/runtime/node module decorator","webpack://vdot-portal-frontend/webpack/runtime/publicPath","webpack://vdot-portal-frontend/webpack/runtime/jsonp chunk loading","webpack://vdot-portal-frontend/webpack/runtime/nonce","webpack://vdot-portal-frontend/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"vdot-portal-frontend:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/*!\r\n * ui-select\r\n * http://github.com/angular-ui/ui-select\r\n * Version: 0.19.7 - 2017-04-15T14:28:36.649Z\r\n * License: MIT\r\n */\r\n\r\n\r\n(function () { \r\n\"use strict\";\r\nvar KEY = {\r\n TAB: 9,\r\n ENTER: 13,\r\n ESC: 27,\r\n SPACE: 32,\r\n LEFT: 37,\r\n UP: 38,\r\n RIGHT: 39,\r\n DOWN: 40,\r\n SHIFT: 16,\r\n CTRL: 17,\r\n ALT: 18,\r\n PAGE_UP: 33,\r\n PAGE_DOWN: 34,\r\n HOME: 36,\r\n END: 35,\r\n BACKSPACE: 8,\r\n DELETE: 46,\r\n COMMAND: 91,\r\n\r\n MAP: { 91 : \"COMMAND\", 8 : \"BACKSPACE\" , 9 : \"TAB\" , 13 : \"ENTER\" , 16 : \"SHIFT\" , 17 : \"CTRL\" , 18 : \"ALT\" , 19 : \"PAUSEBREAK\" , 20 : \"CAPSLOCK\" , 27 : \"ESC\" , 32 : \"SPACE\" , 33 : \"PAGE_UP\", 34 : \"PAGE_DOWN\" , 35 : \"END\" , 36 : \"HOME\" , 37 : \"LEFT\" , 38 : \"UP\" , 39 : \"RIGHT\" , 40 : \"DOWN\" , 43 : \"+\" , 44 : \"PRINTSCREEN\" , 45 : \"INSERT\" , 46 : \"DELETE\", 48 : \"0\" , 49 : \"1\" , 50 : \"2\" , 51 : \"3\" , 52 : \"4\" , 53 : \"5\" , 54 : \"6\" , 55 : \"7\" , 56 : \"8\" , 57 : \"9\" , 59 : \";\", 61 : \"=\" , 65 : \"A\" , 66 : \"B\" , 67 : \"C\" , 68 : \"D\" , 69 : \"E\" , 70 : \"F\" , 71 : \"G\" , 72 : \"H\" , 73 : \"I\" , 74 : \"J\" , 75 : \"K\" , 76 : \"L\", 77 : \"M\" , 78 : \"N\" , 79 : \"O\" , 80 : \"P\" , 81 : \"Q\" , 82 : \"R\" , 83 : \"S\" , 84 : \"T\" , 85 : \"U\" , 86 : \"V\" , 87 : \"W\" , 88 : \"X\" , 89 : \"Y\" , 90 : \"Z\", 96 : \"0\" , 97 : \"1\" , 98 : \"2\" , 99 : \"3\" , 100 : \"4\" , 101 : \"5\" , 102 : \"6\" , 103 : \"7\" , 104 : \"8\" , 105 : \"9\", 106 : \"*\" , 107 : \"+\" , 109 : \"-\" , 110 : \".\" , 111 : \"/\", 112 : \"F1\" , 113 : \"F2\" , 114 : \"F3\" , 115 : \"F4\" , 116 : \"F5\" , 117 : \"F6\" , 118 : \"F7\" , 119 : \"F8\" , 120 : \"F9\" , 121 : \"F10\" , 122 : \"F11\" , 123 : \"F12\", 144 : \"NUMLOCK\" , 145 : \"SCROLLLOCK\" , 186 : \";\" , 187 : \"=\" , 188 : \",\" , 189 : \"-\" , 190 : \".\" , 191 : \"/\" , 192 : \"`\" , 219 : \"[\" , 220 : \"\\\\\" , 221 : \"]\" , 222 : \"'\"\r\n },\r\n\r\n isControl: function (e) {\r\n var k = e.which;\r\n switch (k) {\r\n case KEY.COMMAND:\r\n case KEY.SHIFT:\r\n case KEY.CTRL:\r\n case KEY.ALT:\r\n return true;\r\n }\r\n\r\n if (e.metaKey || e.ctrlKey || e.altKey) return true;\r\n\r\n return false;\r\n },\r\n isFunctionKey: function (k) {\r\n k = k.which ? k.which : k;\r\n return k >= 112 && k <= 123;\r\n },\r\n isVerticalMovement: function (k){\r\n return ~[KEY.UP, KEY.DOWN].indexOf(k);\r\n },\r\n isHorizontalMovement: function (k){\r\n return ~[KEY.LEFT,KEY.RIGHT,KEY.BACKSPACE,KEY.DELETE].indexOf(k);\r\n },\r\n toSeparator: function (k) {\r\n var sep = {ENTER:\"\\n\",TAB:\"\\t\",SPACE:\" \"}[k];\r\n if (sep) return sep;\r\n // return undefined for special keys other than enter, tab or space.\r\n // no way to use them to cut strings.\r\n return KEY[k] ? undefined : k;\r\n }\r\n };\r\n\r\nfunction isNil(value) {\r\n return angular.isUndefined(value) || value === null;\r\n}\r\n\r\n/**\r\n * Add querySelectorAll() to jqLite.\r\n *\r\n * jqLite find() is limited to lookups by tag name.\r\n * TODO This will change with future versions of AngularJS, to be removed when this happens\r\n *\r\n * See jqLite.find - why not use querySelectorAll? https://github.com/angular/angular.js/issues/3586\r\n * See feat(jqLite): use querySelectorAll instead of getElementsByTagName in jqLite.find https://github.com/angular/angular.js/pull/3598\r\n */\r\nif (angular.element.prototype.querySelectorAll === undefined) {\r\n angular.element.prototype.querySelectorAll = function(selector) {\r\n return angular.element(this[0].querySelectorAll(selector));\r\n };\r\n}\r\n\r\n/**\r\n * Add closest() to jqLite.\r\n */\r\nif (angular.element.prototype.closest === undefined) {\r\n angular.element.prototype.closest = function( selector) {\r\n var elem = this[0];\r\n var matchesSelector = elem.matches || elem.webkitMatchesSelector || elem.mozMatchesSelector || elem.msMatchesSelector;\r\n\r\n while (elem) {\r\n if (matchesSelector.bind(elem)(selector)) {\r\n return elem;\r\n } else {\r\n elem = elem.parentElement;\r\n }\r\n }\r\n return false;\r\n };\r\n}\r\n\r\nvar latestId = 0;\r\n\r\nvar uis = angular.module('ui.select', [])\r\n\r\n.constant('uiSelectConfig', {\r\n theme: 'bootstrap',\r\n searchEnabled: true,\r\n sortable: false,\r\n placeholder: '', // Empty by default, like HTML tag \");\r\n $compile(focusser)(scope);\r\n $select.focusser = focusser;\r\n\r\n //Input that will handle focus\r\n $select.focusInput = focusser;\r\n\r\n element.parent().append(focusser);\r\n focusser.bind(\"focus\", function(){\r\n scope.$evalAsync(function(){\r\n $select.focus = true;\r\n });\r\n });\r\n focusser.bind(\"blur\", function(){\r\n scope.$evalAsync(function(){\r\n $select.focus = false;\r\n });\r\n });\r\n focusser.bind(\"keydown\", function(e){\r\n\r\n if (e.which === KEY.BACKSPACE && $select.backspaceReset !== false) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n $select.select(undefined);\r\n scope.$apply();\r\n return;\r\n }\r\n\r\n if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC) {\r\n return;\r\n }\r\n\r\n if (e.which == KEY.DOWN || e.which == KEY.UP || e.which == KEY.ENTER || e.which == KEY.SPACE){\r\n e.preventDefault();\r\n e.stopPropagation();\r\n $select.activate();\r\n }\r\n\r\n scope.$digest();\r\n });\r\n\r\n focusser.bind(\"keyup input\", function(e){\r\n\r\n if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC || e.which == KEY.ENTER || e.which === KEY.BACKSPACE) {\r\n return;\r\n }\r\n\r\n $select.activate(focusser.val()); //User pressed some regular key, so we pass it to the search input\r\n focusser.val('');\r\n scope.$digest();\r\n\r\n });\r\n\r\n\r\n }\r\n };\r\n}]);\r\n\r\n// Make multiple matches sortable\r\nuis.directive('uiSelectSort', ['$timeout', 'uiSelectConfig', 'uiSelectMinErr', function($timeout, uiSelectConfig, uiSelectMinErr) {\r\n return {\r\n require: ['^^uiSelect', '^ngModel'],\r\n link: function(scope, element, attrs, ctrls) {\r\n if (scope[attrs.uiSelectSort] === null) {\r\n throw uiSelectMinErr('sort', 'Expected a list to sort');\r\n }\r\n\r\n var $select = ctrls[0];\r\n var $ngModel = ctrls[1];\r\n\r\n var options = angular.extend({\r\n axis: 'horizontal'\r\n },\r\n scope.$eval(attrs.uiSelectSortOptions));\r\n\r\n var axis = options.axis;\r\n var draggingClassName = 'dragging';\r\n var droppingClassName = 'dropping';\r\n var droppingBeforeClassName = 'dropping-before';\r\n var droppingAfterClassName = 'dropping-after';\r\n\r\n scope.$watch(function(){\r\n return $select.sortable;\r\n }, function(newValue){\r\n if (newValue) {\r\n element.attr('draggable', true);\r\n } else {\r\n element.removeAttr('draggable');\r\n }\r\n });\r\n\r\n element.on('dragstart', function(event) {\r\n element.addClass(draggingClassName);\r\n\r\n (event.dataTransfer || event.originalEvent.dataTransfer).setData('text', scope.$index.toString());\r\n });\r\n\r\n element.on('dragend', function() {\r\n removeClass(draggingClassName);\r\n });\r\n\r\n var move = function(from, to) {\r\n /*jshint validthis: true */\r\n this.splice(to, 0, this.splice(from, 1)[0]);\r\n };\r\n\r\n var removeClass = function(className) {\r\n angular.forEach($select.$element.querySelectorAll('.' + className), function(el){\r\n angular.element(el).removeClass(className);\r\n });\r\n };\r\n\r\n var dragOverHandler = function(event) {\r\n event.preventDefault();\r\n\r\n var offset = axis === 'vertical' ? event.offsetY || event.layerY || (event.originalEvent ? event.originalEvent.offsetY : 0) : event.offsetX || event.layerX || (event.originalEvent ? event.originalEvent.offsetX : 0);\r\n\r\n if (offset < (this[axis === 'vertical' ? 'offsetHeight' : 'offsetWidth'] / 2)) {\r\n removeClass(droppingAfterClassName);\r\n element.addClass(droppingBeforeClassName);\r\n\r\n } else {\r\n removeClass(droppingBeforeClassName);\r\n element.addClass(droppingAfterClassName);\r\n }\r\n };\r\n\r\n var dropTimeout;\r\n\r\n var dropHandler = function(event) {\r\n event.preventDefault();\r\n\r\n var droppedItemIndex = parseInt((event.dataTransfer || event.originalEvent.dataTransfer).getData('text'), 10);\r\n\r\n // prevent event firing multiple times in firefox\r\n $timeout.cancel(dropTimeout);\r\n dropTimeout = $timeout(function() {\r\n _dropHandler(droppedItemIndex);\r\n }, 20);\r\n };\r\n\r\n var _dropHandler = function(droppedItemIndex) {\r\n var theList = scope.$eval(attrs.uiSelectSort);\r\n var itemToMove = theList[droppedItemIndex];\r\n var newIndex = null;\r\n\r\n if (element.hasClass(droppingBeforeClassName)) {\r\n if (droppedItemIndex < scope.$index) {\r\n newIndex = scope.$index - 1;\r\n } else {\r\n newIndex = scope.$index;\r\n }\r\n } else {\r\n if (droppedItemIndex < scope.$index) {\r\n newIndex = scope.$index;\r\n } else {\r\n newIndex = scope.$index + 1;\r\n }\r\n }\r\n\r\n move.apply(theList, [droppedItemIndex, newIndex]);\r\n\r\n $ngModel.$setViewValue(Date.now());\r\n\r\n scope.$apply(function() {\r\n scope.$emit('uiSelectSort:change', {\r\n array: theList,\r\n item: itemToMove,\r\n from: droppedItemIndex,\r\n to: newIndex\r\n });\r\n });\r\n\r\n removeClass(droppingClassName);\r\n removeClass(droppingBeforeClassName);\r\n removeClass(droppingAfterClassName);\r\n\r\n element.off('drop', dropHandler);\r\n };\r\n\r\n element.on('dragenter', function() {\r\n if (element.hasClass(draggingClassName)) {\r\n return;\r\n }\r\n\r\n element.addClass(droppingClassName);\r\n\r\n element.on('dragover', dragOverHandler);\r\n element.on('drop', dropHandler);\r\n });\r\n\r\n element.on('dragleave', function(event) {\r\n if (event.target != element) {\r\n return;\r\n }\r\n\r\n removeClass(droppingClassName);\r\n removeClass(droppingBeforeClassName);\r\n removeClass(droppingAfterClassName);\r\n\r\n element.off('dragover', dragOverHandler);\r\n element.off('drop', dropHandler);\r\n });\r\n }\r\n };\r\n}]);\r\n\r\nuis.directive('uisOpenClose', ['$parse', '$timeout', function ($parse, $timeout) {\r\n return {\r\n restrict: 'A',\r\n require: 'uiSelect',\r\n link: function (scope, element, attrs, $select) {\r\n $select.onOpenCloseCallback = $parse(attrs.uisOpenClose);\r\n\r\n scope.$watch('$select.open', function (isOpen, previousState) {\r\n if (isOpen !== previousState) {\r\n $timeout(function () {\r\n $select.onOpenCloseCallback(scope, {\r\n isOpen: isOpen\r\n });\r\n });\r\n }\r\n });\r\n }\r\n };\r\n}]);\r\n\r\n/**\r\n * Parses \"repeat\" attribute.\r\n *\r\n * Taken from AngularJS ngRepeat source code\r\n * See https://github.com/angular/angular.js/blob/v1.2.15/src/ng/directive/ngRepeat.js#L211\r\n *\r\n * Original discussion about parsing \"repeat\" attribute instead of fully relying on ng-repeat:\r\n * https://github.com/angular-ui/ui-select/commit/5dd63ad#commitcomment-5504697\r\n */\r\n\r\nuis.service('uisRepeatParser', ['uiSelectMinErr','$parse', function(uiSelectMinErr, $parse) {\r\n var self = this;\r\n\r\n /**\r\n * Example:\r\n * expression = \"address in addresses | filter: {street: $select.search} track by $index\"\r\n * itemName = \"address\",\r\n * source = \"addresses | filter: {street: $select.search}\",\r\n * trackByExp = \"$index\",\r\n */\r\n self.parse = function(expression) {\r\n\r\n\r\n var match;\r\n //var isObjectCollection = /\\(\\s*([\\$\\w][\\$\\w]*)\\s*,\\s*([\\$\\w][\\$\\w]*)\\s*\\)/.test(expression);\r\n // If an array is used as collection\r\n\r\n // if (isObjectCollection){\r\n // 000000000000000000000000000000111111111000000000000000222222222222220033333333333333333333330000444444444444444444000000000000000055555555555000000000000000000000066666666600000000\r\n match = expression.match(/^\\s*(?:([\\s\\S]+?)\\s+as\\s+)?(?:([\\$\\w][\\$\\w]*)|(?:\\(\\s*([\\$\\w][\\$\\w]*)\\s*,\\s*([\\$\\w][\\$\\w]*)\\s*\\)))\\s+in\\s+(\\s*[\\s\\S]+?)?(?:\\s+track\\s+by\\s+([\\s\\S]+?))?\\s*$/);\r\n\r\n // 1 Alias\r\n // 2 Item\r\n // 3 Key on (key,value)\r\n // 4 Value on (key,value)\r\n // 5 Source expression (including filters)\r\n // 6 Track by\r\n\r\n if (!match) {\r\n throw uiSelectMinErr('iexp', \"Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.\",\r\n expression);\r\n }\r\n \r\n var source = match[5], \r\n filters = '';\r\n\r\n // When using (key,value) ui-select requires filters to be extracted, since the object\r\n // is converted to an array for $select.items \r\n // (in which case the filters need to be reapplied)\r\n if (match[3]) {\r\n // Remove any enclosing parenthesis\r\n source = match[5].replace(/(^\\()|(\\)$)/g, '');\r\n // match all after | but not after ||\r\n var filterMatch = match[5].match(/^\\s*(?:[\\s\\S]+?)(?:[^\\|]|\\|\\|)+([\\s\\S]*)\\s*$/);\r\n if(filterMatch && filterMatch[1].trim()) {\r\n filters = filterMatch[1];\r\n source = source.replace(filters, '');\r\n } \r\n }\r\n\r\n return {\r\n itemName: match[4] || match[2], // (lhs) Left-hand side,\r\n keyName: match[3], //for (key, value) syntax\r\n source: $parse(source),\r\n filters: filters,\r\n trackByExp: match[6],\r\n modelMapper: $parse(match[1] || match[4] || match[2]),\r\n repeatExpression: function (grouped) {\r\n var expression = this.itemName + ' in ' + (grouped ? '$group.items' : '$select.items');\r\n if (this.trackByExp) {\r\n expression += ' track by ' + this.trackByExp;\r\n }\r\n return expression;\r\n } \r\n };\r\n\r\n };\r\n\r\n self.getGroupNgRepeatExpression = function() {\r\n return '$group in $select.groups track by $group.name';\r\n };\r\n\r\n}]);\r\n\r\n}());\r\nangular.module(\"ui.select\").run([\"$templateCache\", function($templateCache) {$templateCache.put(\"bootstrap/choices.tpl.html\",\"\");\r\n$templateCache.put(\"bootstrap/match-multiple.tpl.html\",\" × \");\r\n$templateCache.put(\"bootstrap/match.tpl.html\",\"
{{$select.placeholder}}
\");\r\n$templateCache.put(\"bootstrap/no-choice.tpl.html\",\"\");\r\n$templateCache.put(\"bootstrap/select-multiple.tpl.html\",\"
\");\r\n$templateCache.put(\"bootstrap/select.tpl.html\",\"
\");\r\n$templateCache.put(\"select2/choices.tpl.html\",\"\");\r\n$templateCache.put(\"select2/match-multiple.tpl.html\",\"
  • \");\r\n$templateCache.put(\"select2/match.tpl.html\",\"{{$select.placeholder}} \");\r\n$templateCache.put(\"select2/no-choice.tpl.html\",\"
    \");\r\n$templateCache.put(\"select2/select-multiple.tpl.html\",\"
    \");\r\n$templateCache.put(\"select2/select.tpl.html\",\"
    \");\r\n$templateCache.put(\"selectize/choices.tpl.html\",\"
    \");\r\n$templateCache.put(\"selectize/match-multiple.tpl.html\",\"
    ×
    \");\r\n$templateCache.put(\"selectize/match.tpl.html\",\"
    {{$select.placeholder}}
    \");\r\n$templateCache.put(\"selectize/no-choice.tpl.html\",\"
    \");\r\n$templateCache.put(\"selectize/select-multiple.tpl.html\",\"
    \");\r\n$templateCache.put(\"selectize/select.tpl.html\",\"
    \");}]);","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ` /*!\r\n * ui-select\r\n * http://github.com/angular-ui/ui-select\r\n * Version: 0.11.2 - 2015-03-17T04:08:46.478Z\r\n * License: MIT\r\n */\r\n \r\n \r\n /* Style when highlighting a search. */\r\n .ui-select-highlight {\r\n font-weight: bold;\r\n }\r\n \r\n .ui-select-offscreen {\r\n clip: rect(0 0 0 0) !important;\r\n width: 1px !important;\r\n height: 1px !important;\r\n border: 0 !important;\r\n margin: 0 !important;\r\n padding: 0 !important;\r\n overflow: hidden !important;\r\n position: absolute !important;\r\n outline: 0 !important;\r\n left: 0px !important;\r\n top: 0px !important;\r\n }\r\n \r\n /* Select2 theme */\r\n \r\n /* Mark invalid Select2 */\r\n .ng-dirty.ng-invalid > a.select2-choice {\r\n border-color: #D44950;\r\n }\r\n \r\n .select2-result-single {\r\n padding-left: 0;\r\n }\r\n \r\n .select2-locked > .select2-search-choice-close{\r\n display:none;\r\n }\r\n \r\n .select-locked > .ui-select-match-close{\r\n display:none;\r\n }\r\n \r\n body > .select2-container.open {\r\n z-index: 9999; /* The z-index Select2 applies to the select2-drop */\r\n }\r\n \r\n /* Selectize theme */\r\n \r\n /* Helper class to show styles when focus */\r\n .selectize-input.selectize-focus{\r\n border-color: #007FBB !important;\r\n }\r\n \r\n /* Fix input width for Selectize theme */\r\n .selectize-control > .selectize-input > input {\r\n width: 100%;\r\n }\r\n \r\n /* Fix dropdown width for Selectize theme */\r\n .selectize-control > .selectize-dropdown {\r\n width: 100%;\r\n }\r\n \r\n /* Mark invalid Selectize */\r\n .ng-dirty.ng-invalid > div.selectize-input {\r\n border-color: #D44950;\r\n }\r\n \r\n \r\n /* Bootstrap theme */\r\n \r\n /* Helper class to show styles when focus */\r\n .btn-default-focus {\r\n color: #333;\r\n background-color: #EBEBEB;\r\n border-color: #ADADAD;\r\n text-decoration: none;\r\n outline: 5px auto -webkit-focus-ring-color;\r\n outline-offset: -2px;\r\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\r\n }\r\n \r\n .ui-select-bootstrap .ui-select-toggle {\r\n position: relative;\r\n }\r\n \r\n .ui-select-bootstrap .ui-select-toggle > .caret {\r\n position: absolute;\r\n height: 10px;\r\n top: 50%;\r\n right: 10px;\r\n margin-top: -2px;\r\n }\r\n\r\n .ui-select-input .ui-select-toggle > .caret {\r\n color: transparent !important;\r\n }\r\n \r\n /* Fix Bootstrap dropdown position when inside a input-group */\r\n .input-group > .ui-select-bootstrap.dropdown {\r\n /* Instead of relative */\r\n position: static;\r\n }\r\n \r\n .input-group > .ui-select-bootstrap > input.ui-select-search.form-control {\r\n border-radius: 4px; /* FIXME hardcoded value :-/ */\r\n border-top-right-radius: 0;\r\n border-bottom-right-radius: 0;\r\n }\r\n \r\n .ui-select-bootstrap > .ui-select-match > .btn{\r\n /* Instead of center because of .btn */\r\n text-align: left !important;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n }\r\n\r\n .ui-select-bootstrap .ui-select-match-text {\r\n width: 100%;\r\n padding-right: 1em;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n }\r\n\r\n .text-muted {\r\n color: #555555;\r\n }\r\n \r\n .ui-select-bootstrap > .ui-select-match > .caret {\r\n position: absolute;\r\n top: 45%;\r\n right: 15px;\r\n }\r\n \r\n /* See Scrollable Menu with Bootstrap 3 http://stackoverflow.com/questions/19227496 */\r\n .ui-select-bootstrap > .ui-select-choices {\r\n width: auto;\r\n min-width: 100%;\r\n height: auto;\r\n max-height: 200px;\r\n overflow-x: hidden;\r\n margin-top: -1px;\r\n }\r\n \r\n body > .ui-select-bootstrap.open {\r\n z-index: 1000; /* Standard Bootstrap dropdown z-index */\r\n }\r\n \r\n .ui-select-multiple.ui-select-bootstrap {\r\n height: auto;\r\n padding: 3px 3px 0 3px;\r\n }\r\n \r\n .ui-select-multiple.ui-select-bootstrap input.ui-select-search {\r\n background-color: transparent !important; /* To prevent double background when disabled */\r\n border: none;\r\n outline: none;\r\n height: 1.666666em;\r\n margin-bottom: 3px;\r\n }\r\n \r\n .ui-select-multiple.ui-select-bootstrap .ui-select-match .close {\r\n font-size: 1.6em;\r\n line-height: 0.75;\r\n }\r\n \r\n .ui-select-multiple.ui-select-bootstrap .ui-select-match-item {\r\n outline: 0;\r\n margin: 0 3px 3px 0;\r\n }\r\n \r\n .ui-select-multiple .ui-select-match-item {\r\n position: relative;\r\n }\r\n \r\n .ui-select-multiple .ui-select-match-item.dropping-before:before {\r\n content: \"\";\r\n position: absolute;\r\n top: 0;\r\n right: 100%;\r\n height: 100%;\r\n margin-right: 2px;\r\n border-left: 1px solid #428bca;\r\n }\r\n \r\n .ui-select-multiple .ui-select-match-item.dropping-after:after {\r\n content: \"\";\r\n position: absolute;\r\n top: 0;\r\n left: 100%;\r\n height: 100%;\r\n margin-left: 2px;\r\n border-right: 1px solid #428bca;\r\n }\r\n \r\n .ui-select-bootstrap .ui-select-choices-row>span {\r\n display: block;\r\n padding: 3px 20px;\r\n clear: both;\r\n font-weight: 400;\r\n line-height: 1.42857143;\r\n color: #333;\r\n white-space: nowrap;\r\n }\r\n \r\n .ui-select-bootstrap .ui-select-choices-row>span:hover, .ui-select-bootstrap .ui-select-choices-row>span:focus {\r\n text-decoration: none;\r\n color: #262626;\r\n background-color: #f5f5f5;\r\n }\r\n \r\n .ui-select-bootstrap .ui-select-choices-row.active>span {\r\n color: #fff;\r\n text-decoration: none;\r\n outline: 0;\r\n background-color: #428bca;\r\n }\r\n \r\n .ui-select-bootstrap .ui-select-choices-row.disabled>span,\r\n .ui-select-bootstrap .ui-select-choices-row.active.disabled>span {\r\n color: #777;\r\n cursor: not-allowed;\r\n background-color: #fff;\r\n }\r\n \r\n /* fix hide/show angular animation */\r\n .ui-select-match.ng-hide-add,\r\n .ui-select-search.ng-hide-add {\r\n display: none !important;\r\n }\r\n \r\n /* Mark invalid Bootstrap */\r\n .ui-select-bootstrap.ng-dirty.ng-invalid > button.btn.ui-select-match {\r\n border-color: #D44950;\r\n }\r\n\r\n /* add to filter cbs to keep spacing correct*/\r\n .filter-cb {\r\n display: flex;\r\n height: 58px;\r\n justify-content: center;\r\n align-items: center\r\n }`, \"\",{\"version\":3,\"sources\":[\"webpack://./app/dashboard/dashboard-grid/css/grid-filter.css\"],\"names\":[],\"mappings\":\"CAAC;;;;;IAKG;;;EAGF,sCAAsC;EACtC;IACE,iBAAiB;EACnB;;EAEA;IACE,8BAA8B;IAC9B,qBAAqB;IACrB,sBAAsB;IACtB,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IACrB,2BAA2B;IAC3B,6BAA6B;IAC7B,qBAAqB;IACrB,oBAAoB;IACpB,mBAAmB;EACrB;;EAEA,kBAAkB;;EAElB,yBAAyB;EACzB;MACI,qBAAqB;EACzB;;EAEA;IACE,eAAe;EACjB;;EAEA;IACE,YAAY;EACd;;EAEA;MACI,YAAY;EAChB;;EAEA;IACE,aAAa,EAAE,oDAAoD;EACrE;;EAEA,oBAAoB;;EAEpB,2CAA2C;EAC3C;IACE,gCAAgC;EAClC;;EAEA,wCAAwC;EACxC;IACE,WAAW;EACb;;EAEA,2CAA2C;EAC3C;IACE,WAAW;EACb;;EAEA,2BAA2B;EAC3B;MACI,qBAAqB;EACzB;;;EAGA,oBAAoB;;EAEpB,2CAA2C;EAC3C;IACE,WAAW;IACX,yBAAyB;IACzB,qBAAqB;IACrB,qBAAqB;IACrB,0CAA0C;IAC1C,oBAAoB;IACpB,kFAAkF;EACpF;;EAEA;IACE,kBAAkB;EACpB;;EAEA;IACE,kBAAkB;IAClB,YAAY;IACZ,QAAQ;IACR,WAAW;IACX,gBAAgB;EAClB;;EAEA;IACE,6BAA6B;EAC/B;;EAEA,8DAA8D;EAC9D;IACE,wBAAwB;IACxB,gBAAgB;EAClB;;EAEA;IACE,kBAAkB,EAAE,8BAA8B;IAClD,0BAA0B;IAC1B,6BAA6B;EAC/B;;EAEA;IACE,sCAAsC;IACtC,2BAA2B;IAC3B,uBAAuB;IACvB,gBAAgB;EAClB;;EAEA;IACE,WAAW;IACX,kBAAkB;IAClB,gBAAgB;IAChB,uBAAuB;EACzB;;EAEA;IACE,cAAc;EAChB;;EAEA;IACE,kBAAkB;IAClB,QAAQ;IACR,WAAW;EACb;;EAEA,qFAAqF;EACrF;IACE,WAAW;IACX,eAAe;IACf,YAAY;IACZ,iBAAiB;IACjB,kBAAkB;IAClB,gBAAgB;EAClB;;EAEA;IACE,aAAa,EAAE,wCAAwC;EACzD;;EAEA;IACE,YAAY;IACZ,sBAAsB;EACxB;;EAEA;IACE,wCAAwC,EAAE,+CAA+C;IACzF,YAAY;IACZ,aAAa;IACb,kBAAkB;IAClB,kBAAkB;EACpB;;EAEA;IACE,gBAAgB;IAChB,iBAAiB;EACnB;;EAEA;IACE,UAAU;IACV,mBAAmB;EACrB;;EAEA;IACE,kBAAkB;EACpB;;EAEA;IACE,WAAW;IACX,kBAAkB;IAClB,MAAM;IACN,WAAW;IACX,YAAY;IACZ,iBAAiB;IACjB,8BAA8B;EAChC;;EAEA;IACE,WAAW;IACX,kBAAkB;IAClB,MAAM;IACN,UAAU;IACV,YAAY;IACZ,gBAAgB;IAChB,+BAA+B;EACjC;;EAEA;MACI,cAAc;MACd,iBAAiB;MACjB,WAAW;MACX,gBAAgB;MAChB,uBAAuB;MACvB,WAAW;MACX,mBAAmB;EACvB;;EAEA;MACI,qBAAqB;MACrB,cAAc;MACd,yBAAyB;EAC7B;;EAEA;MACI,WAAW;MACX,qBAAqB;MACrB,UAAU;MACV,yBAAyB;EAC7B;;EAEA;;MAEI,WAAW;MACX,mBAAmB;MACnB,sBAAsB;EAC1B;;EAEA,oCAAoC;EACpC;;MAEI,wBAAwB;EAC5B;;EAEA,2BAA2B;EAC3B;MACI,qBAAqB;EACzB;;EAEA,6CAA6C;EAC7C;IACE,aAAa;IACb,YAAY;IACZ,uBAAuB;IACvB;EACF\",\"sourcesContent\":[\" /*!\\r\\n * ui-select\\r\\n * http://github.com/angular-ui/ui-select\\r\\n * Version: 0.11.2 - 2015-03-17T04:08:46.478Z\\r\\n * License: MIT\\r\\n */\\r\\n \\r\\n \\r\\n /* Style when highlighting a search. */\\r\\n .ui-select-highlight {\\r\\n font-weight: bold;\\r\\n }\\r\\n \\r\\n .ui-select-offscreen {\\r\\n clip: rect(0 0 0 0) !important;\\r\\n width: 1px !important;\\r\\n height: 1px !important;\\r\\n border: 0 !important;\\r\\n margin: 0 !important;\\r\\n padding: 0 !important;\\r\\n overflow: hidden !important;\\r\\n position: absolute !important;\\r\\n outline: 0 !important;\\r\\n left: 0px !important;\\r\\n top: 0px !important;\\r\\n }\\r\\n \\r\\n /* Select2 theme */\\r\\n \\r\\n /* Mark invalid Select2 */\\r\\n .ng-dirty.ng-invalid > a.select2-choice {\\r\\n border-color: #D44950;\\r\\n }\\r\\n \\r\\n .select2-result-single {\\r\\n padding-left: 0;\\r\\n }\\r\\n \\r\\n .select2-locked > .select2-search-choice-close{\\r\\n display:none;\\r\\n }\\r\\n \\r\\n .select-locked > .ui-select-match-close{\\r\\n display:none;\\r\\n }\\r\\n \\r\\n body > .select2-container.open {\\r\\n z-index: 9999; /* The z-index Select2 applies to the select2-drop */\\r\\n }\\r\\n \\r\\n /* Selectize theme */\\r\\n \\r\\n /* Helper class to show styles when focus */\\r\\n .selectize-input.selectize-focus{\\r\\n border-color: #007FBB !important;\\r\\n }\\r\\n \\r\\n /* Fix input width for Selectize theme */\\r\\n .selectize-control > .selectize-input > input {\\r\\n width: 100%;\\r\\n }\\r\\n \\r\\n /* Fix dropdown width for Selectize theme */\\r\\n .selectize-control > .selectize-dropdown {\\r\\n width: 100%;\\r\\n }\\r\\n \\r\\n /* Mark invalid Selectize */\\r\\n .ng-dirty.ng-invalid > div.selectize-input {\\r\\n border-color: #D44950;\\r\\n }\\r\\n \\r\\n \\r\\n /* Bootstrap theme */\\r\\n \\r\\n /* Helper class to show styles when focus */\\r\\n .btn-default-focus {\\r\\n color: #333;\\r\\n background-color: #EBEBEB;\\r\\n border-color: #ADADAD;\\r\\n text-decoration: none;\\r\\n outline: 5px auto -webkit-focus-ring-color;\\r\\n outline-offset: -2px;\\r\\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\\r\\n }\\r\\n \\r\\n .ui-select-bootstrap .ui-select-toggle {\\r\\n position: relative;\\r\\n }\\r\\n \\r\\n .ui-select-bootstrap .ui-select-toggle > .caret {\\r\\n position: absolute;\\r\\n height: 10px;\\r\\n top: 50%;\\r\\n right: 10px;\\r\\n margin-top: -2px;\\r\\n }\\r\\n\\r\\n .ui-select-input .ui-select-toggle > .caret {\\r\\n color: transparent !important;\\r\\n }\\r\\n \\r\\n /* Fix Bootstrap dropdown position when inside a input-group */\\r\\n .input-group > .ui-select-bootstrap.dropdown {\\r\\n /* Instead of relative */\\r\\n position: static;\\r\\n }\\r\\n \\r\\n .input-group > .ui-select-bootstrap > input.ui-select-search.form-control {\\r\\n border-radius: 4px; /* FIXME hardcoded value :-/ */\\r\\n border-top-right-radius: 0;\\r\\n border-bottom-right-radius: 0;\\r\\n }\\r\\n \\r\\n .ui-select-bootstrap > .ui-select-match > .btn{\\r\\n /* Instead of center because of .btn */\\r\\n text-align: left !important;\\r\\n text-overflow: ellipsis;\\r\\n overflow: hidden;\\r\\n }\\r\\n\\r\\n .ui-select-bootstrap .ui-select-match-text {\\r\\n width: 100%;\\r\\n padding-right: 1em;\\r\\n overflow: hidden;\\r\\n text-overflow: ellipsis;\\r\\n }\\r\\n\\r\\n .text-muted {\\r\\n color: #555555;\\r\\n }\\r\\n \\r\\n .ui-select-bootstrap > .ui-select-match > .caret {\\r\\n position: absolute;\\r\\n top: 45%;\\r\\n right: 15px;\\r\\n }\\r\\n \\r\\n /* See Scrollable Menu with Bootstrap 3 http://stackoverflow.com/questions/19227496 */\\r\\n .ui-select-bootstrap > .ui-select-choices {\\r\\n width: auto;\\r\\n min-width: 100%;\\r\\n height: auto;\\r\\n max-height: 200px;\\r\\n overflow-x: hidden;\\r\\n margin-top: -1px;\\r\\n }\\r\\n \\r\\n body > .ui-select-bootstrap.open {\\r\\n z-index: 1000; /* Standard Bootstrap dropdown z-index */\\r\\n }\\r\\n \\r\\n .ui-select-multiple.ui-select-bootstrap {\\r\\n height: auto;\\r\\n padding: 3px 3px 0 3px;\\r\\n }\\r\\n \\r\\n .ui-select-multiple.ui-select-bootstrap input.ui-select-search {\\r\\n background-color: transparent !important; /* To prevent double background when disabled */\\r\\n border: none;\\r\\n outline: none;\\r\\n height: 1.666666em;\\r\\n margin-bottom: 3px;\\r\\n }\\r\\n \\r\\n .ui-select-multiple.ui-select-bootstrap .ui-select-match .close {\\r\\n font-size: 1.6em;\\r\\n line-height: 0.75;\\r\\n }\\r\\n \\r\\n .ui-select-multiple.ui-select-bootstrap .ui-select-match-item {\\r\\n outline: 0;\\r\\n margin: 0 3px 3px 0;\\r\\n }\\r\\n \\r\\n .ui-select-multiple .ui-select-match-item {\\r\\n position: relative;\\r\\n }\\r\\n \\r\\n .ui-select-multiple .ui-select-match-item.dropping-before:before {\\r\\n content: \\\"\\\";\\r\\n position: absolute;\\r\\n top: 0;\\r\\n right: 100%;\\r\\n height: 100%;\\r\\n margin-right: 2px;\\r\\n border-left: 1px solid #428bca;\\r\\n }\\r\\n \\r\\n .ui-select-multiple .ui-select-match-item.dropping-after:after {\\r\\n content: \\\"\\\";\\r\\n position: absolute;\\r\\n top: 0;\\r\\n left: 100%;\\r\\n height: 100%;\\r\\n margin-left: 2px;\\r\\n border-right: 1px solid #428bca;\\r\\n }\\r\\n \\r\\n .ui-select-bootstrap .ui-select-choices-row>span {\\r\\n display: block;\\r\\n padding: 3px 20px;\\r\\n clear: both;\\r\\n font-weight: 400;\\r\\n line-height: 1.42857143;\\r\\n color: #333;\\r\\n white-space: nowrap;\\r\\n }\\r\\n \\r\\n .ui-select-bootstrap .ui-select-choices-row>span:hover, .ui-select-bootstrap .ui-select-choices-row>span:focus {\\r\\n text-decoration: none;\\r\\n color: #262626;\\r\\n background-color: #f5f5f5;\\r\\n }\\r\\n \\r\\n .ui-select-bootstrap .ui-select-choices-row.active>span {\\r\\n color: #fff;\\r\\n text-decoration: none;\\r\\n outline: 0;\\r\\n background-color: #428bca;\\r\\n }\\r\\n \\r\\n .ui-select-bootstrap .ui-select-choices-row.disabled>span,\\r\\n .ui-select-bootstrap .ui-select-choices-row.active.disabled>span {\\r\\n color: #777;\\r\\n cursor: not-allowed;\\r\\n background-color: #fff;\\r\\n }\\r\\n \\r\\n /* fix hide/show angular animation */\\r\\n .ui-select-match.ng-hide-add,\\r\\n .ui-select-search.ng-hide-add {\\r\\n display: none !important;\\r\\n }\\r\\n \\r\\n /* Mark invalid Bootstrap */\\r\\n .ui-select-bootstrap.ng-dirty.ng-invalid > button.btn.ui-select-match {\\r\\n border-color: #D44950;\\r\\n }\\r\\n\\r\\n /* add to filter cbs to keep spacing correct*/\\r\\n .filter-cb {\\r\\n display: flex;\\r\\n height: 58px;\\r\\n justify-content: center;\\r\\n align-items: center\\r\\n }\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_0___ from \"-!../node_modules/css-loader/dist/cjs.js!../app/dashboard/dashboard-grid/css/grid-filter.css\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../images/Header/SMART-Portal-Logo.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"../images/Header/SmartPortal-Header-Logo_1_OIPI.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"../images/Header/SmartPortal-Header-Logo_2_DRPT.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"../images/Header/SmartPortal-Header-Logo_3_VDOT.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);\n___CSS_LOADER_EXPORT___.push([module.id, \"@import url(https://js.arcgis.com/4.26/@arcgis/core/assets/esri/themes/light/main.css);\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/* dashboard filters ui-selector css */\r\n\r\nhtml {\r\n height: 100%;\r\n -ms-overflow-style: scrollbar\r\n}\r\n\r\nbody {\r\n height: 100%;\r\n\r\n}\r\n\r\n.body-content {\r\n min-height: 100%;\r\n height: auto !important;\r\n height: 100%;\r\n margin: 0 auto -270px;\r\n}\r\n\r\n.push-for-footer {\r\n height: 270px;\r\n margin: 0;\r\n}\r\n\r\n.footer {\r\n height: 246px;\r\n margin: 0;\r\n width: 100%;\r\n position: relative;\r\n background-color: white;\r\n}\r\n/*Notice of intent date*/\r\n.noiDate {\r\n color: red;\r\n font-weight: bold;\r\n}\r\n/*Footer*/\r\n.blue-bar {\r\n width: 100%;\r\n background-color: #005DAA;\r\n height: 50px;\r\n margin-top: 24px;\r\n color: white;\r\n}\r\n\r\n.footer-content {\r\n background-color: #F0F2F5 !important;\r\n -webkit-print-color-adjust: exact;\r\n color: #000;\r\n font-size: 13px;\r\n}\r\n\r\n .footer-content .footer-contact-info {\r\n margin-top: -12px;\r\n }\r\n\r\n .footer-content .side-borders {\r\n margin-top: 6px;\r\n margin-bottom: 6px;\r\n border-left: 1px solid #dddddd;\r\n border-right: 1px solid #dddddd;\r\n }\r\n\r\n.footer-bottom {\r\n color: #000;\r\n padding-bottom: 8px;\r\n padding-top: 8px;\r\n}\r\n/* Header logos - HB2, VTrans, DRPT, VDOT navbar styling */\r\n.header-logos-navbar {\r\n height: 90px;\r\n background-color: white;\r\n width: 100%;\r\n margin-top: 12px;\r\n}\r\n/*#site-logo {\r\n max-height: 80px;\r\n width: auto;\r\n vertical-align: middle;\r\n}*/\r\n.header-logo-links {\r\n margin-top: 20px;\r\n text-align: right;\r\n}\r\n\r\n.header-logo-link .header-logos {\r\n max-height: 40px;\r\n}\r\n/*.header-logo-link {\r\n text-align: right;\r\n}*/\r\n#smart-portal-header-link {\r\n background: transparent url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat scroll left center;\r\n background-size: 100% auto;\r\n height: 82px;\r\n}\r\n\r\n #smart-portal-header-link:hover,\r\n #smart-portal-header-link:active,\r\n #smart-portal-header-link:focus {\r\n text-decoration: none !important;\r\n }\r\n\r\n.header-agency-logo {\r\n background-size: auto 100%;\r\n background-position: 100% 50%;\r\n background-repeat: no-repeat;\r\n height: 28px;\r\n background-color: transparent;\r\n}\r\n\r\n#oipi-header-link {\r\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_1___});\r\n}\r\n\r\n#drpt-header-link {\r\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_2___});\r\n}\r\n\r\n#vdot-header-link {\r\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_3___});\r\n}\r\n\r\n#siteDisclaimer {\r\n color: red;\r\n display: block;\r\n font-size: 25px;\r\n left: 0;\r\n margin: 0 auto;\r\n position: absolute;\r\n right: 320px;\r\n text-align: center;\r\n top: 74px;\r\n width: 250px;\r\n}\r\n\r\n.discussion-dropdown {\r\n max-height: 400px;\r\n overflow-y: auto;\r\n}\r\n/* Circle Number */\r\n.circle-number,\r\n.circle-number-comment,\r\n.circle-number-alert,\r\n.circle-number-concurrence,\r\n.circle-number-error {\r\n width: 25px;\r\n height: 25px;\r\n border-radius: 13px;\r\n text-align: center;\r\n font-size: 14px;\r\n vertical-align: middle;\r\n border: 2px solid white;\r\n color: white;\r\n line-height: 1.42;\r\n /* Prevent background color leak outs */\r\n -webkit-background-clip: padding-box;\r\n -moz-background-clip: padding;\r\n background-clip: padding-box;\r\n}\r\n\r\n.circle-number-comment {\r\n background: darkgoldenrod;\r\n}\r\n\r\n.circle-number-concurrence{\r\n background: #005daa;\r\n}\r\n\r\n.circle-number-alert {\r\n background: red;\r\n}\r\n\r\n.circle-number-error {\r\n background: #b94a48;\r\n}\r\n\r\n.circle-number.ng-enter,\r\n.circle-number.ng-leave {\r\n transition: all cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.5s;\r\n}\r\n\r\n .circle-number.ng-enter,\r\n .circle-number.ng-leave.ng-leave-active {\r\n opacity: 0;\r\n }\r\n\r\n .circle-number.ng-leave,\r\n .circle-number.ng-enter.ng-enter-active {\r\n opacity: 1;\r\n }\r\n\r\n.circle-number-superscript {\r\n position: absolute;\r\n top: 42%;\r\n left: 55%;\r\n transform: translate(-10%, -85%);\r\n}\r\n\r\n.circle-number-pearl {\r\n position: absolute;\r\n top: 0%;\r\n left: 60%;\r\n transform: translate(-10%, -65%);\r\n}\r\n\r\n.nav-icon {\r\n padding: 10px;\r\n}\r\n/* Main Navigation Navbar */\r\n/* Navbar HB2 (Main Navigation Navbar) */\r\n.navbar-hb2 {\r\n background: #909090;\r\n /* Old browsers */\r\n background: -moz-linear-gradient(top, #909090 0%, #b2b2b2 100%);\r\n /* FF3.6+ */\r\n background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #909090), color-stop(100%, #b2b2b2));\r\n /* Chrome,Safari4+ */\r\n background: -webkit-linear-gradient(top, #909090 0%, #b2b2b2 100%);\r\n /* Chrome10+,Safari5.1+ */\r\n background: -o-linear-gradient(top, #909090 0%, #b2b2b2 100%);\r\n /* Opera 11.10+ */\r\n background: -ms-linear-gradient(top, #909090 0%, #b2b2b2 100%);\r\n /* IE10+ */\r\n background: linear-gradient(to bottom, #909090 0%, #b2b2b2 100%);\r\n /* W3C */\r\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#909090', endColorstr='#b2b2b2', GradientType=0);\r\n /* IE6-9 */\r\n border-top: 1px solid #939393;\r\n border-bottom: 1px solid #AFAFAF;\r\n border-right: 0;\r\n border-left: 0;\r\n border-radius: 0 !important;\r\n width: 100%;\r\n color: #000 !important;\r\n margin-bottom: 0 !important;\r\n z-index: 949;\r\n}\r\n /* Main Navigation Navbar - link color styling (USING) */\r\n .navbar-hb2 .container-fluid ul li a {\r\n color: #000;\r\n margin-left: 1px;\r\n }\r\n /*Main Navbar - ACTIVE (USING) */\r\n .navbar-hb2 .container.container-fluid .nav.navbar-nav > li.active > a {\r\n background: #313131;\r\n /* Old browsers */\r\n background: -moz-linear-gradient(top, #313131 0%, #585858 100%);\r\n /* FF3.6+ */\r\n background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #313131), color-stop(100%, #585858));\r\n /* Chrome,Safari4+ */\r\n background: -webkit-linear-gradient(top, #313131 0%, #585858 100%);\r\n /* Chrome10+,Safari5.1+ */\r\n background: -o-linear-gradient(top, #313131 0%, #585858 100%);\r\n /* Opera 11.10+ */\r\n background: -ms-linear-gradient(top, #313131 0%, #585858 100%);\r\n /* IE10+ */\r\n background: linear-gradient(to bottom, #313131 0%, #585858 100%);\r\n /* W3C */\r\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#313131', endColorstr='#585858', GradientType=0);\r\n /* IE6-9 */\r\n color: #fff;\r\n border-top: 1px solid #313131;\r\n border-bottom: 1px solid #525252;\r\n margin-bottom: -1px;\r\n margin-top: -1px;\r\n }\r\n /*Main Navbar - Link HOVER (USING) */\r\n .navbar-hb2 .container.container-fluid .nav.navbar-nav > li:hover > a {\r\n background: #313131;\r\n background: -moz-linear-gradient(top, #313131 0%, #585858 100%);\r\n background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #313131), color-stop(100%, #585858));\r\n background: -webkit-linear-gradient(top, #313131 0%, #585858 100%);\r\n background: -o-linear-gradient(top, #313131 0%, #585858 100%);\r\n background: -ms-linear-gradient(top, #313131 0%, #585858 100%);\r\n background: linear-gradient(to bottom, #313131 0%, #585858 100%);\r\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#313131', endColorstr='#585858', GradientType=0);\r\n color: #fff;\r\n border-top: 1px solid #313131;\r\n border-bottom: 1px solid #525252;\r\n margin-bottom: -1px;\r\n margin-top: -1px;\r\n }\r\n /* Main Navigation Navbar - username dropdown open styling (mobile size) - USING!!! */\r\n .navbar-hb2 .navbar-nav .open .dropdown-menu > li > a {\r\n color: #000;\r\n margin-left: 1px;\r\n }\r\n /*Main Navbar - Dropdown List: HOVER - USING!!!! */\r\n .navbar-hb2 .container.container-fluid .nav.navbar-nav li.dropdown.open ul.dropdown-menu li:hover a {\r\n background: #313131;\r\n background: -moz-linear-gradient(top, #313131 0%, #585858 100%);\r\n background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #313131), color-stop(100%, #585858));\r\n background: -webkit-linear-gradient(top, #313131 0%, #585858 100%);\r\n background: -o-linear-gradient(top, #313131 0%, #585858 100%);\r\n background: -ms-linear-gradient(top, #313131 0%, #585858 100%);\r\n background: linear-gradient(to bottom, #313131 0%, #585858 100%);\r\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#313131', endColorstr='#585858', GradientType=0);\r\n color: #fff;\r\n border-top: 1px solid #313131;\r\n border-bottom: 1px solid #525252;\r\n margin-bottom: -1px;\r\n margin-top: -1px;\r\n }\r\n /*Main Navbar - Keep dropdown header button active while dropdown is open - USING!!! */\r\n .navbar-hb2 .container.container-fluid .nav.navbar-nav li.dropdown.open > a {\r\n background: #313131;\r\n background: -moz-linear-gradient(top, #313131 0%, #585858 100%);\r\n background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #313131), color-stop(100%, #585858));\r\n background: -webkit-linear-gradient(top, #313131 0%, #585858 100%);\r\n background: -o-linear-gradient(top, #313131 0%, #585858 100%);\r\n background: -ms-linear-gradient(top, #313131 0%, #585858 100%);\r\n background: linear-gradient(to bottom, #313131 0%, #585858 100%);\r\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#313131', endColorstr='#585858', GradientType=0);\r\n color: #fff;\r\n border-top: 1px solid #313131;\r\n border-bottom: 1px solid #525252;\r\n margin-bottom: -1px;\r\n margin-top: -1px;\r\n }\r\n\r\n#about-dropdown:hover {\r\n cursor: pointer;\r\n}\r\n/* Comments icon/button on main navigation navbar */\r\n#comments-dropdown-button:hover,\r\n#comments-dropdown-button.open {\r\n background: #313131;\r\n background: -moz-linear-gradient(top, #313131 0%, #585858 100%);\r\n background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #313131), color-stop(100%, #585858));\r\n background: -webkit-linear-gradient(top, #313131 0%, #585858 100%);\r\n background: -o-linear-gradient(top, #313131 0%, #585858 100%);\r\n background: -ms-linear-gradient(top, #313131 0%, #585858 100%);\r\n background: linear-gradient(to bottom, #313131 0%, #585858 100%);\r\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#313131', endColorstr='#585858', GradientType=0);\r\n border-top: 1px solid #313131;\r\n border-bottom: 1px solid #525252;\r\n margin-bottom: -1px;\r\n margin-top: -1px;\r\n}\r\n\r\n #comments-dropdown-button.open i.fa.fa-comments.fa-2x,\r\n #comments-dropdown-button:hover i.fa.fa-comments.fa-2x {\r\n color: white;\r\n }\r\n\r\n#comments-dropdown-button:hover {\r\n cursor: pointer;\r\n}\r\n\r\n#comments-dropdown-button.open .dropdown-menu:hover {\r\n cursor: default;\r\n}\r\n\r\n#comments-header-dropdown-new-comment-icon {\r\n font-size: 88%;\r\n margin-top: -12px;\r\n}\r\n\r\n.comments-dropdown-app-divider hr {\r\n margin-top: 3px;\r\n margin-bottom: 3px;\r\n padding-right: 0 !important;\r\n}\r\n\r\n.btn-link-view-all {\r\n color: #337ab7 !important;\r\n}\r\n/*.comment-dropdown .circle-number.circle-number-comment {\r\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);\r\n}*/\r\n.circle-number,\r\n.circle-number-comment,\r\n.circle-number-alert,\r\n.circle-number-error {\r\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);\r\n}\r\n/* Alerts icon/button on main navigation navbar */\r\n#alerts-dropdown-button:hover,\r\n#alerts-dropdown-button.open,\r\n#concurrence-dropdown-button:hover,\r\n#concurrence-dropdown-button.open {\r\n background: #313131;\r\n background: -moz-linear-gradient(top, #313131 0%, #585858 100%);\r\n background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #313131), color-stop(100%, #585858));\r\n background: -webkit-linear-gradient(top, #313131 0%, #585858 100%);\r\n background: -o-linear-gradient(top, #313131 0%, #585858 100%);\r\n background: -ms-linear-gradient(top, #313131 0%, #585858 100%);\r\n background: linear-gradient(to bottom, #313131 0%, #585858 100%);\r\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#313131', endColorstr='#585858', GradientType=0);\r\n border-top: 1px solid #313131;\r\n border-bottom: 1px solid #525252;\r\n margin-bottom: -1px;\r\n margin-top: -1px;\r\n}\r\n\r\n #alerts-dropdown-button.open i.fa.fa-warning.fa-2x,\r\n #alerts-dropdown-button:hover i.fa.fa-warning.fa-2x {\r\n color: white;\r\n }\r\n\r\n#alerts-dropdown-button:hover,\r\n#concurrence-dropdown-button:hover {\r\n cursor: pointer;\r\n}\r\n\r\n#alerts-dropdown-button.open .dropdown-menu:hover ,\r\n#concurrence-dropdown-button.open .dropdown-menu:hover{\r\n cursor: default;\r\n}\r\n/*Main Navbar - About Dropdown - Specific About sub-page Active (NOT WORKING, NEARLY THERE. Would be nice to have working, but not vital.) */\r\n/*.navbar-hb2 .dropdown.open ul.dropdown-menu li.active a {\r\n background: #313131;\r\n //Old browsers \r\n background: -moz-linear-gradient(top, #313131 0%, #585858 100%);\r\n //FF3.6+ \r\n background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #313131), color-stop(100%, #585858));\r\n //Chrome,Safari4+ \r\n background: -webkit-linear-gradient(top, #313131 0%, #585858 100%);\r\n //Chrome10+,Safari5.1+ \r\n background: -o-linear-gradient(top, #313131 0%, #585858 100%);\r\n //Opera 11.10+ \r\n background: -ms-linear-gradient(top, #313131 0%, #585858 100%);\r\n //IE10+ \r\n background: linear-gradient(to bottom, #313131 0%, #585858 100%);\r\n //W3C \r\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#313131', endColorstr='#585858', GradientType=0);\r\n //IE6-9 \r\n color: #fff;\r\n border-top: 1px solid #313131;\r\n border-bottom: 1px solid #525252;\r\n //margin-bottom: -1px;\r\n margin-top: -1px;\r\n}*/\r\n/* END: Main Navigation Navbar */\r\n/* Navbar brand - text color - NOT USING???? */\r\n.navbar-hb2 .container-fluid .navbar-header .navbar-brand {\r\n color: #000;\r\n}\r\n/* Navbar brand - active - NOT USING???? \r\n .navbar-hb2 .container-fluid .navbar-header .navbar-brand:active {\r\n background: #313131;\r\n //Old browsers \r\n background: -moz-linear-gradient(top, #313131 0%, #585858 100%);\r\n //FF3.6+ \r\n background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #313131), color-stop(100%, #585858));\r\n //Chrome,Safari4+ \r\n background: -webkit-linear-gradient(top, #313131 0%, #585858 100%);\r\n //Chrome10+,Safari5.1+ \r\n background: -o-linear-gradient(top, #313131 0%, #585858 100%);\r\n //Opera 11.10+ \r\n background: -ms-linear-gradient(top, #313131 0%, #585858 100%);\r\n //IE10+ \r\n background: linear-gradient(to bottom, #313131 0%, #585858 100%);\r\n //W3C \r\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#313131', endColorstr='#585858', GradientType=0);\r\n //IE6-9 \r\n color: #fff;\r\n }\r\n */\r\n/* LOGIN */\r\n/*.login {\r\n margin-top: 20px;\r\n}*/\r\n#email.form-control {\r\n border-bottom-right-radius: 4px;\r\n border-top-right-radius: 4px;\r\n}\r\n\r\n.cursor-wait {\r\n cursor: wait !important;\r\n}\r\n/* Angular-generated Bootstrap tables */\r\n.ag-bootstrap-striped {\r\n overflow: visible;\r\n}\r\n\r\n .ag-bootstrap-striped .ag-root {\r\n /*border: 1px solid #808080;*/\r\n font-family: \"Open Sans\", sans-serif, Helvetica, Arial;\r\n text-align: left !important;\r\n }\r\n\r\n .ag-bootstrap-striped .ag-cell {\r\n padding: 0px;\r\n }\r\n\r\n .ag-bootstrap-striped .ag-row:hover {\r\n background-color: #e6e6e6 !important;\r\n }\r\n\r\n .ag-bootstrap-striped.grid-clickable-rows .ag-row:hover {\r\n cursor: pointer;\r\n }\r\n\r\n .ag-bootstrap-striped .ag-column-moving .ag-cell {\r\n -webkit-transition: left 0.2s;\r\n -moz-transition: left 0.2s;\r\n -o-transition: left 0.2s;\r\n -ms-transition: left 0.2s;\r\n transition: left 0.2s;\r\n }\r\n/*\r\n .ag-bootstrap-striped .ag-cell-focus {\r\n border: 1px solid #a9a9a9;\r\n }*/\r\n\r\n.ag-bootstrap .ag-cell-focus {\r\n border-style: none !important;\r\n border-width: 0 !important;\r\n border-color: none !important;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-cell-no-focus {\r\n border-right: 1px solid transparent;\r\n border-top: 1px solid transparent;\r\n border-left: 1px solid transparent;\r\n border-bottom: 1px solid transparent;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-cell-first-right-pinned {\r\n border-left: 1px dotted #808080;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-header {\r\n background: #fff;\r\n border-bottom: 2px solid #e7ecf1;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-header-row {\r\n background: #fff;\r\n border-bottom: 2px solid #e7ecf1 !important;\r\n}\r\n\r\n.ag-header {\r\n border-bottom: 2px solid #e7ecf1;\r\n color: #333333 !important;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-no-scrolls .ag-header-container {\r\n background: -webkit-linear-gradient(#fff, #d3d3d3);\r\n background: -moz-linear-gradient(#fff, #d3d3d3);\r\n background: -o-linear-gradient(#fff, #d3d3d3);\r\n background: -ms-linear-gradient(#fff, #d3d3d3);\r\n background: linear-gradient(#fff, #d3d3d3);\r\n border-bottom: 1px solid #808080;\r\n}\r\n\r\n.ag-header-viewport {\r\n background-color: white;\r\n}\r\n/* Dashboard Grid - Header cells */\r\n.dashboard-grid .ag-header-cell {\r\n border-left: 1px solid #e7ecf1 !important;\r\n padding-left: 2px;\r\n}\r\n\r\n .dashboard-grid .ag-header-cell:first-of-type {\r\n border-left: none !important;\r\n padding-left: 0 !important;\r\n }\r\n\r\n.dashboard-grid .nav > li > a {\r\n padding-left: 6px;\r\n padding-right: 6px;\r\n}\r\n\r\n.dashboard-filters-section {\r\n border: 1px solid #dddddd;\r\n padding-top: 15px;\r\n}\r\n/*.dashboard-filters {\r\n height: 82px;\r\n overflow-y: auto;\r\n border: 1px solid #dddddd;\r\n padding-top: 6px;\r\n}*/\r\n.ag-bootstrap-striped .ag-header-cell-moving .ag-header-cell-label {\r\n opacity: 0;\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\r\n filter: alpha(opacity=0);\r\n}\r\n\r\n.ag-bootstrap-striped .ag-header-cell-moving {\r\n background-color: #bebebe;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-header-cell-moving-clone {\r\n border-right: 1px solid #808080;\r\n border-left: 1px solid #808080;\r\n background-color: rgba(220, 220, 220, 0.8);\r\n}\r\n\r\n.ag-bootstrap-striped .ag-header-group-cell-with-group {\r\n border-bottom: 1px solid #808080;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-header-cell-label {\r\n line-height: 1.42857;\r\n text-align: left !important;\r\n}\r\n\r\n.ag-header-cell-label {\r\n text-align: left !important;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-header-cell-text {\r\n text-align: left;\r\n font-weight: 600;\r\n padding: 8px 8px 8px 0;\r\n}\r\n\r\n.ag-row.ag-row-even.ag-row-level-0 {\r\n border-bottom: 1px solid #e7ecf1;\r\n vertical-align: middle;\r\n}\r\n\r\n .ag-row.ag-row-even.ag-row-level-0.ag-row-focus {\r\n border-bottom: 1px solid #e7ecf1;\r\n }\r\n\r\n.ag-cell.ag-cell-not-inline-editing.ag-cell-value {\r\n vertical-align: middle;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-header-group-cell-label {\r\n padding: 4px;\r\n padding-left: 10px;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-header-group-text {\r\n font-weight: 600;\r\n margin-right: 2px;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-header-cell-menu-button {\r\n padding: 2px;\r\n margin-top: 4px;\r\n border: 1px solid transparent;\r\n -webkit-border-radius: 3px;\r\n border-radius: 3px;\r\n -webkit-box-sizing: content-box;\r\n -moz-box-sizing: content-box;\r\n box-sizing: content-box;\r\n /* When using bootstrap, box-sizing was set to 'border-box' */\r\n line-height: 0px;\r\n /* normal line height, a space was appearing below the menu button */\r\n}\r\n\r\n.ag-bootstrap-striped .ag-pinned-right-header {\r\n border-left: 1px solid #808080;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-header-cell-menu-button:hover {\r\n border: 1px solid #000;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-header-icon {\r\n color: #800000;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-row-selected {\r\n /*background-color: #b0e0e6 !important;*/\r\n background-color: #e6e6e6 !important;\r\n border-bottom: 1px solid #e7ecf1;\r\n height: auto;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-body .ag-row-odd {\r\n background-color: #f6f6f6;\r\n border-bottom: 1px solid #e7ecf1;\r\n height: auto;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-body .ag-row-even {\r\n background-color: #fff;\r\n border-bottom: 1px solid #e7ecf1;\r\n height: auto;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-floating-top .ag-row {\r\n background-color: #f0f0f0;\r\n border-bottom: 1px solid #e7ecf1;\r\n height: auto;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-floating-bottom .ag-row {\r\n background-color: #f0f0f0;\r\n border-bottom: 1px solid #e7ecf1;\r\n height: auto;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-overlay-loading-wrapper {\r\n background-color: rgba(255, 255, 255, 0.5);\r\n}\r\n\r\n.ag-bootstrap-striped .ag-overlay-loading-center {\r\n background-color: #fff;\r\n border: 1px solid #a9a9a9;\r\n -webkit-border-radius: 10px;\r\n border-radius: 10px;\r\n padding: 10px;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-overlay-no-rows-center {\r\n background-color: #fff;\r\n border: 1px solid #a9a9a9;\r\n -webkit-border-radius: 10px;\r\n border-radius: 10px;\r\n padding: 10px;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-body {\r\n background-color: #fafafa;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-group-cell-entire-row {\r\n background-color: #aaa;\r\n padding: 4px;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-footer-cell-entire-row {\r\n background-color: #aaa;\r\n padding: 4px;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-group-cell {\r\n font-style: italic;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-group-expand {\r\n padding-right: 2px;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-footer-cell {\r\n font-style: italic;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-filter-checkbox {\r\n position: relative;\r\n top: 2px;\r\n left: 2px;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-filter-header-container {\r\n border-bottom: 1px solid #d3d3d3;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-filter-apply-panel {\r\n border-top: 1px solid #d3d3d3;\r\n padding: 2px;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-filter {\r\n border: 1px solid #000;\r\n background-color: #f0f0f0;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-filter-value {\r\n margin-left: 4px;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-selection-checkbox {\r\n margin-left: 4px;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-paging-panel {\r\n padding: 4px;\r\n display: block;\r\n text-align: center;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-paging-button {\r\n margin-left: 4px;\r\n margin-right: 4px;\r\n background-color: #ffffff;\r\n border: 1px solid #cccccc;\r\n border-radius: 4px;\r\n font-size: 14px;\r\n padding: 6px 12px;\r\n}\r\n\r\n .ag-bootstrap-striped .ag-paging-button:hover {\r\n background-color: #e6e6e6;\r\n border-color: #adadad;\r\n }\r\n\r\n.ag-bootstrap-striped .ag-paging-row-summary-panel {\r\n /*display: inline-block;\r\n width: 300px;*/\r\n display: block;\r\n width: 100%;\r\n padding-top: 6px;\r\n padding-bottom: 6px;\r\n}\r\n\r\n .ag-bootstrap-striped .ag-paging-row-summary-panel span#firstRowOnPage,\r\n .ag-bootstrap-striped .ag-paging-row-summary-panel span#lastRowOnPage,\r\n .ag-bootstrap-striped .ag-paging-row-summary-panel span#recordCount {\r\n font-weight: bold !important;\r\n }\r\n\r\n.ag-paging-page-summary-panel {\r\n display: block;\r\n width: 100%;\r\n}\r\n\r\n .ag-paging-page-summary-panel button {\r\n width: 96px;\r\n }\r\n\r\n .ag-paging-page-summary-panel button#btPrevious {\r\n margin-right: 12px;\r\n }\r\n\r\n .ag-paging-page-summary-panel button#btNext {\r\n margin-left: 12px;\r\n }\r\n\r\n .ag-paging-page-summary-panel span {\r\n font-weight: bold;\r\n }\r\n\r\n.ag-bootstrap-striped .ag-column-not-visible {\r\n opacity: 0.75;\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)\";\r\n filter: alpha(opacity=75);\r\n}\r\n\r\n.ag-bootstrap-striped .ag-not-dragging {\r\n border: 1px solid transparent;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-drop-target-above {\r\n border-top: 5px solid #a9a9a9;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-drop-target-below {\r\n border-bottom: 5px solid #a9a9a9;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-dragging {\r\n border: 1px dotted #a9a9a9;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-list-item-selected {\r\n color: #f0f0f0;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-list-item-not-selected {\r\n font-style: italic;\r\n color: #a0a0a0;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-tool-panel-container {\r\n background-color: #eee;\r\n -webkit-box-sizing: border-box;\r\n -moz-box-sizing: border-box;\r\n box-sizing: border-box;\r\n border: 1px solid #a9a9a9;\r\n padding: 4px;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-list-selection {\r\n background-color: #fff;\r\n border: 1px solid #a9a9a9;\r\n -webkit-box-sizing: border-box;\r\n -moz-box-sizing: border-box;\r\n box-sizing: border-box;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-popup-list .ag-list-item:hover {\r\n background-color: #add8e6;\r\n}\r\n\r\n.ag-bootstrap-striped .ag-visible-icons {\r\n padding-left: 2px;\r\n padding-right: 2px;\r\n}\r\n\r\n.btn-inside-angular-grid {\r\n margin-top: 3px;\r\n}\r\n/* END Angular-generated Bootstrap tables */\r\n/* Angular-generated Bootstrap tables: Paging buttons */\r\n/* FIRST button */\r\n#btFirst.ag-paging-button {\r\n position: relative;\r\n padding-left: 2em;\r\n}\r\n\r\n #btFirst.ag-paging-button:before {\r\n content: \"\\\\f100\";\r\n font-family: FontAwesome;\r\n font-style: normal;\r\n font-weight: normal;\r\n text-decoration: inherit;\r\n /*--adjust as necessary--*/\r\n /*color: #000;*/\r\n font-size: 18px;\r\n padding-left: 0.5em;\r\n position: absolute;\r\n top: 3px;\r\n left: 0;\r\n }\r\n/* PREVIOUS button */\r\n#btPrevious.ag-paging-button {\r\n position: relative;\r\n padding-left: 24px;\r\n}\r\n\r\n #btPrevious.ag-paging-button:before {\r\n content: \"\\\\f104\";\r\n font-family: FontAwesome;\r\n font-style: normal;\r\n font-weight: normal;\r\n text-decoration: inherit;\r\n /*--adjust as necessary--*/\r\n /*color: #000;*/\r\n font-size: 18px;\r\n padding-left: 8px;\r\n position: absolute;\r\n top: 3px;\r\n left: 0;\r\n }\r\n/* NEXT button */\r\n#btNext.ag-paging-button {\r\n position: relative;\r\n padding-right: 24px;\r\n}\r\n\r\n #btNext.ag-paging-button:after {\r\n content: \"\\\\f105\";\r\n font-family: FontAwesome;\r\n font-style: normal;\r\n font-weight: normal;\r\n text-decoration: inherit;\r\n /*--adjust as necessary--*/\r\n /*color: #000;*/\r\n font-size: 18px;\r\n padding-right: 8px;\r\n position: absolute;\r\n top: 3px;\r\n right: 0;\r\n }\r\n/* LAST button */\r\n#btLast.ag-paging-button {\r\n position: relative;\r\n padding-right: 2em;\r\n}\r\n\r\n #btLast.ag-paging-button:after {\r\n content: \"\\\\f101\";\r\n font-family: FontAwesome;\r\n font-style: normal;\r\n font-weight: normal;\r\n text-decoration: inherit;\r\n /*--adjust as necessary--*/\r\n /*color: #000;*/\r\n font-size: 18px;\r\n padding-right: 0.5em;\r\n position: absolute;\r\n top: 3px;\r\n right: 0;\r\n }\r\n/* END Angular-generated Bootstrap tables: Paging buttons */\r\n/* Submission Queue */\r\n.subqueue_list {\r\n list-style: none outside none;\r\n margin: 10px 0 30px;\r\n}\r\n\r\n .subqueue_list.list-group {\r\n padding: 0px;\r\n line-height: 30px;\r\n }\r\n\r\n.subqueue_item {\r\n width: auto;\r\n border-radius: 5px !important;\r\n font-size: 22px;\r\n cursor: move;\r\n border: 1px solid #ddd;\r\n vertical-align: middle;\r\n height: auto;\r\n}\r\n\r\n .subqueue_item.list-group-item {\r\n padding: 0px;\r\n }\r\n\r\n .subqueue_item.list-group-item .row .media .media-body {\r\n width: 100%;\r\n }\r\n\r\n .subqueue_item.list-group-item .row .media .media-body .subqueue_apptitle {\r\n display: inline-block;\r\n width: 500px;\r\n overflow: hidden;\r\n -ms-text-overflow: ellipsis;\r\n -o-text-overflow: ellipsis;\r\n text-overflow: ellipsis;\r\n vertical-align: middle;\r\n white-space: nowrap;\r\n }\r\n\r\n.subqueue_apptitle {\r\n display: inline-block;\r\n vertical-align: middle;\r\n padding-left: 10px;\r\n font-size: 14px;\r\n font-weight: bold;\r\n}\r\n\r\n.subqueue_priorityrank {\r\n float: left;\r\n color: white;\r\n width: 40px;\r\n text-align: center;\r\n border-bottom-left-radius: 5px;\r\n border-top-left-radius: 5px;\r\n height: 100%;\r\n vertical-align: middle;\r\n}\r\n\r\n.subqueue-btn {\r\n margin: 5px;\r\n vertical-align: middle;\r\n}\r\n\r\nbutton.subqueue-btn {\r\n margin-right: 6px;\r\n}\r\n\r\n.media-bar {\r\n position: relative;\r\n}\r\n/* END Submission Queue */\r\n/* Vertical Align Middle */\r\n.middle-align {\r\n vertical-align: middle !important;\r\n}\r\n\r\ntr.middle-align-row td {\r\n vertical-align: middle !important;\r\n}\r\n\r\ntd.column-info-tooltip {\r\n width: 12px !important;\r\n}\r\n/* Custom columns */\r\n.col-25 {\r\n width: 25%;\r\n}\r\n\r\n.col-33 {\r\n width: 33.33%;\r\n}\r\n\r\n.col-50 {\r\n width: 50%;\r\n}\r\n\r\n.col-75 {\r\n width: 75%;\r\n}\r\n\r\n.col-100 {\r\n width: 100%;\r\n}\r\n/* Vertical Aligning */\r\n.vertical-center-wrapper {\r\n display: inline-block;\r\n white-space: nowrap;\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.vertical-center-content {\r\n display: inline-block;\r\n /*IMPORTANT: Content MUST have display: inline-block property */\r\n white-space: normal;\r\n vertical-align: middle;\r\n float: none;\r\n /* IMPORTANT: Remove all float properties */\r\n height: auto;\r\n}\r\n\r\n.vertical-bottom-content {\r\n /* Assign widths to columns individually */\r\n display: inline-block;\r\n /*IMPORTANT: Content MUST have display: inline-block property */\r\n white-space: normal;\r\n vertical-align: bottom;\r\n float: none;\r\n /* IMPORTANT: Remove all float properties */\r\n height: auto;\r\n}\r\n/* Vertically Align Text and Icons on Large Sidebar Buttons */\r\n.btn-sidebar-lg .vertical-center-wrapper {\r\n height: 60px;\r\n /*width: 220px;*/\r\n vertical-align: middle;\r\n}\r\n /* Icon on Large Sidebar Button */\r\n .btn-sidebar-lg .vertical-center-wrapper h3 {\r\n margin: 20px 0;\r\n }\r\n/* Large Sidebar Button */\r\n.btn-sidebar-lg {\r\n /*margin-bottom: 24px;*/\r\n cursor: pointer;\r\n}\r\n/* Portal Admin (System Admin) Filters Container */\r\n.sys-admin-filters {\r\n margin-bottom: 24px;\r\n}\r\n\r\n .sys-admin-filters.vertical-center-wrapper {\r\n min-height: 59px;\r\n }\r\n\r\n#change-password-panel {\r\n margin-top: 20px;\r\n}\r\n/* Grey Box */\r\n.grey-box {\r\n border: 1px solid #e7e7e7;\r\n background-color: #f8f8f8;\r\n padding-bottom: 12px;\r\n}\r\n/* Tabbed Panel - Bordered Body */\r\n/*.tabbed-panel-body {\r\n border-right: 1px solid #ddd;\r\n border-bottom: 1px solid #ddd;\r\n border-left: 1px solid #ddd;\r\n}*/\r\n.panel-tab-body-bordered {\r\n border-bottom: 1px solid #dddddd;\r\n border-left: 1px solid #dddddd;\r\n border-right: 1px solid #dddddd;\r\n}\r\n\r\n.panel-body-bordered {\r\n border: 1px solid #dddddd;\r\n}\r\n/*.panel-body-bordered h4 {\r\n margin-top: 0;\r\n}*/\r\na.tab-non-linking {\r\n color: #555555 !important;\r\n cursor: default !important;\r\n font-size: 18px;\r\n background-color: #fff !important;\r\n -webkit-print-color-adjust: exact;\r\n}\r\n/* Back to Top button */\r\n.btn-back-to-top {\r\n margin-top: -28px;\r\n}\r\n\r\n .btn-back-to-top i {\r\n padding-bottom: 1px;\r\n }\r\n\r\n.btn-back-to-top-file-upload {\r\n margin-top: -66px;\r\n}\r\n/* Circle Buttons */\r\n.btn-circle {\r\n height: 50px;\r\n width: 50px;\r\n text-align: center;\r\n padding: 6px 0;\r\n line-height: 1em;\r\n -moz-border-radius: 50%;\r\n -webkit-border-radius: 50%;\r\n border-radius: 50%;\r\n}\r\n\r\n.btn-circle-hb2 {\r\n background-color: #C0C0C0;\r\n /*background-color: #dddddd;*/\r\n color: #626264;\r\n border: 1px solid transparent;\r\n}\r\n\r\n .btn-circle-hb2:hover {\r\n /*border: 1px solid #626264;*/\r\n background-color: #b9b9b9;\r\n }\r\n\r\n .btn-circle-hb2.btn-success {\r\n background-color: #005daa;\r\n /*border-color: #004f91;*/\r\n border-color: #005daa;\r\n color: #ffffff;\r\n }\r\n\r\n .btn-circle-hb2.btn-success:hover {\r\n background-color: #0057a0;\r\n }\r\n/* Previous & Next Buttons */\r\nform-navigator div button.btn.btn-circle.btn-default {\r\n margin-top: 12px;\r\n}\r\n/* Panel Adjustments */\r\n.panel-default > .panel-heading {\r\n background-color: #f0f0f0;\r\n}\r\n\r\nh4.panel-title {\r\n font-weight: bold;\r\n font-size: 14px;\r\n}\r\n\r\nh3.panel-title {\r\n font-size: 24px;\r\n}\r\n/* Landing Page */\r\n/*.panel-heading.panel-heading-landing-card {\r\n min-height: 99px; \r\n}*/\r\n/*.panel-body.panel-body-landing-card {\r\n min-height: 188px; \r\n}*/\r\n.program-card-logo-container {\r\n /*height: 125px;*/\r\n vertical-align: middle;\r\n margin-bottom: 15px;\r\n}\r\n\r\n.program-card-logo {\r\n /*max-width: 303px;*/\r\n /*margin-bottom: 15px;*/\r\n vertical-align: middle;\r\n}\r\n/* Phase Estimate and Schedule panels on the Funding tab of Edit Application - remove bottom margins */\r\n.panel.panel-default.list-group.col-md-12.add-padding-top-bottom-12.table-nested-bar.remove-side-padding {\r\n margin-bottom: 0 !important;\r\n}\r\n/* Word wrap */\r\n.word-wrap {\r\n word-wrap: break-word;\r\n}\r\n/* Bold Text */\r\n.text-bold {\r\n font-weight: bold;\r\n}\r\n/* Underlined Text */\r\n.text-underline {\r\n text-decoration: underline;\r\n}\r\n/* Font weight: normal */\r\n.font-weight-normal {\r\n font-weight: normal !important;\r\n}\r\n/* Icon adjustments */\r\n.wvs-lg {\r\n /* Imitates .fa-lg but without unnecessary line-height and vertical-align properties */\r\n font-size: 1.33333em;\r\n}\r\n\r\n.icon-large {\r\n /* Large icons - used for DRPT and VDOT logos in footer*/\r\n font-size: 66px;\r\n}\r\n/* Unstyled Button */\r\n.btn-unstyled {\r\n padding: 0;\r\n height: 66px;\r\n color: #333;\r\n}\r\n\r\n .btn-unstyled:hover {\r\n text-decoration: none;\r\n color: #000;\r\n }\r\n/* Disabled text - N/A text */\r\n.text-disabled {\r\n color: #999999;\r\n font-style: italic;\r\n}\r\n/* Display Inline Block */\r\n.inline-block {\r\n display: inline-block;\r\n}\r\n/* Remove Horizontal Sides Padding */\r\n.remove-side-padding {\r\n padding-left: 0;\r\n padding-right: 0;\r\n}\r\n/* Add and Remove Padding classes */\r\n.add-padding-12 {\r\n padding: 12px;\r\n}\r\n.add-padding-side-12 {\r\n padding-left: 12px;\r\n padding-right: 12px;\r\n}\r\n.add-padding-side-15 {\r\n padding-left: 15px;\r\n padding-right: 15px;\r\n}\r\n.add-padding-top-12 {\r\n padding-top: 12px;\r\n}\r\n\r\n.add-padding-top-bottom-12 {\r\n padding-top: 12px;\r\n padding-bottom: 12px;\r\n}\r\n\r\n.add-padding-bottom-12 {\r\n padding-bottom: 12px;\r\n}\r\n\r\n.add-padding-20 {\r\n padding: 20px;\r\n}\r\n\r\n.border-top {\r\n border-top: 1px solid #e7e7e7;\r\n}\r\n/* Add padding to bold text to separate capital letter \"T\" and colon so they don't appear as one character. */\r\n.bold-punctuation-padding {\r\n padding-left: 2px;\r\n}\r\n\r\n.pearl {\r\n background-color: #C0C0C0;\r\n color: #626264;\r\n border: 1px solid transparent;\r\n}\r\n\r\n .pearl:hover {\r\n background-color: #b9b9b9;\r\n }\r\n\r\n.pearl-container {\r\n text-align: center;\r\n position: relative;\r\n width: 80px;\r\n vertical-align: top;\r\n display: inline-block;\r\n zoom: 1;\r\n}\r\n\r\npearl#delivery-pearl .pearl-container p {\r\n margin-left: -12px;\r\n}\r\n\r\n.stretch {\r\n width: 100%;\r\n display: inline-block;\r\n font-size: 0;\r\n line-height: 0;\r\n}\r\n\r\n.pearl-string {\r\n text-align: justify;\r\n -ms-text-justify: distribute-all-lines;\r\n text-justify: distribute-all-lines;\r\n min-width: 612px;\r\n /*height:125px;*/\r\n height: 120px;\r\n padding-left: 24px;\r\n padding-right: 24px;\r\n}\r\n\r\n .pearl-string:before {\r\n position: absolute;\r\n left: 0;\r\n top: 23%;\r\n height: 1px;\r\n background: #eaeaea;\r\n content: \"\";\r\n width: 100%;\r\n display: block;\r\n }\r\n\r\n.new-style .new-pearl.active .btn-pearl-active, .smartScale.active .btn-pearl-active {\r\n box-shadow: 1px 1px 17px -1px #090808;\r\n outline: none;\r\n}\r\n\r\n .new-style .new-pearl.active .btn-pearl-active:focus,.new-style .new-pearl.active .btn-pearl-active:active\r\n , .smartScale.active .btn-pearl-active:focus, .smartScale.active .btn-pearl-active:active {\r\n outline: none;\r\n }\r\n\r\n.btn-circle {\r\n height: 50px;\r\n width: 50px;\r\n text-align: center;\r\n padding: 6px 0;\r\n line-height: 1em;\r\n -moz-border-radius: 50%;\r\n -webkit-border-radius: 50%;\r\n border-radius: 50%;\r\n}\r\n/* Active Step Pearl Styling */\r\npearl.active .pearl-container .btn.btn-circle.pearl {\r\n background-color: #005daa;\r\n border-color: #005daa;\r\n color: #fff;\r\n font-size: 1.5em;\r\n}\r\n\r\npearl.active .pearl-container p {\r\n color: #005daa;\r\n font-weight: bold;\r\n}\r\n/* Active Step Pearl Styling - Specific Step Icons */\r\npearl#general-pearl.active .pearl-container .btn.btn-circle.pearl i.wvs-app-edit {\r\n padding-bottom: 4px;\r\n padding-left: 2px;\r\n}\r\n\r\npearl#location-pearl.active .pearl-container .btn.btn-circle.pearl i.fa-globe {\r\n width: 1.6em;\r\n height: 1.6em;\r\n}\r\n\r\npearl#features-pearl.active .pearl-container .btn.btn-circle.pearl i.fa-diamond {\r\n padding-left: 1px;\r\n padding-top: 1px;\r\n}\r\n\r\npearl#factors-pearl.active .pearl-container .btn.btn-circle.pearl i.fa-list-alt {\r\n width: 1.5em;\r\n height: 1.5em;\r\n padding-left: 1px;\r\n padding-top: 2px;\r\n}\r\n\r\npearl#delivery-pearl.active .pearl-container .btn.btn-circle.pearl i.fa-bank {\r\n padding-left: 1px;\r\n padding-bottom: 4px;\r\n}\r\n\r\npearl#delivery-pearl.active .pearl-container p {\r\n margin-left: -18px;\r\n}\r\n\r\n.fa-rotate-45 {\r\n transform: rotate(45deg);\r\n margin-bottom: 2px;\r\n margin-left: 1px;\r\n}\r\n/* Map Placeholder Image */\r\n.map-placeholder {\r\n border: 1px solid #dddddd;\r\n width: 100%;\r\n height: auto;\r\n}\r\n\r\n.table-nested-bar {\r\n position: relative;\r\n}\r\n\r\n .table-nested-bar:before {\r\n background-color: #005DAA;\r\n border-bottom-left-radius: 4px;\r\n border-top-left-radius: 4px;\r\n bottom: 8px;\r\n content: \"\";\r\n left: -6px;\r\n position: absolute;\r\n top: 8px;\r\n width: 6px;\r\n }\r\n/* List Group Item - Remove corner radius */\r\n.list-group-item.list-group-item-corners-hard {\r\n border-radius: 0 0 0 0 !important;\r\n}\r\n\r\n.panel-body-comments {\r\n padding-top: 0 !important;\r\n padding-bottom: 0 !important;\r\n}\r\n\r\n.comments-panel-list {\r\n max-height: 600px;\r\n overflow-y: scroll;\r\n overflow-x: auto;\r\n padding-top: 12px;\r\n padding-bottom: 12px;\r\n}\r\n\r\n.comments-panel-field {\r\n max-height: 75px;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n}\r\n\r\n.comments-panel-odd {\r\n background-color: lightgrey;\r\n}\r\n\r\n.new-comment-icon-text {\r\n font-size: 70%;\r\n color: white;\r\n display: inline-block;\r\n font-weight: bold;\r\n padding-top: 7px;\r\n}\r\n/* Alert Icon on Comments panel */\r\n.alert-icon-red {\r\n color: #E0414C;\r\n}\r\n\r\n.alert-icon-resolved {\r\n opacity: 0.3;\r\n}\r\n\r\n.alert-icon-text {\r\n font-size: 50%;\r\n}\r\n\r\n.comment {\r\n border: 1px solid #cccccc;\r\n margin-bottom: 24px;\r\n padding-top: 12px;\r\n border-radius: 6px;\r\n}\r\n\r\n.comment-even {\r\n background-color: #fcfcfc;\r\n border-left: 12px solid #aaaaaa;\r\n}\r\n\r\n.comment-odd {\r\n background-color: #eeeeee !important;\r\n border-left: 12px solid #666666;\r\n}\r\n\r\n .comment-unresolved-alert,\r\n .comment-odd.comment-unresolved-alert,\r\n .comment-even.comment-unresolved-alert {\r\n background-color: #f2dede !important;\r\n border-color: #E0414C;\r\n }\r\n\r\n.comment-alert-resolution {\r\n background-color: #dff0d8 !important;\r\n border-color: #3c763d;\r\n}\r\n\r\n.comment-resolved-alert {\r\n /*background-color: #dff0d8 !important;*/\r\n border-color: #3c763d;\r\n}\r\n\r\n.comment-concurrence-alert {\r\n background-color: #c3d5da !important;\r\n border-color: #005daa;\r\n\r\n}\r\n\r\n.comment-concurrence-alert-orphan {\r\n border-color: #005daa;\r\n background: repeating-linear-gradient(45deg,#bebebe,#b1b1b1 40px);\r\n}\r\n\r\n.alert-reply {\r\n position: absolute;\r\n /*font-size: 50px;\r\n left: -20px;*/\r\n font-size: 18px;\r\n left: 3px;\r\n top: 6px;\r\n}\r\n/*.comment-unresolved-alert .alert-reply {\r\n color: #E0414C;\r\n}\r\n.comment-resolved-alert .alert-reply {\r\n color: #3c763d;\r\n}*/\r\n/* Validation Panels */\r\n.panel.panel-validaton {\r\n border: 1px solid #ddd;\r\n}\r\n\r\n/*Info tooltips*/\r\n.tooltip {\r\n /* fixes issue with some tooltips flickering */\r\n pointer-events: none;\r\n}\r\n\r\n.fa-info-circle-blue {\r\n color: #005DAA;\r\n cursor: pointer;\r\n}\r\n\r\n.fa-info-circle.fa-info-circle-blue:hover {\r\n color: #00335e;\r\n}\r\n\r\n\r\n\r\n/* alert bubble */\r\n.alert-bubble {\r\n /*position: absolute;*/\r\n position: relative;\r\n padding: 6px 12px;\r\n color: #d9534f;\r\n background: #fcf1f0;\r\n /*border: solid 1px lighten(@brand-danger, 37%);*/\r\n border: solid 1px #d9534f;\r\n border-radius: 10px;\r\n right: 0;\r\n z-index: 10;\r\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);\r\n}\r\n /* When the alert bubble appears after a list group, correct the margin so the alert bubble appears near the field it is associated with. */\r\n .alert-bubble.alert-bubble-list-group-margin-fix {\r\n margin-top: -20px;\r\n }\r\n /* Alert bubble - triangle pointing to associated field */\r\n /*.alert-bubble:after,.alert-bubble:before {\r\n content: \"\";\r\n display: block; // reduce the damage in FF3.0\r\n position: absolute;\r\n width: 0;\r\n border-style: solid;\r\n}\r\n.alert-bubble:after {\r\n left: 15px;\r\n border-color: transparent transparent lighten(@brand-danger, 38.5%);\r\n border-width: 7px;\r\n top: -14px;\r\n}\r\n.alert-bubble:before {\r\n left: 14px;\r\n border-color: transparent transparent @brand-danger;\r\n border-width: 8px;\r\n top: -16px;\r\n}*/\r\n .alert-bubble.alert-bubble-width-100 {\r\n min-width: 100px;\r\n }\r\n\r\n.alert-heading {\r\n margin-top: 6px;\r\n}\r\n/* Pavement Cloning */\r\n.collapse.in.clone-pavement-modal-body {\r\n display: inline-block;\r\n float: none;\r\n}\r\n/* Custom Safety Needs Table*/\r\n.custom-safety-grid-input{\r\n width:100%;\r\n height:32px;\r\n display: block; \r\n padding: 0; \r\n margin: 0; \r\n border: 0;\r\n}\r\n.custom-safety-grid-input-error{\r\n background: #fcf1f0;\r\n -webkit-text-fill-color:#d9534f;\r\n}\r\n.custom-safety-grid-td{\r\n border:solid thin; \r\n border-color: #bba;\r\n padding:3px;\r\n}\r\n/* Scoring Table */\r\n.score-table {\r\n border-collapse: collapse;\r\n table-layout: fixed;\r\n /*background-color: #efefef;*/\r\n}\r\n\r\n.vert-col {\r\n /*white-space:nowrap;\r\n g-origin:50% 50%; \r\n -ms-transform: rotate(270deg);\r\n transform: rotate(270deg);*/\r\n width: 100px;\r\n height: 150px;\r\n}\r\n\r\n.scoring-cell {\r\n vertical-align: middle !important;\r\n text-align: center;\r\n}\r\n\r\n.scoring-measure-values .scoring-cell {\r\n padding: 2px;\r\n font-size: 9px;\r\n}\r\n\r\n.scoring-measure-values.pdf-export .scoring-cell {\r\n font-size: 6px;\r\n}\r\n\r\n.scoring-cell p {\r\n font-size: 9px;\r\n}\r\n\r\n.scoring-cell-gray {\r\n background-color: #D9D9D9;\r\n}\r\n\r\n.print-container .scoring-cell-gray {\r\n background-color: #D9D9D9 !important;\r\n -webkit-print-color-adjust: exact;\r\n print-color-adjust: exact;\r\n}\r\n/* doubling up on classnames to override specificity of scoring-cell */\r\n.scoring-cell.scoring-cell-measure-value {\r\n padding-bottom: 0;\r\n padding-top: 17px;\r\n vertical-align: top !important;\r\n}\r\n\r\n.vertical-table-header {\r\n height: 283px;\r\n text-align: left;\r\n font-size: small;\r\n writing-mode: vertical-lr;\r\n -webkit-transform: rotate(180deg);\r\n -moz-transform: rotate(180deg);\r\n -ms-transform: rotate(180deg);\r\n -o-transform: rotate(180deg);\r\n transform: rotate(180deg);\r\n text-orientation: mixed;\r\n}\r\n\r\n\r\n.scoring-cell-congestion-header {\r\n background-color: #D3403B;\r\n color: white !important;\r\n}\r\n\r\n.print-container .scoring-cell-congestion-header {\r\n background-color: #D3403B !important;\r\n -webkit-print-color-adjust: exact;\r\n print-color-adjust: exact;\r\n border: none;\r\n}\r\n\r\n.scoring-cell-congestion {\r\n background-color: #F2C5C4;\r\n}\r\n\r\n.print-container .scoring-cell-congestion {\r\n background-color: #F2C5C4 !important;\r\n -webkit-print-color-adjust: exact;\r\n print-color-adjust: exact;\r\n border: none;\r\n}\r\n\r\n.scoring-cell-safety-header {\r\n background-color: #F37736;\r\n color: white !important;\r\n}\r\n\r\n.print-container .scoring-cell-safety-header {\r\n background-color: #F37736 !important;\r\n -webkit-print-color-adjust: exact;\r\n print-color-adjust: exact;\r\n}\r\n\r\n.scoring-cell-safety {\r\n background-color: #FBD6C2;\r\n}\r\n\r\n.print-container .scoring-cell-safety {\r\n background-color: #FBD6C2 !important;\r\n -webkit-print-color-adjust: exact;\r\n print-color-adjust: exact;\r\n}\r\n\r\n.scoring-cell-accessibility-header {\r\n background-color: #552C75;\r\n color: white !important;\r\n}\r\n\r\n.print-container .scoring-cell-accessibility-header {\r\n background-color: #552C75 !important;\r\n -webkit-print-color-adjust: exact;\r\n print-color-adjust: exact;\r\n}\r\n\r\n.scoring-cell-accessibility {\r\n background-color: #CCBFD5;\r\n}\r\n\r\n.print-container .scoring-cell-accessibility {\r\n background-color: #CCBFD5 !important;\r\n -webkit-print-color-adjust: exact;\r\n print-color-adjust: exact;\r\n}\r\n\r\n.scoring-cell-environment-header {\r\n background-color: #8CBB2D;\r\n color: white !important;\r\n}\r\n\r\n.print-container .scoring-cell-environment-header {\r\n background-color: #8CBB2D !important;\r\n -webkit-print-color-adjust: exact;\r\n print-color-adjust: exact;\r\n}\r\n\r\n.scoring-cell-environment {\r\n background-color: #DCEAC0;\r\n}\r\n\r\n.print-container .scoring-cell-environment {\r\n background-color: #DCEAC0 !important;\r\n -webkit-print-color-adjust: exact;\r\n print-color-adjust: exact;\r\n}\r\n\r\n.scoring-cell-econ-dev-header {\r\n background-color: #0061AA;\r\n color: white !important;\r\n}\r\n\r\n.print-container .scoring-cell-econ-dev-header {\r\n background-color: #0061AA !important;\r\n -webkit-print-color-adjust: exact;\r\n print-color-adjust: exact;\r\n}\r\n\r\n.scoring-cell-econ-dev {\r\n background-color: #B2CFE5;\r\n}\r\n\r\n.print-container .scoring-cell-econ-dev {\r\n background-color: #B2CFE5 !important;\r\n -webkit-print-color-adjust: exact;\r\n print-color-adjust: exact;\r\n}\r\n\r\n.scoring-cell-land-use-header {\r\n background-color: #0F3F6E;\r\n color: white !important;\r\n}\r\n\r\n.print-container .scoring-cell-land-use-header {\r\n background-color: #0F3F6E !important;\r\n -webkit-print-color-adjust: exact;\r\n print-color-adjust: exact;\r\n}\r\n\r\n.scoring-cell-land-use {\r\n background-color: #B7C5D3;\r\n}\r\n\r\n.print-container .scoring-cell-land-use {\r\n background-color: #B7C5D3 !important;\r\n -webkit-print-color-adjust: exact;\r\n print-color-adjust: exact;\r\n}\r\n\r\n.scoring-cell-dark-border {\r\n /*border: 1px solid #767171 !important;*/\r\n border: 1px solid #333 !important;\r\n /*border: 1px solid #fff !important;*/\r\n}\r\n\r\n.scoring-cell-light-border {\r\n /*border: 1px solid #A6A6A6 !important;*/\r\n /*border: 1px solid #767171 !important;*/\r\n border: 1px solid #333 !important;\r\n /*border: 1px solid #fff !important;*/\r\n}\r\n\r\n.scoring-table-header {\r\n vertical-align: middle !important;\r\n font-weight: bold;\r\n color: #333;\r\n}\r\n\r\n .scoring-table-header div.vertical-text {\r\n height: 60px;\r\n margin-bottom: -60px;\r\n }\r\n\r\n .scoring-table-header p {\r\n font-size: 12px;\r\n }\r\n\r\n .scoring-table-header.pdf-export {\r\n font-size: 13px;\r\n }\r\n\r\n.print-container .scoring-table-header {\r\n /*-ms-word-wrap: break-word !important;\r\n word-wrap: break-word !important;*/\r\n -webkit-hyphens: auto !important;\r\n -moz-hyphens: auto !important;\r\n -ms-hyphens: auto !important;\r\n hyphens: auto !important;\r\n padding: 2px !important;\r\n}\r\n\r\n.export-container tr .scoring-table-header {\r\n font-size: 14px;\r\n}\r\n\r\n.scoring-table-header-bottom-align {\r\n vertical-align: bottom !important;\r\n}\r\n\r\n#scoring-cell-PLiT {\r\n width: 100px;\r\n border-right: 1px solid #d9d9d9 !important;\r\n border-bottom: 1px solid #d9d9d9 !important;\r\n}\r\n\r\n.print-container #scoring-cell-PLiT.scoring-cell-dark-border {\r\n width: 80px;\r\n /*border-right: none !important;\r\n border-bottom: none !important;*/\r\n}\r\n\r\n.vertical-text {\r\n -moz-transform: rotate(270deg);\r\n -ms-transform: rotate(270deg);\r\n -o-transform: rotate(270deg);\r\n -webkit-transform: rotate(270deg);\r\n transform: rotate(270deg);\r\n -moz-transform-origin: left top 0;\r\n -ms-transform-origin: left top 0;\r\n -o-transform-origin: left top 0;\r\n -webkit-transform-origin: left top 0;\r\n transform-origin: left top 0;\r\n -ms-transform-origin: 0% 0%;\r\n /* IE 9 */\r\n text-align: left;\r\n /*margin-bottom: -16px;\r\n margin-left: 20px;*/\r\n /*width: 256px;\r\n margin-top: 262px;*/\r\n /*width: 434px;*/\r\n /*margin-top: 434px;*/\r\n margin-bottom: -238px;\r\n width: 238px;\r\n height: 238px;\r\n margin-top: 238px;\r\n}\r\n\r\n .vertical-text.vertical-text-one-line {\r\n margin-left: 20px;\r\n }\r\n\r\n .vertical-text.vertical-text-two-lines {\r\n margin-left: 10px;\r\n }\r\n\r\n.print-container .vertical-text {\r\n margin-left: 4px;\r\n padding-top: 5px;\r\n width: 356px;\r\n margin-top: 356px;\r\n /*margin-top: 210px;*/\r\n}\r\n/* END Scoring Table */\r\n.is-not-current {\r\n opacity: .5;\r\n}\r\n/* Status Labels */\r\n.status-label {\r\n font-weight: 100;\r\n padding: 3px 8px;\r\n /*cursor: pointer;*/\r\n background-color: #cccccc;\r\n border-color: #bbbbbb;\r\n border-radius: 0 !important;\r\n}\r\n/* Application Status */\r\n.status {\r\n /*padding: 8px;\r\n border-radius: 6px;*/\r\n padding: 5px 8px;\r\n border-radius: 5px;\r\n border: 1px solid transparent;\r\n margin: 0;\r\n /*font-weight: bold;*/\r\n color: white;\r\n}\r\n/* Pending */\r\n.status-pending {\r\n background-color: #C0AE00 !important;\r\n /*color: darken(@brand-primary, 26%);*/\r\n /*color: darken(@brand-primary, 30%);*/\r\n -webkit-print-color-adjust: exact;\r\n}\r\n/* Submitted */\r\n.status-submitted {\r\n background-color: #005DAA !important;\r\n -webkit-print-color-adjust: exact;\r\n}\r\n/* District */\r\n.status-district,\r\n.district-validation {\r\n background-color: #F77739 !important;\r\n -webkit-print-color-adjust: exact;\r\n}\r\n/* Central Office Validation */\r\n.status-central-office,\r\n.co-validation,\r\n.status-central {\r\n background-color: #508DD6 !important;\r\n -webkit-print-color-adjust: exact;\r\n}\r\n/* VDOT PE/PIM */\r\n/*.status-vdot-pe-pim {\r\n background-color: @brand-vdot-orange;\r\n}*/\r\n/* System Action */\r\n.system-action {\r\n background-color: #bbbbbb;\r\n}\r\n/* OIPI Validation */\r\n.status-oipi,\r\n.oipi-screen {\r\n background-color: #00A4A1 !important;\r\n -webkit-print-color-adjust: exact;\r\n}\r\n/* MMWG Validation */\r\n.status-mmwg,\r\n.mmwg-screen {\r\n /*background-color: black;*/\r\n background-color: #91218A !important;\r\n -webkit-print-color-adjust: exact;\r\n}\r\n/* Screened Out */\r\n.status-screened-out {\r\n background-color: #d9534f !important;\r\n -webkit-print-color-adjust: exact;\r\n}\r\n/* Screened In */\r\n.status-screened-in {\r\n /*background-color: @brand-green;*/\r\n background-color: #626264 !important;\r\n -webkit-print-color-adjust: exact;\r\n}\r\n/* Executive Working Group */\r\n.status-executive-working-group,\r\n.ewg-validation {\r\n background-color: #333333 !important;\r\n -webkit-print-color-adjust: exact;\r\n color: white !important;\r\n}\r\n/* Scored */\r\n.status-scored {\r\n /*background-color: @brand-scored;*/\r\n background-color: #0B994D !important;\r\n -webkit-print-color-adjust: exact;\r\n}\r\n/* Local Liaison*/\r\n.local-liaison,\r\n.status-local {\r\n background-color: #FF69B4 !important;\r\n -webkit-print-color-adjust: exact;\r\n}\r\n\r\n/* Cross Org */\r\n.cross-org-screen,\r\n.status-cross {\r\n background-color: #820493 !important;\r\n -webkit-print-color-adjust: exact;\r\n}\r\n\r\n/* District Engineer */\r\n.district-engineer-screen {\r\n background-color: #697ad1 !important;\r\n -webkit-print-color-adjust: exact;\r\n}\r\n\r\n/* Other */\r\n.status-other {\r\n background-color: black !important;\r\n -webkit-print-color-adjust: exact;\r\n color: white;\r\n}\r\n\r\n.status-none {\r\n background-color: #666666 !important;\r\n -webkit-print-color-adjust: exact;\r\n}\r\n/* Application Status - icon */\r\n.status-icon-vdot-pe-pim {\r\n color: #F77739;\r\n}\r\n\r\n.status-icon-oipi {\r\n color: #00A4A1;\r\n}\r\n\r\n.status-icon-mmwg {\r\n /*color: black;*/\r\n color: #91218A;\r\n}\r\n\r\n.status-icon-screened-out {\r\n color: #d9534f;\r\n}\r\n\r\n.status-icon-screened-in {\r\n color: #626264;\r\n}\r\n\r\n.status-icon-scored {\r\n color: #0B994D;\r\n}\r\n\r\n.text-white {\r\n color: white;\r\n}\r\n/* END Status Labels */\r\n/* PUBLIC GRID*/\r\n.tr-btn {\r\n cursor: pointer;\r\n}\r\n\r\n .tr-btn:hover {\r\n color: #2A81AF;\r\n }\r\n\r\n.public-grid td {\r\n padding-top: 1em !important;\r\n padding-bottom: 1em !important;\r\n height: 5em !important;\r\n vertical-align: middle !important;\r\n}\r\n/* VALIDATION WORKFLOW */\r\n.validation-status {\r\n margin-right: 12px;\r\n text-align: center;\r\n display: inline-block;\r\n}\r\n\r\n.status-validationworkflow_nodisplay {\r\n display: none;\r\n}\r\n\r\n.status-validationworkflow_completed {\r\n /*background-color: #dff0d8;\r\n border-color: #3c763d;*/\r\n background-color: #999999;\r\n border-color: #888888;\r\n color: black;\r\n /*float: left;*/\r\n}\r\n\r\n.status-validationworkflow_pending {\r\n /*background-color: lightyellow;\r\n border-color: darkorange;*/\r\n background-color: #cccccc;\r\n border-color: #bbbbbb;\r\n color: black;\r\n /*float: left;*/\r\n}\r\n\r\n.status-validationworkflow_notdone {\r\n /*background-color: pink;\r\n border-color: red;*/\r\n background-color: #eeeeee;\r\n border-color: #dddddd;\r\n color: black;\r\n /*float: left;*/\r\n}\r\n/* END: Validation Workflow \r\n/* PRINTER-FRIENDLY APPLICATION \r\n.print-container {\r\n /*width: 670px;*/\r\n/*border-left: 1px solid red;\r\n border-right: 1px solid red;*/\r\n/*margin-top: 178px;\r\n}\r\n*/\r\n.print-header-logo-table {\r\n width: 670px !important;\r\n}\r\n\r\n.print-sponsor-logo-image {\r\n width: 167px !important;\r\n}\r\n\r\n.print-footer {\r\n font-size: 13px;\r\n}\r\n\r\n .print-footer .blue-bar {\r\n background-color: #005daa !important;\r\n -webkit-print-color-adjust: exact;\r\n color: #005daa;\r\n height: 36px;\r\n margin-top: 0;\r\n }\r\n\r\n.print-footer-icon {\r\n margin-bottom: -48px;\r\n margin-top: -24px;\r\n}\r\n\r\n.back-from-print-button {\r\n position: fixed;\r\n top: 12px;\r\n left: 12px;\r\n z-index: 100;\r\n}\r\n\r\n.print-navbar.no-print {\r\n position: fixed;\r\n display: block;\r\n padding: 12px;\r\n left: 0;\r\n top: 0;\r\n z-index: 100;\r\n background-color: white;\r\n /*border-top: 1px solid #ddd;*/\r\n border-bottom: 1px solid #ddd;\r\n width: 100%;\r\n}\r\n\r\n.print-navbar-spacer {\r\n height: 176px;\r\n}\r\n\r\n .print-navbar-spacer.ta-print-navbar-spacer,\r\n .print-navbar-spacer.bike-ped-print-navbar-spacer {\r\n height: 200px;\r\n }\r\n\r\n.print-pearls {\r\n margin-top: 12px;\r\n}\r\n\r\n .print-pearls.print-pearls-bike-ped {\r\n margin-bottom: 40px;\r\n }\r\n\r\n.step-anchor {\r\n padding-top: 166px;\r\n margin-top: -166px;\r\n}\r\n\r\n .step-anchor.ta-step-anchor,\r\n .step-anchor.bike-ped-step-anchor {\r\n padding-top: 200px;\r\n margin-top: -200px;\r\n }\r\n/* END Print Application */\r\n/* ------------------------------- */\r\n/* Diff Directive */\r\n.diff-selector {\r\n position: fixed;\r\n top: 75px;\r\n left: 6px;\r\n z-index: 1075;\r\n border: 1px solid grey;\r\n padding: 5px;\r\n background: rgba(255, 255, 255, 0.75);\r\n}\r\n@media screen and (min-width: 1440px) {\r\n .diff-selector {\r\n top: 190px;\r\n }\r\n\r\n .diff-highlight {\r\n border: 5px solid #00163a !important;\r\n }\r\n\r\n .diff-btn {\r\n background: none;\r\n color: #d43f3a;\r\n }\r\n}\r\n/**\r\n// Variables wvs-1.1.02\r\n// --------------------------------------------------\r\n// TODO: maybe eventually move the variables to their own less file \r\n\r\n//== Colors\r\n//\r\n//## Gray and brand colors for use across Bootstrap. **/\r\n/*@brand-primary: #165697;*/\r\n/*@brand-success: #C0AE00;*/\r\n/*@brand-success: #0CA453;*/\r\n/*@brand-success: #5DAE00;*/\r\n/*@brand-success: #2B803E;*/\r\n/*@brand-success: #079191;*/\r\n/*@brand-success: #34689F;*/\r\n/*@brand-success: #5483B3;*/\r\n/*@brand-success: #307E9C;*/\r\n/*@brand-info: lighten(#165697, 20%);*/\r\n/*@brand-warning: #FFA45E;*/\r\n/*@brand-warning: #C07901;*/\r\n/*@brand-warning: #bd8423;*/\r\n/*@brand-warning-bright: #FF8B33;*/\r\n/*@brand-green: #0CA453;*/\r\n/*@brand-vdot-blue: #004FA2;*/\r\n/*@brand-mmwg: #AA00FF;*/\r\n/*@brand-executive-working-group: #FF7FFF;*/\r\n/*== Scaffolding\r\n//\r\n## Settings for some of the most global styles.*/\r\n/** Background color for \\`\\`.**/\r\n/** Global text color on \\`\\`.**/\r\n/*@text-color: @gray-dark;*/\r\n/*@text-color: @gray-darker;*/\r\n/** Global textual link color.**/\r\n/** Link hover color set via \\`darken()\\` function.**/\r\n/** Link hover decoration.**/\r\n/**== Typography\r\n//\r\n//## Font, line-height, and color for body text, headings, and more. **/\r\n/** Default monospace fonts for \\`\\`, \\`\\`, and \\`
    \\`. **/\r\n/** Unit-less \\`line-height\\` for use in components like buttons. **/\r\n/** Computed \"line-height\" (\\`font-size\\` * \\`line-height\\`) for use with \\`margin\\`, \\`padding\\`, etc. **/\r\n/** By default, this inherits from the \\`\\`. **/\r\n/** Iconography\r\n//\r\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower. **/\r\n/** Load fonts from this directory. **/\r\n/** File name for all font files. **/\r\n/** Element ID within SVG icon file. **/\r\n/** Components\r\n//\r\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start). **/\r\n/** Global color for active items (e.g., navs or dropdowns). **/\r\n/** Global background color for active items (e.g., navs or dropdowns). **/\r\n/** Width of the \\`border\\` for generating carets that indicator dropdowns. **/\r\n/** Carets increase slightly in size for larger components. **/\r\n/** Tables\r\n//\r\n//## Customizes the \\`.table\\` component with basic values, each used across all table variations. **/\r\n/** Padding for \\`\\`s and \\`\\`s. **/\r\n/** Padding for cells in \\`.table-condensed\\`. **/\r\n/** Default background color used for all tables. **/\r\n/** Background color used for \\`.table-striped\\`. **/\r\n/** Background color used for \\`.table-hover\\`. **/\r\n/** Border color for table and cell borders. **/\r\n/** Buttons\r\n//\r\n//## For each of Bootstrap's buttons, define text, background and border color. **/\r\n/*@btn-primary-color: darken(@brand-primary, 23%);*/\r\n/*@btn-primary-color: lighten(@brand-primary, 50%);*/\r\n/*@btn-success-color: lighten(@brand-success, 60%);*/\r\n/** Forms\r\n//\r\n//## **/\r\n/** \\`\\` background color **/\r\n/** \\`\\` background color **/\r\n/** Text color for \\`\\`s **/\r\n/** \\`\\` border color **/\r\n/** TODO: Rename \\`@input-border-radius\\` to \\`@input-border-radius-base\\` in v4 **/\r\n/** Default \\`.form-control\\` border radius **/\r\n/** Large \\`.form-control\\` border radius **/\r\n/** Small \\`.form-control\\` border radius **/\r\n/** Border color for inputs on focus **/\r\n/*@input-border-focus: lighten(#D9FD5D, 6%);*/\r\n/** Placeholder text color **/\r\n/** Default \\`.form-control\\` height **/\r\n/** Large \\`.form-control\\` height **/\r\n/** Small \\`.form-control\\` height **/\r\n/** Background color for textual input addons **/\r\n/** Border color for textual input addons **/\r\n/** Disabled cursor for form controls and buttons. **/\r\n/** Dropdowns\r\n//\r\n//## Dropdown menu container and contents. **/\r\n/** Background for the dropdown menu. **/\r\n/** Dropdown menu \\`border-color\\`. **/\r\n/** Dropdown menu \\`border-color\\` **for IE8**. **/\r\n/** Divider color for between dropdown items. **/\r\n/** Dropdown link text color. **/\r\n/** Hover color for dropdown links. **/\r\n/** Hover background for dropdown links. **/\r\n/** Active dropdown menu item text color. **/\r\n/** Active dropdown menu item background color. **/\r\n/** Disabled dropdown menu item background color. **/\r\n/** Text color for headers within dropdown menus. **/\r\n/** Deprecated \\`@dropdown-caret-color\\` as of v3.1.0 **/\r\n/** Z-index master list\r\n//\r\n// Warning: Avoid customizing these values. They're used for a bird's eye view\r\n// of components dependent on the z-axis and are designed to all work together.\r\n//\r\n// Note: These variables are not generated into the Customizer. **/\r\n/** Media queries breakpoints\r\n//\r\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes. **/\r\n/** Extra small screen / phone **/\r\n/** Deprecated \\`@screen-xs\\` as of v3.0.1 **/\r\n/** Deprecated \\`@screen-xs-min\\` as of v3.2.0 **/\r\n/** Deprecated \\`@screen-phone\\` as of v3.0.1 **/\r\n/** Small screen / tablet **/\r\n/** Deprecated \\`@screen-sm\\` as of v3.0.1 **/\r\n/** Deprecated \\`@screen-tablet\\` as of v3.0.1 **/\r\n/** Medium screen / desktop **/\r\n/** Deprecated \\`@screen-md\\` as of v3.0.1 **/\r\n/** Deprecated \\`@screen-desktop\\` as of v3.0.1 **/\r\n/** Large screen / wide desktop **/\r\n/** Deprecated \\`@screen-lg\\` as of v3.0.1 **/\r\n/** Deprecated \\`@screen-lg-desktop\\` as of v3.0.1 **/\r\n/** So media queries don't overlap when required, provide a maximum **/\r\n/** Grid system\r\n//\r\n//## Define your custom responsive grid. **/\r\n/** Number of columns in the grid. **/\r\n/** Padding between columns. Gets divided in half for the left and right. **/\r\n/** Navbar collapse **/\r\n/** Point at which the navbar becomes uncollapsed. **/\r\n/** Point at which the navbar begins collapsing. **/\r\n/** Container sizes\r\n//\r\n//## Define the maximum width of \\`.container\\` for different screen sizes. **/\r\n/** Small screen / tablet **/\r\n/** For \\`@screen-sm-min\\` and up. **/\r\n/** Medium screen / desktop **/\r\n/** For \\`@screen-md-min\\` and up. **/\r\n/** Large screen / wide desktop **/\r\n/** For \\`@screen-lg-min\\` and up. **/\r\n/** Navbar\r\n//\r\n//## **/\r\n/** Basics of a navbar **/\r\n/*@navbar-default-color: #777;*/\r\n/*@navbar-default-color: #333;*/\r\n/*@navbar-default-bg: #f0f0f0;*/\r\n/** Navbar links **/\r\n/*@navbar-default-link-color: #5483B3;*/\r\n/*@navbar-default-link-color: #666;*/\r\n/*@navbar-default-link-hover-color: darken(@navbar-default-link-color, 10%);*/\r\n/*@navbar-default-link-active-color: lighten(@navbar-default-link-color, 10%);*/\r\n/** Navbar brand label **/\r\n/*@navbar-default-brand-color: @navbar-default-link-color;*/\r\n/*@navbar-default-brand-hover-color: darken(@navbar-default-brand-color, 10%);*/\r\n/*@navbar-default-brand-hover-bg: #C0AE00;*/\r\n/** Navbar toggle **/\r\n/** Inverted navbar **/\r\n/** Reset inverted navbar basics **/\r\n/** Inverted navbar links **/\r\n/** Inverted navbar brand label **/\r\n/** Inverted navbar toggle **/\r\n/** Navs\r\n//\r\n//## **/\r\n/** Shared nav styles **/\r\n/** Tabs **/\r\n/** Pills **/\r\n/** Pagination\r\n//\r\n//## **/\r\n/** Pager\r\n//\r\n//## **/\r\n/** Jumbotron\r\n//\r\n//## **/\r\n/*default opacity for container element color*/\r\n/** Form states and alerts\r\n//\r\n//## Define colors for form feedback states and, by default, alerts and container elements **/\r\n/*@state-primary-text: lighten(@brand-primary, 40%);*/\r\n/*@state-primary-text: darken(@brand-primary, 15%);*/\r\n/*@state-primary-bg: lighten(@brand-primary, 6%);*/\r\n/*@state-success-text: lighten(@brand-success, 40%);*/\r\n/*@state-info-text: lighten(@brand-info, 40%);*/\r\n/*@state-info-text: darken(@brand-info, 15%);*/\r\n/*@state-info-bg: darken(@brand-info, 6%);*/\r\n/*@state-warning-text: lighten(@brand-warning, 20%);*/\r\n/*@state-danger-text: lighten(@brand-danger, 20%);*/\r\n/*@state-danger-text: darken(@brand-danger, 10%);*/\r\n/** Tooltips\r\n//\r\n//## **/\r\n/** Tooltip max width **/\r\n/** Tooltip text color **/\r\n/** Tooltip background color **/\r\n/** Tooltip arrow width **/\r\n/** Tooltip arrow color **/\r\n/** Popovers\r\n//\r\n//## **/\r\n/** Popover body background color **/\r\n/** Popover maximum width **/\r\n/** Popover border color **/\r\n/** Popover fallback border color **/\r\n/** Popover title background color **/\r\n/** Popover arrow width **/\r\n/** Popover arrow color **/\r\n/** Popover outer arrow width **/\r\n/** Popover outer arrow color **/\r\n/** Popover outer arrow fallback color **/\r\n/** Labels\r\n//\r\n//## **/\r\n/** Default label background color **/\r\n/** Primary label background color **/\r\n/** Success label background color **/\r\n/** Info label background color **/\r\n/** Warning label background color **/\r\n/** Danger label background color **/\r\n/** Default label text color **/\r\n/** Default text color of a linked label **/\r\n/** Modals\r\n//\r\n//## **/\r\n/** Padding applied to the modal body **/\r\n/** Padding applied to the modal title **/\r\n/** Modal title line-height **/\r\n/** Background color of modal content area **/\r\n/** Modal content border color **/\r\n/** Modal content border color **for IE8** **/\r\n/** Modal backdrop background color **/\r\n/** Modal backdrop opacity **/\r\n/** Modal header border color **/\r\n/** Modal footer border color **/\r\n/** Alerts\r\n//\r\n//## Define alert colors, border radius, and padding. **/\r\n/*@alert-danger-text: #fff;*/\r\n/** Progress bars\r\n//\r\n//## **/\r\n/** Background color of the whole progress component **/\r\n/** Progress bar text color **/\r\n/** Variable for setting rounded corners on progress bar. **/\r\n/** Default progress bar color **/\r\n/** Success progress bar color **/\r\n/** Warning progress bar color **/\r\n/** Danger progress bar color **/\r\n/** Info progress bar color **/\r\n/** List group\r\n//\r\n//## **/\r\n/** Background color on \\`.list-group-item\\` **/\r\n/** \\`.list-group-item\\` border color **/\r\n/** List group border radius **/\r\n/** Background color of single list items on hover **/\r\n/** Text color of active list items **/\r\n/** Background color of active list items **/\r\n/** Border color of active list elements **/\r\n/** Text color for content within active list items **/\r\n/** Text color of disabled list items **/\r\n/** Background color of disabled list items **/\r\n/** Text color for content within disabled list items **/\r\n/** Panels\r\n//\r\n//## **/\r\n/** Border color for elements within panels **/\r\n/** Thumbnails\r\n//\r\n//## **/\r\n/** Padding around the thumbnail image **/\r\n/** Thumbnail background color **/\r\n/** Thumbnail border color **/\r\n/** Thumbnail border radius **/\r\n/** Custom text color for thumbnail captions **/\r\n/** Padding around the thumbnail caption **/\r\n/** Wells\r\n//\r\n//## **/\r\n/** Badges\r\n//\r\n//## **/\r\n/** Linked badge text color on hover **/\r\n/** Badge text color in active nav link **/\r\n/** Badge background color in active nav link **/\r\n/** Breadcrumbs\r\n//\r\n//## **/\r\n/** Breadcrumb background color **/\r\n/** Breadcrumb text color **/\r\n/** Text color of current page in the breadcrumb **/\r\n/** Textual separator for between breadcrumb elements **/\r\n/** Carousel\r\n//\r\n//## **/\r\n/** Close\r\n//\r\n//## **/\r\n/** Code\r\n//\r\n//## **/\r\n/** Type\r\n//\r\n//## **/\r\n/** Horizontal offset for forms and lists. **/\r\n/** Text muted color **/\r\n/** Abbreviations and acronyms border color **/\r\n/** Headings small color **/\r\n/*@headings-small-color: @gray-light;*/\r\n/*@headings-small-color: @gray;*/\r\n/** Blockquote small color **/\r\n/** Blockquote font size **/\r\n/** Blockquote border color **/\r\n/** Page header border color **/\r\n/** Width of horizontal description list titles **/\r\n/** Horizontal line color. **/\r\n/******************************** MEDIA QUERIES ---- SCREEN SIZE-SPECIFIC CSS ********************************/\r\n/* XS - smallest screen size */\r\n@media (max-width: 769px) {\r\n    /* text alignment classes */\r\n    .text-center-xs {\r\n        text-align: center !important;\r\n    }\r\n\r\n    .text-left-xs {\r\n        text-align: left !important;\r\n    }\r\n\r\n    .text-right-xs {\r\n        text-align: right !important;\r\n    }\r\n    /* floats */\r\n    .pull-left-xs {\r\n        float: left !important;\r\n    }\r\n\r\n    .pull-right-xs {\r\n        float: right !important;\r\n    }\r\n\r\n    .center-block-xs {\r\n        display: block;\r\n        margin-left: auto;\r\n        margin-right: auto;\r\n    }\r\n    /* form group */\r\n    .form-group-xs {\r\n        margin-bottom: 15px;\r\n    }\r\n    /* ------------------------------- */\r\n    .header-logo-links {\r\n        margin-top: -12px;\r\n        text-align: right;\r\n    }\r\n\r\n    .header-logos {\r\n        max-height: 35px !important;\r\n        padding: 6px;\r\n    }\r\n\r\n    #smart-portal-header-link {\r\n        background-size: auto 100% !important;\r\n    }\r\n\r\n    .footer-content .container .side-borders {\r\n        border-left: 0 none !important;\r\n        border-right: 0 none !important;\r\n        margin-top: 12px;\r\n        border-top: 1px solid #dddddd;\r\n        padding-top: 12px;\r\n    }\r\n    /* ------------------------------- */\r\n    /* LOGIN */\r\n    .login {\r\n        margin-top: 20px;\r\n    }\r\n    /* ------------------------------- */\r\n    /* Landing Page\r\n    .panel-heading.panel-heading-landing-card {\r\n        /*min-height: 99px;\r\n    }\r\n    */\r\n    /*\r\n    .program-card-logo-container {\r\n        /*height: 125px;\r\n    }\r\n    */\r\n    .program-card-logo {\r\n        /*max-width: 303px;*/\r\n        max-height: 115px;\r\n    }\r\n    /* ------------------------------- */\r\n    /* Print Application  */\r\n    .print-navbar-spacer.ta-print-navbar-spacer {\r\n        height: 340px;\r\n    }\r\n\r\n    .step-anchor.ta-step-anchor {\r\n        padding-top: 340px;\r\n        margin-top: 340px;\r\n    }\r\n}\r\n/* SM - small screen size */\r\n@media (min-width: 768px) and (max-width: 991px) {\r\n    /* text alignment classes */\r\n    .text-center-sm {\r\n        text-align: center !important;\r\n    }\r\n\r\n    .text-left-sm {\r\n        text-align: left !important;\r\n    }\r\n\r\n    .text-right-sm {\r\n        text-align: right !important;\r\n    }\r\n    /* floats */\r\n    .pull-left-sm {\r\n        float: left !important;\r\n    }\r\n\r\n    .pull-right-sm {\r\n        float: right !important;\r\n    }\r\n\r\n    .center-block-sm {\r\n        display: block;\r\n        margin-left: auto;\r\n        margin-right: auto;\r\n    }\r\n    /* form group */\r\n    .form-group-sm {\r\n        margin-bottom: 15px;\r\n    }\r\n    /* ------------------------------- */\r\n    /* LOGIN */\r\n    .login {\r\n        margin-top: 20px;\r\n    }\r\n    /* ------------------------------- */\r\n    /* Landing Page */\r\n    .panel-heading.panel-heading-landing-card {\r\n        min-height: 101px;\r\n    }\r\n\r\n    .program-card-logo-container {\r\n        height: 125px;\r\n    }\r\n\r\n    .program-card-logo {\r\n        max-width: 283px;\r\n    }\r\n    /* ------------------------------- */\r\n    /* Print Application  */\r\n    .print-navbar-spacer.ta-print-navbar-spacer {\r\n        height: 340px;\r\n    }\r\n\r\n    .step-anchor.ta-step-anchor {\r\n        padding-top: 340px;\r\n        margin-top: 340px;\r\n    }\r\n}\r\n/* MD - medium screen size */\r\n@media (min-width: 992px) and (max-width: 1199px) {\r\n    /* text alignment classes */\r\n    .text-center-md {\r\n        text-align: center !important;\r\n    }\r\n\r\n    .text-left-md {\r\n        text-align: left !important;\r\n    }\r\n\r\n    .text-right-md {\r\n        text-align: right !important;\r\n    }\r\n    /* floats */\r\n    .pull-left-md {\r\n        float: left !important;\r\n    }\r\n\r\n    .pull-right-md {\r\n        float: right !important;\r\n    }\r\n\r\n    .center-block-md {\r\n        display: block;\r\n        margin-left: auto;\r\n        margin-right: auto;\r\n    }\r\n    /* form group */\r\n    .form-group-md {\r\n        margin-bottom: 15px;\r\n    }\r\n    /* ------------------------------- */\r\n    /* LOGIN */\r\n    .login {\r\n        margin-top: 60px;\r\n    }\r\n    /* ------------------------------- */\r\n    /* Landing Page */\r\n    .panel-heading.panel-heading-landing-card {\r\n        min-height: 101px;\r\n    }\r\n\r\n    .program-card-logo-container {\r\n        height: 125px;\r\n    }\r\n\r\n    .program-card-logo {\r\n        max-width: 241px;\r\n    }\r\n    /* ------------------------------- */\r\n    /* Print Application  */\r\n    .print-navbar-spacer.ta-print-navbar-spacer {\r\n        height: 340px;\r\n    }\r\n\r\n    .step-anchor.ta-step-anchor {\r\n        padding-top: 340px;\r\n        margin-top: 340px;\r\n    }\r\n}\r\n/* LG - large screen size */\r\n@media (min-width: 1200px) {\r\n    /* text alignment classes */\r\n    .text-center-lg {\r\n        text-align: center !important;\r\n    }\r\n\r\n    .text-left-lg {\r\n        text-align: left !important;\r\n    }\r\n\r\n    .text-right-lg {\r\n        text-align: right !important;\r\n    }\r\n    /* floats */\r\n    .pull-left-lg {\r\n        float: left !important;\r\n    }\r\n\r\n    .pull-right-lg {\r\n        float: right !important;\r\n    }\r\n\r\n    .center-block-lg {\r\n        display: block;\r\n        margin-left: auto;\r\n        margin-right: auto;\r\n    }\r\n    /* form group */\r\n    .form-group-lg {\r\n        margin-bottom: 15px;\r\n    }\r\n    /* ------------------------------- */\r\n    /* LOGIN */\r\n    .login {\r\n        margin-top: 60px;\r\n    }\r\n    /* ------------------------------- */\r\n    /* Landing Page */\r\n    .panel-heading.panel-heading-landing-card {\r\n        min-height: 101px;\r\n    }\r\n\r\n    .program-card-logo-container {\r\n        height: 140px;\r\n    }\r\n\r\n    .program-card-logo {\r\n        max-width: 303px;\r\n    }\r\n}\r\n/**** ADMIN TOOLS *******/\r\n.admin-btn-blocks {\r\n    padding: 40px 2px;\r\n    margin: 0 5px;\r\n    border-radius: 3px;\r\n}\r\n\r\n#homepage-button1:hover {\r\n    font-weight: bold;\r\n    color: purple;\r\n}\r\n\r\n#homepage-button2:hover {\r\n    font-weight: bold;\r\n    color: purple;\r\n}\r\n\r\n#homepage-button2:visited {\r\n    color: purple;\r\n}\r\n\r\n#homepage-button2:active {\r\n    color: purple;\r\n}\r\n\r\n.program-role-header {\r\n    font-weight: 700;\r\n    font-size: 15px;\r\n}\r\n\r\n.program-role-sub-header {\r\n    font-weight: 700;\r\n}\r\n\r\n.roles-grid td {\r\n    vertical-align: middle!important;\r\n}\r\n\r\n\r\n.bulk-roles-active {\r\n    background-color: #f9f9f9;\r\n    color: darkblue;\r\n}\r\n/******* Show/hide items when printing *******/\r\n@media print {\r\n    .no-print {\r\n        display: none !important;\r\n    }\r\n\r\n    .print {\r\n        display: block !important;\r\n    }\r\n\r\n    header {\r\n        display: none;\r\n    }\r\n\r\n    footer {\r\n        display: none;\r\n    }\r\n\r\n    #commonBanner {\r\n        display: none;\r\n    }\r\n\r\n    .header-logos-navbar {\r\n        display: none;\r\n    }\r\n\r\n    #navbar.navbar.navbar-default {\r\n        display: none;\r\n    }\r\n}\r\n\r\n/*@media screen {*/\r\n/*    .no-print {*/\r\n/*        display: block !important;*/\r\n/*    }*/\r\n\r\n/*    .print {*/\r\n/*        display: none !important;*/\r\n/*    }*/\r\n/*}*/\r\n/*! \r\n * angular-loading-bar v0.9.0\r\n * https://chieffancypants.github.io/angular-loading-bar\r\n * Copyright (c) 2016 Wes Cruver\r\n * License: MIT\r\n */\r\n/* Make clicks pass-through */\r\n#loading-bar,\r\n#loading-bar-spinner {\r\n    pointer-events: none;\r\n    -webkit-pointer-events: none;\r\n    -webkit-transition: 350ms linear all;\r\n    -moz-transition: 350ms linear all;\r\n    -o-transition: 350ms linear all;\r\n    transition: 350ms linear all;\r\n}\r\n\r\n    #loading-bar.ng-enter,\r\n    #loading-bar.ng-leave.ng-leave-active,\r\n    #loading-bar-spinner.ng-enter,\r\n    #loading-bar-spinner.ng-leave.ng-leave-active {\r\n        opacity: 0;\r\n    }\r\n\r\n        #loading-bar.ng-enter.ng-enter-active,\r\n        #loading-bar.ng-leave,\r\n        #loading-bar-spinner.ng-enter.ng-enter-active,\r\n        #loading-bar-spinner.ng-leave {\r\n            opacity: 1;\r\n        }\r\n\r\n    #loading-bar .bar {\r\n        -webkit-transition: width 350ms;\r\n        -moz-transition: width 350ms;\r\n        -o-transition: width 350ms;\r\n        transition: width 350ms;\r\n        background: #29d;\r\n        position: fixed;\r\n        z-index: 10002;\r\n        bottom: 0;\r\n        left: 0;\r\n        width: 100%;\r\n        height: 4px;\r\n        border-bottom-right-radius: 1px;\r\n        border-top-right-radius: 1px;\r\n    }\r\n    /* Fancy blur effect */\r\n    #loading-bar .peg {\r\n        position: absolute;\r\n        width: 70px;\r\n        right: 0;\r\n        top: 0;\r\n        height: 8px;\r\n        opacity: .45;\r\n        -moz-box-shadow: #29d 1px 0 6px 1px;\r\n        -ms-box-shadow: #29d 1px 0 6px 1px;\r\n        -webkit-box-shadow: #29d 1px 0 6px 1px;\r\n        box-shadow: #29d 1px 0 6px 1px;\r\n        -moz-border-radius: 100%;\r\n        -webkit-border-radius: 100%;\r\n        border-radius: 100%;\r\n    }\r\n\r\n#loading-bar-spinner {\r\n    display: block;\r\n    position: fixed;\r\n    z-index: 10002;\r\n    bottom: 10px;\r\n    left: 10px;\r\n}\r\n\r\n    #loading-bar-spinner .spinner-icon {\r\n        width: 30px;\r\n        height: 30px;\r\n        border: solid 2px transparent;\r\n        border-top-color: #29d;\r\n        border-left-color: #29d;\r\n        border-radius: 50%;\r\n        -webkit-animation: loading-bar-spinner 400ms linear infinite;\r\n        -moz-animation: loading-bar-spinner 400ms linear infinite;\r\n        -ms-animation: loading-bar-spinner 400ms linear infinite;\r\n        -o-animation: loading-bar-spinner 400ms linear infinite;\r\n        animation: loading-bar-spinner 400ms linear infinite;\r\n    }\r\n\r\n@-webkit-keyframes loading-bar-spinner {\r\n    0% {\r\n        -webkit-transform: rotate(0deg);\r\n        transform: rotate(0deg);\r\n    }\r\n\r\n    100% {\r\n        -webkit-transform: rotate(360deg);\r\n        transform: rotate(360deg);\r\n    }\r\n}\r\n\r\n@-moz-keyframes loading-bar-spinner {\r\n    0% {\r\n        -moz-transform: rotate(0deg);\r\n        transform: rotate(0deg);\r\n    }\r\n\r\n    100% {\r\n        -moz-transform: rotate(360deg);\r\n        transform: rotate(360deg);\r\n    }\r\n}\r\n\r\n@-o-keyframes loading-bar-spinner {\r\n    0% {\r\n        -o-transform: rotate(0deg);\r\n        transform: rotate(0deg);\r\n    }\r\n\r\n    100% {\r\n        -o-transform: rotate(360deg);\r\n        transform: rotate(360deg);\r\n    }\r\n}\r\n\r\n@-ms-keyframes loading-bar-spinner {\r\n    0% {\r\n        -ms-transform: rotate(0deg);\r\n        transform: rotate(0deg);\r\n    }\r\n\r\n    100% {\r\n        -ms-transform: rotate(360deg);\r\n        transform: rotate(360deg);\r\n    }\r\n}\r\n\r\n@keyframes loading-bar-spinner {\r\n    0% {\r\n        transform: rotate(0deg);\r\n    }\r\n\r\n    100% {\r\n        transform: rotate(360deg);\r\n    }\r\n}\r\n\r\n.comments-s {\r\n    font-style: italic;\r\n    color: #b0adad;\r\n}\r\n\r\nabbr[data-original-title], abbr[title] {\r\n    border-bottom: 1px dotted #777;\r\n    cursor: help;\r\n    text-decoration: none;\r\n}\r\n\r\n.showError.ng-animate {\r\n    position: relative;\r\n    transition: all ease 0.4s;\r\n}\r\n\r\n.showError.ng-enter {\r\n    opacity: 0;\r\n}\r\n\r\n    .showError.ng-leave, .showError.ng-enter.ng-enter-active {\r\n        opacity: 1;\r\n    }\r\n\r\n        .showError.ng-leave.ng-leave-active {\r\n            opacity: 0;\r\n        }\r\n\r\n.main-label {\r\n    color: #286090;\r\n    font-size: 16px;\r\n}\r\n\r\n@media print {\r\n    .or-span {\r\n        text-align: center;\r\n        margin: 0 auto;\r\n        border-radius: 50%;\r\n        border: 1px solid #337ab7;\r\n        padding: 10px;\r\n        color: #fff;\r\n        width: 45px;\r\n        font-weight: 600;\r\n        background-color: #337ab7;\r\n    }\r\n\r\n    .edge {\r\n        display: none;\r\n        border: 1px solid #337ab7;\r\n        height: 10px;\r\n        width: 1px;\r\n        margin-left: 22px;\r\n    }\r\n\r\n    \r\n}\r\n\r\n.or-span {\r\n    border-radius: 50%;\r\n    border: 1px solid #337ab7;\r\n    padding: 10px;\r\n    color: #fff;\r\n    width: 45px;\r\n    font-weight: 600;\r\n    background-color: #337ab7;\r\n}\r\n\r\n.edge {\r\n    border: 1px solid #337ab7;\r\n    height: 10px;\r\n    width: 1px;\r\n    margin-left: 22px;\r\n}\r\n\r\n.center-col {\r\n    margin: 0 auto;\r\n    float: none;\r\n}\r\n\r\n.mar-l-15 {\r\n    margin-left: 15px;\r\n}\r\n\r\n.padd-15 {\r\n    padding: 15px;\r\n}\r\n\r\n.pad-top-1em {\r\n    padding-top: 1em;\r\n}\r\n\r\n.collapsable {\r\n    position: relative;\r\n    width: 18px;\r\n    height: 18px;\r\n    border-radius: 50%;\r\n    background-color: lightgray;\r\n    padding: 1px;\r\n    vertical-align: middle;\r\n    display: inline-block;\r\n}\r\n\r\n.plus,\r\n.minus {\r\n    box-sizing: border-box;\r\n    transition: .4s all ease-out;\r\n    position: absolute;\r\n    box-sizing: border-box;\r\n    transition: .5s all ease-out;\r\n    margin-top: -1px;\r\n    margin-left: 1.5px;\r\n}\r\n\r\n.plus {\r\n    opacity: 1;\r\n    transform: rotate(0deg);\r\n}\r\n\r\n.collapsable.opened .plus {\r\n    opacity: 0;\r\n    transform: rotate(90deg);\r\n}\r\n\r\n.minus {\r\n    opacity: 0;\r\n    transform: rotate(-90deg);\r\n}\r\n\r\n.collapsable.opened .minus {\r\n    opacity: 1;\r\n    transform: rotate(0deg);\r\n}\r\n\r\n.big-label {\r\n    font-size: 19px;\r\n    font-weight: bold;\r\n    color: #286090;\r\n}\r\n\r\n.card {\r\n    position: relative;\r\n    background: #fff;\r\n    box-shadow: 2px 4px 8px 0px rgba(46,61,73,0.2);\r\n    border-radius: 0.375rem;\r\n    transition: all 0.3s ease;\r\n    padding: 10px;\r\n    margin: 10px 0px;\r\n}\r\n\r\n.btn-shadow {\r\n    box-shadow: 8px 10px 20px 0px rgba(46,61,73,0.15);\r\n    border: none;\r\n}\r\n\r\n    .btn-shadow:hover {\r\n        box-shadow: 2px 4px 8px 0px rgba(46,61,73,0.2);\r\n    }\r\n\r\n.new-style .form-control {\r\n    border-radius: 2px;\r\n    border: 1px solid #e4e4e4;\r\n}\r\n\r\n    .new-style .form-control .btn {\r\n        border-radius: 3px;\r\n    }\r\n\r\n    .new-style .form-control .input-group-addon {\r\n        border: 1px solid #e4e4e4;\r\n    }\r\n\r\n    .new-style .form-control:focus {\r\n        border-color: #02b3e4;\r\n        box-shadow: none;\r\n        -webkit-box-shadow: none;\r\n    }\r\n\r\n.new-style .has-error .form-control:focus {\r\n    border-color: #D81B60;\r\n    box-shadow: none;\r\n    -webkit-box-shadow: none;\r\n}\r\n\r\n.slide-right {\r\n    -webkit-transition: all 0 cubic-bezier(0.25, 0.46, 0.45, 0.94);\r\n    -moz-transition: all 0 cubic-bezier(0.25, 0.46, 0.45, 0.94);\r\n    -ms-transition: all 0 cubic-bezier(0.25, 0.46, 0.45, 0.94);\r\n    -o-transition: all 0 cubic-bezier(0.25, 0.46, 0.45, 0.94);\r\n    transition: all 0 cubic-bezier(0.25, 0.46, 0.45, 0.94);\r\n    /* easeOutQuad */\r\n    -webkit-transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);\r\n    -moz-transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);\r\n    -ms-transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);\r\n    -o-transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);\r\n    transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);\r\n    /* easeOutQuad */\r\n}\r\n    /* line 165, ../sass/ng-animation.scss */\r\n    .slide-right.ng-enter {\r\n        transform: translateX(60px);\r\n        -ms-transform: translateX(60px);\r\n        -webkit-transform: translateX(60px);\r\n        transition-duration: 250ms;\r\n        -webkit-transition-duration: 250ms;\r\n        opacity: 0;\r\n    }\r\n    /* line 171, ../sass/ng-animation.scss */\r\n    .slide-right.ng-enter-active {\r\n        transform: translateX(0);\r\n        -ms-transform: translateX(0);\r\n        -webkit-transform: translateX(0);\r\n        opacity: 1;\r\n    }\r\n    /* line 176, ../sass/ng-animation.scss */\r\n    .slide-right.ng-leave {\r\n        transform: translateX(0);\r\n        -ms-transform: translateX(0);\r\n        -webkit-transform: translateX(0);\r\n        transition-duration: 300ms;\r\n        -webkit-transition-duration: 300ms;\r\n        opacity: 1;\r\n    }\r\n    /* line 182, ../sass/ng-animation.scss */\r\n    .slide-right.ng-leave-active {\r\n        transform: translateX(-80px);\r\n        -ms-transform: translateX(-80px);\r\n        -webkit-transform: translateX(-80px);\r\n        opacity: 0;\r\n    }\r\n\r\n.slide-left {\r\n    -webkit-transition: all 0 cubic-bezier(0.25, 0.46, 0.45, 0.94);\r\n    -moz-transition: all 0 cubic-bezier(0.25, 0.46, 0.45, 0.94);\r\n    -ms-transition: all 0 cubic-bezier(0.25, 0.46, 0.45, 0.94);\r\n    -o-transition: all 0 cubic-bezier(0.25, 0.46, 0.45, 0.94);\r\n    transition: all 0 cubic-bezier(0.25, 0.46, 0.45, 0.94);\r\n    /* easeOutQuad */\r\n    -webkit-transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);\r\n    -moz-transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);\r\n    -ms-transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);\r\n    -o-transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);\r\n    transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);\r\n    /* easeOutQuad */\r\n}\r\n\r\n    .slide-left.ng-enter {\r\n        transform: translateX(-60px);\r\n        -ms-transform: translateX(-60px);\r\n        -webkit-transform: translateX(-60px);\r\n        transition-duration: 250ms;\r\n        -webkit-transition-duration: 250ms;\r\n        opacity: 0;\r\n    }\r\n\r\n    .slide-left.ng-enter-active {\r\n        transform: translateX(0);\r\n        -ms-transform: translateX(0);\r\n        -webkit-transform: translateX(0);\r\n        opacity: 1;\r\n    }\r\n\r\n    .slide-left.ng-leave {\r\n        transform: translateX(0);\r\n        -ms-transform: translateX(0);\r\n        -webkit-transform: translateX(0);\r\n        transition-duration: 250ms;\r\n        -webkit-transition-duration: 250ms;\r\n        opacity: 1;\r\n    }\r\n\r\n    .slide-left.ng-leave-active {\r\n        transform: translateX(-60px);\r\n        -ms-transform: translateX(-60px);\r\n        -webkit-transform: translateX(-60px);\r\n        opacity: 0;\r\n    }\r\n\r\n.btn-raise {\r\n    box-sizing: border-box;\r\n    position: relative;\r\n    -webkit-user-select: none;\r\n    -moz-user-select: none;\r\n    -ms-user-select: none;\r\n    user-select: none;\r\n    cursor: pointer;\r\n    outline: 0;\r\n    border: none;\r\n    -webkit-tap-highlight-color: transparent;\r\n    display: inline-block;\r\n    white-space: nowrap;\r\n    text-decoration: none;\r\n    vertical-align: baseline;\r\n    text-align: center;\r\n    margin: 0;\r\n    min-width: 88px;\r\n    line-height: 36px;\r\n    padding: 0 16px;\r\n    border-radius: 2px;\r\n    box-shadow: 0 3px 1px -2px rgba(0,0,0,.2), 0 2px 2px 0 rgba(0,0,0,.14), 0 1px 5px 0 rgba(0,0,0,.12);\r\n    outline: none;\r\n}\r\n\r\n    .btn-raise:hover {\r\n        box-shadow: none;\r\n    }\r\n\r\n    .btn-raise:hover, .btn-raise:active, .btn-raise:focus {\r\n        outline: none;\r\n    }\r\n\r\n.border-light {\r\n    border: 1px solid #e4e4e4;\r\n    padding: 5px 10px;\r\n    background-color: rgba(250, 251, 252, 0.7);\r\n}\r\n\r\n.mar-t-15 {\r\n    margin-top: 15px;\r\n}\r\n\r\n.mar-10 {\r\n    margin: 10px 0px;\r\n}\r\n\r\n.border-bottom {\r\n    border-bottom: 1px solid #e4e4e4;\r\n    margin-bottom: 10px;\r\n}\r\n\r\n.cost-tag {\r\n    background-image: linear-gradient(to bottom right, #F7F7F7, #ebf8fb);\r\n    padding: 5px;\r\n    border-radius: 3px;\r\n    border: 1px solid#f1f1f1;\r\n}\r\n\r\n.new-style.table-bordered {\r\n    border: 1px solid #eceeef;\r\n}\r\n\r\n.new-style.table-striped tbody tr:nth-of-type(odd) {\r\n    background-color: rgba(0,0,0,.05);\r\n}\r\n/*\r\n.new-style.table-hover tbody tr:hover {\r\n    background-color: rgba(0,0,0,.075);\r\n}\r\n*/\r\n.new-style.table-hover > tbody > tr:hover {\r\n    background-color: none !important;\r\n    box-shadow: 5px 5px 25px 0px rgba(46,61,73,0.2);\r\n    transition: all 0.4s ease-in-out;\r\n}\r\n\r\n.mar-t-15 {\r\n    margin-top: 15px;\r\n}\r\n\r\n.mar-l-30 {\r\n    margin-top: 15px;\r\n}\r\n\r\n.special-group .form-group label {\r\n    margin-bottom: 1px !important;\r\n}\r\n\r\n.special-group .form-group {\r\n    margin-bottom: 5px !important;\r\n}\r\n\r\n\r\n@keyframes click-wave {\r\n    0% {\r\n        height: 40px;\r\n        width: 40px;\r\n        opacity: 0.35;\r\n        position: relative;\r\n    }\r\n\r\n    100% {\r\n        height: 200px;\r\n        width: 200px;\r\n        margin-left: -80px;\r\n        margin-top: -80px;\r\n        opacity: 0;\r\n    }\r\n}\r\n\r\n.new-table {\r\n    border-top-left-radius: 2px;\r\n    border-top-right-radius: 2px;\r\n}\r\n\r\n    .new-table .table-header {\r\n        background-color: rgba(79, 79, 79, 0.8) !important;\r\n        color: white;\r\n    }\r\n\r\n.disabled {\r\n    opacity: 0.5;\r\n    pointer-events: none;\r\n    cursor: no-drop;\r\n}\r\n\r\n    .disabled > * {\r\n        opacity: 0.8;\r\n        pointer-events: none;\r\n        cursor: no-drop;\r\n    }\r\n.new-style .has-error .form-control {\r\n    border: 1px solid #de3f3b;\r\n}\r\n/*\r\n.new-style .option-input {\r\n    -webkit-appearance: none;\r\n    -moz-appearance: none;\r\n    -ms-appearance: none;\r\n    -o-appearance: none;\r\n    appearance: none;\r\n    position: relative;\r\n    top: -4.66667px;\r\n    right: 0;\r\n    bottom: 0;\r\n    left: 0;\r\n    height: 20px;\r\n    width: 20px;\r\n    transition: all 0.15s ease-out 0s;\r\n    background: #cbd1d8;\r\n    border: none;\r\n    color: #fff;\r\n    cursor: pointer;\r\n    display: inline-block;\r\n    margin-right: 0.3rem;\r\n    outline: none;\r\n    position: relative;\r\n    z-index: 1000;\r\n}\r\n\r\n    .new-style .option-input:hover {\r\n        background: #9faab7;\r\n    }\r\n\r\n\r\n\r\n    .new-style .option-input:checked {\r\n        background: #02b3e4;\r\n    }\r\n\r\n        .new-style .option-input:checked::before {\r\n            height: 20px;\r\n            width: 20px;\r\n            position: absolute;\r\n            content: '\\\\2713';\r\n            display: inline-block;\r\n            font-size: 21.667px;\r\n            text-align: center;\r\n            line-height: 20px;\r\n        }\r\n\r\n        .new-style .option-input:checked::after {\r\n            -webkit-animation: click-wave 0.65s;\r\n            -moz-animation: click-wave 0.65s;\r\n            animation: click-wave 0.65s;\r\n            background: #02b3e4;\r\n            content: '';\r\n            display: block;\r\n            position: relative;\r\n            z-index: 100;\r\n        }\r\n\r\n    .new-style .option-input.radio {\r\n        border-radius: 50%;\r\n    }\r\n\r\n        .new-style .option-input.radio::after {\r\n            border-radius: 50%;\r\n        }\r\n\r\n    /*Adds an xlg size to bootstrap uib modal*/\r\n    .modal-xlg {\r\n        width: 100%;\r\n        /*height: 100%;*/\r\n    }\r\n\r\n    .modal-xlg .modal-content {\r\n        height: 90vh\r\n    }\r\n\r\n    .modal-xlg .modal-body {\r\n        position: absolute;\r\n    }\r\n\r\n\r\n   radio-group.disabled-style[disabled]{\r\n       cursor:not-allowed;\r\n       opacity:0.80;\r\n   }\r\n   .edit-more-info-pre{\r\n    position: absolute;\r\n    left: 22pc;\r\n    top: 72px;\r\n    font-weight: 600;\r\n   }\r\n  .view-more-info-pre{\r\n    position: absolute;\r\n    left: 18pc;\r\n    top: 99px;\r\n    font-weight: 600;\r\n   }\r\n\r\n.cur-pointer {\r\ncursor:pointer;\r\n}\r\n.fade-in-out.ng-enter,\r\n.fade-in-out.ng-leave {\r\n  -webkit-transition: opacity ease-in-out 1s;\r\n  -moz-transition: opacity ease-in-out 1s;\r\n  -ms-transition: opacity ease-in-out 1s;\r\n  -o-transition: opacity ease-in-out 1s;\r\n  transition: opacity ease-in-out 1s;\r\n}\r\n.fade-in-out.ng-enter,\r\n.fade-in-out.ng-leave.ng-leave-active {\r\n  opacity: 0;\r\n}\r\n.fade-in-out.ng-leave,\r\n.fade-in-out.ng-enter.ng-enter-active {\r\n  opacity: 1;\r\n}\r\n.diff-border{\r\n    border: 1px solid red;\r\n    border-radius: 10px;\r\n    box-shadow: 0 0 30px #ff5b5b;\r\n}\r\n.diff-border-new {\r\n    border: 1px solid cyan;\r\n    box-shadow: 0 0 30px teal;\r\n}\r\n.diff-border-delete {\r\n    border: 1px solid magenta;\r\n    box-shadow: 0 0 30px purple;\r\n}\r\n\r\n/*****Validation tool*************/\r\n\r\n  .style-progress-bar .progress-bar{\r\n      background-color:#1976D2 !important;\r\n  }\r\n  .validation-save-button{   \r\n      border:none; \r\n      padding: 5px 12px;\r\n      font-size: 15px;   \r\n      background-color: #5cb85c;\r\n      color: white;\r\n      box-shadow: 0 3px 1px -2px rgba(0,0,0,.2), 0 2px 2px 0 rgba(0,0,0,.14), 0 1px 5px 0 rgba(0,0,0,.12);\r\n      transition:all .4s cubic-bezier(.25,.8,.25,1),box-shadow 280ms cubic-bezier(.4,0,.2,1);\r\n  }\r\n  .validation-save-button:hover{\r\n    color: white!important;\r\n    background-color: #5cb85c!important;\r\n    border:none; \r\n    box-shadow: 0 4px 3px 0px rgba(0,0,0,.2), 0 2px 2px 0 rgba(0,0,0,.14), 0 1px 5px 0 rgba(0,0,0,.12);  \r\n  }\r\n  .validation-save-button-container {\r\n      position: absolute;\r\n      bottom: .77em;\r\n      padding-left: 8px;\r\n  }\r\n\r\n    .validation-tool-panel {\r\n        position: fixed;\r\n        top: 10%;\r\n        bottom: 10%;\r\n        z-index: 9999;\r\n        border: 1px solid #c5c5c5;\r\n        box-shadow: 0 2px 5px 0 rgba(0,0,0,0.16), 0 2px 10px 0 rgba(0,0,0,0.12);\r\n        /*padding: 20px;*/\r\n        padding-left: 20px;\r\n        padding-bottom: 20px;\r\n        padding-top: 10px;\r\n        transition: all 0.4s ease 0s;\r\n        width: 350px;\r\n        background-color: whitesmoke;\r\n        right: 6px;\r\n        min-height: 350px;\r\n    }\r\n\r\n    .validation-tool-expand-collapse-button {\r\n        box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px 1px rgba(0,0,0,0.23);\r\n        border: none !important;\r\n        border-radius: 50%;\r\n        transition: all 0.4s ease-in-out 0.1s;\r\n    }\r\n\r\n    .validation-button-hidden {\r\n        height: 60%;\r\n        width: 90%;\r\n        top: 19%;\r\n    }\r\n\r\n    .validation-button-visible {\r\n        height: 40px;\r\n        width: 40px;\r\n        top: 45%;\r\n    }\r\n\r\n    .validation-panel-hidden {\r\n        transform: translate(144px) scale(0.3);\r\n    }\r\n\r\n    .validation-panel-visible {\r\n        transform: none;\r\n    }\r\n\r\n    .validation-collapse-button {\r\n        position: absolute;\r\n        left: -6%;\r\n        z-index: 99999;\r\n    }\r\n\r\n    .validation-html-template {\r\n        height: 100%;\r\n        width: 100%;\r\n    }\r\n\r\n    .progress {\r\n        background-color: #bdbbbb;\r\n        margin-bottom: 5px;\r\n    }\r\n\r\n    .validation-footer {\r\n        position: absolute;\r\n        bottom: 0;\r\n        height: 3em;\r\n        width: 100%;\r\n    }\r\n\r\n    /*.validation-header {*/\r\n    /*    display: flex;*/\r\n    /*    flex-direction: column;*/\r\n\r\n    /*    height: 8em;*/\r\n    /*    position: absolute;*/\r\n    /*    left: 11px;*/\r\n    /*    width: 94%;*/\r\n    /*}*/\r\n\r\n    /*.validation-body {*/\r\n    /*    left: 20px;*/\r\n    /*    right: 0;*/\r\n    /*    overflow: auto;*/\r\n    /*    top: 9em;*/\r\n    /*    bottom: 4em;*/\r\n    /*    position: absolute;*/\r\n    /*    padding-right: 20px;*/\r\n    /*    padding-bottom: 5px;*/\r\n    /*}*/\r\n    .validation-toc-header {\r\n        height: 4em;\r\n        position: absolute;\r\n        left: 11px;\r\n        width: 94%\r\n    }\r\n\r\n    .validation-toc-body {\r\n        top: 7em;\r\n        bottom: 13.5em;\r\n        width: 325px;\r\n        position: absolute;\r\n        overflow-y: auto;\r\n        overflow-x: hidden;\r\n    }\r\n    .validation-toc-footer {\r\n        position: absolute;\r\n        bottom: 0;\r\n        height: 13em;\r\n    }\r\n    .validation-close-button {\r\n        position: absolute;\r\n        top: -10px;\r\n        right: -10px;\r\n        color: red;\r\n        background-color: transparent;\r\n        font-weight: bolder;\r\n        font-size: 20px;\r\n    }\r\n    .validation-close-button:hover {\r\n        color: red;\r\n    }\r\n    .validation-toc-button {\r\n        background-color: #337ab7; \r\n        border: none; \r\n        color: white\r\n    }\r\n    .validation-toc-button:hover {\r\n        color: white;\r\n    }\r\n    .validation-error-message {\r\n        color: red;\r\n    }\r\n.validation-tool-panel .toc-label,.validation-tool-panel .toc-label{\r\n    color: #000;\r\n}\r\n.validation-tool-panel .toc-label:hover,.validation-tool-panel .toc-label:focus {\r\n    text-decoration: none;\r\n    color: #000;\r\n    cursor: pointer!important;\r\n}\r\n\r\n\r\n.forms-scoring-tool-panel {\r\n    position: fixed;\r\n    top: 10%;\r\n    bottom: 10%;\r\n    z-index: 9999;\r\n    border: 1px solid #c5c5c5;\r\n    box-shadow: 0 2px 5px 0 rgba(0,0,0,0.16), 0 2px 10px 0 rgba(0,0,0,0.12);\r\n    padding-left: 20px;\r\n    padding-right: 20px;\r\n    padding-bottom: 20px;\r\n    padding-top: 10px;\r\n    transition: all 0.4s ease 0s;\r\n    width: 350px;\r\n    background-color: whitesmoke;\r\n    right: 6px;\r\n    min-height: 350px;\r\n}\r\n\r\n.forms-scoring-tool-panel .nav-tabs {\r\n    /* hide underline from tabs area, since tabs are hidden. */\r\n    display: none;\r\n}\r\n\r\n\r\n.cursor-pointer{\r\n    cursor:pointer;\r\n}\r\n  .ellipsis{\r\n    text-overflow: ellipsis;\r\n    white-space: nowrap;\r\n    overflow: hidden;\r\n  }\r\n  .validation-tool-highlight{\r\n    background-color: #fbfb92!important;\r\n    border: 1px solid #9deaff!important;\r\n    background-image:none;\r\n  }\r\n.highlight-red {\r\n        background-color: #ff9494 !important;\r\n}\r\n.highlight-red:hover {\r\n        background-color: #ff9494 !important;\r\n}\r\n\r\n/*remove url when printing page*/\r\na[href]:after {\r\n    content: none;\r\n}\r\n\r\n\r\n.about-modal-backdrop.in{\r\n    opacity:0.8 !important;\r\n}\r\n.hsip-workflow-thumbnail:hover{\r\ncursor: zoom-in;\r\n}\r\n\r\n.respect-line-breaks {\r\n    white-space: pre-wrap;\r\n}\r\n\r\n/*Dashboard grid progress bar*/\r\n#bulk-submit-pBar .progress {\r\n    position: relative;\r\n}\r\n\r\n#bulk-submit-pBar .progress span {\r\n    position: absolute;\r\n    display: block;\r\n    width: 100%;\r\n    color: black;\r\n}\r\n\r\n/* Floating app info bar and button */\r\n#app-info-btn-wrapper {\r\n    display: none;\r\n    position: fixed;\r\n    bottom: 60px;\r\n    right: 30px;\r\n    z-index: 9999;\r\n    border: none;\r\n    outline: none;\r\n    cursor: pointer;\r\n    border-radius: 4px;\r\n}\r\n\r\n.app-info-btn-dd {\r\n    display: block;\r\n    right: 0;\r\n    left: unset;\r\n    min-height: 90px;\r\n    width: 200px;\r\n    padding: 10px;\r\n    transform:scale(1)\r\n}\r\n\r\n.app-info-btn-dd div {\r\n    display: flex;\r\n    flex-direction: column\r\n}\r\n\r\n.app-info-btn-dd div small:first-child {\r\n    font-weight: bold;\r\n    border-bottom: 1px solid gray;\r\n    text-align: center;\r\n    margin-bottom: 3px;\r\n    word-wrap: break-word;\r\n    min-height: 15px;\r\n}\r\n\r\n.app-info-btn-dd button {\r\n    border: none;\r\n    position: absolute;\r\n    top: -2px;\r\n    left: -5px;\r\n    background-color: transparent;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n/* end floating app info stuff*/\r\n\r\n#return-to-top {\r\n    display: none;\r\n    position: fixed;\r\n    bottom: 20px;\r\n    right: 30px;\r\n    z-index: 9999;\r\n    font-size: 18px;\r\n    border: none;\r\n    outline: none;\r\n    color: #fff;\r\n    cursor: pointer;\r\n    border-radius: 4px;\r\n  }\r\n  \r\n  #return-to-top i {\r\n    color: #fff;\r\n    margin: 0;\r\n    position: relative;\r\n    font-size: 19px;\r\n    -webkit-transition: all .3s ease;\r\n    -moz-transition: all .3s ease;\r\n    -ms-transition: all .3s ease;\r\n    -o-transition: all .3s ease;\r\n    transition: all .3s ease;\r\n  }\r\n\r\n.debugPanel {\r\n    text-align: left;\r\n    display: none;\r\n}\r\n\r\n\r\n.circle-number, .circle-number-comment, .circle-number-alert, .circle-number-error {\r\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);\r\n}\r\n\r\n\r\n.indication-icon {\r\n    position: relative;\r\n    /* FONT-WEIGHT: 800; */\r\n    width: 40px;\r\n    height: 40px;\r\n    border-radius: 23px;\r\n    text-align: center;\r\n    /* font-size: 14px; */\r\n    vertical-align: middle;\r\n    color: white;\r\n    line-height: 2.42;\r\n    -webkit-background-clip: padding-box;\r\n    -moz-background-clip: padding;\r\n    background-clip: padding-box;\r\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);\r\n    background:  #C0C0C0;\r\n    border: 1px solid white;\r\n}\r\n\r\n.invalid-icon {\r\n    background: #fcf1f0;\r\n    border: solid 1px #d9534f;\r\n}\r\n\r\n.invalid-icon-warn {\r\n    background: #fcf1f0;\r\n    border: solid 1px #d9b94f;\r\n}\r\n\r\n\r\n.indication-tooltip {\r\n    background: black;\r\n    SIZE: A3;\r\n    position: absolute;\r\n    /* FONT-WEIGHT: 800; */\r\n    width: 20px;\r\n    line-height: 20px;\r\n    height: 20px;\r\n    border-radius: 10px;\r\n    text-align: center;\r\n    /* font-size: 14px; */\r\n    vertical-align: middle;\r\n    top: -10%;\r\n    left: 70%;\r\n    border: 1px solid white;\r\n    color: white;\r\n    -webkit-background-clip: padding-box;\r\n    -moz-background-clip: padding;\r\n    background-clip: padding-box;\r\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);\r\n}\r\n\r\n.invalid-tooltip {\r\n    background: #b94a48;\r\n}\r\n\r\n\r\n.tooltip-inner {\r\n    text-align: left !important;\r\n    /*white-space:pre-wrap;*/\r\n    min-width: 300px !important;\r\n    max-width: 350px !important;\r\n    word-wrap: break-word !important;\r\n    white-space: pre-line !important;\r\n}\r\n\r\n.tooltip-font-size-override {\r\n    font-size: 14px !important;\r\n}\r\n\r\n.popover-content {\r\n    white-space: pre-line;\r\n}\r\n\r\n.popover-content hr {\r\n    margin-bottom: 0;\r\n    padding-bottom: 0;\r\n}\r\n\r\n.tooltip-inner hr {\r\n    margin-bottom: 0;\r\n    padding-bottom: 0;\r\n}\r\n\r\n.clone-info-header-btn .popover-content {\r\n    width: 100%;\r\n    padding: 9px 14px;\r\n    white-space: normal!important;\r\n}\r\n\r\n.rollback-header-btn-popout .popover-inner {\r\n    width: 400px;\r\n    max-width: 400px;\r\n\r\n}\r\n\r\n.c-diff-header-btn-popover .popover-inner {\r\n    width: 230px;\r\n    max-width: 230px;\r\n}\r\n\r\n/********** export header button ***********/\r\n.export-header-btn-popover .popover-content {\r\n    padding: 0;\r\n    margin: 0;\r\n}\r\n\r\n.export-header-btn-popover ul {\r\n    padding: 5px 0;\r\n    width: 100%;\r\n    white-space: normal!important;\r\n    list-style: none;\r\n    margin: 0;\r\n}\r\n\r\n.export-header-btn-popover li a {\r\n    display: block;\r\n    padding: 3px 20px;\r\n    clear: both;\r\n    font-weight: 400;\r\n    line-height: 1.42857143;\r\n    color: #333333;\r\n    white-space: nowrap;\r\n}\r\n\r\n.export-header-btn-popover li a:hover{\r\n    color: #262626;\r\n    text-decoration: none;\r\n    background-color: #f5f5f5;\r\n}\r\n/***********************************************/\r\n\r\n.popover {\r\n    max-width: 800px; /* optional max width */\r\n    width: intrinsic; /* Safari/WebKit uses a non-standard name */\r\n    width: -moz-max-content; /* Firefox/Gecko */\r\n    width: -webkit-max-content; /* Chrome */\r\n}\r\n\r\n.badge.badge-success {\r\n    background-color: #5cb85c;\r\n}\r\n\r\n.badge.badge-info {\r\n    background-color: #5bc0de;\r\n}\r\n\r\n.badge.badge-warning {\r\n    background-color: #f0ad4e;\r\n}\r\n\r\n.badge.badge-danger {\r\n    background-color: #d9534f;\r\n}\r\n\r\n.read-only-checkbox-wrapper {\r\n    float: left;\r\n    margin-right: 5px;\r\n}\r\n\r\n.fa-times-thin:before {\r\n    content: '\\\\00d7';\r\n}\r\n\r\n/* ag grid tooltip */\r\n.ag-tooltip {\r\n    background-color: white !important;\r\n    border-radius: 1px !important;\r\n    padding: 5px !important;\r\n    border-width: 1px !important;\r\n    border-style: solid !important;\r\n    border-color: #545454 !important;\r\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./css/site.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"/* dashboard filters ui-selector css */\\r\\n@import url(\\\"../app/dashboard/dashboard-grid/css/grid-filter.css\\\");\\r\\n\\r\\n\\r\\n@import \\\"https://js.arcgis.com/4.26/@arcgis/core/assets/esri/themes/light/main.css\\\";\\r\\n\\r\\nhtml {\\r\\n    height: 100%;\\r\\n    -ms-overflow-style: scrollbar\\r\\n}\\r\\n\\r\\nbody {\\r\\n    height: 100%;\\r\\n\\r\\n}\\r\\n\\r\\n.body-content {\\r\\n    min-height: 100%;\\r\\n    height: auto !important;\\r\\n    height: 100%;\\r\\n    margin: 0 auto -270px;\\r\\n}\\r\\n\\r\\n.push-for-footer {\\r\\n    height: 270px;\\r\\n    margin: 0;\\r\\n}\\r\\n\\r\\n.footer {\\r\\n    height: 246px;\\r\\n    margin: 0;\\r\\n    width: 100%;\\r\\n    position: relative;\\r\\n    background-color: white;\\r\\n}\\r\\n/*Notice of intent date*/\\r\\n.noiDate {\\r\\n    color: red;\\r\\n    font-weight: bold;\\r\\n}\\r\\n/*Footer*/\\r\\n.blue-bar {\\r\\n    width: 100%;\\r\\n    background-color: #005DAA;\\r\\n    height: 50px;\\r\\n    margin-top: 24px;\\r\\n    color: white;\\r\\n}\\r\\n\\r\\n.footer-content {\\r\\n    background-color: #F0F2F5 !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n    color: #000;\\r\\n    font-size: 13px;\\r\\n}\\r\\n\\r\\n    .footer-content .footer-contact-info {\\r\\n        margin-top: -12px;\\r\\n    }\\r\\n\\r\\n    .footer-content .side-borders {\\r\\n        margin-top: 6px;\\r\\n        margin-bottom: 6px;\\r\\n        border-left: 1px solid #dddddd;\\r\\n        border-right: 1px solid #dddddd;\\r\\n    }\\r\\n\\r\\n.footer-bottom {\\r\\n    color: #000;\\r\\n    padding-bottom: 8px;\\r\\n    padding-top: 8px;\\r\\n}\\r\\n/* Header logos - HB2, VTrans, DRPT, VDOT navbar styling */\\r\\n.header-logos-navbar {\\r\\n    height: 90px;\\r\\n    background-color: white;\\r\\n    width: 100%;\\r\\n    margin-top: 12px;\\r\\n}\\r\\n/*#site-logo {\\r\\n    max-height: 80px;\\r\\n    width: auto;\\r\\n    vertical-align: middle;\\r\\n}*/\\r\\n.header-logo-links {\\r\\n    margin-top: 20px;\\r\\n    text-align: right;\\r\\n}\\r\\n\\r\\n.header-logo-link .header-logos {\\r\\n    max-height: 40px;\\r\\n}\\r\\n/*.header-logo-link {\\r\\n    text-align: right;\\r\\n}*/\\r\\n#smart-portal-header-link {\\r\\n    background: transparent url('../images/Header/SMART-Portal-Logo.png') no-repeat scroll left center;\\r\\n    background-size: 100% auto;\\r\\n    height: 82px;\\r\\n}\\r\\n\\r\\n    #smart-portal-header-link:hover,\\r\\n    #smart-portal-header-link:active,\\r\\n    #smart-portal-header-link:focus {\\r\\n        text-decoration: none !important;\\r\\n    }\\r\\n\\r\\n.header-agency-logo {\\r\\n    background-size: auto 100%;\\r\\n    background-position: 100% 50%;\\r\\n    background-repeat: no-repeat;\\r\\n    height: 28px;\\r\\n    background-color: transparent;\\r\\n}\\r\\n\\r\\n#oipi-header-link {\\r\\n    background-image: url('../images/Header/SmartPortal-Header-Logo_1_OIPI.png');\\r\\n}\\r\\n\\r\\n#drpt-header-link {\\r\\n    background-image: url('../images/Header/SmartPortal-Header-Logo_2_DRPT.png');\\r\\n}\\r\\n\\r\\n#vdot-header-link {\\r\\n    background-image: url('../images/Header/SmartPortal-Header-Logo_3_VDOT.png');\\r\\n}\\r\\n\\r\\n#siteDisclaimer {\\r\\n    color: red;\\r\\n    display: block;\\r\\n    font-size: 25px;\\r\\n    left: 0;\\r\\n    margin: 0 auto;\\r\\n    position: absolute;\\r\\n    right: 320px;\\r\\n    text-align: center;\\r\\n    top: 74px;\\r\\n    width: 250px;\\r\\n}\\r\\n\\r\\n.discussion-dropdown {\\r\\n    max-height: 400px;\\r\\n    overflow-y: auto;\\r\\n}\\r\\n/* Circle Number */\\r\\n.circle-number,\\r\\n.circle-number-comment,\\r\\n.circle-number-alert,\\r\\n.circle-number-concurrence,\\r\\n.circle-number-error {\\r\\n    width: 25px;\\r\\n    height: 25px;\\r\\n    border-radius: 13px;\\r\\n    text-align: center;\\r\\n    font-size: 14px;\\r\\n    vertical-align: middle;\\r\\n    border: 2px solid white;\\r\\n    color: white;\\r\\n    line-height: 1.42;\\r\\n    /* Prevent background color leak outs */\\r\\n    -webkit-background-clip: padding-box;\\r\\n    -moz-background-clip: padding;\\r\\n    background-clip: padding-box;\\r\\n}\\r\\n\\r\\n.circle-number-comment {\\r\\n    background: darkgoldenrod;\\r\\n}\\r\\n\\r\\n.circle-number-concurrence{\\r\\n    background: #005daa;\\r\\n}\\r\\n\\r\\n.circle-number-alert {\\r\\n    background: red;\\r\\n}\\r\\n\\r\\n.circle-number-error {\\r\\n    background: #b94a48;\\r\\n}\\r\\n\\r\\n.circle-number.ng-enter,\\r\\n.circle-number.ng-leave {\\r\\n    transition: all cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.5s;\\r\\n}\\r\\n\\r\\n    .circle-number.ng-enter,\\r\\n    .circle-number.ng-leave.ng-leave-active {\\r\\n        opacity: 0;\\r\\n    }\\r\\n\\r\\n        .circle-number.ng-leave,\\r\\n        .circle-number.ng-enter.ng-enter-active {\\r\\n            opacity: 1;\\r\\n        }\\r\\n\\r\\n.circle-number-superscript {\\r\\n    position: absolute;\\r\\n    top: 42%;\\r\\n    left: 55%;\\r\\n    transform: translate(-10%, -85%);\\r\\n}\\r\\n\\r\\n.circle-number-pearl {\\r\\n    position: absolute;\\r\\n    top: 0%;\\r\\n    left: 60%;\\r\\n    transform: translate(-10%, -65%);\\r\\n}\\r\\n\\r\\n.nav-icon {\\r\\n    padding: 10px;\\r\\n}\\r\\n/* Main Navigation Navbar */\\r\\n/* Navbar HB2 (Main Navigation Navbar) */\\r\\n.navbar-hb2 {\\r\\n    background: #909090;\\r\\n    /* Old browsers */\\r\\n    background: -moz-linear-gradient(top, #909090 0%, #b2b2b2 100%);\\r\\n    /* FF3.6+ */\\r\\n    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #909090), color-stop(100%, #b2b2b2));\\r\\n    /* Chrome,Safari4+ */\\r\\n    background: -webkit-linear-gradient(top, #909090 0%, #b2b2b2 100%);\\r\\n    /* Chrome10+,Safari5.1+ */\\r\\n    background: -o-linear-gradient(top, #909090 0%, #b2b2b2 100%);\\r\\n    /* Opera 11.10+ */\\r\\n    background: -ms-linear-gradient(top, #909090 0%, #b2b2b2 100%);\\r\\n    /* IE10+ */\\r\\n    background: linear-gradient(to bottom, #909090 0%, #b2b2b2 100%);\\r\\n    /* W3C */\\r\\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#909090', endColorstr='#b2b2b2', GradientType=0);\\r\\n    /* IE6-9 */\\r\\n    border-top: 1px solid #939393;\\r\\n    border-bottom: 1px solid #AFAFAF;\\r\\n    border-right: 0;\\r\\n    border-left: 0;\\r\\n    border-radius: 0 !important;\\r\\n    width: 100%;\\r\\n    color: #000 !important;\\r\\n    margin-bottom: 0 !important;\\r\\n    z-index: 949;\\r\\n}\\r\\n    /* Main Navigation Navbar - link color styling (USING) */\\r\\n    .navbar-hb2 .container-fluid ul li a {\\r\\n        color: #000;\\r\\n        margin-left: 1px;\\r\\n    }\\r\\n    /*Main Navbar - ACTIVE (USING) */\\r\\n    .navbar-hb2 .container.container-fluid .nav.navbar-nav > li.active > a {\\r\\n        background: #313131;\\r\\n        /* Old browsers */\\r\\n        background: -moz-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n        /* FF3.6+ */\\r\\n        background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #313131), color-stop(100%, #585858));\\r\\n        /* Chrome,Safari4+ */\\r\\n        background: -webkit-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n        /* Chrome10+,Safari5.1+ */\\r\\n        background: -o-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n        /* Opera 11.10+ */\\r\\n        background: -ms-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n        /* IE10+ */\\r\\n        background: linear-gradient(to bottom, #313131 0%, #585858 100%);\\r\\n        /* W3C */\\r\\n        filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#313131', endColorstr='#585858', GradientType=0);\\r\\n        /* IE6-9 */\\r\\n        color: #fff;\\r\\n        border-top: 1px solid #313131;\\r\\n        border-bottom: 1px solid #525252;\\r\\n        margin-bottom: -1px;\\r\\n        margin-top: -1px;\\r\\n    }\\r\\n    /*Main Navbar - Link HOVER (USING) */\\r\\n    .navbar-hb2 .container.container-fluid .nav.navbar-nav > li:hover > a {\\r\\n        background: #313131;\\r\\n        background: -moz-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n        background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #313131), color-stop(100%, #585858));\\r\\n        background: -webkit-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n        background: -o-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n        background: -ms-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n        background: linear-gradient(to bottom, #313131 0%, #585858 100%);\\r\\n        filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#313131', endColorstr='#585858', GradientType=0);\\r\\n        color: #fff;\\r\\n        border-top: 1px solid #313131;\\r\\n        border-bottom: 1px solid #525252;\\r\\n        margin-bottom: -1px;\\r\\n        margin-top: -1px;\\r\\n    }\\r\\n    /* Main Navigation Navbar - username dropdown open styling (mobile size) - USING!!! */\\r\\n    .navbar-hb2 .navbar-nav .open .dropdown-menu > li > a {\\r\\n        color: #000;\\r\\n        margin-left: 1px;\\r\\n    }\\r\\n    /*Main Navbar - Dropdown List: HOVER - USING!!!! */\\r\\n    .navbar-hb2 .container.container-fluid .nav.navbar-nav li.dropdown.open ul.dropdown-menu li:hover a {\\r\\n        background: #313131;\\r\\n        background: -moz-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n        background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #313131), color-stop(100%, #585858));\\r\\n        background: -webkit-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n        background: -o-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n        background: -ms-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n        background: linear-gradient(to bottom, #313131 0%, #585858 100%);\\r\\n        filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#313131', endColorstr='#585858', GradientType=0);\\r\\n        color: #fff;\\r\\n        border-top: 1px solid #313131;\\r\\n        border-bottom: 1px solid #525252;\\r\\n        margin-bottom: -1px;\\r\\n        margin-top: -1px;\\r\\n    }\\r\\n    /*Main Navbar - Keep dropdown header button active while dropdown is open - USING!!! */\\r\\n    .navbar-hb2 .container.container-fluid .nav.navbar-nav li.dropdown.open > a {\\r\\n        background: #313131;\\r\\n        background: -moz-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n        background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #313131), color-stop(100%, #585858));\\r\\n        background: -webkit-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n        background: -o-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n        background: -ms-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n        background: linear-gradient(to bottom, #313131 0%, #585858 100%);\\r\\n        filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#313131', endColorstr='#585858', GradientType=0);\\r\\n        color: #fff;\\r\\n        border-top: 1px solid #313131;\\r\\n        border-bottom: 1px solid #525252;\\r\\n        margin-bottom: -1px;\\r\\n        margin-top: -1px;\\r\\n    }\\r\\n\\r\\n#about-dropdown:hover {\\r\\n    cursor: pointer;\\r\\n}\\r\\n/* Comments icon/button on main navigation navbar */\\r\\n#comments-dropdown-button:hover,\\r\\n#comments-dropdown-button.open {\\r\\n    background: #313131;\\r\\n    background: -moz-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #313131), color-stop(100%, #585858));\\r\\n    background: -webkit-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n    background: -o-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n    background: -ms-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n    background: linear-gradient(to bottom, #313131 0%, #585858 100%);\\r\\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#313131', endColorstr='#585858', GradientType=0);\\r\\n    border-top: 1px solid #313131;\\r\\n    border-bottom: 1px solid #525252;\\r\\n    margin-bottom: -1px;\\r\\n    margin-top: -1px;\\r\\n}\\r\\n\\r\\n    #comments-dropdown-button.open i.fa.fa-comments.fa-2x,\\r\\n    #comments-dropdown-button:hover i.fa.fa-comments.fa-2x {\\r\\n        color: white;\\r\\n    }\\r\\n\\r\\n#comments-dropdown-button:hover {\\r\\n    cursor: pointer;\\r\\n}\\r\\n\\r\\n#comments-dropdown-button.open .dropdown-menu:hover {\\r\\n    cursor: default;\\r\\n}\\r\\n\\r\\n#comments-header-dropdown-new-comment-icon {\\r\\n    font-size: 88%;\\r\\n    margin-top: -12px;\\r\\n}\\r\\n\\r\\n.comments-dropdown-app-divider hr {\\r\\n    margin-top: 3px;\\r\\n    margin-bottom: 3px;\\r\\n    padding-right: 0 !important;\\r\\n}\\r\\n\\r\\n.btn-link-view-all {\\r\\n    color: #337ab7 !important;\\r\\n}\\r\\n/*.comment-dropdown .circle-number.circle-number-comment {\\r\\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);\\r\\n}*/\\r\\n.circle-number,\\r\\n.circle-number-comment,\\r\\n.circle-number-alert,\\r\\n.circle-number-error {\\r\\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);\\r\\n}\\r\\n/* Alerts icon/button on main navigation navbar */\\r\\n#alerts-dropdown-button:hover,\\r\\n#alerts-dropdown-button.open,\\r\\n#concurrence-dropdown-button:hover,\\r\\n#concurrence-dropdown-button.open {\\r\\n    background: #313131;\\r\\n    background: -moz-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #313131), color-stop(100%, #585858));\\r\\n    background: -webkit-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n    background: -o-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n    background: -ms-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n    background: linear-gradient(to bottom, #313131 0%, #585858 100%);\\r\\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#313131', endColorstr='#585858', GradientType=0);\\r\\n    border-top: 1px solid #313131;\\r\\n    border-bottom: 1px solid #525252;\\r\\n    margin-bottom: -1px;\\r\\n    margin-top: -1px;\\r\\n}\\r\\n\\r\\n    #alerts-dropdown-button.open i.fa.fa-warning.fa-2x,\\r\\n    #alerts-dropdown-button:hover i.fa.fa-warning.fa-2x {\\r\\n        color: white;\\r\\n    }\\r\\n\\r\\n#alerts-dropdown-button:hover,\\r\\n#concurrence-dropdown-button:hover {\\r\\n    cursor: pointer;\\r\\n}\\r\\n\\r\\n#alerts-dropdown-button.open .dropdown-menu:hover ,\\r\\n#concurrence-dropdown-button.open .dropdown-menu:hover{\\r\\n    cursor: default;\\r\\n}\\r\\n/*Main Navbar - About Dropdown - Specific About sub-page Active (NOT WORKING, NEARLY THERE.  Would be nice to have working, but not vital.) */\\r\\n/*.navbar-hb2 .dropdown.open ul.dropdown-menu li.active a {\\r\\n    background: #313131;\\r\\n  //Old browsers \\r\\n  background: -moz-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n  //FF3.6+ \\r\\n  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #313131), color-stop(100%, #585858));\\r\\n  //Chrome,Safari4+ \\r\\n  background: -webkit-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n  //Chrome10+,Safari5.1+ \\r\\n  background: -o-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n  //Opera 11.10+ \\r\\n  background: -ms-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n  //IE10+ \\r\\n  background: linear-gradient(to bottom, #313131 0%, #585858 100%);\\r\\n  //W3C \\r\\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#313131', endColorstr='#585858', GradientType=0);\\r\\n  //IE6-9 \\r\\n  color: #fff;\\r\\n  border-top: 1px solid #313131;\\r\\n  border-bottom: 1px solid #525252;\\r\\n  //margin-bottom: -1px;\\r\\n  margin-top: -1px;\\r\\n}*/\\r\\n/* END: Main Navigation Navbar */\\r\\n/* Navbar brand - text color - NOT USING???? */\\r\\n.navbar-hb2 .container-fluid .navbar-header .navbar-brand {\\r\\n    color: #000;\\r\\n}\\r\\n/* Navbar brand - active -  NOT USING???? \\r\\n    .navbar-hb2 .container-fluid .navbar-header .navbar-brand:active {\\r\\n    background: #313131;\\r\\n  //Old browsers \\r\\n  background: -moz-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n  //FF3.6+ \\r\\n  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #313131), color-stop(100%, #585858));\\r\\n  //Chrome,Safari4+ \\r\\n  background: -webkit-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n  //Chrome10+,Safari5.1+ \\r\\n  background: -o-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n  //Opera 11.10+ \\r\\n  background: -ms-linear-gradient(top, #313131 0%, #585858 100%);\\r\\n  //IE10+ \\r\\n  background: linear-gradient(to bottom, #313131 0%, #585858 100%);\\r\\n  //W3C \\r\\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#313131', endColorstr='#585858', GradientType=0);\\r\\n  //IE6-9 \\r\\n  color: #fff;\\r\\n    }\\r\\n    */\\r\\n/* LOGIN */\\r\\n/*.login {\\r\\n    margin-top: 20px;\\r\\n}*/\\r\\n#email.form-control {\\r\\n    border-bottom-right-radius: 4px;\\r\\n    border-top-right-radius: 4px;\\r\\n}\\r\\n\\r\\n.cursor-wait {\\r\\n    cursor: wait !important;\\r\\n}\\r\\n/* Angular-generated Bootstrap tables */\\r\\n.ag-bootstrap-striped {\\r\\n    overflow: visible;\\r\\n}\\r\\n\\r\\n    .ag-bootstrap-striped .ag-root {\\r\\n        /*border: 1px solid #808080;*/\\r\\n        font-family: \\\"Open Sans\\\", sans-serif, Helvetica, Arial;\\r\\n        text-align: left !important;\\r\\n    }\\r\\n\\r\\n    .ag-bootstrap-striped .ag-cell {\\r\\n        padding: 0px;\\r\\n    }\\r\\n\\r\\n    .ag-bootstrap-striped .ag-row:hover {\\r\\n        background-color: #e6e6e6 !important;\\r\\n    }\\r\\n\\r\\n    .ag-bootstrap-striped.grid-clickable-rows .ag-row:hover {\\r\\n        cursor: pointer;\\r\\n    }\\r\\n\\r\\n    .ag-bootstrap-striped .ag-column-moving .ag-cell {\\r\\n        -webkit-transition: left 0.2s;\\r\\n        -moz-transition: left 0.2s;\\r\\n        -o-transition: left 0.2s;\\r\\n        -ms-transition: left 0.2s;\\r\\n        transition: left 0.2s;\\r\\n    }\\r\\n/*\\r\\n    .ag-bootstrap-striped .ag-cell-focus {\\r\\n       border: 1px solid #a9a9a9;\\r\\n    }*/\\r\\n\\r\\n.ag-bootstrap .ag-cell-focus {\\r\\n    border-style: none !important;\\r\\n    border-width: 0 !important;\\r\\n    border-color: none !important;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-cell-no-focus {\\r\\n    border-right: 1px solid transparent;\\r\\n    border-top: 1px solid transparent;\\r\\n    border-left: 1px solid transparent;\\r\\n    border-bottom: 1px solid transparent;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-cell-first-right-pinned {\\r\\n    border-left: 1px dotted #808080;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-header {\\r\\n    background: #fff;\\r\\n    border-bottom: 2px solid #e7ecf1;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-header-row {\\r\\n    background: #fff;\\r\\n    border-bottom: 2px solid #e7ecf1 !important;\\r\\n}\\r\\n\\r\\n.ag-header {\\r\\n    border-bottom: 2px solid #e7ecf1;\\r\\n    color: #333333 !important;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-no-scrolls .ag-header-container {\\r\\n    background: -webkit-linear-gradient(#fff, #d3d3d3);\\r\\n    background: -moz-linear-gradient(#fff, #d3d3d3);\\r\\n    background: -o-linear-gradient(#fff, #d3d3d3);\\r\\n    background: -ms-linear-gradient(#fff, #d3d3d3);\\r\\n    background: linear-gradient(#fff, #d3d3d3);\\r\\n    border-bottom: 1px solid #808080;\\r\\n}\\r\\n\\r\\n.ag-header-viewport {\\r\\n    background-color: white;\\r\\n}\\r\\n/* Dashboard Grid - Header cells */\\r\\n.dashboard-grid .ag-header-cell {\\r\\n    border-left: 1px solid #e7ecf1 !important;\\r\\n    padding-left: 2px;\\r\\n}\\r\\n\\r\\n    .dashboard-grid .ag-header-cell:first-of-type {\\r\\n        border-left: none !important;\\r\\n        padding-left: 0 !important;\\r\\n    }\\r\\n\\r\\n.dashboard-grid .nav > li > a {\\r\\n    padding-left: 6px;\\r\\n    padding-right: 6px;\\r\\n}\\r\\n\\r\\n.dashboard-filters-section {\\r\\n    border: 1px solid #dddddd;\\r\\n    padding-top: 15px;\\r\\n}\\r\\n/*.dashboard-filters {\\r\\n    height: 82px;\\r\\n    overflow-y: auto;\\r\\n    border: 1px solid #dddddd;\\r\\n    padding-top: 6px;\\r\\n}*/\\r\\n.ag-bootstrap-striped .ag-header-cell-moving .ag-header-cell-label {\\r\\n    opacity: 0;\\r\\n    -ms-filter: \\\"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\\\";\\r\\n    filter: alpha(opacity=0);\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-header-cell-moving {\\r\\n    background-color: #bebebe;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-header-cell-moving-clone {\\r\\n    border-right: 1px solid #808080;\\r\\n    border-left: 1px solid #808080;\\r\\n    background-color: rgba(220, 220, 220, 0.8);\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-header-group-cell-with-group {\\r\\n    border-bottom: 1px solid #808080;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-header-cell-label {\\r\\n    line-height: 1.42857;\\r\\n    text-align: left !important;\\r\\n}\\r\\n\\r\\n.ag-header-cell-label {\\r\\n    text-align: left !important;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-header-cell-text {\\r\\n    text-align: left;\\r\\n    font-weight: 600;\\r\\n    padding: 8px 8px 8px 0;\\r\\n}\\r\\n\\r\\n.ag-row.ag-row-even.ag-row-level-0 {\\r\\n    border-bottom: 1px solid #e7ecf1;\\r\\n    vertical-align: middle;\\r\\n}\\r\\n\\r\\n    .ag-row.ag-row-even.ag-row-level-0.ag-row-focus {\\r\\n        border-bottom: 1px solid #e7ecf1;\\r\\n    }\\r\\n\\r\\n.ag-cell.ag-cell-not-inline-editing.ag-cell-value {\\r\\n    vertical-align: middle;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-header-group-cell-label {\\r\\n    padding: 4px;\\r\\n    padding-left: 10px;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-header-group-text {\\r\\n    font-weight: 600;\\r\\n    margin-right: 2px;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-header-cell-menu-button {\\r\\n    padding: 2px;\\r\\n    margin-top: 4px;\\r\\n    border: 1px solid transparent;\\r\\n    -webkit-border-radius: 3px;\\r\\n    border-radius: 3px;\\r\\n    -webkit-box-sizing: content-box;\\r\\n    -moz-box-sizing: content-box;\\r\\n    box-sizing: content-box;\\r\\n    /* When using bootstrap, box-sizing was set to 'border-box' */\\r\\n    line-height: 0px;\\r\\n    /* normal line height, a space was appearing below the menu button */\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-pinned-right-header {\\r\\n    border-left: 1px solid #808080;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-header-cell-menu-button:hover {\\r\\n    border: 1px solid #000;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-header-icon {\\r\\n    color: #800000;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-row-selected {\\r\\n    /*background-color: #b0e0e6 !important;*/\\r\\n    background-color: #e6e6e6 !important;\\r\\n    border-bottom: 1px solid #e7ecf1;\\r\\n    height: auto;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-body .ag-row-odd {\\r\\n    background-color: #f6f6f6;\\r\\n    border-bottom: 1px solid #e7ecf1;\\r\\n    height: auto;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-body .ag-row-even {\\r\\n    background-color: #fff;\\r\\n    border-bottom: 1px solid #e7ecf1;\\r\\n    height: auto;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-floating-top .ag-row {\\r\\n    background-color: #f0f0f0;\\r\\n    border-bottom: 1px solid #e7ecf1;\\r\\n    height: auto;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-floating-bottom .ag-row {\\r\\n    background-color: #f0f0f0;\\r\\n    border-bottom: 1px solid #e7ecf1;\\r\\n    height: auto;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-overlay-loading-wrapper {\\r\\n    background-color: rgba(255, 255, 255, 0.5);\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-overlay-loading-center {\\r\\n    background-color: #fff;\\r\\n    border: 1px solid #a9a9a9;\\r\\n    -webkit-border-radius: 10px;\\r\\n    border-radius: 10px;\\r\\n    padding: 10px;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-overlay-no-rows-center {\\r\\n    background-color: #fff;\\r\\n    border: 1px solid #a9a9a9;\\r\\n    -webkit-border-radius: 10px;\\r\\n    border-radius: 10px;\\r\\n    padding: 10px;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-body {\\r\\n    background-color: #fafafa;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-group-cell-entire-row {\\r\\n    background-color: #aaa;\\r\\n    padding: 4px;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-footer-cell-entire-row {\\r\\n    background-color: #aaa;\\r\\n    padding: 4px;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-group-cell {\\r\\n    font-style: italic;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-group-expand {\\r\\n    padding-right: 2px;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-footer-cell {\\r\\n    font-style: italic;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-filter-checkbox {\\r\\n    position: relative;\\r\\n    top: 2px;\\r\\n    left: 2px;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-filter-header-container {\\r\\n    border-bottom: 1px solid #d3d3d3;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-filter-apply-panel {\\r\\n    border-top: 1px solid #d3d3d3;\\r\\n    padding: 2px;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-filter {\\r\\n    border: 1px solid #000;\\r\\n    background-color: #f0f0f0;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-filter-value {\\r\\n    margin-left: 4px;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-selection-checkbox {\\r\\n    margin-left: 4px;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-paging-panel {\\r\\n    padding: 4px;\\r\\n    display: block;\\r\\n    text-align: center;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-paging-button {\\r\\n    margin-left: 4px;\\r\\n    margin-right: 4px;\\r\\n    background-color: #ffffff;\\r\\n    border: 1px solid #cccccc;\\r\\n    border-radius: 4px;\\r\\n    font-size: 14px;\\r\\n    padding: 6px 12px;\\r\\n}\\r\\n\\r\\n    .ag-bootstrap-striped .ag-paging-button:hover {\\r\\n        background-color: #e6e6e6;\\r\\n        border-color: #adadad;\\r\\n    }\\r\\n\\r\\n.ag-bootstrap-striped .ag-paging-row-summary-panel {\\r\\n    /*display: inline-block;\\r\\n  width: 300px;*/\\r\\n    display: block;\\r\\n    width: 100%;\\r\\n    padding-top: 6px;\\r\\n    padding-bottom: 6px;\\r\\n}\\r\\n\\r\\n    .ag-bootstrap-striped .ag-paging-row-summary-panel span#firstRowOnPage,\\r\\n    .ag-bootstrap-striped .ag-paging-row-summary-panel span#lastRowOnPage,\\r\\n    .ag-bootstrap-striped .ag-paging-row-summary-panel span#recordCount {\\r\\n        font-weight: bold !important;\\r\\n    }\\r\\n\\r\\n.ag-paging-page-summary-panel {\\r\\n    display: block;\\r\\n    width: 100%;\\r\\n}\\r\\n\\r\\n    .ag-paging-page-summary-panel button {\\r\\n        width: 96px;\\r\\n    }\\r\\n\\r\\n        .ag-paging-page-summary-panel button#btPrevious {\\r\\n            margin-right: 12px;\\r\\n        }\\r\\n\\r\\n        .ag-paging-page-summary-panel button#btNext {\\r\\n            margin-left: 12px;\\r\\n        }\\r\\n\\r\\n    .ag-paging-page-summary-panel span {\\r\\n        font-weight: bold;\\r\\n    }\\r\\n\\r\\n.ag-bootstrap-striped .ag-column-not-visible {\\r\\n    opacity: 0.75;\\r\\n    -ms-filter: \\\"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)\\\";\\r\\n    filter: alpha(opacity=75);\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-not-dragging {\\r\\n    border: 1px solid transparent;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-drop-target-above {\\r\\n    border-top: 5px solid #a9a9a9;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-drop-target-below {\\r\\n    border-bottom: 5px solid #a9a9a9;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-dragging {\\r\\n    border: 1px dotted #a9a9a9;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-list-item-selected {\\r\\n    color: #f0f0f0;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-list-item-not-selected {\\r\\n    font-style: italic;\\r\\n    color: #a0a0a0;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-tool-panel-container {\\r\\n    background-color: #eee;\\r\\n    -webkit-box-sizing: border-box;\\r\\n    -moz-box-sizing: border-box;\\r\\n    box-sizing: border-box;\\r\\n    border: 1px solid #a9a9a9;\\r\\n    padding: 4px;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-list-selection {\\r\\n    background-color: #fff;\\r\\n    border: 1px solid #a9a9a9;\\r\\n    -webkit-box-sizing: border-box;\\r\\n    -moz-box-sizing: border-box;\\r\\n    box-sizing: border-box;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-popup-list .ag-list-item:hover {\\r\\n    background-color: #add8e6;\\r\\n}\\r\\n\\r\\n.ag-bootstrap-striped .ag-visible-icons {\\r\\n    padding-left: 2px;\\r\\n    padding-right: 2px;\\r\\n}\\r\\n\\r\\n.btn-inside-angular-grid {\\r\\n    margin-top: 3px;\\r\\n}\\r\\n/* END Angular-generated Bootstrap tables */\\r\\n/* Angular-generated Bootstrap tables: Paging buttons */\\r\\n/* FIRST button */\\r\\n#btFirst.ag-paging-button {\\r\\n    position: relative;\\r\\n    padding-left: 2em;\\r\\n}\\r\\n\\r\\n    #btFirst.ag-paging-button:before {\\r\\n        content: \\\"\\\\f100\\\";\\r\\n        font-family: FontAwesome;\\r\\n        font-style: normal;\\r\\n        font-weight: normal;\\r\\n        text-decoration: inherit;\\r\\n        /*--adjust as necessary--*/\\r\\n        /*color: #000;*/\\r\\n        font-size: 18px;\\r\\n        padding-left: 0.5em;\\r\\n        position: absolute;\\r\\n        top: 3px;\\r\\n        left: 0;\\r\\n    }\\r\\n/* PREVIOUS button */\\r\\n#btPrevious.ag-paging-button {\\r\\n    position: relative;\\r\\n    padding-left: 24px;\\r\\n}\\r\\n\\r\\n    #btPrevious.ag-paging-button:before {\\r\\n        content: \\\"\\\\f104\\\";\\r\\n        font-family: FontAwesome;\\r\\n        font-style: normal;\\r\\n        font-weight: normal;\\r\\n        text-decoration: inherit;\\r\\n        /*--adjust as necessary--*/\\r\\n        /*color: #000;*/\\r\\n        font-size: 18px;\\r\\n        padding-left: 8px;\\r\\n        position: absolute;\\r\\n        top: 3px;\\r\\n        left: 0;\\r\\n    }\\r\\n/* NEXT button */\\r\\n#btNext.ag-paging-button {\\r\\n    position: relative;\\r\\n    padding-right: 24px;\\r\\n}\\r\\n\\r\\n    #btNext.ag-paging-button:after {\\r\\n        content: \\\"\\\\f105\\\";\\r\\n        font-family: FontAwesome;\\r\\n        font-style: normal;\\r\\n        font-weight: normal;\\r\\n        text-decoration: inherit;\\r\\n        /*--adjust as necessary--*/\\r\\n        /*color: #000;*/\\r\\n        font-size: 18px;\\r\\n        padding-right: 8px;\\r\\n        position: absolute;\\r\\n        top: 3px;\\r\\n        right: 0;\\r\\n    }\\r\\n/* LAST button */\\r\\n#btLast.ag-paging-button {\\r\\n    position: relative;\\r\\n    padding-right: 2em;\\r\\n}\\r\\n\\r\\n    #btLast.ag-paging-button:after {\\r\\n        content: \\\"\\\\f101\\\";\\r\\n        font-family: FontAwesome;\\r\\n        font-style: normal;\\r\\n        font-weight: normal;\\r\\n        text-decoration: inherit;\\r\\n        /*--adjust as necessary--*/\\r\\n        /*color: #000;*/\\r\\n        font-size: 18px;\\r\\n        padding-right: 0.5em;\\r\\n        position: absolute;\\r\\n        top: 3px;\\r\\n        right: 0;\\r\\n    }\\r\\n/* END Angular-generated Bootstrap tables: Paging buttons */\\r\\n/* Submission Queue */\\r\\n.subqueue_list {\\r\\n    list-style: none outside none;\\r\\n    margin: 10px 0 30px;\\r\\n}\\r\\n\\r\\n    .subqueue_list.list-group {\\r\\n        padding: 0px;\\r\\n        line-height: 30px;\\r\\n    }\\r\\n\\r\\n.subqueue_item {\\r\\n    width: auto;\\r\\n    border-radius: 5px !important;\\r\\n    font-size: 22px;\\r\\n    cursor: move;\\r\\n    border: 1px solid #ddd;\\r\\n    vertical-align: middle;\\r\\n    height: auto;\\r\\n}\\r\\n\\r\\n    .subqueue_item.list-group-item {\\r\\n        padding: 0px;\\r\\n    }\\r\\n\\r\\n        .subqueue_item.list-group-item .row .media .media-body {\\r\\n            width: 100%;\\r\\n        }\\r\\n\\r\\n            .subqueue_item.list-group-item .row .media .media-body .subqueue_apptitle {\\r\\n                display: inline-block;\\r\\n                width: 500px;\\r\\n                overflow: hidden;\\r\\n                -ms-text-overflow: ellipsis;\\r\\n                -o-text-overflow: ellipsis;\\r\\n                text-overflow: ellipsis;\\r\\n                vertical-align: middle;\\r\\n                white-space: nowrap;\\r\\n            }\\r\\n\\r\\n.subqueue_apptitle {\\r\\n    display: inline-block;\\r\\n    vertical-align: middle;\\r\\n    padding-left: 10px;\\r\\n    font-size: 14px;\\r\\n    font-weight: bold;\\r\\n}\\r\\n\\r\\n.subqueue_priorityrank {\\r\\n    float: left;\\r\\n    color: white;\\r\\n    width: 40px;\\r\\n    text-align: center;\\r\\n    border-bottom-left-radius: 5px;\\r\\n    border-top-left-radius: 5px;\\r\\n    height: 100%;\\r\\n    vertical-align: middle;\\r\\n}\\r\\n\\r\\n.subqueue-btn {\\r\\n    margin: 5px;\\r\\n    vertical-align: middle;\\r\\n}\\r\\n\\r\\nbutton.subqueue-btn {\\r\\n    margin-right: 6px;\\r\\n}\\r\\n\\r\\n.media-bar {\\r\\n    position: relative;\\r\\n}\\r\\n/* END Submission Queue */\\r\\n/* Vertical Align Middle */\\r\\n.middle-align {\\r\\n    vertical-align: middle !important;\\r\\n}\\r\\n\\r\\ntr.middle-align-row td {\\r\\n    vertical-align: middle !important;\\r\\n}\\r\\n\\r\\ntd.column-info-tooltip {\\r\\n    width: 12px !important;\\r\\n}\\r\\n/* Custom columns */\\r\\n.col-25 {\\r\\n    width: 25%;\\r\\n}\\r\\n\\r\\n.col-33 {\\r\\n    width: 33.33%;\\r\\n}\\r\\n\\r\\n.col-50 {\\r\\n    width: 50%;\\r\\n}\\r\\n\\r\\n.col-75 {\\r\\n    width: 75%;\\r\\n}\\r\\n\\r\\n.col-100 {\\r\\n    width: 100%;\\r\\n}\\r\\n/* Vertical Aligning */\\r\\n.vertical-center-wrapper {\\r\\n    display: inline-block;\\r\\n    white-space: nowrap;\\r\\n    width: 100%;\\r\\n    height: 100%;\\r\\n}\\r\\n\\r\\n.vertical-center-content {\\r\\n    display: inline-block;\\r\\n    /*IMPORTANT: Content MUST have display: inline-block property */\\r\\n    white-space: normal;\\r\\n    vertical-align: middle;\\r\\n    float: none;\\r\\n    /* IMPORTANT: Remove all float properties */\\r\\n    height: auto;\\r\\n}\\r\\n\\r\\n.vertical-bottom-content {\\r\\n    /* Assign widths to columns individually */\\r\\n    display: inline-block;\\r\\n    /*IMPORTANT: Content MUST have display: inline-block property */\\r\\n    white-space: normal;\\r\\n    vertical-align: bottom;\\r\\n    float: none;\\r\\n    /* IMPORTANT: Remove all float properties */\\r\\n    height: auto;\\r\\n}\\r\\n/* Vertically Align Text and Icons on Large Sidebar Buttons */\\r\\n.btn-sidebar-lg .vertical-center-wrapper {\\r\\n    height: 60px;\\r\\n    /*width: 220px;*/\\r\\n    vertical-align: middle;\\r\\n}\\r\\n    /* Icon on Large Sidebar Button */\\r\\n    .btn-sidebar-lg .vertical-center-wrapper h3 {\\r\\n        margin: 20px 0;\\r\\n    }\\r\\n/* Large Sidebar Button */\\r\\n.btn-sidebar-lg {\\r\\n    /*margin-bottom: 24px;*/\\r\\n    cursor: pointer;\\r\\n}\\r\\n/* Portal Admin (System Admin) Filters Container */\\r\\n.sys-admin-filters {\\r\\n    margin-bottom: 24px;\\r\\n}\\r\\n\\r\\n    .sys-admin-filters.vertical-center-wrapper {\\r\\n        min-height: 59px;\\r\\n    }\\r\\n\\r\\n#change-password-panel {\\r\\n    margin-top: 20px;\\r\\n}\\r\\n/* Grey Box */\\r\\n.grey-box {\\r\\n    border: 1px solid #e7e7e7;\\r\\n    background-color: #f8f8f8;\\r\\n    padding-bottom: 12px;\\r\\n}\\r\\n/* Tabbed Panel - Bordered Body */\\r\\n/*.tabbed-panel-body {\\r\\n    border-right: 1px solid #ddd;\\r\\n    border-bottom: 1px solid #ddd;\\r\\n    border-left: 1px solid #ddd;\\r\\n}*/\\r\\n.panel-tab-body-bordered {\\r\\n    border-bottom: 1px solid #dddddd;\\r\\n    border-left: 1px solid #dddddd;\\r\\n    border-right: 1px solid #dddddd;\\r\\n}\\r\\n\\r\\n.panel-body-bordered {\\r\\n    border: 1px solid #dddddd;\\r\\n}\\r\\n/*.panel-body-bordered h4 {\\r\\n    margin-top: 0;\\r\\n}*/\\r\\na.tab-non-linking {\\r\\n    color: #555555 !important;\\r\\n    cursor: default !important;\\r\\n    font-size: 18px;\\r\\n    background-color: #fff !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n}\\r\\n/* Back to Top button */\\r\\n.btn-back-to-top {\\r\\n    margin-top: -28px;\\r\\n}\\r\\n\\r\\n    .btn-back-to-top i {\\r\\n        padding-bottom: 1px;\\r\\n    }\\r\\n\\r\\n.btn-back-to-top-file-upload {\\r\\n    margin-top: -66px;\\r\\n}\\r\\n/* Circle Buttons */\\r\\n.btn-circle {\\r\\n    height: 50px;\\r\\n    width: 50px;\\r\\n    text-align: center;\\r\\n    padding: 6px 0;\\r\\n    line-height: 1em;\\r\\n    -moz-border-radius: 50%;\\r\\n    -webkit-border-radius: 50%;\\r\\n    border-radius: 50%;\\r\\n}\\r\\n\\r\\n.btn-circle-hb2 {\\r\\n    background-color: #C0C0C0;\\r\\n    /*background-color: #dddddd;*/\\r\\n    color: #626264;\\r\\n    border: 1px solid transparent;\\r\\n}\\r\\n\\r\\n    .btn-circle-hb2:hover {\\r\\n        /*border: 1px solid #626264;*/\\r\\n        background-color: #b9b9b9;\\r\\n    }\\r\\n\\r\\n    .btn-circle-hb2.btn-success {\\r\\n        background-color: #005daa;\\r\\n        /*border-color: #004f91;*/\\r\\n        border-color: #005daa;\\r\\n        color: #ffffff;\\r\\n    }\\r\\n\\r\\n        .btn-circle-hb2.btn-success:hover {\\r\\n            background-color: #0057a0;\\r\\n        }\\r\\n/* Previous & Next Buttons */\\r\\nform-navigator div button.btn.btn-circle.btn-default {\\r\\n    margin-top: 12px;\\r\\n}\\r\\n/* Panel Adjustments */\\r\\n.panel-default > .panel-heading {\\r\\n    background-color: #f0f0f0;\\r\\n}\\r\\n\\r\\nh4.panel-title {\\r\\n    font-weight: bold;\\r\\n    font-size: 14px;\\r\\n}\\r\\n\\r\\nh3.panel-title {\\r\\n    font-size: 24px;\\r\\n}\\r\\n/* Landing Page */\\r\\n/*.panel-heading.panel-heading-landing-card {\\r\\n    min-height: 99px; \\r\\n}*/\\r\\n/*.panel-body.panel-body-landing-card {\\r\\n    min-height: 188px; \\r\\n}*/\\r\\n.program-card-logo-container {\\r\\n    /*height: 125px;*/\\r\\n    vertical-align: middle;\\r\\n    margin-bottom: 15px;\\r\\n}\\r\\n\\r\\n.program-card-logo {\\r\\n    /*max-width: 303px;*/\\r\\n    /*margin-bottom: 15px;*/\\r\\n    vertical-align: middle;\\r\\n}\\r\\n/* Phase Estimate and Schedule panels on the Funding tab of Edit Application - remove bottom margins */\\r\\n.panel.panel-default.list-group.col-md-12.add-padding-top-bottom-12.table-nested-bar.remove-side-padding {\\r\\n    margin-bottom: 0 !important;\\r\\n}\\r\\n/* Word wrap */\\r\\n.word-wrap {\\r\\n    word-wrap: break-word;\\r\\n}\\r\\n/* Bold Text */\\r\\n.text-bold {\\r\\n    font-weight: bold;\\r\\n}\\r\\n/* Underlined Text */\\r\\n.text-underline {\\r\\n    text-decoration: underline;\\r\\n}\\r\\n/* Font weight: normal */\\r\\n.font-weight-normal {\\r\\n    font-weight: normal !important;\\r\\n}\\r\\n/* Icon adjustments */\\r\\n.wvs-lg {\\r\\n    /* Imitates .fa-lg but without unnecessary line-height and vertical-align properties */\\r\\n    font-size: 1.33333em;\\r\\n}\\r\\n\\r\\n.icon-large {\\r\\n    /* Large icons - used for DRPT and VDOT logos in footer*/\\r\\n    font-size: 66px;\\r\\n}\\r\\n/* Unstyled Button */\\r\\n.btn-unstyled {\\r\\n    padding: 0;\\r\\n    height: 66px;\\r\\n    color: #333;\\r\\n}\\r\\n\\r\\n    .btn-unstyled:hover {\\r\\n        text-decoration: none;\\r\\n        color: #000;\\r\\n    }\\r\\n/* Disabled text - N/A text */\\r\\n.text-disabled {\\r\\n    color: #999999;\\r\\n    font-style: italic;\\r\\n}\\r\\n/* Display Inline Block */\\r\\n.inline-block {\\r\\n    display: inline-block;\\r\\n}\\r\\n/* Remove Horizontal Sides Padding */\\r\\n.remove-side-padding {\\r\\n    padding-left: 0;\\r\\n    padding-right: 0;\\r\\n}\\r\\n/* Add and Remove Padding classes */\\r\\n.add-padding-12 {\\r\\n    padding: 12px;\\r\\n}\\r\\n.add-padding-side-12 {\\r\\n    padding-left: 12px;\\r\\n    padding-right: 12px;\\r\\n}\\r\\n.add-padding-side-15 {\\r\\n    padding-left: 15px;\\r\\n    padding-right: 15px;\\r\\n}\\r\\n.add-padding-top-12 {\\r\\n    padding-top: 12px;\\r\\n}\\r\\n\\r\\n.add-padding-top-bottom-12 {\\r\\n    padding-top: 12px;\\r\\n    padding-bottom: 12px;\\r\\n}\\r\\n\\r\\n.add-padding-bottom-12 {\\r\\n    padding-bottom: 12px;\\r\\n}\\r\\n\\r\\n.add-padding-20 {\\r\\n    padding: 20px;\\r\\n}\\r\\n\\r\\n.border-top {\\r\\n    border-top: 1px solid #e7e7e7;\\r\\n}\\r\\n/* Add padding to bold text to separate capital letter \\\"T\\\" and colon so they don't appear as one character. */\\r\\n.bold-punctuation-padding {\\r\\n    padding-left: 2px;\\r\\n}\\r\\n\\r\\n.pearl {\\r\\n    background-color: #C0C0C0;\\r\\n    color: #626264;\\r\\n    border: 1px solid transparent;\\r\\n}\\r\\n\\r\\n    .pearl:hover {\\r\\n        background-color: #b9b9b9;\\r\\n    }\\r\\n\\r\\n.pearl-container {\\r\\n    text-align: center;\\r\\n    position: relative;\\r\\n    width: 80px;\\r\\n    vertical-align: top;\\r\\n    display: inline-block;\\r\\n    zoom: 1;\\r\\n}\\r\\n\\r\\npearl#delivery-pearl .pearl-container p {\\r\\n    margin-left: -12px;\\r\\n}\\r\\n\\r\\n.stretch {\\r\\n    width: 100%;\\r\\n    display: inline-block;\\r\\n    font-size: 0;\\r\\n    line-height: 0;\\r\\n}\\r\\n\\r\\n.pearl-string {\\r\\n    text-align: justify;\\r\\n    -ms-text-justify: distribute-all-lines;\\r\\n    text-justify: distribute-all-lines;\\r\\n    min-width: 612px;\\r\\n    /*height:125px;*/\\r\\n    height: 120px;\\r\\n    padding-left: 24px;\\r\\n    padding-right: 24px;\\r\\n}\\r\\n\\r\\n    .pearl-string:before {\\r\\n        position: absolute;\\r\\n        left: 0;\\r\\n        top: 23%;\\r\\n        height: 1px;\\r\\n        background: #eaeaea;\\r\\n        content: \\\"\\\";\\r\\n        width: 100%;\\r\\n        display: block;\\r\\n    }\\r\\n\\r\\n.new-style .new-pearl.active .btn-pearl-active, .smartScale.active .btn-pearl-active {\\r\\n    box-shadow: 1px 1px 17px -1px #090808;\\r\\n    outline: none;\\r\\n}\\r\\n\\r\\n   .new-style .new-pearl.active .btn-pearl-active:focus,.new-style .new-pearl.active .btn-pearl-active:active\\r\\n   , .smartScale.active .btn-pearl-active:focus, .smartScale.active .btn-pearl-active:active {\\r\\n        outline: none;\\r\\n    }\\r\\n\\r\\n.btn-circle {\\r\\n    height: 50px;\\r\\n    width: 50px;\\r\\n    text-align: center;\\r\\n    padding: 6px 0;\\r\\n    line-height: 1em;\\r\\n    -moz-border-radius: 50%;\\r\\n    -webkit-border-radius: 50%;\\r\\n    border-radius: 50%;\\r\\n}\\r\\n/* Active Step Pearl Styling */\\r\\npearl.active .pearl-container .btn.btn-circle.pearl {\\r\\n    background-color: #005daa;\\r\\n    border-color: #005daa;\\r\\n    color: #fff;\\r\\n    font-size: 1.5em;\\r\\n}\\r\\n\\r\\npearl.active .pearl-container p {\\r\\n    color: #005daa;\\r\\n    font-weight: bold;\\r\\n}\\r\\n/* Active Step Pearl Styling - Specific Step Icons */\\r\\npearl#general-pearl.active .pearl-container .btn.btn-circle.pearl i.wvs-app-edit {\\r\\n    padding-bottom: 4px;\\r\\n    padding-left: 2px;\\r\\n}\\r\\n\\r\\npearl#location-pearl.active .pearl-container .btn.btn-circle.pearl i.fa-globe {\\r\\n    width: 1.6em;\\r\\n    height: 1.6em;\\r\\n}\\r\\n\\r\\npearl#features-pearl.active .pearl-container .btn.btn-circle.pearl i.fa-diamond {\\r\\n    padding-left: 1px;\\r\\n    padding-top: 1px;\\r\\n}\\r\\n\\r\\npearl#factors-pearl.active .pearl-container .btn.btn-circle.pearl i.fa-list-alt {\\r\\n    width: 1.5em;\\r\\n    height: 1.5em;\\r\\n    padding-left: 1px;\\r\\n    padding-top: 2px;\\r\\n}\\r\\n\\r\\npearl#delivery-pearl.active .pearl-container .btn.btn-circle.pearl i.fa-bank {\\r\\n    padding-left: 1px;\\r\\n    padding-bottom: 4px;\\r\\n}\\r\\n\\r\\npearl#delivery-pearl.active .pearl-container p {\\r\\n    margin-left: -18px;\\r\\n}\\r\\n\\r\\n.fa-rotate-45 {\\r\\n    transform: rotate(45deg);\\r\\n    margin-bottom: 2px;\\r\\n    margin-left: 1px;\\r\\n}\\r\\n/* Map Placeholder Image */\\r\\n.map-placeholder {\\r\\n    border: 1px solid #dddddd;\\r\\n    width: 100%;\\r\\n    height: auto;\\r\\n}\\r\\n\\r\\n.table-nested-bar {\\r\\n    position: relative;\\r\\n}\\r\\n\\r\\n    .table-nested-bar:before {\\r\\n        background-color: #005DAA;\\r\\n        border-bottom-left-radius: 4px;\\r\\n        border-top-left-radius: 4px;\\r\\n        bottom: 8px;\\r\\n        content: \\\"\\\";\\r\\n        left: -6px;\\r\\n        position: absolute;\\r\\n        top: 8px;\\r\\n        width: 6px;\\r\\n    }\\r\\n/* List Group Item - Remove corner radius */\\r\\n.list-group-item.list-group-item-corners-hard {\\r\\n    border-radius: 0 0 0 0 !important;\\r\\n}\\r\\n\\r\\n.panel-body-comments {\\r\\n    padding-top: 0 !important;\\r\\n    padding-bottom: 0 !important;\\r\\n}\\r\\n\\r\\n.comments-panel-list {\\r\\n    max-height: 600px;\\r\\n    overflow-y: scroll;\\r\\n    overflow-x: auto;\\r\\n    padding-top: 12px;\\r\\n    padding-bottom: 12px;\\r\\n}\\r\\n\\r\\n.comments-panel-field {\\r\\n    max-height: 75px;\\r\\n    overflow: hidden;\\r\\n    text-overflow: ellipsis;\\r\\n}\\r\\n\\r\\n.comments-panel-odd {\\r\\n    background-color: lightgrey;\\r\\n}\\r\\n\\r\\n.new-comment-icon-text {\\r\\n    font-size: 70%;\\r\\n    color: white;\\r\\n    display: inline-block;\\r\\n    font-weight: bold;\\r\\n    padding-top: 7px;\\r\\n}\\r\\n/* Alert Icon on Comments panel */\\r\\n.alert-icon-red {\\r\\n    color: #E0414C;\\r\\n}\\r\\n\\r\\n.alert-icon-resolved {\\r\\n    opacity: 0.3;\\r\\n}\\r\\n\\r\\n.alert-icon-text {\\r\\n    font-size: 50%;\\r\\n}\\r\\n\\r\\n.comment {\\r\\n    border: 1px solid #cccccc;\\r\\n    margin-bottom: 24px;\\r\\n    padding-top: 12px;\\r\\n    border-radius: 6px;\\r\\n}\\r\\n\\r\\n.comment-even {\\r\\n    background-color: #fcfcfc;\\r\\n    border-left: 12px solid #aaaaaa;\\r\\n}\\r\\n\\r\\n.comment-odd {\\r\\n    background-color: #eeeeee !important;\\r\\n    border-left: 12px solid #666666;\\r\\n}\\r\\n\\r\\n    .comment-unresolved-alert,\\r\\n    .comment-odd.comment-unresolved-alert,\\r\\n    .comment-even.comment-unresolved-alert {\\r\\n        background-color: #f2dede !important;\\r\\n        border-color: #E0414C;\\r\\n    }\\r\\n\\r\\n.comment-alert-resolution {\\r\\n    background-color: #dff0d8 !important;\\r\\n    border-color: #3c763d;\\r\\n}\\r\\n\\r\\n.comment-resolved-alert {\\r\\n    /*background-color: #dff0d8 !important;*/\\r\\n    border-color: #3c763d;\\r\\n}\\r\\n\\r\\n.comment-concurrence-alert {\\r\\n    background-color: #c3d5da !important;\\r\\n    border-color: #005daa;\\r\\n\\r\\n}\\r\\n\\r\\n.comment-concurrence-alert-orphan {\\r\\n    border-color: #005daa;\\r\\n    background: repeating-linear-gradient(45deg,#bebebe,#b1b1b1 40px);\\r\\n}\\r\\n\\r\\n.alert-reply {\\r\\n    position: absolute;\\r\\n    /*font-size: 50px;\\r\\n    left: -20px;*/\\r\\n    font-size: 18px;\\r\\n    left: 3px;\\r\\n    top: 6px;\\r\\n}\\r\\n/*.comment-unresolved-alert .alert-reply {\\r\\n    color: #E0414C;\\r\\n}\\r\\n.comment-resolved-alert .alert-reply {\\r\\n    color: #3c763d;\\r\\n}*/\\r\\n/* Validation Panels */\\r\\n.panel.panel-validaton {\\r\\n    border: 1px solid #ddd;\\r\\n}\\r\\n\\r\\n/*Info tooltips*/\\r\\n.tooltip {\\r\\n    /* fixes issue with some tooltips flickering */\\r\\n    pointer-events: none;\\r\\n}\\r\\n\\r\\n.fa-info-circle-blue {\\r\\n    color: #005DAA;\\r\\n    cursor: pointer;\\r\\n}\\r\\n\\r\\n.fa-info-circle.fa-info-circle-blue:hover {\\r\\n    color: #00335e;\\r\\n}\\r\\n\\r\\n\\r\\n\\r\\n/* alert bubble  */\\r\\n.alert-bubble {\\r\\n    /*position: absolute;*/\\r\\n    position: relative;\\r\\n    padding: 6px 12px;\\r\\n    color: #d9534f;\\r\\n    background: #fcf1f0;\\r\\n    /*border: solid 1px lighten(@brand-danger, 37%);*/\\r\\n    border: solid 1px #d9534f;\\r\\n    border-radius: 10px;\\r\\n    right: 0;\\r\\n    z-index: 10;\\r\\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);\\r\\n}\\r\\n    /* When the alert bubble appears after a list group, correct the margin so the alert bubble appears near the field it is associated with. */\\r\\n    .alert-bubble.alert-bubble-list-group-margin-fix {\\r\\n        margin-top: -20px;\\r\\n    }\\r\\n    /* Alert bubble - triangle pointing to associated field */\\r\\n    /*.alert-bubble:after,.alert-bubble:before {\\r\\n    content: \\\"\\\";\\r\\n    display: block; // reduce the damage in FF3.0\\r\\n    position: absolute;\\r\\n    width: 0;\\r\\n    border-style: solid;\\r\\n}\\r\\n.alert-bubble:after {\\r\\n    left: 15px;\\r\\n    border-color: transparent transparent lighten(@brand-danger, 38.5%);\\r\\n    border-width: 7px;\\r\\n    top: -14px;\\r\\n}\\r\\n.alert-bubble:before {\\r\\n    left: 14px;\\r\\n    border-color: transparent transparent @brand-danger;\\r\\n    border-width: 8px;\\r\\n    top: -16px;\\r\\n}*/\\r\\n    .alert-bubble.alert-bubble-width-100 {\\r\\n        min-width: 100px;\\r\\n    }\\r\\n\\r\\n.alert-heading {\\r\\n    margin-top: 6px;\\r\\n}\\r\\n/* Pavement Cloning */\\r\\n.collapse.in.clone-pavement-modal-body {\\r\\n    display: inline-block;\\r\\n    float: none;\\r\\n}\\r\\n/* Custom Safety Needs Table*/\\r\\n.custom-safety-grid-input{\\r\\n    width:100%;\\r\\n    height:32px;\\r\\n    display: block; \\r\\n    padding: 0; \\r\\n    margin: 0; \\r\\n    border: 0;\\r\\n}\\r\\n.custom-safety-grid-input-error{\\r\\n   background: #fcf1f0;\\r\\n   -webkit-text-fill-color:#d9534f;\\r\\n}\\r\\n.custom-safety-grid-td{\\r\\n    border:solid thin; \\r\\n    border-color: #bba;\\r\\n    padding:3px;\\r\\n}\\r\\n/* Scoring Table */\\r\\n.score-table {\\r\\n    border-collapse: collapse;\\r\\n    table-layout: fixed;\\r\\n    /*background-color: #efefef;*/\\r\\n}\\r\\n\\r\\n.vert-col {\\r\\n    /*white-space:nowrap;\\r\\n    g-origin:50% 50%;    \\r\\n    -ms-transform: rotate(270deg);\\r\\n    transform: rotate(270deg);*/\\r\\n    width: 100px;\\r\\n    height: 150px;\\r\\n}\\r\\n\\r\\n.scoring-cell {\\r\\n    vertical-align: middle !important;\\r\\n    text-align: center;\\r\\n}\\r\\n\\r\\n.scoring-measure-values .scoring-cell {\\r\\n    padding: 2px;\\r\\n    font-size: 9px;\\r\\n}\\r\\n\\r\\n.scoring-measure-values.pdf-export .scoring-cell {\\r\\n    font-size: 6px;\\r\\n}\\r\\n\\r\\n.scoring-cell p {\\r\\n    font-size: 9px;\\r\\n}\\r\\n\\r\\n.scoring-cell-gray {\\r\\n    background-color: #D9D9D9;\\r\\n}\\r\\n\\r\\n.print-container .scoring-cell-gray {\\r\\n    background-color: #D9D9D9 !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n    print-color-adjust: exact;\\r\\n}\\r\\n/* doubling up on classnames to override specificity of scoring-cell */\\r\\n.scoring-cell.scoring-cell-measure-value {\\r\\n    padding-bottom: 0;\\r\\n    padding-top: 17px;\\r\\n    vertical-align: top !important;\\r\\n}\\r\\n\\r\\n.vertical-table-header {\\r\\n    height: 283px;\\r\\n    text-align: left;\\r\\n    font-size: small;\\r\\n    writing-mode: vertical-lr;\\r\\n    -webkit-transform: rotate(180deg);\\r\\n    -moz-transform: rotate(180deg);\\r\\n    -ms-transform: rotate(180deg);\\r\\n    -o-transform: rotate(180deg);\\r\\n    transform: rotate(180deg);\\r\\n    text-orientation: mixed;\\r\\n}\\r\\n\\r\\n\\r\\n.scoring-cell-congestion-header {\\r\\n    background-color: #D3403B;\\r\\n    color: white !important;\\r\\n}\\r\\n\\r\\n.print-container .scoring-cell-congestion-header {\\r\\n    background-color: #D3403B !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n    print-color-adjust: exact;\\r\\n    border: none;\\r\\n}\\r\\n\\r\\n.scoring-cell-congestion {\\r\\n    background-color: #F2C5C4;\\r\\n}\\r\\n\\r\\n.print-container .scoring-cell-congestion {\\r\\n    background-color: #F2C5C4 !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n    print-color-adjust: exact;\\r\\n    border: none;\\r\\n}\\r\\n\\r\\n.scoring-cell-safety-header {\\r\\n    background-color: #F37736;\\r\\n    color: white !important;\\r\\n}\\r\\n\\r\\n.print-container .scoring-cell-safety-header {\\r\\n    background-color: #F37736 !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n    print-color-adjust: exact;\\r\\n}\\r\\n\\r\\n.scoring-cell-safety {\\r\\n    background-color: #FBD6C2;\\r\\n}\\r\\n\\r\\n.print-container .scoring-cell-safety {\\r\\n    background-color: #FBD6C2 !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n    print-color-adjust: exact;\\r\\n}\\r\\n\\r\\n.scoring-cell-accessibility-header {\\r\\n    background-color: #552C75;\\r\\n    color: white !important;\\r\\n}\\r\\n\\r\\n.print-container .scoring-cell-accessibility-header {\\r\\n    background-color: #552C75 !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n    print-color-adjust: exact;\\r\\n}\\r\\n\\r\\n.scoring-cell-accessibility {\\r\\n    background-color: #CCBFD5;\\r\\n}\\r\\n\\r\\n.print-container .scoring-cell-accessibility {\\r\\n    background-color: #CCBFD5 !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n    print-color-adjust: exact;\\r\\n}\\r\\n\\r\\n.scoring-cell-environment-header {\\r\\n    background-color: #8CBB2D;\\r\\n    color: white !important;\\r\\n}\\r\\n\\r\\n.print-container .scoring-cell-environment-header {\\r\\n    background-color: #8CBB2D !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n    print-color-adjust: exact;\\r\\n}\\r\\n\\r\\n.scoring-cell-environment {\\r\\n    background-color: #DCEAC0;\\r\\n}\\r\\n\\r\\n.print-container .scoring-cell-environment {\\r\\n    background-color: #DCEAC0 !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n    print-color-adjust: exact;\\r\\n}\\r\\n\\r\\n.scoring-cell-econ-dev-header {\\r\\n    background-color: #0061AA;\\r\\n    color: white !important;\\r\\n}\\r\\n\\r\\n.print-container .scoring-cell-econ-dev-header {\\r\\n    background-color: #0061AA !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n    print-color-adjust: exact;\\r\\n}\\r\\n\\r\\n.scoring-cell-econ-dev {\\r\\n    background-color: #B2CFE5;\\r\\n}\\r\\n\\r\\n.print-container .scoring-cell-econ-dev {\\r\\n    background-color: #B2CFE5 !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n    print-color-adjust: exact;\\r\\n}\\r\\n\\r\\n.scoring-cell-land-use-header {\\r\\n    background-color: #0F3F6E;\\r\\n    color: white !important;\\r\\n}\\r\\n\\r\\n.print-container .scoring-cell-land-use-header {\\r\\n    background-color: #0F3F6E !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n    print-color-adjust: exact;\\r\\n}\\r\\n\\r\\n.scoring-cell-land-use {\\r\\n    background-color: #B7C5D3;\\r\\n}\\r\\n\\r\\n.print-container .scoring-cell-land-use {\\r\\n    background-color: #B7C5D3 !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n    print-color-adjust: exact;\\r\\n}\\r\\n\\r\\n.scoring-cell-dark-border {\\r\\n    /*border: 1px solid #767171 !important;*/\\r\\n    border: 1px solid #333 !important;\\r\\n    /*border: 1px solid #fff !important;*/\\r\\n}\\r\\n\\r\\n.scoring-cell-light-border {\\r\\n    /*border: 1px solid #A6A6A6 !important;*/\\r\\n    /*border: 1px solid #767171 !important;*/\\r\\n    border: 1px solid #333 !important;\\r\\n    /*border: 1px solid #fff !important;*/\\r\\n}\\r\\n\\r\\n.scoring-table-header {\\r\\n    vertical-align: middle !important;\\r\\n    font-weight: bold;\\r\\n    color: #333;\\r\\n}\\r\\n\\r\\n    .scoring-table-header div.vertical-text {\\r\\n        height: 60px;\\r\\n        margin-bottom: -60px;\\r\\n    }\\r\\n\\r\\n    .scoring-table-header p {\\r\\n        font-size: 12px;\\r\\n    }\\r\\n\\r\\n    .scoring-table-header.pdf-export {\\r\\n        font-size: 13px;\\r\\n    }\\r\\n\\r\\n.print-container .scoring-table-header {\\r\\n    /*-ms-word-wrap: break-word !important;\\r\\n    word-wrap: break-word !important;*/\\r\\n    -webkit-hyphens: auto !important;\\r\\n    -moz-hyphens: auto !important;\\r\\n    -ms-hyphens: auto !important;\\r\\n    hyphens: auto !important;\\r\\n    padding: 2px !important;\\r\\n}\\r\\n\\r\\n.export-container tr .scoring-table-header {\\r\\n    font-size: 14px;\\r\\n}\\r\\n\\r\\n.scoring-table-header-bottom-align {\\r\\n    vertical-align: bottom !important;\\r\\n}\\r\\n\\r\\n#scoring-cell-PLiT {\\r\\n    width: 100px;\\r\\n    border-right: 1px solid #d9d9d9 !important;\\r\\n    border-bottom: 1px solid #d9d9d9 !important;\\r\\n}\\r\\n\\r\\n.print-container #scoring-cell-PLiT.scoring-cell-dark-border {\\r\\n    width: 80px;\\r\\n    /*border-right: none !important;\\r\\n    border-bottom: none !important;*/\\r\\n}\\r\\n\\r\\n.vertical-text {\\r\\n    -moz-transform: rotate(270deg);\\r\\n    -ms-transform: rotate(270deg);\\r\\n    -o-transform: rotate(270deg);\\r\\n    -webkit-transform: rotate(270deg);\\r\\n    transform: rotate(270deg);\\r\\n    -moz-transform-origin: left top 0;\\r\\n    -ms-transform-origin: left top 0;\\r\\n    -o-transform-origin: left top 0;\\r\\n    -webkit-transform-origin: left top 0;\\r\\n    transform-origin: left top 0;\\r\\n    -ms-transform-origin: 0% 0%;\\r\\n    /* IE 9 */\\r\\n    text-align: left;\\r\\n    /*margin-bottom: -16px;\\r\\n    margin-left: 20px;*/\\r\\n    /*width: 256px;\\r\\n    margin-top: 262px;*/\\r\\n    /*width: 434px;*/\\r\\n    /*margin-top: 434px;*/\\r\\n    margin-bottom: -238px;\\r\\n    width: 238px;\\r\\n    height: 238px;\\r\\n    margin-top: 238px;\\r\\n}\\r\\n\\r\\n    .vertical-text.vertical-text-one-line {\\r\\n        margin-left: 20px;\\r\\n    }\\r\\n\\r\\n    .vertical-text.vertical-text-two-lines {\\r\\n        margin-left: 10px;\\r\\n    }\\r\\n\\r\\n.print-container .vertical-text {\\r\\n    margin-left: 4px;\\r\\n    padding-top: 5px;\\r\\n    width: 356px;\\r\\n    margin-top: 356px;\\r\\n    /*margin-top: 210px;*/\\r\\n}\\r\\n/* END Scoring Table */\\r\\n.is-not-current {\\r\\n    opacity: .5;\\r\\n}\\r\\n/* Status Labels */\\r\\n.status-label {\\r\\n    font-weight: 100;\\r\\n    padding: 3px 8px;\\r\\n    /*cursor: pointer;*/\\r\\n    background-color: #cccccc;\\r\\n    border-color: #bbbbbb;\\r\\n    border-radius: 0 !important;\\r\\n}\\r\\n/* Application Status */\\r\\n.status {\\r\\n    /*padding: 8px;\\r\\n    border-radius: 6px;*/\\r\\n    padding: 5px 8px;\\r\\n    border-radius: 5px;\\r\\n    border: 1px solid transparent;\\r\\n    margin: 0;\\r\\n    /*font-weight: bold;*/\\r\\n    color: white;\\r\\n}\\r\\n/* Pending */\\r\\n.status-pending {\\r\\n    background-color: #C0AE00 !important;\\r\\n    /*color: darken(@brand-primary, 26%);*/\\r\\n    /*color: darken(@brand-primary, 30%);*/\\r\\n    -webkit-print-color-adjust: exact;\\r\\n}\\r\\n/* Submitted */\\r\\n.status-submitted {\\r\\n    background-color: #005DAA !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n}\\r\\n/* District */\\r\\n.status-district,\\r\\n.district-validation {\\r\\n    background-color: #F77739 !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n}\\r\\n/* Central Office Validation */\\r\\n.status-central-office,\\r\\n.co-validation,\\r\\n.status-central {\\r\\n    background-color: #508DD6 !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n}\\r\\n/* VDOT PE/PIM */\\r\\n/*.status-vdot-pe-pim {\\r\\n    background-color: @brand-vdot-orange;\\r\\n}*/\\r\\n/* System Action */\\r\\n.system-action {\\r\\n    background-color: #bbbbbb;\\r\\n}\\r\\n/* OIPI Validation */\\r\\n.status-oipi,\\r\\n.oipi-screen {\\r\\n    background-color: #00A4A1 !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n}\\r\\n/* MMWG Validation */\\r\\n.status-mmwg,\\r\\n.mmwg-screen {\\r\\n    /*background-color: black;*/\\r\\n    background-color: #91218A !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n}\\r\\n/* Screened Out */\\r\\n.status-screened-out {\\r\\n    background-color: #d9534f !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n}\\r\\n/* Screened In */\\r\\n.status-screened-in {\\r\\n    /*background-color: @brand-green;*/\\r\\n    background-color: #626264 !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n}\\r\\n/* Executive Working Group */\\r\\n.status-executive-working-group,\\r\\n.ewg-validation {\\r\\n    background-color: #333333 !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n    color: white !important;\\r\\n}\\r\\n/* Scored */\\r\\n.status-scored {\\r\\n    /*background-color: @brand-scored;*/\\r\\n    background-color: #0B994D !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n}\\r\\n/* Local Liaison*/\\r\\n.local-liaison,\\r\\n.status-local {\\r\\n    background-color: #FF69B4 !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n}\\r\\n\\r\\n/* Cross Org */\\r\\n.cross-org-screen,\\r\\n.status-cross {\\r\\n    background-color: #820493 !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n}\\r\\n\\r\\n/* District Engineer */\\r\\n.district-engineer-screen {\\r\\n    background-color: #697ad1 !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n}\\r\\n\\r\\n/* Other */\\r\\n.status-other {\\r\\n    background-color: black !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n    color: white;\\r\\n}\\r\\n\\r\\n.status-none {\\r\\n    background-color: #666666 !important;\\r\\n    -webkit-print-color-adjust: exact;\\r\\n}\\r\\n/* Application Status - icon */\\r\\n.status-icon-vdot-pe-pim {\\r\\n    color: #F77739;\\r\\n}\\r\\n\\r\\n.status-icon-oipi {\\r\\n    color: #00A4A1;\\r\\n}\\r\\n\\r\\n.status-icon-mmwg {\\r\\n    /*color: black;*/\\r\\n    color: #91218A;\\r\\n}\\r\\n\\r\\n.status-icon-screened-out {\\r\\n    color: #d9534f;\\r\\n}\\r\\n\\r\\n.status-icon-screened-in {\\r\\n    color: #626264;\\r\\n}\\r\\n\\r\\n.status-icon-scored {\\r\\n    color: #0B994D;\\r\\n}\\r\\n\\r\\n.text-white {\\r\\n    color: white;\\r\\n}\\r\\n/* END Status Labels */\\r\\n/* PUBLIC GRID*/\\r\\n.tr-btn {\\r\\n    cursor: pointer;\\r\\n}\\r\\n\\r\\n    .tr-btn:hover {\\r\\n        color: #2A81AF;\\r\\n    }\\r\\n\\r\\n.public-grid td {\\r\\n    padding-top: 1em !important;\\r\\n    padding-bottom: 1em !important;\\r\\n    height: 5em !important;\\r\\n    vertical-align: middle !important;\\r\\n}\\r\\n/* VALIDATION WORKFLOW */\\r\\n.validation-status {\\r\\n    margin-right: 12px;\\r\\n    text-align: center;\\r\\n    display: inline-block;\\r\\n}\\r\\n\\r\\n.status-validationworkflow_nodisplay {\\r\\n    display: none;\\r\\n}\\r\\n\\r\\n.status-validationworkflow_completed {\\r\\n    /*background-color: #dff0d8;\\r\\n    border-color: #3c763d;*/\\r\\n    background-color: #999999;\\r\\n    border-color: #888888;\\r\\n    color: black;\\r\\n    /*float: left;*/\\r\\n}\\r\\n\\r\\n.status-validationworkflow_pending {\\r\\n    /*background-color: lightyellow;\\r\\n    border-color: darkorange;*/\\r\\n    background-color: #cccccc;\\r\\n    border-color: #bbbbbb;\\r\\n    color: black;\\r\\n    /*float: left;*/\\r\\n}\\r\\n\\r\\n.status-validationworkflow_notdone {\\r\\n    /*background-color: pink;\\r\\n    border-color: red;*/\\r\\n    background-color: #eeeeee;\\r\\n    border-color: #dddddd;\\r\\n    color: black;\\r\\n    /*float: left;*/\\r\\n}\\r\\n/* END: Validation Workflow \\r\\n/* PRINTER-FRIENDLY APPLICATION \\r\\n.print-container {\\r\\n    /*width: 670px;*/\\r\\n/*border-left: 1px solid red;\\r\\n    border-right: 1px solid red;*/\\r\\n/*margin-top: 178px;\\r\\n}\\r\\n*/\\r\\n.print-header-logo-table {\\r\\n    width: 670px !important;\\r\\n}\\r\\n\\r\\n.print-sponsor-logo-image {\\r\\n    width: 167px !important;\\r\\n}\\r\\n\\r\\n.print-footer {\\r\\n    font-size: 13px;\\r\\n}\\r\\n\\r\\n    .print-footer .blue-bar {\\r\\n        background-color: #005daa !important;\\r\\n        -webkit-print-color-adjust: exact;\\r\\n        color: #005daa;\\r\\n        height: 36px;\\r\\n        margin-top: 0;\\r\\n    }\\r\\n\\r\\n.print-footer-icon {\\r\\n    margin-bottom: -48px;\\r\\n    margin-top: -24px;\\r\\n}\\r\\n\\r\\n.back-from-print-button {\\r\\n    position: fixed;\\r\\n    top: 12px;\\r\\n    left: 12px;\\r\\n    z-index: 100;\\r\\n}\\r\\n\\r\\n.print-navbar.no-print {\\r\\n    position: fixed;\\r\\n    display: block;\\r\\n    padding: 12px;\\r\\n    left: 0;\\r\\n    top: 0;\\r\\n    z-index: 100;\\r\\n    background-color: white;\\r\\n    /*border-top: 1px solid #ddd;*/\\r\\n    border-bottom: 1px solid #ddd;\\r\\n    width: 100%;\\r\\n}\\r\\n\\r\\n.print-navbar-spacer {\\r\\n    height: 176px;\\r\\n}\\r\\n\\r\\n    .print-navbar-spacer.ta-print-navbar-spacer,\\r\\n    .print-navbar-spacer.bike-ped-print-navbar-spacer {\\r\\n        height: 200px;\\r\\n    }\\r\\n\\r\\n.print-pearls {\\r\\n    margin-top: 12px;\\r\\n}\\r\\n\\r\\n    .print-pearls.print-pearls-bike-ped {\\r\\n        margin-bottom: 40px;\\r\\n    }\\r\\n\\r\\n.step-anchor {\\r\\n    padding-top: 166px;\\r\\n    margin-top: -166px;\\r\\n}\\r\\n\\r\\n    .step-anchor.ta-step-anchor,\\r\\n    .step-anchor.bike-ped-step-anchor {\\r\\n        padding-top: 200px;\\r\\n        margin-top: -200px;\\r\\n    }\\r\\n/* END Print Application */\\r\\n/* ------------------------------- */\\r\\n/* Diff Directive */\\r\\n.diff-selector {\\r\\n    position: fixed;\\r\\n    top: 75px;\\r\\n    left: 6px;\\r\\n    z-index: 1075;\\r\\n    border: 1px solid grey;\\r\\n    padding: 5px;\\r\\n    background: rgba(255, 255, 255, 0.75);\\r\\n}\\r\\n@media screen and (min-width: 1440px) {\\r\\n    .diff-selector {\\r\\n        top: 190px;\\r\\n    }\\r\\n\\r\\n    .diff-highlight {\\r\\n        border: 5px solid #00163a !important;\\r\\n    }\\r\\n\\r\\n    .diff-btn {\\r\\n        background: none;\\r\\n        color: #d43f3a;\\r\\n    }\\r\\n}\\r\\n/**\\r\\n// Variables wvs-1.1.02\\r\\n// --------------------------------------------------\\r\\n// TODO: maybe eventually move the variables to their own less file \\r\\n\\r\\n//== Colors\\r\\n//\\r\\n//## Gray and brand colors for use across Bootstrap. **/\\r\\n/*@brand-primary: #165697;*/\\r\\n/*@brand-success: #C0AE00;*/\\r\\n/*@brand-success: #0CA453;*/\\r\\n/*@brand-success: #5DAE00;*/\\r\\n/*@brand-success: #2B803E;*/\\r\\n/*@brand-success: #079191;*/\\r\\n/*@brand-success: #34689F;*/\\r\\n/*@brand-success: #5483B3;*/\\r\\n/*@brand-success: #307E9C;*/\\r\\n/*@brand-info: lighten(#165697, 20%);*/\\r\\n/*@brand-warning: #FFA45E;*/\\r\\n/*@brand-warning: #C07901;*/\\r\\n/*@brand-warning: #bd8423;*/\\r\\n/*@brand-warning-bright: #FF8B33;*/\\r\\n/*@brand-green: #0CA453;*/\\r\\n/*@brand-vdot-blue: #004FA2;*/\\r\\n/*@brand-mmwg: #AA00FF;*/\\r\\n/*@brand-executive-working-group: #FF7FFF;*/\\r\\n/*== Scaffolding\\r\\n//\\r\\n## Settings for some of the most global styles.*/\\r\\n/** Background color for ``.**/\\r\\n/** Global text color on ``.**/\\r\\n/*@text-color: @gray-dark;*/\\r\\n/*@text-color: @gray-darker;*/\\r\\n/** Global textual link color.**/\\r\\n/** Link hover color set via `darken()` function.**/\\r\\n/** Link hover decoration.**/\\r\\n/**== Typography\\r\\n//\\r\\n//## Font, line-height, and color for body text, headings, and more. **/\\r\\n/** Default monospace fonts for ``, ``, and `
    `. **/\\r\\n/** Unit-less `line-height` for use in components like buttons. **/\\r\\n/** Computed \\\"line-height\\\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc. **/\\r\\n/** By default, this inherits from the ``. **/\\r\\n/** Iconography\\r\\n//\\r\\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower. **/\\r\\n/** Load fonts from this directory. **/\\r\\n/** File name for all font files. **/\\r\\n/** Element ID within SVG icon file. **/\\r\\n/** Components\\r\\n//\\r\\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start). **/\\r\\n/** Global color for active items (e.g., navs or dropdowns). **/\\r\\n/** Global background color for active items (e.g., navs or dropdowns). **/\\r\\n/** Width of the `border` for generating carets that indicator dropdowns. **/\\r\\n/** Carets increase slightly in size for larger components. **/\\r\\n/** Tables\\r\\n//\\r\\n//## Customizes the `.table` component with basic values, each used across all table variations. **/\\r\\n/** Padding for ``s and ``s. **/\\r\\n/** Padding for cells in `.table-condensed`. **/\\r\\n/** Default background color used for all tables. **/\\r\\n/** Background color used for `.table-striped`. **/\\r\\n/** Background color used for `.table-hover`. **/\\r\\n/** Border color for table and cell borders. **/\\r\\n/** Buttons\\r\\n//\\r\\n//## For each of Bootstrap's buttons, define text, background and border color. **/\\r\\n/*@btn-primary-color: darken(@brand-primary, 23%);*/\\r\\n/*@btn-primary-color: lighten(@brand-primary, 50%);*/\\r\\n/*@btn-success-color: lighten(@brand-success, 60%);*/\\r\\n/** Forms\\r\\n//\\r\\n//## **/\\r\\n/** `` background color **/\\r\\n/** `` background color **/\\r\\n/** Text color for ``s **/\\r\\n/** `` border color **/\\r\\n/** TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4 **/\\r\\n/** Default `.form-control` border radius **/\\r\\n/** Large `.form-control` border radius **/\\r\\n/** Small `.form-control` border radius **/\\r\\n/** Border color for inputs on focus **/\\r\\n/*@input-border-focus: lighten(#D9FD5D, 6%);*/\\r\\n/** Placeholder text color **/\\r\\n/** Default `.form-control` height **/\\r\\n/** Large `.form-control` height **/\\r\\n/** Small `.form-control` height **/\\r\\n/** Background color for textual input addons **/\\r\\n/** Border color for textual input addons **/\\r\\n/** Disabled cursor for form controls and buttons. **/\\r\\n/** Dropdowns\\r\\n//\\r\\n//## Dropdown menu container and contents. **/\\r\\n/** Background for the dropdown menu. **/\\r\\n/** Dropdown menu `border-color`. **/\\r\\n/** Dropdown menu `border-color` **for IE8**. **/\\r\\n/** Divider color for between dropdown items. **/\\r\\n/** Dropdown link text color. **/\\r\\n/** Hover color for dropdown links. **/\\r\\n/** Hover background for dropdown links. **/\\r\\n/** Active dropdown menu item text color. **/\\r\\n/** Active dropdown menu item background color. **/\\r\\n/** Disabled dropdown menu item background color. **/\\r\\n/** Text color for headers within dropdown menus. **/\\r\\n/** Deprecated `@dropdown-caret-color` as of v3.1.0 **/\\r\\n/** Z-index master list\\r\\n//\\r\\n// Warning: Avoid customizing these values. They're used for a bird's eye view\\r\\n// of components dependent on the z-axis and are designed to all work together.\\r\\n//\\r\\n// Note: These variables are not generated into the Customizer. **/\\r\\n/** Media queries breakpoints\\r\\n//\\r\\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes. **/\\r\\n/** Extra small screen / phone **/\\r\\n/** Deprecated `@screen-xs` as of v3.0.1 **/\\r\\n/** Deprecated `@screen-xs-min` as of v3.2.0 **/\\r\\n/** Deprecated `@screen-phone` as of v3.0.1 **/\\r\\n/** Small screen / tablet **/\\r\\n/** Deprecated `@screen-sm` as of v3.0.1 **/\\r\\n/** Deprecated `@screen-tablet` as of v3.0.1 **/\\r\\n/** Medium screen / desktop **/\\r\\n/** Deprecated `@screen-md` as of v3.0.1 **/\\r\\n/** Deprecated `@screen-desktop` as of v3.0.1 **/\\r\\n/** Large screen / wide desktop **/\\r\\n/** Deprecated `@screen-lg` as of v3.0.1 **/\\r\\n/** Deprecated `@screen-lg-desktop` as of v3.0.1 **/\\r\\n/** So media queries don't overlap when required, provide a maximum **/\\r\\n/** Grid system\\r\\n//\\r\\n//## Define your custom responsive grid. **/\\r\\n/** Number of columns in the grid. **/\\r\\n/** Padding between columns. Gets divided in half for the left and right. **/\\r\\n/** Navbar collapse **/\\r\\n/** Point at which the navbar becomes uncollapsed. **/\\r\\n/** Point at which the navbar begins collapsing. **/\\r\\n/** Container sizes\\r\\n//\\r\\n//## Define the maximum width of `.container` for different screen sizes. **/\\r\\n/** Small screen / tablet **/\\r\\n/** For `@screen-sm-min` and up. **/\\r\\n/** Medium screen / desktop **/\\r\\n/** For `@screen-md-min` and up. **/\\r\\n/** Large screen / wide desktop **/\\r\\n/** For `@screen-lg-min` and up. **/\\r\\n/** Navbar\\r\\n//\\r\\n//## **/\\r\\n/** Basics of a navbar **/\\r\\n/*@navbar-default-color: #777;*/\\r\\n/*@navbar-default-color: #333;*/\\r\\n/*@navbar-default-bg: #f0f0f0;*/\\r\\n/** Navbar links **/\\r\\n/*@navbar-default-link-color: #5483B3;*/\\r\\n/*@navbar-default-link-color: #666;*/\\r\\n/*@navbar-default-link-hover-color: darken(@navbar-default-link-color, 10%);*/\\r\\n/*@navbar-default-link-active-color: lighten(@navbar-default-link-color, 10%);*/\\r\\n/** Navbar brand label **/\\r\\n/*@navbar-default-brand-color: @navbar-default-link-color;*/\\r\\n/*@navbar-default-brand-hover-color: darken(@navbar-default-brand-color, 10%);*/\\r\\n/*@navbar-default-brand-hover-bg: #C0AE00;*/\\r\\n/** Navbar toggle **/\\r\\n/** Inverted navbar **/\\r\\n/** Reset inverted navbar basics **/\\r\\n/** Inverted navbar links **/\\r\\n/** Inverted navbar brand label **/\\r\\n/** Inverted navbar toggle **/\\r\\n/** Navs\\r\\n//\\r\\n//## **/\\r\\n/** Shared nav styles **/\\r\\n/** Tabs **/\\r\\n/** Pills **/\\r\\n/** Pagination\\r\\n//\\r\\n//## **/\\r\\n/** Pager\\r\\n//\\r\\n//## **/\\r\\n/** Jumbotron\\r\\n//\\r\\n//## **/\\r\\n/*default opacity for container element color*/\\r\\n/** Form states and alerts\\r\\n//\\r\\n//## Define colors for form feedback states and, by default, alerts and container elements **/\\r\\n/*@state-primary-text: lighten(@brand-primary, 40%);*/\\r\\n/*@state-primary-text: darken(@brand-primary, 15%);*/\\r\\n/*@state-primary-bg: lighten(@brand-primary, 6%);*/\\r\\n/*@state-success-text: lighten(@brand-success, 40%);*/\\r\\n/*@state-info-text: lighten(@brand-info, 40%);*/\\r\\n/*@state-info-text: darken(@brand-info, 15%);*/\\r\\n/*@state-info-bg: darken(@brand-info, 6%);*/\\r\\n/*@state-warning-text: lighten(@brand-warning, 20%);*/\\r\\n/*@state-danger-text: lighten(@brand-danger, 20%);*/\\r\\n/*@state-danger-text: darken(@brand-danger, 10%);*/\\r\\n/** Tooltips\\r\\n//\\r\\n//## **/\\r\\n/** Tooltip max width **/\\r\\n/** Tooltip text color **/\\r\\n/** Tooltip background color **/\\r\\n/** Tooltip arrow width **/\\r\\n/** Tooltip arrow color **/\\r\\n/** Popovers\\r\\n//\\r\\n//## **/\\r\\n/** Popover body background color **/\\r\\n/** Popover maximum width **/\\r\\n/** Popover border color **/\\r\\n/** Popover fallback border color **/\\r\\n/** Popover title background color **/\\r\\n/** Popover arrow width **/\\r\\n/** Popover arrow color **/\\r\\n/** Popover outer arrow width **/\\r\\n/** Popover outer arrow color **/\\r\\n/** Popover outer arrow fallback color **/\\r\\n/** Labels\\r\\n//\\r\\n//## **/\\r\\n/** Default label background color **/\\r\\n/** Primary label background color **/\\r\\n/** Success label background color **/\\r\\n/** Info label background color **/\\r\\n/** Warning label background color **/\\r\\n/** Danger label background color **/\\r\\n/** Default label text color **/\\r\\n/** Default text color of a linked label **/\\r\\n/** Modals\\r\\n//\\r\\n//## **/\\r\\n/** Padding applied to the modal body **/\\r\\n/** Padding applied to the modal title **/\\r\\n/** Modal title line-height **/\\r\\n/** Background color of modal content area **/\\r\\n/** Modal content border color **/\\r\\n/** Modal content border color **for IE8** **/\\r\\n/** Modal backdrop background color **/\\r\\n/** Modal backdrop opacity **/\\r\\n/** Modal header border color **/\\r\\n/** Modal footer border color **/\\r\\n/** Alerts\\r\\n//\\r\\n//## Define alert colors, border radius, and padding. **/\\r\\n/*@alert-danger-text: #fff;*/\\r\\n/** Progress bars\\r\\n//\\r\\n//## **/\\r\\n/** Background color of the whole progress component **/\\r\\n/** Progress bar text color **/\\r\\n/** Variable for setting rounded corners on progress bar. **/\\r\\n/** Default progress bar color **/\\r\\n/** Success progress bar color **/\\r\\n/** Warning progress bar color **/\\r\\n/** Danger progress bar color **/\\r\\n/** Info progress bar color **/\\r\\n/** List group\\r\\n//\\r\\n//## **/\\r\\n/** Background color on `.list-group-item` **/\\r\\n/** `.list-group-item` border color **/\\r\\n/** List group border radius **/\\r\\n/** Background color of single list items on hover **/\\r\\n/** Text color of active list items **/\\r\\n/** Background color of active list items **/\\r\\n/** Border color of active list elements **/\\r\\n/** Text color for content within active list items **/\\r\\n/** Text color of disabled list items **/\\r\\n/** Background color of disabled list items **/\\r\\n/** Text color for content within disabled list items **/\\r\\n/** Panels\\r\\n//\\r\\n//## **/\\r\\n/** Border color for elements within panels **/\\r\\n/** Thumbnails\\r\\n//\\r\\n//## **/\\r\\n/** Padding around the thumbnail image **/\\r\\n/** Thumbnail background color **/\\r\\n/** Thumbnail border color **/\\r\\n/** Thumbnail border radius **/\\r\\n/** Custom text color for thumbnail captions **/\\r\\n/** Padding around the thumbnail caption **/\\r\\n/** Wells\\r\\n//\\r\\n//## **/\\r\\n/** Badges\\r\\n//\\r\\n//## **/\\r\\n/** Linked badge text color on hover **/\\r\\n/** Badge text color in active nav link **/\\r\\n/** Badge background color in active nav link **/\\r\\n/** Breadcrumbs\\r\\n//\\r\\n//## **/\\r\\n/** Breadcrumb background color **/\\r\\n/** Breadcrumb text color **/\\r\\n/** Text color of current page in the breadcrumb **/\\r\\n/** Textual separator for between breadcrumb elements **/\\r\\n/** Carousel\\r\\n//\\r\\n//## **/\\r\\n/** Close\\r\\n//\\r\\n//## **/\\r\\n/** Code\\r\\n//\\r\\n//## **/\\r\\n/** Type\\r\\n//\\r\\n//## **/\\r\\n/** Horizontal offset for forms and lists. **/\\r\\n/** Text muted color **/\\r\\n/** Abbreviations and acronyms border color **/\\r\\n/** Headings small color **/\\r\\n/*@headings-small-color: @gray-light;*/\\r\\n/*@headings-small-color: @gray;*/\\r\\n/** Blockquote small color **/\\r\\n/** Blockquote font size **/\\r\\n/** Blockquote border color **/\\r\\n/** Page header border color **/\\r\\n/** Width of horizontal description list titles **/\\r\\n/** Horizontal line color. **/\\r\\n/******************************** MEDIA QUERIES ---- SCREEN SIZE-SPECIFIC CSS ********************************/\\r\\n/* XS - smallest screen size */\\r\\n@media (max-width: 769px) {\\r\\n    /* text alignment classes */\\r\\n    .text-center-xs {\\r\\n        text-align: center !important;\\r\\n    }\\r\\n\\r\\n    .text-left-xs {\\r\\n        text-align: left !important;\\r\\n    }\\r\\n\\r\\n    .text-right-xs {\\r\\n        text-align: right !important;\\r\\n    }\\r\\n    /* floats */\\r\\n    .pull-left-xs {\\r\\n        float: left !important;\\r\\n    }\\r\\n\\r\\n    .pull-right-xs {\\r\\n        float: right !important;\\r\\n    }\\r\\n\\r\\n    .center-block-xs {\\r\\n        display: block;\\r\\n        margin-left: auto;\\r\\n        margin-right: auto;\\r\\n    }\\r\\n    /* form group */\\r\\n    .form-group-xs {\\r\\n        margin-bottom: 15px;\\r\\n    }\\r\\n    /* ------------------------------- */\\r\\n    .header-logo-links {\\r\\n        margin-top: -12px;\\r\\n        text-align: right;\\r\\n    }\\r\\n\\r\\n    .header-logos {\\r\\n        max-height: 35px !important;\\r\\n        padding: 6px;\\r\\n    }\\r\\n\\r\\n    #smart-portal-header-link {\\r\\n        background-size: auto 100% !important;\\r\\n    }\\r\\n\\r\\n    .footer-content .container .side-borders {\\r\\n        border-left: 0 none !important;\\r\\n        border-right: 0 none !important;\\r\\n        margin-top: 12px;\\r\\n        border-top: 1px solid #dddddd;\\r\\n        padding-top: 12px;\\r\\n    }\\r\\n    /* ------------------------------- */\\r\\n    /* LOGIN */\\r\\n    .login {\\r\\n        margin-top: 20px;\\r\\n    }\\r\\n    /* ------------------------------- */\\r\\n    /* Landing Page\\r\\n    .panel-heading.panel-heading-landing-card {\\r\\n        /*min-height: 99px;\\r\\n    }\\r\\n    */\\r\\n    /*\\r\\n    .program-card-logo-container {\\r\\n        /*height: 125px;\\r\\n    }\\r\\n    */\\r\\n    .program-card-logo {\\r\\n        /*max-width: 303px;*/\\r\\n        max-height: 115px;\\r\\n    }\\r\\n    /* ------------------------------- */\\r\\n    /* Print Application  */\\r\\n    .print-navbar-spacer.ta-print-navbar-spacer {\\r\\n        height: 340px;\\r\\n    }\\r\\n\\r\\n    .step-anchor.ta-step-anchor {\\r\\n        padding-top: 340px;\\r\\n        margin-top: 340px;\\r\\n    }\\r\\n}\\r\\n/* SM - small screen size */\\r\\n@media (min-width: 768px) and (max-width: 991px) {\\r\\n    /* text alignment classes */\\r\\n    .text-center-sm {\\r\\n        text-align: center !important;\\r\\n    }\\r\\n\\r\\n    .text-left-sm {\\r\\n        text-align: left !important;\\r\\n    }\\r\\n\\r\\n    .text-right-sm {\\r\\n        text-align: right !important;\\r\\n    }\\r\\n    /* floats */\\r\\n    .pull-left-sm {\\r\\n        float: left !important;\\r\\n    }\\r\\n\\r\\n    .pull-right-sm {\\r\\n        float: right !important;\\r\\n    }\\r\\n\\r\\n    .center-block-sm {\\r\\n        display: block;\\r\\n        margin-left: auto;\\r\\n        margin-right: auto;\\r\\n    }\\r\\n    /* form group */\\r\\n    .form-group-sm {\\r\\n        margin-bottom: 15px;\\r\\n    }\\r\\n    /* ------------------------------- */\\r\\n    /* LOGIN */\\r\\n    .login {\\r\\n        margin-top: 20px;\\r\\n    }\\r\\n    /* ------------------------------- */\\r\\n    /* Landing Page */\\r\\n    .panel-heading.panel-heading-landing-card {\\r\\n        min-height: 101px;\\r\\n    }\\r\\n\\r\\n    .program-card-logo-container {\\r\\n        height: 125px;\\r\\n    }\\r\\n\\r\\n    .program-card-logo {\\r\\n        max-width: 283px;\\r\\n    }\\r\\n    /* ------------------------------- */\\r\\n    /* Print Application  */\\r\\n    .print-navbar-spacer.ta-print-navbar-spacer {\\r\\n        height: 340px;\\r\\n    }\\r\\n\\r\\n    .step-anchor.ta-step-anchor {\\r\\n        padding-top: 340px;\\r\\n        margin-top: 340px;\\r\\n    }\\r\\n}\\r\\n/* MD - medium screen size */\\r\\n@media (min-width: 992px) and (max-width: 1199px) {\\r\\n    /* text alignment classes */\\r\\n    .text-center-md {\\r\\n        text-align: center !important;\\r\\n    }\\r\\n\\r\\n    .text-left-md {\\r\\n        text-align: left !important;\\r\\n    }\\r\\n\\r\\n    .text-right-md {\\r\\n        text-align: right !important;\\r\\n    }\\r\\n    /* floats */\\r\\n    .pull-left-md {\\r\\n        float: left !important;\\r\\n    }\\r\\n\\r\\n    .pull-right-md {\\r\\n        float: right !important;\\r\\n    }\\r\\n\\r\\n    .center-block-md {\\r\\n        display: block;\\r\\n        margin-left: auto;\\r\\n        margin-right: auto;\\r\\n    }\\r\\n    /* form group */\\r\\n    .form-group-md {\\r\\n        margin-bottom: 15px;\\r\\n    }\\r\\n    /* ------------------------------- */\\r\\n    /* LOGIN */\\r\\n    .login {\\r\\n        margin-top: 60px;\\r\\n    }\\r\\n    /* ------------------------------- */\\r\\n    /* Landing Page */\\r\\n    .panel-heading.panel-heading-landing-card {\\r\\n        min-height: 101px;\\r\\n    }\\r\\n\\r\\n    .program-card-logo-container {\\r\\n        height: 125px;\\r\\n    }\\r\\n\\r\\n    .program-card-logo {\\r\\n        max-width: 241px;\\r\\n    }\\r\\n    /* ------------------------------- */\\r\\n    /* Print Application  */\\r\\n    .print-navbar-spacer.ta-print-navbar-spacer {\\r\\n        height: 340px;\\r\\n    }\\r\\n\\r\\n    .step-anchor.ta-step-anchor {\\r\\n        padding-top: 340px;\\r\\n        margin-top: 340px;\\r\\n    }\\r\\n}\\r\\n/* LG - large screen size */\\r\\n@media (min-width: 1200px) {\\r\\n    /* text alignment classes */\\r\\n    .text-center-lg {\\r\\n        text-align: center !important;\\r\\n    }\\r\\n\\r\\n    .text-left-lg {\\r\\n        text-align: left !important;\\r\\n    }\\r\\n\\r\\n    .text-right-lg {\\r\\n        text-align: right !important;\\r\\n    }\\r\\n    /* floats */\\r\\n    .pull-left-lg {\\r\\n        float: left !important;\\r\\n    }\\r\\n\\r\\n    .pull-right-lg {\\r\\n        float: right !important;\\r\\n    }\\r\\n\\r\\n    .center-block-lg {\\r\\n        display: block;\\r\\n        margin-left: auto;\\r\\n        margin-right: auto;\\r\\n    }\\r\\n    /* form group */\\r\\n    .form-group-lg {\\r\\n        margin-bottom: 15px;\\r\\n    }\\r\\n    /* ------------------------------- */\\r\\n    /* LOGIN */\\r\\n    .login {\\r\\n        margin-top: 60px;\\r\\n    }\\r\\n    /* ------------------------------- */\\r\\n    /* Landing Page */\\r\\n    .panel-heading.panel-heading-landing-card {\\r\\n        min-height: 101px;\\r\\n    }\\r\\n\\r\\n    .program-card-logo-container {\\r\\n        height: 140px;\\r\\n    }\\r\\n\\r\\n    .program-card-logo {\\r\\n        max-width: 303px;\\r\\n    }\\r\\n}\\r\\n/**** ADMIN TOOLS *******/\\r\\n.admin-btn-blocks {\\r\\n    padding: 40px 2px;\\r\\n    margin: 0 5px;\\r\\n    border-radius: 3px;\\r\\n}\\r\\n\\r\\n#homepage-button1:hover {\\r\\n    font-weight: bold;\\r\\n    color: purple;\\r\\n}\\r\\n\\r\\n#homepage-button2:hover {\\r\\n    font-weight: bold;\\r\\n    color: purple;\\r\\n}\\r\\n\\r\\n#homepage-button2:visited {\\r\\n    color: purple;\\r\\n}\\r\\n\\r\\n#homepage-button2:active {\\r\\n    color: purple;\\r\\n}\\r\\n\\r\\n.program-role-header {\\r\\n    font-weight: 700;\\r\\n    font-size: 15px;\\r\\n}\\r\\n\\r\\n.program-role-sub-header {\\r\\n    font-weight: 700;\\r\\n}\\r\\n\\r\\n.roles-grid td {\\r\\n    vertical-align: middle!important;\\r\\n}\\r\\n\\r\\n\\r\\n.bulk-roles-active {\\r\\n    background-color: #f9f9f9;\\r\\n    color: darkblue;\\r\\n}\\r\\n/******* Show/hide items when printing *******/\\r\\n@media print {\\r\\n    .no-print {\\r\\n        display: none !important;\\r\\n    }\\r\\n\\r\\n    .print {\\r\\n        display: block !important;\\r\\n    }\\r\\n\\r\\n    header {\\r\\n        display: none;\\r\\n    }\\r\\n\\r\\n    footer {\\r\\n        display: none;\\r\\n    }\\r\\n\\r\\n    #commonBanner {\\r\\n        display: none;\\r\\n    }\\r\\n\\r\\n    .header-logos-navbar {\\r\\n        display: none;\\r\\n    }\\r\\n\\r\\n    #navbar.navbar.navbar-default {\\r\\n        display: none;\\r\\n    }\\r\\n}\\r\\n\\r\\n/*@media screen {*/\\r\\n/*    .no-print {*/\\r\\n/*        display: block !important;*/\\r\\n/*    }*/\\r\\n\\r\\n/*    .print {*/\\r\\n/*        display: none !important;*/\\r\\n/*    }*/\\r\\n/*}*/\\r\\n/*! \\r\\n * angular-loading-bar v0.9.0\\r\\n * https://chieffancypants.github.io/angular-loading-bar\\r\\n * Copyright (c) 2016 Wes Cruver\\r\\n * License: MIT\\r\\n */\\r\\n/* Make clicks pass-through */\\r\\n#loading-bar,\\r\\n#loading-bar-spinner {\\r\\n    pointer-events: none;\\r\\n    -webkit-pointer-events: none;\\r\\n    -webkit-transition: 350ms linear all;\\r\\n    -moz-transition: 350ms linear all;\\r\\n    -o-transition: 350ms linear all;\\r\\n    transition: 350ms linear all;\\r\\n}\\r\\n\\r\\n    #loading-bar.ng-enter,\\r\\n    #loading-bar.ng-leave.ng-leave-active,\\r\\n    #loading-bar-spinner.ng-enter,\\r\\n    #loading-bar-spinner.ng-leave.ng-leave-active {\\r\\n        opacity: 0;\\r\\n    }\\r\\n\\r\\n        #loading-bar.ng-enter.ng-enter-active,\\r\\n        #loading-bar.ng-leave,\\r\\n        #loading-bar-spinner.ng-enter.ng-enter-active,\\r\\n        #loading-bar-spinner.ng-leave {\\r\\n            opacity: 1;\\r\\n        }\\r\\n\\r\\n    #loading-bar .bar {\\r\\n        -webkit-transition: width 350ms;\\r\\n        -moz-transition: width 350ms;\\r\\n        -o-transition: width 350ms;\\r\\n        transition: width 350ms;\\r\\n        background: #29d;\\r\\n        position: fixed;\\r\\n        z-index: 10002;\\r\\n        bottom: 0;\\r\\n        left: 0;\\r\\n        width: 100%;\\r\\n        height: 4px;\\r\\n        border-bottom-right-radius: 1px;\\r\\n        border-top-right-radius: 1px;\\r\\n    }\\r\\n    /* Fancy blur effect */\\r\\n    #loading-bar .peg {\\r\\n        position: absolute;\\r\\n        width: 70px;\\r\\n        right: 0;\\r\\n        top: 0;\\r\\n        height: 8px;\\r\\n        opacity: .45;\\r\\n        -moz-box-shadow: #29d 1px 0 6px 1px;\\r\\n        -ms-box-shadow: #29d 1px 0 6px 1px;\\r\\n        -webkit-box-shadow: #29d 1px 0 6px 1px;\\r\\n        box-shadow: #29d 1px 0 6px 1px;\\r\\n        -moz-border-radius: 100%;\\r\\n        -webkit-border-radius: 100%;\\r\\n        border-radius: 100%;\\r\\n    }\\r\\n\\r\\n#loading-bar-spinner {\\r\\n    display: block;\\r\\n    position: fixed;\\r\\n    z-index: 10002;\\r\\n    bottom: 10px;\\r\\n    left: 10px;\\r\\n}\\r\\n\\r\\n    #loading-bar-spinner .spinner-icon {\\r\\n        width: 30px;\\r\\n        height: 30px;\\r\\n        border: solid 2px transparent;\\r\\n        border-top-color: #29d;\\r\\n        border-left-color: #29d;\\r\\n        border-radius: 50%;\\r\\n        -webkit-animation: loading-bar-spinner 400ms linear infinite;\\r\\n        -moz-animation: loading-bar-spinner 400ms linear infinite;\\r\\n        -ms-animation: loading-bar-spinner 400ms linear infinite;\\r\\n        -o-animation: loading-bar-spinner 400ms linear infinite;\\r\\n        animation: loading-bar-spinner 400ms linear infinite;\\r\\n    }\\r\\n\\r\\n@-webkit-keyframes loading-bar-spinner {\\r\\n    0% {\\r\\n        -webkit-transform: rotate(0deg);\\r\\n        transform: rotate(0deg);\\r\\n    }\\r\\n\\r\\n    100% {\\r\\n        -webkit-transform: rotate(360deg);\\r\\n        transform: rotate(360deg);\\r\\n    }\\r\\n}\\r\\n\\r\\n@-moz-keyframes loading-bar-spinner {\\r\\n    0% {\\r\\n        -moz-transform: rotate(0deg);\\r\\n        transform: rotate(0deg);\\r\\n    }\\r\\n\\r\\n    100% {\\r\\n        -moz-transform: rotate(360deg);\\r\\n        transform: rotate(360deg);\\r\\n    }\\r\\n}\\r\\n\\r\\n@-o-keyframes loading-bar-spinner {\\r\\n    0% {\\r\\n        -o-transform: rotate(0deg);\\r\\n        transform: rotate(0deg);\\r\\n    }\\r\\n\\r\\n    100% {\\r\\n        -o-transform: rotate(360deg);\\r\\n        transform: rotate(360deg);\\r\\n    }\\r\\n}\\r\\n\\r\\n@-ms-keyframes loading-bar-spinner {\\r\\n    0% {\\r\\n        -ms-transform: rotate(0deg);\\r\\n        transform: rotate(0deg);\\r\\n    }\\r\\n\\r\\n    100% {\\r\\n        -ms-transform: rotate(360deg);\\r\\n        transform: rotate(360deg);\\r\\n    }\\r\\n}\\r\\n\\r\\n@keyframes loading-bar-spinner {\\r\\n    0% {\\r\\n        transform: rotate(0deg);\\r\\n    }\\r\\n\\r\\n    100% {\\r\\n        transform: rotate(360deg);\\r\\n    }\\r\\n}\\r\\n\\r\\n.comments-s {\\r\\n    font-style: italic;\\r\\n    color: #b0adad;\\r\\n}\\r\\n\\r\\nabbr[data-original-title], abbr[title] {\\r\\n    border-bottom: 1px dotted #777;\\r\\n    cursor: help;\\r\\n    text-decoration: none;\\r\\n}\\r\\n\\r\\n.showError.ng-animate {\\r\\n    position: relative;\\r\\n    transition: all ease 0.4s;\\r\\n}\\r\\n\\r\\n.showError.ng-enter {\\r\\n    opacity: 0;\\r\\n}\\r\\n\\r\\n    .showError.ng-leave, .showError.ng-enter.ng-enter-active {\\r\\n        opacity: 1;\\r\\n    }\\r\\n\\r\\n        .showError.ng-leave.ng-leave-active {\\r\\n            opacity: 0;\\r\\n        }\\r\\n\\r\\n.main-label {\\r\\n    color: #286090;\\r\\n    font-size: 16px;\\r\\n}\\r\\n\\r\\n@media print {\\r\\n    .or-span {\\r\\n        text-align: center;\\r\\n        margin: 0 auto;\\r\\n        border-radius: 50%;\\r\\n        border: 1px solid #337ab7;\\r\\n        padding: 10px;\\r\\n        color: #fff;\\r\\n        width: 45px;\\r\\n        font-weight: 600;\\r\\n        background-color: #337ab7;\\r\\n    }\\r\\n\\r\\n    .edge {\\r\\n        display: none;\\r\\n        border: 1px solid #337ab7;\\r\\n        height: 10px;\\r\\n        width: 1px;\\r\\n        margin-left: 22px;\\r\\n    }\\r\\n\\r\\n    \\r\\n}\\r\\n\\r\\n.or-span {\\r\\n    border-radius: 50%;\\r\\n    border: 1px solid #337ab7;\\r\\n    padding: 10px;\\r\\n    color: #fff;\\r\\n    width: 45px;\\r\\n    font-weight: 600;\\r\\n    background-color: #337ab7;\\r\\n}\\r\\n\\r\\n.edge {\\r\\n    border: 1px solid #337ab7;\\r\\n    height: 10px;\\r\\n    width: 1px;\\r\\n    margin-left: 22px;\\r\\n}\\r\\n\\r\\n.center-col {\\r\\n    margin: 0 auto;\\r\\n    float: none;\\r\\n}\\r\\n\\r\\n.mar-l-15 {\\r\\n    margin-left: 15px;\\r\\n}\\r\\n\\r\\n.padd-15 {\\r\\n    padding: 15px;\\r\\n}\\r\\n\\r\\n.pad-top-1em {\\r\\n    padding-top: 1em;\\r\\n}\\r\\n\\r\\n.collapsable {\\r\\n    position: relative;\\r\\n    width: 18px;\\r\\n    height: 18px;\\r\\n    border-radius: 50%;\\r\\n    background-color: lightgray;\\r\\n    padding: 1px;\\r\\n    vertical-align: middle;\\r\\n    display: inline-block;\\r\\n}\\r\\n\\r\\n.plus,\\r\\n.minus {\\r\\n    box-sizing: border-box;\\r\\n    transition: .4s all ease-out;\\r\\n    position: absolute;\\r\\n    box-sizing: border-box;\\r\\n    transition: .5s all ease-out;\\r\\n    margin-top: -1px;\\r\\n    margin-left: 1.5px;\\r\\n}\\r\\n\\r\\n.plus {\\r\\n    opacity: 1;\\r\\n    transform: rotate(0deg);\\r\\n}\\r\\n\\r\\n.collapsable.opened .plus {\\r\\n    opacity: 0;\\r\\n    transform: rotate(90deg);\\r\\n}\\r\\n\\r\\n.minus {\\r\\n    opacity: 0;\\r\\n    transform: rotate(-90deg);\\r\\n}\\r\\n\\r\\n.collapsable.opened .minus {\\r\\n    opacity: 1;\\r\\n    transform: rotate(0deg);\\r\\n}\\r\\n\\r\\n.big-label {\\r\\n    font-size: 19px;\\r\\n    font-weight: bold;\\r\\n    color: #286090;\\r\\n}\\r\\n\\r\\n.card {\\r\\n    position: relative;\\r\\n    background: #fff;\\r\\n    box-shadow: 2px 4px 8px 0px rgba(46,61,73,0.2);\\r\\n    border-radius: 0.375rem;\\r\\n    transition: all 0.3s ease;\\r\\n    padding: 10px;\\r\\n    margin: 10px 0px;\\r\\n}\\r\\n\\r\\n.btn-shadow {\\r\\n    box-shadow: 8px 10px 20px 0px rgba(46,61,73,0.15);\\r\\n    border: none;\\r\\n}\\r\\n\\r\\n    .btn-shadow:hover {\\r\\n        box-shadow: 2px 4px 8px 0px rgba(46,61,73,0.2);\\r\\n    }\\r\\n\\r\\n.new-style .form-control {\\r\\n    border-radius: 2px;\\r\\n    border: 1px solid #e4e4e4;\\r\\n}\\r\\n\\r\\n    .new-style .form-control .btn {\\r\\n        border-radius: 3px;\\r\\n    }\\r\\n\\r\\n    .new-style .form-control .input-group-addon {\\r\\n        border: 1px solid #e4e4e4;\\r\\n    }\\r\\n\\r\\n    .new-style .form-control:focus {\\r\\n        border-color: #02b3e4;\\r\\n        box-shadow: none;\\r\\n        -webkit-box-shadow: none;\\r\\n    }\\r\\n\\r\\n.new-style .has-error .form-control:focus {\\r\\n    border-color: #D81B60;\\r\\n    box-shadow: none;\\r\\n    -webkit-box-shadow: none;\\r\\n}\\r\\n\\r\\n.slide-right {\\r\\n    -webkit-transition: all 0 cubic-bezier(0.25, 0.46, 0.45, 0.94);\\r\\n    -moz-transition: all 0 cubic-bezier(0.25, 0.46, 0.45, 0.94);\\r\\n    -ms-transition: all 0 cubic-bezier(0.25, 0.46, 0.45, 0.94);\\r\\n    -o-transition: all 0 cubic-bezier(0.25, 0.46, 0.45, 0.94);\\r\\n    transition: all 0 cubic-bezier(0.25, 0.46, 0.45, 0.94);\\r\\n    /* easeOutQuad */\\r\\n    -webkit-transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);\\r\\n    -moz-transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);\\r\\n    -ms-transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);\\r\\n    -o-transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);\\r\\n    transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);\\r\\n    /* easeOutQuad */\\r\\n}\\r\\n    /* line 165, ../sass/ng-animation.scss */\\r\\n    .slide-right.ng-enter {\\r\\n        transform: translateX(60px);\\r\\n        -ms-transform: translateX(60px);\\r\\n        -webkit-transform: translateX(60px);\\r\\n        transition-duration: 250ms;\\r\\n        -webkit-transition-duration: 250ms;\\r\\n        opacity: 0;\\r\\n    }\\r\\n    /* line 171, ../sass/ng-animation.scss */\\r\\n    .slide-right.ng-enter-active {\\r\\n        transform: translateX(0);\\r\\n        -ms-transform: translateX(0);\\r\\n        -webkit-transform: translateX(0);\\r\\n        opacity: 1;\\r\\n    }\\r\\n    /* line 176, ../sass/ng-animation.scss */\\r\\n    .slide-right.ng-leave {\\r\\n        transform: translateX(0);\\r\\n        -ms-transform: translateX(0);\\r\\n        -webkit-transform: translateX(0);\\r\\n        transition-duration: 300ms;\\r\\n        -webkit-transition-duration: 300ms;\\r\\n        opacity: 1;\\r\\n    }\\r\\n    /* line 182, ../sass/ng-animation.scss */\\r\\n    .slide-right.ng-leave-active {\\r\\n        transform: translateX(-80px);\\r\\n        -ms-transform: translateX(-80px);\\r\\n        -webkit-transform: translateX(-80px);\\r\\n        opacity: 0;\\r\\n    }\\r\\n\\r\\n.slide-left {\\r\\n    -webkit-transition: all 0 cubic-bezier(0.25, 0.46, 0.45, 0.94);\\r\\n    -moz-transition: all 0 cubic-bezier(0.25, 0.46, 0.45, 0.94);\\r\\n    -ms-transition: all 0 cubic-bezier(0.25, 0.46, 0.45, 0.94);\\r\\n    -o-transition: all 0 cubic-bezier(0.25, 0.46, 0.45, 0.94);\\r\\n    transition: all 0 cubic-bezier(0.25, 0.46, 0.45, 0.94);\\r\\n    /* easeOutQuad */\\r\\n    -webkit-transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);\\r\\n    -moz-transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);\\r\\n    -ms-transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);\\r\\n    -o-transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);\\r\\n    transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);\\r\\n    /* easeOutQuad */\\r\\n}\\r\\n\\r\\n    .slide-left.ng-enter {\\r\\n        transform: translateX(-60px);\\r\\n        -ms-transform: translateX(-60px);\\r\\n        -webkit-transform: translateX(-60px);\\r\\n        transition-duration: 250ms;\\r\\n        -webkit-transition-duration: 250ms;\\r\\n        opacity: 0;\\r\\n    }\\r\\n\\r\\n    .slide-left.ng-enter-active {\\r\\n        transform: translateX(0);\\r\\n        -ms-transform: translateX(0);\\r\\n        -webkit-transform: translateX(0);\\r\\n        opacity: 1;\\r\\n    }\\r\\n\\r\\n    .slide-left.ng-leave {\\r\\n        transform: translateX(0);\\r\\n        -ms-transform: translateX(0);\\r\\n        -webkit-transform: translateX(0);\\r\\n        transition-duration: 250ms;\\r\\n        -webkit-transition-duration: 250ms;\\r\\n        opacity: 1;\\r\\n    }\\r\\n\\r\\n    .slide-left.ng-leave-active {\\r\\n        transform: translateX(-60px);\\r\\n        -ms-transform: translateX(-60px);\\r\\n        -webkit-transform: translateX(-60px);\\r\\n        opacity: 0;\\r\\n    }\\r\\n\\r\\n.btn-raise {\\r\\n    box-sizing: border-box;\\r\\n    position: relative;\\r\\n    -webkit-user-select: none;\\r\\n    -moz-user-select: none;\\r\\n    -ms-user-select: none;\\r\\n    user-select: none;\\r\\n    cursor: pointer;\\r\\n    outline: 0;\\r\\n    border: none;\\r\\n    -webkit-tap-highlight-color: transparent;\\r\\n    display: inline-block;\\r\\n    white-space: nowrap;\\r\\n    text-decoration: none;\\r\\n    vertical-align: baseline;\\r\\n    text-align: center;\\r\\n    margin: 0;\\r\\n    min-width: 88px;\\r\\n    line-height: 36px;\\r\\n    padding: 0 16px;\\r\\n    border-radius: 2px;\\r\\n    box-shadow: 0 3px 1px -2px rgba(0,0,0,.2), 0 2px 2px 0 rgba(0,0,0,.14), 0 1px 5px 0 rgba(0,0,0,.12);\\r\\n    outline: none;\\r\\n}\\r\\n\\r\\n    .btn-raise:hover {\\r\\n        box-shadow: none;\\r\\n    }\\r\\n\\r\\n    .btn-raise:hover, .btn-raise:active, .btn-raise:focus {\\r\\n        outline: none;\\r\\n    }\\r\\n\\r\\n.border-light {\\r\\n    border: 1px solid #e4e4e4;\\r\\n    padding: 5px 10px;\\r\\n    background-color: rgba(250, 251, 252, 0.7);\\r\\n}\\r\\n\\r\\n.mar-t-15 {\\r\\n    margin-top: 15px;\\r\\n}\\r\\n\\r\\n.mar-10 {\\r\\n    margin: 10px 0px;\\r\\n}\\r\\n\\r\\n.border-bottom {\\r\\n    border-bottom: 1px solid #e4e4e4;\\r\\n    margin-bottom: 10px;\\r\\n}\\r\\n\\r\\n.cost-tag {\\r\\n    background-image: linear-gradient(to bottom right, #F7F7F7, #ebf8fb);\\r\\n    padding: 5px;\\r\\n    border-radius: 3px;\\r\\n    border: 1px solid#f1f1f1;\\r\\n}\\r\\n\\r\\n.new-style.table-bordered {\\r\\n    border: 1px solid #eceeef;\\r\\n}\\r\\n\\r\\n.new-style.table-striped tbody tr:nth-of-type(odd) {\\r\\n    background-color: rgba(0,0,0,.05);\\r\\n}\\r\\n/*\\r\\n.new-style.table-hover tbody tr:hover {\\r\\n    background-color: rgba(0,0,0,.075);\\r\\n}\\r\\n*/\\r\\n.new-style.table-hover > tbody > tr:hover {\\r\\n    background-color: none !important;\\r\\n    box-shadow: 5px 5px 25px 0px rgba(46,61,73,0.2);\\r\\n    transition: all 0.4s ease-in-out;\\r\\n}\\r\\n\\r\\n.mar-t-15 {\\r\\n    margin-top: 15px;\\r\\n}\\r\\n\\r\\n.mar-l-30 {\\r\\n    margin-top: 15px;\\r\\n}\\r\\n\\r\\n.special-group .form-group label {\\r\\n    margin-bottom: 1px !important;\\r\\n}\\r\\n\\r\\n.special-group .form-group {\\r\\n    margin-bottom: 5px !important;\\r\\n}\\r\\n\\r\\n\\r\\n@keyframes click-wave {\\r\\n    0% {\\r\\n        height: 40px;\\r\\n        width: 40px;\\r\\n        opacity: 0.35;\\r\\n        position: relative;\\r\\n    }\\r\\n\\r\\n    100% {\\r\\n        height: 200px;\\r\\n        width: 200px;\\r\\n        margin-left: -80px;\\r\\n        margin-top: -80px;\\r\\n        opacity: 0;\\r\\n    }\\r\\n}\\r\\n\\r\\n.new-table {\\r\\n    border-top-left-radius: 2px;\\r\\n    border-top-right-radius: 2px;\\r\\n}\\r\\n\\r\\n    .new-table .table-header {\\r\\n        background-color: rgba(79, 79, 79, 0.8) !important;\\r\\n        color: white;\\r\\n    }\\r\\n\\r\\n.disabled {\\r\\n    opacity: 0.5;\\r\\n    pointer-events: none;\\r\\n    cursor: no-drop;\\r\\n}\\r\\n\\r\\n    .disabled > * {\\r\\n        opacity: 0.8;\\r\\n        pointer-events: none;\\r\\n        cursor: no-drop;\\r\\n    }\\r\\n.new-style .has-error .form-control {\\r\\n    border: 1px solid #de3f3b;\\r\\n}\\r\\n/*\\r\\n.new-style .option-input {\\r\\n    -webkit-appearance: none;\\r\\n    -moz-appearance: none;\\r\\n    -ms-appearance: none;\\r\\n    -o-appearance: none;\\r\\n    appearance: none;\\r\\n    position: relative;\\r\\n    top: -4.66667px;\\r\\n    right: 0;\\r\\n    bottom: 0;\\r\\n    left: 0;\\r\\n    height: 20px;\\r\\n    width: 20px;\\r\\n    transition: all 0.15s ease-out 0s;\\r\\n    background: #cbd1d8;\\r\\n    border: none;\\r\\n    color: #fff;\\r\\n    cursor: pointer;\\r\\n    display: inline-block;\\r\\n    margin-right: 0.3rem;\\r\\n    outline: none;\\r\\n    position: relative;\\r\\n    z-index: 1000;\\r\\n}\\r\\n\\r\\n    .new-style .option-input:hover {\\r\\n        background: #9faab7;\\r\\n    }\\r\\n\\r\\n\\r\\n\\r\\n    .new-style .option-input:checked {\\r\\n        background: #02b3e4;\\r\\n    }\\r\\n\\r\\n        .new-style .option-input:checked::before {\\r\\n            height: 20px;\\r\\n            width: 20px;\\r\\n            position: absolute;\\r\\n            content: '\\\\2713';\\r\\n            display: inline-block;\\r\\n            font-size: 21.667px;\\r\\n            text-align: center;\\r\\n            line-height: 20px;\\r\\n        }\\r\\n\\r\\n        .new-style .option-input:checked::after {\\r\\n            -webkit-animation: click-wave 0.65s;\\r\\n            -moz-animation: click-wave 0.65s;\\r\\n            animation: click-wave 0.65s;\\r\\n            background: #02b3e4;\\r\\n            content: '';\\r\\n            display: block;\\r\\n            position: relative;\\r\\n            z-index: 100;\\r\\n        }\\r\\n\\r\\n    .new-style .option-input.radio {\\r\\n        border-radius: 50%;\\r\\n    }\\r\\n\\r\\n        .new-style .option-input.radio::after {\\r\\n            border-radius: 50%;\\r\\n        }\\r\\n\\r\\n    /*Adds an xlg size to bootstrap uib modal*/\\r\\n    .modal-xlg {\\r\\n        width: 100%;\\r\\n        /*height: 100%;*/\\r\\n    }\\r\\n\\r\\n    .modal-xlg .modal-content {\\r\\n        height: 90vh\\r\\n    }\\r\\n\\r\\n    .modal-xlg .modal-body {\\r\\n        position: absolute;\\r\\n    }\\r\\n\\r\\n\\r\\n   radio-group.disabled-style[disabled]{\\r\\n       cursor:not-allowed;\\r\\n       opacity:0.80;\\r\\n   }\\r\\n   .edit-more-info-pre{\\r\\n    position: absolute;\\r\\n    left: 22pc;\\r\\n    top: 72px;\\r\\n    font-weight: 600;\\r\\n   }\\r\\n  .view-more-info-pre{\\r\\n    position: absolute;\\r\\n    left: 18pc;\\r\\n    top: 99px;\\r\\n    font-weight: 600;\\r\\n   }\\r\\n\\r\\n.cur-pointer {\\r\\ncursor:pointer;\\r\\n}\\r\\n.fade-in-out.ng-enter,\\r\\n.fade-in-out.ng-leave {\\r\\n  -webkit-transition: opacity ease-in-out 1s;\\r\\n  -moz-transition: opacity ease-in-out 1s;\\r\\n  -ms-transition: opacity ease-in-out 1s;\\r\\n  -o-transition: opacity ease-in-out 1s;\\r\\n  transition: opacity ease-in-out 1s;\\r\\n}\\r\\n.fade-in-out.ng-enter,\\r\\n.fade-in-out.ng-leave.ng-leave-active {\\r\\n  opacity: 0;\\r\\n}\\r\\n.fade-in-out.ng-leave,\\r\\n.fade-in-out.ng-enter.ng-enter-active {\\r\\n  opacity: 1;\\r\\n}\\r\\n.diff-border{\\r\\n    border: 1px solid red;\\r\\n    border-radius: 10px;\\r\\n    box-shadow: 0 0 30px #ff5b5b;\\r\\n}\\r\\n.diff-border-new {\\r\\n    border: 1px solid cyan;\\r\\n    box-shadow: 0 0 30px teal;\\r\\n}\\r\\n.diff-border-delete {\\r\\n    border: 1px solid magenta;\\r\\n    box-shadow: 0 0 30px purple;\\r\\n}\\r\\n\\r\\n/*****Validation tool*************/\\r\\n\\r\\n  .style-progress-bar .progress-bar{\\r\\n      background-color:#1976D2 !important;\\r\\n  }\\r\\n  .validation-save-button{   \\r\\n      border:none; \\r\\n      padding: 5px 12px;\\r\\n      font-size: 15px;   \\r\\n      background-color: #5cb85c;\\r\\n      color: white;\\r\\n      box-shadow: 0 3px 1px -2px rgba(0,0,0,.2), 0 2px 2px 0 rgba(0,0,0,.14), 0 1px 5px 0 rgba(0,0,0,.12);\\r\\n      transition:all .4s cubic-bezier(.25,.8,.25,1),box-shadow 280ms cubic-bezier(.4,0,.2,1);\\r\\n  }\\r\\n  .validation-save-button:hover{\\r\\n    color: white!important;\\r\\n    background-color: #5cb85c!important;\\r\\n    border:none; \\r\\n    box-shadow: 0 4px 3px 0px rgba(0,0,0,.2), 0 2px 2px 0 rgba(0,0,0,.14), 0 1px 5px 0 rgba(0,0,0,.12);  \\r\\n  }\\r\\n  .validation-save-button-container {\\r\\n      position: absolute;\\r\\n      bottom: .77em;\\r\\n      padding-left: 8px;\\r\\n  }\\r\\n\\r\\n    .validation-tool-panel {\\r\\n        position: fixed;\\r\\n        top: 10%;\\r\\n        bottom: 10%;\\r\\n        z-index: 9999;\\r\\n        border: 1px solid #c5c5c5;\\r\\n        box-shadow: 0 2px 5px 0 rgba(0,0,0,0.16), 0 2px 10px 0 rgba(0,0,0,0.12);\\r\\n        /*padding: 20px;*/\\r\\n        padding-left: 20px;\\r\\n        padding-bottom: 20px;\\r\\n        padding-top: 10px;\\r\\n        transition: all 0.4s ease 0s;\\r\\n        width: 350px;\\r\\n        background-color: whitesmoke;\\r\\n        right: 6px;\\r\\n        min-height: 350px;\\r\\n    }\\r\\n\\r\\n    .validation-tool-expand-collapse-button {\\r\\n        box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px 1px rgba(0,0,0,0.23);\\r\\n        border: none !important;\\r\\n        border-radius: 50%;\\r\\n        transition: all 0.4s ease-in-out 0.1s;\\r\\n    }\\r\\n\\r\\n    .validation-button-hidden {\\r\\n        height: 60%;\\r\\n        width: 90%;\\r\\n        top: 19%;\\r\\n    }\\r\\n\\r\\n    .validation-button-visible {\\r\\n        height: 40px;\\r\\n        width: 40px;\\r\\n        top: 45%;\\r\\n    }\\r\\n\\r\\n    .validation-panel-hidden {\\r\\n        transform: translate(144px) scale(0.3);\\r\\n    }\\r\\n\\r\\n    .validation-panel-visible {\\r\\n        transform: none;\\r\\n    }\\r\\n\\r\\n    .validation-collapse-button {\\r\\n        position: absolute;\\r\\n        left: -6%;\\r\\n        z-index: 99999;\\r\\n    }\\r\\n\\r\\n    .validation-html-template {\\r\\n        height: 100%;\\r\\n        width: 100%;\\r\\n    }\\r\\n\\r\\n    .progress {\\r\\n        background-color: #bdbbbb;\\r\\n        margin-bottom: 5px;\\r\\n    }\\r\\n\\r\\n    .validation-footer {\\r\\n        position: absolute;\\r\\n        bottom: 0;\\r\\n        height: 3em;\\r\\n        width: 100%;\\r\\n    }\\r\\n\\r\\n    /*.validation-header {*/\\r\\n    /*    display: flex;*/\\r\\n    /*    flex-direction: column;*/\\r\\n\\r\\n    /*    height: 8em;*/\\r\\n    /*    position: absolute;*/\\r\\n    /*    left: 11px;*/\\r\\n    /*    width: 94%;*/\\r\\n    /*}*/\\r\\n\\r\\n    /*.validation-body {*/\\r\\n    /*    left: 20px;*/\\r\\n    /*    right: 0;*/\\r\\n    /*    overflow: auto;*/\\r\\n    /*    top: 9em;*/\\r\\n    /*    bottom: 4em;*/\\r\\n    /*    position: absolute;*/\\r\\n    /*    padding-right: 20px;*/\\r\\n    /*    padding-bottom: 5px;*/\\r\\n    /*}*/\\r\\n    .validation-toc-header {\\r\\n        height: 4em;\\r\\n        position: absolute;\\r\\n        left: 11px;\\r\\n        width: 94%\\r\\n    }\\r\\n\\r\\n    .validation-toc-body {\\r\\n        top: 7em;\\r\\n        bottom: 13.5em;\\r\\n        width: 325px;\\r\\n        position: absolute;\\r\\n        overflow-y: auto;\\r\\n        overflow-x: hidden;\\r\\n    }\\r\\n    .validation-toc-footer {\\r\\n        position: absolute;\\r\\n        bottom: 0;\\r\\n        height: 13em;\\r\\n    }\\r\\n    .validation-close-button {\\r\\n        position: absolute;\\r\\n        top: -10px;\\r\\n        right: -10px;\\r\\n        color: red;\\r\\n        background-color: transparent;\\r\\n        font-weight: bolder;\\r\\n        font-size: 20px;\\r\\n    }\\r\\n    .validation-close-button:hover {\\r\\n        color: red;\\r\\n    }\\r\\n    .validation-toc-button {\\r\\n        background-color: #337ab7; \\r\\n        border: none; \\r\\n        color: white\\r\\n    }\\r\\n    .validation-toc-button:hover {\\r\\n        color: white;\\r\\n    }\\r\\n    .validation-error-message {\\r\\n        color: red;\\r\\n    }\\r\\n.validation-tool-panel .toc-label,.validation-tool-panel .toc-label{\\r\\n    color: #000;\\r\\n}\\r\\n.validation-tool-panel .toc-label:hover,.validation-tool-panel .toc-label:focus {\\r\\n    text-decoration: none;\\r\\n    color: #000;\\r\\n    cursor: pointer!important;\\r\\n}\\r\\n\\r\\n\\r\\n.forms-scoring-tool-panel {\\r\\n    position: fixed;\\r\\n    top: 10%;\\r\\n    bottom: 10%;\\r\\n    z-index: 9999;\\r\\n    border: 1px solid #c5c5c5;\\r\\n    box-shadow: 0 2px 5px 0 rgba(0,0,0,0.16), 0 2px 10px 0 rgba(0,0,0,0.12);\\r\\n    padding-left: 20px;\\r\\n    padding-right: 20px;\\r\\n    padding-bottom: 20px;\\r\\n    padding-top: 10px;\\r\\n    transition: all 0.4s ease 0s;\\r\\n    width: 350px;\\r\\n    background-color: whitesmoke;\\r\\n    right: 6px;\\r\\n    min-height: 350px;\\r\\n}\\r\\n\\r\\n.forms-scoring-tool-panel .nav-tabs {\\r\\n    /* hide underline from tabs area, since tabs are hidden. */\\r\\n    display: none;\\r\\n}\\r\\n\\r\\n\\r\\n.cursor-pointer{\\r\\n    cursor:pointer;\\r\\n}\\r\\n  .ellipsis{\\r\\n    text-overflow: ellipsis;\\r\\n    white-space: nowrap;\\r\\n    overflow: hidden;\\r\\n  }\\r\\n  .validation-tool-highlight{\\r\\n    background-color: #fbfb92!important;\\r\\n    border: 1px solid #9deaff!important;\\r\\n    background-image:none;\\r\\n  }\\r\\n.highlight-red {\\r\\n        background-color: #ff9494 !important;\\r\\n}\\r\\n.highlight-red:hover {\\r\\n        background-color: #ff9494 !important;\\r\\n}\\r\\n\\r\\n/*remove url when printing page*/\\r\\na[href]:after {\\r\\n    content: none;\\r\\n}\\r\\n\\r\\n\\r\\n.about-modal-backdrop.in{\\r\\n    opacity:0.8 !important;\\r\\n}\\r\\n.hsip-workflow-thumbnail:hover{\\r\\ncursor: zoom-in;\\r\\n}\\r\\n\\r\\n.respect-line-breaks {\\r\\n    white-space: pre-wrap;\\r\\n}\\r\\n\\r\\n/*Dashboard grid progress bar*/\\r\\n#bulk-submit-pBar .progress {\\r\\n    position: relative;\\r\\n}\\r\\n\\r\\n#bulk-submit-pBar .progress span {\\r\\n    position: absolute;\\r\\n    display: block;\\r\\n    width: 100%;\\r\\n    color: black;\\r\\n}\\r\\n\\r\\n/* Floating app info bar and button */\\r\\n#app-info-btn-wrapper {\\r\\n    display: none;\\r\\n    position: fixed;\\r\\n    bottom: 60px;\\r\\n    right: 30px;\\r\\n    z-index: 9999;\\r\\n    border: none;\\r\\n    outline: none;\\r\\n    cursor: pointer;\\r\\n    border-radius: 4px;\\r\\n}\\r\\n\\r\\n.app-info-btn-dd {\\r\\n    display: block;\\r\\n    right: 0;\\r\\n    left: unset;\\r\\n    min-height: 90px;\\r\\n    width: 200px;\\r\\n    padding: 10px;\\r\\n    transform:scale(1)\\r\\n}\\r\\n\\r\\n.app-info-btn-dd div {\\r\\n    display: flex;\\r\\n    flex-direction: column\\r\\n}\\r\\n\\r\\n.app-info-btn-dd div small:first-child {\\r\\n    font-weight: bold;\\r\\n    border-bottom: 1px solid gray;\\r\\n    text-align: center;\\r\\n    margin-bottom: 3px;\\r\\n    word-wrap: break-word;\\r\\n    min-height: 15px;\\r\\n}\\r\\n\\r\\n.app-info-btn-dd button {\\r\\n    border: none;\\r\\n    position: absolute;\\r\\n    top: -2px;\\r\\n    left: -5px;\\r\\n    background-color: transparent;\\r\\n}\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n/* end floating app info stuff*/\\r\\n\\r\\n#return-to-top {\\r\\n    display: none;\\r\\n    position: fixed;\\r\\n    bottom: 20px;\\r\\n    right: 30px;\\r\\n    z-index: 9999;\\r\\n    font-size: 18px;\\r\\n    border: none;\\r\\n    outline: none;\\r\\n    color: #fff;\\r\\n    cursor: pointer;\\r\\n    border-radius: 4px;\\r\\n  }\\r\\n  \\r\\n  #return-to-top i {\\r\\n    color: #fff;\\r\\n    margin: 0;\\r\\n    position: relative;\\r\\n    font-size: 19px;\\r\\n    -webkit-transition: all .3s ease;\\r\\n    -moz-transition: all .3s ease;\\r\\n    -ms-transition: all .3s ease;\\r\\n    -o-transition: all .3s ease;\\r\\n    transition: all .3s ease;\\r\\n  }\\r\\n\\r\\n.debugPanel {\\r\\n    text-align: left;\\r\\n    display: none;\\r\\n}\\r\\n\\r\\n\\r\\n.circle-number, .circle-number-comment, .circle-number-alert, .circle-number-error {\\r\\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);\\r\\n}\\r\\n\\r\\n\\r\\n.indication-icon {\\r\\n    position: relative;\\r\\n    /* FONT-WEIGHT: 800; */\\r\\n    width: 40px;\\r\\n    height: 40px;\\r\\n    border-radius: 23px;\\r\\n    text-align: center;\\r\\n    /* font-size: 14px; */\\r\\n    vertical-align: middle;\\r\\n    color: white;\\r\\n    line-height: 2.42;\\r\\n    -webkit-background-clip: padding-box;\\r\\n    -moz-background-clip: padding;\\r\\n    background-clip: padding-box;\\r\\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);\\r\\n    background:  #C0C0C0;\\r\\n    border: 1px solid white;\\r\\n}\\r\\n\\r\\n.invalid-icon {\\r\\n    background: #fcf1f0;\\r\\n    border: solid 1px #d9534f;\\r\\n}\\r\\n\\r\\n.invalid-icon-warn {\\r\\n    background: #fcf1f0;\\r\\n    border: solid 1px #d9b94f;\\r\\n}\\r\\n\\r\\n\\r\\n.indication-tooltip {\\r\\n    background: black;\\r\\n    SIZE: A3;\\r\\n    position: absolute;\\r\\n    /* FONT-WEIGHT: 800; */\\r\\n    width: 20px;\\r\\n    line-height: 20px;\\r\\n    height: 20px;\\r\\n    border-radius: 10px;\\r\\n    text-align: center;\\r\\n    /* font-size: 14px; */\\r\\n    vertical-align: middle;\\r\\n    top: -10%;\\r\\n    left: 70%;\\r\\n    border: 1px solid white;\\r\\n    color: white;\\r\\n    -webkit-background-clip: padding-box;\\r\\n    -moz-background-clip: padding;\\r\\n    background-clip: padding-box;\\r\\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);\\r\\n}\\r\\n\\r\\n.invalid-tooltip {\\r\\n    background: #b94a48;\\r\\n}\\r\\n\\r\\n\\r\\n.tooltip-inner {\\r\\n    text-align: left !important;\\r\\n    /*white-space:pre-wrap;*/\\r\\n    min-width: 300px !important;\\r\\n    max-width: 350px !important;\\r\\n    word-wrap: break-word !important;\\r\\n    white-space: pre-line !important;\\r\\n}\\r\\n\\r\\n.tooltip-font-size-override {\\r\\n    font-size: 14px !important;\\r\\n}\\r\\n\\r\\n.popover-content {\\r\\n    white-space: pre-line;\\r\\n}\\r\\n\\r\\n.popover-content hr {\\r\\n    margin-bottom: 0;\\r\\n    padding-bottom: 0;\\r\\n}\\r\\n\\r\\n.tooltip-inner hr {\\r\\n    margin-bottom: 0;\\r\\n    padding-bottom: 0;\\r\\n}\\r\\n\\r\\n.clone-info-header-btn .popover-content {\\r\\n    width: 100%;\\r\\n    padding: 9px 14px;\\r\\n    white-space: normal!important;\\r\\n}\\r\\n\\r\\n.rollback-header-btn-popout .popover-inner {\\r\\n    width: 400px;\\r\\n    max-width: 400px;\\r\\n\\r\\n}\\r\\n\\r\\n.c-diff-header-btn-popover .popover-inner {\\r\\n    width: 230px;\\r\\n    max-width: 230px;\\r\\n}\\r\\n\\r\\n/********** export header button ***********/\\r\\n.export-header-btn-popover .popover-content {\\r\\n    padding: 0;\\r\\n    margin: 0;\\r\\n}\\r\\n\\r\\n.export-header-btn-popover ul {\\r\\n    padding: 5px 0;\\r\\n    width: 100%;\\r\\n    white-space: normal!important;\\r\\n    list-style: none;\\r\\n    margin: 0;\\r\\n}\\r\\n\\r\\n.export-header-btn-popover li a {\\r\\n    display: block;\\r\\n    padding: 3px 20px;\\r\\n    clear: both;\\r\\n    font-weight: 400;\\r\\n    line-height: 1.42857143;\\r\\n    color: #333333;\\r\\n    white-space: nowrap;\\r\\n}\\r\\n\\r\\n.export-header-btn-popover li a:hover{\\r\\n    color: #262626;\\r\\n    text-decoration: none;\\r\\n    background-color: #f5f5f5;\\r\\n}\\r\\n/***********************************************/\\r\\n\\r\\n.popover {\\r\\n    max-width: 800px; /* optional max width */\\r\\n    width: intrinsic; /* Safari/WebKit uses a non-standard name */\\r\\n    width: -moz-max-content; /* Firefox/Gecko */\\r\\n    width: -webkit-max-content; /* Chrome */\\r\\n}\\r\\n\\r\\n.badge.badge-success {\\r\\n    background-color: #5cb85c;\\r\\n}\\r\\n\\r\\n.badge.badge-info {\\r\\n    background-color: #5bc0de;\\r\\n}\\r\\n\\r\\n.badge.badge-warning {\\r\\n    background-color: #f0ad4e;\\r\\n}\\r\\n\\r\\n.badge.badge-danger {\\r\\n    background-color: #d9534f;\\r\\n}\\r\\n\\r\\n.read-only-checkbox-wrapper {\\r\\n    float: left;\\r\\n    margin-right: 5px;\\r\\n}\\r\\n\\r\\n.fa-times-thin:before {\\r\\n    content: '\\\\00d7';\\r\\n}\\r\\n\\r\\n/* ag grid tooltip */\\r\\n.ag-tooltip {\\r\\n    background-color: white !important;\\r\\n    border-radius: 1px !important;\\r\\n    padding: 5px !important;\\r\\n    border-width: 1px !important;\\r\\n    border-style: solid !important;\\r\\n    border-color: #545454 !important;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../icons/worldview/svg/bing.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"../icons/worldview/svg/bing-gray.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"../icons/worldview/svg/rail.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"../icons/worldview/svg/app.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"../icons/worldview/svg/app-add.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_5___ = new URL(\"../icons/worldview/svg/app-complete.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_6___ = new URL(\"../icons/worldview/svg/app-edit.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_7___ = new URL(\"../icons/worldview/svg/app-export.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_8___ = new URL(\"../icons/worldview/svg/app-pending.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_9___ = new URL(\"../icons/worldview/svg/app-remove.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_10___ = new URL(\"../icons/worldview/svg/authenticate.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_11___ = new URL(\"../icons/worldview/svg/azimuth.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_12___ = new URL(\"../icons/worldview/svg/bestpractice.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_13___ = new URL(\"../icons/worldview/svg/bicycle.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_14___ = new URL(\"../icons/worldview/svg/bicycle-alt.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_15___ = new URL(\"../icons/worldview/svg/bookmark.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_16___ = new URL(\"../icons/worldview/svg/brain-bulb.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_17___ = new URL(\"../icons/worldview/svg/brain-bulb-alt.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_18___ = new URL(\"../icons/worldview/svg/bus.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_19___ = new URL(\"../icons/worldview/svg/circle.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_20___ = new URL(\"../icons/worldview/svg/circle-alt.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_21___ = new URL(\"../icons/worldview/svg/circle-alt-bar.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_22___ = new URL(\"../icons/worldview/svg/collapse.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_23___ = new URL(\"../icons/worldview/svg/conservation.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_24___ = new URL(\"../icons/worldview/svg/customer-service-commitment.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_25___ = new URL(\"../icons/worldview/svg/data-development.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_26___ = new URL(\"../icons/worldview/svg/diamond.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_27___ = new URL(\"../icons/worldview/svg/diamond-alt.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_28___ = new URL(\"../icons/worldview/svg/document.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_29___ = new URL(\"../icons/worldview/svg/download.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_30___ = new URL(\"../icons/worldview/svg/drpt.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_31___ = new URL(\"../icons/worldview/svg/exit-fullscreen.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_32___ = new URL(\"../icons/worldview/svg/expand.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_33___ = new URL(\"../icons/worldview/svg/file-export.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_34___ = new URL(\"../icons/worldview/svg/filter.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_35___ = new URL(\"../icons/worldview/svg/fullscreen.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_36___ = new URL(\"../icons/worldview/svg/gis-focused.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_37___ = new URL(\"../icons/worldview/svg/globe-central.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_38___ = new URL(\"../icons/worldview/svg/hb2.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_39___ = new URL(\"../icons/worldview/svg/hb2-alt.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_40___ = new URL(\"../icons/worldview/svg/highway.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_41___ = new URL(\"../icons/worldview/svg/home.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_42___ = new URL(\"../icons/worldview/svg/industry-experts.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_43___ = new URL(\"../icons/worldview/svg/interstate.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_44___ = new URL(\"../icons/worldview/svg/interstate-alt.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_45___ = new URL(\"../icons/worldview/svg/logo-practicekeeper.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_46___ = new URL(\"../icons/worldview/svg/logo-practicekeeper-alt.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_47___ = new URL(\"../icons/worldview/svg/logo-worldview.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_48___ = new URL(\"../icons/worldview/svg/map.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_49___ = new URL(\"../icons/worldview/svg/markup-arrow.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_50___ = new URL(\"../icons/worldview/svg/markup-buffer.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_51___ = new URL(\"../icons/worldview/svg/markup-circle.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_52___ = new URL(\"../icons/worldview/svg/markup-freehand.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_53___ = new URL(\"../icons/worldview/svg/markup-line.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_54___ = new URL(\"../icons/worldview/svg/markup-polygon.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_55___ = new URL(\"../icons/worldview/svg/markup-square.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_56___ = new URL(\"../icons/worldview/svg/pedestrian.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_57___ = new URL(\"../icons/worldview/svg/pedestrian-alt.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_58___ = new URL(\"../icons/worldview/svg/pentagon.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_59___ = new URL(\"../icons/worldview/svg/pentagon-alt.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_60___ = new URL(\"../icons/worldview/svg/pentagon-alt-pedestrian.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_61___ = new URL(\"../icons/worldview/svg/phone.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_62___ = new URL(\"../icons/worldview/svg/practice.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_63___ = new URL(\"../icons/worldview/svg/practicekeeper.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_64___ = new URL(\"../icons/worldview/svg/rectangle.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_65___ = new URL(\"../icons/worldview/svg/rectangle-alt.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_66___ = new URL(\"../icons/worldview/svg/rectangle-alt-speed.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_67___ = new URL(\"../icons/worldview/svg/recycle.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_68___ = new URL(\"../icons/worldview/svg/reporting.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_69___ = new URL(\"../icons/worldview/svg/resources.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_70___ = new URL(\"../icons/worldview/svg/route.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_71___ = new URL(\"../icons/worldview/svg/route-alt.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_72___ = new URL(\"../icons/worldview/svg/route-alt-o.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_73___ = new URL(\"../icons/worldview/svg/route-alt-solid.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_74___ = new URL(\"../icons/worldview/svg/search.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_75___ = new URL(\"../icons/worldview/svg/share.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_76___ = new URL(\"../icons/worldview/svg/square.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_77___ = new URL(\"../icons/worldview/svg/square-alt.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_78___ = new URL(\"../icons/worldview/svg/square-alt-parking.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_79___ = new URL(\"../icons/worldview/svg/stop.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_80___ = new URL(\"../icons/worldview/svg/stop-alt.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_81___ = new URL(\"../icons/worldview/svg/storymap.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_82___ = new URL(\"../icons/worldview/svg/tools.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_83___ = new URL(\"../icons/worldview/svg/triangle.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_84___ = new URL(\"../icons/worldview/svg/triangle-alt.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_85___ = new URL(\"../icons/worldview/svg/user-admin.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_86___ = new URL(\"../icons/worldview/svg/van.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_87___ = new URL(\"../icons/worldview/svg/vdot.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_88___ = new URL(\"../icons/worldview/svg/worldview.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_89___ = new URL(\"../icons/worldview/svg/yield.svg\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_90___ = new URL(\"../icons/worldview/svg/yield-alt.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___);\nvar ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___);\nvar ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___);\nvar ___CSS_LOADER_URL_REPLACEMENT_8___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___);\nvar ___CSS_LOADER_URL_REPLACEMENT_9___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_9___);\nvar ___CSS_LOADER_URL_REPLACEMENT_10___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___);\nvar ___CSS_LOADER_URL_REPLACEMENT_11___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___);\nvar ___CSS_LOADER_URL_REPLACEMENT_12___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___);\nvar ___CSS_LOADER_URL_REPLACEMENT_13___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_13___);\nvar ___CSS_LOADER_URL_REPLACEMENT_14___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_14___);\nvar ___CSS_LOADER_URL_REPLACEMENT_15___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_15___);\nvar ___CSS_LOADER_URL_REPLACEMENT_16___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_16___);\nvar ___CSS_LOADER_URL_REPLACEMENT_17___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_17___);\nvar ___CSS_LOADER_URL_REPLACEMENT_18___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_18___);\nvar ___CSS_LOADER_URL_REPLACEMENT_19___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_19___);\nvar ___CSS_LOADER_URL_REPLACEMENT_20___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_20___);\nvar ___CSS_LOADER_URL_REPLACEMENT_21___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_21___);\nvar ___CSS_LOADER_URL_REPLACEMENT_22___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_22___);\nvar ___CSS_LOADER_URL_REPLACEMENT_23___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_23___);\nvar ___CSS_LOADER_URL_REPLACEMENT_24___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_24___);\nvar ___CSS_LOADER_URL_REPLACEMENT_25___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_25___);\nvar ___CSS_LOADER_URL_REPLACEMENT_26___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_26___);\nvar ___CSS_LOADER_URL_REPLACEMENT_27___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_27___);\nvar ___CSS_LOADER_URL_REPLACEMENT_28___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_28___);\nvar ___CSS_LOADER_URL_REPLACEMENT_29___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_29___);\nvar ___CSS_LOADER_URL_REPLACEMENT_30___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_30___);\nvar ___CSS_LOADER_URL_REPLACEMENT_31___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_31___);\nvar ___CSS_LOADER_URL_REPLACEMENT_32___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_32___);\nvar ___CSS_LOADER_URL_REPLACEMENT_33___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_33___);\nvar ___CSS_LOADER_URL_REPLACEMENT_34___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_34___);\nvar ___CSS_LOADER_URL_REPLACEMENT_35___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_35___);\nvar ___CSS_LOADER_URL_REPLACEMENT_36___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_36___);\nvar ___CSS_LOADER_URL_REPLACEMENT_37___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_37___);\nvar ___CSS_LOADER_URL_REPLACEMENT_38___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_38___);\nvar ___CSS_LOADER_URL_REPLACEMENT_39___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_39___);\nvar ___CSS_LOADER_URL_REPLACEMENT_40___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_40___);\nvar ___CSS_LOADER_URL_REPLACEMENT_41___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_41___);\nvar ___CSS_LOADER_URL_REPLACEMENT_42___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_42___);\nvar ___CSS_LOADER_URL_REPLACEMENT_43___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_43___);\nvar ___CSS_LOADER_URL_REPLACEMENT_44___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_44___);\nvar ___CSS_LOADER_URL_REPLACEMENT_45___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_45___);\nvar ___CSS_LOADER_URL_REPLACEMENT_46___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_46___);\nvar ___CSS_LOADER_URL_REPLACEMENT_47___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_47___);\nvar ___CSS_LOADER_URL_REPLACEMENT_48___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_48___);\nvar ___CSS_LOADER_URL_REPLACEMENT_49___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_49___);\nvar ___CSS_LOADER_URL_REPLACEMENT_50___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_50___);\nvar ___CSS_LOADER_URL_REPLACEMENT_51___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_51___);\nvar ___CSS_LOADER_URL_REPLACEMENT_52___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_52___);\nvar ___CSS_LOADER_URL_REPLACEMENT_53___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_53___);\nvar ___CSS_LOADER_URL_REPLACEMENT_54___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_54___);\nvar ___CSS_LOADER_URL_REPLACEMENT_55___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_55___);\nvar ___CSS_LOADER_URL_REPLACEMENT_56___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_56___);\nvar ___CSS_LOADER_URL_REPLACEMENT_57___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_57___);\nvar ___CSS_LOADER_URL_REPLACEMENT_58___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_58___);\nvar ___CSS_LOADER_URL_REPLACEMENT_59___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_59___);\nvar ___CSS_LOADER_URL_REPLACEMENT_60___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_60___);\nvar ___CSS_LOADER_URL_REPLACEMENT_61___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_61___);\nvar ___CSS_LOADER_URL_REPLACEMENT_62___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_62___);\nvar ___CSS_LOADER_URL_REPLACEMENT_63___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_63___);\nvar ___CSS_LOADER_URL_REPLACEMENT_64___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_64___);\nvar ___CSS_LOADER_URL_REPLACEMENT_65___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_65___);\nvar ___CSS_LOADER_URL_REPLACEMENT_66___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_66___);\nvar ___CSS_LOADER_URL_REPLACEMENT_67___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_67___);\nvar ___CSS_LOADER_URL_REPLACEMENT_68___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_68___);\nvar ___CSS_LOADER_URL_REPLACEMENT_69___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_69___);\nvar ___CSS_LOADER_URL_REPLACEMENT_70___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_70___);\nvar ___CSS_LOADER_URL_REPLACEMENT_71___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_71___);\nvar ___CSS_LOADER_URL_REPLACEMENT_72___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_72___);\nvar ___CSS_LOADER_URL_REPLACEMENT_73___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_73___);\nvar ___CSS_LOADER_URL_REPLACEMENT_74___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_74___);\nvar ___CSS_LOADER_URL_REPLACEMENT_75___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_75___);\nvar ___CSS_LOADER_URL_REPLACEMENT_76___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_76___);\nvar ___CSS_LOADER_URL_REPLACEMENT_77___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_77___);\nvar ___CSS_LOADER_URL_REPLACEMENT_78___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_78___);\nvar ___CSS_LOADER_URL_REPLACEMENT_79___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_79___);\nvar ___CSS_LOADER_URL_REPLACEMENT_80___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_80___);\nvar ___CSS_LOADER_URL_REPLACEMENT_81___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_81___);\nvar ___CSS_LOADER_URL_REPLACEMENT_82___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_82___);\nvar ___CSS_LOADER_URL_REPLACEMENT_83___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_83___);\nvar ___CSS_LOADER_URL_REPLACEMENT_84___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_84___);\nvar ___CSS_LOADER_URL_REPLACEMENT_85___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_85___);\nvar ___CSS_LOADER_URL_REPLACEMENT_86___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_86___);\nvar ___CSS_LOADER_URL_REPLACEMENT_87___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_87___);\nvar ___CSS_LOADER_URL_REPLACEMENT_88___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_88___);\nvar ___CSS_LOADER_URL_REPLACEMENT_89___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_89___);\nvar ___CSS_LOADER_URL_REPLACEMENT_90___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_90___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.wvs-bing {\r\n    background: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat 100% 100%;\r\n    background-size: 100% 100%;\r\n}\r\n.wvs-bing-gray {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_1___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-rail {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_2___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-app {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_3___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-app-add {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_4___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-app-complete {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_5___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-app-edit {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_6___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-app-export {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_7___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-app-pending {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_8___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-app-remove {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_9___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-authenticate {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_10___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-azimuth {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_11___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-bestpractice {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_12___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-bicycle {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_13___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-bicycle-alt {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_14___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-bookmark {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_15___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-brain-bulb {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_16___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-brain-bulb-alt {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_17___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-bus {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_18___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-circle {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_19___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-circle-alt {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_20___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-circle-alt-bar {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_21___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-collapse {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_22___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-conservation {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_23___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-customer-service-commitment {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_24___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-data-development {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_25___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-diamond {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_26___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-diamond-alt {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_27___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-document {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_28___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-download {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_29___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-drpt {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_30___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-exit-fullscreen {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_31___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-expand {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_32___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-file-export {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_33___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-filter {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_34___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-fullscreen {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_35___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-gis-focused {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_36___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-globe-central {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_37___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-hb2 {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_38___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-hb2-alt {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_39___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-highway {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_40___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-home {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_41___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-industry-experts {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_42___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-interstate {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_43___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-interstate-alt {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_44___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-logo-practicekeeper {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_45___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-logo-practicekeeper-alt {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_46___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-logo-worldview {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_47___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-map {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_48___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-markup-arrow {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_49___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-markup-buffer {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_50___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-markup-circle {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_51___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-markup-freehand {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_52___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-markup-line {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_53___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-markup-polygon {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_54___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-markup-square {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_55___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-pedestrian {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_56___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-pedestrian-alt {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_57___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-pentagon {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_58___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-pentagon-alt {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_59___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-pentagon-alt-pedestrian {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_60___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-phone {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_61___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-practice {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_62___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-practicekeeper {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_63___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-rectangle {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_64___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-rectangle-alt {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_65___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-rectangle-alt-speed {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_66___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-recycle {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_67___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-reporting {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_68___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-resources {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_69___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-route {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_70___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-route-alt {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_71___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-route-alt-o {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_72___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-route-alt-solid {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_73___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-search {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_74___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-share {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_75___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-square {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_76___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-square-alt {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_77___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-square-alt-parking {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_78___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-stop {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_79___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-stop-alt {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_80___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-storymap {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_81___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-tools {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_82___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-triangle {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_83___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-triangle-alt {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_84___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-user-admin {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_85___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-van {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_86___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-vdot {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_87___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-worldview {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_88___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-yield {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_89___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs-yield-alt {\r\n  background: url(${___CSS_LOADER_URL_REPLACEMENT_90___}) no-repeat 100% 100%;\r\n  background-size: 100% 100%;\r\n}\r\n.wvs {\r\n  display: inline-block;\r\n  width: 1em;\r\n  height: 1em;\r\n  stroke-width: 0;\r\n  stroke: currentColor;\r\n  fill: currentColor;\r\n}\r\n.wvs-lg {\r\n  width: 1.33333333em;\r\n  height: 1.33333333em;\r\n}\r\n.wvs-2x {\r\n  width: 2em;\r\n  height: 2em;\r\n}\r\n.wvs-3x {\r\n  width: 3em;\r\n  height: 3em;\r\n}\r\n.wvs-4x {\r\n  width: 4em;\r\n  height: 4em;\r\n}\r\n.wvs-5x {\r\n  width: 5em;\r\n  height: 5em;\r\n}\r\n.wvs-fw {\r\n  width: 1.28571429em;\r\n  text-align: center;\r\n}\r\n.wvs-ul {\r\n  padding-left: 0;\r\n  margin-left: 2.14285714em;\r\n  list-style-type: none;\r\n}\r\n.wvs-ul > li {\r\n  position: relative;\r\n}\r\n.wvs-li {\r\n  position: absolute;\r\n  left: -2.14285714em;\r\n  width: 2.14285714em;\r\n  top: 0.14285714em;\r\n  text-align: center;\r\n}\r\n.wvs-li.wvs-lg {\r\n  left: -1.85714286em;\r\n}\r\n.wvs-border {\r\n  padding: .2em .25em .15em;\r\n  border: solid 0.08em #eeeeee;\r\n  border-radius: .1em;\r\n}\r\n.wvs-pull-left {\r\n  float: left;\r\n}\r\n.wvs-pull-right {\r\n  float: right;\r\n}\r\n.wvs.wvs-pull-left {\r\n  margin-right: .3em;\r\n}\r\n.wvs.wvs-pull-right {\r\n  margin-left: .3em;\r\n}\r\n.pull-right {\r\n  float: right;\r\n}\r\n.pull-left {\r\n  float: left;\r\n}\r\n.wvs.pull-left {\r\n  margin-right: .3em;\r\n}\r\n.wvs.pull-right {\r\n  margin-left: .3em;\r\n}\r\n.wvs-spin {\r\n  -webkit-animation: wvs-spin 2s infinite linear;\r\n  animation: wvs-spin 2s infinite linear;\r\n}\r\n.wvs-pulse {\r\n  -webkit-animation: wvs-spin 1s infinite steps(8);\r\n  animation: wvs-spin 1s infinite steps(8);\r\n}\r\n.wvs-rotate-90 {\r\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\r\n  -webkit-transform: rotate(90deg);\r\n  -ms-transform: rotate(90deg);\r\n  transform: rotate(90deg);\r\n}\r\n.wvs-rotate-180 {\r\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\r\n  -webkit-transform: rotate(180deg);\r\n  -ms-transform: rotate(180deg);\r\n  transform: rotate(180deg);\r\n}\r\n.wvs-rotate-270 {\r\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\r\n  -webkit-transform: rotate(270deg);\r\n  -ms-transform: rotate(270deg);\r\n  transform: rotate(270deg);\r\n}\r\n.wvs-flip-horizontal {\r\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\r\n  -webkit-transform: scale(-1, 1);\r\n  -ms-transform: scale(-1, 1);\r\n  transform: scale(-1, 1);\r\n}\r\n.wvs-flip-vertical {\r\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\r\n  -webkit-transform: scale(1, -1);\r\n  -ms-transform: scale(1, -1);\r\n  transform: scale(1, -1);\r\n}\r\n:root .wvs-rotate-90 {\r\n  filter: none;\r\n}\r\n:root .wvs-rotate-180 {\r\n  filter: none;\r\n}\r\n:root .wvs-rotate-270 {\r\n  filter: none;\r\n}\r\n:root .wvs-flip-horizontal {\r\n  filter: none;\r\n}\r\n:root .wvs-flip-vertical {\r\n  filter: none;\r\n}\r\n.wvs-stack {\r\n  position: relative;\r\n  display: inline-block;\r\n  width: 2em;\r\n  height: 2em;\r\n  line-height: 2em;\r\n  vertical-align: middle;\r\n}\r\n.wvs-stack-1x {\r\n  position: absolute;\r\n  left: 0;\r\n  width: 100%;\r\n  text-align: center;\r\n  line-height: inherit;\r\n}\r\n.wvs-stack-2x {\r\n  position: absolute;\r\n  left: 0;\r\n  width: 100%;\r\n  text-align: center;\r\n  font-size: 2em;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./css/wvs-icons.css\"],\"names\":[],\"mappings\":\"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CE,kBAAkB;AACpB;AACA;EACE,kBAAkB;EAClB,mBAAmB;EACnB,mBAAmB;EACnB,iBAAiB;EACjB,kBAAkB;AACpB;AACA;EACE,mBAAmB;AACrB;AACA;EACE,yBAAyB;EACzB,4BAA4B;EAC5B,mBAAmB;AACrB;AACA;EACE,WAAW;AACb;AACA;EACE,YAAY;AACd;AACA;EACE,kBAAkB;AACpB;AACA;EACE,iBAAiB;AACnB;AACA;EACE,YAAY;AACd;AACA;EACE,WAAW;AACb;AACA;EACE,kBAAkB;AACpB;AACA;EACE,iBAAiB;AACnB;AACA;EACE,8CAA8C;EAC9C,sCAAsC;AACxC;AACA;EACE,gDAAgD;EAChD,wCAAwC;AAC1C;AACA;EACE,sEAAsE;EACtE,gCAAgC;EAChC,4BAA4B;EAC5B,wBAAwB;AAC1B;AACA;EACE,sEAAsE;EACtE,iCAAiC;EACjC,6BAA6B;EAC7B,yBAAyB;AAC3B;AACA;EACE,sEAAsE;EACtE,iCAAiC;EACjC,6BAA6B;EAC7B,yBAAyB;AAC3B;AACA;EACE,gFAAgF;EAChF,+BAA+B;EAC/B,2BAA2B;EAC3B,uBAAuB;AACzB;AACA;EACE,gFAAgF;EAChF,+BAA+B;EAC/B,2BAA2B;EAC3B,uBAAuB;AACzB;AACA;EACE,YAAY;AACd;AACA;EACE,YAAY;AACd;AACA;EACE,YAAY;AACd;AACA;EACE,YAAY;AACd;AACA;EACE,YAAY;AACd;AACA;EACE,kBAAkB;EAClB,qBAAqB;EACrB,UAAU;EACV,WAAW;EACX,gBAAgB;EAChB,sBAAsB;AACxB;AACA;EACE,kBAAkB;EAClB,OAAO;EACP,WAAW;EACX,kBAAkB;EAClB,oBAAoB;AACtB;AACA;EACE,kBAAkB;EAClB,OAAO;EACP,WAAW;EACX,kBAAkB;EAClB,cAAc;AAChB\",\"sourcesContent\":[\".wvs-bing {\\r\\n    background: url('../icons/worldview/svg/bing.svg') no-repeat 100% 100%;\\r\\n    background-size: 100% 100%;\\r\\n}\\r\\n.wvs-bing-gray {\\r\\n  background: url('../icons/worldview/svg/bing-gray.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-rail {\\r\\n  background: url('../icons/worldview/svg/rail.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-app {\\r\\n  background: url('../icons/worldview/svg/app.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-app-add {\\r\\n  background: url('../icons/worldview/svg/app-add.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-app-complete {\\r\\n  background: url('../icons/worldview/svg/app-complete.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-app-edit {\\r\\n  background: url('../icons/worldview/svg/app-edit.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-app-export {\\r\\n  background: url('../icons/worldview/svg/app-export.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-app-pending {\\r\\n  background: url('../icons/worldview/svg/app-pending.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-app-remove {\\r\\n  background: url('../icons/worldview/svg/app-remove.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-authenticate {\\r\\n  background: url('../icons/worldview/svg/authenticate.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-azimuth {\\r\\n  background: url('../icons/worldview/svg/azimuth.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-bestpractice {\\r\\n  background: url('../icons/worldview/svg/bestpractice.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-bicycle {\\r\\n  background: url('../icons/worldview/svg/bicycle.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-bicycle-alt {\\r\\n  background: url('../icons/worldview/svg/bicycle-alt.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-bookmark {\\r\\n  background: url('../icons/worldview/svg/bookmark.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-brain-bulb {\\r\\n  background: url('../icons/worldview/svg/brain-bulb.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-brain-bulb-alt {\\r\\n  background: url('../icons/worldview/svg/brain-bulb-alt.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-bus {\\r\\n  background: url('../icons/worldview/svg/bus.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-circle {\\r\\n  background: url('../icons/worldview/svg/circle.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-circle-alt {\\r\\n  background: url('../icons/worldview/svg/circle-alt.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-circle-alt-bar {\\r\\n  background: url('../icons/worldview/svg/circle-alt-bar.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-collapse {\\r\\n  background: url('../icons/worldview/svg/collapse.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-conservation {\\r\\n  background: url('../icons/worldview/svg/conservation.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-customer-service-commitment {\\r\\n  background: url('../icons/worldview/svg/customer-service-commitment.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-data-development {\\r\\n  background: url('../icons/worldview/svg/data-development.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-diamond {\\r\\n  background: url('../icons/worldview/svg/diamond.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-diamond-alt {\\r\\n  background: url('../icons/worldview/svg/diamond-alt.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-document {\\r\\n  background: url('../icons/worldview/svg/document.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-download {\\r\\n  background: url('../icons/worldview/svg/download.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-drpt {\\r\\n  background: url('../icons/worldview/svg/drpt.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-exit-fullscreen {\\r\\n  background: url('../icons/worldview/svg/exit-fullscreen.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-expand {\\r\\n  background: url('../icons/worldview/svg/expand.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-file-export {\\r\\n  background: url('../icons/worldview/svg/file-export.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-filter {\\r\\n  background: url('../icons/worldview/svg/filter.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-fullscreen {\\r\\n  background: url('../icons/worldview/svg/fullscreen.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-gis-focused {\\r\\n  background: url('../icons/worldview/svg/gis-focused.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-globe-central {\\r\\n  background: url('../icons/worldview/svg/globe-central.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-hb2 {\\r\\n  background: url('../icons/worldview/svg/hb2.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-hb2-alt {\\r\\n  background: url('../icons/worldview/svg/hb2-alt.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-highway {\\r\\n  background: url('../icons/worldview/svg/highway.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-home {\\r\\n  background: url('../icons/worldview/svg/home.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-industry-experts {\\r\\n  background: url('../icons/worldview/svg/industry-experts.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-interstate {\\r\\n  background: url('../icons/worldview/svg/interstate.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-interstate-alt {\\r\\n  background: url('../icons/worldview/svg/interstate-alt.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-logo-practicekeeper {\\r\\n  background: url('../icons/worldview/svg/logo-practicekeeper.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-logo-practicekeeper-alt {\\r\\n  background: url('../icons/worldview/svg/logo-practicekeeper-alt.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-logo-worldview {\\r\\n  background: url('../icons/worldview/svg/logo-worldview.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-map {\\r\\n  background: url('../icons/worldview/svg/map.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-markup-arrow {\\r\\n  background: url('../icons/worldview/svg/markup-arrow.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-markup-buffer {\\r\\n  background: url('../icons/worldview/svg/markup-buffer.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-markup-circle {\\r\\n  background: url('../icons/worldview/svg/markup-circle.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-markup-freehand {\\r\\n  background: url('../icons/worldview/svg/markup-freehand.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-markup-line {\\r\\n  background: url('../icons/worldview/svg/markup-line.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-markup-polygon {\\r\\n  background: url('../icons/worldview/svg/markup-polygon.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-markup-square {\\r\\n  background: url('../icons/worldview/svg/markup-square.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-pedestrian {\\r\\n  background: url('../icons/worldview/svg/pedestrian.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-pedestrian-alt {\\r\\n  background: url('../icons/worldview/svg/pedestrian-alt.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-pentagon {\\r\\n  background: url('../icons/worldview/svg/pentagon.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-pentagon-alt {\\r\\n  background: url('../icons/worldview/svg/pentagon-alt.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-pentagon-alt-pedestrian {\\r\\n  background: url('../icons/worldview/svg/pentagon-alt-pedestrian.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-phone {\\r\\n  background: url('../icons/worldview/svg/phone.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-practice {\\r\\n  background: url('../icons/worldview/svg/practice.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-practicekeeper {\\r\\n  background: url('../icons/worldview/svg/practicekeeper.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-rectangle {\\r\\n  background: url('../icons/worldview/svg/rectangle.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-rectangle-alt {\\r\\n  background: url('../icons/worldview/svg/rectangle-alt.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-rectangle-alt-speed {\\r\\n  background: url('../icons/worldview/svg/rectangle-alt-speed.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-recycle {\\r\\n  background: url('../icons/worldview/svg/recycle.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-reporting {\\r\\n  background: url('../icons/worldview/svg/reporting.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-resources {\\r\\n  background: url('../icons/worldview/svg/resources.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-route {\\r\\n  background: url('../icons/worldview/svg/route.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-route-alt {\\r\\n  background: url('../icons/worldview/svg/route-alt.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-route-alt-o {\\r\\n  background: url('../icons/worldview/svg/route-alt-o.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-route-alt-solid {\\r\\n  background: url('../icons/worldview/svg/route-alt-solid.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-search {\\r\\n  background: url('../icons/worldview/svg/search.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-share {\\r\\n  background: url('../icons/worldview/svg/share.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-square {\\r\\n  background: url('../icons/worldview/svg/square.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-square-alt {\\r\\n  background: url('../icons/worldview/svg/square-alt.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-square-alt-parking {\\r\\n  background: url('../icons/worldview/svg/square-alt-parking.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-stop {\\r\\n  background: url('../icons/worldview/svg/stop.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-stop-alt {\\r\\n  background: url('../icons/worldview/svg/stop-alt.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-storymap {\\r\\n  background: url('../icons/worldview/svg/storymap.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-tools {\\r\\n  background: url('../icons/worldview/svg/tools.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-triangle {\\r\\n  background: url('../icons/worldview/svg/triangle.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-triangle-alt {\\r\\n  background: url('../icons/worldview/svg/triangle-alt.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-user-admin {\\r\\n  background: url('../icons/worldview/svg/user-admin.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-van {\\r\\n  background: url('../icons/worldview/svg/van.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-vdot {\\r\\n  background: url('../icons/worldview/svg/vdot.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-worldview {\\r\\n  background: url('../icons/worldview/svg/worldview.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-yield {\\r\\n  background: url('../icons/worldview/svg/yield.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs-yield-alt {\\r\\n  background: url('../icons/worldview/svg/yield-alt.svg') no-repeat 100% 100%;\\r\\n  background-size: 100% 100%;\\r\\n}\\r\\n.wvs {\\r\\n  display: inline-block;\\r\\n  width: 1em;\\r\\n  height: 1em;\\r\\n  stroke-width: 0;\\r\\n  stroke: currentColor;\\r\\n  fill: currentColor;\\r\\n}\\r\\n.wvs-lg {\\r\\n  width: 1.33333333em;\\r\\n  height: 1.33333333em;\\r\\n}\\r\\n.wvs-2x {\\r\\n  width: 2em;\\r\\n  height: 2em;\\r\\n}\\r\\n.wvs-3x {\\r\\n  width: 3em;\\r\\n  height: 3em;\\r\\n}\\r\\n.wvs-4x {\\r\\n  width: 4em;\\r\\n  height: 4em;\\r\\n}\\r\\n.wvs-5x {\\r\\n  width: 5em;\\r\\n  height: 5em;\\r\\n}\\r\\n.wvs-fw {\\r\\n  width: 1.28571429em;\\r\\n  text-align: center;\\r\\n}\\r\\n.wvs-ul {\\r\\n  padding-left: 0;\\r\\n  margin-left: 2.14285714em;\\r\\n  list-style-type: none;\\r\\n}\\r\\n.wvs-ul > li {\\r\\n  position: relative;\\r\\n}\\r\\n.wvs-li {\\r\\n  position: absolute;\\r\\n  left: -2.14285714em;\\r\\n  width: 2.14285714em;\\r\\n  top: 0.14285714em;\\r\\n  text-align: center;\\r\\n}\\r\\n.wvs-li.wvs-lg {\\r\\n  left: -1.85714286em;\\r\\n}\\r\\n.wvs-border {\\r\\n  padding: .2em .25em .15em;\\r\\n  border: solid 0.08em #eeeeee;\\r\\n  border-radius: .1em;\\r\\n}\\r\\n.wvs-pull-left {\\r\\n  float: left;\\r\\n}\\r\\n.wvs-pull-right {\\r\\n  float: right;\\r\\n}\\r\\n.wvs.wvs-pull-left {\\r\\n  margin-right: .3em;\\r\\n}\\r\\n.wvs.wvs-pull-right {\\r\\n  margin-left: .3em;\\r\\n}\\r\\n.pull-right {\\r\\n  float: right;\\r\\n}\\r\\n.pull-left {\\r\\n  float: left;\\r\\n}\\r\\n.wvs.pull-left {\\r\\n  margin-right: .3em;\\r\\n}\\r\\n.wvs.pull-right {\\r\\n  margin-left: .3em;\\r\\n}\\r\\n.wvs-spin {\\r\\n  -webkit-animation: wvs-spin 2s infinite linear;\\r\\n  animation: wvs-spin 2s infinite linear;\\r\\n}\\r\\n.wvs-pulse {\\r\\n  -webkit-animation: wvs-spin 1s infinite steps(8);\\r\\n  animation: wvs-spin 1s infinite steps(8);\\r\\n}\\r\\n.wvs-rotate-90 {\\r\\n  -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";\\r\\n  -webkit-transform: rotate(90deg);\\r\\n  -ms-transform: rotate(90deg);\\r\\n  transform: rotate(90deg);\\r\\n}\\r\\n.wvs-rotate-180 {\\r\\n  -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";\\r\\n  -webkit-transform: rotate(180deg);\\r\\n  -ms-transform: rotate(180deg);\\r\\n  transform: rotate(180deg);\\r\\n}\\r\\n.wvs-rotate-270 {\\r\\n  -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";\\r\\n  -webkit-transform: rotate(270deg);\\r\\n  -ms-transform: rotate(270deg);\\r\\n  transform: rotate(270deg);\\r\\n}\\r\\n.wvs-flip-horizontal {\\r\\n  -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";\\r\\n  -webkit-transform: scale(-1, 1);\\r\\n  -ms-transform: scale(-1, 1);\\r\\n  transform: scale(-1, 1);\\r\\n}\\r\\n.wvs-flip-vertical {\\r\\n  -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\r\\n  -webkit-transform: scale(1, -1);\\r\\n  -ms-transform: scale(1, -1);\\r\\n  transform: scale(1, -1);\\r\\n}\\r\\n:root .wvs-rotate-90 {\\r\\n  filter: none;\\r\\n}\\r\\n:root .wvs-rotate-180 {\\r\\n  filter: none;\\r\\n}\\r\\n:root .wvs-rotate-270 {\\r\\n  filter: none;\\r\\n}\\r\\n:root .wvs-flip-horizontal {\\r\\n  filter: none;\\r\\n}\\r\\n:root .wvs-flip-vertical {\\r\\n  filter: none;\\r\\n}\\r\\n.wvs-stack {\\r\\n  position: relative;\\r\\n  display: inline-block;\\r\\n  width: 2em;\\r\\n  height: 2em;\\r\\n  line-height: 2em;\\r\\n  vertical-align: middle;\\r\\n}\\r\\n.wvs-stack-1x {\\r\\n  position: absolute;\\r\\n  left: 0;\\r\\n  width: 100%;\\r\\n  text-align: center;\\r\\n  line-height: inherit;\\r\\n}\\r\\n.wvs-stack-2x {\\r\\n  position: absolute;\\r\\n  left: 0;\\r\\n  width: 100%;\\r\\n  text-align: center;\\r\\n  font-size: 2em;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*!\r\n * ui-select\r\n * http://github.com/angular-ui/ui-select\r\n * Version: 0.19.7 - 2017-04-15T14:28:36.790Z\r\n * License: MIT\r\n */\r\n\r\n\r\n/* Style when highlighting a search. */\r\n.ui-select-highlight {\r\n  font-weight: bold;\r\n}\r\n\r\n.ui-select-offscreen {\r\n  clip: rect(0 0 0 0) !important;\r\n  width: 1px !important;\r\n  height: 1px !important;\r\n  border: 0 !important;\r\n  margin: 0 !important;\r\n  padding: 0 !important;\r\n  overflow: hidden !important;\r\n  position: absolute !important;\r\n  outline: 0 !important;\r\n  left: 0px !important;\r\n  top: 0px !important;\r\n}\r\n\r\n\r\n.ui-select-choices-row:hover {\r\n  background-color: #f5f5f5;\r\n}\r\n\r\n/* Select2 theme */\r\n\r\n/* Mark invalid Select2 */\r\n.ng-dirty.ng-invalid > a.select2-choice {\r\n    border-color: #D44950;\r\n}\r\n\r\n.select2-result-single {\r\n  padding-left: 0;\r\n}\r\n\r\n.select2-locked > .select2-search-choice-close{\r\n  display:none;\r\n}\r\n\r\n.select-locked > .ui-select-match-close{\r\n    display:none;\r\n}\r\n\r\nbody > .select2-container.open {\r\n  z-index: 9999; /* The z-index Select2 applies to the select2-drop */\r\n}\r\n\r\n/* Handle up direction Select2 */\r\n.ui-select-container[theme=\"select2\"].direction-up .ui-select-match,\r\n.ui-select-container.select2.direction-up .ui-select-match {\r\n    border-radius: 4px; /* FIXME hardcoded value :-/ */\r\n    border-top-left-radius: 0;\r\n    border-top-right-radius: 0;\r\n}\r\n.ui-select-container[theme=\"select2\"].direction-up .ui-select-dropdown,\r\n.ui-select-container.select2.direction-up .ui-select-dropdown {\r\n    border-radius: 4px; /* FIXME hardcoded value :-/ */\r\n    border-bottom-left-radius: 0;\r\n    border-bottom-right-radius: 0;\r\n\r\n    border-top-width: 1px;  /* FIXME hardcoded value :-/ */\r\n    border-top-style: solid;\r\n\r\n    box-shadow: 0 -4px 8px rgba(0, 0, 0, 0.25);\r\n\r\n    margin-top: -4px; /* FIXME hardcoded value :-/ */\r\n}\r\n.ui-select-container[theme=\"select2\"].direction-up .ui-select-dropdown .select2-search,\r\n.ui-select-container.select2.direction-up .ui-select-dropdown .select2-search {\r\n    margin-top: 4px; /* FIXME hardcoded value :-/ */\r\n}\r\n.ui-select-container[theme=\"select2\"].direction-up.select2-dropdown-open .ui-select-match,\r\n.ui-select-container.select2.direction-up.select2-dropdown-open .ui-select-match {\r\n    border-bottom-color: #5897fb;\r\n}\r\n\r\n.ui-select-container[theme=\"select2\"] .ui-select-dropdown .ui-select-search-hidden,\r\n.ui-select-container[theme=\"select2\"] .ui-select-dropdown .ui-select-search-hidden input{\r\n    opacity: 0;\r\n    height: 0;\r\n    min-height: 0;\r\n    padding: 0;\r\n    margin: 0;\r\n    border:0;\r\n}\r\n\r\n/* Selectize theme */\r\n\r\n/* Helper class to show styles when focus */\r\n.selectize-input.selectize-focus{\r\n  border-color: #007FBB !important;\r\n}\r\n\r\n/* Fix input width for Selectize theme */\r\n.selectize-control.single > .selectize-input > input {\r\n  width: 100%;\r\n}\r\n\r\n/* Fix line break when there's at least one item selected with the Selectize theme */\r\n.selectize-control.multi > .selectize-input > input {\r\n  margin: 0 !important;\r\n}\r\n\r\n/* Fix dropdown width for Selectize theme */\r\n.selectize-control > .selectize-dropdown {\r\n  width: 100%;\r\n}\r\n\r\n/* Mark invalid Selectize */\r\n.ng-dirty.ng-invalid > div.selectize-input {\r\n    border-color: #D44950;\r\n}\r\n\r\n/* Handle up direction Selectize */\r\n.ui-select-container[theme=\"selectize\"].direction-up .ui-select-dropdown {\r\n    box-shadow: 0 -4px 8px rgba(0, 0, 0, 0.25);\r\n    margin-top: -2px; /* FIXME hardcoded value :-/ */\r\n}\r\n\r\n.ui-select-container[theme=\"selectize\"] input.ui-select-search-hidden{\r\n    opacity: 0;\r\n    height: 0;\r\n    min-height: 0;\r\n    padding: 0;\r\n    margin: 0;\r\n    border:0;\r\n    width: 0;\r\n}\r\n\r\n/* Bootstrap theme */\r\n\r\n/* Helper class to show styles when focus */\r\n.btn-default-focus {\r\n  color: #333;\r\n  background-color: #EBEBEB;\r\n  border-color: #ADADAD;\r\n  text-decoration: none;\r\n  outline: 5px auto -webkit-focus-ring-color;\r\n  outline-offset: -2px;\r\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\r\n}\r\n\r\n.ui-select-bootstrap .ui-select-toggle {\r\n  position: relative;\r\n}\r\n\r\n.ui-select-bootstrap .ui-select-toggle > .caret {\r\n  position: absolute;\r\n  height: 10px;\r\n  top: 50%;\r\n  right: 10px;\r\n  margin-top: -2px;\r\n}\r\n\r\n/* Fix Bootstrap dropdown position when inside a input-group */\r\n.input-group > .ui-select-bootstrap.dropdown {\r\n  /* Instead of relative */\r\n  position: static;\r\n}\r\n\r\n.input-group > .ui-select-bootstrap > input.ui-select-search.form-control {\r\n  border-radius: 4px; /* FIXME hardcoded value :-/ */\r\n  border-top-right-radius: 0;\r\n  border-bottom-right-radius: 0;\r\n}\r\n.input-group > .ui-select-bootstrap > input.ui-select-search.form-control.direction-up {\r\n  border-radius: 4px !important; /* FIXME hardcoded value :-/ */\r\n  border-top-right-radius: 0 !important;\r\n  border-bottom-right-radius: 0 !important;\r\n}\r\n\r\n.ui-select-bootstrap .ui-select-search-hidden{\r\n    opacity: 0;\r\n    height: 0;\r\n    min-height: 0;\r\n    padding: 0;\r\n    margin: 0;\r\n    border:0;\r\n}\r\n\r\n.ui-select-bootstrap > .ui-select-match > .btn{\r\n  /* Instead of center because of .btn */\r\n  text-align: left !important;\r\n}\r\n\r\n.ui-select-bootstrap > .ui-select-match > .caret {\r\n  position: absolute;\r\n  top: 45%;\r\n  right: 15px;\r\n}\r\n\r\n/* See Scrollable Menu with Bootstrap 3 http://stackoverflow.com/questions/19227496 */\r\n.ui-select-bootstrap > .ui-select-choices ,.ui-select-bootstrap > .ui-select-no-choice {\r\n  width: 100%;\r\n  height: auto;\r\n  max-height: 200px;\r\n  overflow-x: hidden;\r\n  margin-top: -1px;\r\n}\r\n\r\nbody > .ui-select-bootstrap.open {\r\n  z-index: 1000; /* Standard Bootstrap dropdown z-index */\r\n}\r\n\r\n.ui-select-multiple.ui-select-bootstrap {\r\n  height: auto;\r\n  padding: 3px 3px 0 3px;\r\n}\r\n\r\n.ui-select-multiple.ui-select-bootstrap input.ui-select-search {\r\n  background-color: transparent !important; /* To prevent double background when disabled */\r\n  border: none;\r\n  outline: none;\r\n  height: 1.666666em;\r\n  margin-bottom: 3px;\r\n}\r\n\r\n.ui-select-multiple.ui-select-bootstrap .ui-select-match .close {\r\n  font-size: 1.6em;\r\n  line-height: 0.75;\r\n}\r\n\r\n.ui-select-multiple.ui-select-bootstrap .ui-select-match-item {\r\n  outline: 0;\r\n  margin: 0 3px 3px 0;\r\n}\r\n\r\n.ui-select-multiple .ui-select-match-item {\r\n  position: relative;\r\n}\r\n\r\n.ui-select-multiple .ui-select-match-item.dropping .ui-select-match-close {\r\n  pointer-events: none;\r\n}\r\n\r\n.ui-select-multiple:hover .ui-select-match-item.dropping-before:before {\r\n  content: \"\";\r\n  position: absolute;\r\n  top: 0;\r\n  right: 100%;\r\n  height: 100%;\r\n  margin-right: 2px;\r\n  border-left: 1px solid #428bca;\r\n}\r\n\r\n.ui-select-multiple:hover .ui-select-match-item.dropping-after:after {\r\n  content: \"\";\r\n  position: absolute;\r\n  top: 0;\r\n  left: 100%;\r\n  height: 100%;\r\n  margin-left: 2px;\r\n  border-right: 1px solid #428bca;\r\n}\r\n\r\n.ui-select-bootstrap .ui-select-choices-row>span {\r\n    cursor: pointer;\r\n    display: block;\r\n    padding: 3px 20px;\r\n    clear: both;\r\n    font-weight: 400;\r\n    line-height: 1.42857143;\r\n    color: #333;\r\n    white-space: nowrap;\r\n}\r\n\r\n.ui-select-bootstrap .ui-select-choices-row>span:hover, .ui-select-bootstrap .ui-select-choices-row>span:focus {\r\n    text-decoration: none;\r\n    color: #262626;\r\n    background-color: #f5f5f5;\r\n}\r\n\r\n.ui-select-bootstrap .ui-select-choices-row.active>span {\r\n    color: #fff;\r\n    text-decoration: none;\r\n    outline: 0;\r\n    background-color: #428bca;\r\n}\r\n\r\n.ui-select-bootstrap .ui-select-choices-row.disabled>span,\r\n.ui-select-bootstrap .ui-select-choices-row.active.disabled>span {\r\n    color: #777;\r\n    cursor: not-allowed;\r\n    background-color: #fff;\r\n}\r\n\r\n/* fix hide/show angular animation */\r\n.ui-select-match.ng-hide-add,\r\n.ui-select-search.ng-hide-add {\r\n    display: none !important;\r\n}\r\n\r\n/* Mark invalid Bootstrap */\r\n.ui-select-bootstrap.ng-dirty.ng-invalid > button.btn.ui-select-match {\r\n    border-color: #D44950;\r\n}\r\n\r\n/* Handle up direction Bootstrap */\r\n.ui-select-container[theme=\"bootstrap\"].direction-up .ui-select-dropdown {\r\n    box-shadow: 0 -4px 8px rgba(0, 0, 0, 0.25);\r\n}\r\n\r\n.ui-select-bootstrap .ui-select-match-text {\r\n    width: 100%;\r\n    padding-right: 1em;\r\n}\r\n.ui-select-bootstrap .ui-select-match-text span {\r\n    display: inline-block;\r\n    width: 100%;\r\n    overflow: hidden;\r\n}\r\n.ui-select-bootstrap .ui-select-toggle > a.btn {\r\n  position: absolute;\r\n  height: 10px;\r\n  right: 10px;\r\n  margin-top: -2px;\r\n}\r\n\r\n/* Spinner */\r\n.ui-select-refreshing.glyphicon {\r\n    position: absolute;\r\n    right: 0;\r\n    padding: 8px 27px;\r\n }\r\n\r\n@-webkit-keyframes ui-select-spin {\r\n  0% {\r\n    -webkit-transform: rotate(0deg);\r\n    transform: rotate(0deg);\r\n  }\r\n  100% {\r\n    -webkit-transform: rotate(359deg);\r\n    transform: rotate(359deg);\r\n  }\r\n}\r\n@keyframes ui-select-spin {\r\n  0% {\r\n    -webkit-transform: rotate(0deg);\r\n    transform: rotate(0deg);\r\n  }\r\n  100% {\r\n    -webkit-transform: rotate(359deg);\r\n    transform: rotate(359deg);\r\n  }\r\n}\r\n\r\n.ui-select-spin {\r\n  -webkit-animation: ui-select-spin 2s infinite linear;\r\n  animation: ui-select-spin 2s infinite linear;\r\n}\r\n\r\n.ui-select-refreshing.ng-animate {\r\n  -webkit-animation: none 0s;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./libs/ui-select/select.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"/*!\\r\\n * ui-select\\r\\n * http://github.com/angular-ui/ui-select\\r\\n * Version: 0.19.7 - 2017-04-15T14:28:36.790Z\\r\\n * License: MIT\\r\\n */\\r\\n\\r\\n\\r\\n/* Style when highlighting a search. */\\r\\n.ui-select-highlight {\\r\\n  font-weight: bold;\\r\\n}\\r\\n\\r\\n.ui-select-offscreen {\\r\\n  clip: rect(0 0 0 0) !important;\\r\\n  width: 1px !important;\\r\\n  height: 1px !important;\\r\\n  border: 0 !important;\\r\\n  margin: 0 !important;\\r\\n  padding: 0 !important;\\r\\n  overflow: hidden !important;\\r\\n  position: absolute !important;\\r\\n  outline: 0 !important;\\r\\n  left: 0px !important;\\r\\n  top: 0px !important;\\r\\n}\\r\\n\\r\\n\\r\\n.ui-select-choices-row:hover {\\r\\n  background-color: #f5f5f5;\\r\\n}\\r\\n\\r\\n/* Select2 theme */\\r\\n\\r\\n/* Mark invalid Select2 */\\r\\n.ng-dirty.ng-invalid > a.select2-choice {\\r\\n    border-color: #D44950;\\r\\n}\\r\\n\\r\\n.select2-result-single {\\r\\n  padding-left: 0;\\r\\n}\\r\\n\\r\\n.select2-locked > .select2-search-choice-close{\\r\\n  display:none;\\r\\n}\\r\\n\\r\\n.select-locked > .ui-select-match-close{\\r\\n    display:none;\\r\\n}\\r\\n\\r\\nbody > .select2-container.open {\\r\\n  z-index: 9999; /* The z-index Select2 applies to the select2-drop */\\r\\n}\\r\\n\\r\\n/* Handle up direction Select2 */\\r\\n.ui-select-container[theme=\\\"select2\\\"].direction-up .ui-select-match,\\r\\n.ui-select-container.select2.direction-up .ui-select-match {\\r\\n    border-radius: 4px; /* FIXME hardcoded value :-/ */\\r\\n    border-top-left-radius: 0;\\r\\n    border-top-right-radius: 0;\\r\\n}\\r\\n.ui-select-container[theme=\\\"select2\\\"].direction-up .ui-select-dropdown,\\r\\n.ui-select-container.select2.direction-up .ui-select-dropdown {\\r\\n    border-radius: 4px; /* FIXME hardcoded value :-/ */\\r\\n    border-bottom-left-radius: 0;\\r\\n    border-bottom-right-radius: 0;\\r\\n\\r\\n    border-top-width: 1px;  /* FIXME hardcoded value :-/ */\\r\\n    border-top-style: solid;\\r\\n\\r\\n    box-shadow: 0 -4px 8px rgba(0, 0, 0, 0.25);\\r\\n\\r\\n    margin-top: -4px; /* FIXME hardcoded value :-/ */\\r\\n}\\r\\n.ui-select-container[theme=\\\"select2\\\"].direction-up .ui-select-dropdown .select2-search,\\r\\n.ui-select-container.select2.direction-up .ui-select-dropdown .select2-search {\\r\\n    margin-top: 4px; /* FIXME hardcoded value :-/ */\\r\\n}\\r\\n.ui-select-container[theme=\\\"select2\\\"].direction-up.select2-dropdown-open .ui-select-match,\\r\\n.ui-select-container.select2.direction-up.select2-dropdown-open .ui-select-match {\\r\\n    border-bottom-color: #5897fb;\\r\\n}\\r\\n\\r\\n.ui-select-container[theme=\\\"select2\\\"] .ui-select-dropdown .ui-select-search-hidden,\\r\\n.ui-select-container[theme=\\\"select2\\\"] .ui-select-dropdown .ui-select-search-hidden input{\\r\\n    opacity: 0;\\r\\n    height: 0;\\r\\n    min-height: 0;\\r\\n    padding: 0;\\r\\n    margin: 0;\\r\\n    border:0;\\r\\n}\\r\\n\\r\\n/* Selectize theme */\\r\\n\\r\\n/* Helper class to show styles when focus */\\r\\n.selectize-input.selectize-focus{\\r\\n  border-color: #007FBB !important;\\r\\n}\\r\\n\\r\\n/* Fix input width for Selectize theme */\\r\\n.selectize-control.single > .selectize-input > input {\\r\\n  width: 100%;\\r\\n}\\r\\n\\r\\n/* Fix line break when there's at least one item selected with the Selectize theme */\\r\\n.selectize-control.multi > .selectize-input > input {\\r\\n  margin: 0 !important;\\r\\n}\\r\\n\\r\\n/* Fix dropdown width for Selectize theme */\\r\\n.selectize-control > .selectize-dropdown {\\r\\n  width: 100%;\\r\\n}\\r\\n\\r\\n/* Mark invalid Selectize */\\r\\n.ng-dirty.ng-invalid > div.selectize-input {\\r\\n    border-color: #D44950;\\r\\n}\\r\\n\\r\\n/* Handle up direction Selectize */\\r\\n.ui-select-container[theme=\\\"selectize\\\"].direction-up .ui-select-dropdown {\\r\\n    box-shadow: 0 -4px 8px rgba(0, 0, 0, 0.25);\\r\\n    margin-top: -2px; /* FIXME hardcoded value :-/ */\\r\\n}\\r\\n\\r\\n.ui-select-container[theme=\\\"selectize\\\"] input.ui-select-search-hidden{\\r\\n    opacity: 0;\\r\\n    height: 0;\\r\\n    min-height: 0;\\r\\n    padding: 0;\\r\\n    margin: 0;\\r\\n    border:0;\\r\\n    width: 0;\\r\\n}\\r\\n\\r\\n/* Bootstrap theme */\\r\\n\\r\\n/* Helper class to show styles when focus */\\r\\n.btn-default-focus {\\r\\n  color: #333;\\r\\n  background-color: #EBEBEB;\\r\\n  border-color: #ADADAD;\\r\\n  text-decoration: none;\\r\\n  outline: 5px auto -webkit-focus-ring-color;\\r\\n  outline-offset: -2px;\\r\\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\\r\\n}\\r\\n\\r\\n.ui-select-bootstrap .ui-select-toggle {\\r\\n  position: relative;\\r\\n}\\r\\n\\r\\n.ui-select-bootstrap .ui-select-toggle > .caret {\\r\\n  position: absolute;\\r\\n  height: 10px;\\r\\n  top: 50%;\\r\\n  right: 10px;\\r\\n  margin-top: -2px;\\r\\n}\\r\\n\\r\\n/* Fix Bootstrap dropdown position when inside a input-group */\\r\\n.input-group > .ui-select-bootstrap.dropdown {\\r\\n  /* Instead of relative */\\r\\n  position: static;\\r\\n}\\r\\n\\r\\n.input-group > .ui-select-bootstrap > input.ui-select-search.form-control {\\r\\n  border-radius: 4px; /* FIXME hardcoded value :-/ */\\r\\n  border-top-right-radius: 0;\\r\\n  border-bottom-right-radius: 0;\\r\\n}\\r\\n.input-group > .ui-select-bootstrap > input.ui-select-search.form-control.direction-up {\\r\\n  border-radius: 4px !important; /* FIXME hardcoded value :-/ */\\r\\n  border-top-right-radius: 0 !important;\\r\\n  border-bottom-right-radius: 0 !important;\\r\\n}\\r\\n\\r\\n.ui-select-bootstrap .ui-select-search-hidden{\\r\\n    opacity: 0;\\r\\n    height: 0;\\r\\n    min-height: 0;\\r\\n    padding: 0;\\r\\n    margin: 0;\\r\\n    border:0;\\r\\n}\\r\\n\\r\\n.ui-select-bootstrap > .ui-select-match > .btn{\\r\\n  /* Instead of center because of .btn */\\r\\n  text-align: left !important;\\r\\n}\\r\\n\\r\\n.ui-select-bootstrap > .ui-select-match > .caret {\\r\\n  position: absolute;\\r\\n  top: 45%;\\r\\n  right: 15px;\\r\\n}\\r\\n\\r\\n/* See Scrollable Menu with Bootstrap 3 http://stackoverflow.com/questions/19227496 */\\r\\n.ui-select-bootstrap > .ui-select-choices ,.ui-select-bootstrap > .ui-select-no-choice {\\r\\n  width: 100%;\\r\\n  height: auto;\\r\\n  max-height: 200px;\\r\\n  overflow-x: hidden;\\r\\n  margin-top: -1px;\\r\\n}\\r\\n\\r\\nbody > .ui-select-bootstrap.open {\\r\\n  z-index: 1000; /* Standard Bootstrap dropdown z-index */\\r\\n}\\r\\n\\r\\n.ui-select-multiple.ui-select-bootstrap {\\r\\n  height: auto;\\r\\n  padding: 3px 3px 0 3px;\\r\\n}\\r\\n\\r\\n.ui-select-multiple.ui-select-bootstrap input.ui-select-search {\\r\\n  background-color: transparent !important; /* To prevent double background when disabled */\\r\\n  border: none;\\r\\n  outline: none;\\r\\n  height: 1.666666em;\\r\\n  margin-bottom: 3px;\\r\\n}\\r\\n\\r\\n.ui-select-multiple.ui-select-bootstrap .ui-select-match .close {\\r\\n  font-size: 1.6em;\\r\\n  line-height: 0.75;\\r\\n}\\r\\n\\r\\n.ui-select-multiple.ui-select-bootstrap .ui-select-match-item {\\r\\n  outline: 0;\\r\\n  margin: 0 3px 3px 0;\\r\\n}\\r\\n\\r\\n.ui-select-multiple .ui-select-match-item {\\r\\n  position: relative;\\r\\n}\\r\\n\\r\\n.ui-select-multiple .ui-select-match-item.dropping .ui-select-match-close {\\r\\n  pointer-events: none;\\r\\n}\\r\\n\\r\\n.ui-select-multiple:hover .ui-select-match-item.dropping-before:before {\\r\\n  content: \\\"\\\";\\r\\n  position: absolute;\\r\\n  top: 0;\\r\\n  right: 100%;\\r\\n  height: 100%;\\r\\n  margin-right: 2px;\\r\\n  border-left: 1px solid #428bca;\\r\\n}\\r\\n\\r\\n.ui-select-multiple:hover .ui-select-match-item.dropping-after:after {\\r\\n  content: \\\"\\\";\\r\\n  position: absolute;\\r\\n  top: 0;\\r\\n  left: 100%;\\r\\n  height: 100%;\\r\\n  margin-left: 2px;\\r\\n  border-right: 1px solid #428bca;\\r\\n}\\r\\n\\r\\n.ui-select-bootstrap .ui-select-choices-row>span {\\r\\n    cursor: pointer;\\r\\n    display: block;\\r\\n    padding: 3px 20px;\\r\\n    clear: both;\\r\\n    font-weight: 400;\\r\\n    line-height: 1.42857143;\\r\\n    color: #333;\\r\\n    white-space: nowrap;\\r\\n}\\r\\n\\r\\n.ui-select-bootstrap .ui-select-choices-row>span:hover, .ui-select-bootstrap .ui-select-choices-row>span:focus {\\r\\n    text-decoration: none;\\r\\n    color: #262626;\\r\\n    background-color: #f5f5f5;\\r\\n}\\r\\n\\r\\n.ui-select-bootstrap .ui-select-choices-row.active>span {\\r\\n    color: #fff;\\r\\n    text-decoration: none;\\r\\n    outline: 0;\\r\\n    background-color: #428bca;\\r\\n}\\r\\n\\r\\n.ui-select-bootstrap .ui-select-choices-row.disabled>span,\\r\\n.ui-select-bootstrap .ui-select-choices-row.active.disabled>span {\\r\\n    color: #777;\\r\\n    cursor: not-allowed;\\r\\n    background-color: #fff;\\r\\n}\\r\\n\\r\\n/* fix hide/show angular animation */\\r\\n.ui-select-match.ng-hide-add,\\r\\n.ui-select-search.ng-hide-add {\\r\\n    display: none !important;\\r\\n}\\r\\n\\r\\n/* Mark invalid Bootstrap */\\r\\n.ui-select-bootstrap.ng-dirty.ng-invalid > button.btn.ui-select-match {\\r\\n    border-color: #D44950;\\r\\n}\\r\\n\\r\\n/* Handle up direction Bootstrap */\\r\\n.ui-select-container[theme=\\\"bootstrap\\\"].direction-up .ui-select-dropdown {\\r\\n    box-shadow: 0 -4px 8px rgba(0, 0, 0, 0.25);\\r\\n}\\r\\n\\r\\n.ui-select-bootstrap .ui-select-match-text {\\r\\n    width: 100%;\\r\\n    padding-right: 1em;\\r\\n}\\r\\n.ui-select-bootstrap .ui-select-match-text span {\\r\\n    display: inline-block;\\r\\n    width: 100%;\\r\\n    overflow: hidden;\\r\\n}\\r\\n.ui-select-bootstrap .ui-select-toggle > a.btn {\\r\\n  position: absolute;\\r\\n  height: 10px;\\r\\n  right: 10px;\\r\\n  margin-top: -2px;\\r\\n}\\r\\n\\r\\n/* Spinner */\\r\\n.ui-select-refreshing.glyphicon {\\r\\n    position: absolute;\\r\\n    right: 0;\\r\\n    padding: 8px 27px;\\r\\n }\\r\\n\\r\\n@-webkit-keyframes ui-select-spin {\\r\\n  0% {\\r\\n    -webkit-transform: rotate(0deg);\\r\\n    transform: rotate(0deg);\\r\\n  }\\r\\n  100% {\\r\\n    -webkit-transform: rotate(359deg);\\r\\n    transform: rotate(359deg);\\r\\n  }\\r\\n}\\r\\n@keyframes ui-select-spin {\\r\\n  0% {\\r\\n    -webkit-transform: rotate(0deg);\\r\\n    transform: rotate(0deg);\\r\\n  }\\r\\n  100% {\\r\\n    -webkit-transform: rotate(359deg);\\r\\n    transform: rotate(359deg);\\r\\n  }\\r\\n}\\r\\n\\r\\n.ui-select-spin {\\r\\n  -webkit-animation: ui-select-spin 2s infinite linear;\\r\\n  animation: ui-select-spin 2s infinite linear;\\r\\n}\\r\\n\\r\\n.ui-select-refreshing.ng-animate {\\r\\n  -webkit-animation: none 0s;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","//----------------------\r\n// \r\n//     Generated using the NSwag toolchain v14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\r\n// \r\n//----------------------\r\n\r\n/* tslint:disable */\r\n/* eslint-disable */\r\n// ReSharper disable InconsistentNaming\r\n\r\nexport class AccountClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    /**\r\n     * Logs the user in to the system\r\n     */\r\n    login(model: LoginRequestModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Account/Login\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processLogin(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processLogin(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processLogin(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as LoginResultModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Signs the user out and expires their session cookie\r\n     */\r\n    logoff(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Account/Logoff\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processLogoff(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processLogoff(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processLogoff(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Changes the current user's password.\r\n     */\r\n    changePassword(model: ChangePasswordViewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Account/ChangePassword\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processChangePassword(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processChangePassword(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processChangePassword(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Resets a user's password and sends them a new, temporary password, if they exist.\r\n    A success is returned no matter the result\r\n     */\r\n    forgotPassword(forgotPasswordModel: ForgotPasswordViewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Account/ForgotPassword\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(forgotPasswordModel);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processForgotPassword(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processForgotPassword(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processForgotPassword(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    resetPassword(model: ResetPasswordViewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Account/ResetPassword\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processResetPassword(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processResetPassword(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processResetPassword(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    confirmAccount(userid?: number | null | undefined, code?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Account/ConfirmAccount?\";\r\n        if (userid !== undefined && userid !== null)\r\n            url_ += \"userid=\" + encodeURIComponent(\"\" + userid) + \"&\";\r\n        if (code !== undefined && code !== null)\r\n            url_ += \"code=\" + encodeURIComponent(\"\" + code) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processConfirmAccount(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processConfirmAccount(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processConfirmAccount(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ConfirmAccountResult;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Return all info needed for SmartPortal app to function.\r\n    * Account and access metadata\r\n    * Form structure metadata\r\n    * Lookup value dictionaries\r\n    TODO: shrink this a lot. return much much less up-front data. triage refactoring of payload chunks by db time and by json payload size. frontend should be caching metadata info and requesting bits at a time. ~ ben\r\n     * @return anonymous object with relevant information\r\n     */\r\n    get(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Account\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGet(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGet(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGet(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AccountInfoViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Action that exists to simply refresh a user's session by way of server request\r\n     * @return Empty OK 200 response\r\n     */\r\n    keepAlive(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Account/KeepAlive\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processKeepAlive(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processKeepAlive(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processKeepAlive(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class AdminToolWorkflowClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    /**\r\n     * Validate Status Workflow\r\n    returns StatusWorkflowViewModel\r\n     */\r\n    validateStatusWorkflow(model: StatusControllerWorkflowViewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/AdminToolWorkflow/ValidateStatusWorkflow\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processValidateStatusWorkflow(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processValidateStatusWorkflow(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processValidateStatusWorkflow(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as StatusControllerWorkflowViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Apply Status Workflow\r\n    returns StatusWorkflowViewModel\r\n     */\r\n    applyStatusWorkflow(model: StatusControllerWorkflowViewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/AdminToolWorkflow/ApplyStatusWorkflow\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processApplyStatusWorkflow(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processApplyStatusWorkflow(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processApplyStatusWorkflow(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as StatusControllerWorkflowViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Validate Screening Bypass Workflow\r\n    returns ScreeningBypassWorkflowViewModel\r\n     */\r\n    validateScreeningBypassWorkflow(model: ScreeningBypassWorkflowViewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/AdminToolWorkflow/ValidateScreeningBypassWorkflow\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processValidateScreeningBypassWorkflow(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processValidateScreeningBypassWorkflow(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processValidateScreeningBypassWorkflow(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ScreeningBypassWorkflowViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Apply Status Workflow\r\n    returns StatusWorkflowViewModel\r\n     */\r\n    applyScreeningBypassWorkflow(model: ScreeningBypassWorkflowViewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/AdminToolWorkflow/ApplyScreeningBypassWorkflow\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processApplyScreeningBypassWorkflow(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processApplyScreeningBypassWorkflow(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processApplyScreeningBypassWorkflow(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ScreeningBypassWorkflowViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class ApplicationClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    queryAppMapData(appIds?: string[] | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/QueryAppMapData?\";\r\n        if (appIds !== undefined && appIds !== null)\r\n            appIds && appIds.forEach(item => { url_ += \"appIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processQueryAppMapData(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processQueryAppMapData(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processQueryAppMapData(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    queryPublicAppMapData(appIds?: string[] | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/QueryPublicAppMapData?\";\r\n        if (appIds !== undefined && appIds !== null)\r\n            appIds && appIds.forEach(item => { url_ += \"appIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processQueryPublicAppMapData(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processQueryPublicAppMapData(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processQueryPublicAppMapData(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    previousSubmittedApplication(id?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/PreviousSubmittedApplication?\";\r\n        if (id !== undefined && id !== null)\r\n            url_ += \"id=\" + encodeURIComponent(\"\" + id) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processPreviousSubmittedApplication(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processPreviousSubmittedApplication(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processPreviousSubmittedApplication(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    previousAuditedApplication(id?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/PreviousAuditedApplication?\";\r\n        if (id !== undefined && id !== null)\r\n            url_ += \"id=\" + encodeURIComponent(\"\" + id) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processPreviousAuditedApplication(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processPreviousAuditedApplication(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processPreviousAuditedApplication(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    availableNewForms(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/AvailableNewForms\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processAvailableNewForms(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processAvailableNewForms(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processAvailableNewForms(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IFormPoco[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Gets a list of Application Types\r\n     * @param pid (optional) \r\n     */\r\n    getApplicationTypes(pid?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetApplicationTypes?\";\r\n        if (pid === null)\r\n            throw new Error(\"The parameter 'pid' cannot be null.\");\r\n        else if (pid !== undefined)\r\n            url_ += \"pid=\" + encodeURIComponent(\"\" + pid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetApplicationTypes(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetApplicationTypes(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetApplicationTypes(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    hasApplicationsToClone(request: HasApplicationsToCloneRequest): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/HasApplicationsToClone\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(request);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processHasApplicationsToClone(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processHasApplicationsToClone(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processHasApplicationsToClone(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    hasAccess(model: ApplicationAccessModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/HasAccess\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processHasAccess(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processHasAccess(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processHasAccess(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Bypass the cache to get application JSON data via the old method\r\n     */\r\n    getOldUncachedJson(id: string): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetOldUncachedJson/{id}\";\r\n        if (id === undefined || id === null)\r\n            throw new Error(\"The parameter 'id' must be defined.\");\r\n        url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetOldUncachedJson(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetOldUncachedJson(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetOldUncachedJson(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Bypass the cache to get application JSON data via the new method\r\n     */\r\n    getNewUncachedJson(id: string): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetNewUncachedJson/{id}\";\r\n        if (id === undefined || id === null)\r\n            throw new Error(\"The parameter 'id' must be defined.\");\r\n        url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetNewUncachedJson(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetNewUncachedJson(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetNewUncachedJson(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    get(id: string): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/Get/{id}\";\r\n        if (id === undefined || id === null)\r\n            throw new Error(\"The parameter 'id' must be defined.\");\r\n        url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGet(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGet(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGet(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Get whether user has a specific privilege within their org.\r\n     * @param securityAction (optional) \r\n     * @param accessLevel (optional) \r\n     * @param fid (optional) \r\n     * @param ignoreFormIntakeWindow (optional) \r\n     */\r\n    getUserHasGeneralApplicationAccess(securityAction?: SecurityActionIds | undefined, accessLevel?: SecurityAccessLevelIds | undefined, fid?: FormIds | null | undefined, ignoreFormIntakeWindow?: boolean | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetUserHasGeneralApplicationAccess?\";\r\n        if (securityAction === null)\r\n            throw new Error(\"The parameter 'securityAction' cannot be null.\");\r\n        else if (securityAction !== undefined)\r\n            url_ += \"securityAction=\" + encodeURIComponent(\"\" + securityAction) + \"&\";\r\n        if (accessLevel === null)\r\n            throw new Error(\"The parameter 'accessLevel' cannot be null.\");\r\n        else if (accessLevel !== undefined)\r\n            url_ += \"accessLevel=\" + encodeURIComponent(\"\" + accessLevel) + \"&\";\r\n        if (fid !== undefined && fid !== null)\r\n            url_ += \"fid=\" + encodeURIComponent(\"\" + fid) + \"&\";\r\n        if (ignoreFormIntakeWindow === null)\r\n            throw new Error(\"The parameter 'ignoreFormIntakeWindow' cannot be null.\");\r\n        else if (ignoreFormIntakeWindow !== undefined)\r\n            url_ += \"ignoreFormIntakeWindow=\" + encodeURIComponent(\"\" + ignoreFormIntakeWindow) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetUserHasGeneralApplicationAccess(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetUserHasGeneralApplicationAccess(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetUserHasGeneralApplicationAccess(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Get whether user has a specific privilege within a target org (like an app's org, not the user's org).\r\n     * @param securityAction (optional) \r\n     * @param accessLevel (optional) \r\n     * @param fid (optional) \r\n     * @param orgId (optional) \r\n     * @param ignoreFormIntakeWindow (optional) \r\n     */\r\n    getUserHasGeneralApplicationAccessByOrg(securityAction?: SecurityActionIds | undefined, accessLevel?: SecurityAccessLevelIds | undefined, fid?: FormIds | null | undefined, orgId?: number | undefined, ignoreFormIntakeWindow?: boolean | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetUserHasGeneralApplicationAccessByOrg?\";\r\n        if (securityAction === null)\r\n            throw new Error(\"The parameter 'securityAction' cannot be null.\");\r\n        else if (securityAction !== undefined)\r\n            url_ += \"securityAction=\" + encodeURIComponent(\"\" + securityAction) + \"&\";\r\n        if (accessLevel === null)\r\n            throw new Error(\"The parameter 'accessLevel' cannot be null.\");\r\n        else if (accessLevel !== undefined)\r\n            url_ += \"accessLevel=\" + encodeURIComponent(\"\" + accessLevel) + \"&\";\r\n        if (fid !== undefined && fid !== null)\r\n            url_ += \"fid=\" + encodeURIComponent(\"\" + fid) + \"&\";\r\n        if (orgId === null)\r\n            throw new Error(\"The parameter 'orgId' cannot be null.\");\r\n        else if (orgId !== undefined)\r\n            url_ += \"orgId=\" + encodeURIComponent(\"\" + orgId) + \"&\";\r\n        if (ignoreFormIntakeWindow === null)\r\n            throw new Error(\"The parameter 'ignoreFormIntakeWindow' cannot be null.\");\r\n        else if (ignoreFormIntakeWindow !== undefined)\r\n            url_ += \"ignoreFormIntakeWindow=\" + encodeURIComponent(\"\" + ignoreFormIntakeWindow) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetUserHasGeneralApplicationAccessByOrg(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetUserHasGeneralApplicationAccessByOrg(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetUserHasGeneralApplicationAccessByOrg(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getUserHasRole(roleId?: SecurityRoleIds | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetUserHasRole?\";\r\n        if (roleId === null)\r\n            throw new Error(\"The parameter 'roleId' cannot be null.\");\r\n        else if (roleId !== undefined)\r\n            url_ += \"roleId=\" + encodeURIComponent(\"\" + roleId) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetUserHasRole(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetUserHasRole(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetUserHasRole(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getApplicationInfo(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetApplicationInfo?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetApplicationInfo(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetApplicationInfo(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetApplicationInfo(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationInfo;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getAttachmentMetaData(oid?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetAttachmentMetaData?\";\r\n        if (oid === null)\r\n            throw new Error(\"The parameter 'oid' cannot be null.\");\r\n        else if (oid !== undefined)\r\n            url_ += \"oid=\" + encodeURIComponent(\"\" + oid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetAttachmentMetaData(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetAttachmentMetaData(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetAttachmentMetaData(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AttachmentMetadataViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getPrioritizableForms(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetPrioritizableForms\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetPrioritizableForms(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetPrioritizableForms(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetPrioritizableForms(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PrioritizeFormViewModel[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getSubmissionQueue(fid?: number | undefined, orgid?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetSubmissionQueue?\";\r\n        if (fid === null)\r\n            throw new Error(\"The parameter 'fid' cannot be null.\");\r\n        else if (fid !== undefined)\r\n            url_ += \"fid=\" + encodeURIComponent(\"\" + fid) + \"&\";\r\n        if (orgid === null)\r\n            throw new Error(\"The parameter 'orgid' cannot be null.\");\r\n        else if (orgid !== undefined)\r\n            url_ += \"orgid=\" + encodeURIComponent(\"\" + orgid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetSubmissionQueue(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetSubmissionQueue(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetSubmissionQueue(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PrioritizeApplicationViewModel[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Save a priority order of existing apps.\r\n     */\r\n    prioritizeApplications(models: PrioritizeApplicationViewModel[]): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/PrioritizeApplications\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(models);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processPrioritizeApplications(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processPrioritizeApplications(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processPrioritizeApplications(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ServiceResult;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    clone(model: CloneApplicationViewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/Clone\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processClone(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processClone(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processClone(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Delete an application and all contents, permanently.\r\n     * @param appid (optional) App to delete\r\n     * @return Success message, or 409 Conflict error.\r\n     */\r\n    deleteApplication(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/Delete?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processDeleteApplication(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processDeleteApplication(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processDeleteApplication(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    canDeleteApplication(app: string): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/CanDelete\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(app);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCanDeleteApplication(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCanDeleteApplication(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCanDeleteApplication(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Get count of applications (user can see) per program\r\n     */\r\n    getAppCounts(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetAppCounts\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetAppCounts(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetAppCounts(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetAppCounts(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AppCountViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getPage(request: GridRequest): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetPage\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(request);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetPage(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetPage(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetPage(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as GridResultOfAppGrid;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getPageForCloning(request: GridRequest): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetPageForCloning\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(request);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetPageForCloning(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetPageForCloning(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetPageForCloning(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as GridResultOfAppGrid;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getMapData(filterProps: { [key: string]: any; }): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetMapData\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(filterProps);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetMapData(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetMapData(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetMapData(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getBridgeMapData(filterProps: { [key: string]: any; }): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetBridgeMapData\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(filterProps);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetBridgeMapData(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetBridgeMapData(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetBridgeMapData(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BridgeAppMapViewModel[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * List SGR Pavement applications that exist in the database.\r\n    Populates SGR Pavement dashboard map data.\r\n     */\r\n    getPavementMapData(filterProps: { [key: string]: any; }): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetPavementMapData\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(filterProps);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetPavementMapData(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetPavementMapData(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetPavementMapData(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PavementAppMapViewModel[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Gets Existing Econ Dev Sites for map withne project shape provided buffer\r\n     */\r\n    getExistingSitesMapData(model: GetExistingSitesViewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetExistingSitesMapData\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetExistingSitesMapData(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetExistingSitesMapData(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetExistingSitesMapData(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * @return AppId of next latest app (if revision was deleted, will no longer be on the same app).\r\n     */\r\n    unsubmitApplication(app: string): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/Unsubmit\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(app);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processUnsubmitApplication(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processUnsubmitApplication(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processUnsubmitApplication(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * TODO remove this? legacy unsubmit not supported. new forms should not use ApplicationController.\r\n     */\r\n    canSubmitApplication(app: string): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/CanSubmit\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(app);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCanSubmitApplication(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCanSubmitApplication(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCanSubmitApplication(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Gets a collection of application statuses, in display order, that are applicable to the specified program\r\n     * @param pid (optional) Program ID\r\n     * @return { id, name }\r\n     */\r\n    getStatusDDLOptions(pid?: number | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetStatusDDLOptions?\";\r\n        if (pid !== undefined && pid !== null)\r\n            url_ += \"pid=\" + encodeURIComponent(\"\" + pid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetStatusDDLOptions(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetStatusDDLOptions(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetStatusDDLOptions(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Returns all appids for revisions for application besides the one passed in\r\n     * @param appid (optional) Application ID\r\n     */\r\n    getRevisionsForApp(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetRevisionsForApp?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetRevisionsForApp(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetRevisionsForApp(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetRevisionsForApp(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getPublicApps(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetPublicApps\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetPublicApps(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetPublicApps(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetPublicApps(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Gets the Map data thats available to view in public mode\r\n     */\r\n    getPublicMapData(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetPublicMapData\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetPublicMapData(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetPublicMapData(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetPublicMapData(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    canMarkFunded(app: string): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/CanMarkFunded\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(app);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCanMarkFunded(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCanMarkFunded(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCanMarkFunded(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    markAsFunded(model: FundedApplicationViewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/MarkAsFunded\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processMarkAsFunded(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processMarkAsFunded(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processMarkAsFunded(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    bulkMarkAsFunded(appids: string[]): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/BulkMarkAsFunded\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(appids);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processBulkMarkAsFunded(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processBulkMarkAsFunded(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processBulkMarkAsFunded(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Change review priority of multiple applications\r\n     */\r\n    bulkMarkPriorities(model: BulkPriorityReviewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/BulkMarkPriorities\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processBulkMarkPriorities(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processBulkMarkPriorities(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processBulkMarkPriorities(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    canSeeFundingTool(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/CanSeeFundingTool\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCanSeeFundingTool(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCanSeeFundingTool(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCanSeeFundingTool(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Moves a single application from 'Pending' status to 'Ready For Submission'\r\n     */\r\n    markAsReadyForSubmission(appid: string): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/MarkAsReadyForSubmission\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(appid);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processMarkAsReadyForSubmission(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processMarkAsReadyForSubmission(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processMarkAsReadyForSubmission(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ServiceResult;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Moves a single application from 'Pending' status to 'Ready For Submission'\r\n     */\r\n    unmarkAsReadyForSubmission(appid: string): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/UnmarkAsReadyForSubmission\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(appid);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processUnmarkAsReadyForSubmission(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processUnmarkAsReadyForSubmission(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processUnmarkAsReadyForSubmission(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ServiceResult;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Returns true of all of user's organizations applications are in the 'Ready For Submission' status and user has the 'BulkSubmit' Privilege\r\n     */\r\n    canBulkSubmitApplications(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/CanBulkSubmitApplications\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCanBulkSubmitApplications(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCanBulkSubmitApplications(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCanBulkSubmitApplications(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkSubmitViewModel[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Returns true if atleast one of the  user's organizations applications are in the 'Submitted' status and user has the 'BulkSubmit' Privilege\r\n     */\r\n    canBulkUnsubmitApplications(): ng.IPromise<{ [key: string]: boolean; }> {\r\n        let url_ = this.baseUrl + \"/api/Application/CanBulkUnsubmitApplications\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCanBulkUnsubmitApplications(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCanBulkUnsubmitApplications(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCanBulkUnsubmitApplications(response: any): ng.IPromise<{ [key: string]: boolean; }> {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as { [key: string]: boolean; };\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve<{ [key: string]: boolean; }>(null as any);\r\n    }\r\n\r\n    /**\r\n     * get program attachment type by program id\r\n     * @return list of attachments type related for specific program\r\n     */\r\n    getProgramAttachmentType(pid: number): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/ProgramAttachmentsTypes/{pid}\";\r\n        if (pid === undefined || pid === null)\r\n            throw new Error(\"The parameter 'pid' must be defined.\");\r\n        url_ = url_.replace(\"{pid}\", encodeURIComponent(\"\" + pid));\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetProgramAttachmentType(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetProgramAttachmentType(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetProgramAttachmentType(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Submits all of the SGR forms for an organization\r\n     * @param fid (optional) \r\n     */\r\n    bulkSubmitForms(fid?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/BulkSubmitForms?\";\r\n        if (fid === null)\r\n            throw new Error(\"The parameter 'fid' cannot be null.\");\r\n        else if (fid !== undefined)\r\n            url_ += \"fid=\" + encodeURIComponent(\"\" + fid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processBulkSubmitForms(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processBulkSubmitForms(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processBulkSubmitForms(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ServiceResult;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Unsubmits all of the SGR forms for an organization\r\n     * @param fid (optional) \r\n     */\r\n    bulkUnsubmitForms(fid?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/BulkUnsubmitForms?\";\r\n        if (fid === null)\r\n            throw new Error(\"The parameter 'fid' cannot be null.\");\r\n        else if (fid !== undefined)\r\n            url_ += \"fid=\" + encodeURIComponent(\"\" + fid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processBulkUnsubmitForms(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processBulkUnsubmitForms(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processBulkUnsubmitForms(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ServiceResult;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Ability to save SUPS scope_of_work attribute without oid and aid.\r\n     * @param appid (optional) \r\n     * @param entity (optional) \r\n     */\r\n    saveSupsScopeOfWork(text: string, appid?: string | null | undefined, entity?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/SaveSupsScopeOfWork?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        if (entity !== undefined && entity !== null)\r\n            url_ += \"entity=\" + encodeURIComponent(\"\" + entity) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(text);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processSaveSupsScopeOfWork(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processSaveSupsScopeOfWork(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processSaveSupsScopeOfWork(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SUPSValuesDto;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Ability to update the SUPS Workflow without oid\r\n     */\r\n    updateSUPSWorkflowNG(attribute: SUPSWorkflowModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/updateSUPSWorkflowNG\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(attribute);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processUpdateSUPSWorkflowNG(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processUpdateSUPSWorkflowNG(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processUpdateSUPSWorkflowNG(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SUPSValuesDto;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Gets the privileges.\r\n     * @param userId (optional) The user identifier.\r\n     * @param appId (optional) The application identifier.\r\n     */\r\n    getPrivileges(userId?: number | undefined, appId?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetPrivileges?\";\r\n        if (userId === null)\r\n            throw new Error(\"The parameter 'userId' cannot be null.\");\r\n        else if (userId !== undefined)\r\n            url_ += \"userId=\" + encodeURIComponent(\"\" + userId) + \"&\";\r\n        if (appId !== undefined && appId !== null)\r\n            url_ += \"appId=\" + encodeURIComponent(\"\" + appId) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetPrivileges(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetPrivileges(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetPrivileges(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UserPrivilege[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Returns an array of pids user can mark funding for\r\n     */\r\n    getProgramsUserCanMarkFunded(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetProgramsUserCanMarkFunded\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetProgramsUserCanMarkFunded(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetProgramsUserCanMarkFunded(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetProgramsUserCanMarkFunded(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Returns amount of funding requested for all sgr apps in a given org\r\n     * @param fid (optional) The form id\r\n     * @param orgId (optional) The organization id\r\n     */\r\n    getTotalFundsRequestedByOrg(fid?: FormIds | undefined, orgId?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetTotalFundsRequestedByOrg?\";\r\n        if (fid === null)\r\n            throw new Error(\"The parameter 'fid' cannot be null.\");\r\n        else if (fid !== undefined)\r\n            url_ += \"fid=\" + encodeURIComponent(\"\" + fid) + \"&\";\r\n        if (orgId === null)\r\n            throw new Error(\"The parameter 'orgId' cannot be null.\");\r\n        else if (orgId !== undefined)\r\n            url_ += \"orgId=\" + encodeURIComponent(\"\" + orgId) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetTotalFundsRequestedByOrg(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetTotalFundsRequestedByOrg(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetTotalFundsRequestedByOrg(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getTotalFundsRequestedByOrgByProjectType(fid?: FormIds | undefined, orgId?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetTotalFundsRequestedByOrgByProjectType?\";\r\n        if (fid === null)\r\n            throw new Error(\"The parameter 'fid' cannot be null.\");\r\n        else if (fid !== undefined)\r\n            url_ += \"fid=\" + encodeURIComponent(\"\" + fid) + \"&\";\r\n        if (orgId === null)\r\n            throw new Error(\"The parameter 'orgId' cannot be null.\");\r\n        else if (orgId !== undefined)\r\n            url_ += \"orgId=\" + encodeURIComponent(\"\" + orgId) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetTotalFundsRequestedByOrgByProjectType(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetTotalFundsRequestedByOrgByProjectType(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetTotalFundsRequestedByOrgByProjectType(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProjectTypeFundsRequestedViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Uses the appsequence to get latest revision's appid from whatever id is passed.\r\n     * @param appId (optional) The id of an application\r\n     * @return Current revision's appid\r\n     */\r\n    getApplicationIdLatestRevision(appId?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetApplicationIdLatestRevision?\";\r\n        if (appId !== undefined && appId !== null)\r\n            url_ += \"appId=\" + encodeURIComponent(\"\" + appId) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetApplicationIdLatestRevision(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetApplicationIdLatestRevision(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetApplicationIdLatestRevision(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Change status of multiple applications\r\n     */\r\n    bulkStatusChange(applicationBulkStatusModel: ApplicationBulkStatusModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/BulkStatusChange\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(applicationBulkStatusModel);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processBulkStatusChange(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processBulkStatusChange(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processBulkStatusChange(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    hasScreeningBeenBypassed(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/HasScreeningBeenBypassed?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processHasScreeningBeenBypassed(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processHasScreeningBeenBypassed(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processHasScreeningBeenBypassed(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    isPreScreenedInConditionally(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/IsPreScreenedInConditionally?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processIsPreScreenedInConditionally(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processIsPreScreenedInConditionally(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processIsPreScreenedInConditionally(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Checks a users permissions and returns priority review data if user is allowed to edit it. Call will not fail if user\r\n    fails permission checks, but will set a flag and send no data.\r\n     * @param appid (optional) The applications id\r\n     */\r\n    getReviewPriorityData(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetReviewPriorityData?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetReviewPriorityData(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetReviewPriorityData(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetReviewPriorityData(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReviewPriorityDataViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Saves the review priority fields currently used on SS 2022 pre and full apps.\r\n     * @param priorityDataVm priority data values, oid, and appid\r\n     */\r\n    saveReviewPriority(priorityDataVm: ReviewPriorityDataViewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/SaveReviewPriority\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(priorityDataVm);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processSaveReviewPriority(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processSaveReviewPriority(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processSaveReviewPriority(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * marks a single appid as \"high risk\"\r\n     * @param appid (optional) id of the application to mark as high risk\r\n     */\r\n    markApplicationAsHighRisk(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/MarkApplicationAsHighRisk?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processMarkApplicationAsHighRisk(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processMarkApplicationAsHighRisk(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processMarkApplicationAsHighRisk(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Returns inflation rate for given region code, fiscal year FROM, fiscal year(or datetime) TO, project phase.\r\n     * @param region_code (optional) \r\n     * @param phaseType (optional) \r\n     * @param from_fy (optional) \r\n     * @param to_fy (optional) \r\n     * @param inflation_revision (optional) \r\n     */\r\n    getInflationRate(region_code?: string | null | undefined, phaseType?: PhaseTypes | undefined, from_fy?: number | undefined, to_fy?: number | undefined, inflation_revision?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetInflationRate?\";\r\n        if (region_code !== undefined && region_code !== null)\r\n            url_ += \"region_code=\" + encodeURIComponent(\"\" + region_code) + \"&\";\r\n        if (phaseType === null)\r\n            throw new Error(\"The parameter 'phaseType' cannot be null.\");\r\n        else if (phaseType !== undefined)\r\n            url_ += \"phaseType=\" + encodeURIComponent(\"\" + phaseType) + \"&\";\r\n        if (from_fy === null)\r\n            throw new Error(\"The parameter 'from_fy' cannot be null.\");\r\n        else if (from_fy !== undefined)\r\n            url_ += \"from_fy=\" + encodeURIComponent(\"\" + from_fy) + \"&\";\r\n        if (to_fy === null)\r\n            throw new Error(\"The parameter 'to_fy' cannot be null.\");\r\n        else if (to_fy !== undefined)\r\n            url_ += \"to_fy=\" + encodeURIComponent(\"\" + to_fy) + \"&\";\r\n        if (inflation_revision !== undefined && inflation_revision !== null)\r\n            url_ += \"inflation_revision=\" + encodeURIComponent(\"\" + inflation_revision) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetInflationRate(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetInflationRate(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetInflationRate(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Updates an applications org to VDOT.\r\n     * @param appid (optional) \r\n     */\r\n    handOffToVDOT(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/HandOffToVDOTAsync?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processHandOffToVDOT(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processHandOffToVDOT(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processHandOffToVDOT(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * marks a single appid ready for early screen out\r\n     * @param appid (optional) id of the application to mark\r\n     */\r\n    setEarlyScreenOut(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/SetEarlyScreenOut?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processSetEarlyScreenOut(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processSetEarlyScreenOut(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processSetEarlyScreenOut(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Move an application into the withdrawn status\r\n     * @param appid (optional) \r\n     */\r\n    withdrawApplication(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/WithdrawApplication?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processWithdrawApplication(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processWithdrawApplication(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processWithdrawApplication(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Move an application out of the withdrawn status\r\n     * @param appid (optional) \r\n     */\r\n    unwithdrawApplication(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/UnwithdrawApplication?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processUnwithdrawApplication(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processUnwithdrawApplication(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processUnwithdrawApplication(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Returns Form structure metadata\r\n    Returns Form Structure metadata with fid\r\n    If fid is not provided, return all Form Stuctures\r\n     * @param fid (optional) \r\n     * @return anonymous object with relevant information\r\n     */\r\n    getStructuralForm(fid?: FormIds | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetStructuralForm?\";\r\n        if (fid !== undefined && fid !== null)\r\n            url_ += \"fid=\" + encodeURIComponent(\"\" + fid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetStructuralForm(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetStructuralForm(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetStructuralForm(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as JsonStructuralForm;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getOrganizationNames(orgId?: number | undefined, fid?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetOrganizationNames?\";\r\n        if (orgId === null)\r\n            throw new Error(\"The parameter 'orgId' cannot be null.\");\r\n        else if (orgId !== undefined)\r\n            url_ += \"orgId=\" + encodeURIComponent(\"\" + orgId) + \"&\";\r\n        if (fid === null)\r\n            throw new Error(\"The parameter 'fid' cannot be null.\");\r\n        else if (fid !== undefined)\r\n            url_ += \"fid=\" + encodeURIComponent(\"\" + fid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetOrganizationNames(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetOrganizationNames(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetOrganizationNames(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as OrgIdNameDto[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getDashboardAppByIdAppName(appIdName?: string | null | undefined, actionId?: number | undefined, pid?: number | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetDashboardAppByIdAppName?\";\r\n        if (appIdName !== undefined && appIdName !== null)\r\n            url_ += \"appIdName=\" + encodeURIComponent(\"\" + appIdName) + \"&\";\r\n        if (actionId === null)\r\n            throw new Error(\"The parameter 'actionId' cannot be null.\");\r\n        else if (actionId !== undefined)\r\n            url_ += \"actionId=\" + encodeURIComponent(\"\" + actionId) + \"&\";\r\n        if (pid !== undefined && pid !== null)\r\n            url_ += \"pid=\" + encodeURIComponent(\"\" + pid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetDashboardAppByIdAppName(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetDashboardAppByIdAppName(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetDashboardAppByIdAppName(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardIdFilterItem[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getReadinessApprovalsAndDefinition(appsequence?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/GetReadinessApprovalsAndDefinition?\";\r\n        if (appsequence === null)\r\n            throw new Error(\"The parameter 'appsequence' cannot be null.\");\r\n        else if (appsequence !== undefined)\r\n            url_ += \"appsequence=\" + encodeURIComponent(\"\" + appsequence) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetReadinessApprovalsAndDefinition(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetReadinessApprovalsAndDefinition(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetReadinessApprovalsAndDefinition(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReadinessViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    isAnyGate2Rejected(appsequence?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/isAnyGate2Rejected?\";\r\n        if (appsequence === null)\r\n            throw new Error(\"The parameter 'appsequence' cannot be null.\");\r\n        else if (appsequence !== undefined)\r\n            url_ += \"appsequence=\" + encodeURIComponent(\"\" + appsequence) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processIsAnyGate2Rejected(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processIsAnyGate2Rejected(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processIsAnyGate2Rejected(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    isAnyGate3Rejected(appsequence?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/isAnyGate3Rejected?\";\r\n        if (appsequence === null)\r\n            throw new Error(\"The parameter 'appsequence' cannot be null.\");\r\n        else if (appsequence !== undefined)\r\n            url_ += \"appsequence=\" + encodeURIComponent(\"\" + appsequence) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processIsAnyGate3Rejected(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processIsAnyGate3Rejected(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processIsAnyGate3Rejected(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    isDEExecBypassApproved(appsequence?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/isDEExecBypassApproved?\";\r\n        if (appsequence === null)\r\n            throw new Error(\"The parameter 'appsequence' cannot be null.\");\r\n        else if (appsequence !== undefined)\r\n            url_ += \"appsequence=\" + encodeURIComponent(\"\" + appsequence) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processIsDEExecBypassApproved(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processIsDEExecBypassApproved(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processIsDEExecBypassApproved(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    isDEExecBypassRejected(appsequence?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/isDEExecBypassRejected?\";\r\n        if (appsequence === null)\r\n            throw new Error(\"The parameter 'appsequence' cannot be null.\");\r\n        else if (appsequence !== undefined)\r\n            url_ += \"appsequence=\" + encodeURIComponent(\"\" + appsequence) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processIsDEExecBypassRejected(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processIsDEExecBypassRejected(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processIsDEExecBypassRejected(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    isAllGatesResolved(appsequence?: number | undefined, gateNumber?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/isAllGatesResolved?\";\r\n        if (appsequence === null)\r\n            throw new Error(\"The parameter 'appsequence' cannot be null.\");\r\n        else if (appsequence !== undefined)\r\n            url_ += \"appsequence=\" + encodeURIComponent(\"\" + appsequence) + \"&\";\r\n        if (gateNumber === null)\r\n            throw new Error(\"The parameter 'gateNumber' cannot be null.\");\r\n        else if (gateNumber !== undefined)\r\n            url_ += \"gateNumber=\" + encodeURIComponent(\"\" + gateNumber) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processIsAllGatesResolved(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processIsAllGatesResolved(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processIsAllGatesResolved(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    approveReadiness(appsequence?: number | undefined, approvalDefId?: number | undefined, approvalTypeActionId?: SecurityActionIds | undefined, comment?: string | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/ApproveReadiness?\";\r\n        if (appsequence === null)\r\n            throw new Error(\"The parameter 'appsequence' cannot be null.\");\r\n        else if (appsequence !== undefined)\r\n            url_ += \"appsequence=\" + encodeURIComponent(\"\" + appsequence) + \"&\";\r\n        if (approvalDefId === null)\r\n            throw new Error(\"The parameter 'approvalDefId' cannot be null.\");\r\n        else if (approvalDefId !== undefined)\r\n            url_ += \"approvalDefId=\" + encodeURIComponent(\"\" + approvalDefId) + \"&\";\r\n        if (approvalTypeActionId === null)\r\n            throw new Error(\"The parameter 'approvalTypeActionId' cannot be null.\");\r\n        else if (approvalTypeActionId !== undefined)\r\n            url_ += \"approvalTypeActionId=\" + encodeURIComponent(\"\" + approvalTypeActionId) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(comment);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processApproveReadiness(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processApproveReadiness(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processApproveReadiness(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReadinessGateApprovalResult;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    rejectReadiness(appsequence?: number | undefined, approvalDefId?: number | undefined, approvalTypeActionId?: SecurityActionIds | undefined, comment?: string | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/RejectReadiness?\";\r\n        if (appsequence === null)\r\n            throw new Error(\"The parameter 'appsequence' cannot be null.\");\r\n        else if (appsequence !== undefined)\r\n            url_ += \"appsequence=\" + encodeURIComponent(\"\" + appsequence) + \"&\";\r\n        if (approvalDefId === null)\r\n            throw new Error(\"The parameter 'approvalDefId' cannot be null.\");\r\n        else if (approvalDefId !== undefined)\r\n            url_ += \"approvalDefId=\" + encodeURIComponent(\"\" + approvalDefId) + \"&\";\r\n        if (approvalTypeActionId === null)\r\n            throw new Error(\"The parameter 'approvalTypeActionId' cannot be null.\");\r\n        else if (approvalTypeActionId !== undefined)\r\n            url_ += \"approvalTypeActionId=\" + encodeURIComponent(\"\" + approvalTypeActionId) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(comment);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processRejectReadiness(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processRejectReadiness(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processRejectReadiness(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReadinessGateApprovalResult;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    applicationFollowGet(appsequence?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/ApplicationFollowGet?\";\r\n        if (appsequence === null)\r\n            throw new Error(\"The parameter 'appsequence' cannot be null.\");\r\n        else if (appsequence !== undefined)\r\n            url_ += \"appsequence=\" + encodeURIComponent(\"\" + appsequence) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processApplicationFollowGet(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processApplicationFollowGet(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processApplicationFollowGet(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    applicationFollowList(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/ApplicationFollowList\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processApplicationFollowList(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processApplicationFollowList(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processApplicationFollowList(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AppWatchInfo[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    applicationFollowDelete(appsequences?: number[] | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/ApplicationFollowDelete?\";\r\n        if (appsequences !== undefined && appsequences !== null)\r\n            appsequences && appsequences.forEach(item => { url_ += \"appsequences=\" + encodeURIComponent(\"\" + item) + \"&\"; });\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"DELETE\",\r\n            transformResponse: [],\r\n            headers: {\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processApplicationFollowDelete(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processApplicationFollowDelete(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processApplicationFollowDelete(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 204) {\r\n            const _responseText = response.data;\r\n            return this.q.resolve(null as any);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    applicationWatchPut(appsequences?: number[] | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/ApplicationWatchPut?\";\r\n        if (appsequences !== undefined && appsequences !== null)\r\n            appsequences && appsequences.forEach(item => { url_ += \"appsequences=\" + encodeURIComponent(\"\" + item) + \"&\"; });\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"PUT\",\r\n            transformResponse: [],\r\n            headers: {\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processApplicationWatchPut(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processApplicationWatchPut(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processApplicationWatchPut(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 204) {\r\n            const _responseText = response.data;\r\n            return this.q.resolve(null as any);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    applicationBulkFollow(viewModel: BulkFollowViewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Application/ApplicationBulkFollow\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(viewModel);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processApplicationBulkFollow(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processApplicationBulkFollow(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processApplicationBulkFollow(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 204) {\r\n            const _responseText = response.data;\r\n            return this.q.resolve(null as any);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class CacheClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    clearAllCache(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Cache/clearAll\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processClearAllCache(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processClearAllCache(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processClearAllCache(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            return this.q.resolve(null as any);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    clearCache(key: string): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Cache/clear/{key}\";\r\n        if (key === undefined || key === null)\r\n            throw new Error(\"The parameter 'key' must be defined.\");\r\n        url_ = url_.replace(\"{key}\", encodeURIComponent(\"\" + key));\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processClearCache(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processClearCache(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processClearCache(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            return this.q.resolve(null as any);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class DiscussionClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    get(appid?: string | null | undefined, oldestFirst?: boolean | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Discussion/Get?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        if (oldestFirst === null)\r\n            throw new Error(\"The parameter 'oldestFirst' cannot be null.\");\r\n        else if (oldestFirst !== undefined)\r\n            url_ += \"oldestFirst=\" + encodeURIComponent(\"\" + oldestFirst) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGet(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGet(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGet(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CommentViewModel[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    createValidationAlerts(model: ValidationSectionViewModel[]): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Discussion/CreateValidationAlerts\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCreateValidationAlerts(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCreateValidationAlerts(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCreateValidationAlerts(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ValidationSectionViewModel[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    create(model: NewCommentViewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Discussion/Create\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCreate(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCreate(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCreate(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    acknowledge(commentId?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Discussion/Acknowledge?\";\r\n        if (commentId === null)\r\n            throw new Error(\"The parameter 'commentId' cannot be null.\");\r\n        else if (commentId !== undefined)\r\n            url_ += \"commentId=\" + encodeURIComponent(\"\" + commentId) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            transformResponse: [],\r\n            headers: {\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processAcknowledge(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processAcknowledge(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processAcknowledge(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 204) {\r\n            const _responseText = response.data;\r\n            return this.q.resolve(null as any);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    giveConcurrence(id?: number | undefined, appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Discussion/GiveConcurrence?\";\r\n        if (id === null)\r\n            throw new Error(\"The parameter 'id' cannot be null.\");\r\n        else if (id !== undefined)\r\n            url_ += \"id=\" + encodeURIComponent(\"\" + id) + \"&\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            transformResponse: [],\r\n            headers: {\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGiveConcurrence(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGiveConcurrence(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGiveConcurrence(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 204) {\r\n            const _responseText = response.data;\r\n            return this.q.resolve(null as any);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getAllCommentCounts(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Discussion/GetAllCommentCounts\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetAllCommentCounts(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetAllCommentCounts(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetAllCommentCounts(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DiscussionCommentCountModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getNewCommentCount(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Discussion/GetNewCommentCount\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetNewCommentCount(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetNewCommentCount(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetNewCommentCount(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as NewCommentCountViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getPendingAlertCount(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Discussion/GetPendingAlertCount\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetPendingAlertCount(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetPendingAlertCount(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetPendingAlertCount(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as NewCommentCountViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getConcurrenceAlertCount(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Discussion/GetConcurrenceAlertCount\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetConcurrenceAlertCount(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetConcurrenceAlertCount(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetConcurrenceAlertCount(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as NewCommentCountViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Returns an object that contains the user's commenting privileges for the specified application\r\n     * @param appid (optional) Application ID\r\n     */\r\n    getPrivileges(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Discussion/GetPrivileges?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetPrivileges(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetPrivileges(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetPrivileges(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CommentPrivilegesViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class EntityMappingClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    getFormMappingMatrix(source_fid?: number | null | undefined, target_fid?: number | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/EntityMapping/GetFormMappingMatrix?\";\r\n        if (source_fid !== undefined && source_fid !== null)\r\n            url_ += \"source_fid=\" + encodeURIComponent(\"\" + source_fid) + \"&\";\r\n        if (target_fid !== undefined && target_fid !== null)\r\n            url_ += \"target_fid=\" + encodeURIComponent(\"\" + target_fid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetFormMappingMatrix(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetFormMappingMatrix(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetFormMappingMatrix(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as V_form_mapping_matrix[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getEntityAttributeTree(fid?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/EntityMapping/GetEntityAttributeTree?\";\r\n        if (fid === null)\r\n            throw new Error(\"The parameter 'fid' cannot be null.\");\r\n        else if (fid !== undefined)\r\n            url_ += \"fid=\" + encodeURIComponent(\"\" + fid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetEntityAttributeTree(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetEntityAttributeTree(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetEntityAttributeTree(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as V_entity_attribute_tree_2[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getActiveForms(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/EntityMapping/GetActiveFormsAsync\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetActiveForms(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetActiveForms(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetActiveForms(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as form[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getActiveFormEntities(fid?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/EntityMapping/GetActiveFormEntitiesAsync?\";\r\n        if (fid === null)\r\n            throw new Error(\"The parameter 'fid' cannot be null.\");\r\n        else if (fid !== undefined)\r\n            url_ += \"fid=\" + encodeURIComponent(\"\" + fid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetActiveFormEntities(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetActiveFormEntities(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetActiveFormEntities(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as V_entity_tree_2[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getCloneableEntities(source_fid?: number | undefined, target_fid?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/EntityMapping/GetCloneableEntities?\";\r\n        if (source_fid === null)\r\n            throw new Error(\"The parameter 'source_fid' cannot be null.\");\r\n        else if (source_fid !== undefined)\r\n            url_ += \"source_fid=\" + encodeURIComponent(\"\" + source_fid) + \"&\";\r\n        if (target_fid === null)\r\n            throw new Error(\"The parameter 'target_fid' cannot be null.\");\r\n        else if (target_fid !== undefined)\r\n            url_ += \"target_fid=\" + encodeURIComponent(\"\" + target_fid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetCloneableEntities(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetCloneableEntities(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetCloneableEntities(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as V_get_cloneable_entities[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getCloneableAttributes(source_fid?: number | undefined, target_fid?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/EntityMapping/GetCloneableAttributes?\";\r\n        if (source_fid === null)\r\n            throw new Error(\"The parameter 'source_fid' cannot be null.\");\r\n        else if (source_fid !== undefined)\r\n            url_ += \"source_fid=\" + encodeURIComponent(\"\" + source_fid) + \"&\";\r\n        if (target_fid === null)\r\n            throw new Error(\"The parameter 'target_fid' cannot be null.\");\r\n        else if (target_fid !== undefined)\r\n            url_ += \"target_fid=\" + encodeURIComponent(\"\" + target_fid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetCloneableAttributes(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetCloneableAttributes(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetCloneableAttributes(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as V_get_cloneable_attributes[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    deleteEntityCloneMapping(entityCloneEntityModel: Entity_clone_entity): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/EntityMapping/DeleteEntityCloneMappingAsync\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(entityCloneEntityModel);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processDeleteEntityCloneMapping(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processDeleteEntityCloneMapping(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processDeleteEntityCloneMapping(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as Entity_clone_entity;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    saveEntityCloneMapping(entityCloneEntityModel: Entity_clone_entity): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/EntityMapping/SaveEntityCloneMappingAsync\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(entityCloneEntityModel);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processSaveEntityCloneMapping(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processSaveEntityCloneMapping(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processSaveEntityCloneMapping(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as Entity_clone_entity;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    saveAttributeCloneMapping(model: AttributeCloneMappingModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/EntityMapping/SaveAttributeCloneMappingAsync\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processSaveAttributeCloneMapping(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processSaveAttributeCloneMapping(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processSaveAttributeCloneMapping(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ServiceResult;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    deleteAttributeCloneMapping(model: AttributeCloneMappingModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/EntityMapping/DeleteAttributeCloneMappingAsync\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processDeleteAttributeCloneMapping(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processDeleteAttributeCloneMapping(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processDeleteAttributeCloneMapping(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ServiceResult;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class EnumsApiClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    /**\r\n     * Dummy endpoint to provide C# types to typescript thru NSwag.\r\n    NSwag only generates types that are exposed through the API.\r\n     * @param _ (optional) used to expose types\r\n     * @return n/a\r\n     */\r\n    dummyEnumProviderEndpoint(_?: EnumsApiMetadata | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/EnumsApi/DummyEnumProviderEndpoint?\";\r\n        if (_ !== undefined && _ !== null)\r\n            url_ += \"_=\" + encodeURIComponent(\"\" + _) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processDummyEnumProviderEndpoint(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processDummyEnumProviderEndpoint(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processDummyEnumProviderEndpoint(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class ErrorLogClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    /**\r\n     * Get a single error logs item\r\n     */\r\n    get(id: number): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/errorlog/{id}\";\r\n        if (id === undefined || id === null)\r\n            throw new Error(\"The parameter 'id' must be defined.\");\r\n        url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGet(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGet(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGet(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ErrorLog;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Get a list of error logs\r\n     */\r\n    search(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/errorlog/Search\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processSearch(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processSearch(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processSearch(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ErrorLog[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class EventClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    /**\r\n     * Returns true/false whether this user should see validations for this form.\r\n     * @param appid (optional) \r\n     */\r\n    hasAccessToValidations(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Event/HasAccess?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processHasAccessToValidations(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processHasAccessToValidations(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processHasAccessToValidations(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Returns a list of all coded events and additional residual data\r\n     * @param appid (optional) \r\n     */\r\n    getApplicationCodedEventsFid2(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Event/GetApplicationCodedEventsFid2?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetApplicationCodedEventsFid2(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetApplicationCodedEventsFid2(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetApplicationCodedEventsFid2(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationEventsViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Returns events that are publically visible\r\n     * @param appid (optional) \r\n     */\r\n    getPublicApplicationEvents(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Event/GetPublicApplicationEvents?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetPublicApplicationEvents(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetPublicApplicationEvents(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetPublicApplicationEvents(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ValidationEvent[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class FileClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    uploadFiles(file?: FileParameter | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/File/UploadFiles\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = new FormData();\r\n        if (file !== null && file !== undefined)\r\n            content_.append(\"file\", file.data, file.fileName ? file.fileName : \"file\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processUploadFiles(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processUploadFiles(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processUploadFiles(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as FileUploadResult;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    blobExist(requestedAttachment: AttachmentViewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/File/BlobExist\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(requestedAttachment);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processBlobExist(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processBlobExist(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processBlobExist(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ServiceResult;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Get a file (by name) for a given project application\r\n     * @param applicationId (optional) the ID of the associated application\r\n     * @param fileName (optional) the name of the file\r\n     * @return The file or an error response\r\n     */\r\n    getFile(applicationId?: string | null | undefined, fileName?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/File/Get?\";\r\n        if (applicationId !== undefined && applicationId !== null)\r\n            url_ += \"applicationId=\" + encodeURIComponent(\"\" + applicationId) + \"&\";\r\n        if (fileName !== undefined && fileName !== null)\r\n            url_ += \"fileName=\" + encodeURIComponent(\"\" + fileName) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetFile(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetFile(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetFile(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Gets all files for an application\r\n     * @param applicationId (optional) The application identifier.\r\n     */\r\n    getAllFiles(applicationId?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/File/GetAll?\";\r\n        if (applicationId !== undefined && applicationId !== null)\r\n            url_ += \"applicationId=\" + encodeURIComponent(\"\" + applicationId) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetAllFiles(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetAllFiles(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetAllFiles(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Gets all selected files for an application\r\n     * @param applicationId (optional) \r\n     * @param fileNames (optional) \r\n     */\r\n    getFilesByFileNameGet(applicationId?: string | null | undefined, fileNames?: string[] | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/File/GetFilesByFileNameGet?\";\r\n        if (applicationId !== undefined && applicationId !== null)\r\n            url_ += \"applicationId=\" + encodeURIComponent(\"\" + applicationId) + \"&\";\r\n        if (fileNames !== undefined && fileNames !== null)\r\n            fileNames && fileNames.forEach(item => { url_ += \"fileNames=\" + encodeURIComponent(\"\" + item) + \"&\"; });\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetFilesByFileNameGet(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetFilesByFileNameGet(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetFilesByFileNameGet(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Gets all selected files for an application\r\n     * @param applicationId (optional) \r\n     * @param fileNames (optional) \r\n     */\r\n    getFilesByFileName(applicationId?: string | null | undefined, fileNames?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/File/GetFilesByFileName\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = new FormData();\r\n        if (applicationId !== null && applicationId !== undefined)\r\n            content_.append(\"applicationId\", applicationId.toString());\r\n        if (fileNames !== null && fileNames !== undefined)\r\n            content_.append(\"fileNames\", fileNames.toString());\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetFilesByFileName(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetFilesByFileName(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetFilesByFileName(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Removes a file from a given application\r\n     * @param applicationId (optional) the ID of the associated application\r\n     * @param fileName (optional) the name of the file\r\n     * @return Success or error response\r\n     */\r\n    removeAttachment(applicationId?: string | null | undefined, fileName?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/File/RemoveAttachment?\";\r\n        if (applicationId !== undefined && applicationId !== null)\r\n            url_ += \"applicationId=\" + encodeURIComponent(\"\" + applicationId) + \"&\";\r\n        if (fileName !== undefined && fileName !== null)\r\n            url_ += \"fileName=\" + encodeURIComponent(\"\" + fileName) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processRemoveAttachment(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processRemoveAttachment(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processRemoveAttachment(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ServiceResult;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Update a file attachmentType from a given application\r\n     * @param applicationId (optional) the ID of the associated application\r\n     * @param attachmentId (optional) \r\n     * @param attachmentTypeId (optional) \r\n     * @return Success or error response\r\n     */\r\n    updateAttachment(applicationId?: string | null | undefined, attachmentId?: number | undefined, attachmentTypeId?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/File/UpdateAttachment?\";\r\n        if (applicationId !== undefined && applicationId !== null)\r\n            url_ += \"applicationId=\" + encodeURIComponent(\"\" + applicationId) + \"&\";\r\n        if (attachmentId === null)\r\n            throw new Error(\"The parameter 'attachmentId' cannot be null.\");\r\n        else if (attachmentId !== undefined)\r\n            url_ += \"attachmentId=\" + encodeURIComponent(\"\" + attachmentId) + \"&\";\r\n        if (attachmentTypeId === null)\r\n            throw new Error(\"The parameter 'attachmentTypeId' cannot be null.\");\r\n        else if (attachmentTypeId !== undefined)\r\n            url_ += \"attachmentTypeId=\" + encodeURIComponent(\"\" + attachmentTypeId) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processUpdateAttachment(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processUpdateAttachment(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processUpdateAttachment(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ServiceResult;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * True/False can they see the bulk download button\r\n     */\r\n    canSeeBulkDownload(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/File/CanSeeBulkDownload\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCanSeeBulkDownload(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCanSeeBulkDownload(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCanSeeBulkDownload(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Downloads all attachments of type (attachmentIds) from all applications (appIds)\r\n     * @param appIds (optional) \r\n     * @param attachmentIds (optional) \r\n     */\r\n    bulkDownload(appIds?: string | null | undefined, attachmentIds?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/File/BulkDownload\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = new FormData();\r\n        if (appIds !== null && appIds !== undefined)\r\n            content_.append(\"appIds\", appIds.toString());\r\n        if (attachmentIds !== null && attachmentIds !== undefined)\r\n            content_.append(\"attachmentIds\", attachmentIds.toString());\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processBulkDownload(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processBulkDownload(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processBulkDownload(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class FollowReportClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    getMyFollowReports(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/FollowReport/GetMyFollowReports\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetMyFollowReports(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetMyFollowReports(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetMyFollowReports(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as FollowReport[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getMyFollowReportsXlsx(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/FollowReport/GetMyFollowReportsXlsx\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetMyFollowReportsXlsx(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetMyFollowReportsXlsx(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetMyFollowReportsXlsx(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getMyFollowReportsJson(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/FollowReport/GetMyFollowReportsJson\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetMyFollowReportsJson(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetMyFollowReportsJson(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetMyFollowReportsJson(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    sendFollowReportEmail(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/FollowReport/SendFollowReportEmail\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            transformResponse: [],\r\n            headers: {\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processSendFollowReportEmail(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processSendFollowReportEmail(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processSendFollowReportEmail(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 204) {\r\n            const _responseText = response.data;\r\n            return this.q.resolve(null as any);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class FollowReportMVCClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    followReport(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/FollowReportMVC/FollowReport\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processFollowReport(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processFollowReport(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processFollowReport(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class FormsClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    getFormsConfigMetadata(pid?: number | undefined, fid?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/GetFormsConfigMetadata?\";\r\n        if (pid === null)\r\n            throw new Error(\"The parameter 'pid' cannot be null.\");\r\n        else if (pid !== undefined)\r\n            url_ += \"pid=\" + encodeURIComponent(\"\" + pid) + \"&\";\r\n        if (fid === null)\r\n            throw new Error(\"The parameter 'fid' cannot be null.\");\r\n        else if (fid !== undefined)\r\n            url_ += \"fid=\" + encodeURIComponent(\"\" + fid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetFormsConfigMetadata(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetFormsConfigMetadata(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetFormsConfigMetadata(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationFormsConfigMetadataTree;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getFormsConfigMetadataCustom(formName?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/GetFormsConfigMetadataCustom?\";\r\n        if (formName !== undefined && formName !== null)\r\n            url_ += \"formName=\" + encodeURIComponent(\"\" + formName) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetFormsConfigMetadataCustom(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetFormsConfigMetadataCustom(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetFormsConfigMetadataCustom(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationFormsConfigMetadataTree;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getUserPermissionsForForm(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/GetUserPermissionsForForm?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetUserPermissionsForForm(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetUserPermissionsForForm(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetUserPermissionsForForm(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SecurityActionIds[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Fetch all data for a single application.\r\n     * @param appId (optional) Application Id to fetch.\r\n     * @return Json string of application object.\r\n     */\r\n    getFormData(appId?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/GetFormData?\";\r\n        if (appId !== undefined && appId !== null)\r\n            url_ += \"appId=\" + encodeURIComponent(\"\" + appId) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetFormData(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetFormData(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetFormData(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as any;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Save.\r\n     * @param appDataJson App data to save, in stringified json form.\r\n     * @param appId (optional) Id of existing app to save.\r\n     * @param isSubmissionMode (optional) \r\n     * @return Results of save operation, possibly with a redirect to a NEW AppId.\r\n     */\r\n    putFormData(appDataJson: string, appId?: string | null | undefined, isSubmissionMode?: boolean | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/PutFormData?\";\r\n        if (appId !== undefined && appId !== null)\r\n            url_ += \"appId=\" + encodeURIComponent(\"\" + appId) + \"&\";\r\n        if (isSubmissionMode === null)\r\n            throw new Error(\"The parameter 'isSubmissionMode' cannot be null.\");\r\n        else if (isSubmissionMode !== undefined)\r\n            url_ += \"isSubmissionMode=\" + encodeURIComponent(\"\" + isSubmissionMode) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(appDataJson);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"PUT\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processPutFormData(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processPutFormData(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processPutFormData(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ServiceResultOfPutFormDataResult;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    archiveApplication(appId?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/ArchiveApplication?\";\r\n        if (appId !== undefined && appId !== null)\r\n            url_ += \"appId=\" + encodeURIComponent(\"\" + appId) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"PUT\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processArchiveApplication(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processArchiveApplication(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processArchiveApplication(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ServiceResult;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    initiateValidation(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/InitiateValidation?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processInitiateValidation(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processInitiateValidation(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processInitiateValidation(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ServiceResult;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Change the status of an application to Funded\r\n     * @param appid (optional) application ID\r\n     */\r\n    setFundedStatus(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/SetFundedStatus?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"PUT\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processSetFundedStatus(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processSetFundedStatus(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processSetFundedStatus(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ServiceResult;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getSubmissionCapForForm(fid?: number | undefined, orgid?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/GetSubmissionCapForForm?\";\r\n        if (fid === null)\r\n            throw new Error(\"The parameter 'fid' cannot be null.\");\r\n        else if (fid !== undefined)\r\n            url_ += \"fid=\" + encodeURIComponent(\"\" + fid) + \"&\";\r\n        if (orgid === null)\r\n            throw new Error(\"The parameter 'orgid' cannot be null.\");\r\n        else if (orgid !== undefined)\r\n            url_ += \"orgid=\" + encodeURIComponent(\"\" + orgid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetSubmissionCapForForm(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetSubmissionCapForForm(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetSubmissionCapForForm(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ServiceResultOfFormSubmissionCapData;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getFormInfo(fid?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/GetFormInfo?\";\r\n        if (fid === null)\r\n            throw new Error(\"The parameter 'fid' cannot be null.\");\r\n        else if (fid !== undefined)\r\n            url_ += \"fid=\" + encodeURIComponent(\"\" + fid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetFormInfo(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetFormInfo(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetFormInfo(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationFormMetadataDto;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getAllFormsInfo(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/GetAllFormsInfo\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetAllFormsInfo(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetAllFormsInfo(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetAllFormsInfo(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationFormMetadataDto[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getFormClonedData(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/GetFormClonedData?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetFormClonedData(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetFormClonedData(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetFormClonedData(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as V_cloned_apps_funding[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    formHTMLView(appid?: string | null | undefined, summary?: boolean | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/FormHTMLView?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        if (summary !== undefined && summary !== null)\r\n            url_ += \"summary=\" + encodeURIComponent(\"\" + summary) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processFormHTMLView(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processFormHTMLView(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processFormHTMLView(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    formPDFView(appid?: string | null | undefined, summary?: boolean | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/FormPDFView?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        if (summary !== undefined && summary !== null)\r\n            url_ += \"summary=\" + encodeURIComponent(\"\" + summary) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processFormPDFView(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processFormPDFView(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processFormPDFView(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    formHtmlViewCustom(customFormName?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/FormHtmlViewCustom?\";\r\n        if (customFormName !== undefined && customFormName !== null)\r\n            url_ += \"customFormName=\" + encodeURIComponent(\"\" + customFormName) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processFormHtmlViewCustom(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processFormHtmlViewCustom(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processFormHtmlViewCustom(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    formPdfBulkDownload(appIds?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/FormPdfBulkDownload\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = new FormData();\r\n        if (appIds !== null && appIds !== undefined)\r\n            content_.append(\"appIds\", appIds.toString());\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processFormPdfBulkDownload(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processFormPdfBulkDownload(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processFormPdfBulkDownload(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getAppViewableRevisions(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/GetAppViewableRevisions?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetAppViewableRevisions(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetAppViewableRevisions(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetAppViewableRevisions(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AppRevision[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Create a generic application.\r\n     */\r\n    createApp(model: NewAppViewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/CreateApp\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCreateApp(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCreateApp(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCreateApp(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Create a SGR Pavement application.\r\n     */\r\n    createPavementApp(model: NewPavementAppViewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/CreatePavementApp\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCreatePavementApp(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCreatePavementApp(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCreatePavementApp(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PavementApp;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    saveScoringHSIP24(model: HSIP24ScoringSaveModel, appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/SaveScoringHSIP24?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processSaveScoringHSIP24(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processSaveScoringHSIP24(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processSaveScoringHSIP24(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    completeScoringHSIP24(model: HSIP24ScoringSaveModel, appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/CompleteScoringHSIP24?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCompleteScoringHSIP24(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCompleteScoringHSIP24(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCompleteScoringHSIP24(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ServiceResult;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    saveScoringHSIP25(model: HSIP25ScoringSaveModel, appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/SaveScoringHSIP25?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processSaveScoringHSIP25(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processSaveScoringHSIP25(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processSaveScoringHSIP25(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    completeScoringHSIP25(model: HSIP25ScoringSaveModel, appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/CompleteScoringHSIP25?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCompleteScoringHSIP25(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCompleteScoringHSIP25(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCompleteScoringHSIP25(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ServiceResult;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    saveScoringHSIPSSI26(model: HSIPSSI26ScoringSaveModel, appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/SaveScoringHSIPSSI26?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processSaveScoringHSIPSSI26(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processSaveScoringHSIPSSI26(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processSaveScoringHSIPSSI26(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    completeScoringHSIPSSI26(model: HSIPSSI26ScoringSaveModel, appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/CompleteScoringHSIPSSI26?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCompleteScoringHSIPSSI26(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCompleteScoringHSIPSSI26(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCompleteScoringHSIPSSI26(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ServiceResult;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    saveScoringHSIPSpot26(model: HSIPSpot26ScoringSaveModel, appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/SaveScoringHSIPSpot26?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processSaveScoringHSIPSpot26(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processSaveScoringHSIPSpot26(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processSaveScoringHSIPSpot26(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    completeScoringHSIPSpot26(model: HSIPSpot26ScoringSaveModel, appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/CompleteScoringHSIPSpot26?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCompleteScoringHSIPSpot26(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCompleteScoringHSIPSpot26(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCompleteScoringHSIPSpot26(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ServiceResult;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    saveScoringHSIPVRU26(model: HSIPVRU26ScoringSaveModel, appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/SaveScoringHSIPVRU26?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processSaveScoringHSIPVRU26(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processSaveScoringHSIPVRU26(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processSaveScoringHSIPVRU26(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    completeScoringHSIPVRU26(model: HSIPVRU26ScoringSaveModel, appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/CompleteScoringHSIPVRU26?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCompleteScoringHSIPVRU26(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCompleteScoringHSIPVRU26(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCompleteScoringHSIPVRU26(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ServiceResult;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    saveScoringHSIPRail26(model: HSIPRail26ScoringSaveModel, appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/SaveScoringHSIPRail26?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processSaveScoringHSIPRail26(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processSaveScoringHSIPRail26(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processSaveScoringHSIPRail26(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    completeScoringHSIPRail26(model: HSIPRail26ScoringSaveModel, appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/CompleteScoringHSIPRail26?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCompleteScoringHSIPRail26(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCompleteScoringHSIPRail26(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCompleteScoringHSIPRail26(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ServiceResult;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * moves an app from scoring status to scored status\r\n     * @param appid (optional) \r\n     */\r\n    completeScoringGeneric(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/CompleteScoringGeneric?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCompleteScoringGeneric(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCompleteScoringGeneric(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCompleteScoringGeneric(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getFormConfig2PDF(pid?: number | undefined, fid?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/GetFormConfig2PDF?\";\r\n        if (pid === null)\r\n            throw new Error(\"The parameter 'pid' cannot be null.\");\r\n        else if (pid !== undefined)\r\n            url_ += \"pid=\" + encodeURIComponent(\"\" + pid) + \"&\";\r\n        if (fid === null)\r\n            throw new Error(\"The parameter 'fid' cannot be null.\");\r\n        else if (fid !== undefined)\r\n            url_ += \"fid=\" + encodeURIComponent(\"\" + fid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetFormConfig2PDF(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetFormConfig2PDF(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetFormConfig2PDF(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getFormConfig2Doc(pid?: number | undefined, fid?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Forms/GetFormConfig2Doc?\";\r\n        if (pid === null)\r\n            throw new Error(\"The parameter 'pid' cannot be null.\");\r\n        else if (pid !== undefined)\r\n            url_ += \"pid=\" + encodeURIComponent(\"\" + pid) + \"&\";\r\n        if (fid === null)\r\n            throw new Error(\"The parameter 'fid' cannot be null.\");\r\n        else if (fid !== undefined)\r\n            url_ += \"fid=\" + encodeURIComponent(\"\" + fid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetFormConfig2Doc(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetFormConfig2Doc(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetFormConfig2Doc(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class ImportClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    importUploadFiles(contentType?: string | undefined, contentDisposition?: string | undefined, headers?: Headers[] | undefined, length?: number | undefined, name?: string | undefined, fileName?: string | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Import/ImportUploadFiles\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = new FormData();\r\n        if (contentType === null || contentType === undefined)\r\n            throw new Error(\"The parameter 'contentType' cannot be null.\");\r\n        else\r\n            content_.append(\"ContentType\", contentType.toString());\r\n        if (contentDisposition === null || contentDisposition === undefined)\r\n            throw new Error(\"The parameter 'contentDisposition' cannot be null.\");\r\n        else\r\n            content_.append(\"ContentDisposition\", contentDisposition.toString());\r\n        if (headers === null || headers === undefined)\r\n            throw new Error(\"The parameter 'headers' cannot be null.\");\r\n        else\r\n            headers.forEach(item_ => content_.append(\"Headers\", item_.toString()));\r\n        if (length === null || length === undefined)\r\n            throw new Error(\"The parameter 'length' cannot be null.\");\r\n        else\r\n            content_.append(\"Length\", length.toString());\r\n        if (name === null || name === undefined)\r\n            throw new Error(\"The parameter 'name' cannot be null.\");\r\n        else\r\n            content_.append(\"Name\", name.toString());\r\n        if (fileName === null || fileName === undefined)\r\n            throw new Error(\"The parameter 'fileName' cannot be null.\");\r\n        else\r\n            content_.append(\"FileName\", fileName.toString());\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processImportUploadFiles(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processImportUploadFiles(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processImportUploadFiles(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ServiceResultOfString;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class LegacyFormComparisonClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    /**\r\n     * Compares the application revisions.\r\n     * @param sourceAppId (optional) The source application identifier.\r\n     * @param targetAppId (optional) The target application identifier.\r\n     */\r\n    compareAppRevisions(sourceAppId?: string | null | undefined, targetAppId?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/LegacyFormComparison/CompareAppRevisions?\";\r\n        if (sourceAppId !== undefined && sourceAppId !== null)\r\n            url_ += \"sourceAppId=\" + encodeURIComponent(\"\" + sourceAppId) + \"&\";\r\n        if (targetAppId !== undefined && targetAppId !== null)\r\n            url_ += \"targetAppId=\" + encodeURIComponent(\"\" + targetAppId) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCompareAppRevisions(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCompareAppRevisions(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCompareAppRevisions(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AppComparer;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class LookupClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    organizations(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Lookup/Organizations\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processOrganizations(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processOrganizations(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processOrganizations(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as LookupTableOfInteger[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    smartScaleEnhancements(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Lookup/SmartScaleEnhancements\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processSmartScaleEnhancements(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processSmartScaleEnhancements(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processSmartScaleEnhancements(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SmartScaleEnhancement[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    riskLevel(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Lookup/RiskLevel\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processRiskLevel(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processRiskLevel(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processRiskLevel(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as LookupTableOfShort[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    creationMethod(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Lookup/CreationMethod\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCreationMethod(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCreationMethod(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCreationMethod(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as LookupTableOfShort[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class MaintenanceClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    getMissingAttachments(formIDs: number[]): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Maintenance/GetMissingAttachments\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(formIDs);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetMissingAttachments(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetMissingAttachments(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetMissingAttachments(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DefectedAppsViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Copy File attachments from revision 0 of the application id passed to revision 1\r\n     */\r\n    copyAttachmentsFromRevision0(danglingPointers: MissingAttchments[]): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Maintenance/CopyAttachmentsFromRevision0\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(danglingPointers);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCopyAttachmentsFromRevision0(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCopyAttachmentsFromRevision0(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCopyAttachmentsFromRevision0(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AttachmentCorrectionViewModel[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getIntakeData(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Maintenance/GetIntakeData\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetIntakeData(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetIntakeData(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetIntakeData(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as FormIntakeData[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    updateIntakeRecord(data: FormIntakeData): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Maintenance/UpdateIntakeRecord\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(data);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processUpdateIntakeRecord(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processUpdateIntakeRecord(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processUpdateIntakeRecord(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 204) {\r\n            const _responseText = response.data;\r\n            return this.q.resolve(null as any);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class NoticeClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    /**\r\n     * Gets all notices in the active status. Used for showing data to the user on login\r\n     */\r\n    getAllActive(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Notice/GetAllActive\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetAllActive(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetAllActive(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetAllActive(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as NoticeViewModel[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Gets a single notice by id\r\n     * @param id The id of the notice being retrived\r\n     */\r\n    get(id: number): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Notice/{id}\";\r\n        if (id === undefined || id === null)\r\n            throw new Error(\"The parameter 'id' must be defined.\");\r\n        url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGet(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGet(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGet(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as Notice;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Updates a notice\r\n     * @param model The notice viewmodel\r\n     */\r\n    edit(model: NoticeViewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Notice/Edit\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processEdit(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processEdit(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processEdit(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as NoticeViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Insert a new notice\r\n     * @param model The viewmodel of the notice being inserted\r\n     */\r\n    add(model: NoticeViewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Notice/Add\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processAdd(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processAdd(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processAdd(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as NoticeViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Deletes a notice by id\r\n     * @param notice The notice being deleted\r\n     */\r\n    delete(notice: Notice): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Notice/Delete\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(notice);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processDelete(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processDelete(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processDelete(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 204) {\r\n            const _responseText = response.data;\r\n            return this.q.resolve(null as any);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Gets the grid data for notice grid on admin tab\r\n     */\r\n    getGridData(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Notice/GetGridData\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetGridData(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetGridData(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetGridData(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as NoticeViewModel[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class OrganizationClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    hasAccess(model: OrganizationAccessModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Organization/HasAccess\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processHasAccess(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processHasAccess(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processHasAccess(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Returns a \"blank\" org view model to be used by the new organization form\r\n     * @param adminType (optional) \r\n     */\r\n    getNewOrgForAdmin(adminType?: AdminType | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Organization/GetNewOrgForAdmin?\";\r\n        if (adminType === null)\r\n            throw new Error(\"The parameter 'adminType' cannot be null.\");\r\n        else if (adminType !== undefined)\r\n            url_ += \"adminType=\" + encodeURIComponent(\"\" + adminType) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetNewOrgForAdmin(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetNewOrgForAdmin(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetNewOrgForAdmin(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as OrganizationViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getOrgForAdmin(orgId?: number | undefined, adminType?: AdminType | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Organization/GetOrgForAdmin?\";\r\n        if (orgId === null)\r\n            throw new Error(\"The parameter 'orgId' cannot be null.\");\r\n        else if (orgId !== undefined)\r\n            url_ += \"orgId=\" + encodeURIComponent(\"\" + orgId) + \"&\";\r\n        if (adminType === null)\r\n            throw new Error(\"The parameter 'adminType' cannot be null.\");\r\n        else if (adminType !== undefined)\r\n            url_ += \"adminType=\" + encodeURIComponent(\"\" + adminType) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetOrgForAdmin(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetOrgForAdmin(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetOrgForAdmin(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as OrganizationViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getApplicationDistricts(orgid?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Organization/districts?\";\r\n        if (orgid === null)\r\n            throw new Error(\"The parameter 'orgid' cannot be null.\");\r\n        else if (orgid !== undefined)\r\n            url_ += \"orgid=\" + encodeURIComponent(\"\" + orgid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetApplicationDistricts(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetApplicationDistricts(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetApplicationDistricts(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getFips(orgid?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Organization/GetFips?\";\r\n        if (orgid === null)\r\n            throw new Error(\"The parameter 'orgid' cannot be null.\");\r\n        else if (orgid !== undefined)\r\n            url_ += \"orgid=\" + encodeURIComponent(\"\" + orgid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetFips(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetFips(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetFips(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    add(model: AdminTypeOrganizationViewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Organization/Add\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processAdd(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processAdd(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processAdd(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as Organization;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    edit(model: AdminTypeOrganizationViewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Organization/Edit\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processEdit(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processEdit(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processEdit(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getUsers(orgid?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Organization/GetUsers?\";\r\n        if (orgid === null)\r\n            throw new Error(\"The parameter 'orgid' cannot be null.\");\r\n        else if (orgid !== undefined)\r\n            url_ += \"orgid=\" + encodeURIComponent(\"\" + orgid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetUsers(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetUsers(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetUsers(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UserViewModel[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Gets a collection of organizations that a district admin can administer\r\n     */\r\n    getOrgsForDistrictAdmin(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Organization/GetOrgsForDistrictAdmin\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetOrgsForDistrictAdmin(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetOrgsForDistrictAdmin(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetOrgsForDistrictAdmin(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as OrganizationOrgsViewModel[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getPageDistrictAdmin(request: GridRequest): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Organization/GetPageDistrictAdmin\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(request);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetPageDistrictAdmin(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetPageDistrictAdmin(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetPageDistrictAdmin(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as GridResultOfOrganizationGridViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getPage(request: GridRequest): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Organization/GetPage\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(request);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetPage(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetPage(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetPage(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as GridResultOfOrganizationGridViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getAllowedOrganizationRolesForAdmin(orgId?: number | undefined, adminType?: AdminType | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Organization/GetAllowedOrganizationRolesForAdmin?\";\r\n        if (orgId === null)\r\n            throw new Error(\"The parameter 'orgId' cannot be null.\");\r\n        else if (orgId !== undefined)\r\n            url_ += \"orgId=\" + encodeURIComponent(\"\" + orgId) + \"&\";\r\n        if (adminType === null)\r\n            throw new Error(\"The parameter 'adminType' cannot be null.\");\r\n        else if (adminType !== undefined)\r\n            url_ += \"adminType=\" + encodeURIComponent(\"\" + adminType) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetAllowedOrganizationRolesForAdmin(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetAllowedOrganizationRolesForAdmin(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetAllowedOrganizationRolesForAdmin(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as OrganizationAllowedRolesViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Gets the join table between localities (orgs of orgtype = 1) and districts\r\n     */\r\n    getLocalityMapping(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Organization/getLocalityMapping\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetLocalityMapping(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetLocalityMapping(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetLocalityMapping(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as District_organization[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * @param organizationViewModel_orgid (optional) \r\n     * @param organizationViewModel_name (optional) \r\n     * @param organizationViewModel_primaryContactName (optional) \r\n     * @param organizationViewModel_primaryPhone (optional) \r\n     * @param organizationViewModel_secondaryPhone (optional) \r\n     * @param organizationViewModel_primaryEmail (optional) \r\n     * @param organizationViewModel_secondaryEmail (optional) \r\n     * @param organizationViewModel_orgtypeid (optional) \r\n     * @param organizationViewModel_orgtype (optional) \r\n     * @param organizationViewModel_updatedby (optional) \r\n     * @param organizationViewModel_isarchived (optional) \r\n     * @param organizationViewModel_createdby (optional) \r\n     * @param organizationViewModel_fips (optional) \r\n     * @param organizationViewModel_User_emailaddress (optional) \r\n     * @param organizationViewModel_User_firstname (optional) \r\n     * @param organizationViewModel_User_lastname (optional) \r\n     * @param organizationViewModel_User_orgid (optional) \r\n     * @param organizationViewModel_User_createdby (optional) \r\n     * @param organizationViewModel_addAdmin (optional) Flag to indicate if a new org admin (see User property above) should be created for a new organization\r\n     * @param organizationViewModel_formCaps (optional) List of the pre-screening caps for this organization by form\r\n     * @param organizationViewModel_districts (optional) \r\n     * @param organizationViewModel_non_program_roles (optional) \r\n     * @param organizationViewModel_programs (optional) \r\n     * @param organizationViewModel_subOrgs (optional) \r\n     * @param adminType (optional) \r\n     */\r\n    efOrgMapping(organizationViewModel_orgid?: number | undefined, organizationViewModel_name?: string | null | undefined, organizationViewModel_primaryContactName?: string | null | undefined, organizationViewModel_primaryPhone?: string | null | undefined, organizationViewModel_secondaryPhone?: string | null | undefined, organizationViewModel_primaryEmail?: string | null | undefined, organizationViewModel_secondaryEmail?: string | null | undefined, organizationViewModel_orgtypeid?: number | undefined, organizationViewModel_orgtype?: string | null | undefined, organizationViewModel_updatedby?: number | null | undefined, organizationViewModel_isarchived?: boolean | undefined, organizationViewModel_createdby?: number | undefined, organizationViewModel_fips?: number[] | null | undefined, organizationViewModel_User_emailaddress?: string | null | undefined, organizationViewModel_User_firstname?: string | null | undefined, organizationViewModel_User_lastname?: string | null | undefined, organizationViewModel_User_orgid?: number | undefined, organizationViewModel_User_createdby?: number | undefined, organizationViewModel_addAdmin?: boolean | undefined, organizationViewModel_formCaps?: OrganizationFormCapViewModel[] | null | undefined, organizationViewModel_districts?: OrganizationDistrictViewModel[] | null | undefined, organizationViewModel_non_program_roles?: OrganizationAllowedNonProgramRoleViewModel[] | null | undefined, organizationViewModel_programs?: OrganizationAllowedProgramViewModel[] | null | undefined, organizationViewModel_subOrgs?: OrganizationSubOrganizationViewModel[] | null | undefined, adminType?: AdminType | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Organization?\";\r\n        if (organizationViewModel_orgid === null)\r\n            throw new Error(\"The parameter 'organizationViewModel_orgid' cannot be null.\");\r\n        else if (organizationViewModel_orgid !== undefined)\r\n            url_ += \"OrganizationViewModel.orgid=\" + encodeURIComponent(\"\" + organizationViewModel_orgid) + \"&\";\r\n        if (organizationViewModel_name !== undefined && organizationViewModel_name !== null)\r\n            url_ += \"OrganizationViewModel.name=\" + encodeURIComponent(\"\" + organizationViewModel_name) + \"&\";\r\n        if (organizationViewModel_primaryContactName !== undefined && organizationViewModel_primaryContactName !== null)\r\n            url_ += \"OrganizationViewModel.primaryContactName=\" + encodeURIComponent(\"\" + organizationViewModel_primaryContactName) + \"&\";\r\n        if (organizationViewModel_primaryPhone !== undefined && organizationViewModel_primaryPhone !== null)\r\n            url_ += \"OrganizationViewModel.primaryPhone=\" + encodeURIComponent(\"\" + organizationViewModel_primaryPhone) + \"&\";\r\n        if (organizationViewModel_secondaryPhone !== undefined && organizationViewModel_secondaryPhone !== null)\r\n            url_ += \"OrganizationViewModel.secondaryPhone=\" + encodeURIComponent(\"\" + organizationViewModel_secondaryPhone) + \"&\";\r\n        if (organizationViewModel_primaryEmail !== undefined && organizationViewModel_primaryEmail !== null)\r\n            url_ += \"OrganizationViewModel.primaryEmail=\" + encodeURIComponent(\"\" + organizationViewModel_primaryEmail) + \"&\";\r\n        if (organizationViewModel_secondaryEmail !== undefined && organizationViewModel_secondaryEmail !== null)\r\n            url_ += \"OrganizationViewModel.secondaryEmail=\" + encodeURIComponent(\"\" + organizationViewModel_secondaryEmail) + \"&\";\r\n        if (organizationViewModel_orgtypeid === null)\r\n            throw new Error(\"The parameter 'organizationViewModel_orgtypeid' cannot be null.\");\r\n        else if (organizationViewModel_orgtypeid !== undefined)\r\n            url_ += \"OrganizationViewModel.orgtypeid=\" + encodeURIComponent(\"\" + organizationViewModel_orgtypeid) + \"&\";\r\n        if (organizationViewModel_orgtype !== undefined && organizationViewModel_orgtype !== null)\r\n            url_ += \"OrganizationViewModel.orgtype=\" + encodeURIComponent(\"\" + organizationViewModel_orgtype) + \"&\";\r\n        if (organizationViewModel_updatedby !== undefined && organizationViewModel_updatedby !== null)\r\n            url_ += \"OrganizationViewModel.updatedby=\" + encodeURIComponent(\"\" + organizationViewModel_updatedby) + \"&\";\r\n        if (organizationViewModel_isarchived === null)\r\n            throw new Error(\"The parameter 'organizationViewModel_isarchived' cannot be null.\");\r\n        else if (organizationViewModel_isarchived !== undefined)\r\n            url_ += \"OrganizationViewModel.isarchived=\" + encodeURIComponent(\"\" + organizationViewModel_isarchived) + \"&\";\r\n        if (organizationViewModel_createdby === null)\r\n            throw new Error(\"The parameter 'organizationViewModel_createdby' cannot be null.\");\r\n        else if (organizationViewModel_createdby !== undefined)\r\n            url_ += \"OrganizationViewModel.createdby=\" + encodeURIComponent(\"\" + organizationViewModel_createdby) + \"&\";\r\n        if (organizationViewModel_fips !== undefined && organizationViewModel_fips !== null)\r\n            organizationViewModel_fips && organizationViewModel_fips.forEach(item => { url_ += \"OrganizationViewModel.fips=\" + encodeURIComponent(\"\" + item) + \"&\"; });\r\n        if (organizationViewModel_User_emailaddress !== undefined && organizationViewModel_User_emailaddress !== null)\r\n            url_ += \"OrganizationViewModel.User.emailaddress=\" + encodeURIComponent(\"\" + organizationViewModel_User_emailaddress) + \"&\";\r\n        if (organizationViewModel_User_firstname !== undefined && organizationViewModel_User_firstname !== null)\r\n            url_ += \"OrganizationViewModel.User.firstname=\" + encodeURIComponent(\"\" + organizationViewModel_User_firstname) + \"&\";\r\n        if (organizationViewModel_User_lastname !== undefined && organizationViewModel_User_lastname !== null)\r\n            url_ += \"OrganizationViewModel.User.lastname=\" + encodeURIComponent(\"\" + organizationViewModel_User_lastname) + \"&\";\r\n        if (organizationViewModel_User_orgid === null)\r\n            throw new Error(\"The parameter 'organizationViewModel_User_orgid' cannot be null.\");\r\n        else if (organizationViewModel_User_orgid !== undefined)\r\n            url_ += \"OrganizationViewModel.User.orgid=\" + encodeURIComponent(\"\" + organizationViewModel_User_orgid) + \"&\";\r\n        if (organizationViewModel_User_createdby === null)\r\n            throw new Error(\"The parameter 'organizationViewModel_User_createdby' cannot be null.\");\r\n        else if (organizationViewModel_User_createdby !== undefined)\r\n            url_ += \"OrganizationViewModel.User.createdby=\" + encodeURIComponent(\"\" + organizationViewModel_User_createdby) + \"&\";\r\n        if (organizationViewModel_addAdmin === null)\r\n            throw new Error(\"The parameter 'organizationViewModel_addAdmin' cannot be null.\");\r\n        else if (organizationViewModel_addAdmin !== undefined)\r\n            url_ += \"OrganizationViewModel.addAdmin=\" + encodeURIComponent(\"\" + organizationViewModel_addAdmin) + \"&\";\r\n        if (organizationViewModel_formCaps !== undefined && organizationViewModel_formCaps !== null)\r\n            organizationViewModel_formCaps && organizationViewModel_formCaps.forEach((item, index) => {\r\n                for (const attr in item)\r\n        \t\t\tif (item.hasOwnProperty(attr)) {\r\n        \t\t\t\turl_ += \"OrganizationViewModel.formCaps[\" + index + \"].\" + attr + \"=\" + encodeURIComponent(\"\" + (item as any)[attr]) + \"&\";\r\n        \t\t\t}\r\n            });\r\n        if (organizationViewModel_districts !== undefined && organizationViewModel_districts !== null)\r\n            organizationViewModel_districts && organizationViewModel_districts.forEach((item, index) => {\r\n                for (const attr in item)\r\n        \t\t\tif (item.hasOwnProperty(attr)) {\r\n        \t\t\t\turl_ += \"OrganizationViewModel.districts[\" + index + \"].\" + attr + \"=\" + encodeURIComponent(\"\" + (item as any)[attr]) + \"&\";\r\n        \t\t\t}\r\n            });\r\n        if (organizationViewModel_non_program_roles !== undefined && organizationViewModel_non_program_roles !== null)\r\n            organizationViewModel_non_program_roles && organizationViewModel_non_program_roles.forEach((item, index) => {\r\n                for (const attr in item)\r\n        \t\t\tif (item.hasOwnProperty(attr)) {\r\n        \t\t\t\turl_ += \"OrganizationViewModel.non_program_roles[\" + index + \"].\" + attr + \"=\" + encodeURIComponent(\"\" + (item as any)[attr]) + \"&\";\r\n        \t\t\t}\r\n            });\r\n        if (organizationViewModel_programs !== undefined && organizationViewModel_programs !== null)\r\n            organizationViewModel_programs && organizationViewModel_programs.forEach((item, index) => {\r\n                for (const attr in item)\r\n        \t\t\tif (item.hasOwnProperty(attr)) {\r\n        \t\t\t\turl_ += \"OrganizationViewModel.programs[\" + index + \"].\" + attr + \"=\" + encodeURIComponent(\"\" + (item as any)[attr]) + \"&\";\r\n        \t\t\t}\r\n            });\r\n        if (organizationViewModel_subOrgs !== undefined && organizationViewModel_subOrgs !== null)\r\n            organizationViewModel_subOrgs && organizationViewModel_subOrgs.forEach((item, index) => {\r\n                for (const attr in item)\r\n        \t\t\tif (item.hasOwnProperty(attr)) {\r\n        \t\t\t\turl_ += \"OrganizationViewModel.subOrgs[\" + index + \"].\" + attr + \"=\" + encodeURIComponent(\"\" + (item as any)[attr]) + \"&\";\r\n        \t\t\t}\r\n            });\r\n        if (adminType === null)\r\n            throw new Error(\"The parameter 'adminType' cannot be null.\");\r\n        else if (adminType !== undefined)\r\n            url_ += \"AdminType=\" + encodeURIComponent(\"\" + adminType) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processEfOrgMapping(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processEfOrgMapping(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processEfOrgMapping(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as Organization;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class PDFClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    get(id: string): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/PDF/{id}\";\r\n        if (id === undefined || id === null)\r\n            throw new Error(\"The parameter 'id' must be defined.\");\r\n        url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGet(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGet(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGet(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class ProjectClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    getList(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Project/GetList\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetList(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetList(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetList(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProjectGrid[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getProject(id: number): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Project/{id}\";\r\n        if (id === undefined || id === null)\r\n            throw new Error(\"The parameter 'id' must be defined.\");\r\n        url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetProject(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetProject(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetProject(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProjectFormViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * does the user have any access to the project list?\r\n     */\r\n    canViewProjectList(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Project/CanViewProjectList\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCanViewProjectList(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCanViewProjectList(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCanViewProjectList(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getLookups(lookupNames?: string[] | null | undefined): ng.IPromise<{ [key: string]: LookupTableOfInteger[]; }> {\r\n        let url_ = this.baseUrl + \"/api/Project/GetLookups?\";\r\n        if (lookupNames !== undefined && lookupNames !== null)\r\n            lookupNames && lookupNames.forEach(item => { url_ += \"lookupNames=\" + encodeURIComponent(\"\" + item) + \"&\"; });\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetLookups(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetLookups(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetLookups(response: any): ng.IPromise<{ [key: string]: LookupTableOfInteger[]; }> {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as { [key: string]: LookupTableOfInteger[]; };\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve<{ [key: string]: LookupTableOfInteger[]; }>(null as any);\r\n    }\r\n\r\n    saveProject(model: ProjectFormViewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Project/SaveProject\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processSaveProject(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processSaveProject(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processSaveProject(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProjectFormViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    generateNVAPEmails(password: string): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Project/GenerateNVAPEmails\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(password);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGenerateNVAPEmails(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGenerateNVAPEmails(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGenerateNVAPEmails(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * genrate a report of imported data and emails nvap stuff\r\n     * @param runid (optional) logic app run id\r\n     */\r\n    generateNVAPImportEmails(runid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Project/GenerateNVAPImportEmails?\";\r\n        if (runid !== undefined && runid !== null)\r\n            url_ += \"runid=\" + encodeURIComponent(\"\" + runid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGenerateNVAPImportEmails(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGenerateNVAPImportEmails(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGenerateNVAPImportEmails(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class PublicAppClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    /**\r\n     * Apply Status Workflow\r\n    returns StatusWorkflowViewModel\r\n     */\r\n    get(appId: string): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/PublicApp/{appId}\";\r\n        if (appId === undefined || appId === null)\r\n            throw new Error(\"The parameter 'appId' must be defined.\");\r\n        url_ = url_.replace(\"{appId}\", encodeURIComponent(\"\" + appId));\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGet(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGet(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGet(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class ReadOnlyApplicationClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    get(id: string): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/ReadOnlyApplication/{id}\";\r\n        if (id === undefined || id === null)\r\n            throw new Error(\"The parameter 'id' must be defined.\");\r\n        url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGet(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGet(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGet(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    get2(id?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/ReadOnlyApplication/Get?\";\r\n        if (id !== undefined && id !== null)\r\n            url_ += \"id=\" + encodeURIComponent(\"\" + id) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGet2(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGet2(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGet2(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class ReportClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    /**\r\n     * Gets the list of reports the user can generate\r\n     * @return the id and name of each report the user can generate\r\n     */\r\n    getReportList(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Report/Get\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetReportList(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetReportList(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetReportList(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AvailableReportModel[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * generate report for passed in report_id and appids\r\n     * @param report_id (optional) \r\n     * @param appids (optional) \r\n     * @return FileStreamResult\r\n     */\r\n    generateReport(report_id?: number | undefined, appids?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Report/GenerateReport?\";\r\n        if (report_id === null)\r\n            throw new Error(\"The parameter 'report_id' cannot be null.\");\r\n        else if (report_id !== undefined)\r\n            url_ += \"report_id=\" + encodeURIComponent(\"\" + report_id) + \"&\";\r\n        if (appids !== undefined && appids !== null)\r\n            url_ += \"appids=\" + encodeURIComponent(\"\" + appids) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGenerateReport(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGenerateReport(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGenerateReport(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            return this.q.resolve(null as any);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    exportDataGrid(request: GridRequest): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Report/ExportDataGrid\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(request);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processExportDataGrid(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processExportDataGrid(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processExportDataGrid(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    exportSyipDataGrid(upcList: string[]): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Report/ExportSyipDataGrid\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(upcList);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processExportSyipDataGrid(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processExportSyipDataGrid(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processExportSyipDataGrid(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class RoleClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    /**\r\n     * Gets a lookup collection of Roles an Admin can administer\r\n     * @param adminType (optional) \r\n     */\r\n    getLookupRolesForAdmin(adminType?: AdminType | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Role/GetLookupRolesForAdmin?\";\r\n        if (adminType === null)\r\n            throw new Error(\"The parameter 'adminType' cannot be null.\");\r\n        else if (adminType !== undefined)\r\n            url_ += \"adminType=\" + encodeURIComponent(\"\" + adminType) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetLookupRolesForAdmin(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetLookupRolesForAdmin(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetLookupRolesForAdmin(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as RoleNameViewModel[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Returns the count of organizations and the count of users for admin\r\n     * @param adminType (optional) \r\n     */\r\n    getAllForAdminRole(adminType?: AdminType | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Role/GetAllForAdminRole?\";\r\n        if (adminType === null)\r\n            throw new Error(\"The parameter 'adminType' cannot be null.\");\r\n        else if (adminType !== undefined)\r\n            url_ += \"adminType=\" + encodeURIComponent(\"\" + adminType) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetAllForAdminRole(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetAllForAdminRole(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetAllForAdminRole(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as RoleAdminCountViewModel[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Returns a human-readable list of the privileges assoicated with the role and program\r\n     * @param pid (optional) \r\n     * @param role_id (optional) \r\n     * @param district_id (optional) \r\n     */\r\n    getPrivilegesForRole(pid?: number | null | undefined, role_id?: number | undefined, district_id?: number | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Role/GetPrivilegesForRole?\";\r\n        if (pid !== undefined && pid !== null)\r\n            url_ += \"pid=\" + encodeURIComponent(\"\" + pid) + \"&\";\r\n        if (role_id === null)\r\n            throw new Error(\"The parameter 'role_id' cannot be null.\");\r\n        else if (role_id !== undefined)\r\n            url_ += \"role_id=\" + encodeURIComponent(\"\" + role_id) + \"&\";\r\n        if (district_id !== undefined && district_id !== null)\r\n            url_ += \"district_id=\" + encodeURIComponent(\"\" + district_id) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetPrivilegesForRole(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetPrivilegesForRole(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetPrivilegesForRole(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Returns all users, with a has_role bool that determines if they have the given role_id/pid/district_id combination passed in\r\n     check if Root Admin can managed role\r\n     * @param pid (optional) \r\n     * @param role_id (optional) \r\n     * @param district_id (optional) \r\n     * @param adminType (optional) \r\n     */\r\n    getBulkUsersForAdminRole(pid?: number | null | undefined, role_id?: number | undefined, district_id?: number | null | undefined, adminType?: AdminType | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Role/GetBulkUsersForAdminRole?\";\r\n        if (pid !== undefined && pid !== null)\r\n            url_ += \"pid=\" + encodeURIComponent(\"\" + pid) + \"&\";\r\n        if (role_id === null)\r\n            throw new Error(\"The parameter 'role_id' cannot be null.\");\r\n        else if (role_id !== undefined)\r\n            url_ += \"role_id=\" + encodeURIComponent(\"\" + role_id) + \"&\";\r\n        if (district_id !== undefined && district_id !== null)\r\n            url_ += \"district_id=\" + encodeURIComponent(\"\" + district_id) + \"&\";\r\n        if (adminType === null)\r\n            throw new Error(\"The parameter 'adminType' cannot be null.\");\r\n        else if (adminType !== undefined)\r\n            url_ += \"adminType=\" + encodeURIComponent(\"\" + adminType) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetBulkUsersForAdminRole(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetBulkUsersForAdminRole(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetBulkUsersForAdminRole(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UserHasRole[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Returns all organizations, with a has_role bool that determines if they have the given role_id/pid combination passed in\r\n     * @param pid (optional) \r\n     * @param role_id (optional) \r\n     */\r\n    getOrgsForRole(pid?: number | null | undefined, role_id?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Role/GetOrgsForRole?\";\r\n        if (pid !== undefined && pid !== null)\r\n            url_ += \"pid=\" + encodeURIComponent(\"\" + pid) + \"&\";\r\n        if (role_id === null)\r\n            throw new Error(\"The parameter 'role_id' cannot be null.\");\r\n        else if (role_id !== undefined)\r\n            url_ += \"role_id=\" + encodeURIComponent(\"\" + role_id) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetOrgsForRole(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetOrgsForRole(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetOrgsForRole(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as OrgHasRole[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Returns all organizations, with a has_role bool that determines if they have the given role_id/pid combination passed in\r\n     * @param pid (optional) \r\n     * @param role_id (optional) \r\n     */\r\n    getOrgsForRoleForDistrictAdmin(pid?: number | null | undefined, role_id?: number | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Role/GetOrgsForRoleForDistrictAdmin?\";\r\n        if (pid !== undefined && pid !== null)\r\n            url_ += \"pid=\" + encodeURIComponent(\"\" + pid) + \"&\";\r\n        if (role_id === null)\r\n            throw new Error(\"The parameter 'role_id' cannot be null.\");\r\n        else if (role_id !== undefined)\r\n            url_ += \"role_id=\" + encodeURIComponent(\"\" + role_id) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetOrgsForRoleForDistrictAdmin(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetOrgsForRoleForDistrictAdmin(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetOrgsForRoleForDistrictAdmin(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as OrgHasRole[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Bulk assign and/or remove a role one or more users\r\n     */\r\n    bulkAssignRolesForUser(model: BulkAssignUserRoleModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Role/BulkAssignRolesForUser\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processBulkAssignRolesForUser(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processBulkAssignRolesForUser(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processBulkAssignRolesForUser(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Bulk assign and/or remove a role to one or more organizations\r\n     */\r\n    bulkAssignRolesForOrg(model: BulkAssignOrgRoleModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Role/BulkAssignRolesForOrg\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processBulkAssignRolesForOrg(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processBulkAssignRolesForOrg(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processBulkAssignRolesForOrg(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class ScreeningClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    /**\r\n     * Returns a list of all previous performed validations\r\n     * @param appid (optional) \r\n     */\r\n    getValidationHistory(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Screening/GetValidationHistory?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetValidationHistory(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetValidationHistory(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetValidationHistory(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as Validation_event[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getValidationData(appId?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Screening/GetValidationData?\";\r\n        if (appId !== undefined && appId !== null)\r\n            url_ += \"appId=\" + encodeURIComponent(\"\" + appId) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetValidationData(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetValidationData(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetValidationData(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ScreeningViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    canPerformDistrictReviewerValidation(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Screening/canPerformDistrictReviewerValidation?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCanPerformDistrictReviewerValidation(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCanPerformDistrictReviewerValidation(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCanPerformDistrictReviewerValidation(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    canPerformCentralOfficeValidation(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Screening/canPerformCentralOfficeValidation?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCanPerformCentralOfficeValidation(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCanPerformCentralOfficeValidation(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCanPerformCentralOfficeValidation(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Perform a validation for an application\r\n     */\r\n    performValidation(model: ScreeningEventsViewModelDeprecated): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Screening/PerformValidation\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processPerformValidation(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processPerformValidation(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processPerformValidation(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Perform a validation for an application\r\n     */\r\n    saveValidation(model: ScreeningEventsViewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Screening/SaveValidation\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processSaveValidation(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processSaveValidation(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processSaveValidation(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * @deprecated\r\n     */\r\n    saveValidationDeprecated(model: ScreeningEventsViewModelDeprecated): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Screening/SaveValidationDeprecated\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processSaveValidationDeprecated(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processSaveValidationDeprecated(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processSaveValidationDeprecated(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * @deprecated\r\n     */\r\n    submitValidationDeprecated(model: ScreeningEventsViewModelDeprecated): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Screening/SubmitValidationDeprecated\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processSubmitValidationDeprecated(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processSubmitValidationDeprecated(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processSubmitValidationDeprecated(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ServiceResult;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    submitValidation(model: ScreeningEventsViewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Screening/SubmitValidation\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processSubmitValidation(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processSubmitValidation(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processSubmitValidation(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ServiceResult;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Perform a Bulk validation for applications\r\n     */\r\n    bulkPerformValidation(validationViewModels: ScreeningEventsViewModelDeprecated[]): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Screening/BulkPerformValidation\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(validationViewModels);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processBulkPerformValidation(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processBulkPerformValidation(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processBulkPerformValidation(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Returns a List of all possible statuses to rollback to\r\n     * @param appid (optional) \r\n     */\r\n    getPossibleRollbacks(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Screening/GetPossibleRollbacks?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetPossibleRollbacks(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetPossibleRollbacks(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetPossibleRollbacks(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Gets validation events available to the public and strips comments and other unused attributes\r\n     * @param appid (optional) \r\n     */\r\n    getPublicValidationHistory(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Screening/GetPublicValidationHistory?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetPublicValidationHistory(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetPublicValidationHistory(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetPublicValidationHistory(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as Validation_event[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class SyipClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    getSyipRecords(r: GetSyipRecordsRequest): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Syip/GetSyipRecords\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(r);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetSyipRecords(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetSyipRecords(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetSyipRecords(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as GridResultsOfSyipRecordGridItem;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * gets array of unique syip project values for filter\r\n     */\r\n    getSyipFilterValues(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Syip/GetSyipFilterValues\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetSyipFilterValues(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetSyipFilterValues(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetSyipFilterValues(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SyipFilters;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getSyipRecord(upc?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Syip/GetSyipRecord?\";\r\n        if (upc !== undefined && upc !== null)\r\n            url_ += \"upc=\" + encodeURIComponent(\"\" + upc) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetSyipRecord(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetSyipRecord(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetSyipRecord(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SyipRecordForView;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * does the user have any access to view syip records?\r\n     */\r\n    canViewSyipRecord(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Syip/CanViewSyipRecord\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCanViewSyipRecord(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCanViewSyipRecord(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCanViewSyipRecord(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * does the user have any access to update syip records?\r\n     */\r\n    canUpdateSyipRecord(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Syip/CanUpdateSyipRecord\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCanUpdateSyipRecord(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCanUpdateSyipRecord(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCanUpdateSyipRecord(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getLookups(lookupNames: string[]): ng.IPromise<{ [key: string]: LookupTableOfInteger[]; }> {\r\n        let url_ = this.baseUrl + \"/api/Syip/GetLookups\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(lookupNames);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetLookups(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetLookups(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetLookups(response: any): ng.IPromise<{ [key: string]: LookupTableOfInteger[]; }> {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as { [key: string]: LookupTableOfInteger[]; };\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve<{ [key: string]: LookupTableOfInteger[]; }>(null as any);\r\n    }\r\n\r\n    getSyipRecordByUPC(upc?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Syip/GetSyipRecordByUPC?\";\r\n        if (upc !== undefined && upc !== null)\r\n            url_ += \"upc=\" + encodeURIComponent(\"\" + upc) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetSyipRecordByUPC(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetSyipRecordByUPC(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetSyipRecordByUPC(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SyipUPCFilterItem[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    putSyipRecord(model: Syip_record): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Syip/PutSyipRecord\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"PUT\",\r\n            responseType: \"arraybuffer\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processPutSyipRecord(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processPutSyipRecord(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processPutSyipRecord(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    deleteAllSyipData(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Syip/DeleteAllSyipData\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processDeleteAllSyipData(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processDeleteAllSyipData(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processDeleteAllSyipData(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    uploadDirectImportFile(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/Syip/UploadDirectImportFile\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processUploadDirectImportFile(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processUploadDirectImportFile(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processUploadDirectImportFile(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ServiceResultOfString;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class UserClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    hasAccess(targetUid?: number | null | undefined, actionName?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/User/HasAccess?\";\r\n        if (targetUid !== undefined && targetUid !== null)\r\n            url_ += \"targetUid=\" + encodeURIComponent(\"\" + targetUid) + \"&\";\r\n        if (actionName !== undefined && actionName !== null)\r\n            url_ += \"actionName=\" + encodeURIComponent(\"\" + actionName) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processHasAccess(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processHasAccess(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processHasAccess(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getUserForAdmin(userId?: number | undefined, adminType?: AdminType | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/User/GetUserForAdmin?\";\r\n        if (userId === null)\r\n            throw new Error(\"The parameter 'userId' cannot be null.\");\r\n        else if (userId !== undefined)\r\n            url_ += \"userId=\" + encodeURIComponent(\"\" + userId) + \"&\";\r\n        if (adminType === null)\r\n            throw new Error(\"The parameter 'adminType' cannot be null.\");\r\n        else if (adminType !== undefined)\r\n            url_ += \"adminType=\" + encodeURIComponent(\"\" + adminType) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetUserForAdmin(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetUserForAdmin(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetUserForAdmin(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UserViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Gets a collection of allowed user roles (inicluding districts) for a specific organization\r\n     * @param orgid (optional) Organization ID\r\n     * @param adminType (optional) \r\n     */\r\n    getAllowedOrganizationRolesForAdmin(orgid?: number | undefined, adminType?: AdminType | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/User/GetAllowedOrganizationRolesForAdmin?\";\r\n        if (orgid === null)\r\n            throw new Error(\"The parameter 'orgid' cannot be null.\");\r\n        else if (orgid !== undefined)\r\n            url_ += \"orgid=\" + encodeURIComponent(\"\" + orgid) + \"&\";\r\n        if (adminType === null)\r\n            throw new Error(\"The parameter 'adminType' cannot be null.\");\r\n        else if (adminType !== undefined)\r\n            url_ += \"adminType=\" + encodeURIComponent(\"\" + adminType) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetAllowedOrganizationRolesForAdmin(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetAllowedOrganizationRolesForAdmin(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetAllowedOrganizationRolesForAdmin(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UserAllowedRolesViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    add(model: AdminTypeUserViewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/User/Add\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processAdd(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processAdd(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processAdd(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as User2;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getPage(request: GridRequest): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/User/GetPage\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(request);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetPage(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetPage(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetPage(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as GridResultOfUserGridViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getPageDistrictAdmin(request: GridRequest): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/User/GetPageDistrictAdmin\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(request);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetPageDistrictAdmin(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetPageDistrictAdmin(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetPageDistrictAdmin(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as GridResultOfUserGridViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    getPageOrgAdmin(request: GridRequest): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/User/GetPageOrgAdmin\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(request);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetPageOrgAdmin(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetPageOrgAdmin(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetPageOrgAdmin(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as GridResultOfUserGridViewModel;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    updateEmailPreference(model: AdminTypeUserViewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/User/UpdateEmailPreference\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processUpdateEmailPreference(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processUpdateEmailPreference(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processUpdateEmailPreference(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    edit(model: AdminTypeUserViewModel): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/User/Edit\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processEdit(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processEdit(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processEdit(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class ValidationToolClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    /**\r\n     * Gets the view model for the Validation Side Panel\r\n     * @param appsequence (optional) \r\n     * @param type (optional) \r\n     */\r\n    getValidationQuestions(appsequence?: number | undefined, type?: ValidationTypeIds | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/ValidationTool/GetValidationQuestions?\";\r\n        if (appsequence === null)\r\n            throw new Error(\"The parameter 'appsequence' cannot be null.\");\r\n        else if (appsequence !== undefined)\r\n            url_ += \"appsequence=\" + encodeURIComponent(\"\" + appsequence) + \"&\";\r\n        if (type === null)\r\n            throw new Error(\"The parameter 'type' cannot be null.\");\r\n        else if (type !== undefined)\r\n            url_ += \"type=\" + encodeURIComponent(\"\" + type) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetValidationQuestions(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetValidationQuestions(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetValidationQuestions(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ValidationSectionViewModel[];\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * looks for validation tool answers not marked as valid (status_id 1)\r\n     * @param appid (optional) \r\n     * @param type (optional) \r\n     */\r\n    checkValidationAnswersComplete(appid?: string | null | undefined, type?: ValidationTypeIds | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/ValidationTool/CheckValidationAnswersComplete?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        if (type === null)\r\n            throw new Error(\"The parameter 'type' cannot be null.\");\r\n        else if (type !== undefined)\r\n            url_ += \"type=\" + encodeURIComponent(\"\" + type) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCheckValidationAnswersComplete(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCheckValidationAnswersComplete(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCheckValidationAnswersComplete(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    /**\r\n     * Determines whether the user can validate the application\r\n     * @param appid (optional) \r\n     */\r\n    canValidate(appid?: string | null | undefined): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/ValidationTool/CanValidate?\";\r\n        if (appid !== undefined && appid !== null)\r\n            url_ += \"appid=\" + encodeURIComponent(\"\" + appid) + \"&\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCanValidate(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCanValidate(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCanValidate(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    saveValidationAnswers(model: ValidationSectionViewModel[]): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/api/ValidationTool/SaveValidationAnswers\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        const content_ = JSON.stringify(model);\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"POST\",\r\n            responseType: \"arraybuffer\",\r\n            data: content_,\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Content-Type\": \"application/json\",\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processSaveValidationAnswers(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processSaveValidationAnswers(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processSaveValidationAnswers(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport class VersionClient {\r\n    private baseUrl: string | undefined = undefined;\r\n    private http: ng.IHttpService;\r\n    private q: ng.IQService;\r\n    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n    constructor($http: ng.IHttpService, $q: ng.IQService, baseUrl?: string) {\r\n        this.http = $http;\r\n        this.q = $q;\r\n        this.baseUrl = baseUrl ?? \"\";\r\n    }\r\n\r\n    getDefault(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/version\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            responseType: \"arraybuffer\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/octet-stream\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processGetDefault(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processGetDefault(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processGetDefault(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200 || status === 206) {\r\n            const contentDisposition = response.headers ? response.headers(\"content-disposition\") : undefined;\r\n            let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n            let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n            if (fileName) {\r\n                fileName = decodeURIComponent(fileName);\r\n            } else {\r\n                fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n                fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n            }\r\n            return this.q.resolve({ fileName: fileName, status: status, data: new Blob([response.data]), headers: _headers });\r\n        } else if (status !== 200 && status !== 204) {\r\n            return blobToText(new Blob([response.data]), this.q).then((_responseText: string) => {\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n            });\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    commit(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/version/Commit\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processCommit(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processCommit(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processCommit(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n\r\n    version(): ng.IPromise {\r\n        let url_ = this.baseUrl + \"/version/Version\";\r\n        url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n        var options_: ng.IRequestConfig = {\r\n            url: url_,\r\n            method: \"GET\",\r\n            transformResponse: [],\r\n            headers: {\r\n                \"Accept\": \"application/json\"\r\n            }\r\n        };\r\n\r\n        return this.http(options_).then((_response) => {\r\n            return this.processVersion(_response);\r\n        }, (_response) => {\r\n            if (_response.status)\r\n                return this.processVersion(_response);\r\n            throw _response;\r\n        });\r\n    }\r\n\r\n    protected processVersion(response: any): ng.IPromise {\r\n        const status = response.status;\r\n\r\n        let _headers: any = {};\r\n        if (status === 200) {\r\n            const _responseText = response.data;\r\n            let result200: any = null;\r\n            result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\r\n            return this.q.resolve(result200);\r\n\r\n        } else if (status !== 200 && status !== 204) {\r\n            const _responseText = response.data;\r\n            return throwException(this.q, \"An unexpected server error occurred.\", status, _responseText, _headers);\r\n        }\r\n        return this.q.resolve(null as any);\r\n    }\r\n}\r\n\r\nexport interface LoginResultModel {\r\n    result?: SignInResult | undefined;\r\n    newToken?: string | undefined;\r\n    resetPassword?: string | undefined;\r\n    warningMessage?: string | undefined;\r\n    logoutTime: number;\r\n}\r\n\r\nexport interface SignInResult {\r\n    Succeeded: boolean;\r\n    IsLockedOut: boolean;\r\n    IsNotAllowed: boolean;\r\n    RequiresTwoFactor: boolean;\r\n}\r\n\r\nexport interface LoginRequestModel {\r\n    Email: string;\r\n    Password: string;\r\n    RememberMe: boolean;\r\n}\r\n\r\nexport interface ChangePasswordViewModel {\r\n    OldPassword: string;\r\n    Password: string;\r\n    ConfirmPassword?: string | undefined;\r\n}\r\n\r\nexport interface ForgotPasswordViewModel {\r\n    Email: string;\r\n}\r\n\r\nexport interface ResetPasswordViewModel {\r\n    Email: string;\r\n    Password: string;\r\n    ConfirmPassword?: string | undefined;\r\n    Code?: string | undefined;\r\n}\r\n\r\nexport interface ConfirmAccountResult {\r\n    Code?: string | undefined;\r\n    Email?: string | undefined;\r\n}\r\n\r\nexport interface AccountInfoViewModel {\r\n    app?: PublicAppSettingsViewModel | undefined;\r\n    user?: UserSessionViewModel | undefined;\r\n}\r\n\r\nexport interface PublicAppSettingsViewModel {\r\n    LoggedIn: boolean;\r\n    Lookups?: AuthorizedLookupTables | undefined;\r\n    IsPublicallyVisible: boolean;\r\n    StorageUrl?: string | undefined;\r\n    EnableDebugTool: boolean;\r\n}\r\n\r\nexport interface AuthorizedLookupTables {\r\n    committedSources?: LookupTableOfInteger[] | undefined;\r\n    upcType?: LookupTableOfInteger[] | undefined;\r\n    sgrbProjectDescriptions?: LookupTableOfInteger[] | undefined;\r\n    sgrbDeficientStatus?: LookupTableOfInteger[] | undefined;\r\n    sgrpProjectTypes?: LookupTableOfInteger[] | undefined;\r\n    categoryOfProperty?: LookupTableOfInteger[] | undefined;\r\n    vedpPropertyType?: LookupTableOfInteger[] | undefined;\r\n    zonedOnly?: LookupTableOfInteger[] | undefined;\r\n    accessProvision?: LookupTableOfInteger[] | undefined;\r\n    approvedSubmitted?: LookupTableOfInteger[] | undefined;\r\n    formFiscalYears?: LookupTableOfInteger[] | undefined;\r\n    translation7?: LookupTableOfInteger[] | undefined;\r\n    translation10?: LookupTableOfInteger[] | undefined;\r\n    smartScaleEnhancements?: SmartScaleEnhancement[] | undefined;\r\n    projectComments?: LookupTableOfShort[] | undefined;\r\n    projectStatuses?: LookupTableOfByte[] | undefined;\r\n    sgrbProjectDescriptionsY20?: LookupTableOfInteger[] | undefined;\r\n    sgrbDeficientStatusY20?: LookupTableOfInteger[] | undefined;\r\n    reviewPriority?: LookupTableOfInteger[] | undefined;\r\n    contingencyOptions?: LookupTableOfInteger[] | undefined;\r\n    organizations?: LookupTableOfInteger[] | undefined;\r\n    organizationTypes?: LookupTableOfInteger[] | undefined;\r\n    improvementSubcategories?: LookupTableOfInteger[] | undefined;\r\n    improvementCategories?: LookupTableOfInteger[] | undefined;\r\n    factors?: LookupTableOfInteger[] | undefined;\r\n    eligibleNetworks?: LookupTableOfInteger[] | undefined;\r\n    planningSources?: LookupTableOfInteger[] | undefined;\r\n    grantPrograms?: LookupTableOfInteger[] | undefined;\r\n    projectDeliveries?: LookupTableOfInteger[] | undefined;\r\n    projectDesigns?: LookupTableOfInteger[] | undefined;\r\n    projectPhaseTypes?: LookupTableOfInteger[] | undefined;\r\n    projectPhaseStatuses?: LookupTableOfInteger[] | undefined;\r\n    projectPhasePercentComplete?: LookupTableOfInteger[] | undefined;\r\n    projectTypes?: LookupTableOfInteger[] | undefined;\r\n    projectAdministrators?: LookupTableOfInteger[] | undefined;\r\n    attachmentTypes?: LookupTableOfInteger[] | undefined;\r\n    measures?: LookupTableOfInteger[] | undefined;\r\n    measureQuestions?: LookupTableOfInteger[] | undefined;\r\n    programTypes?: LookupTableOfInteger[] | undefined;\r\n    formTypes?: FormLookupTableOfInteger[] | undefined;\r\n    formSections?: LookupTableOfInteger[] | undefined;\r\n    applicationStatuses?: LookupTableOfInteger[] | undefined;\r\n    internalApplicationStatuses?: LookupTableOfInteger[] | undefined;\r\n    districts?: LookupTableOfInteger[] | undefined;\r\n    mpos?: LookupTableOfInteger[] | undefined;\r\n    pdcs?: LookupTableOfInteger[] | undefined;\r\n    taCatOfElig?: LookupTableOfInteger[] | undefined;\r\n    taDesignPercComp?: LookupTableOfInteger[] | undefined;\r\n    taEngPerfBy?: LookupTableOfInteger[] | undefined;\r\n    taLocalPop?: LookupTableOfInteger[] | undefined;\r\n    taMoAfterOct?: LookupTableOfInteger[] | undefined;\r\n    taMpoAreas?: LookupTableOfInteger[] | undefined;\r\n    taPedBikePrimaryFunc?: LookupTableOfInteger[] | undefined;\r\n    taPedBikeTransFunc?: LookupTableOfInteger[] | undefined;\r\n    taSponsorResponsibleProjectManager?: LookupTableOfInteger[] | undefined;\r\n    taPmExpTypes?: LookupTableOfInteger[] | undefined;\r\n    taRespPersonExp?: LookupTableOfInteger[] | undefined;\r\n    taRowSit?: LookupTableOfInteger[] | undefined;\r\n    revProjType?: LookupTableOfInteger[] | undefined;\r\n    revAdminBy?: LookupTableOfInteger[] | undefined;\r\n    revHasRwPhase?: LookupTableOfInteger[] | undefined;\r\n    revHasPePhase?: LookupTableOfInteger[] | undefined;\r\n    revHasCnPhase?: LookupTableOfInteger[] | undefined;\r\n    revFy1o2?: LookupTableOfInteger[] | undefined;\r\n    revScopeOfWork?: LookupTableOfInteger[] | undefined;\r\n    revScopeOfWorkY19?: LookupTableOfInteger[] | undefined;\r\n    hsipAreaLocationCode?: LookupTableOfInteger[] | undefined;\r\n    hsipDistrict?: LookupTableOfInteger[] | undefined;\r\n    hsipRegion?: LookupTableOfInteger[] | undefined;\r\n    hsipFederalSystemCode?: LookupTableOfInteger[] | undefined;\r\n    hsipFunctionalClassCode?: LookupTableOfInteger[] | undefined;\r\n    hsipTypeOfPlans?: LookupTableOfInteger[] | undefined;\r\n    hsipSystem?: LookupTableOfInteger[] | undefined;\r\n    hsipSsiSystems?: LookupTableOfInteger[] | undefined;\r\n    hsipCounty?: LookupTableOfInteger[] | undefined;\r\n    hsipJurisdictions?: LookupTableOfInteger[] | undefined;\r\n    hsipTrafficControl?: LookupTableOfInteger[] | undefined;\r\n    hsipCrashSeverities?: LookupTableOfInteger[] | undefined;\r\n    hsipCrashSeveritiesCombos?: LookupTableOfInteger[] | undefined;\r\n    hsipCrashTypes?: LookupTableOfInteger[] | undefined;\r\n    hsipPlanTypes?: LookupTableOfInteger[] | undefined;\r\n    hsipProgramTypes?: LookupTableOfInteger[] | undefined;\r\n    hsipProjectTypes?: LookupTableOfInteger[] | undefined;\r\n    hsipRailProjectTypes?: LookupTableOfInteger[] | undefined;\r\n    hsipRailProgramTypes?: LookupTableOfInteger[] | undefined;\r\n    hsipSsiAreaLocationCodes?: LookupTableOfInteger[] | undefined;\r\n    hsipSsiFocusCrashTypes?: LookupTableOfInteger[] | undefined;\r\n    hsipSsiFocusFacilityTypes?: LookupTableOfInteger[] | undefined;\r\n    hsipSsiFocusTypes?: LookupTableOfInteger[] | undefined;\r\n    hsipSsiProposedSystemticImprovements?: LookupTableOfInteger[] | undefined;\r\n    hsipSsiRiskFactors?: LookupTableOfInteger[] | undefined;\r\n    hsipSsiCountermeasures?: LookupTableOfInteger[] | undefined;\r\n    hsipSsiCrashThresholdUrban?: LookupTableOfInteger[] | undefined;\r\n    hsipSsiCrashThresholdRural?: LookupTableOfInteger[] | undefined;\r\n    hsipSsiCrashTypes?: LookupTableOfInteger[] | undefined;\r\n    jurisdictions?: LookupTableOfInteger[] | undefined;\r\n    psPrincipleImprovements?: LookupTableOfInteger[] | undefined;\r\n    psProgramRequested?: LookupTableOfInteger[] | undefined;\r\n}\r\n\r\nexport interface LookupTableOfInteger {\r\n    name?: string | undefined;\r\n    id: number;\r\n    isarchived: boolean;\r\n    parent_lookup_id?: number | undefined;\r\n    displayorder: number;\r\n}\r\n\r\nexport interface SmartScaleEnhancement {\r\n    title?: string | undefined;\r\n    id: number;\r\n    options?: SmartScaleEnhancementOption[] | undefined;\r\n}\r\n\r\nexport interface SmartScaleEnhancementOption {\r\n    id: number;\r\n    tooltip?: string | undefined;\r\n    model?: string | undefined;\r\n    comment?: string | undefined;\r\n    displayorder: number;\r\n    name?: string | undefined;\r\n}\r\n\r\nexport interface LookupTableOfShort {\r\n    name?: string | undefined;\r\n    id: number;\r\n    isarchived: boolean;\r\n    parent_lookup_id?: number | undefined;\r\n    displayorder: number;\r\n}\r\n\r\nexport interface LookupTableOfByte {\r\n    name?: string | undefined;\r\n    id: number;\r\n    isarchived: boolean;\r\n    parent_lookup_id?: number | undefined;\r\n    displayorder: number;\r\n}\r\n\r\nexport interface FormLookupTableOfInteger extends LookupTableOfInteger {\r\n    object_name?: string | undefined;\r\n}\r\n\r\nexport interface UserSessionViewModel {\r\n    emailaddress?: string | undefined;\r\n    firstname?: string | undefined;\r\n    lastname?: string | undefined;\r\n    uid: number;\r\n    orgid: number;\r\n    orgtypeid: number;\r\n    isOrgAdmin: boolean;\r\n    isDistrictAdmin: boolean;\r\n    isPortalAdmin: boolean;\r\n    isWorkflowAdmin: boolean;\r\n    isNvapAdmin: boolean;\r\n    canBulkChangeStatus: boolean;\r\n    canScreeningBypass: boolean;\r\n    isRootAdministrator: boolean;\r\n    canStatusWorkflow: boolean;\r\n    canPrioritizeAnyApps: boolean;\r\n    canUseIntakeTool: boolean;\r\n    lastloggedinon?: Date | undefined;\r\n    adminForDistricts?: DistrictAdminViewModel[] | undefined;\r\n    OrgDistricts?: number[] | undefined;\r\n    viewProjectAccessLevels?: Access_level[] | undefined;\r\n    canSeeAdminTool: boolean;\r\n    canEditReviewPriority: boolean;\r\n    canViewScreenings: boolean;\r\n    canMarkHighRisk: boolean;\r\n    canAccessSYIPRecord: boolean;\r\n}\r\n\r\nexport interface DistrictAdminViewModel {\r\n    id: number;\r\n    name?: string | undefined;\r\n}\r\n\r\nexport interface Access_level {\r\n    id: number;\r\n    name?: string | undefined;\r\n}\r\n\r\nexport interface StatusControllerWorkflowViewModel {\r\n    WorkflowModels?: StatusControllerWorkflowModel[] | undefined;\r\n    TotalInvalid: number;\r\n    TotalValid: number;\r\n    TotalAttempted: number;\r\n}\r\n\r\nexport interface StatusControllerWorkflowModel {\r\n    AppId?: string | undefined;\r\n    AppName?: string | undefined;\r\n    OrganizationName?: string | undefined;\r\n    StatusName?: string | undefined;\r\n    ProgramId: number;\r\n    ProgramName?: string | undefined;\r\n    ApplicationType?: string | undefined;\r\n    FiscalYear?: number | undefined;\r\n    TargetStatusId: number;\r\n    TargetStatusName?: string | undefined;\r\n    HasValidWorkflow: boolean;\r\n    CreateFullApp: boolean;\r\n    CreateRevision: boolean;\r\n    ArchiveValidationEvents: boolean;\r\n    ArchiveValidationAnswers: boolean;\r\n}\r\n\r\nexport interface ScreeningBypassWorkflowViewModel {\r\n    WorkflowModels?: ScreeningBypassWorkflowModel[] | undefined;\r\n    TotalInvalid: number;\r\n    TotalValid: number;\r\n    TotalAttempted: number;\r\n}\r\n\r\nexport interface ScreeningBypassWorkflowModel {\r\n    AppId?: string | undefined;\r\n    AppName?: string | undefined;\r\n    OrganizationName?: string | undefined;\r\n    StatusName?: string | undefined;\r\n    ProgramId: number;\r\n    ProgramName?: string | undefined;\r\n    ApplicationType?: string | undefined;\r\n    FiscalYear?: number | undefined;\r\n    TargetStatusId: number;\r\n    TargetStatusName?: string | undefined;\r\n    HasValidWorkflow: boolean;\r\n    ValidationEvent: ValidationEventTypeIds;\r\n}\r\n\r\nexport enum ValidationEventTypeIds {\r\n    District_Validation = 1,\r\n    Revenue_Sharing_District_Validation = 2,\r\n    Central_Office_Validation = 3,\r\n    Rolled_Back_to_District_Validation = 4,\r\n    Rolled_Back_to_Central_Office_Validation = 5,\r\n    TA_Central_Office_Validation = 6,\r\n    District_Bridge_Engineer_Review = 7,\r\n    Central_Office_Bridge_Engineer_Review = 8,\r\n    Pavement_District_Validation = 9,\r\n    Pavement_Central_Office_Validation = 10,\r\n    Bridge_District_Validation = 11,\r\n    Bridge_Central_Office_Validation = 12,\r\n    OIPI_COSS_Pre_Screening = 13,\r\n    OIPI_Regional_Network_Pre_Screening = 14,\r\n    OIPI_UDA_Pre_Screening = 15,\r\n    OIPI_Safety_Pre_Screening = 16,\r\n    District_Pre_Screening = 17,\r\n    Central_Office_Pre_Screening = 18,\r\n    OIPI_COSS_Screening = 19,\r\n    OIPI_Regional_Network_Screening = 20,\r\n    OIPI_UDA_Screening = 21,\r\n    OIPI_Safety_Screening = 22,\r\n    MMWG_Review = 23,\r\n    EWG_Review_from_MMWG_ = 24,\r\n    EWG_Review_from_CO_ = 25,\r\n    Rolled_Back_to_MMWG_Screening = 26,\r\n    District_Validation_Initial_ = 27,\r\n    District_Validation_Subsequent_ = 28,\r\n    Central_Office_Validation_District_Pass_ = 29,\r\n    Central_Office_Validation_District_Fail_ = 30,\r\n    Rolled_Back_to_Scoring = 31,\r\n    _10_Review_by_MMWG = 32,\r\n    _10_Review_by_Central_Office = 33,\r\n    Local_Liaison_Validation = 34,\r\n    Rolled_Back_to_Local_Liaison_Validation = 35,\r\n    District_Bridge_Engineer_Review_FY20 = 36,\r\n    Central_Office_Bridge_Engineer_Review_FY20 = 37,\r\n    Bridge_District_Validation_FY20 = 38,\r\n    Bridge_Central_Office_Validation_FY20 = 39,\r\n    Rolled_Back_to_District_Bridge_Engineer_Review = 40,\r\n    Rolled_Back_to_Central_Office_Bridge_Engineer_Review = 41,\r\n    TA_Pre_app_District_Reviewer = 42,\r\n    TA_Pre_app_Central_Office_Validator = 43,\r\n    Rolled_Back_To_TA_Pre_app_Central_Office_Validation = 44,\r\n    RS_Pre_app_District_Reviewer = 45,\r\n    RS_Pre_app_Central_Office_Validator = 46,\r\n    Rolled_Back_To_RS_Pre_app_Central_Office_Validation = 47,\r\n    TA_Pre_app_Pre_Screening_Bypassed = 48,\r\n    Rolled_Back_To_Pre_Screening = 49,\r\n    Revenue_Sharing_Central_Office_Validation = 50,\r\n    RS_Pre_app_Pre_Screening_Bypassed = 51,\r\n    District_Bridge_Engineer_Review_FY21 = 53,\r\n    Central_Office_Bridge_Engineer_Review_FY21 = 54,\r\n    Bridge_District_Validation_FY21 = 55,\r\n    Bridge_Central_Office_Validation_FY21 = 56,\r\n    SS_District_PreScreening_FY22 = 57,\r\n    SS_Central_Office_PreScreening_FY22 = 58,\r\n    SS_OIPI_Screening_FY22 = 59,\r\n    MMWG_COSS_Review = 60,\r\n    MMWG_Regional_Network_Review = 61,\r\n    MMWG_UDA_Review = 62,\r\n    MMWG_Safety_Review = 63,\r\n    Pavement_District_Validation_FY22 = 64,\r\n    Pavement_Central_Office_Validation_FY22 = 65,\r\n    District_Bridge_Engineer_Review_FY22 = 66,\r\n    Bridge_District_Validation_FY22 = 67,\r\n    Central_Office_Bridge_Engineer_Review_FY22 = 68,\r\n    Bridge_Central_Office_Validation_FY22 = 69,\r\n    PS_District_Review = 70,\r\n    PS_District_Validation = 71,\r\n    PS_CO_Validation = 72,\r\n    Rolled_Back_To_Submitted = 73,\r\n    Rolled_Back_To_District_Review = 74,\r\n    RS_District_PreScreening_FY23 = 75,\r\n    RS_Central_Office_PreScreening_FY23 = 76,\r\n    TA_District_PreScreening_FY23 = 77,\r\n    District_Bridge_Engineer_Pre_App_Review_FY23 = 78,\r\n    Bridge_District_Pre_App_Validation_FY23 = 79,\r\n    Central_Office_Bridge_Engineer_Pre_App_Review_FY23 = 80,\r\n    Bridge_Central_Office_Pre_App_Validation_FY23 = 81,\r\n    District_Bridge_Engineer_Full_App_Review_FY23 = 82,\r\n    Bridge_District_Full_App_Validation_FY23 = 83,\r\n    Central_Office_Bridge_Engineer_Full_App_Review_FY23 = 84,\r\n    Bridge_Central_Office_Full_App_Validation_FY23 = 85,\r\n    Pavement_District_Validation_FY23 = 86,\r\n    Pavement_Central_Office_Validation_FY23 = 87,\r\n    RS_District_Validation_FY23 = 88,\r\n    RS_Central_Office_Validation_FY23 = 89,\r\n    TA_District_Review_FY23 = 90,\r\n    TA_Central_Office_Review_FY23 = 91,\r\n    SS_District_PreScreening_FY24 = 92,\r\n    SS_Central_Office_PreScreening_FY24 = 93,\r\n    SS_District_Screening_FY24 = 94,\r\n    SS_10_Screening_Validation_FY24 = 95,\r\n    SS_Central_Office_Screening_FY24 = 96,\r\n    SS_Executive_Working_Group_Review_FY24 = 97,\r\n    Rolled_Back_to_10_Screening = 98,\r\n    Rolled_Back_to_District_Screening = 99,\r\n    Rolled_Back_to_Central_Office_Screening = 100,\r\n    District_Bridge_Engineer_Pre_App_Review_FY24 = 101,\r\n    Bridge_District_Pre_App_Validation_FY24 = 102,\r\n    Central_Office_Bridge_Engineer_Pre_App_Review_FY24 = 103,\r\n    Bridge_Central_Office_Pre_App_Validation_FY24 = 104,\r\n    District_Bridge_Engineer_Full_App_Review_FY24 = 105,\r\n    Bridge_District_Full_App_Validation_FY24 = 106,\r\n    Central_Office_Bridge_Engineer_Full_App_Review_FY24 = 107,\r\n    Bridge_Central_Office_Full_App_Validation_FY24 = 108,\r\n    Pavement_Central_Office_Validation_FY24 = 109,\r\n    Pavement_District_Validation_FY24 = 110,\r\n    VHSIP_Local_Liaison_Validation_FY24 = 111,\r\n    VHSIP_District_Validation_FY24 = 112,\r\n    VHSIP_Central_Office_Validation_FY24 = 113,\r\n    RS_District_PreScreening_FY25 = 114,\r\n    RS_Central_Office_PreScreening_FY25 = 115,\r\n    TA_District_PreScreening_FY25 = 116,\r\n    TA_Central_Office_PreScreening_FY25 = 117,\r\n    Rolled_Back_to_Pending = 118,\r\n    CAM_District_Screening = 119,\r\n    CAM_District_Validation = 120,\r\n    CAM_CO_Validation = 121,\r\n    TA_District_Validation_FY25 = 122,\r\n    TA_Central_Office_Review_FY25 = 123,\r\n    TA_Cross_Org_Review_FY25 = 124,\r\n    CAM_Cross_Org_Review_FY25 = 125,\r\n    Rolled_Back_to_Cross_Org_Review = 126,\r\n    TA_Cross_Org_Bypassed = 127,\r\n    CAM_Cross_Org_Bypassed = 128,\r\n    RS_District_Validation_FY25 = 129,\r\n    RS_Central_Office_Validation_FY25 = 130,\r\n    Pavement_Central_Office_Validation_FY25 = 131,\r\n    Pavement_District_Validation_FY25 = 132,\r\n    VHSIP_Local_Liaison_Validation_FY25 = 133,\r\n    VHSIP_District_Validation_FY25 = 134,\r\n    VHSIP_Central_Office_Validation_FY25 = 135,\r\n    SS_District_PreScreening_FY26 = 136,\r\n    SS_Central_Office_PreScreening_FY26 = 137,\r\n    VHSIP_Local_Liaison_Validation_FY26 = 138,\r\n    VHSIP_District_Validation_FY26 = 139,\r\n    VHSIP_Central_Office_Validation_FY26 = 140,\r\n    SS_District_Engineer_PreScreening_FY26 = 141,\r\n    SS_District_Screening_FY26 = 142,\r\n    SS_Central_Office_Screening_FY26 = 143,\r\n    SS_Early_Screen_Out_FY26 = 144,\r\n    RS_District_PreScreening_FY27 = 145,\r\n    RS_Central_Office_PreScreening_FY27 = 146,\r\n    RS_District_Validation_FY27 = 147,\r\n    RS_Central_Office_Validation_FY27 = 148,\r\n    District_Bridge_Engineer_Review_FY26 = 149,\r\n    Bridge_District_Validation_FY26 = 150,\r\n    Central_Office_Bridge_Engineer_Review_FY26 = 151,\r\n    Rolled_Back_to_Screened_In = 152,\r\n    TA_District_PreScreening_FY27 = 153,\r\n    TA_Central_Office_PreScreening_FY27 = 154,\r\n    TA_Pre_CO_Eligibility_Check_FY27 = 155,\r\n    TA_Full_CO_Eligibility_Check_FY27 = 156,\r\n    Rolled_Back_To_TA_Pre_CO_Eligibility_Check = 157,\r\n    TA_District_Validation_FY27 = 158,\r\n    TA_Central_Office_Review_FY27 = 159,\r\n    Rolled_Back_to_Full_Screening = 160,\r\n    Rolled_Back_To_TA_Full_CO_Eligibility_Check = 161,\r\n    Pavement_Central_Office_Validation_FY26 = 162,\r\n    Pavement_District_Validation_FY26 = 163,\r\n}\r\n\r\nexport interface IFormPoco {\r\n    application_creation_message?: string | undefined;\r\n    application_creation_method_id: number;\r\n    createddt: Date;\r\n    eid: number;\r\n    fid: number;\r\n    fiscalyear: number;\r\n    inflation_revision?: string | undefined;\r\n    intake_period_end?: Date | undefined;\r\n    intake_period_start?: Date | undefined;\r\n    isactive: boolean;\r\n    modifieddt: Date;\r\n    name?: string | undefined;\r\n    notifications_policy?: number | undefined;\r\n    object_name?: string | undefined;\r\n    oracle_name?: string | undefined;\r\n    pid: number;\r\n    public_visible_date?: Date | undefined;\r\n}\r\n\r\nexport interface HasApplicationsToCloneRequest {\r\n    clonableIntoFormId: number;\r\n    orgId: number;\r\n}\r\n\r\nexport interface ApplicationAccessModel {\r\n    /** The ID of the application */\r\n    appid?: string | undefined;\r\n    /** The name of the security privilege action */\r\n    actionName?: string | undefined;\r\n    /** ID of the form */\r\n    fid?: number | undefined;\r\n}\r\n\r\nexport enum SecurityActionIds {\r\n    AnswerAlert = 1,\r\n    Archive = 2,\r\n    CreateComment = 3,\r\n    ViewComment = 4,\r\n    Create = 5,\r\n    CreateAlert = 6,\r\n    Delete = 7,\r\n    Prioritize = 8,\r\n    Submit = 9,\r\n    Update = 10,\r\n    View = 11,\r\n    ViewInternalStatus = 12,\r\n    Unsubmit = 13,\r\n    ViewScreenings = 14,\r\n    PerformScreening = 15,\r\n    Rollback = 16,\r\n    MarkReadyForSubmission = 20,\r\n    UnmarkReadyForSubmission = 21,\r\n    BulkSubmit = 22,\r\n    Score = 23,\r\n    CanConcur = 24,\r\n    CanRequestConcurrence = 25,\r\n    PerformDistrictValidation = 26,\r\n    ViewDistrictValidation = 27,\r\n    PerformCOValidation = 28,\r\n    ViewCOValidation = 29,\r\n    MarkAsFunded = 40,\r\n    CanEditProjectScope = 50,\r\n    CanUpdatePreAppFields = 51,\r\n    ClonePreappToFullapp = 52,\r\n    ViewScreeningComments = 53,\r\n    BulkStatusChange = 54,\r\n    ScreeningBypass = 55,\r\n    MaintainAttachments = 56,\r\n    AssignRole = 57,\r\n    StatusWorkflow = 58,\r\n    IntakePeriodChange = 59,\r\n    CanEditPriorityReview = 60,\r\n    CanMarkHighRisk = 61,\r\n    AgreeDisagreeSUPS = 62,\r\n    InitiateScreening = 63,\r\n    PerformGeneralValidation = 64,\r\n    ViewGeneralValidation = 65,\r\n    CanArchiveEconDev = 66,\r\n    ViewPrivateData = 67,\r\n    HandOffToVDOT = 68,\r\n    Administer = 69,\r\n    ApproveApplicant = 70,\r\n    ApproveAsstStateLDE = 71,\r\n    ApproveAsstStateTrafE = 72,\r\n    ApproveDistrictEnvMgr = 73,\r\n    ApproveDistrictLDE = 74,\r\n    ApproveDistrictPlanner = 75,\r\n    ApproveDistrictPDD = 76,\r\n    ApproveDistrictTrafE = 77,\r\n    ApproveInnoInterCmte = 78,\r\n    ApproveStateTrafE = 79,\r\n    WithdrawApplication = 80,\r\n    UnwithdrawApplication = 81,\r\n    ApproveDRPTStateTP = 82,\r\n    ApproveDRPTDirectorRP = 83,\r\n    ExecutiveBypass = 84,\r\n}\r\n\r\nexport enum SecurityAccessLevelIds {\r\n    Owned = 1,\r\n    Organization = 2,\r\n    AssignedDistrict = 3,\r\n    Global = 4,\r\n    SubOrganization = 5,\r\n}\r\n\r\nexport enum FormIds {\r\n    HB2_2017_Application = 1,\r\n    SMART_SCALE_2018_Application = 2,\r\n    TA_Set_Aside_2018_Application = 3,\r\n    Revenue_Sharing_2018_Application = 4,\r\n    HSIP_BikePed_2018_Application = 5,\r\n    HSIP_Safety_2018_Application = 6,\r\n    Revenue_Sharing_2019_Application = 7,\r\n    HSIP_BikePed_2019_Application = 8,\r\n    HSIP_Safety_2019_Application = 9,\r\n    TA_Set_Aside_2019_Application = 10,\r\n    HSIP_SSI_2019_Application = 11,\r\n    HSIP_Rail_2019_Application = 12,\r\n    State_of_Good_Repair_Bridge_2019_Form = 13,\r\n    State_of_Good_Repair_Pavement_2019_Application = 14,\r\n    SMART_SCALE_2020_Application = 15,\r\n    SMART_SCALE_2020_Pre_Application = 16,\r\n    HSIP_Safety_2020_Application = 17,\r\n    HSIP_SSI_2020_Application = 18,\r\n    HSIP_BikePed_2020_Application = 19,\r\n    HSIP_Rail_2020_Application = 20,\r\n    State_of_Good_Repair_Pavement_2020_Application = 21,\r\n    State_of_Good_Repair_Bridge_2020_Form = 22,\r\n    TA_Set_Aside_2021_Pre_Application = 23,\r\n    TA_Set_Aside_2021_Application = 24,\r\n    Revenue_Sharing_2021_Pre_Application = 25,\r\n    Revenue_Sharing_2021_Application = 26,\r\n    State_of_Good_Repair_Bridge_2021_Form = 27,\r\n    State_of_Good_Repair_Pavement_2021_Application = 28,\r\n    SMART_SCALE_2022_Pre_Application = 29,\r\n    SMART_SCALE_2022_Application = 30,\r\n    State_of_Good_Repair_Bridge_2022_Form = 31,\r\n    State_of_Good_Repair_Pavement_2022_Application = 32,\r\n    Pre_Scoping_2026_Application = 33,\r\n    TA_Set_Aside_2023_Pre_Application = 34,\r\n    TA_Set_Aside_2023_Application = 35,\r\n    Revenue_Sharing_2023_Pre_Application = 36,\r\n    Revenue_Sharing_2023_Application = 37,\r\n    State_of_Good_Repair_Bridge_2023_Pre_Application = 38,\r\n    State_of_Good_Repair_Bridge_2023_Application = 39,\r\n    State_of_Good_Repair_Pavement_2023_Application = 40,\r\n    SMART_SCALE_2024_Pre_Application = 41,\r\n    SMART_SCALE_2024_Application = 42,\r\n    VHSIP_2024_Application = 43,\r\n    State_of_Good_Repair_Bridge_2024_Pre_Application = 44,\r\n    State_of_Good_Repair_Bridge_2024_Application = 45,\r\n    State_of_Good_Repair_Pavement_2024_Application = 46,\r\n    TA_Set_Aside_2025_Pre_Application = 47,\r\n    TA_Set_Aside_2025_Application = 48,\r\n    Revenue_Sharing_2025_Pre_Application = 49,\r\n    Revenue_Sharing_2025_Application = 50,\r\n    CAM_2026_Application = 51,\r\n    State_of_Good_Repair_Pavement_2025_Application = 52,\r\n    VHSIP_2025_Application = 53,\r\n    SMART_SCALE_2026_Pre_Application = 54,\r\n    SMART_SCALE_2026_Application = 55,\r\n    VHSIP_2026_Application = 56,\r\n    TA_Set_Aside_2027_Pre_Application = 57,\r\n    TA_Set_Aside_2027_Application = 58,\r\n    Revenue_Sharing_2027_Pre_Application = 59,\r\n    Revenue_Sharing_2027_Application = 60,\r\n    State_of_Good_Repair_Bridge_2026_Application = 61,\r\n    State_of_Good_Repair_Pavement_2026_Application = 62,\r\n}\r\n\r\nexport enum SecurityRoleIds {\r\n    Portal_Administrator = 1,\r\n    District_Administrator = 3,\r\n    Organization_Administrator = 4,\r\n    CO_Reviewer = 5,\r\n    CO_Validator = 6,\r\n    District_Reviewer = 7,\r\n    District_Validator = 8,\r\n    Editor = 9,\r\n    EWG_Agent = 10,\r\n    MMWG_Screener = 11,\r\n    OIPI_External_Screener = 12,\r\n    Scorer = 14,\r\n    Submitter = 15,\r\n    Viewer = 17,\r\n    Bulk_Submitter = 18,\r\n    Form_Editor = 19,\r\n    District_Bridge_Engineer = 20,\r\n    Central_Bridge_Engineer = 21,\r\n    CO_Environmental_Reviewer = 22,\r\n    CO_Viewer = 23,\r\n    CO_Programming_Reviewer = 24,\r\n    CO_NVAP_Administrator = 25,\r\n    District_NVAP_Coordinator = 26,\r\n    NVAP_Form_Submitter = 27,\r\n    Scope_Evaluator = 28,\r\n    Local_Liaison = 29,\r\n    TA_CO_Validator = 30,\r\n    TA_District_Reviewer = 31,\r\n    RS_CO_Validator = 32,\r\n    RS_District_Validator = 33,\r\n    Maintenance_Administrator = 34,\r\n    Workflow_Administrator = 35,\r\n    Root_Administrator = 36,\r\n    Status_Controller = 37,\r\n    Review_Priority_Editor = 38,\r\n    PS_Editor = 39,\r\n    PS_Submitter = 40,\r\n    PS_Viewer = 41,\r\n    PS_District_Reviewer = 42,\r\n    PS_District_Validator = 43,\r\n    PS_CO_Validator = 44,\r\n    CAM_Viewer = 45,\r\n    CAM_Editor = 46,\r\n    CAM_Submitter = 47,\r\n    CAM_District_Reviewer = 48,\r\n    CAM_District_Validator = 49,\r\n    CAM_CO_Validator = 50,\r\n    CAM_Cross_Org_Screener = 51,\r\n    CAM_Cross_Org_Submitter = 52,\r\n    PS_Cross_Org_Submitter = 53,\r\n    TA_Cross_Org_Screener = 54,\r\n    Assistant_State_L_D_Engineer = 55,\r\n    Assistant_State_Traffic_Engineer = 56,\r\n    District_Environmental_Manager = 57,\r\n    District_L_D_Engineer = 58,\r\n    District_Planner = 59,\r\n    District_Project_Development_Engineer = 60,\r\n    District_Traffic_Engineer = 61,\r\n    Innovative_Intersection_Committee = 62,\r\n    State_Traffic_Engineer = 63,\r\n    District_Engineer = 64,\r\n    DRPT_Chief = 65,\r\n    DRPT_Statewide_Transit_Planner = 66,\r\n    DRPT_Director_of_Rail_Planning = 67,\r\n}\r\n\r\nexport interface ApplicationInfo {\r\n    AppId?: string | undefined;\r\n    Fid: number;\r\n    FiscalYear: number;\r\n    OrgId: number;\r\n}\r\n\r\nexport interface AttachmentMetadataViewModel {\r\n    oid: number;\r\n    createdon?: string | undefined;\r\n    createdby?: string | undefined;\r\n    updatedon?: string | undefined;\r\n    updatedby?: string | undefined;\r\n}\r\n\r\nexport interface PrioritizeFormViewModel {\r\n    pid: number;\r\n    fid: number;\r\n    isActive: boolean;\r\n    canPrioritizeApps: boolean;\r\n    name?: string | undefined;\r\n}\r\n\r\nexport interface PrioritizeApplicationViewModel {\r\n    appid?: string | undefined;\r\n    display_id?: string | undefined;\r\n    name?: string | undefined;\r\n    status_name?: string | undefined;\r\n    priority?: number | undefined;\r\n}\r\n\r\nexport interface ServiceResult {\r\n    Success: boolean;\r\n    Message?: string | undefined;\r\n}\r\n\r\nexport interface CloneApplicationViewModel {\r\n    SourceAppId?: string | undefined;\r\n    TargetFormId: number;\r\n    OrgId: number;\r\n    SourceAppTargetStatusId?: number | undefined;\r\n}\r\n\r\nexport interface AppCountViewModel {\r\n    totalAppCount: number;\r\n    commonOrgid?: number | undefined;\r\n    canCreateApps: boolean;\r\n    canPrioritizeApps: boolean;\r\n    programs?: AppCountProgramViewModel[] | undefined;\r\n}\r\n\r\nexport interface AppCountProgramViewModel {\r\n    pid: number;\r\n    name?: string | undefined;\r\n    fiscalYears?: number[] | undefined;\r\n    appCount: number;\r\n    orgid?: number | undefined;\r\n    canCreateApps: boolean;\r\n    canPrioritizeApps: boolean;\r\n    canViewInternalStatus: boolean;\r\n    object_name?: string | undefined;\r\n}\r\n\r\nexport interface GridResultOfAppGrid {\r\n    TotalCount: number;\r\n    TotalPages: number;\r\n    Results?: AppGrid[] | undefined;\r\n}\r\n\r\nexport interface AppGrid {\r\n    AppId?: string | undefined;\r\n    AppName?: string | undefined;\r\n    ProgramName?: string | undefined;\r\n    FormId: number;\r\n    ProgramId: number;\r\n    FiscalYear?: number | undefined;\r\n    UpdatedOn: Date;\r\n    OrgName?: string | undefined;\r\n    StatusName?: string | undefined;\r\n    CommentCount: number;\r\n    Priority?: number | undefined;\r\n    DisplayId?: string | undefined;\r\n    IsNoi: boolean;\r\n    Funded: boolean;\r\n    RequiresMyAction: boolean;\r\n    AppSequence: number;\r\n    RequestedPreScreening: boolean;\r\n    ApplicationType?: string | undefined;\r\n    CloneStatus: number;\r\n    FundedText?: string | undefined;\r\n    DistrictNameCsv?: string | undefined;\r\n    PrimaryReview?: string | undefined;\r\n    SecondaryReview?: string | undefined;\r\n    FederalBridgeId?: number | undefined;\r\n    FeatureCarried?: string | undefined;\r\n    RouteNumber?: number | undefined;\r\n    FeatureIntersected?: string | undefined;\r\n    DraftSGRScore?: number | undefined;\r\n    BridgeCondition?: string | undefined;\r\n    Fkey?: number | undefined;\r\n    Locality?: string | undefined;\r\n    StreetName?: string | undefined;\r\n    ApprovedOn?: Date | undefined;\r\n    RiskLevel?: string | undefined;\r\n    IsFollowing: boolean;\r\n}\r\n\r\nexport interface GridRequest {\r\n    PageSize: number;\r\n    PageNumber: number;\r\n    OrderBy?: string | undefined;\r\n    OrderDesc: boolean;\r\n    GroupOperator?: string | undefined;\r\n    FilterProps?: { [key: string]: any; } | undefined;\r\n}\r\n\r\nexport interface BridgeAppMapViewModel {\r\n    AppId?: string | undefined;\r\n    Shape?: string | undefined;\r\n    FeatureCarried?: string | undefined;\r\n    RouteNumber?: number | undefined;\r\n    FeatureIntersected?: string | undefined;\r\n    FederalBridgeId?: number | undefined;\r\n    DistrictNameCsv?: string | undefined;\r\n    NationalSystem: number;\r\n    GcrDeckRating?: string | undefined;\r\n    GcrSuperRating?: string | undefined;\r\n    GcrSubRating?: string | undefined;\r\n    GcrCulvertRating?: string | undefined;\r\n    StatusName?: string | undefined;\r\n    ImportanceFactor: number;\r\n    ConditionFactor: number;\r\n    DesignRedundancyFactor: number;\r\n    StructureCapacityFactor: number;\r\n    DraftSGRScore?: number | undefined;\r\n    ProjectCostEstimate: number;\r\n}\r\n\r\nexport interface PavementAppMapViewModel {\r\n    AppId?: string | undefined;\r\n    StatusName?: string | undefined;\r\n    Fkey?: number | undefined;\r\n}\r\n\r\nexport interface GetExistingSitesViewModel {\r\n    appId?: string | undefined;\r\n    projectArea?: string | undefined;\r\n}\r\n\r\nexport interface FundedApplicationViewModel {\r\n    appid?: string | undefined;\r\n    isFunded: boolean;\r\n}\r\n\r\nexport interface BulkPriorityReviewModel {\r\n    appids?: string[] | undefined;\r\n    primary_review: number;\r\n    secondary_review?: number | undefined;\r\n}\r\n\r\nexport interface BulkSubmitViewModel {\r\n    FormId: number;\r\n    CanBulkSubmit: boolean;\r\n    AppsReadyToSubmit: number;\r\n    AppsNotReadyToSubmit: number;\r\n    Year: number;\r\n    OrganizationId: number;\r\n}\r\n\r\nexport interface SUPSValuesDto {\r\n    sups_agreed_by_district_datetime?: Date | undefined;\r\n    sups_disagreed_by_district_datetime?: Date | undefined;\r\n    sups_agreed_by_submitter_datetime?: Date | undefined;\r\n    sups_disagreed_by_submitter_datetime?: Date | undefined;\r\n    scope_of_work_entered_on?: Date | undefined;\r\n    scope_of_work_entered_by?: string | undefined;\r\n    scope_of_work?: string | undefined;\r\n}\r\n\r\nexport interface SUPSWorkflowModel {\r\n    workflowEvent: SUPSWorkflowEvents;\r\n    appid?: string | undefined;\r\n    entityName?: string | undefined;\r\n    oid: number;\r\n    comment?: string | undefined;\r\n}\r\n\r\nexport enum SUPSWorkflowEvents {\r\n    District_Validator_Agree = 1,\r\n    District_Validator_Disagree = 2,\r\n    Submitter_Agree = 3,\r\n    Submitter_Disagree = 4,\r\n}\r\n\r\nexport interface UserPrivilege {\r\n    id: number;\r\n    name?: string | undefined;\r\n    display_name?: string | undefined;\r\n}\r\n\r\nexport interface ProjectTypeFundsRequestedViewModel {\r\n    Construction: number;\r\n    Maintenance: number;\r\n}\r\n\r\nexport interface ApplicationBulkStatusModel {\r\n    /** The IDs of the applications */\r\n    appIds?: string[] | undefined;\r\n    /** Target status string id */\r\n    targetStatusId?: string | undefined;\r\n}\r\n\r\nexport interface ReviewPriorityDataViewModel {\r\n    can_edit: boolean;\r\n    primary_review: number;\r\n    secondary_review?: number | undefined;\r\n    oid: number;\r\n    appid?: string | undefined;\r\n}\r\n\r\nexport enum PhaseTypes {\r\n    PE = 1,\r\n    RW = 2,\r\n    CN = 3,\r\n    OT = 4,\r\n}\r\n\r\nexport interface JsonStructuralForm {\r\n    pid: number;\r\n    pname?: string | undefined;\r\n    fid: number;\r\n    fname?: string | undefined;\r\n    eid: number;\r\n    fiscalyear: number;\r\n    objectname?: string | undefined;\r\n    ename?: string | undefined;\r\n    config?: IJsonConfig[] | undefined;\r\n    entities?: IJsonStructuralEntity[] | undefined;\r\n    attributes?: IJsonStructuralAttribute[] | undefined;\r\n}\r\n\r\nexport interface IJsonConfig {\r\n    sid: number;\r\n    name?: string | undefined;\r\n    value?: any | undefined;\r\n}\r\n\r\nexport interface IJsonStructuralEntity {\r\n    config?: IJsonConfig[] | undefined;\r\n    entities?: IJsonStructuralEntity[] | undefined;\r\n    attributes?: IJsonStructuralAttribute[] | undefined;\r\n}\r\n\r\nexport interface IJsonStructuralAttribute {\r\n    config?: IJsonConfig[] | undefined;\r\n}\r\n\r\nexport interface OrgIdNameDto {\r\n    orgid: number;\r\n    name?: string | undefined;\r\n}\r\n\r\nexport interface DashboardIdFilterItem {\r\n    id?: string | undefined;\r\n    name?: string | undefined;\r\n    display_id?: string | undefined;\r\n}\r\n\r\nexport interface ReadinessViewModel {\r\n    ApprovalDefinitions?: Ss26_readiness_approval_def[] | undefined;\r\n}\r\n\r\nexport interface Ss26_readiness_approval_def {\r\n    id: number;\r\n    approval_name_id: number;\r\n    gate_number: number;\r\n    approval_type_id: number;\r\n    document_text?: string | undefined;\r\n    gate_text?: string | undefined;\r\n    if_answer?: boolean | undefined;\r\n    if_coss_apn?: boolean | undefined;\r\n    approval_name?: Readiness_approval_name | undefined;\r\n    approval_type?: Readiness_approval_type | undefined;\r\n    ss26_readiness_approval?: Ss26_readiness_approval[] | undefined;\r\n}\r\n\r\nexport interface Readiness_approval_name {\r\n    id: number;\r\n    name?: string | undefined;\r\n    answer_path?: string | undefined;\r\n    ss26_readiness_approval_def?: Ss26_readiness_approval_def[] | undefined;\r\n}\r\n\r\nexport interface Readiness_approval_type {\r\n    id: number;\r\n    name?: string | undefined;\r\n    action_id: number;\r\n    ss26_readiness_approval_def?: Ss26_readiness_approval_def[] | undefined;\r\n}\r\n\r\nexport interface Ss26_readiness_approval {\r\n    id: number;\r\n    appsequence: number;\r\n    approval_def_id: number;\r\n    approved_by?: number | undefined;\r\n    approved_on?: Date | undefined;\r\n    approved_by_name?: string | undefined;\r\n    comment?: string | undefined;\r\n    rejected_by?: number | undefined;\r\n    rejected_on?: Date | undefined;\r\n    rejected_by_name?: string | undefined;\r\n    approval_def?: Ss26_readiness_approval_def | undefined;\r\n    approved_byNavigation?: User | undefined;\r\n    rejected_byNavigation?: User | undefined;\r\n}\r\n\r\nexport interface User {\r\n    uid: number;\r\n    emailaddress?: string | undefined;\r\n    firstname?: string | undefined;\r\n    lastname?: string | undefined;\r\n    passwordhash?: string | undefined;\r\n    passwordexpireson: Date;\r\n    orgid: number;\r\n    notes?: string | undefined;\r\n    isarchived: boolean;\r\n    lastloggedinon?: Date | undefined;\r\n    createdby?: number | undefined;\r\n    createdon: Date;\r\n    updatedby?: number | undefined;\r\n    updatedon?: Date | undefined;\r\n    SecurityStamp?: string | undefined;\r\n    EmailConfirmed: boolean;\r\n    notifications_digest_opt_out?: boolean | undefined;\r\n    InversecreatedbyNavigation?: User[] | undefined;\r\n    InverseupdatedbyNavigation?: User[] | undefined;\r\n    _objectcreatedbyNavigation?: _object[] | undefined;\r\n    _objectupdatedbyNavigation?: _object[] | undefined;\r\n    application_event?: Application_event[] | undefined;\r\n    application_follow?: Application_follow[] | undefined;\r\n    applicationcreatedbyNavigation?: Application[] | undefined;\r\n    applicationupdatedbyNavigation?: Application[] | undefined;\r\n    createdbyNavigation?: User | undefined;\r\n    discussionacknowledgedbyNavigation?: Discussion[] | undefined;\r\n    discussionadminbyNavigation?: Discussion[] | undefined;\r\n    discussionconcurredbyNavigation?: Discussion[] | undefined;\r\n    discussionpostedbyNavigation?: Discussion[] | undefined;\r\n    ss26_readiness_approvalapproved_byNavigation?: Ss26_readiness_approval[] | undefined;\r\n    ss26_readiness_approvalrejected_byNavigation?: Ss26_readiness_approval[] | undefined;\r\n    updatedbyNavigation?: User | undefined;\r\n}\r\n\r\nexport interface _object {\r\n    oid: number;\r\n    appid?: string | undefined;\r\n    eid: number;\r\n    source_oid?: number | undefined;\r\n    parent_id?: number | undefined;\r\n    attribute_data?: string | undefined;\r\n    createdon?: Date | undefined;\r\n    createdby?: number | undefined;\r\n    updatedon?: Date | undefined;\r\n    updatedby?: number | undefined;\r\n    _funded?: boolean | undefined;\r\n    _project_type?: number | undefined;\r\n    _requested_prescreening?: boolean | undefined;\r\n    _vdot_district?: number | undefined;\r\n    _file_name?: string | undefined;\r\n    _jurisdictions_served?: string | undefined;\r\n    _list_eligible_networks?: number | undefined;\r\n    _primary_review?: number | undefined;\r\n    _secondary_review?: number | undefined;\r\n    _preselected_mmwg_screen?: boolean | undefined;\r\n    _preselected_mmwg_high_risk?: boolean | undefined;\r\n    Inverseparent?: _object[] | undefined;\r\n    Inversesource_o?: _object[] | undefined;\r\n    app?: Application | undefined;\r\n    createdbyNavigation?: User | undefined;\r\n    eidNavigation?: Entity | undefined;\r\n    parent?: _object | undefined;\r\n    source_o?: _object | undefined;\r\n    updatedbyNavigation?: User | undefined;\r\n}\r\n\r\nexport interface Application {\r\n    appsequence: number;\r\n    apprevision: number;\r\n    parent_appid?: string | undefined;\r\n    parent_relation?: number | undefined;\r\n    fid: number;\r\n    name?: string | undefined;\r\n    description?: string | undefined;\r\n    createdby: number;\r\n    createdon: Date;\r\n    updatedby?: number | undefined;\r\n    updatedon?: Date | undefined;\r\n    orgid: number;\r\n    priority?: number | undefined;\r\n    status: number;\r\n    clonestatus?: number | undefined;\r\n    display_id?: string | undefined;\r\n    creation_method?: number | undefined;\r\n    appid?: string | undefined;\r\n    early_screen_out?: boolean | undefined;\r\n    Inverseparent_app?: Application[] | undefined;\r\n    _object?: _object[] | undefined;\r\n    application_event?: Application_event[] | undefined;\r\n    createdbyNavigation?: User | undefined;\r\n    fidNavigation?: Form | undefined;\r\n    parent_app?: Application | undefined;\r\n    updatedbyNavigation?: User | undefined;\r\n}\r\n\r\nexport interface Application_event {\r\n    event_id: number;\r\n    event_type: number;\r\n    appid?: string | undefined;\r\n    previous_appid?: string | undefined;\r\n    status?: number | undefined;\r\n    event_code?: number | undefined;\r\n    event_value?: any | undefined;\r\n    createdby: number;\r\n    createdon: Date;\r\n    is_current: boolean;\r\n    pass_fail_outcome?: boolean | undefined;\r\n    app?: Application | undefined;\r\n    createdbyNavigation?: User | undefined;\r\n}\r\n\r\nexport interface Form {\r\n    fid: number;\r\n    name?: string | undefined;\r\n    pid: number;\r\n    eid: number;\r\n    isactive: boolean;\r\n    createddt: Date;\r\n    modifieddt: Date;\r\n    fiscalyear: number;\r\n    intake_period_start?: Date | undefined;\r\n    intake_period_end?: Date | undefined;\r\n    public_visible_date?: Date | undefined;\r\n    object_name?: string | undefined;\r\n    application_creation_method_id: number;\r\n    application_creation_message?: string | undefined;\r\n    inflation_revision?: string | undefined;\r\n    oracle_name?: string | undefined;\r\n    notifications_policy?: number | undefined;\r\n    active_form_cap?: Active_form_cap[] | undefined;\r\n    application?: Application[] | undefined;\r\n    eidNavigation?: Entity | undefined;\r\n    pidNavigation?: Program | undefined;\r\n}\r\n\r\nexport interface Active_form_cap {\r\n    id: number;\r\n    fid: number;\r\n    cap_type_id: number;\r\n    default_value?: number | undefined;\r\n    cap_type?: Cap_type | undefined;\r\n    fidNavigation?: Form | undefined;\r\n}\r\n\r\nexport interface Cap_type {\r\n    id: number;\r\n    name?: string | undefined;\r\n    active_form_cap?: Active_form_cap[] | undefined;\r\n}\r\n\r\nexport interface Entity {\r\n    eid: number;\r\n    name?: string | undefined;\r\n    isactive: boolean;\r\n    createddt: Date;\r\n    modifieddt: Date;\r\n    description?: string | undefined;\r\n    _object?: _object[] | undefined;\r\n    entity_attribute?: Entity_attribute[] | undefined;\r\n    entity_entityeid_childNavigation?: Entity_entity[] | undefined;\r\n    entity_entityeid_parentNavigation?: Entity_entity[] | undefined;\r\n    form?: Form[] | undefined;\r\n}\r\n\r\nexport interface Entity_attribute {\r\n    id: number;\r\n    eid: number;\r\n    aid: number;\r\n    isactive: boolean;\r\n    createddt: Date;\r\n    modifieddt: Date;\r\n    description?: string | undefined;\r\n    object_title_order?: number | undefined;\r\n    aidNavigation?: Attribute | undefined;\r\n    eidNavigation?: Entity | undefined;\r\n}\r\n\r\nexport interface Attribute {\r\n    aid: number;\r\n    name?: string | undefined;\r\n    dtid: number;\r\n    islistof: boolean;\r\n    isnullable: boolean;\r\n    isactive: boolean;\r\n    iscsv: boolean;\r\n    lookup_code_id?: number | undefined;\r\n    isclonable: boolean;\r\n    description?: string | undefined;\r\n    isgisattribute: boolean;\r\n    dt?: _data_type | undefined;\r\n    entity_attribute?: Entity_attribute[] | undefined;\r\n    lookup_code?: Lookup_code | undefined;\r\n}\r\n\r\nexport interface _data_type {\r\n    dtid: number;\r\n    name?: string | undefined;\r\n    datatype?: string | undefined;\r\n    precision?: number | undefined;\r\n    scale?: number | undefined;\r\n    isblob: boolean;\r\n    isspatial: boolean;\r\n    isactive: boolean;\r\n    createddt: Date;\r\n    modifieddt: Date;\r\n    attribute?: Attribute[] | undefined;\r\n}\r\n\r\nexport interface Lookup_code {\r\n    id: number;\r\n    name?: string | undefined;\r\n    parent_lookup_code_id?: number | undefined;\r\n    isarchived: boolean;\r\n    description?: string | undefined;\r\n    Inverseparent_lookup_code?: Lookup_code[] | undefined;\r\n    attribute?: Attribute[] | undefined;\r\n    lookup_value?: Lookup_value[] | undefined;\r\n    parent_lookup_code?: Lookup_code | undefined;\r\n}\r\n\r\nexport interface Lookup_value {\r\n    lookup_code_id: number;\r\n    name?: string | undefined;\r\n    isarchived: boolean;\r\n    displayorder: number;\r\n    id: number;\r\n    parent_lookup_id?: number | undefined;\r\n    Inverselookup_valueNavigation?: Lookup_value[] | undefined;\r\n    lookup_code?: Lookup_code | undefined;\r\n    lookup_valueNavigation?: Lookup_value | undefined;\r\n}\r\n\r\nexport interface Entity_entity {\r\n    id: number;\r\n    eid_parent: number;\r\n    eid_child: number;\r\n    repeatable: boolean;\r\n    isactive: boolean;\r\n    createddt: Date;\r\n    modifieddt: Date;\r\n    eid_childNavigation?: Entity | undefined;\r\n    eid_parentNavigation?: Entity | undefined;\r\n}\r\n\r\nexport interface Program {\r\n    pid: number;\r\n    name?: string | undefined;\r\n    isactive: boolean;\r\n    createddt: Date;\r\n    modifieddt: Date;\r\n    roleclaimprefix?: string | undefined;\r\n    export_view_name?: string | undefined;\r\n    form?: Form[] | undefined;\r\n    program_application_status?: Program_application_status[] | undefined;\r\n    program_attachment_type?: Program_attachment_type[] | undefined;\r\n}\r\n\r\nexport interface Program_application_status {\r\n    pid: number;\r\n    applicationstatus: number;\r\n    seq: number;\r\n    pidNavigation?: Program | undefined;\r\n}\r\n\r\nexport interface Program_attachment_type {\r\n    pid: number;\r\n    attachmenttype: number;\r\n    seq: number;\r\n    ispubliclyviewable: boolean;\r\n    pidNavigation?: Program | undefined;\r\n}\r\n\r\nexport interface Application_follow {\r\n    id: number;\r\n    uid: number;\r\n    appsequence: number;\r\n    uidNavigation?: User | undefined;\r\n}\r\n\r\nexport interface Discussion {\r\n    post: number;\r\n    appid?: string | undefined;\r\n    postreason?: number | undefined;\r\n    replytopost?: number | undefined;\r\n    subject?: string | undefined;\r\n    body?: string | undefined;\r\n    postedby: number;\r\n    postedon: Date;\r\n    isactive: boolean;\r\n    adminremoved: boolean;\r\n    adminby?: number | undefined;\r\n    adminreason?: string | undefined;\r\n    appsequence: number;\r\n    isalert: boolean;\r\n    resolvedbypost?: number | undefined;\r\n    fsid?: number | undefined;\r\n    acknowledgedby?: number | undefined;\r\n    acknowledgedon?: Date | undefined;\r\n    discussion_type_id: number;\r\n    hasConcurrence?: boolean | undefined;\r\n    concurredon?: Date | undefined;\r\n    concurredby?: number | undefined;\r\n    InversereplytopostNavigation?: Discussion[] | undefined;\r\n    InverseresolvedbypostNavigation?: Discussion[] | undefined;\r\n    acknowledgedbyNavigation?: User | undefined;\r\n    adminbyNavigation?: User | undefined;\r\n    concurredbyNavigation?: User | undefined;\r\n    postedbyNavigation?: User | undefined;\r\n    replytopostNavigation?: Discussion | undefined;\r\n    resolvedbypostNavigation?: Discussion | undefined;\r\n}\r\n\r\nexport interface ReadinessGateApprovalResult {\r\n    ClientReload: boolean;\r\n    ClientRedirectToAppId?: string | undefined;\r\n}\r\n\r\nexport interface AppWatchInfo {\r\n    appsequence: number;\r\n    appid?: string | undefined;\r\n    name?: string | undefined;\r\n    display_id?: string | undefined;\r\n    uid: number;\r\n}\r\n\r\nexport interface BulkFollowViewModel {\r\n    Follow?: number[] | undefined;\r\n    Unfollow?: number[] | undefined;\r\n}\r\n\r\nexport interface CommentViewModel {\r\n    text?: string | undefined;\r\n    uid: number;\r\n    emailaddress?: string | undefined;\r\n    firstname?: string | undefined;\r\n    lastname?: string | undefined;\r\n    orgid: number;\r\n    orgname?: string | undefined;\r\n    timestamp: Date;\r\n    isnew: boolean;\r\n    id: number;\r\n    replytoid?: number | undefined;\r\n    resolvedbycommentid?: number | undefined;\r\n    fsid?: number | undefined;\r\n    acknowledgedbyfirstname?: string | undefined;\r\n    acknowledgedbylastname?: string | undefined;\r\n    acknowledgedon?: Date | undefined;\r\n    discussion_type_id: number;\r\n    hasConcurrence?: boolean | undefined;\r\n    acknowledgedPastIntake?: boolean | undefined;\r\n    canAcknowledge: boolean;\r\n    isOrphan?: boolean | undefined;\r\n    concurredon?: Date | undefined;\r\n    concurredby?: number | undefined;\r\n    childComments?: CommentViewModel[] | undefined;\r\n}\r\n\r\nexport interface ValidationSectionViewModel {\r\n    id: number;\r\n    fid: number;\r\n    name?: string | undefined;\r\n    displayorder: number;\r\n    questions?: ValidationQuestionViewModel[] | undefined;\r\n    childSections?: ValidationSectionViewModel[] | undefined;\r\n}\r\n\r\nexport interface ValidationQuestionViewModel {\r\n    id: number;\r\n    section_id?: number | undefined;\r\n    fsid?: number | undefined;\r\n    sub_section?: string | undefined;\r\n    title?: string | undefined;\r\n    body?: string | undefined;\r\n    anchor_name?: string | undefined;\r\n    displayorder: number;\r\n    ancestor_eid?: number | undefined;\r\n    entityPaths?: string[] | undefined;\r\n    isRepeatable?: boolean | undefined;\r\n    answer?: ValidationAnswerViewModel | undefined;\r\n}\r\n\r\nexport interface ValidationAnswerViewModel {\r\n    id: number;\r\n    appsequence: number;\r\n    question_id: number;\r\n    status_id?: number | undefined;\r\n    type_id: number;\r\n    oid: number;\r\n    isInformed: boolean;\r\n    hasConcurrence?: boolean | undefined;\r\n    discussion_id?: number | undefined;\r\n    comment?: string | undefined;\r\n    updatedby?: number | undefined;\r\n    updatedon?: Date | undefined;\r\n    isEditable: boolean;\r\n    isSendAlert: boolean;\r\n    updatedbyName?: string | undefined;\r\n    is_not_applicable?: boolean | undefined;\r\n}\r\n\r\nexport interface NewCommentViewModel {\r\n    appid: string;\r\n    text?: string | undefined;\r\n    replytoid?: number | undefined;\r\n    resolvesparentalert: boolean;\r\n    fsid?: number | undefined;\r\n    discussion_type_id: number;\r\n    hasConcurrence?: boolean | undefined;\r\n}\r\n\r\nexport interface DiscussionCommentCountModel {\r\n    new_comment_count: number;\r\n    pending_alert_count: number;\r\n    concurrence_alert_count: number;\r\n}\r\n\r\nexport interface NewCommentCountViewModel {\r\n    commentCount: number;\r\n    forms?: FormCommentCountViewModel[] | undefined;\r\n}\r\n\r\nexport interface FormCommentCountViewModel {\r\n    fids?: number[] | undefined;\r\n    fiscalyear: number;\r\n    formName?: string | undefined;\r\n    pid: number;\r\n    programName?: string | undefined;\r\n    commentCount: number;\r\n    applications?: ApplicationCommentCountViewModel[] | undefined;\r\n}\r\n\r\nexport interface ApplicationCommentCountViewModel {\r\n    appid?: string | undefined;\r\n    appName?: string | undefined;\r\n    commentCount: number;\r\n}\r\n\r\nexport interface CommentPrivilegesViewModel {\r\n    CanCreateComments: boolean;\r\n    CanViewComments: boolean;\r\n    CanCreateAlerts: boolean;\r\n    CanAnswerAlerts: boolean;\r\n    CanConcur: boolean;\r\n    CanRequestConcurrence: boolean;\r\n}\r\n\r\nexport interface V_form_mapping_matrix {\r\n    source_application_type?: string | undefined;\r\n    source_eid: number;\r\n    source_fid: number;\r\n    source_fiscalyear: number;\r\n    source_form?: string | undefined;\r\n    source_name?: string | undefined;\r\n    target_application_type?: string | undefined;\r\n    target_eid: number;\r\n    target_fid: number;\r\n    target_fiscalyear: number;\r\n    target_form?: string | undefined;\r\n    target_name?: string | undefined;\r\n}\r\n\r\nexport interface V_entity_attribute_tree_2 {\r\n    aid?: number | undefined;\r\n    attribute_name?: string | undefined;\r\n    datatype_name?: string | undefined;\r\n    depth?: number | undefined;\r\n    dtid: number;\r\n    eid?: number | undefined;\r\n    entity_name?: string | undefined;\r\n    fid: number;\r\n    is_active: number;\r\n    is_cloneable: boolean;\r\n    is_csv: boolean;\r\n    is_list?: boolean | undefined;\r\n    is_nullable: boolean;\r\n    is_repeatable?: boolean | undefined;\r\n    lookup_code?: string | undefined;\r\n    parent_eid?: number | undefined;\r\n    precision?: number | undefined;\r\n    scale?: number | undefined;\r\n}\r\n\r\nexport interface form {\r\n    application_creation_message?: string | undefined;\r\n    application_creation_method_id: number;\r\n    createddt: Date;\r\n    eid: number;\r\n    fid: number;\r\n    fiscalyear: number;\r\n    inflation_revision?: string | undefined;\r\n    intake_period_end?: Date | undefined;\r\n    intake_period_start?: Date | undefined;\r\n    isactive: boolean;\r\n    modifieddt: Date;\r\n    name?: string | undefined;\r\n    notifications_policy?: number | undefined;\r\n    object_name?: string | undefined;\r\n    oracle_name?: string | undefined;\r\n    pid: number;\r\n    public_visible_date?: Date | undefined;\r\n    IsFormPublic: boolean;\r\n    IsIntakePeriod: boolean;\r\n}\r\n\r\nexport interface V_entity_tree_2 {\r\n    depth?: number | undefined;\r\n    description?: string | undefined;\r\n    eid?: number | undefined;\r\n    entity_name?: string | undefined;\r\n    fid: number;\r\n    is_active?: boolean | undefined;\r\n    is_repeatable?: number | undefined;\r\n    parent_eid?: number | undefined;\r\n}\r\n\r\nexport interface V_get_cloneable_entities {\r\n    id: number;\r\n    source_eid?: number | undefined;\r\n    source_fid: number;\r\n    source_parent_eid?: number | undefined;\r\n    target_eid?: number | undefined;\r\n    target_fid: number;\r\n    target_parent_eid?: number | undefined;\r\n}\r\n\r\nexport interface V_get_cloneable_attributes {\r\n    match_type: number;\r\n    source_aid: number;\r\n    source_eaid?: number | undefined;\r\n    source_eid: number;\r\n    source_fid: number;\r\n    source_parent_eid?: number | undefined;\r\n    target_aid?: number | undefined;\r\n    target_eaid?: number | undefined;\r\n    target_eid?: number | undefined;\r\n    target_fid: number;\r\n    target_parent_eid?: number | undefined;\r\n}\r\n\r\nexport interface Entity_clone_entity {\r\n    id: number;\r\n    source_eid: number;\r\n    source_fid: number;\r\n    target_eid: number;\r\n    target_fid: number;\r\n}\r\n\r\nexport interface AttributeCloneMappingModel {\r\n    src_fid: number;\r\n    src_eid: number;\r\n    src_parent_eid?: number | undefined;\r\n    src_aid: number;\r\n    tgt_fid: number;\r\n    tgt_eid: number;\r\n    tgt_parent_eid?: number | undefined;\r\n    tgt_aid: number;\r\n}\r\n\r\n/** Add any C# types here to bring them to typescript via NSwag. This is only needed for types that are NOT exposed in API endpoints. Any endpoint parameter types or return types are already included. Property names in this class are not important/used. */\r\nexport interface EnumsApiMetadata {\r\n    PhaseStatuses: PhaseStatuses;\r\n    phaseTypes: PhaseTypes;\r\n    formIds: FormIds;\r\n    programIds: ProgramIds;\r\n    applicationStatusIds: ApplicationStatusIds;\r\n    securityAction: SecurityActionIds;\r\n    securityAccessLevelIds: SecurityAccessLevelIds;\r\n    validationEventTypeIds: ValidationEventTypeIds;\r\n    validationTypeIds: ValidationTypeIds;\r\n    iWebApplication?: IWebApplication | undefined;\r\n    iApplicationPoco?: IApplicationPoco | undefined;\r\n    validationStatusIds: ValidationStatusIds;\r\n    attachmentTypeIds: AttachmentTypeIds;\r\n}\r\n\r\nexport enum PhaseStatuses {\r\n    NotNeeded = 1,\r\n    NotStarted = 2,\r\n    Underway = 3,\r\n    Complete = 4,\r\n}\r\n\r\nexport enum ProgramIds {\r\n    HB2 = 1,\r\n    SMART_SCALE = 2,\r\n    TA_Set_Aside = 3,\r\n    Revenue_Sharing = 4,\r\n    HSIP_BikePed_Archive = 5,\r\n    HSIP_Safety_Archive = 6,\r\n    HSIP_SSI_Archive = 7,\r\n    HSIP_Rail_Archive = 8,\r\n    State_of_Good_Repair_Bridge = 9,\r\n    State_of_Good_Repair_Pavement = 10,\r\n    Pre_Scoping = 11,\r\n    VHSIP = 12,\r\n    CAM = 13,\r\n}\r\n\r\nexport enum ApplicationStatusIds {\r\n    Pending = 1,\r\n    Submitted = 2,\r\n    OIPI_Screening = 3,\r\n    MMWG_Screening_Validation = 4,\r\n    Scoring = 6,\r\n    District_Validation = 7,\r\n    Central_Office_Validation = 8,\r\n    Executive_Working_Group_Review = 9,\r\n    Scored = 10,\r\n    Processing = 11,\r\n    Screened_In = 12,\r\n    Screened_Out = 13,\r\n    Ready_for_Submission = 14,\r\n    District_Bridge_Engineer_Review = 15,\r\n    Central_Bridge_Engineer_Review = 16,\r\n    Submitted_Pre_Application = 17,\r\n    OIPI_COSS_Pre_Screening = 18,\r\n    OIPI_Regional_Network_Pre_Screening = 19,\r\n    OIPI_UDA_Pre_Screening = 20,\r\n    OIPI_Safety_Pre_Screening = 21,\r\n    District_Pre_Screening = 22,\r\n    Central_Office_Pre_Screening = 23,\r\n    Pre_Screened_In = 24,\r\n    Pre_Screened_Out = 25,\r\n    OIPI_COSS_Screening = 26,\r\n    OIPI_Regional_Network_Screening = 27,\r\n    OIPI_UDA_Screening = 28,\r\n    OIPI_Safety_Screening = 29,\r\n    Local_Liaison_Validation = 30,\r\n    Pre_Screening = 31,\r\n    Pre_Screening_Bypassed = 32,\r\n    Pre_Screened_In_Conditionally = 33,\r\n    District_Review = 34,\r\n    Approved = 35,\r\n    Rejected = 36,\r\n    Archived = 37,\r\n    Funded = 38,\r\n    Recertification = 39,\r\n    _10_Screening_Validation = 40,\r\n    District_Screening = 41,\r\n    Central_Office_Screening = 42,\r\n    Cross_Org_Review = 43,\r\n    Withdrawn = 44,\r\n    Pre_Screened_Out_Conditionally = 45,\r\n    Pre_App_Eligibility_Check = 46,\r\n    Eligibility_Check = 47,\r\n    Full_Screening = 48,\r\n}\r\n\r\nexport enum ValidationTypeIds {\r\n    CO = 1,\r\n    District = 2,\r\n    General = 3,\r\n}\r\n\r\nexport interface IWebApplication {\r\n    applicationCreatedOn: Date;\r\n    applicationCreatedByName?: string | undefined;\r\n    revisionUpdatedOn: Date;\r\n    revisionUpdatedByName?: string | undefined;\r\n    applicationSubmittedOn?: Date | undefined;\r\n    applicationSubmittedByName?: string | undefined;\r\n    submittedRevisionAppId?: string | undefined;\r\n    statusName?: string | undefined;\r\n    revisionScoredOn?: Date | undefined;\r\n    revisionScoredByName?: string | undefined;\r\n    prescreenedOrgCap: number;\r\n    prescreenedAppCount: number;\r\n    orgtypeid?: number | undefined;\r\n    clonedFromAppId?: string | undefined;\r\n    clonedFromDisplayId?: string | undefined;\r\n    isSubmittedRecertified: boolean;\r\n    funded?: boolean | undefined;\r\n    isPublic: boolean;\r\n    fullAppId?: string | undefined;\r\n    preAppId?: string | undefined;\r\n    appIdAsSubmitted?: string | undefined;\r\n}\r\n\r\nexport interface IApplicationPoco {\r\n    appid?: string | undefined;\r\n    apprevision: number;\r\n    appsequence: number;\r\n    clonestatus?: number | undefined;\r\n    createdby: number;\r\n    createdon: Date;\r\n    creation_method?: number | undefined;\r\n    description?: string | undefined;\r\n    display_id?: string | undefined;\r\n    early_screen_out?: boolean | undefined;\r\n    fid: number;\r\n    name?: string | undefined;\r\n    orgid: number;\r\n    parent_appid?: string | undefined;\r\n    parent_relation?: number | undefined;\r\n    priority?: number | undefined;\r\n    status: number;\r\n    updatedby?: number | undefined;\r\n    updatedon?: Date | undefined;\r\n}\r\n\r\nexport enum ValidationStatusIds {\r\n    Pending = 0,\r\n    Valid = 1,\r\n    Invalid = 2,\r\n    Revalidate = 3,\r\n}\r\n\r\nexport enum AttachmentTypeIds {\r\n    Resolution_of_Support = 1,\r\n    Other_Letter_of_Support = 2,\r\n    Local_Comprehensive_Plan_or_Capital_Improvement_Plan = 3,\r\n    Local_Regional_Economic_Development_Strategy = 4,\r\n    Planning_Study_Safety_Study = 5,\r\n    Project_Sketch = 6,\r\n    Detailed_Cost_Estimate = 7,\r\n    Site_Development_Plan = 8,\r\n    Local_Utilities_Programming = 9,\r\n    Access_Management_Plan_or_Zoning_Overlay = 10,\r\n    Development_Project_Zoning_Proffer_Reference = 11,\r\n    Other = 12,\r\n    OIPI_Review_Document = 13,\r\n    Locality_Concurrence_with_Change = 14,\r\n    District_Validation_Form = 15,\r\n    Concurrency_Change_Form_for_Scoring = 16,\r\n    Other_Committed_Funds = 17,\r\n    Public_Notice = 18,\r\n    MPO_Endorsement = 19,\r\n    Capital_Improvement_Plan = 20,\r\n    Maintenance_Analysis = 21,\r\n    Crash_Report = 22,\r\n    Typical_Proposed_Deck_Section_Existing_Approach_Section = 23,\r\n    Proposed_Plan_View_of_Structure_and_Approaches_with_Project_Limits = 24,\r\n    Existing_Typical_Approach_Roadway_Section = 25,\r\n    SGR_Project_Cost_Estimates_both_Replacement_and_Repair_Options = 26,\r\n    Supporting_Documentation_for_Smart_Flag_s_ = 27,\r\n    Elevation_Section_of_Proposed_Bridge = 28,\r\n    Accident_Safety_Analysis_Crash_Report_at_Bridge_Site = 29,\r\n    Life_Cycle_Cost_Analysis_of_Bridge_Options = 30,\r\n    Governing_Body_Resolution_of_Support = 31,\r\n    MPO_Required_Resolution_of_Support = 32,\r\n    Rail_and_Transit_Project_Detail_Form = 33,\r\n    Other_Resolution_of_Support = 34,\r\n    Interchange_Access_Report_IAR_Operational_and_Safety_Analysis_Report_OSAR_ = 35,\r\n    Signal_Warrant_Justification_Study = 36,\r\n    Attachment_A_Local_Traffic_Volumes = 37,\r\n    Approval_Document_for_Site_Development_Plan = 38,\r\n    Applicant_Concurrence_with_Change = 39,\r\n    Project_Location_List = 40,\r\n    Detailed_Project_Estimate = 41,\r\n    CLRP_Document = 42,\r\n    Paving_Projects_Administration_Request_Form = 43,\r\n    Prescoping_Report = 44,\r\n    Existing_and_Proposed_Cross_Section_of_Deck = 45,\r\n    Existing_and_Proposed_Cross_Section_of_Immediate_Approach_Roadway = 46,\r\n    Cost_Estimates_Estimate_Workbook_and_Support_Documentation = 47,\r\n    Third_Party_Contribution_Plan = 48,\r\n    Project_Delivery_Schedule = 49,\r\n    Request_to_Administer = 50,\r\n    VDOT_Cost_Estimate_Workbook_CEWB_ = 51,\r\n    Existing_or_Projected_Transit_Ridership = 52,\r\n    Existing_Ridership = 53,\r\n    Projected_or_Existing_Ridership = 54,\r\n    Projected_Ridership_Increase_During_the_AM_Peak_Hour_as_a_Result_of_the_Improvement = 55,\r\n    Proposed_Schedule = 56,\r\n    Transit_Provider_Letter_of_Support = 57,\r\n    Imported_from_P4P = 58,\r\n    Custom_VTrans_Documentation = 59,\r\n    Multi_Jurisdictional_Trail_Plan = 60,\r\n    National_Registry = 61,\r\n    Budget_with_Match_Information = 62,\r\n    Business_Plan = 63,\r\n    Data = 64,\r\n    Bicycle_Pedestrian_Plan = 65,\r\n    Trail_Plan = 66,\r\n    National_Registry_Eligibility = 67,\r\n    Mitigation_Study = 68,\r\n    Existing_Project_Attachment = 69,\r\n    CIP_Documentation = 70,\r\n    Program_Plan = 71,\r\n    Program_Dashboard = 72,\r\n    MPO_Resolution = 73,\r\n    MPO_Attachment = 74,\r\n    SRTS_Team = 75,\r\n    Participating_Schools = 76,\r\n    Resolution_of_Match_Insurance = 77,\r\n    Resolution_for_Signature = 78,\r\n    SS01_Traffic_Volume_Information_Form = 79,\r\n    SS02_Unsignalized_Crossing_Study = 80,\r\n    SS03_Transit_Environmental_Review_Summary_Form = 81,\r\n    SS04_Design_Waiver_Design_Exception_Summary_Form = 82,\r\n    Evaluation = 83,\r\n    ADA_Transition_Plan = 84,\r\n    Construction_Plans = 85,\r\n    Coordination_Documentation = 86,\r\n    DHR_Acknowledgement_of_Historical_Significance = 87,\r\n    Letter_of_Support = 88,\r\n    Section_106_Coordination_and_Compliance = 89,\r\n    Position_Description = 91,\r\n    SGR_Paving_Project_Certification_Form = 92,\r\n    Cusp_Intake = 890,\r\n}\r\n\r\nexport interface ErrorLog {\r\n    Id: number;\r\n    Type?: string | undefined;\r\n    Message?: string | undefined;\r\n    StackTrace?: string | undefined;\r\n    Data?: string | undefined;\r\n    Url?: string | undefined;\r\n    FormData?: string | undefined;\r\n    Method?: string | undefined;\r\n    UserAgent?: string | undefined;\r\n    User?: string | undefined;\r\n    CreatedOn: Date;\r\n}\r\n\r\n/** A model for marshalling application event data between UI and Back-end */\r\nexport interface ApplicationEventsViewModel {\r\n    /** Events for the current workflow stack for this form.\r\n             */\r\n    allWorkflowEvents?: WorkflowEvent[] | undefined;\r\n    /** Events for the current workflow stack for this form.\r\n             */\r\n    validationsToPerform?: WorkflowEvent[] | undefined;\r\n    /** Events for the current workflow stack for this form.\r\n             */\r\n    allPendingValidations?: WorkflowEvent[] | undefined;\r\n    /** All events (coded events) that have occurred against this application\r\n             */\r\n    validationHistory?: ValidationEvent[] | undefined;\r\n}\r\n\r\nexport interface WorkflowEvent {\r\n    event_code: number;\r\n    has_button: boolean;\r\n    button_text?: string | undefined;\r\n    incomplete_bubble_text?: string | undefined;\r\n    complete_bubble_text?: string | undefined;\r\n    waiting_bubble_text?: string | undefined;\r\n    waiting_grid_text?: string | undefined;\r\n    complete_ddl_text?: string | undefined;\r\n    open_ddl_text?: string | undefined;\r\n    event_title_text?: string | undefined;\r\n    question_text?: string | undefined;\r\n    can_execute: boolean;\r\n    can_view_results: boolean;\r\n    has_completed: boolean;\r\n    is_ready: boolean;\r\n}\r\n\r\n/** Custom wrapper for ApplicationEvent for the benefit of the user interface */\r\nexport interface ValidationEvent {\r\n    /** The id of the row, if exists\r\n             */\r\n    eventRowId?: number | undefined;\r\n    /** The application that this event applies to\r\n             */\r\n    appid?: string | undefined;\r\n    /** When the application event was recorded\r\n             */\r\n    performed_on?: Date | undefined;\r\n    /** Whether the underlying ApplicationEvent Passed conditions\r\n             */\r\n    is_approved?: boolean | undefined;\r\n    /** Whether the underlying ApplicationEvent is part of the application's current event workflow.\r\nEvents that are historical and no longer relevant are is_current_flow=false.\r\n             */\r\n    is_current_flow: boolean;\r\n    /** The bll._application_event_code for this event\r\n             */\r\n    event_code: number;\r\n    /** The Event Value from the underlying ApplicationEvent, as a string\r\n             */\r\n    justification?: string | undefined;\r\n    /** The user id of the person recording the event. Defaulted to 0 (system)\r\n             */\r\n    performed_by?: number | undefined;\r\n    /** Returns the OIPI CoSS screening result data, if the event was for OIPI CoSS screening\r\n             */\r\n    OIPICoSSResult?: Application_oipi_coss_result | undefined;\r\n    OIPIRegNetResult?: Application_oipi_regnet_result | undefined;\r\n}\r\n\r\nexport interface Application_oipi_coss_result {\r\n    appid?: string | undefined;\r\n    coss_congestion?: number | undefined;\r\n    coss_date_reviewed?: Date | undefined;\r\n    coss_reasoning?: string | undefined;\r\n    coss_redundancy?: number | undefined;\r\n    coss_reliability?: number | undefined;\r\n    coss_reviewer?: string | undefined;\r\n    coss_safety?: number | undefined;\r\n    createdby: number;\r\n    createdon: Date;\r\n    isactive: boolean;\r\n    meet_coss_need?: boolean | undefined;\r\n    seq: number;\r\n    short_name?: string | undefined;\r\n    updatedby?: number | undefined;\r\n    updatedon?: Date | undefined;\r\n}\r\n\r\nexport interface Application_oipi_regnet_result {\r\n    appid?: string | undefined;\r\n    createdby: number;\r\n    createdon: Date;\r\n    isactive: boolean;\r\n    meet_regnet_need?: boolean | undefined;\r\n    regnet_connectivity?: number | undefined;\r\n    regnet_date_reviewed?: Date | undefined;\r\n    regnet_modal?: number | undefined;\r\n    regnet_reasoning?: string | undefined;\r\n    regnet_reliability?: number | undefined;\r\n    regnet_reviewer?: string | undefined;\r\n    regnet_tdm?: number | undefined;\r\n    regnet_walkable?: number | undefined;\r\n    seq: number;\r\n    short_name?: string | undefined;\r\n    updatedby?: number | undefined;\r\n    updatedon?: Date | undefined;\r\n}\r\n\r\nexport interface FileUploadResult {\r\n    DateUploaded?: string | undefined;\r\n    FileName?: string | undefined;\r\n    ChangeSummary?: string[] | undefined;\r\n    Oid?: number | undefined;\r\n}\r\n\r\nexport interface AttachmentViewModel {\r\n    applicationId?: string | undefined;\r\n    fileName?: string | undefined;\r\n}\r\n\r\nexport interface FollowReport {\r\n    appsequence: number;\r\n    AppId?: string | undefined;\r\n    AppName?: string | undefined;\r\n    DisplayId?: string | undefined;\r\n    StatusInternalName?: string | undefined;\r\n    AppLink?: string | undefined;\r\n    Discussion?: Get_application_summary_discussionResult | undefined;\r\n    Sups?: Get_application_summary_supsResult | undefined;\r\n    ValToolDistrict?: Get_application_summary_valtoolResult | undefined;\r\n    ValToolCO?: Get_application_summary_valtoolResult | undefined;\r\n}\r\n\r\nexport interface Get_application_summary_discussionResult {\r\n    appsequence: number;\r\n    AppName?: string | undefined;\r\n    DisplayId?: string | undefined;\r\n    Concurrence_Alerts_Concurred?: number | undefined;\r\n    Concurrence_Alerts_Outstanding?: number | undefined;\r\n    Action_Alerts_Resolved?: number | undefined;\r\n    Action_Alerts_Outstanding?: number | undefined;\r\n    Comments_Replied?: number | undefined;\r\n    Comments_Total?: number | undefined;\r\n    Comments_for_Features_Replied?: number | undefined;\r\n    Comments_for_Features_Total?: number | undefined;\r\n}\r\n\r\nexport interface Get_application_summary_supsResult {\r\n    appsequence: number;\r\n    District_Validator_Agreed?: boolean | undefined;\r\n    District_Validator_Disagreed?: boolean | undefined;\r\n    Applicant_Agreed?: boolean | undefined;\r\n    Applicant_Disagreed?: boolean | undefined;\r\n}\r\n\r\nexport interface Get_application_summary_valtoolResult {\r\n    appsequence?: number | undefined;\r\n    validation_type?: number | undefined;\r\n    General_Pending?: number | undefined;\r\n    General_Invalid?: number | undefined;\r\n    General_Revalidate?: number | undefined;\r\n    Features_Pending?: number | undefined;\r\n    Features_Invalid?: number | undefined;\r\n    Features_Revalidate?: number | undefined;\r\n    Location_Pending?: number | undefined;\r\n    Location_Invalid?: number | undefined;\r\n    Location_Revalidate?: number | undefined;\r\n    Accessibility_Factors_Pending?: number | undefined;\r\n    Accessibility_Factors_Invalid?: number | undefined;\r\n    Accessibility_Factors_Revalidate?: number | undefined;\r\n    Environmental_Factors_Pending?: number | undefined;\r\n    Environmental_Factors_Invalid?: number | undefined;\r\n    Environmental_Factors_Revalidate?: number | undefined;\r\n    Economic_Factors_Pending?: number | undefined;\r\n    Economic_Factors_Invalid?: number | undefined;\r\n    Economic_Factors_Revalidate?: number | undefined;\r\n    Funding_and_Delivery_Pending?: number | undefined;\r\n    Funding_and_Delivery_Invalid?: number | undefined;\r\n    Funding_and_Delivery_Revalidate?: number | undefined;\r\n}\r\n\r\nexport interface FormsConfigMetadataTree {\r\n    Pearls?: FormsConfigMetadataTreePearl[] | undefined;\r\n    Lookups?: { [key: string]: FormLookupMetadata; } | undefined;\r\n    Entities?: FormsConfigMetadataFlatEntity[] | undefined;\r\n    Settings?: { [key: string]: string; } | undefined;\r\n    Attachments?: { [key: string]: FormsConfigMetadataFlatAttachment[]; } | undefined;\r\n    Calculations?: FormsConfigMetadataFlatCalculation[] | undefined;\r\n    HasSummaryMode: boolean;\r\n}\r\n\r\nexport interface ApplicationFormsConfigMetadataTree extends FormsConfigMetadataTree {\r\n    FormInfo?: ApplicationFormMetadataDto | undefined;\r\n}\r\n\r\nexport interface ApplicationFormMetadataDto {\r\n    fid: number;\r\n    pid: number;\r\n    eid: number;\r\n    name?: string | undefined;\r\n    fiscalyear: number;\r\n    object_name?: string | undefined;\r\n    application_creation_message?: string | undefined;\r\n    inflation_revision?: string | undefined;\r\n    entity_name?: string | undefined;\r\n}\r\n\r\nexport interface FormsConfigMetadataTreePearl {\r\n    PearlConfig?: FormsConfigMetadataTreePearlConfig | undefined;\r\n    Sections?: FormsConfigMetadataTreeSection[] | undefined;\r\n}\r\n\r\nexport interface FormsConfigMetadataTreePearlConfig {\r\n    Name?: string | undefined;\r\n    Title?: string | undefined;\r\n    Icon?: string | undefined;\r\n    CustomTemplate?: string | undefined;\r\n    AvailableIf?: string | undefined;\r\n    IsMainPearl: boolean;\r\n    HideFromSummary?: boolean | undefined;\r\n}\r\n\r\nexport interface FormsConfigMetadataTreeSection {\r\n    Title?: string | undefined;\r\n    FieldGroups?: FormsConfigMetadataTreeFieldGroup[] | undefined;\r\n    IsCollapsed?: boolean | undefined;\r\n    HideTitle: boolean;\r\n}\r\n\r\nexport interface FormsConfigMetadataTreeFieldGroup {\r\n    Title?: string | undefined;\r\n    Fields?: FormsConfigMetadataTreeField[] | undefined;\r\n    IsCollapsed?: boolean | undefined;\r\n    CustomComponent?: string | undefined;\r\n    HideTitle: boolean;\r\n}\r\n\r\nexport interface FormsConfigMetadataTreeField {\r\n    Name?: string | undefined;\r\n    Path?: string | undefined;\r\n    LookupCode?: string | undefined;\r\n    DataType?: string | undefined;\r\n    Label?: string | undefined;\r\n    Tooltip?: string | undefined;\r\n    Description?: string | undefined;\r\n    PlaceholderText?: string | undefined;\r\n    Unit?: string | undefined;\r\n    CustomErrors?: { [key: string]: any; } | undefined;\r\n    FieldType?: string | undefined;\r\n    ColumnSize?: number | undefined;\r\n    FormId?: string | undefined;\r\n    HideFromSummary?: boolean | undefined;\r\n    MinValue?: string | undefined;\r\n    MaxValue?: string | undefined;\r\n    Pattern?: string | undefined;\r\n    Precision?: number | undefined;\r\n    Scale?: number | undefined;\r\n    AvailableIf?: string | undefined;\r\n    RequiredToSave?: boolean | undefined;\r\n    RequiredToSubmit?: boolean | undefined;\r\n    RequiredToSubmitIf?: string | undefined;\r\n    EditableIf?: string | undefined;\r\n}\r\n\r\nexport interface FormLookupMetadata {\r\n    Items?: Item[] | undefined;\r\n}\r\n\r\nexport interface Item {\r\n    Name?: string | undefined;\r\n    Value?: string | undefined;\r\n    Group?: string | undefined;\r\n}\r\n\r\nexport interface FormsConfigMetadataFlatEntity {\r\n    Name?: string | undefined;\r\n    ParentName?: string | undefined;\r\n    IsRepeatable?: boolean | undefined;\r\n    MaxRepeatable?: number | undefined;\r\n    MinRepeatable?: number | undefined;\r\n    RequiredToSave?: boolean | undefined;\r\n    RequiredToSubmit?: boolean | undefined;\r\n    Label?: string | undefined;\r\n}\r\n\r\nexport interface FormsConfigMetadataFlatAttachment {\r\n    ParentEntityPath?: string | undefined;\r\n    Name?: string | undefined;\r\n    Id: number;\r\n    RequiredToSubmit?: boolean | undefined;\r\n    RequiredMessage?: string | undefined;\r\n    RequiredToSubmitIf?: string | undefined;\r\n}\r\n\r\nexport interface FormsConfigMetadataFlatCalculation {\r\n    Name?: string | undefined;\r\n    CalcExpression?: string | undefined;\r\n}\r\n\r\nexport interface ServiceResultOfPutFormDataResult extends ServiceResult {\r\n    Data?: PutFormDataResult | undefined;\r\n}\r\n\r\nexport interface PutFormDataResult {\r\n    /** User should be redirected to this app id if the save is successful. */\r\n    RedirectApplicationId?: string | undefined;\r\n    SaveApplicationDataResult?: SaveApplicationDataResult | undefined;\r\n}\r\n\r\nexport interface SaveApplicationDataResult {\r\n    /** Results of SaveObjectAsync on the root application entity. All child entity saves will be nested under this root result. */\r\n    SaveObjectResult?: SaveObjectResult | undefined;\r\n    /** These pearls were found un-available based on their pearl Availability config. The pearl will be dropped from the config, taking any fields or data with it. */\r\n    UnavailablePearlNames?: string[] | undefined;\r\n}\r\n\r\n/** Save results for a single object persisted as dal.object row. */\r\nexport interface SaveObjectResult {\r\n    /** EAV entity name of this object, from base.entity.name. */\r\n    EntityName?: string | undefined;\r\n    /** Full JSON path to this object from the root of the save.\r\nThis includes nested objects and arrays i.e. `app.financial.phase[2].person`... */\r\n    JsonPath?: string | undefined;\r\n    /** Persistence id for this object, after saving. From dal.object.oid. */\r\n    PersistedObjectId?: number | undefined;\r\n    /** These properties were input to the save, but were actually dropped.\r\nKey is the property name. Value is the reason. */\r\n    PropertiesDropped?: KeyValuePairOfStringAndString[] | undefined;\r\n    /** Ids of child objects that have been dropped from this object (deleted).\r\nKey of dal.object.oid. */\r\n    OrphanChildObjectIdsDropped?: number[] | undefined;\r\n    /** Recursive report of all this object's child objects that were part of this save operation. */\r\n    ChildrenSaved?: SaveObjectResult[] | undefined;\r\n    /** Report of any problems with the expressions used by the form.\r\nKey is the full input expression from the config, Value is the error report. */\r\n    ExpressionParseErrors?: KeyValuePairOfStringAndString[] | undefined;\r\n    /** Report of which properties received special value handling, and what the handling was.\r\nKey is property name, Value is the handling that was applied. */\r\n    SpecialValueHandling?: { [key: string]: SpecialValueHandlingInstructions; } | undefined;\r\n    /** Fields that had their validation answers possibly cleared. Values are from `base.entity_attribute.eaid`. */\r\n    ClearedValidationQuestionEaids?: number[] | undefined;\r\n}\r\n\r\nexport interface KeyValuePairOfStringAndString {\r\n    Key?: string | undefined;\r\n    Value?: string | undefined;\r\n}\r\n\r\nexport enum SpecialValueHandlingInstructions {\r\n    None = 0,\r\n    SpatialMakeValid = 1,\r\n    BitLookup = 2,\r\n    Bit = 3,\r\n}\r\n\r\nexport interface ServiceResultOfFormSubmissionCapData extends ServiceResult {\r\n    Data?: FormSubmissionCapData | undefined;\r\n}\r\n\r\nexport interface FormSubmissionCapData {\r\n    canSubmitNewForm: boolean;\r\n    hasFormCap: boolean;\r\n    totalSubmittedForms: number;\r\n    organizationSubmissionCap: number;\r\n}\r\n\r\nexport interface V_cloned_apps_funding {\r\n    app_displayid?: string | undefined;\r\n    appid?: string | undefined;\r\n    child_appid?: string | undefined;\r\n    child_child_appid?: string | undefined;\r\n    child_child_displayid?: string | undefined;\r\n    child_child_fid?: number | undefined;\r\n    child_child_form_fy?: number | undefined;\r\n    child_child_form_name?: string | undefined;\r\n    child_child_form_object_name?: string | undefined;\r\n    child_child_funded?: boolean | undefined;\r\n    child_child_status?: string | undefined;\r\n    child_child_status_redactedname?: string | undefined;\r\n    child_displayid?: string | undefined;\r\n    child_fid: number;\r\n    child_form_fy: number;\r\n    child_form_name?: string | undefined;\r\n    child_form_object_name?: string | undefined;\r\n    child_funded?: boolean | undefined;\r\n    child_status?: string | undefined;\r\n    child_status_redactedname?: string | undefined;\r\n    fid: number;\r\n}\r\n\r\nexport interface AppRevision {\r\n    appid?: string | undefined;\r\n    apprevision: number;\r\n    parent_appid?: string | undefined;\r\n    display_id?: string | undefined;\r\n}\r\n\r\nexport interface NewAppViewModel {\r\n    FormId: number;\r\n    AppName?: string | undefined;\r\n    UserOrg?: OrgModel | undefined;\r\n}\r\n\r\nexport interface OrgModel {\r\n    name?: string | undefined;\r\n    orgid: number;\r\n}\r\n\r\nexport interface PavementApp {\r\n    AppId?: string | undefined;\r\n    Fkey: number;\r\n}\r\n\r\nexport interface NewPavementAppViewModel extends NewAppViewModel {\r\n    Fkey: number;\r\n    StreetName?: string | undefined;\r\n    SegmentLength?: number | undefined;\r\n    Cci?: number | undefined;\r\n    BeginMilePoint?: number | undefined;\r\n    EndMilePoint?: number | undefined;\r\n    IsNhs?: number | undefined;\r\n    Aadt?: number | undefined;\r\n    Locality?: string | undefined;\r\n    Geometry?: string | undefined;\r\n}\r\n\r\nexport interface HSIP24ScoringSaveModel {\r\n    factor1_calculated: number;\r\n    factor1_effective: number;\r\n    factor1_comments?: string | undefined;\r\n    factor2_calculated: number;\r\n    factor2_effective: number;\r\n    factor2_comments?: string | undefined;\r\n    factor3_calculated: number;\r\n    factor3_effective: number;\r\n    factor3_comments?: string | undefined;\r\n    factor4_calculated: number;\r\n    factor4_effective: number;\r\n    factor4_comments?: string | undefined;\r\n    factor5_calculated: number;\r\n    factor5_effective: number;\r\n    factor5_comments?: string | undefined;\r\n    factor6_calculated: number;\r\n    factor6_effective: number;\r\n    factor6_comments?: string | undefined;\r\n    last_saved_by: number;\r\n    last_saved_on?: string | undefined;\r\n    scoring_approved_by?: number | undefined;\r\n    scoring_approved_on?: string | undefined;\r\n}\r\n\r\nexport interface HSIP25ScoringSaveModel {\r\n    factor1_calculated: number;\r\n    factor1_effective: number;\r\n    factor1_comments?: string | undefined;\r\n    factor2_calculated: number;\r\n    factor2_effective: number;\r\n    factor2_comments?: string | undefined;\r\n    factor3_calculated: number;\r\n    factor3_effective: number;\r\n    factor3_comments?: string | undefined;\r\n    factor4_calculated: number;\r\n    factor4_effective: number;\r\n    factor4_comments?: string | undefined;\r\n    factor5_calculated: number;\r\n    factor5_effective: number;\r\n    factor5_comments?: string | undefined;\r\n    factor6_calculated: number;\r\n    factor6_effective: number;\r\n    factor6_comments?: string | undefined;\r\n    last_saved_by: number;\r\n    last_saved_on?: string | undefined;\r\n    scoring_approved_by?: number | undefined;\r\n    scoring_approved_on?: string | undefined;\r\n}\r\n\r\nexport interface HSIPSSI26ScoringSaveModel {\r\n    factor1_calculated: number;\r\n    factor1_effective: number;\r\n    factor1_comments?: string | undefined;\r\n    factor2_calculated: number;\r\n    factor2_effective: number;\r\n    factor2_comments?: string | undefined;\r\n    factor3_calculated: number;\r\n    factor3_effective: number;\r\n    factor3_comments?: string | undefined;\r\n    factor4_calculated: number;\r\n    factor4_effective: number;\r\n    factor4_comments?: string | undefined;\r\n    factor5_calculated: number;\r\n    factor5_effective: number;\r\n    factor5_comments?: string | undefined;\r\n    factor6_calculated: number;\r\n    factor6_effective: number;\r\n    factor6_comments?: string | undefined;\r\n    last_saved_by: number;\r\n    last_saved_on?: string | undefined;\r\n    scoring_approved_by?: number | undefined;\r\n    scoring_approved_on?: string | undefined;\r\n}\r\n\r\nexport interface HSIPSpot26ScoringSaveModel {\r\n    factor1_calculated: number;\r\n    factor1_effective: number;\r\n    factor1_comments?: string | undefined;\r\n    factor2_calculated: number;\r\n    factor2_effective: number;\r\n    factor2_comments?: string | undefined;\r\n    factor3_calculated: number;\r\n    factor3_effective: number;\r\n    factor3_comments?: string | undefined;\r\n    factor4_calculated: number;\r\n    factor4_effective: number;\r\n    factor4_comments?: string | undefined;\r\n    factor5_calculated: number;\r\n    factor5_effective: number;\r\n    factor5_comments?: string | undefined;\r\n    factor6_calculated: number;\r\n    factor6_effective: number;\r\n    factor6_comments?: string | undefined;\r\n    factor7_calculated: number;\r\n    factor7_effective: number;\r\n    factor7_comments?: string | undefined;\r\n    factor8_calculated: number;\r\n    factor8_effective: number;\r\n    factor8_comments?: string | undefined;\r\n    last_saved_by: number;\r\n    last_saved_on?: string | undefined;\r\n    scoring_approved_by?: number | undefined;\r\n    scoring_approved_on?: string | undefined;\r\n}\r\n\r\nexport interface HSIPVRU26ScoringSaveModel {\r\n    factor1_calculated: number;\r\n    factor1_effective: number;\r\n    factor1_comments?: string | undefined;\r\n    factor2_calculated: number;\r\n    factor2_effective: number;\r\n    factor2_comments?: string | undefined;\r\n    factor3_calculated: number;\r\n    factor3_effective: number;\r\n    factor3_comments?: string | undefined;\r\n    factor4_calculated: number;\r\n    factor4_effective: number;\r\n    factor4_comments?: string | undefined;\r\n    factor5_calculated: number;\r\n    factor5_effective: number;\r\n    factor5_comments?: string | undefined;\r\n    factor6_calculated: number;\r\n    factor6_effective: number;\r\n    factor6_comments?: string | undefined;\r\n    factor7_calculated: number;\r\n    factor7_effective: number;\r\n    factor7_comments?: string | undefined;\r\n    factor8_calculated: number;\r\n    factor8_effective: number;\r\n    factor8_comments?: string | undefined;\r\n    factor9_calculated: number;\r\n    factor9_effective: number;\r\n    factor9_comments?: string | undefined;\r\n    factor10_calculated: number;\r\n    factor10_effective: number;\r\n    factor10_comments?: string | undefined;\r\n    factor11_calculated: number;\r\n    factor11_effective: number;\r\n    factor11_comments?: string | undefined;\r\n    factor12_calculated: number;\r\n    factor12_effective: number;\r\n    factor12_comments?: string | undefined;\r\n    factor13_calculated: number;\r\n    factor13_effective: number;\r\n    factor13_comments?: string | undefined;\r\n    factor14_calculated: number;\r\n    factor14_effective: number;\r\n    factor14_comments?: string | undefined;\r\n    last_saved_by: number;\r\n    last_saved_on?: string | undefined;\r\n    scoring_approved_by?: number | undefined;\r\n    scoring_approved_on?: string | undefined;\r\n}\r\n\r\nexport interface HSIPRail26ScoringSaveModel {\r\n    factor1_calculated: number;\r\n    factor1_effective: number;\r\n    factor1_comments?: string | undefined;\r\n    factor2_calculated: number;\r\n    factor2_effective: number;\r\n    factor2_comments?: string | undefined;\r\n    factor3_calculated: number;\r\n    factor3_effective: number;\r\n    factor3_comments?: string | undefined;\r\n    factor4_calculated: number;\r\n    factor4_effective: number;\r\n    factor4_comments?: string | undefined;\r\n    factor5_calculated: number;\r\n    factor5_effective: number;\r\n    factor5_comments?: string | undefined;\r\n    factor6_calculated: number;\r\n    factor6_effective: number;\r\n    factor6_comments?: string | undefined;\r\n    last_saved_by: number;\r\n    last_saved_on?: string | undefined;\r\n    scoring_approved_by?: number | undefined;\r\n    scoring_approved_on?: string | undefined;\r\n}\r\n\r\nexport interface ServiceResultOfString extends ServiceResult {\r\n    Data?: string | undefined;\r\n}\r\n\r\nexport interface AppComparer {\r\n    application?: ApplicationComparison | undefined;\r\n    attributes?: AppComparerAttribute[] | undefined;\r\n    entities?: IAppComparerEntity[] | undefined;\r\n}\r\n\r\nexport interface ApplicationComparison {\r\n    appid?: IAppComparerElement | undefined;\r\n    name?: IAppComparerElement | undefined;\r\n    pid?: IAppComparerElement | undefined;\r\n    fid?: IAppComparerElement | undefined;\r\n    fiscalYear?: IAppComparerElement | undefined;\r\n    status?: IAppComparerElement | undefined;\r\n}\r\n\r\nexport interface IAppComparerElement {\r\n    sourceValue?: any | undefined;\r\n    targetValue?: any | undefined;\r\n}\r\n\r\nexport interface AppComparerAttribute {\r\n    aid: number;\r\n    name?: string | undefined;\r\n    sourceValue?: any | undefined;\r\n    value?: any | undefined;\r\n}\r\n\r\nexport interface IAppComparerEntity {\r\n    eid: number;\r\n    name?: string | undefined;\r\n    isrepeatable: boolean;\r\n    oid: number;\r\n    source_oid?: number | undefined;\r\n    status?: string | undefined;\r\n    attributes?: IAppComparerAttribute[] | undefined;\r\n    entities?: IAppComparerEntity[] | undefined;\r\n}\r\n\r\nexport interface IAppComparerAttribute {\r\n    aid: number;\r\n    name?: string | undefined;\r\n    sourceValue?: any | undefined;\r\n    value?: any | undefined;\r\n}\r\n\r\n/** return to front end an object of all apps missing reference from/to azure blob storage */\r\nexport interface DefectedAppsViewModel {\r\n    danglingDBPointers?: MissingAttchments[] | undefined;\r\n    orphanedFileBlobs?: MissingAttchments[] | undefined;\r\n}\r\n\r\nexport interface MissingAttchments {\r\n    /** The application ID from the dal.application database table */\r\n    dbAppId?: string | undefined;\r\n    /** The name of the blob container in Azure storage account */\r\n    blobContainerName?: string | undefined;\r\n    /** A collection of filesNames for attachments with issues */\r\n    fileNames?: string[] | undefined;\r\n}\r\n\r\nexport interface AttachmentCorrectionViewModel {\r\n    targetAppId?: string | undefined;\r\n    sourceBlobContainerName?: string | undefined;\r\n    targetBlobContainerName?: string | undefined;\r\n    fileCopyResults?: AttachmentCopyResultViewModel[] | undefined;\r\n}\r\n\r\nexport interface AttachmentCopyResultViewModel {\r\n    fileName?: string | undefined;\r\n    copyResult?: string | undefined;\r\n    message?: string | undefined;\r\n}\r\n\r\nexport interface FormIntakeData {\r\n    fid: number;\r\n    name?: string | undefined;\r\n    object_name?: string | undefined;\r\n    intake_period_start?: Date | undefined;\r\n    intake_period_end?: Date | undefined;\r\n    public_visible_date?: Date | undefined;\r\n    fiscalyear: number;\r\n    inflation_revision?: string | undefined;\r\n    isactive: boolean;\r\n}\r\n\r\nexport interface NoticeViewModel {\r\n    id: number;\r\n    title?: string | undefined;\r\n    body?: string | undefined;\r\n    startson: Date;\r\n    expireson: Date;\r\n    startsonFormatted?: string | undefined;\r\n    expiresonFormatted?: string | undefined;\r\n    createdon: Date;\r\n    createdby: number;\r\n    updatedon?: Date | undefined;\r\n    updatedby?: number | undefined;\r\n    status?: string | undefined;\r\n}\r\n\r\nexport interface Notice {\r\n    body?: string | undefined;\r\n    createdby: number;\r\n    createdon: Date;\r\n    expireson: Date;\r\n    id: number;\r\n    startson: Date;\r\n    status?: string | undefined;\r\n    title?: string | undefined;\r\n    updatedby?: number | undefined;\r\n    updatedon?: Date | undefined;\r\n}\r\n\r\nexport interface OrganizationAccessModel {\r\n    /** The ID of the organization */\r\n    orgid?: number | undefined;\r\n    /** The name of the security privilege action */\r\n    actionName?: string | undefined;\r\n}\r\n\r\nexport interface OrganizationViewModel {\r\n    orgid: number;\r\n    name: string;\r\n    primaryContactName: string;\r\n    primaryPhone: string;\r\n    secondaryPhone?: string | undefined;\r\n    primaryEmail: string;\r\n    secondaryEmail?: string | undefined;\r\n    orgtypeid: number;\r\n    orgtype?: string | undefined;\r\n    updatedby?: number | undefined;\r\n    isarchived: boolean;\r\n    createdby: number;\r\n    fips?: number[] | undefined;\r\n    /** New user organization administrator for the new organization */\r\n    User?: NewOrgAdminViewModel | undefined;\r\n    /** Flag to indicate if a new org admin (see User property above) should be created for a new organization */\r\n    addAdmin: boolean;\r\n    /** List of the pre-screening caps for this organization by form */\r\n    formCaps?: OrganizationFormCapViewModel[] | undefined;\r\n    districts?: OrganizationDistrictViewModel[] | undefined;\r\n    non_program_roles?: OrganizationAllowedNonProgramRoleViewModel[] | undefined;\r\n    programs?: OrganizationAllowedProgramViewModel[] | undefined;\r\n    subOrgs?: OrganizationSubOrganizationViewModel[] | undefined;\r\n}\r\n\r\nexport interface NewOrgAdminViewModel {\r\n    emailaddress: string;\r\n    firstname: string;\r\n    lastname: string;\r\n    orgid: number;\r\n    createdby: number;\r\n}\r\n\r\n/** view model for pre-screen caps by org */\r\nexport interface OrganizationFormCapViewModel {\r\n    orgid: number;\r\n    fid: number;\r\n    cap_type_id: number;\r\n    value?: number | undefined;\r\n    name?: string | undefined;\r\n    pid: number;\r\n    created: boolean;\r\n    default_value?: number | undefined;\r\n}\r\n\r\nexport interface OrganizationDistrictViewModel {\r\n    district_id: number;\r\n    district_name?: string | undefined;\r\n    is_selected: boolean;\r\n}\r\n\r\nexport interface OrganizationAllowedNonProgramRoleViewModel {\r\n    organization_allowed_role_id?: number | undefined;\r\n    is_selected: boolean;\r\n    role_id: number;\r\n    role_name?: string | undefined;\r\n}\r\n\r\nexport interface OrganizationAllowedProgramViewModel {\r\n    pid: number;\r\n    program_name?: string | undefined;\r\n    program_roles?: OrganizationAllowedProgramRoleViewModel[] | undefined;\r\n}\r\n\r\nexport interface OrganizationAllowedProgramRoleViewModel {\r\n    organization_allowed_role_id?: number | undefined;\r\n    is_selected: boolean;\r\n    role_id: number;\r\n    role_name?: string | undefined;\r\n}\r\n\r\nexport interface OrganizationSubOrganizationViewModel {\r\n    orgid: number;\r\n    name?: string | undefined;\r\n    is_selected: boolean;\r\n}\r\n\r\nexport enum AdminType {\r\n    RootAdmin = 0,\r\n    PortalAdmin = 1,\r\n    DistrictAdmin = 2,\r\n    OrganizationAdmin = 3,\r\n    MyAccountAdmin = 4,\r\n}\r\n\r\nexport interface Organization {\r\n    orgid: number;\r\n    name?: string | undefined;\r\n    orgtype: number;\r\n    primaryContactName?: string | undefined;\r\n    primaryPhone?: string | undefined;\r\n    primaryEmail?: string | undefined;\r\n    secondaryContactName?: string | undefined;\r\n    secondaryPhone?: string | undefined;\r\n    secondaryEmail?: string | undefined;\r\n    isarchived: boolean;\r\n    createdby?: number | undefined;\r\n    createdon: Date;\r\n    updatedby?: number | undefined;\r\n    updatedon?: Date | undefined;\r\n    createdbyNavigation?: user | undefined;\r\n    organization_allowed_role?: Organization_allowed_role[] | undefined;\r\n    organization_form_cap?: Organization_form_cap[] | undefined;\r\n    updatedbyNavigation?: user | undefined;\r\n    user?: user[] | undefined;\r\n    district?: District[] | undefined;\r\n    orgid_child?: Organization[] | undefined;\r\n    orgid_parent?: Organization[] | undefined;\r\n}\r\n\r\nexport interface user {\r\n    uid: number;\r\n    emailaddress?: string | undefined;\r\n    firstname?: string | undefined;\r\n    lastname?: string | undefined;\r\n    passwordhash?: string | undefined;\r\n    passwordexpireson: Date;\r\n    orgid: number;\r\n    notes?: string | undefined;\r\n    isarchived: boolean;\r\n    lastloggedinon?: Date | undefined;\r\n    createdby?: number | undefined;\r\n    createdon: Date;\r\n    updatedby?: number | undefined;\r\n    updatedon?: Date | undefined;\r\n    SecurityStamp?: string | undefined;\r\n    EmailConfirmed: boolean;\r\n    notifications_digest_opt_out?: boolean | undefined;\r\n    InversecreatedbyNavigation?: user[] | undefined;\r\n    InverseupdatedbyNavigation?: user[] | undefined;\r\n    createdbyNavigation?: user | undefined;\r\n    org?: Organization | undefined;\r\n    organizationcreatedbyNavigation?: Organization[] | undefined;\r\n    organizationupdatedbyNavigation?: Organization[] | undefined;\r\n    retired_password?: Retired_password[] | undefined;\r\n    role_member?: Role_member[] | undefined;\r\n    updatedbyNavigation?: user | undefined;\r\n}\r\n\r\nexport interface Retired_password {\r\n    id: number;\r\n    uid: number;\r\n    passwordhash?: string | undefined;\r\n    retiredon: Date;\r\n    uidNavigation?: user | undefined;\r\n}\r\n\r\nexport interface Role_member {\r\n    id: number;\r\n    role_id: number;\r\n    uid: number;\r\n    district_id?: number | undefined;\r\n    pid?: number | undefined;\r\n    district?: District | undefined;\r\n    role?: Role | undefined;\r\n    uidNavigation?: user | undefined;\r\n}\r\n\r\nexport interface District {\r\n    id: number;\r\n    name?: string | undefined;\r\n    role_member?: Role_member[] | undefined;\r\n    org?: Organization[] | undefined;\r\n}\r\n\r\nexport interface Role {\r\n    id: number;\r\n    name?: string | undefined;\r\n    role_type_id: number;\r\n    organization_allowed_role?: Organization_allowed_role[] | undefined;\r\n    program_allowed_role?: Program_allowed_role[] | undefined;\r\n    role_member?: Role_member[] | undefined;\r\n    role_privilege?: Role_privilege[] | undefined;\r\n    role_type?: Role_type | undefined;\r\n}\r\n\r\nexport interface Organization_allowed_role {\r\n    id: number;\r\n    orgid: number;\r\n    role_id: number;\r\n    pid?: number | undefined;\r\n    org?: Organization | undefined;\r\n    role?: Role | undefined;\r\n}\r\n\r\nexport interface Program_allowed_role {\r\n    pid: number;\r\n    role_id: number;\r\n    role?: Role | undefined;\r\n}\r\n\r\nexport interface Role_privilege {\r\n    id: number;\r\n    role_id: number;\r\n    privilege_id: number;\r\n    access_level_id: number;\r\n    applicationstatus?: number | undefined;\r\n    intake_period_limited?: boolean | undefined;\r\n    pid_override?: number | undefined;\r\n    access_level?: access_level | undefined;\r\n    privilege?: Privilege | undefined;\r\n    role?: Role | undefined;\r\n}\r\n\r\nexport interface access_level {\r\n    id: number;\r\n    name?: string | undefined;\r\n    role_privilege?: Role_privilege[] | undefined;\r\n}\r\n\r\nexport interface Privilege {\r\n    id: number;\r\n    securable_id: number;\r\n    action_id: number;\r\n    action?: Action | undefined;\r\n    role_privilege?: Role_privilege[] | undefined;\r\n    securable?: Securable | undefined;\r\n}\r\n\r\nexport interface Action {\r\n    id: number;\r\n    name?: string | undefined;\r\n    display_name?: string | undefined;\r\n    privilege?: Privilege[] | undefined;\r\n}\r\n\r\nexport interface Securable {\r\n    id: number;\r\n    name?: string | undefined;\r\n    privilege?: Privilege[] | undefined;\r\n}\r\n\r\nexport interface Role_type {\r\n    id: number;\r\n    name?: string | undefined;\r\n    role?: Role[] | undefined;\r\n}\r\n\r\nexport interface Organization_form_cap {\r\n    orgid: number;\r\n    fid: number;\r\n    cap_type_id: number;\r\n    value: number;\r\n    cap_type?: cap_type | undefined;\r\n    org?: Organization | undefined;\r\n}\r\n\r\nexport interface cap_type {\r\n    id: number;\r\n    name?: string | undefined;\r\n    organization_form_cap?: Organization_form_cap[] | undefined;\r\n}\r\n\r\nexport interface AdminTypeOrganizationViewModel {\r\n    OrganizationViewModel?: OrganizationViewModel | undefined;\r\n    AdminType: AdminType;\r\n}\r\n\r\nexport interface UserViewModel {\r\n    uid: number;\r\n    emailaddress: string;\r\n    firstname: string;\r\n    lastname: string;\r\n    orgid: number;\r\n    orgname?: string | undefined;\r\n    notes?: string | undefined;\r\n    isarchived: boolean;\r\n    lastloggedinon?: Date | undefined;\r\n    createdon: Date;\r\n    updatedon?: Date | undefined;\r\n    system_role_members?: SystemRoleMemberViewModel[] | undefined;\r\n    district_role_members?: DistrictRoleViewModel[] | undefined;\r\n    programs?: ProgramRoleViewModel[] | undefined;\r\n    notifications_digest_opt_out: boolean;\r\n}\r\n\r\nexport interface SystemRoleMemberViewModel {\r\n    role_member_id?: number | undefined;\r\n    is_selected: boolean;\r\n    role_id: number;\r\n    role_name?: string | undefined;\r\n}\r\n\r\nexport interface DistrictRoleViewModel {\r\n    role_id: number;\r\n    role_name?: string | undefined;\r\n    districts?: DistrictRoleMemberViewModel[] | undefined;\r\n}\r\n\r\nexport interface DistrictRoleMemberViewModel {\r\n    role_member_id?: number | undefined;\r\n    is_selected: boolean;\r\n    district_id: number;\r\n    district_name?: string | undefined;\r\n}\r\n\r\nexport interface ProgramRoleViewModel {\r\n    pid: number;\r\n    program_name?: string | undefined;\r\n    program_roles?: ProgramRoleMemberViewModel[] | undefined;\r\n    district_program_roles?: DistrictProgramRoleViewModel[] | undefined;\r\n    program_role_groups?: ProgramRoleGroupViewModel[] | undefined;\r\n}\r\n\r\nexport interface ProgramRoleMemberViewModel {\r\n    role_member_id?: number | undefined;\r\n    is_selected: boolean;\r\n    role_id: number;\r\n    role_name?: string | undefined;\r\n}\r\n\r\nexport interface DistrictProgramRoleViewModel {\r\n    role_id: number;\r\n    role_name?: string | undefined;\r\n    districts?: DistrictProgramRoleMemberViewModel[] | undefined;\r\n}\r\n\r\nexport interface DistrictProgramRoleMemberViewModel {\r\n    role_member_id?: number | undefined;\r\n    is_selected: boolean;\r\n    district_id: number;\r\n    district_name?: string | undefined;\r\n}\r\n\r\nexport interface ProgramRoleGroupViewModel {\r\n    name?: string | undefined;\r\n    program_roles?: ProgramRoleMemberViewModel[] | undefined;\r\n    district_program_roles?: DistrictProgramRoleViewModel[] | undefined;\r\n}\r\n\r\nexport interface OrganizationOrgsViewModel {\r\n    id: number;\r\n    name?: string | undefined;\r\n}\r\n\r\nexport interface GridResultOfOrganizationGridViewModel {\r\n    TotalCount: number;\r\n    TotalPages: number;\r\n    Results?: OrganizationGridViewModel[] | undefined;\r\n}\r\n\r\nexport interface OrganizationGridViewModel {\r\n    name?: string | undefined;\r\n    primaryEmail?: string | undefined;\r\n    orgtypeid: number;\r\n    orgid: number;\r\n    orgtype?: string | undefined;\r\n}\r\n\r\n/** View model used when only needed to know the allowed roles for a specific org, or any allowed role for a new org */\r\nexport interface OrganizationAllowedRolesViewModel {\r\n    non_program_roles?: OrganizationAllowedNonProgramRoleViewModel[] | undefined;\r\n    programs?: OrganizationAllowedProgramViewModel[] | undefined;\r\n}\r\n\r\nexport interface District_organization {\r\n    district_id: number;\r\n    orgid: number;\r\n}\r\n\r\nexport interface ProjectGrid {\r\n    id: number;\r\n    upc?: string | undefined;\r\n    description?: string | undefined;\r\n    orgid: number;\r\n    organization?: string | undefined;\r\n    district_id: number;\r\n    project_admin_id: number;\r\n    updated_on?: Date | undefined;\r\n    update_due_on?: Date | undefined;\r\n    status_id: number;\r\n    status_name?: string | undefined;\r\n    is_archived: boolean;\r\n}\r\n\r\nexport interface ProjectFormViewModel {\r\n    id: number;\r\n    upc?: ProjectFieldViewModelOfString | undefined;\r\n    contract_id?: ProjectFieldViewModelOfString | undefined;\r\n    district_id?: ProjectFieldViewModelOfShort | undefined;\r\n    road_system_id?: ProjectFieldViewModelOfNullableByte | undefined;\r\n    residency_id?: ProjectFieldViewModelOfNullableShort | undefined;\r\n    route_number?: ProjectFieldViewModelOfString | undefined;\r\n    project_admin_id?: ProjectFieldViewModelOfByte | undefined;\r\n    description?: ProjectFieldViewModelOfString | undefined;\r\n    project_work_type_id?: ProjectFieldViewModelOfNullableShort | undefined;\r\n    vdot_contact_name?: ProjectFieldViewModelOfString | undefined;\r\n    vdot_contact_phone_num?: ProjectFieldViewModelOfString | undefined;\r\n    vdot_contact_email_addr?: ProjectFieldViewModelOfString | undefined;\r\n    non_vdot_contact_name?: ProjectFieldViewModelOfString | undefined;\r\n    non_vdot_contact_phone_num?: ProjectFieldViewModelOfString | undefined;\r\n    non_vdot_contact_email_addr?: ProjectFieldViewModelOfString | undefined;\r\n    construction_company_name?: ProjectFieldViewModelOfString | undefined;\r\n    original_contract_completion_date?: ProjectFieldViewModelOfNullableDateTime | undefined;\r\n    current_contract_completion_date?: ProjectFieldViewModelOfNullableDateTime | undefined;\r\n    contract_acceptance_date?: ProjectFieldViewModelOfNullableDateTime | undefined;\r\n    contract_award_amt_usd?: ProjectFieldViewModelOfNullableDecimal | undefined;\r\n    current_contract_amt_usd?: ProjectFieldViewModelOfNullableDecimal | undefined;\r\n    cumulative_work_cost_usd?: ProjectFieldViewModelOfNullableDecimal | undefined;\r\n    update_due_on?: ProjectFieldViewModelOfNullableDateTime | undefined;\r\n    created_on?: ProjectFieldViewModelOfDateTime | undefined;\r\n    project_comment_id?: ProjectFieldViewModelOfNullableShort | undefined;\r\n    project_status_id: number;\r\n    updated_by?: string | undefined;\r\n    updated_on?: Date | undefined;\r\n    mileStones?: MileStoneViewModel[] | undefined;\r\n    is_archived?: ProjectFieldViewModelOfBoolean | undefined;\r\n    project_team_site?: string | undefined;\r\n    org: number;\r\n    isAdminSave: boolean;\r\n}\r\n\r\nexport interface ProjectFieldViewModelOfString {\r\n    Value?: string | undefined;\r\n    IsEditable: boolean;\r\n    SendsUpdateEmail: boolean;\r\n    UserFriendlyName?: string | undefined;\r\n}\r\n\r\nexport interface ProjectFieldViewModelOfShort {\r\n    Value: number;\r\n    IsEditable: boolean;\r\n    SendsUpdateEmail: boolean;\r\n    UserFriendlyName?: string | undefined;\r\n}\r\n\r\nexport interface ProjectFieldViewModelOfNullableByte {\r\n    Value?: number | undefined;\r\n    IsEditable: boolean;\r\n    SendsUpdateEmail: boolean;\r\n    UserFriendlyName?: string | undefined;\r\n}\r\n\r\nexport interface ProjectFieldViewModelOfNullableShort {\r\n    Value?: number | undefined;\r\n    IsEditable: boolean;\r\n    SendsUpdateEmail: boolean;\r\n    UserFriendlyName?: string | undefined;\r\n}\r\n\r\nexport interface ProjectFieldViewModelOfByte {\r\n    Value: number;\r\n    IsEditable: boolean;\r\n    SendsUpdateEmail: boolean;\r\n    UserFriendlyName?: string | undefined;\r\n}\r\n\r\nexport interface ProjectFieldViewModelOfNullableDateTime {\r\n    Value?: Date | undefined;\r\n    IsEditable: boolean;\r\n    SendsUpdateEmail: boolean;\r\n    UserFriendlyName?: string | undefined;\r\n}\r\n\r\nexport interface ProjectFieldViewModelOfNullableDecimal {\r\n    Value?: number | undefined;\r\n    IsEditable: boolean;\r\n    SendsUpdateEmail: boolean;\r\n    UserFriendlyName?: string | undefined;\r\n}\r\n\r\nexport interface ProjectFieldViewModelOfDateTime {\r\n    Value: Date;\r\n    IsEditable: boolean;\r\n    SendsUpdateEmail: boolean;\r\n    UserFriendlyName?: string | undefined;\r\n}\r\n\r\nexport interface MileStoneViewModel {\r\n    id: number;\r\n    project_id: number;\r\n    description?: ProjectFieldViewModelOfString | undefined;\r\n    original_completion_date?: ProjectFieldViewModelOfDateTime | undefined;\r\n    actual_completion_date?: ProjectFieldViewModelOfNullableDateTime | undefined;\r\n    created_on: Date;\r\n    created_by?: string | undefined;\r\n    updated_by?: string | undefined;\r\n    updated_on?: Date | undefined;\r\n}\r\n\r\nexport interface ProjectFieldViewModelOfBoolean {\r\n    Value: boolean;\r\n    IsEditable: boolean;\r\n    SendsUpdateEmail: boolean;\r\n    UserFriendlyName?: string | undefined;\r\n}\r\n\r\nexport interface AvailableReportModel {\r\n    report_id: number;\r\n    report_name?: string | undefined;\r\n}\r\n\r\nexport interface RoleNameViewModel {\r\n    display_name?: string | undefined;\r\n    role_id: number;\r\n}\r\n\r\nexport interface RoleAdminCountViewModel {\r\n    pid?: number | undefined;\r\n    program_name?: string | undefined;\r\n    role_id: number;\r\n    role_name?: string | undefined;\r\n    org_count?: number | undefined;\r\n    user_count: number;\r\n    child_roles?: RoleDistrictAdminCountViewModel[] | undefined;\r\n    grouped_roles?: RoleAdminCountViewModel[] | undefined;\r\n}\r\n\r\nexport interface RoleDistrictAdminCountViewModel {\r\n    district_id?: number | undefined;\r\n    district_name?: string | undefined;\r\n    user_count: number;\r\n}\r\n\r\nexport interface UserHasRole {\r\n    firstname?: string | undefined;\r\n    lastname?: string | undefined;\r\n    orgname?: string | undefined;\r\n    orgid: number;\r\n    orgtypeid: number;\r\n    uid: number;\r\n    has_role: boolean;\r\n    org_has_role: boolean;\r\n    is_archived: boolean;\r\n}\r\n\r\nexport interface OrgHasRole {\r\n    orgid: number;\r\n    orgname?: string | undefined;\r\n    orgtypeid: number;\r\n    is_archived: boolean;\r\n    active_users_with_role: number;\r\n    has_role: boolean;\r\n}\r\n\r\nexport interface BulkAssignUserRoleModel {\r\n    role_id: number;\r\n    pid?: number | undefined;\r\n    district_id?: number | undefined;\r\n    uid_to_be_added?: number[] | undefined;\r\n    uid_to_be_removed?: number[] | undefined;\r\n}\r\n\r\nexport interface BulkAssignOrgRoleModel {\r\n    role_id: number;\r\n    pid?: number | undefined;\r\n    orgid_to_be_added?: number[] | undefined;\r\n    orgid_to_be_removed?: number[] | undefined;\r\n}\r\n\r\nexport interface Validation_event {\r\n    appsequence: number;\r\n    comments?: string | undefined;\r\n    createdby: number;\r\n    createdon: Date;\r\n    id: number;\r\n    is_current: boolean;\r\n    is_submitted: boolean;\r\n    pass_fail_outcome?: boolean | undefined;\r\n    type_id: number;\r\n    created_by_user?: User2 | undefined;\r\n    is_created_by_mmwg?: boolean | undefined;\r\n    revshare_additional_questions?: Revshare_district_validation_event | undefined;\r\n    ss_pre_app_district_review_questions?: Ss_pre_app_district_review | undefined;\r\n    ss_district_additional_questions?: Ss_district_validation_event | undefined;\r\n    ss_pre_app_co_validation_questions?: Ss_pre_app_co_validation | undefined;\r\n    prescreening_additional_questions?: Ss_prescreening_validation_event | undefined;\r\n    coss_additional_questions?: Ss_coss_validation_event | undefined;\r\n    regnet_additional_questions?: Ss_regnet_validation_event | undefined;\r\n    ss_full_app_district_review_questions_fy22?: Ss_full_app_district_review_fy22 | undefined;\r\n    ss_full_app_co_validation_questions_fy22?: Ss_full_app_co_validation_fy22 | undefined;\r\n    ss_oipi_validation_questions_fy22?: Ss_oipi_validation_fy22 | undefined;\r\n    ss_mmwg_review_questions_fy22?: Ss_mmwg_review_fy22 | undefined;\r\n    ss_ewg_review_questions_fy22?: Ss_ewg_review_fy22 | undefined;\r\n    ss_pre_app_district_review_questions_fy24?: Ss_pre_app_district_review_fy24 | undefined;\r\n    ss_pre_app_co_validation_questions_fy24?: Ss_pre_app_co_validation_fy24 | undefined;\r\n    ss_full_app_district_screening_questions_fy24?: Ss_full_app_district_screening_fy24 | undefined;\r\n    ss_full_app_co_screening_questions_fy24?: Ss_full_app_co_screening_fy24 | undefined;\r\n    ss_full_app_10_percent_questions_fy24?: Ss_full_app_10_percent_screening_fy24 | undefined;\r\n    ss_full_app_ewg_review_questions_fy24?: Ss_full_app_ewg_review_fy24 | undefined;\r\n    pavement_district_additional_questions?: Sgr_pavement_district_validation_event | undefined;\r\n    pavement_co_additional_questions?: Sgr_pavement_central_office_validation_event | undefined;\r\n    pavement_district_additional_questions_fy22?: Sgr_pavement_district_validation_event_fy22 | undefined;\r\n    pavement_co_additional_questions_fy22?: Sgr_pavement_central_office_validation_event_fy22 | undefined;\r\n    pavement_district_additional_questions_fy23?: Sgr_pavement_district_validation_event_fy23 | undefined;\r\n    pavement_co_additional_questions_fy23?: Sgr_pavement_central_office_validation_event_fy23 | undefined;\r\n    pavement_district_additional_questions_fy24?: Sgr_pavement_district_validation_event_fy24 | undefined;\r\n    pavement_co_additional_questions_fy24?: Sgr_pavement_central_office_validation_event_fy24 | undefined;\r\n    bridge_district_engineer_additional_questions?: Sgr_bridge_district_engineer_validation_event | undefined;\r\n    bridge_co_additional_questions?: Sgr_bridge_central_office_validation_event | undefined;\r\n    bridge_co_engineer_additional_questions?: Sgr_bridge_central_office_engineer_validation_event | undefined;\r\n    bridge_district_additional_questions?: Sgr_bridge_district_validation_event | undefined;\r\n    bridge_co_validation_questions_fy20?: Sgr_bridge_central_office_validation_fy20 | undefined;\r\n    bridge_district_validation_questions_fy20?: Sgr_bridge_district_validation_fy20 | undefined;\r\n    bridge_district_review_questions_fy20?: Sgr_bridge_district_engineer_review_fy20 | undefined;\r\n    bridge_district_engineer_review_questions_fy21?: Sgr_bridge_district_engineer_review_fy21 | undefined;\r\n    bridge_district_validation_questions_fy21?: Sgr_bridge_district_validation_fy21 | undefined;\r\n    bridge_co_engineer_additional_questions_fy21?: Sgr_bridge_central_office_engineer_review_fy21 | undefined;\r\n    bridge_co_validation_questions_fy21?: Sgr_bridge_central_office_validation_fy21 | undefined;\r\n    bridge_district_engineer_review_questions_fy22?: Sgr_bridge_district_engineer_review_fy22 | undefined;\r\n    bridge_district_validation_questions_fy22?: Sgr_bridge_district_validation_fy22 | undefined;\r\n    bridge_co_engineer_additional_questions_fy22?: Sgr_bridge_central_office_engineer_review_fy22 | undefined;\r\n    bridge_co_validation_questions_fy22?: Sgr_bridge_central_office_validation_fy22 | undefined;\r\n    bridge_district_engineer_review_pre_app_questions_fy23?: Sgr_bridge_district_engineer_pre_app_review_fy23 | undefined;\r\n    bridge_district_validation_pre_app_questions_fy23?: Sgr_bridge_district_pre_app_validation_fy23 | undefined;\r\n    bridge_co_engineer_additional_pre_app_questions_fy23?: Sgr_bridge_central_office_engineer_pre_app_review_fy23 | undefined;\r\n    bridge_co_validation_pre_app_questions_fy23?: Sgr_bridge_central_office_pre_app_validation_fy23 | undefined;\r\n    bridge_district_engineer_review_full_app_questions_fy23?: Sgr_bridge_district_engineer_full_app_review_fy23 | undefined;\r\n    bridge_district_validation_full_app_questions_fy23?: Sgr_bridge_district_full_app_validation_fy23 | undefined;\r\n    bridge_co_engineer_additional_full_app_questions_fy23?: Sgr_bridge_central_office_engineer_full_app_review_fy23 | undefined;\r\n    bridge_co_validation_full_app_questions_fy23?: Sgr_bridge_central_office_full_app_validation_fy23 | undefined;\r\n    bridge_district_engineer_review_pre_app_questions_fy24?: Sgr_bridge_district_engineer_pre_app_review_fy24 | undefined;\r\n    bridge_district_validation_pre_app_questions_fy24?: Sgr_bridge_district_pre_app_validation_fy24 | undefined;\r\n    bridge_co_engineer_additional_pre_app_questions_fy24?: Sgr_bridge_central_office_engineer_pre_app_review_fy24 | undefined;\r\n    bridge_co_validation_pre_app_questions_fy24?: Sgr_bridge_central_office_pre_app_validation_fy24 | undefined;\r\n    bridge_district_engineer_review_full_app_questions_fy24?: Sgr_bridge_district_engineer_full_app_review_fy24 | undefined;\r\n    bridge_district_validation_full_app_questions_fy24?: Sgr_bridge_district_full_app_validation_fy24 | undefined;\r\n    bridge_co_engineer_additional_full_app_questions_fy24?: Sgr_bridge_central_office_engineer_full_app_review_fy24 | undefined;\r\n    bridge_co_validation_full_app_questions_fy24?: Sgr_bridge_central_office_full_app_validation_fy24 | undefined;\r\n    bridge_district_engineer_review_questions_fy26?: Sgr_bridge_district_engineer_review_fy26 | undefined;\r\n    bridge_district_validation_questions_fy26?: Sgr_bridge_district_validation_fy26 | undefined;\r\n    bridge_co_engineer_additional_questions_fy26?: Sgr_bridge_central_office_engineer_review_fy26 | undefined;\r\n    pre_scoping_app_district_review_questions_fy22?: Pre_scoping_app_district_review | undefined;\r\n    pre_scoping_app_district_validation_questions_fy22?: Pre_scoping_app_district_validation | undefined;\r\n    pre_scoping_app_co_validation_questions_fy22?: Pre_scoping_app_co_validation | undefined;\r\n    ta_pre_app_district_reviewer_questions?: Ta_pre_app_district_reviewer | undefined;\r\n    ta_pre_app_co_validator_questions?: Ta_pre_app_co_validator | undefined;\r\n    ta_additional_questions?: Ta_central_office_validation_event | undefined;\r\n    ta_central_office_validation_event_y20_questions?: Ta_central_office_validation_event_y20 | undefined;\r\n    ta_central_office_review_questions_fy23?: Ta_central_office_review_fy23 | undefined;\r\n    ta_district_review_questions_fy23?: Ta_district_review_fy23 | undefined;\r\n    ta_pre_district_review_questions_y23?: Ta_pre_district_review_y23 | undefined;\r\n    ta_pre_app_district_review_y25?: Ta_pre_app_district_review_y25 | undefined;\r\n    ta_pre_central_office_validation_event_y25?: Ta_pre_central_office_validation_event_y25 | undefined;\r\n    rs_pre_app_co_validation_questions?: rs_pre_app_co_validation | undefined;\r\n    rs_pre_app_district_review_questions?: rs_pre_app_district_review | undefined;\r\n    rs_district_validation_event_y20_questions?: rs_district_validation_event_y20 | undefined;\r\n    rs_central_office_validation_event_y20_questions?: rs_central_office_validation_event_y20 | undefined;\r\n    rs_district_validation_event_questions_y23?: rs_district_validation_event_y23 | undefined;\r\n    rs_central_office_validation_event_questions_y23?: rs_central_office_validation_event_y23 | undefined;\r\n    rs_pre_app_district_review_y23_questions?: rs_pre_app_district_review_y23 | undefined;\r\n    rs_pre_central_office_validation_event_y23_questions?: rs_pre_central_office_validation_event_y23 | undefined;\r\n    rs_pre_app_district_review_y25?: Rs_pre_app_district_review_y25 | undefined;\r\n    rs_pre_central_office_validation_event_y25?: Rs_pre_central_office_validation_event_y25 | undefined;\r\n}\r\n\r\nexport interface User2 {\r\n    Organization?: organization | undefined;\r\n    createdby?: number | undefined;\r\n    createdon: Date;\r\n    emailaddress?: string | undefined;\r\n    EmailConfirmed: boolean;\r\n    firstname?: string | undefined;\r\n    isarchived: boolean;\r\n    lastloggedinon?: Date | undefined;\r\n    lastname?: string | undefined;\r\n    notes?: string | undefined;\r\n    notifications_digest_opt_out?: boolean | undefined;\r\n    orgid: number;\r\n    passwordexpireson: Date;\r\n    passwordhash?: string | undefined;\r\n    SecurityStamp?: string | undefined;\r\n    uid: number;\r\n    updatedby?: number | undefined;\r\n    updatedon?: Date | undefined;\r\n    RoleMemberships?: role_member[] | undefined;\r\n    RetiredPasswords?: retired_password[] | undefined;\r\n}\r\n\r\nexport interface organization {\r\n    createdby?: number | undefined;\r\n    createdon: Date;\r\n    isarchived: boolean;\r\n    name?: string | undefined;\r\n    orgid: number;\r\n    orgtype: number;\r\n    primaryContactName?: string | undefined;\r\n    primaryEmail?: string | undefined;\r\n    primaryPhone?: string | undefined;\r\n    secondaryContactName?: string | undefined;\r\n    secondaryEmail?: string | undefined;\r\n    secondaryPhone?: string | undefined;\r\n    updatedby?: number | undefined;\r\n    updatedon?: Date | undefined;\r\n    Users?: User2[] | undefined;\r\n    OrganizationType?: _organization_type | undefined;\r\n    AllowedRoles?: organization_allowed_role[] | undefined;\r\n    DistrictOrgs?: District_organization[] | undefined;\r\n    SubOrgs?: Organization_organization[] | undefined;\r\n    FormCaps?: organization_form_cap[] | undefined;\r\n    has_role: boolean;\r\n    fips?: number[] | undefined;\r\n}\r\n\r\nexport interface _organization_type {\r\n    id: number;\r\n    isarchived: boolean;\r\n    lookup_code_id: number;\r\n    lookup_code_name?: string | undefined;\r\n    name?: string | undefined;\r\n    parent_lookup_code_id?: number | undefined;\r\n    parent_lookup_code_name?: string | undefined;\r\n    parent_lookup_id?: number | undefined;\r\n    parent_lookup_name?: string | undefined;\r\n}\r\n\r\nexport interface organization_allowed_role {\r\n    id: number;\r\n    orgid: number;\r\n    pid?: number | undefined;\r\n    role_id: number;\r\n}\r\n\r\nexport interface Organization_organization {\r\n    orgid_child: number;\r\n    orgid_parent: number;\r\n}\r\n\r\nexport interface organization_form_cap {\r\n    cap_type_id: number;\r\n    fid: number;\r\n    orgid: number;\r\n    value: number;\r\n}\r\n\r\nexport interface role_member {\r\n    district_id?: number | undefined;\r\n    id: number;\r\n    pid?: number | undefined;\r\n    role_id: number;\r\n    uid: number;\r\n}\r\n\r\nexport interface retired_password {\r\n    id: number;\r\n    passwordhash?: string | undefined;\r\n    retiredon: Date;\r\n    uid: number;\r\n}\r\n\r\nexport interface Revshare_district_validation_event {\r\n    addresses_maintenance_analysis_deficiency: number;\r\n    id: number;\r\n    in_capital_improvement_plan: number;\r\n    meets_vtrans_need: number;\r\n}\r\n\r\nexport interface Ss_pre_app_district_review {\r\n    has_eligibility?: boolean | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    id: number;\r\n    vtrans_need?: number | undefined;\r\n}\r\n\r\nexport interface Ss_district_validation_event {\r\n    has_eligibility: number;\r\n    has_readiness: number;\r\n    id: number;\r\n}\r\n\r\nexport interface Ss_pre_app_co_validation {\r\n    has_conditions?: boolean | undefined;\r\n    has_eligibility?: boolean | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    id: number;\r\n    vtrans_need?: number | undefined;\r\n}\r\n\r\nexport interface Ss_prescreening_validation_event {\r\n    id: number;\r\n    is_eligible: boolean;\r\n    is_ready: boolean;\r\n    is_vtrans_need?: boolean | undefined;\r\n}\r\n\r\nexport interface Ss_coss_validation_event {\r\n    has_congestion_need: number;\r\n    has_redundancy_need: number;\r\n    has_reliability_need: number;\r\n    has_safety_need: number;\r\n    id: number;\r\n}\r\n\r\nexport interface Ss_regnet_validation_event {\r\n    has_connectivity_need: number;\r\n    has_modal_need: number;\r\n    has_reliability_need: number;\r\n    has_tdm_need: number;\r\n    has_walkable_need: number;\r\n    id: number;\r\n}\r\n\r\nexport interface Ss_full_app_district_review_fy22 {\r\n    has_eligibility?: boolean | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    id: number;\r\n}\r\n\r\nexport interface Ss_full_app_co_validation_fy22 {\r\n    id: number;\r\n}\r\n\r\nexport interface Ss_oipi_validation_fy22 {\r\n    id: number;\r\n    vtrans_need?: number | undefined;\r\n}\r\n\r\nexport interface Ss_mmwg_review_fy22 {\r\n    id: number;\r\n    vtrans_need?: number | undefined;\r\n}\r\n\r\nexport interface Ss_ewg_review_fy22 {\r\n    id: number;\r\n}\r\n\r\nexport interface Ss_pre_app_district_review_fy24 {\r\n    has_eligibility?: boolean | undefined;\r\n    has_eligibility_comments?: string | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    has_readiness_comments?: string | undefined;\r\n    id: number;\r\n    vtrans_comments?: string | undefined;\r\n    vtrans_need?: number | undefined;\r\n}\r\n\r\nexport interface Ss_pre_app_co_validation_fy24 {\r\n    has_conditions?: boolean | undefined;\r\n    has_conditions_comments?: string | undefined;\r\n    has_eligibility?: boolean | undefined;\r\n    has_eligibility_comments?: string | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    has_readiness_comments?: string | undefined;\r\n    id: number;\r\n    vtrans_comments?: string | undefined;\r\n    vtrans_need?: number | undefined;\r\n}\r\n\r\nexport interface Ss_full_app_district_screening_fy24 {\r\n    complete_reasonable_accurate?: boolean | undefined;\r\n    has_eligibility?: boolean | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    id: number;\r\n    vtrans_need_coss?: boolean | undefined;\r\n    vtrans_need_rn?: boolean | undefined;\r\n    vtrans_need_safety?: boolean | undefined;\r\n    vtrans_need_uda?: boolean | undefined;\r\n}\r\n\r\nexport interface Ss_full_app_co_screening_fy24 {\r\n    has_eligibility?: boolean | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    id: number;\r\n    vtrans_need_coss?: boolean | undefined;\r\n    vtrans_need_rn?: boolean | undefined;\r\n    vtrans_need_safety?: boolean | undefined;\r\n    vtrans_need_uda?: boolean | undefined;\r\n}\r\n\r\nexport interface Ss_full_app_10_percent_screening_fy24 {\r\n    id: number;\r\n}\r\n\r\nexport interface Ss_full_app_ewg_review_fy24 {\r\n    id: number;\r\n}\r\n\r\nexport interface Sgr_pavement_district_validation_event {\r\n    deficiences_found?: number | undefined;\r\n    estimate_appropriate?: number | undefined;\r\n    estimate_appropriate_comment?: string | undefined;\r\n    id: number;\r\n    includes_contact?: boolean | undefined;\r\n    is_segment_qualified?: boolean | undefined;\r\n    is_total_less_than_million?: boolean | undefined;\r\n    segment_qualified_comment?: string | undefined;\r\n}\r\n\r\nexport interface Sgr_pavement_central_office_validation_event {\r\n    deficiences_found?: boolean | undefined;\r\n    id: number;\r\n    is_total_less_than_million?: boolean | undefined;\r\n}\r\n\r\nexport interface Sgr_pavement_district_validation_event_fy22 {\r\n    estimate_appropriate?: number | undefined;\r\n    estimate_appropriate_comment?: string | undefined;\r\n    form_attached?: boolean | undefined;\r\n    id: number;\r\n    includes_contact?: boolean | undefined;\r\n    is_segment_qualified?: boolean | undefined;\r\n    is_total_less_than_million?: boolean | undefined;\r\n    segment_qualified_comment?: string | undefined;\r\n}\r\n\r\nexport interface Sgr_pavement_central_office_validation_event_fy22 {\r\n    deficiences_found?: boolean | undefined;\r\n    form_acceptable?: boolean | undefined;\r\n    id: number;\r\n    is_total_less_than_million?: boolean | undefined;\r\n}\r\n\r\nexport interface Sgr_pavement_district_validation_event_fy23 {\r\n    estimate_appropriate?: number | undefined;\r\n    estimate_appropriate_comment?: string | undefined;\r\n    form_attached?: boolean | undefined;\r\n    id: number;\r\n    includes_contact?: boolean | undefined;\r\n    is_segment_qualified?: boolean | undefined;\r\n    is_total_less_than_million?: boolean | undefined;\r\n    segment_qualified_comment?: string | undefined;\r\n}\r\n\r\nexport interface Sgr_pavement_central_office_validation_event_fy23 {\r\n    deficiences_found?: boolean | undefined;\r\n    form_acceptable?: boolean | undefined;\r\n    id: number;\r\n    is_total_less_than_million?: boolean | undefined;\r\n}\r\n\r\nexport interface Sgr_pavement_district_validation_event_fy24 {\r\n    estimate_appropriate?: number | undefined;\r\n    estimate_appropriate_comment?: string | undefined;\r\n    form_attached?: boolean | undefined;\r\n    id: number;\r\n    includes_contact?: boolean | undefined;\r\n    is_segment_qualified?: boolean | undefined;\r\n    is_total_less_than_million?: boolean | undefined;\r\n    segment_qualified_comment?: string | undefined;\r\n}\r\n\r\nexport interface Sgr_pavement_central_office_validation_event_fy24 {\r\n    deficiences_found?: boolean | undefined;\r\n    form_acceptable?: boolean | undefined;\r\n    id: number;\r\n    is_total_less_than_million?: boolean | undefined;\r\n}\r\n\r\nexport interface Sgr_bridge_district_engineer_validation_event {\r\n    correct_smart_flags: number;\r\n    deficiences_found: boolean;\r\n    estimate_appropriate: number;\r\n    id: number;\r\n    written_scope_of_work: number;\r\n}\r\n\r\nexport interface Sgr_bridge_central_office_validation_event {\r\n    elgible_for_funds: boolean;\r\n    id: number;\r\n    responses_reviewed: boolean;\r\n}\r\n\r\nexport interface Sgr_bridge_central_office_engineer_validation_event {\r\n    deficiences_found: number;\r\n    id: number;\r\n}\r\n\r\nexport interface Sgr_bridge_district_validation_event {\r\n    changes_communicated: boolean;\r\n    deficiences_found: boolean;\r\n    eligible_for_funds: number;\r\n    estimate_appropriate: number;\r\n    id: number;\r\n}\r\n\r\nexport interface Sgr_bridge_central_office_validation_fy20 {\r\n    eligible_for_funds: boolean;\r\n    id: number;\r\n    responses_reviewed: boolean;\r\n}\r\n\r\nexport interface Sgr_bridge_district_validation_fy20 {\r\n    correct_smart_flags: number;\r\n    deficiencies_free: boolean;\r\n    estimate_appropriate: boolean;\r\n    id: number;\r\n    written_scope_of_work: boolean;\r\n}\r\n\r\nexport interface Sgr_bridge_district_engineer_review_fy20 {\r\n    correct_smart_flags: number;\r\n    deficiencies_free: boolean;\r\n    estimate_appropriate: boolean;\r\n    id: number;\r\n    written_scope_of_work: boolean;\r\n}\r\n\r\nexport interface Sgr_bridge_district_engineer_review_fy21 {\r\n    correct_smart_flags?: number | undefined;\r\n    correct_smart_flags_comments?: string | undefined;\r\n    deficiencies_free?: boolean | undefined;\r\n    deficiencies_free_comments?: string | undefined;\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n    estimate_appropriate?: boolean | undefined;\r\n    estimate_appropriate_comments?: string | undefined;\r\n    id: number;\r\n    written_scope_of_work?: boolean | undefined;\r\n    written_scope_of_work_comments?: string | undefined;\r\n}\r\n\r\nexport interface Sgr_bridge_district_validation_fy21 {\r\n    correct_smart_flags?: number | undefined;\r\n    correct_smart_flags_comments?: string | undefined;\r\n    deficiencies_free?: boolean | undefined;\r\n    deficiencies_free_comments?: string | undefined;\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n    estimate_appropriate?: boolean | undefined;\r\n    estimate_appropriate_comments?: string | undefined;\r\n    id: number;\r\n    written_scope_of_work?: boolean | undefined;\r\n    written_scope_of_work_comments?: string | undefined;\r\n}\r\n\r\nexport interface Sgr_bridge_central_office_engineer_review_fy21 {\r\n    deficiencies_free?: boolean | undefined;\r\n    deficiencies_free_comments?: string | undefined;\r\n    id: number;\r\n}\r\n\r\nexport interface Sgr_bridge_central_office_validation_fy21 {\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n    id: number;\r\n    responses_reviewed?: boolean | undefined;\r\n    responses_reviewed_comments?: string | undefined;\r\n}\r\n\r\nexport interface Sgr_bridge_district_engineer_review_fy22 {\r\n    correct_smart_flags?: number | undefined;\r\n    correct_smart_flags_comments?: string | undefined;\r\n    deficiencies_free?: boolean | undefined;\r\n    deficiencies_free_comments?: string | undefined;\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n    estimate_appropriate?: boolean | undefined;\r\n    estimate_appropriate_comments?: string | undefined;\r\n    id: number;\r\n    written_scope_of_work?: boolean | undefined;\r\n    written_scope_of_work_comments?: string | undefined;\r\n}\r\n\r\nexport interface Sgr_bridge_district_validation_fy22 {\r\n    correct_smart_flags?: number | undefined;\r\n    correct_smart_flags_comments?: string | undefined;\r\n    deficiencies_free?: boolean | undefined;\r\n    deficiencies_free_comments?: string | undefined;\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n    estimate_appropriate?: boolean | undefined;\r\n    estimate_appropriate_comments?: string | undefined;\r\n    id: number;\r\n    written_scope_of_work?: boolean | undefined;\r\n    written_scope_of_work_comments?: string | undefined;\r\n}\r\n\r\nexport interface Sgr_bridge_central_office_engineer_review_fy22 {\r\n    deficiencies_free?: boolean | undefined;\r\n    deficiencies_free_comments?: string | undefined;\r\n    id: number;\r\n}\r\n\r\nexport interface Sgr_bridge_central_office_validation_fy22 {\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n    id: number;\r\n    responses_reviewed?: boolean | undefined;\r\n    responses_reviewed_comments?: string | undefined;\r\n}\r\n\r\nexport interface Sgr_bridge_district_engineer_pre_app_review_fy23 {\r\n    alternative_analysis_comments?: boolean | undefined;\r\n    alternative_analysis_comments_comments?: string | undefined;\r\n    district_reviewed?: boolean | undefined;\r\n    district_reviewed_comments?: string | undefined;\r\n    id: number;\r\n    other_requirements?: boolean | undefined;\r\n    other_requirements_comments?: string | undefined;\r\n    reason_acceptable?: boolean | undefined;\r\n    reason_acceptable_comments?: string | undefined;\r\n    requesting_funds?: boolean | undefined;\r\n    scope_comments?: boolean | undefined;\r\n    scope_comments_comments?: string | undefined;\r\n}\r\n\r\nexport interface Sgr_bridge_district_pre_app_validation_fy23 {\r\n    district_reviewed?: boolean | undefined;\r\n    district_reviewed_comments?: string | undefined;\r\n    id: number;\r\n    included_estimate?: number | undefined;\r\n    included_estimate_comments?: string | undefined;\r\n    other_requirements?: boolean | undefined;\r\n    other_requirements_comments?: string | undefined;\r\n    reason_acceptable?: boolean | undefined;\r\n    reason_acceptable_comments?: string | undefined;\r\n    requesting_funds?: boolean | undefined;\r\n    scope_comments?: boolean | undefined;\r\n    scope_comments_comments?: string | undefined;\r\n}\r\n\r\nexport interface Sgr_bridge_central_office_engineer_pre_app_review_fy23 {\r\n    co_coordinated?: boolean | undefined;\r\n    co_coordinated_comments?: string | undefined;\r\n    id: number;\r\n    reason_acceptable?: boolean | undefined;\r\n    reason_acceptable_comments?: string | undefined;\r\n    requesting_funds?: boolean | undefined;\r\n}\r\n\r\nexport interface Sgr_bridge_central_office_pre_app_validation_fy23 {\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n    id: number;\r\n    responses_reviewed?: boolean | undefined;\r\n    responses_reviewed_comments?: string | undefined;\r\n}\r\n\r\nexport interface Sgr_bridge_district_engineer_full_app_review_fy23 {\r\n    alt_analysis_complies?: boolean | undefined;\r\n    alt_analysis_complies_comments?: string | undefined;\r\n    complies_with_eligibility?: boolean | undefined;\r\n    complies_with_eligibility_comments?: string | undefined;\r\n    complies_with_requirements?: boolean | undefined;\r\n    complies_with_requirements_comments?: string | undefined;\r\n    cost_estimate_complies?: boolean | undefined;\r\n    cost_estimate_complies_comments?: string | undefined;\r\n    id: number;\r\n}\r\n\r\nexport interface Sgr_bridge_district_full_app_validation_fy23 {\r\n    complies_with_eligibility?: boolean | undefined;\r\n    complies_with_eligibility_comments?: string | undefined;\r\n    complies_with_requirements?: boolean | undefined;\r\n    complies_with_requirements_comments?: string | undefined;\r\n    cost_estimate_complies?: boolean | undefined;\r\n    cost_estimate_complies_comments?: string | undefined;\r\n    id: number;\r\n    included_estimate?: number | undefined;\r\n    included_estimate_comments?: string | undefined;\r\n}\r\n\r\nexport interface Sgr_bridge_central_office_engineer_full_app_review_fy23 {\r\n    complies_with_requirements?: boolean | undefined;\r\n    complies_with_requirements_comments?: string | undefined;\r\n    id: number;\r\n}\r\n\r\nexport interface Sgr_bridge_central_office_full_app_validation_fy23 {\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n    id: number;\r\n    responses_reviewed?: boolean | undefined;\r\n    responses_reviewed_comments?: string | undefined;\r\n}\r\n\r\nexport interface Sgr_bridge_district_engineer_pre_app_review_fy24 {\r\n    alternative_analysis_comments?: boolean | undefined;\r\n    alternative_analysis_comments_comments?: string | undefined;\r\n    district_reviewed?: boolean | undefined;\r\n    district_reviewed_comments?: string | undefined;\r\n    id: number;\r\n    other_requirements?: boolean | undefined;\r\n    other_requirements_comments?: string | undefined;\r\n    reason_acceptable?: boolean | undefined;\r\n    reason_acceptable_comments?: string | undefined;\r\n    requesting_funds?: boolean | undefined;\r\n    scope_comments?: boolean | undefined;\r\n    scope_comments_comments?: string | undefined;\r\n}\r\n\r\nexport interface Sgr_bridge_district_pre_app_validation_fy24 {\r\n    district_reviewed?: boolean | undefined;\r\n    district_reviewed_comments?: string | undefined;\r\n    id: number;\r\n    included_estimate?: number | undefined;\r\n    included_estimate_comments?: string | undefined;\r\n    other_requirements?: boolean | undefined;\r\n    other_requirements_comments?: string | undefined;\r\n    reason_acceptable?: boolean | undefined;\r\n    reason_acceptable_comments?: string | undefined;\r\n    requesting_funds?: boolean | undefined;\r\n    scope_comments?: boolean | undefined;\r\n    scope_comments_comments?: string | undefined;\r\n}\r\n\r\nexport interface Sgr_bridge_central_office_engineer_pre_app_review_fy24 {\r\n    co_coordinated?: boolean | undefined;\r\n    co_coordinated_comments?: string | undefined;\r\n    id: number;\r\n    reason_acceptable?: boolean | undefined;\r\n    reason_acceptable_comments?: string | undefined;\r\n    requesting_funds?: boolean | undefined;\r\n}\r\n\r\nexport interface Sgr_bridge_central_office_pre_app_validation_fy24 {\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n    id: number;\r\n    responses_reviewed?: boolean | undefined;\r\n    responses_reviewed_comments?: string | undefined;\r\n}\r\n\r\nexport interface Sgr_bridge_district_engineer_full_app_review_fy24 {\r\n    alt_analysis_complies?: boolean | undefined;\r\n    alt_analysis_complies_comments?: string | undefined;\r\n    complies_with_eligibility?: boolean | undefined;\r\n    complies_with_eligibility_comments?: string | undefined;\r\n    complies_with_requirements?: boolean | undefined;\r\n    complies_with_requirements_comments?: string | undefined;\r\n    cost_estimate_complies?: boolean | undefined;\r\n    cost_estimate_complies_comments?: string | undefined;\r\n    id: number;\r\n}\r\n\r\nexport interface Sgr_bridge_district_full_app_validation_fy24 {\r\n    complies_with_eligibility?: boolean | undefined;\r\n    complies_with_eligibility_comments?: string | undefined;\r\n    complies_with_requirements?: boolean | undefined;\r\n    complies_with_requirements_comments?: string | undefined;\r\n    cost_estimate_complies?: boolean | undefined;\r\n    cost_estimate_complies_comments?: string | undefined;\r\n    id: number;\r\n    included_estimate?: number | undefined;\r\n    included_estimate_comments?: string | undefined;\r\n}\r\n\r\nexport interface Sgr_bridge_central_office_engineer_full_app_review_fy24 {\r\n    complies_with_requirements?: boolean | undefined;\r\n    complies_with_requirements_comments?: string | undefined;\r\n    id: number;\r\n}\r\n\r\nexport interface Sgr_bridge_central_office_full_app_validation_fy24 {\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n    id: number;\r\n    responses_reviewed?: boolean | undefined;\r\n    responses_reviewed_comments?: string | undefined;\r\n}\r\n\r\nexport interface Sgr_bridge_district_engineer_review_fy26 {\r\n    complies_with_requirements?: boolean | undefined;\r\n    complies_with_requirements_comments?: string | undefined;\r\n    id: number;\r\n}\r\n\r\nexport interface Sgr_bridge_district_validation_fy26 {\r\n    id: number;\r\n    included_estimate?: number | undefined;\r\n    included_estimate_comments?: string | undefined;\r\n}\r\n\r\nexport interface Sgr_bridge_central_office_engineer_review_fy26 {\r\n    complies_with_requirements?: boolean | undefined;\r\n    complies_with_requirements_comments?: string | undefined;\r\n    id: number;\r\n}\r\n\r\nexport interface Pre_scoping_app_district_review {\r\n    has_conditions?: boolean | undefined;\r\n    has_eligibility?: boolean | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    id: number;\r\n    risk_level?: number | undefined;\r\n}\r\n\r\nexport interface Pre_scoping_app_district_validation {\r\n    has_eligibility?: boolean | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    id: number;\r\n}\r\n\r\nexport interface Pre_scoping_app_co_validation {\r\n    has_eligibility?: boolean | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    id: number;\r\n}\r\n\r\nexport interface Ta_pre_app_district_reviewer {\r\n    estimate_reasonable?: boolean | undefined;\r\n    estimate_reasonable_comments?: string | undefined;\r\n    id: number;\r\n    logical_termini?: boolean | undefined;\r\n    logical_termini_comments?: string | undefined;\r\n    scope_delivered?: boolean | undefined;\r\n    scope_delivered_comments?: string | undefined;\r\n    should_admin?: boolean | undefined;\r\n    should_admin_comments?: string | undefined;\r\n    sponser_expericence?: boolean | undefined;\r\n    sponser_expericence_comments?: string | undefined;\r\n}\r\n\r\nexport interface Ta_pre_app_co_validator {\r\n    id: number;\r\n    in_kind_eligible?: boolean | undefined;\r\n    in_kind_eligible_comments?: string | undefined;\r\n    scope_eligible?: boolean | undefined;\r\n    scope_eligible_comments?: string | undefined;\r\n    selected_categories?: boolean | undefined;\r\n    selected_categories_comments?: string | undefined;\r\n    sponsor_eligible?: boolean | undefined;\r\n    sponsor_eligible_comments?: string | undefined;\r\n}\r\n\r\nexport interface Ta_central_office_validation_event {\r\n    acceptable_beginning_ending: number;\r\n    acceptable_inkind_match_budget: number;\r\n    acceptable_project_budget: number;\r\n    eligible_trans_alternative_funding: number;\r\n    id: number;\r\n    mpo_resolution_attached: number;\r\n    public_meeting_held: number;\r\n    sponsor_eligible_apply: number;\r\n    sponsor_resolution_provided: number;\r\n}\r\n\r\nexport interface Ta_central_office_validation_event_y20 {\r\n    hearing_or_documentation?: boolean | undefined;\r\n    id: number;\r\n    match_commitment?: boolean | undefined;\r\n    mpo_resolution?: boolean | undefined;\r\n}\r\n\r\nexport interface Ta_central_office_review_fy23 {\r\n    id: number;\r\n    MPO_boundary?: boolean | undefined;\r\n    public_meeting?: boolean | undefined;\r\n    public_meeting_comments?: string | undefined;\r\n}\r\n\r\nexport interface Ta_district_review_fy23 {\r\n    id: number;\r\n    site_visit?: boolean | undefined;\r\n    site_visit_comments?: string | undefined;\r\n}\r\n\r\nexport interface Ta_pre_district_review_y23 {\r\n    estimate_reasonable?: boolean | undefined;\r\n    estimate_reasonable_comments?: string | undefined;\r\n    id: number;\r\n    logical_termini?: boolean | undefined;\r\n    logical_termini_comments?: string | undefined;\r\n    rta_approved?: boolean | undefined;\r\n    rta_approved_comments?: string | undefined;\r\n    scope_delivered?: boolean | undefined;\r\n    scope_delivered_comments?: string | undefined;\r\n    site_visit?: boolean | undefined;\r\n    site_visit_comments?: string | undefined;\r\n}\r\n\r\nexport interface Ta_pre_app_district_review_y25 {\r\n    id: number;\r\n    sketch_provides_details?: number | undefined;\r\n    clearly_id_termini?: number | undefined;\r\n    confirm_connection_to_fac?: number | undefined;\r\n    streets_locations_labeled?: number | undefined;\r\n    sketch_comments?: string | undefined;\r\n    has_acceptable_termini?: number | undefined;\r\n    termini_comments?: string | undefined;\r\n    estimate_provides_details?: boolean | undefined;\r\n    overall_estimate_appears?: number | undefined;\r\n    district_provided_costs?: boolean | undefined;\r\n    cost_estimate_provided?: number | undefined;\r\n    start_dates_included?: boolean | undefined;\r\n    estimate_comments?: string | undefined;\r\n    reviewed_with_staff?: number | undefined;\r\n    discussed_cost_estimate?: number | undefined;\r\n    coordination_comments?: string | undefined;\r\n    rta_completed_and_attached?: number | undefined;\r\n    district_likely_to_approve?: number | undefined;\r\n    request_to_admin_comments?: string | undefined;\r\n    details_needing_attention?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface validation_event {\r\n    id: number;\r\n    type_id: number;\r\n    appsequence: number;\r\n    createdby: number;\r\n    createdon: Date;\r\n    is_current: boolean;\r\n    comments?: string | undefined;\r\n    pass_fail_outcome?: boolean | undefined;\r\n    is_submitted: boolean;\r\n    cam_district_screening_y25?: Cam_district_screening_y25 | undefined;\r\n    createdbyNavigation?: User3 | undefined;\r\n    pre_scoping_app_co_validation?: pre_scoping_app_co_validation | undefined;\r\n    pre_scoping_app_district_review?: pre_scoping_app_district_review | undefined;\r\n    pre_scoping_app_district_validation?: pre_scoping_app_district_validation | undefined;\r\n    revshare_district_validation_event?: revshare_district_validation_event | undefined;\r\n    rs_central_office_validation_event_y20?: Rs_central_office_validation_event_y20 | undefined;\r\n    rs_central_office_validation_event_y23?: Rs_central_office_validation_event_y23 | undefined;\r\n    rs_central_office_validation_event_y25?: Rs_central_office_validation_event_y25 | undefined;\r\n    rs_central_office_validation_event_y27?: Rs_central_office_validation_event_y27 | undefined;\r\n    rs_district_validation_event_y20?: Rs_district_validation_event_y20 | undefined;\r\n    rs_district_validation_event_y23?: Rs_district_validation_event_y23 | undefined;\r\n    rs_district_validation_event_y25?: Rs_district_validation_event_y25 | undefined;\r\n    rs_district_validation_event_y27?: Rs_district_validation_event_y27 | undefined;\r\n    rs_pre_app_co_validation?: Rs_pre_app_co_validation | undefined;\r\n    rs_pre_app_district_review?: Rs_pre_app_district_review | undefined;\r\n    rs_pre_app_district_review_y23?: Rs_pre_app_district_review_y23 | undefined;\r\n    rs_pre_app_district_review_y25?: Rs_pre_app_district_review_y25 | undefined;\r\n    rs_pre_app_district_review_y27?: Rs_pre_app_district_review_y27 | undefined;\r\n    rs_pre_central_office_validation_event_y23?: Rs_pre_central_office_validation_event_y23 | undefined;\r\n    rs_pre_central_office_validation_event_y25?: Rs_pre_central_office_validation_event_y25 | undefined;\r\n    rs_pre_central_office_validation_event_y27?: Rs_pre_central_office_validation_event_y27 | undefined;\r\n    sgr_bridge_central_office_engineer_full_app_review_fy23?: sgr_bridge_central_office_engineer_full_app_review_fy23 | undefined;\r\n    sgr_bridge_central_office_engineer_pre_app_review_fy23?: sgr_bridge_central_office_engineer_pre_app_review_fy23 | undefined;\r\n    sgr_bridge_central_office_engineer_review_fy21?: sgr_bridge_central_office_engineer_review_fy21 | undefined;\r\n    sgr_bridge_central_office_engineer_review_fy22?: sgr_bridge_central_office_engineer_review_fy22 | undefined;\r\n    sgr_bridge_central_office_engineer_review_fy26?: sgr_bridge_central_office_engineer_review_fy26 | undefined;\r\n    sgr_bridge_central_office_engineer_validation_event?: sgr_bridge_central_office_engineer_validation_event | undefined;\r\n    sgr_bridge_central_office_full_app_validation_fy23?: sgr_bridge_central_office_full_app_validation_fy23 | undefined;\r\n    sgr_bridge_central_office_pre_app_validation_fy23?: sgr_bridge_central_office_pre_app_validation_fy23 | undefined;\r\n    sgr_bridge_central_office_validation_event?: sgr_bridge_central_office_validation_event | undefined;\r\n    sgr_bridge_central_office_validation_fy20?: sgr_bridge_central_office_validation_fy20 | undefined;\r\n    sgr_bridge_central_office_validation_fy21?: sgr_bridge_central_office_validation_fy21 | undefined;\r\n    sgr_bridge_central_office_validation_fy22?: sgr_bridge_central_office_validation_fy22 | undefined;\r\n    sgr_bridge_district_engineer_full_app_review_fy23?: sgr_bridge_district_engineer_full_app_review_fy23 | undefined;\r\n    sgr_bridge_district_engineer_pre_app_review_fy23?: sgr_bridge_district_engineer_pre_app_review_fy23 | undefined;\r\n    sgr_bridge_district_engineer_review_fy20?: sgr_bridge_district_engineer_review_fy20 | undefined;\r\n    sgr_bridge_district_engineer_review_fy21?: sgr_bridge_district_engineer_review_fy21 | undefined;\r\n    sgr_bridge_district_engineer_review_fy22?: sgr_bridge_district_engineer_review_fy22 | undefined;\r\n    sgr_bridge_district_engineer_review_fy26?: sgr_bridge_district_engineer_review_fy26 | undefined;\r\n    sgr_bridge_district_engineer_validation_event?: sgr_bridge_district_engineer_validation_event | undefined;\r\n    sgr_bridge_district_full_app_validation_fy23?: sgr_bridge_district_full_app_validation_fy23 | undefined;\r\n    sgr_bridge_district_pre_app_validation_fy23?: sgr_bridge_district_pre_app_validation_fy23 | undefined;\r\n    sgr_bridge_district_validation_event?: sgr_bridge_district_validation_event | undefined;\r\n    sgr_bridge_district_validation_fy20?: sgr_bridge_district_validation_fy20 | undefined;\r\n    sgr_bridge_district_validation_fy21?: sgr_bridge_district_validation_fy21 | undefined;\r\n    sgr_bridge_district_validation_fy22?: sgr_bridge_district_validation_fy22 | undefined;\r\n    sgr_bridge_district_validation_fy26?: sgr_bridge_district_validation_fy26 | undefined;\r\n    sgr_pavement_central_office_validation_event?: sgr_pavement_central_office_validation_event | undefined;\r\n    sgr_pavement_central_office_validation_event_fy22?: sgr_pavement_central_office_validation_event_fy22 | undefined;\r\n    sgr_pavement_central_office_validation_event_fy23?: sgr_pavement_central_office_validation_event_fy23 | undefined;\r\n    sgr_pavement_central_office_validation_event_fy25?: Sgr_pavement_central_office_validation_event_fy25 | undefined;\r\n    sgr_pavement_central_office_validation_event_fy26?: Sgr_pavement_central_office_validation_event_fy26 | undefined;\r\n    sgr_pavement_district_validation_event?: sgr_pavement_district_validation_event | undefined;\r\n    sgr_pavement_district_validation_event_fy22?: sgr_pavement_district_validation_event_fy22 | undefined;\r\n    sgr_pavement_district_validation_event_fy23?: sgr_pavement_district_validation_event_fy23 | undefined;\r\n    sgr_pavement_district_validation_event_fy25?: Sgr_pavement_district_validation_event_fy25 | undefined;\r\n    sgr_pavement_district_validation_event_fy26?: Sgr_pavement_district_validation_event_fy26 | undefined;\r\n    ss_coss_validation_event?: ss_coss_validation_event | undefined;\r\n    ss_district_validation_event?: ss_district_validation_event | undefined;\r\n    ss_ewg_review_fy22?: ss_ewg_review_fy22 | undefined;\r\n    ss_full_app_co_screening_fy26?: Ss_full_app_co_screening_fy26 | undefined;\r\n    ss_full_app_co_validation_fy22?: ss_full_app_co_validation_fy22 | undefined;\r\n    ss_full_app_district_review_fy22?: ss_full_app_district_review_fy22 | undefined;\r\n    ss_full_app_district_screening_fy26?: Ss_full_app_district_screening_fy26 | undefined;\r\n    ss_mmwg_review_fy22?: ss_mmwg_review_fy22 | undefined;\r\n    ss_oipi_validation_fy22?: ss_oipi_validation_fy22 | undefined;\r\n    ss_pre_app_co_validation?: ss_pre_app_co_validation | undefined;\r\n    ss_pre_app_co_validation_fy24?: ss_pre_app_co_validation_fy24 | undefined;\r\n    ss_pre_app_co_validation_fy26?: Ss_pre_app_co_validation_fy26 | undefined;\r\n    ss_pre_app_de_screening_fy26?: Ss_pre_app_de_screening_fy26 | undefined;\r\n    ss_pre_app_district_review?: ss_pre_app_district_review | undefined;\r\n    ss_pre_app_district_review_fy24?: ss_pre_app_district_review_fy24 | undefined;\r\n    ss_pre_app_district_review_fy26?: Ss_pre_app_district_review_fy26 | undefined;\r\n    ss_prescreening_validation_event?: ss_prescreening_validation_event | undefined;\r\n    ss_regnet_validation_event?: ss_regnet_validation_event | undefined;\r\n    ta_central_office_review_fy23?: ta_central_office_review_fy23 | undefined;\r\n    ta_central_office_validation_event?: ta_central_office_validation_event | undefined;\r\n    ta_central_office_validation_event_y20?: ta_central_office_validation_event_y20 | undefined;\r\n    ta_central_office_validation_event_y23?: Ta_central_office_validation_event_y23 | undefined;\r\n    ta_central_office_validation_event_y25?: Ta_central_office_validation_event_y25 | undefined;\r\n    ta_central_office_validation_event_y27?: Ta_central_office_validation_event_y27 | undefined;\r\n    ta_district_review_fy23?: ta_district_review_fy23 | undefined;\r\n    ta_district_validation_y25?: Ta_district_validation_y25 | undefined;\r\n    ta_district_validation_y27?: Ta_district_validation_y27 | undefined;\r\n    ta_pre_app_co_validator?: ta_pre_app_co_validator | undefined;\r\n    ta_pre_app_district_review_y25?: Ta_pre_app_district_review_y25 | undefined;\r\n    ta_pre_app_district_review_y27?: Ta_pre_app_district_review_y27 | undefined;\r\n    ta_pre_app_district_reviewer?: ta_pre_app_district_reviewer | undefined;\r\n    ta_pre_central_office_validation_event_y25?: Ta_pre_central_office_validation_event_y25 | undefined;\r\n    ta_pre_central_office_validation_event_y27?: Ta_pre_central_office_validation_event_y27 | undefined;\r\n    ta_pre_district_review_y23?: ta_pre_district_review_y23 | undefined;\r\n    vhsip_district_validation_fy24?: Vhsip_district_validation_fy24 | undefined;\r\n    vhsip_district_validation_fy25?: Vhsip_district_validation_fy25 | undefined;\r\n    vhsip_district_validation_fy26?: Vhsip_district_validation_fy26 | undefined;\r\n    vhsip_local_liaison_validation_fy24?: Vhsip_local_liaison_validation_fy24 | undefined;\r\n    vhsip_local_liaison_validation_fy25?: Vhsip_local_liaison_validation_fy25 | undefined;\r\n    vhsip_local_liaison_validation_fy26?: Vhsip_local_liaison_validation_fy26 | undefined;\r\n}\r\n\r\nexport interface Cam_district_screening_y25 {\r\n    id: number;\r\n    has_readiness?: boolean | undefined;\r\n    has_eligibility?: boolean | undefined;\r\n    syip_inclusion_ready?: boolean | undefined;\r\n    syip_inclusion_ready_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface User3 {\r\n    uid: number;\r\n    emailaddress?: string | undefined;\r\n    firstname?: string | undefined;\r\n    lastname?: string | undefined;\r\n    orgid: number;\r\n    createdby?: number | undefined;\r\n    updatedby?: number | undefined;\r\n    InversecreatedbyNavigation?: User3[] | undefined;\r\n    InverseupdatedbyNavigation?: User3[] | undefined;\r\n    applicationcreatedbyNavigation?: application[] | undefined;\r\n    applicationupdatedbyNavigation?: application[] | undefined;\r\n    createdbyNavigation?: User3 | undefined;\r\n    updatedbyNavigation?: User3 | undefined;\r\n    validation_event?: validation_event[] | undefined;\r\n}\r\n\r\nexport interface application {\r\n    appsequence: number;\r\n    apprevision: number;\r\n    parent_appid?: string | undefined;\r\n    parent_relation?: number | undefined;\r\n    fid: number;\r\n    name?: string | undefined;\r\n    description?: string | undefined;\r\n    createdby: number;\r\n    createdon: Date;\r\n    updatedby?: number | undefined;\r\n    updatedon?: Date | undefined;\r\n    orgid: number;\r\n    priority?: number | undefined;\r\n    status: number;\r\n    clonestatus?: number | undefined;\r\n    display_id?: string | undefined;\r\n    creation_method?: number | undefined;\r\n    appid?: string | undefined;\r\n    early_screen_out?: boolean | undefined;\r\n    Inverseparent_app?: application[] | undefined;\r\n    createdbyNavigation?: User3 | undefined;\r\n    parent_app?: application | undefined;\r\n    updatedbyNavigation?: User3 | undefined;\r\n}\r\n\r\nexport interface pre_scoping_app_co_validation {\r\n    id: number;\r\n    has_eligibility?: boolean | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface pre_scoping_app_district_review {\r\n    id: number;\r\n    has_eligibility?: boolean | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    has_conditions?: boolean | undefined;\r\n    risk_level?: number | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface pre_scoping_app_district_validation {\r\n    id: number;\r\n    has_eligibility?: boolean | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface revshare_district_validation_event {\r\n    id: number;\r\n    meets_vtrans_need: number;\r\n    in_capital_improvement_plan: number;\r\n    addresses_maintenance_analysis_deficiency: number;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Rs_central_office_validation_event_y20 {\r\n    id: number;\r\n    funds_approved?: boolean | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    advance_ad_date?: boolean | undefined;\r\n    advance_ad_date_comments?: string | undefined;\r\n    meets_trans_need?: boolean | undefined;\r\n    meets_trans_need_comments?: string | undefined;\r\n    maint_doc_provided?: boolean | undefined;\r\n    maint_doc_provided_comments?: string | undefined;\r\n    multi_location?: boolean | undefined;\r\n    multi_location_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Rs_central_office_validation_event_y23 {\r\n    id: number;\r\n    funds_approved?: boolean | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    advance_ad_date?: boolean | undefined;\r\n    advance_ad_date_comments?: string | undefined;\r\n    meets_trans_need?: boolean | undefined;\r\n    meets_trans_need_comments?: string | undefined;\r\n    maint_doc_provided?: boolean | undefined;\r\n    maint_doc_provided_comments?: string | undefined;\r\n    multi_location?: boolean | undefined;\r\n    multi_location_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Rs_central_office_validation_event_y25 {\r\n    id: number;\r\n    funds_approved?: number | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    cip_or_trans_need?: number | undefined;\r\n    cip_or_trans_need_comments?: string | undefined;\r\n    maint_doc_provided?: number | undefined;\r\n    maint_doc_provided_comments?: string | undefined;\r\n    multi_location?: number | undefined;\r\n    multi_location_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Rs_central_office_validation_event_y27 {\r\n    id: number;\r\n    funds_approved?: boolean | undefined;\r\n    cip_or_trans_need?: number | undefined;\r\n    cip_or_trans_need_comments?: string | undefined;\r\n    maint_doc_provided?: number | undefined;\r\n    maint_doc_provided_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Rs_district_validation_event_y20 {\r\n    id: number;\r\n    funds_approved?: boolean | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    advance_ad_date?: boolean | undefined;\r\n    advance_ad_date_comments?: string | undefined;\r\n    meets_trans_need?: boolean | undefined;\r\n    meets_trans_need_comments?: string | undefined;\r\n    maint_doc_provided?: boolean | undefined;\r\n    maint_doc_provided_comments?: string | undefined;\r\n    multi_location?: boolean | undefined;\r\n    multi_location_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Rs_district_validation_event_y23 {\r\n    id: number;\r\n    funds_approved?: boolean | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    advance_ad_date?: boolean | undefined;\r\n    advance_ad_date_comments?: string | undefined;\r\n    meets_trans_need?: boolean | undefined;\r\n    meets_trans_need_comments?: string | undefined;\r\n    maint_doc_provided?: boolean | undefined;\r\n    maint_doc_provided_comments?: string | undefined;\r\n    multi_location?: boolean | undefined;\r\n    multi_location_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Rs_district_validation_event_y25 {\r\n    id: number;\r\n    funds_approved?: number | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    cip_or_trans_need?: number | undefined;\r\n    cip_or_trans_need_comments?: string | undefined;\r\n    maint_doc_provided?: number | undefined;\r\n    maint_doc_provided_comments?: string | undefined;\r\n    multi_location?: number | undefined;\r\n    multi_location_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Rs_district_validation_event_y27 {\r\n    id: number;\r\n    funds_approved?: boolean | undefined;\r\n    cip_or_trans_need?: number | undefined;\r\n    cip_or_trans_need_comments?: string | undefined;\r\n    maint_doc_provided?: number | undefined;\r\n    maint_doc_provided_comments?: string | undefined;\r\n    multi_location?: boolean | undefined;\r\n    multi_location_comments?: string | undefined;\r\n    locally_administered?: boolean | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Rs_pre_app_co_validation {\r\n    id: number;\r\n    funds_approved?: boolean | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    advance_ad_date?: boolean | undefined;\r\n    advance_ad_date_comments?: string | undefined;\r\n    approved_and_documented?: boolean | undefined;\r\n    approved_and_documented_comments?: string | undefined;\r\n    meets_requirements?: boolean | undefined;\r\n    meets_requirements_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Rs_pre_app_district_review {\r\n    id: number;\r\n    funds_approved?: boolean | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    advance_ad_date?: boolean | undefined;\r\n    advance_ad_date_comments?: string | undefined;\r\n    approved_and_documented?: boolean | undefined;\r\n    approved_and_documented_comments?: string | undefined;\r\n    meets_requirements?: boolean | undefined;\r\n    meets_requirements_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Rs_pre_app_district_review_y23 {\r\n    id: number;\r\n    funds_approved?: boolean | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    meets_trans_need?: number | undefined;\r\n    meets_trans_need_comments?: string | undefined;\r\n    advance_ad_date?: number | undefined;\r\n    advance_ad_date_comments?: string | undefined;\r\n    approved_and_documented?: number | undefined;\r\n    approved_and_documented_comments?: string | undefined;\r\n    meets_requirements?: boolean | undefined;\r\n    meets_requirements_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Rs_pre_app_district_review_y25 {\r\n    id: number;\r\n    funds_approved?: boolean | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    meets_trans_need?: number | undefined;\r\n    meets_trans_need_comments?: string | undefined;\r\n    approved_and_documented?: number | undefined;\r\n    approved_and_documented_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Rs_pre_app_district_review_y27 {\r\n    id: number;\r\n    funds_approved?: boolean | undefined;\r\n    meets_trans_need?: number | undefined;\r\n    meets_trans_need_comments?: string | undefined;\r\n    approved_and_documented?: number | undefined;\r\n    approved_and_documented_comments?: string | undefined;\r\n    is_approved?: boolean | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Rs_pre_central_office_validation_event_y23 {\r\n    id: number;\r\n    funds_approved?: boolean | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    meets_trans_need?: number | undefined;\r\n    meets_trans_need_comments?: string | undefined;\r\n    advance_ad_date?: number | undefined;\r\n    advance_ad_date_comments?: string | undefined;\r\n    approved_and_documented?: number | undefined;\r\n    approved_and_documented_comments?: string | undefined;\r\n    meets_requirements?: boolean | undefined;\r\n    meets_requirements_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Rs_pre_central_office_validation_event_y25 {\r\n    id: number;\r\n    funds_approved?: boolean | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    meets_trans_need?: number | undefined;\r\n    meets_trans_need_comments?: string | undefined;\r\n    approved_and_documented?: number | undefined;\r\n    approved_and_documented_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Rs_pre_central_office_validation_event_y27 {\r\n    id: number;\r\n    funds_approved?: boolean | undefined;\r\n    meets_trans_need?: number | undefined;\r\n    meets_trans_need_comments?: string | undefined;\r\n    advance_ad_date?: number | undefined;\r\n    advance_ad_date_comments?: string | undefined;\r\n    approved_and_documented?: number | undefined;\r\n    approved_and_documented_comments?: string | undefined;\r\n    is_approved?: boolean | undefined;\r\n    comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_bridge_central_office_engineer_full_app_review_fy23 {\r\n    id: number;\r\n    complies_with_requirements?: boolean | undefined;\r\n    complies_with_requirements_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_bridge_central_office_engineer_pre_app_review_fy23 {\r\n    id: number;\r\n    requesting_funds?: boolean | undefined;\r\n    reason_acceptable?: boolean | undefined;\r\n    reason_acceptable_comments?: string | undefined;\r\n    co_coordinated?: boolean | undefined;\r\n    co_coordinated_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_bridge_central_office_engineer_review_fy21 {\r\n    id: number;\r\n    deficiencies_free?: boolean | undefined;\r\n    deficiencies_free_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_bridge_central_office_engineer_review_fy22 {\r\n    id: number;\r\n    deficiencies_free?: boolean | undefined;\r\n    deficiencies_free_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_bridge_central_office_engineer_review_fy26 {\r\n    id: number;\r\n    complies_with_requirements?: boolean | undefined;\r\n    complies_with_requirements_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_bridge_central_office_engineer_validation_event {\r\n    id: number;\r\n    deficiences_found: number;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_bridge_central_office_full_app_validation_fy23 {\r\n    id: number;\r\n    responses_reviewed?: boolean | undefined;\r\n    responses_reviewed_comments?: string | undefined;\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_bridge_central_office_pre_app_validation_fy23 {\r\n    id: number;\r\n    responses_reviewed?: boolean | undefined;\r\n    responses_reviewed_comments?: string | undefined;\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_bridge_central_office_validation_event {\r\n    id: number;\r\n    responses_reviewed: boolean;\r\n    elgible_for_funds: boolean;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_bridge_central_office_validation_fy20 {\r\n    id: number;\r\n    responses_reviewed: boolean;\r\n    eligible_for_funds: boolean;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_bridge_central_office_validation_fy21 {\r\n    id: number;\r\n    responses_reviewed?: boolean | undefined;\r\n    responses_reviewed_comments?: string | undefined;\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_bridge_central_office_validation_fy22 {\r\n    id: number;\r\n    responses_reviewed?: boolean | undefined;\r\n    responses_reviewed_comments?: string | undefined;\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_bridge_district_engineer_full_app_review_fy23 {\r\n    id: number;\r\n    complies_with_requirements?: boolean | undefined;\r\n    complies_with_requirements_comments?: string | undefined;\r\n    complies_with_eligibility?: boolean | undefined;\r\n    complies_with_eligibility_comments?: string | undefined;\r\n    alt_analysis_complies?: boolean | undefined;\r\n    alt_analysis_complies_comments?: string | undefined;\r\n    cost_estimate_complies?: boolean | undefined;\r\n    cost_estimate_complies_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_bridge_district_engineer_pre_app_review_fy23 {\r\n    id: number;\r\n    requesting_funds?: boolean | undefined;\r\n    reason_acceptable?: boolean | undefined;\r\n    reason_acceptable_comments?: string | undefined;\r\n    district_reviewed?: boolean | undefined;\r\n    district_reviewed_comments?: string | undefined;\r\n    scope_comments?: boolean | undefined;\r\n    scope_comments_comments?: string | undefined;\r\n    alternative_analysis_comments?: boolean | undefined;\r\n    alternative_analysis_comments_comments?: string | undefined;\r\n    other_requirements?: boolean | undefined;\r\n    other_requirements_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_bridge_district_engineer_review_fy20 {\r\n    id: number;\r\n    deficiencies_free: boolean;\r\n    written_scope_of_work: boolean;\r\n    estimate_appropriate: boolean;\r\n    correct_smart_flags: number;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_bridge_district_engineer_review_fy21 {\r\n    id: number;\r\n    deficiencies_free?: boolean | undefined;\r\n    deficiencies_free_comments?: string | undefined;\r\n    written_scope_of_work?: boolean | undefined;\r\n    written_scope_of_work_comments?: string | undefined;\r\n    estimate_appropriate?: boolean | undefined;\r\n    estimate_appropriate_comments?: string | undefined;\r\n    correct_smart_flags?: number | undefined;\r\n    correct_smart_flags_comments?: string | undefined;\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_bridge_district_engineer_review_fy22 {\r\n    id: number;\r\n    deficiencies_free?: boolean | undefined;\r\n    deficiencies_free_comments?: string | undefined;\r\n    written_scope_of_work?: boolean | undefined;\r\n    written_scope_of_work_comments?: string | undefined;\r\n    estimate_appropriate?: boolean | undefined;\r\n    estimate_appropriate_comments?: string | undefined;\r\n    correct_smart_flags?: number | undefined;\r\n    correct_smart_flags_comments?: string | undefined;\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_bridge_district_engineer_review_fy26 {\r\n    id: number;\r\n    complies_with_requirements?: boolean | undefined;\r\n    complies_with_requirements_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_bridge_district_engineer_validation_event {\r\n    id: number;\r\n    deficiences_found: boolean;\r\n    written_scope_of_work: number;\r\n    estimate_appropriate: number;\r\n    correct_smart_flags: number;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_bridge_district_full_app_validation_fy23 {\r\n    id: number;\r\n    complies_with_requirements?: boolean | undefined;\r\n    complies_with_requirements_comments?: string | undefined;\r\n    complies_with_eligibility?: boolean | undefined;\r\n    complies_with_eligibility_comments?: string | undefined;\r\n    included_estimate?: number | undefined;\r\n    included_estimate_comments?: string | undefined;\r\n    cost_estimate_complies?: boolean | undefined;\r\n    cost_estimate_complies_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_bridge_district_pre_app_validation_fy23 {\r\n    id: number;\r\n    requesting_funds?: boolean | undefined;\r\n    reason_acceptable?: boolean | undefined;\r\n    reason_acceptable_comments?: string | undefined;\r\n    district_reviewed?: boolean | undefined;\r\n    district_reviewed_comments?: string | undefined;\r\n    scope_comments?: boolean | undefined;\r\n    scope_comments_comments?: string | undefined;\r\n    included_estimate?: number | undefined;\r\n    included_estimate_comments?: string | undefined;\r\n    other_requirements?: boolean | undefined;\r\n    other_requirements_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_bridge_district_validation_event {\r\n    id: number;\r\n    deficiences_found: boolean;\r\n    eligible_for_funds: number;\r\n    estimate_appropriate: number;\r\n    changes_communicated: boolean;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_bridge_district_validation_fy20 {\r\n    id: number;\r\n    deficiencies_free: boolean;\r\n    written_scope_of_work: boolean;\r\n    estimate_appropriate: boolean;\r\n    correct_smart_flags: number;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_bridge_district_validation_fy21 {\r\n    id: number;\r\n    deficiencies_free?: boolean | undefined;\r\n    deficiencies_free_comments?: string | undefined;\r\n    written_scope_of_work?: boolean | undefined;\r\n    written_scope_of_work_comments?: string | undefined;\r\n    estimate_appropriate?: boolean | undefined;\r\n    estimate_appropriate_comments?: string | undefined;\r\n    correct_smart_flags?: number | undefined;\r\n    correct_smart_flags_comments?: string | undefined;\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_bridge_district_validation_fy22 {\r\n    id: number;\r\n    deficiencies_free?: boolean | undefined;\r\n    deficiencies_free_comments?: string | undefined;\r\n    written_scope_of_work?: boolean | undefined;\r\n    written_scope_of_work_comments?: string | undefined;\r\n    estimate_appropriate?: boolean | undefined;\r\n    estimate_appropriate_comments?: string | undefined;\r\n    correct_smart_flags?: number | undefined;\r\n    correct_smart_flags_comments?: string | undefined;\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_bridge_district_validation_fy26 {\r\n    id: number;\r\n    included_estimate?: number | undefined;\r\n    included_estimate_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_pavement_central_office_validation_event {\r\n    id: number;\r\n    deficiences_found?: boolean | undefined;\r\n    is_total_less_than_million?: boolean | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_pavement_central_office_validation_event_fy22 {\r\n    id: number;\r\n    deficiences_found?: boolean | undefined;\r\n    is_total_less_than_million?: boolean | undefined;\r\n    form_acceptable?: boolean | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_pavement_central_office_validation_event_fy23 {\r\n    id: number;\r\n    deficiences_found?: boolean | undefined;\r\n    is_total_less_than_million?: boolean | undefined;\r\n    form_acceptable?: boolean | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Sgr_pavement_central_office_validation_event_fy25 {\r\n    id: number;\r\n    deficiences_found?: boolean | undefined;\r\n    is_total_less_than_million?: boolean | undefined;\r\n    form_acceptable?: boolean | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Sgr_pavement_central_office_validation_event_fy26 {\r\n    id: number;\r\n    deficiences_found?: boolean | undefined;\r\n    is_total_less_than_million?: boolean | undefined;\r\n    form_acceptable?: boolean | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_pavement_district_validation_event {\r\n    id: number;\r\n    is_segment_qualified?: boolean | undefined;\r\n    estimate_appropriate?: number | undefined;\r\n    is_total_less_than_million?: boolean | undefined;\r\n    includes_contact?: boolean | undefined;\r\n    deficiences_found?: number | undefined;\r\n    segment_qualified_comment?: string | undefined;\r\n    estimate_appropriate_comment?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_pavement_district_validation_event_fy22 {\r\n    id: number;\r\n    is_segment_qualified?: boolean | undefined;\r\n    segment_qualified_comment?: string | undefined;\r\n    estimate_appropriate?: number | undefined;\r\n    estimate_appropriate_comment?: string | undefined;\r\n    is_total_less_than_million?: boolean | undefined;\r\n    includes_contact?: boolean | undefined;\r\n    form_attached?: boolean | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface sgr_pavement_district_validation_event_fy23 {\r\n    id: number;\r\n    is_segment_qualified?: boolean | undefined;\r\n    segment_qualified_comment?: string | undefined;\r\n    estimate_appropriate?: number | undefined;\r\n    estimate_appropriate_comment?: string | undefined;\r\n    is_total_less_than_million?: boolean | undefined;\r\n    includes_contact?: boolean | undefined;\r\n    form_attached?: boolean | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Sgr_pavement_district_validation_event_fy25 {\r\n    id: number;\r\n    is_segment_qualified?: boolean | undefined;\r\n    estimate_appropriate?: number | undefined;\r\n    is_total_less_than_million?: boolean | undefined;\r\n    includes_contact?: boolean | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Sgr_pavement_district_validation_event_fy26 {\r\n    id: number;\r\n    is_segment_qualified?: boolean | undefined;\r\n    estimate_appropriate?: number | undefined;\r\n    is_total_less_than_million?: boolean | undefined;\r\n    includes_contact?: boolean | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface ss_coss_validation_event {\r\n    id: number;\r\n    has_safety_need: number;\r\n    has_redundancy_need: number;\r\n    has_congestion_need: number;\r\n    has_reliability_need: number;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface ss_district_validation_event {\r\n    id: number;\r\n    has_eligibility: number;\r\n    has_readiness: number;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface ss_ewg_review_fy22 {\r\n    id: number;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Ss_full_app_co_screening_fy26 {\r\n    id: number;\r\n    vtrans_need_coss?: boolean | undefined;\r\n    vtrans_need_rn?: boolean | undefined;\r\n    vtrans_need_uda?: boolean | undefined;\r\n    vtrans_need_safety?: boolean | undefined;\r\n    has_eligibility?: boolean | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    recommended_for_screening?: boolean | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface ss_full_app_co_validation_fy22 {\r\n    id: number;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface ss_full_app_district_review_fy22 {\r\n    id: number;\r\n    has_eligibility?: boolean | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Ss_full_app_district_screening_fy26 {\r\n    id: number;\r\n    vtrans_need_coss?: boolean | undefined;\r\n    vtrans_need_rn?: boolean | undefined;\r\n    vtrans_need_uda?: boolean | undefined;\r\n    vtrans_need_safety?: boolean | undefined;\r\n    has_eligibility?: boolean | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    complete_reasonable_accurate?: boolean | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface ss_mmwg_review_fy22 {\r\n    id: number;\r\n    vtrans_need?: number | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface ss_oipi_validation_fy22 {\r\n    id: number;\r\n    vtrans_need?: number | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface ss_pre_app_co_validation {\r\n    id: number;\r\n    vtrans_need?: number | undefined;\r\n    has_eligibility?: boolean | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    has_conditions?: boolean | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface ss_pre_app_co_validation_fy24 {\r\n    id: number;\r\n    vtrans_need?: number | undefined;\r\n    vtrans_comments?: string | undefined;\r\n    has_eligibility?: boolean | undefined;\r\n    has_eligibility_comments?: string | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    has_readiness_comments?: string | undefined;\r\n    has_conditions?: boolean | undefined;\r\n    has_conditions_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Ss_pre_app_co_validation_fy26 {\r\n    id: number;\r\n    vtrans_need?: number | undefined;\r\n    vtrans_comments?: string | undefined;\r\n    has_eligibility?: boolean | undefined;\r\n    has_eligibility_comments?: string | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    has_readiness_comments?: string | undefined;\r\n    has_conditions?: boolean | undefined;\r\n    has_conditions_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Ss_pre_app_de_screening_fy26 {\r\n    id: number;\r\n    has_engagement?: boolean | undefined;\r\n    has_concerns?: boolean | undefined;\r\n    has_concerns_comments?: string | undefined;\r\n    isGate2Rejected?: boolean | undefined;\r\n    has_engagement_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface ss_pre_app_district_review {\r\n    id: number;\r\n    vtrans_need?: number | undefined;\r\n    has_eligibility?: boolean | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface ss_pre_app_district_review_fy24 {\r\n    id: number;\r\n    vtrans_need?: number | undefined;\r\n    vtrans_comments?: string | undefined;\r\n    has_eligibility?: boolean | undefined;\r\n    has_eligibility_comments?: string | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    has_readiness_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Ss_pre_app_district_review_fy26 {\r\n    id: number;\r\n    vtrans_need?: number | undefined;\r\n    vtrans_comments?: string | undefined;\r\n    has_eligibility?: boolean | undefined;\r\n    has_eligibility_comments?: string | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    has_readiness_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface ss_prescreening_validation_event {\r\n    id: number;\r\n    is_eligible: boolean;\r\n    is_ready: boolean;\r\n    is_vtrans_need?: boolean | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface ss_regnet_validation_event {\r\n    id: number;\r\n    has_modal_need: number;\r\n    has_tdm_need: number;\r\n    has_reliability_need: number;\r\n    has_connectivity_need: number;\r\n    has_walkable_need: number;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface ta_central_office_review_fy23 {\r\n    id: number;\r\n    public_meeting?: boolean | undefined;\r\n    public_meeting_comments?: string | undefined;\r\n    MPO_boundary?: boolean | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface ta_central_office_validation_event {\r\n    id: number;\r\n    eligible_trans_alternative_funding: number;\r\n    sponsor_eligible_apply: number;\r\n    acceptable_beginning_ending: number;\r\n    acceptable_project_budget: number;\r\n    acceptable_inkind_match_budget: number;\r\n    sponsor_resolution_provided: number;\r\n    public_meeting_held: number;\r\n    mpo_resolution_attached: number;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface ta_central_office_validation_event_y20 {\r\n    id: number;\r\n    match_commitment?: boolean | undefined;\r\n    hearing_or_documentation?: boolean | undefined;\r\n    mpo_resolution?: boolean | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Ta_central_office_validation_event_y23 {\r\n    id: number;\r\n    match_commitment?: boolean | undefined;\r\n    hearing_or_documentation?: boolean | undefined;\r\n    mpo_resolution?: boolean | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Ta_central_office_validation_event_y25 {\r\n    id: number;\r\n    details_provided?: number | undefined;\r\n    details_provided_comments?: string | undefined;\r\n    meets_ta_reqs?: boolean | undefined;\r\n    meets_ta_reqs_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Ta_central_office_validation_event_y27 {\r\n    id: number;\r\n    project_compliant?: boolean | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface ta_district_review_fy23 {\r\n    id: number;\r\n    site_visit?: boolean | undefined;\r\n    site_visit_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Ta_district_validation_y25 {\r\n    id: number;\r\n    site_visit?: boolean | undefined;\r\n    site_visit_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Ta_district_validation_y27 {\r\n    id: number;\r\n    validation_complete?: boolean | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface ta_pre_app_co_validator {\r\n    id: number;\r\n    sponsor_eligible?: boolean | undefined;\r\n    sponsor_eligible_comments?: string | undefined;\r\n    scope_eligible?: boolean | undefined;\r\n    scope_eligible_comments?: string | undefined;\r\n    selected_categories?: boolean | undefined;\r\n    selected_categories_comments?: string | undefined;\r\n    in_kind_eligible?: boolean | undefined;\r\n    in_kind_eligible_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Ta_pre_app_district_review_y27 {\r\n    id: number;\r\n    completed_review?: boolean | undefined;\r\n    has_conditions?: boolean | undefined;\r\n    has_conditions_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface ta_pre_app_district_reviewer {\r\n    id: number;\r\n    logical_termini?: boolean | undefined;\r\n    logical_termini_comments?: string | undefined;\r\n    scope_delivered?: boolean | undefined;\r\n    scope_delivered_comments?: string | undefined;\r\n    estimate_reasonable?: boolean | undefined;\r\n    estimate_reasonable_comments?: string | undefined;\r\n    sponser_expericence?: boolean | undefined;\r\n    sponser_expericence_comments?: string | undefined;\r\n    should_admin?: boolean | undefined;\r\n    should_admin_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Ta_pre_central_office_validation_event_y25 {\r\n    id: number;\r\n    applicant_is_eligible?: boolean | undefined;\r\n    applicant_comments?: string | undefined;\r\n    scope_is_eligible?: boolean | undefined;\r\n    scope_is_defined?: boolean | undefined;\r\n    ineligible_items_removed?: number | undefined;\r\n    scope_comments?: string | undefined;\r\n    has_acceptable_termini?: number | undefined;\r\n    logical_termini?: number | undefined;\r\n    termini_comments?: string | undefined;\r\n    third_party_eligible?: number | undefined;\r\n    details_provided_to_eval?: number | undefined;\r\n    third_party_comments?: string | undefined;\r\n    details_need_attention?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Ta_pre_central_office_validation_event_y27 {\r\n    id: number;\r\n    schedule_compliant?: boolean | undefined;\r\n    has_conditions?: boolean | undefined;\r\n    has_conditions_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface ta_pre_district_review_y23 {\r\n    id: number;\r\n    logical_termini?: boolean | undefined;\r\n    logical_termini_comments?: string | undefined;\r\n    scope_delivered?: boolean | undefined;\r\n    scope_delivered_comments?: string | undefined;\r\n    estimate_reasonable?: boolean | undefined;\r\n    estimate_reasonable_comments?: string | undefined;\r\n    site_visit?: boolean | undefined;\r\n    site_visit_comments?: string | undefined;\r\n    rta_approved?: boolean | undefined;\r\n    rta_approved_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Vhsip_district_validation_fy24 {\r\n    id: number;\r\n    is_accurate?: boolean | undefined;\r\n    accurate_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Vhsip_district_validation_fy25 {\r\n    id: number;\r\n    is_accurate?: boolean | undefined;\r\n    accurate_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Vhsip_district_validation_fy26 {\r\n    id: number;\r\n    is_accurate?: boolean | undefined;\r\n    accurate_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Vhsip_local_liaison_validation_fy24 {\r\n    id: number;\r\n    is_many_active?: boolean | undefined;\r\n    is_admin_locally?: boolean | undefined;\r\n    locally_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Vhsip_local_liaison_validation_fy25 {\r\n    id: number;\r\n    is_many_active?: boolean | undefined;\r\n    is_admin_locally?: boolean | undefined;\r\n    locally_comments?: string | undefined;\r\n    active_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface Vhsip_local_liaison_validation_fy26 {\r\n    id: number;\r\n    is_many_active?: boolean | undefined;\r\n    is_admin_locally?: boolean | undefined;\r\n    locally_comments?: string | undefined;\r\n    active_comments?: string | undefined;\r\n    idNavigation?: validation_event | undefined;\r\n}\r\n\r\nexport interface rs_pre_app_co_validation {\r\n    advance_ad_date?: boolean | undefined;\r\n    advance_ad_date_comments?: string | undefined;\r\n    approved_and_documented?: boolean | undefined;\r\n    approved_and_documented_comments?: string | undefined;\r\n    funds_approved?: boolean | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    id: number;\r\n    meets_requirements?: boolean | undefined;\r\n    meets_requirements_comments?: string | undefined;\r\n}\r\n\r\nexport interface rs_pre_app_district_review {\r\n    advance_ad_date?: boolean | undefined;\r\n    advance_ad_date_comments?: string | undefined;\r\n    approved_and_documented?: boolean | undefined;\r\n    approved_and_documented_comments?: string | undefined;\r\n    funds_approved?: boolean | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    id: number;\r\n    meets_requirements?: boolean | undefined;\r\n    meets_requirements_comments?: string | undefined;\r\n}\r\n\r\nexport interface rs_district_validation_event_y20 {\r\n    advance_ad_date?: boolean | undefined;\r\n    advance_ad_date_comments?: string | undefined;\r\n    funds_approved?: boolean | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    id: number;\r\n    maint_doc_provided?: boolean | undefined;\r\n    maint_doc_provided_comments?: string | undefined;\r\n    meets_trans_need?: boolean | undefined;\r\n    meets_trans_need_comments?: string | undefined;\r\n    multi_location?: boolean | undefined;\r\n    multi_location_comments?: string | undefined;\r\n}\r\n\r\nexport interface rs_central_office_validation_event_y20 {\r\n    advance_ad_date?: boolean | undefined;\r\n    advance_ad_date_comments?: string | undefined;\r\n    funds_approved?: boolean | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    id: number;\r\n    maint_doc_provided?: boolean | undefined;\r\n    maint_doc_provided_comments?: string | undefined;\r\n    meets_trans_need?: boolean | undefined;\r\n    meets_trans_need_comments?: string | undefined;\r\n    multi_location?: boolean | undefined;\r\n    multi_location_comments?: string | undefined;\r\n}\r\n\r\nexport interface rs_district_validation_event_y23 {\r\n    advance_ad_date?: boolean | undefined;\r\n    advance_ad_date_comments?: string | undefined;\r\n    funds_approved?: boolean | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    id: number;\r\n    maint_doc_provided?: boolean | undefined;\r\n    maint_doc_provided_comments?: string | undefined;\r\n    meets_trans_need?: boolean | undefined;\r\n    meets_trans_need_comments?: string | undefined;\r\n    multi_location?: boolean | undefined;\r\n    multi_location_comments?: string | undefined;\r\n}\r\n\r\nexport interface rs_central_office_validation_event_y23 {\r\n    advance_ad_date?: boolean | undefined;\r\n    advance_ad_date_comments?: string | undefined;\r\n    funds_approved?: boolean | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    id: number;\r\n    maint_doc_provided?: boolean | undefined;\r\n    maint_doc_provided_comments?: string | undefined;\r\n    meets_trans_need?: boolean | undefined;\r\n    meets_trans_need_comments?: string | undefined;\r\n    multi_location?: boolean | undefined;\r\n    multi_location_comments?: string | undefined;\r\n}\r\n\r\nexport interface rs_pre_app_district_review_y23 {\r\n    advance_ad_date?: number | undefined;\r\n    advance_ad_date_comments?: string | undefined;\r\n    approved_and_documented?: number | undefined;\r\n    approved_and_documented_comments?: string | undefined;\r\n    funds_approved?: boolean | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    id: number;\r\n    meets_requirements?: boolean | undefined;\r\n    meets_requirements_comments?: string | undefined;\r\n    meets_trans_need?: number | undefined;\r\n    meets_trans_need_comments?: string | undefined;\r\n}\r\n\r\nexport interface rs_pre_central_office_validation_event_y23 {\r\n    advance_ad_date?: number | undefined;\r\n    advance_ad_date_comments?: string | undefined;\r\n    approved_and_documented?: number | undefined;\r\n    approved_and_documented_comments?: string | undefined;\r\n    funds_approved?: boolean | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    id: number;\r\n    meets_requirements?: boolean | undefined;\r\n    meets_requirements_comments?: string | undefined;\r\n    meets_trans_need?: number | undefined;\r\n    meets_trans_need_comments?: string | undefined;\r\n}\r\n\r\nexport interface ScreeningViewModel {\r\n    currentScreenings?: Validation_event[] | undefined;\r\n    nonCurrentScreenings?: Validation_event[] | undefined;\r\n    editingScreenings?: Validation_event[] | undefined;\r\n    rolledBackEventTypes?: Validation_event_type[] | undefined;\r\n    efCurrentScreenings?: validation_event[] | undefined;\r\n    efNonCurrentScreenings?: validation_event[] | undefined;\r\n    efEditingScreenings?: validation_event[] | undefined;\r\n}\r\n\r\nexport interface Validation_event_type {\r\n    id: number;\r\n    name?: string | undefined;\r\n}\r\n\r\nexport interface ScreeningEventsViewModelDeprecated {\r\n    district_bridge_engineer?: District_bridge_engineer_questions | undefined;\r\n    district_validation_bridge?: District_validation_bridge_questions | undefined;\r\n    central_bridge_engineer?: Central_bridge_engineer_questions | undefined;\r\n    co_validation_bridge?: Central_office_validation_bridge_questions | undefined;\r\n    prescreening_questions?: Ss_prescreening_questions | undefined;\r\n    coss_questions?: Ss_coss_questions | undefined;\r\n    regnet_questions?: Ss_regnet_questions | undefined;\r\n    district_validation_ss?: Ss_district_questions | undefined;\r\n    district_bridge_fy20?: District_bridge_fy20_questions | undefined;\r\n    central_office_bridge_engineer_review_fy20?: Central_office_bridge_engineer_review_questions_fy20 | undefined;\r\n    central_office_bridge_validation_fy20?: Central_office_bridge_validation_questions_fy20 | undefined;\r\n    rs_pre_app_district_review_questions?: Rs_pre_app_district_review2 | undefined;\r\n    rs_pre_app_co_validation_questions?: Rs_pre_app_co_validation2 | undefined;\r\n    ta_pre_app_district_reviewer_questions?: Ta_pre_app_district_reviewer2 | undefined;\r\n    ta_pre_app_co_validator_questions?: Ta_pre_app_co_validator2 | undefined;\r\n    ta_central_office_validation_event_y20_questions?: Ta_central_office_validation_event_y202 | undefined;\r\n    ta_central_office_review_questions_fy23?: Ta_central_office_review_fy232 | undefined;\r\n    ta_district_review_questions_fy23?: Ta_district_review_fy232 | undefined;\r\n    ta_pre_district_review_questions_y23?: Ta_pre_district_review_y232 | undefined;\r\n    ta_pre_app_district_review_y25?: Ta_pre_app_district_review_y25 | undefined;\r\n    ta_pre_central_office_validation_event_y25?: Ta_pre_central_office_validation_event_y25 | undefined;\r\n    rs_district_validation_event_y20_questions?: Rs_district_validation_event_y202 | undefined;\r\n    rs_central_office_validation_event_y20_questions?: Rs_central_office_validation_event_y202 | undefined;\r\n    rs_district_validation_event_questions_y23?: Rs_district_validation_event_y232 | undefined;\r\n    rs_central_office_validation_event_questions_y23?: Rs_central_office_validation_event_y232 | undefined;\r\n    rs_pre_app_district_review_y23_questions?: Rs_pre_app_district_review_y232 | undefined;\r\n    rs_pre_central_office_validation_event_y23_questions?: Rs_pre_central_office_validation_event_y232 | undefined;\r\n    rs_pre_app_district_review_y25?: Rs_pre_app_district_review_y25 | undefined;\r\n    rs_pre_central_office_validation_event_y25?: Rs_pre_central_office_validation_event_y25 | undefined;\r\n    bridge_district_engineer_review_questions_fy21?: Bridge_district_engineer_review_fy21 | undefined;\r\n    bridge_district_validation_questions_fy21?: District_bridge_validation_fy21_questions | undefined;\r\n    bridge_co_engineer_additional_questions_fy21?: Central_office_bridge_engineer_review_questions_fy21 | undefined;\r\n    bridge_co_validation_questions_fy21?: Central_office_bridge_validation_questions_fy21 | undefined;\r\n    bridge_district_engineer_review_questions_fy22?: Bridge_district_engineer_review_fy22 | undefined;\r\n    bridge_district_validation_questions_fy22?: District_bridge_validation_fy22_questions | undefined;\r\n    bridge_co_engineer_additional_questions_fy22?: Central_office_bridge_engineer_review_questions_fy22 | undefined;\r\n    bridge_co_validation_questions_fy22?: Central_office_bridge_validation_questions_fy22 | undefined;\r\n    bridge_district_engineer_review_pre_app_questions_fy23?: Bridge_district_engineer_pre_app_review_fy23 | undefined;\r\n    bridge_district_validation_pre_app_questions_fy23?: District_bridge_pre_app_validation_fy23_questions | undefined;\r\n    bridge_co_engineer_additional_pre_app_questions_fy23?: Central_office_bridge_engineer_pre_app_review_questions_fy23 | undefined;\r\n    bridge_co_validation_pre_app_questions_fy23?: Central_office_bridge_pre_app_validation_questions_fy23 | undefined;\r\n    bridge_district_engineer_review_full_app_questions_fy23?: Bridge_district_engineer_full_app_review_fy23 | undefined;\r\n    bridge_district_validation_full_app_questions_fy23?: District_bridge_full_app_validation_fy23_questions | undefined;\r\n    bridge_co_engineer_additional_full_app_questions_fy23?: Central_office_bridge_engineer_full_app_review_questions_fy23 | undefined;\r\n    bridge_co_validation_full_app_questions_fy23?: Central_office_bridge_full_app_validation_questions_fy23 | undefined;\r\n    bridge_district_engineer_review_pre_app_questions_fy24?: Bridge_district_engineer_pre_app_review_fy24 | undefined;\r\n    bridge_district_validation_pre_app_questions_fy24?: District_bridge_pre_app_validation_fy24_questions | undefined;\r\n    bridge_co_engineer_additional_pre_app_questions_fy24?: Central_office_bridge_engineer_pre_app_review_questions_fy24 | undefined;\r\n    bridge_co_validation_pre_app_questions_fy24?: Central_office_bridge_pre_app_validation_questions_fy24 | undefined;\r\n    bridge_district_engineer_review_full_app_questions_fy24?: Bridge_district_engineer_full_app_review_fy24 | undefined;\r\n    bridge_district_validation_full_app_questions_fy24?: District_bridge_full_app_validation_fy24_questions | undefined;\r\n    bridge_co_engineer_additional_full_app_questions_fy24?: Central_office_bridge_engineer_full_app_review_questions_fy24 | undefined;\r\n    bridge_co_validation_full_app_questions_fy24?: Central_office_bridge_full_app_validation_questions_fy24 | undefined;\r\n    pavement_district_additional_questions?: District_validation_pavement_questions | undefined;\r\n    pavement_co_additional_questions?: Central_office_validation_pavement_questions | undefined;\r\n    pavement_district_additional_questions_fy22?: District_validation_pavement_questions_fy22 | undefined;\r\n    pavement_co_additional_questions_fy22?: Central_office_validation_pavement_questions_fy22 | undefined;\r\n    pavement_district_additional_questions_fy23?: District_validation_pavement_questions_fy23 | undefined;\r\n    pavement_co_additional_questions_fy23?: Central_office_validation_pavement_questions_fy23 | undefined;\r\n    pavement_district_additional_questions_fy24?: District_validation_pavement_questions_fy24 | undefined;\r\n    pavement_co_additional_questions_fy24?: Central_office_validation_pavement_questions_fy24 | undefined;\r\n    ss_pre_app_district_review_questions?: Smart_scale_pre_app_district_review_questions | undefined;\r\n    ss_pre_app_co_validation_questions?: Smart_scale_pre_app_co_validation_questions | undefined;\r\n    ss_oipi_validation_questions_fy22?: Smart_scale_oipi_validation_questions_fy22 | undefined;\r\n    ss_mmwg_review_questions_fy22?: Smart_scale_mmwg_review_fy22_questions | undefined;\r\n    ss_full_app_district_review_questions_fy22?: Smart_scale_full_app_district_review_fy22_questions | undefined;\r\n    ss_full_app_co_validation_questions_fy22?: Smart_scale_full_app_co_validation_fy22_questions | undefined;\r\n    ss_ewg_review_questions_fy22?: Smart_scale_ewg_review_fy22_questions | undefined;\r\n    pre_scoping_app_district_review_questions_fy22?: Pre_scoping_app_district_review_fy22_questions | undefined;\r\n    pre_scoping_app_district_validation_questions_fy22?: Pre_scoping_app_district_validation_fy22_questions | undefined;\r\n    pre_scoping_app_co_validation_questions_fy22?: Pre_scoping_app_co_validation_fy22_questions | undefined;\r\n    ss_pre_app_district_review_questions_fy24?: Smart_scale_pre_app_district_review_fy24_questions | undefined;\r\n    ss_pre_app_co_validation_questions_fy24?: Smart_scale_pre_app_co_validation_fy24_questions | undefined;\r\n    ss_full_app_district_screening_questions_fy24?: Smart_scale_full_app_district_screening_fy24_questions | undefined;\r\n    ss_full_app_co_screening_questions_fy24?: Smart_scale_full_app_co_screening_fy24_questions | undefined;\r\n    ss_full_app_10_percent_screening_questions_fy24?: Smart_scale_full_app_10_percent_screening_fy24_questions | undefined;\r\n    ss_full_app_ewg_review_questions_fy24?: Smart_scale_full_app_ewg_review_fy24_questions | undefined;\r\n    id: number;\r\n    appid?: string | undefined;\r\n    performed_by?: string | undefined;\r\n    performed_on?: Date | undefined;\r\n    type_id: number;\r\n    comments?: string | undefined;\r\n    is_approved?: boolean | undefined;\r\n    meets_vtrans_need?: number | undefined;\r\n    in_capital_improvement_plan?: number | undefined;\r\n    addresses_maintenance_analysis_deficiency?: number | undefined;\r\n    eligible_trans_alternative_funding?: number | undefined;\r\n    sponsor_eligible_apply?: number | undefined;\r\n    acceptable_beginning_ending?: number | undefined;\r\n    acceptable_project_budget?: number | undefined;\r\n    acceptable_inkind_match_budget?: number | undefined;\r\n    sponsor_resolution_provided?: number | undefined;\r\n    public_meeting_held?: number | undefined;\r\n    mpo_resolution_attached?: number | undefined;\r\n    is_created_by_mmwg?: boolean | undefined;\r\n}\r\n\r\nexport interface District_bridge_engineer_questions {\r\n    anyDeficiencies: boolean;\r\n    writtenScopeOfWork: number;\r\n    estimateAppropriate: number;\r\n    correctSmartFlags: number;\r\n}\r\n\r\nexport interface District_validation_bridge_questions {\r\n    noFoundDeficiencies: boolean;\r\n    eligibleForFunds: number;\r\n    estimateAppropriate: number;\r\n    changesCommunicated: boolean;\r\n}\r\n\r\nexport interface Central_bridge_engineer_questions {\r\n    noFoundDeficiencies: number;\r\n}\r\n\r\nexport interface Central_office_validation_bridge_questions {\r\n    reviewedResponses: boolean;\r\n    eligibleForFunds: boolean;\r\n}\r\n\r\nexport interface Ss_prescreening_questions {\r\n    is_ready: boolean;\r\n    is_eligible: boolean;\r\n    is_vtrans_need?: boolean | undefined;\r\n}\r\n\r\nexport interface Ss_coss_questions {\r\n    has_safety_need: number;\r\n    has_redundancy_need: number;\r\n    has_congestion_need: number;\r\n    has_reliability_need: number;\r\n}\r\n\r\nexport interface Ss_regnet_questions {\r\n    has_modal_need: number;\r\n    has_tdm_need: number;\r\n    has_reliability_need: number;\r\n    has_connectivity_need: number;\r\n    has_walkable_need: number;\r\n}\r\n\r\nexport interface Ss_district_questions {\r\n    has_eligibility: number;\r\n    has_readiness: number;\r\n}\r\n\r\nexport interface District_bridge_fy20_questions {\r\n    deficiencies_free: boolean;\r\n    written_scope_of_work: boolean;\r\n    estimate_appropriate: boolean;\r\n    correct_smart_flags: number;\r\n    scoring: number;\r\n}\r\n\r\nexport interface Central_office_bridge_engineer_review_questions_fy20 {\r\n    deficiencies_free: boolean;\r\n}\r\n\r\nexport interface Central_office_bridge_validation_questions_fy20 {\r\n    reviewed_responses: boolean;\r\n    eligible_for_funds: boolean;\r\n}\r\n\r\nexport interface Rs_pre_app_district_review2 {\r\n    funds_approved?: boolean | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    advance_ad_date?: boolean | undefined;\r\n    advance_ad_date_comments?: string | undefined;\r\n    approved_and_documented?: boolean | undefined;\r\n    approved_and_documented_comments?: string | undefined;\r\n    meets_requirements?: boolean | undefined;\r\n    meets_requirements_comments?: string | undefined;\r\n}\r\n\r\nexport interface Rs_pre_app_co_validation2 {\r\n    funds_approved?: boolean | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    advance_ad_date?: boolean | undefined;\r\n    advance_ad_date_comments?: string | undefined;\r\n    approved_and_documented?: boolean | undefined;\r\n    approved_and_documented_comments?: string | undefined;\r\n    meets_requirements?: boolean | undefined;\r\n    meets_requirements_comments?: string | undefined;\r\n}\r\n\r\nexport interface Ta_pre_app_district_reviewer2 {\r\n    logical_termini?: boolean | undefined;\r\n    logical_termini_comments?: string | undefined;\r\n    scope_delivered?: boolean | undefined;\r\n    scope_delivered_comments?: string | undefined;\r\n    estimate_reasonable?: boolean | undefined;\r\n    estimate_reasonable_comments?: string | undefined;\r\n    sponser_expericence?: boolean | undefined;\r\n    sponser_expericence_comments?: string | undefined;\r\n    should_admin?: boolean | undefined;\r\n    should_admin_comments?: string | undefined;\r\n}\r\n\r\nexport interface Ta_pre_app_co_validator2 {\r\n    sponsor_eligible?: boolean | undefined;\r\n    sponsor_eligible_comments?: string | undefined;\r\n    scope_eligible?: boolean | undefined;\r\n    scope_eligible_comments?: string | undefined;\r\n    selected_categories?: boolean | undefined;\r\n    selected_categories_comments?: string | undefined;\r\n    in_kind_eligible?: boolean | undefined;\r\n    in_kind_eligible_comments?: string | undefined;\r\n}\r\n\r\nexport interface Ta_central_office_validation_event_y202 {\r\n    match_commitment?: boolean | undefined;\r\n    hearing_or_documentation?: boolean | undefined;\r\n    mpo_resolution?: boolean | undefined;\r\n}\r\n\r\nexport interface Ta_central_office_review_fy232 {\r\n    resolution_complete?: boolean | undefined;\r\n    resolution_complete_comments?: string | undefined;\r\n    public_meeting?: boolean | undefined;\r\n    public_meeting_comments?: string | undefined;\r\n    MPO_boundary?: boolean | undefined;\r\n}\r\n\r\nexport interface Ta_district_review_fy232 {\r\n    site_visit?: boolean | undefined;\r\n    site_visit_comments?: string | undefined;\r\n    cost_estimate_review?: boolean | undefined;\r\n    cost_estimate_review_comments?: string | undefined;\r\n}\r\n\r\nexport interface Ta_pre_district_review_y232 {\r\n    logical_termini?: boolean | undefined;\r\n    logical_termini_comments?: string | undefined;\r\n    scope_delivered?: boolean | undefined;\r\n    scope_delivered_comments?: string | undefined;\r\n    estimate_reasonable?: boolean | undefined;\r\n    estimate_reasonable_comments?: string | undefined;\r\n    site_visit?: boolean | undefined;\r\n    site_visit_comments?: string | undefined;\r\n    rta_approved?: boolean | undefined;\r\n    rta_approved_comments?: string | undefined;\r\n}\r\n\r\nexport interface Rs_district_validation_event_y202 {\r\n    funds_approved?: boolean | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    advance_ad_date?: boolean | undefined;\r\n    advance_ad_date_comments?: string | undefined;\r\n    meets_trans_need?: boolean | undefined;\r\n    meets_trans_need_comments?: string | undefined;\r\n    maint_doc_provided?: boolean | undefined;\r\n    maint_doc_provided_comments?: string | undefined;\r\n    multi_location?: boolean | undefined;\r\n    multi_location_comments?: string | undefined;\r\n}\r\n\r\nexport interface Rs_central_office_validation_event_y202 {\r\n    advance_ad_date?: boolean | undefined;\r\n    advance_ad_date_comments?: string | undefined;\r\n    funds_approved?: boolean | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    maint_doc_provided?: boolean | undefined;\r\n    maint_doc_provided_comments?: string | undefined;\r\n    meets_trans_need?: boolean | undefined;\r\n    meets_trans_need_comments?: string | undefined;\r\n    multi_location?: boolean | undefined;\r\n    multi_location_comments?: string | undefined;\r\n}\r\n\r\nexport interface Rs_district_validation_event_y232 {\r\n    funds_approved?: boolean | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    advance_ad_date?: boolean | undefined;\r\n    advance_ad_date_comments?: string | undefined;\r\n    meets_trans_need?: boolean | undefined;\r\n    meets_trans_need_comments?: string | undefined;\r\n    maint_doc_provided?: boolean | undefined;\r\n    maint_doc_provided_comments?: string | undefined;\r\n    multi_location?: boolean | undefined;\r\n    multi_location_comments?: string | undefined;\r\n}\r\n\r\nexport interface Rs_central_office_validation_event_y232 {\r\n    advance_ad_date?: boolean | undefined;\r\n    advance_ad_date_comments?: string | undefined;\r\n    funds_approved?: boolean | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    maint_doc_provided?: boolean | undefined;\r\n    maint_doc_provided_comments?: string | undefined;\r\n    meets_trans_need?: boolean | undefined;\r\n    meets_trans_need_comments?: string | undefined;\r\n    multi_location?: boolean | undefined;\r\n    multi_location_comments?: string | undefined;\r\n}\r\n\r\nexport interface Rs_pre_app_district_review_y232 {\r\n    funds_approved?: boolean | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    meets_trans_need?: number | undefined;\r\n    meets_trans_need_comments?: string | undefined;\r\n    advance_ad_date?: number | undefined;\r\n    advance_ad_date_comments?: string | undefined;\r\n    approved_and_documented?: number | undefined;\r\n    approved_and_documented_comments?: string | undefined;\r\n    meets_requirements?: boolean | undefined;\r\n    meets_requirements_comments?: string | undefined;\r\n}\r\n\r\nexport interface Rs_pre_central_office_validation_event_y232 {\r\n    funds_approved?: boolean | undefined;\r\n    funds_approved_comments?: string | undefined;\r\n    meets_trans_need?: number | undefined;\r\n    meets_trans_need_comments?: string | undefined;\r\n    advance_ad_date?: number | undefined;\r\n    advance_ad_date_comments?: string | undefined;\r\n    approved_and_documented?: number | undefined;\r\n    approved_and_documented_comments?: string | undefined;\r\n    meets_requirements?: boolean | undefined;\r\n    meets_requirements_comments?: string | undefined;\r\n}\r\n\r\nexport interface Bridge_district_engineer_review_fy21 {\r\n    correct_smart_flags?: number | undefined;\r\n    correct_smart_flags_comments?: string | undefined;\r\n    deficiencies_free?: boolean | undefined;\r\n    deficiencies_free_comments?: string | undefined;\r\n    estimate_appropriate?: boolean | undefined;\r\n    estimate_appropriate_comments?: string | undefined;\r\n    written_scope_of_work?: boolean | undefined;\r\n    written_scope_of_work_comments?: string | undefined;\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n}\r\n\r\nexport interface District_bridge_validation_fy21_questions {\r\n    correct_smart_flags?: number | undefined;\r\n    correct_smart_flags_comments?: string | undefined;\r\n    deficiencies_free?: boolean | undefined;\r\n    deficiencies_free_comments?: string | undefined;\r\n    estimate_appropriate?: boolean | undefined;\r\n    estimate_appropriate_comments?: string | undefined;\r\n    written_scope_of_work?: boolean | undefined;\r\n    written_scope_of_work_comments?: string | undefined;\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n}\r\n\r\nexport interface Central_office_bridge_engineer_review_questions_fy21 {\r\n    deficiencies_free?: boolean | undefined;\r\n    deficiencies_free_comments?: string | undefined;\r\n}\r\n\r\nexport interface Central_office_bridge_validation_questions_fy21 {\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n    responses_reviewed?: boolean | undefined;\r\n    responses_reviewed_comments?: string | undefined;\r\n}\r\n\r\nexport interface Bridge_district_engineer_review_fy22 {\r\n    correct_smart_flags?: number | undefined;\r\n    correct_smart_flags_comments?: string | undefined;\r\n    deficiencies_free?: boolean | undefined;\r\n    deficiencies_free_comments?: string | undefined;\r\n    estimate_appropriate?: boolean | undefined;\r\n    estimate_appropriate_comments?: string | undefined;\r\n    written_scope_of_work?: boolean | undefined;\r\n    written_scope_of_work_comments?: string | undefined;\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n}\r\n\r\nexport interface District_bridge_validation_fy22_questions {\r\n    correct_smart_flags?: number | undefined;\r\n    correct_smart_flags_comments?: string | undefined;\r\n    deficiencies_free?: boolean | undefined;\r\n    deficiencies_free_comments?: string | undefined;\r\n    estimate_appropriate?: boolean | undefined;\r\n    estimate_appropriate_comments?: string | undefined;\r\n    written_scope_of_work?: boolean | undefined;\r\n    written_scope_of_work_comments?: string | undefined;\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n}\r\n\r\nexport interface Central_office_bridge_engineer_review_questions_fy22 {\r\n    deficiencies_free?: boolean | undefined;\r\n    deficiencies_free_comments?: string | undefined;\r\n}\r\n\r\nexport interface Central_office_bridge_validation_questions_fy22 {\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n    responses_reviewed?: boolean | undefined;\r\n    responses_reviewed_comments?: string | undefined;\r\n}\r\n\r\nexport interface Bridge_district_engineer_pre_app_review_fy23 {\r\n    structurally_deficient?: boolean | undefined;\r\n    requesting_funds?: boolean | undefined;\r\n    reason_acceptable?: boolean | undefined;\r\n    reason_acceptable_comments?: string | undefined;\r\n    district_reviewed?: boolean | undefined;\r\n    district_reviewed_comments?: string | undefined;\r\n    scope_comments?: boolean | undefined;\r\n    scope_comments_comments?: string | undefined;\r\n    alternative_analysis_comments?: boolean | undefined;\r\n    alternative_analysis_comments_comments?: string | undefined;\r\n    other_requirements?: boolean | undefined;\r\n    other_requirements_comments?: string | undefined;\r\n}\r\n\r\nexport interface District_bridge_pre_app_validation_fy23_questions {\r\n    structurally_deficient?: boolean | undefined;\r\n    requesting_funds?: boolean | undefined;\r\n    reason_acceptable?: boolean | undefined;\r\n    reason_acceptable_comments?: string | undefined;\r\n    district_reviewed?: boolean | undefined;\r\n    district_reviewed_comments?: string | undefined;\r\n    scope_comments?: boolean | undefined;\r\n    scope_comments_comments?: string | undefined;\r\n    included_estimate?: number | undefined;\r\n    included_estimate_comments?: string | undefined;\r\n    other_requirements?: boolean | undefined;\r\n    other_requirements_comments?: string | undefined;\r\n}\r\n\r\nexport interface Central_office_bridge_engineer_pre_app_review_questions_fy23 {\r\n    structurally_deficient?: boolean | undefined;\r\n    requesting_funds?: boolean | undefined;\r\n    reason_acceptable?: boolean | undefined;\r\n    reason_acceptable_comments?: string | undefined;\r\n    co_coordinated?: boolean | undefined;\r\n    co_coordinated_comments?: string | undefined;\r\n}\r\n\r\nexport interface Central_office_bridge_pre_app_validation_questions_fy23 {\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n    responses_reviewed?: boolean | undefined;\r\n    responses_reviewed_comments?: string | undefined;\r\n}\r\n\r\nexport interface Bridge_district_engineer_full_app_review_fy23 {\r\n    reason_acceptable?: boolean | undefined;\r\n    reason_acceptable_comments?: string | undefined;\r\n    complies_with_requirements?: boolean | undefined;\r\n    complies_with_requirements_comments?: string | undefined;\r\n    complies_with_eligibility?: boolean | undefined;\r\n    complies_with_eligibility_comments?: string | undefined;\r\n    alt_analysis_complies?: boolean | undefined;\r\n    alt_analysis_complies_comments?: string | undefined;\r\n    cost_estimate_complies?: boolean | undefined;\r\n    cost_estimate_complies_comments?: string | undefined;\r\n}\r\n\r\nexport interface District_bridge_full_app_validation_fy23_questions {\r\n    reason_acceptable?: boolean | undefined;\r\n    reason_acceptable_comments?: string | undefined;\r\n    complies_with_requirements?: boolean | undefined;\r\n    complies_with_requirements_comments?: string | undefined;\r\n    complies_with_eligibility?: boolean | undefined;\r\n    complies_with_eligibility_comments?: string | undefined;\r\n    included_estimate?: number | undefined;\r\n    included_estimate_comments?: string | undefined;\r\n    cost_estimate_complies?: boolean | undefined;\r\n    cost_estimate_complies_comments?: string | undefined;\r\n}\r\n\r\nexport interface Central_office_bridge_engineer_full_app_review_questions_fy23 {\r\n    reason_acceptable?: boolean | undefined;\r\n    reason_acceptable_comments?: string | undefined;\r\n    complies_with_requirements?: boolean | undefined;\r\n    complies_with_requirements_comments?: string | undefined;\r\n}\r\n\r\nexport interface Central_office_bridge_full_app_validation_questions_fy23 {\r\n    responses_reviewed?: boolean | undefined;\r\n    responses_reviewed_comments?: string | undefined;\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n}\r\n\r\nexport interface Bridge_district_engineer_pre_app_review_fy24 {\r\n    structurally_deficient?: boolean | undefined;\r\n    requesting_funds?: boolean | undefined;\r\n    reason_acceptable?: boolean | undefined;\r\n    reason_acceptable_comments?: string | undefined;\r\n    district_reviewed?: boolean | undefined;\r\n    district_reviewed_comments?: string | undefined;\r\n    scope_comments?: boolean | undefined;\r\n    scope_comments_comments?: string | undefined;\r\n    alternative_analysis_comments?: boolean | undefined;\r\n    alternative_analysis_comments_comments?: string | undefined;\r\n    other_requirements?: boolean | undefined;\r\n    other_requirements_comments?: string | undefined;\r\n}\r\n\r\nexport interface District_bridge_pre_app_validation_fy24_questions {\r\n    structurally_deficient?: boolean | undefined;\r\n    requesting_funds?: boolean | undefined;\r\n    reason_acceptable?: boolean | undefined;\r\n    reason_acceptable_comments?: string | undefined;\r\n    district_reviewed?: boolean | undefined;\r\n    district_reviewed_comments?: string | undefined;\r\n    scope_comments?: boolean | undefined;\r\n    scope_comments_comments?: string | undefined;\r\n    included_estimate?: number | undefined;\r\n    included_estimate_comments?: string | undefined;\r\n    other_requirements?: boolean | undefined;\r\n    other_requirements_comments?: string | undefined;\r\n}\r\n\r\nexport interface Central_office_bridge_engineer_pre_app_review_questions_fy24 {\r\n    structurally_deficient?: boolean | undefined;\r\n    requesting_funds?: boolean | undefined;\r\n    reason_acceptable?: boolean | undefined;\r\n    reason_acceptable_comments?: string | undefined;\r\n    co_coordinated?: boolean | undefined;\r\n    co_coordinated_comments?: string | undefined;\r\n}\r\n\r\nexport interface Central_office_bridge_pre_app_validation_questions_fy24 {\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n    responses_reviewed?: boolean | undefined;\r\n    responses_reviewed_comments?: string | undefined;\r\n}\r\n\r\nexport interface Bridge_district_engineer_full_app_review_fy24 {\r\n    reason_acceptable?: boolean | undefined;\r\n    reason_acceptable_comments?: string | undefined;\r\n    complies_with_requirements?: boolean | undefined;\r\n    complies_with_requirements_comments?: string | undefined;\r\n    complies_with_eligibility?: boolean | undefined;\r\n    complies_with_eligibility_comments?: string | undefined;\r\n    alt_analysis_complies?: boolean | undefined;\r\n    alt_analysis_complies_comments?: string | undefined;\r\n    cost_estimate_complies?: boolean | undefined;\r\n    cost_estimate_complies_comments?: string | undefined;\r\n}\r\n\r\nexport interface District_bridge_full_app_validation_fy24_questions {\r\n    reason_acceptable?: boolean | undefined;\r\n    reason_acceptable_comments?: string | undefined;\r\n    complies_with_requirements?: boolean | undefined;\r\n    complies_with_requirements_comments?: string | undefined;\r\n    complies_with_eligibility?: boolean | undefined;\r\n    complies_with_eligibility_comments?: string | undefined;\r\n    included_estimate?: number | undefined;\r\n    included_estimate_comments?: string | undefined;\r\n    cost_estimate_complies?: boolean | undefined;\r\n    cost_estimate_complies_comments?: string | undefined;\r\n}\r\n\r\nexport interface Central_office_bridge_engineer_full_app_review_questions_fy24 {\r\n    reason_acceptable?: boolean | undefined;\r\n    reason_acceptable_comments?: string | undefined;\r\n    complies_with_requirements?: boolean | undefined;\r\n    complies_with_requirements_comments?: string | undefined;\r\n}\r\n\r\nexport interface Central_office_bridge_full_app_validation_questions_fy24 {\r\n    responses_reviewed?: boolean | undefined;\r\n    responses_reviewed_comments?: string | undefined;\r\n    eligible_for_funds?: boolean | undefined;\r\n    eligible_for_funds_comments?: string | undefined;\r\n}\r\n\r\nexport interface District_validation_pavement_questions {\r\n    deficiences_found?: number | undefined;\r\n    estimate_appropriate?: number | undefined;\r\n    estimate_appropriate_comment?: string | undefined;\r\n    includes_contact?: boolean | undefined;\r\n    is_segment_qualified?: boolean | undefined;\r\n    is_total_less_than_million?: boolean | undefined;\r\n    segment_qualified_comment?: string | undefined;\r\n}\r\n\r\nexport interface Central_office_validation_pavement_questions {\r\n    deficiences_found?: boolean | undefined;\r\n    is_total_less_than_million?: boolean | undefined;\r\n}\r\n\r\nexport interface District_validation_pavement_questions_fy22 {\r\n    is_segment_qualified?: boolean | undefined;\r\n    segment_qualified_comment?: string | undefined;\r\n    estimate_appropriate?: number | undefined;\r\n    estimate_appropriate_comment?: string | undefined;\r\n    is_total_less_than_million?: boolean | undefined;\r\n    includes_contact?: boolean | undefined;\r\n    form_attached?: boolean | undefined;\r\n}\r\n\r\nexport interface Central_office_validation_pavement_questions_fy22 {\r\n    deficiences_found?: boolean | undefined;\r\n    is_total_less_than_million?: boolean | undefined;\r\n    form_acceptable?: boolean | undefined;\r\n}\r\n\r\nexport interface District_validation_pavement_questions_fy23 {\r\n    is_segment_qualified?: boolean | undefined;\r\n    segment_qualified_comment?: string | undefined;\r\n    estimate_appropriate?: number | undefined;\r\n    estimate_appropriate_comment?: string | undefined;\r\n    is_total_less_than_million?: boolean | undefined;\r\n    includes_contact?: boolean | undefined;\r\n    form_attached?: boolean | undefined;\r\n}\r\n\r\nexport interface Central_office_validation_pavement_questions_fy23 {\r\n    deficiences_found?: boolean | undefined;\r\n    is_total_less_than_million?: boolean | undefined;\r\n    form_acceptable?: boolean | undefined;\r\n}\r\n\r\nexport interface District_validation_pavement_questions_fy24 {\r\n    is_segment_qualified?: boolean | undefined;\r\n    segment_qualified_comment?: string | undefined;\r\n    estimate_appropriate?: number | undefined;\r\n    estimate_appropriate_comment?: string | undefined;\r\n    is_total_less_than_million?: boolean | undefined;\r\n    includes_contact?: boolean | undefined;\r\n    form_attached?: boolean | undefined;\r\n}\r\n\r\nexport interface Central_office_validation_pavement_questions_fy24 {\r\n    deficiences_found?: boolean | undefined;\r\n    is_total_less_than_million?: boolean | undefined;\r\n    form_acceptable?: boolean | undefined;\r\n}\r\n\r\nexport interface Smart_scale_pre_app_district_review_questions {\r\n    vtrans_need?: number | undefined;\r\n    has_eligibility?: boolean | undefined;\r\n    has_readiness?: boolean | undefined;\r\n}\r\n\r\nexport interface Smart_scale_pre_app_co_validation_questions {\r\n    vtrans_need?: number | undefined;\r\n    vtrans_comments?: string | undefined;\r\n    has_eligibility?: boolean | undefined;\r\n    has_eligibility_comments?: string | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    has_readiness_comments?: string | undefined;\r\n    has_conditions?: boolean | undefined;\r\n    has_conditions_comments?: string | undefined;\r\n}\r\n\r\nexport interface Smart_scale_oipi_validation_questions_fy22 {\r\n    vtrans_need?: number | undefined;\r\n}\r\n\r\nexport interface Smart_scale_mmwg_review_fy22_questions {\r\n    vtrans_need?: number | undefined;\r\n}\r\n\r\nexport interface Smart_scale_full_app_district_review_fy22_questions {\r\n    has_eligibility?: boolean | undefined;\r\n    has_readiness?: boolean | undefined;\r\n}\r\n\r\nexport interface Smart_scale_full_app_co_validation_fy22_questions {\r\n}\r\n\r\nexport interface Smart_scale_ewg_review_fy22_questions {\r\n}\r\n\r\nexport interface Pre_scoping_app_district_review_fy22_questions {\r\n    has_eligibility?: boolean | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    has_conditions?: boolean | undefined;\r\n    risk_level?: number | undefined;\r\n}\r\n\r\nexport interface Pre_scoping_app_district_validation_fy22_questions {\r\n    has_eligibility?: boolean | undefined;\r\n    has_readiness?: boolean | undefined;\r\n}\r\n\r\nexport interface Pre_scoping_app_co_validation_fy22_questions {\r\n    has_eligibility?: boolean | undefined;\r\n    has_readiness?: boolean | undefined;\r\n}\r\n\r\nexport interface Smart_scale_pre_app_district_review_fy24_questions {\r\n    vtrans_need?: number | undefined;\r\n    vtrans_comments?: string | undefined;\r\n    has_eligibility?: boolean | undefined;\r\n    has_eligibility_comments?: string | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    has_readiness_comments?: string | undefined;\r\n}\r\n\r\nexport interface Smart_scale_pre_app_co_validation_fy24_questions {\r\n    vtrans_need?: number | undefined;\r\n    vtrans_comments?: string | undefined;\r\n    has_eligibility?: boolean | undefined;\r\n    has_eligibility_comments?: string | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    has_readiness_comments?: string | undefined;\r\n    has_conditions?: boolean | undefined;\r\n    has_conditions_comments?: string | undefined;\r\n}\r\n\r\nexport interface Smart_scale_full_app_district_screening_fy24_questions {\r\n    vtrans_need_coss?: boolean | undefined;\r\n    vtrans_need_rn?: boolean | undefined;\r\n    vtrans_need_uda?: boolean | undefined;\r\n    vtrans_need_safety?: boolean | undefined;\r\n    has_eligibility?: boolean | undefined;\r\n    has_readiness?: boolean | undefined;\r\n    complete_reasonable_accurate?: boolean | undefined;\r\n}\r\n\r\nexport interface Smart_scale_full_app_co_screening_fy24_questions {\r\n    vtrans_need_coss?: boolean | undefined;\r\n    vtrans_need_rn?: boolean | undefined;\r\n    vtrans_need_uda?: boolean | undefined;\r\n    vtrans_need_safety?: boolean | undefined;\r\n    has_eligibility?: boolean | undefined;\r\n    has_readiness?: boolean | undefined;\r\n}\r\n\r\nexport interface Smart_scale_full_app_10_percent_screening_fy24_questions {\r\n}\r\n\r\nexport interface Smart_scale_full_app_ewg_review_fy24_questions {\r\n}\r\n\r\nexport interface ScreeningEventsViewModel extends validation_event {\r\n    appid?: string | undefined;\r\n    is_approved?: boolean | undefined;\r\n}\r\n\r\nexport interface GridResultsOfSyipRecordGridItem {\r\n    Total: number;\r\n    StartRow: number;\r\n    EndRow: number;\r\n    Data?: SyipRecordGridItem[] | undefined;\r\n}\r\n\r\nexport interface SyipRecordGridItem {\r\n    upc?: string | undefined;\r\n    district?: string | undefined;\r\n    administered_by_desc?: string | undefined;\r\n    rns_route_common_nm?: string | undefined;\r\n    description?: string | undefined;\r\n    jurisdiction_desc?: string | undefined;\r\n    program?: string | undefined;\r\n    is_mapping_confirmed?: boolean | undefined;\r\n    updated_on?: Date | undefined;\r\n}\r\n\r\nexport interface GetSyipRecordsRequest {\r\n    Filters?: Syip_record | undefined;\r\n    StartRow: number;\r\n    EndRow: number;\r\n    Sort?: GridSortItem[] | undefined;\r\n}\r\n\r\nexport interface Syip_record {\r\n    upc?: string | undefined;\r\n    portal_app_id?: string | undefined;\r\n    project_area_shape?: string | undefined;\r\n    first_imported_on: Date;\r\n    last_imported_on: Date;\r\n    updated_on?: Date | undefined;\r\n    updated_by?: number | undefined;\r\n    is_portal_mapping_imported: boolean;\r\n    is_archived: boolean;\r\n    intersected_district?: Intersected_district[] | undefined;\r\n    intersected_fc?: Intersected_fc[] | undefined;\r\n    intersected_jurisdiction?: Intersected_jurisdiction[] | undefined;\r\n    intersected_mpo?: Intersected_mpo[] | undefined;\r\n    intersected_pdc?: Intersected_pdc[] | undefined;\r\n    selected_road?: Selected_road[] | undefined;\r\n    syip_record_data?: Syip_record_data | undefined;\r\n}\r\n\r\nexport interface Intersected_district {\r\n    id: number;\r\n    upc?: string | undefined;\r\n    CONST_DIST_NAME?: string | undefined;\r\n    CONST_DIST_NO?: string | undefined;\r\n    upcNavigation?: Syip_record | undefined;\r\n}\r\n\r\nexport interface Intersected_fc {\r\n    id: number;\r\n    upc?: string | undefined;\r\n    STATE_FUNC_NAME?: string | undefined;\r\n    upcNavigation?: Syip_record | undefined;\r\n}\r\n\r\nexport interface Intersected_jurisdiction {\r\n    id: number;\r\n    upc?: string | undefined;\r\n    JURIS_NO?: string | undefined;\r\n    NAMELSAD?: string | undefined;\r\n    upcNavigation?: Syip_record | undefined;\r\n}\r\n\r\nexport interface Intersected_mpo {\r\n    id: number;\r\n    upc?: string | undefined;\r\n    MPO_ID?: string | undefined;\r\n    MPO_NAME?: string | undefined;\r\n    upcNavigation?: Syip_record | undefined;\r\n}\r\n\r\nexport interface Intersected_pdc {\r\n    id: number;\r\n    upc?: string | undefined;\r\n    PLAN_DIST_NAME?: string | undefined;\r\n    PLAN_DIST_NO?: string | undefined;\r\n    upcNavigation?: Syip_record | undefined;\r\n}\r\n\r\nexport interface Selected_road {\r\n    id: number;\r\n    upc?: string | undefined;\r\n    FROM_JURISDICTION_NM?: string | undefined;\r\n    MASTER_RTE_COMMON_NM?: string | undefined;\r\n    OBJECTID?: string | undefined;\r\n    RTE_CATEGORY_name?: string | undefined;\r\n    RTE_COMMON_NM?: string | undefined;\r\n    RTE_NBR?: string | undefined;\r\n    RTE_NM?: string | undefined;\r\n    shape?: string | undefined;\r\n    TO_JURISDICTION_NM?: string | undefined;\r\n    TRANSPORT_EDGE_FROM_MSR?: string | undefined;\r\n    TRANSPORT_EDGE_ID?: string | undefined;\r\n    TRANSPORT_EDGE_TO_MSR?: string | undefined;\r\n    TRANSPORT_JUNCTION_FROM_ID?: string | undefined;\r\n    TRANSPORT_JUNCTION_TO_ID?: string | undefined;\r\n    upcNavigation?: Syip_record | undefined;\r\n}\r\n\r\nexport interface Syip_record_data {\r\n    upc?: string | undefined;\r\n    district_code_desc?: string | undefined;\r\n    state_highway_desc?: string | undefined;\r\n    limits_from?: string | undefined;\r\n    limits_to?: string | undefined;\r\n    street_name?: string | undefined;\r\n    pe_start_date?: Date | undefined;\r\n    cn_start_date?: Date | undefined;\r\n    cn_end_date?: Date | undefined;\r\n    rw_start_date?: Date | undefined;\r\n    mpo_desc?: string | undefined;\r\n    pdc_desc?: string | undefined;\r\n    scope_of_work_desc?: string | undefined;\r\n    federal_eligibility_desc?: string | undefined;\r\n    administered_by_desc?: string | undefined;\r\n    fms_pe_expend_sum?: string | undefined;\r\n    fms_rw_expend_sum?: string | undefined;\r\n    fms_cn_expend_sum?: string | undefined;\r\n    total_expend?: string | undefined;\r\n    route?: string | undefined;\r\n    project_purpose?: string | undefined;\r\n    description?: string | undefined;\r\n    jurisdiction_desc?: string | undefined;\r\n    sb_structures_present?: string | undefined;\r\n    sb_no_of_bridges?: string | undefined;\r\n    project_manager?: string | undefined;\r\n    total_allocations_current?: string | undefined;\r\n    pool_prj_status_dsc?: string | undefined;\r\n    rns_route_common_nm?: string | undefined;\r\n    accomplishment_desc?: string | undefined;\r\n    functional_class?: string | undefined;\r\n    federal_highway?: string | undefined;\r\n    current_pe_estimate?: string | undefined;\r\n    current_rw_estimate?: string | undefined;\r\n    current_cn_estimate?: string | undefined;\r\n    total_est_current?: string | undefined;\r\n    current_syp_date?: Date | undefined;\r\n    current_year?: string | undefined;\r\n    portal_app_id?: string | undefined;\r\n    program?: string | undefined;\r\n    upcNavigation?: Syip_record | undefined;\r\n}\r\n\r\nexport interface GridSortItem {\r\n    colId?: string | undefined;\r\n    asc: boolean;\r\n}\r\n\r\nexport interface SyipFilters {\r\n    district_code_desc?: string[] | undefined;\r\n    mpo_desc?: string[] | undefined;\r\n    federal_eligibility_desc?: string[] | undefined;\r\n    administered_by_desc?: string[] | undefined;\r\n    jurisdiction_desc?: string[] | undefined;\r\n    pool_prj_status_dsc?: string[] | undefined;\r\n    program?: string[] | undefined;\r\n}\r\n\r\nexport interface SyipRecordForView {\r\n    syipRecord?: Syip_record | undefined;\r\n    canEditMap: boolean;\r\n}\r\n\r\nexport interface SyipUPCFilterItem {\r\n    upc?: string | undefined;\r\n    description?: string | undefined;\r\n    portal_app_id?: string | undefined;\r\n}\r\n\r\n/** View model used when only needed to know the allowed roles for a specific org - used when changing a user's org */\r\nexport interface UserAllowedRolesViewModel {\r\n    system_role_members?: SystemRoleMemberViewModel[] | undefined;\r\n    district_role_members?: DistrictRoleViewModel[] | undefined;\r\n    programs?: ProgramRoleViewModel[] | undefined;\r\n}\r\n\r\nexport interface AdminTypeUserViewModel {\r\n    UserViewModel?: UserViewModel | undefined;\r\n    AdminType: AdminType;\r\n}\r\n\r\nexport interface GridResultOfUserGridViewModel {\r\n    TotalCount: number;\r\n    TotalPages: number;\r\n    Results?: UserGridViewModel[] | undefined;\r\n}\r\n\r\nexport interface UserGridViewModel {\r\n    emailaddress?: string | undefined;\r\n    firstname?: string | undefined;\r\n    lastname?: string | undefined;\r\n    fullname?: string | undefined;\r\n    orgname?: string | undefined;\r\n    uid: number;\r\n    isarchived: boolean;\r\n    archived?: string | undefined;\r\n}\r\n\r\nexport interface Headers {\r\n\r\n    [key: string]: any;\r\n}\r\n\r\nexport interface FileParameter {\r\n    data: any;\r\n    fileName: string;\r\n}\r\n\r\nexport interface FileResponse {\r\n    data: Blob;\r\n    status: number;\r\n    fileName?: string;\r\n    headers?: { [name: string]: any };\r\n}\r\n\r\nexport class SwaggerException extends Error {\r\n    override message: string;\r\n    status: number;\r\n    response: string;\r\n    headers: { [key: string]: any; };\r\n    result: any;\r\n\r\n    constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\r\n        super();\r\n\r\n        this.message = message;\r\n        this.status = status;\r\n        this.response = response;\r\n        this.headers = headers;\r\n        this.result = result;\r\n    }\r\n\r\n    protected isSwaggerException = true;\r\n\r\n    static isSwaggerException(obj: any): obj is SwaggerException {\r\n        return obj.isSwaggerException === true;\r\n    }\r\n}\r\n\r\nfunction throwException(q: ng.IQService, message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): ng.IPromise {\r\n    if (result !== null && result !== undefined)\r\n        return q.reject(result);\r\n    else\r\n        return q.reject(new SwaggerException(message, status, response, headers, null));\r\n}\r\n\r\nfunction blobToText(blob: Blob, q: ng.IQService): ng.IPromise {\r\n    return new q((resolve) => {\r\n        let reader = new FileReader();\r\n        reader.onload = event => resolve((event.target as any).result);\r\n        reader.readAsText(blob);\r\n    });\r\n}","import { LazyLoadResult, Ng1StateDeclaration, Transition } from '@uirouter/angularjs';\r\nimport {SyipModule} from \"./syip/syip.module\";\r\n\r\n/**\r\n * Pre-registration of all top-level lazy-loaded modules.\r\n * Corresponds to folders under /app/.\r\n * The 'import' and 'webpackChunkName' are processed by Webpack to split the module bundle.\r\n * In the route visualizer in the app debug tools, these appear as dashed outline circles, and fill in when navigated to.\r\n */\r\nexport const lazyStates: Ng1StateDeclaration[] = [\r\n\t{\r\n\t\tname: 'about.**',\r\n\t\turl: '/about',\r\n\t\tlazyLoad: async function(transition: Transition) {\r\n\t\t\tconst $ocLazyLoad = transition.injector().get('$ocLazyLoad');\r\n\t\t\tconst mod = await import(/* webpackChunkName: \"about\" */ './about/about.module');\r\n\t\t\treturn $ocLazyLoad.load(mod.AboutModule) as LazyLoadResult;\r\n\t\t}\r\n\t},\r\n\t//{\r\n\t//\tname: 'error.**',\r\n\t//\turl: '/error',\r\n\t//\tlazyLoad: async function(transition: Transition) {\r\n\t//\t\tconst $ocLazyLoad = transition.injector().get('$ocLazyLoad');\r\n\t//\t\tconst mod = await import(/* webpackChunkName: \"error\" */ './error/error.module');\r\n\t//\t\treturn $ocLazyLoad.load(mod.ErrorModule) as LazyLoadResult;\r\n\t//\t}\r\n\t//},\r\n\t{\r\n\t\tname: 'nvap.**',\r\n\t\turl: '/nvap',\r\n\t\tlazyLoad: async function(transition: Transition) {\r\n\t\t\tconst $ocLazyLoad = transition.injector().get('$ocLazyLoad');\r\n\t\t\tconst mod = await import(/* webpackChunkName: \"nvap\" */ './nvap/nvap.module');\r\n\t\t\treturn $ocLazyLoad.load(mod.NvapModule) as LazyLoadResult;\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tname: 'forms.**',\r\n\t\turl: '/forms',\r\n\t\tlazyLoad: async function(transition: Transition) {\r\n\t\t\tconst $ocLazyLoad = transition.injector().get('$ocLazyLoad');\r\n\t\t\tconst mod = await import(/* webpackChunkName: \"forms\" */ './forms/app-forms.module');\r\n\t\t\treturn $ocLazyLoad.load(mod.AppsFormsModule) as LazyLoadResult;\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tname: 'admin.**',\r\n\t\turl: '/admin',\r\n\t\tlazyLoad: async function(transition: Transition) {\r\n\t\t\tconst $ocLazyLoad = transition.injector().get('$ocLazyLoad');\r\n\t\t\tconst mod = await import(/* webpackChunkName: \"admin\" */ './admin/admin.module');\r\n\t\t\treturn $ocLazyLoad.load(mod.AdminModule) as LazyLoadResult;\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tname: 'dashboard.**',\r\n\t\turl: '/dashboard',\r\n\t\tlazyLoad: async function(transition: Transition) {\r\n\t\t\tconst $ocLazyLoad = transition.injector().get('$ocLazyLoad');\r\n\t\t\tconst mod = await import(/* webpackChunkName: \"dashboard\" */ './dashboard/dashboard.module');\r\n\t\t\treturn $ocLazyLoad.load(mod.DashboardModule) as LazyLoadResult;\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tname: 'legacy.**',\r\n\t\turl: '/legacy',\r\n\t\tlazyLoad: async function(transition: Transition) {\r\n\t\t\tconst $ocLazyLoad = transition.injector().get('$ocLazyLoad');\r\n\t\t\tconst mod = await import(/* webpackChunkName: \"legacy\" */ './legacy/legacy.module');\r\n\t\t\treturn $ocLazyLoad.load(mod.LegacyModule) as LazyLoadResult;\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tname: 'public.**',\r\n\t\turl: '/public',\r\n\t\tlazyLoad: async function(transition: Transition) {\r\n\t\t\tconst $ocLazyLoad = transition.injector().get('$ocLazyLoad');\r\n\t\t\tconst mod = await import(/* webpackChunkName: \"public\" */ './public/public.module');\r\n\t\t\treturn $ocLazyLoad.load(mod.PublicModule) as LazyLoadResult;\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tname: 'account.**',\r\n\t\turl: '/account',\r\n\t\tlazyLoad: async function(transition: Transition) {\r\n\t\t\tconst $ocLazyLoad = transition.injector().get('$ocLazyLoad');\r\n\t\t\tconst mod = await import(/* webpackChunkName: \"account\" */ './account/account.module');\r\n\t\t\treturn $ocLazyLoad.load(mod.AccountModule) as LazyLoadResult;\r\n\t\t}\r\n\t},\r\n\t//{\r\n\t//\tname: 'home.**',\r\n\t//\turl: '/home',\r\n\t//\tlazyLoad: async function(transition: Transition) {\r\n\t//\t\tconst $ocLazyLoad = transition.injector().get('$ocLazyLoad');\r\n\t//\t\tconst mod = await import(/* webpackChunkName: \"home\" */ './home/home.module');\r\n\t//\t\treturn $ocLazyLoad.load(mod.HomeModule) as LazyLoadResult;\r\n\t//\t}\r\n\t//},\r\n\t{\r\n\t\tname: 'maintenance.**',\r\n\t\turl: '/maintenance',\r\n\t\tlazyLoad: async function(transition: Transition) {\r\n\t\t\tconst $ocLazyLoad = transition.injector().get('$ocLazyLoad');\r\n\t\t\tconst mod = await import(/* webpackChunkName: \"maintenance\" */ './maintenance/maintenance.module');\r\n\t\t\treturn $ocLazyLoad.load(mod.MaintenanceModule) as LazyLoadResult;\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tname: 'syip.**',\r\n\t\turl: '/syip',\r\n\t\tlazyLoad: async function(transition: Transition) {\r\n\t\t\tconst $ocLazyLoad = transition.injector().get('$ocLazyLoad');\r\n\t\t\tconst mod = await import(/* webpackChunkName: \"syip\" */ './syip/syip.module');\r\n\t\t\treturn $ocLazyLoad.load(mod.SyipModule) as LazyLoadResult;\r\n\t\t}\r\n\t},\r\n];\r\n","import { angularCopy } from 'angular-utilities';\r\nimport type { AppRootScope } from 'app/interfaces/AppRootScope';\r\nimport { FormTransitionParams } from \"app/forms/interfaces/FormTransitionParams\";\r\nimport { StateService, StateParams, TransitionService, MatchResult, TransitionOptions, Transition, StateRegistry } from '@uirouter/core';\r\nimport { Ng1StateDeclaration, StateProvider, UrlRouter, UrlRouterProvider, UrlService } from '@uirouter/angularjs';\r\nimport { ProgramIds, FormIds } from 'app/api';\r\nimport { AuthService, ProgramApplicationService } from 'app/shared/services';\r\nimport { parseFormIdFromAppId } from 'app/shared/util/parseFormIdFromAppId';\r\nimport { lazyStates } from './lazy-states';\r\nimport { registerTheseStates } from './forms-system/util/registerTheseStates';\r\nimport { homeLoggedInStateName, homePublicStateName } from './home/home.state';\r\nimport { LegacyFidRouteDictionary as fidRouteDictionary } from './shared/LegacyFidRouteDictionary';\r\n\r\nexport const newFormsMap: NewFormsMapType = {\r\n\t[FormIds.Pre_Scoping_2026_Application]: { programId: ProgramIds.Pre_Scoping, formName: 'form' },\r\n\t[FormIds.TA_Set_Aside_2023_Pre_Application]: { programId: ProgramIds.TA_Set_Aside, intakeVersion: 2023, formName: 'pre' },\r\n\t[FormIds.TA_Set_Aside_2023_Application]: { programId: ProgramIds.TA_Set_Aside, intakeVersion: 2023, formName: 'full' },\r\n\t[FormIds.Revenue_Sharing_2023_Pre_Application]: { programId: ProgramIds.Revenue_Sharing, intakeVersion: 2023, formName: 'pre' },\r\n\t[FormIds.Revenue_Sharing_2023_Application]: { programId: ProgramIds.Revenue_Sharing, intakeVersion: 2023, formName: 'full' },\r\n\t[FormIds.State_of_Good_Repair_Bridge_2023_Pre_Application]: { programId: ProgramIds.State_of_Good_Repair_Bridge, intakeVersion: 2023, formName: 'pre' },\r\n\t[FormIds.State_of_Good_Repair_Bridge_2023_Application]: { programId: ProgramIds.State_of_Good_Repair_Bridge, intakeVersion: 2023, formName: 'full' },\r\n\t[FormIds.State_of_Good_Repair_Pavement_2023_Application]: { programId: ProgramIds.State_of_Good_Repair_Pavement, intakeVersion: 2023, formName: 'full' },\r\n\t[FormIds.SMART_SCALE_2024_Pre_Application]: { programId: ProgramIds.SMART_SCALE, intakeVersion: 2024, formName: 'pre' },\r\n\t[FormIds.SMART_SCALE_2024_Application]: { programId: ProgramIds.SMART_SCALE, intakeVersion: 2024, formName: 'full' },\r\n\t[FormIds.VHSIP_2024_Application]: { programId: ProgramIds.VHSIP, intakeVersion: 2024, formName: 'full' },\r\n\t[FormIds.State_of_Good_Repair_Bridge_2024_Pre_Application]: { programId: ProgramIds.State_of_Good_Repair_Bridge, intakeVersion: 2024, formName: 'pre' },\r\n\t[FormIds.State_of_Good_Repair_Bridge_2024_Application]: { programId: ProgramIds.State_of_Good_Repair_Bridge, intakeVersion: 2024, formName: 'full' },\r\n\t[FormIds.State_of_Good_Repair_Bridge_2026_Application]: { programId: ProgramIds.State_of_Good_Repair_Bridge, intakeVersion: 2026, formName: 'full' },\r\n\t[FormIds.State_of_Good_Repair_Pavement_2024_Application] : { programId: ProgramIds.State_of_Good_Repair_Pavement, intakeVersion: 2024, formName: 'full'},\r\n\t[FormIds.TA_Set_Aside_2025_Pre_Application]: { programId: ProgramIds.TA_Set_Aside, intakeVersion: 2025, formName: 'pre' },\r\n\t[FormIds.TA_Set_Aside_2025_Application]: { programId: ProgramIds.TA_Set_Aside, intakeVersion: 2025, formName: 'full' },\r\n\t[FormIds.Revenue_Sharing_2025_Pre_Application]: { programId: ProgramIds.Revenue_Sharing, intakeVersion: 2025, formName: 'pre' },\r\n\t[FormIds.Revenue_Sharing_2025_Application]: { programId: ProgramIds.Revenue_Sharing, intakeVersion: 2025, formName: 'full' },\r\n\t[FormIds.CAM_2026_Application]: { programId: ProgramIds.CAM, formName: 'form' },\r\n\t[FormIds.State_of_Good_Repair_Pavement_2025_Application] : { programId: ProgramIds.State_of_Good_Repair_Pavement, intakeVersion: 2025, formName: 'full'},\r\n\t[FormIds.VHSIP_2025_Application] : { programId: ProgramIds.VHSIP, intakeVersion: 2025, formName: 'full'},\r\n\t[FormIds.SMART_SCALE_2026_Pre_Application]: { programId: ProgramIds.SMART_SCALE, intakeVersion: 2026, formName: 'pre' },\r\n\t[FormIds.SMART_SCALE_2026_Application]: { programId: ProgramIds.SMART_SCALE, intakeVersion: 2026, formName: 'full' },\r\n\t[FormIds.VHSIP_2026_Application] : { programId: ProgramIds.VHSIP, intakeVersion: 2026, formName: 'full'},\r\n\t[FormIds.TA_Set_Aside_2027_Pre_Application]: { programId: ProgramIds.TA_Set_Aside, intakeVersion: 2027, formName: 'pre' },\r\n\t[FormIds.TA_Set_Aside_2027_Application]: { programId: ProgramIds.TA_Set_Aside, intakeVersion: 2027, formName: 'full' },\r\n\t[FormIds.Revenue_Sharing_2027_Pre_Application]: { programId: ProgramIds.Revenue_Sharing, intakeVersion: 2027, formName: 'pre' },\r\n\t[FormIds.Revenue_Sharing_2027_Application]: { programId: ProgramIds.Revenue_Sharing, intakeVersion: 2027, formName: 'full' },\r\n\t[FormIds.State_of_Good_Repair_Pavement_2026_Application]: { programId: ProgramIds.State_of_Good_Repair_Pavement, intakeVersion: 2026, formName: 'full'},\r\n};\r\n\r\nconst newProgramsMap = {\r\n\t[ProgramIds.Pre_Scoping]: 'ps',\r\n\t[ProgramIds.TA_Set_Aside]: 'ta',\r\n\t[ProgramIds.Revenue_Sharing]: 'rs',\r\n\t[ProgramIds.SMART_SCALE]: 'ss',\r\n\t[ProgramIds.State_of_Good_Repair_Bridge]: 'sgrb',\r\n\t[ProgramIds.State_of_Good_Repair_Pavement]: 'sgrp',\r\n\t[ProgramIds.VHSIP]: 'hsip',\r\n\t[ProgramIds.CAM]: 'cam'\r\n};\r\n\r\nexport function configAppRoutes(appModule: ng.IModule) {\r\n    appModule\r\n        //make sure to update this when new forms are added        \r\n        .config(['$locationProvider', function ($locationProvider: ng.ILocationProvider) {\r\n            // default route prefix is now hashbang '#!'\r\n            // TODO supporting #! will require some of the following:\r\n            // * rewrite all hard links into the app to use #!\r\n            // * implement server-side redirect from #/ to /#!/ for bookmarks and saved links (would be 301 Moved Permanently)\r\n            // * implement client-side redirect from #/ to /#!/ before the router starts a match\r\n\r\n            // client-side redirect: if (window.location.hash.indexOf('#/') === 0) { window.location.hash = '#!/' + window.location.hash.substr(2); } // redirect #/ to #!/ before AngularJS loads. https://github.com/angular/angular.js/issues/15496#issuecomment-339646634\r\n\r\n            // revert to old /#/ style route prefix. default hashPrefix is '!'.\r\n            $locationProvider.hashPrefix('');\r\n        }])\r\n        .config([\r\n            \"$stateProvider\", \"$urlRouterProvider\", \"$transitionsProvider\", \"$stateRegistryProvider\",\r\n            configRoutes\r\n\t\t])\r\n\t\t.config(['$urlServiceProvider', ($urlService: UrlService) => {\r\n\t\t\t// $urlService - All URL related public APIs - https://ui-router.github.io/ng1/docs/1.0.0/modules/injectables.html#_urlservice\r\n\t\t\t// Allow optional trailing slashes to match routes globally: https://ui-router.github.io/ng1/docs/1.0.24/classes/url.urlconfig.html#strictmode\r\n\t\t\t$urlService.config.strictMode(false);\r\n\t\t}]);\r\n\r\n\t// Check all transitions for `data.access` and `data.authorize`.\r\n\t// 'authorize' is used on some dashboard and admin routes. 'access' is not used anywhere.\r\n\t// There is another redirect on http 401/403 via AuthInterceptor service.\r\n\tappModule\r\n\t\t.run(['$rootScope', '$state', 'authService', function ($rootScope: AppRootScope, $state: StateService, authService: AuthService) {\r\n\t\t\t$rootScope.$on('$stateChangeStart', function (event, toState: StateService, toParams: StateParams, fromState: StateService, fromParams: StateParams, options: TransitionOptions, $transition$: Transition) {\r\n\t\t\t\tconst redirectOptions = {\r\n\t\t\t\t\treload: true,\r\n\t\t\t\t};\r\n\t\t\t\tconst toTx = $transition$.to();\r\n\t\t\t\tconst needsAccess = toTx && toTx.data && toTx.data.access;\r\n\t\t\t\tif (needsAccess) {\r\n\t\t\t\t\tif (!$rootScope.userHasAccess(needsAccess)) {\r\n\t\t\t\t\t\t$state.transitionTo('error.access-denied', null, redirectOptions);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst needsAuthorize = toTx && toTx.data && toTx.data.authorize;\r\n\t\t\t\tif (needsAuthorize && !(authService && authService.loggedIn && authService.user)) {\r\n\t\t\t\t\t$state.transitionTo(\"home\", null, redirectOptions);\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}]);\r\n}\r\n\r\nfunction configRoutes($stateProvider: StateProvider, $urlRouterProvider: UrlRouterProvider, $transitionsProvider: TransitionService, $stateRegistry: StateRegistry, $urlRouter: UrlRouter) {\r\n\t$urlRouterProvider\r\n\t\t// send any root urls to the home component\r\n\t\t.when(\"\", ['$state', '$match', ($state: StateService) => $state.go('home')])\r\n\t\t.when(\"/\", ['$state', '$match', ($state: StateService ) => $state.go('home')])\r\n\t\t.when(\"/#\", ['$state', '$match', ($state: StateService) => $state.go('home')])\r\n\t\t.when(\"/public/applications/:id/\", ['$state', '$match', function ($state: StateService, $match: {[key: string]: string}) {\r\n\t\t\tconsole.debug(`applications url match object:`, $match);\r\n\t\t\tconst { id } = $match;\r\n\t\t\t$state.go('public.app', { id }, { supercede: true }); // supercede cancels the 1st transition and starts a 2nd one. otherwise the 1st transition will still fall through to our 404 page.\r\n\t\t}])\r\n\t\t.when(\"/applications/:year/:program/:mode/:id\", ['$state', '$match', ($state: StateService, $match: {[key: string]: string}) => {\r\n\t\t\tconsole.debug(`applications url match object:`, $match);\r\n\t\t\tconst { id } = $match;\r\n\t\t\t$state.go('public.app', { id }, { supercede: true }); // supercede cancels the 1st transition and starts a 2nd one. otherwise the 1st transition will still fall through to our 404 page.\r\n\t\t}])\r\n\t\t.when(\"/applications/:id/\", ['$state', '$match', function ($state: StateService, $match: {[key: string]: string}) {\r\n\t\t\tconsole.debug(`applications url match object:`, $match);\r\n\t\t\tconst { id } = $match;\r\n\t\t\t$state.go('root.app', { id }, { supercede: true }); // supercede cancels the 1st transition and starts a 2nd one. otherwise the 1st transition will still fall through to our 404 page.\r\n\t\t}])\r\n\t\t.otherwise(function ($injector) {\r\n\t\t\t$injector.invoke([\r\n\t\t\t\t\"$state\", function ($state: StateService) {\r\n\t\t\t\t\t$state.go(\"error.not-found\");\r\n\t\t\t\t}\r\n\t\t\t]);\r\n\t\t});\r\n\r\n    //catch all routes to root.app. if the required params weren't passed, make a quick call to get them\r\n    $transitionsProvider.onBefore({ to: 'root.app' }, (trans) => newFormReRouter(trans, false));\r\n\r\n    //redirect public apps to correct route for new form system\r\n    $transitionsProvider.onBefore({ to: 'public.app' }, (trans) => newFormReRouter(trans, true));\r\n\r\n\t$transitionsProvider.onBefore({ to: 'home' }, trans => homeReRouter(trans));\r\n\r\n\tregisterTheseStates(lazyStates, $stateRegistry);\r\n\r\n\tregisterTheseStates([\r\n\t\t{\r\n\t\t\t// old root state.\r\n\t\t\tname: 'root',\r\n\t\t\tabstract: true,\r\n\t\t},\r\n\t\t{\r\n\t\t\t// lots of links use root.app to go to old or new apps. this needs to be registered as a state even tho an onBefore trigger will redirect to either 'forms' or 'legacy' routes.\r\n\t\t\tname: 'root.app',\r\n\t\t\tparams: {\r\n\t\t\t\tid: null,\r\n\t\t\t\tyear: null,\r\n\t\t\t\tprogram: null,\r\n\t\t\t},\r\n\t\t},\r\n\t\t{\r\n\t\t\tname: 'public.app',\r\n\t\t\tparams: {\r\n\t\t\t\tid: null,\r\n\t\t\t\tyear: null,\r\n\t\t\t\tprogram: null,\r\n\t\t\t},\r\n\t\t},\r\n\t], $stateRegistry);\r\n\r\n\t// register routes for debugging error handling.\r\n\tregisterTheseStates(dummyStates, $stateRegistry);\r\n}\r\n\r\nfunction homeReRouter(trans: Transition) {\r\n\r\n\t//const params = Object.assign({}, trans.params()) as StateParams;\r\n\tconst authService = trans.injector().get(AuthService.angularName) as AuthService;\r\n\r\n\tconst isLoggedIn = !!authService.user;\r\n\tconst targetStateName = isLoggedIn\r\n\t\t? homeLoggedInStateName\r\n\t\t: homePublicStateName;\r\n\r\n\t//console.debug(`$#$#$$ home rerrouter isloggedin ${isLoggedIn} target ${targetStateName}`)\r\n\r\n\treturn trans.router.stateService.target(targetStateName, {});\r\n}\r\n\r\nfunction newFormReRouter(trans: Transition, isPublic: boolean) {\r\n\tconst params = angularCopy(trans.params()) as StateParams;\r\n\tconst $state = trans.injector().get(\"$state\") as StateService;\r\n\tconst options = trans.options() as TransitionOptions;\r\n\r\n\tconst legacyTarget = isPublic\r\n\t\t? 'legacy.public-app'\r\n\t\t: 'legacy.app';\r\n\r\n\ttry {\r\n\t\tif (typeof params.id === 'undefined' || params.id === null) {\r\n\t\t\tthrow new Error(\"Params must contain at minimum an appid to route to root.app\");\r\n\t\t}\r\n\r\n\t\t// switch between different components/routes/params depending on the program and form.\r\n\t\tconst appid: string = params?.id;\r\n\t\tconst fid = parseFormIdFromAppId(appid);\r\n\t\t//console.debug(`root.app appid ${appid} fid ${fid}`);\r\n\r\n\t\t// go to new forms system if applicable.\r\n\t\tconst newForm = fid && newFormsMap[fid];\r\n\t\tif (newForm) {\r\n\t\t\tconst newStateName = newFormRouteLocator(fid);\r\n\r\n\t\t\tconst formsParams: FormTransitionParams = {\r\n\t\t\t\tpid: newForm.programId,\r\n\t\t\t\tfid,\r\n\t\t\t\tappid: params.id,\r\n\t\t\t};\r\n\r\n\t\t\tif (params.action !== undefined && params.action !== null) {\r\n\t\t\t\tformsParams['action'] = params.action;\r\n\t\t\t}\r\n\r\n\t\t\t// redirect into new forms routes.\r\n\t\t\treturn trans.router.stateService.target(newStateName, formsParams, options);\r\n\t\t}\r\n\r\n\t\t// other forms route to legacy 'root.app' module.\r\n\r\n\t\t//we don't have what we need. Get basic app info, update params and transition back to root.app\r\n\t\tif (params.year === null || params.program === null) {\r\n\t\t\ttrans.abort();\r\n\t\t\tlet programApplicationService = trans.injector().get(\"programApplicationService\") as ProgramApplicationService;\r\n\t\t\tprogramApplicationService.getApplicationInfo(params.id).then((data) => {\r\n\t\t\t\tparams.year = data.FiscalYear;\r\n\t\t\t\tparams.program = fidRouteDictionary[data.Fid];\r\n\t\t\t\t$state.go(legacyTarget, params);\r\n\t\t\t});\r\n\t\t}\r\n\t\telse {\r\n\t\t\t//we have all our params. Proceed to root.app\r\n\t\t\treturn trans.router.stateService.target(legacyTarget, params, options);\r\n\t\t}\r\n\t}\r\n\tcatch (e) {\r\n\t\ttrans.abort();\r\n\t\tconsole.error(e);\r\n\t\t$state.go(\"error.access-denied\");\r\n\t}\r\n}\r\n\r\n/** With a given fid, determine the router path. Only works for new forms system forms. */\r\nfunction newFormRouteLocator(fid: number) {\r\n\t//console.debug(`newFormRouteLocator for fid=${fid}`);\r\n\tconst f = newFormsMap[fid];\r\n\tconst prog = newProgramsMap[f.programId];\r\n\tconst formVer = f.intakeVersion?.toString();\r\n\tconst formName = f.formName;\r\n\t// compose a path to the target form's router location.\r\n\tconst pathParts: string[] = [prog, formVer, formName];\r\n\tconst pathJoined = pathParts.filter(x => x?.length).join('.');\r\n\tconst newStateName = `forms.programs.${pathJoined}`;\r\n\tconsole.debug(`newFormRouteLocator fid=${fid} @ ${newStateName}`);\r\n\treturn newStateName;\r\n}\r\n\r\n/**\r\n * these states correspond to test api endpoints that always return a certain response code.\r\n * these are for testing frontend route interceptors or other magic behavior.\r\n * ex: navigate to /#/dummy/401 to generate a \"401 Unauthorized\" and see if the client properly logs you out.\r\n */\r\nconst dummyStates: Ng1StateDeclaration[] = [\r\n\t{\r\n\t\tname: 'root.dummy',\r\n\t\tabstract: true,\r\n\t\turl: \"/dummy\",\r\n\t\ttemplate: \"

    dummy

    \",\r\n\t},\r\n\t{\r\n\t\tname: 'root.dummy.ok',\r\n\t\turl: \"/ok\",\r\n\t\ttemplate: \"

    ok

    \",\r\n\t\tresolve: {\r\n\t\t\tresult: ['$http', async ($http: ng.IHttpService) => $http.get('/api/dummy/ok')],\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tname: 'root.dummy.401',\r\n\t\turl: \"/401\",\r\n\t\ttemplate: \"

    401

    \",\r\n\t\tresolve: {\r\n\t\t\tresult: ['$http', async ($http: ng.IHttpService) => $http.get('/api/dummy/401')],\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tname: 'root.dummy.403',\r\n\t\turl: \"/403\",\r\n\t\ttemplate: \"

    403

    \",\r\n\t\tresolve: {\r\n\t\t\tresult: ['$http', async ($http: ng.IHttpService) => $http.get('/api/dummy/403')],\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tname: 'root.dummy.404',\r\n\t\turl: \"/404\",\r\n\t\ttemplate: \"

    404

    \",\r\n\t\t//template: \"

    404

    \",\r\n\t\tresolve: {\r\n\t\t\tresult: ['$http', async ($http: ng.IHttpService) => $http.get('/api/dummy/404')],\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tname: 'root.dummy.500',\r\n\t\turl: \"/500\",\r\n\t\ttemplate: \"

    500

    \",\r\n\t\tresolve: {\r\n\t\t\tresult: ['$http', async ($http: ng.IHttpService) => $http.get('/api/dummy/500')],\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tname: 'root.dummy.ex',\r\n\t\turl: \"/ex\",\r\n\t\ttemplate: \"

    ex

    \",\r\n\t\tresolve: {\r\n\t\t\tresult: ['$http', async ($http: ng.IHttpService) => $http.get('/api/dummy/ex')],\r\n\t\t}\r\n\t},\r\n];\r\n\r\ntype NewFormsMapType = {\r\n\t[key: string]: {\r\n\t\tprogramId: ProgramIds;\r\n\t\tintakeVersion?: number | string;\r\n\t\tformName?: string;\r\n\t};\r\n};\r\n","export function parseFormIdFromAppId(appid: string): number {\r\n\tif (typeof appid === 'undefined' || appid === null || !appid.length || appid.length < 3)\r\n\t\treturn;\r\n\t\r\n\tconst fidString = appid.substr(1).split('-')[0];\r\n\tconst fidNumber = +fidString;\r\n\tif (Number.isInteger(fidNumber))\r\n\t\treturn +fidString;\r\n}\r\n","import { StateService } from \"@uirouter/core\";\r\nimport { AppRootScope } from \"app/interfaces\";\r\nimport { ProgramApplicationService } from \"app/shared/services\";\r\n\r\nexport class BulkSubmitFormComponentController implements ng.IController, BulkSubmitFormComponentControllerVM {\r\n\t//#region constructor:\r\n\tstatic $inject = ['$window', ProgramApplicationService.angularName, '$state', 'Notification', '$rootScope', '$scope'];\r\n\tconstructor(\r\n\t\tprivate readonly $window: ng.IWindowService,\r\n\t\tprivate readonly programApplicationService: ProgramApplicationService,\r\n\t\tprivate readonly $state: StateService,\r\n\t\tprivate readonly Notification: ng.uiNotification.INotificationService,\r\n\t\tprivate readonly $rootScope: AppRootScope,\r\n\t\tprivate readonly $scope: ng.IScope) {\r\n\t}\r\n\t//#endregion constructor\r\n\r\n\t//#region bound from component:\r\n\toptions: BulkSubmitFormComponentControllerVM;\r\n\t//#endregion bound from component.\r\n\r\n\t//#region bound to template:\r\n\tformTitle: string = '';\r\n\tshowButton = false;\r\n\tpbMax = 0;\r\n\tpbValue = 0;\r\n\tfid: number = null;\r\n\tyear: number = null;\r\n\torgid: number = null;\r\n\tcanBulkSubmit = false;\r\n\tcanBulkUnsubmit = false;\r\n\tbuttonText: string;\r\n\tshowForm: boolean;\r\n\tbuttonSubmit: () => Promise;\r\n\t//#endregion bound to template.\r\n\r\n\t$onInit() {\r\n\t\tthis.$scope.$watch('options', () => {\r\n\t\t\tif (!this.options) {\r\n\t\t\t\tthrow 'Bad options watch';\r\n\t\t\t}\r\n\t\t\t// copy options into the controller properties.\r\n\t\t\tObject.assign(this, this.options);\r\n\t\t});\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis.showButton = false;\r\n\t\tthis.pbMax = 0;\r\n\t\tthis.pbValue = 0;\r\n\t\tthis.buttonSubmit = null;\r\n\t}\r\n\r\n\r\n\t//#region actions:\r\n\r\n\t/** click handler for \"show me\" button. Sets filters to the forms fiscal year that is currently in its intake window. */\r\n\tshowMeClickHandler() {\r\n\t\tthis.$rootScope.$broadcast(BulkSubmitFilterBroadcast, {\r\n\t\t\tfiscalYear: this.year,\r\n\t\t\tOrgId: this.orgid,\r\n\t\t});\r\n\t}\r\n\r\n\t//#endregion actions.\r\n\r\n}\r\n\r\nexport interface BulkSubmitFormComponentControllerVM {\r\n\t/** Name of the form, to distinguish multiple bulk submit instances. */\r\n\tformTitle?: string;\r\n\r\n\t/** Whether the progress bar should be showing or not */\r\n\tshowSubmitForm?: boolean;\r\n\r\n\t/** button starts hidden by default. */\r\n\tshowButton: boolean;\r\n\r\n\t/** progress bar maximum value. */\r\n\tpbMax?: number;\r\n\r\n\t/** progress bar current value. */\r\n\tpbValue?: number;\r\n\r\n\t/** target form id. */\r\n\tfid: number;\r\n\r\n\t/** target fiscal year. */\r\n\tyear?: number;\r\n\r\n\t/** target organization.orgid. */\r\n\torgid?: number;\r\n\r\n\tcanBulkSubmit?: boolean;\r\n\r\n\tcanBulkUnsubmit?: boolean;\r\n\r\n\tbuttonSubmit?: () => void;\r\n\r\n\tbuttonText?: string;\r\n\r\n}\r\n\r\nexport const BulkSubmitFilterBroadcast = 'bulk-submit-filter';\r\n","import { Ng1StateDeclaration, StateRegistry } from \"@uirouter/angularjs\";\r\n\r\n/**\r\n * Register states with ui-router.\r\n * Use inside angularjs `.config()`.\r\n **/\r\nexport function configRegisterTheseStates(states: Ng1StateDeclaration[]) {\r\n\treturn ['$stateRegistryProvider', ($stateRegistry: StateRegistry) => registerTheseStates(states, $stateRegistry)];\r\n}\r\n\r\n/**\r\n * Register states with ui-router.\r\n * Use if you already have a `$stateRegistry`.\r\n **/\r\nexport function registerTheseStates(states: Ng1StateDeclaration[], $stateRegistry: StateRegistry) {\r\n\tfor (const state of states ?? []) {\r\n\t\t$stateRegistry?.register(state);\r\n\t}\r\n}\r\n","import { ProgramIds } from \"app/api\";\r\nimport {AuthService, ProgramApplicationService} from \"../shared/services\";\r\nimport {AppRootScope} from \"../interfaces\";\r\n\r\n\r\nexport class HomeCtrl implements ng.IController {\r\n\tstatic $inject = [ProgramApplicationService.angularName, AuthService.angularName, '$rootScope'];\r\n\r\n\tnvapProgram = {\r\n\t\tname: \"NVAP\",\r\n\t\tlogo: \"images/ProgramLogos/Logo_NVAP.png\",\r\n\t\tpid: 101,//front end needs a unique pid. adding something really high to not match genuine programs\r\n\t\tgroup: 4,\r\n\t\troute: \"nvap\",\r\n\t\tformType: \"Project\"\r\n\t}\r\n\r\n\tsyipProgram = {\r\n\t\tname: 'SYIP',\r\n\t\tlogo: \"images/ProgramLogos/Logo_SYIP.png\",\r\n\t\tpid: 102,\r\n\t\tgroup: 4,\r\n\t\troute: \"syip\",\r\n\t\tformType: \"Application\",\r\n\t}\r\n\r\n\tprogramGroups = {\r\n\t\t1: [],\r\n\t\t2: [],\r\n\t\t3: [],\r\n\t\t4: [],\r\n\t}\r\n\r\n\tprogramInfo = [\r\n\t\t{\r\n\t\t\tname: \"SMART SCALE Program\",\r\n\t\t\tinfo: \"SMART SCALE is about investing limited tax dollars in the right projects that meet the most critical transportation needs in Virginia.\",\r\n\t\t\twebsite: \"http://smartscale.virginia.gov/\",\r\n\t\t\tlogo: \"images/ProgramLogos/Logo_SMARTSCALE.png\",\r\n\t\t\troute: \"hb2\",\r\n\t\t\tpid: ProgramIds.SMART_SCALE,\r\n\t\t\tgroup: 1,\r\n\t\t\tformType: \"Application\"\r\n\t\t},\r\n\t\t{\r\n\t\t\tname: \"Transportation Alternatives Set-Aside Program\",\r\n\t\t\tinfo: \"The Transportation Alternatives Set-Program provides funding for programs and projects, including on-and off-road pedestrian and bicycle facilities, infrastructure projects for improving non-driver access to public transportation and enhanced mobility, community improvement activities, and environmental mitigation. The program is intended to help local sponsors fund community based projects that expand non-motorized travel choices and enhance the transportation experience by improving the cultural, historical and environmental aspects of the transportation infrastructure.\",\r\n\t\t\twebsite: \"http://www.virginiadot.org/business/prenhancegrants.asp\",\r\n\t\t\tlogo: \"images/ProgramLogos/Logo_TransportationAlternatives.png\",\r\n\t\t\troute: \"tap\",\r\n\t\t\tpid: ProgramIds.TA_Set_Aside,\r\n\t\t\tgroup: 1,\r\n\t\t\tformType: \"Application\"\r\n\t\t},\r\n\t\t{\r\n\t\t\tname: \"Revenue Sharing Program\",\r\n\t\t\tinfo: \"The Revenue Sharing Program is a dollar-for-dollar, cash match funding program for use by a county, city or town to construct, improve, or maintain the primary, secondary, or urban roadways, with statutory limitations on the amount of state funds authorized per locality.\",\r\n\t\t\twebsite: \"http://www.virginiadot.org/business/local-assistance-access-programs.asp#Revenue_Sharing\",\r\n\t\t\tlogo: \"images/ProgramLogos/Logo_RevenueShare.png\",\r\n\t\t\troute: \"revenue-sharing\",\r\n\t\t\tpid: ProgramIds.Revenue_Sharing,\r\n\t\t\tgroup: 1,\r\n\t\t\tformType: \"Application\"\r\n\t\t},\r\n\t\t{\r\n\t\t\tname: \"Highway Safety Program (HSP)\",\r\n\t\t\tinfo: \"The highway safety improvement program (HSP) is a core program administered at the federal level by the U.S. department of transportation (USDOT) Federal Highway administration (FHWA) office of Safety. HSP is one of the core programs of HSP. The primary objective of the HSP is to identify and improve locations where there is a high concentration, or risk, of vehicle crashes that result in deaths or injuries and to implement strategies to attain Virginia’s Towards Zero Deaths vision.\",\r\n\t\t\twebsite: \"http://www.virginiadot.org/business/ted_app_pro.asp\",\r\n\t\t\twebsite2title: \"HSP Annual Report\",\r\n\t\t\twebsite2url: \"http://safety.fhwa.dot.gov/hsip/reports/pdf/2015/va.pdf\",\r\n\t\t\twebsite3title: \"SHSP Report\",\r\n\t\t\twebsite3url: \"http://www.virginiadot.org/info/resources/va_2012_shsp_final.pdf\",\r\n\t\t\twebsite4title: \"HSP Form Download\",\r\n\t\t\twebsite4url: \"http://www.virginiadot.org/business/FY2016-17HSP_Proposal_Form_blank.xls\",\r\n\t\t\tlogo: \"images/ProgramLogos/Logo_HighwaySafetyProgram.png\",\r\n\t\t\troute: \"highway-safety\",\r\n\t\t\tpid: ProgramIds.VHSIP,\r\n\t\t\tgroup: 1,\r\n\t\t\tformType: \"Application\"\r\n\t\t},\r\n\t\t{\r\n\t\t\tname: \"State of Good Repair - Bridges\",\r\n\t\t\tlogo: \"images/ProgramLogos/Logo_SgrBridge.png\",\r\n\t\t\tpid: ProgramIds.State_of_Good_Repair_Bridge,\r\n\t\t\tgroup: 3,\r\n\t\t\troute: \"sgr-bridge\",\r\n\t\t\tformType: \"Application\"\r\n\t\t},\r\n\t\t{\r\n\t\t\tname: \"State of Good Repair - Pavement\",\r\n\t\t\tlogo: \"images/ProgramLogos/Logo_SgrPavement.png\",\r\n\t\t\tpid: ProgramIds.State_of_Good_Repair_Pavement,\r\n\t\t\tgroup: 3,\r\n\t\t\troute: \"sgr-pavement\",\r\n\t\t\tformType: \"Application\"\r\n\t\t},\r\n\t\t{\r\n\t\t\tname: 'Pre-Scoping Applications',\r\n\t\t\tlogo: \"images/ProgramLogos/Logo_PreScoping.png\",\r\n\t\t\tpid: ProgramIds.Pre_Scoping,\r\n\t\t\tgroup: 4,\r\n\t\t\troute: \"pre-scoping\",\r\n\t\t\tformType: \"Application\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tname: 'Candidate Application Module',\r\n\t\t\tlogo: 'images/ProgramLogos/Logo_CAM.png',\r\n\t\t\tpid: ProgramIds.CAM,\r\n\t\t\tgroup: 4,\r\n\t\t\troute: \"cam\",\r\n\t\t\tformType: 'Application',\r\n\t\t},\r\n\t];\r\n\r\n\tconstructor(\r\n\t\tprivate readonly programApplicationService: ProgramApplicationService,\r\n\t\tprivate readonly authService: AuthService,\r\n\t\tprivate readonly $rootScope: AppRootScope\r\n\t) {}\r\n\r\n\r\n\t//is smart scale (fid=2) in public?\r\n\tisPublic: boolean; // = (authService.app.IsPublicallyVisible);\r\n\r\n\tProgramIds = ProgramIds; // provide enum to the template.\r\n\r\n\t$onInit() {\r\n\t\t//console.debug(`home controller $onInit`);\r\n\t\tthis.isPublic = this.authService.app.IsPublicallyVisible;\r\n\r\n\t\tif (this.authService.loggedIn) {\r\n\t\t\ttry {\r\n\t\t\t\tthis.programApplicationService.getAppCounts()\r\n\t\t\t\t\t.then(response => {\r\n\t\t\t\t\t\tthis.addPrograms(response.programs);\r\n\r\n\t\t\t\t\t\t//if can see NVAP list\r\n\t\t\t\t\t\tif (this.authService.user && this.authService.user.viewProjectAccessLevels && this.authService.user.viewProjectAccessLevels.length > 0) {\r\n\t\t\t\t\t\t\tthis.programGroups[4].push(this.nvapProgram);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// can see SYIP\r\n\t\t\t\t\t\tif (this.authService.user?.isPortalAdmin) {\r\n\t\t\t\t\t\t\tthis.programGroups[4].push(this.syipProgram);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// check if any programs in program group, if not delete row\r\n\t\t\t\t\t\tfor (const key in this.programGroups) {\r\n\t\t\t\t\t\t\tif (!Object.prototype.hasOwnProperty.call(this.programGroups, key))\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\tconst val = this.programGroups[key];\r\n\t\t\t\t\t\t\tif (!val || !val.length)\r\n\t\t\t\t\t\t\t\tdelete this.programGroups[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tangular.forEach(this.programGroups, (programs, programGroupId) => {\r\n\t\t\t\t\t\t\tif (!programs.length) {\r\n\t\t\t\t\t\t\t\tdelete this.programGroups[programGroupId];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t//console.debug(`programGroups culled:`, this.programGroups);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t} catch (e) {\r\n\t\t\t\t//todo: is this handled somewhere or need to be added?\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\taddPrograms(programs) {\r\n\t\tconst availablePrograms = [];\r\n\t\tprograms.forEach((program) => availablePrograms.push(program.pid));\r\n\t\tthis.programInfo.forEach((program) => {\r\n\t\t\t// if no program, will fill empty row\r\n\t\t\tif (availablePrograms.indexOf(program.pid) !== -1) {\r\n\t\t\t\tthis.programGroups[program.group].push(program);\r\n\t\t\t}\r\n\t\t});\r\n\t\t//console.debug(`programGroups loaded:`, this.programGroups);\r\n\t}\r\n\r\n\t//have to add NVAP outside of the other programs\r\n\t//since it will never be returned by getAppCounts\r\n}\r\n\r\n\r\n// HomeCtrl.angularName = 'HomeCtrl'\r\n// HomeCtrl.$inject = ['$scope','programApplicationService','authService','$rootScope'];\r\n// export function HomeCtrl($scope, programApplicationService: ProgramApplicationService, authService: AuthService, $rootScope: AppRootScope) {\r\n// $scope.programGroups = {\r\n// 1: [],\r\n// 2: [],\r\n// \t\t\t3: [],\r\n// \t\t\t4: [],\r\n// }\r\n// //is smart scale (fid=2) in public?\r\n// $scope.isPublic = (authService.app.IsPublicallyVisible);\r\n//\r\n// \t\t$scope.ProgramIds = ProgramIds; // provide enum to the template.\r\n//\r\n// if (authService.loggedIn) {\r\n// programApplicationService.getAppCounts().then(function (response) {\r\n// $scope.addPrograms(response.programs);\r\n//\r\n// //if can see NVAP list\r\n// if (authService.user && authService.user.viewProjectAccessLevels && authService.user.viewProjectAccessLevels.length > 0) {\r\n// \t\t\t\t\t$scope.programGroups[4].push($scope.nvapProgram);\r\n// }\r\n//\r\n// // check if any programs in program group, if not delete row\r\n// angular.forEach($scope.programGroups, function (programs, programGroupId) {\r\n// if (!programs.length) {\r\n// delete $scope.programGroups[programGroupId];\r\n// }\r\n// });\r\n// console.debug(`programGroups culled:`, $scope.programGroups);\r\n//\r\n// }, function (error) {\r\n//\r\n// });\r\n// }\r\n//\r\n//\r\n// $scope.addPrograms = function (programs) {\r\n// var availablePrograms = [];\r\n// programs.forEach(function (program) { return availablePrograms.push(program.pid) });\r\n// $scope.programInfo.forEach(function (program) {\r\n// // if no program, will fill empty row\r\n// if (availablePrograms.indexOf(program.pid) !== -1) {\r\n// $scope.programGroups[program.group].push(program);\r\n// }\r\n// \t\t\t});\r\n// \t\t\tconsole.debug(`programGroups loaded:`, $scope.programGroups);\r\n// }\r\n// $scope.programInfo = [\r\n// {\r\n// name: \"SMART SCALE Program\",\r\n// info: \"SMART SCALE is about investing limited tax dollars in the right projects that meet the most critical transportation needs in Virginia.\",\r\n// website: \"http://smartscale.virginia.gov/\",\r\n// logo: \"images/ProgramLogos/Logo_SMARTSCALE.png\",\r\n// route: \"hb2\",\r\n// \t\t\t\tpid: ProgramIds.SMART_SCALE,\r\n// group: 1,\r\n// formType: \"Application\"\r\n// },\r\n// {\r\n// name: \"Transportation Alternatives Set-Aside Program\",\r\n// info: \"The Transportation Alternatives Set-Program provides funding for programs and projects, including on-and off-road pedestrian and bicycle facilities, infrastructure projects for improving non-driver access to public transportation and enhanced mobility, community improvement activities, and environmental mitigation. The program is intended to help local sponsors fund community based projects that expand non-motorized travel choices and enhance the transportation experience by improving the cultural, historical and environmental aspects of the transportation infrastructure.\",\r\n// website: \"http://www.virginiadot.org/business/prenhancegrants.asp\",\r\n// logo: \"images/ProgramLogos/Logo_TransportationAlternatives.png\",\r\n// route: \"tap\",\r\n// \t\t\t\tpid: ProgramIds.TA_Set_Aside,\r\n// group: 1,\r\n// formType: \"Application\"\r\n// },\r\n// {\r\n// name: \"Revenue Sharing Program\",\r\n// info: \"The Revenue Sharing Program is a dollar-for-dollar, cash match funding program for use by a county, city or town to construct, improve, or maintain the primary, secondary, or urban roadways, with statutory limitations on the amount of state funds authorized per locality.\",\r\n// website: \"http://www.virginiadot.org/business/local-assistance-access-programs.asp#Revenue_Sharing\",\r\n// logo: \"images/ProgramLogos/Logo_RevenueShare.png\",\r\n// route: \"revenue-sharing\",\r\n// \t\t\t\tpid: ProgramIds.Revenue_Sharing,\r\n// group: 1,\r\n// formType: \"Application\"\r\n// },\r\n// {\r\n// name: \"Highway Safety Program (HSP)\",\r\n// info: \"The highway safety improvement program (HSP) is a core program administered at the federal level by the U.S. department of transportation (USDOT) Federal Highway administration (FHWA) office of Safety. HSP is one of the core programs of HSP. The primary objective of the HSP is to identify and improve locations where there is a high concentration, or risk, of vehicle crashes that result in deaths or injuries and to implement strategies to attain Virginia’s Towards Zero Deaths vision.\",\r\n// website: \"http://www.virginiadot.org/business/ted_app_pro.asp\",\r\n// website2title: \"HSP Annual Report\",\r\n// website2url: \"http://safety.fhwa.dot.gov/hsip/reports/pdf/2015/va.pdf\",\r\n// website3title: \"SHSP Report\",\r\n// website3url: \"http://www.virginiadot.org/info/resources/va_2012_shsp_final.pdf\",\r\n// website4title: \"HSP Form Download\",\r\n// website4url: \"http://www.virginiadot.org/business/FY2016-17HSP_Proposal_Form_blank.xls\",\r\n// logo: \"images/ProgramLogos/Logo_HighwaySafetyProgram.png\",\r\n// route: \"highway-safety\",\r\n// \t\t\t\tpid: ProgramIds.VHSIP,\r\n// group: 1,\r\n// formType: \"Application\"\r\n// },\r\n// {\r\n// name: \"State of Good Repair - Bridges\",\r\n// logo: \"images/ProgramLogos/Logo_SgrBridge.png\",\r\n// \t\t\t\tpid: ProgramIds.State_of_Good_Repair_Bridge,\r\n// group: 3,\r\n// route: \"sgr-bridge\",\r\n// formType: \"Application\"\r\n// },\r\n// {\r\n// \tname: \"State of Good Repair - Pavement\",\r\n// \tlogo: \"images/ProgramLogos/Logo_SgrPavement.png\",\r\n// \t\t\t\tpid: ProgramIds.State_of_Good_Repair_Pavement,\r\n// \tgroup: 3,\r\n// \troute: \"sgr-pavement\",\r\n// \tformType: \"Application\"\r\n// \t\t\t},\r\n// \t\t\t{\r\n// \t\t\t\tname: 'Pre-Scoping Applications',\r\n// \tlogo: \"images/ProgramLogos/Logo_PreScoping.png\",\r\n// \t\t\t\tpid: ProgramIds.Pre_Scoping,\r\n// \t\t\t\tgroup: 4,\r\n// \t\t\t\troute: \"pre-scoping\",\r\n// \t\t\t\tformType: \"Application\",\r\n// \t\t\t},\r\n//\r\n// ];\r\n// //have to add NVAP outside of the other programs\r\n// //since it will never be returned by getAppCounts\r\n// $scope.nvapProgram = {\r\n// name: \"NVAP\",\r\n// logo: \"images/ProgramLogos/Logo_NVAP.png\",\r\n// pid: 0,//front end needs a pid for some reason??\r\n// group: 4,\r\n// route: \"nvap\",\r\n// formType: \"Project\"\r\n// }\r\n//\r\n// }\r\n//\r\n","import template from \"./home.html\";\r\nimport {HomeCtrl} from \"./home.controller\";\r\n\r\nexport const HomeComponentName = 'home';\r\n\r\nexport const HomeComponent: ng.IComponentOptions = {\r\n\tcontroller: HomeCtrl,\r\n\ttemplate,\r\n\tbindings: {}\r\n}","// Module\nvar code = \"

    Welcome to SMART Portal

    = 0\\\">

    {{::program.name}}
    \\\"{{::program.name}}
    \";\n// Exports\nexport default code;","import type { Ng1StateDeclaration } from '@uirouter/angularjs';\r\nimport { pageTitle } from 'app/shared/util/page-title';\r\nimport { HomeComponentName } from \"./home.component\";\r\nimport { HomePublicComponentName } from './public/home-public.component';\r\n\r\nexport const homeLoggedInStateName = 'home.loggedIn';\r\nexport const homePublicStateName = 'home.public';\r\n\r\nexport const States: Ng1StateDeclaration[] = [\r\n\t{\r\n\t\tname: 'home',\r\n\t\turl: '/',\r\n\t\tabstract: true,\r\n\t},\r\n\t{\r\n\t\tname: homeLoggedInStateName,\r\n\t\tcomponent: HomeComponentName,\r\n\t\tdata: {\r\n\t\t\tpageTitle: pageTitle('Home'),\r\n\t\t},\r\n\t},\r\n\t{\r\n\t\tname: homePublicStateName,\r\n\t\tcomponent: HomePublicComponentName,\r\n\t\tdata: {\r\n\t\t\tpageTitle: pageTitle('Public Home'),\r\n\t\t},\r\n\t},\r\n];\r\n","import template from './home-public.html';\r\n\r\n// TODO move homePublic to public module. move homeFooter to shared module.\r\n\r\nexport const HomePublicComponentName = 'homePublic';\r\nexport const HomePublicComponent: ng.IComponentOptions = {\r\n\ttemplate,\r\n};\r\n","// Module\nvar code = \"

    Welcome to SMART Portal


    The Smart Portal Application Tool provides public access to applications that have been submitted for various funding programs available through the Virginia Department of Transportation and the Department of Rail and Public Transportation. These programs include SMART SCALE, Transportation Alternatives Set-Aside (TA), Revenue Sharing (RS), Highway Safety (HSIP), Bike/Ped Safety (BSPS), Systemic Safety Improvements (SSI), Rail Safety Improvements, and State of Good Repair (SGR) Bridges and Paving. To find out more information about each application program click on the About tab.

    After each round of application submission and scoring, the tool provides public view of the individual project applications and the resulting score for each project and program. Each application program includes a drill down into the cohort list of applications with multiple filter options, including identification of projects selected for funding in the Six-Year Improvement Program.

    \";\n// Exports\nexport default code;","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!./select.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!./select.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { AppWindow } from 'app/interfaces/AppWindow';\r\nconst w = (typeof globalThis !== 'undefined' ? globalThis : window) as unknown as AppWindow;\r\n\r\nimport angular from 'angular';\r\nw.angular = angular;\r\n\r\nimport jquery from 'jquery';\r\nw.$ = w.jQuery = jquery;\r\n\r\nimport 'es6-collections';\r\nimport 'jquery-ui-dist/jquery-ui.min';\r\n\r\nimport 'angular-animate';\r\nimport 'angular-aria';\r\nimport 'angular-file-upload';\r\nimport 'angular-loading-bar';\r\nimport 'angular-bind-html-compile';\r\nimport 'angular-local-storage';\r\nimport 'angular-messages';\r\nimport 'angular-sanitize';\r\nimport 'angular-ui-notification';\r\nimport 'angular-ui-notification/dist/angular-ui-notification.css';\r\nimport 'angular-ui-sortable';\r\nimport 'bootstrap';\r\nimport 'bootstrap/dist/css/bootstrap.css';\r\nimport 'angular-ui-bootstrap';\r\nimport 'angular-ui-bootstrap/dist/ui-bootstrap-csp.css';\r\n\r\n\r\nimport 'ng-currency';\r\n\r\nimport '@uirouter/angularjs';\r\nimport '@uirouter/angularjs/release/stateEvents.min.js';\r\nimport \"oclazyload\";\r\nimport 'mousetrap';\r\nimport 'ui-router-page-title';\r\nimport 'angular-cookies';\r\nimport 'angular-ui-validate';\r\nimport 'angular-ui-mask/src/mask';\r\nimport 'libs/ui-select/select.css';\r\nimport 'libs/ui-select/select.js'\r\nimport 'bootstrap';\r\n//import 'deep-diff'; // can probably remove this one.\r\nimport DeepDiff from 'deep-diff';\r\nw.DeepDiff = DeepDiff;\r\n\r\n","\n import API from \"!../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../node_modules/css-loader/dist/cjs.js!./site.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../node_modules/css-loader/dist/cjs.js!./site.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../node_modules/css-loader/dist/cjs.js!./wvs-icons.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../node_modules/css-loader/dist/cjs.js!./wvs-icons.css\";\n export default content && content.locals ? content.locals : undefined;\n","// \"site.js\" is a module now and sealed off from global scope.\r\n// this file puts \"site.js\" stuff back onto the global scope so legacy code works.\r\n// the corresponding 'site-shim.d.ts' does the same for typescript context.\r\n// this hack can go away when all code has been updated to NOT reference these global objects.\r\n\r\nimport { isNullOrUndefined, isNotNullOrUndefined } from \"app/shared/util/isNullOrUndefined\";\r\nimport {\r\n\tapplicationComparison,\r\n\tSiteStuff,\r\n\twaitingDialog,\r\n} from 'app/site';\r\n\r\nconst w = window as unknown as Window & SiteStuff; // helper pointer to Window with SiteStuff typing.\r\n\r\n// re-expose all legacy 'site.js' stuff to global window scope so old code works.\r\nw.applicationComparison = applicationComparison;\r\nw.isNullOrUndefined = isNullOrUndefined;\r\nw.isNotNullOrUndefined = isNotNullOrUndefined;\r\nw.waitingDialog = waitingDialog;\r\n","import { DiscussionService } from \"app/shared/services\";\r\nimport { AppRootScope } from \"app/interfaces\";\r\nimport { IDirective } from \"angular\";\r\nimport template from \"./discussion-navbar.html\";\r\n\r\ndiscussion_nav_bar.angularName = 'discussionNavbar';\r\ndiscussion_nav_bar.$inject = [\"$interval\", DiscussionService.angularName, \"$rootScope\", \"localStorageService\", \"$q\", \"$timeout\"];\r\nexport function discussion_nav_bar($interval: ng.IIntervalService, discussionService: DiscussionService, $rootScope: AppRootScope, localStorageService, $q: ng.IQService, $timeout: ng.ITimeoutService) {\r\n // Usage:\r\n // \r\n // Creates:\r\n // \r\n var directive: IDirective = {\r\n link: link,\r\n replace: true, \r\n restrict: 'EA',\r\n template\r\n };\r\n return directive;\r\n\r\n function link(scope, element, attrs) {\r\n /** There are currently 3 discussion types. comment, alert, concurrence */\r\n scope.eventListeners = [];\r\n scope.config = [\r\n {\r\n type: \"comment\",\r\n iconClass: \"fa-comments\",\r\n displayName: \"Comments\",\r\n totalCount: -5,\r\n forms: null,\r\n get: () => { return discussionService.getNewCommentCount(); }\r\n },\r\n {\r\n type: \"alert\",\r\n iconClass: \"fa-warning\",\r\n displayName: \"Alerts\",\r\n totalCount: 0,\r\n forms: null,\r\n get: () => { return discussionService.getAlertsCount(); }\r\n },\r\n {\r\n type: \"concurrence\",\r\n iconClass: \"fa-handshake-o\",\r\n displayName: \"Concurrence Alerts\",\r\n totalCount: 0,\r\n forms: null,\r\n get: () => { return discussionService.getConcurrenceAlertsCount(); }\r\n }\r\n ];\r\n scope.updateData = (type: string) => updateData(type, false);\r\n\r\n //andddddddd go\r\n init();\r\n\r\n /**\r\n * Initialize the directive.\r\n */\r\n function init() {\r\n // get data one at a time to not overload server with basically three of the same huge query.\r\n // TODO rewrite this so each alert bubble is its own component. factor the data fetches to a service and let each component subscribe to the service.\r\n // TODO rewrite as async await:\r\n var alertCfg = getConfigObj('alert');\r\n var commentCfg = getConfigObj('comment');\r\n var concurrenceCfg = getConfigObj('concurrence');\r\n return $timeout(3000).then(function () {\r\n discussionService.getAllCommentCounts().then(c => {\r\n // got the counts (just the numbers) now update the navbar items.\r\n if (!c) {\r\n return;\r\n }\r\n alertCfg.totalCount = c.pending_alert_count || undefined;\r\n commentCfg.totalCount = c.new_comment_count || undefined;\r\n concurrenceCfg.totalCount = c.concurrence_alert_count || undefined;\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Add event listeners for each counter\r\n */\r\n function addEventListeners() {\r\n //if listeners have been added, remove to avoid calls stacking\r\n removeEventListeners();\r\n\r\n scope.eventListeners.push($rootScope.$on('updateConcurrenceCount', updateConcurrenceCount));\r\n scope.eventListeners.push($rootScope.$on('commentAcknowledged', updateCommentCount));\r\n scope.eventListeners.push($rootScope.$on('validationToolAlert', validationToolEventHandler));\r\n\r\n //only listeners on rootscope need to be destroyed explicitly\r\n scope.$on('$destroy', removeEventListeners);\r\n }\r\n\r\n /**\r\n * Removes all event listeners\r\n */\r\n function removeEventListeners() {\r\n angular.forEach(scope.eventListeners,\r\n function (listener) {\r\n listener();\r\n });\r\n }\r\n\r\n /**\r\n * Event handler for the validation tool. Decides which counters need to be updated\r\n */\r\n function validationToolEventHandler() {\r\n var application = localStorageService.get('application');\r\n if (!application) {\r\n updateConcurrenceCount();\r\n updateAlertCount();\r\n // not pending or submitted status \r\n } else if (application.status !== 2 || application.status !== 1) {\r\n updateConcurrenceCount();\r\n } else {\r\n updateAlertCount();\r\n }\r\n }\r\n\r\n /**\r\n * Updates the concurrence alert counter\r\n */\r\n function updateConcurrenceCount() {\r\n \r\n updateData(\"concurrence\", true);\r\n }\r\n\r\n /**\r\n * Updates the comment counter\r\n */\r\n function updateCommentCount() {\r\n \r\n updateData(\"comment\", true);\r\n }\r\n\r\n /**\r\n * Updates the alert counter\r\n */\r\n function updateAlertCount() {\r\n \r\n updateData(\"alert\", true);\r\n }\r\n\r\n /**\r\n * Get a config object by its type\r\n * @param {string} type Type of the config object\r\n * @returns {obj} Config object\r\n */\r\n function getConfigObj(type) {\r\n var obj = null;\r\n angular.forEach(scope.config,\r\n function (config) {\r\n if (config.type === type) obj = config;\r\n });\r\n\r\n return obj;\r\n }\r\n\r\n function saveData(config, data) {\r\n config.totalCount = data.commentCount;\r\n config.forms = data.forms;\r\n }\r\n\r\n /**\r\n * Gets new data for a single discussion type\r\n * @param {string} type Type of discussion alert\r\n */\r\n function updateData(type, fetchAlways = false) {\r\n var config = getConfigObj(type);\r\n\r\n if (!fetchAlways && config && config.forms) {\r\n return;\r\n }\r\n\r\n config.get().then(function (data) {\r\n saveData(config, data);\r\n });\r\n }\r\n\r\n }\r\n}\r\n","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import { IDirective } from \"angular\";\r\nimport template from \"app/components/discussion/discussion-overview-icon.html\";\r\n\r\nDiscussionOverviewIcon.angularName = 'discussionOverviewIcon';\r\nDiscussionOverviewIcon.$inject = [];\r\nexport function DiscussionOverviewIcon() {\r\n // Usage:\r\n // \r\n // Creates:\r\n // \r\n var directive: IDirective = {\r\n link: link,\r\n restrict: \"EA\",\r\n scope: {\r\n model: \"<\"\r\n },\r\n template \r\n };\r\n return directive;\r\n\r\n function link(scope, element, attrs) {\r\n }\r\n}\r\n","// Module\nvar code = \"
    <\" + \"script type=\\\"text/ng-template\\\" id=\\\"discussion-dropdown-menu.html\\\">
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    No unread comments

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n

    \\r\\n Unread {{model.displayName}}\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n Loading\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n

    \\r\\n {{form.programName}}\\r\\n

    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n

    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    <\" + \"/script>\";\n// Exports\nexport default code;","import { angularModule } from \"angular-utilities\";\r\nimport { discussion_nav_bar } from \"./discussion-navbar.directive\";\r\nimport { DiscussionOverviewIcon } from \"./discussion-overview-icon.directive\";\r\n\r\nexport const DiscussionModule = angularModule(\"discussionModule\", [\r\n\t\t'ngAnimate',\r\n\t])\r\n .directive(discussion_nav_bar.angularName, discussion_nav_bar)\r\n .directive(DiscussionOverviewIcon.angularName, DiscussionOverviewIcon)\r\n .name;\r\n","import { ProgramApplicationService, AuthService } from \"app/shared/services\";\r\nimport { StateService } from \"@uirouter/core\";\r\n\r\nBulkAttachmentsCtrl.angularName = 'BulkAttachmentsCtrl'\r\nBulkAttachmentsCtrl.$inject = ['$scope', ProgramApplicationService.angularName, '$state', AuthService.angularName, 'appTabs', 'startingTab', 'Notification'];\r\nexport function BulkAttachmentsCtrl($scope: ng.IScope | any, programApplicationService: ProgramApplicationService, $state: StateService, authService: AuthService, appTabs, startingTab, Notification: ng.uiNotification.INotificationService) {\r\n $scope.title = 'bulk_attachment';\r\n $scope.totalCount = 0;\r\n $scope.totalSelected = 0;\r\n activate();\r\n $scope.attachIds = {};\r\n $scope.getBulkDownload = function () {\r\n var apps = $scope.appTabs[$scope.active].gridOptions.api.getSelectedRows();\r\n //var apps = grid.api.getSelectedRows();\r\n var request = {\r\n appids: [],\r\n attachmentids:[]\r\n }\r\n //service base\r\n var urlCall = \"/api/file/BulkDownload?attachmentids=\"\r\n\r\n var foundCount = 0;\r\n //get all the attachment id's from the filters on scope \r\n angular.forEach($scope.attachIds, function (attachid, $index) {\r\n if (attachid) { \r\n request.attachmentids.push($index);\r\n if (foundCount > 0) urlCall += ',';\r\n foundCount += 1;\r\n urlCall += $index;\r\n }\r\n });\r\n \r\n urlCall += \"&appids=\"\r\n //get all the app ids from row data \r\n angular.forEach(apps, function (app, $index) {\r\n request.appids.push(app.AppId);\r\n if ($index > 0) urlCall += ','\r\n urlCall += app.AppId;\r\n });\r\n \r\n //throw an error if no attachment types are selected\r\n if (request.attachmentids.length < 1) {\r\n return Notification.error({ message: \"Please select one or more attachment types to download\" })\r\n }\r\n if (request.appids.length < 1) {\r\n return Notification.error({ message: \"Please select one or more applications to download\" })\r\n }\r\n if (urlCall.length > 2050) {\r\n return Notification.error({title:\"Error\", message: \"The requested download is too large. Please unselect applications and try again. You should limit the selected amount to around 100 applications\" })\r\n }\r\n else {\r\n console.log(urlCall, urlCall.length)\r\n window.open(urlCall);\r\n //waitingDialog.show('Preparing your download...');\r\n //$http.get(\"/api/file/BulkDownload\", { params: { appids: request.appids, attachmentids: request.attachmentids } }).then(function (response) {\r\n // var file = new Blob([response], { type: 'application/octet-stream' });\r\n // saveAs(file, 'filename.zip');\r\n // waitingDialog.hide();\r\n //}, function (error) {\r\n // waitingDialog.hide();\r\n // Notification.error({ message: \"An error occurred while trying to prepare your download\" })\r\n //});\r\n \r\n }\r\n }\r\n \r\n var columnDefs = [];\r\n $scope.setGridData = function () {\r\n $scope.totalSelected = 0;\r\n\r\n $scope.currentTab = $scope.appTabs[$scope.active];\r\n createNewDataSource();\r\n $scope.appTabs[$scope.active].gridOptions.api.redrawRows(); //refreshView() has been deprecated since v11.1\r\n $scope.appTabs[$scope.active].gridOptions.api.sizeColumnsToFit();\r\n };\r\n\r\n\t\t$scope.applyFilters = () => {\r\n\t\t\t$scope.grid.api.onFilterChanged();\r\n\t\t\t//$rootScope.hideDropDowns();\r\n\t\t};\r\n\r\n function getRowData() {\r\n }\r\n\r\n function createNewDataSource() {\r\n var dataSource = {\r\n pageSize:1000,// $scope.appTabs[$scope.active].pagingOptions.PageSize,\r\n getRows: function (params) {\r\n // PIDFID: FormId is being set to pid....\r\n $scope.appTabs[$scope.active].pagingOptions.FilterProps.FormIdCsv = [$scope.appTabs[$scope.active].pid];// $scope.currentTab.pid;\r\n var pagingOptions = $scope._buildPagingOptions(params, $scope.appTabs[$scope.active].pagingOptions);\r\n \r\n return programApplicationService.getPage($scope.appTabs[$scope.active].pagingOptions).then(function (gridResult) {\r\n \r\n \r\n $scope.totalCount = gridResult.TotalCount;\r\n $scope.totalPages = gridResult.TotalPages;\r\n $scope.results = gridResult.Results;\r\n $scope.totalSelected = 0;\r\n //$scope.gridOptions.api.sizeColumnsToFit();\r\n params.successCallback($scope.results, $scope.totalCount);\r\n\r\n }, function (error) {\r\n // error notification to user is handled in AuthInterceptor\r\n });\r\n }\r\n };\r\n $scope.appTabs[$scope.active].gridOptions.api.setDatasource(dataSource);\r\n $scope.appTabs[$scope.active].gridOptions.api.setRowData($scope.results);\r\n $scope.appTabs[$scope.active].gridOptions.api.redrawRows(); //refreshView() has been deprecated since v11.1\r\n }\r\n\r\n function activate() {\r\n $scope.appTabs = appTabs;\r\n $scope.active = startingTab;\r\n $scope.currentTab = $scope.appTabs[startingTab];\r\n angular.forEach($scope.appTabs, function (appTab, i) {\r\n\r\n var columnDefs = [];\r\n // App ID\r\n columnDefs.push({ headerName: \"ID\", field: \"AppId\", suppressMenu: true, sort: \"asc\", checkboxSelection: true, });\r\n // Program (only show on ALL app grid)\r\n if (appTab.fid == null) columnDefs.splice(1, 0, { headerName: \"Program\", field: \"ProgramName\", suppressMenu: true });\r\n // Name\r\n columnDefs.push({ headerName: \"Name\", field: \"AppName\", suppressMenu: true });\r\n // Organization (only show if user can see multiple organizations)\r\n if (!appTab.orgid) columnDefs.push({ headerName: \"Organization\", field: \"OrgName\", suppressMenu: true });\r\n // Internal Status (show for roles other than Submitter/Editor/Viewer)\r\n if (!appTab.orgid) columnDefs.push({ headerName: \"Status\", field: \"StatusName\", suppressMenu: true, width: 135 });\r\n // Last Updated\r\n columnDefs.push({ headerName: \"Last Updated\", field: \"UpdatedOn\", suppressMenu: true, template: \"{{data.UpdatedOn | date:'MM/dd/yyyy @ h:mma'}}\", width: 250 });\r\n\r\n\t\t\t\t// Limit what types of attachments can be bulk downloaded\r\n\t\t\t\t// This information *should* be in the database, but...\r\n\t\t\t\tvar excludedAttachmentTypeIDs = [\r\n\t\t\t\t\t13 // OIPI Review Document\r\n\t\t\t\t\t, 14 // Locality Concurrence with Change\r\n\t\t\t\t\t, 15 // District Validation Form\r\n\t\t\t\t\t, 16 // Concurrency Change Form for Scoring\r\n\t\t\t\t];\r\n\t $scope.attachmentTypes = [];\r\n\t angular.forEach($scope.authService.app.Lookups.attachmentTypes, function (a, $index) {\r\n\t\t\t\t\tif (excludedAttachmentTypeIDs.indexOf(a.id) === -1)\r\n $scope.attachmentTypes.push(a);\r\n });\r\n\r\n\r\n var pagingOptions = {\r\n PageSize: 1000,\r\n PageNumber: 0,\r\n OrderBy: \"\",\r\n OrderDesc: false,\r\n FilterProps: {\r\n FormId: appTab.fid,\r\n IdAppName: null,\r\n CreatedOnYear: null,\r\n OrgId: appTab.orgid\r\n }\r\n }\r\n $scope.appTabs[i].pagingOptions = pagingOptions;\r\n var gridOptions = {\r\n columnDefs: columnDefs,\r\n onGridReady: function () {\r\n createNewDataSource();\r\n $scope.appTabs[$scope.active].gridOptions.api.sizeColumnsToFit();\r\n $scope.loading = false;\r\n \r\n },\r\n onSelectionChanged: function (event) {\r\n //calculate total selected apps and push to angular scope\r\n $scope.totalSelected = $scope.appTabs[$scope.active].gridOptions.api.getSelectedRows().length;\r\n $scope.$evalAsync();\r\n },\r\n angularCompileRows: true,\r\n isExternalFilterPresent: true,\r\n enableColResize: true,\r\n enableSorting: true,\r\n //enableServerSideSorting: true,\r\n enableServerSideFilter: true,\r\n showToolPanel: false,\r\n suppressRowClickSelection: true,\r\n rowModelType: \"pagination\",\r\n rowSelection: 'multiple',\r\n\r\n }\r\n $scope.appTabs[i].gridOptions = gridOptions;\r\n });\r\n\r\n }\r\n }\r\n\r\n","import {ILookupValue} from \"../../../interfaces/LookupValue\";\r\nimport {ReviewPriorityService} from \"../../services/reviewPriority.service\";\r\nimport {ReviewPriorityDataViewModel} from \"../../../api\";\r\nimport {IScope} from \"angular\";\r\n\r\n/**\r\n * Review Priority Component: Given an appid this component will show 2 dropdown fields that will set the \"primary_review\"\r\n * and \"secondary_review\" fields on an application. The component will not allow two of the same values to be selected in both\r\n * dropdowns. I.E. primary and secondary cannot both be set to \"VDOT\". When an option on the primary dropdown is set it will disable\r\n * its counterpart on the other and vice versa. Both fields are required to save. Both fields use the same lookup except for\r\n * secondary that has the \"NONE\" option that primary does not.\r\n */\r\nexport class ReviewPriorityController implements ng.IController {\r\n static $inject = ['CONFIG', 'reviewPriorityService', '$scope', 'Notification'];\r\n public appid: string;\r\n\r\n public actionMode = 'edit';\r\n public submissionMode = true;\r\n\r\n //lookups for the 2 fields\r\n public primaryLookups: Array;\r\n public secondaryLookups: Array;\r\n\r\n //modals for the 2 fields\r\n public primary_review: number;\r\n public secondary_review: number;\r\n\r\n //Currently not used. Will show an edit button and toggle action mode. Probably needs a little more work before implementing\r\n public onForm: boolean = false;\r\n\r\n //oid is sent down with other data to make saving easier\r\n private oid: number;\r\n\r\n //if the component has data to show. Component will not show if false\r\n public hasData = false;\r\n\r\n //if the component is in the process of saving. shows loading screen if true\r\n public isSaving = false;\r\n\r\n //original data from the server. used to revert data back on cancel. (Needed only on form mode)\r\n public originalData: ReviewPriorityDataViewModel;\r\n\r\n constructor(public CONFIG: any, public reviewPriorityService: ReviewPriorityService, public $scope: IScope, public Notification: any){\r\n //give each of our lookups a disabled property so we can toggle when model is changed\r\n angular.forEach(CONFIG.app.Lookups.reviewPriority,function(lu){\r\n lu.disabled = false;\r\n });\r\n\r\n this.primaryLookups = angular.copy(CONFIG.app.Lookups.reviewPriority);\r\n\r\n this.secondaryLookups = angular.copy(CONFIG.app.Lookups.reviewPriority);\r\n }\r\n\r\n $onInit() {\r\n //from the grid the component opens in edit mode. in form we want to start in view\r\n if(this.onForm){\r\n this.actionMode = \"view\"\r\n }\r\n\r\n this.reviewPriorityService.getReviewPriorityData(this.appid).then((data) => {\r\n this.getDataSuccessCallback(data);\r\n }).catch((error) => {\r\n // error notification to user is handled in AuthInterceptor\r\n console.error(error);\r\n });\r\n\t}\r\n\r\n /**\r\n * Callback function for when data is retrieved successfully. Sets if the component has data and should show and\r\n * updates model for inputs\r\n * @param data\r\n */\r\n getDataSuccessCallback(data: ReviewPriorityDataViewModel){\r\n let self = this;\r\n\r\n //if we have data set it\r\n if(data.can_edit){\r\n //there is no option 0, but no data defaults to it. set as undefined if zero to avoid having a blank dropdown option\r\n this.primary_review = data.primary_review === 0 ? undefined : data.primary_review;\r\n this.secondary_review = data.secondary_review === 0 ? undefined : data.secondary_review;\r\n this.oid = data.oid;\r\n\r\n this.originalData = data;\r\n }\r\n\r\n this.hasData = data.can_edit;\r\n\r\n //watch model for changes.\r\n // Rules: Both fields cannot have same values. One will disable the other. unless it is None\r\n this.$scope.$watch('$ctrl.primary_review', function(newVal, oldVal){\r\n angular.forEach(self.secondaryLookups, function(lu){\r\n lu.disabled = lu.id != 3 && lu.id === newVal;\r\n });\r\n });\r\n\r\n this.$scope.$watch('$ctrl.secondary_review', function(newVal, oldVal){\r\n angular.forEach(self.primaryLookups, function(lu){\r\n lu.disabled = lu.id != 3 && lu.id === newVal;\r\n });\r\n });\r\n\r\n //used by grid modal loading widget\r\n this.$scope.$emit(\"review-priority-ready\");\r\n }\r\n\r\n /**\r\n * On click call for Cancel button. Sets data back to original data and action mode back to view\r\n */\r\n cancelReviewPriority(){\r\n this.primary_review = this.originalData.primary_review;\r\n this.secondary_review = this.originalData.secondary_review;\r\n this.actionMode = 'view';\r\n\r\n //used by grid modal to close\r\n this.$scope.$emit(\"review-priority-cancelled\");\r\n }\r\n\r\n /**\r\n * Saves review priority data. Updates orig data so cancel works. updates status flags\r\n */\r\n async saveReviewPriority(){\r\n this.isSaving = true;\r\n\r\n let saveData: ReviewPriorityDataViewModel = {\r\n primary_review: this.primary_review,\r\n secondary_review: this.secondary_review ?? undefined,\r\n oid: this.oid,\r\n appid: this.appid,\r\n can_edit: true\r\n };\r\n\r\n this.reviewPriorityService.saveReviewPriority(saveData).then((response) => {\r\n //update original data with updated data so cancel works correctly\r\n this.originalData = saveData;\r\n\r\n this.isSaving = false;\r\n this.actionMode = 'view';\r\n\r\n //used by grid modal to close\r\n this.$scope.$emit(\"review-priority-saved\");\r\n }).catch((error) => {\r\n // error notification to user is handled in AuthInterceptor\r\n console.error(error);\r\n });\r\n }\r\n}","import {ReviewPriorityController} from \"./review-priority.controller\";\r\nimport {IComponentOptions} from \"angular\";\r\nimport template from 'app/shared/components/reviewPriority/review-priority.html';\r\n\r\nexport const ReviewPriorityComponentName = 'reviewPriority';\r\nexport const review_priority_component: IComponentOptions = {\r\n controller: ReviewPriorityController,\r\n template,\r\n bindings: {\r\n appid: \"<\",\r\n onForm: \"

    Assign Review Priority:


    \";\n// Exports\nexport default code;","VitaPasswordDirective.angularName = 'vitaPassword'\r\nVitaPasswordDirective.$inject = ['$window'];\r\nexport function VitaPasswordDirective($window) {\r\n // Usage:\r\n // \r\n // Creates:\r\n // \r\n var directive = {\r\n require: \"ngModel\",\r\n link: link,\r\n restrict: \"EA\"\r\n };\r\n return directive;\r\n\r\n function link(scope, elm, attrs, ctrl) {\r\n scope.minMatches = attrs.minMatches ? parseInt(attrs.minMatches) : 3;\r\n\r\n ctrl.$validators.vitapassword = function(modelValue, viewValue) {\r\n var regexes = [/[!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]+/ig, /[a-zA-Z]+/ig, /[0-9]+/ig, /[a-z].*[A-Z]|[A-Z].*[a-z]/],\r\n noMatches = 0;\r\n\r\n if (ctrl.$isEmpty(modelValue)) {\r\n // consider empty models to be valid\r\n return true;\r\n }\r\n\r\n\r\n regexes.forEach(function(regex) {\r\n if (viewValue.match(regex)) {\r\n noMatches++;\r\n }\r\n });\r\n if (noMatches >= scope.minMatches) {\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n }\r\n }\r\n\r\n","import { IDirective } from \"angular\";\r\nimport template from \"app/shared/directives/circle-number.html\";\r\n\r\nCircleNumberDirective.angularName = 'circleNumber'\r\nCircleNumberDirective.$inject = ['$window'];\r\nexport function CircleNumberDirective($window) {\r\n // Usage:\r\n // \r\n // Creates:\r\n // \r\n var directive: IDirective = {\r\n link: link,\r\n restrict: \"EA\",\r\n template,\r\n scope: {\r\n num: \"@\"\r\n }\r\n\r\n };\r\n return directive;\r\n\r\n function link(scope, element, attrs) {\r\n scope.theme = attrs.theme;\r\n //element.addClass(\"circle-number-comment\");\r\n }\r\n }\r\n\r\n","// Module\nvar code = \"
    0\\\">
    \";\n// Exports\nexport default code;","RestrictToDirective.angularName = 'restrictTo'\r\nexport function RestrictToDirective() {\r\n return {\r\n restrict: 'A',\r\n link: function (scope, element, attrs) {\r\n var re = RegExp(attrs.restrictTo);\r\n var exclude = /Backspace|Enter|Tab|Delete|Del|ArrowUp|Up|ArrowDown|Down|ArrowLeft|Left|ArrowRight|Right/;\r\n\r\n element[0].addEventListener('keydown', function(event) {\r\n if (!exclude.test(event.key) && !re.test(event.key)) {\r\n event.preventDefault();\r\n }\r\n });\r\n }\r\n }\r\n }\r\n","import { AuthService, ProgramApplicationService } from \"../services\";\r\nimport { AppRootScope } from \"app/interfaces\";\r\n\r\nAuthorizedDirective.angularName = 'authorized'\r\nAuthorizedDirective.$inject = ['$window', AuthService.angularName, '$rootScope', ProgramApplicationService.angularName];\r\nexport function AuthorizedDirective($window, authService: AuthService, $rootScope: AppRootScope, programApplicationService: ProgramApplicationService) {\r\n // Usage:\r\n // \r\n // Creates:\r\n // \r\n var directive = {\r\n link: link,\r\n restrict: \"A\",\r\n scope: {\r\n accessModel: '=?'\r\n }\r\n };\r\n return directive;\r\n\r\n function link(scope: ng.IScope | any, element, attrs: ng.IAttributes) {\r\n scope.authService = authService;\r\n \r\n var showHide = function (loggedIn) {\r\n\r\n\t\t\t\tif (attrs.accessType === 'prioritizeAnyApp') {\r\n\t\t\t\t\tconsole.debug(`prioritizeAnyApp loggedIn: ${loggedIn}`);\r\n\t\t\t\t}\r\n\r\n scope.accessModel = attrs.accessType ? scope.accessTypeModel : scope.accessModel;\r\n \r\n\r\n if (!authService.loggedIn) {\r\n element.addClass(\"hidden\");\r\n }\r\n else if (attrs.accessType) {\r\n \tscope.accessTypeModel = {};\r\n\t switch (attrs.accessType) {\r\n case \"createAnyApp\":\r\n \tscope.accessTypeModel.actionName = \"Create\";\r\n break;\r\n case \"viewAnyApp\":\r\n \tscope.accessTypeModel.actionName = \"View\";\r\n break;\r\n case \"prioritizeAnyApp\":\r\n \tscope.accessTypeModel.actionName = \"Prioritize\";\r\n break;\r\n }\r\n }\r\n scope.accessModel = attrs.accessType ? scope.accessTypeModel : scope.accessModel;\r\n \r\n if (loggedIn && !scope.accessModel) {\r\n element.removeClass(\"hidden\");\r\n } else if (loggedIn && attrs.accessType == \"createAnyApp\") {\r\n // hide until we get our response\r\n element.addClass(\"hidden\");\r\n programApplicationService.availableNewForms().then(function (response) {\r\n if (response.length > 0) {\r\n element.removeClass(\"hidden\");\r\n }\r\n })\r\n }\r\n else if (loggedIn && scope.accessModel) {\r\n // hide until we get our response\r\n /*\r\n TODO: this never worked. this code was copy pasted out of UserHasPrivilege in config-routes and never finished.\r\n because typeof privilegeName === 'undefined'\r\n therefore hasPrivilege === false\r\n\r\n element.addClass(\"hidden\");\r\n \r\n function findPriv(value, index, ar) {\r\n return (value.name == privilegeName);\r\n };\r\n var privilege = $rootScope.userPrivileges.filter(findPriv);\r\n var hasPrivilege = (privilege === undefined || privilege.length === 0) ? false : true;\r\n if (hasPrivilege) {\r\n element.removeClass(\"hidden\");\r\n } \r\n */\r\n } else { \r\n element.addClass(\"hidden\");\r\n\r\n //clear the service cache on log out\r\n programApplicationService.clearCache();\r\n }\r\n };\r\n\r\n showHide(authService.loggedIn);\r\n\r\n scope.$watch(\"authService.loggedIn\", showHide);\r\n }\r\n }\r\n\r\n \r\n\r\n","import { AuthService } from \"../services\";\r\nimport { getBlockNodes } from \"../util/getBlockNodes\";\r\n\r\nIfAuthorizedDirective.angularName = 'ifAuthorized'\r\nIfAuthorizedDirective.$inject = [\"$animate\", \"authService\", \"$compile\"];\r\nexport function IfAuthorizedDirective ($animate, authService: AuthService, $compile) {\r\n\r\n\r\n return {\r\n multiElement: true,\r\n transclude: \"element\",\r\n priority: 500,\r\n terminal: true,\r\n restrict: \"A\",\r\n link: function (scope: ng.IScope | any, elm, attrs, ctrl, transclude) {\r\n var childScope, block, previousElems;\r\n\r\n var createBlock = function() {\r\n if (!childScope) {\r\n transclude(function(clone, newScope) {\r\n childScope = newScope;\r\n const el = document.createComment(\" end ifAuthorized: roles=\\\"\" + attrs.roles + \"\\\"\");\r\n // what is this even\r\n clone[clone.length++] = el as any;\r\n block = {\r\n clone: clone\r\n };\r\n $animate.enter(clone, elm.parent(), elm);\r\n });\r\n }\r\n };\r\n\r\n var destroyBlock = function() {\r\n if (previousElems) {\r\n previousElems.remove();\r\n previousElems = null;\r\n }\r\n if (childScope) {\r\n childScope.$destroy();\r\n childScope = null;\r\n }\r\n if (block) {\r\n previousElems = getBlockNodes(block.clone);\r\n $animate.leave(previousElems).then(function() {\r\n previousElems = null;\r\n });\r\n block = null;\r\n }\r\n };\r\n scope.accessModel = attrs.accessModel ? attrs.accessModel : null;\r\n scope.authService = authService;\r\n scope.$watch(\"authService.loggedIn\", function(loggedIn) {\r\n if (loggedIn && !scope.accessModel) {\r\n createBlock();\r\n } else if (loggedIn && scope.accessModel) {\r\n authService.hasAccess(scope.accessModel).then(function (hasAccess) {\r\n if (hasAccess) {\r\n createBlock();\r\n } else {\r\n destroyBlock();\r\n }\r\n });\r\n } else {\r\n destroyBlock();\r\n }\r\n });\r\n }\r\n };\r\n }","import { angularElement } from \"angular-utilities\";\r\n\r\n/* Start angular helper functions */\r\n// Copy of getBlockNodes from angular.js which ngIf and its predecessors depend on (but it is not usually global)\r\n\r\nexport function getBlockNodes(nodes) {\r\n\t// TODO(perf): update `nodes` instead of creating a new object?\r\n\tvar node = nodes[0];\r\n\tvar endNode = nodes[nodes.length - 1];\r\n\tvar blockNodes;\r\n\r\n\tfor (var i = 1; node !== endNode && (node = node.nextSibling); i++) {\r\n\t\tif (blockNodes || nodes[i] !== node) {\r\n\t\t\tif (!blockNodes) {\r\n\t\t\t\tblockNodes = angularElement(nodes.slice(0, i));\r\n\t\t\t}\r\n\t\t\tblockNodes.push(node);\r\n\t\t}\r\n\t}\r\n\r\n\treturn blockNodes || nodes;\r\n}\r\n","ScrollToDirective.angularName = 'scrollTo'\r\nScrollToDirective.$inject = ['$window','$timeout'];\r\nexport function ScrollToDirective($window, $timeout) {\r\n // Usage:\r\n // \r\n // Creates:\r\n // \r\n var directive = {\r\n link: link,\r\n restrict: \"A\",\r\n //template: \"
    \",\r\n //transclude: 'element'\r\n };\r\n return directive;\r\n\r\n function link(scope, element, attrs) {\r\n var $target = $target = $(\"#topPage\");\r\n \r\n \r\n element.on(\"click\", function () {\r\n $timeout(function () {\r\n // if no anchorDiv attribute passed in, default to #navbar\r\n if (angular.isDefined(attrs.anchordiv)) {\r\n $target = $(attrs.anchordiv);\r\n }\r\n $(\"body, html\").animate({ scrollTop: $target.offset().top }, \"slow\");\r\n\r\n });\r\n });\r\n }\r\n }\r\n","import { IDirective } from \"angular\";\r\nimport template from \"app/shared/directives/pearl.html\";\r\n\r\nPearlDirective.angularName = 'pearl'\r\nPearlDirective.$inject = ['$window'];\r\nexport function PearlDirective($window) {\r\n // Usage:\r\n // \r\n // Creates:\r\n // \r\n var directive: IDirective = {\r\n link: link,\r\n restrict: \"EA\",\r\n template,\r\n scope: {\r\n pearltitle: \"@\",\r\n pearlicon: \"@\",\r\n errorCount: \"@\"\r\n }\r\n };\r\n return directive;\r\n\r\n function link(scope, element, attrs) {\r\n }\r\n }\r\n\r\n","// Module\nvar code = \"

    {{pearltitle}}

    \";\n// Exports\nexport default code;","import { IDirective } from \"angular\";\r\nimport template from \"app/shared/directives/required-indication-icon.html\";\r\n\r\nRequiredIndicationIconDirective.angularName = 'requiredIndicationIcon'\r\nRequiredIndicationIconDirective.$inject = ['$window'];\r\nexport function RequiredIndicationIconDirective($window) {\r\n // Usage:\r\n // \r\n // Creates:\r\n // \r\n var directive: IDirective = {\r\n link: link,\r\n restrict: \"EA\",\r\n template,\r\n transclude: true,\r\n scope: {\r\n model: \"=\",\r\n modelName: \"@model\",\r\n fieldLabel: \"@\",\r\n requiredIf: \"=\",\r\n icon: \"@\",\r\n oid: \"=\",\r\n submissionMode: \"=?\"\r\n },\r\n require: '^form'\r\n\r\n };\r\n return directive;\r\n\r\n function link(scope, element, attrs, FormCtrl) {\r\n\r\n //REQUIRED TO SUBMIT :: default:false\r\n if (angular.isDefined(attrs.requiredToSubmit)) scope.requiredSubmit = true;\r\n\r\n //REQUIRED TO SAVE :: default:false\r\n if (angular.isDefined(attrs.requiredToSave)) scope.alwaysRequired = true;\r\n\r\n //watch for toggling of submission mode if required-if or required-to-submit is present\r\n else if (angular.isDefined(attrs.requiredIf) || angular.isDefined(attrs.requiredToSubmit)) {\r\n scope.$on('submission-mode-toggled', function (event, args) {\r\n scope.submissionMode = args.value;\r\n });\r\n\r\n if(angular.isUndefined(attrs.submissionMode)){\r\n scope.submissionMode = scope.$parent.submissionMode;\r\n }\r\n }\r\n\r\n // Field ID\r\n scope.fieldid = scope.modelName.replace(/[^a-zA-Z0-9]/g, '');\r\n scope.fieldid = scope.fieldid + Math.floor((Math.random() * 100000) + 1);\r\n\r\n \r\n // Actrion Mode\r\n if(angular.isUndefined(attrs.actionMode)){\r\n scope.actionMode = scope.$parent.actionMode;\r\n }\r\n\r\n\r\n \r\n //default validation messages \r\n var validationName = (angular.isDefined(scope.fieldLabel) && scope.fieldLabel.length < 30) ? scope.fieldLabel : 'This field';\r\n \r\n scope.validationMessages = {\r\n requiredToSubmit: validationName + \" is required to submit\",\r\n required: validationName + \" is required to submit\",\r\n requiredToSave: validationName + \" is required to save\"\r\n }\r\n\r\n //custom validation messages\r\n if (angular.isDefined(attrs.customValidationMessages)) {\r\n var msgs = scope.$eval(attrs.customValidationMessages);\r\n angular.forEach(Object.keys(msgs), function (key, i) {\r\n scope.validationMessages[key] = msgs[key];\r\n });\r\n }\r\n }\r\n }\r\n","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import { IDirective } from \"angular\";\r\nimport template from \"app/shared/directives/form-navigator.html\";\r\n\r\nFormNavigatorDirective.angularName = 'formNavigator'\r\nFormNavigatorDirective.$inject = ['$window'];\r\nconst FormNavCtrl$inject = [\"$scope\"]\r\nexport function FormNavigatorDirective($window) {\r\n // Usage:\r\n // \r\n // Creates:\r\n // \r\n var directive: IDirective = {\r\n link: link,\r\n restrict: 'EA',\r\n template,\r\n scope: {\r\n activeStep: \"=\",\r\n stairs: \"=\",\r\n direction: \"@\",\r\n setActiveStepFn:\"&?\"\r\n },\r\n controller: [...FormNavCtrl$inject, FormNavCtrl]\r\n };\r\n return directive;\r\n\r\n function link(scope, element, attrs) {\r\n \r\n var curIndex = scope.stairs.indexOf(scope.activeStep);\r\n //hide if previous button and on first step\r\n if (curIndex < 1 && scope.direction == 'Previous') scope.showButton = false;\r\n //else element.show();\r\n\r\n //hide if next button and on last step\r\n if (curIndex > (scope.stairs.length - 1) && scope.direction == 'Next') scope.showButton = false;\r\n\r\n scope.scrollToTop = function () {\r\n var $target = $target = $(\"#commonBanner\");\r\n $(\"body, html\").animate({ scrollTop: $target.offset().top }, \"slow\");\r\n }\r\n //element.bind('click', scope.goToStep);\r\n }\r\n\r\n function FormNavCtrl($scope) {\r\n $scope.showButton = true;\r\n\r\n $scope.$watch('activeStep', function () {\r\n var curIndex = $scope.stairs.indexOf($scope.activeStep);\r\n //hide if previous button and on first step\r\n if ($scope.direction == 'Previous') $scope.showButton = (curIndex > 0);\r\n\r\n //hide if next button and on last step\r\n if ($scope.direction == 'Next') $scope.showButton = (curIndex < ($scope.stairs.length - 1));\r\n })\r\n \r\n $scope.goToStep = function () {\r\n $scope.showButton = true;\r\n var curIndex = $scope.stairs.indexOf($scope.activeStep);\r\n if (curIndex > -1) {\r\n if ($scope.direction == 'Next') $scope.activeStep = $scope.stairs[curIndex + 1];\r\n if ($scope.direction == 'Previous') $scope.activeStep = $scope.stairs[curIndex - 1];\r\n if ($scope.setActiveStepFn && angular.isFunction($scope.setActiveStepFn)) $scope.setActiveStepFn()($scope.activeStep);\r\n $scope.scrollToTop();\r\n }\r\n }\r\n }\r\n }\r\n\r\n","// Module\nvar code = \"

    {{direction}}
    \";\n// Exports\nexport default code;","import { RequiredAttachmentsService } from \"../services\";\r\nimport { ModalController } from \"../controllers/modal.controller\";\r\nimport template from \"app/shared/directives/required-attachment.html\";\r\nimport { IDirective } from \"angular\";\r\n\r\nRequiredAttachmentDirective.angularName = 'requiredAttachment'\r\nRequiredAttachmentDirective.$inject = [RequiredAttachmentsService.angularName];\r\nconst RequiredAttachmentCtrl$inject = ['$scope', '$uibModal', RequiredAttachmentsService.angularName];\r\nexport function RequiredAttachmentDirective(requiredAttachments: RequiredAttachmentsService) {\r\n // Usage:\r\n // \r\n // Creates:\r\n // \r\n var directive: IDirective = {\r\n link: link,\r\n restrict: 'E',\r\n template,\r\n controller: [...RequiredAttachmentCtrl$inject, RequiredAttachmentCtrl],\r\n scope: {\r\n modelValue: '=',\r\n message: '@',\r\n attachmentId: '=',\r\n siteid: '=',\r\n nomodal: '='\r\n }\r\n };\r\n return directive;\r\n\r\n function link(scope, element, attrs) {\r\n scope.reqAttachmentObject = { attachmentId: scope.attachmentId, message: scope.message }\r\n //console.log(\"required attachment directive\", scope, element, attrs)\r\n //remove required attachment if the directive is destroyed \r\n scope.$on('$destroy', function () {\r\n \r\n if (scope.modelValue) {\r\n requiredAttachments.removeRequired(scope.reqAttachmentObject,scope.siteid);\r\n }\r\n });\r\n scope.originalValue = scope.modelValue;\r\n //scope.attachType = attrs['requiredAttachmentType'];\r\n scope.enableWatch();\r\n scope.obj_id = scope.$id;\r\n\r\n // if (angular.isDefined(attrs.noModal)) scope.noModal = true;\r\n }\r\n\r\n function RequiredAttachmentCtrl($scope, $uibModal: ng.ui.bootstrap.IModalService, requiredAttachments: RequiredAttachmentsService) {\r\n var reqAttachmentObject = { attachmentId: $scope.attachmentId, message: $scope.message }\r\n\r\n\r\n $scope.runValidation = function () {\r\n //if application is required\r\n if ($scope.modelValue) {\r\n requiredAttachments.addRequired($scope.reqAttachmentObject,$scope.siteid);\r\n $scope.uploadMessage = $scope.message;\r\n\r\n //open modal if hasnt been added yet\r\n if (($scope.modelValue !== $scope.originalValue) && !$scope.requirementAdded && ($scope.obj_id == $scope.$id) && !$scope.nomodal) {\r\n var modalInstance = $uibModal.open({\r\n animation: $scope.animationsEnabled,\r\n templateUrl: \"UploadModal.html\",\r\n controller: ModalController.angularName,\r\n scope: $scope\r\n });\r\n }\r\n $scope.requirementAdded = true;\r\n //if it was added, remove it when value is now false\r\n } else if ($scope.requirementAdded) {\r\n requiredAttachments.removeRequired($scope.reqAttachmentObject,$scope.siteid);\r\n }\r\n }\r\n\r\n $scope.enableWatch = function () {\r\n $scope.$watch('modelValue', function () {\r\n \r\n $scope.runValidation();\r\n })\r\n }\r\n\r\n\r\n }\r\n }\r\n\r\n","// Module\nvar code = \"<\" + \"script type=\\\"text/ng-template\\\" id=\\\"UploadModal.html\\\">
    \\r\\n

    \\r\\n {{uploadMessage}}\\r\\n

    \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    <\" + \"/script>\";\n// Exports\nexport default code;","import { AuthService } from \"../services\";\r\nimport { FormIds } from 'app/api';\r\n\r\nDownloadScorecardDirective.angularName = 'downloadScorecard'\r\nDownloadScorecardDirective.$inject = ['$window'];\r\nconst DownloadScorecardCtrl$inject = ['$scope', 'authService']\r\nexport function DownloadScorecardDirective($window) {\r\n // Usage:\r\n // \r\n // Creates:\r\n // \r\n var directive = {\r\n link: link,\r\n restrict: 'EA',\r\n controller : [...DownloadScorecardCtrl$inject, DownloadScorecardCtrl],\r\n scope: {\r\n 'displayid' : '=',\r\n 'fid': '=',\r\n 'appsequence': '='\r\n }\r\n };\r\n return directive;\r\n\r\n function link(scope, element, attrs) {\r\n element.on(\"click\", function () {\r\n var buildUrl = scope.urlBuilder(scope.displayid, scope.fid, scope.appsequence);\r\n //console.log(\"download scorecard url:\", buildUrl)\r\n\r\n window.open(buildUrl);\r\n });\r\n }\r\n\r\n function DownloadScorecardCtrl($scope, authService: AuthService) {\r\n //TODO call backend to get url or just build url here?\r\n $scope.urlBuilder = function (displayid, fid, appsequence) {\r\n var url = authService.app.StorageUrl;\r\n\r\n\t\t\t\tconst filename = getScorecardFileName(fid, displayid, appsequence);\r\n\r\n\t\t\t\t// scorecards are all in /scorecards/ directory.\r\n\t\t\t\turl += `scorecards/${filename}`;\r\n\r\n return url;\r\n };\r\n }\r\n }\r\n\r\nfunction getScorecardFileName(fid: number, displayId: string, appsequence: string): string {\r\n\tswitch (fid) {\r\n\t\t//hb2 2015 applications\r\n\t\tcase FormIds.HB2_2017_Application:\r\n\t\t\treturn `Scorecard_${displayId}.PDF?v=1`;\r\n\t\t// ss 2020 full app\r\n\t\tcase FormIds.SMART_SCALE_2020_Application:\r\n\t\t\treturn `scorecard2020_${displayId}.pdf`;\r\n\t\tcase FormIds.SMART_SCALE_2022_Application:\r\n\t\t\treturn `scorecard2022_${displayId}.pdf`;\r\n\t\tcase FormIds.SMART_SCALE_2024_Application:\r\n\t\t\treturn `scorecard2024_${displayId}.pdf`;\r\n\t\t//other programs\r\n\t\tdefault:\r\n\t\t\treturn `Scorecard_${appsequence}.PDF?v=1`;\r\n\t}\r\n}\r\n","\r\nHasPermissionDirective.angularName = 'hasPermission'\r\nHasPermissionDirective.$inject = ['$window','formService'];\r\nexport function HasPermissionDirective($window, formService) {\r\n // Usage:\r\n // \r\n // Creates:\r\n // \r\n var directive = {\r\n link: link,\r\n restrict: 'A',\r\n scope: {\r\n hasPermission : '@'\r\n }\r\n };\r\n return directive;\r\n\r\n function link(scope, element, attrs) {\r\n \r\n //retrieve permissions from form service \r\n var perms = formService.data.permissions;\r\n //map permission array to uppercase to be case insensitive \r\n perms = perms.map(function (value) {\r\n return value.toUpperCase();\r\n });\r\n\r\n //console.log(\"perms\", scope, perms)\r\n //hide element if user doesn't have the permission passed in \r\n if (perms.indexOf(scope.hasPermission.toUpperCase()) == -1) {\r\n element.hide();\r\n }\r\n \r\n\r\n }\r\n }\r\n\r\n","import { IDirective } from \"angular\";\r\nimport template from \"app/shared/directives/pdf-export.html\";\r\n\r\nPdfExport.angularName = 'pdfExport'\r\nPdfExport.$inject = ['$window'];\r\nconst PdfExportCtrl$inject = ['$scope'];\r\nexport function PdfExport($window) {\r\n // Usage:\r\n // \r\n // Creates:\r\n // \r\n var directive: IDirective = {\r\n link: link,\r\n restrict: \"EA\",\r\n template,\r\n controller: [...PdfExportCtrl$inject, PdfExportCtrl]\r\n };\r\n return directive;\r\n\r\n function link(scope, element, attrs) {\r\n }\r\n\r\n function PdfExportCtrl($scope) {\r\n $scope.year = null;\r\n\r\n //TODO: pull years from database? \r\n $scope.years = [];\r\n $scope.startYear = 2015;\r\n var curSubmitYear = 2017;\r\n\r\n $scope.year = curSubmitYear;\r\n while (curSubmitYear >= $scope.startYear) {\r\n $scope.years.push({ label: \"FY \" + (curSubmitYear + 2), value: curSubmitYear });\r\n curSubmitYear--;\r\n }\r\n\r\n }\r\n }\r\n\r\n","// Module\nvar code = \"

    Export Applications

    \";\n// Exports\nexport default code;","import { ErrorLogClient } from \"app/api\";\r\n\r\nexport class ErrorLogService {\r\n\tstatic angularName = 'errorLogService';\r\n\r\n\tstatic $inject = ['$http', '$q'];\r\n\tconstructor($http: ng.IHttpService, $q: ng.IQService) {\r\n\t\tthis.errorLogClient = new ErrorLogClient($http, $q);\r\n\t}\r\n\tprivate readonly errorLogClient: ErrorLogClient;\r\n\r\n\tpublic getGridData() {\r\n\t\treturn this.errorLogClient.search();\r\n\t}\r\n\r\n\tpublic get(id: number) {\r\n\t\treturn this.errorLogClient.get(id);\r\n\t}\r\n}\r\n","import { ProgramApplicationService, ComparisonService } from \"../services\";\r\nimport template from 'app/shared/directives/compare-diff-button.html';\r\nimport { IDirective } from \"angular\";\r\n\r\nCompareDiffButtonDirective.angularName = 'compareDiffButton'\r\nCompareDiffButtonDirective.$inject = ['$window'];\r\nconst CompareCtrl$inject = ['$scope', ProgramApplicationService.angularName, 'Notification', ComparisonService.angularName, '$anchorScroll', '$location', '$timeout']\r\nexport function CompareDiffButtonDirective($window) {\r\n var directive: IDirective = {\r\n link: link,\r\n restrict: 'EA',\r\n template ,\r\n controller: [...CompareCtrl$inject, CompareCtrl],\r\n scope: {\r\n availableVersions: '=',\r\n appid: '='\r\n }\r\n };\r\n return directive;\r\n\r\n function link(scope, element, attrs) {\r\n\r\n }\r\n\r\n function CompareCtrl($scope, programApplicationService: ProgramApplicationService, Notification: ng.uiNotification.INotificationService, comparisonService: ComparisonService, $anchorScroll: ng.IAnchorScrollService, $location: ng.ILocationService, $timeout: ng.ITimeoutService) {\r\n $scope.close = function () {\r\n $scope.isDiffPopOpen = false;\r\n $scope.DiffModeEnabled = false;\r\n\r\n comparisonService.close();\r\n };\r\n\r\n $scope.loadComparison = function (compareId) {\r\n programApplicationService.getApplicationDifferences($scope.appid, compareId).then(function (response) {\r\n comparisonService.init(response);\r\n $scope.isDiffPopOpen = false;\r\n $scope.DiffModeEnabled = true;\r\n $scope.currDiff = 0;\r\n //timeout angular hack to allow all DOM manipulation to finish before loading diff id's\r\n $timeout(function() {\r\n $scope.diffIdArray = comparisonService.getDiffIds();\r\n $scope.totalDiff = $scope.diffIdArray.length;\r\n }, 2000);\r\n \r\n }, function (error) {\r\n console.error(error);\r\n // error notification to user is handled in AuthInterceptor\r\n });\r\n };\r\n\r\n //go to previous element in diff id array \r\n $scope.scrollToPrevDiff = function () {\r\n //reset back to one if at end of diff array\r\n if ($scope.currDiff > 1){\r\n $scope.currDiff--;\r\n }\r\n else {\r\n $scope.currDiff = $scope.totalDiff;\r\n }\r\n setNextElementAndScroll();\r\n };\r\n\r\n //go to next element if diff id array\r\n $scope.scrollToNextDiff = function () {\r\n //reset back to one if at end of diff array\r\n if ($scope.currDiff < $scope.totalDiff){\r\n $scope.currDiff++;\r\n }\r\n else {\r\n $scope.currDiff = 1;\r\n }\r\n setNextElementAndScroll(); \r\n };\r\n\r\n function setNextElementAndScroll() {\r\n var id = $scope.diffIdArray[$scope.currDiff - 1];\r\n var nextElement = angular.element(document.getElementById(id));\r\n //add the diff-highlight class to the next diff \r\n nextElement.addClass('diff-highlight');\r\n //if theres already the diff highlight class applied somewhere, remove it\r\n if (angular.isDefined($scope.currentElement)) {\r\n $scope.currentElement.removeClass('diff-highlight');\r\n }\r\n $scope.currentElement = nextElement;\r\n\r\n //scroll to the diff\r\n $anchorScroll(id);\r\n }\r\n }\r\n }\r\n\r\n","// Module\nvar code = \"
    {{currDiff}} / {{totalDiff}}


    <\" + \"script type=\\\"text/ng-template\\\" id=\\\"ComparePopover.html\\\">
    \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n\\r\\n \\r\\n
    <\" + \"/script> \";\n// Exports\nexport default code;","\r\n\r\nimport { ProgramApplicationService, UserService, AuthService, EventService, LookupService } from \"app/shared/services\";\r\n\r\nimport { AppRootScope, AppConfig } from \"app/interfaces\";\r\nimport { ProgramIds, SecurityActionIds } from \"app/api\";\r\n\r\nimport template from './grid-filters.html';\r\nimport { BulkSubmitFilterBroadcast } from \"../../../dashboard/bulk-submit/bulk-submit-form/bulk-submit-form.controller\";\r\n\r\nGridFiltersDirective.angularName = 'gridFilters';\r\nGridFiltersDirective.$inject = ['CONFIG'];\r\nconst GridFilterCtrl$inject = ['$scope', '$timeout', EventService.angularName, ProgramApplicationService.angularName, \"$rootScope\", UserService.angularName, AuthService.angularName, LookupService.angularName];\r\nexport function GridFiltersDirective(CONFIG: AppConfig) {\r\n // Usage:\r\n // \r\n // Creates:\r\n // \r\n var directive = {\r\n link: link,\r\n controller: [...GridFilterCtrl$inject, GridFilterCtrl],\r\n restrict: 'EA',\r\n template,\r\n scope: {\r\n grid: '=',\r\n filterProps: '=',\r\n program: '=',\r\n\t\t\ttargetGrid: '@',\r\n\t\t\tapplyFilters: '&',\r\n\t\t\thideFiscalYear: '<',\r\n\t\t}\r\n\t};\r\n\treturn directive;\r\n\r\n function link(scope, element, attrs) {\r\n //scope.showFilters = true;\r\n\r\n scope.lovs = angular.copy(CONFIG.app.Lookups);\r\n scope.showStatus = function (status) {\r\n \t//return status.name === 'Pending' || status.name === 'Submitted';\r\n \treturn true;\r\n }\r\n if (!attrs.public) {\r\n //if (scope.program.fid === 2) scope.getSmartScaleDDLOptions();\r\n \tscope.getDDLOptions();\r\n }\r\n scope.getAppTypes();\r\n // Add \"Central Office\" (not a real district) to the District Filter for special case of \"VDOT District\" attribute in HSIP applications\r\n scope.districtFilterOptions = angular.copy(scope.lovs.districts);\r\n scope.districtFilterOptions.push({ id: 0, name: \"Central Office\" });\r\n\r\n\t\tconst orgFilterBlackList = ['Worldview Solutions', 'UNASSIGNED', 'VDOT Scoring Team']\r\n\t\tscope.orgFilterOptions = angular.copy(scope.lovs.organizations.filter((o) => !orgFilterBlackList.includes(o.name)));\r\n scope.addPlaceHolders();\r\n }\r\n\r\n\tfunction GridFilterCtrl($scope: ng.IScope | any, $timeout: ng.ITimeoutService, eventService: EventService, programApplicationService: ProgramApplicationService, $rootScope: AppRootScope, userService: UserService, authService: AuthService, lookupService: LookupService) {\r\n $scope.Programs = ProgramIds;\r\n\r\n\t\t$scope.canEditReviewPriority = authService.user.canEditReviewPriority;\r\n\t\t$scope.canViewScreenings = authService.user.canViewScreenings;\r\n\r\n $scope.filterIdAppNames = [];\r\n\r\n\t\t//popoulate fiscal year for 'all' program in the Tools grid filter\r\n\t\tif($scope.program?.name === 'All') {\r\n\t\t\t$scope.program.fiscalYears = [2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027];\r\n\t\t}\r\n //this populates the Comments/Alerts Status dropdown filter\r\n $scope.commentStatusDropdown = [\r\n { name: \"Open Comments\", value: \"OpenComments\" },\r\n { name: \"Open Comments to State Users\", value: \"OpenCommentsToState\" },\r\n { name: \"Open Comments to Applicants\", value: \"OpenCommentsToApplicant\" },\r\n { name: \"Open Alerts\", value: \"OpenAlerts\" },\r\n { name: \"Open Alerts with Replies\", value: \"OpenAlertsWithReplies\" },\r\n { name: \"Open Concurrence Alerts\", value: \"OpenConcurrenceAlerts\" },\r\n { name: \"Open Concurrence Alerts with Replies\", value: \"OpenConcurrenceAlertsWithReplies\" }\r\n ];\r\n\r\n //this populates the District Validation Status dropdown filter\r\n $scope.districtValidationStatusDropdown = [\r\n { name: \"Not Started\", value: \"NotStarted\" },\r\n { name: \"In Progress\", value: \"InProgress\" },\r\n { name: \"Submitted\", value: \"Submitted\" }\r\n ];\r\n\r\n //this populates the CO Validation Status dropdown filter\r\n $scope.coValidationStatusDropdown = [\r\n { name: \"Not Started\", value: \"NotStarted\" },\r\n { name: \"In Progress\", value: \"InProgress\" }\r\n\t\t];\r\n\r\n\t\t//this populates the SGRB Condition dropdown filter\r\n\t\t$scope.bridgeConditionDropdown = [\r\n\t\t\t{ name: '-- Condition --', id: null },\r\n\t\t\t{ name: \"4- SD\", value: 4 },\r\n\t\t\t{ name: \"5 - Cusp\", value: 5 },\r\n\t\t];\r\n\r\n\t\t//this populates the Project Feature dropdown filter\r\n\t\tlookupService.getSmartScaleFeatures().then(features => {\r\n\t\t\tconst names = features.map(feature => feature.options.map(option => ({ group: feature.title, displayname: option.name, attributename: option.model })));\r\n\t\t\tvar result = [].concat.apply([], names);\r\n\t\t\t\r\n\t\t\t$scope.projectFeatureDropdown = result;\r\n $scope.projectFeatureDropdown.unshift({ displayname: '-- Options --', attributename: null });\r\n\t\t});\r\n\r\n //this populates the risk level filter\r\n\t\tlookupService.getRiskLevel().then(risks => {\r\n\t\t\t$scope.riskLevels = risks;\r\n $scope.riskLevels.unshift({ name: '-- Options --', id: null });\r\n\t\t});\r\n\r\n\t\t//this populates the applicant SUPS dropdown filter\r\n\t\t$scope.applicantSUPSReviewDropdown = [\r\n\t\t\t{ name: \"Applicant Agree\", value: \"ApplicantAgree\" },\r\n\t\t\t{ name: \"Applicant Disagree\", value: \"ApplicantDisagree\" },\r\n\t\t\t{ name: \"Action Needed\", value: \"ApplicantActionNeeded\" }\r\n\t\t];\r\n\r\n\t\t//this populates the CO Validation SUPS dropdown filter\r\n\t\t$scope.reviewerSUPSReviewDropdown = [\r\n\t\t\t{ name: \"Applicant Agree\", value: \"ApplicantAgree\" },\r\n\t\t\t{ name: \"Applicant Disagree\", value: \"ApplicantDisagree\" },\r\n\t\t\t{ name: \"Applicant Action Needed\", value: \"ApplicantActionNeeded\" },\r\n\t\t\t{ name: \"District Agree\", value: \"DistrictAgree\" },\r\n\t\t\t{ name: \"District Disagree\", value: \"DistrictDisagree\" },\r\n\t\t\t{ name: \"District Action Needed\", value: \"DistrictActionNeeded\" }\r\n\t\t];\r\n\r\n\t\t//this populates the creation method dropdown filter for PreScoping\r\n\t\tlookupService.getCreationMethod().then(methods => {\r\n\t\t\t$scope.creationMethods = methods;\r\n $scope.creationMethods.unshift({ name: '-- Creation Method --' , id: null });\r\n\t\t});\r\n\r\n\t\t//this populates the Year Approved dropdown filter for PreScoping: include every year from 2020 to current year\r\n\t\t$scope.yearApprovedDropDown = ['-- Year Approved --'];\r\n\t\tfor (let yearAppr = 2020; yearAppr <= (new Date()).getFullYear(); yearAppr++)\r\n\t\t\t$scope.yearApprovedDropDown.push(yearAppr);\r\n\r\n $scope.getAppTypes = function() {\r\n\t\t\tconst pid = $scope.program?.pid;\r\n\t\t\tif (!pid) {\r\n\t\t\t\t$scope.applicationTypeOptions = [];\r\n $scope.applicationTypeOptions.unshift('-- Application Type --');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n programApplicationService.getApplicationTypes(pid).then(function(response) {\r\n \r\n $scope.applicationTypeOptions = response;\r\n $scope.applicationTypeOptions.unshift('-- Application Type --');\r\n });\r\n };\r\n\r\n $scope.clearFilters = function() {\r\n // kero 10/1/2018 comment line below because it makes no sense \r\n // $scope.filterProps = new Map();\r\n $scope.filterProps = {};\r\n $rootScope.$broadcast('clear-uis-input');\r\n $timeout(function() {\r\n if (Object.keys($scope.filterProps).length === 0) {\r\n\t\t\t\t\t$scope.applyFilters();\r\n\t\t\t\t}\r\n });\r\n $rootScope.hideDropDowns();\r\n };\r\n\r\n // Activate grid search when user presses Enter when ID / Name filter has focus\r\n $scope.textFilterKeyPress = function(keyEvent) {\r\n // 13 is Enter key\r\n if (keyEvent.which === 13) {\r\n\t\t\t\t$scope.applyFilters();\r\n\t\t\t}\r\n };\r\n\r\n $scope.getDDLOptions = function() {\r\n let pid = $scope.program?.pid ?? 0;\r\n\r\n programApplicationService.getApplicationStatusDDLOptions(pid).then(function(response) {\r\n $scope.applicationStatusOptions = response;\r\n $scope.applicationStatusOptions.unshift({ name: '-- Status --', id: null });\r\n });\r\n };\r\n\r\n //watch for a change in program to reload possible statuses \r\n $scope.$watch('program',\r\n function(newValue, oldValue, scope) {\r\n if (newValue.pid !== oldValue.pid) {\r\n $scope.getDDLOptions();\r\n $scope.getAppTypes();\r\n }\r\n });\r\n\r\n //this is for populating the lsit of users in author dropdown \r\n var usersLoaded = false;\r\n $scope.loadUsers = function() {\r\n if (!usersLoaded) {\r\n $scope.dropdownForCommentTextSearch = [\r\n {\r\n fullname: (\"(Me) \" +\r\n $rootScope.authService.user.firstname +\r\n \" \" +\r\n $rootScope.authService.user.lastname),\r\n uid: $rootScope.authService.user.uid\r\n }\r\n ];\r\n var pagingOptions = {\r\n \"PageSize\": 5000,\r\n \"PageNumber\": 0,\r\n \"OrderBy\": \"lastname,firstname\",\r\n \"OrderDesc\": false,\r\n \"FilterProps\": { \"text\": null, \"orgid\": null }\r\n };\r\n userService.getPage(pagingOptions).then(function(result) {\r\n //result = result.unshift()\r\n $scope.dropdownForCommentTextSearch = $scope.dropdownForCommentTextSearch.concat(result.Results);\r\n usersLoaded = true;\r\n });\r\n }\r\n };\r\n\r\n\r\n //writes to the uid field on slection from autocomplete dropdown \r\n $scope.selectUser = function(userObject) {\r\n \r\n $scope.filterProps.CommentAuthorUid = userObject.uid;\r\n };\r\n\r\n //clears out the uid field if the author field is removed \r\n $scope.checkForAuthorClear = function(author) {\r\n if (author === null || \"\") $scope.filterProps.CommentAuthorUid = null;\r\n };\r\n\r\n $scope.addPlaceHolders = function() {\r\n $scope.secondReviewPriorityFilterOptions = angular.copy($scope.lovs.reviewPriority);\r\n $scope.lovs.psProgramRequested.unshift({ name: '-- Funding Program --', id: null });\r\n $scope.lovs.organizationTypes.unshift({ name: '-- Organization Type --', id: null });\r\n $scope.lovs.eligibleNetworks.unshift({ name: '-- Eligible Networks --', id: null });\r\n $scope.lovs.projectTypes.unshift({ name: '-- Principal Improvement Type --', id: null });\r\n $scope.lovs.jurisdictions.unshift({ name: '-- Jurisdiction --', id: null });\r\n $scope.lovs.psPrincipleImprovements.unshift({ name: '-- Principal Improvement Type --', id: null });\r\n $scope.lovs.reviewPriority.unshift({ name: '-- Primary Reviewers --', id: null });\r\n $scope.secondReviewPriorityFilterOptions.unshift({ name: '-- Secondary Reviewers --', id: null }); \r\n $scope.districtFilterOptions.unshift({ name: '-- District --' , id: null });\r\n $scope.orgFilterOptions.unshift({ name: '-- Organization --', id: null });\r\n $scope.commentStatusDropdown.unshift({ name: '-- Comment/Alert Status --', value: null });\r\n $scope.districtValidationStatusDropdown.unshift({ name: '-- Options --', value: null });\r\n $scope.coValidationStatusDropdown.unshift({ name: '-- Options --', value: null });\r\n $scope.applicantSUPSReviewDropdown.unshift({ name: '-- Options --', value: null });\r\n $scope.reviewerSUPSReviewDropdown.unshift({ name: '-- Options --', value: null });\r\n }\r\n\r\n $scope.refreshAppIds = async function(IdAppName: string){\r\n $scope.filterProps.IdAppName = IdAppName;\r\n if(!IdAppName || IdAppName == '')\r\n return $scope.filterIdAppNames = [];\r\n \r\n $scope.filterIdAppNames = [{ name: '-- App Id / App Name --', value: null }];\r\n var actionId = $scope.filterProps.SecurityActionId ? $scope.filterProps.SecurityActionId : SecurityActionIds.View;\r\n var result = (await programApplicationService.getDashboardAppByIdAppName(IdAppName, actionId, $scope.program?.pid))\r\n result = result.map(record => {\r\n return { \r\n name: record.id.toString(),\r\n appName: record.name,\r\n value: record.id,\r\n display_id: record.display_id\r\n }\r\n });\r\n $scope.filterIdAppNames = $scope.filterIdAppNames.concat(result);\r\n return result;\r\n }\r\n\r\n // sets input to what users types\r\n $scope.onClickAppIdName = function (select, item){\r\n if(item.value == null){\r\n select.search = ''\r\n }\r\n else{\r\n select.search = item.name;\r\n }\r\n }\r\n\r\n //sets the grid filter to the forms fiscal year that is currently in its intake window \r\n $rootScope.$on(BulkSubmitFilterBroadcast,\r\n function(evt, data) {\r\n // @ts-ignore\r\n $scope.filterProps = new Map();\r\n $scope.filterProps = {};\r\n $scope.filterProps.FiscalYear = data.fiscalYear;\r\n $scope.filterProps.OrgId = data.OrgId;\r\n\r\n $scope.applyFilters();\r\n });\r\n } \r\n }\r\n\r\n","// Module\nvar code = \"
    {{$select.selected.name}}
    {{$select.selected.name}}
    {{$select.selected.name}}
    {{$select.selected}}
    {{$select.selected.name}}
    {{$select.selected}}
    {{$select.selected.name}}
    {{$select.selected}}
    {{$select.selected.name}}
    {{$select.selected.name}}
    {{$select.selected.name}}
    {{$select.selected.name}}
    {{$select.selected.name}}
    {{$select.selected.name}}
    {{$select.selected.name}}
    {{$select.selected.name}}
    {{$select.selected.name}}
    {{$select.selected.name}}
    {{$select.selected.name}}
    {{$select.selected.name}}
    {{$select.selected.name}}
    {{$select.selected.displayname}}
    {{$select.selected.name}}
    {{$select.selected.name}}
    {{$select.selected.name}}
    \";\n// Exports\nexport default code;","import { angularModule } from 'angular-utilities';\r\nimport { ReviewPriorityComponentName, review_priority_component } from \"./components/reviewPriority/review-priority.component\";\r\nimport { VitaPasswordDirective } from './directives/vita.password.directive';\r\nimport { CircleNumberDirective } from './directives/circle-number.directive';\r\nimport { RestrictToDirective } from './directives/restrict-to.directive';\r\nimport { AuthorizedDirective } from './directives/authorized.directive';\r\nimport { IfAuthorizedDirective } from './directives/if-authorized.directive';\r\nimport { ScrollToDirective } from './directives/scroll-to.directive';\r\nimport { PearlDirective } from './directives/pearl.directive';\r\nimport { RequiredIndicationIconDirective } from './directives/required-indication-icon.directive';\r\nimport { FormNavigatorDirective } from './directives/form-navigator.directive';\r\nimport { RequiredAttachmentDirective } from './directives/required-attachment.directive';\r\nimport { DownloadScorecardDirective } from './directives/download-scorecard.directive';\r\nimport { HasPermissionDirective } from './directives/has-permission.directive';\r\nimport { PdfExport } from './directives/pdf-export.directive';\r\nimport { ErrorLogService } from './services/errorLog.factory';\r\nimport { ModalController } from './controllers/modal.controller';\r\nimport { CompareDiffButtonDirective } from './directives/compare-diff-button.directive';\r\nimport { GridFiltersDirective } from './directives/grid-filters/grid-filters.directive';\r\nimport { comments_panel } from \"app/shared/directives/comments-panel/comments-panel.directive\";\r\nimport {ApplicationService} from \"app/shared/services/application.service\";\r\n\r\nexport const CommonModule = angularModule('CommonModule', [])\r\n\t.service(ApplicationService.angularName, ApplicationService)\r\n\t.directive(GridFiltersDirective.angularName, GridFiltersDirective)\r\n\t.component(ReviewPriorityComponentName, review_priority_component)\r\n\t.directive(CompareDiffButtonDirective.angularName, CompareDiffButtonDirective)\r\n\t.directive(VitaPasswordDirective.angularName, VitaPasswordDirective)\r\n\t.directive(CircleNumberDirective.angularName, CircleNumberDirective)\r\n\t.directive(RestrictToDirective.angularName, RestrictToDirective)\r\n\t.directive(AuthorizedDirective.angularName, AuthorizedDirective)\r\n\t.directive(IfAuthorizedDirective.angularName, AuthorizedDirective)\r\n\t.directive(ScrollToDirective.angularName, ScrollToDirective)\r\n\t.directive(PearlDirective.angularName, PearlDirective)\r\n\t.directive(FormNavigatorDirective.angularName, FormNavigatorDirective)\r\n\t.directive(RequiredIndicationIconDirective.angularName, RequiredIndicationIconDirective)\r\n\t.directive(RequiredAttachmentDirective.angularName, RequiredAttachmentDirective)\r\n\t.directive(DownloadScorecardDirective.angularName, DownloadScorecardDirective)\r\n\t.directive(HasPermissionDirective.angularName, HasPermissionDirective)\r\n\t.directive(PdfExport.angularName, PdfExport)\r\n\t.controller(ModalController.angularName, ModalController)\r\n\t.service(ErrorLogService.angularName, ErrorLogService)\r\n\t.directive(comments_panel.angularName, comments_panel)\r\n\t.name;\r\n","/*\r\nTelephone Filter \r\nFormats telephone numbers in views\r\n*/\r\nexport const TelephoneFilterName = 'tel';\r\nexport function TelephoneFilter(tel: string) {\r\n if (!tel) {\r\n return \"\";\r\n }\r\n\r\n var value = tel.toString().trim().replace(/^\\+/, \"\");\r\n\r\n if (value.match(/[^0-9]/)) {\r\n return tel;\r\n }\r\n\r\n var country, city, number;\r\n\r\n switch (value.length) {\r\n case 10: // +1PPP####### -> C (PPP) ###-####\r\n country = 1;\r\n city = value.slice(0, 3);\r\n number = value.slice(3);\r\n break;\r\n\r\n case 11: // +CPPP####### -> CCC (PP) ###-####\r\n country = value[0];\r\n city = value.slice(1, 4);\r\n number = value.slice(4);\r\n break;\r\n\r\n case 12: // +CCCPP####### -> CCC (PP) ###-####\r\n country = value.slice(0, 3);\r\n city = value.slice(3, 5);\r\n number = value.slice(5);\r\n break;\r\n\r\n default:\r\n return tel;\r\n }\r\n\r\n if (country == 1) {\r\n country = \"\";\r\n }\r\n\r\n number = number.slice(0, 3) + \"-\" + number.slice(3);\r\n\r\n return (country + \" (\" + city + \") \" + number).trim();\r\n}\r\n","export const StartFromFilterName = 'startFrom';\r\nexport function StartFromFilter(input: T[], start: number | string) {\r\n return input.slice(+start);\r\n}\r\n","export const RangeFilterName = 'range';\r\n\r\nexport function RangeFilter(val: number[], range: string | number) {\r\n\tif (typeof range === 'undefined' || range === null || typeof val !== 'object' || !angular?.isArray(val)) {\r\n\t\treturn val;\r\n\t}\r\n\tconst rangeInt = parseInt(range.toString());\r\n\tfor (let i = 0; i < rangeInt; i++) {\r\n\t\tval.push(i);\r\n\t}\r\n\treturn val;\r\n}\r\n","export const ConvertDateFilterName = 'convertDate';\r\nexport function ConvertDateFilter(input: string | Date) {\r\n\treturn new Date(input);\r\n}\r\n","import { angularModule } from 'angular-utilities';\r\nimport { TelephoneFilter, TelephoneFilterName } from './tel';\r\nimport { StartFromFilter, StartFromFilterName } from './startFrom';\r\nimport { RangeFilter, RangeFilterName } from './range';\r\nimport { ConvertDateFilter, ConvertDateFilterName } from './convertDate';\r\n\r\n/** Collection of common AngularJS Filters. Can be invoked thru template pipes or by $filter. */\r\nexport const FiltersModule = angularModule('FiltersModule', [])\r\n\t.filter(TelephoneFilterName, () => TelephoneFilter)\r\n\t.filter(StartFromFilterName, () => StartFromFilter)\r\n\t.filter(RangeFilterName, () => RangeFilter)\r\n\t.filter(ConvertDateFilterName, () => ConvertDateFilter)\r\n\t.name;\r\n\r\n/** FilterService typing shim.\r\n * Enables typing for usage of $filter('filterName')\r\n * Add all filters to this interface and reference it anytime you would use $filter.\r\n*/\r\nexport interface FilterService extends ng.IFilterService {\r\n tel: typeof TelephoneFilter;\r\n startFrom: typeof StartFromFilter;\r\n\trange: typeof RangeFilter;\r\n}\r\n","// Imports\nimport ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \"../../../node_modules/html-loader/dist/runtime/getUrl.js\";\nvar ___HTML_LOADER_IMPORT_0___ = new URL(\"/images/Header/SmartPortal-Header-Logo_1_OIPI.png\", import.meta.url);\nvar ___HTML_LOADER_IMPORT_1___ = new URL(\"/images/Header/SmartPortal-Header-Logo_2_DRPT.png\", import.meta.url);\nvar ___HTML_LOADER_IMPORT_2___ = new URL(\"/images/Header/SmartPortal-Header-Logo_3_VDOT.png\", import.meta.url);\n// Module\nvar ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___);\nvar ___HTML_LOADER_REPLACEMENT_1___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_1___);\nvar ___HTML_LOADER_REPLACEMENT_2___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_2___);\nvar code = \" \";\n// Exports\nexport default code;","import { ProgramApplicationService, AuthService } from 'app/shared/services';\r\nimport { AppConfig } from 'app/interfaces';\r\n\r\nimport template from './header.html';\r\n\r\nMainHeader.angularName = 'mainHeader'\r\nMainHeader.$inject = ['$q', 'authService', '$http', 'CONFIG'];\r\nexport function MainHeader($q, authService: AuthService, $http, CONFIG: AppConfig) {\r\n // Usage:\r\n // \r\n // Creates:\r\n // \r\n\r\n var directive = {\r\n link: link,\r\n restrict: \"EA\",\r\n template,\r\n };\r\n return directive;\r\n\r\n function link(scope, element, attrs) {\r\n scope.authService = authService;\r\n scope.appCount = false;\r\n\r\n scope.runAdminChecks = function () {\r\n var dfds = $q.defer();\r\n\r\n //admin tools \r\n $http.get(\"/api/file/CanSeeBulkDownload\").then(function (response) {\r\n scope.canSeeAdminTools = response.data;\r\n }, function (error) {\r\n console.error(error);\r\n });\r\n\r\n return dfds.promise;\r\n };\r\n\r\n if (authService.loggedIn) {\r\n scope.runAdminChecks();\r\n }\r\n\r\n scope.$watch('authService.loggedIn', function (newValue, oldValue) {\r\n if (CONFIG.user) {\r\n scope.canSeeSyipRecordList = CONFIG.user.canAccessSYIPRecord;\r\n scope.canSeeProjectList = !!(CONFIG.user.viewProjectAccessLevels && CONFIG.user.viewProjectAccessLevels.length > 0);\r\n }\r\n });\r\n \r\n }\r\n }\r\n\r\n","import { AppRootScope } from \"app/interfaces\";\r\nimport { angularModule } from 'angular-utilities';\r\nimport { IDirective } from \"angular\";\r\nimport template from \"app/shared/modules/model.state.error.directive.html\";\r\n\r\n\r\n\r\n\r\n// var module = angular.module(\"appErrorModule\", []);\r\n\r\n// module.directive(\"modelStateError\", modelStateErrorDirective);\r\n// module.provider(\"appErrors\", errorProvider as any);\r\n\r\n// TODO make this a class, dont do an object clone thing, document what this thing is supposed to do and why and where.\r\n\r\nerrorProvider.angularName = 'appErrors'\r\nfunction errorProvider() {\r\n this.options = {\r\n // send our error to some server?\r\n sendErrorToServer: false,\r\n // URL of place to accept our errors\r\n errorEndpointURL: \"\",\r\n // display an error notification when an error is reported\r\n displayNotification: true,\r\n // template for our model state (key/value) errors\r\n modelStateTemplateURL: \"\",\r\n type: \"error\"\r\n };\r\n\r\n var errors = [];\r\n var modelStateTemplate = \"
    • {{key || \\\"UnknownError\\\"}}: {{value}}
    \";\r\n\r\n this.setOptions = function (options) {\r\n if (!angular.isObject(options)) throw new Error(\"Options should be an object!\");\r\n this.options = angular.extend({}, this.options, options);\r\n };\r\n\r\n function AppError(error) {\r\n this.error = error;\r\n this.errorAsHTML = \"\";\r\n }\r\n\r\n this.$get = [\r\n \"$http\", \"Notification\", \"$compile\", \"$rootScope\", \"$timeout\", \"$q\", function ($http, Notification: ng.uiNotification.INotificationService, $compile, $rootScope: AppRootScope, $timeout, $q) {\r\n var options = this.options;\r\n\r\n var parseError = function (appError) {\r\n var dfd = $q.defer();\r\n var wrappedError = appError.error;\r\n\r\n var errorType = typeof (wrappedError);\r\n if (errorType === \"string\") {\r\n appError.errorAsHTML = wrappedError;\r\n dfd.resolve(appError);\r\n } else if (wrappedError instanceof Error) {\r\n appError.errorAsHTML = wrappedError.message;\r\n dfd.resolve(appError);\r\n }\r\n // Expect dictionary object\r\n else if (errorType === \"object\") {\r\n var elm = $compile(modelStateTemplate)(angular.extend($rootScope.$new(), appError));\r\n // compile waits on digest cycles so we use an empty timeout which will wait for the next one\r\n $timeout(function () {\r\n appError.errorAsHTML = elm.html();\r\n dfd.resolve(appError);\r\n });\r\n }\r\n\r\n return dfd.promise;\r\n };\r\n\r\n // set model state template url\r\n if (options.modelStateTemplateURL) {\r\n $http.get(options.modelStateTemplateURL).then(function (html) {\r\n modelStateTemplate = html;\r\n });\r\n }\r\n\r\n var service = {\r\n reportError: reportError\r\n };\r\n\r\n function reportError(error, opts) {\r\n opts = angular.extend({}, options, opts || {});\r\n\r\n var appError = new AppError(error);\r\n errors.push(appError);\r\n var parsedError = parseError(appError);\r\n\r\n if (opts.sendErrorToServer && opts.errorEndpointURL) {\r\n // TODO: Implement\r\n }\r\n\r\n if (opts.displayNotification) {\r\n parsedError.then(function (appError) {\r\n Notification[opts.type]({ message: appError.errorAsHTML, title: \" \" + opts.type.toUpperCase() });\r\n });\r\n }\r\n }\r\n\r\n return service;\r\n }\r\n ];\r\n}\r\n\r\nmodelStateErrorDirective.$inject = [];\r\nmodelStateErrorDirective.angularName = 'modelStateError'\r\nfunction modelStateErrorDirective() {\r\n // Usage:\r\n // \r\n // Creates:\r\n // \r\n var directive: IDirective = {\r\n link: link,\r\n restrict: \"EA\",\r\n scope: {\r\n appError: \"=\"\r\n },\r\n template\r\n };\r\n return directive;\r\n\r\n function link(scope, elm, attrs, ctrl) {\r\n scope.unknownErrorKey = attrs.blankKey || \"UNKNOWN_ERROR\";\r\n }\r\n}\r\n\r\nexport const AppErrorModule = angularModule('appErrorModule', [])\r\n .directive(modelStateErrorDirective.angularName, modelStateErrorDirective)\r\n .provider(errorProvider.angularName, errorProvider as any)\r\n .name\r\n","// Module\nvar code = \"
    {{error.ErrorMessage}}

    \";\n// Exports\nexport default code;","import {AuthService, NoticeService} from \"app/shared/services\";\r\nimport {StateService} from \"@uirouter/core\";\r\nimport noticeTemplate from './noticeModal.html';\r\nimport {LoginRequestModel} from \"../../api\";\r\nimport { homeLoggedInStateName } from \"app/home/home.state\";\r\n\r\n\r\nexport class LoginCtrl implements ng.IController {\r\n\tstatic $inject = [AuthService.angularName, \"localStorageService\", \"$state\", \"noticeService\", \"$uibModal\", \"Notification\", \"$rootScope\"];\r\n\tprivate open: boolean = false;\r\n\tprivate loggingIn: boolean = false;\r\n\tprivate showForgetPassword: boolean = false;\r\n\r\n\tprivate model: LoginRequestModel = {\r\n\t\tEmail: null,\r\n\t\tPassword: null,\r\n\t\tRememberMe: false,\r\n\t}\r\n\r\n\tconstructor(\r\n\t\tprivate readonly authService: AuthService,\r\n\t\tprivate readonly localStorageService,\r\n\t\tprivate readonly $state: StateService,\r\n\t\tprivate readonly noticeService: NoticeService,\r\n\t\tprivate readonly $uibModal: ng.ui.bootstrap.IModalService,\r\n\t\tprivate readonly Notification: ng.uiNotification.INotificationService,\r\n\t\tprivate readonly $rootScope: ng.IRootScopeService,\r\n\t) {}\r\n\r\n\t$onInit() {\r\n\t\tthis.unsavedChanges401Listner();\r\n\t}\r\n\r\n\tupdateAuthToken(value) {\r\n\t\tconst hiddenTokenElems = document.getElementsByName(\"__RequestVerificationToken\");\r\n\t\tif (hiddenTokenElems.length > 0) {\r\n\t\t\tlet el = hiddenTokenElems[0];\r\n\t\t\t(el as any).value = value;\r\n\t\t}\r\n\t};\r\n\r\n\tasync showNoticeModal() {\r\n\t\tconst data = await this.noticeService.getAllActive();\r\n\r\n\t\tif (data.length === 0)\r\n\t\t\treturn;\r\n\r\n\t\tthis.$uibModal.open({\r\n\t\t\ttemplate: noticeTemplate ,\r\n\t\t\tsize: 'lg',\r\n\t\t\tbackdrop: \"static\",\r\n\t\t\tcontroller: ['$scope', '$uibModalInstance', function ($scope, $uibModalInstance) {\r\n\t\t\t\t$scope.notices = data;\r\n\r\n\t\t\t\t$scope.dismissNotices = function () {\r\n\t\t\t\t\t$uibModalInstance.close();\r\n\t\t\t\t};\r\n\t\t\t}]\r\n\t\t});\r\n\t}\r\n\r\n\tonSuccess() {\r\n\t\t// close the login popup\r\n\t\tthis.open = false;\r\n\r\n\t\t// do not redirect when user login while viewing an application\r\n\t\tif (this.$state.current.name != \"root.app\" && !this.$state.current.name.startsWith('forms.')) {\r\n\t\t\tthis.$state.go(homeLoggedInStateName, null, { reload: true });\r\n\t\t}\r\n\r\n\t\tthis.showNoticeModal();\r\n\t};\r\n\r\n\tonLockedOut(resetCode, warningMessage) {\r\n\t\tthis.Notification.warning(warningMessage);\r\n\t\tthis.$state.go(\"account.password.expired\", { email: this.model.Email, code: resetCode, });\r\n\t\tthis.open = false;\r\n\t};\r\n\r\n\tasync login(isValid: boolean) {\r\n\t\tif (!isValid) return;\r\n\t\tthis.loggingIn = true;\r\n\r\n\t\tconst loginResultInfo = await this.authService.login(this.model);\r\n\r\n\t\tconst loginResult = loginResultInfo && loginResultInfo.result;\r\n\r\n\t\t// end point is returning 200 for Succeeded and IsLockedOut anything else is treated as an error\r\n\t\tif (loginResult.Succeeded) {\r\n\t\t\t//$rootScope.sessionTimer.startTimers();\r\n\r\n\t\t\tthis.authService.setAppData(loginResultInfo.logoutTime).then(() => {\r\n\t\t\t\tthis.localStorageService.set(\"private-grid-filters\", {});\r\n\t\t\t\tthis.updateAuthToken(loginResultInfo.newToken);\r\n\t\t\t\tthis.onSuccess();\r\n\t\t\t})\r\n\r\n\t\t} else if (loginResult.IsLockedOut) {\r\n\t\t\tthis.updateAuthToken(loginResultInfo.newToken);\r\n\t\t\tthis.onLockedOut(loginResultInfo.resetPassword, loginResultInfo.warningMessage);\r\n\t\t}\r\n\r\n\t\tthis.loggingIn = false;\r\n\t};\r\n\r\n\t// Opens login modal when user's token expires on app page with unsaved changes\r\n\tunsavedChanges401Listner(){\r\n\t\tthis.$rootScope.$on('unsaved-changes-401', () => {\r\n\t\t\tthis.open = true;\t\r\n\t\t});\r\n\t}\t\r\n\r\n\t$onDestroy(): void {\r\n\t\tthis.unsavedChanges401Listner();\r\n\t}\r\n}\r\n","// Module\nvar code = \"

    Welcome to SMART Portal

    {{notice.title}}

    {{notice.startsonFormatted}}


    \";\n// Exports\nexport default code;","import template from './login.html';\r\nimport {LoginCtrl} from \"./login.controller\";\r\n\r\nexport const LoginComponentName = 'login';\r\n\r\nexport const LoginComponent: ng.IComponentOptions = {\r\n\tcontroller: LoginCtrl,\r\n\ttemplate,\r\n\tbindings: {\r\n\t}\r\n}","// Module\nvar code = \"
    • Applicant Sign-In
      • Please Log In using your credentials.

        Please enter valid email address
        Please enter valid email address

        Forgot Password?

    \";\n// Exports\nexport default code;","import {AuthService} from \"../../shared/services\";\r\n\r\n\r\nexport class ForgotPasswordCtrl {\r\n\tstatic $inject = [AuthService.angularName, \"Notification\"];\r\n\tprivate emailModel: string;\r\n\r\n\tconstructor(\r\n\t\tprivate readonly authService: AuthService,\r\n\t\tprivate readonly Notification: ng.uiNotification.INotificationService,\r\n\t) {}\r\n\r\n\tasync sendEmail(isValid: boolean) {\r\n\t\tif (!isValid) return;\r\n\t\ttry {\r\n\t\t\tconst successMessage = await this.authService.forgotPassword({Email: this.emailModel});\r\n\t\t\tthis.Notification.success(successMessage);\r\n\t\t} catch (e) {\r\n\t\t\t// error notification is handled in AuthInterceptor\r\n\t\t}\r\n\t};\r\n}\r\n","import template from './forgot-password.html';\r\nimport {ForgotPasswordCtrl} from \"./forgot-password.controller\";\r\n\r\nexport const ForgotPasswordComponentName = 'forgotPassword';\r\n\r\nexport const ForgotPasswordComponent: ng.IComponentOptions = {\r\n\tcontroller: ForgotPasswordCtrl,\r\n\ttemplate,\r\n\tbindings: {\r\n\t\temailModel: \"=\"\r\n\t}\r\n}","// Module\nvar code = \"
    Email
    Please enter valid email address
    Please enter valid email address
    \";\n// Exports\nexport default code;","import { angularModule } from 'angular-utilities';\r\nimport {HomeComponent, HomeComponentName} from \"./home.component\";\r\nimport {configRegisterTheseStates} from \"../forms-system/util/registerTheseStates\";\r\nimport {States} from \"./home.state\";\r\nimport { HomeFooterComponent, HomeFooterComponentName } from './home-footer/home-footer.component';\r\nimport { HomePublicComponent, HomePublicComponentName } from './public/home-public.component';\r\n\r\nexport const HomeModuleName = angularModule('homeModule', [])\r\n\t.component(HomeComponentName, HomeComponent)\r\n\t.component(HomeFooterComponentName, HomeFooterComponent)\r\n\t.component(HomePublicComponentName, HomePublicComponent)\r\n\t.config(configRegisterTheseStates(States))\r\n\t.name\r\n\t;\r\n","import template from './home-footer.html';\r\nexport const HomeFooterComponentName = 'homeFooter';\r\nexport const HomeFooterComponent: ng.IComponentOptions = {\r\n\ttemplate,\r\n};\r\n","// Module\nvar code = \"

    All submitted project applications will be subject to requirements of the Freedom of Information Act (FOIA).

    If you need assistance with this site, send your requests to SmartPortal@CTB.Virginia.gov.


    \";\n// Exports\nexport default code;","// Module\nvar code = \"

    404 Page Not Found

    \";\n// Exports\nexport default code;","import { Ng1StateDeclaration } from \"@uirouter/angularjs\";\r\nimport { pageTitle } from \"../shared/util/page-title\";\r\nimport notFoundTemplate from \"./404.html\";\r\nimport idleTooLongTemplate from \"./401.html\";\r\nimport permissionErrorTemplate from \"./403.html\";\r\nimport serverErrorTemplate from \"./500.html\";\r\n\r\nexport const States: Ng1StateDeclaration[] = [\r\n\t{\r\n\t\tname: 'error',\r\n\t\turl: '/error',\r\n\t\tabstract: true,\r\n\t},\r\n\t{\r\n\t\tname: 'error.not-found',\r\n\t\turl: \"/not-found\",\r\n\t\ttemplate: notFoundTemplate,\r\n\t\tdata: {\r\n\t\t\tpageTitle: pageTitle('Resource Not Found')\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tname: 'error.500',\r\n\t\turl: \"/500\",\r\n\t\ttemplate: serverErrorTemplate,\r\n\t\tdata: {\r\n\t\t\tpageTitle: pageTitle('Internal Server Error')\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tname: 'error.401',\r\n\t\turl: \"/401\",\r\n\t\ttemplate: idleTooLongTemplate,\r\n\t\tdata: {\r\n\t\t\tpageTitle: pageTitle('Authentication Error')\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tname: 'error.404',\r\n\t\turl: \"/404\",\r\n\t\ttemplate: notFoundTemplate,\r\n\t\tdata: {\r\n\t\t\tpageTitle: pageTitle('Page Not Found')\r\n\t\t}\r\n\t},\r\n\t{\r\n\t\tname: 'error.access-denied',\r\n\t\turl: \"/access-denied\",\r\n\t\ttemplate: permissionErrorTemplate,\r\n\t\tdata: {\r\n\t\t\tpageTitle: pageTitle('Access Denied')\r\n\t\t}\r\n\t}\r\n];\r\n","// Module\nvar code = \"

    Internal Server Error

    Something went wrong

    \";\n// Exports\nexport default code;","// Module\nvar code = \"

    Your account may have been idle too long.

    \";\n// Exports\nexport default code;","// Module\nvar code = \"

    Access Denied

    You don't have permission to view this page

    \";\n// Exports\nexport default code;","import {angularModule} from \"../../angular-utilities\";\r\nimport {configRegisterTheseStates} from \"../forms-system/util/registerTheseStates\";\r\nimport {States} from \"./error.states\";\r\n\r\nexport const ErrorModuleName = angularModule('error', [])\r\n\t.config(configRegisterTheseStates(States))\r\n\t.name\r\n\t;\r\n","import angular from 'angular';\r\nimport { angularModule } from 'angular-utilities';\r\nimport { StateService } from \"@uirouter/core\";\r\nimport type { AppRootScope } from \"./interfaces/AppRootScope\";\r\nimport type { AppConfig } from './interfaces/AppConfig';\r\nimport { Enums } from './shared/enums';\r\nimport { configAppRoutes } from './config-routes';\r\nimport { ApplicationStatusIds, SecurityActionIds } from 'app/api';\r\nimport { waitingDialog } from 'app/site';\r\nimport { DiscussionModule } from './components/discussion/discussion.module';\r\nimport { BulkAttachmentsCtrl } from './components/utilities/bulk-attachments.controller';\r\nimport { SharedApiClientsModule } from './shared/api-clients';\r\nimport { CommonModule } from \"./shared/common.module\";\r\nimport { FiltersModule } from './shared/filters';\r\nimport { MainHeader } from './shared/header/main-header.directive';\r\nimport { SharedServicesModule, AuthService, OrganizationService } from './shared/services';\r\nimport { AuthInterceptorModule } from './shared/services/authInterceptor.service';\r\nimport { AppErrorModule } from './shared/modules/app.error.module'\r\nimport {LoginComponent, LoginComponentName} from \"./account/login/login.component\";\r\nimport {ForgotPasswordComponent, ForgotPasswordComponentName} from \"./account/login/forgot-password.component\";\r\nimport { HomeModuleName } from './home/home.module';\r\nimport { ErrorModuleName } from './error/error.module';\r\nimport { SessionTimer } from 'app/shared/services/SessionTimer';\r\nimport { AppWindow } from './interfaces';\r\n\r\nexport const app = angularModule(\"app\", [\r\n\t\"ui.router\",\r\n\t\"uiRouterTitle\",\r\n\t\"ui.router.state.events\",\r\n\t\"oc.lazyLoad\",\r\n\t\"ui-notification\",\r\n\t\"ui.bootstrap\",\r\n\t\"ngCookies\",\r\n\t\"LocalStorageModule\",\r\n\t\"ngMessages\",\r\n\t\"ui.validate\",\r\n\tAppErrorModule,\r\n\tErrorModuleName,\r\n\t\"config\",\r\n\t\"ui.sortable\",\r\n\t\"ng-currency\",\r\n\t\"angular-loading-bar\",\r\n\t'ngAnimate',\r\n\t'angularFileUpload',\r\n\t\"ngSanitize\",\r\n\t\"ui.mask\",\r\n\tSharedApiClientsModule,\r\n\tSharedServicesModule,\r\n\tCommonModule,\r\n\tAuthInterceptorModule,\r\n\tFiltersModule,\r\n\tDiscussionModule,\r\n\tHomeModuleName,\r\n]);\r\n\r\nexport const appModuleName = app.name;\r\n\r\n// debug module loading.\r\napp.run([\r\n\t'CONFIG', '$ocLazyLoad', async (CONFIG: AppConfig, $ocLazyLoad: oc.ILazyLoad) => {\r\n\r\n\t\tif (CONFIG.app.EnableDebugTool) {\r\n\r\n\t\t\t// if debug module not loaded\r\n\t\t\tif (typeof window !== 'undefined' && typeof window.DebugModuleLoaded === 'undefined') {\r\n\t\t\t\twindow.DebugModuleLoaded = false; // not loaded yet, but don't start loading twice.\r\n\t\t\t\t// load the module from the server.\r\n\t\t\t\tconst mod = await import(/* webpackChunkName: \"debug\" */ './debug/debug.module');\r\n\t\t\t\t// load the module into angular.\r\n\t\t\t\t$ocLazyLoad.load(mod.DebugModule as unknown as oc.IModuleConfig);\r\n\t\t\t\t// use global variable to mark load complete.\r\n\t\t\t\twindow.DebugModuleLoaded = true;\r\n\t\t\t}\r\n\r\n\t\t\t//Mousetrap.bind('alt+shift+d', async () => {}); // ALT+SHIFT+D keyboard combo. note 'command' (ctrl key) binding doesn't work in Firefox.\r\n\t\t}\r\n\t}\r\n]);\r\n\r\napp.run(['$transitions', function ($transitions) {\r\n $transitions.onSuccess({}, function () {\r\n document.body.scrollTop = document.documentElement.scrollTop = 0;\r\n })\r\n}]);\r\n\r\napp.run(['$anchorScroll', ($anchorScroll: ng.IAnchorScrollService) => {\r\n\t// apply a vertical offset to links to #anchors.\r\n\t// the $anchorScroll service is angularjs built in and watches $location for hash changes, intercepting the scroll.\r\n\t// pixels offset. + offset up, - offset down.\r\n\t$anchorScroll.yOffset = 330;\r\n\t// this is adjust up (+ positive) by an amount to get 'most' of the header and pearls in view when starting on an app's first pearl #general.\r\n}]);\r\n\r\napp.config(['$ocLazyLoadProvider', function ($ocLazyLoadProvider: oc.ILazyLoadProvider) {\r\n\t// https://oclazyload.readme.io/docs/oclazyloadprovider\r\n\t$ocLazyLoadProvider.config({\r\n\t\t// ...\r\n\t});\r\n}]);\r\n\r\napp\r\n\t//auth interceptor for server response errors \r\n\t.config(['$httpProvider', function ($httpProvider: ng.IHttpProvider) {\r\n\t\t//initialize get if not there\r\n\t\tif (!$httpProvider.defaults.headers.get) {\r\n\t\t\t$httpProvider.defaults.headers.get = {};\r\n\t\t}\r\n\t\t//disable IE ajax request caching\r\n\t\t$httpProvider.defaults.headers.get['If-Modified-Since'] = 'Mon, 26 Jul 1997 05:00:00 GMT';\r\n\t\t$httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache';\r\n\t\t$httpProvider.defaults.headers.get['Pragma'] = 'no-cache';\r\n\r\n\t\t//version all html files\r\n\t\t$httpProvider.interceptors.push(['$q', 'VERSION', function ($q: ng.IQService, version) {\r\n\t\t\treturn {\r\n\t\t\t\t'request': function (request) {\r\n\t\t\t\t\t//interecept all html requests and append a version number to them. exclude uib bootstrap stuff\r\n\t\t\t\t\tif (request.url.substr(-5) == '.html' && request.url.substr(4) === \"app/\") {\r\n\t\t\t\t\t\trequest.params = {\r\n\t\t\t\t\t\t\tv: version.Version\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn $q.resolve(request);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}]);\r\n\r\n\r\n\t}]);\r\n\r\napp\r\n\t//set local storage module to be session based\r\n\t.config(['localStorageServiceProvider', function (localStorageServiceProvider) {\r\n\t\tlocalStorageServiceProvider\r\n\t\t\t.setStorageType('sessionStorage');\r\n\t}]);\r\n\r\napp\r\n\t// Configure angular-ui-notification defaults\r\n\t.config(['NotificationProvider', function (NotificationProvider) {\r\n\t\tNotificationProvider.setOptions({\r\n\t\t\tdelay: 10000,\r\n\t\t\tstartTop: 20,\r\n\t\t\tstartRight: 10,\r\n\t\t\tverticalSpacing: 20,\r\n\t\t\thorizontalSpacing: 20,\r\n\t\t\tpositionX: \"right\",\r\n\t\t\tpositionY: \"bottom\"\r\n\t\t});\r\n\t}]);\r\n\r\napp\r\n\t// Configure app errors (right now same as defaults)\r\n\t.config(['appErrorsProvider', function (appErrorsProvider) {\r\n\t\tappErrorsProvider.setOptions({\r\n\t\t\tsendErrorToServer: false,\r\n\t\t\terrorEndpointURL: \"\",\r\n\t\t\tdisplayNotification: true,\r\n\t\t\tmodelStateTemplateURL: \"\"\r\n\t\t});\r\n\t}]);\r\n\r\napp\r\n\t.config(['$qProvider', function ($qProvider: ng.IQProvider) {\r\n\t\t// Hide \"Unhandled Rejection\" errors introduced by strict promise.catch checking in AngularJS 1.6+\r\n\t\t// TODO Remove this when ALL promise.then() have a matching .catch() block, even if it is .catch(angular.noop);\r\n\t\t// https://code.angularjs.org/1.6.10/docs/error/$injector/unpr?p0=$$HashMapProvider%20%3C-%20$$HashMap%20%3C-%20$$animateQueue%20%3C-%20$animate%20%3C-%20$compile%20%3C-%20FileItem%20%3C-%20FileUploader%20%3C-%20$$animateQueue\r\n\t\t// https://www.codelord.net/2017/08/20/angular-1-dot-6-s-possibly-unhandled-rejection-errors/\r\n\t\t$qProvider.errorOnUnhandledRejections(false);\r\n\t}]);\r\n\r\n// app.module home for orphan directives/controllers too specific for their own modules\r\napp\r\n\t.controller(BulkAttachmentsCtrl.angularName, BulkAttachmentsCtrl)\r\n\t.directive(MainHeader.angularName, MainHeader)\r\n\t.component(LoginComponentName, LoginComponent)\r\n\t.component(ForgotPasswordComponentName, ForgotPasswordComponent)\r\n\t;\r\n\r\napp\r\n\t.animation('.on-show-hide', function () {\r\n\t\treturn {\r\n\t\t\tenter: function (element, done) {\r\n\t\t\t\telement.hide().slideDown(done);\r\n\t\t\t\treturn function (cancelled) { };\r\n\t\t\t},\r\n\t\t\tleave: function (element, done) {\r\n\t\t\t\telement.slideUp(done);\r\n\t\t\t}\r\n\t\t};\r\n\t});\r\n\r\napp\r\n\t// urlEncode filter to be used with ng-href\r\n\t.filter(\"urlEncode\", function () {\r\n\t\treturn function (input) {\r\n\t\t\treturn input ? window.encodeURIComponent(input) : \"\";\r\n\t\t}\r\n\t})\r\n\t//string split into array\r\n\t.filter(\"split\", function () {\r\n\t\treturn function (input, splitChar) {\r\n\t\t\tvar parts = [];\r\n\t\t\tif (!!input && typeof input === 'string') {\r\n\t\t\t\tinput.split(splitChar).forEach(function (part) {\r\n\t\t\t\t\tif (parts.indexOf(part) == -1) {\r\n\t\t\t\t\t\tparts.push(part);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t\treturn parts;\r\n\t\t}\r\n\t})\r\n\t.filter(\"num\", function () {\r\n\t\treturn function (input) {\r\n\t\t\treturn +input;\r\n\t\t}\r\n\t})\r\n\t.filter(\"abs\", function () {\r\n\t\treturn function (input) {\r\n\t\t\treturn Math.abs(input);\r\n\t\t}\r\n\t})\r\n\t.filter(\"string\", function () {\r\n\t\treturn function (input) {\r\n\t\t\treturn input ? input.toString() : '';\r\n\t\t}\r\n\t})\r\n\t// get many or single lookups based on \r\n\t.filter(\"lovsGetByProperty\", function () {\r\n\t\treturn function (value, lookups, property, get_many) {\r\n\t\t\t// whether to return one or many lookups\r\n\t\t\tget_many = (angular.isDefined(get_many)) ? get_many : false;\r\n\r\n\t\t\tif (!angular.isDefined(value) || !angular.isArray(lookups) || !angular.isString(property)) return get_many === true ? lookups : null\r\n\r\n\t\t\tvar result = []\r\n\t\t\tlookups.forEach(function (lookup) {\r\n\t\t\t\tif (lookup.hasOwnProperty(property) && lookup[property] == value) {\r\n\t\t\t\t\tresult.push(lookup)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t// return all retults if true, else if there are results, return first, else null\r\n\t\t\treturn get_many === true ? result : result.length > 0 ? result[0] : null;\r\n\t\t}\r\n\t})\r\n\r\n\t// TODO move to legacy module\r\n\t// remove any lookups that match names given in a filter array\r\n\t.filter(\"lovsFilterByValues\", function () {\r\n\t\treturn function (filterArray, lookups, property) {\r\n\t\t\tif (!angular.isArray(filterArray) || filterArray.length === 0 || !angular.isString(property)) return lookups;\r\n\t\t\tvar result = [];\r\n\t\t\tlookups.forEach(function (lookup) {\r\n\t\t\t\t// not in filter, add\r\n\t\t\t\tif (lookup.hasOwnProperty(property) && filterArray.indexOf(lookup[property]) == -1) {\r\n\t\t\t\t\tresult.push(lookup);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\treturn result;\r\n\t\t}\r\n\t}\r\n\r\n\t)\r\n\r\n\t// TODO move to legacy or shared module\r\n\t// Convert string date from readable pojo into format that can be digested via angular date filter\r\n\t.filter(\"readableDate\", function () {\r\n\t\treturn function (input) {\r\n\t\t\tif (!input) { return; }\r\n\t\t\t// properly transform string dates from readable pojos\r\n\t\t\tvar dateParts = input.split(\" \")\r\n\t\t\t// date validated already\r\n\t\t\tif (dateParts.length < 2) {\r\n\t\t\t\treturn input;\r\n\t\t\t}\r\n\t\t\t// remove 12:00AM from Aug 15 2018 12:00AM\r\n\t\t\tdateParts.splice(dateParts.length - 1, 1);\r\n\t\t\tvar newDate = dateParts.join(\" \");\r\n\t\tvar temp = new Date(newDate); \r\n\t\treturn new Date(temp.getUTCFullYear(), temp.getUTCMonth(), temp.getUTCDate());\r\n\t\t}\r\n\t})\r\n\t.filter(\"emptyToEnd\", function () {\r\n\t\treturn function (input, order) {\r\n\t\t\tvar result = input.slice(),\r\n\t\t\t\tlen = result.length;\r\n\t\t\tfor (var i = 0; i < len; i++) {\r\n\t\t\t\tif (result[i][order] === null) {\r\n\t\t\t\t\tresult.push(result.splice(i, 1)[0]);\r\n\t\t\t\t\ti--;\r\n\t\t\t\t\tlen--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn result;\r\n\t\t}\r\n\t})\r\n\t//lov filter\r\n\t.filter(\"lov\", [\r\n\t\t\"CONFIG\", function (CONFIG: AppConfig) {\r\n\t\t\t// use the cached lovs\r\n\t\t\tvar _lovCache = CONFIG.app.Lookups;\r\n\t\t\tvar _performFilter = function (value, lovName, idOrName) {\r\n\t\t\t\tvar lov = _lovCache[lovName];\r\n\t\t\t\tvar localIdOrName = idOrName === \"id\" ? \"id\" : \"name\";\r\n\t\t\t\tvar localNameOrId = idOrName === \"id\" ? \"name\" : \"id\";\r\n\t\t\t\tfor (var i = 0; i < lov.length; i++) {\r\n\t\t\t\t\tif (lov[i][localIdOrName] === value) {\r\n\t\t\t\t\t\treturn lov[i][localNameOrId];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tvar _filterPrep = function (value, lov, idOrName_p, addObjectName) {\r\n\t\t\t\tvar idOrName = idOrName_p || \"id\";\r\n\r\n\t\t\t\t// this filter doesn't work if we don't specify parameters. sorry!\r\n\t\t\t\tif (!value || !lov || arguments.length < 2) {\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t} else if (_lovCache[lov] && _lovCache[lov].length > 0) {\r\n\t\t\t\t\treturn _performFilter(value, lov, idOrName);\r\n\t\t\t\t} else\r\n\t\t\t\t\treturn value;\r\n\t\t\t};\r\n\t\t\t(_filterPrep as any).$stateful = true;\r\n\t\t\treturn _filterPrep;\r\n\t\t}\r\n\t])\r\n\t//lovapp to filter app by name and object_name\r\n\t.filter(\"lovapp\", [\r\n\t\t\"CONFIG\", function (CONFIG: AppConfig) {\r\n\t\t\t// use the cached lovs\r\n\t\t\tvar _lovCache = CONFIG.app.Lookups;\r\n\t\t\tvar _performFilter = function (value, lovName, idOrName, objectNameOnly) {\r\n\t\t\t\tvar _idOrName = idOrName || 'id';\r\n\t\t\t\tvar lov = _lovCache[lovName];\r\n\t\t\t\tfor (var i = 0; i < lov.length; i++) {\r\n\t\t\t\t\tif (lov[i][_idOrName] === value) {\r\n\t\t\t\t\t\tif (objectNameOnly) {\r\n\t\t\t\t\t\t\treturn lov[i][\"object_name\"];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn lov[i][\"name\"] + \" \" + lov[i][\"object_name\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tvar _filterPrep = function (value, lov, idOrName, objectNameOnly) {\r\n\t\t\t\tvar _idOrName = idOrName || 'id';\r\n\t\t\t\t// this filter doesn't work if we don't specify parameters. sorry!\r\n\t\t\t\tif (!value || !lov || arguments.length < 2) {\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t} else if (_lovCache[lov] && _lovCache[lov].length > 0) {\r\n\t\t\t\t\treturn _performFilter(value, lov, _idOrName, objectNameOnly);\r\n\t\t\t\t} else\r\n\t\t\t\t\treturn value;\r\n\t\t\t};\r\n\t\t\treturn _filterPrep;\r\n\t\t}\r\n\t]);\r\n\r\napp\r\n\t.directive(\"convertToNumber\",\r\n\t\tfunction () {\r\n\t\t\treturn {\r\n\t\t\t\trequire: \"ngModel\",\r\n\t\t\t\tlink: function (scope, element, attrs, ngModel) {\r\n\t\t\t\t\tngModel.$parsers.push(function (val) {\r\n\t\t\t\t\t\treturn val !== null ? parseFloat(val) : null;\r\n\t\t\t\t\t});\r\n\t\t\t\t\tngModel.$formatters.push(function (val) {\r\n\t\t\t\t\t\treturn val !== null ? \"\" + val : null;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t});\r\n\r\napp\r\n\t.directive(\"customSort\",\r\n\t\tfunction () {\r\n\t\t\treturn {\r\n\t\t\t\t/**\r\n\t\t\t\t * custom directive for setting sorts on column headers\r\n\t\t\t\t * @returns {object} Link\r\n\t\t\t\t */\r\n\r\n\t\t\t\trestrict: 'A',\r\n\t\t\t\ttransclude: true,\r\n\t\t\t\tscope: {\r\n\t\t\t\t\torder: '=',\r\n\t\t\t\t\tsort: '='\r\n\t\t\t\t},\r\n\t\t\t\ttemplate:\r\n\t\t\t\t\t' ' +\r\n\t\t\t\t\t' ' +\r\n\t\t\t\t\t' ' +\r\n\t\t\t\t\t'',\r\n\t\t\t\tlink: link\r\n\t\t\t};\r\n\r\n\t\t\tfunction link (scope) {\r\n\t\t\t\t/**\r\n\t\t\t\t * Change the sorting order\r\n\t\t\t\t * @param {any} newSortingOrder The new sorting order\r\n\t\t\t\t */\r\n\t\t\t\tscope.sort_by = function (newSortingOrder) {\r\n\t\t\t\t\tvar sort = scope.sort;\r\n\r\n\t\t\t\t\tif (sort.sortingOrder === newSortingOrder) {\r\n\t\t\t\t\t\tsort.reverse = !sort.reverse;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tsort.sortingOrder = newSortingOrder;\r\n\t\t\t\t\tscope.$parent.pagination.currentPage = 1;\r\n\t\t\t\t};\r\n\r\n\r\n\t\t\t\tscope.selectedCls = function (column) {\r\n\t\t\t\t\tif (column === scope.sort.sortingOrder) {\r\n\t\t\t\t\t\tvar direction = scope.sort.reverse ? 'down' : 'up';\r\n\r\n\t\t\t\t\t\treturn ('fa fa-sort-' + direction);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\treturn '';\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\t\r\n\t\t});\r\n\r\napp\r\n\t//this fixes the nav bar to the top when scrolling\r\n\t.directive('affix', ['$window', function ($window) {\r\n\t\treturn {\r\n\t\t\trestrict: 'A',\r\n\t\t\tlink: function ($scope, $element) {\r\n\t\t\t\tvar win = angular.element($window);\r\n\t\t\t\t//get the offset from the top of the element that the 'affix' attribute is on \r\n\t\t\t\tvar topOffset = $element[0].offsetTop;\r\n\r\n\t\t\t\tfunction affixElement() {\r\n\r\n\t\t\t\t\t//fix to top if scrolled past affixed element \r\n\t\t\t\t\tif ($window.pageYOffset > topOffset) {\r\n\t\t\t\t\t\t$element.css('position', 'fixed');\r\n\t\t\t\t\t\t$element.css('top', '0px');\r\n\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t//else revert to normal positioning of navbar \r\n\t\t\t\t\t\t$element.css('position', '');\r\n\t\t\t\t\t\t$element.css('top', '');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t//kill the fixed bar when changing routes \r\n\t\t\t\t$scope.$on('$routeChangeStart', function () {\r\n\t\t\t\t\twin.off('scroll', affixElement);\r\n\t\t\t\t});\r\n\t\t\t\twin.on('scroll', affixElement);\r\n\t\t\t}\r\n\t\t};\r\n\t}]);\r\n\r\napp\r\n\t.directive(\"datepickerLocaldate\",\r\n\t\t[\r\n\t\t\t\"$parse\", function ($parse) {\r\n\t\t\t\tvar directive = {\r\n\t\t\t\t\trestrict: \"A\",\r\n\t\t\t\t\trequire: [\"ngModel\"],\r\n\t\t\t\t\tlink: link\r\n\t\t\t\t};\r\n\t\t\t\treturn directive;\r\n\r\n\t\t\t\tfunction link(scope, element, attr, ctrls) {\r\n\t\t\t\t\tvar ngModelController = ctrls[0];\r\n\r\n\t\t\t\t\t// called with a JavaScript Date object when picked from the datepicker\r\n\r\n\t\t\t\t\tngModelController.$parsers.push(function (viewValue) {\r\n\t\t\t\t\t\tif (viewValue == null) return null;\r\n\t\t\t\t\t\t// undo the timezone adjustment we did during the formatting\r\n\t\t\t\t\t\tviewValue.setMinutes(viewValue.getMinutes() - viewValue.getTimezoneOffset());\r\n\t\t\t\t\t\t// we just want a local date in ISO format\r\n\t\t\t\t\t\treturn viewValue.toISOString().substring(0, 10);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// called with a 'yyyy-mm-dd' string to format\r\n\r\n\t\t\t\t\tngModelController.$formatters.push(function (modelValue) {\r\n\t\t\t\t\t\tif (!modelValue) {\r\n\t\t\t\t\t\t\treturn undefined;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// date constructor will apply timezone deviations from UTC (i.e. if locale is behind UTC 'dt' will be one day behind)\r\n\t\t\t\t\t\tvar dt = new Date(modelValue);\r\n\t\t\t\t\t\t// 'undo' the timezone offset again (so we end up on the original date again)\r\n\t\t\t\t\t\tdt.setMinutes(dt.getMinutes() + dt.getTimezoneOffset());\r\n\t\t\t\t\t\treturn dt;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t]);\r\n\r\napp\r\n\t.constant('Enums', {\r\n\t\tPrograms: Enums.Programs,\r\n\t\tForms: Enums.Forms,\r\n\t\tStatus: Enums.Status,\r\n\t\tAttachments: Enums.Attachments,\r\n\t\tNvapProjectAdmin: Enums.NvapProjectAdmin\r\n\t});\r\n\r\napp\r\n\t.run([\r\n\t\t'$rootScope',\r\n\t\tAuthService.angularName,\r\n\t\tSessionTimer.angularName,\r\n\t\t'$http',\r\n\t\t'Enums',\r\n\t\tfunction (\r\n\t\t\t$rootScope: AppRootScope,\r\n\t\t\tauthService: AuthService,\r\n\t\t\tsessionTimer: SessionTimer,\r\n\t\t\t$http: ng.IHttpService,\r\n\t\t\tEnums: Enums\r\n\t\t\t) {\r\n\r\n\t\t\t// Include anti-forgery token included in the DOM by the backend. See backend code in `AddAntiforgery` and `WebApiValidateAntiForgeryTokenAttribute`.\r\n\t\t\t// Read the token baked into the DOM body.\r\n\t\t\tconst xsrfTokenValue = angular.element(\"input[name=\\\"__RequestVerificationToken\\\"]\").attr(\"value\");\r\n\t\t\t// Add this token to all $http requests.\r\n\t\t\t$http.defaults.headers.common[\"X-XSRF-Token\"] = xsrfTokenValue;\r\n\r\n\t\t\t$rootScope.authService = authService;\r\n\t\t\t$rootScope.Enums = Enums;\r\n\r\n\r\n\t\t\t//#region remove this stuff, it's only to support old legacy forms and shouldn't be hanging out in the app startup AND shouldn't be in the $rootScope.\r\n\r\n\t\t\t//helper function for easily adding one field in a repeatable entity\r\n\t\t\t//NOTE: For forms after 2022 use apaplication.service.ts\r\n\t\t\t$rootScope.addRepeatableEntityField = function (entity, field) {\r\n\t\t\t\tvar total = 0;\r\n\t\t\t\tangular.forEach(entity, function (repeatable) {\r\n\t\t\t\t\tif (angular.isDefined(repeatable[field])) {\r\n\t\t\t\t\t\tif (repeatable[field] !== null && !isNaN(repeatable[field])) total += repeatable[field]\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t})\r\n\t\t\t\treturn total;\r\n\t\t\t}\r\n\r\n\t\t\t$rootScope.scoringTotal = function (scoringObj) {\r\n\t\t\t\tvar total = 0;\r\n\t\t\t\tvar regex = /_effective/;\r\n\t\t\t\tfor (var property in scoringObj) {\r\n\t\t\t\t\tif (scoringObj.hasOwnProperty(property)) {\r\n\t\t\t\t\t\tif (typeof scoringObj[property] === 'number' && regex.test(property)) {\r\n\t\t\t\t\t\t\ttotal += scoringObj[property];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn total;\r\n\t\t\t}\r\n\t\t\t$rootScope.scroingColor = function (scoringObj, fn) {\r\n\t\t\t\tvar totalScore = fn(scoringObj);\r\n\t\t\t\tif (totalScore >= 75) {\r\n\t\t\t\t\treturn { 'background-color': '#4CAF50' }\r\n\t\t\t\t} else if (totalScore < 75 && totalScore >= 50) {\r\n\t\t\t\t\treturn { 'background-color': '#F9A825' }\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn { 'background-color': '#F44336' }\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/**\r\n\t\t\t * \r\n\t\t\t * @param {} fieldName \r\n\t\t\t * @param {} weight object that has three properties\r\n\t\t\t * weight:{\r\n\t\t\t * high: type number (mandatory) \r\n\t\t\t * low : type number (optional) \r\n\t\t\t * defaultValue: type boolean (optional) \r\n\t\t\t * }\r\n\t\t\t * @returns { fieldName Scoring value} \r\n\t\t\t */\r\n\t\t\t$rootScope.calculateScoring = function (fieldName, weight) {\r\n\t\t\t\tif (fieldName) {\r\n\t\t\t\t\tif ('defaultValue' in weight) {\r\n\t\t\t\t\t\treturn fieldName === weight['defaultValue'] ? weight.high : 'low' in weight ? weight.low : 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn weight.high;\r\n\t\t\t}\r\n\r\n\t\t\t$rootScope.notEmptyOrNotDefault = function (value, notDefault) {\r\n\t\t\t\tif (value) {\r\n\t\t\t\t\tif (typeof value === 'string') {\r\n\t\t\t\t\t\treturn !!value.trim() && value.toLowerCase().trim() !== notDefault;\r\n\t\t\t\t\t} else if (typeof value === 'number') {\r\n\t\t\t\t\t\treturn value !== notDefault;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\t$rootScope.notEmptyOrNa = function (value) {\r\n\t\t\t\tif (value && value.toLowerCase() !== \"n/a\" && value.toLowerCase() !== \"na\" && value.toLowerCase() !== \"blank\") {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\t/**\r\n\t\t\t * \r\n\t\t\t * @param {} fieldName \r\n\t\t\t * @param {} weight object that has two properties\r\n\t\t\t * weight:{\r\n\t\t\t * high: type number (mandatory) \r\n\t\t\t * low : type number (optional) \r\n\t\t\t * \r\n\t\t\t * }\r\n\t\t\t * @returns { fieldName Scoring value} \r\n\t\t\t */\r\n\t\t\t$rootScope.notBlankOrNotzero = function (fieldName, weight) {\r\n\t\t\t\tif (fieldName) {\r\n\t\t\t\t\treturn weight.high;\r\n\t\t\t\t}\r\n\t\t\t\treturn 'low' in weight ? weight.low : 0;\r\n\t\t\t}\r\n\t\t\t$rootScope.toggleArrayValue = function (modelProperty, value) {\r\n\t\t\t\tvar propPath = modelProperty.split(\".\");\r\n\t\t\t\ttry {\r\n\t\t\t\t\tvar obj = propPath.reduce(function (obj, path) {\r\n\t\t\t\t\t\treturn obj[path];\r\n\t\t\t\t\t}, this);\r\n\t\t\t\t\tif (Array.isArray(obj)) {\r\n\t\t\t\t\t\tvar idx = obj.indexOf(value);\r\n\t\t\t\t\t\tif (idx === -1) {\r\n\t\t\t\t\t\t\tobj.push(value);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tobj.splice(idx, 1);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (err) {\r\n\t\t\t\t\tconsole.warn(\"error - toggleArrayProperty\", this);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\t$rootScope.projectScheduleScoring = function (phases) {\r\n\t\t\t\tif (!phases)\r\n\t\t\t\t\treturn false;\r\n\r\n\t\t\t\t//if a phase status isn't \"not needed (1)\" and doesnt have a start or end date then return false;\r\n\t\t\t\tfor (var i = 0; i < phases.length; i++) {\r\n\t\t\t\t\tif (phases[i].project_phase_status !== 1 && (!phases[i].start_date || !phases[i].end_date))\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t};\r\n\r\n\t\t\t$rootScope._buildPagingOptions = function (params, pagingOptions) {\r\n\t\t\t\tif (params.sortModel) {\r\n\t\t\t\t\tif (params.sortModel.length > 0) {\r\n\t\t\t\t\t\tpagingOptions.OrderBy = angular.isDefined(params.sortModel[0].colId) ? params.sortModel[0].colId : null;\r\n\t\t\t\t\t\tparams.sortModel[0].sort === \"desc\" ? pagingOptions.OrderDesc = true : pagingOptions.OrderDesc = false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//var pageNum = (params.endRow / pagingOptions.PageSize) - 1;\r\n\t\t\t\t//pageNum > 0 ? pagingOptions.PageNumber = pageNum : pagingOptions.PageNumber = 0;\r\n\r\n\t\t\t\treturn pagingOptions;\r\n\t\t\t};\r\n\t\t\t$rootScope.hideDropDowns = function () {\r\n\t\t\t\tvar x = document.getElementsByClassName(\"dropdown-menu-205\");\r\n\t\t\t\tvar i;\r\n\t\t\t\tif (x) {\r\n\t\t\t\t\tfor (i = 0; i < x.length; i++) {\r\n\t\t\t\t\t\t(x[i] as any).style.display = \"none\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\t//#endregion remove this legacy stuff above ^\r\n\r\n\r\n\t\t\t$rootScope.defaultGridOptions = {\r\n\t\t\t\t//enableColResize: true, //deprecated\r\n\t\t\t\t//enableServerSideSorting: true, //deprecated\r\n\t\t\t\t//enableServerSideFilter: true, //deprecated, put on col definition\r\n\t\t\t\trowModelType: \"infinite\"\r\n\t\t\t\t//showToolPanel: false, //deprecated\r\n\t\t\t\t//pagination: true //disable pagination to enable infinite scrolling\r\n\t\t\t};\r\n\r\n\t\t\t$rootScope.enum = {\r\n\t\t\t\tSecurityActionIds: SecurityActionIds,\r\n\t\t\t\tApplicationStatusIds: ApplicationStatusIds,\r\n\t\t\t};\r\n\r\n\t\t\t$rootScope.programMapConfig = {\r\n\t\t\t\t0: {\r\n\t\t\t\t\thasMapView: true,\r\n\t\t\t\t\tmap: null,\r\n\t\t\t\t\thasMapFilters: true,\r\n\t\t\t\t\tmodule: null\r\n\t\t\t\t},\r\n\t\t\t\t1: {\r\n\t\t\t\t\thasMapView: false,\r\n\t\t\t\t\tmap: null,\r\n\t\t\t\t\thasMapFilters: false,\r\n\t\t\t\t\tmodule: null\r\n\t\t\t\t},\r\n\t\t\t\t2: {\r\n\t\t\t\t\thasMapView: false,\r\n\t\t\t\t\tmap: null,\r\n\t\t\t\t\thasMapFilters: false,\r\n\t\t\t\t\tmodule: null\r\n\t\t\t\t},\r\n\t\t\t\t3: {\r\n\t\t\t\t\thasMapView: false,\r\n\t\t\t\t\tmap: null,\r\n\t\t\t\t\thasMapFilters: false,\r\n\t\t\t\t\tmodule: null\r\n\t\t\t\t},\r\n\t\t\t\t4: {\r\n\t\t\t\t\thasMapView: false,\r\n\t\t\t\t\tmap: null,\r\n\t\t\t\t\thasMapFilters: false,\r\n\t\t\t\t\tmodule: null\r\n\t\t\t\t},\r\n\t\t\t\t5: {\r\n\t\t\t\t\thasMapView: false,\r\n\t\t\t\t\tmap: null,\r\n\t\t\t\t\thasMapFilters: false,\r\n\t\t\t\t\tmodule: null\r\n\t\t\t\t},\r\n\t\t\t\t6: {\r\n\t\t\t\t\thasMapView: false,\r\n\t\t\t\t\tmap: null,\r\n\t\t\t\t\thasMapFilters: false,\r\n\t\t\t\t\tmodule: null\r\n\t\t\t\t},\r\n\t\t\t\t7: {\r\n\t\t\t\t\thasMapView: false,\r\n\t\t\t\t\tmap: null,\r\n\t\t\t\t\thasMapFilters: false,\r\n\t\t\t\t\tmodule: null\r\n\t\t\t\t},\r\n\t\t\t\t8: {\r\n\t\t\t\t\thasMapView: false,\r\n\t\t\t\t\tmap: null,\r\n\t\t\t\t\thasMapFilters: false,\r\n\t\t\t\t\tmodule: null\r\n\t\t\t\t},\r\n\t\t\t\t9: {\r\n\t\t\t\t\thasMapView: true,\r\n\t\t\t\t\tmap: null,\r\n\t\t\t\t\tapplicationLayer: \"application\",\r\n\t\t\t\t\thasMapFilters: true,\r\n\t\t\t\t\tmodule: \"bridge\"\r\n\t\t\t\t},\r\n\t\t\t\t10: {\r\n\t\t\t\t\thasMapView: true,\r\n\t\t\t\t\tmap: null,\r\n\t\t\t\t\tapplicationLayer: \"segments\",\r\n\t\t\t\t\thasMapFilters: false,\r\n\t\t\t\t\tmodule: null\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t$rootScope.sessionTimer = $rootScope.sessionTimer || sessionTimer;\r\n\t\t\t//create timer and immeadiatley start session timers\r\n\t\t\t$rootScope.sessionTimer.createKeepSessionAliveTimers(waitingDialog, false);\r\n\t\t\t//create session timers but don't start timing\r\n\t\t\t// sessionTimer.createKeepSessionAliveTimers(waitingDialog, false);\r\n\r\n\t\t\t// start session timers\r\n\t\t\t// sessionTimer.startTimers();\r\n\r\n\t\t\t//stop all session timers and event listeners\r\n\t\t\t// sessionTimer.stopTimers();\r\n\r\n\t\t\t//reset all timers should call this whenever an ajax call has been made from somewhere else\r\n\t\t\t// sessionTimer.resetTimers();\r\n\t\t}\r\n]);\r\n\r\nconfigAppRoutes(app);\r\n","import { bootstrap as angularBootstrap } from 'angular';\r\nimport { angularElement, angularModule } from 'angular-utilities';\r\nimport { appModuleName } from './app-module';\r\n\r\nconst {\r\n\tversionInfo,\r\n\taccountUrl,\r\n} = appBootstrapData || {};\r\n\r\nconst configModule = angularModule('config', []);\r\n\r\nif (versionInfo) {\r\n\tconfigModule.constant('VERSION', versionInfo);\r\n} else {\r\n\tconsole.error(`Can't load VERSION info from global object.`);\r\n}\r\n\r\n// Fetch account and entity data before the app even loads.\r\n// This provides the CONFIG object containing user and system data needed by a lot of stuff.\r\n// Once usages of CONFIG are migrated to lazier fetching, this \"pre-bootstrap $http.get\" can be discarded as stupid.\r\nconst $http = angular.injector(['ng']).get('$http');\r\nif (!accountUrl || accountUrl.length === 0) {\r\n\tconsole.error(`Can't load 'accountUrl' info to get app data before bootstrap.`);\r\n} else {\r\n\taccountUrl && $http.get(accountUrl).then((response) => {\r\n\t\tif (!response) {\r\n\t\t\tconsole.error('Cannot retrieve app config from server, cannot start app.');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst configData = response.data;\r\n\r\n\t\tconfigModule.constant('CONFIG', configData);\r\n\r\n\t\tangularElement(document)\r\n\t\t\t.ready(() => {\r\n\t\t\t\tangularBootstrap(document.documentElement, [appModuleName]);\r\n\t\t\t});\r\n\r\n\t});\r\n}\r\n","import { Enums } from 'app/shared/enums';\r\nimport { StateService } from \"@uirouter/angularjs\";\r\nimport { ValidationService } from 'app/shared/services';\r\n\r\nexport const EventNameSetScopeOfWorkAction = 'enter-scope_of_work-action';\r\nexport const EventNameSetScopeOfWorkActionCompleted = 'enter-sups-action-completed';\r\n\r\nexport interface EventSetScopeOfWorkActionModel {\r\n\ttext: string;\r\n\t// TODO add 4 timestamps.\r\n}\r\n\r\nexport class EnterSUPSButtonController implements ng.IController {\r\n\tstatic $inject = [ValidationService.angularName, 'Enums', 'Notification', '$state', '$scope', '$rootScope'];\r\n\tconstructor(\r\n\t\tprivate readonly validationService: ValidationService,\r\n\t\tprivate readonly Enums: Enums,\r\n\t\tprivate readonly Notification: ng.uiNotification.INotificationService,\r\n\t\tprivate readonly $state: StateService,\r\n\t\tprivate readonly $scope: ng.IScope,\r\n\t\tprivate readonly $rootScope: ng.IRootScopeService) {\r\n\t}\r\n\r\n\tisLoading = true;\r\n\tisSaving = false;\r\n\tcanSave = false;\r\n\r\n\t// popover docs: https://github.com/angular-ui/bootstrap/tree/master/src/popover\r\n\tpopoverIsOpen = false;\r\n\r\n\t$onInit() {\r\n\t\tthis.isLoading = false;\r\n\t\tthis.isSaving = false;\r\n\t\t// TODO trigger this on something? is user always able to enter a new sups value or does it become locked?\r\n\t\tthis.canSave = true;\r\n\r\n\t\tthis.$scope.$on(EventNameSetScopeOfWorkActionCompleted, () => {\r\n\t\t\tthis.isSaving = false;\r\n\t\t\tthis.canSave = true;\r\n\r\n\t\t\t// close popover.\r\n\t\t\tthis.popoverIsOpen = false;\r\n\r\n\t\t\tthis.Notification.success('Scope Saved to Application');\r\n\t\t});\r\n\r\n\t\t\r\n\t}\r\n\r\n\t/** Save changes to the app. Called by template. */\r\n\tsave(model: EventSetScopeOfWorkActionModel) {\r\n\t\tif (this.isSaving)\r\n\t\t\treturn;\r\n\t\tthis.isSaving = true;\r\n\t\tthis.canSave = false;\r\n\t\tthis.$rootScope.$broadcast(EventNameSetScopeOfWorkAction, model);\r\n\t}\r\n\r\n}\r\n","import { Enums } from 'app/shared/enums';\r\nimport { StateService } from \"@uirouter/angularjs\";\r\nimport { ProgramApplicationService } from 'app/shared/services';\r\nimport { EventNameSetScopeOfWorkActionCompleted } from './enter-sups-button/enter-sups-button.controller';\r\nimport { formattedDate } from 'app/shared/util/formatted-date';\r\n\r\nexport const EventNameUpdateSUPSWorkflow = 'update-sups-action';\r\nexport const EventNameUpdateSUPSWorkflowCompleted = 'update-sups-action-completed';\r\n\r\nexport interface EventUpdateSUPSWorkflowModel {\r\n\tworkflowAction: number;\r\n\tcomment?: string;\r\n}\r\n\r\nexport class SupsSectionController implements ng.IController {\r\n\tstatic $inject = [ProgramApplicationService.angularName, 'Enums', 'Notification', '$state', '$scope', '$rootScope'];\r\n\r\n\tconstructor(\r\n\t\tprivate readonly programApplicationService: ProgramApplicationService,\r\n\t\tprivate readonly Enums: Enums,\r\n\t\tprivate readonly Notification: ng.uiNotification.INotificationService,\r\n\t\tprivate readonly $state: StateService,\r\n\t\tprivate readonly $scope: ng.IScope,\r\n\t\tprivate readonly $rootScope: ng.IRootScopeService) {\r\n\t}\r\n\r\n\t/** Crucial form data is still loading, prompt user. */\r\n\tisLoading = true;\r\n\r\n\t/** Form is mid-save, should not allow input or resubmission. */\r\n\tisSaving = false;\r\n\r\n\t/** User is a Submitter (though they may not be able to do Submit in the current Application Status) */\r\n\tisSubmitter: boolean;\r\n\r\n\t$onInit() {\r\n\t\tthis.isLoading = false;\r\n\r\n\t\tthis.$scope.$on(EventNameUpdateSUPSWorkflowCompleted, () => {\r\n\t\t\tthis.isSaving = false;\r\n\t\t\tthis.Notification.success('Scope of Work Feedback Saved');\r\n\t\t});\r\n\r\n\t\tthis.$scope.$on(EventNameSetScopeOfWorkActionCompleted, () => {\r\n\t\t\tthis.isSaving = false;\r\n\t\t});\r\n\t}\r\n\r\n\tupdateSUPSWorkflow(workflowEventId: number) {\r\n\t\tvar model = { workflowAction: workflowEventId } as EventUpdateSUPSWorkflowModel;\r\n\t\tthis.$rootScope.$broadcast(EventNameUpdateSUPSWorkflow, model);\r\n\t}\r\n\r\n\tdistrictSUPSAgree() {\r\n\t\tif (this.isSaving)\r\n\t\t\treturn;\r\n\t\tthis.isSaving = true;\r\n\r\n\t\tthis.updateSUPSWorkflow(1);\r\n\t\tthis.canDistrictSupsAgree = false;\r\n\t}\r\n\r\n\tdistrictSUPSDisagree() {\r\n\t\tif (this.isSaving)\r\n\t\t\treturn;\r\n\t\tthis.isSaving = true;\r\n\r\n\t\tthis.updateSUPSWorkflow(2);\r\n\t\tthis.canDistrictSupsAgree = false;\r\n\r\n\t\t//TODO: call to function for adding comment\r\n\t\tthis.addSUPSDisagreeComment();\r\n\t}\r\n\r\n\tsubmitterSUPSAgree() {\r\n\t\tif (this.isSaving)\r\n\t\t\treturn;\r\n\t\tthis.isSaving = true;\r\n\r\n\t\tthis.updateSUPSWorkflow(3);\r\n\t\tthis.canSubmitterSupsAgree = false;\r\n\t}\r\n\r\n\tsubmitterSUPSDisagree() {\r\n\t\tif (this.isSaving)\r\n\t\t\treturn;\r\n\t\tthis.isSaving = true;\r\n\r\n\t\tthis.updateSUPSWorkflow(4);\r\n\t\tthis.canSubmitterSupsAgree = false;\r\n\r\n\t\t//TODO: call to function for adding comment\r\n\t\tthis.addSUPSDisagreeComment();\r\n\t}\r\n\r\n\taddSUPSDisagreeComment() { //TODO: function to open popup and add disagreement comment\r\n\r\n\t}\r\n\r\n\t/** formats the date from utc time */\r\n\tformatDate(thisDate: Date | string){\r\n\t\treturn formattedDate(thisDate);\r\n\t}\r\n\r\n\tapp: any;\r\n\tcanEnterSups: boolean;\r\n\tcanDistrictSupsAgree: boolean;\r\n\tcanSubmitterSupsAgree: boolean;\r\n\tactionMode: string;\r\n\r\n}\r\n","import { angularExtend, angularForEach } from \"angular-utilities\";\r\n\r\n/** Used by old forms 'see diffs' tools.\r\n * @deprecated Forms system has a new comparison system.\r\n */\r\nexport const applicationComparison = function(fid, lhs, rhs) {\r\n\t// custom configuration of repeatables for each form\r\n\tvar comparisonConfiguration = {\r\n\t\t// keys are fids \r\n\t\t1: {\r\n\t\t\t// the repeatable entity and the 'unique' name to distinguish entity in last position of array\r\n\t\t\trepeatables: [\r\n\t\t\t\t['hb2_15_improvement', 'improvement_subcategory'],\r\n\t\t\t\t['hb2_15_measure_question_answer', 'measure_question'],\r\n\t\t\t\t['hb2_15_economic_development_factor', 'hb2_15_economic_development_site', 'development_site_name'],\r\n\t\t\t\t['hb2_15_project_phase', 'project_phase_type']\r\n\t\t\t],\r\n\t\t\tignores: [\"trans_proj_local_econ_dev_strategy\"]\r\n\t\t},\r\n\t\t2: {\r\n\t\t\trepeatables: [\r\n\t\t\t\t['ss_16_improvement', 'improvement_subcategory'],\r\n\t\t\t\t['ss_16_measure_question_answer', 'measure_question'],\r\n\t\t\t\t['ss_16_upc', 'project_upc_number'],\r\n\t\t\t\t['ss_16_economic_development_factor', 'ss_16_economic_development_site', 'development_site_name'],\r\n\t\t\t\t['ss_16_project_phase', 'project_phase_type']\r\n\t\t\t],\r\n\t\t\tignores: [\"trans_proj_local_econ_dev_strategy\"]\r\n\t\t}\r\n\t};\r\n\tvar repeatables = comparisonConfiguration[fid].repeatables;\r\n\tvar repeatableValueIgnores = comparisonConfiguration[fid].ignores;\r\n\tvar diffResult = DeepDiff.diff(lhs, rhs);\r\n\tvar repeatableEntities = repeatables.map(function (repeatable) {\r\n\t\treturn repeatable[0];\r\n\t});\r\n\r\n\t// check repeatables seperately\r\n\tvar df = getRepeatableDifferences(repeatables, lhs, rhs)\r\n\r\n\tangularForEach(diffResult, function (v) {\r\n\t\tvar tstring = '';\r\n\t\tvar entity = v.path[0];\r\n\t\t// repeatables checked in getRepeatableDifferences, ignore\r\n\t\tif (repeatableEntities.indexOf(entity) != -1 && repeatableValueIgnores.indexOf(entity) != -1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tangularForEach(v.path, function (t) {\r\n\t\t\ttstring += t\r\n\t\t})\r\n\t\t//populate difference array based on what kind of difference it is \r\n\t\tswitch (v.kind) {\r\n\t\t\t//E - indicates a property/element was edited\r\n\t\t\tcase 'E': df[tstring] = v.rhs; break;\r\n\r\n\t\t\t\t//A - indicates a change occurred within an array\r\n\t\t\tcase 'A': df[tstring] = rhs[v.path[0]]; break;\r\n\r\n\t\t\t\t//N - indicates a new property occur within an object\r\n\t\t\tcase 'N': df[tstring] = v.rhs; break;\r\n\r\n\t\t\t\t//D - indicates a property was deleted\r\n\t\t\tcase 'D': df[tstring] = ''; break;\r\n\t\t}\r\n\t});\r\n\r\n\t// compare string lists e.g. 'Regional Network, Safety' between lhs and rhs\r\n\t// if a difference is just in the order of the string lists, then ignore difference\r\n\t// For some reason backend is returning string lists for lhs and rhs in different orders even if same values\r\n\tvalidateStringListDifferences(df, lhs, rhs);\r\n\treturn df;\r\n}\r\n\r\nfunction compareStringLists(listOne, listTwo) {\r\n\tfor (var j = 0; j < listOne.length; j++) {\r\n\t\tvar value = listOne[j];\r\n\t\tif (listTwo.indexOf(value) === -1) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\treturn false;\r\n}\r\n\r\nfunction validateStringListDifferences(df, lhs, rhs) {\r\n\tvar stringListKeys = ['list_grant_programs', 'list_eligible_networks', 'list_planning_sources', 'list_project_upcs']\r\n\tfor (var i = 0; i < stringListKeys.length; i++) {\r\n\t\tvar stringListKey = stringListKeys[i];\r\n\t\tvar lhsList = !lhs[stringListKey] ? [] : lhs[stringListKey].toString().split(', ');\r\n\t\tvar rhsList = !rhs[stringListKey] ? [] : rhs[stringListKey].toString().split(', ');\r\n\t\tvar isDifferent = compareStringLists(lhsList, rhsList) || compareStringLists(rhsList, lhsList);\r\n\t\tif (!isDifferent) {\r\n\t\t\tdelete df[stringListKey];\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction getRepeatableDifferences(repeatables, lhs, rhs) {\r\n\t// Need to find repeatable differences seperately because repeatables need to matched based on a primary attribute\r\n\tvar df = {};\r\n\tvar repeatableIdx = { idx: 0 };\r\n\trepeatables.forEach(function (repeatable) {\r\n\t\tvar attribute = repeatable[repeatable.length - 1]; // e.g. improvement_subcategory\r\n\t\tvar repeatableLhs = lhs;\r\n\t\tvar repeatableRhs = rhs;\r\n\t\t// drill down to array if nested entities e.g. economic_development_factor -> economic_development_site\r\n\t\t// ignore last element which is attribute\r\n\t\tfor (var i = 0; i < repeatable.length - 1; i++) {\r\n\t\t\trepeatableLhs = repeatableLhs[repeatable[i]];\r\n\t\t\trepeatableRhs = repeatableRhs[repeatable[i]];\r\n\t\t}\r\n\t\t// find differences between each repeatable based on primary attribute\r\n\t\tif (repeatableLhs && repeatableRhs) {\r\n\t\t\tvar diff = compareRepeatableByAttribute(attribute, repeatableLhs, repeatableRhs, repeatableIdx);\r\n\t\t\tangularExtend(df, diff);\r\n\t\t}\r\n\t});\r\n\treturn df;\r\n}\r\n\r\nfunction compareRepeatableByAttribute(attribute, lhs, rhs, idx) {\r\n\t// copy rhs array because array will be modified every match\r\n\t// since primary key on repeatable obj may be repeated, if an obj on rhs is matched don't check again\r\n\tvar df = {};\r\n\tvar rhsCopy = rhs.slice();\r\n\tfor (var i = 0; i < lhs.length; i++) {\r\n\t\tvar lhsObj = lhs[i];\r\n\t\t// iterate through right side until, stop when match found on attribute and remove rhs obj from array\r\n\t\tfor (var j = 0; j < rhsCopy.length; j++) {\r\n\t\t\tvar rhsObj = rhsCopy[j];\r\n\t\t\tif (lhsObj.hasOwnProperty(attribute) && rhsObj.hasOwnProperty(attribute) && !lhsObj.hasOwnProperty('repeatableIdx') && lhsObj[attribute] === rhsObj[attribute]) {\r\n\t\t\t\tvar diffResult = DeepDiff.diff(lhsObj, rhsObj);\r\n\t\t\t\t// never check rhs obj again since primary key may be duplicated\r\n\t\t\t\trhsCopy.splice(j, 1);\r\n\t\t\t\tif (!diffResult) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\t// assign unique idx to differences for tracking in diff directive \r\n\t\t\t\tlhsObj['repeatableIdx'] = idx.idx;\r\n\t\t\t\tidx.idx++;\r\n\t\t\t\t// add differences\r\n\t\t\t\tangularForEach(diffResult, function (v) {\r\n\t\t\t\t\tvar tstring = '';\r\n\t\t\t\t\tvar changedAttribute = v.path[v.path.length - 1];\r\n\t\t\t\t\t// if new attribute in difference, LHS may not have property so set as null to show diff\r\n\t\t\t\t\tif (v.kind === 'N') {\r\n\t\t\t\t\t\tlhsObj[changedAttribute] = '';\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttstring = \"_\" + lhsObj['repeatableIdx'].toString() + changedAttribute;\r\n\t\t\t\t\tswitch (v.kind) {\r\n\t\t\t\t\t\t//E - indicates a property/element was edited\r\n\t\t\t\t\t\tcase 'E': df[tstring] = v.rhs; break;\r\n\r\n\t\t\t\t\t\t\t//N - indicates a new property occur within an object\r\n\t\t\t\t\t\tcase 'N': df[tstring] = v.rhs; break;\r\n\r\n\t\t\t\t\t\t\t//D - indicates a property was deleted\r\n\t\t\t\t\t\tcase 'D': df[tstring] = ''; break;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\t// stop when match found\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn df;\r\n}\r\n","/**\r\n * Returns input string with first character capitalized and the rest unchanged.\r\n */\r\nexport function capitalize(input: string) {\r\n\treturn input && input.length\r\n\t\t? input.charAt(0).toUpperCase() + input.slice(1)\r\n\t\t: null;\r\n}\r\n","import { capitalize } from \"app/shared/util/capitalize\";\r\n\r\n/**\r\n\t@deprecated Use new forms system.\r\n\r\n\t_entityManager\r\n\t* needs to accept a JSON object, a Structural object and return a combined DTO/Pojo manager\r\n\t* loop through the JSON object and:\r\n\t\t- Define a $$EAV id for each entity\r\n\t\t- If the entity is repeatable:\r\n\t\t\t~ check to see if the entity has add/remove methods defined in _entityManager yet\r\n\t\t\t~ create them if missing\r\n\t\t\t~ NOTE: use Structural model to create templates for repeatable entities (sub-method)\r\n\t\t- Create the entity in the Pojo entity collection\r\n\t\t- Add attributes to the Pojo entity collection\r\n\t\t- Add get/set methods for each attribute properly\r\n\r\n*/\r\nexport const entityManager = {\r\n\tcount: 0,\r\n\t_entityCache: {},\r\n\t_attributeCache: {},\r\n\t_eidChainChildCache: {},\r\n\t_eidChainAttributeCache: {},\r\n\t_eavParentEav: {},\r\n\t_eavEidChain: {},\r\n\t_eavDto: {},\r\n\t_eavPojo: {},\r\n\t_eavName: {},\r\n\tclearEntityCache: function () {\r\n\t\tthis._entityCache = {};\r\n\t},\r\n\tgetObjectId: function () {\r\n\t\treturn ++this.count;\r\n\t},\r\n\tsetObjectId: function (obj, id) {\r\n\t\tobj[\"$$eav\"] = id;\r\n\t},\r\n\tgetAddPropertyName: function (name) {\r\n\t\treturn \"add\" + capitalize(name);\r\n\t},\r\n\tgetRemovePropertyName: function (name) {\r\n\t\treturn \"remove\" + capitalize(name);\r\n\t},\r\n\t_cacheAttributeStructure: function (attributeStructure) {\r\n\t\tif (!this._attributeCache[attributeStructure.aid]) {\r\n\t\t\tthis._attributeCache[attributeStructure.aid] = new AttributeCacheableObject(\r\n\t\t\t\tattributeStructure.aid,\r\n\t\t\t\tattributeStructure.name,\r\n\t\t\t\tattributeStructure.value,\r\n\t\t\t\tattributeStructure.spatial,\r\n\t\t\t\tattributeStructure.blob,\r\n\t\t\t\tattributeStructure.wkt,\r\n\t\t\t\tattributeStructure.geojson,\r\n\t\t\t\tattributeStructure.srid,\r\n\t\t\t\tattributeStructure.datatype.name,\r\n\t\t\t\tattributeStructure.datatype.islistof\r\n\t\t\t);\r\n\t\t}\r\n\t},\r\n\t_cacheEntityStructure: function (entityStructure, eidChain) {\r\n\t\tvar self = this;\r\n\t\tvar isRoot = entityStructure && entityStructure.fid ? true : false;\r\n\r\n\t\tvar eid = entityStructure.eid;\r\n\t\tif (eidChain) eidChain += '.' + eid;\r\n\t\telse eidChain = eid;\r\n\r\n\t\tif (!self._entityCache[entityStructure.eid]) {\r\n\t\t\tself._entityCache[entityStructure.eid] = new EntityCacheableObject(\r\n\t\t\t\tentityStructure.eid,\r\n\t\t\t\tentityStructure[isRoot ? \"ename\" : \"name\"],\r\n\t\t\t\tentityStructure.attributes,\r\n\t\t\t\tentityStructure.isrepeatable,\r\n\t\t\t\tentityStructure.cfg\r\n\t\t\t);\r\n\r\n\t\t\tentityStructure.entities.forEach(function (eStruct) {\r\n\t\t\t\tself._cacheEntityStructure(eStruct, eidChain);\r\n\t\t\t});\r\n\r\n\t\t\tentityStructure.attributes.forEach(function (aStruct) {\r\n\t\t\t\tself._cacheAttributeStructure(aStruct);\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (!self._eidChainChildCache[eidChain]) {\r\n\t\t\tself._eidChainChildCache[eidChain] = [];\r\n\t\t\tself._eidChainAttributeCache[eidChain] = [];\r\n\t\t\tentityStructure.entities.forEach(function (eStruct) {\r\n\t\t\t\tself._eidChainChildCache[eidChain].push(eStruct.eid);\r\n\t\t\t});\r\n\t\t\tentityStructure.attributes.forEach(function (aStruct) {\r\n\t\t\t\tself._eidChainAttributeCache[eidChain].push(aStruct.aid);\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\t_setTemplate: function (targetDto, eidChain) {\r\n\t\tvar self = this;\r\n\t\tvar eid = targetDto.eid;\r\n\t\t//var localEidChain = eidChain + '.' + eid;\r\n\t\tvar childEs = this._eidChainChildCache[eidChain];\r\n\t\tvar childAs = this._eidChainAttributeCache[eidChain];\r\n\t\tif (childEs) {\r\n\t\t\ttargetDto.entities = [];\r\n\t\t\tchildEs.forEach(function (e) {\r\n\t\t\t\tvar idx = targetDto.entities.push(self._entityCache[e].ForExport()) - 1;\r\n\t\t\t\tself._setTemplate(targetDto.entities[idx], eidChain + \".\" + e);\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (childAs) {\r\n\t\t\ttargetDto.attributes = [];\r\n\t\t\tchildAs.forEach(function (a) {\r\n\t\t\t\ttargetDto.attributes.push(self._attributeCache[a].ForExport());\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\t_addAttributeToEntity: function (dtoAttrib, pojo) {\r\n\t\tvar self = this;\r\n\t\t// set local variables for data type settings\r\n\t\tif(this._attributeCache[dtoAttrib.aid] === undefined){\r\n\t\t\tconsole.error(\"Attribute not found\", dtoAttrib, this._attributeCache);\r\n\t\t}\r\n\t\tvar structuralDef = this._attributeCache[dtoAttrib.aid];\r\n\t\tvar dtype = structuralDef.datatype;\r\n\t\t// build get/set with variation for islistof=true\r\n\t\tif (dtype.islistof) {\r\n\t\t\tObject.defineProperty(pojo, structuralDef.name, {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\tif (dtoAttrib.valuelist === \"undefined\")\r\n\t\t\t\t\t\tdtoAttrib.valuelist = [];\r\n\t\t\t\t\treturn dtoAttrib.valuelist;\r\n\t\t\t\t},\r\n\t\t\t\tset: function (newList) {\r\n\t\t\t\t\tdtoAttrib.valuelist = newList;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// add\r\n\t\t\tObject.defineProperty(pojo, self.getAddPropertyName(structuralDef.name), {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn function (value) {\r\n\t\t\t\t\t\tif (dtoAttrib.valuelist === \"undefined\")\r\n\t\t\t\t\t\t\tdtoAttrib.valuelist = [];\r\n\t\t\t\t\t\tdtoAttrib.valuelist.push(value);\r\n\t\t\t\t\t};\r\n\t\t\t\t},\r\n\t\t\t\tset: function (list) {\r\n\t\t\t\t\tthrow \"not writeable\";\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// remove\r\n\t\t\tObject.defineProperty(pojo, self.getRemovePropertyName(structuralDef.name), {\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn function (value) {\r\n\t\t\t\t\t\tif (dtoAttrib.valuelist === \"undefined\")\r\n\t\t\t\t\t\t\tdtoAttrib.valuelist = [];\r\n\t\t\t\t\t\tvar idx = -1;\r\n\t\t\t\t\t\tfor (var i = 0; i < dtoAttrib.valuelist.length; i++) {\r\n\t\t\t\t\t\t\tif (dtoAttrib.valuelist[i] === value) {\r\n\t\t\t\t\t\t\t\tidx = i;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (idx !== -1) {\r\n\t\t\t\t\t\t\tdtoAttrib.valuelist.splice(idx, 1);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t},\r\n\t\t\t\tset: function (value) {\r\n\t\t\t\t\tthrow \"not writeable\";\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\t// This code hijacks quotation marks and their similar ascii characters and replaces them with a placeholder: æ\r\n\t\t\t// The GET function then replaces æ with simple double quotations on outbound to the screen\r\n\t\t\t// And the SET function replaces simple double quotations with æ inbound to the DTO.\r\n\t\t\t// When submitted to the server, the C# code replaces æ with a re-escaped quotation mark.\r\n\t\t\t// This process helps us avoid Microsoft's baked in parameter handling, which was stripping escapes from internal quotation marks.\r\n\t\t\t// That process was causing data to fail deserialization, so it had to be circumvented.\r\n\t\t\t// The only other option was to dramatically overhaul the parameter hand-off we were using, which we may decide to do in the future.\r\n\t\t\t// ~ Rick\r\n\t\t\t// ^ dear Rick: fuck you too. ~ Ben\r\n\t\t\tdtoAttrib.dirty = false;\r\n\t\t\tvar valueKey = dtype.name.match(/geometry/) ? \"spatial\" : \"value\";\r\n\t\t\tvar quoteSafe = \"æ\";\r\n\t\t\tvar findAe = new RegExp(\"æ\", 'g');\r\n\t\t\tvar quoteRegex = new RegExp(\"[\\\"\\u201C\\u201D\\u201E\\u201F\\u2033\\u2036]\", 'g');\r\n\t\t\tvar initVal = (dtoAttrib.hasOwnProperty(valueKey) && dtoAttrib[valueKey] !== (null)) ?\r\n\t\t\t\t\t\t(typeof dtoAttrib[valueKey] === 'string') ? dtoAttrib[valueKey].replace(findAe, \"\\\"\") : dtoAttrib[valueKey] : null;\r\n\t\t\tdtoAttrib[valueKey] = (typeof initVal === 'string') ? initVal.replace(quoteRegex, quoteSafe) : initVal;\r\n\t\t\tObject.defineProperty(pojo, structuralDef.name, {\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn (dtoAttrib.hasOwnProperty(valueKey) && dtoAttrib[valueKey] !== (null)) ?\r\n\t\t\t\t\t\t(typeof dtoAttrib[valueKey] === 'string') ? dtoAttrib[valueKey].replace(findAe, \"\\\"\") : dtoAttrib[valueKey] : null;\r\n\t\t\t\t\tdtoAttrib.dirty = true;\r\n\r\n\t\t\t\t},\r\n\t\t\t\tset: function (newValue) {\r\n\t\t\t\t\tdtoAttrib[valueKey] = (typeof newValue === 'string') ? newValue.replace(quoteRegex, quoteSafe) : newValue;\r\n\t\t\t\t\tdtoAttrib.dirty = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\t_addEntityToEntity: function (dtoEntity, pojo, newEntity) {\r\n\t\tvar self = this;\r\n\t\tvar safe = true;\r\n\r\n\t\tvar structuralDef = this._entityCache[dtoEntity.eid];\r\n\t\tvar repeatable = dtoEntity.isrepeatable;\r\n\r\n\t\tvar isRoot = dtoEntity.fid ? true : false;\r\n\t\tvar entityName = dtoEntity[isRoot ? \"ename\" : \"name\"];\r\n\r\n\t\tvar pEav = pojo[\"$$eav\"] ? pojo[\"$$eav\"] : -1;\r\n\r\n\t\tvar eid = dtoEntity.eid;\r\n\t\tvar parentEidChain = self._eavEidChain[pEav] ? self._eavEidChain[pEav] + '.' : '';\r\n\t\tvar eidChain = isRoot ? eid : parentEidChain + eid;\r\n\r\n\t\t// with this section, and the optional last parameter\r\n\t\t// adding a new member of a repeatable entity should be easy\r\n\t\t// the outer Add function should just add an empty {} to the entity collection\r\n\t\t// then call this method with that entity, and the pojo at the same parent level\r\n\t\t// and throw the target eid it wants to add in as the last parameter\r\n\t\t// nesting should handle the rest\r\n\t\tif (newEntity) {\r\n\t\t\tif (dtoEntity) {\r\n\t\t\t\tself._setTemplate(dtoEntity, eidChain);\r\n\t\t\t} else {\r\n\t\t\t\tsafe = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!safe) return;\r\n\r\n\r\n\t\t// add eav property\r\n\t\tvar eav = self.getObjectId();\r\n\t\tself.setObjectId(dtoEntity, eav);\r\n\t\tself._eavName[eav] = entityName;\r\n\r\n\t\tif (!self._eavEidChain[eav])\r\n\t\t\tself._eavEidChain[eav] = eidChain;\r\n\r\n\t\tif (!self._eavParentEav[eav])\r\n\t\t\tself._eavParentEav[eav] = pEav ? pEav : -1;\r\n\r\n\t\t// new entity just for the pojo, to remove the bloat\r\n\t\tvar pojoIdx = -1; // returns if we push into a repeatable array\r\n\t\tvar pojoE = {\r\n\t\t\t\"$$eav\": eav,\r\n\t\t\t\"$$isrepeatable\": repeatable,\r\n\t\t\t\"$$oid\": dtoEntity.oid,\r\n\t\t\t\"$$status\" : dtoEntity.status\r\n\t\t};\r\n\t\t// add entity to pojo\r\n\t\tif (repeatable) {\r\n\t\t\tif (!(entityName in pojo))\r\n\t\t\t\tpojo[entityName] = [];\r\n\t\t\tpojoIdx = pojo[entityName].push(pojoE) - 1;\r\n\t\t} else {\r\n\t\t\tif (isRoot)\r\n\t\t\t\tpojo[\"$$eav\"] = eav;\r\n\t\t\telse\r\n\t\t\t\tpojo[entityName] = pojoE;\r\n\t\t}\r\n\r\n\t\tvar entityPojo = isRoot ? pojo : pojo[entityName];\r\n\r\n\t\tself._eavDto[eav] = dtoEntity;\r\n\t\tif (pojoIdx !== -1)\r\n\t\t\tself._eavPojo[eav] = entityPojo[pojoIdx];\r\n\t\telse\r\n\t\t\tself._eavPojo[eav] = entityPojo;\r\n\r\n\t\t// loop attribs and call _addAttributeToEntity\r\n\t\tif (dtoEntity.attributes)\r\n\t\t\tif (dtoEntity.attributes.length > 0)\r\n\t\t\t\tdtoEntity.attributes.forEach(function (attribDto) {\r\n\t\t\t\t\tif (pojoIdx !== -1) {\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tself._addAttributeToEntity(attribDto, entityPojo[pojoIdx]);\r\n\t\t\t\t\t} else { \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tself._addAttributeToEntity(attribDto, entityPojo);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\tif (repeatable) {\r\n\t\t\t// pojo.[entityname.]addEntityname function creation\r\n\t\t\tObject.defineProperty(pojo, self.getAddPropertyName(entityName), {\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tget: function () {\r\n\t\t\t\t\treturn function () {\r\n\r\n\t\t\t\t\t\tvar parentDto = self._eavDto[pEav];\r\n\t\t\t\t\t\tvar idx = parentDto.entities.push(self._entityCache[dtoEntity.eid].ForExport()) - 1;\r\n\t\t\t\t\t\tvar parentPojo = self._eavPojo[pEav];\r\n\t\t\t\t\t\t//var parentEidChain = self._eavEidChain[pEav];\r\n\t\t\t\t\t\tif (idx)\r\n\t\t\t\t\t\t\tself._addEntityToEntity(parentDto.entities[idx], parentPojo, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tset: function () {\r\n\t\t\t\t\tthrow \"not implemented yet\";\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (dtoEntity.entities)\r\n\t\t\tif (dtoEntity.entities.length > 0)\r\n\t\t\t\tdtoEntity.entities.forEach(function (entityDto) {\r\n\t\t\t\t\tif (pojoIdx !== -1)\r\n\t\t\t\t\t\tself._addEntityToEntity(entityDto, entityPojo[pojoIdx]);\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tself._addEntityToEntity(entityDto, entityPojo);\r\n\t\t\t\t});\r\n\t},\r\n\t_addEntityMethod: function (pojo,entityDto ,entity,scope) {\r\n\t\t// pojo.[entityname.]addEntityname function creation\r\n\t\tObject.defineProperty(pojo, scope.getAddPropertyName(entity.name), {\r\n\t\t\tconfigurable: true,\r\n\t\t\tget: function () {\r\n\t\t\t\treturn function () {\r\n\t\t\t\t\tvar pEav = pojo[\"$$eav\"] ? pojo[\"$$eav\"] : -1;\r\n\t\t\t\t\tvar parentDto = scope._eavDto[pEav];\r\n\t\t\t\t\tvar idx = parentDto.entities.push(scope._entityCache[entity.eid].ForExport()) - 1;\r\n\t\t\t\t\tvar parentPojo = scope._eavPojo[pEav];\r\n\t\t\t\t\t//var parentEidChain = self._eavEidChain[pEav];\r\n\t\t\t\t\tif (idx)\r\n\t\t\t\t\t\tscope._addEntityToEntity(parentDto.entities[idx], parentPojo, true);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tset: function () {\r\n\t\t\t\tthrow \"not implemented yet\";\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t},\r\n\t_addApplicationProperty: function (app, pojoApp, property) {\r\n\t\tvar quoteSafe = \"æ\";// String.fromCharCode(230);\r\n\t\tvar findAe = new RegExp(\"æ\", 'g');\r\n\t\tvar quoteRegex = new RegExp(\"[\\\"\\u201C\\u201D\\u201E\\u201F\\u2033\\u2036]\", 'g');\r\n\t\tvar initVal = (app.hasOwnProperty(property) && app[property] !== (null)) ?\r\n\t\t\t\t\t\t(typeof app[property] === 'string') ? app[property].replace(findAe, \"\\\"\") : app[property] : null;\r\n\t\tapp[property] = (typeof initVal === 'string') ? initVal.replace(quoteRegex, quoteSafe) : initVal;\r\n\t\tObject.defineProperty(pojoApp, property, {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function () {\r\n\t\t\t\t//return app[property];\r\n\t\t\t\treturn (app.hasOwnProperty(property) && app[property] !== (null)) ?\r\n\t\t\t\t\t\t(typeof app[property] === 'string') ? app[property].replace(findAe, \"\\\"\") : app[property] : null;\r\n\r\n\t\t\t},\r\n\t\t\tset: function (newValue) {\r\n\t\t\t\t//app[property] = newValue;\r\n\t\t\t\tapp[property] = (typeof newValue === 'string') ? newValue.replace(quoteRegex, quoteSafe) : newValue;\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\t_setApplicationRootProperties: function (app, pojo) {\r\n\t\tpojo.application = {};\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"appid\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"appsequence\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"apprevision\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"parent_appid\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"parent_relation\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"fid\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"status\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"clonestatus\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"name\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"description\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"createdby\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"createdon\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"updatedby\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"updatedon\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"orgid\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"priority\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"applicationCreatedByName\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"applicationCreatedOn\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"applicationSubmittedByName\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"applicationSubmittedOn\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"revisionUpdatedByName\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"revisionUpdatedOn\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"submittedRevisionAppId\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"display_id\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"revisionScoredOn\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"revisionScoredByName\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"prescreenedOrgCap\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"prescreenedAppCount\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"orgtypeid\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"clonedFromAppId\");\r\n\t\tthis._addApplicationProperty(app, pojo.application, \"clonedFromDisplayId\");\r\n\t},\r\n\tcreateSubmittableForm: function (formStructure, json) {\r\n\t\tvar that = {\r\n\t\t\tformDto: null,\r\n\t\t\tpojo: null\r\n\t\t};\r\n\t\t// cache the entity & attribute structures individually so that we can use them to \r\n\t\t// construct templates for add/remove of repeatables\r\n\t\tthis._cacheEntityStructure(formStructure);\r\n\r\n\t\tthat.formDto = json;\r\n\t\tthat.pojo = {};\r\n\t\tvar self = this;\r\n\t\tthat.pojo.RemoveEntity = function (eav) {\r\n\t\t\tvar removeEav = function (e, isDto) {\r\n\t\t\t\tvar idx = -1;\r\n\t\t\t\tvar entityName = self._eavName[e];\r\n\t\t\t\tvar parEav = self._eavParentEav[e];\r\n\t\t\t\tvar parContainer = isDto ? self._eavDto[parEav] : self._eavPojo[parEav];\r\n\t\t\t\tvar parArr = isDto ? parContainer.entities : parContainer[entityName];\r\n\t\t\t\tfor (var i = 0; i < parArr.length; i++) {\r\n\t\t\t\t\tif (e === parArr[i][\"$$eav\"]) {\r\n\t\t\t\t\t\tidx = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (idx !== -1) {\r\n\t\t\t\t\tif (isDto) { parArr[idx]['isDeleteFlagged'] = true; }\r\n\t\t\t\t\telse { parArr.splice(idx, 1); }\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tremoveEav(eav, true);\r\n\t\t\tremoveEav(eav, false);\r\n\t\t};\r\n\r\n\t\tthis._addEntityToEntity(that.formDto, that.pojo);\r\n\t\tvar existEntity = {};\r\n\t\tthat.formDto.entities.forEach(function (e) {\r\n\t\t\texistEntity[e.eid] = true;\r\n\t\t});\r\n\t\tvar entities = formStructure.entities;\r\n\t\tfor (var e in entities) {\r\n\t\t\tif (!existEntity[entities[e].eid]) {\r\n\t\t\t\tif (entities[e].isrepeatable) {\r\n\t\t\t\t\tvar scope = this;\r\n\t\t\t\t\tthis._addEntityMethod(that.pojo, that.formDto, entities[e], scope);\r\n\t\t\t\t\t//this._addEntityToEntity(entities[e], that.pojo);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis._setApplicationRootProperties(that.formDto.application, that.pojo);\r\n\r\n\t\t// add extension functions, if any exist\r\n\t\tif (extensionFunctions[formStructure.pid]) {\r\n\t\t\textensionFunctions[formStructure.pid].forEach(function (extensionFn) {\r\n\t\t\t\tthat.pojo[extensionFn.name] = extensionFn.fn.bind(that.pojo);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn that;\r\n\t},\r\n\r\n\t_addReadableAttribute: function (entity, attribute) {\r\n\t\tvar property = attribute.name;\r\n\t\tvar value = attribute.value;\r\n\t\tvar findAe = new RegExp(\"æ\", 'g');\r\n\t\t// fix string integers being returned with trailing zeros\r\n\t\tif (!!value && !isNaN(+value) && typeof +value === 'number') {\r\n\t\t\tvalue = +value.toString();\r\n\t\t}\r\n\t\tentity[property] = (typeof value === 'string') ? value.replace(findAe, \"\\\"\") : value;\r\n\t},\r\n\t_addReadableEntity: function (pojoParentEntity, jsonChildEntity) {\r\n\t\tvar target = {\r\n\t\t\tgroup: null\r\n\t\t};\r\n\t\tvar self = this;\r\n\r\n\t\tif (jsonChildEntity.isRepeatable) {\r\n\t\t\tif (!pojoParentEntity.hasOwnProperty(jsonChildEntity.name) || pojoParentEntity[jsonChildEntity.name] === (null)) {\r\n\t\t\t\tpojoParentEntity[jsonChildEntity.name] = [];\r\n\t\t\t}\r\n\t\t\tvar idx = pojoParentEntity[jsonChildEntity.name].push({}) - 1;\r\n\t\t\ttarget = pojoParentEntity[jsonChildEntity.name][idx];\r\n\t\t} else {\r\n\t\t\tpojoParentEntity[jsonChildEntity.name] = {};\r\n\t\t\ttarget = pojoParentEntity[jsonChildEntity.name];\r\n\t\t}\r\n\t\tvar source = jsonChildEntity;\r\n\t\ttarget.group = source.group;\r\n\r\n\t\tif (source.attributes)\r\n\t\t\tif (source.attributes.length > 0)\r\n\t\t\t\tsource.attributes.forEach(function (attrib) {\r\n\t\t\t\t\tself._addReadableAttribute(target, attrib);\r\n\t\t\t\t});\r\n\r\n\t\tif (source.entities)\r\n\t\t\tif (source.entities.length > 0)\r\n\t\t\t\tsource.entities.forEach(function (entity) {\r\n\t\t\t\t\tself._addReadableEntity(target, entity);\r\n\t\t\t\t});\r\n\t},\r\n\tcreateReadableForm: function (json) {\r\n\t\tvar that = {} as any;\r\n\t\tthat.ro = {};\r\n\t\tvar self = this;\r\n\r\n\t\tthat.ro.pid = json.pid;\r\n\t\tthat.ro.pname = json.pname;\r\n\t\tthat.ro.fid = json.fid;\r\n\t\tthat.ro.fname = json.fname;\r\n\t\tthat.ro.eid = json.eid;\r\n\t\tthat.ro.ename = json.ename;\r\n\t\tthat.ro.application = json.application;\r\n\r\n\t\tif (json.attributes)\r\n\t\t\tif (json.attributes.length > 0)\r\n\t\t\t\tjson.attributes.forEach(function (attrib) {\r\n\t\t\t\t\tself._addReadableAttribute(that.ro, attrib);\r\n\t\t\t\t});\r\n\r\n\t\tif (json.entities)\r\n\t\t\tif (json.entities.length > 0)\r\n\t\t\t\tjson.entities.forEach(function (entity) {\r\n\t\t\t\t\tself._addReadableEntity(that.ro, entity);\r\n\t\t\t\t});\r\n\r\n\r\n\t\tthat.ro.totalAmountRequested = extensionFunctions[that.ro.fid][0].fn.call(that.ro);\r\n\t\tthat.ro.totalCostEstimate = extensionFunctions[that.ro.fid][1].fn.call(that.ro);\r\n\t\treturn that;\r\n\t}\r\n}\r\n\r\n\r\nfunction AttributeCacheableObject(aid, name, value, spatial, blob, wkt, geojson, srid, dtname, dtlistof, forExport?) {\r\n this.aid = aid;\r\n this.name = name;\r\n this.opid = null;\r\n this.value = value;\r\n this.spatial = spatial ? spatial : null;\r\n this.blob = blob ? blob : null;\r\n this.wkt = wkt ? wkt : null;\r\n this.geojson = geojson ? geojson : null;\r\n this.srid = srid ? srid : null;\r\n if (!forExport)\r\n this.datatype = new DataTypeCacheableObject(dtname, dtlistof);\r\n var self = this;\r\n this.ForExport = function () {\r\n return new AttributeCacheableObject(\r\n\t\t\tself.aid,\r\n\t\t\tself.name,\r\n\t\t\tself.value,\r\n\t\t\tself.spatial,\r\n\t\t\tself.blob,\r\n\t\t\tself.wkt,\r\n\t\t\tself.geojson,\r\n\t\t\tself.srid,\r\n\t\t\tnull,\r\n\t\t\tnull,\r\n\t\t\ttrue\r\n\t\t);\r\n }\r\n}\r\n\r\nfunction EntityCacheableObject(eid, name, attributes, isrepeatable, cfg) {\r\n this.eid = eid;\r\n this.name = name;\r\n this.isrepeatable = isrepeatable;\r\n this.oid = null;\r\n this.entities = [];\r\n this.attributes = attributes || [];\r\n this.isDeleteFlagged = false;\r\n this.cfg = cfg;\r\n var self = this;\r\n this.ForExport = function () {\r\n return new EntityCacheableObject(\r\n\t\t\tself.eid,\r\n\t\t\tself.name,\r\n\t\t\tself.attributes,\r\n\t\t\tself.isrepeatable,\r\n\t\t\tself.cfg\r\n\t\t);\r\n }\r\n}\r\n\r\nfunction DataTypeCacheableObject(name, listof) {\r\n this.name = name;\r\n this.islistof = listof;\r\n}\r\n\r\n/** keys are pids */\r\nconst extensionFunctions = {\r\n\t// HB2 2015 \r\n\t\"1\": [\r\n\t\t{\r\n\t\t\tname: \"getTotalAmountRequested\",\r\n\t\t\tfn: function () {\r\n\t\t\t\tvar hb2 = parseFloat(this.amount_requested) || 0;\r\n\t\t\t\tvar otherSourceReq = parseFloat(this.other_source_requested_amount) || 0;\r\n\t\t\t\tvar syip = parseFloat(this.syip_allocation) || 0;\r\n\t\t\t\tvar otherSourceCom = parseFloat(this.other_source_committed_amount) || 0;\r\n\t\t\t\treturn hb2 + otherSourceReq + syip + otherSourceCom;\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tname: \"getTotalCostEstimate\",\r\n\t\t\tfn: function () {\r\n\t\t\t\tvar totalCost = 0,\r\n\t\t\t\t\tprojectPhases = this.hb2_15_project_phase;\r\n\t\t\t\tfor (var i = 0; i < projectPhases.length; i++) {\r\n\t\t\t\t\tvar pp = projectPhases[i];\r\n\t\t\t\t\tif (!isNaN(pp.cost_estimate)) {\r\n\t\t\t\t\t\ttotalCost += (pp.cost_estimate);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn totalCost;\r\n\t\t\t}\r\n\t\t}\r\n\t],\r\n\t\"2\": [\r\n\t\t{\r\n\t\t\tname: \"getTotalAmountRequested\",\r\n\t\t\tfn: function () {\r\n\t\t\t\tvar hb2 = parseFloat(this.amount_requested) || 0;\r\n\t\t\t\tvar otherSourceReq = parseFloat(this.other_source_requested_amount) || 0;\r\n\t\t\t\tvar syip = parseFloat(this.syip_allocation) || 0;\r\n\t\t\t\tvar otherSourceCom = parseFloat(this.other_source_committed_amount) || 0;\r\n\t\t\t\treturn hb2 + otherSourceReq + syip + otherSourceCom;\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tname: \"getTotalCostEstimate\",\r\n\t\t\tfn: function () {\r\n\t\t\t\tvar totalCost = 0,\r\n\t\t\t\t\tprojectPhases = this.ss_16_project_phase;\r\n\t\t\t\tif (!projectPhases) { return; }\r\n\t\t\t\tfor (var i = 0; i < projectPhases.length; i++) {\r\n\t\t\t\t\tvar pp = projectPhases[i];\r\n\t\t\t\t\tif (!isNaN(pp.cost_estimate)) {\r\n\t\t\t\t\t\ttotalCost += (+pp.cost_estimate);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn totalCost;\r\n\t\t\t}\r\n\t\t}\r\n\t]\r\n};","\r\nexport interface AreasServedLayerConfig {\r\n\tid: IntersectedLayerProp;\r\n\tname: AreaServedName\r\n\turl: string;\r\n\tidAttribute: string;\r\n\tdisplayAttribute: string;\r\n\tdisplayHeaderName: string;\r\n\tfieldsToStore: string[];\r\n\tsavePrimaryToAttribute: string;\r\n}\r\n\r\nexport enum IntersectedLayerProp {\r\n\tDistrict = 'SMARTPORTAL_CONST_DIST',\r\n\tJurisdiction = 'SMARTPORTAL_JURISDICTIONS',\r\n\tPDC = 'SMARTPORTAL_PDC',\r\n\tFC = 'SMARTPORTAL_FC',\r\n\tMPO = 'SMARTPORTAL_MPO',\r\n\tAPN = 'SMARTPORTAL_APN',\r\n\tCOSS = 'SMARTPORTAL_COSS',\r\n\tTMA = 'SMARTPORTAL_TMA'\r\n}\r\n\r\nexport enum AreaServedName {\r\n\tDISTRICT = 'district',\r\n\tMPO = 'mpo',\r\n\tPDC = 'pdc',\r\n\tJURISDICTION = 'jurisdiction',\r\n\tFC = 'fc',\r\n\tTMA = 'tma',\r\n\tPN = 'pn',\r\n}","export enum ModuleName {\r\n\tLrs = 'lrs24',\r\n\tVtrans = 'vtrans24',\r\n\tTransit = 'transit24',\r\n\tSummary = 'summary',\r\n\tProjectAreas = 'projectAreas',\r\n\tParcels = 'parcels',\r\n\tRouting = 'routing',\r\n\tPoints = 'points25',\r\n\tEconDev = 'econDev26',\r\n}\r\n\r\nexport interface ModuleLayerState {\r\n\t/** ID of the layer */\r\n\tid: string;\r\n\t/** If the layer will show on the summary module */\r\n\tisSummaryLayer: boolean;\r\n\t/** Should the items on the layer be included in the convex hull used for project aread */\r\n\tincludeInProjectArea: boolean;\r\n\tlegend: {\r\n\t\t/** Is the layer visible on this modules legend */\r\n\t\tmodule: boolean;\r\n\t\t/** Is the layer visible on the summary pearl's legend */\r\n\t\tsummary: boolean;\r\n\t}\r\n\terror: ModuleError | null,\r\n}\r\n\r\nexport interface ModuleToolState {\r\n\tid: any;\r\n\tname: string;\r\n\thideButton: boolean;\r\n\tisLegendVisible: boolean;\r\n\tisVisible: boolean;\r\n\tisDisabled: boolean;\r\n}\r\n\r\nexport interface ModuleFormState {\r\n\tisVisible: boolean;\r\n\tmodel: any | null;\r\n}\r\n\r\nexport interface ModuleError {\r\n\tid: string;\r\n\terror: __esri.Error;\r\n}\r\n\r\nexport type ModuleNotificationVisibility = null | \"warnings\" | \"errors\"\r\n\r\nexport interface ModuleNotifications {\r\n\t/** Controls the visibility of the notification panels */\r\n\tvisible: ModuleNotificationVisibility,\r\n\t/** List of any errors in the module. Any Module error will disable the module and be displayed in the header */\r\n\terrors: ModuleError[],\r\n\t/** List of any warnings in the module. Warnings will not disable modules or tools but may affect them. */\r\n\twarnings: ModuleError[],\r\n}\r\n\r\nexport interface ModuleState {\r\n\t/** ID of the module. Matches what's passed in by the config */\r\n\tid: ModuleName;\r\n\t/** Name that is shown in the module header */\r\n\tname: string;\r\n\t/** font awesome icon class that's shown in the modules pearl */\r\n\ticon: string;\r\n\t/** Controls the visibility of the entire module */\r\n\tisVisible: boolean;\r\n\t/** Controls the visibility of the module's legend */\r\n\tisLegendVisible: boolean;\r\n\t/** Controls disabled status of the module. If disabled the modules pearl becomes disabled */\r\n\tisDisabled: boolean;\r\n\t/** Readiness status of the module. Module becomes flagged as ready when all its summary layers, feature layers, etc... finish loading */\r\n\tisReady: boolean;\r\n\t/** List of States that controls the visible layers and if they are shown in the legend or on the summary page */\r\n\tlayers: ModuleLayerState[];\r\n\t/** Form state if the module has it. */\r\n\tform: ModuleFormState;\r\n\t/** The id of the tool currently active/visible in the module. using any type here so the tools can use their individual tool enums. */\r\n\tcurrentTool: any | null; //\r\n\t/** List of tool states */\r\n\ttools: ModuleToolState[];\r\n\t/** Warnings/errors */\r\n\tnotifications: ModuleNotifications;\r\n}\r\n\r\nexport interface ModuleStateConfig {\r\n\tid: ModuleName;\r\n\tname: string;\r\n\ticon: string;\r\n\tdisabled?: boolean;\r\n\ttools?: {\r\n\t\tid: any;\r\n\t\tname: string;\r\n\t\thideButton?: boolean;\r\n\t\tisLegendVisible?: boolean;\r\n\t\tisVisible?: boolean;\r\n\t\tisDisabled?: boolean;\r\n\t}[];\r\n\tlayers?: {\r\n\t\tid: string;\r\n\t\tisSummaryLayer: boolean;\r\n\t\tincludeInProjectArea?: boolean;\r\n\t\tlegend?: {\r\n\t\t\tgroup?: string;\r\n\t\t\tmodule: boolean;\r\n\t\t\tsummary: boolean;\r\n\t\t}\r\n\t}[]\r\n}\r\n\r\n","\r\n/**\r\n * used by legacy forms and old code./\r\n * should avoid adding to this but sometimes it just has to work.\r\n */\r\nexport const LegacyFidRouteDictionary = {\r\n 1: \"hb2\",\r\n 2: \"hb2\",\r\n 3: \"tap\",\r\n 4: \"revenue-sharing\",\r\n 5: \"hsip-bikeped\",\r\n 6: \"hsip-safety\",\r\n 7: \"revenue-sharing\",\r\n 8: \"hsip-bikeped\",\r\n 9: \"hsip-safety\",\r\n 10: \"tap\",\r\n 11: \"hsip-ssi\",\r\n 12: \"hsip-rail\",\r\n 13: \"sgr-bridge\",\r\n 14: \"sgr-pavement\",\r\n 15: \"hb2\",\r\n 16: \"pre-app\",\r\n 17: \"hsip-safety\",\r\n 18: \"hsip-ssi\",\r\n 19: \"hsip-bikeped\",\r\n 20: \"hsip-rail\",\r\n 21: \"sgr-pavement\",\r\n 22: \"sgr-bridge\",\r\n 23: \"tap-pre-app\",\r\n 24: \"tap-full-app\",\r\n 25: \"rs-pre-app\",\r\n 26: \"rs-full-app\",\r\n 27: \"sgrBridge\", //formatting for routes has changed as of fid 27. Component names need to be in camel case so avoid using dashes\r\n 28: \"sgrPavement\",\r\n 29: \"smartScalePre\",\r\n\t30: \"smartScale\",\r\n\t31: \"sgrBridge\",\r\n\t32: \"sgrPavement\",\r\n\t44: \"sgrBridge\",\r\n\t46: \"sgrPavement\",\r\n\t47: \"tap-pre-app\",\r\n\t48: \"tap-full-app\",\r\n\t49: \"rs-pre-app\",\r\n\t50: \"rs-full-app\",\r\n};\r\n","import { ApplicationClient } from \"app/api\";\r\n\r\n/** Supplies instance of ApplicationClient on demand, and keeps as a shared singleton. */\r\nexport const ApplicationClientName = 'applicationClient';\r\n\r\nconst $inject = ['$http', '$q'];\r\nexport const ApplicationClientFactory = [\r\n\t...$inject,\r\n\t($http: ng.IHttpService, $q: ng.IQService) =>\r\n\t\tnew ApplicationClient($http, $q)\r\n];\r\n","import { DiscussionClient } from \"app/api\";\r\n\r\n/** Supplies instance of DiscussionClient on demand, and keeps as a shared singleton. */\r\nexport const DiscussionClientName = 'discussionClient';\r\n\r\nconst $inject = ['$http', '$q'];\r\nexport const DiscussionClientFactory = [\r\n\t...$inject,\r\n\t($http: ng.IHttpService, $q: ng.IQService) =>\r\n\t\tnew DiscussionClient($http, $q)\r\n];\r\n","import { ReportClient } from \"app/api\";\r\n\r\n/** Supplies instance of ApplicationClient on demand, and keeps as a shared singleton. */\r\nexport const ReportClientName = 'reportClient';\r\n\r\nconst $inject = ['$http', '$q'];\r\nexport const ReportClientFactory = [\r\n\t...$inject,\r\n\t($http: ng.IHttpService, $q: ng.IQService) =>\r\n\t\tnew ReportClient($http, $q)\r\n];\r\n","import { angularModule } from \"angular-utilities\";\r\nimport { ApplicationClientFactory, ApplicationClientName } from \"./application-client.service\";\r\nexport { ApplicationClientName } from \"./application-client.service\";\r\nimport { DiscussionClientFactory, DiscussionClientName } from \"./discussion-client.service\";\r\nexport { DiscussionClientName } from \"./discussion-client.service\";\r\nimport { ReportClientFactory, ReportClientName } from \"./report-client.service\";\r\nexport { ReportClientName } from \"./report-client.service\";\r\n\r\nexport const SharedApiClientsModule = angularModule('SharedApiClientsModule', [])\r\n\t.factory(ApplicationClientName, ApplicationClientFactory)\r\n\t.factory(DiscussionClientName, DiscussionClientFactory)\r\n\t.factory(ReportClientName, ReportClientFactory)\r\n\t.name;\r\n","\r\nModalController.angularName = 'ModalController'\r\nModalController.$inject = [\"$scope\", \"$uibModalInstance\"]\r\nexport function ModalController($scope, $uibModalInstance) {\r\n\r\n $scope.cancel = function() {\r\n $uibModalInstance.dismiss(\"cancel\");\r\n };\r\n $scope.close = function() {\r\n $uibModalInstance.close();\r\n }\r\n}\r\n\r\n","// Module\nvar code = \"

    Comments

    Loading

    {{comment.firstname}} {{comment.lastname}} | {{comment.orgname}}  {{comment.emailaddress}}
    {{comment.timestamp | date:'MM/dd/yyyy @ h:mma'}}
    Relevant To: {{comment.fsid | lov:'formSections':'id'}}

    UNRESOLVED
    RESOLVED
    NEW
    NEEDS CONCURRENCE
    CONCURRED POST INTAKE
    NO ACTION NEEDED

    {{comment.text}}

    The field that this alert was created for has been modified and no longer applies.

    Acknowledged By: {{comment.acknowledgedbyfirstname}} {{comment.acknowledgedbylastname}} on {{comment.acknowledgedon | date:'MM/dd/yyyy @ h:mma'}}
    • 0\\\">

      Replies to This Alert

    • 0\\\">

      Replies to This Concurrence Alert

    • {{child.firstname}} {{child.lastname}} | {{child.orgname}}  {{child.emailaddress}}
      {{child.timestamp | date:'MM/dd/yyyy @ h:mma'}}
      NEW

      {{child.text}}

    {{user.firstname}} {{user.lastname}} | {{user.orgname}} {{user.emailaddress}}
    Comments are limited to 2500 characters
    \";\n// Exports\nexport default code;","import { AuthService, DiscussionService } from \"app/shared/services\";\r\nimport { NewCommentViewModel } from \"app/api\";\r\nimport { AppRootScope, AppConfig } from \"app/interfaces\";\r\nimport { EventNameUpdateSUPSWorkflowCompleted } from \"app/legacy/applications/application/forms/2022/smart-scale/full/sups-section/sups-section.controller\";\r\nimport template from \"app/shared/directives/comments-panel/comments-panel.html\";\r\nimport { IDirective } from \"angular\";\r\n\r\nexport const EventNameScrollToDiscussionById = 'scrollToDiscussionById';\r\n\r\ncomments_panel.angularName = 'commentsPanel';\r\ncomments_panel.$inject = [\"$window\"];\r\nconst CommentsPanelCtrl$inject = ['$scope', DiscussionService.angularName, 'Notification', '$rootScope', 'CONFIG', AuthService.angularName];\r\nexport function comments_panel($window: ng.IWindowService) {\r\n // Usage:\r\n // \r\n // Creates:\r\n // \r\n var directive: IDirective = {\r\n link: link,\r\n restrict: \"EA\",\r\n controller: [...CommentsPanelCtrl$inject, CommentsPanelCtrl],\r\n template,\r\n scope: {\r\n appid: '=',\r\n fid: '='\r\n }\r\n };\r\n return directive;\r\n\r\n function link(scope, element, attrs) {\r\n scope.getComments();\r\n scope.getPrivileges();\r\n\t}\r\n\r\n function CommentsPanelCtrl($scope, discussionService: DiscussionService, Notification: ng.uiNotification.INotificationService, $rootScope: AppRootScope, CONFIG: AppConfig, authService: AuthService) {\r\n\r\n $scope.user = authService.user ?? null;\r\n\r\n // empty new comment object\r\n $scope.newComment = {};\r\n\r\n $rootScope.$on('validationToolAlert', function (event,args) {\r\n $scope.getComments();\r\n });\r\n\r\n $rootScope.$on(EventNameUpdateSUPSWorkflowCompleted, function (event,args) {\r\n $scope.getComments();\r\n });\r\n\r\n\t\t$rootScope.$on(EventNameScrollToDiscussionById, (_, args) => {\r\n\t\t\t$scope.scrollToDiscussionById(args);\r\n\t\t});\r\n\r\n // get relevant form sections from lookups based on fid\r\n $scope.formSections = CONFIG.app.Lookups.formSections.filter(function (lov) {\r\n if (lov.parent_lookup_id === $scope.fid) {\r\n lov.name = lov.name\r\n // each form has an 'All Sections' record so as to comment on the entire app\r\n if (lov.name === 'All Sections') {\r\n $scope.newComment.fsid = lov.id; // when submitted a comment ,set all sections as default \r\n }\r\n return lov;\r\n }\r\n });\r\n\r\n $scope.getPrivileges = function () {\r\n\t\t\tif (!$scope.appid || !authService.user) {\r\n\t\t\t\t$scope.CanCreateAlerts = false;\r\n\t\t\t\t$scope.CanResolveAlerts = false;\r\n\t\t\t\t$scope.CanAnswerAlerts = false;\r\n\t\t\t\t$scope.CanViewComments = true;\r\n\t\t\t\t$scope.CanCreateComments = false;\r\n\t\t\t\t$scope.CanConcur = false;\r\n\t\t\t\t$scope.CanRequestConcurrence = false;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n discussionService.getPrivileges($scope.appid).then(function (data) {\r\n $scope.CanCreateAlerts = data.CanCreateAlerts;\r\n $scope.CanResolveAlerts = data.CanCreateAlerts;\r\n $scope.CanAnswerAlerts = data.CanAnswerAlerts;\r\n $scope.CanViewComments = data.CanViewComments;\r\n $scope.CanCreateComments = data.CanCreateComments;\r\n $scope.CanConcur = data.CanConcur;\r\n $scope.CanRequestConcurrence = data.CanRequestConcurrence\r\n }, function (error) {\r\n //$scope.loading = false;\r\n });\r\n }\r\n\r\n\t\t$scope.scrollToDiscussionById = (args: {discussion_id: number}) => {\r\n\t\t\tconst {discussion_id} = args;\r\n\t\t\tconst selector = `div[data-discussion-id=\"${discussion_id}\"]:visible`;\r\n\t\t\tconst match = $(selector);\r\n\t\t\tconst el = match[0];\r\n\t\t\tif (!el) return;\r\n\t\t\tel.scrollIntoView({\r\n\t\t\t\tblock: 'center',\r\n\t\t\t\tinline: 'center',\r\n\t\t\t\tbehavior: 'smooth',\r\n\t\t\t} as ScrollIntoViewOptions);\r\n\t\t}\r\n\r\n $scope.sectionFilter = {};\r\n //TODO add a library of fid's that have commenting disabled that hide/shows the new comment section of the panel\r\n //$scope.commentingDisabled = {\r\n // 1: true,\r\n // 2: true,\r\n // 3: true,\r\n // 4: true,\r\n // 5: true,\r\n // 6: true\r\n\r\n //}\r\n\r\n $scope.getComments = function () {\r\n\t\t\tif (!authService.user?.uid || !$scope.appid?.length) {\r\n\t\t\t\t$scope.comments = [];\r\n\t\t\t\t$scope.setComments(null);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n $scope.loading = true;\r\n discussionService.get($scope.appid).then(function (data) {\r\n $scope.comments = data;\r\n $scope.setComments(null);\r\n $scope.loading = false;\r\n }, function (error) {\r\n // error notification to user is handled in AuthInterceptor\r\n\t\t\t\t$scope.comments = [];\r\n\t\t\t\t$scope.setComments(null);\r\n $scope.loading = false;\r\n });\r\n }\r\n\r\n //add a new comment\r\n $scope.addComment = function () {\r\n $scope.isPosting = true;\r\n const newCommentModel: NewCommentViewModel = {\r\n appid: $scope.appid,\r\n text: $scope.newComment.text,\r\n discussion_type_id: $scope.newComment.discussion_type_id != undefined ? $scope.newComment.discussion_type_id : 1 ,\r\n fsid: $scope.newComment.fsid,\r\n resolvesparentalert: false, // used for replies, not new comments.\r\n }\r\n\r\n discussionService.create(newCommentModel).then(function () {\r\n Notification.success({ \"message\": \"Comment posted successfully\" });\r\n $scope.newComment.text = '';\r\n $scope.getComments();\r\n $scope.isPosting = false;\r\n }, function (error) {\r\n // error notification to user is handled in AuthInterceptor\r\n $scope.isPosting = false;\r\n });\r\n };\r\n\r\n //response to an alert\r\n $scope.addReply = function () {\r\n discussionService.create($scope.newReply).then(function () {\r\n Notification.success({ \"message\": \"Comment posted successfully\" });\r\n $scope.newReply = {};\r\n $scope.getComments();\r\n $scope.isPosting = false;\r\n }, function (error) {\r\n // error notification to user is handled in AuthInterceptor\r\n $scope.isPosting = false;\r\n });\r\n\r\n }\r\n\r\n $scope.acknowledgeComment = function (postId) {\r\n discussionService.acknowledge(postId).then(function () {\r\n Notification.success({ \"message\": \"Comment acknowledged successfully\" });\r\n $scope.getComments();\r\n $scope.isPosting = false;\r\n $rootScope.$emit('commentAcknowledged', true);\r\n }, function (error) {\r\n // error notification to user is handled in AuthInterceptor\r\n console.error(error);\r\n $scope.isPosting = false;\r\n });\r\n }\r\n\r\n $scope.GiveConcurrence = function (id) {\r\n discussionService.giveConcurrence(id,$scope.appid).then(function () {\r\n Notification.success({ \"message\": \"Concurrence given successfully\" })\r\n $scope.getComments();\r\n $scope.isPosting = false;\r\n $rootScope.$broadcast('updateConcurrenceCount');\r\n // $rootScope.$emit('commentAcknowledged', true)\r\n }, function (error) {\r\n // error notification to user is handled in AuthInterceptor\r\n $scope.isPosting = false;\r\n });\r\n }\r\n\r\n $scope.replyWithComment = function (id) {\r\n $scope.newReply = {\r\n appid: $scope.appid,\r\n replytoid: id,\r\n text: \"\",\r\n discussion_type_id: 1\r\n }\r\n }\r\n\r\n // watch for change in dropdown and filter comments as needed\r\n $scope.$watch('sectionFilter', function (fsid, oldFsid) {\r\n if (fsid === oldFsid) { return; }\r\n $scope.setComments(fsid);\r\n });\r\n\r\n // filter comments by fsid\r\n $scope.setComments = function (fsid) {\r\n $scope.commentsFiltered = $scope.comments.filter(function (comment) {\r\n if (fsid === null) { return comment }\r\n if (fsid !== null && comment.fsid === fsid) {\r\n return comment;\r\n }\r\n });\r\n };\r\n\r\n $scope.checkCommentOwner = function (owner) {\r\n if (owner.trim() === $scope.user.emailaddress.trim()) return true;\r\n return false;\r\n };\r\n\r\n }\r\n}\r\n","import {\r\n\tFormIds,\r\n\tProgramIds,\r\n\tSUPSWorkflowEvents as SUPSWorkflowEventsEnum,\r\n\tApplicationStatusIds,\r\n} from 'app/api';\r\n\r\n/**\r\n * Please don't add new things to this file.\r\n * 1: Use T4\\EnumListConfig to generate any enums you need from the database. This is a special case project so has a weird build process: Change EnumListConfig, rebuild T4 project, run template, rebuild T4 project again to copy results to C#.\r\n * 2: Use EnumsApiController\\EnumsApiMetadata to provide enums to typescript, via NSwag. This updates app/api every build.\r\n */\r\nexport namespace Enums {\r\n\t/** deprecated! use ProgramIds from 'app/api' */\r\n\texport const Programs = {\r\n\t\tUNASSIGNED: 0,\r\n\t\tHB2: ProgramIds.HB2,\r\n\t\tSmartScale: ProgramIds.SMART_SCALE,\r\n\t\tTA: ProgramIds.TA_Set_Aside,\r\n\t\tRevShare: ProgramIds.Revenue_Sharing,\r\n\t\tHSIP_BikePed: ProgramIds.HSIP_BikePed_Archive,\r\n\t\tHSIP_Safety: ProgramIds.HSIP_Safety_Archive,\r\n\t\tHSIP_SSI: ProgramIds.HSIP_SSI_Archive,\r\n\t\tHSIP_Rail: ProgramIds.HSIP_Rail_Archive,\r\n\t\tSGR_Bridge: ProgramIds.State_of_Good_Repair_Bridge,\r\n\t\tSGR_Pavement: ProgramIds.State_of_Good_Repair_Pavement,\r\n\t\tPreScoping: ProgramIds.Pre_Scoping,\r\n\t};\r\n\r\n\t/** deprecated! use FormIds from 'app/api' */\r\n\texport const Forms = {\r\n\t\tHB2_2017: FormIds.HB2_2017_Application,\r\n\t\tSmartScale_2018: FormIds.SMART_SCALE_2018_Application,\r\n\t\tTA_2018: FormIds.TA_Set_Aside_2018_Application,\r\n\t\tRevShare_2018: FormIds.Revenue_Sharing_2018_Application,\r\n\t\tHSIP_BikePed_2018: FormIds.HSIP_BikePed_2018_Application,\r\n\t\tHSIP_Safety_2018: FormIds.HSIP_Safety_2018_Application,\r\n\t\tRevShare_2019: FormIds.Revenue_Sharing_2019_Application,\r\n\t\tHSIP_BikePed_2019: FormIds.HSIP_BikePed_2019_Application,\r\n\t\tHSIP_Safety_2019: FormIds.HSIP_Safety_2019_Application,\r\n\t\tTA_2019: FormIds.TA_Set_Aside_2019_Application,\r\n\t\tHSIP_SSI_2019: FormIds.HSIP_SSI_2019_Application,\r\n\t\tHSIP_RAIL_2019: FormIds.HSIP_Rail_2019_Application,\r\n\t\tSGR_Bridge_2019: FormIds.State_of_Good_Repair_Bridge_2019_Form,\r\n\t\tSGR_Pavement_2019: FormIds.State_of_Good_Repair_Pavement_2019_Application,\r\n\t\tSmartScale_2020: FormIds.SMART_SCALE_2020_Application,\r\n\t\tSmartScalePreApp_2020: FormIds.SMART_SCALE_2020_Pre_Application,\r\n\t\tHSIP_Safety_2020: FormIds.HSIP_Safety_2020_Application,\r\n\t\tHSIP_SSI_2020: FormIds.HSIP_SSI_2020_Application,\r\n\t\tHSIP_BikePed_2020: FormIds.HSIP_BikePed_2020_Application,\r\n\t\tHSIP_RAIL_2020: FormIds.HSIP_Rail_2020_Application,\r\n\t\tSGR_Pavement_2020: FormIds.State_of_Good_Repair_Pavement_2020_Application,\r\n\t\tSGR_Bridge_2020: FormIds.State_of_Good_Repair_Bridge_2020_Form,\r\n\t\tTA_PreApp_2020: FormIds.TA_Set_Aside_2021_Pre_Application,\r\n\t\tTA_2020: FormIds.TA_Set_Aside_2021_Application,\r\n\t\tRS_PreApp_2020: FormIds.Revenue_Sharing_2021_Pre_Application,\r\n\t\tRS_2020: FormIds.Revenue_Sharing_2021_Application,\r\n\t\tSGR_Bridge_2021: FormIds.State_of_Good_Repair_Bridge_2021_Form,\r\n\t\tSGR_Pavement_2021: FormIds.State_of_Good_Repair_Pavement_2021_Application,\r\n\t\tSS_PreApp_2022: FormIds.SMART_SCALE_2022_Pre_Application,\r\n\t\tSS_2022: FormIds.SMART_SCALE_2022_Application,\r\n\t\tSGR_Bridge_2022: FormIds.State_of_Good_Repair_Bridge_2022_Form,\r\n\t\tSGR_Pavement_2022: FormIds.State_of_Good_Repair_Pavement_2022_Application,\r\n\t\tPre_Scoping_2022_Application: FormIds.Pre_Scoping_2026_Application,\r\n\t};\r\n\r\n\t/** deprecated! use ApplicationStatusIds from 'app/api' */\r\n\texport const Status = {\r\n\t\tPending: ApplicationStatusIds.Pending,\r\n\t\tSubmitted: ApplicationStatusIds.Submitted,\r\n\t\tOIPI_Screening: ApplicationStatusIds.OIPI_Screening,\r\n\t\tMMWG_Screening_Validation: ApplicationStatusIds.MMWG_Screening_Validation,\r\n\t\t//** 5 is unused i hope because it is missing from database. */\r\n\t\tScreened_Out: 5,\r\n\t\tScoring: ApplicationStatusIds.Scoring,\r\n\t\tDistrict_Validation: ApplicationStatusIds.District_Validation,\r\n\t\tCentral_Office_Validation: ApplicationStatusIds.Central_Office_Validation,\r\n\t\tExecutive_Working_Group_Review: ApplicationStatusIds.Executive_Working_Group_Review,\r\n\t\tScored: ApplicationStatusIds.Scored,\r\n\t\tProcessing: ApplicationStatusIds.Processing,\r\n\t\tProcessed_in: ApplicationStatusIds.Screened_In,\r\n\t\tProcessed_out: ApplicationStatusIds.Screened_Out,\r\n\t\tReady_for_Submission: ApplicationStatusIds.Ready_for_Submission,\r\n\t\tDistrict_Bridge_Engineer_Review: ApplicationStatusIds.District_Bridge_Engineer_Review,\r\n\t\tCentral_Bridge_Engineer_Review: ApplicationStatusIds.Central_Bridge_Engineer_Review,\r\n\t\tSubmitted_PreApplication: ApplicationStatusIds.Submitted_Pre_Application,\r\n\t\tOIPI_COSS_PreScreening: ApplicationStatusIds.OIPI_COSS_Pre_Screening,\r\n\t\tOIPI_RegNet_PreScreening: ApplicationStatusIds.OIPI_Regional_Network_Pre_Screening,\r\n\t\tOIPI_UDA_PreScreening: ApplicationStatusIds.OIPI_UDA_Pre_Screening,\r\n\t\tOIPI_Safety_PreScreening: ApplicationStatusIds.OIPI_Safety_Pre_Screening,\r\n\t\tDistrict_PreScreening: ApplicationStatusIds.District_Pre_Screening,\r\n\t\tCentral_Office_PreScreening: ApplicationStatusIds.Central_Office_Pre_Screening,\r\n\t\tPreScreened_In: ApplicationStatusIds.Pre_Screened_In,\r\n\t\tPreScreened_Out: ApplicationStatusIds.Pre_Screened_Out,\r\n\t\tOIPI_COSS_Screening: ApplicationStatusIds.OIPI_COSS_Screening,\r\n\t\tOIPI_Regional_Network_Screening: ApplicationStatusIds.OIPI_Regional_Network_Screening,\r\n\t\tOIPI_UDA_Screening: ApplicationStatusIds.OIPI_UDA_Screening,\r\n\t\tOIPI_Safety_Screening: ApplicationStatusIds.OIPI_Safety_Screening,\r\n\t\tLocal_Liaison_Validation: ApplicationStatusIds.Local_Liaison_Validation,\r\n\t\tPreScreening: ApplicationStatusIds.Pre_Screening,\r\n\t\tDistrict_Review: ApplicationStatusIds.District_Review\r\n\t};\r\n\r\n\t/** deprecated! Use `AttachmentTypeIds` from 'app/api' */\r\n export const Attachments = {\r\n Resolution_of_Support: 1,\r\n Letter_of_Support: 2,\r\n Local_Comprehensive_Plan: 3,\r\n Local_Regional_Economic_Development_Strategy: 4,\r\n Planning_Study_Safety_Study: 5,\r\n Project_Sketch: 6,\r\n Detailed_Cost_Estimate: 7,\r\n Site_Development_Plan: 8,\r\n Local_Utilities_Programming: 9,\r\n Access_Management_Plan_or_Zoning_Overlay: 10,\r\n Development_Project_Zoning_Reference: 11,\r\n Other: 12,\r\n OIPI_Review_Document: 13,\r\n Locality_Concurrence_with_Change: 14,\r\n District_Validation_Form: 15,\r\n Concurrency_Change_Form_for_Scoring: 16,\r\n Other_Committed_Funds: 17,\r\n Public_Notice: 18,\r\n MPO_Endorsement: 19,\r\n Capital_Improvement_Plan: 20,\r\n Maintenance_Analysis: 21,\r\n Crash_Report: 22,\r\n Typical_Proposed_Deck_Section_Existing_Approach_Section: 23,\r\n Proposed_Plan_View_of_Bridge_Approaches_with_Project_limits: 24,\r\n Existing_Typical_Approach_Roadway_Section: 25,\r\n SGR_Project_Cost_Estimates_both_Replacement_and_Repair_Options: 26,\r\n Supporting_Documentation_for_Smart_Flag: 27,\r\n Elevation_Section_of_Proposed_Bridge: 28,\r\n Accident_Safety_Analysis_Crash_Report_at_Bridge_Site: 29,\r\n Life_Cycle_Cost_Analysis_of_Bridge_Options: 30,\r\n Governing_Body_Resolution_of_Support: 31,\r\n MPO_Required_Resolution_of_Support: 32,\r\n Rail_and_Transit_Project_Detail_Form: 33,\r\n Other_Resolution_of_Support: 34,\r\n IJR_report: 35,\r\n Signal_Warrant_Justification_Study: 36,\r\n Attachment_A__Local_Traffic_Volumes: 37,\r\n Approval_Document_for_Site_Development_Plan: 38,\r\n Applicant_Concurrence_with_Change: 39,\r\n Project_Location_List: 40,\r\n\t\tDetailed_Project_Estimate: 41,\r\n\t\tCLRP_Document: 42,\r\n Program_Administration_Form: 43,\r\n Prescoping_Report: 44,\r\n Existing_and_Proposed_Cross_Section_of_Deck: 45,\r\n Existing_and_Proposed_Cross_Section_of_Immediate_Approach_Roadway: 46,\r\n\t\tCost_Estimates_Estimate_Workbook_and_Support_Documentation: 47,\r\n\t\tThird_Party_Contribution_Plan: 48,\r\n\t\tProject_Delivery_Schedule: 49,\r\n\t\tRequest_to_Administer: 50,\r\n\t\tEstimate_Workbook: 51,\r\n\t\tCurrent_Ridership_For_Existing_Routes: 52,\r\n\t\tExisting_Ridership: 53,\r\n\t\tProjected_or_Existing_Ridership: 54,\r\n\t\tProjected_Ridership_Increase_During_the_AM_Peak_Hour_as_a_Result_of_the_Improvement: 55,\r\n\t\tProposed_Schedule: 56,\r\n\t\tService_Provider_Letter_of_Support: 57,\r\n };\r\n\r\n export const NvapProjectAdmin = {\r\n DRPT: 1,\r\n Locally: 2,\r\n VDOT: 3\r\n }\r\n\r\n export const ValidationToolTypes = {\r\n CO: 1,\r\n District: 2\r\n }\r\n\r\n\t//** deprecated! use SUPSWorkflowEvents from 'app/api' */\r\n\texport const SUPSWorkflowEvents = {\r\n\t\tDistrict_Validator_Agree: SUPSWorkflowEventsEnum.District_Validator_Agree,\r\n\t\tDistrict_Validator_Disagree: SUPSWorkflowEventsEnum.District_Validator_Disagree,\r\n\t\tSubmitter_Agree: SUPSWorkflowEventsEnum.Submitter_Agree,\r\n\t\tSubmitter_Disagree: SUPSWorkflowEventsEnum.Submitter_Disagree,\r\n\t}\r\n}\r\n\r\nexport interface Enums {\r\n Attachments: typeof Enums.Attachments,\r\n Forms: typeof Enums.Forms,\r\n NvapProjectAdmin: typeof Enums.NvapProjectAdmin,\r\n Programs: typeof Enums.Programs,\r\n Status: typeof Enums.Status,\r\n\tValidationToolTypes: typeof Enums.ValidationToolTypes,\r\n\tSUPSWorkflowEvents: typeof Enums.SUPSWorkflowEvents\r\n}\r\n","import { StateService } from \"@uirouter/angularjs\";\r\nimport { AuthService } from \"./auth.service\";\r\n\r\nexport class SessionTimer {\r\n\tstatic angularName = 'sessionTimer';\r\n\tstatic $inject = [AuthService.angularName, '$state'];\r\n\r\n\tconstructor(private readonly authService: AuthService, private readonly $state: StateService) {}\r\n\r\n\t/** creates objects for keep alive functions. */\r\n\tprivate _timersStarted = false;\r\n\tpublic get timersStarted() { return this._timersStarted; }\r\n\r\n\t/**\r\n\t * time in milliseconds when the session will timeout\r\n\t * Default: 60 minutes, sets time from app settins in startTimers()\r\n\t */\r\n\tprivate _sessionTimeoutTimeMilliseconds = 1000 * 60 * 60;\r\n\r\n\t/**\r\n\t * how long before the session times out that you want the user to see the alert\r\n\t * 15 minutes - so popup will display at 45 minutes\r\n\t */\r\n\tprivate _logoutAlertTimerDifferenceMilliseconds = 1000 * 60 * 15;\r\n\r\n\t/**\r\n\t * how long to wait before listening to click events.\r\n\t * 30 seconds\r\n\t */\r\n\tprivate _listeningTimeIntervalMilliseconds = 1000 * 15;\r\n\r\n\t/** checks if user is logged out */\r\n\tpublic isTimerEnded: boolean = false;\r\n\tpublic getIsTimerEnded() { return this.isTimerEnded; }\r\n\r\n\t/** sets up timers needed to keep track of keep alive events. */\r\n\tprivate _timeSinceLastKeepAlive = 0;\r\n\tprivate _timeTillLogoutDialog = 0;\r\n\tprivate _lastTimeKeepAliveHappened = 0;\r\n\r\n\tprivate _logoutAlertTimer = null;\r\n\tprivate _loggedOutAlertTimer = null;\r\n\tprivate _resumeListeningTimer = null;\r\n\r\n\tprivate _bodyNode = null;\r\n\r\n\tprivate _bodyClickListener_Bound = null;\r\n\r\n\tprivate _dialogOption = null;\r\n\r\n\t/**\r\n\t* initializes session timers\r\n\t* @param dialogOption custom dialog, must implement show and hide methods\r\n\t* @param startNow start the timers immediately or not, if not then you need to explicitly start timers with startTimers();\r\n\t*/\r\n\tpublic createKeepSessionAliveTimers(dialogOption, startNow) {\r\n\t\tthis._dialogOption = dialogOption;\r\n\r\n\t\tthis._bodyClickListener_Bound = this._bodyClickListener.bind(this);\r\n\t\tthis._bodyNode = document.getElementsByTagName(\"BODY\")[0];\r\n\r\n\t\tif (startNow) {\r\n\t\t\tthis.startTimers();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic startTimers() {\r\n\t\t//make sure nothing is running\r\n\t\tthis.stopTimers();\r\n\r\n\t\t\r\n\t\tthis._lastTimeKeepAliveHappened = Date.now();\r\n\r\n\t\tconst logoutTimeRemainingSeconds = this.authService.getLogoutTime();\r\n\r\n\t\t// update _sessionTimeoutTimeMilliseconds if we have a better value from our last login.\r\n\t\t// if user has just opened a new tab they will have the cookie but the app has no idea they are logged in, they are logged in though. in this case, keep the max value for the timer (better than 0).\r\n\t\tif (logoutTimeRemainingSeconds) {\r\n\t\t\tthis._sessionTimeoutTimeMilliseconds = logoutTimeRemainingSeconds * 1000;\r\n\t\t}\r\n\r\n\t\t// 25% time remaining for logout dialog remainding time\r\n\t\tthis._logoutAlertTimerDifferenceMilliseconds = this._sessionTimeoutTimeMilliseconds * .25;\r\n\r\n\t\t// 75% of logout time\r\n\t\tthis._timeTillLogoutDialog = this._sessionTimeoutTimeMilliseconds * .75;\r\n\r\n\t\t//initial logoutAlert timer event.\r\n\t\tthis._logoutAlertTimer = setTimeout(() =>{\r\n\t\t\t\tthis._showSessionTimeoutWarningDialog();\r\n\t\t\t},\r\n\t\t\tthis._timeTillLogoutDialog\r\n\t\t);\r\n\r\n\t\t//initial timer event to change dialog box to logged out info.\r\n\t\tthis._loggedOutAlertTimer = setTimeout(() => {\r\n\t\t\t\tthis._changeKeepSessionDialogToLoggedOut();\r\n\t\t\t\tthis.isTimerEnded = true;\r\n\t\t\t},\r\n\t\t\tthis._sessionTimeoutTimeMilliseconds\r\n\t\t);\r\n\r\n\t\t//initial timer to wait for first clicks\r\n\t\tthis._resumeListeningTimer = setTimeout(() => {\r\n\t\t\t\tthis._bodyNode.addEventListener('click', this._bodyClickListener_Bound);\r\n\t\t\t},\r\n\t\t\tthis._listeningTimeIntervalMilliseconds\r\n\t\t);\r\n\r\n\t\tthis._timersStarted = true;\r\n\t}\r\n\r\n\tpublic stopTimers() {\r\n\t\tthis._bodyNode.removeEventListener(\"click\", this._bodyClickListener_Bound);\r\n\t\tclearTimeout(this._logoutAlertTimer);\r\n\t\tclearTimeout(this._resumeListeningTimer);\r\n\t\tclearTimeout(this._loggedOutAlertTimer);\r\n\t\tthis._timersStarted = false;\r\n\t}\r\n\r\n\tpublic resetTimers() {\r\n\t\tif (this._timersStarted) {\r\n\t\t\t//reset time since last keep alive \r\n\t\t\tthis._timeSinceLastKeepAlive = 0;\r\n\t\t\t//set time last keepalive event happend to now.\r\n\t\t\tthis._lastTimeKeepAliveHappened = Date.now();\r\n\t\t\t//pause event listener so we don't listen all the time. \r\n\t\t\tthis._resetBodyClickListener();\r\n\t\t\t//set isTimerEnded to false\r\n\t\t\tthis.isTimerEnded = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _showSessionTimeoutWarningDialog() {\r\n\t\tif (this._dialogOption) {\r\n\t\t\tvar date = new Date();\r\n\t\t\tvar expectedLogoutTime = date.getTime() + this._logoutAlertTimerDifferenceMilliseconds;\r\n\t\t\tconst msg = \"You are about to time out. Please click anywhere on the screen to continue.\";\r\n\t\t\tthis._dialogOption.show(msg, { progressType: \"sessionTimeOutWarning\" }, expectedLogoutTime);\r\n\t\t} else {\r\n\t\t\tconst msg = \"Do you want to stay logged in to this session?\";\r\n\t\t\tif (confirm(msg)) {\r\n\t\t\t\tthis._keepSessionAlive();\r\n\t\t\t} else {\r\n\t\t\t\twindow.location.href = \"./\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _bodyClickListener(e) {\r\n\t\t//time in milliseconds since last time a keepalive event was passed to the server.\r\n\t\tthis._timeSinceLastKeepAlive = Date.now() - this._lastTimeKeepAliveHappened;\r\n\t\t//if the time is longer than we allow send keep alive signal\r\n\t\tif (this._timeSinceLastKeepAlive > this._listeningTimeIntervalMilliseconds) {\r\n\t\t\t\r\n\t\t\t//send keep alive request and reset times.\r\n\t\t\tthis._keepSessionAlive();\r\n\t\t\tthis.resetTimers();\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t/** pauses the body click listener and resets times for keep alive functions. */\r\n\tprivate _resetBodyClickListener() {\r\n\t\t//pause the listener\r\n\t\t//this._bodyClickListener.pause();\r\n\t\tthis._bodyNode.removeEventListener('click', this._bodyClickListener_Bound);\r\n\r\n\t\t//clear out past listeners\r\n\t\tclearTimeout(this._resumeListeningTimer);\r\n\r\n\t\t//set timer to start listening .5 seconds before interval is up\r\n\t\tthis._resumeListeningTimer = setTimeout(() => {\r\n\t\t\t\t//resume listening\r\n\t\t\t\tthis._bodyNode.addEventListener('click', this._bodyClickListener_Bound);\r\n\t\t\t},\r\n\t\t\tthis._listeningTimeIntervalMilliseconds\r\n\t\t);\r\n\r\n\t\t//clearout timer for session alive dialog\r\n\t\tclearTimeout(this._logoutAlertTimer);\r\n\r\n\t\t//set timer for session alive dialog\r\n\t\tthis._logoutAlertTimer = setTimeout(() => {\r\n\t\t\t\tthis._showSessionTimeoutWarningDialog();\r\n\t\t\t},\r\n\t\t\tthis._timeTillLogoutDialog\r\n\t\t);\r\n\r\n\t\t//clearout timer for session alive dialog\r\n\t\tclearTimeout(this._loggedOutAlertTimer);\r\n\r\n\t\tthis.isTimerEnded = false;\r\n\r\n\t\t//initial timer event to change dialog box to logged out info.\r\n\t\tthis._loggedOutAlertTimer = setTimeout(() => {\r\n\t\t\t\tthis._changeKeepSessionDialogToLoggedOut();\r\n\t\t\t\tthis.isTimerEnded = true;\r\n\t\t\t},\r\n\t\t\tthis._sessionTimeoutTimeMilliseconds\r\n\t\t);\r\n\t}\r\n\r\n\tprivate _changeKeepSessionDialogToLoggedOut() {\r\n\t\t// logs out user when TimeoutWarningDialog ends\r\n\t\tconsole.debug('logoff: _changeKeepSessionDialogToLoggedOut');\r\n\t\tthis._dialogOption.hide();\r\n\t\tthis._keepSessionAlive();\r\n\t\t// don't log out the user, or it will break with multiple tabs (new tabs won't have timeout info from the original login).\r\n\t\t// the client timer system should not log the user out, the server does this for us with its own timer.\r\n\t\t// if we want to set the frontend to a \"probably logged out\" state, do that, but don't call a server logoff.\r\n\r\n\t\t// do nothing. next request will get 401 from the server and be handled by other interceptors.\r\n\t\t//authService.logoff().then((response) => {\r\n\t\t//\t$state.go('error.401');\r\n\t\t//});\r\n\t\tthis.stopTimers();\r\n\t}\r\n\r\n\tprivate _keepSessionAlive() {\r\n\t\t//TODO send keep alive signal to server\r\n\t\tif (this._dialogOption) {\r\n\t\t\tthis._dialogOption.hide();\r\n\t\t}\r\n\t\t\r\n\t\tthis.authService.keepAlive();\r\n\t}\r\n\r\n}\r\n","\r\n/**\r\n * This is a service to hold any static methods or data that is shared between different applications. I'm creating this to reduce\r\n * duplicate code and the magical global functions we used before moving to components.\r\n *\r\n * TODO: Not sure where to place this. Shared/services or forms. Adding it to the forms module for now\r\n */\r\nexport class ApplicationService {\r\n static angularName = 'applicationService';\r\n\r\n addRepeatableEntityField (entity, field) : number {\r\n let total = 0;\r\n\r\n angular.forEach(entity, function (repeatable) {\r\n if (angular.isDefined(repeatable[field])) {\r\n if (repeatable[field] !== null && !isNaN(repeatable[field])) total += repeatable[field]\r\n }\r\n\r\n });\r\n\r\n return total;\r\n }\r\n\r\n removeProjectPhaseIf = function (app, evaluator, id) {\r\n if (!evaluator) {\r\n angular.forEach(app.common_financial.project_phase, function (value, key) {\r\n if (value['project_phase_type'] == id) {\r\n value['project_phase_other'] = null;\r\n value[\"project_phase_percent_complete\"] = null;\r\n value[\"cost_estimate\"] = 0;\r\n value[\"start_date\"] = null;\r\n value[\"end_date\"] = null;\r\n }\r\n });\r\n }\r\n return evaluator;\r\n }\r\n}","/**\r\n * Event names used by login/out event broadcasting.\r\n * AuthInterceptor will $broadcast LoggedOut for 401 detection.\r\n * AuthService will listen $on LoggedOut and recognize logged-in state change.\r\n */\r\nexport const AuthEvents = {\r\n LoggedIn: 'authEvents.LoggedIn',\r\n LoggedOut: 'authEvents.LoggedOut',\r\n};\r\n","import { AppRootScope } from 'app/interfaces/AppRootScope';\r\nimport { AuthEvents } from './auth.events';\r\nimport {\r\n AccountClient,\r\n ChangePasswordViewModel,\r\n LoginRequestModel,\r\n ResetPasswordViewModel,\r\n ForgotPasswordViewModel,\r\n ApplicationClient,\r\n\tUserSessionViewModel,\r\n\tPublicAppSettingsViewModel,\r\n} from 'app/api';\r\nimport { AppConfig } from 'app/interfaces/AppConfig';\r\nimport { ApplicationClientName } from '../api-clients/application-client.service';\r\nimport { StateService } from \"@uirouter/core\";\r\nimport { TransitionOptions } from '@uirouter/angularjs';\r\n\r\n\r\nexport const LogoutTimeStorageName = 'logoutTime';\r\n\r\nexport class AuthService {\r\n static $inject = ['$http', '$q', '$rootScope', 'CONFIG', ApplicationClientName, '$state', 'localStorageService'];\r\n static angularName = 'authService';\r\n static baseUrl = ''; \r\n\r\n constructor(\r\n $http: ng.IHttpService,\r\n $q: ng.IQService,\r\n private readonly $rootScope: AppRootScope,\r\n private readonly CONFIG: AppConfig,\r\n\t\tprivate readonly applicationClient: ApplicationClient,\r\n\t\tprivate readonly $state: StateService,\r\n\t\tprivate readonly localStorageService) {\r\n\r\n $rootScope.$watch(\"authService.user\", user => this.watchUser.call(this, user));\r\n $rootScope.$on(AuthEvents.LoggedOut, (event, args) => this.setLoggedOut.call(this, args));\r\n\r\n this.user = CONFIG.user; \r\n this.app = CONFIG.app;\r\n this._loggedIn = CONFIG.user ? true : false;\r\n this.accountClient = new AccountClient($http, $q, AuthService.baseUrl);\r\n }\r\n\r\n public serviceBase = AuthService.baseUrl;\r\n public user: UserSessionViewModel = null;\r\n public app: PublicAppSettingsViewModel = null;\r\n public _loggedIn = false;\r\n\tpublic get loggedIn() { return this._loggedIn; }\r\n public readonly accountClient: AccountClient;\r\n\r\n // Login give the following info\r\n async login(loginInfo: LoginRequestModel) {\r\n const loginResult = await this.accountClient.login(loginInfo);\r\n \r\n return loginResult;\r\n }\r\n\r\n // Logs the user off the system\r\n\tlogoffAndRedirect() {\r\n\t\tconsole.info(`logoff: logoffAndRedirect`);\r\n\t\tthis.logoff().then(() => {\r\n\t\t\tthis.$state.go('home', null, { reload: true });\r\n\t\t});\r\n\t}\r\n\r\n\tasync logoff() {\r\n this.user = null;\r\n this.$rootScope.sessionTimer.stopTimers();\r\n document.cookie = '.AspNetCore.Identity.Application='\r\n if (this._loggedIn) {\r\n this._loggedIn = false;\r\n await this.accountClient.logoff();\r\n }\r\n this._loggedIn = false;\r\n\r\n\t\tthis.localStorageService.set(\"private-grid-filters\", {});\r\n }\r\n\r\n watchUser(user) {\r\n if (this._loggedIn && !this.$rootScope.sessionTimer.timersStarted) {\r\n this.$rootScope.sessionTimer.startTimers();\r\n }\r\n }\r\n\r\n async setLoggedOut(args: {redirectParams: TransitionOptions}) {\r\n\t\tconsole.info(`logoff: go to error.401`);\r\n\t\tconst { redirectParams } = args;\r\n this._loggedIn = false;\r\n await this.logoff();\r\n\t\tthis.$state.go('error.401', null, redirectParams);\r\n }\r\n\r\n // Sets the app data that will determine how the system functions\r\n async setAppData(logoutTime?: number) {\r\n const accountInfo = await this.accountClient.get();\r\n this.CONFIG.user = this.user = accountInfo.user;\r\n this.CONFIG.app = this.app = accountInfo.app;\r\n this._loggedIn = true;\r\n if(logoutTime){\r\n sessionStorage.setItem(LogoutTimeStorageName, logoutTime.toString());\r\n }\r\n }\r\n\r\n /**\r\n * Change the current user's password\r\n * @param changePasswordInfo \r\n * @returns Result message to show in notification.\r\n */\r\n changePassword(changePasswordInfo: ChangePasswordViewModel) {\r\n return this.accountClient.changePassword(changePasswordInfo);\r\n }\r\n\r\n // make a forgot password request to get an e-mail reset\r\n forgotPassword(forgotPaswordModel: ForgotPasswordViewModel) {\r\n return this.accountClient.forgotPassword(forgotPaswordModel);\r\n }\r\n\r\n confirmAccount(uid: number, code: string) {\r\n return this.accountClient.confirmAccount(uid, code);\r\n }\r\n\r\n resetPassword(model: ResetPasswordViewModel) {\r\n return this.accountClient.resetPassword(model);\r\n }\r\n\r\n async hasAccess(accessChecks) {\r\n return await this.applicationClient.hasAccess(accessChecks);\r\n }\r\n\r\n public async keepAlive() {\r\n return this.accountClient.keepAlive();\r\n }\r\n\r\n\tpublic getLogoutTime() {\r\n\t\tconst timeVal = sessionStorage.getItem(LogoutTimeStorageName);\r\n\t\tif (typeof timeVal === 'undefined' || timeVal === null || !(timeVal?.length > 0))\r\n\t\t\treturn undefined;\r\n\t\treturn Number(timeVal);\r\n\t}\r\n}\r\n","import { AppRootScope } from 'app/interfaces/AppRootScope';\r\nimport { AuthEvents } from './auth.events'; \r\nimport { angularModule } from 'angular-utilities';\r\nimport { StateService } from '@uirouter/angularjs';\r\n\r\n// TODO! this doesn't work when minfied. not sure why. please fix so we can use PROD mode with webpack!\r\n\r\nexport class AuthInterceptor implements ng.IHttpInterceptor {\r\n\r\n static $inject = ['$injector', '$q', '$rootScope'];\r\n\r\n static factory(\r\n $injector,\r\n $q: ng.IQService,\r\n $rootScope: AppRootScope\r\n ): AuthInterceptor {\r\n return new AuthInterceptor($injector, $q, $rootScope);\r\n }\r\n\r\n constructor(\r\n private readonly $injector,\r\n private readonly $q: ng.IQService,\r\n private readonly $rootScope: AppRootScope\r\n ) {\r\n }\r\n\r\n request = (config: ng.IRequestConfig): ng.IRequestConfig => {\r\n this.$rootScope.sessionTimer.resetTimers();\r\n return config;\r\n }\r\n\r\n\tresponseError = (rejection: ng.IHttpPromiseCallbackArg): ng.IPromise => {\r\n\t\tconst deferred = this.$q.defer();\r\n\r\n\t\tconst ns = this.$injector.get('Notification') as ng.uiNotification.INotificationService;\r\n\r\n\t\t// PARSE data object\r\n\t\tlet errorData;\r\n\t\tif (typeof rejection.data === 'object') {\r\n\t\t\terrorData = rejection.data;\r\n\t\t} else if (typeof rejection.data === 'string') {\r\n\t\t\ttry {\r\n\t\t\t\terrorData = JSON.parse(rejection.data.toString());\r\n\t\t\t} catch (err) {\r\n\t\t\t\terrorData = {message: rejection.data};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst $state = this.$injector.get('$state') as StateService;\r\n\r\n\t\tconst redirectParams = {\r\n\t\t\treload: true,\r\n\t\t};\r\n\r\n\t\tif (rejection.status === 401) {\r\n\t\t\t// 401 Unauthorized - User is not logged in.\r\n\t\t\tconsole.info(`401 detected, broadcasting logout`);\r\n\t\t\tthis.$rootScope.$broadcast(AuthEvents.LoggedOut, {redirectParams});\r\n\t\t} else if (rejection.status === 403) {\r\n\t\t\t// 403 Forbidden - User is logged in, but access is denied.\r\n\t\t\t$state.go('error.access-denied', null, redirectParams);\r\n\t\t} else if (rejection.status === 404) {\r\n\t\t\t// 404 Not Found - Resource not available.\r\n\t\t\t$state.go('error.404', null, redirectParams);\r\n\t\t} else if (rejection.status === 409) {\r\n\t\t\t// 409 Conflict - Server encountered a problem with the requested operation, details may be in response body.\r\n\t\t\t// No action here.\r\n\t\t\t// 409 Error bodies are automatically displayed in Notification toast messages.\r\n\t\t} else if (rejection.status === 500) {\r\n\t\t\t// 500 Internal Server Error - Backend exception that was not handled.\r\n\t\t\t$state.go('error.500', null, redirectParams);\r\n\t\t}\r\n\r\n\t\tdeferred.reject(rejection);\r\n\r\n\t\t// ConflictResult will be 'message', exceptions or custom output may be 'Message'.\r\n\t\tconst errorMessage = errorData?.Message || errorData?.message;\r\n\t\tif(errorMessage) ns.error(errorMessage);\r\n\r\n return deferred.promise;\r\n }\r\n}\r\nAuthInterceptor.factory.$inject = AuthInterceptor.$inject; // fix minification error. \r\n\r\nconst HttpInterceptorConfig = ['$httpProvider', ($httpProvider: ng.IHttpProvider) => \r\n\t$httpProvider.interceptors.push(AuthInterceptor.factory)];\r\n\r\nexport const AuthInterceptorModule = angularModule(\"AuthInterceptorModule\", [])\r\n\t.config(HttpInterceptorConfig)\r\n\t.name;\r\n","import { AppRootScope, AppConfig } from \"app/interfaces\";\r\nimport { angularForEach } from \"angular-utilities\";\r\nimport { entityManager } from 'app/legacy/services/entityManager';\r\nimport { ProgramApplicationService } from \"app/shared/services\";\r\nimport { AppComparer, ApplicationComparison, IAppComparerElement } from \"app/api\";\r\n\r\n\r\nexport class ComparisonService {\r\n static angularName = 'comparisonService';\r\n static $inject = ['$rootScope', 'CONFIG', ProgramApplicationService.angularName];\r\n constructor(\r\n private readonly $rootScope: AppRootScope,\r\n private readonly CONFIG: AppConfig,\r\n private readonly programApplicationService: ProgramApplicationService) {\r\n }\r\n\r\n private diffPojo;\r\n private diffIds;\r\n private diffPojoDto: AppComparer;\r\n private diffApp: ApplicationComparison & {\r\n\t\t// not sure where this 'description' is supposed to come from, its not in the API result.\r\n\t\t// adding this to make TS checks on this file happy since there is code that uses 'description'.\r\n\t\tdescription?: IAppComparerElement | undefined;\r\n\t};\r\n\r\n public async init(diffPojoInput: AppComparer) {\r\n this.diffPojo = {};\r\n this.diffPojo = diffPojoInput;\r\n this.diffApp = diffPojoInput.application; //HB - 3026\r\n this.diffIds = [];\r\n this.diffPojoDto = diffPojoInput;\r\n\r\n const targetFid = this.diffApp.fid.targetValue;\r\n\r\n const structural = await this.programApplicationService.getStructuralForms(targetFid);\r\n this.diffPojo = entityManager.createSubmittableForm(structural, diffPojoInput);\r\n \r\n\r\n this.diffPojo = this.diffPojo.pojo.undefined; //I'll figure this out...later\r\n // ^ wtf?\r\n\r\n this.$rootScope.$broadcast(\"diff-mode-enable\");\r\n }\r\n\r\n public close(){\r\n this.$rootScope.$broadcast(\"diff-mode-disable\");\r\n }\r\n\r\n public checkForDiff(modelName: string, oid: number) {\r\n modelName = modelName.replace(\"[$index]\", \"\");\r\n let diffNameArray = modelName.split('.');\r\n \r\n if (diffNameArray.length === 3 && diffNameArray[1] === \"application\") {\r\n //account for name and description: app.application.name, app.application.description\r\n return this.treeSearch(diffNameArray, this.diffPojo, oid);\r\n } else {\r\n if (diffNameArray[0] === \"app\" || diffNameArray[0] === \"$ctrl\") {\r\n //some forms have both app and $ctrl in their paths, so count num of occurrences \r\n var numOfPropNamesToRemove = diffNameArray.filter(function(x){ return (x === \"app\" ||x === \"$ctrl\") ; }).length;\r\n diffNameArray.splice(0,numOfPropNamesToRemove)\r\n return this.treeSearch(diffNameArray, this.diffPojo, oid);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * recursive search to match model name with name from diff pojo\r\n * eg searchArray would be [\"common_financial\",\"syip_allocation\", \"upc_donor\"]\r\n */\r\n private treeSearch(searchArray: string[], tree: {}, oid: number) {\r\n //see if the 0 index string in \r\n if (tree.hasOwnProperty(searchArray[0])) {\r\n const found = tree[searchArray[0]];\r\n //we need to use a different search function for repeatables\r\n if (Array.isArray(found)) {\r\n if (found[0].$$isrepeatable) {\r\n \r\n return this.matchRepeatables(searchArray, found, oid);\r\n }\r\n }\r\n //pop off the 0 index of the search array\r\n searchArray.shift();\r\n\r\n //if no values are left in search array, were as deep in the tree as we need to go\r\n //return where were currently at in the tree\r\n if (searchArray.length === 0){\r\n return found;\r\n } else {\r\n //else we dive further into the tree\r\n return this.treeSearch(searchArray, found, oid);\r\n }\r\n } else {\r\n //for some reason, elements at the top level such as name and description are NOT included in the searchArray \r\n //FIXME: application object can be inserted into pojo after creation and changes picked up by normal tree search\r\n if ((searchArray.length === 3) && (searchArray[0] === \"app\" && searchArray[1] === \"application\")) {\r\n if (searchArray[2] === \"name\" && (this.diffApp.name !== null && this.diffApp.name !== undefined) && (this.diffApp.name.sourceValue !== this.diffApp.name.targetValue)) {\r\n return this.diffApp.name.targetValue;\r\n }\r\n if (searchArray[2] === \"description\" && (this.diffApp.description !== null && this.diffApp.description !== undefined) && (this.diffApp.description.sourceValue !== this.diffApp.description.targetValue)) {\r\n return this.diffApp.description.targetValue;\r\n }\r\n }\r\n else {\r\n return \"%%NOTFOUND%%\";\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * this search function is like the tree search, except it needs to incorporate oid \r\n * in order to match up repeatable objects that have been updated \r\n */\r\n private matchRepeatables(searchArray: string[], foundObject, oid: number) {\r\n \r\n const found = this.repeatableTreeSearch(searchArray, oid, this.diffPojoDto.entities);\r\n \r\n return found != null\r\n ? found\r\n : \"%%NOTFOUND%%\";\r\n }\r\n\r\n /** recursive seach to find the oid, returns value if entity has status U (U = updated) */\r\n private repeatableTreeSearch(searchArray: string[], oid: number, entities) {\r\n let found = null;\r\n angularForEach(entities, (entity) => {\r\n if (entity.oid == oid) {\r\n if (entity.status == \"U\") {\r\n\r\n const attributeName = searchArray[searchArray.length - 1];\r\n \r\n //loop through the attributes to get the one we want \r\n angularForEach(entity.attributes, (attr) => {\r\n if (attr.name == attributeName) {\r\n \r\n found = attr.value;\r\n }\r\n });\r\n }\r\n } else {\r\n if (entity.entities != null) {\r\n const subFound = this.repeatableTreeSearch(searchArray, oid, entity.entities)\r\n if (subFound != null){\r\n found = subFound;\r\n }\r\n }\r\n }\r\n });\r\n\r\n return found;\r\n }\r\n\r\n /** takes in all the div id's of directives that registered a change */\r\n public registerDiffId(diffId) {\r\n this.diffIds.push(diffId);\r\n \r\n }\r\n\r\n /** expose div id's of diffs to diff naviagation panel */\r\n public getDiffIds() {\r\n return this.diffIds;\r\n \r\n }\r\n\r\n /** returns an entire array of entities that match the searchArray */\r\n private findEntitiesBySearchArray(searchArray: string[], tree: {}) {\r\n let found: {};\r\n if (tree.hasOwnProperty(searchArray[0])) {\r\n found = tree[searchArray[0]]\r\n searchArray.shift();\r\n if (searchArray.length == 0) {\r\n return found;\r\n }\r\n else {\r\n return this.findEntitiesBySearchArray(searchArray, found);\r\n }\r\n }\r\n }\r\n\r\n //search tree for entities by model name\r\n //loop through entity array to match on oid and look for status == 'A'\r\n public checkIfOidWasAdded(modelName: string, oid: number) {\r\n //hack to avoid comparing repeatables on pre-app\r\n if (this.isComparingPreApp()){\r\n return false;\r\n }\r\n\r\n modelName = modelName.replace(\"[$index]\", \"\");\r\n const diffNameArray = modelName.split('.');\r\n diffNameArray.shift();\r\n const entityArray = this.findEntitiesBySearchArray(diffNameArray, this.diffPojo);\r\n \r\n let isAdded = false;\r\n angularForEach(entityArray, (entity) => {\r\n if ((entity.$$oid == oid) && entity.$$status == \"A\"){\r\n isAdded = true;\r\n }\r\n });\r\n return isAdded;\r\n }\r\n\r\n /**\r\n * returns the entire array of removed entities for the corresponding model name\r\n * gets the entire array of entities and then filters by status == 'R'\r\n */\r\n public getArrayOfRemovedEntities(modelName: string) {\r\n //hack to avoid comparing repeatables on pre-app\r\n if (this.isComparingPreApp()){\r\n return false;\r\n }\r\n\r\n modelName = modelName.replace(\"[$index]\", \"\");\r\n let diffNameArray = modelName.split('.');\r\n diffNameArray.shift();\r\n const entityArray = this.findEntitiesBySearchArray(diffNameArray, this.diffPojo);\r\n const removedEntities = [];\r\n angular.forEach(entityArray, (entity) => {\r\n if (entity.$$status == \"R\") {\r\n removedEntities.push(entity);\r\n }\r\n });\r\n\r\n return removedEntities;\r\n }\r\n\r\n /**\r\n * this just returns true if comparing to pre-app\r\n * adding this in as a HACK to prevent the issue with repeatables past index 0showing up as changes \r\n * due to the empty entity being inserted in repeatables\r\n */\r\n private isComparingPreApp() {\r\n return (this.diffApp.fid.targetValue == 16);\r\n }\r\n\r\n}\r\n","import { EventClient } from 'app/api';\r\n\r\nexport class EventService {\r\n\tstatic angularName = 'eventService';\r\n\tstatic $inject = ['$http', '$q'];\r\n\r\n\tconstructor(\r\n\t\t\t$http: ng.IHttpService,\r\n\t\t\t$q: ng.IQService) {\r\n\t\t\tthis.eventClient = new EventClient($http, $q); // TODO use this when api/event return types are cleaned up.\r\n\t}\r\n\r\n\treadonly eventClient: EventClient;\r\n\r\n\t/** Get validation history and validations to perform */\r\n\tpublic getApplicationCodedEventsFid2(appid: string) {\r\n\t\treturn this.eventClient.getApplicationCodedEventsFid2(appid);\r\n\t}\r\n\r\n\t/** Has access to see validation panel */\r\n\tpublic hasAccess(appid: string) {\r\n\t\treturn this.eventClient.hasAccessToValidations(appid);\r\n\t}\r\n\r\n\t/** Get the publically visible events */\r\n\tpublic getPublicApplicationEvents(appid: string) {\r\n\t\treturn this.eventClient.getPublicApplicationEvents(appid);\r\n\t}\r\n}\r\n","import { angularIsDefined } from \"angular-utilities\"\r\n\r\n// TODO move this `FormService` to legacyformdirectives module and rename to LegacyFormService or something.\r\nexport class FormService {\r\n\r\n static angularName = 'formService'\r\n\r\n\r\n private sectionFormControls: Array = []\r\n private questionFormControls: Array = []\r\n public preSave : Function = function(){};\r\n\r\n\r\n public clearFormControls() {\r\n this.sectionFormControls = []\r\n this.questionFormControls = []\r\n }\r\n\r\n public registerSectionForms(fcontrol, title) {\r\n if (angularIsDefined(fcontrol)) this.sectionFormControls.push({ \"formControl\": fcontrol, \"title\": title });\r\n }\r\n\r\n public registerQuestionControl(fcontrol, title) {\r\n if (angularIsDefined(fcontrol)) this.questionFormControls.push({ \"formControl\": fcontrol, \"title\": title });\r\n }\r\n\r\n\r\n //returns false if no $dirty controllers\r\n //otherwise return array of dirty section names \r\n public isFormDirty() {\r\n let dirtySections = this.getDirtyTitles(this.sectionFormControls)\r\n let dirtyQuestions = this.getDirtyTitles(this.questionFormControls)\r\n console.log(dirtySections, dirtyQuestions)\r\n return dirtySections.length > 0 ? dirtySections : false\r\n }\r\n\r\n\r\n public resetFormControls() {\r\n this.setControlsToPristine(this.sectionFormControls)\r\n //this.setControlsToPristine(this.questionFormControls)\r\n }\r\n\r\n\r\n //iterate through controllers and reset to pristine (aka !$dirty)\r\n setControlsToPristine(controls) {\r\n controls.forEach(function (cont) {\r\n if (cont.formControl) {\r\n cont.formControl.$setPristine();\r\n }\r\n });\r\n }\r\n\r\n //iterate through controllers and return where the $dirty property is true \r\n getDirtyTitles(controls) {\r\n let foundDirtyControls = []\r\n controls.forEach(function (cont) {\r\n \r\n\r\n if (cont.formControl['$dirty']) {\r\n foundDirtyControls.push(cont.title)\r\n }\r\n });\r\n return foundDirtyControls\r\n }\r\n\r\n\r\n //reset an individual section form control by section title (e.g. \"Location\")\r\n public setControlToDirtyByName(name) {\r\n var control = this.sectionFormControls.find(obj => {\r\n return obj.title === name\r\n })\r\n if (angular.isDefined(control)){\r\n control.formControl[\"$dirty\"] = true;\r\n }\r\n\r\n }\r\n\r\n public setPreSave(preSaveFn) {\r\n this.preSave = preSaveFn;\r\n }\r\n}\r\n","import { FormsClient } from \"app/api\";\r\n\r\n/** Shared singleton instance of FormsClient. */\r\nexport const FormsClientServiceName = 'formsClient';\r\n\r\nconst $inject = ['$http', '$q'];\r\nexport const FormsServiceClientFactory = [\r\n\t...$inject,\r\n\t($http: ng.IHttpService, $q: ng.IQService) =>\r\n\t\tnew FormsClient($http, $q)\r\n];\r\n","import { DiscussionClient, NewCommentViewModel } from 'app/api';\r\n\r\nexport class DiscussionService {\r\n\tstatic angularName = 'discussionService';\r\n\tstatic $inject = ['$http', '$q'];\r\n\tconstructor(\r\n\t\t$http: ng.IHttpService,\r\n\t\t$q: ng.IQService) {\r\n\t\tthis.discussionClient = new DiscussionClient($http, $q);\r\n\t}\r\n\r\n\tprivate readonly discussionClient: DiscussionClient;\r\n\r\n\tget(appId: string) {\r\n\t\treturn this.discussionClient.get(appId);\r\n\t}\r\n\r\n\tgetPrivileges(appId: string) {\r\n\t\treturn this.discussionClient.getPrivileges(appId);\r\n\t}\r\n\r\n\tgetAllCommentCounts() {\r\n\t\treturn this.discussionClient.getAllCommentCounts();\r\n\t}\r\n\r\n\tgetNewCommentCount() {\r\n\t\treturn this.discussionClient.getNewCommentCount();\r\n\t}\r\n\r\n\tgetAlertsCount() {\r\n\t\treturn this.discussionClient.getPendingAlertCount();\r\n\t}\r\n\r\n\tgetConcurrenceAlertsCount() {\r\n\t\treturn this.discussionClient.getConcurrenceAlertCount();\r\n\t}\r\n\r\n\tcreate(post: NewCommentViewModel) {\r\n\t\treturn this.discussionClient.create(post);\r\n\t}\r\n\r\n\tacknowledge(postId: number) {\r\n\t\treturn this.discussionClient.acknowledge(postId);\r\n\t}\r\n\r\n\tgiveConcurrence(id: number, appid: string) {\r\n\t\treturn this.discussionClient.giveConcurrence(id, appid);\r\n\t}\r\n}\r\n","import { FileClient } from 'app/api';\r\nimport { openWindowWithPost } from '../util/openWindowWithPost';\r\n\r\nexport const FileRequestUrl = '/api/file/GetFilesByFileName';\r\n\r\nexport class FileAttachmentService {\r\n\tstatic angularName = 'fileAttachmentService';\r\n\tstatic $inject = ['$http', '$q'];\r\n\tconstructor(\r\n\t\t$http: ng.IHttpService,\r\n\t\t$q: ng.IQService\r\n\t) {\r\n\t\tthis.fileClient = new FileClient($http, $q); // use this when api/file controller methods are cleaned up.\r\n\t}\r\n\r\n\treadonly fileClient: FileClient;\r\n\treadonly serviceBase = '/api/file/';\r\n\r\n\t/** max file size in MiB */\r\n\tpublic maxFileSize = 28; // 28 Mib\r\n\r\n\t/** max file size in bytes */\r\n\tpublic maxFileSizeBytes = this.maxFileSize * Math.pow(2, 20);\r\n\r\n\t/** allowed attachment types */\r\n\tpublic allowedAttachmentTypes = [\r\n\t\t'csv',\r\n\t\t'doc',\r\n\t\t'docx',\r\n\t\t'gif',\r\n\t\t'jpg',\r\n\t\t'jpeg',\r\n\t\t'odt',\r\n\t\t'rtf',\r\n\t\t'pdf',\r\n\t\t'png',\r\n\t\t'tiff',\r\n\t\t'txt',\r\n\t\t'xls',\r\n\t\t'xlsx',\r\n\t\t'xlsm',\r\n\t\t'zip',\r\n\t\t'kmz',\r\n\t];\r\n\r\n\t/** Check if file blob exist */\r\n\tpublic async blobExist(applicationId: string, fileName: string) {\r\n\t\tvar fileViewModel = {\r\n\t\t\tapplicationId: applicationId,\r\n\t\t\tfileName: fileName,\r\n\t\t};\r\n\r\n\t\treturn this.fileClient.blobExist(fileViewModel);\r\n\t}\r\n\r\n\t/** Get a file (returns location string to set window.location to or href) */\r\n\tpublic getFile(applicationId: string, fileName: string) {\r\n\t\tconst encodedFilename = encodeURIComponent(fileName);\r\n\t\treturn `${this.serviceBase}Get?applicationId=${applicationId}&fileName=${encodedFilename}`;\r\n\t}\r\n\r\n\t/** Remove a file */\r\n\tpublic removeFile(applicationId: string, fileName: string) {\r\n\t\treturn this.fileClient.removeAttachment(applicationId, fileName);\r\n\t}\r\n\r\n\t/** update a file */\r\n\tpublic updateFile(applicationId: string, attachmentId: number, attachmentTypeId: number) {\r\n\t\treturn this.fileClient.updateAttachment(\r\n\t\t\tapplicationId,\r\n\t\t\tattachmentId,\r\n\t\t\tattachmentTypeId\r\n\t\t);\r\n\t}\r\n\r\n\t/** Get all (returns location string to set window.location to or href) */\r\n\tpublic getAll(applicationId: string) {\r\n\t\treturn `${this.serviceBase}GetAll?applicationId=${applicationId}`;\r\n\t}\r\n\r\n\t/** Get all selected (returns location string to set window.location to or href) */\r\n\t/*\r\n public getFilesByFileName(applicationId: string, selectedFiles: string[]) {\r\n let urlEncoder = '';\r\n let i = 0;\r\n while (i < selectedFiles.length) {\r\n const encodedFilename = encodeURIComponent(selectedFiles[i]);\r\n urlEncoder += `&fileNames=${encodedFilename}`;\r\n i++;\r\n }\r\n return `${this.serviceBase}GetFilesByFileName?applicationId=${applicationId}${urlEncoder}`;\r\n }\r\n\t*/\r\n\r\n\tpublic getFilesByFileNamePostRequest(\r\n\t\tapplicationId: string,\r\n\t\tselectedFiles: string[]\r\n\t) {\r\n\t\tconst parms = {\r\n\t\t\tapplicationId: applicationId,\r\n\t\t\tfileNames: selectedFiles,\r\n\t\t};\r\n\t\topenWindowWithPost(FileRequestUrl, parms);\r\n\t}\r\n}\r\n","import {\r\n\tLookupClient,\r\n} from 'app/api';\r\n\r\nexport class LookupService {\r\n\tstatic angularName = 'lookupService';\r\n\t\r\n\tstatic $inject = [\"$http\", \"$q\"];\r\n\tconstructor($http: ng.IHttpService, $q: ng.IQService) {\r\n\t\tthis.lookupClient = new LookupClient($http, $q);\r\n\t}\r\n\r\n\tpublic readonly lookupClient: LookupClient;\r\n\r\n\tpublic getSmartScaleFeatures() {\r\n\t\treturn this.lookupClient.smartScaleEnhancements();\r\n\t}\r\n\r\n\tpublic getRiskLevel(){\r\n\t\treturn this.lookupClient.riskLevel();\r\n\t}\r\n\r\n\tpublic getCreationMethod(){\r\n\t\treturn this.lookupClient.creationMethod();\r\n\t}\r\n}\r\n","import { NoticeClient, NoticeViewModel, Notice } from \"app/api\";\r\n\r\nexport class NoticeService {\r\n static angularName = 'noticeService';\r\n static $inject = ['$http', '$q'];\r\n constructor(\r\n $http: ng.IHttpService,\r\n $q: ng.IQService) {\r\n this.noticeClient = new NoticeClient($http, $q);\r\n }\r\n\r\n private readonly noticeClient: NoticeClient;\r\n\r\n public getGridData() {\r\n return this.noticeClient.getGridData();\r\n }\r\n\r\n public getAllActive() {\r\n return this.noticeClient.getAllActive();\r\n }\r\n\r\n public get(id: number) {\r\n return this.noticeClient.get(id);\r\n }\r\n\r\n public edit(editedNotice: NoticeViewModel) {\r\n return this.noticeClient.edit(editedNotice);\r\n }\r\n\r\n public add(createdNotice: NoticeViewModel) {\r\n return this.noticeClient.add(createdNotice);\r\n }\r\n\r\n public remove(notice: Notice) {\r\n return this.noticeClient.delete(notice);\r\n }\r\n}\r\n","import { IPromise } from \"angular\";\r\nimport { OrganizationClient, OrganizationAccessModel, AdminType, AdminTypeOrganizationViewModel, OrganizationViewModel, GridRequest, Organization, District_organization, GridResultOfOrganizationGridViewModel } from \"app/api\";\r\n\r\nexport class OrganizationService {\r\n\tstatic angularName = 'organizationService';\r\n\tstatic $inject = ['$http', '$q'];\r\n\tconstructor(\r\n\t\t$http: ng.IHttpService,\r\n\t\t$q: ng.IQService) {\r\n\t\tthis.organizationClient = new OrganizationClient($http, $q);\r\n\t}\r\n\r\n\tprivate readonly organizationClient: OrganizationClient;\r\n\r\n\tpublic getOrgForAdmin(orgId: number, adminType: AdminType) {\r\n\t\treturn this.organizationClient.getOrgForAdmin(orgId, adminType);\r\n\t}\r\n\r\n\tpublic getNewOrgForAdmin(adminType: AdminType) {\r\n\t\treturn this.organizationClient.getNewOrgForAdmin(adminType);\r\n\t}\r\n\r\n\tpublic getAllowedOrganizationRolesForAdmin(orgid: number, adminType: AdminType) {\r\n\t\treturn this.organizationClient.getAllowedOrganizationRolesForAdmin(orgid, adminType);\r\n\t}\r\n\r\n\tpublic add(organizationViewModel: OrganizationViewModel, adminType?: AdminType) {\r\n\t\tconst adminTypeUserViewModel: AdminTypeOrganizationViewModel = {\r\n\t\t\tOrganizationViewModel: organizationViewModel,\r\n\t\t\tAdminType: adminType,\r\n\t\t};\r\n\t\treturn this.organizationClient.add(adminTypeUserViewModel);\r\n\t}\r\n\r\n\tpublic edit(organizationViewModel: OrganizationViewModel, adminType: AdminType) {\r\n\t\tconst adminTypeUserViewModel: AdminTypeOrganizationViewModel = {\r\n\t\t\tOrganizationViewModel: organizationViewModel,\r\n\t\t\tAdminType: adminType\r\n\t\t};\r\n\t\treturn this.organizationClient.edit(adminTypeUserViewModel);\r\n\t}\r\n\r\n\tpublic getUsers(orgid: number) {\r\n\t\treturn this.organizationClient.getUsers(orgid);\r\n\t}\r\n\r\n\tpublic getPage(gridRequest: GridRequest, adminType?: AdminType) {\r\n\t\tswitch (adminType) {\r\n\t\t\tcase AdminType.DistrictAdmin:\r\n\t\t\t\treturn this.organizationClient.getPageDistrictAdmin(gridRequest);\r\n\t\t\tdefault:\r\n\t\t\t\treturn this.organizationClient.getPage(gridRequest);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic getOrgsForDistrictAdmin() {\r\n\t\treturn this.organizationClient.getOrgsForDistrictAdmin();\r\n\t}\r\n\r\n\tpublic hasAccess(accessModel: OrganizationAccessModel) {\r\n\t\treturn this.organizationClient.hasAccess(accessModel);\r\n\t}\r\n\r\n\tpublic getFips(orgid: number) {\r\n\t\treturn this.organizationClient.getFips(orgid);\r\n\t}\r\n\r\n\tpublic getDistrictsForOrg(orgid: number) {\r\n\t\treturn this.organizationClient.getApplicationDistricts(orgid);\r\n\t}\r\n\r\n\tpublic getLocalityMapping() {\r\n\t\treturn this.organizationClient.getLocalityMapping();\r\n\t}\r\n}\r\n","import { ProjectClient, ProjectFormViewModel } from 'app/api';\r\n\r\nexport class ProjectService {\r\n\tstatic angularName = 'projectService';\r\n\tstatic $inject = ['$http', '$q'];\r\n\tconstructor(\r\n\t\t$http: ng.IHttpService,\r\n\t\t$q: ng.IQService) {\r\n\t\tthis.projectClient = new ProjectClient($http, $q); // TODO use when ProjectController methods have cleaned up return types.\r\n\t}\r\n\r\n\tprivate readonly projectClient: ProjectClient;\r\n\r\n\t/** gets full list of applicable projects */\r\n\tpublic getList() {\r\n\t\treturn this.projectClient.getList();\r\n\t}\r\n\r\n\tpublic getProject(id: number) {\r\n\t\treturn this.projectClient.getProject(id);\r\n\t}\r\n\r\n\tpublic saveProject(project: ProjectFormViewModel) {\r\n\t\treturn this.projectClient.saveProject(project);\r\n\t}\r\n\r\n\t/** does the user have any access to the project list? */\r\n\tpublic canViewProjectList() {\r\n\t\treturn this.projectClient.canViewProjectList();\r\n\t}\r\n\r\n\tpublic getLookups(lookups: string[]) {\r\n\t\treturn this.projectClient.getLookups(lookups);\r\n\t}\r\n}\r\n","import { AppRootScope } from \"app/interfaces\";\r\nimport { angularForEach } from \"angular-utilities\";\r\nimport { Enums } from 'app/shared/enums';\r\n\r\nexport interface RequiredAttachment {\r\n\tattachmentId: typeof Enums.Attachments;\r\n\tmessage: string;\r\n}\r\n\r\nexport class RequiredAttachmentsService {\r\n static angularName = 'requiredAttachments';\r\n static $inject = ['$rootScope'];\r\n constructor(\r\n private readonly $rootScope: AppRootScope) {\r\n }\r\n\r\n private _allRequiredAttachments: any[];\r\n private _uploadedAttachments: any[];\r\n private _subRequiredAttachments: any[];\r\n private _subUploadedAttachments: any[];\r\n\r\n public readonly data = {\r\n requiredRemainingCount: 0,\r\n uploadPanelMessages: []\r\n };\r\n\r\n\tpublic readonly subData = [];\r\n\r\n /**\r\n * subData should be setup like: IN THE FUTURE NEST IN ANOTHER ARRAY TO HOLD NAME OF THE ENTITY THAT THESE BELONG TO\r\n * [\r\n * index: 0\r\n * requiredRemainingCount:0,\r\n * uploadPanelMessages: []\r\n * ]\r\n * initialize required attachments\r\n * should be called once in the controller of the application\r\n */\r\n public init(attachments: [], defaultRequired?: RequiredAttachment[]) {\r\n this._allRequiredAttachments = [];\r\n this._uploadedAttachments = [];\r\n this._subRequiredAttachments = [];\r\n this._subUploadedAttachments = [];\r\n //clear previous attachment array\r\n this._allRequiredAttachments.length = 0;\r\n this._uploadedAttachments.length = 0;\r\n this._subRequiredAttachments.length = 0;\r\n this._subUploadedAttachments.length = 0;\r\n this._uploadedAttachments = attachments;\r\n //add all the default attachments to the required array \r\n angularForEach(defaultRequired || [], r => {\r\n this.addRequired(r);\r\n });\r\n\r\n this.validate();\r\n }\r\n\r\n /** should be called once for each sub file attachment grid to build its indexed this.subData array */\r\n public addSubData(attachments, subIndex) {\r\n if (this._subRequiredAttachments.filter(e => { return e.index === subIndex; }).length == 0) {\r\n this._subRequiredAttachments.splice(subIndex, 0, { index: subIndex, attachments: [] });\r\n }\r\n if (this._subUploadedAttachments.filter(e => { return e.index === subIndex; }).length == 0) {\r\n this._subUploadedAttachments.splice(subIndex, 0, { index: subIndex, attachments });\r\n }\r\n if (this.subData.filter(e => { return e.index === subIndex; }).length == 0) {\r\n this.subData.splice(subIndex, 0, { index: subIndex, requiredRemainingCount: 0, uploadPanelMessages: [] });\r\n }\r\n\r\n this.validate(subIndex);\r\n }\r\n\r\n /**\r\n * pass in a requiredAttachment Objects \r\n * { attachmentId : 1, message: \"Please Upload X\" }\r\n */\r\n public addRequired(requiredAttachmentObject, subIndex?: number) {\r\n //add required attachment type \r\n if (subIndex != undefined) {\r\n for (let i = 0; i < this._subRequiredAttachments.length; i++) {\r\n if (+this._subRequiredAttachments[i].index == subIndex) {\r\n this._subRequiredAttachments[i].attachments.push(requiredAttachmentObject);\r\n this.validate(subIndex);\r\n }\r\n }\r\n } else {\r\n this._allRequiredAttachments.push(requiredAttachmentObject);\r\n \r\n this.validate();\r\n this.$rootScope.$broadcast(requiredAttachmentsAction, this._allRequiredAttachments);\r\n }\r\n }\r\n\r\n /** THIS FUNCTION CONFUSINGLY REMOVES A SINGLE REQUIREMENT, THEN GOES BACK AND REMOVES ALL OF THE SAME TYPE? */\r\n public removeRequired(requiredAttachmentObject, subIndex?: number) {\r\n if (subIndex != undefined) {\r\n for (let i = 0; i < this._subRequiredAttachments.length; i++) {\r\n if (this._subRequiredAttachments[i].index == subIndex) {\r\n angularForEach(this._subRequiredAttachments[i].attachments, (att, index) => {\r\n if (att == requiredAttachmentObject) this._subRequiredAttachments[i].attachments.splice(index, 1);\r\n });\r\n }\r\n }\r\n } else {\r\n //find the index of the required attachment and remove it\r\n angularForEach(this._allRequiredAttachments, (att, index) => {\r\n if (att == requiredAttachmentObject) this._allRequiredAttachments.splice(index, 1);\r\n });\r\n }\r\n this.validate(subIndex);\r\n this.$rootScope.$broadcast(requiredAttachmentsAction, this._allRequiredAttachments);\r\n }\r\n\r\n /** removes a single requirement */\r\n public removeRequiredSingle(requiredAttachmentObject: {}, subIndex?: number) {\r\n //remove a required attachent type \r\n if (subIndex != undefined) {\r\n for (let j = 0; j < this._subRequiredAttachments.length; j++) {\r\n if (this._subRequiredAttachments[j].index == subIndex) {\r\n for (let i = 0; i < this._subRequiredAttachments[j].attachments.length; i++) {\r\n if (this._subRequiredAttachments[j].attachments[i] == requiredAttachmentObject) {\r\n this._subRequiredAttachments[j].attachments.splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n for (let i = 0, len = this._allRequiredAttachments.length; i < len; i++) {\r\n if (this._allRequiredAttachments[i] == requiredAttachmentObject) {\r\n this._allRequiredAttachments.splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n this.validate(subIndex);\r\n }\r\n\r\n /** run through validation comparison of uploaded documents and documents that are required */\r\n private validate(subIndex?: number) {\r\n let sortedArray = [];\r\n let uploadedIds = [];\r\n if (subIndex != undefined) {\r\n for (let i = 0; i < this._subRequiredAttachments.length; i++) {\r\n if (this._subRequiredAttachments[i].index == subIndex) {\r\n sortedArray = this._subRequiredAttachments[i].attachments.sort((a, b) => {\r\n if (!Array.isArray(a.attachmentId) && Array.isArray(b.attachmentId))\r\n return -1;\r\n if (Array.isArray(a.attachmentId) && !Array.isArray(b.attachmentId))\r\n return 1;\r\n return 0;\r\n });\r\n }\r\n }\r\n for (let i = 0; i < this._subUploadedAttachments.length; i++) {\r\n if (this._subUploadedAttachments[i].index == subIndex) {\r\n //get all of the attachment ID's for the attachments that have alreayd been uploaded into one array \r\n uploadedIds = this._subUploadedAttachments[i].attachments\r\n ? this._subUploadedAttachments[i].attachments\r\n .map(att => { return att['attachment_type'] })\r\n : null;\r\n }\r\n }\r\n } else {\r\n //sort the array so the single requires are evaluated before the array(OR logic)\r\n sortedArray = this._allRequiredAttachments?.sort((a, b) => {\r\n if (!Array.isArray(a.attachmentId) && Array.isArray(b.attachmentId))\r\n return -1;\r\n if (Array.isArray(a.attachmentId) && !Array.isArray(b.attachmentId))\r\n return 1;\r\n return 0;\r\n });\r\n\r\n //get all of the attachment ID's for the attachments that have alreayd been uploaded into one array \r\n uploadedIds = this._uploadedAttachments\r\n ? this._uploadedAttachments.map(att => { return att['attachment_type'] })\r\n : null;\r\n }\r\n\r\n //array for holding the attachment objects that have not been fulfilled \r\n const stillRequired = [];\r\n\r\n angularForEach(sortedArray, att => {\r\n let requirementSatisfied = false;\r\n\r\n //if its an array, loop through array of ID's to compare\r\n if (Array.isArray(att.attachmentId)) {\r\n for (let i = 0, len = att.attachmentId.length; i < len; i++) {\r\n const foundIndex = uploadedIds.indexOf(att.attachmentId[i]);\r\n if (foundIndex != -1) {\r\n uploadedIds.splice(foundIndex, 1);\r\n requirementSatisfied = true;\r\n break;\r\n }\r\n }\r\n }\r\n //or else just compare the single attachmentId value \r\n else {\r\n if (uploadedIds) {\r\n const foundIndex = uploadedIds.indexOf(att.attachmentId);\r\n if (foundIndex != -1) {\r\n uploadedIds.splice(foundIndex, 1);\r\n requirementSatisfied = true;\r\n }\r\n }\r\n }\r\n\r\n if (!requirementSatisfied) {\r\n stillRequired.push(att);\r\n }\r\n });\r\n //update values for the view to use \r\n this.buildMessageArray(stillRequired, subIndex);\r\n }\r\n\r\n /** turns the required this.data into a more easily digestable format for the view */\r\n private buildMessageArray(requiredArray, subIndex?: number) {\r\n //look through all of the required attachment objects and build an array of messages to show on the front-end\r\n if (subIndex != undefined) {\r\n for (let i = 0; i < this.subData.length; i++) {\r\n if (this.subData[i].index == subIndex) {\r\n this.subData[i].uploadPanelMessages = [];\r\n angularForEach(requiredArray, attachment => {\r\n this.subData[i].uploadPanelMessages.push(attachment.message)\r\n });\r\n this.subData[i].requiredRemainingCount = requiredArray.length;\r\n }\r\n }\r\n } else {\r\n this.data.uploadPanelMessages = []\r\n angularForEach(requiredArray, attachment => {\r\n this.data.uploadPanelMessages.push(attachment.message)\r\n });\r\n this.data.requiredRemainingCount = requiredArray.length;\r\n }\r\n }\r\n\r\n /** set attachments and revalidate */\r\n public updateUploaded(uploadedAttachments, subIndex?: number) {\r\n if (subIndex != undefined) {\r\n for (let i = 0; i < this._subUploadedAttachments.length; i++) {\r\n if (this._subUploadedAttachments[i].index == subIndex) {\r\n this._subUploadedAttachments[i].attachments = uploadedAttachments;\r\n }\r\n }\r\n } else {\r\n this._uploadedAttachments = uploadedAttachments;\r\n }\r\n this.validate(subIndex);\r\n this.$rootScope.$broadcast(uploadedAttachmentsAction, uploadedAttachments);\r\n }\r\n\r\n public revalidate(attachments: any[]) {\r\n console.error('what is this supposed to do?');\r\n }\r\n\r\n}\r\n\r\nexport const uploadedAttachmentsAction = 'uploadedAttachments';\r\nexport const requiredAttachmentsAction = 'requiredAttachments';\r\n","import {ApplicationClient, ReviewPriorityDataViewModel} from \"app/api\";\r\nimport { ApplicationClientName } from \"../api-clients/application-client.service\";\r\n\r\nexport class ReviewPriorityService {\r\n static angularName = 'reviewPriorityService';\r\n static $inject = [ApplicationClientName, '$http', '$q'];\r\n\r\n constructor(\r\n\t\tprivate readonly applicationClient: ApplicationClient,\r\n $http: ng.IHttpService,\r\n $q: ng.IQService,\r\n\t) {\r\n\t}\r\n\r\n\r\n public getReviewPriorityData(appid: string){\r\n return this.applicationClient.getReviewPriorityData(appid)\r\n }\r\n\r\n public saveReviewPriority(data: ReviewPriorityDataViewModel){\r\n return this.applicationClient.saveReviewPriority(data);\r\n }\r\n\r\n}\r\n","import { BulkAssignUserRoleModel } from \"app/api\";\r\nimport { BulkAssignOrgRoleModel } from \"app/api\";\r\nimport { AdminType, RoleClient } from \"app/api\";\r\n\r\nexport class RoleService {\r\n\r\n\tstatic angularName = 'roleService';\r\n\r\n\tstatic $inject = ['$http', '$q'];\r\n\tconstructor(\r\n\t\t$http: ng.IHttpService,\r\n\t\t$q: ng.IQService) {\r\n\t\tthis.roleClient = new RoleClient($http, $q);\r\n\t}\r\n\r\n\tprivate readonly roleClient: RoleClient;\r\n\r\n\tpublic getLookupRolesForAdmin(adminType: AdminType) {\r\n\t\treturn this.roleClient.getLookupRolesForAdmin(adminType);\r\n\t}\r\n\r\n\tpublic getAllForAdminRole(adminType: AdminType) {\r\n\t\treturn this.roleClient.getAllForAdminRole(adminType);\r\n\t}\r\n\r\n\tpublic getPrivilegesForRole(pid?: number, role_id?: number, district_id?: number) {\r\n\t\treturn this.roleClient.getPrivilegesForRole(pid, role_id, district_id);\r\n\t}\r\n\r\n\tpublic getBulkUsersForAdminRole(pid?: number, role_id?: number, district_id?: number, adminType?: AdminType) {\r\n\t\treturn this.roleClient.getBulkUsersForAdminRole(pid, role_id, district_id, adminType);\r\n\t}\r\n\r\n\tpublic getOrgsForRole(pid?: number, role_id?: number, adminType?: AdminType) {\r\n\t\t//seperate call for district admins \r\n\t\tif (adminType === AdminType.DistrictAdmin || adminType.toString() === 'district')\r\n\t\t\treturn this.roleClient.getOrgsForRoleForDistrictAdmin(pid, role_id);\r\n\t\telse\r\n\t\t\treturn this.roleClient.getOrgsForRole(pid, role_id);\r\n\t}\r\n\r\n\tpublic bulkAssignRolesForOrg(model: BulkAssignOrgRoleModel) {\r\n\t\treturn this.roleClient.bulkAssignRolesForOrg(model);\r\n\t}\r\n\r\n\tpublic bulkAssignRolesForUser(model: BulkAssignUserRoleModel) {\r\n\t\treturn this.roleClient.bulkAssignRolesForUser(model);\r\n\t}\r\n}\r\n","/**\r\n * Scroll page down to target DOM element.\r\n * Originally from http://www.itnewb.com/tutorial/Creating-the-Smooth-Scroll-Effect-with-JavaScript which seems to not be online anymore.\r\n */\r\nexport class SmoothScrollingService {\r\n static angularName = 'smoothScrollingService';\r\n static $inject = ['$location'];\r\n constructor(private readonly $location: ng.ILocationService) {}\r\n\r\n /** scroll window to given element id */\r\n public scrollTo(eId: string) {\r\n this.$location.hash(eId);\r\n let i: number;\r\n const startY = this.currentYPosition();\r\n const stopY = this.elmYPosition(eId);\r\n if (stopY) {\r\n var distance = stopY > startY\r\n ? stopY - startY\r\n : startY - stopY;\r\n if (distance < 100) {\r\n window.scrollTo(0, 0);\r\n return;\r\n }\r\n let speed = Math.round(distance / 100);\r\n if (speed >= 20) {\r\n speed = 20;\r\n }\r\n const step = Math.round(distance / 25);\r\n let leapY = stopY > startY\r\n ? startY + step\r\n : startY - step;\r\n let timer = 0;\r\n if (stopY > startY) {\r\n for (i = startY; i < stopY; i += step) {\r\n setTimeout(`window.scrollTo(0, ${leapY})`, timer * speed);\r\n leapY += step;\r\n if (leapY > stopY) {\r\n leapY = stopY;\r\n timer++;\r\n }\r\n }\r\n return;\r\n }\r\n for (i = startY; i > stopY; i -= step) {\r\n setTimeout('window.scrollTo(0, ' + leapY + ')', timer * speed);\r\n leapY -= step;\r\n if (leapY < stopY) {\r\n leapY = stopY;\r\n }\r\n timer++;\r\n }\r\n }\r\n }\r\n\r\n /** currentYPosition */\r\n private currentYPosition() {\r\n // Firefox, Chrome, Opera, Safari\r\n if (window.pageYOffset) {\r\n return window.pageYOffset;\r\n }\r\n // Internet Explorer 6 - standards mode\r\n if (document.documentElement && document.documentElement.scrollTop) {\r\n return document.documentElement.scrollTop;\r\n }\r\n // Internet Explorer 6, 7 and 8\r\n if (document.body.scrollTop) {\r\n return document.body.scrollTop;\r\n }\r\n return 0;\r\n }\r\n\r\n /** scrollTo */\r\n private elmYPosition(eId: string) {\r\n const elm = document.getElementById(eId);\r\n if (elm) {\r\n let y = elm.offsetTop;\r\n let node = elm;\r\n while (node.offsetParent && node.offsetParent != document.body) {\r\n node = node.offsetParent as HTMLElement;\r\n y += node.offsetTop;\r\n }\r\n return y;\r\n }\r\n return 0;\r\n }\r\n}\r\n","import { UserGridRequest } from 'app/interfaces/UserGridRequest';\r\nimport { AdminType, UserClient, UserViewModel } from 'app/api';\r\n\r\nexport class UserService {\r\n\r\n\tstatic angularName = 'userService';\r\n\r\n\tstatic $inject = ['$http', '$q'];\r\n\tconstructor($http: ng.IHttpService, $q: ng.IQService) {\r\n\t\tthis.userClient = new UserClient($http, $q);\r\n\t}\r\n\r\n\tprivate readonly userClient: UserClient;\r\n\r\n\tpublic getUserForAdmin(userId: number, adminType: AdminType) {\r\n\t\treturn this.userClient.getUserForAdmin(userId, adminType);\r\n\t}\r\n\r\n\tpublic edit(userViewModel: UserViewModel, adminType: AdminType) {\r\n\t\tconst adminTypeUserViewModel = {\r\n\t\t\tuserViewModel,\r\n\t\t\tAdminType: adminType,\r\n\t\t};\r\n\t\treturn this.userClient.edit(adminTypeUserViewModel);\r\n\t}\r\n\r\n\tpublic updateEmailPreference(userViewModel: UserViewModel, adminType: AdminType) {\r\n\t\tconst adminTypeUserViewModel = {\r\n\t\t\tuserViewModel,\r\n\t\t\tAdminType: adminType,\r\n\t\t};\r\n\t\treturn this.userClient.updateEmailPreference(adminTypeUserViewModel);\r\n\t}\r\n\r\n\tpublic add(userViewModel: UserViewModel, adminType?: AdminType) {\r\n\t\tvar adminTypeUserViewModel = { UserViewModel: userViewModel, AdminType: adminType };\r\n\t\treturn this.userClient.add(adminTypeUserViewModel);\r\n\t}\r\n\r\n\tpublic async getPage(gridRequest: Partial, adminType?: AdminType) {\r\n\r\n\t\tswitch (adminType) {\r\n\t\t\tcase AdminType.OrganizationAdmin:\r\n\t\t\t\treturn this.userClient.getPageOrgAdmin(gridRequest as UserGridRequest);\r\n\r\n\t\t\tcase AdminType.DistrictAdmin:\r\n\t\t\t\treturn this.userClient.getPageDistrictAdmin(gridRequest as UserGridRequest);\r\n\r\n\t\t\tdefault:\r\n\t\t\t\treturn this.userClient.getPage(gridRequest as UserGridRequest);\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tpublic async getAllowedOrganizationRolesForAdmin(orgid: number, adminType: AdminType) {\r\n\t\treturn this.userClient.getAllowedOrganizationRolesForAdmin(orgid, adminType);\r\n\t}\r\n}\r\n","import {\r\n\tFormIds,\r\n\tScreeningClient,\r\n\tScreeningEventsViewModel,\r\n\tScreeningEventsViewModelDeprecated,\r\n\tScreeningViewModel,\r\n\tValidationEventTypeIds\r\n} from 'app/api';\r\n\r\nexport class ValidationService {\r\n\tstatic angularName = 'validationService';\r\n\r\n\tstatic $inject = ['$http', '$q'];\r\n\tconstructor($http: ng.IHttpService, $q: ng.IQService) {\r\n\t\tthis.screeningClient = new ScreeningClient($http, $q);\r\n\t}\r\n\r\n\tprivate readonly screeningClient: ScreeningClient;\r\n\r\n\tprivate cachedValidationData = {\r\n\t\tvalidationData: null as ScreeningViewModel\r\n\t}\r\n\r\n\tpublic async getValidationData(appId: string) {\r\n\t\tlet validationData = await this.screeningClient.getValidationData(appId);\r\n\t\tthis.cachedValidationData.validationData = angular.copy(validationData);\r\n\t\treturn validationData;\r\n\t}\r\n\r\n\tpublic getValidationHistory(appId: string) {\r\n\t\treturn this.screeningClient.getValidationHistory(appId);\r\n\t}\r\n\r\n\tpublic getValidationByEventTypeId(eventTypeId: ValidationEventTypeIds){\r\n\t\tlet validations = {\r\n\t\t\tefCurrentScreenings : this.cachedValidationData.validationData.efCurrentScreenings.filter(ve => ve.type_id == eventTypeId),\r\n\t\t\tefNonCurrentScreenings: this.cachedValidationData.validationData.efNonCurrentScreenings.filter(ve => ve.type_id == eventTypeId),\r\n\t\t\tefEditingScreenings: this.cachedValidationData.validationData.efEditingScreenings.filter(ve => ve.type_id == eventTypeId),\r\n\t\t};\r\n\r\n\t\treturn validations;\r\n\t}\r\n\r\n\tpublic saveValidation(model: ScreeningEventsViewModel | ScreeningEventsViewModelDeprecated, fid: FormIds) {\r\n\t\tif (fid >= FormIds.TA_Set_Aside_2025_Pre_Application || fid == FormIds.VHSIP_2024_Application) {\r\n\t\t\treturn this.screeningClient.saveValidation(model as ScreeningEventsViewModel);\r\n\t\t}\r\n\r\n\t\treturn this.saveValidationDeprecated(model as ScreeningEventsViewModelDeprecated);\r\n\t}\r\n\r\n\tpublic saveValidationDeprecated(model: ScreeningEventsViewModelDeprecated) {\r\n\t\treturn this.screeningClient.saveValidationDeprecated(model);\r\n\t}\r\n\r\n\tpublic submitValidation(model: ScreeningEventsViewModel | ScreeningEventsViewModelDeprecated, fid: FormIds) {\r\n\t\tif (fid >= FormIds.TA_Set_Aside_2025_Pre_Application || fid == FormIds.VHSIP_2024_Application) {\r\n\t\t\treturn this.screeningClient.submitValidation(model as ScreeningEventsViewModel);\r\n\t\t}\r\n\r\n\t\treturn this.screeningClient.submitValidationDeprecated(model);\r\n\t}\r\n\r\n\tpublic submitValidationDeprecated(model: ScreeningEventsViewModelDeprecated) {\r\n\t\treturn this.screeningClient.submitValidationDeprecated(model);\r\n\t}\r\n\r\n\t/***\r\n\t *\r\n\t * @param model\r\n\t * @returns {ValidationForm} ValidationForm\r\n\t */\r\n\tpublic performValidation(model: ScreeningEventsViewModel) {\r\n\t\treturn this.screeningClient.performValidation(model);\r\n\t}\r\n\r\n\tpublic getPossibleRollbacks(appid: string) {\r\n\t\treturn this.screeningClient.getPossibleRollbacks(appid);\r\n\t}\r\n\r\n\tpublic getPublicValidationHistory(appid: string) {\r\n\t\treturn this.screeningClient.getPublicValidationHistory(appid);\r\n\t}\r\n\r\n\t/** used by ta pre-app and full app to check if user can preform district reviewer validation */\r\n\tpublic canPerformDistrictReviewerValidation(appid: string) {\r\n\t\treturn this.screeningClient.canPerformDistrictReviewerValidation(appid);\r\n\t}\r\n\r\n\tpublic canPerformCentralOfficeValidation(appid: string) {\r\n\t\treturn this.screeningClient.canPerformCentralOfficeValidation(appid);\r\n\t}\r\n\r\n\t$onDestroy() {\r\n\t\tthis.cachedValidationData.validationData = null;\r\n\t}\r\n\r\n\tprivate centralOfficeReviewEventsTypes: number[] = [\r\n\t\tValidationEventTypeIds.PS_District_Review,\r\n\t\tValidationEventTypeIds.TA_District_Review_FY23,\r\n\t];\r\n\r\n\r\n\tprivate districtValidationStatuses: number[] = [\r\n\t\tValidationEventTypeIds.VHSIP_District_Validation_FY24,\r\n\t\tValidationEventTypeIds.VHSIP_District_Validation_FY25,\r\n\t\tValidationEventTypeIds.VHSIP_District_Validation_FY26,\r\n\t\tValidationEventTypeIds.District_Validation,\r\n\t\tValidationEventTypeIds.Revenue_Sharing_District_Validation,\r\n\t\tValidationEventTypeIds.Pavement_District_Validation,\r\n\t\tValidationEventTypeIds.Bridge_District_Validation,\r\n\t\tValidationEventTypeIds.District_Pre_Screening,\r\n\t\tValidationEventTypeIds.District_Validation_Initial_,\r\n\t\tValidationEventTypeIds.District_Validation_Subsequent_,\r\n\t\tValidationEventTypeIds.Bridge_District_Validation_FY20,\r\n\t\tValidationEventTypeIds.Bridge_District_Validation_FY21,\r\n\t\tValidationEventTypeIds.SS_District_PreScreening_FY22,\r\n\t\tValidationEventTypeIds.Pavement_District_Validation_FY22,\r\n\t\tValidationEventTypeIds.Bridge_District_Validation_FY22,\r\n\t\tValidationEventTypeIds.PS_District_Validation,\r\n\t\tValidationEventTypeIds.TA_District_PreScreening_FY23,\r\n\t\tValidationEventTypeIds.Bridge_District_Pre_App_Validation_FY23,\r\n\t\tValidationEventTypeIds.Bridge_District_Full_App_Validation_FY23,\r\n\t\tValidationEventTypeIds.Bridge_District_Pre_App_Validation_FY24,\r\n\t\tValidationEventTypeIds.Bridge_District_Full_App_Validation_FY24,\r\n\t\tValidationEventTypeIds.Bridge_District_Validation_FY26,\r\n\t\tValidationEventTypeIds.Pavement_District_Validation_FY23,\r\n\t\tValidationEventTypeIds.Pavement_District_Validation_FY24,\r\n\t\tValidationEventTypeIds.RS_District_Validation_FY23,\r\n\t\tValidationEventTypeIds.CAM_District_Validation,\r\n\t\tValidationEventTypeIds.TA_District_Validation_FY25,\r\n\t\tValidationEventTypeIds.RS_District_Validation_FY25,\r\n\t\tValidationEventTypeIds.Pavement_District_Validation_FY25,\r\n\t\tValidationEventTypeIds.RS_District_Validation_FY27,\r\n\t\tValidationEventTypeIds.TA_District_PreScreening_FY27,\r\n\t\tValidationEventTypeIds.Pavement_District_Validation_FY26,\r\n\t\tValidationEventTypeIds.TA_District_Validation_FY27\r\n\t];\r\n\r\n\tprivate districtScreeningStatuses: number[] = [\r\n\t\tValidationEventTypeIds.SS_District_Screening_FY24,\r\n\t\tValidationEventTypeIds.CAM_District_Screening,\r\n\t\tValidationEventTypeIds.SS_District_Screening_FY26,\r\n\t];\r\n\r\n\tprivate centralOfficeScreeningStatuses: number[] = [\r\n\t\tValidationEventTypeIds.SS_Central_Office_Screening_FY24,\r\n\t\tValidationEventTypeIds.SS_Central_Office_Screening_FY26,\r\n\t];\r\n\r\n\tprivate centralOfficeValidationStatuses: number[] = [\r\n\t\tValidationEventTypeIds.VHSIP_Central_Office_Validation_FY24,\r\n\t\tValidationEventTypeIds.VHSIP_Central_Office_Validation_FY25,\r\n\t\tValidationEventTypeIds.VHSIP_Central_Office_Validation_FY26,\r\n\t\tValidationEventTypeIds.Central_Office_Validation,\r\n\t\tValidationEventTypeIds.TA_Central_Office_Validation,\r\n\t\tValidationEventTypeIds.Pavement_Central_Office_Validation,\r\n\t\tValidationEventTypeIds.Bridge_Central_Office_Validation,\r\n\t\tValidationEventTypeIds.Central_Office_Pre_Screening,\r\n\t\tValidationEventTypeIds.Central_Office_Validation_District_Pass_,\r\n\t\tValidationEventTypeIds.Central_Office_Validation_District_Fail_,\r\n\t\tValidationEventTypeIds.Bridge_Central_Office_Validation_FY20,\r\n\t\tValidationEventTypeIds.Revenue_Sharing_Central_Office_Validation,\r\n\t\tValidationEventTypeIds.Bridge_Central_Office_Validation_FY21,\r\n\t\tValidationEventTypeIds.SS_Central_Office_PreScreening_FY22,\r\n\t\tValidationEventTypeIds.Pavement_Central_Office_Validation_FY22,\r\n\t\tValidationEventTypeIds.Bridge_Central_Office_Validation_FY22,\r\n\t\tValidationEventTypeIds.PS_CO_Validation,\r\n\t\tValidationEventTypeIds.Bridge_Central_Office_Pre_App_Validation_FY23,\r\n\t\tValidationEventTypeIds.Bridge_Central_Office_Full_App_Validation_FY23,\r\n\t\tValidationEventTypeIds.Bridge_Central_Office_Pre_App_Validation_FY24,\r\n\t\tValidationEventTypeIds.Bridge_Central_Office_Full_App_Validation_FY24,\r\n\t\tValidationEventTypeIds.Pavement_Central_Office_Validation_FY23,\r\n\t\tValidationEventTypeIds.Pavement_Central_Office_Validation_FY24,\r\n\t\tValidationEventTypeIds.RS_Central_Office_Validation_FY23,\r\n\t\tValidationEventTypeIds.TA_Central_Office_Review_FY23,\r\n\t\tValidationEventTypeIds.TA_Central_Office_Review_FY25,\r\n\t\tValidationEventTypeIds.CAM_CO_Validation,\r\n\t\tValidationEventTypeIds.RS_Central_Office_Validation_FY25,\r\n\t\tValidationEventTypeIds.Pavement_Central_Office_Validation_FY25,\r\n\t\tValidationEventTypeIds.RS_Central_Office_Validation_FY27,\r\n\t\tValidationEventTypeIds.TA_Central_Office_PreScreening_FY27,\r\n\t\tValidationEventTypeIds.Pavement_Central_Office_Validation_FY26,\r\n\t\tValidationEventTypeIds.TA_Central_Office_Review_FY27,\r\n\t];\r\n\r\n\r\n\r\n\tpublic getTypeName(type) {\r\n\t\tif (this.centralOfficeReviewEventsTypes.includes(type)) {\r\n\t\t\treturn \"District Review\";\r\n\t\t} else if (this.districtValidationStatuses.includes(type)) {\r\n\t\t\treturn \"District Validation\"\r\n\t\t} else if (this.districtScreeningStatuses.includes(type)) {\r\n\t\t\treturn \"District Screening\";\r\n\t\t} else if (this.centralOfficeValidationStatuses.includes(type)) {\r\n\t\t\treturn \"Central Office Validation\"\r\n\t\t} else if (this.centralOfficeScreeningStatuses.includes(type)) {\r\n\t\t\treturn \"Central Office Screening\";\r\n\t\t}\r\n\r\n\t\tswitch (type) {\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_10_Screening:\r\n\t\t\t\treturn 'Rolled Back to 10% Screening';\r\n\t\t\tcase ValidationEventTypeIds.SS_District_PreScreening_FY24:\r\n\t\t\tcase ValidationEventTypeIds.SS_District_PreScreening_FY26:\r\n\t\t\t\treturn 'District Screening';\r\n\t\t\tcase ValidationEventTypeIds.SS_Central_Office_PreScreening_FY24:\r\n\t\t\tcase ValidationEventTypeIds.SS_Central_Office_PreScreening_FY26:\r\n\t\t\t\treturn 'Central Office Screening';\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_District_Validation:\r\n\t\t\t\treturn 'Rolled Back to District Validation';\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_Central_Office_Validation:\r\n\t\t\t\treturn 'Rolled Back to Central Office Validation';\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_District_Screening:\r\n\t\t\t\treturn 'Rolled Back to District Screening';\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_Central_Office_Screening:\r\n\t\t\t\treturn 'Rolled Back to Central Office Screening';\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_Scoring:\r\n\t\t\t\treturn 'Rolled Back to Scoring';\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_Screened_In:\r\n\t\t\t \treturn 'Rolled Back to Screened In';\r\n\t\t\tcase ValidationEventTypeIds.SS_Early_Screen_Out_FY26:\r\n\t\t\t\treturn 'Early Screen Out to Central Office Screening';\r\n\t\t\tcase ValidationEventTypeIds.District_Bridge_Engineer_Review:\r\n\t\t\tcase ValidationEventTypeIds.District_Bridge_Engineer_Review_FY20:\r\n\t\t\tcase ValidationEventTypeIds.District_Bridge_Engineer_Review_FY21:\r\n\t\t\tcase ValidationEventTypeIds.District_Bridge_Engineer_Review_FY22:\r\n\t\t\tcase ValidationEventTypeIds.District_Bridge_Engineer_Pre_App_Review_FY23:\r\n\t\t\tcase ValidationEventTypeIds.District_Bridge_Engineer_Full_App_Review_FY23:\r\n\t\t\tcase ValidationEventTypeIds.District_Bridge_Engineer_Pre_App_Review_FY24:\r\n\t\t\tcase ValidationEventTypeIds.District_Bridge_Engineer_Full_App_Review_FY24:\r\n\t\t\tcase ValidationEventTypeIds.District_Bridge_Engineer_Review_FY26:\r\n\t\t\t\treturn 'District Bridge Engineer Review';\r\n\t\t\tcase ValidationEventTypeIds.Central_Office_Bridge_Engineer_Review:\r\n\t\t\tcase ValidationEventTypeIds.Central_Office_Bridge_Engineer_Review_FY20:\r\n\t\t\tcase ValidationEventTypeIds.Central_Office_Bridge_Engineer_Review_FY21:\r\n\t\t\tcase ValidationEventTypeIds.Central_Office_Bridge_Engineer_Review_FY22:\r\n\t\t\tcase ValidationEventTypeIds.Central_Office_Bridge_Engineer_Pre_App_Review_FY23:\r\n\t\t\tcase ValidationEventTypeIds.Central_Office_Bridge_Engineer_Full_App_Review_FY23:\r\n\t\t\tcase ValidationEventTypeIds.Central_Office_Bridge_Engineer_Pre_App_Review_FY24:\r\n\t\t\tcase ValidationEventTypeIds.Central_Office_Bridge_Engineer_Full_App_Review_FY24:\r\n\t\t\tcase ValidationEventTypeIds.Central_Office_Bridge_Engineer_Review_FY26:\r\n\t\t\t\treturn 'Central Bridge Engineer Review';\r\n\t\t\tcase ValidationEventTypeIds.OIPI_COSS_Pre_Screening:\r\n\t\t\t\treturn 'OIPI COSS Pre-Screening';\r\n\t\t\tcase ValidationEventTypeIds.OIPI_Regional_Network_Pre_Screening:\r\n\t\t\t\treturn 'OIPI Regional Network Pre-Screening';\r\n\t\t\tcase ValidationEventTypeIds.OIPI_UDA_Pre_Screening:\r\n\t\t\t\treturn 'OIPI UDA Pre-Screening';\r\n\t\t\tcase ValidationEventTypeIds.OIPI_Safety_Pre_Screening:\r\n\t\t\t\treturn 'OIPI Safety Pre-Screening';\r\n\t\t\tcase ValidationEventTypeIds.District_Pre_Screening:\r\n\t\t\tcase ValidationEventTypeIds.TA_Pre_app_District_Reviewer:\r\n\t\t\tcase ValidationEventTypeIds.RS_Pre_app_District_Reviewer:\r\n\t\t\tcase ValidationEventTypeIds.RS_District_PreScreening_FY23:\r\n\t\t\tcase ValidationEventTypeIds.RS_District_PreScreening_FY25:\r\n\t\t\tcase ValidationEventTypeIds.RS_District_PreScreening_FY27:\r\n\t\t\tcase ValidationEventTypeIds.TA_District_PreScreening_FY25:\r\n\t\t\tcase ValidationEventTypeIds.TA_District_PreScreening_FY27:\r\n\t\t\t\treturn 'District Pre-Screening';\r\n\t\t\tcase ValidationEventTypeIds.Central_Office_Pre_Screening:\r\n\t\t\tcase ValidationEventTypeIds.TA_Pre_app_Central_Office_Validator:\r\n\t\t\tcase ValidationEventTypeIds.RS_Pre_app_Central_Office_Validator:\r\n\t\t\tcase ValidationEventTypeIds.RS_Central_Office_PreScreening_FY23:\r\n\t\t\tcase ValidationEventTypeIds.RS_Central_Office_PreScreening_FY25:\r\n\t\t\tcase ValidationEventTypeIds.RS_Central_Office_PreScreening_FY27:\r\n\t\t\tcase ValidationEventTypeIds.TA_Central_Office_PreScreening_FY25:\r\n\t\t\tcase ValidationEventTypeIds.TA_Central_Office_PreScreening_FY27:\r\n\t\t\t\treturn 'Central Office Pre-Screening';\r\n\t\t\tcase ValidationEventTypeIds.OIPI_COSS_Screening:\r\n\t\t\t\treturn 'OIPI COSS Screening';\r\n\t\t\tcase ValidationEventTypeIds.OIPI_Regional_Network_Screening:\r\n\t\t\t\treturn 'OIPI Regional Network Screening';\r\n\t\t\tcase ValidationEventTypeIds.OIPI_UDA_Screening:\r\n\t\t\t\treturn 'OIPI UDA Screening';\r\n\t\t\tcase ValidationEventTypeIds.OIPI_Safety_Screening:\r\n\t\t\t\treturn 'OIPI Safety Screening';\r\n\t\t\tcase ValidationEventTypeIds.MMWG_Review:\r\n\t\t\t\treturn 'MMWG Screening';\r\n\t\t\tcase ValidationEventTypeIds.EWG_Review_from_MMWG_:\r\n\t\t\tcase ValidationEventTypeIds.EWG_Review_from_CO_:\r\n\t\t\tcase ValidationEventTypeIds.SS_Executive_Working_Group_Review_FY24:\r\n\t\t\t\treturn 'Executive Working Group Review';\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_MMWG_Screening:\r\n\t\t\t\treturn 'Rolled Back to MMWG Screening Validation';\r\n\t\t\tcase ValidationEventTypeIds._10_Review_by_MMWG:\r\n\t\t\t\treturn '10% Review by MMWG';\r\n\t\t\tcase ValidationEventTypeIds.SS_10_Screening_Validation_FY24:\r\n\t\t\tcase ValidationEventTypeIds._10_Review_by_Central_Office:\r\n\t\t\t\treturn '10% Review by Central Office';\r\n\t\t\tcase ValidationEventTypeIds.Local_Liaison_Validation:\r\n\t\t\tcase ValidationEventTypeIds.VHSIP_Local_Liaison_Validation_FY24:\r\n\t\t\tcase ValidationEventTypeIds.VHSIP_Local_Liaison_Validation_FY25:\r\n\t\t\tcase ValidationEventTypeIds.VHSIP_Local_Liaison_Validation_FY26:\r\n\t\t\t\treturn 'Local Liaison Validation';\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_Local_Liaison_Validation:\r\n\t\t\t\treturn 'Rolled Back to Local Liaison Validation';\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_District_Bridge_Engineer_Review:\r\n\t\t\t\treturn 'Rolled Back to District Bridge Engineer Review';\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_Central_Office_Bridge_Engineer_Review:\r\n\t\t\t\treturn 'Rolled Back to Central Office Bridge Engineer Review';\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_To_TA_Pre_app_Central_Office_Validation:\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_To_RS_Pre_app_Central_Office_Validation:\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_To_Pre_Screening:\r\n\t\t\t\treturn 'Rolled Back to Pre Screening';\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_Full_Screening:\r\n\t\t\t\treturn 'Rolled Back to Full Screening';\r\n\t\t\tcase ValidationEventTypeIds.TA_Pre_app_Pre_Screening_Bypassed:\r\n\t\t\tcase ValidationEventTypeIds.RS_Pre_app_Pre_Screening_Bypassed:\r\n\t\t\tcase ValidationEventTypeIds.TA_Cross_Org_Bypassed:\r\n\t\t\tcase ValidationEventTypeIds.CAM_Cross_Org_Bypassed:\r\n\t\t\t\treturn 'Screening Bypassed';\r\n\t\t\tcase ValidationEventTypeIds.SS_OIPI_Screening_FY22:\r\n\t\t\t\treturn 'OIPI Screening';\r\n\t\t\tcase ValidationEventTypeIds.MMWG_COSS_Review:\r\n\t\t\t\treturn 'MMWG COSS Review';\r\n\t\t\tcase ValidationEventTypeIds.MMWG_Regional_Network_Review:\r\n\t\t\t\treturn 'MMWG Regional Network Review';\r\n\t\t\tcase ValidationEventTypeIds.MMWG_UDA_Review:\r\n\t\t\t\treturn 'MMWG UDA Review';\r\n\t\t\tcase ValidationEventTypeIds.MMWG_Safety_Review:\r\n\t\t\t\treturn 'MMWG Safety Review';\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_To_Submitted:\r\n\t\t\t\treturn 'Rolled Back to Submitted';\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_To_District_Review:\r\n\t\t\t\treturn 'Rolled Back to District Review';\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_Pending:\r\n\t\t\t\treturn 'Rolled Back to Pending';\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_Cross_Org_Review:\r\n\t\t\t\treturn 'Rolled Back to Cross Org Review';\r\n\t\t\tcase ValidationEventTypeIds.TA_Cross_Org_Review_FY25:\r\n\t\t\tcase ValidationEventTypeIds.CAM_Cross_Org_Review_FY25:\r\n\t\t\t\treturn 'Cross Org Review';\r\n\t\t\tcase ValidationEventTypeIds.RS_Central_Office_Validation_FY25:\r\n\t\t\t\treturn 'Central Office Validation';\r\n\t\t\tcase ValidationEventTypeIds.RS_District_Validation_FY25:\r\n\t\t\tcase ValidationEventTypeIds.TA_District_Validation_FY27:\r\n\t\t\t\treturn 'District Validation';\r\n\t\t\tcase ValidationEventTypeIds.SS_District_Engineer_PreScreening_FY26:\r\n\t\t\t\treturn 'District Engineer/DRPT Chief Screening';\r\n\t\t\tcase ValidationEventTypeIds.TA_Pre_CO_Eligibility_Check_FY27:\r\n\t\t\t\treturn 'Pre-App Eligibility Check';\r\n\t\t\tcase ValidationEventTypeIds.TA_Full_CO_Eligibility_Check_FY27:\r\n\t\t\t\treturn 'Eligibility Check';\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_To_TA_Pre_CO_Eligibility_Check:\r\n\t\t\t\treturn 'Rolled Back To Pre-App Eligibility Check';\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_To_TA_Full_CO_Eligibility_Check:\r\n\t\t\t\treturn 'Rolled Back To Eligibility Check';\r\n\t\t\tdefault:\r\n\t\t\t\treturn `unmatched: ${type}`;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic getEventCodeCssClass(type) {\r\n\t\tif (this.districtScreeningStatuses.includes(type)) {\r\n\t\t\treturn \"district-validation\";\r\n\t\t} else if (this.districtValidationStatuses.includes(type)) {\r\n\t\t\treturn \"district-validation\";\r\n\t\t} else if (this.centralOfficeValidationStatuses.includes(type)) {\r\n\t\t\treturn \"co-validation\";\r\n\t\t} else if (this.centralOfficeScreeningStatuses.includes(type)) {\r\n\t\t\treturn \"co-validation\";\r\n\t\t}\r\n\r\n\t\tswitch(type) {\r\n\t\t\tcase ValidationEventTypeIds.RS_District_PreScreening_FY23:\r\n\t\t\tcase ValidationEventTypeIds.RS_District_PreScreening_FY25:\r\n\t\t\tcase ValidationEventTypeIds.RS_District_PreScreening_FY27:\r\n\t\t\tcase ValidationEventTypeIds.SS_District_PreScreening_FY24:\r\n\t\t\tcase ValidationEventTypeIds.TA_District_PreScreening_FY25:\r\n\t\t\tcase ValidationEventTypeIds.SS_District_PreScreening_FY26:\r\n\t\t\t\treturn 'district-validation';\r\n\t\t\tcase ValidationEventTypeIds.SS_10_Screening_Validation_FY24:\r\n\t\t\tcase ValidationEventTypeIds._10_Review_by_Central_Office:\r\n\t\t\tcase ValidationEventTypeIds.RS_Central_Office_PreScreening_FY23:\r\n\t\t\tcase ValidationEventTypeIds.RS_Central_Office_PreScreening_FY25:\r\n\t\t\tcase ValidationEventTypeIds.RS_Central_Office_PreScreening_FY27:\r\n\t\t\tcase ValidationEventTypeIds.SS_Central_Office_PreScreening_FY24:\r\n\t\t\tcase ValidationEventTypeIds.TA_Central_Office_PreScreening_FY25:\r\n\t\t\tcase ValidationEventTypeIds.SS_Central_Office_PreScreening_FY26:\r\n\t\t\tcase ValidationEventTypeIds.TA_Pre_CO_Eligibility_Check_FY27:\r\n\t\t\tcase ValidationEventTypeIds.TA_Full_CO_Eligibility_Check_FY27:\r\n\t\t\t\treturn 'co-validation';\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_To_Submitted:\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_District_Validation:\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_Central_Office_Validation:\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_MMWG_Screening:\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_Local_Liaison_Validation:\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_District_Bridge_Engineer_Review:\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_Central_Office_Bridge_Engineer_Review:\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_To_Pre_Screening:\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_10_Screening:\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_District_Screening:\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_Central_Office_Screening:\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_Scoring:\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_Pending:\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_Cross_Org_Review:\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_Screened_In:\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_To_TA_Pre_CO_Eligibility_Check:\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_to_Full_Screening:\r\n\t\t\tcase ValidationEventTypeIds.TA_Pre_app_Pre_Screening_Bypassed:\r\n\t\t\tcase ValidationEventTypeIds.RS_Pre_app_Pre_Screening_Bypassed:\r\n\t\t\tcase ValidationEventTypeIds.TA_Cross_Org_Bypassed:\r\n\t\t\tcase ValidationEventTypeIds.CAM_Cross_Org_Bypassed:\r\n\t\t\tcase ValidationEventTypeIds.SS_Early_Screen_Out_FY26:\r\n\t\t\t\treturn \"system-action\";\r\n\t\t\tcase ValidationEventTypeIds.VHSIP_District_Validation_FY24:\r\n\t\t\tcase ValidationEventTypeIds.VHSIP_District_Validation_FY25:\r\n\t\t\tcase ValidationEventTypeIds.VHSIP_District_Validation_FY26:\r\n\t\t\tcase ValidationEventTypeIds.District_Bridge_Engineer_Review:\r\n\t\t\tcase ValidationEventTypeIds.District_Bridge_Engineer_Review_FY20:\r\n\t\t\tcase ValidationEventTypeIds.TA_Pre_app_District_Reviewer:\r\n\t\t\tcase ValidationEventTypeIds.RS_Pre_app_District_Reviewer:\r\n\t\t\tcase ValidationEventTypeIds.District_Bridge_Engineer_Review_FY21:\r\n\t\t\tcase ValidationEventTypeIds.District_Bridge_Engineer_Pre_App_Review_FY23:\r\n\t\t\tcase ValidationEventTypeIds.District_Bridge_Engineer_Full_App_Review_FY23:\r\n\t\t\tcase ValidationEventTypeIds.District_Bridge_Engineer_Pre_App_Review_FY24:\r\n\t\t\tcase ValidationEventTypeIds.District_Bridge_Engineer_Full_App_Review_FY24:\r\n\t\t\tcase ValidationEventTypeIds.District_Bridge_Engineer_Review_FY26:\r\n\t\t\tcase ValidationEventTypeIds.Pavement_District_Validation_FY23:\r\n\t\t\tcase ValidationEventTypeIds.Pavement_District_Validation_FY24:\r\n\t\t\tcase ValidationEventTypeIds.RS_District_Validation_FY23:\r\n\t\t\t\treturn \"district-validation\";\r\n\t\t\tcase ValidationEventTypeIds.VHSIP_Central_Office_Validation_FY24:\r\n\t\t\tcase ValidationEventTypeIds.VHSIP_Central_Office_Validation_FY25:\r\n\t\t\tcase ValidationEventTypeIds.VHSIP_Central_Office_Validation_FY26:\r\n\t\t\tcase ValidationEventTypeIds.Central_Office_Bridge_Engineer_Review:\r\n\t\t\tcase ValidationEventTypeIds.Central_Office_Bridge_Engineer_Review_FY20:\r\n\t\t\tcase ValidationEventTypeIds.TA_Pre_app_Central_Office_Validator:\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_To_TA_Pre_app_Central_Office_Validation:\r\n\t\t\tcase ValidationEventTypeIds.RS_Pre_app_Central_Office_Validator:\r\n\t\t\tcase ValidationEventTypeIds.Rolled_Back_To_RS_Pre_app_Central_Office_Validation:\r\n\t\t\tcase ValidationEventTypeIds.Central_Office_Bridge_Engineer_Review_FY21:\r\n\t\t\tcase ValidationEventTypeIds.Central_Office_Bridge_Engineer_Pre_App_Review_FY23:\r\n\t\t\tcase ValidationEventTypeIds.Central_Office_Bridge_Engineer_Full_App_Review_FY23:\r\n\t\t\tcase ValidationEventTypeIds.Central_Office_Bridge_Engineer_Pre_App_Review_FY24:\r\n\t\t\tcase ValidationEventTypeIds.Central_Office_Bridge_Engineer_Full_App_Review_FY24:\r\n\t\t\tcase ValidationEventTypeIds.Central_Office_Bridge_Engineer_Review_FY26:\r\n\t\t\tcase ValidationEventTypeIds.Pavement_Central_Office_Validation_FY23:\r\n\t\t\tcase ValidationEventTypeIds.Pavement_Central_Office_Validation_FY24:\r\n\t\t\tcase ValidationEventTypeIds.RS_Central_Office_Validation_FY23:\r\n\t\t\t\treturn \"co-validation\";\r\n\t\t\tcase ValidationEventTypeIds.OIPI_Regional_Network_Pre_Screening:\r\n\t\t\tcase ValidationEventTypeIds.OIPI_UDA_Pre_Screening:\r\n\t\t\tcase ValidationEventTypeIds.OIPI_Safety_Pre_Screening:\r\n\t\t\tcase ValidationEventTypeIds.OIPI_COSS_Pre_Screening:\r\n\t\t\tcase ValidationEventTypeIds.OIPI_COSS_Screening:\r\n\t\t\tcase ValidationEventTypeIds.OIPI_Regional_Network_Screening:\r\n\t\t\tcase ValidationEventTypeIds.OIPI_UDA_Screening:\r\n\t\t\tcase ValidationEventTypeIds.OIPI_Safety_Screening:\r\n\t\t\t\treturn \"oipi-screen\";\r\n\t\t\tcase ValidationEventTypeIds.MMWG_Review:\r\n\t\t\tcase ValidationEventTypeIds._10_Review_by_MMWG:\r\n\t\t\tcase ValidationEventTypeIds.MMWG_COSS_Review:\r\n\t\t\tcase ValidationEventTypeIds.MMWG_Regional_Network_Review:\r\n\t\t\tcase ValidationEventTypeIds.MMWG_UDA_Review:\r\n\t\t\tcase ValidationEventTypeIds.MMWG_Safety_Review:\r\n\t\t\t\treturn \"mmwg-screen\";\r\n\t\t\tcase ValidationEventTypeIds.EWG_Review_from_MMWG_:\r\n\t\t\tcase ValidationEventTypeIds.EWG_Review_from_CO_:\r\n\t\t\tcase ValidationEventTypeIds.SS_Executive_Working_Group_Review_FY24:\r\n\t\t\t\treturn \"ewg-validation\";\r\n\t\t\tcase ValidationEventTypeIds.Local_Liaison_Validation:\r\n\t\t\tcase ValidationEventTypeIds.VHSIP_Local_Liaison_Validation_FY25:\r\n\t\t\tcase ValidationEventTypeIds.VHSIP_Local_Liaison_Validation_FY26:\r\n\t\t\t\treturn \"local-liaison\";\r\n\t\t\tcase ValidationEventTypeIds.SS_OIPI_Screening_FY22:\r\n\t\t\t\treturn \"oipi-screen\";\r\n\t\t\tcase ValidationEventTypeIds.TA_Cross_Org_Review_FY25:\r\n\t\t\tcase ValidationEventTypeIds.CAM_Cross_Org_Review_FY25:\r\n\t\t\t\treturn \"cross-org-screen\"\r\n\t\t\tcase ValidationEventTypeIds.SS_District_Engineer_PreScreening_FY26:\r\n\t\t\t\treturn \"district-engineer-screen\";\r\n\t\t\tdefault:\r\n\t\t\t\treturn \"default\";\r\n\t\t}\r\n\t}\r\n}\r\n","import { angularModule } from 'angular-utilities';\r\n\r\nimport { AuthService } from './auth.service';\r\nimport { DiscussionService } from './discussion.service';\r\nimport { EventService } from './event.service';\r\nimport { FileAttachmentService } from './fileAttachment.service';\r\nimport { FormsClientServiceName, FormsServiceClientFactory } from './forms-api-service';\r\nimport { FormService } from \"./form.service\";\r\nimport { LookupService } from \"./lookup.service\";\r\nimport { MaintenanceService } from \"./maintenance.service\";\r\nimport { NoticeService } from './notice.service';\r\nimport { OrganizationService } from './organization.service';\r\nimport { ProgramApplicationService } from './programApplication.service';\r\nimport { ComparisonService } from './comparison.service';\r\nimport { ProjectService } from './project.service';\r\nimport { RequiredAttachmentsService } from './requiredAttachments.service';\r\nimport { ReviewPriorityService } from \"./reviewPriority.service\";\r\nimport { RoleService } from './role.service';\r\nimport { SmoothScrollingService } from './smoothScrolling.service';\r\nimport { SyipActiveService } from './syip-active.service';\r\nimport { SyipService } from './syip.service';\r\nimport { UserService } from './user.service';\r\nimport { ValidationService } from './validation.service';\r\nimport { ValidationToolService } from './validationTool.service';\r\nimport { SessionTimer } from './SessionTimer';\r\nimport { ReadinessApprovalService } from './readinessApproval.service';\r\n\r\n// export all from here so callers can simply import from 'app/shared/services'.\r\nexport { AuthEvents } from './auth.events';\r\nexport { AuthInterceptor } from './authInterceptor.service';\r\nexport { AuthService } from './auth.service';\r\nexport { ComparisonService } from './comparison.service';\r\nexport { DiscussionService } from './discussion.service';\r\nexport { EventService } from './event.service';\r\nexport { FileAttachmentService } from './fileAttachment.service';\r\nexport { FormsClientServiceName } from './forms-api-service';\r\nexport { FormService } from \"./form.service\";\r\nexport { LookupService } from \"./lookup.service\";\r\nexport { MaintenanceService } from \"./maintenance.service\";\r\nexport { NoticeService } from './notice.service';\r\nexport { OrganizationService } from './organization.service';\r\nexport { ProgramApplicationService } from './programApplication.service';\r\nexport { ProjectService } from './project.service';\r\nexport { RequiredAttachmentsService } from './requiredAttachments.service';\r\nexport { ReviewPriorityService } from \"./reviewPriority.service\";\r\nexport { RoleService } from './role.service';\r\nexport { SmoothScrollingService } from './smoothScrolling.service';\r\nexport { SyipActiveService } from './syip-active.service';\r\nexport { SyipService } from './syip.service';\r\nexport { UserService } from './user.service';\r\nexport { ValidationService } from './validation.service';\r\nexport { ValidationToolService } from './validationTool.service';\r\n\r\nexport const SharedServicesModule = angularModule('SharedServicesModule', [])\r\n\t// todo move this `FormService` to legacyformdirectives module and rename to LegacyFormService or something. is used by nvap and by legacy forms.\r\n\t.service(AuthService.angularName, AuthService)\r\n\t.service(SessionTimer.angularName, SessionTimer)\r\n\t.service(DiscussionService.angularName, DiscussionService)\r\n\t.service(EventService.angularName, EventService)\r\n\t.service(FileAttachmentService.angularName, FileAttachmentService)\r\n\t.factory(FormsClientServiceName, FormsServiceClientFactory)\r\n\t.service(FormService.angularName, FormService)\r\n\t.service(LookupService.angularName, LookupService)\r\n\t.service(MaintenanceService.angularName, MaintenanceService)\r\n\t.service(NoticeService.angularName, NoticeService)\r\n\t.service(OrganizationService.angularName, OrganizationService)\r\n\t.service(ProgramApplicationService.angularName, ProgramApplicationService)\r\n\t.service(ComparisonService.angularName, ComparisonService)\r\n\t.service(ProjectService.angularName, ProjectService) // TODO move to NVAP lazy module\r\n\t.service(RequiredAttachmentsService.angularName, RequiredAttachmentsService)\r\n\t.service(ReviewPriorityService.angularName, ReviewPriorityService)\r\n\t.service(RoleService.angularName, RoleService)\r\n\t.service(SmoothScrollingService.angularName, SmoothScrollingService)\r\n\t.service(SyipActiveService.angularName, SyipActiveService)\r\n\t.service(SyipService.angularName, SyipService)\r\n\t.service(UserService.angularName, UserService)\r\n\t.service(ValidationService.angularName, ValidationService)\r\n\t.service(ValidationToolService.angularName, ValidationToolService)\r\n\t.service(ReadinessApprovalService.angularName, ReadinessApprovalService)\r\n .name;\r\n","import { MaintenanceClient } from \"app/api\";\r\nimport { MissingAttachments } from \"app/maintenance/missingAttachments/missing-attachments.types\";\r\n\r\nexport class MaintenanceService {\r\n\tstatic angularName = 'maintenanceService';\r\n\r\n\tstatic $inject = ['$http', '$q'];\r\n\tconstructor($http: ng.IHttpService, $q: ng.IQService) {\r\n\t\tthis.client = new MaintenanceClient($http, $q);\r\n\t}\r\n\r\n\tprivate readonly client: MaintenanceClient;\r\n\r\n\tgetMissingAttachments(formIDs: number[]) {\r\n\t\treturn this.client.getMissingAttachments(formIDs);\r\n\t};\r\n\r\n\tcopyMissingFileBlobsRev0ToRev1(danglingDBPointers: MissingAttachments[]) {\r\n\t\treturn this.client.copyAttachmentsFromRevision0(danglingDBPointers);\r\n\t}\r\n\r\n}\r\n","import {\r\n\tApplicationClient,\r\n\tReportClient,\r\n\tFormsClient,\r\n\tGridRequest,\r\n\tIFormPoco,\r\n\tPhaseTypes,\r\n\tSecurityActionIds,\r\n\tSecurityAccessLevelIds,\r\n\tFormIds,\r\n\tPrioritizeApplicationViewModel,\r\n\tBulkPriorityReviewModel,\r\n\tSecurityRoleIds,\r\n\tReadOnlyApplicationClient,\r\n\tCloneApplicationViewModel,\r\n\tApplicationAccessModel,\r\n\tApplicationBulkStatusModel,\r\n\tHasApplicationsToCloneRequest,\r\n\tFundedApplicationViewModel, LegacyFormComparisonClient, ValidationToolClient,\r\n} from \"app/api\";\r\nimport { ISmartScaleEnhancement } from \"app/interfaces/SmartScaleEnhancement\";\r\nimport { ReportClientName, ApplicationClientName } from \"../api-clients\";\r\nimport { FormsClientServiceName } from \"./forms-api-service\";\r\n\r\nexport class ProgramApplicationService {\r\n static angularName = 'programApplicationService';\r\n static $inject = ['$http', '$q', ApplicationClientName, ReportClientName, FormsClientServiceName];\r\n constructor(\r\n private readonly $http: ng.IHttpService,\r\n private readonly $q: ng.IQService,\r\n\t\tprivate readonly applicationClient: ApplicationClient,\r\n\t\tprivate readonly reportClient: ReportClient,\r\n\t\tprivate readonly formsClient: FormsClient)\r\n\t{\r\n\t\tthis.readonlyApplicationClient = new ReadOnlyApplicationClient($http, $q);\r\n\t\tthis.valToolClient = new ValidationToolClient($http, $q);\r\n\t\tthis.legacyComparisonClient = new LegacyFormComparisonClient($http, $q);\r\n\t}\r\n\r\n private readonly serviceBase = \"/api/application/\";\r\n private readonly readonlyApplicationServiceBase = '/api/ReadOnlyApplication/';\r\n\tprivate readonly readonlyApplicationClient: ReadOnlyApplicationClient;\r\n\tprivate readonly valToolClient: ValidationToolClient;\r\n\tprivate readonly legacyComparisonClient: LegacyFormComparisonClient;\r\n\r\n private cacheData = {\r\n availableNewForms: {\r\n data: null as IFormPoco[],\r\n func: null as ng.IPromise\r\n },\r\n structuralForms: {\r\n forms: [],\r\n getAll: false\r\n }\r\n };\r\n\r\n /** Get an application */\r\n public get(appId: string) {\r\n return this.applicationClient\r\n .get(appId)\r\n .then(response => JSON.parse(response));\r\n }\r\n\r\n public getApplicationInfo(appId: string){\r\n return this.applicationClient.getApplicationInfo(appId);\r\n }\r\n\r\n /** Get multiple applications for grids */\r\n public getPage(gridRequest: GridRequest) {\r\n return this.applicationClient.getPage(gridRequest);\r\n }\r\n\r\n\tpublic ExportDataGrid(gridRequest: GridRequest) {\r\n return this.reportClient.exportDataGrid(gridRequest);\r\n }\r\n\r\n\tpublic ExportSyipDataGrid(upcs: string[]) {\r\n\t\treturn this.reportClient.exportSyipDataGrid(upcs);\r\n\t}\r\n\r\n public getPageForCloning(gridRequest: GridRequest) {\r\n return this.applicationClient.getPageForCloning(gridRequest);\r\n }\r\n\r\n public getMapData(filterProps: {}) {\r\n return this.$http.post(this.serviceBase + \"GetMapData\", filterProps).then(function (response) {\r\n return response.data;\r\n });\r\n\t\treturn this.applicationClient.getMapData(filterProps);\r\n }\r\n\r\n\tpublic getBridgeMapData(filterProps) {\r\n\t\treturn this.$http.post(this.serviceBase + \"GetBridgeMapData\", filterProps).then(function (response) {\r\n\t\t\treturn response.data;\r\n\t\t});\r\n\t}\r\n // public async getBridgeMapData(filterProps) {\r\n\t// \tconst response = await this.applicationClient.getBridgeMapData(filterProps);\r\n\t// \t// @ts-ignore\r\n\t// \treturn JSON.parse(await response.data.text());\r\n // }\r\n\r\n\tpublic async getPavementMapData(filterProps: {[key: string]: string}) {\r\n\t\treturn await this.applicationClient.getPavementMapData(filterProps);\r\n\t}\r\n\r\n /** Edit an application */\r\n public edit(application?: string) {\r\n\t\tconsole.warn('editing legacy applications not supported');\r\n\t\treturn this.$q.reject();\r\n }\r\n\r\n /** Remove (soft-delete) an application */\r\n public remove(app: string) {\r\n\t\treturn this.applicationClient.deleteApplication(app);\r\n }\r\n\r\n /** Remove (soft-delete) an application */\r\n public canDelete(app: string) {\r\n return this.$http.post(this.serviceBase + \"CanDelete\", app).then(function (response) {\r\n return response.data;\r\n });\r\n\t\treturn this.applicationClient.canDeleteApplication(app);\r\n }\r\n\r\n\tpublic getPrioritizableForms() {\r\n\t\treturn this.applicationClient.getPrioritizableForms();\r\n\t}\r\n\r\n\t/** get submission queue */\r\n\tpublic getSubmissionQueue(fid: number, orgid: number) {\r\n\t\treturn this.applicationClient.getSubmissionQueue(fid, orgid);\r\n\t}\r\n\r\n\t/** prioritize a list of applications */\r\n\tpublic prioritizeApplications(models: PrioritizeApplicationViewModel[]) {\r\n\t\treturn this.applicationClient.prioritizeApplications(models);\r\n\t}\r\n\r\n /** Resubmit an application from a previous year */\r\n public clone(app: CloneApplicationViewModel) {\r\n\t\treturn this.applicationClient.clone(app);\r\n }\r\n\r\n /** access to an app */\r\n public hasAccess(accessModel: ApplicationAccessModel) {\r\n\t\treturn this.applicationClient.hasAccess(accessModel);\r\n }\r\n\r\n /** can see validation side panel */\r\n public canValidate(appid: string) {\r\n\t\treturn this.valToolClient.canValidate(appid);\r\n }\r\n\r\n /** can clone any apps */\r\n public hasApplicationsToClone(clonableIntoFormId: number, orgId: number) {\r\n\t\tconst parms: HasApplicationsToCloneRequest = {\r\n\t\t\tclonableIntoFormId: clonableIntoFormId,\r\n\t\t\torgId: orgId\r\n\t\t};\r\n return this.$http.post(this.serviceBase + \"HasApplicationsToClone\", parms).then((response) => response.data);\r\n\t\treturn this.applicationClient.hasApplicationsToClone(parms);\r\n }\r\n\r\n /**\r\n * Returns form ids of apps you can apply to\r\n * @returns {Promise} availableNewFormsData\r\n */\r\n public availableNewForms(): ng.IPromise {\r\n const cache = this.cacheData.availableNewForms;\r\n if (cache.data) {\r\n consoleDebug(`availableForms hit`);\r\n return this.$q.resolve(cache.data);\r\n }\r\n consoleDebug(`availableForms miss`);\r\n if (cache.func) {\r\n consoleDebug(`availableForms wait`);\r\n return cache.func;\r\n }\r\n cache.func = this.applicationClient\r\n .availableNewForms()\r\n .then(forms => {\r\n consoleDebug(`availableForms fill`);\r\n cache.data = forms;\r\n return forms;\r\n });\r\n return cache.func;\r\n }\r\n\r\n /** return form names of apps by program */\r\n public getApplicationTypes(pid: number) {\r\n return this.applicationClient.getApplicationTypes(pid);\r\n }\r\n\r\n /** return app counts for each program user can access */\r\n public getAppCounts() {\r\n return this.applicationClient.getAppCounts();\r\n }\r\n\r\n /** submit an application */\r\n public submit(appid: string) {\r\n\t\tconsole.warn('submitting legacy apps not supported');\r\n\t\treturn this.$q.reject();\r\n }\r\n\r\n /** unsubmit an application */\r\n public unsubmit(appid: string) {\r\n return this.applicationClient.unsubmitApplication(appid);\r\n }\r\n\r\n /** check if a user can submit/unsubmit an application */\r\n public canSubmit(appid: string) {\r\n return this.applicationClient.canSubmitApplication(appid);\r\n\t}\r\n\r\n /** Get status DDL options for the program */\r\n public getApplicationStatusDDLOptions(pid: number) {\r\n\t\tconst parms = { params: { pid: pid } };\r\n return this.$http.get(this.serviceBase + \"GetStatusDDLOptions\", parms).then(function (response) {\r\n return response.data;\r\n });\r\n\t\treturn this.applicationClient.getStatusDDLOptions(pid);\r\n }\r\n\r\n /** get submission queue */\r\n public previousSubmittedApplication(appid: string) {\r\n return this.$http.get(this.serviceBase + \"PreviousSubmittedApplication\", { params: { id: appid } }).then(function (response) {\r\n return response.data;\r\n });\r\n\t\treturn this.applicationClient.previousSubmittedApplication(appid);\r\n }\r\n\r\n /** get previous revisions of app */\r\n public getRevisionsForApp(appid: string) {\r\n return this.applicationClient.getRevisionsForApp(appid);\r\n }\r\n\r\n /** rollback an application to another status */\r\n public rollbackApplication() {\r\n return;\r\n }\r\n\r\n /** get availbile events than an app can be rolled back to */\r\n public availableRollbackEvents() {\r\n return [];\r\n }\r\n\r\n /** returns true if a user can rollback and rollback events are available */\r\n public canRollbackToEvent() {\r\n return false;\r\n }\r\n\r\n /** gets the readable format (different controller) */\r\n public getReadOnly(appid: string) {\r\n return this.$http.get(this.readonlyApplicationServiceBase + appid).then(function (response) {\r\n return response.data;\r\n });\r\n\t\treturn this.readonlyApplicationClient.get(appid);\r\n }\r\n\r\n /** gets all the publically viewable apps */\r\n public getPublicApps() {\r\n return this.$http.get(this.serviceBase + \"GetPublicApps\").then(function (response) {\r\n return response.data;\r\n });\r\n\t\treturn this.applicationClient.getPublicApps();\r\n }\r\n\r\n /** gets all the publically viewable apps */\r\n public getPublicMapData() {\r\n return this.$http.get(this.serviceBase + \"GetPublicMapData\").then(function (response) {\r\n return response.data;\r\n });\r\n\t\treturn this.applicationClient.getPublicMapData();\r\n }\r\n\r\n /** returns true if a user can mark an application as funded */\r\n public canMarkFunded(appid: string) {\r\n return this.$http.post(this.serviceBase + \"CanMarkFunded\", appid).then(function (response) {\r\n return response.data;\r\n });\r\n\t\treturn this.applicationClient.canMarkFunded(appid);\r\n }\r\n\r\n /** sets the funded attribute to true or false */\r\n public markAsFunded(fundedModel: FundedApplicationViewModel) {\r\n return this.$http.post(this.serviceBase + \"MarkAsFunded\", fundedModel).then(function (response) {\r\n return response.data;\r\n });\r\n\t\treturn this.applicationClient.markAsFunded(fundedModel);\r\n }\r\n\r\n /** sets the funded attribute to true or false */\r\n public bulkMarkAsFunded(appidArray: string[]) {\r\n return this.$http.post(this.serviceBase + \"BulkMarkAsFunded\", appidArray).then(function (response) {\r\n return response.data;\r\n });\r\n\t\treturn this.applicationClient.bulkMarkAsFunded(appidArray);\r\n }\r\n\r\n\t/** sets the priorities of multiple applications at once */\r\n public bulkMarkPriorities(model: BulkPriorityReviewModel) {\r\n return this.applicationClient.bulkMarkPriorities(model);\r\n }\r\n\r\n /** sets the funded attribute to true or false */\r\n public canSeeFundingTool() {\r\n return this.$http.get(this.serviceBase + \"CanSeeFundingTool\").then(function (response) {\r\n return response.data as boolean;\r\n });\r\n\t\treturn this.applicationClient.canSeeFundingTool();\r\n }\r\n\r\n /** change the application status attribute */\r\n public bulkStatusChange(applicationBulkStatusModel: ApplicationBulkStatusModel) {\r\n return this.applicationClient.bulkStatusChange(applicationBulkStatusModel);\r\n }\r\n\r\n public getProgramAttachmentsTypes(pid: number) {\r\n\t\treturn this.applicationClient.getProgramAttachmentType(pid);\r\n }\r\n\r\n /** Moves a single application from 'Pending' status to 'Ready For Submission' */\r\n public markAsReadyForSubmission(appid: string) {\r\n\t\treturn this.applicationClient.markAsReadyForSubmission(appid);\r\n }\r\n\r\n /** Moves a single application from 'Pending' status to 'Ready For Submission' */\r\n public unmarkAsReadyForSubmission(appid: string) {\r\n\t\treturn this.applicationClient.unmarkAsReadyForSubmission(appid);\r\n }\r\n\r\n /** Returns true of all of user's organizations applications are in the 'Ready For Submission' status and user has the 'BulkSubmit' Privilege */\r\n public canBulkSubmitApplications() {\r\n return this.applicationClient.canBulkSubmitApplications();\r\n }\r\n\r\n /** Returns true of all of user's organizations applications are in the 'Submitted' status and user has the 'BulkSubmit' Privilege */\r\n public canBulkUnsubmitApplications() {\r\n return this.applicationClient.canBulkUnsubmitApplications();\r\n }\r\n\r\n /** Submits every form for the SGR Bridge program */\r\n public bulkUnsubmitForms(fid: number) {\r\n return this.applicationClient.bulkUnsubmitForms(fid);\r\n }\r\n\r\n /** Unsubmits every form for the SGR Bridge program */\r\n public bulkSubmitForms(fid: number) {\r\n return this.applicationClient.bulkSubmitForms(fid);\r\n }\r\n\r\n /** save the scoring entity for an application */\r\n public saveScoring(scoring: string) {\r\n\t\tconsole.warn('scoring legacy apps not supported');\r\n\t\treturn this.$q.reject();\r\n }\r\n\r\n /** save the scoring entity for an application and mark scoring as complate */\r\n public completeScoring(scoring: string) {\r\n\t\tconsole.warn('scoring legacy apps not supported');\r\n\t\treturn this.$q.reject();\r\n }\r\n\r\n /** submit a smart scale pre-application */\r\n public submitSmartScalePreApplication(app: string) {\r\n\t\tconsole.warn('submitting legacy apps not supported');\r\n\t\treturn this.$q.reject();\r\n }\r\n\r\n /** Get smartscale feature from json file */\r\n public getSmartScaleFeatures() {\r\n return this.$http.get(\"./config/smart_scale_enhancements.json\").then(function (response) {\r\n return response.data as ISmartScaleEnhancement[];\r\n });\r\n }\r\n\r\n /** compare app revisions - See Differences (after submitSmartScalePreApplication(app)) */\r\n public getApplicationDifferences(sourceAppId: string, targetAppId: string) {\r\n\t\treturn this.legacyComparisonClient.compareAppRevisions(sourceAppId, targetAppId);\r\n }\r\n\r\n /** get all user privileges associated with a program */\r\n public getPrivileges(userId: number, appId: string) {\r\n\t\treturn this.applicationClient.getPrivileges(userId, appId);\r\n }\r\n\r\n /** gets all the programs that a user can MarkAsFunded */\r\n public getProgramsUserCanMarkFunded() {\r\n return this.$http.post(this.serviceBase + \"GetProgramsUserCanMarkFunded\", undefined).then(function (response) {\r\n return response.data;\r\n });\r\n\t\treturn this.applicationClient.getProgramsUserCanMarkFunded();\r\n }\r\n\r\n\tpublic getTotalFundsRequestedByOrg(fid: number, orgId: number) {\r\n\t\treturn this.applicationClient.getTotalFundsRequestedByOrg(fid, orgId);\r\n\t}\r\n\r\n\tpublic getTotalFundsRequestedByOrgByProjectType(fid: number, orgId: number) {\r\n\t\treturn this.applicationClient.getTotalFundsRequestedByOrgByProjectType(fid, orgId);\r\n\t}\r\n\r\n /** get object property using oid and aid */\r\n public getAttachmentMetaData(oid: number) {\r\n return this.$http.get(this.serviceBase + \"GetAttachmentMetaData\", { params: { oid: oid } }).then(function (response) {\r\n return response.data;\r\n });\r\n\t\treturn this.applicationClient.getAttachmentMetaData(oid);\r\n }\r\n\r\n /** Uses the appsequence to get latest revision's appid from whatever id is passed */\r\n public getApplicationIdLatestRevision(appId: string) {\r\n return this.$http.get(this.serviceBase + \"GetApplicationIdLatestRevision\", { params: { appId: appId } }).then( function(response) {\r\n return response.data;\r\n });\r\n\t\treturn this.applicationClient.getApplicationIdLatestRevision(appId);\r\n }\r\n\r\n public submitTAPreApplication(app: string) {\r\n\t\tconsole.warn('submitting legacy apps not supported');\r\n\t\treturn this.$q.reject();\r\n }\r\n\r\n public isScreeningBypassed(appid: string) {\r\n return this.$http.get(this.serviceBase + \"HasScreeningBeenBypassed\", { params: { appid: appid } }).then(function (response) {\r\n return response.data;\r\n });\r\n\t\treturn this.applicationClient.hasScreeningBeenBypassed(appid);\r\n }\r\n\r\n public isPreScreenedInConditionally(appid: string) {\r\n return this.$http.get(this.serviceBase + \"IsPreScreenedInConditionally\", { params: { appid: appid } }).then(function (response) {\r\n return response.data;\r\n });\r\n\t\treturn this.applicationClient.isPreScreenedInConditionally(appid);\r\n }\r\n\r\n public clearCache() {\r\n this.cacheData = {\r\n availableNewForms: {\r\n data: null,\r\n func: null\r\n },\r\n structuralForms: {\r\n forms: [],\r\n getAll: null\r\n }\r\n };\r\n }\r\n\r\n public async getExistingSites(appId, projectArea: string) {\r\n\t\tlet params = {appId, projectArea};\r\n\r\n\t\treturn this.applicationClient.getExistingSitesMapData({appId, projectArea});\r\n\r\n // return this.$http.post(this.serviceBase + \"GetExistingSitesMapData\", { params }).then((response) => {\r\n // return response.data;\r\n // });\r\n }\r\n\r\n public markApplicationAsHighRisk(appId: string) {\r\n return this.applicationClient.markApplicationAsHighRisk(appId)\r\n }\r\n\r\n public getInflationRate(region_code: string, phaseType: PhaseTypes, from_fy: number, to_fy: number, inflation_revision: string) {\r\n return this.applicationClient.getInflationRate( region_code, phaseType, from_fy, to_fy, inflation_revision)\r\n }\r\n\r\n\tpublic getUserHasGeneralApplicationAccess(action: SecurityActionIds, accessLevel: SecurityAccessLevelIds, fid?: FormIds, ignoreFormIntakeWindow?: boolean) {\r\n\t\treturn this.applicationClient.getUserHasGeneralApplicationAccess(action, accessLevel, fid, ignoreFormIntakeWindow ?? false);\r\n\t}\r\n\r\n\tpublic getUserHasGeneralApplicationAccessByOrg(action: SecurityActionIds, accessLevel: SecurityAccessLevelIds, fid: FormIds, orgid: number, ignoreFormIntakeWindow?: boolean) {\r\n\t\treturn this.applicationClient.getUserHasGeneralApplicationAccessByOrg(action, accessLevel, fid, orgid, ignoreFormIntakeWindow ?? false);\r\n\t}\r\n\r\n\tpublic getUserHasRole(role: SecurityRoleIds) {\r\n\t\treturn this.applicationClient.getUserHasRole(role);\r\n\t}\r\n\r\n\tpublic handOffToVDOT(appId: string) {\r\n\t\treturn this.applicationClient.handOffToVDOT(appId)\r\n\t}\r\n\r\n\tpublic setEarlyScreenOutFlag(appId: string) {\r\n\t\treturn this.applicationClient.setEarlyScreenOut(appId)\r\n\t}\r\n\r\n\r\n public async getStructuralForms(fid?: FormIds){\r\n // return target structuralForm from target fid\r\n if(fid){\r\n let structuralForm = (this.cacheData.structuralForms?.forms).find((cache) => cache.fid === fid);\r\n if(structuralForm){\r\n return structuralForm;\r\n }\r\n structuralForm = await this.applicationClient.getStructuralForm(fid);\r\n this.cacheData.structuralForms.forms.push(structuralForm);\r\n return structuralForm;\r\n\r\n }\r\n\r\n // return all structuralForms if no fid provided, cache all forms\r\n if(this.cacheData.structuralForms.getAll){\r\n return this.cacheData.structuralForms.forms;\r\n } else{\r\n let allStructuralForms = await this.applicationClient.getStructuralForm();\r\n Object.assign(this.cacheData.structuralForms.forms, allStructuralForms);\r\n this.cacheData.structuralForms.getAll = true;\r\n return allStructuralForms;\r\n }\r\n\r\n }\r\n\r\n public GetOrganizationNames(orgId, fid) {\r\n return this.$http.get(this.serviceBase + \"GetOrganizationNames\", { params: { orgId: orgId, fid, } }).then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n public async getDashboardAppByIdAppName(IdAppName: string, actionId: number, pid: number){\r\n return this.applicationClient.getDashboardAppByIdAppName(IdAppName, actionId, pid);\r\n }\r\n}\r\n\r\nfunction consoleDebug(msg: any, ...args: any[]) {\r\n\t//console.debug(msg, ...args);\r\n}\r\n","import { StateService } from \"@uirouter/angularjs\";\r\nimport {ApplicationClient, SecurityActionIds, Ss26_readiness_approval_def} from \"app/api\";\r\nimport { AppRootScope } from \"app/interfaces\";\r\n\r\n\r\nexport class ReadinessApprovalService {\r\n\tstatic angularName = 'readinessApprovalService';\r\n\r\n\tstatic $inject = ['$http', '$q', '$state','$rootScope'];\r\n\tconstructor($http: ng.IHttpService, $q: ng.IQService, private readonly $state: StateService, private readonly $rootScope: AppRootScope) {\r\n\t\tthis.applicationClient = new ApplicationClient($http, $q);\r\n\t}\r\n\r\n\tprivate readonly applicationClient: ApplicationClient;\r\n\r\n private cacheData = {\r\n SS26ReadinessApprovalsAndDef: null as Ss26_readiness_approval_def[],\r\n cachedAvailableGateAndApprovals: [] as Ss26_readiness_approval_def[],\r\n };\r\n\r\n public init() {\r\n // Assures all cached data from previously viewed app it cleared\r\n this.cacheData = {\r\n SS26ReadinessApprovalsAndDef: null,\r\n cachedAvailableGateAndApprovals: []\r\n };\r\n }\r\n\r\n public async getReadinessApprovalsAndDefinition(appsequence?: number, approvalName?: string, gateNumber?: number){ \r\n if(!this.cacheData.SS26ReadinessApprovalsAndDef){\r\n this.cacheData.SS26ReadinessApprovalsAndDef = (await this.applicationClient.getReadinessApprovalsAndDefinition(appsequence)).ApprovalDefinitions;\r\n }\r\n return this.cacheData.SS26ReadinessApprovalsAndDef.filter(x => x.approval_name.name === approvalName && x.gate_number == gateNumber);\r\n }\r\n\r\n // Returns approval based off approval_def_id\r\n public async getApprovals(appsequence?: number, approvalName?: string, gateNumber?: number){\r\n if(!this.cacheData.SS26ReadinessApprovalsAndDef){\r\n this.cacheData.SS26ReadinessApprovalsAndDef = (await this.applicationClient.getReadinessApprovalsAndDefinition(appsequence)).ApprovalDefinitions;\r\n }\r\n\r\n let approvals = (this.cacheData.SS26ReadinessApprovalsAndDef.filter(x => \r\n x.approval_name.name === approvalName && \r\n x.gate_number == gateNumber &&\r\n x.ss26_readiness_approval.length > 0))\r\n .map((x,i)=> {\r\n x.ss26_readiness_approval[0]['approvalTypeName'] = x.approval_type.name;\r\n return x.ss26_readiness_approval[0];\r\n });\r\n\r\n return approvals;\r\n }\r\n\r\n // Returns available gates based off approval def and app answers\r\n public async getAvailableGates(readinessApprovalsAndDef: Ss26_readiness_approval_def[], app: any, readinessGateEntity: string){\r\n let approvalNameId = readinessApprovalsAndDef[0].approval_name_id;\r\n let gateNumber = readinessApprovalsAndDef[0].gate_number;\r\n let approvalDefAndApproval = readinessApprovalsAndDef.filter(x => {\r\n\t\t\tlet answerPath = app[readinessGateEntity][x.approval_name?.answer_path];\r\n\t\t\tif(answerPath != null){\r\n\t\t\t\tanswerPath = !!answerPath;\r\n\t\t\t}\r\n\t\t\treturn (x.if_answer == answerPath || x.if_answer == null) &&\r\n\t\t\t\t\t(x.if_coss_apn == app[readinessGateEntity].is_coss_apn || x.if_coss_apn == null)\r\n\t\t});\r\n\r\n if(approvalDefAndApproval.length > 0){\r\n // filter out exisiting gate/approval\r\n this.cacheData.cachedAvailableGateAndApprovals = this.cacheData.cachedAvailableGateAndApprovals.filter((gate) => {\r\n return ((gate.approval_name_id != approvalNameId) || (gate.gate_number != gateNumber))\r\n });\r\n \r\n // add new/updated gate\r\n approvalDefAndApproval.forEach(x => {\r\n if(!this.cacheData.cachedAvailableGateAndApprovals.some((y) => { return x.id === y.id; })){\r\n this.cacheData.cachedAvailableGateAndApprovals.push(x);\r\n }\r\n });\r\n \r\n }\r\n\t\treturn approvalDefAndApproval;\r\n }\r\n\r\n // Removes cached available gate by approval_def_id\r\n public removeCachedGate(gatesToRemove: any[]){\r\n gatesToRemove.forEach((gateToRemove) => {\r\n this.cacheData.cachedAvailableGateAndApprovals = this.cacheData.cachedAvailableGateAndApprovals.filter((freshGate) => {\r\n return gateToRemove.id != freshGate.id; \r\n });\r\n })\r\n }\r\n\r\n // Checks if all/specific approvals have been resolved\r\n // Gates resolved verified from client side\r\n public isAllGatesResolvedFromClient(gateNum?: number){\r\n for(let gate of this.cacheData.cachedAvailableGateAndApprovals){\r\n let isGateResolved = gate.ss26_readiness_approval.length > 0 && \r\n gate.ss26_readiness_approval.every(gate => (gate.approved_by != null) || (gate.rejected_by != null));\r\n // Check specific gate number approvals\r\n if(gateNum && (gate.gate_number == gateNum && !isGateResolved)){\r\n return false;\r\n }\r\n // Check all gates\r\n else if(!gateNum && !isGateResolved){\r\n return false;\r\n } \r\n }\r\n return true;\r\n }\r\n\r\n // Checks if all/specific approvals have been resolved from server\r\n // Source of truth by checking DB\r\n public async isAllGatesResolved(appsequence: number, gateNum?: number){\r\n return await this.applicationClient.isAllGatesResolved(appsequence, gateNum);\r\n }\r\n\r\n public async isAnyGate2Rejected(appsequence: number){\r\n return await this.applicationClient.isAnyGate2Rejected(appsequence);\r\n }\r\n\r\n public async isAnyGate3Rejected(appsequence: number){\r\n return await this.applicationClient.isAnyGate3Rejected(appsequence);\r\n }\r\n\r\n public async isDEExecBypassApproved(appsequence: number){\r\n return await this.applicationClient.isDEExecBypassApproved(appsequence);\r\n }\r\n\r\n public async isDEExecBypassRejected(appsequence: number){\r\n return await this.applicationClient.isDEExecBypassRejected(appsequence);\r\n }\r\n\r\n public async approveReadiness(appsequence: number, approvalDefId: number, approvalTypeActionId: SecurityActionIds, comment?: string){ \r\n let approval = await this.applicationClient.approveReadiness(appsequence, approvalDefId, approvalTypeActionId, comment);\r\n // get new approvals\r\n this.cacheData.SS26ReadinessApprovalsAndDef = (await this.applicationClient.getReadinessApprovalsAndDefinition(appsequence)).ApprovalDefinitions;\r\n\r\n // update existing cached available gate with updated approval\r\n let gateIndex = this.cacheData.SS26ReadinessApprovalsAndDef.findIndex(x => x.id == approvalDefId);\r\n let cachedGateIndex = this.cacheData.cachedAvailableGateAndApprovals.findIndex(x => x.id == approvalDefId); \r\n this.cacheData.cachedAvailableGateAndApprovals[cachedGateIndex] = this.cacheData.SS26ReadinessApprovalsAndDef[gateIndex];\r\n\r\n return approval;\r\n }\r\n\r\n public async rejectReadiness(appsequence: number, approvalDefId: number, approvalTypeActionId: SecurityActionIds, comment?: string){\r\n let rejectedApproval = await this.applicationClient.rejectReadiness(appsequence, approvalDefId, approvalTypeActionId, comment);\r\n // get new approvals\r\n this.cacheData.SS26ReadinessApprovalsAndDef = (await this.applicationClient.getReadinessApprovalsAndDefinition(appsequence)).ApprovalDefinitions;\r\n\r\n // update existing cached available gate with updated approval\r\n let gateIndex = this.cacheData.SS26ReadinessApprovalsAndDef.findIndex(x => x.id == approvalDefId);\r\n let cachedGateIndex = this.cacheData.cachedAvailableGateAndApprovals.findIndex(x => x.id == approvalDefId); \r\n this.cacheData.cachedAvailableGateAndApprovals[cachedGateIndex] = this.cacheData.SS26ReadinessApprovalsAndDef[gateIndex];\r\n\r\n return rejectedApproval;\r\n }\r\n}","import type { Syip_record } from \"app/api\";\r\nimport {MapWizardSettings} from \"../../react/components/maps/maps.config\";\r\nimport {MapSettings} from \"../../react/components/maps/location/location.types\";\r\nimport {ModuleName} from \"../../react/components/modules/modules.types\";\r\nimport {AreaServedName} from \"../../react/components/areas-served/areas-served.types\";\r\nimport {FidConfigs} from \"../../react/components/maps/view-only/view-only.config\";\r\n\r\n/** a global hacky way to share a single 'active' syip record at a time between syip form and shared map code. */\r\nexport class SyipActiveService {\r\n\tstatic angularName = 'syipActiveService';\r\n\tstatic $inject = [];\r\n\r\n\tgetActive() {\r\n\t\treturn this._activeRecord;\r\n\t}\r\n\r\n\tsetActive(record: Syip_record) {\r\n\t\tthis._activeRecord = record;\r\n\t}\r\n\r\n\tmapSettings: MapSettings = {\r\n\t\tInitModule: ModuleName.Lrs,\r\n\t\tMapModules: [ModuleName.Lrs, ModuleName.Summary],\r\n\t\tMapProjectAreaGeometryType: \"polygon\",\r\n\t\tAreaServed: [AreaServedName.DISTRICT, AreaServedName.MPO, AreaServedName.PDC, AreaServedName.JURISDICTION, AreaServedName.FC]\r\n\t}\r\n\r\n\tprivate _activeRecord: Syip_record;\r\n\r\n}\r\n","import {Syip_record, SyipClient, GridSortItem} from \"app/api\";\r\n\r\nexport interface SyipRecordVM extends Syip_record {\r\n\r\n}\r\n\r\nexport class SyipService {\r\n\tstatic angularName = 'syipService';\r\n\r\n\tstatic $inject = ['$http', '$q'];\r\n\tconstructor($http: ng.IHttpService, $q: ng.IQService) {\r\n\t\tthis.syipClient = new SyipClient($http, $q);\r\n\t}\r\n\r\n\tprivate readonly syipClient: SyipClient;\r\n\r\n\tpublic getSyipRecords(filterProps?: Syip_record, startRow?: number, endRow?: number, sort?: GridSortItem[]) {\r\n\t\treturn this.syipClient.getSyipRecords({\r\n\t\t\tFilters: filterProps,\r\n\t\t\tStartRow: startRow,\r\n\t\t\tEndRow: endRow,\r\n\t\t\tSort: sort,\r\n\t\t});\r\n\t}\r\n\r\n\tpublic getSyipFilterValues() {\r\n\t\treturn this.syipClient.getSyipFilterValues();\r\n\t}\r\n\r\n\tpublic getSyipRecord(upc: string) {\r\n\t\treturn this.syipClient.getSyipRecord(upc);\r\n\t}\r\n\r\n\tpublic saveSyipRecord(vm: SyipRecordVM) {\r\n\t\tconst record = viewModelToRecord(vm);\r\n\t\treturn this.syipClient.putSyipRecord(record);\r\n\t}\r\n\r\n\tpublic canViewSyipRecord(){\r\n\t\treturn this.syipClient.canViewSyipRecord();\r\n\t}\r\n\r\n\tpublic canUpdateSyipRecord(){\r\n\t\treturn this.syipClient.canUpdateSyipRecord();\r\n\t}\r\n\r\n\tpublic deleteAllSyipData() {\r\n\t\treturn this.syipClient.deleteAllSyipData();\r\n\t}\r\n\r\n\tpublic getSyipRecordByUPC(upc: string) {\r\n\t\treturn this.syipClient.getSyipRecordByUPC(upc);\r\n\t}\r\n}\r\n\r\nexport function recordToFormViewModel(syipRecord: Syip_record) {\r\n\t// create and add a standard project_areas entity from the incoming syip data for the map to use\r\n\tconst project_areas = {\r\n\t\tshape: syipRecord.project_area_shape ?? null,\r\n\t\tintersected_district: syipRecord.intersected_district ?? [],\r\n\t\tintersected_jurisdiction: syipRecord.intersected_jurisdiction ?? [],\r\n\t\tintersected_mpo: syipRecord.intersected_mpo ?? [],\r\n\t\tintersected_pdc: syipRecord.intersected_pdc ?? [],\r\n\t}\r\n\r\n\treturn {\r\n\t\t...syipRecord,\r\n\t\tproject_areas,\r\n\t} as SyipRecordVM;\r\n}\r\n\r\nexport function viewModelToRecord(syipForm: SyipRecordVM) {\r\n\tconst record = angular.copy(syipForm);\r\n\tdelete record[\"project_areas\"]; // project_areas is only needed for ui mapping.\r\n\r\n\treturn record;\r\n}\r\n","import { AppRootScope } from 'app/interfaces';\r\nimport { DiscussionClient, ValidationSectionViewModel, ValidationToolClient, ValidationTypeIds } from 'app/api';\r\nimport { DiscussionClientName } from '../api-clients/discussion-client.service';\r\n\r\nexport class ValidationToolService {\r\n\tstatic angularName = 'validationToolService';\r\n\r\n\tstatic $inject = ['$http', '$q', '$anchorScroll', '$location', '$rootScope', DiscussionClientName];\r\n\tconstructor(\r\n\t\t$http: ng.IHttpService,\r\n\t\t$q: ng.IQService,\r\n\t\tprivate readonly $anchorScroll: ng.IAnchorScrollService,\r\n\t\tprivate readonly $location: ng.ILocationService,\r\n\t\tprivate readonly $rootScope: AppRootScope,\r\n\t\tprivate readonly discussionClient: DiscussionClient) {\r\n\t\tthis.valToolClient = new ValidationToolClient($http, $q);\r\n\t}\r\n\r\n\tprivate readonly valToolClient: ValidationToolClient;\r\n\r\n\t/** dictionary for storing anchors */\r\n\treadonly anchorMap: {[key: string]: string} = {};\r\n\r\n\tprivate init(data) {\r\n\t\tfor (let sec in data) {\r\n\t\t\tfor (let qs in data[sec].questions) {\r\n\t\t\t\tthis.anchorMap[data[sec].questions[qs].anchor_name] = '';\r\n\t\t\t};\r\n\t\t\tif (data[sec].hasOwnProperty('childSections') && data[sec].childSections.length > 0) {\r\n\t\t\t\tfor (let childSec in data[sec].childSections) {\r\n\t\t\t\t\tfor (let childQs in data[sec].childSections[childSec].questions) {\r\n\t\t\t\t\t\tconst q = data[sec].childSections[childSec].questions[childQs];\r\n\t\t\t\t\t\tconst anchorName = q.anchor_name+'_'+q.answer.oid;\r\n\t\t\t\t\t\tthis.anchorMap[anchorName] = '';\r\n\t\t\t\t\t};\r\n\t\t\t\t};\r\n\t\t\t};\r\n\t\t};\r\n\t}\r\n\r\n\t/** get validation tool questions */\r\n\tpublic getValidationQuestions(appsequence: number, type: number) {\r\n\t\treturn this.valToolClient.getValidationQuestions(appsequence, type)\r\n\t\t\t.then(response => {\r\n\t\t\t\tthis.init(response);\r\n\t\t\t\tthis.$rootScope.$broadcast('validation-tool-mode');\r\n\t\t\t\treturn response;\r\n\t\t\t});\r\n\t}\r\n\r\n\tpublic saveValidationAnswers(sections: ValidationSectionViewModel[]) {\r\n\t\treturn this.valToolClient.saveValidationAnswers(sections);\r\n\t}\r\n\r\n\tprivate findId(modelName: string) {\r\n\t\tif (this.anchorMap.hasOwnProperty(modelName) && this.anchorMap[modelName]) {\r\n\t\t\treturn this.anchorMap[modelName];\r\n\t\t} \r\n\t\treturn modelName;\r\n\t}\r\n\r\n\tpublic createValidationAlerts(sections: ValidationSectionViewModel[]) {\r\n\t\treturn this.discussionClient.createValidationAlerts(sections);\r\n\t}\r\n\r\n\tpublic registerAnchorIfNeeded(modelName: string, fieldid: string) {\r\n\t\tlet nameArray = [];\r\n\t\tlet name = '';\r\n\t\tif (modelName.indexOf('app') != -1) {\r\n\t\t\tnameArray = modelName.split('.');\r\n\t\t\tname = nameArray[nameArray.length - 1];\r\n\t\t} else {\r\n\t\t\tname = modelName;\r\n\t\t};\r\n\t\tif (this.anchorMap.hasOwnProperty(name)) {\r\n\t\t\tthis.anchorMap[name] = fieldid;\r\n\t\t};\r\n\t}\r\n\r\n\t/** old scroll and highlight */\r\n\tpublic scrollAndHightLight(modelName: string) {\r\n\t\tconst id = this.findId(modelName);\r\n\t\tconst ele = document.getElementById(id);\r\n\t\tif (ele) {\r\n\t\t\tthis.addHighLightByEle(ele);\r\n\t\t\t//this.$location.hash(id);\r\n //this.$anchorScroll.yOffset = 160;\r\n\t\t\tthis.$anchorScroll(id);\r\n\t\t\treturn true;\r\n\t\t};\r\n\t}\r\n\r\n\tpublic triggerPearl(pearlName: string) {\r\n\t\tlet returnState = false; \r\n\t\tif (pearlName) {\r\n\t\t\tconst pearl = document.getElementById(pearlName);\r\n\t\t\tif (pearl) {\r\n\t\t\t\t$('#' + pearlName).click();\r\n\t\t\t\t/* const element = angular.element(pearl);\r\n\t\t\t\telement.triggerHandler('click');*/\r\n\t\t\t\treturnState = true;\r\n\t\t\t};\r\n\t\t}; \r\n\t\treturn returnState; \r\n\t}\r\n\r\n\t/** add hightlight to html element by passing element as argument */\r\n\tpublic addHighLightByEle(ele: HTMLElement) {\r\n\t\tconst nextElement = angular.element(ele);\r\n\t\tnextElement.addClass('validation-tool-highlight');\r\n\t}\r\n\r\n\t/** add hightlight to html element by passing look up for element id */\r\n\tpublic addHighLightByName(modelName: string) {\r\n\t\tconst id = this.findId(modelName);\r\n\t\tconst ele = document.getElementById(id);\r\n\t\tif (ele) {\r\n\t\t\tconst nextElement = angular.element(ele);\r\n\t\t\tnextElement.addClass('validation-tool-highlight');\r\n\t\t}\r\n\t}\r\n\r\n\tpublic removeHighLight(modelName: string) {\r\n\t\tconst id = this.findId(modelName);\r\n\t\tconst ele = document.getElementById(id);\r\n\t\tif (ele) {\r\n\t\t\tconst previousElement = angular.element(ele);\r\n\t\t\tpreviousElement.removeClass('validation-tool-highlight');\r\n\t\t}\r\n\t}\r\n\r\n\t/** check if there are unanswered questions in the validation tool */\r\n\tpublic checkValidationAnswersComplete(appid: string, type: ValidationTypeIds) {\r\n\t\treturn this.valToolClient.checkValidationAnswersComplete(appid, type);\r\n\t}\r\n}\r\n","/** Formats the date from utc time.\r\n * Used when angularjs date pipe gives trouble in IE11.\r\n */\r\nexport function formattedDate(input: Date | string) {\r\n\tlet test = typeof input\r\n\tif (typeof input === 'undefined' || input === null)\r\n\t\treturn null;\r\n\r\n\t//if already passed a date object use that, else replace space in string with T so it can be parsed correctly\r\n\tconst date = typeof input === 'object'\r\n\t\t? input\r\n\t\t: parseDateFromString(input);\r\n\tif (typeof date === 'undefined' || date === null)\r\n\t\treturn;\r\n\r\n\tlet hour = date.getHours();\r\n\tlet period = 'AM';\r\n\r\n\tif (date.getHours() >= 12 && date.getHours() <=23) {\r\n\t\tperiod = 'PM';\r\n\t}\r\n\r\n\tif (date.getHours() > 12) {\r\n\t\thour = date.getHours() - 12;\r\n\t}\r\n\r\n\tconst dd = date.getDate();\r\n\tconst mm = date.getMonth() + 1;\r\n\tconst yyyy = date.getFullYear();\r\n\tconst min = leftPadWithZero(date.getMinutes().toString(), 2);\r\n\r\n\treturn `${mm}/${dd}/${yyyy} @ ${hour}:${min}${period}`;\r\n}\r\n\r\nfunction parseDateFromString(str: string) {\r\n\t// not sure if date will come in as '2022-10-20 09:54:38.00' or '2022-10-20T09:54:38.00Z'\r\n\tif (typeof str === 'undefined' || str === null)\r\n\t\treturn;\r\n\tlet s = str.replace(/ /g,\"T\");\r\n\tif (!s.endsWith('Z'))\r\n\t\ts = `${str}Z`;\r\n\tconst d = new Date(s);\r\n\treturn d ?? undefined;\r\n}\r\n\r\nfunction leftPadWithZero(str: string, len: number) {\r\n\treturn leftPad(str, '0', len);\r\n}\r\n\r\nfunction leftPad(str: string, padWith: string, len: number) {\r\n\twhile (str.length < len)\r\n\t\tstr = `${padWith}${str}`;\r\n\treturn str;\r\n}\r\n","/**\r\n * Global helper function to quickly check if an argument is null or undefined specifically\r\n * @param arg The argument being checked\r\n * @returns {boolean} True if arg is null or undefined\r\n */\r\n\r\nexport function isNullOrUndefined(arg) {\r\n\tif (typeof arg === \"undefined\" || arg === null) {\r\n\t\treturn true;\r\n\t}\r\n\r\n\treturn false;\r\n}\r\n\r\n/**\r\n * Negation of isNullOrUndefined\r\n * @param arg Argument being checked\r\n * @returns {boolean} True if arguement is not null or undefined\r\n */\r\nexport function isNotNullOrUndefined(arg) {\r\n\treturn !isNullOrUndefined(arg);\r\n}\r\n","\r\n\r\nexport function openWindowWithPost(url: string, data: {}) {\r\n\tvar form = document.createElement(\"form\");\r\n\tform.target = \"_blank\";\r\n\tform.method = \"POST\";\r\n\tform.action = url;\r\n\tform.style.display = \"none\";\r\n\r\n\tfor (var key in data) {\r\n\t\tvar input = document.createElement(\"input\");\r\n\t\tinput.type = \"hidden\";\r\n\t\tinput.name = key;\r\n\t\tinput.value = data[key];\r\n\t\tform.appendChild(input);\r\n\t}\r\n\r\n\tdocument.body.appendChild(form);\r\n\tform.submit();\r\n\tdocument.body.removeChild(form);\r\n}\r\n","/**\r\n * Build a standard page title, which will show up in .\r\n * Title managed by 'ui-router-page-title' npm package, aka 'uiRouterTitle' angular module.\r\n * @param title Subtitle for currently viewed page. 'VDOT Smart Portal' will be appended automatically.\r\n */\r\nexport function pageTitle(title: string) {\r\n return `${title} - VDOT Smart Portal`;\r\n}\r\n","/**\r\n * Module for displaying \"Waiting for...\" dialog using Bootstrap\r\n *\r\n * @author Eugene Maslovich <ehpc@em42.ru>\r\n */\r\n export const waitingDialog = (function ($) {\r\n 'use strict';\r\n\r\n // Creating modal dialog's DOM\r\n var $dialog = $(\r\n\t\t'<div class=\"modal fade\" data-backdrop=\"static\" data-keyboard=\"false\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\" style=\"padding-top:15%; overflow-y:visible;\">' +\r\n\t\t'<div class=\"modal-dialog modal-m\">' +\r\n\t\t'<div class=\"modal-content\">' +\r\n\t\t\t'<div class=\"modal-header\"><h3 style=\"margin:0;\"></h3></div>' +\r\n\t\t\t'<div class=\"modal-body\">' +\r\n\t\t\t\t'<div class=\"progress progress-striped active\" style=\"margin-bottom:0;\"><div class=\"progress-bar\" style=\"width: 100%\"></div></div>' +\r\n\t\t\t'</div>' +\r\n\t\t'</div></div></div>') as any;\r\n\r\n return {\r\n /**\r\n\t\t * Opens our dialog\r\n\t\t * @param message Custom message\r\n\t\t * @param options Custom options:\r\n\t\t * \t\t\t\t options.dialogSize - bootstrap postfix for dialog size, e.g. \"sm\", \"m\";\r\n\t\t * \t\t\t\t options.progressType - bootstrap postfix for progress bar type, e.g. \"success\", \"warning\".\r\n\t\t */\r\n show: function (message, options?, timer?) {\r\n // Assigning defaults\r\n if (typeof options === 'undefined') {\r\n options = {};\r\n }\r\n if (typeof message === 'undefined') {\r\n message = 'Loading';\r\n }\r\n if (timer) {\r\n var date = new Date();\r\n // expected logout time (milliseconds) - current time (milliseconds)\r\n var millisecondsRemaining = timer - date.getTime();\r\n var counter = setInterval(() => {\r\n millisecondsRemaining = millisecondsRemaining - 1000;\r\n \r\n var timeRemaining = new Date(millisecondsRemaining);\r\n $dialog.find('.progress-bar').text(`${timeRemaining.getMinutes()}m ${timeRemaining.getSeconds()}s`);\r\n\r\n if(millisecondsRemaining < 0){\r\n clearInterval(counter);\r\n }\r\n }, 1000);\r\n }\r\n var settings = $.extend({\r\n dialogSize: 'm',\r\n progressType: '',\r\n onHide: null // This callback runs after the dialog was hidden\r\n }, options);\r\n\r\n // Configuring dialog\r\n $dialog.find('.modal-dialog').attr('class', 'modal-dialog').addClass('modal-' + settings.dialogSize);\r\n $dialog.find('.progress-bar').attr('class', 'progress-bar');\r\n if (settings.progressType) {\r\n $dialog.find('.progress-bar').addClass('progress-bar-' + settings.progressType);\r\n }\r\n $dialog.find('h3').text(message);\r\n // Adding callbacks\r\n if (typeof settings.onHide === 'function') {\r\n $dialog.off('hidden.bs.modal').on('hidden.bs.modal', function (e) {\r\n settings.onHide.call($dialog);\r\n });\r\n }\r\n // Opening dialog\r\n $dialog.modal({backdrop: 'static', keyboard: false});\r\n },\r\n /**\r\n\t\t * Closes dialog\r\n\t\t */\r\n hide: function () {\r\n $dialog.modal('hide');\r\n }\r\n };\r\n\r\n})(jQuery);","\r\n/** All this junk is what used to get added to the global window context. */\r\nexport type SiteStuff = {\r\n // TODO move the source of all these items OUT of site.ts and into distinct modules. Update site-shim.ts if items leave this site.ts file.\r\n // TODO these need typing.\r\n applicationComparison,\r\n isNullOrUndefined: (arg: any) => boolean,\r\n isNotNullOrUndefined: (arg: any) => boolean,\r\n waitingDialog,\r\n};\r\n\r\nimport { waitingDialog as WaitingDialogClass } from \"./shared/waitingDialog\";\r\nexport const waitingDialog = WaitingDialogClass;\r\n\r\n// TODO load this lazily with legacy forms module.\r\nimport { applicationComparison as ApplicationComparisonClass } from 'app/legacy/services/applicationComparison';\r\nexport const applicationComparison = ApplicationComparisonClass;\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + {\"40\":\"debug\",\"52\":\"vendors~forms~syip\",\"56\":\"syip\",\"58\":\"vendors~forms~admin~dashboard~legacy~syip\",\"59\":\"ta27\",\"89\":\"formsProgramsSGRB\",\"132\":\"forms\",\"203\":\"formsProgramsSGRP\",\"223\":\"vendors~dashboard~public\",\"272\":\"maintenance\",\"292\":\"default~forms~dashboard~legacy~public~syip\",\"296\":\"formsProgramsCAM\",\"314\":\"default~nvap~admin~dashboard~legacy~syip\",\"317\":\"formsProgramsSS\",\"327\":\"ss24\",\"335\":\"rs27\",\"370\":\"formsProgramsRS\",\"384\":\"hsip25\",\"387\":\"formsProgramsHSIP\",\"425\":\"vendors~forms~dashboard~legacy~syip\",\"431\":\"default~forms~dashboard~legacy~syip\",\"468\":\"nvap\",\"569\":\"default~forms~legacy~syip\",\"587\":\"adminCloneMapping\",\"590\":\"formsProgramsTA\",\"594\":\"about\",\"624\":\"public\",\"633\":\"default~forms~dashboard~public~syip\",\"644\":\"account\",\"647\":\"vendors~debug\",\"651\":\"vendors~forms~dashboard~public~syip\",\"665\":\"ta25\",\"675\":\"rs23\",\"726\":\"vendors~forms~dashboard~legacy~public~syip\",\"777\":\"hsip24\",\"837\":\"default~dashboard~public\",\"864\":\"formsProgramsPS\",\"877\":\"rs25\",\"879\":\"ta23\",\"884\":\"admin\",\"914\":\"legacy\",\"933\":\"ss26\",\"945\":\"dashboard\",\"968\":\"hsip26\",\"990\":\"default~forms~syip\"}[chunkId] + \".js?id=\" + {\"40\":\"901b6419f8b0d7eb016f\",\"52\":\"74a66054d5f097d1a22f\",\"56\":\"b71276ffdf67cf83f0aa\",\"58\":\"d061c850077ab130f435\",\"59\":\"284c9fa126c5fd0c316c\",\"89\":\"6e7939449644d31ac1ea\",\"132\":\"7b4a6483ccbd47f39c27\",\"203\":\"bbac5dc847f92d29b0ff\",\"223\":\"58324e52cd8eb00fef1a\",\"272\":\"e054a626459a19daf775\",\"292\":\"2119dfcd395dbe76954d\",\"296\":\"38fac046eef2c848fe22\",\"314\":\"7dfb644a6cc8bfa61f2d\",\"317\":\"9bebd05855030e17ebb2\",\"327\":\"7f7b16cffc2e5a1bce23\",\"335\":\"67d259ed5f4fb3fc209c\",\"370\":\"fcd7340849bdd52f4a5d\",\"384\":\"8da6b6ed823471f27386\",\"387\":\"e1ae43795c9ff45f2634\",\"425\":\"034f5a693d1e7301b688\",\"431\":\"7aa703fbc6fc62c56891\",\"468\":\"7dc935c88cf89d0c6532\",\"569\":\"d9faf971dc4fcb34aae9\",\"587\":\"7b84136330fe0756a2a5\",\"590\":\"28e305cebad5470dbe7f\",\"594\":\"bd4a60d5209680dd935a\",\"624\":\"b08f8d7e719b3b8a1cb0\",\"633\":\"59192ac75dc242831b59\",\"644\":\"f74894de21e5c7ddfb7a\",\"647\":\"85f32ad8104ec6bf978a\",\"651\":\"127226ecfa1431b3b2ea\",\"665\":\"3b11e7d0151cffa71668\",\"675\":\"e12fe8179cec8c11aa14\",\"726\":\"2e01f2eeb5f0838effd3\",\"777\":\"6253ccb4d17f16841f82\",\"837\":\"e86da682b43ec127f955\",\"864\":\"802db05ee389cde941a4\",\"877\":\"9ec199e7b2f4263ce455\",\"879\":\"3d31517b14aaac001da5\",\"884\":\"4eba17b3e24ef414a96d\",\"914\":\"d29fb5c1e4c801577012\",\"933\":\"cf1060e64ade59eb6cd0\",\"945\":\"d8ca0c01404120755f0c\",\"968\":\"9e373572cf8d906c5307\",\"990\":\"8ec527c518459114b847\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/dist/app/\";","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkvdot_portal_frontend\"] = self[\"webpackChunkvdot_portal_frontend\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [315], () => (__webpack_require__(99100)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","KEY","TAB","ENTER","ESC","SPACE","LEFT","UP","RIGHT","DOWN","SHIFT","CTRL","ALT","PAGE_UP","PAGE_DOWN","HOME","END","BACKSPACE","DELETE","COMMAND","MAP","isControl","e","which","metaKey","ctrlKey","altKey","isFunctionKey","k","isVerticalMovement","indexOf","isHorizontalMovement","toSeparator","undefined","isNil","value","angular","isUndefined","element","prototype","querySelectorAll","selector","this","closest","elem","matchesSelector","matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","bind","parentElement","latestId","uis","module","constant","theme","searchEnabled","sortable","placeholder","refreshDelay","closeOnSelect","skipFocusser","dropdownPosition","removeSelected","resetSearchInput","generateId","appendToBody","spinnerEnabled","spinnerClass","backspaceReset","service","minErr","$$minErr","message","apply","arguments","replace","RegExp","Error","directive","link","scope","attrs","ctrl","transclude","clone","append","filter","matchItem","query","factory","$document","$window","boundingClientRect","getBoundingClientRect","width","prop","height","top","pageYOffset","documentElement","scrollTop","left","pageXOffset","scrollLeft","$timeout","callback","debounceTime","timeoutPromise","self","args","Array","slice","call","cancel","uiSelectConfig","RepeatParser","uiSelectMinErr","$compile","restrict","require","templateUrl","tElement","addClass","parent","attr","compile","tAttrs","repeat","groupByExp","groupBy","groupFilterExp","groupFilter","groups","length","getGroupNgRepeatExpression","parserResult","parse","choices","repeatExpression","rowsInner","document","addEventListener","itemName","$select","parseRepeatAttr","disableChoiceExpression","uiDisableChoice","onHighlightCallback","onHighlight","minimumInputLength","parseInt","position","toLowerCase","$watch","newValue","open","multiple","activate","activeIndex","tagging","isActivated","search","refresh","items","$observe","$eval","removeAttr","controller","$scope","$element","$filter","$$uisDebounce","$parse","$injector","_refreshDelayPromise","paste","refreshing","focus","disabled","selected","focusser","fct","taggingTokens","tokens","lockChoiceExpression","clickTriggeredSelect","$animate","get","err","searchInput","_resetSearchInput","collection","predicate","thisArg","findIndex","list","Object","i","_findIndex","item","equals","isEmpty","initSearchValue","avoidReset","close","$broadcast","taggingLabel","container","on","enabled","animateHandler","phase","off","focusSearchInput","_ensureHighlightVisible","findGroupByName","name","group","repeatAttr","setItemsFn","groupFn","forEach","groupName","isFunction","push","groupFilterFn","isArray","groupNames","j","result","_groupsFilter","concat","isGrouped","itemProperty","originalSource","source","createArrayFromObject","origSrc","$uisSource","keys","map","v","keyName","filters","newVal","oldVal","refreshItems","data","selectedItems","filteredItems","every","selectedItem","calculateDropdownPos","$watchCollection","isDefined","ngModel","$modelValue","refreshAttr","refreshPromise","then","finally","isActive","itemScope","itemIndex","_isItemSelected","selection","disabledItems","_isItemDisabled","isDisabled","isTag","disabledItemIndex","splice","_updateItemDisabled","select","$event","type","trim","$setTouched","setFocus","focusInput","clear","stopPropagation","toggle","preventDefault","isLocked","doInitalise","lockedItems","lockedItemIndex","_updateItemLocked","_isItemlocked","sizeWatch","updaterScheduled","highlighted","posY","offsetTop","clientHeight","offsetHeight","sizeSearchInput","input","calculateContainerWidth","clientWidth","offsetParent","updateIfVisible","containerWidth","inputWidth","offsetLeft","css","$$postDigest","noop","key","$apply","tagged","processed","idx","minActiveIndex","idxmin","attributes","getNamedItem","_handleDropDownSelection","keyCode","triggerHandler","newItem","window","clipboardData","getData","originalEvent","separator","split","oldsearch","onResize","$on","find","generatedId","uisOffset","controllerAs","match","exec","ngClass","combined","inputId","id","ctrls","transcludeFn","onDocumentClick","contains","target","targetController","tagName","$digest","baseTitle","title","focusserTitle","focusserId","onSelectCallback","onSelect","onRemoveCallback","onRemove","choiceGrouped","tabindex","limit","taggingEval","autofocus","focusOn","transcluded","transcludedMatch","replaceWith","transcludedChoices","transcludedNoChoice","isOpen","offset","style","after","originalWidth","resetDropdown","dropdown","directionUpClassName","setDropdownPosUp","offsetDropdown","calculateDropdownPosAfterAnimation","removeClass","body","setDropdownPosDown","opacity","opened","needsCalculated","getAttribute","setAllowClear","allow","allowClear","uiLockChoice","attribute","hasAttribute","$evalAsync","activeMatchIndex","updateModel","$setViewValue","Date","now","refreshComponent","removeChoice","index","removedChoice","locals","$item","$model","modelMapper","getPlaceholder","$selectMultiple","_findCaseInsensitiveDupe","arr","origItem","toUpperCase","_findApproxDupe","haystack","needle","dupeIndex","tempArr","copy","mockObj","isObject","$isEmpty","$parsers","unshift","resultMultiple","$formatters","inputValue","checkFnMultiple","p","trackByExp","propsItemNameMatches","oldValue","$render","$viewValue","event","newIndex","el","caretPosition","isNumber","selectionStart","last","curr","next","prev","getNewActiveMatchIndex","Math","min","max","_handleMatchSelection","tagItems","tagItem","stashArr","hasTag","some","itemsWithoutTag","checkFnSingle","d","val","uiSelectSort","$ngModel","axis","extend","uiSelectSortOptions","draggingClassName","droppingClassName","droppingBeforeClassName","droppingAfterClassName","dataTransfer","setData","$index","toString","dropTimeout","move","from","to","className","dragOverHandler","offsetY","layerY","offsetX","layerX","dropHandler","droppedItemIndex","_dropHandler","theList","itemToMove","hasClass","$emit","array","onOpenCloseCallback","uisOpenClose","previousState","expression","filterMatch","grouped","run","$templateCache","put","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_IMPORT_3___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","___CSS_LOADER_URL_IMPORT_4___","___CSS_LOADER_URL_IMPORT_5___","___CSS_LOADER_URL_IMPORT_6___","___CSS_LOADER_URL_IMPORT_7___","___CSS_LOADER_URL_IMPORT_8___","___CSS_LOADER_URL_IMPORT_9___","___CSS_LOADER_URL_IMPORT_10___","___CSS_LOADER_URL_IMPORT_11___","___CSS_LOADER_URL_IMPORT_12___","___CSS_LOADER_URL_IMPORT_13___","___CSS_LOADER_URL_IMPORT_14___","___CSS_LOADER_URL_IMPORT_15___","___CSS_LOADER_URL_IMPORT_16___","___CSS_LOADER_URL_IMPORT_17___","___CSS_LOADER_URL_IMPORT_18___","___CSS_LOADER_URL_IMPORT_19___","___CSS_LOADER_URL_IMPORT_20___","___CSS_LOADER_URL_IMPORT_21___","___CSS_LOADER_URL_IMPORT_22___","___CSS_LOADER_URL_IMPORT_23___","___CSS_LOADER_URL_IMPORT_24___","___CSS_LOADER_URL_IMPORT_25___","___CSS_LOADER_URL_IMPORT_26___","___CSS_LOADER_URL_IMPORT_27___","___CSS_LOADER_URL_IMPORT_28___","___CSS_LOADER_URL_IMPORT_29___","___CSS_LOADER_URL_IMPORT_30___","___CSS_LOADER_URL_IMPORT_31___","___CSS_LOADER_URL_IMPORT_32___","___CSS_LOADER_URL_IMPORT_33___","___CSS_LOADER_URL_IMPORT_34___","___CSS_LOADER_URL_IMPORT_35___","___CSS_LOADER_URL_IMPORT_36___","___CSS_LOADER_URL_IMPORT_37___","___CSS_LOADER_URL_IMPORT_38___","___CSS_LOADER_URL_IMPORT_39___","___CSS_LOADER_URL_IMPORT_40___","___CSS_LOADER_URL_IMPORT_41___","___CSS_LOADER_URL_IMPORT_42___","___CSS_LOADER_URL_IMPORT_43___","___CSS_LOADER_URL_IMPORT_44___","___CSS_LOADER_URL_IMPORT_45___","___CSS_LOADER_URL_IMPORT_46___","___CSS_LOADER_URL_IMPORT_47___","___CSS_LOADER_URL_IMPORT_48___","___CSS_LOADER_URL_IMPORT_49___","___CSS_LOADER_URL_IMPORT_50___","___CSS_LOADER_URL_IMPORT_51___","___CSS_LOADER_URL_IMPORT_52___","___CSS_LOADER_URL_IMPORT_53___","___CSS_LOADER_URL_IMPORT_54___","___CSS_LOADER_URL_IMPORT_55___","___CSS_LOADER_URL_IMPORT_56___","___CSS_LOADER_URL_IMPORT_57___","___CSS_LOADER_URL_IMPORT_58___","___CSS_LOADER_URL_IMPORT_59___","___CSS_LOADER_URL_IMPORT_60___","___CSS_LOADER_URL_IMPORT_61___","___CSS_LOADER_URL_IMPORT_62___","___CSS_LOADER_URL_IMPORT_63___","___CSS_LOADER_URL_IMPORT_64___","___CSS_LOADER_URL_IMPORT_65___","___CSS_LOADER_URL_IMPORT_66___","___CSS_LOADER_URL_IMPORT_67___","___CSS_LOADER_URL_IMPORT_68___","___CSS_LOADER_URL_IMPORT_69___","___CSS_LOADER_URL_IMPORT_70___","___CSS_LOADER_URL_IMPORT_71___","___CSS_LOADER_URL_IMPORT_72___","___CSS_LOADER_URL_IMPORT_73___","___CSS_LOADER_URL_IMPORT_74___","___CSS_LOADER_URL_IMPORT_75___","___CSS_LOADER_URL_IMPORT_76___","___CSS_LOADER_URL_IMPORT_77___","___CSS_LOADER_URL_IMPORT_78___","___CSS_LOADER_URL_IMPORT_79___","___CSS_LOADER_URL_IMPORT_80___","___CSS_LOADER_URL_IMPORT_81___","___CSS_LOADER_URL_IMPORT_82___","___CSS_LOADER_URL_IMPORT_83___","___CSS_LOADER_URL_IMPORT_84___","___CSS_LOADER_URL_IMPORT_85___","___CSS_LOADER_URL_IMPORT_86___","___CSS_LOADER_URL_IMPORT_87___","___CSS_LOADER_URL_IMPORT_88___","___CSS_LOADER_URL_IMPORT_89___","___CSS_LOADER_URL_IMPORT_90___","___CSS_LOADER_URL_REPLACEMENT_4___","___CSS_LOADER_URL_REPLACEMENT_5___","___CSS_LOADER_URL_REPLACEMENT_6___","___CSS_LOADER_URL_REPLACEMENT_7___","___CSS_LOADER_URL_REPLACEMENT_8___","___CSS_LOADER_URL_REPLACEMENT_9___","___CSS_LOADER_URL_REPLACEMENT_10___","___CSS_LOADER_URL_REPLACEMENT_11___","___CSS_LOADER_URL_REPLACEMENT_12___","___CSS_LOADER_URL_REPLACEMENT_13___","___CSS_LOADER_URL_REPLACEMENT_14___","___CSS_LOADER_URL_REPLACEMENT_15___","___CSS_LOADER_URL_REPLACEMENT_16___","___CSS_LOADER_URL_REPLACEMENT_17___","___CSS_LOADER_URL_REPLACEMENT_18___","___CSS_LOADER_URL_REPLACEMENT_19___","___CSS_LOADER_URL_REPLACEMENT_20___","___CSS_LOADER_URL_REPLACEMENT_21___","___CSS_LOADER_URL_REPLACEMENT_22___","___CSS_LOADER_URL_REPLACEMENT_23___","___CSS_LOADER_URL_REPLACEMENT_24___","___CSS_LOADER_URL_REPLACEMENT_25___","___CSS_LOADER_URL_REPLACEMENT_26___","___CSS_LOADER_URL_REPLACEMENT_27___","___CSS_LOADER_URL_REPLACEMENT_28___","___CSS_LOADER_URL_REPLACEMENT_29___","___CSS_LOADER_URL_REPLACEMENT_30___","___CSS_LOADER_URL_REPLACEMENT_31___","___CSS_LOADER_URL_REPLACEMENT_32___","___CSS_LOADER_URL_REPLACEMENT_33___","___CSS_LOADER_URL_REPLACEMENT_34___","___CSS_LOADER_URL_REPLACEMENT_35___","___CSS_LOADER_URL_REPLACEMENT_36___","___CSS_LOADER_URL_REPLACEMENT_37___","___CSS_LOADER_URL_REPLACEMENT_38___","___CSS_LOADER_URL_REPLACEMENT_39___","___CSS_LOADER_URL_REPLACEMENT_40___","___CSS_LOADER_URL_REPLACEMENT_41___","___CSS_LOADER_URL_REPLACEMENT_42___","___CSS_LOADER_URL_REPLACEMENT_43___","___CSS_LOADER_URL_REPLACEMENT_44___","___CSS_LOADER_URL_REPLACEMENT_45___","___CSS_LOADER_URL_REPLACEMENT_46___","___CSS_LOADER_URL_REPLACEMENT_47___","___CSS_LOADER_URL_REPLACEMENT_48___","___CSS_LOADER_URL_REPLACEMENT_49___","___CSS_LOADER_URL_REPLACEMENT_50___","___CSS_LOADER_URL_REPLACEMENT_51___","___CSS_LOADER_URL_REPLACEMENT_52___","___CSS_LOADER_URL_REPLACEMENT_53___","___CSS_LOADER_URL_REPLACEMENT_54___","___CSS_LOADER_URL_REPLACEMENT_55___","___CSS_LOADER_URL_REPLACEMENT_56___","___CSS_LOADER_URL_REPLACEMENT_57___","___CSS_LOADER_URL_REPLACEMENT_58___","___CSS_LOADER_URL_REPLACEMENT_59___","___CSS_LOADER_URL_REPLACEMENT_60___","___CSS_LOADER_URL_REPLACEMENT_61___","___CSS_LOADER_URL_REPLACEMENT_62___","___CSS_LOADER_URL_REPLACEMENT_63___","___CSS_LOADER_URL_REPLACEMENT_64___","___CSS_LOADER_URL_REPLACEMENT_65___","___CSS_LOADER_URL_REPLACEMENT_66___","___CSS_LOADER_URL_REPLACEMENT_67___","___CSS_LOADER_URL_REPLACEMENT_68___","___CSS_LOADER_URL_REPLACEMENT_69___","___CSS_LOADER_URL_REPLACEMENT_70___","___CSS_LOADER_URL_REPLACEMENT_71___","___CSS_LOADER_URL_REPLACEMENT_72___","___CSS_LOADER_URL_REPLACEMENT_73___","___CSS_LOADER_URL_REPLACEMENT_74___","___CSS_LOADER_URL_REPLACEMENT_75___","___CSS_LOADER_URL_REPLACEMENT_76___","___CSS_LOADER_URL_REPLACEMENT_77___","___CSS_LOADER_URL_REPLACEMENT_78___","___CSS_LOADER_URL_REPLACEMENT_79___","___CSS_LOADER_URL_REPLACEMENT_80___","___CSS_LOADER_URL_REPLACEMENT_81___","___CSS_LOADER_URL_REPLACEMENT_82___","___CSS_LOADER_URL_REPLACEMENT_83___","___CSS_LOADER_URL_REPLACEMENT_84___","___CSS_LOADER_URL_REPLACEMENT_85___","___CSS_LOADER_URL_REPLACEMENT_86___","___CSS_LOADER_URL_REPLACEMENT_87___","___CSS_LOADER_URL_REPLACEMENT_88___","___CSS_LOADER_URL_REPLACEMENT_89___","___CSS_LOADER_URL_REPLACEMENT_90___","ValidationEventTypeIds","SecurityActionIds","SecurityAccessLevelIds","FormIds","SecurityRoleIds","SUPSWorkflowEvents","PhaseTypes","PhaseStatuses","ProgramIds","ApplicationStatusIds","ValidationTypeIds","ValidationStatusIds","AttachmentTypeIds","SpecialValueHandlingInstructions","AdminType","$http","$q","baseUrl","jsonParseReviver","http","q","login","model","url_","options_","url","method","JSON","stringify","transformResponse","headers","_response","processLogin","status","response","result200","_responseText","resolve","throwException","logoff","responseType","processLogoff","_headers","contentDisposition","fileNameMatch","fileName","decodeURIComponent","Blob","blobToText","changePassword","processChangePassword","forgotPassword","forgotPasswordModel","processForgotPassword","resetPassword","processResetPassword","confirmAccount","userid","code","encodeURIComponent","processConfirmAccount","processGet","keepAlive","processKeepAlive","validateStatusWorkflow","processValidateStatusWorkflow","applyStatusWorkflow","processApplyStatusWorkflow","validateScreeningBypassWorkflow","processValidateScreeningBypassWorkflow","applyScreeningBypassWorkflow","processApplyScreeningBypassWorkflow","queryAppMapData","appIds","processQueryAppMapData","queryPublicAppMapData","processQueryPublicAppMapData","previousSubmittedApplication","processPreviousSubmittedApplication","previousAuditedApplication","processPreviousAuditedApplication","availableNewForms","processAvailableNewForms","getApplicationTypes","pid","processGetApplicationTypes","hasApplicationsToClone","request","processHasApplicationsToClone","hasAccess","processHasAccess","getOldUncachedJson","processGetOldUncachedJson","getNewUncachedJson","processGetNewUncachedJson","getUserHasGeneralApplicationAccess","securityAction","accessLevel","fid","ignoreFormIntakeWindow","processGetUserHasGeneralApplicationAccess","getUserHasGeneralApplicationAccessByOrg","orgId","processGetUserHasGeneralApplicationAccessByOrg","getUserHasRole","roleId","processGetUserHasRole","getApplicationInfo","appid","processGetApplicationInfo","getAttachmentMetaData","oid","processGetAttachmentMetaData","getPrioritizableForms","processGetPrioritizableForms","getSubmissionQueue","orgid","processGetSubmissionQueue","prioritizeApplications","models","processPrioritizeApplications","processClone","deleteApplication","processDeleteApplication","canDeleteApplication","app","processCanDeleteApplication","getAppCounts","processGetAppCounts","getPage","processGetPage","getPageForCloning","processGetPageForCloning","getMapData","filterProps","processGetMapData","getBridgeMapData","processGetBridgeMapData","getPavementMapData","processGetPavementMapData","getExistingSitesMapData","processGetExistingSitesMapData","unsubmitApplication","processUnsubmitApplication","canSubmitApplication","processCanSubmitApplication","getStatusDDLOptions","processGetStatusDDLOptions","getRevisionsForApp","processGetRevisionsForApp","getPublicApps","processGetPublicApps","getPublicMapData","processGetPublicMapData","canMarkFunded","processCanMarkFunded","markAsFunded","processMarkAsFunded","bulkMarkAsFunded","appids","processBulkMarkAsFunded","bulkMarkPriorities","processBulkMarkPriorities","canSeeFundingTool","processCanSeeFundingTool","markAsReadyForSubmission","processMarkAsReadyForSubmission","unmarkAsReadyForSubmission","processUnmarkAsReadyForSubmission","canBulkSubmitApplications","processCanBulkSubmitApplications","canBulkUnsubmitApplications","processCanBulkUnsubmitApplications","getProgramAttachmentType","processGetProgramAttachmentType","bulkSubmitForms","processBulkSubmitForms","bulkUnsubmitForms","processBulkUnsubmitForms","saveSupsScopeOfWork","text","entity","processSaveSupsScopeOfWork","updateSUPSWorkflowNG","processUpdateSUPSWorkflowNG","getPrivileges","userId","appId","processGetPrivileges","getProgramsUserCanMarkFunded","processGetProgramsUserCanMarkFunded","getTotalFundsRequestedByOrg","processGetTotalFundsRequestedByOrg","getTotalFundsRequestedByOrgByProjectType","processGetTotalFundsRequestedByOrgByProjectType","getApplicationIdLatestRevision","processGetApplicationIdLatestRevision","bulkStatusChange","applicationBulkStatusModel","processBulkStatusChange","hasScreeningBeenBypassed","processHasScreeningBeenBypassed","isPreScreenedInConditionally","processIsPreScreenedInConditionally","getReviewPriorityData","processGetReviewPriorityData","saveReviewPriority","priorityDataVm","processSaveReviewPriority","markApplicationAsHighRisk","processMarkApplicationAsHighRisk","getInflationRate","region_code","phaseType","from_fy","to_fy","inflation_revision","processGetInflationRate","handOffToVDOT","processHandOffToVDOT","setEarlyScreenOut","processSetEarlyScreenOut","withdrawApplication","processWithdrawApplication","unwithdrawApplication","processUnwithdrawApplication","getStructuralForm","processGetStructuralForm","getOrganizationNames","processGetOrganizationNames","getDashboardAppByIdAppName","appIdName","actionId","processGetDashboardAppByIdAppName","getReadinessApprovalsAndDefinition","appsequence","processGetReadinessApprovalsAndDefinition","isAnyGate2Rejected","processIsAnyGate2Rejected","isAnyGate3Rejected","processIsAnyGate3Rejected","isDEExecBypassApproved","processIsDEExecBypassApproved","isDEExecBypassRejected","processIsDEExecBypassRejected","isAllGatesResolved","gateNumber","processIsAllGatesResolved","approveReadiness","approvalDefId","approvalTypeActionId","comment","processApproveReadiness","rejectReadiness","processRejectReadiness","applicationFollowGet","processApplicationFollowGet","applicationFollowList","processApplicationFollowList","applicationFollowDelete","appsequences","processApplicationFollowDelete","applicationWatchPut","processApplicationWatchPut","applicationBulkFollow","viewModel","processApplicationBulkFollow","clearAllCache","processClearAllCache","clearCache","processClearCache","oldestFirst","createValidationAlerts","processCreateValidationAlerts","create","processCreate","acknowledge","commentId","processAcknowledge","giveConcurrence","processGiveConcurrence","getAllCommentCounts","processGetAllCommentCounts","getNewCommentCount","processGetNewCommentCount","getPendingAlertCount","processGetPendingAlertCount","getConcurrenceAlertCount","processGetConcurrenceAlertCount","getFormMappingMatrix","source_fid","target_fid","processGetFormMappingMatrix","getEntityAttributeTree","processGetEntityAttributeTree","getActiveForms","processGetActiveForms","getActiveFormEntities","processGetActiveFormEntities","getCloneableEntities","processGetCloneableEntities","getCloneableAttributes","processGetCloneableAttributes","deleteEntityCloneMapping","entityCloneEntityModel","processDeleteEntityCloneMapping","saveEntityCloneMapping","processSaveEntityCloneMapping","saveAttributeCloneMapping","processSaveAttributeCloneMapping","deleteAttributeCloneMapping","processDeleteAttributeCloneMapping","dummyEnumProviderEndpoint","_","processDummyEnumProviderEndpoint","processSearch","hasAccessToValidations","processHasAccessToValidations","getApplicationCodedEventsFid2","processGetApplicationCodedEventsFid2","getPublicApplicationEvents","processGetPublicApplicationEvents","uploadFiles","file","content_","FormData","processUploadFiles","blobExist","requestedAttachment","processBlobExist","getFile","applicationId","processGetFile","getAllFiles","processGetAllFiles","getFilesByFileNameGet","fileNames","processGetFilesByFileNameGet","getFilesByFileName","processGetFilesByFileName","removeAttachment","processRemoveAttachment","updateAttachment","attachmentId","attachmentTypeId","processUpdateAttachment","canSeeBulkDownload","processCanSeeBulkDownload","bulkDownload","attachmentIds","processBulkDownload","getMyFollowReports","processGetMyFollowReports","getMyFollowReportsXlsx","processGetMyFollowReportsXlsx","getMyFollowReportsJson","processGetMyFollowReportsJson","sendFollowReportEmail","processSendFollowReportEmail","followReport","processFollowReport","getFormsConfigMetadata","processGetFormsConfigMetadata","getFormsConfigMetadataCustom","formName","processGetFormsConfigMetadataCustom","getUserPermissionsForForm","processGetUserPermissionsForForm","getFormData","processGetFormData","putFormData","appDataJson","isSubmissionMode","processPutFormData","archiveApplication","processArchiveApplication","initiateValidation","processInitiateValidation","setFundedStatus","processSetFundedStatus","getSubmissionCapForForm","processGetSubmissionCapForForm","getFormInfo","processGetFormInfo","getAllFormsInfo","processGetAllFormsInfo","getFormClonedData","processGetFormClonedData","formHTMLView","summary","processFormHTMLView","formPDFView","processFormPDFView","formHtmlViewCustom","customFormName","processFormHtmlViewCustom","formPdfBulkDownload","processFormPdfBulkDownload","getAppViewableRevisions","processGetAppViewableRevisions","createApp","processCreateApp","createPavementApp","processCreatePavementApp","saveScoringHSIP24","processSaveScoringHSIP24","completeScoringHSIP24","processCompleteScoringHSIP24","saveScoringHSIP25","processSaveScoringHSIP25","completeScoringHSIP25","processCompleteScoringHSIP25","saveScoringHSIPSSI26","processSaveScoringHSIPSSI26","completeScoringHSIPSSI26","processCompleteScoringHSIPSSI26","saveScoringHSIPSpot26","processSaveScoringHSIPSpot26","completeScoringHSIPSpot26","processCompleteScoringHSIPSpot26","saveScoringHSIPVRU26","processSaveScoringHSIPVRU26","completeScoringHSIPVRU26","processCompleteScoringHSIPVRU26","saveScoringHSIPRail26","processSaveScoringHSIPRail26","completeScoringHSIPRail26","processCompleteScoringHSIPRail26","completeScoringGeneric","processCompleteScoringGeneric","getFormConfig2PDF","processGetFormConfig2PDF","getFormConfig2Doc","processGetFormConfig2Doc","importUploadFiles","contentType","item_","processImportUploadFiles","compareAppRevisions","sourceAppId","targetAppId","processCompareAppRevisions","organizations","processOrganizations","smartScaleEnhancements","processSmartScaleEnhancements","riskLevel","processRiskLevel","creationMethod","processCreationMethod","getMissingAttachments","formIDs","processGetMissingAttachments","copyAttachmentsFromRevision0","danglingPointers","processCopyAttachmentsFromRevision0","getIntakeData","processGetIntakeData","updateIntakeRecord","processUpdateIntakeRecord","getAllActive","processGetAllActive","edit","processEdit","add","processAdd","delete","notice","processDelete","getGridData","processGetGridData","getNewOrgForAdmin","adminType","processGetNewOrgForAdmin","getOrgForAdmin","processGetOrgForAdmin","getApplicationDistricts","processGetApplicationDistricts","getFips","processGetFips","getUsers","processGetUsers","getOrgsForDistrictAdmin","processGetOrgsForDistrictAdmin","getPageDistrictAdmin","processGetPageDistrictAdmin","getAllowedOrganizationRolesForAdmin","processGetAllowedOrganizationRolesForAdmin","getLocalityMapping","processGetLocalityMapping","efOrgMapping","organizationViewModel_orgid","organizationViewModel_name","organizationViewModel_primaryContactName","organizationViewModel_primaryPhone","organizationViewModel_secondaryPhone","organizationViewModel_primaryEmail","organizationViewModel_secondaryEmail","organizationViewModel_orgtypeid","organizationViewModel_orgtype","organizationViewModel_updatedby","organizationViewModel_isarchived","organizationViewModel_createdby","organizationViewModel_fips","organizationViewModel_User_emailaddress","organizationViewModel_User_firstname","organizationViewModel_User_lastname","organizationViewModel_User_orgid","organizationViewModel_User_createdby","organizationViewModel_addAdmin","organizationViewModel_formCaps","organizationViewModel_districts","organizationViewModel_non_program_roles","organizationViewModel_programs","organizationViewModel_subOrgs","hasOwnProperty","processEfOrgMapping","getList","processGetList","getProject","processGetProject","canViewProjectList","processCanViewProjectList","getLookups","lookupNames","processGetLookups","saveProject","processSaveProject","generateNVAPEmails","password","processGenerateNVAPEmails","generateNVAPImportEmails","runid","processGenerateNVAPImportEmails","get2","processGet2","getReportList","processGetReportList","generateReport","report_id","processGenerateReport","exportDataGrid","processExportDataGrid","exportSyipDataGrid","upcList","processExportSyipDataGrid","getLookupRolesForAdmin","processGetLookupRolesForAdmin","getAllForAdminRole","processGetAllForAdminRole","getPrivilegesForRole","role_id","district_id","processGetPrivilegesForRole","getBulkUsersForAdminRole","processGetBulkUsersForAdminRole","getOrgsForRole","processGetOrgsForRole","getOrgsForRoleForDistrictAdmin","processGetOrgsForRoleForDistrictAdmin","bulkAssignRolesForUser","processBulkAssignRolesForUser","bulkAssignRolesForOrg","processBulkAssignRolesForOrg","getValidationHistory","processGetValidationHistory","getValidationData","processGetValidationData","canPerformDistrictReviewerValidation","processCanPerformDistrictReviewerValidation","canPerformCentralOfficeValidation","processCanPerformCentralOfficeValidation","performValidation","processPerformValidation","saveValidation","processSaveValidation","saveValidationDeprecated","processSaveValidationDeprecated","submitValidationDeprecated","processSubmitValidationDeprecated","submitValidation","processSubmitValidation","bulkPerformValidation","validationViewModels","processBulkPerformValidation","getPossibleRollbacks","processGetPossibleRollbacks","getPublicValidationHistory","processGetPublicValidationHistory","getSyipRecords","r","processGetSyipRecords","getSyipFilterValues","processGetSyipFilterValues","getSyipRecord","upc","processGetSyipRecord","canViewSyipRecord","processCanViewSyipRecord","canUpdateSyipRecord","processCanUpdateSyipRecord","getSyipRecordByUPC","processGetSyipRecordByUPC","putSyipRecord","processPutSyipRecord","deleteAllSyipData","processDeleteAllSyipData","uploadDirectImportFile","processUploadDirectImportFile","targetUid","actionName","getUserForAdmin","processGetUserForAdmin","getPageOrgAdmin","processGetPageOrgAdmin","updateEmailPreference","processUpdateEmailPreference","getValidationQuestions","processGetValidationQuestions","checkValidationAnswersComplete","processCheckValidationAnswersComplete","canValidate","processCanValidate","saveValidationAnswers","processSaveValidationAnswers","getDefault","processGetDefault","commit","processCommit","version","processVersion","isSwaggerException","obj","reject","SwaggerException","blob","reader","FileReader","onload","readAsText","lazyStates","lazyLoad","transition","$ocLazyLoad","injector","mod","load","AboutModule","NvapModule","AppsFormsModule","AdminModule","DashboardModule","LegacyModule","PublicModule","AccountModule","MaintenanceModule","SyipModule","newFormsMap","Pre_Scoping_2026_Application","programId","Pre_Scoping","TA_Set_Aside_2023_Pre_Application","TA_Set_Aside","intakeVersion","TA_Set_Aside_2023_Application","Revenue_Sharing_2023_Pre_Application","Revenue_Sharing","Revenue_Sharing_2023_Application","State_of_Good_Repair_Bridge_2023_Pre_Application","State_of_Good_Repair_Bridge","State_of_Good_Repair_Bridge_2023_Application","State_of_Good_Repair_Pavement_2023_Application","State_of_Good_Repair_Pavement","SMART_SCALE_2024_Pre_Application","SMART_SCALE","SMART_SCALE_2024_Application","VHSIP_2024_Application","VHSIP","State_of_Good_Repair_Bridge_2024_Pre_Application","State_of_Good_Repair_Bridge_2024_Application","State_of_Good_Repair_Bridge_2026_Application","State_of_Good_Repair_Pavement_2024_Application","TA_Set_Aside_2025_Pre_Application","TA_Set_Aside_2025_Application","Revenue_Sharing_2025_Pre_Application","Revenue_Sharing_2025_Application","CAM_2026_Application","CAM","State_of_Good_Repair_Pavement_2025_Application","VHSIP_2025_Application","SMART_SCALE_2026_Pre_Application","SMART_SCALE_2026_Application","VHSIP_2026_Application","TA_Set_Aside_2027_Pre_Application","TA_Set_Aside_2027_Application","Revenue_Sharing_2027_Pre_Application","Revenue_Sharing_2027_Application","State_of_Good_Repair_Pavement_2026_Application","newProgramsMap","configAppRoutes","appModule","config","$locationProvider","hashPrefix","configRoutes","$urlService","strictMode","$rootScope","$state","authService","toState","toParams","fromState","fromParams","options","$transition$","redirectOptions","reload","toTx","needsAccess","access","userHasAccess","transitionTo","authorize","loggedIn","user","$stateProvider","$urlRouterProvider","$transitionsProvider","$stateRegistry","$urlRouter","when","go","$match","console","debug","supercede","otherwise","invoke","onBefore","trans","newFormReRouter","targetStateName","angularName","router","stateService","homeReRouter","registerTheseStates","abstract","params","year","program","dummyStates","isPublic","legacyTarget","fidString","substr","fidNumber","Number","isInteger","parseFormIdFromAppId","newForm","newStateName","f","pathJoined","x","join","newFormRouteLocator","formsParams","action","abort","FiscalYear","Fid","error","template","programApplicationService","Notification","formTitle","showButton","pbMax","pbValue","canBulkSubmit","canBulkUnsubmit","$onInit","assign","reset","buttonSubmit","showMeClickHandler","BulkSubmitFilterBroadcast","fiscalYear","OrgId","$inject","configRegisterTheseStates","states","state","register","nvapProgram","logo","route","formType","syipProgram","programGroups","programInfo","info","website","website2title","website2url","website3title","website3url","website4title","website4url","IsPublicallyVisible","addPrograms","programs","viewProjectAccessLevels","isPortalAdmin","programGroupId","availablePrograms","HomeComponentName","HomeComponent","HomeCtrl","bindings","homeLoggedInStateName","homePublicStateName","States","component","pageTitle","HomePublicComponentName","HomePublicComponent","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","w","globalThis","$","jQuery","DeepDiff","applicationComparison","isNullOrUndefined","isNotNullOrUndefined","waitingDialog","discussion_nav_bar","$interval","discussionService","localStorageService","getConfigObj","alertCfg","commentCfg","concurrenceCfg","eventListeners","iconClass","displayName","totalCount","forms","getAlertsCount","getConcurrenceAlertsCount","updateData","fetchAlways","commentCount","saveData","c","pending_alert_count","new_comment_count","concurrence_alert_count","DiscussionOverviewIcon","DiscussionModule","BulkAttachmentsCtrl","appTabs","startingTab","createNewDataSource","dataSource","pageSize","getRows","active","pagingOptions","FilterProps","FormIdCsv","_buildPagingOptions","gridResult","TotalCount","totalPages","TotalPages","results","Results","totalSelected","successCallback","gridOptions","api","setDatasource","setRowData","redrawRows","currentTab","appTab","columnDefs","headerName","field","suppressMenu","sort","checkboxSelection","excludedAttachmentTypeIDs","attachmentTypes","Lookups","a","PageSize","PageNumber","OrderBy","OrderDesc","FormId","IdAppName","CreatedOnYear","onGridReady","sizeColumnsToFit","loading","onSelectionChanged","getSelectedRows","angularCompileRows","isExternalFilterPresent","enableColResize","enableSorting","enableServerSideFilter","showToolPanel","suppressRowClickSelection","rowModelType","rowSelection","attachIds","getBulkDownload","apps","attachmentids","urlCall","foundCount","attachid","AppId","log","setGridData","applyFilters","grid","onFilterChanged","CONFIG","reviewPriorityService","actionMode","submissionMode","onForm","hasData","isSaving","reviewPriority","lu","primaryLookups","secondaryLookups","getDataSuccessCallback","catch","can_edit","primary_review","secondary_review","originalData","cancelReviewPriority","review_priority_component","ReviewPriorityController","VitaPasswordDirective","elm","minMatches","$validators","vitapassword","modelValue","viewValue","noMatches","regex","CircleNumberDirective","num","RestrictToDirective","re","restrictTo","exclude","test","AuthorizedDirective","showHide","accessType","accessModel","accessTypeModel","IfAuthorizedDirective","multiElement","priority","terminal","childScope","block","previousElems","createBlock","newScope","createComment","roles","enter","destroyBlock","remove","$destroy","nodes","blockNodes","node","endNode","nextSibling","getBlockNodes","leave","ScrollToDirective","$target","anchordiv","animate","PearlDirective","pearltitle","pearlicon","errorCount","RequiredIndicationIconDirective","FormCtrl","requiredToSubmit","requiredSubmit","requiredToSave","alwaysRequired","requiredIf","$parent","fieldid","modelName","floor","random","validationName","fieldLabel","validationMessages","required","customValidationMessages","msgs","icon","FormNavigatorDirective","FormNavCtrl$inject","curIndex","stairs","activeStep","direction","scrollToTop","setActiveStepFn","goToStep","RequiredAttachmentDirective","RequiredAttachmentCtrl$inject","requiredAttachments","reqAttachmentObject","removeRequired","siteid","originalValue","enableWatch","obj_id","$id","$uibModal","runValidation","addRequired","uploadMessage","requirementAdded","nomodal","animation","animationsEnabled","DownloadScorecardDirective","DownloadScorecardCtrl$inject","buildUrl","urlBuilder","displayid","StorageUrl","filename","displayId","HB2_2017_Application","SMART_SCALE_2020_Application","SMART_SCALE_2022_Application","getScorecardFileName","HasPermissionDirective","formService","perms","permissions","hasPermission","hide","PdfExport","PdfExportCtrl$inject","years","startYear","curSubmitYear","label","errorLogClient","CompareDiffButtonDirective","CompareCtrl$inject","comparisonService","$anchorScroll","$location","setNextElementAndScroll","diffIdArray","currDiff","nextElement","getElementById","currentElement","isDiffPopOpen","DiffModeEnabled","loadComparison","compareId","getApplicationDifferences","init","getDiffIds","totalDiff","scrollToPrevDiff","scrollToNextDiff","availableVersions","GridFiltersDirective","GridFilterCtrl$inject","lovs","showStatus","public","getDDLOptions","getAppTypes","districtFilterOptions","districts","orgFilterBlackList","orgFilterOptions","o","includes","addPlaceHolders","eventService","userService","lookupService","Programs","canEditReviewPriority","canViewScreenings","filterIdAppNames","fiscalYears","commentStatusDropdown","districtValidationStatusDropdown","coValidationStatusDropdown","bridgeConditionDropdown","getSmartScaleFeatures","features","names","feature","option","displayname","attributename","projectFeatureDropdown","getRiskLevel","risks","riskLevels","applicantSUPSReviewDropdown","reviewerSUPSReviewDropdown","getCreationMethod","methods","creationMethods","yearApprovedDropDown","yearAppr","getFullYear","applicationTypeOptions","clearFilters","hideDropDowns","textFilterKeyPress","keyEvent","getApplicationStatusDDLOptions","applicationStatusOptions","usersLoaded","loadUsers","dropdownForCommentTextSearch","fullname","firstname","lastname","uid","selectUser","userObject","CommentAuthorUid","checkForAuthorClear","author","secondReviewPriorityFilterOptions","psProgramRequested","organizationTypes","eligibleNetworks","projectTypes","jurisdictions","psPrincipleImprovements","refreshAppIds","SecurityActionId","View","record","appName","display_id","onClickAppIdName","evt","Map","targetGrid","hideFiscalYear","CommonModule","ErrorLogService","TelephoneFilter","tel","country","city","number","StartFromFilter","start","RangeFilter","range","rangeInt","ConvertDateFilter","FiltersModule","___HTML_LOADER_IMPORT_0___","___HTML_LOADER_IMPORT_1___","___HTML_LOADER_IMPORT_2___","MainHeader","appCount","runAdminChecks","dfds","defer","canSeeAdminTools","promise","canSeeSyipRecordList","canAccessSYIPRecord","canSeeProjectList","errorProvider","sendErrorToServer","errorEndpointURL","displayNotification","modelStateTemplateURL","errors","modelStateTemplate","AppError","errorAsHTML","setOptions","$get","html","reportError","opts","appError","parsedError","dfd","wrappedError","errorType","$new","parseError","modelStateErrorDirective","unknownErrorKey","blankKey","AppErrorModule","provider","noticeService","loggingIn","showForgetPassword","Email","Password","RememberMe","unsavedChanges401Listner","updateAuthToken","hiddenTokenElems","getElementsByName","showNoticeModal","size","backdrop","$uibModalInstance","notices","dismissNotices","onSuccess","current","startsWith","onLockedOut","resetCode","warningMessage","warning","email","isValid","loginResultInfo","loginResult","Succeeded","setAppData","logoutTime","set","newToken","IsLockedOut","$onDestroy","LoginComponent","LoginCtrl","sendEmail","emailModel","successMessage","success","ForgotPasswordComponent","ForgotPasswordCtrl","HomeModuleName","ErrorModuleName","S","appModuleName","EnableDebugTool","DebugModuleLoaded","DebugModule","$transitions","yOffset","$ocLazyLoadProvider","$httpProvider","defaults","interceptors","Version","localStorageServiceProvider","setStorageType","NotificationProvider","delay","startTop","startRight","verticalSpacing","horizontalSpacing","positionX","positionY","appErrorsProvider","$qProvider","errorOnUnhandledRejections","done","slideDown","cancelled","slideUp","splitChar","parts","part","abs","lookups","property","get_many","lookup","filterArray","dateParts","newDate","temp","getUTCFullYear","getUTCMonth","getUTCDate","order","len","_lovCache","_filterPrep","lov","idOrName_p","addObjectName","idOrName","lovName","localIdOrName","localNameOrId","_performFilter","$stateful","objectNameOnly","_idOrName","parseFloat","sort_by","newSortingOrder","sortingOrder","reverse","pagination","currentPage","selectedCls","column","win","topOffset","affixElement","ngModelController","setMinutes","getMinutes","getTimezoneOffset","toISOString","substring","dt","Forms","Status","Attachments","NvapProjectAdmin","SessionTimer","sessionTimer","Enums","xsrfTokenValue","common","addRepeatableEntityField","total","repeatable","isNaN","scoringTotal","scoringObj","scroingColor","fn","totalScore","calculateScoring","fieldName","weight","high","low","notEmptyOrNotDefault","notDefault","notEmptyOrNa","notBlankOrNotzero","toggleArrayValue","modelProperty","propPath","reduce","path","warn","projectScheduleScoring","phases","project_phase_status","start_date","end_date","sortModel","colId","getElementsByClassName","display","defaultGridOptions","enum","programMapConfig","hasMapView","hasMapFilters","applicationLayer","createKeepSessionAliveTimers","appBootstrapData","versionInfo","accountUrl","configModule","configData","ready","EventNameSetScopeOfWorkActionCompleted","validationService","isLoading","canSave","popoverIsOpen","save","EventNameUpdateSUPSWorkflow","EventNameUpdateSUPSWorkflowCompleted","updateSUPSWorkflow","workflowEventId","workflowAction","districtSUPSAgree","canDistrictSupsAgree","districtSUPSDisagree","addSUPSDisagreeComment","submitterSUPSAgree","canSubmitterSupsAgree","submitterSUPSDisagree","formatDate","thisDate","lhs","rhs","comparisonConfiguration","repeatables","ignores","repeatableValueIgnores","diffResult","diff","repeatableEntities","df","repeatableIdx","repeatableLhs","repeatableRhs","rhsCopy","lhsObj","rhsObj","tstring","changedAttribute","kind","compareRepeatableByAttribute","getRepeatableDifferences","t","stringListKeys","stringListKey","lhsList","rhsList","compareStringLists","validateStringListDifferences","listOne","listTwo","capitalize","charAt","entityManager","count","_entityCache","_attributeCache","_eidChainChildCache","_eidChainAttributeCache","_eavParentEav","_eavEidChain","_eavDto","_eavPojo","_eavName","clearEntityCache","getObjectId","setObjectId","getAddPropertyName","getRemovePropertyName","_cacheAttributeStructure","attributeStructure","aid","AttributeCacheableObject","spatial","wkt","geojson","srid","datatype","islistof","_cacheEntityStructure","entityStructure","eidChain","isRoot","eid","EntityCacheableObject","isrepeatable","cfg","entities","eStruct","aStruct","_setTemplate","targetDto","childEs","childAs","ForExport","_addAttributeToEntity","dtoAttrib","pojo","structuralDef","dtype","defineProperty","enumerable","valuelist","newList","dirty","valueKey","findAe","quoteRegex","initVal","_addEntityToEntity","dtoEntity","newEntity","safe","entityName","pEav","parentEidChain","eav","pojoIdx","pojoE","entityPojo","attribDto","configurable","parentDto","parentPojo","entityDto","_addEntityMethod","_addApplicationProperty","pojoApp","_setApplicationRootProperties","application","createSubmittableForm","formStructure","json","that","formDto","RemoveEntity","removeEav","isDto","parEav","parContainer","parArr","existEntity","extensionFunctions","extensionFn","_addReadableAttribute","_addReadableEntity","pojoParentEntity","jsonChildEntity","isRepeatable","attrib","createReadableForm","ro","pname","fname","ename","totalAmountRequested","totalCostEstimate","dtname","dtlistof","forExport","opid","DataTypeCacheableObject","isDeleteFlagged","listof","amount_requested","other_source_requested_amount","syip_allocation","other_source_committed_amount","totalCost","projectPhases","hb2_15_project_phase","pp","cost_estimate","ss_16_project_phase","IntersectedLayerProp","AreaServedName","ModuleName","LegacyFidRouteDictionary","ApplicationClientName","ApplicationClientFactory","DiscussionClientName","DiscussionClientFactory","ReportClientName","ReportClientFactory","SharedApiClientsModule","ModalController","dismiss","EventNameScrollToDiscussionById","CommentsPanelCtrl$inject","getComments","newComment","scrollToDiscussionById","formSections","parent_lookup_id","fsid","CanCreateAlerts","CanResolveAlerts","CanAnswerAlerts","CanViewComments","CanCreateComments","CanConcur","CanRequestConcurrence","discussion_id","scrollIntoView","inline","behavior","sectionFilter","comments","setComments","addComment","isPosting","newCommentModel","discussion_type_id","resolvesparentalert","addReply","newReply","acknowledgeComment","postId","GiveConcurrence","replyWithComment","replytoid","oldFsid","commentsFiltered","checkCommentOwner","owner","emailaddress","UNASSIGNED","HB2","SmartScale","TA","RevShare","HSIP_BikePed","HSIP_BikePed_Archive","HSIP_Safety","HSIP_Safety_Archive","HSIP_SSI","HSIP_SSI_Archive","HSIP_Rail","HSIP_Rail_Archive","SGR_Bridge","SGR_Pavement","PreScoping","HB2_2017","SmartScale_2018","SMART_SCALE_2018_Application","TA_2018","TA_Set_Aside_2018_Application","RevShare_2018","Revenue_Sharing_2018_Application","HSIP_BikePed_2018","HSIP_BikePed_2018_Application","HSIP_Safety_2018","HSIP_Safety_2018_Application","RevShare_2019","Revenue_Sharing_2019_Application","HSIP_BikePed_2019","HSIP_BikePed_2019_Application","HSIP_Safety_2019","HSIP_Safety_2019_Application","TA_2019","TA_Set_Aside_2019_Application","HSIP_SSI_2019","HSIP_SSI_2019_Application","HSIP_RAIL_2019","HSIP_Rail_2019_Application","SGR_Bridge_2019","State_of_Good_Repair_Bridge_2019_Form","SGR_Pavement_2019","State_of_Good_Repair_Pavement_2019_Application","SmartScale_2020","SmartScalePreApp_2020","SMART_SCALE_2020_Pre_Application","HSIP_Safety_2020","HSIP_Safety_2020_Application","HSIP_SSI_2020","HSIP_SSI_2020_Application","HSIP_BikePed_2020","HSIP_BikePed_2020_Application","HSIP_RAIL_2020","HSIP_Rail_2020_Application","SGR_Pavement_2020","State_of_Good_Repair_Pavement_2020_Application","SGR_Bridge_2020","State_of_Good_Repair_Bridge_2020_Form","TA_PreApp_2020","TA_Set_Aside_2021_Pre_Application","TA_2020","TA_Set_Aside_2021_Application","RS_PreApp_2020","Revenue_Sharing_2021_Pre_Application","RS_2020","Revenue_Sharing_2021_Application","SGR_Bridge_2021","State_of_Good_Repair_Bridge_2021_Form","SGR_Pavement_2021","State_of_Good_Repair_Pavement_2021_Application","SS_PreApp_2022","SMART_SCALE_2022_Pre_Application","SS_2022","SGR_Bridge_2022","State_of_Good_Repair_Bridge_2022_Form","SGR_Pavement_2022","State_of_Good_Repair_Pavement_2022_Application","Pre_Scoping_2022_Application","Pending","Submitted","OIPI_Screening","MMWG_Screening_Validation","Screened_Out","Scoring","District_Validation","Central_Office_Validation","Executive_Working_Group_Review","Scored","Processing","Processed_in","Screened_In","Processed_out","Ready_for_Submission","District_Bridge_Engineer_Review","Central_Bridge_Engineer_Review","Submitted_PreApplication","Submitted_Pre_Application","OIPI_COSS_PreScreening","OIPI_COSS_Pre_Screening","OIPI_RegNet_PreScreening","OIPI_Regional_Network_Pre_Screening","OIPI_UDA_PreScreening","OIPI_UDA_Pre_Screening","OIPI_Safety_PreScreening","OIPI_Safety_Pre_Screening","District_PreScreening","District_Pre_Screening","Central_Office_PreScreening","Central_Office_Pre_Screening","PreScreened_In","Pre_Screened_In","PreScreened_Out","Pre_Screened_Out","OIPI_COSS_Screening","OIPI_Regional_Network_Screening","OIPI_UDA_Screening","OIPI_Safety_Screening","Local_Liaison_Validation","PreScreening","Pre_Screening","District_Review","Resolution_of_Support","Letter_of_Support","Local_Comprehensive_Plan","Local_Regional_Economic_Development_Strategy","Planning_Study_Safety_Study","Project_Sketch","Detailed_Cost_Estimate","Site_Development_Plan","Local_Utilities_Programming","Access_Management_Plan_or_Zoning_Overlay","Development_Project_Zoning_Reference","Other","OIPI_Review_Document","Locality_Concurrence_with_Change","District_Validation_Form","Concurrency_Change_Form_for_Scoring","Other_Committed_Funds","Public_Notice","MPO_Endorsement","Capital_Improvement_Plan","Maintenance_Analysis","Crash_Report","Typical_Proposed_Deck_Section_Existing_Approach_Section","Proposed_Plan_View_of_Bridge_Approaches_with_Project_limits","Existing_Typical_Approach_Roadway_Section","SGR_Project_Cost_Estimates_both_Replacement_and_Repair_Options","Supporting_Documentation_for_Smart_Flag","Elevation_Section_of_Proposed_Bridge","Accident_Safety_Analysis_Crash_Report_at_Bridge_Site","Life_Cycle_Cost_Analysis_of_Bridge_Options","Governing_Body_Resolution_of_Support","MPO_Required_Resolution_of_Support","Rail_and_Transit_Project_Detail_Form","Other_Resolution_of_Support","IJR_report","Signal_Warrant_Justification_Study","Attachment_A__Local_Traffic_Volumes","Approval_Document_for_Site_Development_Plan","Applicant_Concurrence_with_Change","Project_Location_List","Detailed_Project_Estimate","CLRP_Document","Program_Administration_Form","Prescoping_Report","Existing_and_Proposed_Cross_Section_of_Deck","Existing_and_Proposed_Cross_Section_of_Immediate_Approach_Roadway","Cost_Estimates_Estimate_Workbook_and_Support_Documentation","Third_Party_Contribution_Plan","Project_Delivery_Schedule","Request_to_Administer","Estimate_Workbook","Current_Ridership_For_Existing_Routes","Existing_Ridership","Projected_or_Existing_Ridership","Projected_Ridership_Increase_During_the_AM_Peak_Hour_as_a_Result_of_the_Improvement","Proposed_Schedule","Service_Provider_Letter_of_Support","DRPT","Locally","VDOT","ValidationToolTypes","CO","District","District_Validator_Agree","District_Validator_Disagree","Submitter_Agree","Submitter_Disagree","_timersStarted","_sessionTimeoutTimeMilliseconds","_logoutAlertTimerDifferenceMilliseconds","_listeningTimeIntervalMilliseconds","isTimerEnded","_timeSinceLastKeepAlive","_timeTillLogoutDialog","_lastTimeKeepAliveHappened","_logoutAlertTimer","_loggedOutAlertTimer","_resumeListeningTimer","_bodyNode","_bodyClickListener_Bound","_dialogOption","getIsTimerEnded","dialogOption","startNow","_bodyClickListener","getElementsByTagName","startTimers","stopTimers","logoutTimeRemainingSeconds","getLogoutTime","setTimeout","_showSessionTimeoutWarningDialog","_changeKeepSessionDialogToLoggedOut","removeEventListener","clearTimeout","resetTimers","_resetBodyClickListener","expectedLogoutTime","getTime","msg","show","progressType","confirm","_keepSessionAlive","location","href","removeProjectPhaseIf","evaluator","common_financial","project_phase","AuthEvents","LoggedIn","LoggedOut","LogoutTimeStorageName","applicationClient","serviceBase","AuthService","_loggedIn","watchUser","setLoggedOut","accountClient","loginInfo","logoffAndRedirect","cookie","timersStarted","redirectParams","accountInfo","sessionStorage","setItem","changePasswordInfo","forgotPaswordModel","accessChecks","timeVal","getItem","responseError","rejection","errorData","ns","errorMessage","Message","AuthInterceptor","HttpInterceptorConfig","AuthInterceptorModule","diffPojoInput","diffPojo","diffApp","diffIds","diffPojoDto","targetFid","targetValue","getStructuralForms","structural","checkForDiff","diffNameArray","treeSearch","numOfPropNamesToRemove","searchArray","tree","found","$$isrepeatable","matchRepeatables","shift","sourceValue","description","foundObject","repeatableTreeSearch","subFound","registerDiffId","diffId","findEntitiesBySearchArray","checkIfOidWasAdded","isComparingPreApp","entityArray","isAdded","$$oid","$$status","getArrayOfRemovedEntities","removedEntities","eventClient","sectionFormControls","questionFormControls","preSave","clearFormControls","registerSectionForms","fcontrol","registerQuestionControl","isFormDirty","dirtySections","getDirtyTitles","dirtyQuestions","resetFormControls","setControlsToPristine","controls","cont","formControl","$setPristine","foundDirtyControls","setControlToDirtyByName","control","setPreSave","preSaveFn","FormsClientServiceName","FormsServiceClientFactory","discussionClient","post","maxFileSize","maxFileSizeBytes","pow","allowedAttachmentTypes","fileClient","fileViewModel","encodedFilename","removeFile","updateFile","getAll","getFilesByFileNamePostRequest","selectedFiles","parms","openWindowWithPost","lookupClient","noticeClient","editedNotice","createdNotice","organizationClient","organizationViewModel","adminTypeUserViewModel","OrganizationViewModel","gridRequest","DistrictAdmin","getDistrictsForOrg","projectClient","project","requiredRemainingCount","uploadPanelMessages","subData","attachments","defaultRequired","_allRequiredAttachments","_uploadedAttachments","_subRequiredAttachments","_subUploadedAttachments","validate","addSubData","subIndex","requiredAttachmentObject","requiredAttachmentsAction","att","removeRequiredSingle","sortedArray","uploadedIds","b","stillRequired","requirementSatisfied","foundIndex","buildMessageArray","requiredArray","attachment","updateUploaded","uploadedAttachments","uploadedAttachmentsAction","revalidate","roleClient","scrollTo","eId","hash","startY","currentYPosition","stopY","elmYPosition","distance","speed","round","step","leapY","timer","y","userClient","userViewModel","UserViewModel","OrganizationAdmin","cachedValidationData","validationData","centralOfficeReviewEventsTypes","PS_District_Review","TA_District_Review_FY23","districtValidationStatuses","VHSIP_District_Validation_FY24","VHSIP_District_Validation_FY25","VHSIP_District_Validation_FY26","Revenue_Sharing_District_Validation","Pavement_District_Validation","Bridge_District_Validation","District_Validation_Initial_","District_Validation_Subsequent_","Bridge_District_Validation_FY20","Bridge_District_Validation_FY21","SS_District_PreScreening_FY22","Pavement_District_Validation_FY22","Bridge_District_Validation_FY22","PS_District_Validation","TA_District_PreScreening_FY23","Bridge_District_Pre_App_Validation_FY23","Bridge_District_Full_App_Validation_FY23","Bridge_District_Pre_App_Validation_FY24","Bridge_District_Full_App_Validation_FY24","Bridge_District_Validation_FY26","Pavement_District_Validation_FY23","Pavement_District_Validation_FY24","RS_District_Validation_FY23","CAM_District_Validation","TA_District_Validation_FY25","RS_District_Validation_FY25","Pavement_District_Validation_FY25","RS_District_Validation_FY27","TA_District_PreScreening_FY27","Pavement_District_Validation_FY26","TA_District_Validation_FY27","districtScreeningStatuses","SS_District_Screening_FY24","CAM_District_Screening","SS_District_Screening_FY26","centralOfficeScreeningStatuses","SS_Central_Office_Screening_FY24","SS_Central_Office_Screening_FY26","centralOfficeValidationStatuses","VHSIP_Central_Office_Validation_FY24","VHSIP_Central_Office_Validation_FY25","VHSIP_Central_Office_Validation_FY26","TA_Central_Office_Validation","Pavement_Central_Office_Validation","Bridge_Central_Office_Validation","Central_Office_Validation_District_Pass_","Central_Office_Validation_District_Fail_","Bridge_Central_Office_Validation_FY20","Revenue_Sharing_Central_Office_Validation","Bridge_Central_Office_Validation_FY21","SS_Central_Office_PreScreening_FY22","Pavement_Central_Office_Validation_FY22","Bridge_Central_Office_Validation_FY22","PS_CO_Validation","Bridge_Central_Office_Pre_App_Validation_FY23","Bridge_Central_Office_Full_App_Validation_FY23","Bridge_Central_Office_Pre_App_Validation_FY24","Bridge_Central_Office_Full_App_Validation_FY24","Pavement_Central_Office_Validation_FY23","Pavement_Central_Office_Validation_FY24","RS_Central_Office_Validation_FY23","TA_Central_Office_Review_FY23","TA_Central_Office_Review_FY25","CAM_CO_Validation","RS_Central_Office_Validation_FY25","Pavement_Central_Office_Validation_FY25","RS_Central_Office_Validation_FY27","TA_Central_Office_PreScreening_FY27","Pavement_Central_Office_Validation_FY26","TA_Central_Office_Review_FY27","screeningClient","getValidationByEventTypeId","eventTypeId","efCurrentScreenings","ve","type_id","efNonCurrentScreenings","efEditingScreenings","getTypeName","Rolled_Back_to_10_Screening","SS_District_PreScreening_FY24","SS_District_PreScreening_FY26","SS_Central_Office_PreScreening_FY24","SS_Central_Office_PreScreening_FY26","Rolled_Back_to_District_Validation","Rolled_Back_to_Central_Office_Validation","Rolled_Back_to_District_Screening","Rolled_Back_to_Central_Office_Screening","Rolled_Back_to_Scoring","Rolled_Back_to_Screened_In","SS_Early_Screen_Out_FY26","District_Bridge_Engineer_Review_FY20","District_Bridge_Engineer_Review_FY21","District_Bridge_Engineer_Review_FY22","District_Bridge_Engineer_Pre_App_Review_FY23","District_Bridge_Engineer_Full_App_Review_FY23","District_Bridge_Engineer_Pre_App_Review_FY24","District_Bridge_Engineer_Full_App_Review_FY24","District_Bridge_Engineer_Review_FY26","Central_Office_Bridge_Engineer_Review","Central_Office_Bridge_Engineer_Review_FY20","Central_Office_Bridge_Engineer_Review_FY21","Central_Office_Bridge_Engineer_Review_FY22","Central_Office_Bridge_Engineer_Pre_App_Review_FY23","Central_Office_Bridge_Engineer_Full_App_Review_FY23","Central_Office_Bridge_Engineer_Pre_App_Review_FY24","Central_Office_Bridge_Engineer_Full_App_Review_FY24","Central_Office_Bridge_Engineer_Review_FY26","TA_Pre_app_District_Reviewer","RS_Pre_app_District_Reviewer","RS_District_PreScreening_FY23","RS_District_PreScreening_FY25","RS_District_PreScreening_FY27","TA_District_PreScreening_FY25","TA_Pre_app_Central_Office_Validator","RS_Pre_app_Central_Office_Validator","RS_Central_Office_PreScreening_FY23","RS_Central_Office_PreScreening_FY25","RS_Central_Office_PreScreening_FY27","TA_Central_Office_PreScreening_FY25","MMWG_Review","EWG_Review_from_MMWG_","EWG_Review_from_CO_","SS_Executive_Working_Group_Review_FY24","Rolled_Back_to_MMWG_Screening","_10_Review_by_MMWG","SS_10_Screening_Validation_FY24","_10_Review_by_Central_Office","VHSIP_Local_Liaison_Validation_FY24","VHSIP_Local_Liaison_Validation_FY25","VHSIP_Local_Liaison_Validation_FY26","Rolled_Back_to_Local_Liaison_Validation","Rolled_Back_to_District_Bridge_Engineer_Review","Rolled_Back_to_Central_Office_Bridge_Engineer_Review","Rolled_Back_To_TA_Pre_app_Central_Office_Validation","Rolled_Back_To_RS_Pre_app_Central_Office_Validation","Rolled_Back_To_Pre_Screening","Rolled_Back_to_Full_Screening","TA_Pre_app_Pre_Screening_Bypassed","RS_Pre_app_Pre_Screening_Bypassed","TA_Cross_Org_Bypassed","CAM_Cross_Org_Bypassed","SS_OIPI_Screening_FY22","MMWG_COSS_Review","MMWG_Regional_Network_Review","MMWG_UDA_Review","MMWG_Safety_Review","Rolled_Back_To_Submitted","Rolled_Back_To_District_Review","Rolled_Back_to_Pending","Rolled_Back_to_Cross_Org_Review","TA_Cross_Org_Review_FY25","CAM_Cross_Org_Review_FY25","SS_District_Engineer_PreScreening_FY26","TA_Pre_CO_Eligibility_Check_FY27","TA_Full_CO_Eligibility_Check_FY27","Rolled_Back_To_TA_Pre_CO_Eligibility_Check","Rolled_Back_To_TA_Full_CO_Eligibility_Check","getEventCodeCssClass","SharedServicesModule","DiscussionService","FileAttachmentService","LookupService","NoticeService","OrganizationService","ProjectService","RequiredAttachmentsService","ReviewPriorityService","RoleService","SmoothScrollingService","UserService","ValidationService","client","copyMissingFileBlobsRev0ToRev1","danglingDBPointers","reportClient","formsClient","readonlyApplicationServiceBase","cacheData","func","structuralForms","readonlyApplicationClient","valToolClient","legacyComparisonClient","ExportDataGrid","ExportSyipDataGrid","upcs","canDelete","clonableIntoFormId","cache","consoleDebug","submit","unsubmit","canSubmit","rollbackApplication","availableRollbackEvents","canRollbackToEvent","getReadOnly","fundedModel","appidArray","getProgramAttachmentsTypes","saveScoring","scoring","completeScoring","submitSmartScalePreApplication","submitTAPreApplication","isScreeningBypassed","getExistingSites","projectArea","role","setEarlyScreenOutFlag","structuralForm","allStructuralForms","GetOrganizationNames","SS26ReadinessApprovalsAndDef","cachedAvailableGateAndApprovals","approvalName","ApprovalDefinitions","approval_name","gate_number","getApprovals","ss26_readiness_approval","approval_type","getAvailableGates","readinessApprovalsAndDef","readinessGateEntity","approvalNameId","approval_name_id","approvalDefAndApproval","answerPath","answer_path","if_answer","if_coss_apn","is_coss_apn","gate","removeCachedGate","gatesToRemove","gateToRemove","freshGate","isAllGatesResolvedFromClient","gateNum","isGateResolved","approved_by","rejected_by","approval","gateIndex","cachedGateIndex","rejectedApproval","mapSettings","InitModule","Lrs","MapModules","Summary","MapProjectAreaGeometryType","AreaServed","A","DISTRICT","MPO","PDC","JURISDICTION","FC","getActive","_activeRecord","setActive","syipClient","startRow","endRow","Filters","StartRow","EndRow","Sort","saveSyipRecord","vm","syipForm","viewModelToRecord","recordToFormViewModel","syipRecord","project_areas","shape","project_area_shape","intersected_district","intersected_jurisdiction","intersected_mpo","intersected_pdc","anchorMap","sec","qs","questions","anchor_name","childSections","childSec","childQs","anchorName","answer","sections","findId","registerAnchorIfNeeded","nameArray","scrollAndHightLight","ele","addHighLightByEle","triggerPearl","pearlName","returnState","click","addHighLightByName","removeHighLight","formattedDate","date","str","s","endsWith","parseDateFromString","hour","getHours","period","dd","getDate","mm","getMonth","yyyy","padWith","leftPad","arg","form","createElement","appendChild","removeChild","$dialog","millisecondsRemaining","counter","setInterval","timeRemaining","getSeconds","clearInterval","settings","dialogSize","onHide","modal","keyboard","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","m","O","chunkIds","notFulfilled","Infinity","fulfilled","n","getter","__esModule","definition","chunkId","Promise","all","promises","u","g","Function","l","script","needAttach","scripts","charset","timeout","nc","setAttribute","src","onScriptComplete","onerror","doneFns","parentNode","head","Symbol","toStringTag","nmd","paths","children","baseURI","installedChunks","installedChunkData","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}