diff --git a/app/accounts/views/accountsRegister.html b/app/accounts/views/accountsRegister.html index 584a67a7..7b3434be 100644 --- a/app/accounts/views/accountsRegister.html +++ b/app/accounts/views/accountsRegister.html @@ -72,6 +72,11 @@ +
+ By clicking the above "Submit" button, you are agreeing to the + Terms of Service + and the + Privacy Policy. \ No newline at end of file diff --git a/app/settings/views/settingsPremium.html b/app/settings/views/settingsPremium.html index 1fc46c2e..39ad5b5e 100644 --- a/app/settings/views/settingsPremium.html +++ b/app/settings/views/settingsPremium.html @@ -89,17 +89,15 @@

Payment Information

-
- - -
-
+ + +
diff --git a/index.html b/index.html index d36cbd81..7840efac 100644 --- a/index.html +++ b/index.html @@ -60,9 +60,9 @@ - + - + - + - - - + + + diff --git a/js/app.min.js b/js/app.min.js index 22ce808e..3935be75 100644 --- a/js/app.min.js +++ b/js/app.min.js @@ -1,7 +1,7 @@ -angular.module("bit",["ui.router","ngMessages","angular-jwt","ui.bootstrap.showErrors","toastr","angulartics","angulartics.google.analytics","angular-stripe","credit-cards","angular-promise-polyfill","bit.directives","bit.filters","bit.services","bit.global","bit.accounts","bit.vault","bit.settings","bit.tools","bit.organization","bit.reports"]),angular.module("bit").constant("appSettings",{apiUri:"https://api.bitwarden.com",identityUri:"https://identity.bitwarden.com",stripeKey:"pk_live_bpN0P37nMxrMQkcaHXtAybJk",braintreeKey:"TODO",version:"1.14.2",environment:"Production"}),angular.module("bit.accounts",["ui.bootstrap","ngCookies"]),angular.module("bit.directives",[]),angular.module("bit.filters",[]),angular.module("bit.global",[]),angular.module("bit.organization",["ui.bootstrap"]),angular.module("bit.reports",["toastr","ngSanitize"]),angular.module("bit.services",["ngResource","ngStorage","angular-jwt"]),angular.module("bit.settings",["ui.bootstrap","toastr"]),angular.module("bit.tools",["ui.bootstrap","toastr"]),angular.module("bit.vault",["ui.bootstrap","ngclipboard"]),angular.module("bit").factory("apiInterceptor",["$injector","$q","toastr",function(e,t,n){return{request:function(e){return e},response:function(o){return 401!==o.status&&403!==o.status||(e.get("authService").logOut(),e.get("$state").go("frontend.login.info").then(function(){n.warning("Your login session has expired.","Logged out")})),o||t.when(o)},responseError:function(o){return 401!==o.status&&403!==o.status||(e.get("authService").logOut(),e.get("$state").go("frontend.login.info").then(function(){n.warning("Your login session has expired.","Logged out")})),t.reject(o)}}}]),angular.module("bit").config(["$stateProvider","$urlRouterProvider","$httpProvider","jwtInterceptorProvider","jwtOptionsProvider","$uibTooltipProvider","toastrConfig","$locationProvider","$qProvider","stripeProvider","appSettings",function(e,t,n,o,r,a,i,s,l,c,u){l.errorOnUnhandledRejections(!1),s.hashPrefix(""),r.config({urlParam:"access_token3",whiteListedDomains:["api.bitwarden.com","preview-api.bitwarden.com","localhost","192.168.1.3"]});var d;o.tokenGetter=["options","tokenService","authService",function(e,t,n){if(0===e.url.indexOf(u.apiUri)){if(d)return d;var o=t.getToken();if(o)return t.tokenNeedsRefresh(o)?d=n.refreshAccessToken().then(function(e){return d=null,e||o}):o}}],c.setPublishableKey(u.stripeKey),angular.extend(i,{closeButton:!0,progressBar:!0,showMethod:"slideDown",target:".toast-target"}),a.options({popupDelay:600,appendToBody:!0}),n.defaults.headers.post&&(n.defaults.headers.post={}),n.defaults.headers.post["Content-Type"]="text/plain; charset=utf-8",(-1!==navigator.userAgent.indexOf("MSIE")||navigator.appVersion.indexOf("Trident/")>0)&&(n.defaults.headers.get||(n.defaults.headers.get={}),n.defaults.headers.get["Cache-Control"]="no-cache",n.defaults.headers.get.Pragma="no-cache"),n.interceptors.push("apiInterceptor"),n.interceptors.push("jwtInterceptor"),t.otherwise("/"),e.state("backend",{templateUrl:"app/views/backendLayout.html",abstract:!0,data:{authorize:!0}}).state("backend.user",{templateUrl:"app/views/userLayout.html",abstract:!0}).state("backend.user.vault",{url:"^/vault",templateUrl:"app/vault/views/vault.html",controller:"vaultController",data:{pageTitle:"My Vault",controlSidebar:!0},params:{refreshFromServer:!1}}).state("backend.user.shared",{url:"^/shared",templateUrl:"app/vault/views/vaultShared.html",controller:"vaultSharedController",data:{pageTitle:"Shared"}}).state("backend.user.settings",{url:"^/settings",templateUrl:"app/settings/views/settings.html",controller:"settingsController",data:{pageTitle:"Settings"}}).state("backend.user.settingsDomains",{url:"^/settings/domains",templateUrl:"app/settings/views/settingsDomains.html",controller:"settingsDomainsController",data:{pageTitle:"Domain Settings"}}).state("backend.user.settingsTwoStep",{url:"^/settings/two-step",templateUrl:"app/settings/views/settingsTwoStep.html",controller:"settingsTwoStepController",data:{pageTitle:"Two-step Login"}}).state("backend.user.settingsCreateOrg",{url:"^/settings/create-organization",templateUrl:"app/settings/views/settingsCreateOrganization.html",controller:"settingsCreateOrganizationController",data:{pageTitle:"Create Organization"}}).state("backend.user.settingsBilling",{url:"^/settings/billing",templateUrl:"app/settings/views/settingsBilling.html",controller:"settingsBillingController",data:{pageTitle:"Billing"}}).state("backend.user.settingsPremium",{url:"^/settings/premium",templateUrl:"app/settings/views/settingsPremium.html",controller:"settingsPremiumController",data:{pageTitle:"Go Premium"}}).state("backend.user.tools",{url:"^/tools",templateUrl:"app/tools/views/tools.html",controller:"toolsController",data:{pageTitle:"Tools"}}).state("backend.user.reportsBreach",{url:"^/reports/breach",templateUrl:"app/reports/views/reportsBreach.html",controller:"reportsBreachController",data:{pageTitle:"Data Breach Report"}}).state("backend.user.apps",{url:"^/apps",templateUrl:"app/views/apps.html",controller:"appsController",data:{pageTitle:"Get the Apps"}}).state("backend.org",{templateUrl:"app/views/organizationLayout.html",abstract:!0}).state("backend.org.dashboard",{url:"^/organization/:orgId",templateUrl:"app/organization/views/organizationDashboard.html",controller:"organizationDashboardController",data:{pageTitle:"Organization Dashboard"}}).state("backend.org.people",{url:"/organization/:orgId/people",templateUrl:"app/organization/views/organizationPeople.html",controller:"organizationPeopleController",data:{pageTitle:"Organization People"}}).state("backend.org.collections",{url:"/organization/:orgId/collections",templateUrl:"app/organization/views/organizationCollections.html",controller:"organizationCollectionsController",data:{pageTitle:"Organization Collections"}}).state("backend.org.settings",{url:"/organization/:orgId/settings",templateUrl:"app/organization/views/organizationSettings.html",controller:"organizationSettingsController",data:{pageTitle:"Organization Settings"}}).state("backend.org.billing",{url:"/organization/:orgId/billing",templateUrl:"app/organization/views/organizationBilling.html",controller:"organizationBillingController",data:{pageTitle:"Organization Billing"}}).state("backend.org.vault",{url:"/organization/:orgId/vault",templateUrl:"app/organization/views/organizationVault.html",controller:"organizationVaultController",data:{pageTitle:"Organization Vault"}}).state("backend.org.groups",{url:"/organization/:orgId/groups",templateUrl:"app/organization/views/organizationGroups.html",controller:"organizationGroupsController",data:{pageTitle:"Organization Groups"}}).state("frontend",{templateUrl:"app/views/frontendLayout.html",abstract:!0,data:{authorize:!1}}).state("frontend.login",{templateUrl:"app/accounts/views/accountsLogin.html",controller:"accountsLoginController",params:{returnState:null,email:null,premium:null,org:null},data:{bodyClass:"login-page"}}).state("frontend.login.info",{url:"^/?org&premium&email",templateUrl:"app/accounts/views/accountsLoginInfo.html",data:{pageTitle:"Log In"}}).state("frontend.login.twoFactor",{url:"^/two-step?org&premium&email",templateUrl:"app/accounts/views/accountsLoginTwoFactor.html",data:{pageTitle:"Log In (Two-step)"}}).state("frontend.logout",{url:"^/logout",controller:"accountsLogoutController",data:{authorize:!0}}).state("frontend.passwordHint",{url:"^/password-hint",templateUrl:"app/accounts/views/accountsPasswordHint.html",controller:"accountsPasswordHintController",data:{pageTitle:"Master Password Hint",bodyClass:"login-page"}}).state("frontend.recover",{url:"^/recover",templateUrl:"app/accounts/views/accountsRecover.html",controller:"accountsRecoverController",data:{pageTitle:"Recover Account",bodyClass:"login-page"}}).state("frontend.register",{url:"^/register?org&premium",templateUrl:"app/accounts/views/accountsRegister.html",controller:"accountsRegisterController",params:{returnState:null,email:null,org:null,premium:null},data:{pageTitle:"Register",bodyClass:"register-page"}}).state("frontend.organizationAccept",{url:"^/accept-organization?organizationId&organizationUserId&token&email&organizationName",templateUrl:"app/accounts/views/accountsOrganizationAccept.html",controller:"accountsOrganizationAcceptController",data:{pageTitle:"Accept Organization Invite",bodyClass:"login-page",skipAuthorize:!0}}).state("frontend.verifyEmail",{url:"^/verify-email?userId&token",templateUrl:"app/accounts/views/accountsVerifyEmail.html",controller:"accountsVerifyEmailController",data:{pageTitle:"Verifying Email",bodyClass:"login-page",skipAuthorize:!0}})}]).run(["$rootScope","authService","$state",function(e,t,n){e.$on("$stateChangeSuccess",function(){$("html, body").animate({scrollTop:0},200)}),e.$on("$stateChangeStart",function(o,r,a){if(!r.data||!r.data.authorize){if(r.data&&r.data.skipAuthorize)return;if(!t.isAuthenticated())return;return o.preventDefault(),void n.go("backend.user.vault")}if(!t.isAuthenticated())return o.preventDefault(),t.logOut(),void n.go("frontend.login.info");r.name.indexOf("backend.org.")>-1&&a.orgId&&(e.vaultLogins=e.vaultFolders=null,t.getUserProfile().then(function(e){var t=e.organizations;t&&a.orgId in t&&2===t[a.orgId].status&&2!==t[a.orgId].type||(o.preventDefault(),n.go("backend.user.vault"))}))})}]),angular.module("bit").constant("constants",{rememberedEmailCookieName:"bit.rememberedEmail",encType:{AesCbc256_B64:0,AesCbc128_HmacSha256_B64:1,AesCbc256_HmacSha256_B64:2,Rsa2048_OaepSha256_B64:3,Rsa2048_OaepSha1_B64:4,Rsa2048_OaepSha256_HmacSha256_B64:5,Rsa2048_OaepSha1_HmacSha256_B64:6},orgUserType:{owner:0,admin:1,user:2},orgUserStatus:{invited:0,accepted:1,confirmed:2},twoFactorProvider:{u2f:4,yubikey:3,duo:2,authenticator:0,email:1,remember:5},twoFactorProviderInfo:[{type:0,name:"Authenticator App",description:"Use an authenticator app (such as Authy or Google Authenticator) to generate time-based verification codes.",enabled:!1,active:!0,free:!0,image:"authapp.png",displayOrder:0,priority:1,requiresUsb:!1},{type:3,name:"YubiKey OTP Security Key",description:"Use a YubiKey to access your account. Works with YubiKey 4, 4 Nano, 4C, and NEO devices.",enabled:!1,active:!0,image:"yubico.png",displayOrder:1,priority:3,requiresUsb:!0},{type:2,name:"Duo",description:"Verify with Duo Security using the Duo Mobile app, SMS, phone call, or U2F security key.",enabled:!1,active:!0,image:"duo.png",displayOrder:2,priority:2,requiresUsb:!1},{type:4,name:"FIDO U2F Security Key",description:"Use any FIDO U2F enabled security key to access your account.",enabled:!1,active:!0,image:"fido.png",displayOrder:3,priority:4,requiresUsb:!0},{type:1,name:"Email",description:"Verification codes will be emailed to you.",enabled:!1,active:!0,free:!0,image:"gmail.png",displayOrder:4,priority:0,requiresUsb:!1}],plans:{free:{basePrice:0,noAdditionalSeats:!0,noPayment:!0,upgradeSortOrder:-1},personal:{basePrice:1,annualBasePrice:12,baseSeats:5,seatPrice:1,annualSeatPrice:12,maxAdditionalSeats:5,annualPlanType:"personalAnnually",upgradeSortOrder:1},teams:{basePrice:5,annualBasePrice:60,monthlyBasePrice:8,baseSeats:5,seatPrice:2,annualSeatPrice:24,monthlySeatPrice:2.5,monthPlanType:"teamsMonthly",annualPlanType:"teamsAnnually",upgradeSortOrder:2},enterprise:{seatPrice:3,annualSeatPrice:36,monthlySeatPrice:4,monthPlanType:"enterpriseMonthly",annualPlanType:"enterpriseAnnually",upgradeSortOrder:3}},storageGb:{price:.33,monthlyPrice:.5,yearlyPrice:4},premium:{price:10,yearlyPrice:10}}),angular.module("bit.accounts").controller("accountsLoginController",["$scope","$rootScope","$cookies","apiService","cryptoService","authService","$state","constants","$analytics","$uibModal","$timeout","$window","$filter","toastr",function(e,t,n,o,r,a,i,s,l,c,u,d,p,m){function g(e){for(var t=Object.keys(e),n=null,o=-1,r=0;ro){if(a[0].type===s.twoFactorProvider.u2f&&!u2f.isSupported)continue;n=a[0].type,o=a[0].priority}}return null===n?null:parseInt(n)}function f(e){if(h())return e;for(var t=Object.keys(e),n=[],o=0;o1&&e.sendEmail(!1))}function b(t){w||t.length<1||e.twoFactorProvider!==s.twoFactorProvider.u2f||(console.log("listening for u2f key..."),d.u2f.sign(t[0].appId,t[0].challenge,[{version:t[0].version,keyHandle:t[0].keyHandle}],function(n){if(e.twoFactorProvider===s.twoFactorProvider.u2f)return n.errorCode?(console.log(n.errorCode),void u(function(){b(t)},5===n.errorCode?0:1e3)):void e.twoFactor(JSON.stringify(n))},10))}e.state=i,e.twoFactorProviderConstants=s.twoFactorProvider,e.rememberTwoFactor={checked:!1};var w=!0;e.returnState=i.params.returnState,e.stateEmail=i.params.email,!e.returnState&&i.params.org?e.returnState={name:"backend.user.settingsCreateOrg",params:{plan:i.params.org}}:!e.returnState&&i.params.premium&&(e.returnState={name:"backend.user.settingsPremium"}),!(i.current.name.indexOf("twoFactor")>-1)||e.twoFactorProviders&&e.twoFactorProviders.length||i.go("frontend.login.info",{returnState:e.returnState});var S=n.get(s.rememberedEmailCookieName);S||e.stateEmail?(e.model={email:e.stateEmail||S,rememberEmail:null!==S},u(function(){$("#masterPassword").focus()})):u(function(){$("#email").focus()});var C,k;e.twoFactorProviders=null,e.twoFactorProvider=null,e.login=function(t){e.loginPromise=a.logIn(t.email,t.masterPassword).then(function(o){if(t.rememberEmail){var r=new Date;r.setFullYear(r.getFullYear()+10),n.put(s.rememberedEmailCookieName,t.email,{expires:r})}else n.remove(s.rememberedEmailCookieName);o&&Object.keys(o).length>0?(C=t.email,k=t.masterPassword,e.twoFactorProviders=f(o),e.twoFactorProvider=g(e.twoFactorProviders),l.eventTrack("Logged In To Two-step"),i.go("frontend.login.twoFactor",{returnState:e.returnState}).then(function(){u(function(){$("#code").focus(),y()})})):(l.eventTrack("Logged In"),v()),t.masterPassword=""})},e.twoFactor=function(t){e.twoFactorProvider!==s.twoFactorProvider.email&&e.twoFactorProvider!==s.twoFactorProvider.authenticator||(t=t.replace(" ","")),e.twoFactorPromise=a.logIn(C,k,t,e.twoFactorProvider,e.rememberTwoFactor.checked||!1),e.twoFactorPromise.then(function(){l.eventTrack("Logged In From Two-step"),v()},function(){e.twoFactorProvider===s.twoFactorProvider.u2f&&y()})},e.anotherMethod=function(){c.open({animation:!0,templateUrl:"app/accounts/views/accountsTwoFactorMethods.html",controller:"accountsTwoFactorMethodsController",resolve:{providers:function(){return e.twoFactorProviders}}}).result.then(function(t){e.twoFactorProvider=t,u(function(){$("#code").focus(),y()})})},e.sendEmail=function(t){if(e.twoFactorProvider===s.twoFactorProvider.email)return r.makeKeyAndHash(C,k).then(function(e){return o.twoFactor.sendEmailLogin({email:C,masterPasswordHash:e.hash}).$promise}).then(function(){t&&m.success("Verification email sent to "+e.twoFactorEmail+".")},function(){m.error("Could not send verification email.")})},e.$on("$destroy",function(){w=!0})}]),angular.module("bit.accounts").controller("accountsLogoutController",["$scope","authService","$state","$analytics",function(e,t,n,o){t.logOut(),o.eventTrack("Logged Out"),n.go("frontend.login.info")}]),angular.module("bit.accounts").controller("accountsOrganizationAcceptController",["$scope","$state","apiService","authService","toastr","$analytics",function(e,t,n,o,r,a){if(e.state={name:t.current.name,params:t.params},!(t.params.organizationId&&t.params.organizationUserId&&t.params.token&&t.params.email&&t.params.organizationName))return void t.go("frontend.login.info").then(function(){r.error("Invalid parameters.")});e.$on("$viewContentLoaded",function(){o.isAuthenticated()?(e.accepting=!0,n.organizationUsers.accept({orgId:t.params.organizationId,id:t.params.organizationUserId},{token:t.params.token},function(){a.eventTrack("Accepted Invitation"),t.go("backend.user.vault",null,{location:"replace"}).then(function(){r.success("You can access this organization once an administrator confirms your membership. We'll send an email when that happens.","Invite Accepted",{timeOut:1e4})})},function(){a.eventTrack("Failed To Accept Invitation"),t.go("backend.user.vault",null,{location:"replace"}).then(function(){r.error("Unable to accept invitation.","Error")})})):e.loading=!1})}]),angular.module("bit.accounts").controller("accountsPasswordHintController",["$scope","$rootScope","apiService","$analytics",function(e,t,n,o){e.success=!1,e.submit=function(t){e.submitPromise=n.accounts.postPasswordHint({email:t.email},function(){o.eventTrack("Requested Password Hint"),e.success=!0}).$promise}}]),angular.module("bit.accounts").controller("accountsRecoverController",["$scope","apiService","cryptoService","$analytics",function(e,t,n,o){e.success=!1,e.submit=function(r){var a=r.email.toLowerCase();e.submitPromise=n.makeKeyAndHash(r.email,r.masterPassword).then(function(e){return t.twoFactor.recover({email:a,masterPasswordHash:e.hash,recoveryCode:r.code.replace(/\s/g,"").toLowerCase()}).$promise}).then(function(){o.eventTrack("Recovered 2FA"),e.success=!0})}}]),angular.module("bit.accounts").controller("accountsRegisterController",["$scope","$location","apiService","cryptoService","validationService","$analytics","$state","$timeout",function(e,t,n,o,r,a,i,s){var l=t.search(),c=i.params;e.createOrg=c.org,!c.returnState&&c.org?e.returnState={name:"backend.user.settingsCreateOrg",params:{plan:i.params.org}}:!c.returnState&&c.premium?e.returnState={name:"backend.user.settingsPremium",params:{plan:i.params.org}}:e.returnState=c.returnState,e.success=!1,e.model={email:l.email?l.email:c.email},e.readOnlyEmail=null!==c.email,s(function(){e.model.email?$("#name").focus():$("#email").focus()}),e.registerPromise=null,e.register=function(t){var i=!1;if(e.model.masterPassword.length<8&&(r.addError(t,"MasterPassword","Master password must be at least 8 characters long.",!0),i=!0),e.model.masterPassword!==e.model.confirmMasterPassword&&(r.addError(t,"ConfirmMasterPassword","Master password confirmation does not match.",!0),i=!0),!i){var s,l,c=e.model.email.toLowerCase();e.registerPromise=o.makeKeyAndHash(c,e.model.masterPassword).then(function(e){return s=e,l=o.makeEncKey(e.key),o.makeKeyPair(l.encKey)}).then(function(t){var o={name:e.model.name,email:c,masterPasswordHash:s.hash,masterPasswordHint:e.model.masterPasswordHint,key:l.encKeyEnc,keys:{publicKey:t.publicKey,encryptedPrivateKey:t.privateKeyEnc}};return n.accounts.register(o).$promise},function(e){return r.addError(t,null,"Problem generating keys.",!0),!1}).then(function(t){!1!==t&&(e.success=!0,a.eventTrack("Registered"))})}}}]),angular.module("bit.accounts").controller("accountsTwoFactorMethodsController",["$scope","$uibModalInstance","$analytics","providers","constants",function(e,t,n,o,r){function a(t){for(var n=0;n>8*n&255).toString(16)).substr(-2)}return o}function t(e,t){var n=e.split(" ");if(n&&n.length>1){for(var o="",r=0;r").attr({xmlns:"http://www.w3.org/2000/svg","pointer-events":"none",width:e,height:t}).css({"background-color":n,width:e+"px",height:t+"px"})}function o(e,t,n,o,r){return angular.element('').attr({y:"50%",x:"50%",dy:"0.35em","pointer-events":"auto",fill:t,"font-family":n}).text(e).css({"font-weight":o,"font-size":r+"px"})}return{restrict:"AE",replace:!0,scope:{data:"@"},link:function(r,a,i){function s(){var i=null,s=r.data.toUpperCase();l.charCount>1&&(i=t(s,l.charCount)),i||(i=s.substr(0,l.charCount));var c=o(i,l.textColor,l.fontFamily,l.fontWeight,l.fontSize),u=l.bgColor?l.bgColor:e(s),d=n(l.width,l.height,u);d.append(c);var p=angular.element("
").append(d).html(),m=window.btoa(unescape(encodeURIComponent(p))),g="data:image/svg+xml;base64,"+m,f=angular.element("").attr({src:g,title:r.data});"true"===l.round&&f.css("border-radius","50%"),"true"===l.border&&f.css("border",l.borderStyle),l.class&&f.addClass(l.class),"true"===l.dynamic?(a.empty(),a.append(f)):a.replaceWith(f)}var l={charCount:i.charcount||2,data:i.data,textColor:i.textcolor||"#ffffff",bgColor:i.bgcolor,height:i.avheight||45,width:i.avwidth||45,fontSize:i.fontsize||20,fontWeight:i.fontweight||300,fontFamily:i.fontfamily||"Open Sans, HelveticaNeue-Light, Helvetica Neue Light, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif",round:i.round||"true",dynamic:i.dynamic||"true",class:i.avclass||"",border:i.avborder||"false",borderStyle:i.borderstyle||"3px solid white"};"true"===l.dynamic?r.$watch("data",function(){s()}):s()}}}),angular.module("bit.directives").directive("masterPassword",["cryptoService","authService",function(e,t){return{require:"ngModel",restrict:"A",link:function(n,o,r,a){t.getUserProfile().then(function(t){a.$parsers.unshift(function(n){if(n)return e.makeKey(n,t.email).then(function(t){var o=t.keyB64===e.getKey().keyB64;return a.$setValidity("masterPassword",o),o?n:void 0})}),a.$formatters.unshift(function(n){if(n)return e.makeKey(n,t.email).then(function(t){var o=t.keyB64===e.getKey().keyB64;return a.$setValidity("masterPassword",o),n})})})}}}]),angular.module("bit.directives").directive("pageTitle",["$rootScope","$timeout","appSettings",function(e,t,n){return{link:function(n,o){var r=function(e,n,r,a,i){var s="bitwarden Password Manager";n.data&&n.data.pageTitle&&(s=n.data.pageTitle+" - bitwarden Password Manager"),t(function(){o.text(s)})};e.$on("$stateChangeStart",r)}}}]),angular.module("bit.directives").directive("passwordMeter",function(){return{template:'
{{value}}%
',restrict:"A",scope:{password:"=passwordMeter",username:"=passwordMeterUsername",outerClass:"@?"},link:function(e){var t=function(e,t){if(!t||t===e)return 0;var n=t.length;return e&&""!==e&&(-1!==e.indexOf(t)&&(n-=15),-1!==t.indexOf(e)&&(n-=e.length)),t.length>0&&t.length<=4?n+=t.length:t.length>=5&&t.length<=7?n+=6:t.length>=8&&t.length<=15?n+=12:t.length>=16&&(n+=18),t.match(/[a-z]/)&&(n+=1),t.match(/[A-Z]/)&&(n+=5),t.match(/\d/)&&(n+=5),t.match(/.*\d.*\d.*\d/)&&(n+=5),t.match(/[!,@,#,$,%,^,&,*,?,_,~]/)&&(n+=5),t.match(/.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~]/)&&(n+=5),t.match(/(?=.*[a-z])(?=.*[A-Z])/)&&(n+=2),t.match(/(?=.*\d)(?=.*[a-z])(?=.*[A-Z])/)&&(n+=2),t.match(/(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!,@,#,$,%,^,&,*,?,_,~])/)&&(n+=2),n=Math.round(2*n),Math.max(0,Math.min(100,n))},n=function(e){switch(Math.round(e/33)){case 0:case 1:return"danger";case 2:return"warning";case 3:return"success"}},o=function(e){e.value=t(e.username,e.password),e.valueClass=n(e.value)};e.$watch("password",function(){o(e)}),e.$watch("username",function(){o(e)})}}}),angular.module("bit.directives").directive("passwordViewer",function(){return{restrict:"A",link:function(e,t,n){var o=n.passwordViewer;o&&(t.onclick=function(e){},t.on("click",function(e){var n=$(o);n&&"password"===n.attr("type")?(t.removeClass("fa-eye").addClass("fa-eye-slash"),n.attr("type","text")):n&&"text"===n.attr("type")&&(t.removeClass("fa-eye-slash").addClass("fa-eye"),n.attr("type","password"))}))}}}),angular.module("bit.directives").directive("stopClick",function(){return function(e,t,n){$(t).click(function(e){e.preventDefault()})}}),angular.module("bit.directives").directive("stopProp",function(){return function(e,t,n){$(t).click(function(e){e.stopPropagation()})}}),angular.module("bit.directives").directive("totp",["$timeout","$q",function(e,t){return{template:'
{{sec}}{{codeFormatted}}
',restrict:"A",scope:{key:"=totp"},link:function(n){var o=null,r=function(){var e="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",n=function(e,t,n){return t+1>=e.length&&(e=Array(t+1-e.length).join(n)+e),e},o=function(e){return(e<15.5?"0":"")+Math.round(e).toString(16)},r=function(e){return parseInt(e,16)},a=function(e){for(var t=new Uint8Array(e.length/2),n=0;n>>4).toString(16)),n.push((15&t[o]).toString(16));return n.join("")},s=function(t){t=t.toUpperCase();var o,r="";for(o=0;o768}),e.addLogin=function(){e.$broadcast("vaultAddLogin")},e.addFolder=function(){e.$broadcast("vaultAddFolder")},e.addOrganizationLogin=function(){e.$broadcast("organizationVaultAddLogin")},e.addOrganizationCollection=function(){e.$broadcast("organizationCollectionsAdd")},e.inviteOrganizationUser=function(){e.$broadcast("organizationPeopleInvite")},e.addOrganizationGroup=function(){e.$broadcast("organizationGroupsAdd")},e.updateKey=function(){l.open({animation:!0,templateUrl:"app/settings/views/settingsUpdateKey.html",controller:"settingsUpdateKeyController"})},e.verifyEmail=function(){e.sendingVerify||(e.sendingVerify=!0,c.accounts.verifyEmail({},null).$promise.then(function(){r.success("Verification email sent."),e.sendingVerify=!1,e.verifyEmailSent=!0}).catch(function(){r.success("Verification email failed."),e.sendingVerify=!1}))},e.updateBrowser=function(){a.open("https://browser-update.org/update.html","_blank")};var d,p,m,g={scrollbarWidth:function(){if(!d){var e=$("body");e.addClass("bit-position-body-scrollbar-measure"),d=a.innerWidth-e[0].clientWidth,d=isFinite(d)?d:0,e.removeClass("bit-position-body-scrollbar-measure")}return d},scrollbarInfo:function(){return{width:g.scrollbarWidth(),visible:i.height()>$(a).height()}}};$(window).on("show.bs.dropdown",function(e){var t=m=$(e.target),n=t.data("appendTo");if(!n)return!0;p=t.find(".dropdown-menu"),$(n).append(p.detach());var o=t.offset(),r={display:"block",top:o.top+t.outerHeight()-("body"!==n?$(window).scrollTop():0)};if(p.hasClass("dropdown-menu-right")){var i=g.scrollbarInfo(),s=0;i.visible&&i.width&&(s=i.width),r.right=a.innerWidth-s-(o.left+t.prop("offsetWidth"))+"px",r.left="auto"}else r.left=o.left+"px",r.right="auto";p.css(r)}),$(window).on("hide.bs.dropdown",function(e){if(!p)return!0;$(e.target).append(p.detach()),p.hide(),p=null,m=null}),e.$on("removeAppendedDropdownMenu",function(e,t){if(!p&&!m)return!0;m.append(p.detach()),p.hide(),p=null,m=null})}]),angular.module("bit.global").controller("paidOrgRequiredController",["$scope","$state","$uibModalInstance","$analytics","$uibModalStack","orgId","constants","authService",function(e,t,n,o,r,a,i,s){o.eventTrack("paidOrgRequiredController",{category:"Modal"}),s.getUserProfile().then(function(t){e.admin=t.organizations[a].type!==i.orgUserType.user}),e.go=function(){e.admin&&(o.eventTrack("Get Paid Org"),t.go("backend.org.billing",{orgId:a}).then(function(){r.dismissAll()}))},e.close=function(){n.dismiss("close")}}]),angular.module("bit.global").controller("premiumRequiredController",["$scope","$state","$uibModalInstance","$analytics","$uibModalStack",function(e,t,n,o,r){o.eventTrack("premiumRequiredController",{category:"Modal"}),e.go=function(){o.eventTrack("Get Premium"),t.go("backend.user.settingsPremium").then(function(){r.dismissAll()})},e.close=function(){n.dismiss("close")}}]),angular.module("bit.global").controller("sideNavController",["$scope","$state","authService","toastr","$analytics","constants",function(e,t,n,o,r,a){e.$state=t,e.params=t.params,e.orgs=[],e.name="",n.getUserProfile().then(function(n){if(e.name=n.extended&&n.extended.name?n.extended.name:n.email,n.organizations)if(t.includes("backend.org")&&t.params.orgId in n.organizations)e.orgProfile=n.organizations[t.params.orgId];else{var o=[];for(var r in n.organizations)n.organizations.hasOwnProperty(r)&&(n.organizations[r].enabled||n.organizations[r].type<2)&&o.push(n.organizations[r]);e.orgs=o}}),e.viewOrganization=function(e){if(e.type===a.orgUserType.user)return void o.error("You cannot manage this organization.");r.eventTrack("View Organization From Side Nav"),t.go("backend.org.dashboard",{orgId:e.id})},e.searchVault=function(){t.go("backend.user.vault")},e.searchOrganizationVault=function(){t.go("backend.org.vault",{orgId:t.params.orgId})},e.isOrgOwner=function(e){return e&&e.type===a.orgUserType.owner}}]),angular.module("bit.global").controller("topNavController",["$scope",function(e){e.toggleControlSidebar=function(){var e=$("body");e.hasClass("control-sidebar-open")?e.removeClass("control-sidebar-open"):e.addClass("control-sidebar-open")}}]),angular.module("bit.organization").controller("organizationBillingAdjustSeatsController",["$scope","$state","$uibModalInstance","apiService","$analytics","toastr","add",function(e,t,n,o,r,a,i){r.eventTrack("organizationBillingAdjustSeatsController",{category:"Modal"}),e.add=i,e.seatAdjustment=0,e.submit=function(){var s={seatAdjustment:e.seatAdjustment};i||(s.seatAdjustment*=-1),e.submitPromise=o.organizations.putSeat({id:t.params.orgId},s).$promise.then(function(t){i?(r.eventTrack("Added Seats"),a.success("You have added "+e.seatAdjustment+" seats.")):(r.eventTrack("Removed Seats"),a.success("You have removed "+e.seatAdjustment+" seats.")),n.close()})},e.close=function(){n.dismiss("cancel")}}]),angular.module("bit.organization").controller("organizationBillingAdjustStorageController",["$scope","$state","$uibModalInstance","apiService","$analytics","toastr","add",function(e,t,n,o,r,a,i){r.eventTrack("organizationBillingAdjustStorageController",{category:"Modal"}),e.add=i,e.storageAdjustment=0,e.submit=function(){var s={storageGbAdjustment:e.storageAdjustment};i||(s.storageGbAdjustment*=-1),e.submitPromise=o.organizations.putStorage({id:t.params.orgId},s).$promise.then(function(t){i?(r.eventTrack("Added Organization Storage"),a.success("You have added "+e.storageAdjustment+" GB.")):(r.eventTrack("Removed Organization Storage"),a.success("You have removed "+e.storageAdjustment+" GB.")),n.close()})},e.close=function(){n.dismiss("cancel")}}]),angular.module("bit.organization").controller("organizationBillingChangePaymentController",["$scope","$state","$uibModalInstance","apiService","stripe","$analytics","toastr","existingPaymentMethod",function(e,t,n,o,r,a,i,s){a.eventTrack("organizationBillingChangePaymentController",{category:"Modal"}),e.existingPaymentMethod=s,e.paymentMethod="card",e.showPaymentOptions=!1,e.card={},e.submit=function(){e.submitPromise=r.card.createToken(e.card).then(function(e){var n={paymentToken:e.id};return o.organizations.putPayment({id:t.params.orgId},n).$promise},function(e){throw e.message}).then(function(t){e.card=null,s?(a.eventTrack("Changed Organization Payment Method"),i.success("You have changed your payment method.")):(a.eventTrack("Added Organization Payment Method"),i.success("You have added a payment method.")),n.close()})},e.close=function(){n.dismiss("cancel")}}]),angular.module("bit.organization").controller("organizationBillingChangePlanController",["$scope","$state","apiService","$uibModalInstance","toastr","$analytics",function(e,t,n,o,r,a){a.eventTrack("organizationBillingChangePlanController",{category:"Modal"}),e.submit=function(){},e.close=function(){o.dismiss("cancel")}}]),angular.module("bit.organization").controller("organizationBillingController",["$scope","apiService","$state","$uibModal","toastr","$analytics",function(e,t,n,o,r,a){function i(){t.organizations.getBilling({id:n.params.orgId},function(t){e.loading=!1,e.noSubscription=0===t.PlanType;var n=0;if(e.plan={name:t.Plan,type:t.PlanType,seats:t.Seats},e.storage=null,e&&t.MaxStorageGb&&(e.storage={currentGb:t.StorageGb||0,maxGb:t.MaxStorageGb,currentName:t.StorageName||"0 GB"},e.storage.percentage=+(e.storage.currentGb/e.storage.maxGb*100).toFixed(2)),e.subscription=null,t.Subscription&&(e.subscription={trialEndDate:t.Subscription.TrialEndDate,cancelledDate:t.Subscription.CancelledDate,status:t.Subscription.Status,cancelled:t.Subscription.Cancelled,markedForCancel:!t.Subscription.Cancelled&&t.Subscription.CancelAtEndDate}),e.nextInvoice=null,t.UpcomingInvoice&&(e.nextInvoice={date:t.UpcomingInvoice.Date,amount:t.UpcomingInvoice.Amount}),t.Subscription&&t.Subscription.Items)for(e.subscription.items=[],n=0;n=s},e.submit=function(i){var s=r.encryptCollection(i,t.params.orgId);if(e.useGroups){s.groups=[];for(var l in e.selectedGroups)if(e.selectedGroups.hasOwnProperty(l))for(var c=0;c0&&(n[0].name=t.name)})},e.users=function(e){o.open({animation:!0,templateUrl:"app/organization/views/organizationCollectionsUsers.html",controller:"organizationCollectionsUsersController",size:"lg",resolve:{collection:function(){return e}}}).result.then(function(){})},e.groups=function(e){o.open({animation:!0,templateUrl:"app/organization/views/organizationCollectionsGroups.html",controller:"organizationCollectionsGroupsController",resolve:{collection:function(){return e}}}).result.then(function(){})},e.delete=function(o){confirm("Are you sure you want to delete this collection ("+o.name+")?")&&n.collections.del({orgId:t.params.orgId,id:o.id},function(){var t=e.collections.indexOf(o);t>-1&&e.collections.splice(t,1),s.eventTrack("Deleted Collection"),i.success(o.name+" has been deleted.","Collection Deleted")},function(){i.error(o.name+" was not able to be deleted.","Error")})}}]),angular.module("bit.organization").controller("organizationCollectionsEditController",["$scope","$state","$uibModalInstance","apiService","cipherService","$analytics","id","authService",function(e,t,n,o,r,a,i,s){a.eventTrack("organizationCollectionsEditController",{category:"Modal"});var l=0;e.collection={},e.groups=[],e.selectedGroups={},e.loading=!0,e.useGroups=!1,n.opened.then(function(){return o.collections.getDetails({orgId:t.params.orgId,id:i}).$promise}).then(function(t){e.collection=r.decryptCollection(t);var n={};if(t.Groups)for(var o=0;o=l},e.submit=function(s){var l=r.encryptCollection(s,t.params.orgId);if(e.useGroups){l.groups=[];for(var c in e.selectedGroups)if(e.selectedGroups.hasOwnProperty(c))for(var u=0;u-1&&e.users.splice(t,1)},function(){s.error("Unable to remove user.","Error")})},e.close=function(){n.dismiss("cancel")}}]),angular.module("bit.organization").controller("organizationDashboardController",["$scope","authService","$state",function(e,t,n){e.$on("$viewContentLoaded",function(){t.getUserProfile().then(function(t){t.organizations&&(e.orgProfile=t.organizations[n.params.orgId])})})}]),angular.module("bit.organization").controller("organizationDeleteController",["$scope","$state","apiService","$uibModalInstance","cryptoService","authService","toastr","$analytics",function(e,t,n,o,r,a,i,s){s.eventTrack("organizationDeleteController",{category:"Modal"}),e.submit=function(){e.submitPromise=r.hashPassword(e.masterPassword).then(function(e){return n.organizations.del({id:t.params.orgId},{masterPasswordHash:e}).$promise}).then(function(){return o.dismiss("cancel"),a.removeProfileOrganization(t.params.orgId),s.eventTrack("Deleted Organization"),t.go("backend.user.vault")}).then(function(){i.success("This organization and all associated data has been deleted.","Organization Deleted")})},e.close=function(){o.dismiss("cancel")}}]),angular.module("bit.organization").controller("organizationGroupsAddController",["$scope","$state","$uibModalInstance","apiService","cipherService","$analytics",function(e,t,n,o,r,a){a.eventTrack("organizationGroupsAddController",{category:"Modal"}),e.collections=[],e.selectedCollections={},e.loading=!0,n.opened.then(function(){return o.collections.listOrganization({orgId:t.params.orgId}).$promise}).then(function(n){e.collections=r.decryptCollections(n.Data,t.params.orgId,!0),e.loading=!1}),e.toggleCollectionSelectionAll=function(t){var n={};if(t.target.checked)for(var o=0;o0&&(n[0].name=t.name)})},e.users=function(e){o.open({animation:!0,templateUrl:"app/organization/views/organizationGroupsUsers.html",controller:"organizationGroupsUsersController",size:"lg",resolve:{group:function(){return e}}}).result.then(function(){})},e.delete=function(o){confirm("Are you sure you want to delete this group ("+o.name+")?")&&n.groups.del({orgId:t.params.orgId,id:o.id},function(){var t=e.groups.indexOf(o);t>-1&&e.groups.splice(t,1),i.eventTrack("Deleted Group"),a.success(o.name+" has been deleted.","Group Deleted")},function(){a.error(o.name+" was not able to be deleted.","Error")})}}]),angular.module("bit.organization").controller("organizationGroupsEditController",["$scope","$state","$uibModalInstance","apiService","cipherService","$analytics","id",function(e,t,n,o,r,a,i){a.eventTrack("organizationGroupsEditController",{category:"Modal"}),e.collections=[],e.selectedCollections={},e.loading=!0,n.opened.then(function(){return o.groups.getDetails({orgId:t.params.orgId,id:i}).$promise}).then(function(n){e.group={id:i,name:n.Name,externalId:n.ExternalId,accessAll:n.AccessAll};var r={};if(n.Collections)for(var a=0;a-1&&e.users.splice(t,1)},function(){i.error("Unable to remove user.","Error")})},e.close=function(){n.dismiss("cancel")}}]),angular.module("bit.organization").controller("organizationPeopleController",["$scope","$state","$uibModal","cryptoService","apiService","authService","toastr","$analytics",function(e,t,n,o,r,a,i,s){function l(){r.organizationUsers.list({orgId:t.params.orgId},function(t){for(var n=[],o=0;o-1&&e.users.splice(t,1)},function(){i.error("Unable to remove user.","Error")})},e.confirm=function(e){r.users.getPublicKey({id:e.userId},function(n){var a=o.getOrgKey(t.params.orgId);if(!a)return void i.error("Unable to confirm user.","Error");var l=o.rsaEncrypt(a.key,n.PublicKey);r.organizationUsers.confirm({orgId:t.params.orgId,id:e.id},{key:l},function(){e.status=2,s.eventTrack("Confirmed User"),i.success(e.email+" has been confirmed.","User Confirmed")},function(){i.error("Unable to confirm user.","Error")})},function(){i.error("Unable to confirm user.","Error")})},e.$on("organizationPeopleInvite",function(t,n){e.invite()}),e.invite=function(){n.open({animation:!0,templateUrl:"app/organization/views/organizationPeopleInvite.html",controller:"organizationPeopleInviteController"}).result.then(function(){l()})},e.edit=function(e){n.open({animation:!0,templateUrl:"app/organization/views/organizationPeopleEdit.html",controller:"organizationPeopleEditController",resolve:{orgUser:function(){return e}}}).result.then(function(){l()})},e.groups=function(e){n.open({animation:!0,templateUrl:"app/organization/views/organizationPeopleGroups.html",controller:"organizationPeopleGroupsController",resolve:{orgUser:function(){return e}}}).result.then(function(){})}}]),angular.module("bit.organization").controller("organizationPeopleEditController",["$scope","$state","$uibModalInstance","apiService","cipherService","orgUser","$analytics",function(e,t,n,o,r,a,i){i.eventTrack("organizationPeopleEditController",{category:"Modal"}),e.loading=!0,e.collections=[],e.selectedCollections={},n.opened.then(function(){o.collections.listOrganization({orgId:t.params.orgId},function(n){e.collections=r.decryptCollections(n.Data,t.params.orgId,!0),e.loading=!1}),o.organizationUsers.get({orgId:t.params.orgId,id:a.id},function(t){var n={};if(t&&t.Collections)for(var o=0;o-1&&e.login.attachments.splice(t,1)},function(){l.error("Cannot delete attachment."),n.loading=!1}))},e.close=function(){n.dismiss("cancel")},e.$on("modal.closing",function(t,o,r){u||(t.preventDefault(),u=!0,n.close(!!e.login.attachments&&e.login.attachments.length>0))})}]),angular.module("bit.organization").controller("organizationVaultController",["$scope","apiService","cipherService","$analytics","$q","$state","$localStorage","$uibModal","$filter","authService",function(e,t,n,o,r,a,i,s,l,c){e.logins=[],e.collections=[],e.loading=!0,e.$on("$viewContentLoaded",function(){var o=t.collections.listOrganization({orgId:a.params.orgId},function(t){for(var o=([{id:null,name:"Unassigned",collapsed:i.collapsedOrgCollections&&"unassigned"in i.collapsedOrgCollections}]),r=0;r-1:null===e.id}},e.collectionSort=function(e){return e.id?e.name.toLowerCase():""},e.collapseExpand=function(e){i.collapsedOrgCollections||(i.collapsedOrgCollections={});var t=e.id||"unassigned";t in i.collapsedOrgCollections?delete i.collapsedOrgCollections[t]:i.collapsedOrgCollections[t]=!0},e.editLogin=function(t){s.open({animation:!0,templateUrl:"app/vault/views/vaultEditLogin.html",controller:"organizationVaultEditLoginController",resolve:{loginId:function(){return t.id},orgId:function(){return a.params.orgId}}}).result.then(function(n){if("edit"===n.action)t.name=n.data.name,t.username=n.data.username;else if("delete"===n.action){var o=e.logins.indexOf(t);o>-1&&e.logins.splice(o,1)}})},e.$on("organizationVaultAddLogin",function(t,n){e.addLogin()}),e.addLogin=function(){s.open({animation:!0,templateUrl:"app/vault/views/vaultAddLogin.html",controller:"organizationVaultAddLoginController",resolve:{orgId:function(){return a.params.orgId}}}).result.then(function(t){e.logins.push(t)})},e.editCollections=function(t){s.open({animation:!0,templateUrl:"app/organization/views/organizationVaultLoginCollections.html",controller:"organizationVaultLoginCollectionsController",resolve:{cipher:function(){return t},collections:function(){return e.collections}}}).result.then(function(e){e.collectionIds&&(t.collectionIds=e.collectionIds)})},e.attachments=function(e){c.getUserProfile().then(function(t){return!!t.organizations[e.organizationId].maxStorageGb}).then(function(t){if(!t)return void s.open({animation:!0,templateUrl:"app/views/paidOrgRequired.html",controller:"paidOrgRequiredController",resolve:{orgId:function(){return e.organizationId}}});s.open({animation:!0,templateUrl:"app/vault/views/vaultAttachments.html",controller:"organizationVaultAttachmentsController",resolve:{loginId:function(){return e.id}}}).result.then(function(t){e.hasAttachments=t})})},e.removeLogin=function(e,n){if(confirm("Are you sure you want to remove this login ("+e.name+") from the collection ("+n.name+") ?")){for(var r={collectionIds:[]},a=0;a-1&&e.logins.splice(t,1)})}}]),angular.module("bit.organization").controller("organizationVaultEditLoginController",["$scope","apiService","$uibModalInstance","cryptoService","cipherService","passwordService","loginId","$analytics","orgId","$uibModal",function(e,t,n,o,r,a,i,s,l,c){function u(e){var t=$(e.trigger).parent().prev();"text"===t.attr("type")&&t.select()}s.eventTrack("organizationVaultEditLoginController",{category:"Modal"}),e.login={},e.hideFolders=e.hideFavorite=e.fromOrg=!0,t.logins.getAdmin({id:i},function(t){e.login=r.decryptLogin(t),e.useTotp=e.login.organizationUseTotp}),e.save=function(o){var a=r.encryptLogin(o);e.savePromise=t.logins.putAdmin({id:i},a,function(e){s.eventTrack("Edited Organization Login");var t=r.decryptLogin(e);n.close({action:"edit",data:t})}).$promise},e.generatePassword=function(){e.login.password&&!confirm("Are you sure you want to overwrite the current password?")||(s.eventTrack("Generated Password From Edit"),e.login.password=a.generatePassword({length:12,special:!0}))},e.clipboardSuccess=function(e){e.clearSelection(),u(e)},e.clipboardError=function(e,t){t&&u(e),alert("Your web browser does not support easy clipboard copying. Copy it manually instead.")},e.delete=function(){confirm("Are you sure you want to delete this login ("+e.login.name+")?")&&t.ciphers.delAdmin({id:e.login.id},function(){s.eventTrack("Deleted Organization Login From Edit"),n.close({action:"delete",data:e.login.id})})},e.close=function(){n.dismiss("cancel")},e.showUpgrade=function(){c.open({animation:!0,templateUrl:"app/views/paidOrgRequired.html",controller:"paidOrgRequiredController",resolve:{orgId:function(){return l}}})}}]),angular.module("bit.organization").controller("organizationVaultLoginCollectionsController",["$scope","apiService","$uibModalInstance","cipherService","cipher","$analytics","collections",function(e,t,n,o,r,a,i){a.eventTrack("organizationVaultLoginCollectionsController",{category:"Modal"}),e.cipher={},e.collections=[],e.selectedCollections={},n.opened.then(function(){for(var t=[],n=0;n0},a=t.Data||t;return a&&(o.name=r.decryptProperty(a.Name,n,!1),o.username=r.decryptProperty(a.Username,n,!0),o.password=r.decryptProperty(a.Password,n,!0)),o},r.decryptAttachment=function(t,n){if(!n)throw"encryptedAttachment is undefined or null";return{id:n.Id,url:n.Url,fileName:e.decrypt(n.FileName,t),size:n.SizeName}},r.downloadAndDecryptAttachment=function(t,r,a){var i=n.defer(),s=new XMLHttpRequest;return s.open("GET",r.url,!0),s.responseType="arraybuffer",s.onload=function(n){if(!s.response)return void i.reject("No response");e.decryptFromBytes(s.response,t).then(function(e){if(a){var t=new Blob([e]);if(o.navigator.msSaveOrOpenBlob)o.navigator.msSaveBlob(t,r.fileName);else{var n=o.document.createElement("a");n.href=o.URL.createObjectURL(t),n.download=r.fileName,o.document.body.appendChild(n),n.click(),o.document.body.removeChild(n)}}i.resolve(new Uint8Array(e))})},s.send(null),i.promise},r.decryptFolders=function(e){if(!e)throw"encryptedFolders is undefined or null";for(var t=[],n=0;n104857600)return void r.reject("Maximum file size is 100 MB.");var a=new FileReader;return a.readAsArrayBuffer(o),a.onload=function(n){e.encryptToBytes(n.target.result,t).then(function(n){r.resolve({fileName:e.encrypt(o.name,t),data:new Uint8Array(n),size:o.size})})},a.onerror=function(e){r.reject("Error reading file.")},r.promise},r.encryptFolders=function(e,t){if(!e)throw"unencryptedFolders is undefined or null";for(var n=[],o=0;o2){var d=forge.util.decode64(a[2]),m=l(s+c,n.macKey,!1);if(!u(n.macKey,d,m))return console.error("MAC failed."),null}var g=forge.util.createBuffer(c),f=forge.cipher.createDecipher("AES-CBC",n.encKey);return f.start({iv:s}),f.update(g),f.finish(),o=o||"utf8","utf8"===o?f.output.toString("utf8"):f.output.getBytes()}catch(e){throw console.error("Caught unhandled error in decrypt: "+e),e}},k.decryptFromBytes=function(e,n){try{if(!e)throw"no encBuf.";var o=new Uint8Array(e),r=o[0],a=null,i=null,l=null;switch(r){case t.encType.AesCbc128_HmacSha256_B64:case t.encType.AesCbc256_HmacSha256_B64:if(o.length<=49)return console.error("Enc type ("+r+") not valid."),null;i=h(o,1,17),l=h(o,17,49),a=h(o,49);break;case t.encType.AesCbc256_B64:if(o.length<=17)return console.error("Enc type ("+r+") not valid."),null;i=h(o,1,17),a=h(o,17);break;default:return console.error("Enc type ("+r+") not supported."),null}return s(r,a.buffer,i.buffer,l?l.buffer:null,n)}catch(e){throw console.error("Caught unhandled error in decryptFromBytes: "+e),e}},k.rsaDecrypt=function(e,n,o){if(n=n||k.getPrivateKey(),o=o||k.getEncKey(),!n)throw"Private key unavailable.";var r,a,i=e.split(".");if(1===i.length)r=t.encType.Rsa2048_OaepSha256_B64,a=[i[0]];else if(2===i.length)try{r=parseInt(i[0]),a=i[1].split("|")}catch(e){return null}switch(r){case t.encType.Rsa2048_OaepSha256_B64:case t.encType.Rsa2048_OaepSha1_B64:if(1!==a.length)return null;break;case t.encType.Rsa2048_OaepSha256_HmacSha256_B64:case t.encType.Rsa2048_OaepSha1_HmacSha256_B64:if(2!==a.length)return null;break;default:return null}var s=forge.util.decode64(a[0]);if(o&&o.macKey&&a.length>1){var c=forge.util.decode64(a[1]),d=l(s,o.macKey,!1);if(!u(o.macKey,c,d))return console.error("MAC failed."),null}var p;if(r===t.encType.Rsa2048_OaepSha256_B64||r===t.encType.Rsa2048_OaepSha256_HmacSha256_B64)p=forge.md.sha256.create();else{if(r!==t.encType.Rsa2048_OaepSha1_B64&&r!==t.encType.Rsa2048_OaepSha1_HmacSha256_B64)throw"encType unavailable.";p=forge.md.sha1.create()}return n.decrypt(s,"RSA-OAEP",{md:p})},p.prototype.getBuffers=function(){if(this.keyBuf)return this.keyBuf;var e=m(this.keyB64),t={key:e.buffer};return this.macKey?(t.encKey=h(e,0,e.length/2).buffer,t.macKey=h(e,e.length/2).buffer):(t.encKey=e.buffer,t.macKey=null),this.keyBuf=t,this.keyBuf},k}]),angular.module("bit.services").factory("importService",function(){function e(e,t){if(!e||""===e)return!1;e=e.trim().toLowerCase();for(var n=0;n=0&&(e="http://"+e),n(e)}function n(e){return e.length>1e3?e.substring(0,1e3):e}function o(e){if(e.errors&&e.errors.length)for(var t=0;t label");if(p.length)for(u=0;u card");if(g.length)for(u=0;u field");for(d=0;d notes");for(d=0;d label_id"),p.length){var k=$(p[0]).text(),P=c[k];null!==k&&""!==k&&null!==P&&l.push({key:s.length-1,value:P})}}}t(i,s,l)}else o()}var i=[],s=[],l=[],c=[],u=0,d=0;a(e,r,o)}function c(e,t,r){Papa.parse(e,{encoding:"UTF-8",complete:function(e){o(e);var r=[],a=[],i=[],s=[],l=0,c=0;for(l=0;l Group");a.length&&(i($(a[0]),!0,""),t(s,l,c))}else o()}function i(e,t,o){var r=s.length,a=o;t||(""!==a&&(a+=" > "),a+=e.find("> Name").text(),s.push({name:a}));var u=e.find("> Entry");if(u.length)for(var d=0;d String"),h=0;h Key").text(),b=v.find("> Value").text();if(""!==b)switch(y){case"URL":g.uri=n(b);break;case"UserName":g.username=b;break;case"Password":g.password=b;break;case"Title":g.name=b;break;case"Notes":g.notes=null===g.notes?b+"\n":g.notes+b+"\n";break;default:g.notes=null===g.notes?y+": "+b+"\n":g.notes+y+": "+b+"\n"}}null===g.name&&(g.name="--"),l.push(g),t||c.push({key:m,value:r})}var w=e.find("> Group");if(w.length)for(var S=0;S "):null,s=r.length,l=a.length,c=null!==o,u=c,d=0;if(c)for(d=0;d=6){var o=r.length,s=a.length,l=e[0]&&""!==e[0],c=l,u=0;if(l)for(u=0;u6)for(null===d.notes?d.notes="":d.notes+="\n",u=6;u record");if(u.length)for(var d=0;d Account-Name"),g=m.length?$(m):null,f=p.find("> User-Id"),h=f.length?$(f):null,v=p.find("> Password"),y=v.length?$(v):null,b=p.find("> URL"),w=b.length?$(b):null,S=p.find("> Notes"),C=S.length?$(S):null,k=p.find("> Category"),P=k.length?$(k):null,I=P?P.text():null,T=i.length,A=s.length,z=I&&""!==I&&"Unfiled"!==I,O=z;if(z)for(c=0;c Attribute-"+c,c<10&&(U+=", ");var F=p.find(U);if(F.length)for(c=0;c2&&l.length%2==0)for(var d=0;d entry");if(d.length)for(var p=0;p title"),f=g.length?$(g):null,h=m.find("> username"),v=h.length?$(h):null,y=m.find("> email"),b=y.length?$(y):null,w=b?b.text():null,S=m.find("> password"),C=S.length?$(S):null,k=m.find("> url"),P=k.length?$(k):null,I=m.find("> notes"),T=I.length?$(I):null,A=T?T.text().split(u).join("\n"):null,z=m.find("> group"),O=z.length?$(z):null,E=O?O.text().split(".").join(" > "):null,U=i.length,F=s.length,x=E&&""!==E,D=x;if(x)for(c=0;c Groups > Group[ID="'+t+'"]');if(o.length){n&&""!==n&&(n=" > "+n),n=o.attr("Name")+n;return r(e,o.attr("ParentID"),n)}return n}function i(e){var a=$(e),i=a.find("root > Database");if(i.length){var d=i.find("> Logins > Login");if(d.length)for(var p=0;p Accounts > Account > LoginLinks > Login[SourceLoginID="'+h+'"]');if(C.length){var k=C.parent().parent();k.length&&(v=k.attr("Name"),y=k.attr("Link"),w=k.attr("ParentID"),(b=k.attr("Comments"))&&(b=b.split("/n").join("\n")))}}w&&""!==w&&(S=r(i,w,""));var P=s.length,I=l.length,T=S&&""!==S,A=T;if(T)for(u=0;u=3){var o=r.length,s=a.length,l=e[0]&&""!==e[0]&&"Unassigned"!==e[0],c=l,u=0;if(l)for(u=0;u3)for(var p=3;p").join("")),a=r.find("table.nobr");if(a.length)for(var i=0;i2&&c.length%2==0)for(var p=0;pa?r.substring(a+1):null;if(i&&""!==i&&s&&""!==s&&"SecretType"!==i){var l=i.toLowerCase();"user name"===l?t.username=s:"password"===l?t.password=s:(""!==t.notes&&(t.notes+="\n"),t.notes+=i+": "+s)}}}}Papa.parse(e,{header:!0,encoding:"UTF-8",complete:function(e){o(e);var r=[],i=[],s=[];angular.forEach(e.data,function(e,n){var o=e.ChamberName,l=r.length,c=i.length,u=o&&""!==o,d=u,p=0;if(u)for(p=0;p2&&r(2,c,y),y.name&&"--"!==y.name&&"Web Logins"!==p&&"Servers"!==p&&"Email Accounts"!==p&&(y.name=p+": "+y.name),""===y.notes&&(y.notes=null),i.push(y),h&&a.push({name:u}),f){var b={key:g,value:m};s.push(b)}}n(a,i,s)}})}function x(e,n,r){Papa.parse(e,{header:!0,encoding:"UTF-8",complete:function(e){o(e);for(var r=[],a=[],i=[],s=0;s30&&(p.name=p.name.substring(0,30));for(var m in d.attributes)d.attributes.hasOwnProperty(m)&&"username_value"!==m&&"xdg:schema"!==m&&(""!==p.notes&&(p.notes+="\n"),p.notes+=m+": "+d.attributes[m]);""===p.notes&&(p.notes=null),s.push(p),l.push({key:a,value:r})}}n(i,s,l)}var i=[],s=[],l=[],c=0;r(e,a,o)}var M={};M.import=function(e,t,n,o){if(!t)return void o();switch(e){case"bitwardencsv":i(t,n,o);break;case"lastpass":s(t,n,o);break;case"safeincloudxml":l(t,n,o);break;case"keepass2xml":u(t,n,o);break;case"keepassxcsv":d(t,n,o);break;case"padlockcsv":c(t,n,o);break;case"1password1pif":p(t,n,o);break;case"1password6wincsv":m(t,n,o);break;case"chromecsv":case"vivaldicsv":case"operacsv":g(t,n,o);break;case"firefoxpasswordexportercsvxml":f(t,n,o);break;case"upmcsv":h(t,n,o);break;case"keepercsv":v(t,n,o);break;case"passworddragonxml":y(t,n,o);break;case"enpasscsv":b(t,n,o);break;case"pwsafexml":w(t,n,o);break;case"dashlanecsv":S(t,n,o);break;case"stickypasswordxml":C(t,n,o);break;case"msecurecsv":k(t,n,o);break;case"truekeycsv":P(t,n,o);break;case"clipperzhtml":I(t,n,o);break;case"avirajson":T(t,n,o);break;case"roboformhtml":A(t,n,o);break;case"saferpasscsv":z(t,n,o);break;case"ascendocsv":O(t,n,o);break;case"passwordbossjson":E(t,n,o);break;case"zohovaultcsv":U(t,n,o);break;case"splashidcsv":F(t,n,o);break;case"meldiumcsv":x(t,n,o);break;case"passkeepcsv":D(t,n,o);break;case"gnomejson":L(t,n,o);break;default:o()}};var K=["password","pass word","passphrase","pass phrase","pass","code","code word","codeword","secret","secret word","key","keyword","key word","keyphrase","key phrase","form_pw","wppassword","pin","pwd","pw","pword","passwd","p","serial","serial#","license key","reg #","passwort"],G=["user","name","user name","username","login name","email","e-mail","id","userid","user id","login","form_loginname","wpname","mail","loginid","login id","log","first name","last name","card#","account #","member","member #","nom","benutzername"],B=["url","hyper link","hyperlink","link","host","hostname","host name","server","address","hyper ref","href","web","website","web site","site","web-site","ort","adresse"];return M}),angular.module("bit.services").factory("passwordService",function(){function e(t,n){var o=0,r=n-t,a=Math.ceil(Math.log2(r));if(a>53)throw new Exception("We cannot generate numbers larger than 53 bits.");var i=Math.ceil(a/8),s=Math.pow(2,a)-1,l=new Uint8Array(i);window.crypto.getRandomValues(l);for(var c=8*(i-1),u=0;u=r?e(t,n):t+o}var t={};return t.generatePassword=function(t){var n={length:10,ambiguous:!1,number:!0,minNumber:1,uppercase:!0,minUppercase:1,lowercase:!0,minLowercase:1,special:!1,minSpecial:1},o=angular.extend({},n,t);o.uppercase&&o.minUppercase<0&&(o.minUppercase=1),o.lowercase&&o.minLowercase<0&&(o.minLowercase=1),o.number&&o.minNumber<0&&(o.minNumber=1),o.special&&o.minSpecial<0&&(o.minSpecial=1),(!o.length||o.length<1)&&(o.length=10);var r=o.minUppercase+o.minLowercase+o.minNumber+o.minSpecial;o.length0)for(var i=0;i0)for(var s=0;s0)for(var l=0;l0)for(var c=0;c-1&&e.model.organizations.splice(n,1),r.success("You have left the organization."),i()})},function(e){r.error("Unable to leave this organization."),i()})},e.sessions=function(){n.open({animation:!0,templateUrl:"app/settings/views/settingsSessions.html",controller:"settingsSessionsController"})},e.delete=function(){n.open({animation:!0,templateUrl:"app/settings/views/settingsDelete.html",controller:"settingsDeleteController"})}}]),angular.module("bit.settings").controller("settingsCreateOrganizationController",["$scope","$state","apiService","cryptoService","toastr","$analytics","authService","stripe","constants",function(e,t,n,o,r,a,i,s,l){e.plans=l.plans,e.storageGb=l.storageGb,e.model={plan:"free",additionalSeats:0,interval:"year",ownedBusiness:!1,additionalStorageGb:null},e.totalPrice=function(){return"month"===e.model.interval?(e.model.additionalSeats||0)*(e.plans[e.model.plan].monthlySeatPrice||0)+(e.model.additionalStorageGb||0)*e.storageGb.monthlyPrice+(e.plans[e.model.plan].monthlyBasePrice||0):(e.model.additionalSeats||0)*(e.plans[e.model.plan].annualSeatPrice||0)+(e.model.additionalStorageGb||0)*e.storageGb.yearlyPrice+(e.plans[e.model.plan].annualBasePrice||0)},e.changedPlan=function(){e.plans[e.model.plan].hasOwnProperty("monthPlanType")&&(e.model.interval="year"),e.plans[e.model.plan].noAdditionalSeats?e.model.additionalSeats=0:e.model.additionalSeats||e.plans[e.model.plan].baseSeats||e.plans[e.model.plan].noAdditionalSeats||(e.model.additionalSeats=1)},e.changedBusiness=function(){e.model.ownedBusiness&&(e.model.plan="teams")},e.submit=function(l){function c(e){a.eventTrack("Created Organization"),i.addProfileOrganizationOwner(e,d),i.refreshAccessToken().then(function(){u(e.Id)},function(){u(e.Id)})}function u(e){t.go("backend.org.dashboard",{orgId:e}).then(function(){r.success("Your new organization is ready to go!","Organization Created")})}var d=o.makeShareKeyCt();if("free"===l.plan){var p={name:l.name,planType:l.plan,key:d,billingEmail:l.billingEmail};e.submitPromise=n.organizations.post(p).$promise.then(c)}else e.submitPromise=s.card.createToken(l.card).then(function(t){var o={name:l.name,planType:"month"===l.interval?e.plans[l.plan].monthPlanType:e.plans[l.plan].annualPlanType,key:d,paymentToken:t.id,additionalSeats:l.additionalSeats,additionalStorageGb:l.additionalStorageGb,billingEmail:l.billingEmail,businessName:l.ownedBusiness?l.businessName:null};return n.organizations.post(o).$promise},function(e){throw e.message}).then(c)}}]),angular.module("bit.settings").controller("settingsDeleteController",["$scope","$state","apiService","$uibModalInstance","cryptoService","authService","toastr","$analytics",function(e,t,n,o,r,a,i,s){s.eventTrack("settingsDeleteController",{category:"Modal"}),e.submit=function(l){e.submitPromise=r.hashPassword(l.masterPassword).then(function(e){return n.accounts.postDelete({masterPasswordHash:e}).$promise}).then(function(){return o.dismiss("cancel"),a.logOut(),s.eventTrack("Deleted Account"),t.go("frontend.login.info")}).then(function(){i.success("Your account has been closed and all associated data has been deleted.","Account Deleted")})},e.close=function(){o.dismiss("cancel")}}]),angular.module("bit.settings").controller("settingsDomainsController",["$scope","$state","apiService","toastr","$analytics","$uibModal",function(e,t,n,o,r,a){e.globalEquivalentDomains=[],e.equivalentDomains=[],n.settings.getDomains({},function(t){var n;if(t.EquivalentDomains)for(n=0;n

bitwarden two-step login recovery code:

'+e.code+'

'+new Date+"

"),t.print(),t.close()}},e.close=function(){n.close()}}]),angular.module("bit.settings").controller("settingsTwoStepU2fController",["$scope","apiService","$uibModalInstance","cryptoService","authService","toastr","$analytics","constants","$timeout","$window",function(e,t,n,o,r,a,i,s,l,c){function u(){confirm("Are you sure you want to disable the U2F provider?")&&(e.submitPromise=t.twoFactor.disable({},{masterPasswordHash:p,type:s.twoFactorProvider.u2f},function(t){i.eventTrack("Disabled Two-step U2F"),a.success("U2F has been disabled."),e.enabled=t.Enabled,e.close()}).$promise)}function d(){e.submitPromise=t.twoFactor.putU2f({},{deviceResponse:e.deviceResponse,masterPasswordHash:p},function(t){i.eventTrack("Enabled Two-step U2F"),e.enabled=t.Enabled,e.challenge=null,e.deviceResponse=null,e.deviceError=!1}).$promise}i.eventTrack("settingsTwoStepU2fController",{category:"Modal"});var p,m=!1;e.deviceResponse=null,e.deviceListening=!1,e.deviceError=!1,l(function(){$("#masterPassword").focus()}),e.auth=function(n){e.authPromise=o.hashPassword(n.masterPassword).then(function(e){return p=e,t.twoFactor.getU2f({},{masterPasswordHash:p}).$promise}).then(function(t){return e.enabled=t.Enabled,e.challenge=t.Challenge,e.authed=!0,e.readDevice()})},e.readDevice=function(){m||e.enabled||(console.log("listening for key..."),e.deviceResponse=null,e.deviceError=!1,e.deviceListening=!0,c.u2f.register(e.challenge.AppId,[{version:e.challenge.Version,challenge:e.challenge.Challenge}],[],function(t){return e.deviceListening=!1,5===t.errorCode?void e.readDevice():t.errorCode?(l(function(){e.deviceError=!0}),void console.log("error: "+t.errorCode)):void l(function(){e.deviceResponse=JSON.stringify(t)})},10))},e.submit=function(){if(e.enabled)return void u();d()},e.close=function(){m=!0,n.close(e.enabled)},e.$on("modal.closing",function(t,n,o){m||(t.preventDefault(),e.close())})}]),angular.module("bit.settings").controller("settingsTwoStepYubiController",["$scope","apiService","$uibModalInstance","cryptoService","authService","toastr","$analytics","constants","$timeout",function(e,t,n,o,r,a,i,s,l){function c(t){e.enabled=t.Enabled,e.updateModel={key1:{key:t.Key1,existingKey:u(t.Key1,"*",44)},key2:{key:t.Key2,existingKey:u(t.Key2,"*",44)},key3:{key:t.Key3,existingKey:u(t.Key3,"*",44)},nfc:!0===t.Nfc||!t.Enabled}}function u(e,t,n){if(!e||!t||e.length>=n)return e;for(var o=(n-e.length)/t.length,r=0;r=t?e:new Array(t-e.length+1).join(n)+e}l.eventTrack("toolsExportController",{category:"Modal"}),e.export=function(n){e.startedExport=!0;var o=[],r=[],u=t.folders.list({},function(e){r=a.decryptFolders(e.Data)}).$promise,d=t.logins.list({},function(e){o=a.decryptLogins(e.Data)}).$promise;i.all([u,d]).then(function(){if(!o.length)return s.error("Nothing to export.","Error!"),void e.close();for(var t={},n=0;n "Export".')},{id:"lastpass",name:"LastPass (csv)",featured:!0,sort:2,instructions:c.trustAsHtml('See detailed instructions on our help site at https://help.bitwarden.com/article/import-from-lastpass/')},{id:"chromecsv",name:"Chrome (csv)",featured:!0,sort:3,instructions:c.trustAsHtml('See detailed instructions on our help site at https://help.bitwarden.com/article/import-from-chrome/')},{id:"firefoxpasswordexportercsvxml",name:"Firefox Password Exporter (xml)",featured:!0,sort:4,instructions:c.trustAsHtml('Use the Password Exporter addon for FireFox to export your passwords to a XML file. After installing the addon, type about:addons in your FireFox navigation bar. Locate the Password Exporter addon and click the "Options" button. In the dialog that pops up, click the "Export Passwords" button to save the XML file.')},{id:"keepass2xml",name:"KeePass 2 (xml)",featured:!0,sort:5,instructions:c.trustAsHtml('Using the KeePass 2 desktop application, navigate to "File" > "Export" and select the KeePass XML (2.x) option.')},{id:"keepassxcsv",name:"KeePassX (csv)",instructions:c.trustAsHtml('Using the KeePassX desktop application, navigate to "Database" > "Export to CSV file" and save the CSV file.')},{id:"dashlanecsv",name:"Dashlane (csv)",featured:!0,sort:7,instructions:c.trustAsHtml('Using the Dashlane desktop application, navigate to "File" > "Export" > "Unsecured archive (readable) in CSV format" and save the CSV file.')},{id:"1password1pif",name:"1Password (1pif)",featured:!0,sort:6,instructions:c.trustAsHtml('See detailed instructions on our help site at https://help.bitwarden.com/article/import-from-1password/')},{id:"1password6wincsv",name:"1Password 6 Windows (csv)",instructions:c.trustAsHtml('See detailed instructions on our help site at https://help.bitwarden.com/article/import-from-1password/')},{id:"roboformhtml",name:"RoboForm (html)",instructions:c.trustAsHtml('Using the RoboForm Editor desktop application, navigate to "RoboForm" (top left) > "Print List" > "Logins". When the following print dialog pops up click on the "Save" button and save the HTML file.')},{id:"keepercsv",name:"Keeper (csv)",instructions:c.trustAsHtml('Log into the Keeper web vault (keepersecurity.com/vault). Navigate to "Backup" (top right) and find the "Export to Text File" option. Click "Export Now" to save the TXT/CSV file.')},{id:"enpasscsv",name:"Enpass (csv)",instructions:c.trustAsHtml('Using the Enpass desktop application, navigate to "File" > "Export" > "As CSV". Select "Yes" to the warning alert and save the CSV file.')},{id:"safeincloudxml",name:"SafeInCloud (xml)",instructions:c.trustAsHtml('Using the SaveInCloud desktop application, navigate to "File" > "Export" > "As XML" and save the XML file.')},{id:"pwsafexml",name:"Password Safe (xml)",instructions:c.trustAsHtml('Using the Password Safe desktop application, navigate to "File" > "Export To" > "XML format..." and save the XML file.')},{id:"stickypasswordxml",name:"Sticky Password (xml)",instructions:c.trustAsHtml('Using the Sticky Password desktop application, navigate to "Menu" (top right) > "Export" > "Export all". Select the unencrypted format XML option and then the "Save to file" button. Save the XML file.')},{id:"msecurecsv",name:"mSecure (csv)",instructions:c.trustAsHtml('Using the mSecure desktop application, navigate to "File" > "Export" > "CSV File..." and save the CSV file.')},{id:"truekeycsv",name:"True Key (csv)",instructions:c.trustAsHtml('Using the True Key desktop application, click the gear icon (top right) and then navigate to "App Settings". Click the "Export" button, enter your password and save the CSV file.')},{id:"passwordbossjson",name:"Password Boss (json)",instructions:c.trustAsHtml('Using the Password Boss desktop application, navigate to "File" > "Export data" > "Password Boss JSON - not encrypted" and save the JSON file.')},{id:"zohovaultcsv",name:"Zoho Vault (csv)",instructions:c.trustAsHtml('Log into the Zoho web vault (vault.zoho.com). Navigate to "Tools" > "Export Secrets". Select "All Secrets" and click the "Zoho Vault Format CSV" button. Highlight and copy the data from the textarea. Open a text editor like Notepad and paste the data. Save the data from the text editor as zoho_export.csv.')},{id:"splashidcsv",name:"SplashID (csv)",instructions:c.trustAsHtml('Using the SplashID Safe desktop application, click on the SplashID blue lock logo in the top right corner. Navigate to "Export" > "Export as CSV" and save the CSV file.')},{id:"passworddragonxml",name:"Password Dragon (xml)",instructions:c.trustAsHtml('Using the Password Dragon desktop application, navigate to "File" > "Export" > "To XML". In the dialog that pops up select "All Rows" and check all fields. Click the "Export" button and save the XML file.')},{id:"padlockcsv",name:"Padlock (csv)",instructions:c.trustAsHtml('Using the Padlock desktop application, click the hamburger icon in the top left corner and navigate to "Settings". Click the "Export Data" option. Ensure that the "CSV" option is selected from the dropdown. Highlight and copy the data from the textarea. Open a text editor like Notepad and paste the data. Save the data from the text editor as padlock_export.csv.')},{id:"clipperzhtml",name:"Clipperz (html)",instructions:c.trustAsHtml('Log into the Clipperz web application (clipperz.is/app). Click the hamburger menu icon in the top right to expand the navigation bar. Navigate to "Data" > "Export". Click the "download HTML+JSON" button to save the HTML file.')},{id:"avirajson",name:"Avira (json)",instructions:c.trustAsHtml('Using the Avira browser extension, click your username in the top right corner and navigate to "Settings". Locate the "Export Data" section and click "Export". In the dialog that pops up, click the "Export Password Manager Data" button to save the TXT/JSON file.')},{id:"saferpasscsv",name:"SaferPass (csv)",instructions:c.trustAsHtml('Using the SaferPass browser extension, click the hamburger icon in the top left corner and navigate to "Settings". Click the "Export accounts" button to save the CSV file.')},{id:"upmcsv",name:"Universal Password Manager (csv)",instructions:c.trustAsHtml('Using the Universal Password Manager desktop application, navigate to "Database" > "Export" and save the CSV file.')},{id:"ascendocsv",name:"Ascendo DataVault (csv)",instructions:c.trustAsHtml('Using the Ascendo DataVault desktop application, navigate to "Tools" > "Export". In the dialog that pops up, select the "All Items (DVX, CSV)" option. Click the "Ok" button to save the CSV file.')},{id:"meldiumcsv",name:"Meldium (csv)",instructions:c.trustAsHtml('Using the Meldium web vault, navigate to "Settings". Locate the "Export data" function and click "Show me my data" to save the CSV file.')},{id:"passkeepcsv",name:"PassKeep (csv)",instructions:c.trustAsHtml('Using the PassKeep mobile app, navigate to "Backup/Restore". Locate the "CSV Backup/Restore" section and click "Backup to CSV" to save the CSV file.')},{id:"operacsv",name:"Opera (csv)",instructions:c.trustAsHtml('The process for importing from Opera is exactly the same as importing from Google Chrome. See detailed instructions on our help site at https://help.bitwarden.com/article/import-from-chrome/')},{id:"vivaldicsv",name:"Vivaldi (csv)",instructions:c.trustAsHtml('The process for importing from Vivaldi is exactly the same as importing from Google Chrome. See detailed instructions on our help site at https://help.bitwarden.com/article/import-from-chrome/')},{id:"gnomejson",name:"GNOME Passwords and Keys/Seahorse (json)",instructions:c.trustAsHtml('Make sure you have python-keyring and python-gnomekeyring installed. Save the GNOME Keyring Import/Export python script by Luke Plant to your desktop as pw_helper.py. Open terminal and run chmod +rx Desktop/pw_helper.py and then python Desktop/pw_helper.py export Desktop/my_passwords.json. Then upload the resulting my_passwords.json file here to bitwarden.')}],e.setSource=function(){for(var t=0;t-1&&e.login.attachments.splice(t,1)},function(){l.error("Cannot delete attachment."),n.loading=!1}))},e.close=function(){n.dismiss("cancel")},e.$on("modal.closing",function(t,o,r){m||(t.preventDefault(),m=!0,n.close(!!e.login.attachments&&e.login.attachments.length>0))}),e.showUpgrade=function(){d.open({animation:!0,templateUrl:"app/views/premiumRequired.html",controller:"premiumRequiredController"})}}]),angular.module("bit.vault").controller("vaultController",["$scope","$uibModal","apiService","$filter","cryptoService","authService","toastr","cipherService","$q","$localStorage","$timeout","$rootScope","$state","$analytics",function(e,t,n,o,r,a,i,s,l,c,u,d,p,m){function g(){var t=n.folders.list({},function(e){for(var t=[{id:null,name:"No Folder"}],n=0;n0){e.logins=n[0];var r=200;angular.forEach(n,function(t,n){r+=200,n>0&&u(function(){Array.prototype.push.apply(e.logins,t)},r)})}}function v(){d.vaultLogins=e.logins=o("orderBy")(d.vaultLogins,["name","username"])}function y(e,t){for(var n=[],o=0,r=e.length;o-1&&d.vaultLogins.splice(n,1),(n=e.logins.indexOf(t))>-1&&e.logins.splice(n,1)}e.loading=!0,e.logins=[],e.favoriteCollapsed=c.collapsedFolders&&"favorite"in c.collapsedFolders,e.folderIdFilter=void 0,p.params.refreshFromServer&&(d.vaultFolders=d.vaultLogins=null),e.$on("$viewContentLoaded",function(){if(d.vaultFolders&&d.vaultLogins)return e.loading=!1,f(d.vaultFolders),void h(d.vaultLogins);g()}),e.clipboardError=function(e){alert("Your web browser does not support easy clipboard copying. Edit the login and copy it manually instead.")},e.collapseExpand=function(e,t){c.collapsedFolders||(c.collapsedFolders={});var n=t?"favorite":e.id||"none";n in c.collapsedFolders?delete c.collapsedFolders[n]:c.collapsedFolders[n]=!0},e.editLogin=function(e){t.open({animation:!0,templateUrl:"app/vault/views/vaultEditLogin.html",controller:"vaultEditLoginController",resolve:{loginId:function(){return e.id}}}).result.then(function(t){"edit"===t.action?(e.folderId=t.data.folderId,e.name=t.data.name,e.username=t.data.username,e.password=t.data.password,e.favorite=t.data.favorite,v()):"partialEdit"===t.action?(e.folderId=t.data.folderId,e.favorite=t.data.favorite):"delete"===t.action&&k(e)})},e.$on("vaultAddLogin",function(t,n){e.addLogin()}),e.addLogin=function(e,n){t.open({animation:!0,templateUrl:"app/vault/views/vaultAddLogin.html",controller:"vaultAddLoginController",resolve:{selectedFolder:function(){return e},checkedFavorite:function(){return n}}}).result.then(function(e){d.vaultLogins.push(e),v()})},e.deleteLogin=function(e){confirm("Are you sure you want to delete this login ("+e.name+")?")&&n.logins.del({id:e.id},function(){m.eventTrack("Deleted Login"),k(e)})},e.attachments=function(e){a.getUserProfile().then(function(t){return{isPremium:t.premium,orgUseStorage:e.organizationId&&!!t.organizations[e.organizationId].maxStorageGb}}).then(function(n){if(!e.hasAttachments){if(e.organizationId&&!n.orgUseStorage)return void t.open({animation:!0,templateUrl:"app/views/paidOrgRequired.html",controller:"paidOrgRequiredController",resolve:{orgId:function(){return e.organizationId}}});if(!e.organizationId&&!n.isPremium)return void t.open({animation:!0,templateUrl:"app/views/premiumRequired.html",controller:"premiumRequiredController"})}if(!e.organizationId&&!r.getEncKey())return void i.error("You cannot use this feature until you update your encryption key.","Feature Unavailable");t.open({animation:!0,templateUrl:"app/vault/views/vaultAttachments.html",controller:"vaultAttachmentsController",resolve:{loginId:function(){return e.id}}}).result.then(function(t){e.hasAttachments=t})})},e.editFolder=function(e){t.open({animation:!0,templateUrl:"app/vault/views/vaultEditFolder.html",controller:"vaultEditFolderController",size:"sm",resolve:{folderId:function(){return e.id}}}).result.then(function(t){e.name=t.name})},e.$on("vaultAddFolder",function(t,n){e.addFolder()}),e.addFolder=function(){t.open({animation:!0,templateUrl:"app/vault/views/vaultAddFolder.html",controller:"vaultAddFolderController",size:"sm"}).result.then(function(e){d.vaultFolders.push(e),f(d.vaultFolders)})},e.deleteFolder=function(e){confirm("Are you sure you want to delete this folder ("+e.name+")?")&&n.folders.del({id:e.id},function(){m.eventTrack("Deleted Folder");var t=d.vaultFolders.indexOf(e);t>-1&&d.vaultFolders.splice(t,1)})},e.canDeleteFolder=function(e){if(!e||!e.id||!d.vaultLogins)return!1;var t=o("filter")(d.vaultLogins,{folderId:e.id});return t&&0===t.length},e.share=function(e){t.open({animation:!0,templateUrl:"app/vault/views/vaultShareLogin.html",controller:"vaultShareLoginController",resolve:{loginId:function(){return e.id}}}).result.then(function(t){e.organizationId=t})},e.collections=function(e){t.open({animation:!0,templateUrl:"app/vault/views/vaultLoginCollections.html",controller:"vaultLoginCollectionsController",resolve:{loginId:function(){return e.id}}}).result.then(function(t){t.collectionIds&&!t.collectionIds.length&&k(e)})},e.filterFolder=function(t){e.folderIdFilter=t.id,$.AdminLTE&&$.AdminLTE.layout&&u(function(){$.AdminLTE.layout.fix()},0)},e.clearFilters=function(){e.folderIdFilter=void 0,$.AdminLTE&&$.AdminLTE.layout&&u(function(){$.AdminLTE.layout.fix()},0)},e.folderFilter=function(t){return void 0===e.folderIdFilter||t.id===e.folderIdFilter},e.unselectAll=function(){C(!1)},e.selectFolder=function(e,t){$(t.currentTarget).closest(".box").find('input[name="loginSelection"]').prop("checked",!0)},e.select=function(e){var t=$(e.currentTarget).closest("tr").find('input[name="loginSelection"]');t.prop("checked",!t.prop("checked"))},e.bulkMove=function(){var e=S() -;if(0===e.length)return void alert("You have not selected anything.");t.open({animation:!0,templateUrl:"app/vault/views/vaultMoveLogins.html",controller:"vaultMoveLoginsController",size:"sm",resolve:{ids:function(){return e}}}).result.then(function(t){for(var n=0;n-1&&l.vaultLogins.splice(t,1)}}e.logins=[],e.collections=[],e.loading=!0,e.$on("$viewContentLoaded",function(){var o=t.collections.listMe({},function(t){for(var o=[],r=0;r-1:null===e.id}},e.collectionSort=function(e){return e.id?e.name.toLowerCase():""},e.collapseExpand=function(e){a.collapsedCollections||(a.collapsedCollections={});var t=e.id||"unassigned";t in a.collapsedCollections?delete a.collapsedCollections[t]:a.collapsedCollections[t]=!0},e.editLogin=function(t){i.open({animation:!0,templateUrl:"app/vault/views/vaultEditLogin.html",controller:"vaultEditLoginController",resolve:{loginId:function(){return t.id}}}).result.then(function(n){var o=d(t)||{};if("edit"===n.action)t.folderId=o.folderId=n.data.folderId,t.name=o.name=n.data.name,t.username=o.username=n.data.username,t.password=o.username=n.data.password,t.favorite=o.favorite=n.data.favorite;else if("partialEdit"===n.action)t.folderId=o.folderId=n.data.folderId,t.favorite=o.favorite=n.data.favorite;else if("delete"===n.action){var r=e.logins.indexOf(t);r>-1&&e.logins.splice(r,1),p(o)}})},e.editCollections=function(e){i.open({animation:!0,templateUrl:"app/vault/views/vaultLoginCollections.html",controller:"vaultLoginCollectionsController",resolve:{loginId:function(){return e.id}}}).result.then(function(t){t.collectionIds&&(e.collectionIds=t.collectionIds)})},e.removeLogin=function(e,n){if(confirm("Are you sure you want to remove this login ("+e.name+") from the collection ("+n.name+") ?")){for(var r={collectionIds:[]},a=0;a0)&&(n.defaults.headers.get||(n.defaults.headers.get={}),n.defaults.headers.get["Cache-Control"]="no-cache",n.defaults.headers.get.Pragma="no-cache"),n.interceptors.push("apiInterceptor"),n.interceptors.push("jwtInterceptor"),t.otherwise("/"),e.state("backend",{templateUrl:"app/views/backendLayout.html",abstract:!0,data:{authorize:!0}}).state("backend.user",{templateUrl:"app/views/userLayout.html",abstract:!0}).state("backend.user.vault",{url:"^/vault",templateUrl:"app/vault/views/vault.html",controller:"vaultController",data:{pageTitle:"My Vault",controlSidebar:!0},params:{refreshFromServer:!1}}).state("backend.user.shared",{url:"^/shared",templateUrl:"app/vault/views/vaultShared.html",controller:"vaultSharedController",data:{pageTitle:"Shared"}}).state("backend.user.settings",{url:"^/settings",templateUrl:"app/settings/views/settings.html",controller:"settingsController",data:{pageTitle:"Settings"}}).state("backend.user.settingsDomains",{url:"^/settings/domains",templateUrl:"app/settings/views/settingsDomains.html",controller:"settingsDomainsController",data:{pageTitle:"Domain Settings"}}).state("backend.user.settingsTwoStep",{url:"^/settings/two-step",templateUrl:"app/settings/views/settingsTwoStep.html",controller:"settingsTwoStepController",data:{pageTitle:"Two-step Login"}}).state("backend.user.settingsCreateOrg",{url:"^/settings/create-organization",templateUrl:"app/settings/views/settingsCreateOrganization.html",controller:"settingsCreateOrganizationController",data:{pageTitle:"Create Organization"}}).state("backend.user.settingsBilling",{url:"^/settings/billing",templateUrl:"app/settings/views/settingsBilling.html",controller:"settingsBillingController",data:{pageTitle:"Billing"}}).state("backend.user.settingsPremium",{url:"^/settings/premium",templateUrl:"app/settings/views/settingsPremium.html",controller:"settingsPremiumController",data:{pageTitle:"Go Premium"}}).state("backend.user.tools",{url:"^/tools",templateUrl:"app/tools/views/tools.html",controller:"toolsController",data:{pageTitle:"Tools"}}).state("backend.user.reportsBreach",{url:"^/reports/breach",templateUrl:"app/reports/views/reportsBreach.html",controller:"reportsBreachController",data:{pageTitle:"Data Breach Report"}}).state("backend.user.apps",{url:"^/apps",templateUrl:"app/views/apps.html",controller:"appsController",data:{pageTitle:"Get the Apps"}}).state("backend.org",{templateUrl:"app/views/organizationLayout.html",abstract:!0}).state("backend.org.dashboard",{url:"^/organization/:orgId",templateUrl:"app/organization/views/organizationDashboard.html",controller:"organizationDashboardController",data:{pageTitle:"Organization Dashboard"}}).state("backend.org.people",{url:"/organization/:orgId/people",templateUrl:"app/organization/views/organizationPeople.html",controller:"organizationPeopleController",data:{pageTitle:"Organization People"}}).state("backend.org.collections",{url:"/organization/:orgId/collections",templateUrl:"app/organization/views/organizationCollections.html",controller:"organizationCollectionsController",data:{pageTitle:"Organization Collections"}}).state("backend.org.settings",{url:"/organization/:orgId/settings",templateUrl:"app/organization/views/organizationSettings.html",controller:"organizationSettingsController",data:{pageTitle:"Organization Settings"}}).state("backend.org.billing",{url:"/organization/:orgId/billing",templateUrl:"app/organization/views/organizationBilling.html",controller:"organizationBillingController",data:{pageTitle:"Organization Billing"}}).state("backend.org.vault",{url:"/organization/:orgId/vault",templateUrl:"app/organization/views/organizationVault.html",controller:"organizationVaultController",data:{pageTitle:"Organization Vault"}}).state("backend.org.groups",{url:"/organization/:orgId/groups",templateUrl:"app/organization/views/organizationGroups.html",controller:"organizationGroupsController",data:{pageTitle:"Organization Groups"}}).state("frontend",{templateUrl:"app/views/frontendLayout.html",abstract:!0,data:{authorize:!1}}).state("frontend.login",{templateUrl:"app/accounts/views/accountsLogin.html",controller:"accountsLoginController",params:{returnState:null,email:null,premium:null,org:null},data:{bodyClass:"login-page"}}).state("frontend.login.info",{url:"^/?org&premium&email",templateUrl:"app/accounts/views/accountsLoginInfo.html",data:{pageTitle:"Log In"}}).state("frontend.login.twoFactor",{url:"^/two-step?org&premium&email",templateUrl:"app/accounts/views/accountsLoginTwoFactor.html",data:{pageTitle:"Log In (Two-step)"}}).state("frontend.logout",{url:"^/logout",controller:"accountsLogoutController",data:{authorize:!0}}).state("frontend.passwordHint",{url:"^/password-hint",templateUrl:"app/accounts/views/accountsPasswordHint.html",controller:"accountsPasswordHintController",data:{pageTitle:"Master Password Hint",bodyClass:"login-page"}}).state("frontend.recover",{url:"^/recover",templateUrl:"app/accounts/views/accountsRecover.html",controller:"accountsRecoverController",data:{pageTitle:"Recover Account",bodyClass:"login-page"}}).state("frontend.register",{url:"^/register?org&premium",templateUrl:"app/accounts/views/accountsRegister.html",controller:"accountsRegisterController",params:{returnState:null,email:null,org:null,premium:null},data:{pageTitle:"Register",bodyClass:"register-page"}}).state("frontend.organizationAccept",{url:"^/accept-organization?organizationId&organizationUserId&token&email&organizationName",templateUrl:"app/accounts/views/accountsOrganizationAccept.html",controller:"accountsOrganizationAcceptController",data:{pageTitle:"Accept Organization Invite",bodyClass:"login-page",skipAuthorize:!0}}).state("frontend.verifyEmail",{url:"^/verify-email?userId&token",templateUrl:"app/accounts/views/accountsVerifyEmail.html",controller:"accountsVerifyEmailController",data:{pageTitle:"Verifying Email",bodyClass:"login-page",skipAuthorize:!0}})}]).run(["$rootScope","authService","$state",function(e,t,n){e.$on("$stateChangeSuccess",function(){$("html, body").animate({scrollTop:0},200)}),e.$on("$stateChangeStart",function(o,r,a){if(!r.data||!r.data.authorize){if(r.data&&r.data.skipAuthorize)return;if(!t.isAuthenticated())return;return o.preventDefault(),void n.go("backend.user.vault")}if(!t.isAuthenticated())return o.preventDefault(),t.logOut(),void n.go("frontend.login.info");r.name.indexOf("backend.org.")>-1&&a.orgId&&(e.vaultLogins=e.vaultFolders=null,t.getUserProfile().then(function(e){var t=e.organizations;t&&a.orgId in t&&2===t[a.orgId].status&&2!==t[a.orgId].type||(o.preventDefault(),n.go("backend.user.vault"))}))})}]),angular.module("bit").constant("constants",{rememberedEmailCookieName:"bit.rememberedEmail",encType:{AesCbc256_B64:0,AesCbc128_HmacSha256_B64:1,AesCbc256_HmacSha256_B64:2,Rsa2048_OaepSha256_B64:3,Rsa2048_OaepSha1_B64:4,Rsa2048_OaepSha256_HmacSha256_B64:5,Rsa2048_OaepSha1_HmacSha256_B64:6},orgUserType:{owner:0,admin:1,user:2},orgUserStatus:{invited:0,accepted:1,confirmed:2},twoFactorProvider:{u2f:4,yubikey:3,duo:2,authenticator:0,email:1,remember:5},twoFactorProviderInfo:[{type:0,name:"Authenticator App",description:"Use an authenticator app (such as Authy or Google Authenticator) to generate time-based verification codes.",enabled:!1,active:!0,free:!0,image:"authapp.png",displayOrder:0,priority:1,requiresUsb:!1},{type:3,name:"YubiKey OTP Security Key",description:"Use a YubiKey to access your account. Works with YubiKey 4, 4 Nano, 4C, and NEO devices.",enabled:!1,active:!0,image:"yubico.png",displayOrder:1,priority:3,requiresUsb:!0},{type:2,name:"Duo",description:"Verify with Duo Security using the Duo Mobile app, SMS, phone call, or U2F security key.",enabled:!1,active:!0,image:"duo.png",displayOrder:2,priority:2,requiresUsb:!1},{type:4,name:"FIDO U2F Security Key",description:"Use any FIDO U2F enabled security key to access your account.",enabled:!1,active:!0,image:"fido.png",displayOrder:3,priority:4,requiresUsb:!0},{type:1,name:"Email",description:"Verification codes will be emailed to you.",enabled:!1,active:!0,free:!0,image:"gmail.png",displayOrder:4,priority:0,requiresUsb:!1}],plans:{free:{basePrice:0,noAdditionalSeats:!0,noPayment:!0,upgradeSortOrder:-1},personal:{basePrice:1,annualBasePrice:12,baseSeats:5,seatPrice:1,annualSeatPrice:12,maxAdditionalSeats:5,annualPlanType:"personalAnnually",upgradeSortOrder:1},teams:{basePrice:5,annualBasePrice:60,monthlyBasePrice:8,baseSeats:5,seatPrice:2,annualSeatPrice:24,monthlySeatPrice:2.5,monthPlanType:"teamsMonthly",annualPlanType:"teamsAnnually",upgradeSortOrder:2},enterprise:{seatPrice:3,annualSeatPrice:36,monthlySeatPrice:4,monthPlanType:"enterpriseMonthly",annualPlanType:"enterpriseAnnually",upgradeSortOrder:3}},storageGb:{price:.33,monthlyPrice:.5,yearlyPrice:4},premium:{price:10,yearlyPrice:10}}),angular.module("bit.accounts").controller("accountsLoginController",["$scope","$rootScope","$cookies","apiService","cryptoService","authService","$state","constants","$analytics","$uibModal","$timeout","$window","$filter","toastr",function(e,t,n,o,r,a,i,s,l,c,u,d,p,m){function g(e){for(var t=Object.keys(e),n=null,o=-1,r=0;ro){if(a[0].type===s.twoFactorProvider.u2f&&!u2f.isSupported)continue;n=a[0].type,o=a[0].priority}}return null===n?null:parseInt(n)}function f(e){if(h())return e;for(var t=Object.keys(e),n=[],o=0;o1&&e.sendEmail(!1))}function b(t){w||t.length<1||e.twoFactorProvider!==s.twoFactorProvider.u2f||(console.log("listening for u2f key..."),d.u2f.sign(t[0].appId,t[0].challenge,[{version:t[0].version,keyHandle:t[0].keyHandle}],function(n){if(e.twoFactorProvider===s.twoFactorProvider.u2f)return n.errorCode?(console.log(n.errorCode),void u(function(){b(t)},5===n.errorCode?0:1e3)):void e.twoFactor(JSON.stringify(n))},10))}e.state=i,e.twoFactorProviderConstants=s.twoFactorProvider,e.rememberTwoFactor={checked:!1};var w=!0;e.returnState=i.params.returnState,e.stateEmail=i.params.email,!e.returnState&&i.params.org?e.returnState={name:"backend.user.settingsCreateOrg",params:{plan:i.params.org}}:!e.returnState&&i.params.premium&&(e.returnState={name:"backend.user.settingsPremium"}),!(i.current.name.indexOf("twoFactor")>-1)||e.twoFactorProviders&&e.twoFactorProviders.length||i.go("frontend.login.info",{returnState:e.returnState});var S=n.get(s.rememberedEmailCookieName);S||e.stateEmail?(e.model={email:e.stateEmail||S,rememberEmail:null!==S},u(function(){$("#masterPassword").focus()})):u(function(){$("#email").focus()});var C,k;e.twoFactorProviders=null,e.twoFactorProvider=null,e.login=function(t){e.loginPromise=a.logIn(t.email,t.masterPassword).then(function(o){if(t.rememberEmail){var r=new Date;r.setFullYear(r.getFullYear()+10),n.put(s.rememberedEmailCookieName,t.email,{expires:r})}else n.remove(s.rememberedEmailCookieName);o&&Object.keys(o).length>0?(C=t.email,k=t.masterPassword,e.twoFactorProviders=f(o),e.twoFactorProvider=g(e.twoFactorProviders),l.eventTrack("Logged In To Two-step"),i.go("frontend.login.twoFactor",{returnState:e.returnState}).then(function(){u(function(){$("#code").focus(),y()})})):(l.eventTrack("Logged In"),v()),t.masterPassword=""})},e.twoFactor=function(t){e.twoFactorProvider!==s.twoFactorProvider.email&&e.twoFactorProvider!==s.twoFactorProvider.authenticator||(t=t.replace(" ","")),e.twoFactorPromise=a.logIn(C,k,t,e.twoFactorProvider,e.rememberTwoFactor.checked||!1),e.twoFactorPromise.then(function(){l.eventTrack("Logged In From Two-step"),v()},function(){e.twoFactorProvider===s.twoFactorProvider.u2f&&y()})},e.anotherMethod=function(){c.open({animation:!0,templateUrl:"app/accounts/views/accountsTwoFactorMethods.html",controller:"accountsTwoFactorMethodsController",resolve:{providers:function(){return e.twoFactorProviders}}}).result.then(function(t){e.twoFactorProvider=t,u(function(){$("#code").focus(),y()})})},e.sendEmail=function(t){if(e.twoFactorProvider===s.twoFactorProvider.email)return r.makeKeyAndHash(C,k).then(function(e){return o.twoFactor.sendEmailLogin({email:C,masterPasswordHash:e.hash}).$promise}).then(function(){t&&m.success("Verification email sent to "+e.twoFactorEmail+".")},function(){m.error("Could not send verification email.")})},e.$on("$destroy",function(){w=!0})}]),angular.module("bit.accounts").controller("accountsLogoutController",["$scope","authService","$state","$analytics",function(e,t,n,o){t.logOut(),o.eventTrack("Logged Out"),n.go("frontend.login.info")}]),angular.module("bit.accounts").controller("accountsOrganizationAcceptController",["$scope","$state","apiService","authService","toastr","$analytics",function(e,t,n,o,r,a){if(e.state={name:t.current.name,params:t.params},!(t.params.organizationId&&t.params.organizationUserId&&t.params.token&&t.params.email&&t.params.organizationName))return void t.go("frontend.login.info").then(function(){r.error("Invalid parameters.")});e.$on("$viewContentLoaded",function(){o.isAuthenticated()?(e.accepting=!0,n.organizationUsers.accept({orgId:t.params.organizationId,id:t.params.organizationUserId},{token:t.params.token},function(){a.eventTrack("Accepted Invitation"),t.go("backend.user.vault",null,{location:"replace"}).then(function(){r.success("You can access this organization once an administrator confirms your membership. We'll send an email when that happens.","Invite Accepted",{timeOut:1e4})})},function(){a.eventTrack("Failed To Accept Invitation"),t.go("backend.user.vault",null,{location:"replace"}).then(function(){r.error("Unable to accept invitation.","Error")})})):e.loading=!1})}]),angular.module("bit.accounts").controller("accountsPasswordHintController",["$scope","$rootScope","apiService","$analytics",function(e,t,n,o){e.success=!1,e.submit=function(t){e.submitPromise=n.accounts.postPasswordHint({email:t.email},function(){o.eventTrack("Requested Password Hint"),e.success=!0}).$promise}}]),angular.module("bit.accounts").controller("accountsRecoverController",["$scope","apiService","cryptoService","$analytics",function(e,t,n,o){e.success=!1,e.submit=function(r){var a=r.email.toLowerCase();e.submitPromise=n.makeKeyAndHash(r.email,r.masterPassword).then(function(e){return t.twoFactor.recover({email:a,masterPasswordHash:e.hash,recoveryCode:r.code.replace(/\s/g,"").toLowerCase()}).$promise}).then(function(){o.eventTrack("Recovered 2FA"),e.success=!0})}}]),angular.module("bit.accounts").controller("accountsRegisterController",["$scope","$location","apiService","cryptoService","validationService","$analytics","$state","$timeout",function(e,t,n,o,r,a,i,s){var l=t.search(),c=i.params;e.createOrg=c.org,!c.returnState&&c.org?e.returnState={name:"backend.user.settingsCreateOrg",params:{plan:i.params.org}}:!c.returnState&&c.premium?e.returnState={name:"backend.user.settingsPremium",params:{plan:i.params.org}}:e.returnState=c.returnState,e.success=!1,e.model={email:l.email?l.email:c.email},e.readOnlyEmail=null!==c.email,s(function(){e.model.email?$("#name").focus():$("#email").focus()}),e.registerPromise=null,e.register=function(t){var i=!1;if(e.model.masterPassword.length<8&&(r.addError(t,"MasterPassword","Master password must be at least 8 characters long.",!0),i=!0),e.model.masterPassword!==e.model.confirmMasterPassword&&(r.addError(t,"ConfirmMasterPassword","Master password confirmation does not match.",!0),i=!0),!i){var s,l,c=e.model.email.toLowerCase();e.registerPromise=o.makeKeyAndHash(c,e.model.masterPassword).then(function(e){return s=e,l=o.makeEncKey(e.key),o.makeKeyPair(l.encKey)}).then(function(t){var o={name:e.model.name,email:c,masterPasswordHash:s.hash,masterPasswordHint:e.model.masterPasswordHint,key:l.encKeyEnc,keys:{publicKey:t.publicKey,encryptedPrivateKey:t.privateKeyEnc}};return n.accounts.register(o).$promise},function(e){return r.addError(t,null,"Problem generating keys.",!0),!1}).then(function(t){!1!==t&&(e.success=!0,a.eventTrack("Registered"))})}}}]),angular.module("bit.accounts").controller("accountsTwoFactorMethodsController",["$scope","$uibModalInstance","$analytics","providers","constants",function(e,t,n,o,r){function a(t){for(var n=0;n>8*n&255).toString(16)).substr(-2)}return o}function t(e,t){var n=e.split(" ");if(n&&n.length>1){for(var o="",r=0;r").attr({xmlns:"http://www.w3.org/2000/svg","pointer-events":"none",width:e,height:t}).css({"background-color":n,width:e+"px",height:t+"px"})}function o(e,t,n,o,r){return angular.element('').attr({y:"50%",x:"50%",dy:"0.35em","pointer-events":"auto",fill:t,"font-family":n}).text(e).css({"font-weight":o,"font-size":r+"px"})}return{restrict:"AE",replace:!0,scope:{data:"@"},link:function(r,a,i){function s(){var i=null,s=r.data.toUpperCase();l.charCount>1&&(i=t(s,l.charCount)),i||(i=s.substr(0,l.charCount));var c=o(i,l.textColor,l.fontFamily,l.fontWeight,l.fontSize),u=l.bgColor?l.bgColor:e(s),d=n(l.width,l.height,u);d.append(c);var p=angular.element("
").append(d).html(),m=window.btoa(unescape(encodeURIComponent(p))),g="data:image/svg+xml;base64,"+m,f=angular.element("").attr({src:g,title:r.data});"true"===l.round&&f.css("border-radius","50%"),"true"===l.border&&f.css("border",l.borderStyle),l.class&&f.addClass(l.class),"true"===l.dynamic?(a.empty(),a.append(f)):a.replaceWith(f)}var l={charCount:i.charcount||2,data:i.data,textColor:i.textcolor||"#ffffff",bgColor:i.bgcolor,height:i.avheight||45,width:i.avwidth||45,fontSize:i.fontsize||20,fontWeight:i.fontweight||300,fontFamily:i.fontfamily||"Open Sans, HelveticaNeue-Light, Helvetica Neue Light, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif",round:i.round||"true",dynamic:i.dynamic||"true",class:i.avclass||"",border:i.avborder||"false",borderStyle:i.borderstyle||"3px solid white"};"true"===l.dynamic?r.$watch("data",function(){s()}):s()}}}),angular.module("bit.directives").directive("masterPassword",["cryptoService","authService",function(e,t){return{require:"ngModel",restrict:"A",link:function(n,o,r,a){t.getUserProfile().then(function(t){a.$parsers.unshift(function(n){if(n)return e.makeKey(n,t.email).then(function(t){var o=t.keyB64===e.getKey().keyB64;return a.$setValidity("masterPassword",o),o?n:void 0})}),a.$formatters.unshift(function(n){if(n)return e.makeKey(n,t.email).then(function(t){var o=t.keyB64===e.getKey().keyB64;return a.$setValidity("masterPassword",o),n})})})}}}]),angular.module("bit.directives").directive("pageTitle",["$rootScope","$timeout","appSettings",function(e,t,n){return{link:function(n,o){var r=function(e,n,r,a,i){var s="bitwarden Password Manager";n.data&&n.data.pageTitle&&(s=n.data.pageTitle+" - bitwarden Password Manager"),t(function(){o.text(s)})};e.$on("$stateChangeStart",r)}}}]),angular.module("bit.directives").directive("passwordMeter",function(){return{template:'
{{value}}%
',restrict:"A",scope:{password:"=passwordMeter",username:"=passwordMeterUsername",outerClass:"@?"},link:function(e){var t=function(e,t){if(!t||t===e)return 0;var n=t.length;return e&&""!==e&&(-1!==e.indexOf(t)&&(n-=15),-1!==t.indexOf(e)&&(n-=e.length)),t.length>0&&t.length<=4?n+=t.length:t.length>=5&&t.length<=7?n+=6:t.length>=8&&t.length<=15?n+=12:t.length>=16&&(n+=18),t.match(/[a-z]/)&&(n+=1),t.match(/[A-Z]/)&&(n+=5),t.match(/\d/)&&(n+=5),t.match(/.*\d.*\d.*\d/)&&(n+=5),t.match(/[!,@,#,$,%,^,&,*,?,_,~]/)&&(n+=5),t.match(/.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~]/)&&(n+=5),t.match(/(?=.*[a-z])(?=.*[A-Z])/)&&(n+=2),t.match(/(?=.*\d)(?=.*[a-z])(?=.*[A-Z])/)&&(n+=2),t.match(/(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!,@,#,$,%,^,&,*,?,_,~])/)&&(n+=2),n=Math.round(2*n),Math.max(0,Math.min(100,n))},n=function(e){switch(Math.round(e/33)){case 0:case 1:return"danger";case 2:return"warning";case 3:return"success"}},o=function(e){e.value=t(e.username,e.password),e.valueClass=n(e.value)};e.$watch("password",function(){o(e)}),e.$watch("username",function(){o(e)})}}}),angular.module("bit.directives").directive("passwordViewer",function(){return{restrict:"A",link:function(e,t,n){var o=n.passwordViewer;o&&(t.onclick=function(e){},t.on("click",function(e){var n=$(o);n&&"password"===n.attr("type")?(t.removeClass("fa-eye").addClass("fa-eye-slash"),n.attr("type","text")):n&&"text"===n.attr("type")&&(t.removeClass("fa-eye-slash").addClass("fa-eye"),n.attr("type","password"))}))}}}),angular.module("bit.directives").directive("stopClick",function(){return function(e,t,n){$(t).click(function(e){e.preventDefault()})}}),angular.module("bit.directives").directive("stopProp",function(){return function(e,t,n){$(t).click(function(e){e.stopPropagation()})}}),angular.module("bit.directives").directive("totp",["$timeout","$q",function(e,t){return{template:'
{{sec}}{{codeFormatted}}
',restrict:"A",scope:{key:"=totp"},link:function(n){var o=null,r=function(){var e="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",n=function(e,t,n){return t+1>=e.length&&(e=Array(t+1-e.length).join(n)+e),e},o=function(e){return(e<15.5?"0":"")+Math.round(e).toString(16)},r=function(e){return parseInt(e,16)},a=function(e){for(var t=new Uint8Array(e.length/2),n=0;n>>4).toString(16)),n.push((15&t[o]).toString(16));return n.join("")},s=function(t){t=t.toUpperCase();var o,r="";for(o=0;o768}),e.addLogin=function(){e.$broadcast("vaultAddLogin")},e.addFolder=function(){e.$broadcast("vaultAddFolder")},e.addOrganizationLogin=function(){e.$broadcast("organizationVaultAddLogin")},e.addOrganizationCollection=function(){e.$broadcast("organizationCollectionsAdd")},e.inviteOrganizationUser=function(){e.$broadcast("organizationPeopleInvite")},e.addOrganizationGroup=function(){e.$broadcast("organizationGroupsAdd")},e.updateKey=function(){l.open({animation:!0,templateUrl:"app/settings/views/settingsUpdateKey.html",controller:"settingsUpdateKeyController"})},e.verifyEmail=function(){e.sendingVerify||(e.sendingVerify=!0,c.accounts.verifyEmail({},null).$promise.then(function(){r.success("Verification email sent."),e.sendingVerify=!1,e.verifyEmailSent=!0}).catch(function(){r.success("Verification email failed."),e.sendingVerify=!1}))},e.updateBrowser=function(){a.open("https://browser-update.org/update.html","_blank")};var d,p,m,g={scrollbarWidth:function(){if(!d){var e=$("body");e.addClass("bit-position-body-scrollbar-measure"),d=a.innerWidth-e[0].clientWidth,d=isFinite(d)?d:0,e.removeClass("bit-position-body-scrollbar-measure")}return d},scrollbarInfo:function(){return{width:g.scrollbarWidth(),visible:i.height()>$(a).height()}}};$(window).on("show.bs.dropdown",function(e){var t=m=$(e.target),n=t.data("appendTo");if(!n)return!0;p=t.find(".dropdown-menu"),$(n).append(p.detach());var o=t.offset(),r={display:"block",top:o.top+t.outerHeight()-("body"!==n?$(window).scrollTop():0)};if(p.hasClass("dropdown-menu-right")){var i=g.scrollbarInfo(),s=0;i.visible&&i.width&&(s=i.width),r.right=a.innerWidth-s-(o.left+t.prop("offsetWidth"))+"px",r.left="auto"}else r.left=o.left+"px",r.right="auto";p.css(r)}),$(window).on("hide.bs.dropdown",function(e){if(!p)return!0;$(e.target).append(p.detach()),p.hide(),p=null,m=null}),e.$on("removeAppendedDropdownMenu",function(e,t){if(!p&&!m)return!0;m.append(p.detach()),p.hide(),p=null,m=null})}]),angular.module("bit.global").controller("paidOrgRequiredController",["$scope","$state","$uibModalInstance","$analytics","$uibModalStack","orgId","constants","authService",function(e,t,n,o,r,a,i,s){o.eventTrack("paidOrgRequiredController",{category:"Modal"}),s.getUserProfile().then(function(t){e.admin=t.organizations[a].type!==i.orgUserType.user}),e.go=function(){e.admin&&(o.eventTrack("Get Paid Org"),t.go("backend.org.billing",{orgId:a}).then(function(){r.dismissAll()}))},e.close=function(){n.dismiss("close")}}]),angular.module("bit.global").controller("premiumRequiredController",["$scope","$state","$uibModalInstance","$analytics","$uibModalStack",function(e,t,n,o,r){o.eventTrack("premiumRequiredController",{category:"Modal"}),e.go=function(){o.eventTrack("Get Premium"),t.go("backend.user.settingsPremium").then(function(){r.dismissAll()})},e.close=function(){n.dismiss("close")}}]),angular.module("bit.global").controller("sideNavController",["$scope","$state","authService","toastr","$analytics","constants",function(e,t,n,o,r,a){e.$state=t,e.params=t.params,e.orgs=[],e.name="",n.getUserProfile().then(function(n){if(e.name=n.extended&&n.extended.name?n.extended.name:n.email,n.organizations)if(t.includes("backend.org")&&t.params.orgId in n.organizations)e.orgProfile=n.organizations[t.params.orgId];else{var o=[];for(var r in n.organizations)n.organizations.hasOwnProperty(r)&&(n.organizations[r].enabled||n.organizations[r].type<2)&&o.push(n.organizations[r]);e.orgs=o}}),e.viewOrganization=function(e){if(e.type===a.orgUserType.user)return void o.error("You cannot manage this organization.");r.eventTrack("View Organization From Side Nav"),t.go("backend.org.dashboard",{orgId:e.id})},e.searchVault=function(){t.go("backend.user.vault")},e.searchOrganizationVault=function(){t.go("backend.org.vault",{orgId:t.params.orgId})},e.isOrgOwner=function(e){return e&&e.type===a.orgUserType.owner}}]),angular.module("bit.global").controller("topNavController",["$scope",function(e){e.toggleControlSidebar=function(){var e=$("body");e.hasClass("control-sidebar-open")?e.removeClass("control-sidebar-open"):e.addClass("control-sidebar-open")}}]),angular.module("bit.organization").controller("organizationBillingAdjustSeatsController",["$scope","$state","$uibModalInstance","apiService","$analytics","toastr","add",function(e,t,n,o,r,a,i){r.eventTrack("organizationBillingAdjustSeatsController",{category:"Modal"}),e.add=i,e.seatAdjustment=0,e.submit=function(){var s={seatAdjustment:e.seatAdjustment};i||(s.seatAdjustment*=-1),e.submitPromise=o.organizations.putSeat({id:t.params.orgId},s).$promise.then(function(t){i?(r.eventTrack("Added Seats"),a.success("You have added "+e.seatAdjustment+" seats.")):(r.eventTrack("Removed Seats"),a.success("You have removed "+e.seatAdjustment+" seats.")),n.close()})},e.close=function(){n.dismiss("cancel")}}]),angular.module("bit.organization").controller("organizationBillingAdjustStorageController",["$scope","$state","$uibModalInstance","apiService","$analytics","toastr","add",function(e,t,n,o,r,a,i){r.eventTrack("organizationBillingAdjustStorageController",{category:"Modal"}),e.add=i,e.storageAdjustment=0,e.submit=function(){var s={storageGbAdjustment:e.storageAdjustment};i||(s.storageGbAdjustment*=-1),e.submitPromise=o.organizations.putStorage({id:t.params.orgId},s).$promise.then(function(t){i?(r.eventTrack("Added Organization Storage"),a.success("You have added "+e.storageAdjustment+" GB.")):(r.eventTrack("Removed Organization Storage"),a.success("You have removed "+e.storageAdjustment+" GB.")),n.close()})},e.close=function(){n.dismiss("cancel")}}]),angular.module("bit.organization").controller("organizationBillingChangePaymentController",["$scope","$state","$uibModalInstance","apiService","stripe","$analytics","toastr","existingPaymentMethod",function(e,t,n,o,r,a,i,s){a.eventTrack("organizationBillingChangePaymentController",{category:"Modal"}),e.existingPaymentMethod=s,e.paymentMethod="card",e.showPaymentOptions=!1,e.card={},e.submit=function(){e.submitPromise=r.card.createToken(e.card).then(function(e){var n={paymentToken:e.id};return o.organizations.putPayment({id:t.params.orgId},n).$promise},function(e){throw e.message}).then(function(t){e.card=null,s?(a.eventTrack("Changed Organization Payment Method"),i.success("You have changed your payment method.")):(a.eventTrack("Added Organization Payment Method"),i.success("You have added a payment method.")),n.close()})},e.close=function(){n.dismiss("cancel")}}]),angular.module("bit.organization").controller("organizationBillingChangePlanController",["$scope","$state","apiService","$uibModalInstance","toastr","$analytics",function(e,t,n,o,r,a){a.eventTrack("organizationBillingChangePlanController",{category:"Modal"}),e.submit=function(){},e.close=function(){o.dismiss("cancel")}}]),angular.module("bit.organization").controller("organizationBillingController",["$scope","apiService","$state","$uibModal","toastr","$analytics",function(e,t,n,o,r,a){function i(){t.organizations.getBilling({id:n.params.orgId},function(t){e.loading=!1,e.noSubscription=0===t.PlanType;var n=0;if(e.plan={name:t.Plan,type:t.PlanType,seats:t.Seats},e.storage=null,e&&t.MaxStorageGb&&(e.storage={currentGb:t.StorageGb||0,maxGb:t.MaxStorageGb,currentName:t.StorageName||"0 GB"},e.storage.percentage=+(e.storage.currentGb/e.storage.maxGb*100).toFixed(2)),e.subscription=null,t.Subscription&&(e.subscription={trialEndDate:t.Subscription.TrialEndDate,cancelledDate:t.Subscription.CancelledDate,status:t.Subscription.Status,cancelled:t.Subscription.Cancelled,markedForCancel:!t.Subscription.Cancelled&&t.Subscription.CancelAtEndDate}),e.nextInvoice=null,t.UpcomingInvoice&&(e.nextInvoice={date:t.UpcomingInvoice.Date,amount:t.UpcomingInvoice.Amount}),t.Subscription&&t.Subscription.Items)for(e.subscription.items=[],n=0;n=s},e.submit=function(i){var s=r.encryptCollection(i,t.params.orgId);if(e.useGroups){s.groups=[];for(var l in e.selectedGroups)if(e.selectedGroups.hasOwnProperty(l))for(var c=0;c0&&(n[0].name=t.name)})},e.users=function(e){o.open({animation:!0,templateUrl:"app/organization/views/organizationCollectionsUsers.html",controller:"organizationCollectionsUsersController",size:"lg",resolve:{collection:function(){return e}}}).result.then(function(){})},e.groups=function(e){o.open({animation:!0,templateUrl:"app/organization/views/organizationCollectionsGroups.html",controller:"organizationCollectionsGroupsController",resolve:{collection:function(){return e}}}).result.then(function(){})},e.delete=function(o){confirm("Are you sure you want to delete this collection ("+o.name+")?")&&n.collections.del({orgId:t.params.orgId,id:o.id},function(){var t=e.collections.indexOf(o);t>-1&&e.collections.splice(t,1),s.eventTrack("Deleted Collection"),i.success(o.name+" has been deleted.","Collection Deleted")},function(){i.error(o.name+" was not able to be deleted.","Error")})}}]),angular.module("bit.organization").controller("organizationCollectionsEditController",["$scope","$state","$uibModalInstance","apiService","cipherService","$analytics","id","authService",function(e,t,n,o,r,a,i,s){a.eventTrack("organizationCollectionsEditController",{category:"Modal"});var l=0;e.collection={},e.groups=[],e.selectedGroups={},e.loading=!0,e.useGroups=!1,n.opened.then(function(){return o.collections.getDetails({orgId:t.params.orgId,id:i}).$promise}).then(function(t){e.collection=r.decryptCollection(t);var n={};if(t.Groups)for(var o=0;o=l},e.submit=function(s){var l=r.encryptCollection(s,t.params.orgId);if(e.useGroups){l.groups=[];for(var c in e.selectedGroups)if(e.selectedGroups.hasOwnProperty(c))for(var u=0;u-1&&e.users.splice(t,1)},function(){s.error("Unable to remove user.","Error")})},e.close=function(){n.dismiss("cancel")}}]),angular.module("bit.organization").controller("organizationDashboardController",["$scope","authService","$state",function(e,t,n){e.$on("$viewContentLoaded",function(){t.getUserProfile().then(function(t){t.organizations&&(e.orgProfile=t.organizations[n.params.orgId])})})}]),angular.module("bit.organization").controller("organizationDeleteController",["$scope","$state","apiService","$uibModalInstance","cryptoService","authService","toastr","$analytics",function(e,t,n,o,r,a,i,s){s.eventTrack("organizationDeleteController",{category:"Modal"}),e.submit=function(){e.submitPromise=r.hashPassword(e.masterPassword).then(function(e){return n.organizations.del({id:t.params.orgId},{masterPasswordHash:e}).$promise}).then(function(){return o.dismiss("cancel"),a.removeProfileOrganization(t.params.orgId),s.eventTrack("Deleted Organization"),t.go("backend.user.vault")}).then(function(){i.success("This organization and all associated data has been deleted.","Organization Deleted")})},e.close=function(){o.dismiss("cancel")}}]),angular.module("bit.organization").controller("organizationGroupsAddController",["$scope","$state","$uibModalInstance","apiService","cipherService","$analytics",function(e,t,n,o,r,a){a.eventTrack("organizationGroupsAddController",{category:"Modal"}),e.collections=[],e.selectedCollections={},e.loading=!0,n.opened.then(function(){return o.collections.listOrganization({orgId:t.params.orgId}).$promise}).then(function(n){e.collections=r.decryptCollections(n.Data,t.params.orgId,!0),e.loading=!1}),e.toggleCollectionSelectionAll=function(t){var n={};if(t.target.checked)for(var o=0;o0&&(n[0].name=t.name)})},e.users=function(e){o.open({animation:!0,templateUrl:"app/organization/views/organizationGroupsUsers.html",controller:"organizationGroupsUsersController",size:"lg",resolve:{group:function(){return e}}}).result.then(function(){})},e.delete=function(o){confirm("Are you sure you want to delete this group ("+o.name+")?")&&n.groups.del({orgId:t.params.orgId,id:o.id},function(){var t=e.groups.indexOf(o);t>-1&&e.groups.splice(t,1),i.eventTrack("Deleted Group"),a.success(o.name+" has been deleted.","Group Deleted")},function(){a.error(o.name+" was not able to be deleted.","Error")})}}]),angular.module("bit.organization").controller("organizationGroupsEditController",["$scope","$state","$uibModalInstance","apiService","cipherService","$analytics","id",function(e,t,n,o,r,a,i){a.eventTrack("organizationGroupsEditController",{category:"Modal"}),e.collections=[],e.selectedCollections={},e.loading=!0,n.opened.then(function(){return o.groups.getDetails({orgId:t.params.orgId,id:i}).$promise}).then(function(n){e.group={id:i,name:n.Name,externalId:n.ExternalId,accessAll:n.AccessAll};var r={};if(n.Collections)for(var a=0;a-1&&e.users.splice(t,1)},function(){i.error("Unable to remove user.","Error")})},e.close=function(){n.dismiss("cancel")}}]),angular.module("bit.organization").controller("organizationPeopleController",["$scope","$state","$uibModal","cryptoService","apiService","authService","toastr","$analytics",function(e,t,n,o,r,a,i,s){function l(){r.organizationUsers.list({orgId:t.params.orgId},function(t){for(var n=[],o=0;o-1&&e.users.splice(t,1)},function(){i.error("Unable to remove user.","Error")})},e.confirm=function(e){r.users.getPublicKey({id:e.userId},function(n){var a=o.getOrgKey(t.params.orgId);if(!a)return void i.error("Unable to confirm user.","Error");var l=o.rsaEncrypt(a.key,n.PublicKey);r.organizationUsers.confirm({orgId:t.params.orgId,id:e.id},{key:l},function(){e.status=2,s.eventTrack("Confirmed User"),i.success(e.email+" has been confirmed.","User Confirmed")},function(){i.error("Unable to confirm user.","Error")})},function(){i.error("Unable to confirm user.","Error")})},e.$on("organizationPeopleInvite",function(t,n){e.invite()}),e.invite=function(){n.open({animation:!0,templateUrl:"app/organization/views/organizationPeopleInvite.html",controller:"organizationPeopleInviteController"}).result.then(function(){l()})},e.edit=function(e){n.open({animation:!0,templateUrl:"app/organization/views/organizationPeopleEdit.html",controller:"organizationPeopleEditController",resolve:{orgUser:function(){return e}}}).result.then(function(){l()})},e.groups=function(e){n.open({animation:!0,templateUrl:"app/organization/views/organizationPeopleGroups.html",controller:"organizationPeopleGroupsController",resolve:{orgUser:function(){return e}}}).result.then(function(){})}}]),angular.module("bit.organization").controller("organizationPeopleEditController",["$scope","$state","$uibModalInstance","apiService","cipherService","orgUser","$analytics",function(e,t,n,o,r,a,i){i.eventTrack("organizationPeopleEditController",{category:"Modal"}),e.loading=!0,e.collections=[],e.selectedCollections={},n.opened.then(function(){o.collections.listOrganization({orgId:t.params.orgId},function(n){e.collections=r.decryptCollections(n.Data,t.params.orgId,!0),e.loading=!1}),o.organizationUsers.get({orgId:t.params.orgId,id:a.id},function(t){var n={};if(t&&t.Collections)for(var o=0;o-1&&e.login.attachments.splice(t,1)},function(){l.error("Cannot delete attachment."),n.loading=!1}))},e.close=function(){n.dismiss("cancel")},e.$on("modal.closing",function(t,o,r){u||(t.preventDefault(),u=!0,n.close(!!e.login.attachments&&e.login.attachments.length>0))})}]),angular.module("bit.organization").controller("organizationVaultController",["$scope","apiService","cipherService","$analytics","$q","$state","$localStorage","$uibModal","$filter","authService",function(e,t,n,o,r,a,i,s,l,c){e.logins=[],e.collections=[],e.loading=!0,e.$on("$viewContentLoaded",function(){var o=t.collections.listOrganization({orgId:a.params.orgId},function(t){for(var o=([{id:null,name:"Unassigned",collapsed:i.collapsedOrgCollections&&"unassigned"in i.collapsedOrgCollections}]),r=0;r-1:null===e.id}},e.collectionSort=function(e){return e.id?e.name.toLowerCase():""},e.collapseExpand=function(e){i.collapsedOrgCollections||(i.collapsedOrgCollections={});var t=e.id||"unassigned";t in i.collapsedOrgCollections?delete i.collapsedOrgCollections[t]:i.collapsedOrgCollections[t]=!0},e.editLogin=function(t){s.open({animation:!0,templateUrl:"app/vault/views/vaultEditLogin.html",controller:"organizationVaultEditLoginController",resolve:{loginId:function(){return t.id},orgId:function(){return a.params.orgId}}}).result.then(function(n){if("edit"===n.action)t.name=n.data.name,t.username=n.data.username;else if("delete"===n.action){var o=e.logins.indexOf(t);o>-1&&e.logins.splice(o,1)}})},e.$on("organizationVaultAddLogin",function(t,n){e.addLogin()}),e.addLogin=function(){s.open({animation:!0,templateUrl:"app/vault/views/vaultAddLogin.html",controller:"organizationVaultAddLoginController",resolve:{orgId:function(){return a.params.orgId}}}).result.then(function(t){e.logins.push(t)})},e.editCollections=function(t){s.open({animation:!0,templateUrl:"app/organization/views/organizationVaultLoginCollections.html",controller:"organizationVaultLoginCollectionsController",resolve:{cipher:function(){return t},collections:function(){return e.collections}}}).result.then(function(e){e.collectionIds&&(t.collectionIds=e.collectionIds)})},e.attachments=function(e){c.getUserProfile().then(function(t){return!!t.organizations[e.organizationId].maxStorageGb}).then(function(t){if(!t)return void s.open({animation:!0,templateUrl:"app/views/paidOrgRequired.html",controller:"paidOrgRequiredController",resolve:{orgId:function(){return e.organizationId}}});s.open({animation:!0,templateUrl:"app/vault/views/vaultAttachments.html",controller:"organizationVaultAttachmentsController",resolve:{loginId:function(){return e.id}}}).result.then(function(t){e.hasAttachments=t})})},e.removeLogin=function(e,n){if(confirm("Are you sure you want to remove this login ("+e.name+") from the collection ("+n.name+") ?")){for(var r={collectionIds:[]},a=0;a-1&&e.logins.splice(t,1)})}}]),angular.module("bit.organization").controller("organizationVaultEditLoginController",["$scope","apiService","$uibModalInstance","cryptoService","cipherService","passwordService","loginId","$analytics","orgId","$uibModal",function(e,t,n,o,r,a,i,s,l,c){function u(e){var t=$(e.trigger).parent().prev();"text"===t.attr("type")&&t.select()}s.eventTrack("organizationVaultEditLoginController",{category:"Modal"}),e.login={},e.hideFolders=e.hideFavorite=e.fromOrg=!0,t.logins.getAdmin({id:i},function(t){e.login=r.decryptLogin(t),e.useTotp=e.login.organizationUseTotp}),e.save=function(o){var a=r.encryptLogin(o);e.savePromise=t.logins.putAdmin({id:i},a,function(e){s.eventTrack("Edited Organization Login");var t=r.decryptLogin(e);n.close({action:"edit",data:t})}).$promise},e.generatePassword=function(){e.login.password&&!confirm("Are you sure you want to overwrite the current password?")||(s.eventTrack("Generated Password From Edit"),e.login.password=a.generatePassword({length:12,special:!0}))},e.clipboardSuccess=function(e){e.clearSelection(),u(e)},e.clipboardError=function(e,t){t&&u(e),alert("Your web browser does not support easy clipboard copying. Copy it manually instead.")},e.delete=function(){confirm("Are you sure you want to delete this login ("+e.login.name+")?")&&t.ciphers.delAdmin({id:e.login.id},function(){s.eventTrack("Deleted Organization Login From Edit"),n.close({action:"delete",data:e.login.id})})},e.close=function(){n.dismiss("cancel")},e.showUpgrade=function(){c.open({animation:!0,templateUrl:"app/views/paidOrgRequired.html",controller:"paidOrgRequiredController",resolve:{orgId:function(){return l}}})}}]),angular.module("bit.organization").controller("organizationVaultLoginCollectionsController",["$scope","apiService","$uibModalInstance","cipherService","cipher","$analytics","collections",function(e,t,n,o,r,a,i){a.eventTrack("organizationVaultLoginCollectionsController",{category:"Modal"}),e.cipher={},e.collections=[],e.selectedCollections={},n.opened.then(function(){for(var t=[],n=0;n-1&&e.model.organizations.splice(n,1),r.success("You have left the organization."),i()})},function(e){r.error("Unable to leave this organization."),i()})},e.sessions=function(){n.open({animation:!0,templateUrl:"app/settings/views/settingsSessions.html",controller:"settingsSessionsController"})},e.delete=function(){n.open({animation:!0,templateUrl:"app/settings/views/settingsDelete.html",controller:"settingsDeleteController"})}}]),angular.module("bit.settings").controller("settingsCreateOrganizationController",["$scope","$state","apiService","cryptoService","toastr","$analytics","authService","stripe","constants",function(e,t,n,o,r,a,i,s,l){e.plans=l.plans,e.storageGb=l.storageGb,e.model={plan:"free",additionalSeats:0,interval:"year",ownedBusiness:!1,additionalStorageGb:null},e.totalPrice=function(){return"month"===e.model.interval?(e.model.additionalSeats||0)*(e.plans[e.model.plan].monthlySeatPrice||0)+(e.model.additionalStorageGb||0)*e.storageGb.monthlyPrice+(e.plans[e.model.plan].monthlyBasePrice||0):(e.model.additionalSeats||0)*(e.plans[e.model.plan].annualSeatPrice||0)+(e.model.additionalStorageGb||0)*e.storageGb.yearlyPrice+(e.plans[e.model.plan].annualBasePrice||0)},e.changedPlan=function(){e.plans[e.model.plan].hasOwnProperty("monthPlanType")&&(e.model.interval="year"),e.plans[e.model.plan].noAdditionalSeats?e.model.additionalSeats=0:e.model.additionalSeats||e.plans[e.model.plan].baseSeats||e.plans[e.model.plan].noAdditionalSeats||(e.model.additionalSeats=1)},e.changedBusiness=function(){e.model.ownedBusiness&&(e.model.plan="teams")},e.submit=function(l){function c(e){a.eventTrack("Created Organization"),i.addProfileOrganizationOwner(e,d),i.refreshAccessToken().then(function(){u(e.Id)},function(){u(e.Id)})}function u(e){t.go("backend.org.dashboard",{orgId:e}).then(function(){r.success("Your new organization is ready to go!","Organization Created")})}var d=o.makeShareKeyCt();if("free"===l.plan){var p={name:l.name,planType:l.plan,key:d,billingEmail:l.billingEmail};e.submitPromise=n.organizations.post(p).$promise.then(c)}else e.submitPromise=s.card.createToken(l.card).then(function(t){var o={name:l.name,planType:"month"===l.interval?e.plans[l.plan].monthPlanType:e.plans[l.plan].annualPlanType,key:d,paymentToken:t.id,additionalSeats:l.additionalSeats,additionalStorageGb:l.additionalStorageGb,billingEmail:l.billingEmail,businessName:l.ownedBusiness?l.businessName:null};return n.organizations.post(o).$promise},function(e){throw e.message}).then(c)}}]),angular.module("bit.settings").controller("settingsDeleteController",["$scope","$state","apiService","$uibModalInstance","cryptoService","authService","toastr","$analytics",function(e,t,n,o,r,a,i,s){s.eventTrack("settingsDeleteController",{category:"Modal"}),e.submit=function(l){e.submitPromise=r.hashPassword(l.masterPassword).then(function(e){return n.accounts.postDelete({masterPasswordHash:e}).$promise}).then(function(){return o.dismiss("cancel"),a.logOut(),s.eventTrack("Deleted Account"),t.go("frontend.login.info")}).then(function(){i.success("Your account has been closed and all associated data has been deleted.","Account Deleted")})},e.close=function(){o.dismiss("cancel")}}]),angular.module("bit.settings").controller("settingsDomainsController",["$scope","$state","apiService","toastr","$analytics","$uibModal",function(e,t,n,o,r,a){e.globalEquivalentDomains=[],e.equivalentDomains=[],n.settings.getDomains({},function(t){var n;if(t.EquivalentDomains)for(n=0;n

bitwarden two-step login recovery code:

'+e.code+'

'+new Date+"

"),t.print(),t.close()}},e.close=function(){n.close()}}]),angular.module("bit.settings").controller("settingsTwoStepU2fController",["$scope","apiService","$uibModalInstance","cryptoService","authService","toastr","$analytics","constants","$timeout","$window",function(e,t,n,o,r,a,i,s,l,c){function u(){confirm("Are you sure you want to disable the U2F provider?")&&(e.submitPromise=t.twoFactor.disable({},{masterPasswordHash:p,type:s.twoFactorProvider.u2f},function(t){i.eventTrack("Disabled Two-step U2F"),a.success("U2F has been disabled."),e.enabled=t.Enabled,e.close()}).$promise)}function d(){e.submitPromise=t.twoFactor.putU2f({},{deviceResponse:e.deviceResponse,masterPasswordHash:p},function(t){i.eventTrack("Enabled Two-step U2F"),e.enabled=t.Enabled,e.challenge=null,e.deviceResponse=null,e.deviceError=!1}).$promise}i.eventTrack("settingsTwoStepU2fController",{category:"Modal"});var p,m=!1;e.deviceResponse=null,e.deviceListening=!1,e.deviceError=!1,l(function(){$("#masterPassword").focus()}),e.auth=function(n){e.authPromise=o.hashPassword(n.masterPassword).then(function(e){return p=e,t.twoFactor.getU2f({},{masterPasswordHash:p}).$promise}).then(function(t){return e.enabled=t.Enabled,e.challenge=t.Challenge,e.authed=!0,e.readDevice()})},e.readDevice=function(){m||e.enabled||(console.log("listening for key..."),e.deviceResponse=null,e.deviceError=!1,e.deviceListening=!0,c.u2f.register(e.challenge.AppId,[{version:e.challenge.Version,challenge:e.challenge.Challenge}],[],function(t){return e.deviceListening=!1,5===t.errorCode?void e.readDevice():t.errorCode?(l(function(){e.deviceError=!0}),void console.log("error: "+t.errorCode)):void l(function(){e.deviceResponse=JSON.stringify(t)})},10))},e.submit=function(){if(e.enabled)return void u();d()},e.close=function(){m=!0,n.close(e.enabled)},e.$on("modal.closing",function(t,n,o){m||(t.preventDefault(),e.close())})}]),angular.module("bit.settings").controller("settingsTwoStepYubiController",["$scope","apiService","$uibModalInstance","cryptoService","authService","toastr","$analytics","constants","$timeout",function(e,t,n,o,r,a,i,s,l){function c(t){e.enabled=t.Enabled,e.updateModel={key1:{key:t.Key1,existingKey:u(t.Key1,"*",44)},key2:{key:t.Key2,existingKey:u(t.Key2,"*",44)},key3:{key:t.Key3,existingKey:u(t.Key3,"*",44)},nfc:!0===t.Nfc||!t.Enabled}}function u(e,t,n){if(!e||!t||e.length>=n)return e;for(var o=(n-e.length)/t.length,r=0;r0},a=t.Data||t;return a&&(o.name=r.decryptProperty(a.Name,n,!1),o.username=r.decryptProperty(a.Username,n,!0),o.password=r.decryptProperty(a.Password,n,!0)),o},r.decryptAttachment=function(t,n){if(!n)throw"encryptedAttachment is undefined or null";return{id:n.Id,url:n.Url,fileName:e.decrypt(n.FileName,t),size:n.SizeName}},r.downloadAndDecryptAttachment=function(t,r,a){var i=n.defer(),s=new XMLHttpRequest;return s.open("GET",r.url,!0),s.responseType="arraybuffer",s.onload=function(n){if(!s.response)return void i.reject("No response");e.decryptFromBytes(s.response,t).then(function(e){if(a){var t=new Blob([e]);if(o.navigator.msSaveOrOpenBlob)o.navigator.msSaveBlob(t,r.fileName);else{var n=o.document.createElement("a");n.href=o.URL.createObjectURL(t),n.download=r.fileName,o.document.body.appendChild(n),n.click(),o.document.body.removeChild(n)}}i.resolve(new Uint8Array(e))})},s.send(null),i.promise},r.decryptFolders=function(e){if(!e)throw"encryptedFolders is undefined or null";for(var t=[],n=0;n104857600)return void r.reject("Maximum file size is 100 MB.");var a=new FileReader;return a.readAsArrayBuffer(o),a.onload=function(n){e.encryptToBytes(n.target.result,t).then(function(n){r.resolve({fileName:e.encrypt(o.name,t),data:new Uint8Array(n),size:o.size})})},a.onerror=function(e){r.reject("Error reading file.")},r.promise},r.encryptFolders=function(e,t){if(!e)throw"unencryptedFolders is undefined or null";for(var n=[],o=0;o2){var d=forge.util.decode64(a[2]),m=l(s+c,n.macKey,!1);if(!u(n.macKey,d,m))return console.error("MAC failed."),null}var g=forge.util.createBuffer(c),f=forge.cipher.createDecipher("AES-CBC",n.encKey);return f.start({iv:s}),f.update(g),f.finish(),o=o||"utf8","utf8"===o?f.output.toString("utf8"):f.output.getBytes()}catch(e){throw console.error("Caught unhandled error in decrypt: "+e),e}},k.decryptFromBytes=function(e,n){try{if(!e)throw"no encBuf.";var o=new Uint8Array(e),r=o[0],a=null,i=null,l=null;switch(r){case t.encType.AesCbc128_HmacSha256_B64:case t.encType.AesCbc256_HmacSha256_B64:if(o.length<=49)return console.error("Enc type ("+r+") not valid."),null;i=h(o,1,17),l=h(o,17,49),a=h(o,49);break;case t.encType.AesCbc256_B64:if(o.length<=17)return console.error("Enc type ("+r+") not valid."),null;i=h(o,1,17),a=h(o,17);break;default:return console.error("Enc type ("+r+") not supported."),null}return s(r,a.buffer,i.buffer,l?l.buffer:null,n)}catch(e){throw console.error("Caught unhandled error in decryptFromBytes: "+e),e}},k.rsaDecrypt=function(e,n,o){if(n=n||k.getPrivateKey(),o=o||k.getEncKey(),!n)throw"Private key unavailable.";var r,a,i=e.split(".");if(1===i.length)r=t.encType.Rsa2048_OaepSha256_B64,a=[i[0]];else if(2===i.length)try{r=parseInt(i[0]),a=i[1].split("|")}catch(e){return null}switch(r){case t.encType.Rsa2048_OaepSha256_B64:case t.encType.Rsa2048_OaepSha1_B64:if(1!==a.length)return null;break;case t.encType.Rsa2048_OaepSha256_HmacSha256_B64:case t.encType.Rsa2048_OaepSha1_HmacSha256_B64:if(2!==a.length)return null;break;default:return null}var s=forge.util.decode64(a[0]);if(o&&o.macKey&&a.length>1){var c=forge.util.decode64(a[1]),d=l(s,o.macKey,!1);if(!u(o.macKey,c,d))return console.error("MAC failed."),null}var p;if(r===t.encType.Rsa2048_OaepSha256_B64||r===t.encType.Rsa2048_OaepSha256_HmacSha256_B64)p=forge.md.sha256.create();else{if(r!==t.encType.Rsa2048_OaepSha1_B64&&r!==t.encType.Rsa2048_OaepSha1_HmacSha256_B64)throw"encType unavailable.";p=forge.md.sha1.create()}return n.decrypt(s,"RSA-OAEP",{md:p})},p.prototype.getBuffers=function(){if(this.keyBuf)return this.keyBuf;var e=m(this.keyB64),t={key:e.buffer};return this.macKey?(t.encKey=h(e,0,e.length/2).buffer,t.macKey=h(e,e.length/2).buffer):(t.encKey=e.buffer,t.macKey=null),this.keyBuf=t,this.keyBuf},k}]),angular.module("bit.services").factory("importService",function(){function e(e,t){if(!e||""===e)return!1;e=e.trim().toLowerCase();for(var n=0;n=0&&(e="http://"+e),n(e)}function n(e){return e.length>1e3?e.substring(0,1e3):e}function o(e){if(e.errors&&e.errors.length)for(var t=0;t label");if(p.length)for(u=0;u card");if(g.length)for(u=0;u field");for(d=0;d notes");for(d=0;d label_id"),p.length){var k=$(p[0]).text(),P=c[k];null!==k&&""!==k&&null!==P&&l.push({key:s.length-1,value:P})}}}t(i,s,l)}else o()}var i=[],s=[],l=[],c=[],u=0,d=0;a(e,r,o)}function c(e,t,r){Papa.parse(e,{encoding:"UTF-8",complete:function(e){o(e);var r=[],a=[],i=[],s=[],l=0,c=0;for(l=0;l Group");a.length&&(i($(a[0]),!0,""),t(s,l,c))}else o()}function i(e,t,o){var r=s.length,a=o;t||(""!==a&&(a+=" > "),a+=e.find("> Name").text(),s.push({name:a}));var u=e.find("> Entry");if(u.length)for(var d=0;d String"),h=0;h Key").text(),b=v.find("> Value").text();if(""!==b)switch(y){case"URL":g.uri=n(b);break;case"UserName":g.username=b;break;case"Password":g.password=b;break;case"Title":g.name=b;break;case"Notes":g.notes=null===g.notes?b+"\n":g.notes+b+"\n";break;default:g.notes=null===g.notes?y+": "+b+"\n":g.notes+y+": "+b+"\n"}}null===g.name&&(g.name="--"),l.push(g),t||c.push({key:m,value:r})}var w=e.find("> Group");if(w.length)for(var S=0;S "):null,s=r.length,l=a.length,c=null!==o,u=c,d=0;if(c)for(d=0;d=6){var o=r.length,s=a.length,l=e[0]&&""!==e[0],c=l,u=0;if(l)for(u=0;u6)for(null===d.notes?d.notes="":d.notes+="\n",u=6;u record");if(u.length)for(var d=0;d Account-Name"),g=m.length?$(m):null,f=p.find("> User-Id"),h=f.length?$(f):null,v=p.find("> Password"),y=v.length?$(v):null,b=p.find("> URL"),w=b.length?$(b):null,S=p.find("> Notes"),C=S.length?$(S):null,k=p.find("> Category"),P=k.length?$(k):null,I=P?P.text():null,T=i.length,A=s.length,z=I&&""!==I&&"Unfiled"!==I,O=z;if(z)for(c=0;c Attribute-"+c,c<10&&(U+=", ");var F=p.find(U);if(F.length)for(c=0;c2&&l.length%2==0)for(var d=0;d entry");if(d.length)for(var p=0;p title"),f=g.length?$(g):null,h=m.find("> username"),v=h.length?$(h):null,y=m.find("> email"),b=y.length?$(y):null,w=b?b.text():null,S=m.find("> password"),C=S.length?$(S):null,k=m.find("> url"),P=k.length?$(k):null,I=m.find("> notes"),T=I.length?$(I):null,A=T?T.text().split(u).join("\n"):null,z=m.find("> group"),O=z.length?$(z):null,E=O?O.text().split(".").join(" > "):null,U=i.length,F=s.length,x=E&&""!==E,D=x;if(x)for(c=0;c Groups > Group[ID="'+t+'"]');if(o.length){n&&""!==n&&(n=" > "+n),n=o.attr("Name")+n;return r(e,o.attr("ParentID"),n)}return n}function i(e){var a=$(e),i=a.find("root > Database");if(i.length){var d=i.find("> Logins > Login");if(d.length)for(var p=0;p Accounts > Account > LoginLinks > Login[SourceLoginID="'+h+'"]');if(C.length){var k=C.parent().parent();k.length&&(v=k.attr("Name"),y=k.attr("Link"),w=k.attr("ParentID"),(b=k.attr("Comments"))&&(b=b.split("/n").join("\n")))}}w&&""!==w&&(S=r(i,w,""));var P=s.length,I=l.length,T=S&&""!==S,A=T;if(T)for(u=0;u=3){var o=r.length,s=a.length,l=e[0]&&""!==e[0]&&"Unassigned"!==e[0],c=l,u=0;if(l)for(u=0;u3)for(var p=3;p").join("")),a=r.find("table.nobr");if(a.length)for(var i=0;i2&&c.length%2==0)for(var p=0;pa?r.substring(a+1):null;if(i&&""!==i&&s&&""!==s&&"SecretType"!==i){var l=i.toLowerCase();"user name"===l?t.username=s:"password"===l?t.password=s:(""!==t.notes&&(t.notes+="\n"),t.notes+=i+": "+s)}}}}Papa.parse(e,{header:!0,encoding:"UTF-8",complete:function(e){o(e);var r=[],i=[],s=[];angular.forEach(e.data,function(e,n){var o=e.ChamberName,l=r.length,c=i.length,u=o&&""!==o,d=u,p=0;if(u)for(p=0;p2&&r(2,c,y),y.name&&"--"!==y.name&&"Web Logins"!==p&&"Servers"!==p&&"Email Accounts"!==p&&(y.name=p+": "+y.name),""===y.notes&&(y.notes=null),i.push(y),h&&a.push({name:u}),f){var b={key:g,value:m};s.push(b)}}n(a,i,s)}})}function x(e,n,r){Papa.parse(e,{header:!0,encoding:"UTF-8",complete:function(e){o(e);for(var r=[],a=[],i=[],s=0;s30&&(p.name=p.name.substring(0,30));for(var m in d.attributes)d.attributes.hasOwnProperty(m)&&"username_value"!==m&&"xdg:schema"!==m&&(""!==p.notes&&(p.notes+="\n"),p.notes+=m+": "+d.attributes[m]);""===p.notes&&(p.notes=null),s.push(p),l.push({key:a,value:r})}}n(i,s,l)}var i=[],s=[],l=[],c=0;r(e,a,o)}var M={};M.import=function(e,t,n,o){if(!t)return void o();switch(e){case"bitwardencsv":i(t,n,o);break;case"lastpass":s(t,n,o);break;case"safeincloudxml":l(t,n,o);break;case"keepass2xml":u(t,n,o);break;case"keepassxcsv":d(t,n,o);break;case"padlockcsv":c(t,n,o);break;case"1password1pif":p(t,n,o);break;case"1password6wincsv":m(t,n,o);break;case"chromecsv":case"vivaldicsv":case"operacsv":g(t,n,o);break;case"firefoxpasswordexportercsvxml":f(t,n,o);break;case"upmcsv":h(t,n,o);break;case"keepercsv":v(t,n,o);break;case"passworddragonxml":y(t,n,o);break;case"enpasscsv":b(t,n,o);break;case"pwsafexml":w(t,n,o);break;case"dashlanecsv":S(t,n,o);break;case"stickypasswordxml":C(t,n,o);break;case"msecurecsv":k(t,n,o);break;case"truekeycsv":P(t,n,o);break;case"clipperzhtml":I(t,n,o);break;case"avirajson":T(t,n,o);break;case"roboformhtml":A(t,n,o);break;case"saferpasscsv":z(t,n,o);break;case"ascendocsv":O(t,n,o);break;case"passwordbossjson":E(t,n,o);break;case"zohovaultcsv":U(t,n,o);break;case"splashidcsv":F(t,n,o);break;case"meldiumcsv":x(t,n,o);break;case"passkeepcsv":D(t,n,o);break;case"gnomejson":L(t,n,o);break;default:o()}};var K=["password","pass word","passphrase","pass phrase","pass","code","code word","codeword","secret","secret word","key","keyword","key word","keyphrase","key phrase","form_pw","wppassword","pin","pwd","pw","pword","passwd","p","serial","serial#","license key","reg #","passwort"],G=["user","name","user name","username","login name","email","e-mail","id","userid","user id","login","form_loginname","wpname","mail","loginid","login id","log","first name","last name","card#","account #","member","member #","nom","benutzername"],B=["url","hyper link","hyperlink","link","host","hostname","host name","server","address","hyper ref","href","web","website","web site","site","web-site","ort","adresse"];return M}),angular.module("bit.services").factory("passwordService",function(){function e(t,n){var o=0,r=n-t,a=Math.ceil(Math.log2(r));if(a>53)throw new Exception("We cannot generate numbers larger than 53 bits.");var i=Math.ceil(a/8),s=Math.pow(2,a)-1,l=new Uint8Array(i);window.crypto.getRandomValues(l);for(var c=8*(i-1),u=0;u=r?e(t,n):t+o}var t={};return t.generatePassword=function(t){var n={length:10,ambiguous:!1,number:!0,minNumber:1,uppercase:!0,minUppercase:1,lowercase:!0,minLowercase:1,special:!1,minSpecial:1},o=angular.extend({},n,t);o.uppercase&&o.minUppercase<0&&(o.minUppercase=1),o.lowercase&&o.minLowercase<0&&(o.minLowercase=1),o.number&&o.minNumber<0&&(o.minNumber=1),o.special&&o.minSpecial<0&&(o.minSpecial=1),(!o.length||o.length<1)&&(o.length=10);var r=o.minUppercase+o.minLowercase+o.minNumber+o.minSpecial;o.length0)for(var i=0;i0)for(var s=0;s0)for(var l=0;l0)for(var c=0;c=t?e:new Array(t-e.length+1).join(n)+e}l.eventTrack("toolsExportController",{category:"Modal"}),e.export=function(n){e.startedExport=!0;var o=[],r=[],u=t.folders.list({},function(e){r=a.decryptFolders(e.Data)}).$promise,d=t.logins.list({},function(e){o=a.decryptLogins(e.Data)}).$promise;i.all([u,d]).then(function(){if(!o.length)return s.error("Nothing to export.","Error!"),void e.close();for(var t={},n=0;n "Export".')},{id:"lastpass",name:"LastPass (csv)",featured:!0,sort:2,instructions:c.trustAsHtml('See detailed instructions on our help site at https://help.bitwarden.com/article/import-from-lastpass/')},{id:"chromecsv",name:"Chrome (csv)",featured:!0,sort:3,instructions:c.trustAsHtml('See detailed instructions on our help site at https://help.bitwarden.com/article/import-from-chrome/')},{id:"firefoxpasswordexportercsvxml",name:"Firefox Password Exporter (xml)",featured:!0,sort:4,instructions:c.trustAsHtml('Use the Password Exporter addon for FireFox to export your passwords to a XML file. After installing the addon, type about:addons in your FireFox navigation bar. Locate the Password Exporter addon and click the "Options" button. In the dialog that pops up, click the "Export Passwords" button to save the XML file.')},{id:"keepass2xml",name:"KeePass 2 (xml)",featured:!0,sort:5,instructions:c.trustAsHtml('Using the KeePass 2 desktop application, navigate to "File" > "Export" and select the KeePass XML (2.x) option.')},{id:"keepassxcsv",name:"KeePassX (csv)",instructions:c.trustAsHtml('Using the KeePassX desktop application, navigate to "Database" > "Export to CSV file" and save the CSV file.')},{id:"dashlanecsv",name:"Dashlane (csv)",featured:!0,sort:7,instructions:c.trustAsHtml('Using the Dashlane desktop application, navigate to "File" > "Export" > "Unsecured archive (readable) in CSV format" and save the CSV file.')},{id:"1password1pif",name:"1Password (1pif)",featured:!0,sort:6,instructions:c.trustAsHtml('See detailed instructions on our help site at https://help.bitwarden.com/article/import-from-1password/')},{id:"1password6wincsv",name:"1Password 6 Windows (csv)",instructions:c.trustAsHtml('See detailed instructions on our help site at https://help.bitwarden.com/article/import-from-1password/')},{id:"roboformhtml",name:"RoboForm (html)",instructions:c.trustAsHtml('Using the RoboForm Editor desktop application, navigate to "RoboForm" (top left) > "Print List" > "Logins". When the following print dialog pops up click on the "Save" button and save the HTML file.')},{id:"keepercsv",name:"Keeper (csv)",instructions:c.trustAsHtml('Log into the Keeper web vault (keepersecurity.com/vault). Navigate to "Backup" (top right) and find the "Export to Text File" option. Click "Export Now" to save the TXT/CSV file.')},{id:"enpasscsv",name:"Enpass (csv)",instructions:c.trustAsHtml('Using the Enpass desktop application, navigate to "File" > "Export" > "As CSV". Select "Yes" to the warning alert and save the CSV file.')},{id:"safeincloudxml",name:"SafeInCloud (xml)",instructions:c.trustAsHtml('Using the SaveInCloud desktop application, navigate to "File" > "Export" > "As XML" and save the XML file.')},{id:"pwsafexml",name:"Password Safe (xml)",instructions:c.trustAsHtml('Using the Password Safe desktop application, navigate to "File" > "Export To" > "XML format..." and save the XML file.')},{id:"stickypasswordxml",name:"Sticky Password (xml)",instructions:c.trustAsHtml('Using the Sticky Password desktop application, navigate to "Menu" (top right) > "Export" > "Export all". Select the unencrypted format XML option and then the "Save to file" button. Save the XML file.')},{id:"msecurecsv",name:"mSecure (csv)",instructions:c.trustAsHtml('Using the mSecure desktop application, navigate to "File" > "Export" > "CSV File..." and save the CSV file.')},{id:"truekeycsv",name:"True Key (csv)",instructions:c.trustAsHtml('Using the True Key desktop application, click the gear icon (top right) and then navigate to "App Settings". Click the "Export" button, enter your password and save the CSV file.')},{id:"passwordbossjson",name:"Password Boss (json)",instructions:c.trustAsHtml('Using the Password Boss desktop application, navigate to "File" > "Export data" > "Password Boss JSON - not encrypted" and save the JSON file.')},{id:"zohovaultcsv",name:"Zoho Vault (csv)",instructions:c.trustAsHtml('Log into the Zoho web vault (vault.zoho.com). Navigate to "Tools" > "Export Secrets". Select "All Secrets" and click the "Zoho Vault Format CSV" button. Highlight and copy the data from the textarea. Open a text editor like Notepad and paste the data. Save the data from the text editor as zoho_export.csv.')},{id:"splashidcsv",name:"SplashID (csv)",instructions:c.trustAsHtml('Using the SplashID Safe desktop application, click on the SplashID blue lock logo in the top right corner. Navigate to "Export" > "Export as CSV" and save the CSV file.')},{id:"passworddragonxml",name:"Password Dragon (xml)",instructions:c.trustAsHtml('Using the Password Dragon desktop application, navigate to "File" > "Export" > "To XML". In the dialog that pops up select "All Rows" and check all fields. Click the "Export" button and save the XML file.')},{id:"padlockcsv",name:"Padlock (csv)",instructions:c.trustAsHtml('Using the Padlock desktop application, click the hamburger icon in the top left corner and navigate to "Settings". Click the "Export Data" option. Ensure that the "CSV" option is selected from the dropdown. Highlight and copy the data from the textarea. Open a text editor like Notepad and paste the data. Save the data from the text editor as padlock_export.csv.')},{id:"clipperzhtml",name:"Clipperz (html)",instructions:c.trustAsHtml('Log into the Clipperz web application (clipperz.is/app). Click the hamburger menu icon in the top right to expand the navigation bar. Navigate to "Data" > "Export". Click the "download HTML+JSON" button to save the HTML file.')},{id:"avirajson",name:"Avira (json)",instructions:c.trustAsHtml('Using the Avira browser extension, click your username in the top right corner and navigate to "Settings". Locate the "Export Data" section and click "Export". In the dialog that pops up, click the "Export Password Manager Data" button to save the TXT/JSON file.')},{id:"saferpasscsv",name:"SaferPass (csv)",instructions:c.trustAsHtml('Using the SaferPass browser extension, click the hamburger icon in the top left corner and navigate to "Settings". Click the "Export accounts" button to save the CSV file.')},{id:"upmcsv",name:"Universal Password Manager (csv)",instructions:c.trustAsHtml('Using the Universal Password Manager desktop application, navigate to "Database" > "Export" and save the CSV file.')},{id:"ascendocsv",name:"Ascendo DataVault (csv)",instructions:c.trustAsHtml('Using the Ascendo DataVault desktop application, navigate to "Tools" > "Export". In the dialog that pops up, select the "All Items (DVX, CSV)" option. Click the "Ok" button to save the CSV file.')},{id:"meldiumcsv",name:"Meldium (csv)",instructions:c.trustAsHtml('Using the Meldium web vault, navigate to "Settings". Locate the "Export data" function and click "Show me my data" to save the CSV file.')},{id:"passkeepcsv",name:"PassKeep (csv)",instructions:c.trustAsHtml('Using the PassKeep mobile app, navigate to "Backup/Restore". Locate the "CSV Backup/Restore" section and click "Backup to CSV" to save the CSV file.')},{id:"operacsv",name:"Opera (csv)",instructions:c.trustAsHtml('The process for importing from Opera is exactly the same as importing from Google Chrome. See detailed instructions on our help site at https://help.bitwarden.com/article/import-from-chrome/')},{id:"vivaldicsv",name:"Vivaldi (csv)",instructions:c.trustAsHtml('The process for importing from Vivaldi is exactly the same as importing from Google Chrome. See detailed instructions on our help site at https://help.bitwarden.com/article/import-from-chrome/')},{id:"gnomejson",name:"GNOME Passwords and Keys/Seahorse (json)",instructions:c.trustAsHtml('Make sure you have python-keyring and python-gnomekeyring installed. Save the GNOME Keyring Import/Export python script by Luke Plant to your desktop as pw_helper.py. Open terminal and run chmod +rx Desktop/pw_helper.py and then python Desktop/pw_helper.py export Desktop/my_passwords.json. Then upload the resulting my_passwords.json file here to bitwarden.')}],e.setSource=function(){for(var t=0;t-1&&e.login.attachments.splice(t,1)},function(){l.error("Cannot delete attachment."),n.loading=!1}))},e.close=function(){n.dismiss("cancel")},e.$on("modal.closing",function(t,o,r){m||(t.preventDefault(),m=!0,n.close(!!e.login.attachments&&e.login.attachments.length>0))}),e.showUpgrade=function(){d.open({animation:!0,templateUrl:"app/views/premiumRequired.html",controller:"premiumRequiredController"})}}]),angular.module("bit.vault").controller("vaultController",["$scope","$uibModal","apiService","$filter","cryptoService","authService","toastr","cipherService","$q","$localStorage","$timeout","$rootScope","$state","$analytics",function(e,t,n,o,r,a,i,s,l,c,u,d,p,m){function g(){var t=n.folders.list({},function(e){for(var t=[{id:null,name:"No Folder"}],n=0;n0){e.logins=n[0];var r=200;angular.forEach(n,function(t,n){r+=200,n>0&&u(function(){Array.prototype.push.apply(e.logins,t)},r)})}}function v(){d.vaultLogins=e.logins=o("orderBy")(d.vaultLogins,["name","username"])}function y(e,t){for(var n=[],o=0,r=e.length;o-1&&d.vaultLogins.splice(n,1),(n=e.logins.indexOf(t))>-1&&e.logins.splice(n,1)}e.loading=!0,e.logins=[],e.favoriteCollapsed=c.collapsedFolders&&"favorite"in c.collapsedFolders,e.folderIdFilter=void 0,p.params.refreshFromServer&&(d.vaultFolders=d.vaultLogins=null),e.$on("$viewContentLoaded",function(){if(d.vaultFolders&&d.vaultLogins)return e.loading=!1,f(d.vaultFolders),void h(d.vaultLogins);g()}),e.clipboardError=function(e){alert("Your web browser does not support easy clipboard copying. Edit the login and copy it manually instead.")},e.collapseExpand=function(e,t){c.collapsedFolders||(c.collapsedFolders={});var n=t?"favorite":e.id||"none";n in c.collapsedFolders?delete c.collapsedFolders[n]:c.collapsedFolders[n]=!0},e.editLogin=function(e){t.open({animation:!0,templateUrl:"app/vault/views/vaultEditLogin.html",controller:"vaultEditLoginController",resolve:{loginId:function(){return e.id}}}).result.then(function(t){"edit"===t.action?(e.folderId=t.data.folderId,e.name=t.data.name,e.username=t.data.username,e.password=t.data.password,e.favorite=t.data.favorite,v()):"partialEdit"===t.action?(e.folderId=t.data.folderId,e.favorite=t.data.favorite):"delete"===t.action&&k(e)})},e.$on("vaultAddLogin",function(t,n){e.addLogin()}),e.addLogin=function(e,n){t.open({animation:!0,templateUrl:"app/vault/views/vaultAddLogin.html",controller:"vaultAddLoginController",resolve:{selectedFolder:function(){return e},checkedFavorite:function(){return n}}}).result.then(function(e){d.vaultLogins.push(e),v()})},e.deleteLogin=function(e){confirm("Are you sure you want to delete this login ("+e.name+")?")&&n.logins.del({id:e.id},function(){m.eventTrack("Deleted Login"),k(e)})},e.attachments=function(e){a.getUserProfile().then(function(t){return{isPremium:t.premium,orgUseStorage:e.organizationId&&!!t.organizations[e.organizationId].maxStorageGb}}).then(function(n){if(!e.hasAttachments){if(e.organizationId&&!n.orgUseStorage)return void t.open({animation:!0,templateUrl:"app/views/paidOrgRequired.html",controller:"paidOrgRequiredController",resolve:{orgId:function(){return e.organizationId}}});if(!e.organizationId&&!n.isPremium)return void t.open({animation:!0,templateUrl:"app/views/premiumRequired.html",controller:"premiumRequiredController"})}if(!e.organizationId&&!r.getEncKey())return void i.error("You cannot use this feature until you update your encryption key.","Feature Unavailable");t.open({animation:!0,templateUrl:"app/vault/views/vaultAttachments.html",controller:"vaultAttachmentsController",resolve:{loginId:function(){return e.id}}}).result.then(function(t){e.hasAttachments=t})})},e.editFolder=function(e){t.open({animation:!0,templateUrl:"app/vault/views/vaultEditFolder.html",controller:"vaultEditFolderController",size:"sm",resolve:{folderId:function(){return e.id}}}).result.then(function(t){e.name=t.name})},e.$on("vaultAddFolder",function(t,n){e.addFolder()}),e.addFolder=function(){t.open({animation:!0,templateUrl:"app/vault/views/vaultAddFolder.html",controller:"vaultAddFolderController",size:"sm"}).result.then(function(e){d.vaultFolders.push(e),f(d.vaultFolders)})},e.deleteFolder=function(e){confirm("Are you sure you want to delete this folder ("+e.name+")?")&&n.folders.del({id:e.id},function(){m.eventTrack("Deleted Folder");var t=d.vaultFolders.indexOf(e);t>-1&&d.vaultFolders.splice(t,1)})},e.canDeleteFolder=function(e){if(!e||!e.id||!d.vaultLogins)return!1;var t=o("filter")(d.vaultLogins,{folderId:e.id});return t&&0===t.length},e.share=function(e){t.open({animation:!0,templateUrl:"app/vault/views/vaultShareLogin.html",controller:"vaultShareLoginController",resolve:{loginId:function(){return e.id}}}).result.then(function(t){e.organizationId=t})},e.collections=function(e){t.open({animation:!0,templateUrl:"app/vault/views/vaultLoginCollections.html",controller:"vaultLoginCollectionsController",resolve:{loginId:function(){return e.id}}}).result.then(function(t){t.collectionIds&&!t.collectionIds.length&&k(e)})},e.filterFolder=function(t){e.folderIdFilter=t.id,$.AdminLTE&&$.AdminLTE.layout&&u(function(){$.AdminLTE.layout.fix()},0)},e.clearFilters=function(){e.folderIdFilter=void 0,$.AdminLTE&&$.AdminLTE.layout&&u(function(){$.AdminLTE.layout.fix()},0)},e.folderFilter=function(t){return void 0===e.folderIdFilter||t.id===e.folderIdFilter},e.unselectAll=function(){C(!1)},e.selectFolder=function(e,t){$(t.currentTarget).closest(".box").find('input[name="loginSelection"]').prop("checked",!0)},e.select=function(e){var t=$(e.currentTarget).closest("tr").find('input[name="loginSelection"]');t.prop("checked",!t.prop("checked"))},e.bulkMove=function(){var e=S();if(0===e.length)return void alert("You have not selected anything.");t.open({ +animation:!0,templateUrl:"app/vault/views/vaultMoveLogins.html",controller:"vaultMoveLoginsController",size:"sm",resolve:{ids:function(){return e}}}).result.then(function(t){for(var n=0;n-1&&l.vaultLogins.splice(t,1)}}e.logins=[],e.collections=[],e.loading=!0,e.$on("$viewContentLoaded",function(){var o=t.collections.listMe({},function(t){for(var o=[],r=0;r-1:null===e.id}},e.collectionSort=function(e){return e.id?e.name.toLowerCase():""},e.collapseExpand=function(e){a.collapsedCollections||(a.collapsedCollections={});var t=e.id||"unassigned";t in a.collapsedCollections?delete a.collapsedCollections[t]:a.collapsedCollections[t]=!0},e.editLogin=function(t){i.open({animation:!0,templateUrl:"app/vault/views/vaultEditLogin.html",controller:"vaultEditLoginController",resolve:{loginId:function(){return t.id}}}).result.then(function(n){var o=d(t)||{};if("edit"===n.action)t.folderId=o.folderId=n.data.folderId,t.name=o.name=n.data.name,t.username=o.username=n.data.username,t.password=o.username=n.data.password,t.favorite=o.favorite=n.data.favorite;else if("partialEdit"===n.action)t.folderId=o.folderId=n.data.folderId,t.favorite=o.favorite=n.data.favorite;else if("delete"===n.action){var r=e.logins.indexOf(t);r>-1&&e.logins.splice(r,1),p(o)}})},e.editCollections=function(e){i.open({animation:!0,templateUrl:"app/vault/views/vaultLoginCollections.html",controller:"vaultLoginCollectionsController",resolve:{loginId:function(){return e.id}}}).result.then(function(t){t.collectionIds&&(e.collectionIds=t.collectionIds)})},e.removeLogin=function(e,n){if(confirm("Are you sure you want to remove this login ("+e.name+") from the collection ("+n.name+") ?")){for(var r={collectionIds:[]},a=0;a')}var cacheTag="hixz2gldi";loadStylesheetIfMissing("visibility","hidden",["lib/bootstrap/css/bootstrap.min.css"]),loadStylesheetIfMissing("fontFamily","FontAwesome",["lib/font-awesome/css/font-awesome.min.css"]); \ No newline at end of file +function loadStylesheetIfMissing(e,t,s){var i=document.getElementsByTagName("SCRIPT"),l=i[i.length-1].previousElementSibling,n=document.defaultView&&document.defaultView.getComputedStyle?document.defaultView.getComputedStyle(l):l.currentStyle;if(n&&n[e]!==t)for(var o=0;o')}var cacheTag="jutkh3680k9";loadStylesheetIfMissing("visibility","hidden",["lib/bootstrap/css/bootstrap.min.css"]),loadStylesheetIfMissing("fontFamily","FontAwesome",["lib/font-awesome/css/font-awesome.min.css"]); \ No newline at end of file diff --git a/js/lib.min.js b/js/lib.min.js index 37e050c7..c6b97c14 100644 --- a/js/lib.min.js +++ b/js/lib.min.js @@ -1,5 +1,5 @@ -function _init(){"use strict";$.AdminLTE.layout={activate:function(){var t=this;t.fix(),t.fixSidebar(),$("body, html, .wrapper").css("height","auto"),$(window,".wrapper").resize(function(){t.fix(),t.fixSidebar()})},fix:function(){$(".layout-boxed > .wrapper").css("overflow","hidden");var t=$(".main-footer").outerHeight()||0,e=$(".main-header").outerHeight()+t,n=$(window).height(),r=$(".sidebar").height()||0;if($("body").hasClass("fixed"))$(".content-wrapper, .right-side").css("min-height",n-t);else{var i;n>=r?($(".content-wrapper, .right-side").css("min-height",n-e),i=n-e):($(".content-wrapper, .right-side").css("min-height",r),i=r);var a=$($.AdminLTE.options.controlSidebarOptions.selector);void 0!==a&&a.height()>i&&$(".content-wrapper, .right-side").css("min-height",a.height())}},fixSidebar:function(){if(!$("body").hasClass("fixed"))return void(void 0!==$.fn.slimScroll&&$(".sidebar").slimScroll({destroy:!0}).height("auto"));void 0===$.fn.slimScroll&&window.console&&window.console.error("Error: the fixed layout requires the slimscroll plugin!"),$.AdminLTE.options.sidebarSlimScroll&&void 0!==$.fn.slimScroll&&($(".sidebar").slimScroll({destroy:!0}).height("auto"),$(".sidebar").slimScroll({height:$(window).height()-$(".main-header").height()+"px",color:"rgba(0,0,0,0.2)",size:"3px"}))}},$.AdminLTE.pushMenu={activate:function(t){var e=$.AdminLTE.options.screenSizes;$(document).on("click",t,function(t){t.preventDefault(),$(window).width()>e.sm-1?$("body").hasClass("sidebar-collapse")?$("body").removeClass("sidebar-collapse").trigger("expanded.pushMenu"):$("body").addClass("sidebar-collapse").trigger("collapsed.pushMenu"):$("body").hasClass("sidebar-open")?$("body").removeClass("sidebar-open").removeClass("sidebar-collapse").trigger("collapsed.pushMenu"):$("body").addClass("sidebar-open").trigger("expanded.pushMenu")}),$(".content-wrapper").click(function(){$(window).width()<=e.sm-1&&$("body").hasClass("sidebar-open")&&$("body").removeClass("sidebar-open")}),($.AdminLTE.options.sidebarExpandOnHover||$("body").hasClass("fixed")&&$("body").hasClass("sidebar-mini"))&&this.expandOnHover()},expandOnHover:function(){var t=this,e=$.AdminLTE.options.screenSizes.sm-1;$(".main-sidebar").hover(function(){$("body").hasClass("sidebar-mini")&&$("body").hasClass("sidebar-collapse")&&$(window).width()>e&&t.expand()},function(){$("body").hasClass("sidebar-mini")&&$("body").hasClass("sidebar-expanded-on-hover")&&$(window).width()>e&&t.collapse()})},expand:function(){$("body").removeClass("sidebar-collapse").addClass("sidebar-expanded-on-hover")},collapse:function(){$("body").hasClass("sidebar-expanded-on-hover")&&$("body").removeClass("sidebar-expanded-on-hover").addClass("sidebar-collapse")}},$.AdminLTE.tree=function(t){var e=this,n=$.AdminLTE.options.animationSpeed;$(document).off("click",t+" li a").on("click",t+" li a",function(t){var r=$(this),i=r.next();if(i.is(".treeview-menu")&&i.is(":visible")&&!$("body").hasClass("sidebar-collapse"))i.slideUp(n,function(){i.removeClass("menu-open")}),i.parent("li").removeClass("active");else if(i.is(".treeview-menu")&&!i.is(":visible")){var a=r.parents("ul").first(),o=a.find("ul:visible").slideUp(n);o.removeClass("menu-open");var s=r.parent("li");i.slideDown(n,function(){i.addClass("menu-open"),a.find("li.active").removeClass("active"),s.addClass("active"),e.layout.fix()})}i.is(".treeview-menu")&&t.preventDefault()})},$.AdminLTE.controlSidebar={activate:function(){var t=this,e=$.AdminLTE.options.controlSidebarOptions,n=$(e.selector);$(e.toggleBtnSelector).on("click",function(r){r.preventDefault(),n.hasClass("control-sidebar-open")||$("body").hasClass("control-sidebar-open")?t.close(n,e.slide):t.open(n,e.slide)});var r=$(".control-sidebar-bg");t._fix(r),$("body").hasClass("fixed")?t._fixForFixed(n):$(".content-wrapper, .right-side").height() .box-body, > .box-footer, > form >.box-body, > form > .box-footer");n.hasClass("collapsed-box")?(t.children(":first").removeClass(e.icons.open).addClass(e.icons.collapse),r.slideDown(e.animationSpeed,function(){n.removeClass("collapsed-box")})):(t.children(":first").removeClass(e.icons.collapse).addClass(e.icons.open),r.slideUp(e.animationSpeed,function(){n.addClass("collapsed-box")}))},remove:function(t){t.parents(".box").first().slideUp(this.animationSpeed)}}}!function(t,e){"use strict";function n(){function e(t){return function(){c.waitForVendorCount&&(d[t]||(d[t]=[]),d[t].push(arguments))}}function n(e,n,r){return f[e]||(f[e]=[]),f[e].push(n),h[n]=r,function(){if(!this.settings.optOut){var n=Array.prototype.slice.apply(arguments);return this.$inject(["$q",t.bind(this,function(r){return r.all(f[e].map(function(e){if((h[e]||{}).async){var i=r.defer(),a=t.copy(n);return a.unshift(i.resolve),e.apply(this,a),i.promise}return r.when(e.apply(this,n))},this))})])}}}function r(t,e){e?setTimeout(t,e):t()}function i(e,i,a){if(!l.developerMode){g[e]=n(e,i,a);var o=l[e],s=o?o.bufferFlushDelay:null,u=null!==s?s:l.bufferFlushDelay;t.forEach(d[e],function(t,e){r(function(){i.apply(this,t)},e*u)})}}function a(t){return t.replace(/^./,function(t){return t.toUpperCase()})}function o(t){var r="register"+a(t);m[r]=function(e,n){i(t,e,n)},g[t]=n(t,e(t))}function s(e,n,r){t.forEach(n,r);for(var i in e)u[i]=e[i]}var u=this,l={pageTracking:{autoTrackFirstPage:!0,autoTrackVirtualPages:!0,trackRelativePath:!1,trackRoutes:!0,trackStates:!0,autoBasePath:!1,basePath:"",excludedRoutes:[],queryKeysWhitelisted:[],queryKeysBlacklisted:[]},eventTracking:{},bufferFlushDelay:1e3,trackExceptions:!1,optOut:!1,developerMode:!1},p=["pageTrack","eventTrack","exceptionTrack","transactionTrack","setAlias","setUsername","setUserProperties","setUserPropertiesOnce","setSuperProperties","setSuperPropertiesOnce","incrementProperty","userTimings","clearCookies"],d={},f={},h={},g={settings:l};g.setOptOut=function(t){this.settings.optOut=t,y()},g.getOptOut=function(){return this.settings.optOut};var m={$get:["$injector",function(t){return v(t)}],api:g,settings:l,virtualPageviews:function(t){this.settings.pageTracking.autoTrackVirtualPages=t},trackStates:function(t){this.settings.pageTracking.trackStates=t},trackRoutes:function(t){this.settings.pageTracking.trackRoutes=t},excludeRoutes:function(t){this.settings.pageTracking.excludedRoutes=t},queryKeysWhitelist:function(t){this.settings.pageTracking.queryKeysWhitelisted=t},queryKeysBlacklist:function(t){this.settings.pageTracking.queryKeysBlacklisted=t},firstPageview:function(t){this.settings.pageTracking.autoTrackFirstPage=t},withBase:function(e){this.settings.pageTracking.basePath=e?t.element(document).find("base").attr("href"):""},withAutoBase:function(t){this.settings.pageTracking.autoBasePath=t},trackExceptions:function(t){this.settings.trackExceptions=t},developerMode:function(t){this.settings.developerMode=t}},v=function(e){return t.extend(g,{$inject:e.invoke})},y=function(){s(m,p,o)};s(m,p,o)}function r(e,n,r,i){function a(t){for(var e=0;e-1)return!0}return!1}function o(t,e){for(var n=[],r=0;r0){for(var r=t.split("?"),i=r[0],a=r[1].split("&"),s=[],u=0;u-1)&&s.push(a[c]);var p="white"==n?s:o(a,s);return p.length>0?i+"?"+p.join("&"):i}return t}function u(t){return s(t,r.settings.pageTracking.queryKeysWhitelisted,"white")}function l(t){return s(t,r.settings.pageTracking.queryKeysBlacklisted,"black")}function c(t,e){a(t)||(t=u(t),t=l(t),r.pageTrack(t,e))}r.settings.pageTracking.autoTrackFirstPage&&i.invoke(["$location",function(t){var e=!0;if(i.has("$route")){var a=i.get("$route");if(a)for(var o in a.routes){e=!1;break}else null===a&&(e=!1)}else if(i.has("$state")){var s=i.get("$state");for(var u in s.get()){e=!1;break}}if(e)if(r.settings.pageTracking.autoBasePath&&(r.settings.pageTracking.basePath=n.location.pathname),r.settings.pageTracking.trackRelativePath){var l=r.settings.pageTracking.basePath+t.url();c(l,t)}else c(t.absUrl(),t)}]),r.settings.pageTracking.autoTrackVirtualPages&&i.invoke(["$location",function(t){r.settings.pageTracking.autoBasePath&&(r.settings.pageTracking.basePath=n.location.pathname+"#");var a=!0;if(r.settings.pageTracking.trackRoutes&&i.has("$route")){var o=i.get("$route");if(o)for(var s in o.routes){a=!1;break}else null===o&&(a=!1);e.$on("$routeChangeSuccess",function(e,n){if(!n||!(n.$$route||n).redirectTo){c(r.settings.pageTracking.basePath+t.url(),t)}})}r.settings.pageTracking.trackStates&&(i.has("$state")&&!i.has("$transitions")&&(a=!1,e.$on("$stateChangeSuccess",function(e,n){c(r.settings.pageTracking.basePath+t.url(),t)})),i.has("$state")&&i.has("$transitions")&&(a=!1,i.invoke(["$transitions",function(e){e.onSuccess({},function(e){e.options().notify&&c(r.settings.pageTracking.basePath+t.url(),t)})}]))),a&&e.$on("$locationChangeSuccess",function(e,n){if(!n||!(n.$$route||n).redirectTo)if(r.settings.pageTracking.trackRelativePath){var i=r.settings.pageTracking.basePath+t.url();c(i,t)}else c(t.absUrl(),t)})}]),r.settings.developerMode&&t.forEach(r,function(t,e){"function"==typeof t&&(r[e]=function(){})})}function i(e){return{restrict:"A",link:function(n,r,i){var a=i.analyticsOn||"click",o={};t.forEach(i.$attr,function(t,e){u(e)&&(o[l(e)]=i[e],i.$observe(e,function(t){o[l(e)]=t}))}),t.element(r[0]).bind(a,function(a){var u=i.analyticsEvent||s(r[0]);o.eventType=a.type,i.analyticsIf&&!n.$eval(i.analyticsIf)||(i.analyticsProperties&&t.extend(o,n.$eval(i.analyticsProperties)),e.eventTrack(u,o))})}}}function a(t){t.decorator("$exceptionHandler",["$delegate","$injector",function(t,e){return function(n,r){var i=t(n,r),a=e.get("$analytics");return a.settings.trackExceptions&&a.exceptionTrack(n,r),i}}])}function o(t){return["a:","button:","button:button","button:submit","input:button","input:submit"].indexOf(t.tagName.toLowerCase()+":"+(t.type||""))>=0}function s(t){return o(t)?t.innerText||t.value:t.id||t.name||t.tagName}function u(t){return"analytics"===t.substr(0,9)&&-1===["On","Event","If","Properties","EventType"].indexOf(t.substr(9))}function l(t){var e=t.slice(9);return void 0!==e&&null!==e&&e.length>0?e.substring(0,1).toLowerCase()+e.substring(1):e}var c=window.angulartics||(window.angulartics={});c.waitForVendorCount=0,c.waitForVendorApi=function(t,e,n,r,i){i||c.waitForVendorCount++,r||(r=n,n=void 0),!Object.prototype.hasOwnProperty.call(window,t)||void 0!==n&&void 0===window[t][n]?setTimeout(function(){c.waitForVendorApi(t,e,n,r,!0)},e):(c.waitForVendorCount--,r(window[t]))},t.module("angulartics",[]).provider("$analytics",n).run(["$rootScope","$window","$analytics","$injector",r]).directive("analyticsOn",["$analytics",i]).config(["$provide",a])}(angular),function(){var t;t=angular.module("ui.bootstrap.showErrors",[]),t.directive("showErrors",["$timeout","showErrorsConfig","$interpolate",function(t,e,n){var r,i,a;return i=function(t){var n;return n=e.trigger,t&&null!=t.trigger&&(n=t.trigger),n},r=function(t){var n;return n=e.showSuccess,t&&null!=t.showSuccess&&(n=t.showSuccess),n},a=function(e,a,o,s){var u,l,c,p,d,f,h,g;if(u=!1,d=e.$eval(o.showErrors),f=r(d),g=i(d),l=a[0].querySelector(".form-control[name]"),p=angular.element(l),!(c=n(p.attr("name")||"")(e)))throw"show-errors element has no child input elements with a 'name' attribute and a 'form-control' class";return p.bind(g,function(){return u=!0,h(s[c].$invalid)}),e.$watch(function(){return s[c]&&s[c].$invalid},function(t){if(u)return h(t)}),e.$on("show-errors-check-validity",function(){return h(s[c].$invalid)}),e.$on("show-errors-reset",function(){return t(function(){return a.removeClass("has-error"),a.removeClass("has-success"),u=!1},0,!1)}),h=function(t){if(a.toggleClass("has-error",t),f)return a.toggleClass("has-success",!t)}},{restrict:"A",require:"^form",compile:function(t,e){if(-1===e.showErrors.indexOf("skipFormGroupCheck")&&!t.hasClass("form-group")&&!t.hasClass("input-group"))throw"show-errors element does not have the 'form-group' or 'input-group' class";return a}}}]),t.provider("showErrorsConfig",function(){var t,e;t=!1,e="blur",this.showSuccess=function(e){return t=e},this.trigger=function(t){return e=t},this.$get=function(){return{showSuccess:t,trigger:e}}})}.call(this),function(t,e){"use strict";function n(t,n,r){function i(t,r,i){var o,s;i=i||{},s=i.expires,o=e.isDefined(i.path)?i.path:a,e.isUndefined(r)&&(s="Thu, 01 Jan 1970 00:00:00 GMT",r=""),e.isString(s)&&(s=new Date(s));var u=encodeURIComponent(t)+"="+encodeURIComponent(r);u+=o?";path="+o:"",u+=i.domain?";domain="+i.domain:"",u+=s?";expires="+s.toUTCString():"",u+=i.secure?";secure":"";var l=u.length+1;return l>4096&&n.warn("Cookie '"+t+"' possibly not set or overflowed because it was too large ("+l+" > 4096 bytes)!"),u}var a=r.baseHref(),o=t[0];return function(t,e,n){o.cookie=i(t,e,n)}}e.module("ngCookies",["ng"]).info({angularVersion:"1.6.3"}).provider("$cookies",[function(){function t(t){return t?e.extend({},n,t):n}var n=this.defaults={};this.$get=["$$cookieReader","$$cookieWriter",function(n,r){return{get:function(t){return n()[t]},getObject:function(t){var n=this.get(t);return n?e.fromJson(n):n},getAll:function(){return n()},put:function(e,n,i){r(e,n,t(i))},putObject:function(t,n,r){this.put(t,e.toJson(n),r)},remove:function(e,n){r(e,void 0,t(n))}}}]}]),e.module("ngCookies").factory("$cookieStore",["$cookies",function(t){return{get:function(e){return t.getObject(e)},put:function(e,n){t.putObject(e,n)},remove:function(e){t.remove(e)}}}]),n.$inject=["$document","$log","$browser"],e.module("ngCookies").provider("$$cookieWriter",function(){this.$get=n})}(window,window.angular),function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.angularCreditCards=t()}}(function(){return function t(e,n,r){function i(o,s){if(!n[o]){if(!e[o]){var u="function"==typeof require&&require;if(!s&&u)return u(o,!0);if(a)return a(o,!0);var l=new Error("Cannot find module '"+o+"'");throw l.code="MODULE_NOT_FOUND",l}var c=n[o]={exports:{}};e[o][0].call(c.exports,function(t){var n=e[o][1][t];return i(n||t)},c,c.exports,t,e,n,r)}return n[o].exports}for(var a="function"==typeof require&&require,o=0;o=new Date(e,t)}function i(t){return l(t)}function a(t,e){return t=t.toString(),e?t.substr(2,4):t}function o(t){return"number"==typeof t&&(t=l(t))>0}function s(t){return(new Date).getFullYear()>t}var u=t("is-valid-month"),l=t("parse-int"),c=t("parse-year");e.exports={isPast:r,month:{parse:i,isValid:u},year:{parse:c,format:a,isValid:o,isPast:s}}},{"is-valid-month":21,"parse-int":24,"parse-year":25}],13:[function(t,e,n){"use strict";e.exports={card:t("./card"),cvc:t("./cvc"),expiration:t("./expiration")}},{"./card":10,"./cvc":11,"./expiration":12}],14:[function(t,e,n){"use strict";var r=t("creditcards-types"),i=t("to-camel-case"),a=t("xtend");e.exports=a(r,{get:function(t){return r.types[i(t)]}})},{"creditcards-types":7,"to-camel-case":26,xtend:29}],15:[function(t,e,n){"use strict";var r=t("zero-fill"),i=t("parse-int"),a=r(2);e.exports=function(t,e){e=e||new Date;var n=e.getFullYear().toString().substr(0,2);return t=i(t),i(n+a(t))}},{"parse-int":24,"zero-fill":31}],16:[function(t,e,n){"use strict";e.exports=function(t){return function(e){if("string"!=typeof e)throw new TypeError("Expected string input");if(!e)return!1;for(var n,r=e.length,i=1,a=0;r;)n=parseInt(e.charAt(--r),10),a+=(i^=1)?t[n]:n;return!!a&&a%10==0}}([0,2,4,6,8,1,3,5,7,9])},{}],17:[function(t,e,n){var r=Array.prototype.slice,i=Object.prototype.toString;e.exports=function(t){var e=this;if("function"!=typeof e||"[object Function]"!==i.call(e))throw new TypeError("Function.prototype.bind called on incompatible "+e);for(var n,a=r.call(arguments,1),o=function(){if(this instanceof n){var i=e.apply(this,a.concat(r.call(arguments)));return Object(i)===i?i:this}return e.apply(t,a.concat(r.call(arguments)))},s=Math.max(0,e.length-a.length),u=[],l=0;l=1&&t<=12)}},{"is-integer":20}],22:[function(t,e,n){e.exports=Array.isArray||function(t){return"[object Array]"==Object.prototype.toString.call(t)}},{}],23:[function(t,e,n){"use strict";e.exports=Number.isNaN||function(t){return t!==t}},{}],24:[function(t,e,n){"use strict";var r=t("is-integer");e.exports=function(t){return"number"==typeof t?r(t)?t:void 0:"string"==typeof t&&/^-?\d+$/.test(t)?parseInt(t,10):void 0}},{"is-integer":20}],25:[function(t,e,n){"use strict";var r=t("parse-int"),i=t("expand-year");e.exports=function(t,e,n){if(null!=(t=r(t)))return e?i(t,n):t}},{"expand-year":15,"parse-int":24}],26:[function(t,e,n){function r(t){return i(t).replace(/\s(\w)/g,function(t,e){return e.toUpperCase()})}var i=t("to-space-case");e.exports=r},{"to-space-case":28}],27:[function(t,e,n){function r(t){return o.test(t)?t.toLowerCase():s.test(t)?(i(t)||t).toLowerCase():u.test(t)?a(t).toLowerCase():t.toLowerCase()}function i(t){return t.replace(l,function(t,e){return e?" "+e:""})}function a(t){return t.replace(c,function(t,e,n){return e+" "+n.toLowerCase().split("").join(" ")})}e.exports=r;var o=/\s/,s=/(_|-|\.|:)/,u=/([a-z][A-Z]|[A-Z][a-z])/,l=/[\W_]+(.|$)/g,c=/(.)([A-Z]+)/g},{}],28:[function(t,e,n){function r(t){return i(t).replace(/[\W_]+(.|$)/g,function(t,e){return e?" "+e:""}).trim()}var i=t("to-no-case");e.exports=r},{"to-no-case":27}],29:[function(t,e,n){function r(){for(var t={},e=0;e0?new Array(e+(/\./.test(n)?2:1)).join(r)+n:n+"")}},{}]},{},[3])(3)}),function(){angular.module("angular-jwt",["angular-jwt.options","angular-jwt.interceptor","angular-jwt.jwt","angular-jwt.authManager"]),angular.module("angular-jwt.authManager",[]).provider("authManager",function(){this.$get=["$rootScope","$injector","$location","jwtHelper","jwtInterceptor","jwtOptions",function(t,e,n,r,i,a){function o(t){return Array.isArray(t)?e.invoke(t,this,{options:null}):t()}function s(t){if(Array.isArray(t)||angular.isFunction(t))return e.invoke(t,h,{});throw new Error("unauthenticatedRedirector must be a function")}function u(){var t=o(h.tokenGetter);if(t)return!r.isTokenExpired(t)}function l(){t.isAuthenticated=!0}function c(){t.isAuthenticated=!1}function p(){t.$on("$locationChangeStart",function(){var e=o(h.tokenGetter);e&&(r.isTokenExpired(e)?t.$broadcast("tokenHasExpired",e):l())})}function d(){t.$on("unauthenticated",function(){s(h.unauthenticatedRedirector),c()})}function f(t,e){if(!e)return!1;var n=e.$$route?e.$$route:e.data;if(n&&!0===n.requiresLogin){var i=o(h.tokenGetter);i&&!r.isTokenExpired(i)||(t.preventDefault(),s(h.unauthenticatedRedirector))}}var h=a.getConfig();t.isAuthenticated=!1;var g=e.has("$state")?"$stateChangeStart":"$routeChangeStart";return t.$on(g,f),{authenticate:l,unauthenticate:c,getToken:function(){return o(h.tokenGetter)},redirect:function(){return s(h.unauthenticatedRedirector)},checkAuthOnRefresh:p,redirectWhenUnauthenticated:d,isAuthenticated:u}}]}),angular.module("angular-jwt.interceptor",[]).provider("jwtInterceptor",function(){this.urlParam,this.authHeader,this.authPrefix,this.whiteListedDomains,this.tokenGetter;var t=this;this.$get=["$q","$injector","$rootScope","urlUtils","jwtOptions",function(e,n,r,i,a){function o(t){if(!i.isSameOrigin(t)&&!s.whiteListedDomains.length)throw new Error("As of v0.1.0, requests to domains other than the application's origin must be white listed. Use jwtOptionsProvider.config({ whiteListedDomains: [] }); to whitelist.");for(var e=i.urlResolve(t).hostname.toLowerCase(),n=0;n(new Date).valueOf()+1e3*e)}}]),angular.module("angular-jwt.options",[]).provider("jwtOptions",function(){var t={};this.config=function(e){t=e},this.$get=function(){function e(){this.config=angular.extend({},n,t)}var n={urlParam:null,authHeader:"Authorization",authPrefix:"Bearer ",whiteListedDomains:[],tokenGetter:function(){return null},loginPath:"/",unauthenticatedRedirectPath:"/",unauthenticatedRedirector:["$location",function(t){t.path(this.unauthenticatedRedirectPath)}]};return e.prototype.getConfig=function(){return this.config},new e}}),angular.module("angular-jwt.interceptor").service("urlUtils",function(){function t(t){var e=t;return n.setAttribute("href",e),e=n.href,n.setAttribute("href",e),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port, -pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}function e(e){var n=angular.isString(e)?t(e):e;return n.protocol===r.protocol&&n.host===r.host}var n=document.createElement("a"),r=t(window.location.href);return{urlResolve:t,isSameOrigin:e}})}(),function(t,e){"use strict";function n(){function t(t,e){if(t)return i(t)?t.indexOf(e)>=0:t.hasOwnProperty(e)}return["$animate",function(e){return{restrict:"AE",transclude:"element",priority:1,terminal:!0,require:"^^ngMessages",link:function(n,r,a,o,s){var u,l=r[0],c=a.ngMessage||a.when,p=a.ngMessageExp||a.whenExp,d=function(t){u=t?i(t)?t:t.split(/[\s,]+/):null,o.reRender()};p?(d(n.$eval(p)),n.$watchCollection(p,d)):d(c);var f,h;o.register(l,h={test:function(e){return t(u,e)},attach:function(){f||s(function(t,n){e.enter(t,null,r),f=t;var i=f.$$attachId=o.getAttachId();f.on("$destroy",function(){f&&f.$$attachId===i&&(o.deregister(l),h.detach()),n.$destroy()})})},detach:function(){if(f){var t=f;f=null,e.leave(t)}}})}}}]}var r,i,a,o;e.module("ngMessages",[],function(){r=e.forEach,i=e.isArray,a=e.isString,o=e.element}).info({angularVersion:"1.6.3"}).directive("ngMessages",["$animate",function(t){function e(t,e){return a(e)&&0===e.length||n(t.$eval(e))}function n(t){return a(t)?t.length:!!t}return{require:"ngMessages",restrict:"AE",controller:["$element","$scope","$attrs",function(i,a,o){function s(t,e){for(var n=e,r=[];n&&n!==t;){var i=n.$$ngMessageNode;if(i&&i.length)return g[i];n.childNodes.length&&-1===r.indexOf(n)?(r.push(n),n=n.childNodes[n.childNodes.length-1]):n.previousSibling?n=n.previousSibling:(n=n.parentNode,r.push(n))}}function u(t,e,n){var r=g[n];if(c.head){var i=s(t,e);i?(r.next=i.next,i.next=r):(r.next=c.head,c.head=r)}else c.head=r}function l(t,e,n){var r=g[n],i=s(t,e);i?i.next=r.next:c.head=r.next}var c=this,p=0,d=0;this.getAttachId=function(){return d++};var f,h,g=this.messages={};this.render=function(s){s=s||{},f=!1,h=s;for(var u=e(a,o.ngMessagesMultiple)||e(a,o.multiple),l=[],p={},d=c.head,g=!1,m=0;null!=d;){m++;var v=d.message,y=!1;g||r(s,function(t,e){if(!y&&n(t)&&v.test(e)){if(p[e])return;p[e]=!0,y=!0,v.attach()}}),y?g=!u:l.push(v),d=d.next}r(l,function(t){t.detach()}),l.length!==m?t.setClass(i,"ng-active","ng-inactive"):t.setClass(i,"ng-inactive","ng-active")},a.$watchCollection(o.ngMessages||o.for,c.render),i.on("$destroy",function(){r(g,function(t){t.message.detach()})}),this.reRender=function(){f||(f=!0,a.$evalAsync(function(){f&&h&&c.render(h)}))},this.register=function(t,e){var n=p.toString();g[n]={message:e},u(i[0],t,n),t.$$ngMessageNode=n,p++,c.reRender()},this.deregister=function(t){var e=t.$$ngMessageNode;delete t.$$ngMessageNode,l(i[0],t,e),delete g[e],c.reRender()}}]}}]).directive("ngMessagesInclude",["$templateRequest","$document","$compile",function(t,e,n){function r(t,r){var i=n.$$createComment?n.$$createComment("ngMessagesInclude",r):e[0].createComment(" ngMessagesInclude: "+r+" "),a=o(i);t.after(a),t.remove()}return{restrict:"AE",require:"^^ngMessages",link:function(e,i,o){var s=o.ngMessagesInclude||o.src;t(s).then(function(t){e.$$destroyed||(a(t)&&!t.trim()?r(i,s):n(t)(e,function(t){i.after(t),r(i,s)}))})}}}]).directive("ngMessage",n()).directive("ngMessageExp",n())}(window,window.angular);var app=angular.module("angular-promise-polyfill",[]).run(["$q","$window",function(t,e){e.Promise=function(e){return t(e)},e.Promise.all=t.all.bind(t),e.Promise.reject=t.reject.bind(t),e.Promise.resolve=t.when.bind(t),e.Promise.race=function(e){for(var n=t.defer(),r=0;r/g,">")}function m(t,e){var n=!1,r=i(t,t.push);return{start:function(t,i){t=u(t),!n&&B[t]&&(n=t),n||!0!==I[t]||(r("<"),r(t),o(i,function(n,i){var a=u(i),o="img"===t&&"src"===a||"background"===a;!0!==_[a]||!0===O[a]&&!e(n,o)||(r(" "),r(i),r('="'),r(g(n)),r('"'))}),r(">"))},end:function(t){t=u(t),n||!0!==I[t]||!0===C[t]||(r("")),t==n&&(n=!1)},chars:function(t){n||r(g(t))}}}function v(e){for(;e;){if(e.nodeType===t.Node.ELEMENT_NODE)for(var n=e.attributes,r=0,i=n.length;r"\u201d\u2019]/i);)d=p[0],p[2]||p[4]||(d=(p[3]?"http://":"mailto:")+d),f=p.index,c(g.substr(0,f)),function(t,e){var n,r=h(t);m.push("'),c(e),m.push("")}(d,p[0].replace(/^mailto:/i,"")),g=g.substring(f+p[0].length);return c(g),t(m.join(""))}}])}(window,window.angular),function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.angularStripe=t()}}(function(){return function t(e,n,r){function i(o,s){if(!n[o]){if(!e[o]){var u="function"==typeof require&&require;if(!s&&u)return u(o,!0);if(a)return a(o,!0);var l=new Error("Cannot find module '"+o+"'");throw l.code="MODULE_NOT_FOUND",l}var c=n[o]={exports:{}};e[o][0].call(c.exports,function(t){var n=e[o][1][t];return i(n||t)},c,c.exports,t,e,n,r)}return n[o].exports}for(var a="function"==typeof require&&require,o=0;o=0&&t.scope.refreshTimer(e)}function h(e,n){function r(){return!$.length}var i=function(t){for(var e=0;e<$.length;e++)if($[e].toastId===t)return $[e]}(e);i&&!i.deleting&&(i.deleting=!0,i.isOpened=!1,t.leave(i.el).then(function(){i.scope.options.onHidden&&i.scope.options.onHidden(!!n,i),i.scope.$destroy();var t=$.indexOf(i);delete C[i.scope.message],$.splice(t,1);var e=a.maxOpened;e&&$.length>=e&&$[e-1].open.resolve(),r()&&(b.remove(),b=null,x=o.defer())}))}function g(t,e,n,r){return angular.isObject(n)&&(r=n,n=null),y({iconClass:t,message:e,optionsOverride:r,title:n})}function m(){return angular.extend({},a)}function v(e){if(b)return x.promise;b=angular.element("
"),b.attr("id",e.containerId),b.addClass(e.positionClass),b.css({"pointer-events":"auto"});var n=angular.element(document.querySelector(e.target));if(!n||!n.length)throw"Target for toasts doesn't exist";return t.enter(b,n).then(function(){x.resolve()}),x.promise}function y(n){function a(t,e,n){function r(e){if(n[e])return function(){n[e](t)}}n.allowHtml?(t.scope.allowHtml=!0,t.scope.title=i.trustAsHtml(e.title),t.scope.message=i.trustAsHtml(e.message)):(t.scope.title=e.title,t.scope.message=e.message),t.scope.toastType=t.iconClass,t.scope.toastId=t.toastId,t.scope.extraData=n.extraData,t.scope.options={extendedTimeOut:n.extendedTimeOut,messageClass:n.messageClass,onHidden:n.onHidden,onShown:r("onShown"),onTap:r("onTap"),progressBar:n.progressBar,tapToDismiss:n.tapToDismiss,timeOut:n.timeOut,titleClass:n.titleClass,toastClass:n.toastClass},n.closeButton&&(t.scope.options.closeHtml=n.closeHtml)}function s(t){var n=angular.element("
");return e.get("$compile")(n)(t)}var u=m();if(!function(){var t=u.preventDuplicates&&n.message===k,e=u.preventOpenDuplicates&&C[n.message];return!(!t&&!e)||(k=n.message,C[n.message]=!0,!1)}()){var l=function(){var t={toastId:w++,isOpened:!1,scope:r.$new(),open:o.defer()};return t.iconClass=n.iconClass,n.optionsOverride&&(angular.extend(u,function(t){for(var e=["containerId","iconClasses","maxOpened","newestOnTop","positionClass","preventDuplicates","preventOpenDuplicates","templates"],n=0,r=e.length;nu.maxOpened}())for(var c=$.slice(0,$.length-u.maxOpened),p=0,d=c.length;p×",containerId:"toast-container",extendedTimeOut:1e3,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},maxOpened:0,messageClass:"toast-message",newestOnTop:!0,onHidden:null,onShown:null,onTap:null,positionClass:"toast-top-right",preventDuplicates:!1,preventOpenDuplicates:!1,progressBar:!1,tapToDismiss:!0,target:"body",templates:{toast:"directives/toast/toast.html",progressbar:"directives/progressbar/progressbar.html"},timeOut:5e3,titleClass:"toast-title",toastClass:"toast"})}(),function(){"use strict";function t(t){function e(t,e,n,r){function i(){var t=(s-(new Date).getTime())/o*100;e.css("width",t+"%")}var a,o,s;r.progressBar=t,t.start=function(t){a&&clearInterval(a),o=parseFloat(t),s=(new Date).getTime()+o,a=setInterval(i,10)},t.stop=function(){a&&clearInterval(a)},t.$on("$destroy",function(){clearInterval(a)})}return{require:"^toast",templateUrl:function(){return t.templates.progressbar},link:e}}angular.module("toastr").directive("progressBar",t),t.$inject=["toastrConfig"]}(),function(){"use strict";function t(){this.progressBar=null,this.startProgressBar=function(t){this.progressBar&&this.progressBar.start(t)},this.stopProgressBar=function(){this.progressBar&&this.progressBar.stop()}}angular.module("toastr").controller("ToastController",t)}(),function(){"use strict";function t(t,e,n,r){function i(n,i,a,o){function s(t){return o.startProgressBar(t),e(function(){o.stopProgressBar(),r.remove(n.toastId)},t,1)}function u(){n.progressBar=!1,o.stopProgressBar()}var l;if(n.toastClass=n.options.toastClass,n.titleClass=n.options.titleClass,n.messageClass=n.options.messageClass,n.progressBar=n.options.progressBar,function(){return n.options.closeHtml}()){var c=angular.element(n.options.closeHtml),p=t.get("$compile");c.addClass("toast-close-button"),c.attr("ng-click","close(true, $event)"),p(c)(n),i.children().prepend(c)}n.init=function(){n.options.timeOut&&(l=s(n.options.timeOut)),n.options.onShown&&n.options.onShown()},i.on("mouseenter",function(){u(),l&&e.cancel(l)}),n.tapToast=function(){angular.isFunction(n.options.onTap)&&n.options.onTap(),n.options.tapToDismiss&&n.close(!0)},n.close=function(t,e){e&&angular.isFunction(e.stopPropagation)&&e.stopPropagation(),r.remove(n.toastId,t)},n.refreshTimer=function(t){l&&(e.cancel(l),l=s(t||n.options.timeOut))},i.on("mouseleave",function(){0===n.options.timeOut&&0===n.options.extendedTimeOut||(n.$apply(function(){n.progressBar=n.options.progressBar}),l=s(n.options.extendedTimeOut))})}return{templateUrl:function(){return n.templates.toast},controller:"ToastController",link:i}}angular.module("toastr").directive("toast",t),t.$inject=["$injector","$interval","toastrConfig","toastr"]}(),function(){"use strict";function t(t,e,n,r,i,a,o){function s(){return $.length}function u(t){if(1!==arguments.length||t)if(t)h(t.toastId);else for(var e=0;e<$.length;e++)h($[e].toastId)}function l(t,e,n){return g(m().iconClasses.error,t,e,n)}function c(t,e,n){return g(m().iconClasses.info,t,e,n)}function p(t,e,n){return g(m().iconClasses.success,t,e,n)}function d(t,e,n){return g(m().iconClasses.warning,t,e,n)}function f(t,e){t&&t.isOpened&&$.indexOf(t)>=0&&t.scope.refreshTimer(e)}function h(e,n){function r(){return!$.length}var i=function(t){for(var e=0;e<$.length;e++)if($[e].toastId===t)return $[e]}(e);i&&!i.deleting&&(i.deleting=!0,i.isOpened=!1,t.leave(i.el).then(function(){i.scope.options.onHidden&&i.scope.options.onHidden(!!n,i),i.scope.$destroy();var t=$.indexOf(i);delete C[i.scope.message],$.splice(t,1);var e=a.maxOpened;e&&$.length>=e&&$[e-1].open.resolve(),r()&&(b.remove(),b=null,x=o.defer())}))}function g(t,e,n,r){return angular.isObject(n)&&(r=n,n=null),y({iconClass:t,message:e,optionsOverride:r,title:n})}function m(){return angular.extend({},a)}function v(e){if(b)return x.promise;b=angular.element("
"),b.attr("id",e.containerId),b.addClass(e.positionClass),b.css({"pointer-events":"auto"});var n=angular.element(document.querySelector(e.target));if(!n||!n.length)throw"Target for toasts doesn't exist";return t.enter(b,n).then(function(){x.resolve()}),x.promise}function y(n){function a(t,e,n){function r(e){if(n[e])return function(){n[e](t)}}n.allowHtml?(t.scope.allowHtml=!0,t.scope.title=i.trustAsHtml(e.title),t.scope.message=i.trustAsHtml(e.message)):(t.scope.title=e.title,t.scope.message=e.message),t.scope.toastType=t.iconClass,t.scope.toastId=t.toastId,t.scope.extraData=n.extraData,t.scope.options={extendedTimeOut:n.extendedTimeOut,messageClass:n.messageClass,onHidden:n.onHidden,onShown:r("onShown"),onTap:r("onTap"),progressBar:n.progressBar,tapToDismiss:n.tapToDismiss,timeOut:n.timeOut,titleClass:n.titleClass,toastClass:n.toastClass},n.closeButton&&(t.scope.options.closeHtml=n.closeHtml)}function s(t){var n=angular.element("
");return e.get("$compile")(n)(t)}var u=m();if(!function(){var t=u.preventDuplicates&&n.message===k,e=u.preventOpenDuplicates&&C[n.message];return!(!t&&!e)||(k=n.message,C[n.message]=!0,!1)}()){var l=function(){var t={toastId:w++,isOpened:!1,scope:r.$new(),open:o.defer()};return t.iconClass=n.iconClass,n.optionsOverride&&(angular.extend(u,function(t){for(var e=["containerId","iconClasses","maxOpened","newestOnTop","positionClass","preventDuplicates","preventOpenDuplicates","templates"],n=0,r=e.length;nu.maxOpened}())for(var c=$.slice(0,$.length-u.maxOpened),p=0,d=c.length;p×",containerId:"toast-container",extendedTimeOut:1e3,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},maxOpened:0,messageClass:"toast-message",newestOnTop:!0,onHidden:null,onShown:null,onTap:null,positionClass:"toast-top-right",preventDuplicates:!1,preventOpenDuplicates:!1,progressBar:!1,tapToDismiss:!0,target:"body",templates:{toast:"directives/toast/toast.html",progressbar:"directives/progressbar/progressbar.html"},timeOut:5e3,titleClass:"toast-title",toastClass:"toast"})}(),function(){"use strict";function t(t){function e(t,e,n,r){function i(){var t=(s-(new Date).getTime())/o*100;e.css("width",t+"%")}var a,o,s;r.progressBar=t,t.start=function(t){a&&clearInterval(a),o=parseFloat(t),s=(new Date).getTime()+o,a=setInterval(i,10)},t.stop=function(){a&&clearInterval(a)},t.$on("$destroy",function(){clearInterval(a)})}return{require:"^toast",templateUrl:function(){return t.templates.progressbar},link:e}}angular.module("toastr").directive("progressBar",t),t.$inject=["toastrConfig"]}(),function(){"use strict";function t(){this.progressBar=null,this.startProgressBar=function(t){this.progressBar&&this.progressBar.start(t)},this.stopProgressBar=function(){this.progressBar&&this.progressBar.stop()}}angular.module("toastr").controller("ToastController",t)}(),function(){"use strict";function t(t,e,n,r){function i(n,i,a,o){function s(t){return o.startProgressBar(t),e(function(){o.stopProgressBar(),r.remove(n.toastId)},t,1)}function u(){n.progressBar=!1,o.stopProgressBar()}var l;if(n.toastClass=n.options.toastClass,n.titleClass=n.options.titleClass,n.messageClass=n.options.messageClass,n.progressBar=n.options.progressBar,function(){return n.options.closeHtml}()){var c=angular.element(n.options.closeHtml),p=t.get("$compile");c.addClass("toast-close-button"),c.attr("ng-click","close(true, $event)"),p(c)(n),i.children().prepend(c)}n.init=function(){n.options.timeOut&&(l=s(n.options.timeOut)),n.options.onShown&&n.options.onShown()},i.on("mouseenter",function(){u(),l&&e.cancel(l)}),n.tapToast=function(){angular.isFunction(n.options.onTap)&&n.options.onTap(),n.options.tapToDismiss&&n.close(!0)},n.close=function(t,e){e&&angular.isFunction(e.stopPropagation)&&e.stopPropagation(),r.remove(n.toastId,t)},n.refreshTimer=function(t){l&&(e.cancel(l),l=s(t||n.options.timeOut))},i.on("mouseleave",function(){0===n.options.timeOut&&0===n.options.extendedTimeOut||(n.$apply(function(){n.progressBar=n.options.progressBar}),l=s(n.options.extendedTimeOut))})}return{templateUrl:function(){return n.templates.toast},controller:"ToastController",link:i}}angular.module("toastr").directive("toast",t),t.$inject=["$injector","$interval","toastrConfig","toastr"]}(),angular.module("toastr").run(["$templateCache",function(t){t.put("directives/progressbar/progressbar.html",'
\n'),t.put("directives/toast/toast.html",'
\n
\n
{{title}}
\n
{{message}}
\n
\n
\n
\n \n
\n')}]), +function _init(){"use strict";$.AdminLTE.layout={activate:function(){var t=this;t.fix(),t.fixSidebar(),$("body, html, .wrapper").css("height","auto"),$(window,".wrapper").resize(function(){t.fix(),t.fixSidebar()})},fix:function(){$(".layout-boxed > .wrapper").css("overflow","hidden");var t=$(".main-footer").outerHeight()||0,e=$(".main-header").outerHeight()+t,n=$(window).height(),r=$(".sidebar").height()||0;if($("body").hasClass("fixed"))$(".content-wrapper, .right-side").css("min-height",n-t);else{var i;n>=r?($(".content-wrapper, .right-side").css("min-height",n-e),i=n-e):($(".content-wrapper, .right-side").css("min-height",r),i=r);var a=$($.AdminLTE.options.controlSidebarOptions.selector);void 0!==a&&a.height()>i&&$(".content-wrapper, .right-side").css("min-height",a.height())}},fixSidebar:function(){if(!$("body").hasClass("fixed"))return void(void 0!==$.fn.slimScroll&&$(".sidebar").slimScroll({destroy:!0}).height("auto"));void 0===$.fn.slimScroll&&window.console&&window.console.error("Error: the fixed layout requires the slimscroll plugin!"),$.AdminLTE.options.sidebarSlimScroll&&void 0!==$.fn.slimScroll&&($(".sidebar").slimScroll({destroy:!0}).height("auto"),$(".sidebar").slimScroll({height:$(window).height()-$(".main-header").height()+"px",color:"rgba(0,0,0,0.2)",size:"3px"}))}},$.AdminLTE.pushMenu={activate:function(t){var e=$.AdminLTE.options.screenSizes;$(document).on("click",t,function(t){t.preventDefault(),$(window).width()>e.sm-1?$("body").hasClass("sidebar-collapse")?$("body").removeClass("sidebar-collapse").trigger("expanded.pushMenu"):$("body").addClass("sidebar-collapse").trigger("collapsed.pushMenu"):$("body").hasClass("sidebar-open")?$("body").removeClass("sidebar-open").removeClass("sidebar-collapse").trigger("collapsed.pushMenu"):$("body").addClass("sidebar-open").trigger("expanded.pushMenu")}),$(".content-wrapper").click(function(){$(window).width()<=e.sm-1&&$("body").hasClass("sidebar-open")&&$("body").removeClass("sidebar-open")}),($.AdminLTE.options.sidebarExpandOnHover||$("body").hasClass("fixed")&&$("body").hasClass("sidebar-mini"))&&this.expandOnHover()},expandOnHover:function(){var t=this,e=$.AdminLTE.options.screenSizes.sm-1;$(".main-sidebar").hover(function(){$("body").hasClass("sidebar-mini")&&$("body").hasClass("sidebar-collapse")&&$(window).width()>e&&t.expand()},function(){$("body").hasClass("sidebar-mini")&&$("body").hasClass("sidebar-expanded-on-hover")&&$(window).width()>e&&t.collapse()})},expand:function(){$("body").removeClass("sidebar-collapse").addClass("sidebar-expanded-on-hover")},collapse:function(){$("body").hasClass("sidebar-expanded-on-hover")&&$("body").removeClass("sidebar-expanded-on-hover").addClass("sidebar-collapse")}},$.AdminLTE.tree=function(t){var e=this,n=$.AdminLTE.options.animationSpeed;$(document).off("click",t+" li a").on("click",t+" li a",function(t){var r=$(this),i=r.next();if(i.is(".treeview-menu")&&i.is(":visible")&&!$("body").hasClass("sidebar-collapse"))i.slideUp(n,function(){i.removeClass("menu-open")}),i.parent("li").removeClass("active");else if(i.is(".treeview-menu")&&!i.is(":visible")){var a=r.parents("ul").first(),o=a.find("ul:visible").slideUp(n);o.removeClass("menu-open");var s=r.parent("li");i.slideDown(n,function(){i.addClass("menu-open"),a.find("li.active").removeClass("active"),s.addClass("active"),e.layout.fix()})}i.is(".treeview-menu")&&t.preventDefault()})},$.AdminLTE.controlSidebar={activate:function(){var t=this,e=$.AdminLTE.options.controlSidebarOptions,n=$(e.selector);$(e.toggleBtnSelector).on("click",function(r){r.preventDefault(),n.hasClass("control-sidebar-open")||$("body").hasClass("control-sidebar-open")?t.close(n,e.slide):t.open(n,e.slide)});var r=$(".control-sidebar-bg");t._fix(r),$("body").hasClass("fixed")?t._fixForFixed(n):$(".content-wrapper, .right-side").height() .box-body, > .box-footer, > form >.box-body, > form > .box-footer");n.hasClass("collapsed-box")?(t.children(":first").removeClass(e.icons.open).addClass(e.icons.collapse),r.slideDown(e.animationSpeed,function(){n.removeClass("collapsed-box")})):(t.children(":first").removeClass(e.icons.collapse).addClass(e.icons.open),r.slideUp(e.animationSpeed,function(){n.addClass("collapsed-box")}))},remove:function(t){t.parents(".box").first().slideUp(this.animationSpeed)}}}!function(t,e){"use strict";function n(){function e(t){return function(){c.waitForVendorCount&&(d[t]||(d[t]=[]),d[t].push(arguments))}}function n(e,n,r){return f[e]||(f[e]=[]),f[e].push(n),h[n]=r,function(){if(!this.settings.optOut){var n=Array.prototype.slice.apply(arguments);return this.$inject(["$q",t.bind(this,function(r){return r.all(f[e].map(function(e){if((h[e]||{}).async){var i=r.defer(),a=t.copy(n);return a.unshift(i.resolve),e.apply(this,a),i.promise}return r.when(e.apply(this,n))},this))})])}}}function r(t,e){e?setTimeout(t,e):t()}function i(e,i,a){if(!l.developerMode){g[e]=n(e,i,a);var o=l[e],s=o?o.bufferFlushDelay:null,u=null!==s?s:l.bufferFlushDelay;t.forEach(d[e],function(t,e){r(function(){i.apply(this,t)},e*u)})}}function a(t){return t.replace(/^./,function(t){return t.toUpperCase()})}function o(t){var r="register"+a(t);m[r]=function(e,n){i(t,e,n)},g[t]=n(t,e(t))}function s(e,n,r){t.forEach(n,r);for(var i in e)u[i]=e[i]}var u=this,l={pageTracking:{autoTrackFirstPage:!0,autoTrackVirtualPages:!0,trackRelativePath:!1,trackRoutes:!0,trackStates:!0,autoBasePath:!1,basePath:"",excludedRoutes:[],queryKeysWhitelisted:[],queryKeysBlacklisted:[]},eventTracking:{},bufferFlushDelay:1e3,trackExceptions:!1,optOut:!1,developerMode:!1},p=["pageTrack","eventTrack","exceptionTrack","transactionTrack","setAlias","setUsername","setUserProperties","setUserPropertiesOnce","setSuperProperties","setSuperPropertiesOnce","incrementProperty","userTimings","clearCookies"],d={},f={},h={},g={settings:l};g.setOptOut=function(t){this.settings.optOut=t,y()},g.getOptOut=function(){return this.settings.optOut};var m={$get:["$injector",function(t){return v(t)}],api:g,settings:l,virtualPageviews:function(t){this.settings.pageTracking.autoTrackVirtualPages=t},trackStates:function(t){this.settings.pageTracking.trackStates=t},trackRoutes:function(t){this.settings.pageTracking.trackRoutes=t},excludeRoutes:function(t){this.settings.pageTracking.excludedRoutes=t},queryKeysWhitelist:function(t){this.settings.pageTracking.queryKeysWhitelisted=t},queryKeysBlacklist:function(t){this.settings.pageTracking.queryKeysBlacklisted=t},firstPageview:function(t){this.settings.pageTracking.autoTrackFirstPage=t},withBase:function(e){this.settings.pageTracking.basePath=e?t.element(document).find("base").attr("href"):""},withAutoBase:function(t){this.settings.pageTracking.autoBasePath=t},trackExceptions:function(t){this.settings.trackExceptions=t},developerMode:function(t){this.settings.developerMode=t}},v=function(e){return t.extend(g,{$inject:e.invoke})},y=function(){s(m,p,o)};s(m,p,o)}function r(e,n,r,i){function a(t){for(var e=0;e-1)return!0}return!1}function o(t,e){for(var n=[],r=0;r0){for(var r=t.split("?"),i=r[0],a=r[1].split("&"),s=[],u=0;u-1)&&s.push(a[c]);var p="white"==n?s:o(a,s);return p.length>0?i+"?"+p.join("&"):i}return t}function u(t){return s(t,r.settings.pageTracking.queryKeysWhitelisted,"white")}function l(t){return s(t,r.settings.pageTracking.queryKeysBlacklisted,"black")}function c(t,e){a(t)||(t=u(t),t=l(t),r.pageTrack(t,e))}r.settings.pageTracking.autoTrackFirstPage&&i.invoke(["$location",function(t){var e=!0;if(i.has("$route")){var a=i.get("$route");if(a)for(var o in a.routes){e=!1;break}else null===a&&(e=!1)}else if(i.has("$state")){var s=i.get("$state");for(var u in s.get()){e=!1;break}}if(e)if(r.settings.pageTracking.autoBasePath&&(r.settings.pageTracking.basePath=n.location.pathname),r.settings.pageTracking.trackRelativePath){var l=r.settings.pageTracking.basePath+t.url();c(l,t)}else c(t.absUrl(),t)}]),r.settings.pageTracking.autoTrackVirtualPages&&i.invoke(["$location",function(t){r.settings.pageTracking.autoBasePath&&(r.settings.pageTracking.basePath=n.location.pathname+"#");var a=!0;if(r.settings.pageTracking.trackRoutes&&i.has("$route")){var o=i.get("$route");if(o)for(var s in o.routes){a=!1;break}else null===o&&(a=!1);e.$on("$routeChangeSuccess",function(e,n){if(!n||!(n.$$route||n).redirectTo){c(r.settings.pageTracking.basePath+t.url(),t)}})}r.settings.pageTracking.trackStates&&(i.has("$state")&&!i.has("$transitions")&&(a=!1,e.$on("$stateChangeSuccess",function(e,n){c(r.settings.pageTracking.basePath+t.url(),t)})),i.has("$state")&&i.has("$transitions")&&(a=!1,i.invoke(["$transitions",function(e){e.onSuccess({},function(e){e.options().notify&&c(r.settings.pageTracking.basePath+t.url(),t)})}]))),a&&e.$on("$locationChangeSuccess",function(e,n){if(!n||!(n.$$route||n).redirectTo)if(r.settings.pageTracking.trackRelativePath){var i=r.settings.pageTracking.basePath+t.url();c(i,t)}else c(t.absUrl(),t)})}]),r.settings.developerMode&&t.forEach(r,function(t,e){"function"==typeof t&&(r[e]=function(){})})}function i(e){return{restrict:"A",link:function(n,r,i){var a=i.analyticsOn||"click",o={};t.forEach(i.$attr,function(t,e){u(e)&&(o[l(e)]=i[e],i.$observe(e,function(t){o[l(e)]=t}))}),t.element(r[0]).bind(a,function(a){var u=i.analyticsEvent||s(r[0]);o.eventType=a.type,i.analyticsIf&&!n.$eval(i.analyticsIf)||(i.analyticsProperties&&t.extend(o,n.$eval(i.analyticsProperties)),e.eventTrack(u,o))})}}}function a(t){t.decorator("$exceptionHandler",["$delegate","$injector",function(t,e){return function(n,r){var i=t(n,r),a=e.get("$analytics");return a.settings.trackExceptions&&a.exceptionTrack(n,r),i}}])}function o(t){return["a:","button:","button:button","button:submit","input:button","input:submit"].indexOf(t.tagName.toLowerCase()+":"+(t.type||""))>=0}function s(t){return o(t)?t.innerText||t.value:t.id||t.name||t.tagName}function u(t){return"analytics"===t.substr(0,9)&&-1===["On","Event","If","Properties","EventType"].indexOf(t.substr(9))}function l(t){var e=t.slice(9);return void 0!==e&&null!==e&&e.length>0?e.substring(0,1).toLowerCase()+e.substring(1):e}var c=window.angulartics||(window.angulartics={});c.waitForVendorCount=0,c.waitForVendorApi=function(t,e,n,r,i){i||c.waitForVendorCount++,r||(r=n,n=void 0),!Object.prototype.hasOwnProperty.call(window,t)||void 0!==n&&void 0===window[t][n]?setTimeout(function(){c.waitForVendorApi(t,e,n,r,!0)},e):(c.waitForVendorCount--,r(window[t]))},t.module("angulartics",[]).provider("$analytics",n).run(["$rootScope","$window","$analytics","$injector",r]).directive("analyticsOn",["$analytics",i]).config(["$provide",a])}(angular),function(t,e){"use strict";function n(t,n,r){function i(t,r,i){var o,s;i=i||{},s=i.expires,o=e.isDefined(i.path)?i.path:a,e.isUndefined(r)&&(s="Thu, 01 Jan 1970 00:00:00 GMT",r=""),e.isString(s)&&(s=new Date(s));var u=encodeURIComponent(t)+"="+encodeURIComponent(r);u+=o?";path="+o:"",u+=i.domain?";domain="+i.domain:"",u+=s?";expires="+s.toUTCString():"",u+=i.secure?";secure":"";var l=u.length+1;return l>4096&&n.warn("Cookie '"+t+"' possibly not set or overflowed because it was too large ("+l+" > 4096 bytes)!"),u}var a=r.baseHref(),o=t[0];return function(t,e,n){o.cookie=i(t,e,n)}}e.module("ngCookies",["ng"]).info({angularVersion:"1.6.3"}).provider("$cookies",[function(){function t(t){return t?e.extend({},n,t):n}var n=this.defaults={};this.$get=["$$cookieReader","$$cookieWriter",function(n,r){return{get:function(t){return n()[t]},getObject:function(t){var n=this.get(t);return n?e.fromJson(n):n},getAll:function(){return n()},put:function(e,n,i){r(e,n,t(i))},putObject:function(t,n,r){this.put(t,e.toJson(n),r)},remove:function(e,n){r(e,void 0,t(n))}}}]}]),e.module("ngCookies").factory("$cookieStore",["$cookies",function(t){return{get:function(e){return t.getObject(e)},put:function(e,n){t.putObject(e,n)},remove:function(e){t.remove(e)}}}]),n.$inject=["$document","$log","$browser"],e.module("ngCookies").provider("$$cookieWriter",function(){this.$get=n})}(window,window.angular),function(){var t;t=angular.module("ui.bootstrap.showErrors",[]),t.directive("showErrors",["$timeout","showErrorsConfig","$interpolate",function(t,e,n){var r,i,a;return i=function(t){var n;return n=e.trigger,t&&null!=t.trigger&&(n=t.trigger),n},r=function(t){var n;return n=e.showSuccess,t&&null!=t.showSuccess&&(n=t.showSuccess),n},a=function(e,a,o,s){var u,l,c,p,d,f,h,g;if(u=!1,d=e.$eval(o.showErrors),f=r(d),g=i(d),l=a[0].querySelector(".form-control[name]"),p=angular.element(l),!(c=n(p.attr("name")||"")(e)))throw"show-errors element has no child input elements with a 'name' attribute and a 'form-control' class";return p.bind(g,function(){return u=!0,h(s[c].$invalid)}),e.$watch(function(){return s[c]&&s[c].$invalid},function(t){if(u)return h(t)}),e.$on("show-errors-check-validity",function(){return h(s[c].$invalid)}),e.$on("show-errors-reset",function(){return t(function(){return a.removeClass("has-error"),a.removeClass("has-success"),u=!1},0,!1)}),h=function(t){if(a.toggleClass("has-error",t),f)return a.toggleClass("has-success",!t)}},{restrict:"A",require:"^form",compile:function(t,e){if(-1===e.showErrors.indexOf("skipFormGroupCheck")&&!t.hasClass("form-group")&&!t.hasClass("input-group"))throw"show-errors element does not have the 'form-group' or 'input-group' class";return a}}}]),t.provider("showErrorsConfig",function(){var t,e;t=!1,e="blur",this.showSuccess=function(e){return t=e},this.trigger=function(t){return e=t},this.$get=function(){return{showSuccess:t,trigger:e}}})}.call(this),function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.angularCreditCards=t()}}(function(){return function t(e,n,r){function i(o,s){if(!n[o]){if(!e[o]){var u="function"==typeof require&&require;if(!s&&u)return u(o,!0);if(a)return a(o,!0);var l=new Error("Cannot find module '"+o+"'");throw l.code="MODULE_NOT_FOUND",l}var c=n[o]={exports:{}};e[o][0].call(c.exports,function(t){var n=e[o][1][t];return i(n||t)},c,c.exports,t,e,n,r)}return n[o].exports}for(var a="function"==typeof require&&require,o=0;o=new Date(e,t)}function i(t){return l(t)}function a(t,e){return t=t.toString(),e?t.substr(2,4):t}function o(t){return"number"==typeof t&&(t=l(t))>0}function s(t){return(new Date).getFullYear()>t}var u=t("is-valid-month"),l=t("parse-int"),c=t("parse-year");e.exports={isPast:r,month:{parse:i,isValid:u},year:{parse:c,format:a,isValid:o,isPast:s}}},{"is-valid-month":21,"parse-int":24,"parse-year":25}],13:[function(t,e,n){"use strict";e.exports={card:t("./card"),cvc:t("./cvc"),expiration:t("./expiration")}},{"./card":10,"./cvc":11,"./expiration":12}],14:[function(t,e,n){"use strict";var r=t("creditcards-types"),i=t("to-camel-case"),a=t("xtend");e.exports=a(r,{get:function(t){return r.types[i(t)]}})},{"creditcards-types":7,"to-camel-case":26,xtend:29}],15:[function(t,e,n){"use strict";var r=t("zero-fill"),i=t("parse-int"),a=r(2);e.exports=function(t,e){e=e||new Date;var n=e.getFullYear().toString().substr(0,2);return t=i(t),i(n+a(t))}},{"parse-int":24,"zero-fill":31}],16:[function(t,e,n){"use strict";e.exports=function(t){return function(e){if("string"!=typeof e)throw new TypeError("Expected string input");if(!e)return!1;for(var n,r=e.length,i=1,a=0;r;)n=parseInt(e.charAt(--r),10),a+=(i^=1)?t[n]:n;return!!a&&a%10==0}}([0,2,4,6,8,1,3,5,7,9])},{}],17:[function(t,e,n){var r=Array.prototype.slice,i=Object.prototype.toString;e.exports=function(t){var e=this;if("function"!=typeof e||"[object Function]"!==i.call(e))throw new TypeError("Function.prototype.bind called on incompatible "+e);for(var n,a=r.call(arguments,1),o=function(){if(this instanceof n){var i=e.apply(this,a.concat(r.call(arguments)));return Object(i)===i?i:this}return e.apply(t,a.concat(r.call(arguments)))},s=Math.max(0,e.length-a.length),u=[],l=0;l=1&&t<=12)}},{"is-integer":20}],22:[function(t,e,n){e.exports=Array.isArray||function(t){return"[object Array]"==Object.prototype.toString.call(t)}},{}],23:[function(t,e,n){"use strict";e.exports=Number.isNaN||function(t){return t!==t}},{}],24:[function(t,e,n){"use strict";var r=t("is-integer");e.exports=function(t){return"number"==typeof t?r(t)?t:void 0:"string"==typeof t&&/^-?\d+$/.test(t)?parseInt(t,10):void 0}},{"is-integer":20}],25:[function(t,e,n){"use strict";var r=t("parse-int"),i=t("expand-year");e.exports=function(t,e,n){if(null!=(t=r(t)))return e?i(t,n):t}},{"expand-year":15,"parse-int":24}],26:[function(t,e,n){function r(t){return i(t).replace(/\s(\w)/g,function(t,e){return e.toUpperCase()})}var i=t("to-space-case");e.exports=r},{"to-space-case":28}],27:[function(t,e,n){function r(t){return o.test(t)?t.toLowerCase():s.test(t)?(i(t)||t).toLowerCase():u.test(t)?a(t).toLowerCase():t.toLowerCase()}function i(t){return t.replace(l,function(t,e){return e?" "+e:""})}function a(t){return t.replace(c,function(t,e,n){return e+" "+n.toLowerCase().split("").join(" ")})}e.exports=r;var o=/\s/,s=/(_|-|\.|:)/,u=/([a-z][A-Z]|[A-Z][a-z])/,l=/[\W_]+(.|$)/g,c=/(.)([A-Z]+)/g},{}],28:[function(t,e,n){function r(t){return i(t).replace(/[\W_]+(.|$)/g,function(t,e){return e?" "+e:""}).trim()}var i=t("to-no-case");e.exports=r},{"to-no-case":27}],29:[function(t,e,n){function r(){for(var t={},e=0;e0?new Array(e+(/\./.test(n)?2:1)).join(r)+n:n+"")}},{}]},{},[3])(3)}),function(){angular.module("angular-jwt",["angular-jwt.options","angular-jwt.interceptor","angular-jwt.jwt","angular-jwt.authManager"]),angular.module("angular-jwt.authManager",[]).provider("authManager",function(){this.$get=["$rootScope","$injector","$location","jwtHelper","jwtInterceptor","jwtOptions",function(t,e,n,r,i,a){function o(t){return Array.isArray(t)?e.invoke(t,this,{options:null}):t()}function s(t){if(Array.isArray(t)||angular.isFunction(t))return e.invoke(t,h,{});throw new Error("unauthenticatedRedirector must be a function")}function u(){var t=o(h.tokenGetter);if(t)return!r.isTokenExpired(t)}function l(){t.isAuthenticated=!0}function c(){t.isAuthenticated=!1}function p(){t.$on("$locationChangeStart",function(){var e=o(h.tokenGetter);e&&(r.isTokenExpired(e)?t.$broadcast("tokenHasExpired",e):l())})}function d(){t.$on("unauthenticated",function(){s(h.unauthenticatedRedirector),c()})}function f(t,e){if(!e)return!1;var n=e.$$route?e.$$route:e.data;if(n&&!0===n.requiresLogin){var i=o(h.tokenGetter);i&&!r.isTokenExpired(i)||(t.preventDefault(),s(h.unauthenticatedRedirector))}}var h=a.getConfig();t.isAuthenticated=!1;var g=e.has("$state")?"$stateChangeStart":"$routeChangeStart";return t.$on(g,f),{authenticate:l,unauthenticate:c,getToken:function(){return o(h.tokenGetter)},redirect:function(){return s(h.unauthenticatedRedirector)},checkAuthOnRefresh:p,redirectWhenUnauthenticated:d,isAuthenticated:u}}]}),angular.module("angular-jwt.interceptor",[]).provider("jwtInterceptor",function(){this.urlParam,this.authHeader,this.authPrefix,this.whiteListedDomains,this.tokenGetter;var t=this;this.$get=["$q","$injector","$rootScope","urlUtils","jwtOptions",function(e,n,r,i,a){function o(t){if(!i.isSameOrigin(t)&&!s.whiteListedDomains.length)throw new Error("As of v0.1.0, requests to domains other than the application's origin must be white listed. Use jwtOptionsProvider.config({ whiteListedDomains: [] }); to whitelist.");for(var e=i.urlResolve(t).hostname.toLowerCase(),n=0;n(new Date).valueOf()+1e3*e)}}]),angular.module("angular-jwt.options",[]).provider("jwtOptions",function(){var t={};this.config=function(e){t=e},this.$get=function(){function e(){this.config=angular.extend({},n,t)}var n={urlParam:null,authHeader:"Authorization",authPrefix:"Bearer ",whiteListedDomains:[],tokenGetter:function(){return null},loginPath:"/",unauthenticatedRedirectPath:"/",unauthenticatedRedirector:["$location",function(t){t.path(this.unauthenticatedRedirectPath)}]};return e.prototype.getConfig=function(){return this.config},new e}}),angular.module("angular-jwt.interceptor").service("urlUtils",function(){function t(t){var e=t;return n.setAttribute("href",e),e=n.href,n.setAttribute("href",e),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port, +pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}function e(e){var n=angular.isString(e)?t(e):e;return n.protocol===r.protocol&&n.host===r.host}var n=document.createElement("a"),r=t(window.location.href);return{urlResolve:t,isSameOrigin:e}})}(),function(t,e){"use strict";function n(){function t(t,e){if(t)return i(t)?t.indexOf(e)>=0:t.hasOwnProperty(e)}return["$animate",function(e){return{restrict:"AE",transclude:"element",priority:1,terminal:!0,require:"^^ngMessages",link:function(n,r,a,o,s){var u,l=r[0],c=a.ngMessage||a.when,p=a.ngMessageExp||a.whenExp,d=function(t){u=t?i(t)?t:t.split(/[\s,]+/):null,o.reRender()};p?(d(n.$eval(p)),n.$watchCollection(p,d)):d(c);var f,h;o.register(l,h={test:function(e){return t(u,e)},attach:function(){f||s(function(t,n){e.enter(t,null,r),f=t;var i=f.$$attachId=o.getAttachId();f.on("$destroy",function(){f&&f.$$attachId===i&&(o.deregister(l),h.detach()),n.$destroy()})})},detach:function(){if(f){var t=f;f=null,e.leave(t)}}})}}}]}var r,i,a,o;e.module("ngMessages",[],function(){r=e.forEach,i=e.isArray,a=e.isString,o=e.element}).info({angularVersion:"1.6.3"}).directive("ngMessages",["$animate",function(t){function e(t,e){return a(e)&&0===e.length||n(t.$eval(e))}function n(t){return a(t)?t.length:!!t}return{require:"ngMessages",restrict:"AE",controller:["$element","$scope","$attrs",function(i,a,o){function s(t,e){for(var n=e,r=[];n&&n!==t;){var i=n.$$ngMessageNode;if(i&&i.length)return g[i];n.childNodes.length&&-1===r.indexOf(n)?(r.push(n),n=n.childNodes[n.childNodes.length-1]):n.previousSibling?n=n.previousSibling:(n=n.parentNode,r.push(n))}}function u(t,e,n){var r=g[n];if(c.head){var i=s(t,e);i?(r.next=i.next,i.next=r):(r.next=c.head,c.head=r)}else c.head=r}function l(t,e,n){var r=g[n],i=s(t,e);i?i.next=r.next:c.head=r.next}var c=this,p=0,d=0;this.getAttachId=function(){return d++};var f,h,g=this.messages={};this.render=function(s){s=s||{},f=!1,h=s;for(var u=e(a,o.ngMessagesMultiple)||e(a,o.multiple),l=[],p={},d=c.head,g=!1,m=0;null!=d;){m++;var v=d.message,y=!1;g||r(s,function(t,e){if(!y&&n(t)&&v.test(e)){if(p[e])return;p[e]=!0,y=!0,v.attach()}}),y?g=!u:l.push(v),d=d.next}r(l,function(t){t.detach()}),l.length!==m?t.setClass(i,"ng-active","ng-inactive"):t.setClass(i,"ng-inactive","ng-active")},a.$watchCollection(o.ngMessages||o.for,c.render),i.on("$destroy",function(){r(g,function(t){t.message.detach()})}),this.reRender=function(){f||(f=!0,a.$evalAsync(function(){f&&h&&c.render(h)}))},this.register=function(t,e){var n=p.toString();g[n]={message:e},u(i[0],t,n),t.$$ngMessageNode=n,p++,c.reRender()},this.deregister=function(t){var e=t.$$ngMessageNode;delete t.$$ngMessageNode,l(i[0],t,e),delete g[e],c.reRender()}}]}}]).directive("ngMessagesInclude",["$templateRequest","$document","$compile",function(t,e,n){function r(t,r){var i=n.$$createComment?n.$$createComment("ngMessagesInclude",r):e[0].createComment(" ngMessagesInclude: "+r+" "),a=o(i);t.after(a),t.remove()}return{restrict:"AE",require:"^^ngMessages",link:function(e,i,o){var s=o.ngMessagesInclude||o.src;t(s).then(function(t){e.$$destroyed||(a(t)&&!t.trim()?r(i,s):n(t)(e,function(t){i.after(t),r(i,s)}))})}}}]).directive("ngMessage",n()).directive("ngMessageExp",n())}(window,window.angular);var app=angular.module("angular-promise-polyfill",[]).run(["$q","$window",function(t,e){e.Promise=function(e){return t(e)},e.Promise.all=t.all.bind(t),e.Promise.reject=t.reject.bind(t),e.Promise.resolve=t.when.bind(t),e.Promise.race=function(e){for(var n=t.defer(),r=0;r/g,">")}function m(t,e){var n=!1,r=i(t,t.push);return{start:function(t,i){t=u(t),!n&&B[t]&&(n=t),n||!0!==I[t]||(r("<"),r(t),o(i,function(n,i){var a=u(i),o="img"===t&&"src"===a||"background"===a;!0!==_[a]||!0===O[a]&&!e(n,o)||(r(" "),r(i),r('="'),r(g(n)),r('"'))}),r(">"))},end:function(t){t=u(t),n||!0!==I[t]||!0===C[t]||(r("")),t==n&&(n=!1)},chars:function(t){n||r(g(t))}}}function v(e){for(;e;){if(e.nodeType===t.Node.ELEMENT_NODE)for(var n=e.attributes,r=0,i=n.length;r"\u201d\u2019]/i);)d=p[0],p[2]||p[4]||(d=(p[3]?"http://":"mailto:")+d),f=p.index,c(g.substr(0,f)),function(t,e){var n,r=h(t);m.push("'),c(e),m.push("")}(d,p[0].replace(/^mailto:/i,"")),g=g.substring(f+p[0].length);return c(g),t(m.join(""))}}])}(window,window.angular),function(){"use strict";function t(t,e,n,r,i,a,o){function s(){return $.length}function u(t){if(1!==arguments.length||t)if(t)h(t.toastId);else for(var e=0;e<$.length;e++)h($[e].toastId)}function l(t,e,n){return g(m().iconClasses.error,t,e,n)}function c(t,e,n){return g(m().iconClasses.info,t,e,n)}function p(t,e,n){return g(m().iconClasses.success,t,e,n)}function d(t,e,n){return g(m().iconClasses.warning,t,e,n)}function f(t,e){t&&t.isOpened&&$.indexOf(t)>=0&&t.scope.refreshTimer(e)}function h(e,n){function r(){return!$.length}var i=function(t){for(var e=0;e<$.length;e++)if($[e].toastId===t)return $[e]}(e);i&&!i.deleting&&(i.deleting=!0,i.isOpened=!1,t.leave(i.el).then(function(){i.scope.options.onHidden&&i.scope.options.onHidden(!!n,i),i.scope.$destroy();var t=$.indexOf(i);delete C[i.scope.message],$.splice(t,1);var e=a.maxOpened;e&&$.length>=e&&$[e-1].open.resolve(),r()&&(b.remove(),b=null,x=o.defer())}))}function g(t,e,n,r){return angular.isObject(n)&&(r=n,n=null),y({iconClass:t,message:e,optionsOverride:r,title:n})}function m(){return angular.extend({},a)}function v(e){if(b)return x.promise;b=angular.element("
"),b.attr("id",e.containerId),b.addClass(e.positionClass),b.css({"pointer-events":"auto"});var n=angular.element(document.querySelector(e.target));if(!n||!n.length)throw"Target for toasts doesn't exist";return t.enter(b,n).then(function(){x.resolve()}),x.promise}function y(n){function a(t,e,n){function r(e){if(n[e])return function(){n[e](t)}}n.allowHtml?(t.scope.allowHtml=!0,t.scope.title=i.trustAsHtml(e.title),t.scope.message=i.trustAsHtml(e.message)):(t.scope.title=e.title,t.scope.message=e.message),t.scope.toastType=t.iconClass,t.scope.toastId=t.toastId,t.scope.extraData=n.extraData,t.scope.options={extendedTimeOut:n.extendedTimeOut,messageClass:n.messageClass,onHidden:n.onHidden,onShown:r("onShown"),onTap:r("onTap"),progressBar:n.progressBar,tapToDismiss:n.tapToDismiss,timeOut:n.timeOut,titleClass:n.titleClass,toastClass:n.toastClass},n.closeButton&&(t.scope.options.closeHtml=n.closeHtml)}function s(t){var n=angular.element("
");return e.get("$compile")(n)(t)}var u=m();if(!function(){var t=u.preventDuplicates&&n.message===k,e=u.preventOpenDuplicates&&C[n.message];return!(!t&&!e)||(k=n.message,C[n.message]=!0,!1)}()){var l=function(){var t={toastId:w++,isOpened:!1,scope:r.$new(),open:o.defer()};return t.iconClass=n.iconClass,n.optionsOverride&&(angular.extend(u,function(t){for(var e=["containerId","iconClasses","maxOpened","newestOnTop","positionClass","preventDuplicates","preventOpenDuplicates","templates"],n=0,r=e.length;nu.maxOpened}())for(var c=$.slice(0,$.length-u.maxOpened),p=0,d=c.length;p×",containerId:"toast-container",extendedTimeOut:1e3,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},maxOpened:0,messageClass:"toast-message",newestOnTop:!0,onHidden:null,onShown:null,onTap:null,positionClass:"toast-top-right",preventDuplicates:!1,preventOpenDuplicates:!1,progressBar:!1,tapToDismiss:!0,target:"body",templates:{toast:"directives/toast/toast.html",progressbar:"directives/progressbar/progressbar.html"},timeOut:5e3,titleClass:"toast-title",toastClass:"toast"})}(),function(){"use strict";function t(t){function e(t,e,n,r){function i(){var t=(s-(new Date).getTime())/o*100;e.css("width",t+"%")}var a,o,s;r.progressBar=t,t.start=function(t){a&&clearInterval(a),o=parseFloat(t),s=(new Date).getTime()+o,a=setInterval(i,10)},t.stop=function(){a&&clearInterval(a)},t.$on("$destroy",function(){clearInterval(a)})}return{require:"^toast",templateUrl:function(){return t.templates.progressbar},link:e}}angular.module("toastr").directive("progressBar",t),t.$inject=["toastrConfig"]}(),function(){"use strict";function t(){this.progressBar=null,this.startProgressBar=function(t){this.progressBar&&this.progressBar.start(t)},this.stopProgressBar=function(){this.progressBar&&this.progressBar.stop()}}angular.module("toastr").controller("ToastController",t)}(),function(){"use strict";function t(t,e,n,r){function i(n,i,a,o){function s(t){return o.startProgressBar(t),e(function(){o.stopProgressBar(),r.remove(n.toastId)},t,1)}function u(){n.progressBar=!1,o.stopProgressBar()}var l;if(n.toastClass=n.options.toastClass,n.titleClass=n.options.titleClass,n.messageClass=n.options.messageClass,n.progressBar=n.options.progressBar,function(){return n.options.closeHtml}()){var c=angular.element(n.options.closeHtml),p=t.get("$compile");c.addClass("toast-close-button"),c.attr("ng-click","close(true, $event)"),p(c)(n),i.children().prepend(c)}n.init=function(){n.options.timeOut&&(l=s(n.options.timeOut)),n.options.onShown&&n.options.onShown()},i.on("mouseenter",function(){u(),l&&e.cancel(l)}),n.tapToast=function(){angular.isFunction(n.options.onTap)&&n.options.onTap(),n.options.tapToDismiss&&n.close(!0)},n.close=function(t,e){e&&angular.isFunction(e.stopPropagation)&&e.stopPropagation(),r.remove(n.toastId,t)},n.refreshTimer=function(t){l&&(e.cancel(l),l=s(t||n.options.timeOut))},i.on("mouseleave",function(){0===n.options.timeOut&&0===n.options.extendedTimeOut||(n.$apply(function(){n.progressBar=n.options.progressBar}),l=s(n.options.extendedTimeOut))})}return{templateUrl:function(){return n.templates.toast},controller:"ToastController",link:i}}angular.module("toastr").directive("toast",t),t.$inject=["$injector","$interval","toastrConfig","toastr"]}(),function(){"use strict";function t(t,e,n,r,i,a,o){function s(){return $.length}function u(t){if(1!==arguments.length||t)if(t)h(t.toastId);else for(var e=0;e<$.length;e++)h($[e].toastId)}function l(t,e,n){return g(m().iconClasses.error,t,e,n)}function c(t,e,n){return g(m().iconClasses.info,t,e,n)}function p(t,e,n){return g(m().iconClasses.success,t,e,n)}function d(t,e,n){return g(m().iconClasses.warning,t,e,n)}function f(t,e){t&&t.isOpened&&$.indexOf(t)>=0&&t.scope.refreshTimer(e)}function h(e,n){function r(){return!$.length}var i=function(t){for(var e=0;e<$.length;e++)if($[e].toastId===t)return $[e]}(e);i&&!i.deleting&&(i.deleting=!0,i.isOpened=!1,t.leave(i.el).then(function(){i.scope.options.onHidden&&i.scope.options.onHidden(!!n,i),i.scope.$destroy();var t=$.indexOf(i);delete C[i.scope.message],$.splice(t,1);var e=a.maxOpened;e&&$.length>=e&&$[e-1].open.resolve(),r()&&(b.remove(),b=null,x=o.defer())}))}function g(t,e,n,r){return angular.isObject(n)&&(r=n,n=null),y({iconClass:t,message:e,optionsOverride:r,title:n})}function m(){return angular.extend({},a)}function v(e){if(b)return x.promise;b=angular.element("
"),b.attr("id",e.containerId),b.addClass(e.positionClass),b.css({"pointer-events":"auto"});var n=angular.element(document.querySelector(e.target));if(!n||!n.length)throw"Target for toasts doesn't exist";return t.enter(b,n).then(function(){x.resolve()}),x.promise}function y(n){function a(t,e,n){function r(e){if(n[e])return function(){n[e](t)}}n.allowHtml?(t.scope.allowHtml=!0,t.scope.title=i.trustAsHtml(e.title),t.scope.message=i.trustAsHtml(e.message)):(t.scope.title=e.title,t.scope.message=e.message),t.scope.toastType=t.iconClass,t.scope.toastId=t.toastId,t.scope.extraData=n.extraData,t.scope.options={extendedTimeOut:n.extendedTimeOut,messageClass:n.messageClass,onHidden:n.onHidden,onShown:r("onShown"),onTap:r("onTap"),progressBar:n.progressBar,tapToDismiss:n.tapToDismiss,timeOut:n.timeOut,titleClass:n.titleClass,toastClass:n.toastClass},n.closeButton&&(t.scope.options.closeHtml=n.closeHtml)}function s(t){var n=angular.element("
");return e.get("$compile")(n)(t)}var u=m();if(!function(){var t=u.preventDuplicates&&n.message===k,e=u.preventOpenDuplicates&&C[n.message];return!(!t&&!e)||(k=n.message,C[n.message]=!0,!1)}()){var l=function(){var t={toastId:w++,isOpened:!1,scope:r.$new(),open:o.defer()};return t.iconClass=n.iconClass,n.optionsOverride&&(angular.extend(u,function(t){for(var e=["containerId","iconClasses","maxOpened","newestOnTop","positionClass","preventDuplicates","preventOpenDuplicates","templates"],n=0,r=e.length;nu.maxOpened}())for(var c=$.slice(0,$.length-u.maxOpened),p=0,d=c.length;p×",containerId:"toast-container",extendedTimeOut:1e3,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},maxOpened:0,messageClass:"toast-message",newestOnTop:!0,onHidden:null,onShown:null,onTap:null,positionClass:"toast-top-right",preventDuplicates:!1,preventOpenDuplicates:!1,progressBar:!1,tapToDismiss:!0,target:"body",templates:{toast:"directives/toast/toast.html",progressbar:"directives/progressbar/progressbar.html"},timeOut:5e3,titleClass:"toast-title",toastClass:"toast"})}(),function(){"use strict";function t(t){function e(t,e,n,r){function i(){var t=(s-(new Date).getTime())/o*100;e.css("width",t+"%")}var a,o,s;r.progressBar=t,t.start=function(t){a&&clearInterval(a),o=parseFloat(t),s=(new Date).getTime()+o,a=setInterval(i,10)},t.stop=function(){a&&clearInterval(a)},t.$on("$destroy",function(){clearInterval(a)})}return{require:"^toast",templateUrl:function(){return t.templates.progressbar},link:e}}angular.module("toastr").directive("progressBar",t),t.$inject=["toastrConfig"]}(),function(){"use strict";function t(){this.progressBar=null,this.startProgressBar=function(t){this.progressBar&&this.progressBar.start(t)},this.stopProgressBar=function(){this.progressBar&&this.progressBar.stop()}}angular.module("toastr").controller("ToastController",t)}(),function(){"use strict";function t(t,e,n,r){function i(n,i,a,o){function s(t){return o.startProgressBar(t),e(function(){o.stopProgressBar(),r.remove(n.toastId)},t,1)}function u(){n.progressBar=!1,o.stopProgressBar()}var l;if(n.toastClass=n.options.toastClass,n.titleClass=n.options.titleClass,n.messageClass=n.options.messageClass,n.progressBar=n.options.progressBar,function(){return n.options.closeHtml}()){var c=angular.element(n.options.closeHtml),p=t.get("$compile");c.addClass("toast-close-button"),c.attr("ng-click","close(true, $event)"),p(c)(n),i.children().prepend(c)}n.init=function(){n.options.timeOut&&(l=s(n.options.timeOut)),n.options.onShown&&n.options.onShown()},i.on("mouseenter",function(){u(),l&&e.cancel(l)}),n.tapToast=function(){angular.isFunction(n.options.onTap)&&n.options.onTap(),n.options.tapToDismiss&&n.close(!0)},n.close=function(t,e){e&&angular.isFunction(e.stopPropagation)&&e.stopPropagation(),r.remove(n.toastId,t)},n.refreshTimer=function(t){l&&(e.cancel(l),l=s(t||n.options.timeOut))},i.on("mouseleave",function(){0===n.options.timeOut&&0===n.options.extendedTimeOut||(n.$apply(function(){n.progressBar=n.options.progressBar}),l=s(n.options.extendedTimeOut))})}return{templateUrl:function(){return n.templates.toast},controller:"ToastController",link:i}}angular.module("toastr").directive("toast",t),t.$inject=["$injector","$interval","toastrConfig","toastr"]}(),angular.module("toastr").run(["$templateCache",function(t){t.put("directives/progressbar/progressbar.html",'
\n'),t.put("directives/toast/toast.html",'
\n
\n
{{title}}
\n
{{message}}
\n
\n
\n
\n \n
\n')}]), angular.module("ui.bootstrap",["ui.bootstrap.tpls","ui.bootstrap.collapse","ui.bootstrap.tabindex","ui.bootstrap.accordion","ui.bootstrap.alert","ui.bootstrap.buttons","ui.bootstrap.carousel","ui.bootstrap.dateparser","ui.bootstrap.isClass","ui.bootstrap.datepicker","ui.bootstrap.position","ui.bootstrap.datepickerPopup","ui.bootstrap.debounce","ui.bootstrap.multiMap","ui.bootstrap.dropdown","ui.bootstrap.stackedMap","ui.bootstrap.modal","ui.bootstrap.paging","ui.bootstrap.pager","ui.bootstrap.pagination","ui.bootstrap.tooltip","ui.bootstrap.popover","ui.bootstrap.progressbar","ui.bootstrap.rating","ui.bootstrap.tabs","ui.bootstrap.timepicker","ui.bootstrap.typeahead"]),angular.module("ui.bootstrap.tpls",["uib/template/accordion/accordion-group.html","uib/template/accordion/accordion.html","uib/template/alert/alert.html","uib/template/carousel/carousel.html","uib/template/carousel/slide.html","uib/template/datepicker/datepicker.html","uib/template/datepicker/day.html","uib/template/datepicker/month.html","uib/template/datepicker/year.html","uib/template/datepickerPopup/popup.html","uib/template/modal/window.html","uib/template/pager/pager.html","uib/template/pagination/pagination.html","uib/template/tooltip/tooltip-html-popup.html","uib/template/tooltip/tooltip-popup.html","uib/template/tooltip/tooltip-template-popup.html","uib/template/popover/popover-html.html","uib/template/popover/popover-template.html","uib/template/popover/popover.html","uib/template/progressbar/bar.html","uib/template/progressbar/progress.html","uib/template/progressbar/progressbar.html","uib/template/rating/rating.html","uib/template/tabs/tab.html","uib/template/tabs/tabset.html","uib/template/timepicker/timepicker.html","uib/template/typeahead/typeahead-match.html","uib/template/typeahead/typeahead-popup.html"]),angular.module("ui.bootstrap.collapse",[]).directive("uibCollapse",["$animate","$q","$parse","$injector",function(t,e,n,r){var i=r.has("$animateCss")?r.get("$animateCss"):null;return{link:function(r,a,o){function s(t){return m?{width:t.scrollWidth+"px"}:{height:t.scrollHeight+"px"}}function u(){a.hasClass("collapse")&&a.hasClass("in")||e.resolve(d(r)).then(function(){a.removeClass("collapse").addClass("collapsing").attr("aria-expanded",!0).attr("aria-hidden",!1),i?i(a,{addClass:"in",easing:"ease",css:{overflow:"hidden"},to:s(a[0])}).start().finally(l):t.addClass(a,"in",{css:{overflow:"hidden"},to:s(a[0])}).then(l)},angular.noop)}function l(){a.removeClass("collapsing").addClass("collapse").css(v),f(r)}function c(){if(!a.hasClass("collapse")&&!a.hasClass("in"))return p();e.resolve(h(r)).then(function(){a.css(s(a[0])).removeClass("collapse").addClass("collapsing").attr("aria-expanded",!1).attr("aria-hidden",!0),i?i(a,{removeClass:"in",to:y}).start().finally(p):t.removeClass(a,"in",{to:y}).then(p)},angular.noop)}function p(){a.css(y),a.removeClass("collapsing").addClass("collapse"),g(r)}var d=n(o.expanding),f=n(o.expanded),h=n(o.collapsing),g=n(o.collapsed),m=!1,v={},y={};!function(){m=!!("horizontal"in o),m?(v={width:""},y={width:"0"}):(v={height:""},y={height:"0"}),r.$eval(o.uibCollapse)||a.addClass("in").addClass("collapse").attr("aria-expanded",!0).attr("aria-hidden",!1).css(v)}(),r.$watch(o.uibCollapse,function(t){t?c():u()})}}}]),angular.module("ui.bootstrap.tabindex",[]).directive("uibTabindexToggle",function(){return{restrict:"A",link:function(t,e,n){n.$observe("disabled",function(t){n.$set("tabindex",t?-1:null)})}}}),angular.module("ui.bootstrap.accordion",["ui.bootstrap.collapse","ui.bootstrap.tabindex"]).constant("uibAccordionConfig",{closeOthers:!0}).controller("UibAccordionController",["$scope","$attrs","uibAccordionConfig",function(t,e,n){this.groups=[],this.closeOthers=function(r){(angular.isDefined(e.closeOthers)?t.$eval(e.closeOthers):n.closeOthers)&&angular.forEach(this.groups,function(t){t!==r&&(t.isOpen=!1)})},this.addGroup=function(t){var e=this;this.groups.push(t),t.$on("$destroy",function(n){e.removeGroup(t)})},this.removeGroup=function(t){var e=this.groups.indexOf(t);-1!==e&&this.groups.splice(e,1)}}]).directive("uibAccordion",function(){return{controller:"UibAccordionController",controllerAs:"accordion",transclude:!0,templateUrl:function(t,e){return e.templateUrl||"uib/template/accordion/accordion.html"}}}).directive("uibAccordionGroup",function(){return{require:"^uibAccordion",transclude:!0,restrict:"A",templateUrl:function(t,e){return e.templateUrl||"uib/template/accordion/accordion-group.html"},scope:{heading:"@",panelClass:"@?",isOpen:"=?",isDisabled:"=?"},controller:function(){this.setHeading=function(t){this.heading=t}},link:function(t,e,n,r){e.addClass("panel"),r.addGroup(t),t.openClass=n.openClass||"panel-open",t.panelClass=n.panelClass||"panel-default",t.$watch("isOpen",function(n){e.toggleClass(t.openClass,!!n),n&&r.closeOthers(t)}),t.toggleOpen=function(e){t.isDisabled||e&&32!==e.which||(t.isOpen=!t.isOpen)};var i="accordiongroup-"+t.$id+"-"+Math.floor(1e4*Math.random());t.headingId=i+"-tab",t.panelId=i+"-panel"}}}).directive("uibAccordionHeading",function(){return{transclude:!0,template:"",replace:!0,require:"^uibAccordionGroup",link:function(t,e,n,r,i){r.setHeading(i(t,angular.noop))}}}).directive("uibAccordionTransclude",function(){return{require:"^uibAccordionGroup",link:function(t,e,n,r){t.$watch(function(){return r[n.uibAccordionTransclude]},function(t){if(t){var n=angular.element(e[0].querySelector("uib-accordion-header,data-uib-accordion-header,x-uib-accordion-header,uib\\:accordion-header,[uib-accordion-header],[data-uib-accordion-header],[x-uib-accordion-header]"));n.html(""),n.append(t)}})}}}),angular.module("ui.bootstrap.alert",[]).controller("UibAlertController",["$scope","$element","$attrs","$interpolate","$timeout",function(t,e,n,r,i){t.closeable=!!n.close,e.addClass("alert"),n.$set("role","alert"),t.closeable&&e.addClass("alert-dismissible");var a=angular.isDefined(n.dismissOnTimeout)?r(n.dismissOnTimeout)(t.$parent):null;a&&i(function(){t.close()},parseInt(a,10))}]).directive("uibAlert",function(){return{controller:"UibAlertController",controllerAs:"alert",restrict:"A",templateUrl:function(t,e){return e.templateUrl||"uib/template/alert/alert.html"},transclude:!0,scope:{close:"&"}}}),angular.module("ui.bootstrap.buttons",[]).constant("uibButtonConfig",{activeClass:"active",toggleEvent:"click"}).controller("UibButtonsController",["uibButtonConfig",function(t){this.activeClass=t.activeClass||"active",this.toggleEvent=t.toggleEvent||"click"}]).directive("uibBtnRadio",["$parse",function(t){return{require:["uibBtnRadio","ngModel"],controller:"UibButtonsController",controllerAs:"buttons",link:function(e,n,r,i){var a=i[0],o=i[1],s=t(r.uibUncheckable);n.find("input").css({display:"none"}),o.$render=function(){n.toggleClass(a.activeClass,angular.equals(o.$modelValue,e.$eval(r.uibBtnRadio)))},n.on(a.toggleEvent,function(){if(!r.disabled){var t=n.hasClass(a.activeClass);t&&!angular.isDefined(r.uncheckable)||e.$apply(function(){o.$setViewValue(t?null:e.$eval(r.uibBtnRadio)),o.$render()})}}),r.uibUncheckable&&e.$watch(s,function(t){r.$set("uncheckable",t?"":void 0)})}}}]).directive("uibBtnCheckbox",function(){return{require:["uibBtnCheckbox","ngModel"],controller:"UibButtonsController",controllerAs:"button",link:function(t,e,n,r){function i(){return o(n.btnCheckboxTrue,!0)}function a(){return o(n.btnCheckboxFalse,!1)}function o(e,n){return angular.isDefined(e)?t.$eval(e):n}var s=r[0],u=r[1];e.find("input").css({display:"none"}),u.$render=function(){e.toggleClass(s.activeClass,angular.equals(u.$modelValue,i()))},e.on(s.toggleEvent,function(){n.disabled||t.$apply(function(){u.$setViewValue(e.hasClass(s.activeClass)?a():i()),u.$render()})})}}}),angular.module("ui.bootstrap.carousel",[]).controller("UibCarouselController",["$scope","$element","$interval","$timeout","$animate",function(t,e,n,r,i){function a(t){for(var e=0;e1){g[r].element.data(m,n.direction);var s=h.getCurrentIndex();angular.isNumber(s)&&g[s].element&&g[s].element.data(m,n.direction),t.$currentTransition=!0,i.on("addClass",g[r].element,function(e,n){"close"===n&&(t.$currentTransition=null,i.off("addClass",e))})}t.active=n.index,v=n.index,a(r),c()}}function s(t){for(var e=0;e0&&(d=n(p,e))}function p(){var e=+t.interval;f&&!isNaN(e)&&e>0&&g.length?t.next():t.pause()}var d,f,h=this,g=h.slides=t.slides=[],m="uib-slideDirection",v=t.active,y=!1;e.addClass("carousel"),h.addSlide=function(e,n){g.push({slide:e,element:n}),g.sort(function(t,e){return+t.slide.index-+e.slide.index}),(e.index===t.active||1===g.length&&!angular.isNumber(t.active))&&(t.$currentTransition&&(t.$currentTransition=null),v=e.index,t.active=e.index,a(v),h.select(g[s(e)]),1===g.length&&t.play())},h.getCurrentIndex=function(){for(var t=0;t0&&v===n?n>=g.length?(v=g.length-1,t.active=v,a(v),h.select(g[g.length-1])):(v=n,t.active=v,a(v),h.select(g[n])):v>n&&(v--,t.active=v),0===g.length&&(v=null,t.active=null)},h.select=t.select=function(e,n){var r=s(e.slide);void 0===n&&(n=r>h.getCurrentIndex()?"next":"prev"),e.slide.index===v||t.$currentTransition||o(e.slide,r,n)},t.indexOfSlide=function(t){return+t.slide.index},t.isActive=function(e){return t.active===e.slide.index},t.isPrevDisabled=function(){return 0===t.active&&t.noWrap()},t.isNextDisabled=function(){return t.active===g.length-1&&t.noWrap()},t.pause=function(){t.noPause||(f=!1,u())},t.play=function(){f||(f=!0,c())},e.on("mouseenter",t.pause),e.on("mouseleave",t.play),t.$on("$destroy",function(){y=!0,u()}),t.$watch("noTransition",function(t){i.enabled(e,!t)}),t.$watch("interval",c),t.$watchCollection("slides",l),t.$watch("active",function(t){if(angular.isNumber(t)&&v!==t){for(var e=0;e-1){var a=!1;t=t.split("");for(var o=i;o-1){t=t.split(""),n[i]="("+r.regex+")",t[i]="$";for(var a=i+1,o=i+r.key.length;a=t.length||"'"!==t.charAt(i+1))&&(r.push(u(t,n,i)),n=null);else if(i===t.length)for(;n28?29===n&&(t%4==0&&t%100!=0||t%400==0):3!==e&&5!==e&&8!==e&&10!==e||n<31)}function p(t){return parseInt(t,10)}function d(t,e){return t&&e?m(t,e):t}function f(t,e){return t&&e?m(t,e,!0):t}function h(t,e){t=t.replace(/:/g,"");var n=Date.parse("Jan 01, 1970 00:00:00 "+t)/6e4;return isNaN(n)?e:n}function g(t,e){return t=new Date(t.getTime()),t.setMinutes(t.getMinutes()+e),t}function m(t,e,n){n=n?-1:1;var r=t.getTimezoneOffset();return g(t,n*(h(e,r)-r))}var v,y;this.init=function(){v=e.id,this.parsers={},this.formatters={},y=[{key:"yyyy",regex:"\\d{4}",apply:function(t){this.year=+t},formatter:function(t){var e=new Date;return e.setFullYear(Math.abs(t.getFullYear())),n(e,"yyyy")}},{key:"yy",regex:"\\d{2}",apply:function(t){t=+t,this.year=t<69?t+2e3:t+1900},formatter:function(t){var e=new Date;return e.setFullYear(Math.abs(t.getFullYear())),n(e,"yy")}},{key:"y",regex:"\\d{1,4}",apply:function(t){this.year=+t},formatter:function(t){var e=new Date;return e.setFullYear(Math.abs(t.getFullYear())),n(e,"y")}},{key:"M!",regex:"0?[1-9]|1[0-2]",apply:function(t){this.month=t-1},formatter:function(t){return/^[0-9]$/.test(t.getMonth())?n(t,"MM"):n(t,"M")}},{key:"MMMM",regex:e.DATETIME_FORMATS.MONTH.join("|"),apply:function(t){this.month=e.DATETIME_FORMATS.MONTH.indexOf(t)},formatter:function(t){return n(t,"MMMM")}},{key:"MMM",regex:e.DATETIME_FORMATS.SHORTMONTH.join("|"),apply:function(t){this.month=e.DATETIME_FORMATS.SHORTMONTH.indexOf(t)},formatter:function(t){return n(t,"MMM")}},{key:"MM",regex:"0[1-9]|1[0-2]",apply:function(t){this.month=t-1},formatter:function(t){return n(t,"MM")}},{key:"M",regex:"[1-9]|1[0-2]",apply:function(t){this.month=t-1},formatter:function(t){return n(t,"M")}},{key:"d!",regex:"[0-2]?[0-9]{1}|3[0-1]{1}",apply:function(t){this.date=+t},formatter:function(t){return/^[1-9]$/.test(t.getDate())?n(t,"dd"):n(t,"d")}},{key:"dd",regex:"[0-2][0-9]{1}|3[0-1]{1}",apply:function(t){this.date=+t},formatter:function(t){return n(t,"dd")}},{key:"d",regex:"[1-2]?[0-9]{1}|3[0-1]{1}",apply:function(t){this.date=+t},formatter:function(t){return n(t,"d")}},{key:"EEEE",regex:e.DATETIME_FORMATS.DAY.join("|"),formatter:function(t){return n(t,"EEEE")}},{key:"EEE",regex:e.DATETIME_FORMATS.SHORTDAY.join("|"),formatter:function(t){return n(t,"EEE")}},{key:"HH",regex:"(?:0|1)[0-9]|2[0-3]",apply:function(t){this.hours=+t},formatter:function(t){return n(t,"HH")}},{key:"hh",regex:"0[0-9]|1[0-2]",apply:function(t){this.hours=+t},formatter:function(t){return n(t,"hh")}},{key:"H",regex:"1?[0-9]|2[0-3]",apply:function(t){this.hours=+t},formatter:function(t){return n(t,"H")}},{key:"h",regex:"[0-9]|1[0-2]",apply:function(t){this.hours=+t},formatter:function(t){return n(t,"h")}},{key:"mm",regex:"[0-5][0-9]",apply:function(t){this.minutes=+t},formatter:function(t){return n(t,"mm")}},{key:"m",regex:"[0-9]|[1-5][0-9]",apply:function(t){this.minutes=+t},formatter:function(t){return n(t,"m")}},{key:"sss",regex:"[0-9][0-9][0-9]",apply:function(t){this.milliseconds=+t},formatter:function(t){return n(t,"sss")}},{key:"ss",regex:"[0-5][0-9]",apply:function(t){this.seconds=+t},formatter:function(t){return n(t,"ss")}},{key:"s",regex:"[0-9]|[1-5][0-9]",apply:function(t){this.seconds=+t},formatter:function(t){return n(t,"s")}},{key:"a",regex:e.DATETIME_FORMATS.AMPMS.join("|"),apply:function(t){12===this.hours&&(this.hours=0),"PM"===t&&(this.hours+=12)},formatter:function(t){return n(t,"a")}},{key:"Z",regex:"[+-]\\d{4}",apply:function(t){var e=t.match(/([+-])(\d{2})(\d{2})/),n=e[1],r=e[2],i=e[3];this.hours+=p(n+r),this.minutes+=p(n+i)},formatter:function(t){return n(t,"Z")}},{key:"ww",regex:"[0-4][0-9]|5[0-3]",formatter:function(t){return n(t,"ww")}},{key:"w",regex:"[0-9]|[1-4][0-9]|5[0-3]",formatter:function(t){return n(t,"w")}},{key:"GGGG",regex:e.DATETIME_FORMATS.ERANAMES.join("|").replace(/\s/g,"\\s"),formatter:function(t){return n(t,"GGGG")}},{key:"GGG",regex:e.DATETIME_FORMATS.ERAS.join("|"),formatter:function(t){return n(t,"GGG")}},{key:"GG",regex:e.DATETIME_FORMATS.ERAS.join("|"),formatter:function(t){return n(t,"GG")}},{key:"G",regex:e.DATETIME_FORMATS.ERAS.join("|"),formatter:function(t){return n(t,"G")}}],angular.version.major>=1&&angular.version.minor>4&&y.push({key:"LLLL",regex:e.DATETIME_FORMATS.STANDALONEMONTH.join("|"),apply:function(t){this.month=e.DATETIME_FORMATS.STANDALONEMONTH.indexOf(t)},formatter:function(t){return n(t,"LLLL")}})},this.init(),this.getParser=function(t){var e=a(t);return e&&e.apply||null},this.overrideParser=function(t,e){var n=a(t);n&&angular.isFunction(e)&&(this.parsers={},n.apply=e)}.bind(this),this.filter=function(t,n){return angular.isDate(t)&&!isNaN(t)&&n?(n=e.DATETIME_FORMATS[n]||n,e.id!==v&&this.init(),this.formatters[n]||(this.formatters[n]=s(n)),this.formatters[n].reduce(function(e,n){return e+n(t)},"")):""},this.parse=function(n,r,i){if(!angular.isString(n)||!r)return n;r=e.DATETIME_FORMATS[r]||r,r=r.replace(/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,"\\$&"),e.id!==v&&this.init(),this.parsers[r]||(this.parsers[r]=o(r));var a=this.parsers[r],s=a.regex,u=a.map,l=n.match(s),p=!1;if(l&&l.length){var d,f;angular.isDate(i)&&!isNaN(i.getTime())?d={year:i.getFullYear(),month:i.getMonth(),date:i.getDate(),hours:i.getHours(),minutes:i.getMinutes(),seconds:i.getSeconds(),milliseconds:i.getMilliseconds()}:(i&&t.warn("dateparser:","baseDate is not a valid date"),d={year:1900,month:0,date:1,hours:0,minutes:0,seconds:0,milliseconds:0});for(var h=1,g=l.length;hh.modes.indexOf(h[e]))&&(t.datepickerMode=h[e],t.datepickerOptions.datepickerMode=h[e])}):h[e]=t[e]=u[e]||null}}),t.uniqueId="datepicker-"+t.$id+"-"+Math.floor(1e4*Math.random()),t.disabled=angular.isDefined(n.disabled)||!1,angular.isDefined(n.ngDisabled)&&v.push(t.$parent.$watch(n.ngDisabled,function(e){t.disabled=e,h.refreshView()})),t.isActive=function(e){return 0===h.compare(e.date,h.activeDate)&&(t.activeDateId=e.uid,!0)},this.init=function(e){g=e,m=f(g),t.datepickerOptions.initDate?(h.activeDate=p.fromTimezone(t.datepickerOptions.initDate,m.getOption("timezone"))||new Date,t.$watch("datepickerOptions.initDate",function(t){t&&(g.$isEmpty(g.$modelValue)||g.$invalid)&&(h.activeDate=p.fromTimezone(t,m.getOption("timezone")),h.refreshView())})):h.activeDate=new Date;var n=g.$modelValue?new Date(g.$modelValue):new Date;this.activeDate=isNaN(n)?p.fromTimezone(new Date,m.getOption("timezone")):p.fromTimezone(n,m.getOption("timezone")),g.$render=function(){h.render()}},this.render=function(){if(g.$viewValue){var t=new Date(g.$viewValue);!isNaN(t)?this.activeDate=p.fromTimezone(t,m.getOption("timezone")):c||o.error('Datepicker directive: "ng-model" value must be a Date object')}this.refreshView()},this.refreshView=function(){if(this.element){t.selectedDt=null,this._refreshView(),t.activeDt&&(t.activeDateId=t.activeDt.uid);var e=g.$viewValue?new Date(g.$viewValue):null;e=p.fromTimezone(e,m.getOption("timezone")),g.$setValidity("dateDisabled",!e||this.element&&!this.isDisabled(e))}},this.createDateObject=function(e,n){var r=g.$viewValue?new Date(g.$viewValue):null;r=p.fromTimezone(r,m.getOption("timezone"));var i=new Date;i=p.fromTimezone(i,m.getOption("timezone"));var a=this.compare(e,i),o={date:e,label:p.filter(e,n),selected:r&&0===this.compare(e,r),disabled:this.isDisabled(e),past:a<0,current:0===a,future:a>0,customClass:this.customClass(e)||null};return r&&0===this.compare(e,r)&&(t.selectedDt=o),h.activeDate&&0===this.compare(o.date,h.activeDate)&&(t.activeDt=o),o},this.isDisabled=function(e){return t.disabled||this.minDate&&this.compare(e,this.minDate)<0||this.maxDate&&this.compare(e,this.maxDate)>0||t.dateDisabled&&t.dateDisabled({date:e,mode:t.datepickerMode})},this.customClass=function(e){return t.customClass({date:e,mode:t.datepickerMode})},this.split=function(t,e){for(var n=[];t.length>0;)n.push(t.splice(0,e));return n},t.select=function(e){if(t.datepickerMode===h.minMode){var n=g.$viewValue?p.fromTimezone(new Date(g.$viewValue),m.getOption("timezone")):new Date(0,0,0,0,0,0,0);n.setFullYear(e.getFullYear(),e.getMonth(),e.getDate()),n=p.toTimezone(n,m.getOption("timezone")),g.$setViewValue(n),g.$render()}else h.activeDate=e,d(h.modes[h.modes.indexOf(t.datepickerMode)-1]),t.$emit("uib:datepicker.mode");t.$broadcast("uib:datepicker.focus")},t.move=function(t){var e=h.activeDate.getFullYear()+t*(h.step.years||0),n=h.activeDate.getMonth()+t*(h.step.months||0);h.activeDate.setFullYear(e,n,1),h.refreshView()},t.toggleMode=function(e){e=e||1,t.datepickerMode===h.maxMode&&1===e||t.datepickerMode===h.minMode&&-1===e||(d(h.modes[h.modes.indexOf(t.datepickerMode)+e]),t.$emit("uib:datepicker.mode"))},t.keys={13:"enter",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down"};var y=function(){h.element[0].focus()};t.$on("uib:datepicker.focus",y),t.keydown=function(e){var n=t.keys[e.which];if(n&&!e.shiftKey&&!e.altKey&&!t.disabled)if(e.preventDefault(),h.shortcutPropagation||e.stopPropagation(),"enter"===n||"space"===n){if(h.isDisabled(h.activeDate))return;t.select(h.activeDate)}else!e.ctrlKey||"up"!==n&&"down"!==n?(h.handleKeyDown(n,e),h.refreshView()):t.toggleMode("up"===n?1:-1)},e.on("keydown",function(e){t.$apply(function(){t.keydown(e)})}),t.$on("$destroy",function(){for(;v.length;)v.shift()()})}]).controller("UibDaypickerController",["$scope","$element","dateFilter",function(t,e,n){function r(t,e){return 1!==e||t%4!=0||t%100==0&&t%400!=0?a[e]:29}function i(t){var e=new Date(t);e.setDate(e.getDate()+4-(e.getDay()||7));var n=e.getTime();return e.setMonth(0),e.setDate(1),Math.floor(Math.round((n-e)/864e5)/7)+1}var a=[31,28,31,30,31,30,31,31,30,31,30,31];this.step={months:1},this.element=e,this.init=function(e){angular.extend(e,this),t.showWeeks=e.showWeeks,e.refreshView()},this.getDates=function(t,e){for(var n,r=new Array(e),i=new Date(t),a=0;a0?7-o:-o,u=new Date(a);s>0&&u.setDate(1-s);for(var l=this.getDates(u,42),c=0;c<42;c++)l[c]=angular.extend(this.createDateObject(l[c],this.formatDay),{secondary:l[c].getMonth()!==r,uid:t.uniqueId+"-"+c});t.labels=new Array(7);for(var p=0;p<7;p++)t.labels[p]={abbr:n(l[p].date,this.formatDayHeader),full:n(l[p].date,"EEEE")};if(t.title=n(this.activeDate,this.formatDayTitle),t.rows=this.split(l,7),t.showWeeks){t.weekNumbers=[];for(var d=(11-this.startingDay)%7,f=t.rows.length,h=0;h3?this.monthColumns-2:1},this.compare=function(t,e){var n=new Date(t.getFullYear(),t.getMonth()),r=new Date(e.getFullYear(),e.getMonth());return n.setFullYear(t.getFullYear()),r.setFullYear(e.getFullYear()),n-r},this.handleKeyDown=function(t,e){var n=this.activeDate.getMonth();if("left"===t)n-=1;else if("up"===t)n-=this.monthColumns;else if("right"===t)n+=1;else if("down"===t)n+=this.monthColumns;else if("pageup"===t||"pagedown"===t){var r=this.activeDate.getFullYear()+("pageup"===t?-1:1);this.activeDate.setFullYear(r)}else"home"===t?n=0:"end"===t&&(n=11);this.activeDate.setMonth(n)}}]).controller("UibYearpickerController",["$scope","$element","dateFilter",function(t,e,n){function r(t){return parseInt((t-1)/a,10)*a+1}var i,a;this.element=e,this.yearpickerInit=function(){i=this.yearColumns,a=this.yearRows*i,this.step={years:a}},this._refreshView=function(){for(var e,n=new Array(a),o=0,s=r(this.activeDate.getFullYear());o
');t.find("body").append(o),n=o[0].offsetWidth-o[0].clientWidth,n=isFinite(n)?n:0,o.remove()}return n},scrollbarPadding:function(t){t=this.getRawNode(t);var n=e.getComputedStyle(t),r=this.parseStyle(n.paddingRight),i=this.parseStyle(n.paddingBottom),a=this.scrollParent(t,!1,!0),s=this.scrollbarWidth(o.test(a.tagName));return{scrollbarWidth:s,widthOverflow:a.scrollWidth>a.clientWidth,right:r+s,originalRight:r,heightOverflow:a.scrollHeight>a.clientHeight,bottom:i+s,originalBottom:i}},isScrollable:function(t,n){t=this.getRawNode(t);var r=n?i.hidden:i.normal,a=e.getComputedStyle(t);return r.test(a.overflow+a.overflowY+a.overflowX)},scrollParent:function(n,r,a){n=this.getRawNode(n);var o=r?i.hidden:i.normal,s=t[0].documentElement,u=e.getComputedStyle(n);if(a&&o.test(u.overflow+u.overflowY+u.overflowX))return n;var l="absolute"===u.position,c=n.parentElement||s;if(c===s||"fixed"===u.position)return s;for(;c.parentElement&&c!==s;){var p=e.getComputedStyle(c);if(l&&"static"!==p.position&&(l=!1),!l&&o.test(p.overflow+p.overflowY+p.overflowX))break;c=c.parentElement}return c},position:function(n,r){n=this.getRawNode(n);var i=this.offset(n);if(r){var a=e.getComputedStyle(n);i.top-=this.parseStyle(a.marginTop),i.left-=this.parseStyle(a.marginLeft)}var o=this.offsetParent(n),s={top:0,left:0};return o!==t[0].documentElement&&(s=this.offset(o),s.top+=o.clientTop-o.scrollTop,s.left+=o.clientLeft-o.scrollLeft),{width:Math.round(angular.isNumber(i.width)?i.width:n.offsetWidth),height:Math.round(angular.isNumber(i.height)?i.height:n.offsetHeight),top:Math.round(i.top-s.top),left:Math.round(i.left-s.left)}},offset:function(n){n=this.getRawNode(n);var r=n.getBoundingClientRect();return{width:Math.round(angular.isNumber(r.width)?r.width:n.offsetWidth),height:Math.round(angular.isNumber(r.height)?r.height:n.offsetHeight),top:Math.round(r.top+(e.pageYOffset||t[0].documentElement.scrollTop)),left:Math.round(r.left+(e.pageXOffset||t[0].documentElement.scrollLeft))}},viewportOffset:function(n,r,i){n=this.getRawNode(n),i=!1!==i;var a=n.getBoundingClientRect(),o={top:0,left:0,bottom:0,right:0},s=r?t[0].documentElement:this.scrollParent(n),u=s.getBoundingClientRect();if(o.top=u.top+s.clientTop,o.left=u.left+s.clientLeft,s===t[0].documentElement&&(o.top+=e.pageYOffset,o.left+=e.pageXOffset),o.bottom=o.top+s.clientHeight,o.right=o.left+s.clientWidth,i){var l=e.getComputedStyle(s);o.top+=this.parseStyle(l.paddingTop),o.bottom-=this.parseStyle(l.paddingBottom),o.left+=this.parseStyle(l.paddingLeft),o.right-=this.parseStyle(l.paddingRight)}return{top:Math.round(a.top-o.top),bottom:Math.round(o.bottom-a.bottom),left:Math.round(a.left-o.left),right:Math.round(o.right-a.right)}},parsePlacement:function(t){var e=a.auto.test(t);return e&&(t=t.replace(a.auto,"")),t=t.split("-"),t[0]=t[0]||"top",a.primary.test(t[0])||(t[0]="top"),t[1]=t[1]||"center",a.secondary.test(t[1])||(t[1]="center"),t[2]=!!e,t},positionElements:function(t,n,r,i){t=this.getRawNode(t),n=this.getRawNode(n);var o=angular.isDefined(n.offsetWidth)?n.offsetWidth:n.prop("offsetWidth"),s=angular.isDefined(n.offsetHeight)?n.offsetHeight:n.prop("offsetHeight");r=this.parsePlacement(r);var u=i?this.offset(t):this.position(t),l={top:0,left:0,placement:""};if(r[2]){var c=this.viewportOffset(t,i),p=e.getComputedStyle(n),d={width:o+Math.round(Math.abs(this.parseStyle(p.marginLeft)+this.parseStyle(p.marginRight))),height:s+Math.round(Math.abs(this.parseStyle(p.marginTop)+this.parseStyle(p.marginBottom)))};if(r[0]="top"===r[0]&&d.height>c.top&&d.height<=c.bottom?"bottom":"bottom"===r[0]&&d.height>c.bottom&&d.height<=c.top?"top":"left"===r[0]&&d.width>c.left&&d.width<=c.right?"right":"right"===r[0]&&d.width>c.right&&d.width<=c.left?"left":r[0],r[1]="top"===r[1]&&d.height-u.height>c.bottom&&d.height-u.height<=c.top?"bottom":"bottom"===r[1]&&d.height-u.height>c.top&&d.height-u.height<=c.bottom?"top":"left"===r[1]&&d.width-u.width>c.right&&d.width-u.width<=c.left?"right":"right"===r[1]&&d.width-u.width>c.left&&d.width-u.width<=c.right?"left":r[1],"center"===r[1])if(a.vertical.test(r[0])){var f=u.width/2-o/2;c.left+f<0&&d.width-u.width<=c.right?r[1]="left":c.right+f<0&&d.width-u.width<=c.left&&(r[1]="right")}else{var h=u.height/2-d.height/2;c.top+h<0&&d.height-u.height<=c.bottom?r[1]="top":c.bottom+h<0&&d.height-u.height<=c.top&&(r[1]="bottom")}}switch(r[0]){case"top":l.top=u.top-s;break;case"bottom":l.top=u.top+u.height;break;case"left":l.left=u.left-o;break;case"right":l.left=u.left+u.width}switch(r[1]){case"top":l.top=u.top;break;case"bottom":l.top=u.top+u.height-s;break;case"left":l.left=u.left;break;case"right":l.left=u.left+u.width-o;break;case"center":a.vertical.test(r[0])?l.left=u.left+u.width/2-o/2:l.top=u.top+u.height/2-s/2}return l.top=Math.round(l.top),l.left=Math.round(l.left),l.placement="center"===r[1]?r[0]:r[0]+"-"+r[1],l},adjustTop:function(t,e,n,r){if(-1!==t.indexOf("top")&&n!==r)return{top:e.top-r+"px"}},positionArrow:function(t,n){t=this.getRawNode(t);var r=t.querySelector(".tooltip-inner, .popover-inner");if(r){var i=angular.element(r).hasClass("tooltip-inner"),o=i?t.querySelector(".tooltip-arrow"):t.querySelector(".arrow");if(o){var s={top:"",bottom:"",left:"",right:""};if(n=this.parsePlacement(n),"center"===n[1])return void angular.element(o).css(s);var u="border-"+n[0]+"-width",l=e.getComputedStyle(o)[u],c="border-";a.vertical.test(n[0])?c+=n[0]+"-"+n[1]:c+=n[1]+"-"+n[0],c+="-radius";var p=e.getComputedStyle(i?r:t)[c];switch(n[0]){case"top":s.bottom=i?"0":"-"+l;break;case"bottom":s.top=i?"0":"-"+l;break;case"left":s.right=i?"0":"-"+l;break;case"right":s.left=i?"0":"-"+l}s[n[1]]=p,angular.element(o).css(s)}}}}}]),angular.module("ui.bootstrap.datepickerPopup",["ui.bootstrap.datepicker","ui.bootstrap.position"]).value("$datepickerPopupLiteralWarning",!0).constant("uibDatepickerPopupConfig",{altInputFormats:[],appendToBody:!1,clearText:"Clear",closeOnDateSelection:!0,closeText:"Done",currentText:"Today",datepickerPopup:"yyyy-MM-dd",datepickerPopupTemplateUrl:"uib/template/datepickerPopup/popup.html",datepickerTemplateUrl:"uib/template/datepicker/datepicker.html",html5Types:{date:"yyyy-MM-dd","datetime-local":"yyyy-MM-ddTHH:mm:ss.sss",month:"yyyy-MM"},onOpenFocus:!0,showButtonBar:!0,placement:"auto bottom-left"}).controller("UibDatepickerPopupController",["$scope","$element","$attrs","$compile","$log","$parse","$window","$document","$rootScope","$uibPosition","dateFilter","uibDateParser","uibDatepickerPopupConfig","$timeout","uibDatepickerConfig","$datepickerPopupLiteralWarning",function(t,e,n,r,i,a,o,s,u,l,c,p,d,f,h,g){function m(e){var n=p.parse(e,C,t.date);if(isNaN(n))for(var r=0;r<_.length;r++)if(n=p.parse(e,_[r],t.date),!isNaN(n))return n;return n}function v(t){if(angular.isNumber(t)&&(t=new Date(t)),!t)return null;if(angular.isDate(t)&&!isNaN(t))return t;if(angular.isString(t)){var e=m(t);if(!isNaN(e))return p.toTimezone(e,M.getOption("timezone"))}return M.getOption("allowInvalid")?t:void 0}function y(t,e){var r=t||e;return!n.ngRequired&&!r||(angular.isNumber(r)&&(r=new Date(r)),!r||(!(!angular.isDate(r)||isNaN(r))||!!angular.isString(r)&&!isNaN(m(r))))}function b(n){if(t.isOpen||!t.disabled){var r=P[0],i=e[0].contains(n.target),a=void 0!==r.contains&&r.contains(n.target);!t.isOpen||i||a||t.$apply(function(){t.isOpen=!1})}}function w(n){27===n.which&&t.isOpen?(n.preventDefault(),n.stopPropagation(),t.$apply(function(){t.isOpen=!1}),e[0].focus()):40!==n.which||t.isOpen||(n.preventDefault(),n.stopPropagation(),t.$apply(function(){t.isOpen=!0}))}function $(){if(t.isOpen){var r=angular.element(P[0].querySelector(".uib-datepicker-popup")),i=n.popupPlacement?n.popupPlacement:d.placement,a=l.positionElements(e,r,i,T);r.css({top:a.top+"px",left:a.left+"px"}),r.hasClass("uib-position-measure")&&r.removeClass("uib-position-measure")}}function k(t){var e;return angular.version.minor<6?(e=angular.isObject(t.$options)?t.$options:{timezone:null},e.getOption=function(t){return e[t]}):e=t.$options,e}var C,x,T,S,E,D,A,B,I,O,M,P,_,R=!1,L=[];this.init=function(i){if(O=i,M=k(O),x=angular.isDefined(n.closeOnDateSelection)?t.$parent.$eval(n.closeOnDateSelection):d.closeOnDateSelection,T=angular.isDefined(n.datepickerAppendToBody)?t.$parent.$eval(n.datepickerAppendToBody):d.appendToBody,S=angular.isDefined(n.onOpenFocus)?t.$parent.$eval(n.onOpenFocus):d.onOpenFocus,E=angular.isDefined(n.datepickerPopupTemplateUrl)?n.datepickerPopupTemplateUrl:d.datepickerPopupTemplateUrl,D=angular.isDefined(n.datepickerTemplateUrl)?n.datepickerTemplateUrl:d.datepickerTemplateUrl,_=angular.isDefined(n.altInputFormats)?t.$parent.$eval(n.altInputFormats):d.altInputFormats,t.showButtonBar=angular.isDefined(n.showButtonBar)?t.$parent.$eval(n.showButtonBar):d.showButtonBar,d.html5Types[n.type]?(C=d.html5Types[n.type],R=!0):(C=n.uibDatepickerPopup||d.datepickerPopup,n.$observe("uibDatepickerPopup",function(t,e){var n=t||d.datepickerPopup;if(n!==C&&(C=n,O.$modelValue=null,!C))throw new Error("uibDatepickerPopup must have a date format specified.")})),!C)throw new Error("uibDatepickerPopup must have a date format specified.");if(R&&n.uibDatepickerPopup)throw new Error("HTML5 date input types do not support custom formats.");A=angular.element("
"),A.attr({"ng-model":"date","ng-change":"dateSelection(date)","template-url":E}),B=angular.element(A.children()[0]),B.attr("template-url",D),t.datepickerOptions||(t.datepickerOptions={}),R&&"month"===n.type&&(t.datepickerOptions.datepickerMode="month",t.datepickerOptions.minMode="month"),B.attr("datepicker-options","datepickerOptions"),R?O.$formatters.push(function(e){return t.date=p.fromTimezone(e,M.getOption("timezone")),e}):(O.$$parserName="date",O.$validators.date=y,O.$parsers.unshift(v),O.$formatters.push(function(e){return O.$isEmpty(e)?(t.date=e,e):(angular.isNumber(e)&&(e=new Date(e)),t.date=p.fromTimezone(e,M.getOption("timezone")),p.filter(t.date,C))})),O.$viewChangeListeners.push(function(){t.date=m(O.$viewValue)}),e.on("keydown",w),P=r(A)(t),A.remove(),T?s.find("body").append(P):e.after(P),t.$on("$destroy",function(){for(!0===t.isOpen&&(u.$$phase||t.$apply(function(){t.isOpen=!1})),P.remove(),e.off("keydown",w),s.off("click",b),I&&I.off("scroll",$),angular.element(o).off("resize",$);L.length;)L.shift()()})},t.getText=function(e){return t[e+"Text"]||d[e+"Text"]},t.isDisabled=function(e){"today"===e&&(e=p.fromTimezone(new Date,M.getOption("timezone")));var n={};return angular.forEach(["minDate","maxDate"],function(e){t.datepickerOptions[e]?angular.isDate(t.datepickerOptions[e])?n[e]=new Date(t.datepickerOptions[e]):(g&&i.warn("Literal date support has been deprecated, please switch to date object usage"),n[e]=new Date(c(t.datepickerOptions[e],"medium"))):n[e]=null}),t.datepickerOptions&&n.minDate&&t.compare(e,n.minDate)<0||n.maxDate&&t.compare(e,n.maxDate)>0},t.compare=function(t,e){return new Date(t.getFullYear(),t.getMonth(),t.getDate())-new Date(e.getFullYear(),e.getMonth(),e.getDate())},t.dateSelection=function(n){t.date=n;var r=t.date?p.filter(t.date,C):null;e.val(r),O.$setViewValue(r),x&&(t.isOpen=!1,e[0].focus())},t.keydown=function(n){27===n.which&&(n.stopPropagation(),t.isOpen=!1,e[0].focus())},t.select=function(e,n){if(n.stopPropagation(),"today"===e){var r=new Date;angular.isDate(t.date)?(e=new Date(t.date),e.setFullYear(r.getFullYear(),r.getMonth(),r.getDate())):(e=p.fromTimezone(r,M.getOption("timezone")),e.setHours(0,0,0,0))}t.dateSelection(e)},t.close=function(n){n.stopPropagation(),t.isOpen=!1,e[0].focus()},t.disabled=angular.isDefined(n.disabled)||!1,n.ngDisabled&&L.push(t.$parent.$watch(a(n.ngDisabled),function(e){t.disabled=e})),t.$watch("isOpen",function(r){r?t.disabled?t.isOpen=!1:f(function(){$(),S&&t.$broadcast("uib:datepicker.focus"),s.on("click",b);var r=n.popupPlacement?n.popupPlacement:d.placement;T||l.parsePlacement(r)[2]?(I=I||angular.element(l.scrollParent(e)))&&I.on("scroll",$):I=null,angular.element(o).on("resize",$)},0,!1):(s.off("click",b),I&&I.off("scroll",$),angular.element(o).off("resize",$))}),t.$on("uib:datepicker.mode",function(){f($,0,!1)})}]).directive("uibDatepickerPopup",function(){return{require:["ngModel","uibDatepickerPopup"],controller:"UibDatepickerPopupController",scope:{datepickerOptions:"=?",isOpen:"=?",currentText:"@",clearText:"@",closeText:"@"},link:function(t,e,n,r){var i=r[0];r[1].init(i)}}}).directive("uibDatepickerPopupWrap",function(){return{restrict:"A",transclude:!0,templateUrl:function(t,e){return e.templateUrl||"uib/template/datepickerPopup/popup.html"}}}),angular.module("ui.bootstrap.debounce",[]).factory("$$debounce",["$timeout",function(t){return function(e,n){var r;return function(){var i=this,a=Array.prototype.slice.call(arguments);r&&t.cancel(r),r=t(function(){e.apply(i,a)},n)}}}]),angular.module("ui.bootstrap.multiMap",[]).factory("$$multiMap",function(){return{createNew:function(){var t={};return{entries:function(){return Object.keys(t).map(function(e){return{key:e,value:t[e]}})},get:function(e){return t[e]},hasKey:function(e){return!!t[e]},keys:function(){return Object.keys(t)},put:function(e,n){t[e]||(t[e]=[]),t[e].push(n)},remove:function(e,n){var r=t[e];if(r){var i=r.indexOf(n);-1!==i&&r.splice(i,1),r.length||delete t[e]}}}}}}),angular.module("ui.bootstrap.dropdown",["ui.bootstrap.multiMap","ui.bootstrap.position"]).constant("uibDropdownConfig",{appendToOpenClass:"uib-dropdown-open",openClass:"open"}).service("uibDropdownService",["$document","$rootScope","$$multiMap",function(t,e,n){var r=null,i=n.createNew();this.isOnlyOpen=function(t,e){var n=i.get(e);if(n){if(n.reduce(function(e,n){return n.scope===t?n:e},{}))return 1===n.length}return!1},this.open=function(e,n,o){if(r||t.on("click",a),r&&r!==e&&(r.isOpen=!1),r=e,o){var s=i.get(o);if(s){-1===s.map(function(t){return t.scope}).indexOf(e)&&i.put(o,{scope:e})}else i.put(o,{scope:e})}},this.close=function(e,n,o){if(r===e&&(t.off("click",a),t.off("keydown",this.keybindFilter),r=null),o){var s=i.get(o);if(s){var u=s.reduce(function(t,n){return n.scope===e?n:t},{});u&&i.remove(o,u)}}};var a=function(t){if(r&&r.isOpen&&!(t&&"disabled"===r.getAutoClose()||t&&3===t.which)){var n=r.getToggleElement();if(!(t&&n&&n[0].contains(t.target))){var i=r.getDropdownElement();t&&"outsideClick"===r.getAutoClose()&&i&&i[0].contains(t.target)||(r.focusToggleElement(),r.isOpen=!1,e.$$phase||r.$apply())}}};this.keybindFilter=function(t){if(r){var e=r.getDropdownElement(),n=r.getToggleElement(),i=e&&e[0].contains(t.target),o=n&&n[0].contains(t.target);27===t.which?(t.stopPropagation(),r.focusToggleElement(),a()):r.isKeynavEnabled()&&-1!==[38,40].indexOf(t.which)&&r.isOpen&&(i||o)&&(t.preventDefault(),t.stopPropagation(),r.focusDropdownEntry(t.which))}}}]).controller("UibDropdownController",["$scope","$element","$attrs","$parse","uibDropdownConfig","uibDropdownService","$animate","$uibPosition","$document","$compile","$templateRequest",function(t,e,n,r,i,a,o,s,u,l,c){function p(){e.append(h.dropdownMenu)}var d,f,h=this,g=t.$new(),m=i.appendToOpenClass,v=i.openClass,y=angular.noop,b=n.onToggle?r(n.onToggle):angular.noop,w=!1,$=u.find("body");e.addClass("dropdown"),this.init=function(){n.isOpen&&(f=r(n.isOpen),y=f.assign,t.$watch(f,function(t){g.isOpen=!!t})),w=angular.isDefined(n.keyboardNav)},this.toggle=function(t){return g.isOpen=arguments.length?!!t:!g.isOpen,angular.isFunction(y)&&y(g,g.isOpen),g.isOpen},this.isOpen=function(){return g.isOpen},g.getToggleElement=function(){return h.toggleElement},g.getAutoClose=function(){return n.autoClose||"always"},g.getElement=function(){return e},g.isKeynavEnabled=function(){return w},g.focusDropdownEntry=function(t){var n=h.dropdownMenu?angular.element(h.dropdownMenu).find("a"):e.find("ul").eq(0).find("a");switch(t){case 40:angular.isNumber(h.selectedOption)?h.selectedOption=h.selectedOption===n.length-1?h.selectedOption:h.selectedOption+1:h.selectedOption=0;break;case 38:angular.isNumber(h.selectedOption)?h.selectedOption=0===h.selectedOption?0:h.selectedOption-1:h.selectedOption=n.length-1}n[h.selectedOption].focus()},g.getDropdownElement=function(){return h.dropdownMenu},g.focusToggleElement=function(){h.toggleElement&&h.toggleElement[0].focus()},g.$watch("isOpen",function(i,f){var w=null,k=!1;if(angular.isDefined(n.dropdownAppendTo)){var C=r(n.dropdownAppendTo)(g);C&&(w=angular.element(C))}if(angular.isDefined(n.dropdownAppendToBody)){!1!==r(n.dropdownAppendToBody)(g)&&(k=!0)}if(k&&!w&&(w=$),w&&h.dropdownMenu&&(i?(w.append(h.dropdownMenu),e.on("$destroy",p)):(e.off("$destroy",p),p())),w&&h.dropdownMenu){var x,T,S,E=s.positionElements(e,h.dropdownMenu,"bottom-left",!0),D=0;if(x={top:E.top+"px",display:i?"block":"none"},T=h.dropdownMenu.hasClass("dropdown-menu-right"),T?(x.left="auto",S=s.scrollbarPadding(w),S.heightOverflow&&S.scrollbarWidth&&(D=S.scrollbarWidth),x.right=window.innerWidth-D-(E.left+e.prop("offsetWidth"))+"px"):(x.left=E.left+"px",x.right="auto"),!k){var A=s.offset(w);x.top=E.top-A.top+"px",T?x.right=window.innerWidth-(E.left-A.left+e.prop("offsetWidth"))+"px":x.left=E.left-A.left+"px"}h.dropdownMenu.css(x)}var B=w||e,I=w?m:v,O=B.hasClass(I),M=a.isOnlyOpen(t,w);if(O===!i){var P;P=w?M?"removeClass":"addClass":i?"addClass":"removeClass",o[P](B,I).then(function(){angular.isDefined(i)&&i!==f&&b(t,{open:!!i})})}if(i)h.dropdownMenuTemplateUrl?c(h.dropdownMenuTemplateUrl).then(function(t){d=g.$new(),l(t.trim())(d,function(t){var e=t;h.dropdownMenu.replaceWith(e),h.dropdownMenu=e,u.on("keydown",a.keybindFilter)})}):u.on("keydown",a.keybindFilter),g.focusToggleElement(),a.open(g,e,w);else{if(a.close(g,e,w),h.dropdownMenuTemplateUrl){d&&d.$destroy();var _=angular.element('');h.dropdownMenu.replaceWith(_),h.dropdownMenu=_}h.selectedOption=null}angular.isFunction(y)&&y(t,i)})}]).directive("uibDropdown",function(){return{controller:"UibDropdownController",link:function(t,e,n,r){r.init()}}}).directive("uibDropdownMenu",function(){return{restrict:"A",require:"?^uibDropdown",link:function(t,e,n,r){if(r&&!angular.isDefined(n.dropdownNested)){e.addClass("dropdown-menu");var i=n.templateUrl;i&&(r.dropdownMenuTemplateUrl=i),r.dropdownMenu||(r.dropdownMenu=e)}}}}).directive("uibDropdownToggle",function(){return{require:"?^uibDropdown",link:function(t,e,n,r){if(r){e.addClass("dropdown-toggle"),r.toggleElement=e;var i=function(i){i.preventDefault(),e.hasClass("disabled")||n.disabled||t.$apply(function(){r.toggle()})};e.on("click",i),e.attr({"aria-haspopup":!0,"aria-expanded":!1}),t.$watch(r.isOpen,function(t){e.attr("aria-expanded",!!t)}),t.$on("$destroy",function(){e.off("click",i)})}}}}),angular.module("ui.bootstrap.stackedMap",[]).factory("$$stackedMap",function(){return{createNew:function(){var t=[];return{add:function(e,n){t.push({key:e,value:n})},get:function(e){for(var n=0;n-1&&t0&&(e=C.top().value,e.modalDomEl.toggleClass(e.windowTopClass||"",t))}function h(){if(b&&-1===p()){var t=w;g(b,w,function(){t=null}),b=void 0,w=void 0}}function g(e,n,r,i){function o(){o.done||(o.done=!0,t.leave(e).then(function(){r&&r(),e.remove(),i&&i.resolve()}),n.$destroy())}var s,u=null,l=function(){return s||(s=a.defer(),u=s.promise),function(){s.resolve()}};return n.$broadcast(T.NOW_CLOSING_EVENT,l),a.when(u).then(o)}function m(t){if(t.isDefaultPrevented())return t;var e=C.top();if(e)switch(t.which){case 27:e.value.keyboard&&(t.preventDefault(),i.$apply(function(){T.dismiss(e.key,"escape key press")}));break;case 9:var n=T.loadFocusElementList(e),r=!1;t.shiftKey?(T.isFocusInFirstItem(t,n)||T.isModalFocused(t,e))&&(r=T.focusLastFocusableElement(n)):T.isFocusInLastItem(t,n)&&(r=T.focusFirstFocusableElement(n)),r&&(t.preventDefault(),t.stopPropagation())}}function v(t,e,n){return!t.value.modalScope.$broadcast("modal.closing",e,n).defaultPrevented}function y(){Array.prototype.forEach.call(document.querySelectorAll("["+D+"]"),function(t){var e=parseInt(t.getAttribute(D),10),n=e-1;t.setAttribute(D,n),n||(t.removeAttribute(D),t.removeAttribute("aria-hidden"))})}var b,w,$,k="modal-open",C=s.createNew(),x=o.createNew(),T={NOW_CLOSING_EVENT:"modal.stack.now-closing"},S=0,E=null,D="data-bootstrap-modal-aria-hidden-count",A=/[A-Z]/g;return i.$watch(p,function(t){w&&(w.index=t)}),n.on("keydown",m),i.$on("$destroy",function(){n.off("keydown",m)}),T.open=function(e,a){function o(t){if(t&&"BODY"!==t[0].tagName)return function(t){var e=t.parent()?t.parent().children():[];return Array.prototype.filter.call(e,function(e){return e!==t[0]})}(t).forEach(function(t){var e="true"===t.getAttribute("aria-hidden"),n=parseInt(t.getAttribute(D),10);n||(n=e?1:0),t.setAttribute(D,n+1),t.setAttribute("aria-hidden","true")}),o(t.parent())}var s=n[0].activeElement,c=a.openedClass||k;f(!1),E=C.top(),C.add(e,{deferred:a.deferred,renderDeferred:a.renderDeferred,closedDeferred:a.closedDeferred,modalScope:a.scope,backdrop:a.backdrop,keyboard:a.keyboard,openedClass:a.openedClass,windowTopClass:a.windowTopClass,animation:a.animation,appendTo:a.appendTo}),x.put(c,e);var d=a.appendTo,h=p();h>=0&&!b&&(w=i.$new(!0),w.modalOptions=a,w.index=h,b=angular.element('
'),b.attr({class:"modal-backdrop","ng-style":"{'z-index': 1040 + (index && 1 || 0) + index*10}","uib-modal-animation-class":"fade","modal-in-class":"in"}),a.backdropClass&&b.addClass(a.backdropClass),a.animation&&b.attr("modal-animation","true"),r(b)(w),t.enter(b,d),u.isScrollable(d)&&($=u.scrollbarPadding(d),$.heightOverflow&&$.scrollbarWidth&&d.css({paddingRight:$.right+"px"})));var g;a.component?(g=document.createElement(l(a.component.name)),g=angular.element(g),g.attr({resolve:"$resolve","modal-instance":"$uibModalInstance",close:"$close($value)",dismiss:"$dismiss($value)"})):g=a.content,S=E?parseInt(E.value.modalDomEl.attr("index"),10)+1:0;var m=angular.element('
');m.attr({class:"modal","template-url":a.windowTemplateUrl,"window-top-class":a.windowTopClass,role:"dialog","aria-labelledby":a.ariaLabelledBy,"aria-describedby":a.ariaDescribedBy,size:a.size,index:S,animate:"animate","ng-style":"{'z-index': 1050 + $$topModalIndex*10, display: 'block'}",tabindex:-1,"uib-modal-animation-class":"fade","modal-in-class":"in"}).append(g),a.windowClass&&m.addClass(a.windowClass),a.animation&&m.attr("modal-animation","true"),d.addClass(c),a.scope&&(a.scope.$$topModalIndex=S),t.enter(r(m)(a.scope),d),C.top().value.modalDomEl=m,C.top().value.modalOpener=s,o(m)},T.close=function(t,e){var n=C.get(t);return y(),n&&v(n,e,!0)?(n.value.modalScope.$$uibDestructionScheduled=!0,n.value.deferred.resolve(e),d(t,n.value.modalOpener),!0):!n},T.dismiss=function(t,e){var n=C.get(t);return y(),n&&v(n,e,!1)?(n.value.modalScope.$$uibDestructionScheduled=!0,n.value.deferred.reject(e),d(t,n.value.modalOpener),!0):!n},T.dismissAll=function(t){for(var e=this.getTop();e&&this.dismiss(e.key,t);)e=this.getTop()},T.getTop=function(){return C.top()},T.modalRendered=function(t){var e=C.get(t);e&&e.value.renderDeferred.resolve()},T.focusFirstFocusableElement=function(t){return t.length>0&&(t[0].focus(),!0)},T.focusLastFocusableElement=function(t){return t.length>0&&(t[t.length-1].focus(),!0)},T.isModalFocused=function(t,e){if(t&&e){var n=e.value.modalDomEl;if(n&&n.length)return(t.target||t.srcElement)===n[0]}return!1},T.isFocusInFirstItem=function(t,e){return e.length>0&&(t.target||t.srcElement)===e[0]},T.isFocusInLastItem=function(t,e){return e.length>0&&(t.target||t.srcElement)===e[e.length-1]},T.loadFocusElementList=function(t){if(t){var e=t.value.modalDomEl;if(e&&e.length){var n=e[0].querySelectorAll("a[href], area[href], input:not([disabled]):not([tabindex='-1']), button:not([disabled]):not([tabindex='-1']),select:not([disabled]):not([tabindex='-1']), textarea:not([disabled]):not([tabindex='-1']), iframe, object, embed, *[tabindex]:not([tabindex='-1']), *[contenteditable=true]");return n?Array.prototype.filter.call(n,function(t){return c(t)}):n}}},T}]).provider("$uibModal",function(){var t={options:{animation:!0,backdrop:!0,keyboard:!0},$get:["$rootScope","$q","$document","$templateRequest","$controller","$uibResolve","$uibModalStack",function(e,n,r,i,a,o,s){function u(t){return t.template?n.when(t.template):i(angular.isFunction(t.templateUrl)?t.templateUrl():t.templateUrl)}var l={},c=null;return l.getPromiseChain=function(){return c},l.open=function(i){function l(){return m}var p=n.defer(),d=n.defer(),f=n.defer(),h=n.defer(),g={result:p.promise,opened:d.promise,closed:f.promise,rendered:h.promise,close:function(t){return s.close(g,t)},dismiss:function(t){return s.dismiss(g,t)}};if(i=angular.extend({},t.options,i),i.resolve=i.resolve||{},i.appendTo=i.appendTo||r.find("body").eq(0),!i.appendTo.length)throw new Error("appendTo element not found. Make sure that the element passed is in DOM.");if(!i.component&&!i.template&&!i.templateUrl)throw new Error("One of component or template or templateUrl options is required.");var m;m=i.component?n.when(o.resolve(i.resolve,{},null,null)):n.all([u(i),o.resolve(i.resolve,{},null,null)]);var v;return v=c=n.all([c]).then(l,l).then(function(t){function n(e,n,r,i){e.$scope=o,e.$scope.$resolve={},r?e.$scope.$uibModalInstance=g:e.$uibModalInstance=g;var a=n?t[1]:t;angular.forEach(a,function(t,n){i&&(e[n]=t),e.$scope.$resolve[n]=t})}var r=i.scope||e,o=r.$new();o.$close=g.close,o.$dismiss=g.dismiss,o.$on("$destroy",function(){o.$$uibDestructionScheduled||o.$dismiss("$uibUnscheduledDestruction")});var u,l,c={scope:o,deferred:p,renderDeferred:h,closedDeferred:f,animation:i.animation,backdrop:i.backdrop,keyboard:i.keyboard,backdropClass:i.backdropClass,windowTopClass:i.windowTopClass,windowClass:i.windowClass,windowTemplateUrl:i.windowTemplateUrl,ariaLabelledBy:i.ariaLabelledBy,ariaDescribedBy:i.ariaDescribedBy,size:i.size,openedClass:i.openedClass,appendTo:i.appendTo},m={},v={};i.component?(n(m,!1,!0,!1),m.name=i.component,c.component=m):i.controller&&(n(v,!0,!1,!0),l=a(i.controller,v,!0,i.controllerAs),i.controllerAs&&i.bindToController&&(u=l.instance,u.$close=o.$close,u.$dismiss=o.$dismiss,angular.extend(u,{$resolve:v.$scope.$resolve},r)),u=l(),angular.isFunction(u.$onInit)&&u.$onInit()),i.component||(c.content=t[0]),s.open(g,c),d.resolve(!0)},function(t){d.reject(t),p.reject(t)}).finally(function(){c===v&&(c=null)}),g},l}]};return t}),angular.module("ui.bootstrap.paging",[]).factory("uibPaging",["$parse",function(t){return{create:function(e,n,r){e.setNumPages=r.numPages?t(r.numPages).assign:angular.noop,e.ngModelCtrl={$setViewValue:angular.noop},e._watchers=[],e.init=function(t,i){e.ngModelCtrl=t,e.config=i,t.$render=function(){e.render()},r.itemsPerPage?e._watchers.push(n.$parent.$watch(r.itemsPerPage,function(t){e.itemsPerPage=parseInt(t,10),n.totalPages=e.calculateTotalPages(),e.updatePage()})):e.itemsPerPage=i.itemsPerPage, n.$watch("totalItems",function(t,r){(angular.isDefined(t)||t!==r)&&(n.totalPages=e.calculateTotalPages(),e.updatePage())})},e.calculateTotalPages=function(){var t=e.itemsPerPage<1?1:Math.ceil(n.totalItems/e.itemsPerPage);return Math.max(t||0,1)},e.render=function(){n.page=parseInt(e.ngModelCtrl.$viewValue,10)||1},n.selectPage=function(t,r){r&&r.preventDefault(),(!n.ngDisabled||!r)&&n.page!==t&&t>0&&t<=n.totalPages&&(r&&r.target&&r.target.blur(),e.ngModelCtrl.$setViewValue(t),e.ngModelCtrl.$render())},n.getText=function(t){return n[t+"Text"]||e.config[t+"Text"]},n.noPrevious=function(){return 1===n.page},n.noNext=function(){return n.page===n.totalPages},e.updatePage=function(){e.setNumPages(n.$parent,n.totalPages),n.page>n.totalPages?n.selectPage(n.totalPages):e.ngModelCtrl.$render()},n.$on("$destroy",function(){for(;e._watchers.length;)e._watchers.shift()()})}}}]),angular.module("ui.bootstrap.pager",["ui.bootstrap.paging","ui.bootstrap.tabindex"]).controller("UibPagerController",["$scope","$attrs","uibPaging","uibPagerConfig",function(t,e,n,r){t.align=angular.isDefined(e.align)?t.$parent.$eval(e.align):r.align,n.create(this,t,e)}]).constant("uibPagerConfig",{itemsPerPage:10,previousText:"« Previous",nextText:"Next »",align:!0}).directive("uibPager",["uibPagerConfig",function(t){return{scope:{totalItems:"=",previousText:"@",nextText:"@",ngDisabled:"="},require:["uibPager","?ngModel"],restrict:"A",controller:"UibPagerController",controllerAs:"pager",templateUrl:function(t,e){return e.templateUrl||"uib/template/pager/pager.html"},link:function(e,n,r,i){n.addClass("pager");var a=i[0],o=i[1];o&&a.init(o,t)}}}]),angular.module("ui.bootstrap.pagination",["ui.bootstrap.paging","ui.bootstrap.tabindex"]).controller("UibPaginationController",["$scope","$attrs","$parse","uibPaging","uibPaginationConfig",function(t,e,n,r,i){function a(t,e,n){return{number:t,text:e,active:n}}function o(t,e){var n=[],r=1,i=e,o=angular.isDefined(u)&&ue&&(i=e,r=i-u+1)):(r=(Math.ceil(t/u)-1)*u+1,i=Math.min(r+u-1,e)));for(var s=r;s<=i;s++){var f=a(s,d(s),s===t);n.push(f)}if(o&&u>0&&(!l||c||p)){if(r>1){if(!p||r>3){var h=a(r-1,"...",!1);n.unshift(h)}if(p){if(3===r){var g=a(2,"2",!1);n.unshift(g)}var m=a(1,"1",!1);n.unshift(m)}}if(i0&&t.page<=t.totalPages&&(t.pages=o(t.page,t.totalPages))}}]).constant("uibPaginationConfig",{itemsPerPage:10,boundaryLinks:!1,boundaryLinkNumbers:!1,directionLinks:!0,firstText:"First",previousText:"Previous",nextText:"Next",lastText:"Last",rotate:!0,forceEllipses:!1}).directive("uibPagination",["$parse","uibPaginationConfig",function(t,e){return{scope:{totalItems:"=",firstText:"@",previousText:"@",nextText:"@",lastText:"@",ngDisabled:"="},require:["uibPagination","?ngModel"],restrict:"A",controller:"UibPaginationController",controllerAs:"pagination",templateUrl:function(t,e){return e.templateUrl||"uib/template/pagination/pagination.html"},link:function(t,n,r,i){n.addClass("pagination");var a=i[0],o=i[1];o&&a.init(o,e)}}}]),angular.module("ui.bootstrap.tooltip",["ui.bootstrap.position","ui.bootstrap.stackedMap"]).provider("$uibTooltip",function(){function t(t){return t.replace(/[A-Z]/g,function(t,e){return(e?"-":"")+t.toLowerCase()})}var e={placement:"top",placementClassPrefix:"",animation:!0,popupDelay:0,popupCloseDelay:0,useContentExp:!1},n={mouseenter:"mouseleave",click:"click",outsideClick:"outsideClick",focus:"blur",none:""},r={};this.options=function(t){angular.extend(r,t)},this.setTriggers=function(t){angular.extend(n,t)},this.$get=["$window","$compile","$timeout","$document","$uibPosition","$interpolate","$rootScope","$parse","$$stackedMap",function(i,a,o,s,u,l,c,p,d){function f(t){if(27===t.which){var e=h.top();e&&(e.value.close(),e=null)}}var h=d.createNew();return s.on("keyup",f),c.$on("$destroy",function(){s.off("keyup",f)}),function(i,c,d,f){function g(t){var e=(t||f.trigger||d).split(" ");return{show:e,hide:e.map(function(t){return n[t]||t})}}f=angular.extend({},e,r,f);var m=t(i),v=l.startSymbol(),y=l.endSymbol(),b="
';return{compile:function(t,e){var n=a(b);return function(t,e,r,a){function l(){q.isOpen?m():d()}function d(){U&&!t.$eval(r[c+"Enable"])||(w(),C(),q.popupDelay?O||(O=o(v,q.popupDelay,!1)):v())}function m(){y(),q.popupCloseDelay?M||(M=o(b,q.popupCloseDelay,!1)):b()}function v(){if(y(),w(),!q.content)return angular.noop;$(),q.$evalAsync(function(){q.isOpen=!0,x(!0),H()})}function y(){O&&(o.cancel(O),O=null),P&&(o.cancel(P),P=null)}function b(){q&&q.$evalAsync(function(){q&&(q.isOpen=!1,x(!1),q.animation?I||(I=o(k,150,!1)):k())})}function w(){M&&(o.cancel(M),M=null),I&&(o.cancel(I),I=null)}function $(){A||(B=q.$new(),A=n(B,function(t){L?s.find("body").append(t):e.after(t)}),h.add(q,{close:b}),T())}function k(){y(),w(),S(),A&&(A.remove(),A=null,_&&o.cancel(_)),h.remove(q),B&&(B.$destroy(),B=null)}function C(){q.title=r[c+"Title"],q.content=F?F(t):r[i],q.popupClass=r[c+"Class"],q.placement=angular.isDefined(r[c+"Placement"])?r[c+"Placement"]:f.placement;var e=u.parsePlacement(q.placement);R=e[1]?e[0]+"-"+e[1]:e[0];var n=parseInt(r[c+"PopupDelay"],10),a=parseInt(r[c+"PopupCloseDelay"],10);q.popupDelay=isNaN(n)?f.popupDelay:n,q.popupCloseDelay=isNaN(a)?f.popupCloseDelay:a}function x(e){V&&angular.isFunction(V.assign)&&V.assign(t,e)}function T(){z.length=0,F?(z.push(t.$watch(F,function(t){q.content=t,!t&&q.isOpen&&b()})),z.push(B.$watch(function(){j||(j=!0,B.$$postDigest(function(){j=!1,q&&q.isOpen&&H()}))}))):z.push(r.$observe(i,function(t){q.content=t,!t&&q.isOpen?b():H()})),z.push(r.$observe(c+"Title",function(t){q.title=t,q.isOpen&&H()})),z.push(r.$observe(c+"Placement",function(t){q.placement=t||f.placement,q.isOpen&&H()}))}function S(){z.length&&(angular.forEach(z,function(t){t()}),z.length=0)}function E(t){q&&q.isOpen&&A&&(e[0].contains(t.target)||A[0].contains(t.target)||m())}function D(t){27===t.which&&m()}var A,B,I,O,M,P,_,R,L=!!angular.isDefined(f.appendToBody)&&f.appendToBody,N=g(void 0),U=angular.isDefined(r[c+"Enable"]),q=t.$new(!0),j=!1,V=!!angular.isDefined(r[c+"IsOpen"])&&p(r[c+"IsOpen"]),F=!!f.useContentExp&&p(r[i]),z=[],H=function(){A&&A.html()&&(P||(P=o(function(){var t=u.positionElements(e,A,q.placement,L),n=angular.isDefined(A.offsetHeight)?A.offsetHeight:A.prop("offsetHeight"),r=L?u.offset(e):u.position(e);A.css({top:t.top+"px",left:t.left+"px"});var i=t.placement.split("-");A.hasClass(i[0])||(A.removeClass(R.split("-")[0]),A.addClass(i[0])),A.hasClass(f.placementClassPrefix+t.placement)||(A.removeClass(f.placementClassPrefix+R),A.addClass(f.placementClassPrefix+t.placement)),_=o(function(){var t=angular.isDefined(A.offsetHeight)?A.offsetHeight:A.prop("offsetHeight"),e=u.adjustTop(i,r,n,t);e&&A.css(e),_=null},0,!1),A.hasClass("uib-position-measure")?(u.positionArrow(A,t.placement),A.removeClass("uib-position-measure")):R!==t.placement&&u.positionArrow(A,t.placement),R=t.placement,P=null},0,!1)))};q.origScope=t,q.isOpen=!1,q.contentExp=function(){return q.content},r.$observe("disabled",function(t){t&&y(),t&&q.isOpen&&b()}),V&&t.$watch(V,function(t){q&&!t===q.isOpen&&l()});var K=function(){N.show.forEach(function(t){"outsideClick"===t?e.off("click",l):(e.off(t,d),e.off(t,l)),e.off("keypress",D)}),N.hide.forEach(function(t){"outsideClick"===t?s.off("click",E):e.off(t,m)})};!function(){var n=[],i=[],a=t.$eval(r[c+"Trigger"]);K(),angular.isObject(a)?(Object.keys(a).forEach(function(t){n.push(t),i.push(a[t])}),N={show:n,hide:i}):N=g(a),"none"!==N.show&&N.show.forEach(function(t,n){"outsideClick"===t?(e.on("click",l),s.on("click",E)):t===N.hide[n]?e.on(t,l):t&&(e.on(t,d),e.on(N.hide[n],m)),e.on("keypress",D)})}();var W=t.$eval(r[c+"Animation"]);q.animation=angular.isDefined(W)?!!W:f.animation;var G,Y=c+"AppendToBody";G=Y in r&&void 0===r[Y]||t.$eval(r[Y]),L=angular.isDefined(G)?G:L,t.$on("$destroy",function(){K(),k(),q=null})}}}}}]}).directive("uibTooltipTemplateTransclude",["$animate","$sce","$compile","$templateRequest",function(t,e,n,r){return{link:function(i,a,o){var s,u,l,c=i.$eval(o.tooltipTemplateTranscludeScope),p=0,d=function(){u&&(u.remove(),u=null),s&&(s.$destroy(),s=null),l&&(t.leave(l).then(function(){u=null}),u=l,l=null)};i.$watch(e.parseAsResourceUrl(o.uibTooltipTemplateTransclude),function(e){var o=++p;e?(r(e,!0).then(function(r){if(o===p){var i=c.$new(),u=r,f=n(u)(i,function(e){d(),t.enter(e,a)});s=i,l=f,s.$emit("$includeContentLoaded",e)}},function(){o===p&&(d(),i.$emit("$includeContentError",e))}),i.$emit("$includeContentRequested",e)):d()}),i.$on("$destroy",d)}}}]).directive("uibTooltipClasses",["$uibPosition",function(t){return{restrict:"A",link:function(e,n,r){if(e.placement){var i=t.parsePlacement(e.placement);n.addClass(i[0])}e.popupClass&&n.addClass(e.popupClass),e.animation&&n.addClass(r.tooltipAnimationClass)}}}]).directive("uibTooltipPopup",function(){return{restrict:"A",scope:{content:"@"},templateUrl:"uib/template/tooltip/tooltip-popup.html"}}).directive("uibTooltip",["$uibTooltip",function(t){return t("uibTooltip","tooltip","mouseenter")}]).directive("uibTooltipTemplatePopup",function(){return{restrict:"A",scope:{contentExp:"&",originScope:"&"},templateUrl:"uib/template/tooltip/tooltip-template-popup.html"}}).directive("uibTooltipTemplate",["$uibTooltip",function(t){return t("uibTooltipTemplate","tooltip","mouseenter",{useContentExp:!0})}]).directive("uibTooltipHtmlPopup",function(){return{restrict:"A",scope:{contentExp:"&"},templateUrl:"uib/template/tooltip/tooltip-html-popup.html"}}).directive("uibTooltipHtml",["$uibTooltip",function(t){return t("uibTooltipHtml","tooltip","mouseenter",{useContentExp:!0})}]),angular.module("ui.bootstrap.popover",["ui.bootstrap.tooltip"]).directive("uibPopoverTemplatePopup",function(){return{restrict:"A",scope:{uibTitle:"@",contentExp:"&",originScope:"&"},templateUrl:"uib/template/popover/popover-template.html"}}).directive("uibPopoverTemplate",["$uibTooltip",function(t){return t("uibPopoverTemplate","popover","click",{useContentExp:!0})}]).directive("uibPopoverHtmlPopup",function(){return{restrict:"A",scope:{contentExp:"&",uibTitle:"@"},templateUrl:"uib/template/popover/popover-html.html"}}).directive("uibPopoverHtml",["$uibTooltip",function(t){return t("uibPopoverHtml","popover","click",{useContentExp:!0})}]).directive("uibPopoverPopup",function(){return{restrict:"A",scope:{uibTitle:"@",content:"@"},templateUrl:"uib/template/popover/popover.html"}}).directive("uibPopover",["$uibTooltip",function(t){return t("uibPopover","popover","click")}]),angular.module("ui.bootstrap.progressbar",[]).constant("uibProgressConfig",{animate:!0,max:100}).controller("UibProgressController",["$scope","$attrs","uibProgressConfig",function(t,e,n){function r(){return angular.isDefined(t.maxParam)?t.maxParam:n.max}var i=this,a=angular.isDefined(e.animate)?t.$parent.$eval(e.animate):n.animate;this.bars=[],t.max=r(),this.addBar=function(t,e,n){a||e.css({transition:"none"}),this.bars.push(t),t.max=r(),t.title=n&&angular.isDefined(n.title)?n.title:"progressbar",t.$watch("value",function(e){t.recalculatePercentage()}),t.recalculatePercentage=function(){var e=i.bars.reduce(function(t,e){return e.percent=+(100*e.value/e.max).toFixed(2),t+e.percent},0);e>100&&(t.percent-=e-100)},t.$on("$destroy",function(){e=null,i.removeBar(t)})},this.removeBar=function(t){this.bars.splice(this.bars.indexOf(t),1),this.bars.forEach(function(t){t.recalculatePercentage()})},t.$watch("maxParam",function(t){i.bars.forEach(function(t){t.max=r(),t.recalculatePercentage()})})}]).directive("uibProgress",function(){return{replace:!0,transclude:!0,controller:"UibProgressController",require:"uibProgress",scope:{maxParam:"=?max"},templateUrl:"uib/template/progressbar/progress.html"}}).directive("uibBar",function(){return{replace:!0,transclude:!0,require:"^uibProgress",scope:{value:"=",type:"@"},templateUrl:"uib/template/progressbar/bar.html",link:function(t,e,n,r){r.addBar(t,e,n)}}}).directive("uibProgressbar",function(){return{replace:!0,transclude:!0,controller:"UibProgressController",scope:{value:"=",maxParam:"=?max",type:"@"},templateUrl:"uib/template/progressbar/progressbar.html",link:function(t,e,n,r){r.addBar(t,angular.element(e.children()[0]),{title:n.title})}}}),angular.module("ui.bootstrap.rating",[]).constant("uibRatingConfig",{max:5,stateOn:null,stateOff:null,enableReset:!0,titles:["one","two","three","four","five"]}).controller("UibRatingController",["$scope","$attrs","uibRatingConfig",function(t,e,n){var r={$setViewValue:angular.noop},i=this;this.init=function(i){r=i,r.$render=this.render,r.$formatters.push(function(t){return angular.isNumber(t)&&t<<0!==t&&(t=Math.round(t)),t}),this.stateOn=angular.isDefined(e.stateOn)?t.$parent.$eval(e.stateOn):n.stateOn,this.stateOff=angular.isDefined(e.stateOff)?t.$parent.$eval(e.stateOff):n.stateOff,this.enableReset=angular.isDefined(e.enableReset)?t.$parent.$eval(e.enableReset):n.enableReset;var a=angular.isDefined(e.titles)?t.$parent.$eval(e.titles):n.titles;this.titles=angular.isArray(a)&&a.length>0?a:n.titles;var o=angular.isDefined(e.ratingStates)?t.$parent.$eval(e.ratingStates):new Array(angular.isDefined(e.max)?t.$parent.$eval(e.max):n.max);t.range=this.buildTemplateObjects(o)},this.buildTemplateObjects=function(t){for(var e=0,n=t.length;e=this.titles.length?t+1:this.titles[t]},t.rate=function(e){if(!t.readonly&&e>=0&&e<=t.range.length){var n=i.enableReset&&r.$viewValue===e?0:e;r.$setViewValue(n),r.$render()}},t.enter=function(e){t.readonly||(t.value=e),t.onHover({value:e})},t.reset=function(){t.value=r.$viewValue,t.onLeave()},t.onKeydown=function(e){/(37|38|39|40)/.test(e.which)&&(e.preventDefault(),e.stopPropagation(),t.rate(t.value+(38===e.which||39===e.which?1:-1)))},this.render=function(){t.value=r.$viewValue,t.title=i.getTitle(t.value-1)}}]).directive("uibRating",function(){return{require:["uibRating","ngModel"],restrict:"A",scope:{readonly:"=?readOnly",onHover:"&",onLeave:"&"},controller:"UibRatingController",templateUrl:"uib/template/rating/rating.html",link:function(t,e,n,r){var i=r[0],a=r[1];i.init(a)}}}),angular.module("ui.bootstrap.tabs",[]).controller("UibTabsetController",["$scope",function(t){function e(t){for(var e=0;ee.index?1:t.index0&&e<13:e>=0&&e<24)&&""!==t.hours)return t.showMeridian&&(12===e&&(e=0),t.meridian===x[1]&&(e+=12)),e}function u(){var e=+t.minutes;if(e>=0&&e<60&&""!==t.minutes)return e}function l(){var e=+t.seconds;return e>=0&&e<60?e:void 0}function c(t,e){return null===t?"":angular.isDefined(t)&&t.toString().length<2&&!e?"0"+t:t.toString()}function p(t){d(),C.$setViewValue(new Date($)),f(t)}function d(){y&&y.$setValidity("hours",!0),b&&b.$setValidity("minutes",!0),w&&w.$setValidity("seconds",!0),C.$setValidity("time",!0),t.invalidHours=!1,t.invalidMinutes=!1,t.invalidSeconds=!1}function f(e){if(C.$modelValue){var n=$.getHours(),r=$.getMinutes(),i=$.getSeconds();t.showMeridian&&(n=0===n||12===n?12:n%12),t.hours="h"===e?n:c(n,!T),"m"!==e&&(t.minutes=c(r)),t.meridian=$.getHours()<12?x[0]:x[1],"s"!==e&&(t.seconds=c(i)),t.meridian=$.getHours()<12?x[0]:x[1]}else t.hours=null,t.minutes=null,t.seconds=null,t.meridian=x[0]}function h(t){$=m($,t),p()}function g(t,e){return m(t,60*e)}function m(t,e){var n=new Date(t.getTime()+1e3*e),r=new Date(t);return r.setHours(n.getHours(),n.getMinutes(),n.getSeconds()),r}function v(){return(null===t.hours||""===t.hours)&&(null===t.minutes||""===t.minutes)&&(!t.showSeconds||t.showSeconds&&(null===t.seconds||""===t.seconds))}var y,b,w,$=new Date,k=[],C={$setViewValue:angular.noop},x=angular.isDefined(n.meridians)?t.$parent.$eval(n.meridians):o.meridians||a.DATETIME_FORMATS.AMPMS,T=!angular.isDefined(n.padHours)||t.$parent.$eval(n.padHours);t.tabindex=angular.isDefined(n.tabindex)?n.tabindex:0,e.removeAttr("tabindex"),this.init=function(e,r){C=e,C.$render=this.render,C.$formatters.unshift(function(t){return t?new Date(t):null});var i=r.eq(0),a=r.eq(1),s=r.eq(2);y=i.controller("ngModel"),b=a.controller("ngModel"),w=s.controller("ngModel"),(angular.isDefined(n.mousewheel)?t.$parent.$eval(n.mousewheel):o.mousewheel)&&this.setupMousewheelEvents(i,a,s),(angular.isDefined(n.arrowkeys)?t.$parent.$eval(n.arrowkeys):o.arrowkeys)&&this.setupArrowkeyEvents(i,a,s),t.readonlyInput=angular.isDefined(n.readonlyInput)?t.$parent.$eval(n.readonlyInput):o.readonlyInput,this.setupInputEvents(i,a,s)};var S=o.hourStep;n.hourStep&&k.push(t.$parent.$watch(r(n.hourStep),function(t){S=+t}));var E=o.minuteStep;n.minuteStep&&k.push(t.$parent.$watch(r(n.minuteStep),function(t){E=+t}));var D;k.push(t.$parent.$watch(r(n.min),function(t){var e=new Date(t);D=isNaN(e)?void 0:e}));var A;k.push(t.$parent.$watch(r(n.max),function(t){var e=new Date(t);A=isNaN(e)?void 0:e}));var B=!1;n.ngDisabled&&k.push(t.$parent.$watch(r(n.ngDisabled),function(t){B=t})),t.noIncrementHours=function(){var t=g($,60*S);return B||t>A||t<$&&t$&&t>A},t.noIncrementMinutes=function(){var t=g($,E);return B||t>A||t<$&&t$&&t>A},t.noIncrementSeconds=function(){var t=m($,I);return B||t>A||t<$&&t$&&t>A},t.noToggleMeridian=function(){return $.getHours()<12?B||g($,720)>A:B||g($,-720)0};e.on("mousewheel wheel",function(e){B||t.$apply(i(e)?t.incrementHours():t.decrementHours()),e.preventDefault()}),n.on("mousewheel wheel",function(e){B||t.$apply(i(e)?t.incrementMinutes():t.decrementMinutes()),e.preventDefault()}),r.on("mousewheel wheel",function(e){B||t.$apply(i(e)?t.incrementSeconds():t.decrementSeconds()),e.preventDefault()})},this.setupArrowkeyEvents=function(e,n,r){e.on("keydown",function(e){B||(38===e.which?(e.preventDefault(),t.incrementHours(),t.$apply()):40===e.which&&(e.preventDefault(),t.decrementHours(),t.$apply()))}),n.on("keydown",function(e){B||(38===e.which?(e.preventDefault(),t.incrementMinutes(),t.$apply()):40===e.which&&(e.preventDefault(),t.decrementMinutes(),t.$apply()))}),r.on("keydown",function(e){B||(38===e.which?(e.preventDefault(),t.incrementSeconds(),t.$apply()):40===e.which&&(e.preventDefault(),t.decrementSeconds(),t.$apply()))})},this.setupInputEvents=function(e,n,r){if(t.readonlyInput)return t.updateHours=angular.noop,t.updateMinutes=angular.noop,void(t.updateSeconds=angular.noop);var i=function(e,n,r){C.$setViewValue(null),C.$setValidity("time",!1),angular.isDefined(e)&&(t.invalidHours=e,y&&y.$setValidity("hours",!1)),angular.isDefined(n)&&(t.invalidMinutes=n,b&&b.$setValidity("minutes",!1)),angular.isDefined(r)&&(t.invalidSeconds=r,w&&w.$setValidity("seconds",!1))};t.updateHours=function(){var t=s(),e=u();C.$setDirty(),angular.isDefined(t)&&angular.isDefined(e)?($.setHours(t),$.setMinutes(e),$A?i(!0):p("h")):i(!0)},e.on("blur",function(e){C.$setTouched(),v()?d():null===t.hours||""===t.hours?i(!0):!t.invalidHours&&t.hours<10&&t.$apply(function(){t.hours=c(t.hours,!T)})}),t.updateMinutes=function(){var t=u(),e=s();C.$setDirty(),angular.isDefined(t)&&angular.isDefined(e)?($.setHours(e),$.setMinutes(t),$A?i(void 0,!0):p("m")):i(void 0,!0)},n.on("blur",function(e){C.$setTouched(),v()?d():null===t.minutes?i(void 0,!0):!t.invalidMinutes&&t.minutes<10&&t.$apply(function(){t.minutes=c(t.minutes)})}),t.updateSeconds=function(){var t=l();C.$setDirty(),angular.isDefined(t)?($.setSeconds(t),p("s")):i(void 0,void 0,!0)},r.on("blur",function(e){v()?d():!t.invalidSeconds&&t.seconds<10&&t.$apply(function(){t.seconds=c(t.seconds)})})},this.render=function(){var e=C.$viewValue;isNaN(e)?(C.$setValidity("time",!1),i.error('Timepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')):(e&&($=e),$A?(C.$setValidity("time",!1),t.invalidHours=!0,t.invalidMinutes=!0):d(),f())},t.showSpinners=angular.isDefined(n.showSpinners)?t.$parent.$eval(n.showSpinners):o.showSpinners,t.incrementHours=function(){t.noIncrementHours()||h(60*S*60)},t.decrementHours=function(){t.noDecrementHours()||h(60*-S*60)},t.incrementMinutes=function(){t.noIncrementMinutes()||h(60*E)},t.decrementMinutes=function(){t.noDecrementMinutes()||h(60*-E)},t.incrementSeconds=function(){t.noIncrementSeconds()||h(I)},t.decrementSeconds=function(){t.noDecrementSeconds()||h(-I)},t.toggleMeridian=function(){var e=u(),n=s();t.noToggleMeridian()||(angular.isDefined(e)&&angular.isDefined(n)?h(720*($.getHours()<12?60:-60)):t.meridian=t.meridian===x[0]?x[1]:x[0])},t.blur=function(){C.$setTouched()},t.$on("$destroy",function(){for(;k.length;)k.shift()()})}]).directive("uibTimepicker",["uibTimepickerConfig",function(t){return{require:["uibTimepicker","?^ngModel"],restrict:"A",controller:"UibTimepickerController",controllerAs:"timepicker",scope:{},templateUrl:function(e,n){return n.templateUrl||t.templateUrl},link:function(t,e,n,r){var i=r[0],a=r[1];a&&i.init(a,e.find("input"))}}}]),angular.module("ui.bootstrap.typeahead",["ui.bootstrap.debounce","ui.bootstrap.position"]).factory("uibTypeaheadParser",["$parse",function(t){return{parse:function(e){var n=e.match(/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+([\s\S]+?)$/);if(!n)throw new Error('Expected typeahead specification in form of "_modelValue_ (as _label_)? for _item_ in _collection_" but got "'+e+'".');return{itemName:n[3],source:t(n[4]),viewMapper:t(n[2]||n[1]),modelMapper:t(n[1])}}}}]).controller("UibTypeaheadController",["$scope","$element","$attrs","$compile","$parse","$q","$timeout","$document","$window","$rootScope","$$debounce","$uibPosition","uibTypeaheadParser",function(t,e,n,r,i,a,o,s,u,l,c,p,d){function f(){q.moveInProgress||(q.moveInProgress=!0,q.$digest()),Z()}function h(){q.position=B?p.offset(e):p.position(e),q.position.top+=e.prop("offsetHeight")}function g(t){var e;return angular.version.minor<6?(e=t.$options||{},e.getOption=function(t){return e[t]}):e=t.$options,e}var m,v,y=[9,13,27,38,40],b=t.$eval(n.typeaheadMinLength);b||0===b||(b=1),t.$watch(n.typeaheadMinLength,function(t){b=t||0===t?t:1});var w=t.$eval(n.typeaheadWaitMs)||0,$=!1!==t.$eval(n.typeaheadEditable);t.$watch(n.typeaheadEditable,function(t){$=!1!==t});var k,C,x=i(n.typeaheadLoading).assign||angular.noop,T=n.typeaheadShouldSelect?i(n.typeaheadShouldSelect):function(t,e){var n=e.$event;return 13===n.which||9===n.which},S=i(n.typeaheadOnSelect),E=!!angular.isDefined(n.typeaheadSelectOnBlur)&&t.$eval(n.typeaheadSelectOnBlur),D=i(n.typeaheadNoResults).assign||angular.noop,A=n.typeaheadInputFormatter?i(n.typeaheadInputFormatter):void 0,B=!!n.typeaheadAppendToBody&&t.$eval(n.typeaheadAppendToBody),I=n.typeaheadAppendTo?t.$eval(n.typeaheadAppendTo):null,O=!1!==t.$eval(n.typeaheadFocusFirst),M=!!n.typeaheadSelectOnExact&&t.$eval(n.typeaheadSelectOnExact),P=i(n.typeaheadIsOpen).assign||angular.noop,_=t.$eval(n.typeaheadShowHint)||!1,R=i(n.ngModel),L=i(n.ngModel+"($$$p)"),N=function(e,n){return angular.isFunction(R(t))&&v.getOption("getterSetter")?L(e,{$$$p:n}):R.assign(e,n)},U=d.parse(n.uibTypeahead),q=t.$new(),j=t.$on("$destroy",function(){q.$destroy()});q.$on("$destroy",j);var V="typeahead-"+q.$id+"-"+Math.floor(1e4*Math.random());e.attr({"aria-autocomplete":"list","aria-expanded":!1,"aria-owns":V});var F,z;_&&(F=angular.element("
"),F.css("position","relative"),e.after(F),z=e.clone(),z.attr("placeholder",""),z.attr("tabindex","-1"),z.val(""),z.css({position:"absolute",top:"0px",left:"0px","border-color":"transparent","box-shadow":"none",opacity:1,background:"none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255)",color:"#999"}),e.css({position:"relative","vertical-align":"top","background-color":"transparent"}),z.attr("id")&&z.removeAttr("id"),F.append(z),z.after(e));var H=angular.element("
");H.attr({id:V,matches:"matches",active:"activeIdx",select:"select(activeIdx, evt)","move-in-progress":"moveInProgress",query:"query",position:"position","assign-is-open":"assignIsOpen(isOpen)",debounce:"debounceUpdate"}),angular.isDefined(n.typeaheadTemplateUrl)&&H.attr("template-url",n.typeaheadTemplateUrl),angular.isDefined(n.typeaheadPopupTemplateUrl)&&H.attr("popup-template-url",n.typeaheadPopupTemplateUrl);var K=function(){_&&z.val("")},W=function(){q.matches=[],q.activeIdx=-1,e.attr("aria-expanded",!1),K()},G=function(t){return V+"-option-"+t};q.$watch("activeIdx",function(t){t<0?e.removeAttr("aria-activedescendant"):e.attr("aria-activedescendant",G(t))});var Y=function(t,e){return!!(q.matches.length>e&&t)&&t.toUpperCase()===q.matches[e].label.toUpperCase()},Q=function(n,r){var i={$viewValue:n};x(t,!0),D(t,!1),a.when(U.source(t,i)).then(function(a){var o=n===m.$viewValue;if(o&&k)if(a&&a.length>0){q.activeIdx=O?0:-1,D(t,!1),q.matches.length=0;for(var s=0;s0&&u.slice(0,n.length).toUpperCase()===n.toUpperCase()?z.val(n+u.slice(n.length)):z.val("")}}else W(),D(t,!0);o&&x(t,!1)},function(){W(),x(t,!1),D(t,!0)})};B&&(angular.element(u).on("resize",f),s.find("body").on("scroll",f));var Z=c(function(){q.matches.length&&h(),q.moveInProgress=!1},200);q.moveInProgress=!1,q.query=void 0;var J,X=function(t){J=o(function(){Q(t)},w)},tt=function(){J&&o.cancel(J)};W(),q.assignIsOpen=function(e){P(t,e)},q.select=function(r,i){var a,s,u={};C=!0,u[U.itemName]=s=q.matches[r].model,a=U.modelMapper(t,u),N(t,a),m.$setValidity("editable",!0),m.$setValidity("parse",!0),S(t,{$item:s,$model:a,$label:U.viewMapper(t,u),$event:i}),W(),!1!==q.$eval(n.typeaheadFocusOnSelect)&&o(function(){e[0].focus()},0,!1)},e.on("keydown",function(e){if(0!==q.matches.length&&-1!==y.indexOf(e.which)){var n=T(t,{$event:e});if(-1===q.activeIdx&&n||9===e.which&&e.shiftKey)return W(),void q.$digest();e.preventDefault();var r;switch(e.which){case 27:e.stopPropagation(),W(),t.$digest();break;case 38:q.activeIdx=(q.activeIdx>0?q.activeIdx:q.matches.length)-1,q.$digest(),r=H[0].querySelectorAll(".uib-typeahead-match")[q.activeIdx],r.parentNode.scrollTop=r.offsetTop;break;case 40:q.activeIdx=(q.activeIdx+1)%q.matches.length,q.$digest(),r=H[0].querySelectorAll(".uib-typeahead-match")[q.activeIdx],r.parentNode.scrollTop=r.offsetTop;break;default:n&&q.$apply(function(){angular.isNumber(q.debounceUpdate)||angular.isObject(q.debounceUpdate)?c(function(){ diff --git a/u2f-connector.html b/u2f-connector.html index 221f2f47..5f041260 100644 --- a/u2f-connector.html +++ b/u2f-connector.html @@ -5,6 +5,6 @@ U2F Connector - +