{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./jslib/src/abstractions/i18n.service.ts","webpack:///./jslib/src/abstractions/api.service.ts","webpack:///./jslib/src/abstractions/platformUtils.service.ts","webpack:///./jslib/src/angular/pipes/i18n.pipe.ts","webpack:///./jslib/src/abstractions/user.service.ts","webpack:///./jslib/src/angular/services/validation.service.ts","webpack:///./jslib/src/angular/directives/api-action.directive.ts","webpack:///./jslib/src/angular/directives/a11y-title.directive.ts","webpack:///./jslib/src/abstractions/messaging.service.ts","webpack:///./jslib/src/abstractions/crypto.service.ts","webpack:///./jslib/src/abstractions/cipher.service.ts","webpack:///./jslib/src/importers/baseImporter.ts","webpack:///./jslib/src/models/domain/importResult.ts","webpack:///./jslib/src/angular/components/callout.component.ts","webpack:///./jslib/src/angular/components/callout.component.html","webpack:///./jslib/src/abstractions/state.service.ts","webpack:///./jslib/src/models/response/baseResponse.ts","webpack:///./jslib/src/enums/cipherType.ts","webpack:///./jslib/src/misc/utils.ts","webpack:///./jslib/src/angular/directives/stop-click.directive.ts","webpack:///./jslib/src/abstractions/collection.service.ts","webpack:///./jslib/src/angular/directives/input-verbatim.directive.ts","webpack:///./jslib/src/abstractions/storage.service.ts","webpack:///./jslib/src/abstractions/folder.service.ts","webpack:///./jslib/src/abstractions/sync.service.ts","webpack:///./jslib/src/angular/directives/stop-prop.directive.ts","webpack:///./jslib/src/abstractions/passwordGeneration.service.ts","webpack:///./jslib/src/services/constants.service.ts","webpack:///./jslib/src/abstractions/environment.service.ts","webpack:///./jslib/src/models/request/passwordVerificationRequest.ts","webpack:///./jslib/src/abstractions/event.service.ts","webpack:///./jslib/src/abstractions/token.service.ts","webpack:///./jslib/src/models/view/cardView.ts","webpack:///./jslib/src/models/view/secureNoteView.ts","webpack:///./jslib/src/angular/directives/autofocus.directive.ts","webpack:///./jslib/src/models/domain/domainBase.ts","webpack:///./jslib/src/abstractions/auth.service.ts","webpack:///./src/app/modal.component.ts","webpack:///./jslib/src/angular/components/icon.component.ts","webpack:///./jslib/src/enums/secureNoteType.ts","webpack:///./jslib/src/angular/services/broadcaster.service.ts","webpack:///./jslib/src/abstractions/policy.service.ts","webpack:///./jslib/src/enums/twoFactorProviderType.ts","webpack:///./jslib/src/angular/components/icon.component.html","webpack:///./jslib/src/abstractions/cryptoFunction.service.ts","webpack:///./jslib/src/abstractions/audit.service.ts","webpack:///./src/app/settings/payment.component.ts","webpack:///./jslib/src/models/view/folderView.ts","webpack:///./jslib/src/abstractions/search.service.ts","webpack:///./jslib/src/abstractions/vaultTimeout.service.ts","webpack:///./jslib/src/models/view/cipherView.ts","webpack:///./jslib/src/models/view/identityView.ts","webpack:///./src/app/components/avatar.component.ts","webpack:///./jslib/src/models/view/loginView.ts","webpack:///./jslib/src/enums/fieldType.ts","webpack:///./jslib/src/models/view/collectionView.ts","webpack:///./src/app/components/avatar.component.ts.AvatarComponent.html","webpack:///./jslib/src/models/data/cipherData.ts","webpack:///./jslib/src/models/data/collectionData.ts","webpack:///./jslib/src/models/domain/collection.ts","webpack:///./src/app/settings/two-factor-verify.component.ts","webpack:///./jslib/src/models/request/cipherRequest.ts","webpack:///./jslib/src/models/view/fieldView.ts","webpack:///./src/app/settings/two-factor-verify.component.html","webpack:///./src/app/services/router.service.ts","webpack:///./jslib/src/models/domain/cipherString.ts","webpack:///./jslib/src/enums/eventType.ts","webpack:///./src/app/settings/organizations.component.ts","webpack:///./jslib/src/abstractions/totp.service.ts","webpack:///./jslib/src/enums/organizationUserStatusType.ts","webpack:///./jslib/src/models/view/loginUriView.ts","webpack:///./jslib/src/enums/policyType.ts","webpack:///./src/app/settings/two-factor-base.component.ts","webpack:///./src/app/settings/payment.component.html","webpack:///./jslib/src/abstractions/import.service.ts","webpack:///./jslib/src/abstractions/export.service.ts","webpack:///./src/app/tools/cipher-report.component.ts","webpack:///./jslib/src/models/domain/cipher.ts","webpack:///./src/app/services/event.service.ts","webpack:///./jslib/src/enums/deviceType.ts","webpack:///./jslib/src/enums/organizationUserType.ts","webpack:///./jslib/src/services/auth.service.ts","webpack:///./src/app/vault/groupings.component.ts","webpack:///./src/app/vault/ciphers.component.ts","webpack:///./src/app/vault/add-edit.component.ts","webpack:///./jslib/src/enums/uriMatchType.ts","webpack:///./src/app/settings/two-factor-setup.component.ts","webpack:///./jslib/src/enums/paymentMethodType.ts","webpack:///./src/app/settings/user-billing.component.ts","webpack:///./src/app/settings/organization-plans.component.ts","webpack:///./src/app/tools/import.component.ts","webpack:///./src/app/tools/export.component.ts","webpack:///./src/app/tools/reused-passwords-report.component.ts","webpack:///./src/app/tools/unsecured-websites-report.component.ts","webpack:///./src/app/tools/weak-passwords-report.component.ts","webpack:///./src/app/tools/exposed-passwords-report.component.ts","webpack:///./src/app/tools/inactive-two-factor-report.component.ts","webpack:///./jslib/src/angular/pipes/search.pipe.ts","webpack:///./jslib/src/models/request/selectionReadOnlyRequest.ts","webpack:///./jslib/src/models/response/selectionReadOnlyResponse.ts","webpack:///./jslib/src/abstractions/notifications.service.ts","webpack:///./jslib/src/abstractions/settings.service.ts","webpack:///./src/app/layouts/frontend-layout.component.ts","webpack:///./src/app/accounts/login.component.ts","webpack:///./src/app/accounts/two-factor.component.ts","webpack:///./src/app/components/password-strength.component.ts","webpack:///./src/app/accounts/register.component.ts","webpack:///./jslib/src/enums/kdfType.ts","webpack:///./jslib/src/enums/encryptionType.ts","webpack:///./src/app/accounts/hint.component.ts","webpack:///./src/app/accounts/lock.component.ts","webpack:///./src/app/accounts/verify-email-token.component.ts","webpack:///./src/app/accounts/accept-organization.component.ts","webpack:///./src/app/accounts/recover-two-factor.component.ts","webpack:///./src/app/accounts/recover-delete.component.ts","webpack:///./src/app/accounts/verify-recover-delete.component.ts","webpack:///./src/app/layouts/navbar.component.ts","webpack:///./src/app/layouts/footer.component.ts","webpack:///./src/app/layouts/user-layout.component.ts","webpack:///./src/app/vault/vault.component.ts","webpack:///./jslib/src/models/request/cipherWithIdRequest.ts","webpack:///./jslib/src/models/request/folderRequest.ts","webpack:///./src/app/vault/attachments.component.ts","webpack:///./src/app/vault/collections.component.ts","webpack:///./src/app/settings/settings.component.ts","webpack:///./src/app/settings/account.component.ts","webpack:///./src/app/settings/purge-vault.component.ts","webpack:///./src/app/settings/options.component.ts","webpack:///./src/app/settings/domain-rules.component.ts","webpack:///./src/app/settings/two-factor-duo.component.ts","webpack:///./src/app/settings/premium.component.ts","webpack:///./src/app/settings/add-credit.component.ts","webpack:///./src/app/settings/adjust-payment.component.ts","webpack:///./src/app/settings/update-license.component.ts","webpack:///./src/app/settings/adjust-storage.component.ts","webpack:///./src/app/settings/user-subscription.component.ts","webpack:///./src/app/settings/create-organization.component.ts","webpack:///./src/app/tools/tools.component.ts","webpack:///./src/app/tools/password-generator.component.ts","webpack:///./src/app/tools/breach-report.component.ts","webpack:///./src/app/organizations/vault/add-edit.component.ts","webpack:///./jslib/src/models/view/passwordHistoryView.ts","webpack:///./src/app/layouts/organization-layout.component.ts","webpack:///./src/app/organizations/vault/groupings.component.ts","webpack:///./src/app/organizations/vault/ciphers.component.ts","webpack:///./src/app/organizations/vault/vault.component.ts","webpack:///./src/app/organizations/manage/entity-events.component.ts","webpack:///./src/app/organizations/tools/tools.component.ts","webpack:///./src/app/organizations/tools/import.component.ts","webpack:///./src/app/organizations/tools/export.component.ts","webpack:///./src/app/organizations/tools/exposed-passwords-report.component.ts","webpack:///./src/app/organizations/tools/inactive-two-factor-report.component.ts","webpack:///./src/app/organizations/tools/reused-passwords-report.component.ts","webpack:///./src/app/organizations/tools/unsecured-websites-report.component.ts","webpack:///./src/app/organizations/tools/weak-passwords-report.component.ts","webpack:///./src/app/organizations/manage/manage.component.ts","webpack:///./src/app/organizations/manage/collections.component.ts","webpack:///./src/app/organizations/manage/entity-users.component.ts","webpack:///./src/app/organizations/manage/events.component.ts","webpack:///./src/app/organizations/manage/groups.component.ts","webpack:///./src/app/organizations/manage/people.component.ts","webpack:///./src/app/organizations/manage/policies.component.ts","webpack:///./src/app/organizations/settings/settings.component.ts","webpack:///./src/app/organizations/settings/account.component.ts","webpack:///./src/app/organizations/settings/two-factor-setup.component.ts","webpack:///./src/app/organizations/settings/organization-billing.component.ts","webpack:///./src/app/organizations/settings/organization-subscription.component.ts","webpack:///./jslib/src/models/response/profileResponse.ts","webpack:///./src lazy namespace object","webpack:///./src/app/app.component.ts","webpack:///./src/app/accounts/two-factor-options.component.ts","webpack:///./jslib/src/models/request/twoFactorEmailRequest.ts","webpack:///./jslib/src/models/request/keysRequest.ts","webpack:///./src/app/components/password-strength.component.html","webpack:///./jslib/src/models/domain/policy.ts","webpack:///./jslib/src/models/data/policyData.ts","webpack:///./src/app/layouts/navbar.component.html","webpack:///./src/app/layouts/footer.component.html","webpack:///./src/app/settings/verify-email.component.ts","webpack:///./src/app/settings/organizations.component.html","webpack:///./src/app/settings/update-key.component.ts","webpack:///./jslib/src/models/api/cardApi.ts","webpack:///./jslib/src/models/api/fieldApi.ts","webpack:///./jslib/src/models/api/identityApi.ts","webpack:///./jslib/src/models/api/loginApi.ts","webpack:///./jslib/src/models/api/loginUriApi.ts","webpack:///./jslib/src/models/api/secureNoteApi.ts","webpack:///./jslib/src/models/request/folderWithIdRequest.ts","webpack:///./jslib/src/models/request/updateKeyRequest.ts","webpack:///./src/app/vault/bulk-delete.component.ts","webpack:///./src/app/vault/bulk-move.component.ts","webpack:///./src/app/vault/bulk-share.component.ts","webpack:///./src/app/vault/folder-add-edit.component.ts","webpack:///./src/app/vault/share.component.ts","webpack:///./src/app/settings/profile.component.ts","webpack:///./src/app/settings/change-email.component.ts","webpack:///./jslib/src/models/request/emailTokenRequest.ts","webpack:///./src/app/settings/change-password.component.ts","webpack:///./jslib/src/models/request/passwordRequest.ts","webpack:///./src/app/settings/change-kdf.component.ts","webpack:///./src/app/settings/deauthorize-sessions.component.ts","webpack:///./src/app/settings/delete-account.component.ts","webpack:///./src/app/settings/two-factor-authenticator.component.ts","webpack:///./src/app/settings/two-factor-email.component.ts","webpack:///./src/app/settings/two-factor-recovery.component.ts","webpack:///./src/app/settings/two-factor-u2f.component.ts","webpack:///./src/app/settings/two-factor-yubikey.component.ts","webpack:///./src/services/webConstants.ts","webpack:///./src/app/settings/add-credit.component.html","webpack:///./src/app/settings/adjust-payment.component.html","webpack:///./src/app/settings/update-license.component.html","webpack:///./src/app/settings/adjust-storage.component.html","webpack:///./src/app/settings/organization-plans.component.html","webpack:///./jslib/src/enums/planType.ts","webpack:///./jslib/src/angular/pipes/color-password.pipe.ts","webpack:///./jslib/src/angular/directives/select-copy.directive.ts","webpack:///./src/app/tools/password-generator-history.component.ts","webpack:///./jslib/src/models/data/attachmentData.ts","webpack:///./jslib/src/models/data/cardData.ts","webpack:///./jslib/src/models/data/fieldData.ts","webpack:///./jslib/src/models/data/identityData.ts","webpack:///./jslib/src/models/data/loginData.ts","webpack:///./jslib/src/models/data/loginUriData.ts","webpack:///./jslib/src/models/data/passwordHistoryData.ts","webpack:///./jslib/src/models/data/secureNoteData.ts","webpack:///./jslib/src/models/domain/attachment.ts","webpack:///./jslib/src/models/view/attachmentView.ts","webpack:///./jslib/src/models/domain/symmetricCryptoKey.ts","webpack:///./jslib/src/models/domain/card.ts","webpack:///./jslib/src/models/domain/field.ts","webpack:///./jslib/src/models/domain/identity.ts","webpack:///./jslib/src/models/domain/login.ts","webpack:///./jslib/src/models/domain/loginUri.ts","webpack:///./jslib/src/models/domain/password.ts","webpack:///./jslib/src/models/domain/secureNote.ts","webpack:///./jslib/src/models/request/cipherCreateRequest.ts","webpack:///./src/app/organizations/vault/attachments.component.ts","webpack:///./src/app/organizations/vault/collections.component.ts","webpack:///./jslib/src/models/request/cipherCollectionsRequest.ts","webpack:///./src/app/organizations/manage/collection-add-edit.component.ts","webpack:///./jslib/src/models/request/collectionRequest.ts","webpack:///./src/app/organizations/manage/group-add-edit.component.ts","webpack:///./jslib/src/models/request/organizationUserConfirmRequest.ts","webpack:///./src/app/organizations/manage/user-add-edit.component.ts","webpack:///./src/app/organizations/manage/user-confirm.component.ts","webpack:///./src/app/organizations/manage/user-groups.component.ts","webpack:///./src/app/organizations/manage/policy-edit.component.ts","webpack:///./src/app/organizations/settings/api-key.component.ts","webpack:///./src/app/organizations/settings/delete-organization.component.ts","webpack:///./src/app/organizations/settings/rotate-api-key.component.ts","webpack:///./src/app/organizations/settings/change-plan.component.ts","webpack:///./src/app/organizations/settings/download-license.component.ts","webpack:///./src/app/organizations/settings/adjust-seats.component.ts","webpack:///./jslib/src/angular/directives/true-false-value.directive.ts","webpack:///./jslib/src/services/api.service.ts","webpack:///./jslib/src/models/response/cipherResponse.ts","webpack:///./jslib/src/models/response/collectionResponse.ts","webpack:///./jslib/src/models/response/domainsResponse.ts","webpack:///./jslib/src/models/response/folderResponse.ts","webpack:///./jslib/src/models/response/organizationResponse.ts","webpack:///./jslib/src/models/response/subscriptionResponse.ts","webpack:///./jslib/src/models/response/policyResponse.ts","webpack:///./jslib/src/services/appId.service.ts","webpack:///./jslib/src/services/audit.service.ts","webpack:///./jslib/src/services/cipher.service.ts","webpack:///./jslib/src/misc/sequentialize.ts","webpack:///./jslib/src/services/collection.service.ts","webpack:///./jslib/src/misc/serviceUtils.ts","webpack:///./jslib/src/services/container.service.ts","webpack:///./jslib/src/services/crypto.service.ts","webpack:///./jslib/src/misc/wordlist.ts","webpack:///./jslib/src/services/environment.service.ts","webpack:///./jslib/src/services/folder.service.ts","webpack:///./jslib/src/models/data/folderData.ts","webpack:///./jslib/src/services/i18n.service.ts","webpack:///./jslib/src/services/passwordGeneration.service.ts","webpack:///./jslib/src/services/settings.service.ts","webpack:///./jslib/src/services/state.service.ts","webpack:///./jslib/src/services/sync.service.ts","webpack:///./jslib/src/services/token.service.ts","webpack:///./jslib/src/services/totp.service.ts","webpack:///./jslib/src/services/user.service.ts","webpack:///./jslib/src/services/vaultTimeout.service.ts","webpack:///./jslib/src/models/export/cipherWithIds.ts","webpack:///./jslib/src/models/export/collectionWithId.ts","webpack:///./jslib/src/models/export/folderWithId.ts","webpack:///./jslib/src/enums/notificationType.ts","webpack:///./jslib/src/angular/services/auth-guard.service.ts","webpack:///./src/app/services/organization-guard.service.ts","webpack:///./src/app/services/organization-type-guard.service.ts","webpack:///./src/app/services/unauth-guard.service.ts","webpack:///./src/app/main.ts","webpack:///./src/app/app.module.ts","webpack:///./jslib/src/services/broadcaster.service.ts","webpack:///./src/app/layouts/frontend-layout.component.html","webpack:///./src/app/accounts/login.component.html","webpack:///./jslib/src/angular/components/login.component.ts","webpack:///./jslib/src/misc/tldjs.noop.ts","webpack:///./src/app/accounts/two-factor.component.html","webpack:///./jslib/src/angular/components/two-factor-options.component.ts","webpack:///./jslib/src/angular/components/modal.component.ts","webpack:///./jslib/src/angular/components/two-factor.component.ts","webpack:///./jslib/src/models/domain/authResult.ts","webpack:///./jslib/src/models/request/deviceRequest.ts","webpack:///./jslib/src/models/request/preloginRequest.ts","webpack:///./jslib/src/models/request/tokenRequest.ts","webpack:///./jslib/src/misc/u2f.ts","webpack:///./src/app/accounts/register.component.html","webpack:///./jslib/src/angular/components/register.component.ts","webpack:///./jslib/src/models/request/registerRequest.ts","webpack:///./src/app/accounts/hint.component.html","webpack:///./jslib/src/angular/components/hint.component.ts","webpack:///./jslib/src/models/request/passwordHintRequest.ts","webpack:///./src/app/accounts/lock.component.html","webpack:///./jslib/src/angular/components/lock.component.ts","webpack:///./src/app/accounts/verify-email-token.component.html","webpack:///./jslib/src/models/request/verifyEmailRequest.ts","webpack:///./src/app/accounts/accept-organization.component.html","webpack:///./jslib/src/models/request/organizationUserAcceptRequest.ts","webpack:///./src/app/accounts/recover-two-factor.component.html","webpack:///./jslib/src/models/request/twoFactorRecoveryRequest.ts","webpack:///./src/app/accounts/recover-delete.component.html","webpack:///./jslib/src/models/request/deleteRecoverRequest.ts","webpack:///./src/app/accounts/verify-recover-delete.component.html","webpack:///./jslib/src/models/request/verifyDeleteRecoverRequest.ts","webpack:///./src/app/layouts/user-layout.component.html","webpack:///./src/app/vault/vault.component.html","webpack:///./src/app/settings/verify-email.component.html","webpack:///./src/app/vault/groupings.component.html","webpack:///./jslib/src/angular/components/groupings.component.ts","webpack:///./src/app/vault/ciphers.component.html","webpack:///./jslib/src/angular/directives/fallback-src.directive.ts","webpack:///./jslib/src/angular/components/ciphers.component.ts","webpack:///./jslib/src/models/request/attachmentRequest.ts","webpack:///./jslib/src/angular/components/add-edit.component.ts","webpack:///./jslib/src/angular/components/attachments.component.ts","webpack:///./jslib/src/angular/components/collections.component.ts","webpack:///./jslib/src/angular/components/folder-add-edit.component.ts","webpack:///./jslib/src/angular/components/share.component.ts","webpack:///./src/app/settings/settings.component.html","webpack:///./src/app/settings/account.component.html","webpack:///./src/app/settings/profile.component.html","webpack:///./jslib/src/models/request/updateProfileRequest.ts","webpack:///./src/app/settings/change-email.component.html","webpack:///./jslib/src/models/request/emailRequest.ts","webpack:///./src/app/settings/change-password.component.html","webpack:///./src/app/settings/change-kdf.component.html","webpack:///./jslib/src/models/request/kdfRequest.ts","webpack:///./src/app/settings/options.component.html","webpack:///./src/app/settings/domain-rules.component.html","webpack:///./jslib/src/models/request/updateDomainsRequest.ts","webpack:///./src/app/settings/two-factor-setup.component.html","webpack:///./jslib/src/models/request/updateTwoFactorAuthenticatorRequest.ts","webpack:///./jslib/src/models/request/twoFactorProviderRequest.ts","webpack:///./jslib/src/models/request/updateTwoFactorDuoRequest.ts","webpack:///./jslib/src/models/request/updateTwoFactorEmailRequest.ts","webpack:///./jslib/src/models/request/updateTwoFactorU2fDeleteRequest.ts","webpack:///./jslib/src/models/request/updateTwoFactorU2fRequest.ts","webpack:///./jslib/src/models/request/updateTwoFactorYubioOtpRequest.ts","webpack:///./src/app/settings/premium.component.html","webpack:///./src/app/settings/user-billing.component.html","webpack:///./jslib/src/models/request/bitPayInvoiceRequest.ts","webpack:///./jslib/src/models/request/paymentRequest.ts","webpack:///./jslib/src/enums/transactionType.ts","webpack:///./jslib/src/models/request/verifyBankRequest.ts","webpack:///./src/app/settings/user-subscription.component.html","webpack:///./jslib/src/models/request/storageRequest.ts","webpack:///./src/app/settings/create-organization.component.html","webpack:///./jslib/src/models/request/organizationCreateRequest.ts","webpack:///./jslib/src/models/request/organizationUpgradeRequest.ts","webpack:///./src/app/tools/tools.component.html","webpack:///./src/app/tools/import.component.html","webpack:///./src/app/tools/export.component.html","webpack:///./jslib/src/angular/components/export.component.ts","webpack:///./src/app/tools/password-generator.component.html","webpack:///./jslib/src/angular/components/password-generator.component.ts","webpack:///./jslib/src/angular/components/password-generator-history.component.ts","webpack:///./src/app/tools/breach-report.component.html","webpack:///./src/app/tools/reused-passwords-report.component.html","webpack:///./src/app/tools/unsecured-websites-report.component.html","webpack:///./src/app/tools/weak-passwords-report.component.html","webpack:///./src/app/tools/exposed-passwords-report.component.html","webpack:///./src/app/tools/inactive-two-factor-report.component.html","webpack:///./src/app/layouts/organization-layout.component.html","webpack:///./src/app/organizations/vault/vault.component.html","webpack:///./src/app/organizations/tools/tools.component.html","webpack:///./src/app/organizations/manage/manage.component.html","webpack:///./src/app/organizations/manage/collections.component.html","webpack:///./src/app/organizations/manage/events.component.html","webpack:///./src/app/organizations/manage/groups.component.html","webpack:///./jslib/src/models/request/groupRequest.ts","webpack:///./src/app/organizations/manage/people.component.html","webpack:///./jslib/src/models/request/organizationUserInviteRequest.ts","webpack:///./jslib/src/models/request/organizationUserUpdateRequest.ts","webpack:///./jslib/src/models/request/organizationUserUpdateGroupsRequest.ts","webpack:///./src/app/organizations/manage/policies.component.html","webpack:///./jslib/src/models/request/policyRequest.ts","webpack:///./src/app/organizations/settings/settings.component.html","webpack:///./src/app/organizations/settings/account.component.html","webpack:///./jslib/src/models/request/organizationUpdateRequest.ts","webpack:///./src/app/organizations/settings/organization-subscription.component.html","webpack:///./src/app/organizations/settings/change-plan.component.html","webpack:///./src/app/organizations/settings/download-license.component.html","webpack:///./src/app/organizations/settings/adjust-seats.component.html","webpack:///./jslib/src/models/request/seatRequest.ts","webpack:///./src/app/vault/add-edit.component.html","webpack:///./src/app/vault/attachments.component.html","webpack:///./src/app/vault/bulk-delete.component.html","webpack:///./src/app/vault/bulk-move.component.html","webpack:///./src/app/vault/bulk-share.component.html","webpack:///./src/app/vault/collections.component.html","webpack:///./src/app/settings/deauthorize-sessions.component.html","webpack:///./src/app/settings/delete-account.component.html","webpack:///./src/app/organizations/settings/delete-organization.component.html","webpack:///./src/app/vault/folder-add-edit.component.html","webpack:///./src/app/modal.component.ts.ModalComponent.html","webpack:///./src/app/organizations/settings/api-key.component.html","webpack:///./src/app/organizations/manage/collection-add-edit.component.html","webpack:///./src/app/organizations/manage/entity-events.component.html","webpack:///./src/app/organizations/manage/entity-users.component.html","webpack:///./src/app/organizations/manage/group-add-edit.component.html","webpack:///./src/app/organizations/manage/policy-edit.component.html","webpack:///./src/app/organizations/settings/rotate-api-key.component.html","webpack:///./src/app/organizations/manage/user-add-edit.component.html","webpack:///./src/app/organizations/manage/user-confirm.component.html","webpack:///./src/app/organizations/manage/user-groups.component.html","webpack:///./src/app/tools/password-generator-history.component.html","webpack:///./src/app/settings/purge-vault.component.html","webpack:///./src/app/vault/share.component.html","webpack:///./src/app/settings/two-factor-authenticator.component.html","webpack:///./src/app/settings/two-factor-duo.component.html","webpack:///./src/app/settings/two-factor-email.component.html","webpack:///./src/app/accounts/two-factor-options.component.html","webpack:///./src/app/settings/two-factor-recovery.component.html","webpack:///./src/app/settings/two-factor-u2f.component.html","webpack:///./src/app/settings/two-factor-yubikey.component.html","webpack:///./src/app/settings/update-key.component.html","webpack:///./src/app/app.component.html","webpack:///./src/app/services/services.module.ts","webpack:///./src/services/broadcasterMessaging.service.ts","webpack:///./src/services/htmlStorage.service.ts","webpack:///./jslib/src/services/index.ts","webpack:///./jslib/src/models/response/apiKeyResponse.ts","webpack:///./jslib/src/models/response/billingResponse.ts","webpack:///./jslib/src/models/response/breachAccountResponse.ts","webpack:///./jslib/src/models/response/attachmentResponse.ts","webpack:///./jslib/src/models/response/passwordHistoryResponse.ts","webpack:///./jslib/src/models/response/globalDomainResponse.ts","webpack:///./jslib/src/models/response/errorResponse.ts","webpack:///./jslib/src/models/response/eventResponse.ts","webpack:///./jslib/src/models/response/groupResponse.ts","webpack:///./jslib/src/models/response/identityTokenResponse.ts","webpack:///./jslib/src/models/response/identityTwoFactorResponse.ts","webpack:///./jslib/src/models/response/listResponse.ts","webpack:///./jslib/src/models/response/organizationSubscriptionResponse.ts","webpack:///./jslib/src/models/response/organizationUserResponse.ts","webpack:///./jslib/src/models/response/paymentResponse.ts","webpack:///./jslib/src/models/response/profileOrganizationResponse.ts","webpack:///./jslib/src/models/response/preloginResponse.ts","webpack:///./jslib/src/models/response/syncResponse.ts","webpack:///./jslib/src/models/response/twoFactorAuthenticatorResponse.ts","webpack:///./jslib/src/models/response/twoFactorDuoResponse.ts","webpack:///./jslib/src/models/response/twoFactorEmailResponse.ts","webpack:///./jslib/src/models/response/twoFactorProviderResponse.ts","webpack:///./jslib/src/models/response/twoFactorRescoverResponse.ts","webpack:///./jslib/src/models/response/twoFactorU2fResponse.ts","webpack:///./jslib/src/models/response/twoFactorYubiKeyResponse.ts","webpack:///./jslib/src/models/response/userKeyResponse.ts","webpack:///./jslib/src/misc/throttle.ts","webpack:///./jslib/src/models/request/cipherBulkDeleteRequest.ts","webpack:///./jslib/src/models/request/cipherBulkMoveRequest.ts","webpack:///./jslib/src/models/request/cipherBulkRestoreRequest.ts","webpack:///./jslib/src/models/request/cipherBulkShareRequest.ts","webpack:///./jslib/src/models/request/cipherShareRequest.ts","webpack:///./jslib/src/models/domain/treeNode.ts","webpack:///./jslib/src/models/domain/encryptedObject.ts","webpack:///./jslib/src/models/domain/environmentUrls.ts","webpack:///./jslib/src/models/domain/folder.ts","webpack:///./jslib/src/models/domain/generatedPasswordHistory.ts","webpack:///./jslib/src/models/domain/passwordGeneratorPolicyOptions.ts","webpack:///./jslib/src/models/data/organizationData.ts","webpack:///./jslib/src/models/domain/organization.ts","webpack:///./src/services/i18n.service.ts","webpack:///./src/services/memoryStorage.service.ts","webpack:///./src/services/webPlatformUtils.service.ts","webpack:///./jslib/src/misc/analytics.ts","webpack:///./jslib/src/services/event.service.ts","webpack:///./jslib/src/models/data/eventData.ts","webpack:///./jslib/src/models/request/eventRequest.ts","webpack:///./jslib/src/services/export.service.ts","webpack:///./jslib/src/models/export/cipher.ts","webpack:///./jslib/src/models/export/card.ts","webpack:///./jslib/src/models/export/field.ts","webpack:///./jslib/src/models/export/identity.ts","webpack:///./jslib/src/models/export/login.ts","webpack:///./jslib/src/models/export/loginUri.ts","webpack:///./jslib/src/models/export/secureNote.ts","webpack:///./jslib/src/models/export/collection.ts","webpack:///./jslib/src/models/export/folder.ts","webpack:///./jslib/src/services/import.service.ts","webpack:///./jslib/src/models/request/importCiphersRequest.ts","webpack:///./jslib/src/models/request/importOrganizationCiphersRequest.ts","webpack:///./jslib/src/models/request/kvpRequest.ts","webpack:///./jslib/src/importers/ascendoCsvImporter.ts","webpack:///./jslib/src/importers/avastCsvImporter.ts","webpack:///./jslib/src/importers/avastJsonImporter.ts","webpack:///./jslib/src/importers/aviraCsvImporter.ts","webpack:///./jslib/src/importers/bitwardenCsvImporter.ts","webpack:///./jslib/src/importers/bitwardenJsonImporter.ts","webpack:///./jslib/src/importers/blackBerryCsvImporter.ts","webpack:///./jslib/src/importers/blurCsvImporter.ts","webpack:///./jslib/src/importers/buttercupCsvImporter.ts","webpack:///./jslib/src/importers/chromeCsvImporter.ts","webpack:///./jslib/src/importers/clipperzHtmlImporter.ts","webpack:///./jslib/src/importers/codebookCsvImporter.ts","webpack:///./jslib/src/importers/dashlaneJsonImporter.ts","webpack:///./jslib/src/importers/encryptrCsvImporter.ts","webpack:///./jslib/src/importers/enpassCsvImporter.ts","webpack:///./jslib/src/importers/enpassJsonImporter.ts","webpack:///./jslib/src/importers/firefoxCsvImporter.ts","webpack:///./jslib/src/importers/fsecureFskImporter.ts","webpack:///./jslib/src/importers/gnomeJsonImporter.ts","webpack:///./jslib/src/importers/kasperskyTxtImporter.ts","webpack:///./jslib/src/importers/keepass2XmlImporter.ts","webpack:///./jslib/src/importers/keepassxCsvImporter.ts","webpack:///./jslib/src/importers/keeperCsvImporter.ts","webpack:///./jslib/src/importers/lastpassCsvImporter.ts","webpack:///./jslib/src/importers/logMeOnceCsvImporter.ts","webpack:///./jslib/src/importers/meldiumCsvImporter.ts","webpack:///./jslib/src/importers/msecureCsvImporter.ts","webpack:///./jslib/src/importers/mykiCsvImporter.ts","webpack:///./jslib/src/importers/onepassword1PifImporter.ts","webpack:///./jslib/src/importers/onepasswordWinCsvImporter.ts","webpack:///./jslib/src/models/view/index.ts","webpack:///./jslib/src/models/view/view.ts","webpack:///./jslib/src/importers/padlockCsvImporter.ts","webpack:///./jslib/src/importers/passkeepCsvImporter.ts","webpack:///./jslib/src/importers/passmanJsonImporter.ts","webpack:///./jslib/src/importers/passpackCsvImporter.ts","webpack:///./jslib/src/importers/passwordAgentCsvImporter.ts","webpack:///./jslib/src/importers/passwordBossJsonImporter.ts","webpack:///./jslib/src/importers/passwordDragonXmlImporter.ts","webpack:///./jslib/src/importers/passwordSafeXmlImporter.ts","webpack:///./jslib/src/importers/passwordWalletTxtImporter.ts","webpack:///./jslib/src/importers/rememBearCsvImporter.ts","webpack:///./jslib/src/importers/roboformCsvImporter.ts","webpack:///./jslib/src/importers/safeInCloudXmlImporter.ts","webpack:///./jslib/src/importers/saferpassCsvImport.ts","webpack:///./jslib/src/importers/secureSafeCsvImporter.ts","webpack:///./jslib/src/importers/splashIdCsvImporter.ts","webpack:///./jslib/src/importers/stickyPasswordXmlImporter.ts","webpack:///./jslib/src/importers/truekeyCsvImporter.ts","webpack:///./jslib/src/importers/upmCsvImporter.ts","webpack:///./jslib/src/importers/zohoVaultCsvImporter.ts","webpack:///./jslib/src/services/notifications.service.ts","webpack:///./jslib/src/models/response/notificationResponse.ts","webpack:///./jslib/src/services/policy.service.ts","webpack:///./jslib/src/models/domain/masterPasswordPolicyOptions.ts","webpack:///./jslib/src/services/search.service.ts","webpack:///./jslib/src/services/webCryptoFunction.service.ts","webpack:///./jslib/src/models/domain/decryptParameters.ts","webpack:///./src/app/app-routing.module.ts"],"names":["i","chunkIds","length","deferredModules","j","deferredModule","enumerable","get","getter","value","key","bind","module","Object","prototype","hasOwnProperty","call","object","property","jsonpArray","webpackJsonpCallback","I18nService","ApiService","PlatformUtilsService","i18nService","transform","id","p1","p2","p3","this","t","I18nPipe","UserService","platformUtilsService","showError","data","defaultErrorMessage","errors","push","validationErrors","concat","getAllMessages","message","showToast","timeout","ValidationService","el","validationService","ngOnChanges","changes","appApiAction","then","nativeElement","loading","response","e","ApiActionDirective","renderer","title","ngOnInit","hasAttribute","setAttribute","A11yTitleDirective","MessagingService","CryptoService","CipherService","organization","newLineRegex","passwordFieldNames","usernameFieldNames","notesFieldNames","uriFieldNames","parseXml","doc","DOMParser","parseFromString","querySelector","parseCsv","header","splitNewLine","join","trim","result","papa","parse","encoding","skipEmptyLines","forEach","row","console","warn","parseSingleRowCsv","rowData","isNullOrWhitespace","parsedRow","makeUriArray","uri","loginUri","LoginUriView","fixUri","match","u","indexOf","substring","nameFromUrl","url","hostname","Utils","getHostname","startsWith","replace","str","getValueOrDefault","defaultValue","split","getCardBrand","cardNum","re","RegExp","test","setCardExpiration","cipher","expiration","parts","month","year","substr","card","expMonth","expYear","moveFoldersToCollections","folderRelationships","r","collectionRelationships","collections","folders","map","f","collection","CollectionView","name","querySelectorDirectChild","parentEl","query","els","querySelectorAllDirectChild","Array","from","querySelectorAll","filter","parentNode","initLoginCipher","CipherView","favorite","notes","fields","login","LoginView","type","CipherType","Login","cleanupCipher","processKvp","FieldType","Text","search","field","FieldView","processFolder","folderName","folderIndex","hasFolder","addFolder","FolderView","ciphers","convertToNoteIfNeeded","username","password","uris","SecureNote","secureNote","SecureNoteView","SecureNoteType","Generic","BaseImporter","success","ImportResult","calloutStyle","undefined","icon","CalloutComponent","StateService","getResponseProperty","propertyName","exactName","Error","otherCasePropertyName","charAt","toUpperCase","toLowerCase","slice","BaseResponse","nodeURL","window","init","inited","isNode","process","release","isBrowser","isNativeScript","isMobileBrowser","isMobile","isAppleMobileBrowser","isAppleMobile","global","fromB64ToArray","Uint8Array","Buffer","binaryString","atob","bytes","charCodeAt","fromHexToArray","parseInt","fromUtf8ToArray","strUtf8","unescape","encodeURIComponent","arr","fromByteStringToArray","fromBufferToB64","buffer","toString","binary","byteLength","String","fromCharCode","btoa","fromBufferToUtf8","encodedString","apply","decodeURIComponent","escape","fromBufferToByteString","fromBufferToHex","x","fromUrlB64ToUtf8","b64Str","output","fromB64ToUtf8","newGuid","c","Math","random","isGuid","uriString","getUrl","getHost","host","getDomain","httpUrl","tldEndingRegex","getUrlObject","validIpAddress","urlDomain","tldjs","domain","getQueryParams","Map","pair","set","getSortFunction","prop","a","b","collator","compare","localeCompare","ipString","win","mobile","navigator","userAgent","vendor","opera","hasProtocol","URL","anchor","document","createElement","href","onClick","$event","preventDefault","StopClickDirective","CollectionService","condition","disableComplete","InputVerbatimDirective","StorageService","FolderService","SyncService","stopPropagation","StopPropDirective","PasswordGenerationService","environmentUrlsKey","ConstantsService","disableGaKey","disableAddLoginNotificationKey","disableContextMenuItemKey","disableFaviconKey","disableAutoTotpCopyKey","enableAutoFillOnPageLoadKey","vaultTimeoutKey","vaultTimeoutActionKey","lastActiveKey","neverDomainsKey","installedVersionKey","localeKey","themeKey","collapsedGroupingsKey","autoConfirmFingerprints","dontShowCardsCurrentTab","dontShowIdentitiesCurrentTab","defaultUriMatch","pinProtectedKey","protectedPin","clearClipboardKey","eventCollectionKey","disableChangedPasswordNotificationKey","EnvironmentService","PasswordVerificationRequest","EventService","TokenService","cardholderName","code","_brand","_number","_subTitle","repeat","brand","number","count","exp","formatYear","CardView","n","autofocus","focus","AutofocusDirective","buildDomainModel","dataObj","alreadyEncrypted","notEncList","objProp","CipherString","buildDataModel","notCipherStringList","encryptedString","decryptObj","viewModel","orgId","promises","self","theProp","p","Promise","resolve","mapProp","decrypt","val","all","AuthService","componentFactoryResolver","messagingService","ngOnDestroy","show","parentContainer","fade","setComponentParameters","factory","resolveComponentFactory","componentRef","container","createComponent","instance","modals","jq","modal","on","onShow","emit","send","onShown","find","onClose","onClosed","clear","close","ModalComponent","IconMap","environmentService","stateService","iconsUrl","baseUrl","imageEnabled","load","setLoginIcon","Card","Identity","hostnameUri","isWebsite","image","fallbackImage","IconComponent","BroadcasterService","PolicyService","TwoFactorProviderType","CryptoFunctionService","AuditService","StripeElementStyle","base","color","fontFamily","fontSize","fontSmoothing","invalid","StripeElementClasses","empty","apiService","showMethods","showOptions","method","PaymentMethodType","hideBank","hidePaypal","hideCredit","bank","routing_number","account_number","account_holder_name","account_holder_type","currency","country","paymentMethodType","btInstance","stripe","stripeElements","stripeCardNumberElement","stripeCardExpiryElement","stripeCardCvcElement","stripeScript","src","async","onload","Stripe","isDev","WebConstants","stripeTestKey","stripeLiveKey","elements","setStripeElement","btScript","PayPal","BankAccount","Credit","head","appendChild","removeChild","setTimeout","body","btStylesheet","changeMethod","braintree","dropin","create","authorization","btSandboxKey","btProductionKey","paymentOptionPriority","paypal","flow","buttonStyle","label","size","shape","createErr","error","createPaymentToken","reject","requestPaymentMethod","payload","nonce","catch","err","postSetupPayment","clientSecret","handleCardSetup","setupIntent","status","payment_method","createToken","token","handleStripeCardPayment","successCallback","handleCardPayment","paymentIntent","style","classes","placeholder","mount","PaymentComponent","revisionDate","SearchService","VaultTimeoutService","organizationId","folderId","organizationUseTotp","edit","identity","IdentityView","attachments","passwordHistory","collectionIds","deletedDate","localData","subTitle","hasAttachments","passwordRevisionDate","middleName","address1","address2","address3","city","state","postalCode","company","email","phone","ssn","passportNumber","licenseNumber","_firstName","_lastName","firstName","lastName","address","addressPart2","sanitizer","cryptoFunctionService","charCount","textColor","fontWeight","dynamic","circle","generate","hash","hashBytes","chars","upperData","getFirstLetters","charObj","getCharText","stringToColor","svg","getSvg","html","outerHTML","svgHtml","text","svgTag","backgroundColor","width","height","character","textTag","textContent","AvatarComponent","l","totp","hasUris","some","canLaunch","launchUri","externalId","readOnly","Collection","userId","LoginData","SecureNoteData","CardData","IdentityData","FieldData","AttachmentData","ph","PasswordHistoryData","CipherData","CollectionData","obj","toasterService","cryptoService","onAuthed","EventEmitter","submit","masterPassword","popAsync","request","hashPassword","masterPasswordHash","formPromise","getTwoFactorRecover","Duo","OrganizationDuo","getTwoFactorOrganizationDuo","getTwoFactorDuo","Email","getTwoFactorEmail","U2f","getTwoFactorU2f","Authenticator","getTwoFactorAuthenticator","Yubikey","getTwoFactorYubiKey","TwoFactorVerifyComponent","LoginApi","toISOString","LoginUriApi","SecureNoteApi","CardApi","IdentityApi","FieldApi","lastUsedDate","attachments2","attachment","fileName","attachmentRequest","AttachmentRequest","CipherRequest","router","activatedRoute","titleService","previousUrl","currentUrl","events","subscribe","event","NavigationEnd","titleId","rawTitle","child","firstChild","snapshot","newTitle","setTitle","getPreviousUrl","setPreviousUrl","RouterService","encryptedStringOrType","iv","mac","encType","encryptionType","headerPieces","encPieces","EncryptionType","AesCbc128_HmacSha256_B64","AesCbc256_B64","AesCbc256_HmacSha256_B64","Rsa2048_OaepSha256_B64","Rsa2048_OaepSha1_B64","decryptedValue","containerService","bitwardenContainerService","getCryptoService","getOrgKey","orgKey","decryptToUtf8","EventType","userService","analytics","syncService","vault","loaded","getAllOrganizations","orgs","sort","organizations","leave","org","showDialog","actionPromise","postLeaveOrganization","fullSync","eventTrack","next","action","OrganizationsComponent","TotpService","OrganizationUserStatusType","CanLaunchWhitelist","_uri","_domain","_hostname","_canLaunch","UriMatchType","RegularExpression","PolicyType","onUpdated","twoFactorProviderType","enabled","authed","auth","authResponse","enable","enableFunction","disable","promise","TwoFactorProviderRequest","putTwoFactorOrganizationDisable","putTwoFactorDisable","TwoFactorBaseComponent","ImportService","ExportService","requiresPaid","hasLoaded","setCiphers","selectCipher","childComponent","cipherAddEditModalRef","AddEditComponent","cipherId","onSavedCipher","onDeletedCipher","checkAccess","useTotp","canAccessPremium","accessPremium","CipherReportComponent","Date","Attachment","Field","Password","model","reduce","decAttachment","decField","decPh","toCipherData","toLoginData","toSecureNoteData","toCardData","toIdentityData","toFieldData","toAttachmentData","toPasswordHistoryData","Cipher","getDefaultDateFilters","d","end","getFullYear","getMonth","getDate","setDate","start","toDateTimeLocalString","formatDateFilters","filterStart","filterEnd","isNaN","getTime","getEventInfo","ev","options","EventOptions","appInfo","getAppInfo","deviceType","getEventMessage","appIcon","appName","msg","User_LoggedIn","User_ChangedPassword","User_Updated2fa","User_Disabled2fa","User_Recovered2fa","User_FailedLogIn","User_FailedLogIn2fa","User_ClientExportedVault","Cipher_Created","formatCipherId","Cipher_Updated","Cipher_Deleted","Cipher_AttachmentCreated","Cipher_AttachmentDeleted","Cipher_Shared","Cipher_ClientViewed","Cipher_ClientToggledPasswordVisible","Cipher_ClientToggledHiddenFieldVisible","Cipher_ClientToggledCardCodeVisible","Cipher_ClientCopiedHiddenField","Cipher_ClientCopiedPassword","Cipher_ClientCopiedCardCode","Cipher_ClientAutofilled","Cipher_UpdatedCollections","Collection_Created","formatCollectionId","Collection_Updated","Collection_Deleted","Group_Created","formatGroupId","Group_Updated","Group_Deleted","OrganizationUser_Invited","formatOrgUserId","OrganizationUser_Confirmed","OrganizationUser_Updated","OrganizationUser_Removed","OrganizationUser_UpdatedGroups","Organization_Updated","Organization_PurgedVault","DeviceType","Android","iOS","UWP","ChromeExtension","FirefoxExtension","OperaExtension","EdgeExtension","VivaldiExtension","SafariExtension","WindowsDesktop","MacOsDesktop","LinuxDesktop","ChromeBrowser","FirefoxBrowser","OperaBrowser","SafariBrowser","VivaldiBrowser","EdgeBrowser","IEBrowser","UnknownBrowser","shortId","getShortId","cipherInfo","makeAnchor","groupId","collectionId","organizationUserId","innerHTML","date","pad","getHours","getMinutes","num","norm","floor","abs","EventInfo","OrganizationUserType","TwoFactorProviders","description","priority","premium","tokenService","appIdService","setCryptoKeys","selectedTwoFactorProviderType","logIn","makePreloginKey","hashedPassword","logInHelper","logInTwoFactor","twoFactorProvider","twoFactorToken","remember","logInComplete","logOut","callback","getSupportedTwoFactorProviders","providers","twoFactorProvidersData","has","supportsDuo","supportsU2f","getDefaultTwoFactorProvider","u2fSupported","providerType","providerPriority","provider","kdf","kdfIterations","postPrelogin","PreloginRequest","preloginResponse","statusCode","makeKey","getTwoFactorToken","storedTwoFactorToken","getAppId","appId","deviceRequest","DeviceRequest","TokenRequest","Remember","postIdentityToken","clearState","AuthResult","twoFactor","accessToken","twoFactorResponse","twoFactorProviders2","twoFactorProviders","tokenResponse","setTwoFactorToken","setTokens","refreshToken","setInformation","getUserId","getEmail","setKey","setKeyHash","setEncKey","privateKey","makeKeyPair","keyPair","postAccountKeys","KeysRequest","setEncPrivateKey","collectionService","folderService","storageService","onSearchTextChanged","searchText","searchPlaceholder","searchTextChanged","GroupingsComponent","searchService","cipherService","eventService","showAddNew","onAttachmentsClicked","onShareClicked","onCollectionsClicked","onCloneClicked","cipherType","pageSize","selectAll","checkCipher","select","checked","launch","selectCount","getSelected","getSelectedIds","share","clone","delete","deleteCipher","refresh","copy","typeI18nKey","aType","copyToClipboard","collect","deleteWithServer","showFixOldAttachments","hasOldAttachments","CiphersComponent","auditService","totpService","passwordGenerationService","showRevisionDate","hasPasswordHistory","viewingPasswordHistory","passwordRevisionDisplayDate","cleanUp","totpUpdateCode","getTimeInterval","totpTick","totpInterval","setInterval","toggleFavorite","editMode","generatePassword","confirmed","getOptions","premiumRequired","upgradeOrganization","viewHistory","clearInterval","getCode","totpCode","half","totpCodeFormatted","allowOwnershipAssignment","cloneMode","ownershipOptions","intervalSeconds","epoch","round","mod","totpSec","totpDash","totpLow","policyService","showPolicyWarning","filterProvider","getTwoFactorProviders","evaluatePolicies","manage","openModal","authenticatorModalRef","TwoFactorAuthenticatorComponent","updateStatus","yubikeyModalRef","TwoFactorYubiKeyComponent","duoModalRef","TwoFactorDuoComponent","emailModalRef","TwoFactorEmailComponent","u2fModalRef","TwoFactorU2fComponent","recoveryCode","recoveryModalRef","TwoFactorRecoveryComponent","ref","getAll","TwoFactorAuthentication","policies","TwoFactorSetupComponent","firstLoaded","showAdjustPayment","showAddCredit","transactionType","TransactionType","getOrganizationBilling","billing","getUserBilling","verifyBank","VerifyBankRequest","amount1","verifyAmount1","amount2","verifyAmount2","verifyBankPromise","postOrganizationVerifyBank","addCredit","paymentSourceInApp","closeAddCredit","changePayment","closePayment","balance","paymentSource","AppleInApp","GoogleInApp","invoices","transactions","UserBillingComponent","showFree","showCancel","plan","onSuccess","onCanceled","selfHosted","ownedBusiness","premiumAccessAddon","storageGbPriceMonthly","additionalStorage","additionalSeats","interval","storageGb","price","monthlyPrice","yearlyPrice","plans","free","basePrice","noAdditionalSeats","noPayment","families","annualBasePrice","baseSeats","annualPlanType","PlanType","FamiliesAnnually","canBuyPremiumAccessAddon","teams","monthlyBasePrice","seatPrice","annualSeatPrice","monthlySeatPrice","monthPlanType","TeamsMonthly","TeamsAnnually","enterprise","EnterpriseMonthly","EnterpriseAnnually","isSelfHost","files","createOrganization","fileEl","getElementById","doSubmit","tokenResult","paymentComponent","makeShareKey","shareKey","encrypt","collectionCt","fd","FormData","append","postOrganizationLicense","OrganizationCreateRequest","collectionName","billingEmail","planType","Free","paymentToken","businessName","additionalStorageGb","postOrganization","OrganizationUpgradeRequest","postOrganizationUpgrade","paymentIntentClientSecret","refreshIdentityToken","navigate","cancel","changedPlan","changedOwnedBusiness","additionalStorageTotal","annual","seatTotal","baseTotal","premiumAccessTotal","OrganizationPlansComponent","importService","format","successNavigate","setImportOptions","importOptions","importer","getImporter","fileContents","getFileContents","content","import","properties","getFormatInstructionTitle","results","featuredImportOptions","o","regularImportOptions","file","reader","FileReader","readAsText","evt","pre","target","onerror","ImportComponent","exportService","saved","ExportComponent","getAllCiphers","allCiphers","ciphersWithPasswords","passwordUseMap","reusedPasswordCiphers","getAllDecrypted","ReusedPasswordsReportComponent","unsecuredCiphers","UnsecuredWebsitesReportComponent","passwordStrengthMap","passwordStrengthCache","weakPasswordCiphers","hasUsername","cacheKey","userInput","atPosition","passwordStrength","score","scoreKey","WeakPasswordsReportComponent","exposedPasswordMap","exposedPasswordCiphers","passwordLeaked","exposedCount","ExposedPasswordsReportComponent","services","cipherDocs","load2fa","fetch","Request","json","categoryName","responseJson","serviceName","category","service","tfa","software","InactiveTwoFactorReportComponent","items","prop1","prop2","prop3","SearchPipe","SelectionReadOnlyRequest","SelectionReadOnlyResponse","NotificationsService","SettingsService","version","getApplicationVersion","classList","add","remove","FrontendLayoutComponent","authService","route","onSuccessfulLoginNavigate","goAfterLogIn","queryParamsSub","queryParams","qParams","save","unsubscribe","invite","loginRedirect","successRoute","LoginComponent","anotherMethod","twoFactorOptionsModal","TwoFactorOptionsComponent","onProviderSelected","selectedProviderType","onRecoverSelected","TwoFactorComponent","showText","scoreWidth","PasswordStrengthComponent","showCreateOrgMessage","showTerms","getPasswordScoreAlertDisplay","enforcedPolicyOptions","minComplexity","getPoliciesByToken","policiesData","PolicyData","Policy","getMasterPasswordPolicyOptions","evaluateMasterPassword","masterPasswordScore","RegisterComponent","KdfType","HintComponent","vaultTimeoutService","routerService","isAuthenticated","hasKey","onSuccessfulSubmit","LockComponent","fired","postAccountVerifyEmailToken","VerifyEmailRequest","VerifyEmailTokenComponent","errorMessage","OrganizationUserAcceptRequest","postOrganizationUserAccept","toast","orgName","organizationName","AcceptOrganizationComponent","TwoFactorRecoveryRequest","postTwoFactorRecover","RecoverTwoFactorComponent","DeleteRecoverRequest","postAccountRecoverDelete","RecoverDeleteComponent","VerifyDeleteRecoverRequest","postAccountRecoverDeleteToken","VerifyRecoverDeleteComponent","getName","lock","NavbarComponent","FooterComponent","UserLayoutComponent","changeDetectorRef","broadcasterService","ngZone","favorites","showVerifyEmail","showBrowserOutdated","showUpdateKey","showPremiumCallout","getEmailVerified","params","hasEncKey","groupingsComponent","organizationsComponent","selectedAll","ciphersComponent","reload","selectedFavorites","filterFavorites","selectedType","filterCipherType","selectedFolder","selectedFolderId","filterFolder","selectedCollectionId","filterCollection","run","command","successfully","detectChanges","clearGroupingFilters","clearFilters","go","filterSearchText","editCipherAttachments","getOrganization","maxStorageGb","attachmentsModalRef","AttachmentsComponent","madeAttachmentChanges","onUploadedAttachment","onDeletedAttachment","onReuploadedAttachment","shareCipher","shareModalRef","ShareComponent","onSharedCipher","editCipherCollections","collectionsModalRef","CollectionsComponent","onSavedCollections","folderAddEditModalRef","FolderAddEditComponent","onSavedFolder","loadFolders","editFolder","onDeletedFolder","addCipher","component","editCipher","cloneCipher","bulkDelete","selectedIds","bulkDeleteModalRef","BulkDeleteComponent","cipherIds","onDeleted","bulkShare","selectedCiphers","bulkShareModalRef","BulkShareComponent","onShared","bulkMove","bulkMoveModalRef","BulkMoveComponent","onMoved","updateKey","updateKeyModalRef","UpdateKeyComponent","relativeTo","replaceUrl","VaultComponent","CipherWithIdRequest","folder","FolderRequest","reupload","reuploadCipherAttachment","check","getPremium","SettingsComponent","deauthorizeSessions","deauthModalRef","DeauthorizeSessionsComponent","purgeVault","purgeModalRef","PurgeVaultComponent","deleteAccount","deleteModalRef","DeleteAccountComponent","AccountComponent","postPurgeCiphers","vaultTimeout","vaultTimeoutAction","vaultTimeouts","localeOptions","supportedTranslationLocales","locale","localeNames","splice","disableIcons","enableGravatars","startingLocale","setVaultTimeoutOptions","location","OptionsComponent","custom","getSettingsDomains","equivalentDomains","globalEquivalentDomains","domains","excluded","toggleExcluded","globalDomain","customize","index","UpdateDomainsRequest","excludedGlobalEquivalentDomains","d2","putSettingsDomains","indexTrackBy","DomainRulesComponent","processResponse","UpdateTwoFactorDuoRequest","integrationKey","ikey","secretKey","skey","putTwoFactorOrganizationDuo","putTwoFactorDuo","premiumPrice","storageGbPrice","postAccountLicense","finalizePremium","postPremium","paymentResponse","PremiumComponent","onAdded","ppButtonFormAction","buttonActionProduction","ppButtonBusinessId","businessIdProduction","ppLoading","buttonActionSandbox","businessIdSandbox","creditAmount","ppButtonCustomField","subject","returnUrl","ppButtonFormRef","BitPay","req","BitPayInvoiceRequest","credit","amount","creditAmountNumber","postBitPayInvoice","bitPayUrl","formatAmount","floatAmount","parseFloat","toFixed","AddCreditComponent","onAdjusted","PaymentRequest","postAccountPayment","postOrganizationPayment","currentType","AdjustPaymentComponent","updatePromise","postOrganizationLicenseUpdate","UpdateLicenseComponent","storageAdjustment","StorageRequest","storageGbAdjustment","postAccountStorage","postOrganizationStorage","AdjustStorageComponent","adjustStorageAdd","showAdjustStorage","showUpdateLicense","getUserSubscription","sub","reinstate","usingInAppPurchase","reinstatePromise","postReinstatePremium","cancelPromise","postCancelPremium","downloadLicense","licenseString","JSON","stringify","license","saveFile","updateLicense","closeUpdateLicense","adjustStorage","closeStorage","subscription","cancelled","cancelAtEndDate","upcomingInvoice","storagePercentage","UserSubscriptionComponent","orgPlansComponent","CreateOrganizationComponent","ToolsComponent","history","historyModalRef","PasswordGeneratorHistoryComponent","lengthChanged","minNumberChanged","minSpecialChanged","PasswordGeneratorComponent","breachedAccounts","checkedUsername","BreachReportComponent","originalCipher","isAdmin","loadCollections","loadCipher","getCipherAdmin","encryptCipher","saveCipher","putCipherAdmin","CipherCreateRequest","postCipherAdmin","deleteCipherAdmin","PasswordHistoryView","OrganizationLayoutComponent","getCollections","collectionDomains","decryptMany","unassignedCollection","getAllNested","nestedCollections","collapse","grouping","isCollapsed","onEventsClicked","accessEvents","useEvents","getAllFromApiForOrganization","applyFilter","searchPending","filteredCiphers","searchCiphersBasic","resetPaging","parent","viewEvents","eventsModalRef","EntityEventsComponent","entityId","showUser","entity","orgUsersUserIdMap","orgUsersIdMap","defaultDates","getOrganizationUsers","loadEvents","clearExisting","refreshPromise","morePromise","dates","getEventsOrganizationUser","continuationToken","getEventsCipher","actingUserId","eventInfo","user","userName","userEmail","ip","ipAddress","accessReports","getExportData","getOrganizationExport","getFileName","collectEvent","accessPolicies","accessGroups","usePolicies","useGroups","ManageComponent","getUserCollections","addEditModalRef","CollectionAddEditComponent","onSavedCollection","onDeletedCollection","removeCollection","deleteCollection","users","usersModalRef","EntityUsersComponent","entityName","onEditedUsers","organizationUserType","organizationUserStatusType","showSelected","selectedCount","allUsers","loadUsers","getGroupUsers","s","getCollectionUsers","accessAll","selectedChanged","filterSelected","selections","putGroupUsers","putCollectionUsers","getEventsOrganization","EventsComponent","getGroups","groups","group","GroupAddEditComponent","onSavedGroup","onDeletedGroup","removeGroup","deleteGroup","GroupsComponent","statusMap","Confirmed","Invited","Accepted","confirmedCount","acceptedCount","UserAddEditComponent","onSavedUser","onDeletedUser","removeUser","groupsModalRef","UserGroupsComponent","deleteOrganizationUser","reinvite","postOrganizationUserReinvite","confirm","updateUser","mapIndex","autoConfirm","doConfirmation","confirmModalRef","UserConfirmComponent","onConfirmedUser","getUserPublicKey","publicKeyResponse","publicKey","log","getFingerprint","rsaEncrypt","OrganizationUserConfirmRequest","postOrganizationUserConfirm","PeopleComponent","policiesEnabledMap","MasterPassword","PasswordGenerator","getPolicies","orgPolicies","op","editModalRef","PolicyEditComponent","onSavedPolicy","PoliciesComponent","access2fa","use2fa","canUseApi","useApi","OrganizationUpdateRequest","putOrganization","deleteOrganization","DeleteOrganizationComponent","viewApiKey","apiKeyModalRef","ApiKeyComponent","rotateApiKey","rotateApiKeyModalRef","RotateApiKeyComponent","duoComp","getTwoFactorOrganizationProviders","OrganizationBillingComponent","adjustSeatsAdd","showAdjustSeats","showDownloadLicense","showChangePlan","getOrganizationSubscription","postOrganizationReinstate","postOrganizationCancel","changePlan","closeChangePlan","changed","closeDownloadLicense","updated","adjustSeats","closeSeats","billingInterval","OrganizationSubscriptionComponent","emailVerified","masterPasswordHint","culture","twoFactorEnabled","securityStamp","ProfileOrganizationResponse","ProfileResponse","webpackEmptyAsyncContext","keys","exports","angulartics2GoogleAnalytics","settingsService","notificationsService","toasterConfig","ToasterConfig","showCloseButton","mouseoverTimerStop","animation","limit","lastActivity","idleTimer","isIdle","runOutsideAngular","onmousemove","recordActivity","onmousedown","ontouchstart","onclick","onscroll","onkeypress","updateConnection","expired","uploadEvents","clearEvents","setLastSync","clearToken","clearKeys","purge","clearIndex","now","idleStateChanged","clearTimeout","sanitize","SecurityContext","HTML","bodyOutputType","BodyOutputType","TrustedHtml","trustedHtml","disconnectFromInactivity","reconnectFromActivity","AppComponent","TwoFactorEmailRequest","encryptedPrivateKey","postAccountVerifyEmail","VerifyEmailComponent","makeRequest","postAccountKey","getKey","makeEncKey","encKey","getPrivateKey","encPrivateKey","UpdateKeyRequest","FolderWithIdRequest","deleteManyWithServer","moveManyWithServer","nonShareableCount","shareableCiphers","writeableCollections","allCollections","filterCollections","checkedCollectionIds","shareManyWithServer","getProfile","profile","fingerprint","UpdateProfileRequest","putProfile","ProfileComponent","tokenSent","newEmail","EmailTokenRequest","postEmailToken","EmailRequest","getKdf","getKdfIterations","newKey","newMasterPasswordHash","remakeEncKey","newEncKey","postEmail","reset","ChangeEmailComponent","rotateEncKey","currentMasterPassword","newMasterPassword","confirmNewMasterPassword","strengthResult","getPasswordStrengthUserInput","PasswordRequest","postPassword","updatePasswordStrength","masterPasswordStrengthTimeout","rotateEncKeyClicked","ChangePasswordComponent","PBKDF2_SHA256","kdfOptions","KdfRequest","postAccountKdf","ChangeKdfComponent","postSecurityStamp","qrScript","UpdateTwoFactorAuthenticatorRequest","putTwoFactorAuthenticator","QRious","element","sendEmail","emailPromise","postTwoFactorEmailSetup","sentEmail","UpdateTwoFactorEmailRequest","putTwoFactorEmail","print","w","open","write","formatString","keyIdAvailable","keysConfiguredCount","u2fScript","u2fResponse","UpdateTwoFactorU2fRequest","deviceResponse","putTwoFactorU2f","removePromise","UpdateTwoFactorU2fDeleteRequest","deleteTwoFactorU2f","readKey","challengePromise","getTwoFactorU2fChallenge","challenge","readDevice","u2fChallenge","resetU2f","u2f","register","attestation","u2fListening","errorCode","u2fError","listening","k","configured","compromised","nfc","UpdateTwoFactorYubioOtpRequest","key1","key2","key3","key4","key5","putTwoFactorYubiKey","disablePromise","existingKey","padRight","max","colorizedPassword","isSpecial","ColorPasswordPipe","onCopy","copyText","selection","getSelection","rangeCount","getRangeAt","stringEndPos","newLinePos","SelectCopyDirective","sizeName","LoginUriData","AttachmentView","view","decryptToBytes","decValue","SymmetricCryptoKey","macKey","keyB64","encKeyB64","macKeyB64","LoginUri","toLoginUriData","saveCipherAttachment","saveAttachmentWithServer","cipherDomain","deleteCipherAttachment","attachmentId","deleteCipherAttachmentAdmin","allowSelectNone","loadCipherCollections","saveCollections","CipherCollectionsRequest","putCipherCollectionsAdmin","groupsResponse","getCollectionDetails","g","CollectionRequest","putCollection","postCollection","deletePromise","access","getGroupDetails","GroupRequest","putGroup","postGroup","User","getOrganizationUser","OrganizationUserUpdateRequest","putOrganizationUser","OrganizationUserInviteRequest","emails","postOrganizationUserInvite","dontAskAgain","getOrganizationUserGroups","userGroups","ug","OrganizationUserUpdateGroupsRequest","groupIds","putOrganizationUserGroups","policyType","masterPassMinComplexity","passwordScores","defaultTypes","getPolicy","policy","passGenDefaultType","defaultType","passGenMinLength","minLength","passGenUseUpper","useUpper","passGenUseLower","useLower","passGenUseNumbers","useNumbers","passGenUseSpecial","useSpecial","passGenMinNumbers","minNumbers","passGenMinSpecial","minSpecial","passGenMinNumberWords","minNumberWords","passGenCapitalize","capitalize","passGenIncludeNumber","includeNumber","masterPassMinLength","masterPassRequireUpper","requireUpper","masterPassRequireLower","requireLower","masterPassRequireNumbers","requireNumbers","masterPassRequireSpecial","requireSpecial","PolicyRequest","putPolicy","postOrganizationApiKey","apiKey","clientId","scope","postOrganizationRotateApiKey","onChanged","ChangePlanComponent","onDownloaded","installationId","getOrganizationLicense","DownloadLicenseComponent","seatAdjustment","SeatRequest","postOrganizationSeat","AdjustSeatsComponent","elementRef","trueValue","falseValue","propagateChange","_","onHostChange","writeValue","setProperty","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","TrueFalseValueDirective","logoutCallback","customUserAgent","urlsSet","isWebClient","isDesktopClient","usingBaseUrl","device","getDevice","setUrls","urls","apiBaseUrl","identityBaseUrl","eventsBaseUrl","api","headers","Headers","qsStringify","toIdentityToken","identityClientId","credentials","getCredentials","cache","isJsonResponse","IdentityTokenResponse","TwoFactorProviders2","clearTwoFactorToken","IdentityTwoFactorResponse","ErrorResponse","doRefreshToken","BillingResponse","SubscriptionResponse","PreloginResponse","getAccountRevisionDate","postPasswordHint","postRegister","PaymentResponse","postIapCheck","getFolder","FolderResponse","postFolder","putFolder","deleteFolder","getCipher","CipherResponse","getCiphersOrganization","ListResponse","postCipher","postCipherCreate","putCipher","deleteManyCiphers","putMoveCiphers","putShareCipher","putShareCiphers","putCipherCollections","path","postImportCiphers","postImportOrganizationCiphers","putDeleteCipher","putDeleteCipherAdmin","putDeleteManyCiphers","putRestoreCipher","putRestoreCipherAdmin","putRestoreManyCiphers","postCipherAttachment","postCipherAttachmentAdmin","postShareCipherAttachment","CollectionGroupDetailsResponse","CollectionResponse","dr","deleteCollectionUser","GroupDetailsResponse","GroupResponse","deleteGroupUser","PolicyResponse","OrganizationUserDetailsResponse","OrganizationUserUserDetailsResponse","getSync","SyncResponse","postImportDirectory","DomainsResponse","TwoFactorProviderResponse","TwoFactorAuthenticatorResponse","TwoFactorEmailResponse","TwoFactorDuoResponse","TwoFactorYubiKeyResponse","TwoFactorU2fResponse","ChallengeResponse","TwoFactorRecoverResponse","postTwoFactorEmail","OrganizationResponse","OrganizationSubscriptionResponse","ApiKeyResponse","getEvents","addEventParameters","EventResponse","postEventsCollect","getActiveBearerToken","authHeader","UserKeyResponse","getHibpBreach","BreachAccountResponse","getToken","tokenNeedsRefresh","nativeFetch","hasResponse","requestInit","handleError","tokenError","getRefreshToken","decodedToken","decodeToken","grant_type","client_id","refresh_token","typeHeader","AttachmentResponse","h","PasswordHistoryResponse","CollectionDetailsResponse","GlobalDomainResponse","businessAddress1","businessAddress2","businessAddress3","businessCountry","businessTaxNumber","seats","maxCollections","useDirectory","storageName","BillingSubscriptionResponse","BillingSubscriptionUpcomingInvoiceResponse","trialEndDate","periodStartDate","periodEndDate","cancelledDate","BillingSubscriptionItemResponse","quantity","makeAndGetAppId","getAnonymousAppId","existingId","guid","AppIdService","hashStart","hashEnding","leakedHashes","v","throttle","Keys","DomainMatchBlacklist","Set","_decryptedCipherCache","indexCiphers","clearCache","decryptedCipherCache","existingCipher","hasFields","existingHiddenFields","Hidden","ef","matchedField","encryptObjProperty","encryptCipherData","encryptFields","encryptPasswordHistories","encryptAttachments","attachmentsModel","encAttachments","fieldsModel","encFields","encryptField","encField","fieldModel","Boolean","phModels","encPhs","encryptPasswordHistory","encPh","phModel","decCiphers","getLocaleSortingFunction","getAllDecryptedForGrouping","groupingId","isDeleted","getAllDecryptedForUrl","includeOtherTypes","eqDomainsPromise","getEquivalentDomains","eqDomains","matches","eqDomain","matchingDomains","defaultMatch","Domain","domainUrlHost","Host","urlHost","Exact","StartsWith","Never","getLastUsedForUrl","sortCiphersByLastUsed","updateLastUsedDate","ciphersLocalData","cached","saveNeverDomain","saveWithServer","upsert","shareWithServer","attachmentPromises","shareAttachmentWithServer","encCipher","CipherShareRequest","encCiphers","CipherBulkShareRequest","unencryptedFile","admin","readAsArrayBuffer","saveAttachmentRawWithServer","cData","filename","encFileName","dataEncKey","encryptToBytes","encData","blob","Blob","filepath","contentType","getSingleMessage","saveCollectionsWithServer","ids","CipherBulkMoveRequest","CipherBulkDeleteRequest","deleteAttachment","deleteAttachmentWithServer","aLastUsed","bLastUsed","bothNotNull","sortCiphersByLastUsedThenName","aName","bName","softDelete","setDeletedDate","softDeleteWithServer","softDeleteManyWithServer","restore","clearDeletedDate","restoreWithServer","restoreManyWithServer","CipherBulkRestoreRequest","attachmentView","attachmentResponse","arrayBuffer","buf","decryptFromBytes","decBuf","theObj","modelProp","sequentialize","propertyKey","descriptor","originalMethod","caches","getCache","argsCacheKey","args","onFinally","decryptedCollectionCache","decCollections","nodes","collectionCopy","ServiceUtils","nestedTraverse","getNested","getTreeNodeObject","nodeTree","partIndex","delimiter","partName","node","TreeNode","children","newPartName","attachToWindow","attachToGlobal","ContainerService","secureStorageService","keyHash","setOrgKeys","orgKeys","getKeyHash","getEncKey","encKeyCipher","decEncKey","stretchKey","getPublicKey","rsaExtractPublicKey","keyFingerprint","hkdfExpand","userFingerprint","hashPhrase","getOrgKeys","encOrgKeys","rsaDecrypt","clearKey","legacyEtmKey","clearKeyHash","clearEncKey","memoryOnly","clearKeyPair","clearOrgKeys","clearPinProtectedKey","toggleKey","option","salt","pbkdf2","makeKeyFromPin","pin","protectedKeyCs","makePinKey","pinKey","decKey","randomBytes","rsaGenerateKeyPair","publicB64","privateEnc","getKeyForEncryption","theKey","buildEncKey","plainValue","plainBuf","aesEncrypt","encObj","encValue","macLen","encBytes","cipherString","aesDecryptToBytes","decipher","aesDecryptToUtf8","encBuf","ctBytes","ivBytes","macBytes","randomNumber","min","rval","range","bitsNeeded","ceil","log2","bytesNeeded","mask","pow","byteArray","EncryptedObject","macData","hmac","keyForEnc","resolveLegacyKey","fastParams","aesDecryptFastParameters","hmacFast","computedMac","compareFast","aesDecryptFast","aesDecrypt","Rsa2048_OaepSha256_HmacSha256_B64","Rsa2048_OaepSha1_HmacSha256_B64","alg","prk","info","hashLen","okm","previousT","minimumEntropy","entropyPerWord","EEFLongWordList","numWords","hashArr","entropyAvailable","phrase","hashNumber","bigInt","fromArray","remainder","divide","encKeyEnc","getWebVaultUrl","webVaultUrl","setUrlsFromStorage","urlsObj","icons","notifications","webVault","envUrls","EnvironmentUrls","apiUrl","identityUrl","notificationsUrl","eventsUrl","formatUrl","decryptedFolderCache","Folder","decFolders","noneFolder","folderCopy","FolderData","cId","updates","systemLanguage","localesDirectory","getLocalesJson","defaultMessages","localeMessages","translationLocale","Intl","Collator","numeric","sensitivity","loadMessages","translate","messagesObj","formattedLocale","locales","placeholders","placeProp","replaceToken","replaceContent","DefaultOptions","ambiguous","minNumber","uppercase","minUppercase","lowercase","minLowercase","special","wordSeparator","assign","generatePassphrase","sanitizePasswordLength","positions","shuffleArray","allCharSet","lowercaseCharSet","uppercaseCharSet","numberCharSet","specialCharSet","positionChars","randomCharIndex","listLength","wordList","wordIndex","appendRandomNumberToRandomWord","optionsCache","enforcePasswordGeneratorPoliciesOnOptions","enforcedOptions","getPasswordGeneratorPolicyOptions","useUppercase","useLowercase","numberCount","specialCount","PasswordGeneratorPolicyOptions","currentPolicy","saveOptions","getHistory","encrypted","decryptHistory","addHistory","currentHistory","matchesPrevious","unshift","GeneratedPasswordHistory","pop","encryptHistory","newHistory","userInputs","globalUserInputs","finalUserInputs","zxcvbn","normalizeOptions","item","decrypted","array","forGeneration","minUppercaseCalc","minLowercaseCalc","minNumberCalc","minSpecialCalc","settingsCache","getSettingsKey","setEquivalentDomains","setSettingsKey","getSettings","settings","syncInProgress","getLastSync","lastSync","toJSON","forceSync","allowThrowOnError","syncStarted","needsSyncing","syncCompleted","needsSyncResult","needsSync","syncProfile","syncFolders","syncCollections","syncCiphers","syncSettings","syncPolicies","syncUpsertFolder","notification","isEdit","localFolder","remoteFolder","syncDeleteFolder","syncUpsertCipher","shouldUpdate","localCipher","checkCollections","remoteCipher","syncDeleteCipher","getSecurityStamp","stamp","setSecurityStamp","OrganizationData","replaceOrganizations","setToken","setRefreshToken","skipTokenStorage","toggleTokens","decoded","getTokenExpirationDate","setUTCSeconds","tokenSecondsRemaining","offsetSeconds","msRemaining","valueOf","minutes","email_verified","getIssuer","iss","B32Chars","SteamChars","period","digits","keyB32","isOtpAuth","isSteamAuth","digitParams","periodParam","algParam","timeHex","leftPad","decToHex","timeBytes","keyBytes","b32ToBytes","sign","offset","otp","fullCode","trunc","isAutoCopyEnabled","b32ToHex","cleanedInput","bits","hex","byteIndex","chunk","signature","clearOrganizations","usersGetPremium","Organization","lockedCallback","loggedOutCallback","checkOnInterval","checkVaultTimeout","isLocked","isViewOpen","lockTimeout","lastActive","vaultTimeoutSeconds","allowSoftLock","isPinLockSet","build","CipherWithIds","CollectionWithId","FolderWithId","NotificationType","canActivate","routerState","AuthGuardService","isOwner","OrganizationGuardService","allowedTypes","OrganizationTypeGuardService","UnauthGuardService","enableProdMode","platformBrowser","preserveWhitespaces","registerLocaleData","AppModule","subscribers","messageCallback","rememberEmail","showPassword","twoFactorRoute","onSuccessfulLoginTwoFactorNavigate","disableFavicon","onSuccessfulLogin","togglePassword","choose","recover","backdrop","className","addEventListener","u2fReady","initU2f","twoFactorEmail","loginRoute","customWebVaultUrl","cleanupU2f","providerData","Challenge","challenges","Challenges","keyHandle","DuoWebSDK","iframe","sig_request","Signature","submit_callback","sig","stop","doToast","cleanup","getDeviceString","identifier","pushToken","deviceIdentifier","deviceName","twoFactorRemember","errorCallback","infoCallback","parseFunction","parseMessage","connectorLink","base64Encode","sendMessage","contentWindow","postMessage","removeEventListener","validMessage","origin","confirmMasterPassword","hint","useLowerKdf","isEdge","isIE","RegisterRequest","orgInvite","confirmField","PasswordHintRequest","pinLock","webVaultHostname","invalidPinAttempts","pinSet","vaultUrl","failed","decPin","setKeyAndContinue","storedKeyHash","doContinue","showFolders","showCollections","showFavorites","showTrash","onAllClicked","onFavoritesClicked","onTrashClicked","onCipherTypeClicked","onFolderClicked","onAddFolder","onEditFolder","onCollectionClicked","selectedTrash","setLoaded","collapsedGroupings","nestedFolders","clearSelections","selectFavorites","selectTrash","selectType","selectFolder","selectCollection","idPrefix","onError","appFallbackSrc","FallbackSrcDirective","activeCipherId","onCipherClicked","onCipherRightClicked","onAddCipher","onAddCipherOptions","pagedCiphers","deleted","didScroll","searchTimeout","pagedCiphersCount","refreshing","loadMore","pagedLength","pagedSize","deletedFilter","searchCiphers","rightClickCipher","addCipherOptions","isSearching","isSearchable","isPaging","searching","onRestoredCipher","onCancelled","onEditAttachments","onShareCipher","onEditCollections","onGeneratePassword","showCardCode","fieldType","addFieldType","typeOptions","cardBrandOptions","cardExpMonthOptions","identityTitleOptions","addFieldTypeOptions","uriMatchOptions","myEmail","addEditCipherInfo","organizationChanged","previousCipherId","addUri","removeUri","addField","removeField","trackByFunction","editCollections","restorePromise","restoreCipher","toggleCardCode","toggleFieldValue","showValue","toggleUriOptions","loginUriMatchChanged","drop","moveItemInArray","previousIndex","currentIndex","checkPassword","checkPasswordPromise","deletePromises","reuploadPromises","hasUpdatedKey","download","downloading","canAccessAttachments","foundAttachment","a2","selectedCollectionIds","cipherView","onSaved","downloadFile","getExport","prefix","csv","showSelect","onSelected","avoidAmbiguous","optionsResponse","sliderChanged","sliderInput","regenerate","copyOptions","toggleOptions","language","BroadcasterMessagingService","WebPlatformUtilsService","HtmlStorageService","MemoryStorageService","WebCryptoFunctionService","eventLoggingService","Analytics","htmlEl","documentElement","theme","ServicesModule","subscriber","arg","localStorageKeys","localStorageStartsWithKeys","isLocalStorage","localStorage","getItem","sessionStorage","setItem","removeItem","swKey","BillingSourceResponse","BillingTransactionResponse","BillingInvoiceResponse","cardBrand","needsVerification","pdfUrl","paid","createdDate","refunded","partiallyRefunded","refundedAmount","details","addedDate","breachDate","dataClasses","isActive","isVerified","logoPath","modifiedDate","pwnCount","identityResponse","errorModel","responseErrorModel","messages","lastSep","lastIndexOf","access_token","expiresIn","expires_in","tokenType","token_type","OrganizationUserResponse","userProfile","selfHost","KeyResponse","throttleKey","allThrottles","getThrottles","throttles","argsThrottleKey","queue","exec","inEffect","Owner","Manager","Admin","filePath","store","browserCache","chrome","isFirefox","isChrome","isOpera","isVivaldi","isSafari","isMacAppStore","analyticsId","rel","click","blobData","blobOptions","fileNameLower","doDownload","endsWith","msSaveOrOpenBlob","msSaveBlob","createObjectURL","position","confirmText","cancelText","iconClasses","iconHtmlStr","fire","heightAuto","buttonsStyling","iconHtml","showCancelButton","cancelButtonText","showConfirmButton","confirmButtonText","clipboardData","setData","queryCommandSupported","textarea","copyEl","contains","execCommand","readFromClipboard","AnalyticsIds","gaFilter","dependencyResolver","gaTrackingId","defaultDisabled","deps","appVersion","GoogleAnalyticsObject","param1","param2","ga","disabled","gaAnonAppId","gaTrackPageView","hitType","page","gaTrackEvent","XMLHttpRequest","eventCategory","eventAction","eventLabel","eventValue","cleanPagePath","pagePath","paramIndex","pathParts","newPathParts","eventType","uploadImmediately","orgIds","eventCollection","EventData","EventRequest","buildCommonCipher","unparse","collectionPromises","decCol","cipherPromises","decCipher","extension","padNumber","getSeconds","padCharacter","numString","login_uri","login_username","login_password","login_totp","template","toView","getImportOptions","importResult","halfway","last","badData","postImport","getImporterInstance","BitwardenCsvImporter","BitwardenJsonImporter","LastPassCsvImporter","KeePassXCsvImporter","AviraCsvImporter","BlurCsvImporter","SafeInCloudXmlImporter","PadlockCsvImporter","KeePass2XmlImporter","ChromeCsvImporter","FirefoxCsvImporter","UpmCsvImporter","SaferPassCsvImporter","MeldiumCsvImporter","OnePassword1PifImporter","OnePasswordWinCsvImporter","KeeperCsvImporter","PasswordDragonXmlImporter","EnpassCsvImporter","EnpassJsonImporter","PasswordSafeXmlImporter","DashlaneJsonImporter","MSecureCsvImporter","StickyPasswordXmlImporter","TrueKeyCsvImporter","ClipperzHtmlImporter","RoboFormCsvImporter","AscendoCsvImporter","PasswordBossJsonImporter","ZohoVaultCsvImporter","SplashIdCsvImporter","PassKeepCsvImporter","GnomeJsonImporter","PasswordAgentCsvImporter","PasspackCsvImporter","PassmanJsonImporter","AvastCsvImporter","AvastJsonImporter","FSecureFskImporter","KasperskyTxtImporter","RememBearCsvImporter","PasswordWalletTxtImporter","MykiCsvImporter","SecureSafeCsvImporter","LogMeOnceCsvImporter","BlackBerryCsvImporter","ButtercupCsvImporter","CodebookCsvImporter","EncryptrCsvImporter","ImportCiphersRequest","KvpRequest","ImportOrganizationCiphersRequest","fieldLower","web","logins","custName","note","pwd","loginName","cards","holderName","cardNumber","cvv","expirationDate","website","secondary_username","col","addCollection","collectionIndex","delimPosition","groupingsMap","fav","extra","OfficialProps","processingCustomFields","entry","currentVersion","actionType","labelLower","Category","Favorite","Entry","Note","Username","TOTP","Website","Phone","PIN","Account","HandledResults","ADDRESS","processAddress","AUTHENTIFIANT","processAuth","BANKSTATEMENT","processNote","IDCARD","PAYMENTMEANS_CREDITCARD","processCard","IDENTITY","processIdentity","credential","secondaryLogin","fullName","nameParts","pseudo","addressName","addressFull","zipcode","owner","nameProperty","Label","Notes","CVV","expiry","Expiry","expParts","firstRow","containsField","fieldValue","fieldName","fieldNameLower","foldersMap","foldersIndexMap","folderTree","buildFolderTree","flattenFolderTree","template_type","processLogin","uuid","parent_uuid","titlePrefix","tree","creditNumber","creditCvv","creditExpiry","keyRing","display_name","secret","attributes","attr","username_value","notesData","applicationsData","websitesData","workingData","parseDataCategory","applications","websites","nameKey","itemComment","itemCommentKey","colonIndex","rootGroup","traverse","isRootNode","groupPrefixName","groupName","nameEl","cipherIndex","entryString","valueEl","keyEl","attrs","ProtectInMemory","Title","Group","buildBaseCipher","parseSecureNote","parseCard","parseIdentity","ccnum","cardCipher","profilename","firstname","lastname","ccname","cccsc","ccexp","ccexpParts","middlename","zip","extraParts","processedNote","typeParts","mappedData","parseSecureNoteMapping","monthString","processingNotes","extraPart","DisplayName","UserName","Url","nickname","additionalInfo","twoFactAuthToken","cardName","exp_month","exp_year","firstAddressLine","secondAddressLine","zipCode","line","trashed","processStandardItem","processWinOpVaultItem","overview","URLs","parsePasswordHistory","notesPlain","parseFields","sections","section","openContents","faveIndex","typeName","secureContents","maxSize","time","designationKey","valueKey","fieldDesignation","street","IgnoredProperties","getProp","altUsername","lowerProp","View","tags","tag","getValue","custom_fields","customField","field_type","tagsJson","Tags","tagJson","__parsed_extra","fieldsJson","extraFields","fieldJson","newVersion","altFormat","login_url","identifiers","valObj","expDate","cf","records","record","categoryText","accountName","tagName","passwordSafe","notesDelimiter","getAttribute","entries","groupText","trash","cardholder","verification","expiryMonth","expMonthNumber","expiryYear","expYearNumber","Name","Pwd","Rf_fields","labelEl","cardEl","labelIdEl","labelId","fieldEl","notesEl","Comment","parseFieldsToNotes","startIndex","loginNodes","loginNode","accountId","usernameText","passwordText","titleText","linkText","notesText","accountLogin","account","parentElement","buildGroupText","PropertiesToIgnore","memo","kind","expiryDate","document_content","ChamberName","parseData","SecretData","CustomData","connected","inactive","reconnectTimer","signalrConnection","off","signalR","HubConnectionBuilder","withUrl","accessTokenFactory","skipNegotiation","transport","HttpTransportType","WebSockets","withHubProtocol","signalRMsgPack","MessagePackHubProtocol","processNotification","NotificationResponse","onclose","reconnect","isAuthedAndUnlocked","sync","contextId","payloadUserId","UserId","myUserId","SyncCipherCreate","SyncCipherUpdate","SyncCipherDelete","SyncLoginDelete","SyncFolderCreate","SyncFolderUpdate","SyncFolderDelete","SyncVault","SyncCiphers","SyncSettings","SyncOrgKeys","LogOut","SyncCipherNotification","SyncFolderNotification","UserNotification","policyCache","MasterPasswordPolicyOptions","newPassword","toLocaleLowerCase","toLocaleUpperCase","indexing","onlySearchName","builder","lunr","Builder","boost","extractor","uriExtractor","fieldExtractor","attachmentExtractor","timeEnd","isArray","every","getIndexForSearch","ciphersMap","searchResults","Query","wildcard","LEADING","TRAILING","q","tokenizer","term","joined","protocolIndex","queryIndex","crypto","subtle","ua","isOldSafari","algorithm","iterations","forgeLen","passwordBytes","toByteString","saltBytes","derivedKeyBytes","forge","wcLen","passwordBuf","toBuf","saltBuf","pbkdf2Params","toWebCryptoAlgorithm","importKey","impKey","deriveBits","md","md5","sha1","valueBytes","update","digest","valueBuf","signingAlgorithm","mac1","mac2","arr1","arr2","getBytes","rand","Uint32Array","util","createBuffer","putInt32","DecryptParameters","meta","encKeyByteString","macKeyByteString","decode64","parameters","dataBuffer","createDecipher","finish","rsaParams","impPrivateKey","exportKey","jwkPrivateKey","jwkPublicKeyParams","kty","ext","impPublicKey","modulusLength","publicExponent","generateKey","getRandomValues","encodeUtf8","AppRoutingModule"],"mappings":"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CA,SACA,WACA,YACA,YACA,YACA,YACA,SACA,QACA,YACA,WACA,SACA,UACA,SACA,SACA,WACA,QACA,SACA,YACA,YACA,YACA,YACA,YACA,OACA,UACA,SACA,SACA,QACA,YACA,SACA,QACA,UACA,QACA,WACA,UACA,YACA,QACA,YACA,YACA,SACA,WACA,YACA,UACA,QACA,OACA,OACA,OACA,MACA,OACA,YACA,QACA,YACA,QACA,UACA,UACA,YACA,QACA,QACA,YACA,WACA,SACA,QACA,QACA,WACA,WACA,UACA,WACA,SACA,OACA,QACA,QACA,QACA,YACA,QACA,WACA,UACA,WACA,WACA,OACA,WACA,SACA,SACA,WACA,QACA,YACA,QACA,WACA,YACA,YACA,WACA,YACA,YACA,SACA,YACA,YACA,SACA,UACA,UACA,WACA,OACA,QACA,QACA,QACA,UACA,WACA,UACA,WACA,QACA,SACA,WACA,QACA,YACA,UACA,QACA,QACA,SACA,WACA,SACA,YACA,SACA,UACA,WACA,YACA,UACA,YACA,UACA,SACA,UACA,UACA,UACA,SACA,SACA,WACA,OACA,YACA,UACA,QACA,SACA,SACA,SACA,UACA,UACA,YACA,YACA,UACA,SACA,UACA,YACA,YACA,WACA,QACA,YACA,QACA,QACA,WACA,YACA,WACA,WACA,UACA,WACA,UACA,YACA,UACA,YACA,WACA,WACA,WACA,SACA,UACA,YACA,WACA,SACA,WACA,WACA,YACA,WACA,YACA,WACA,YACA,YACA,YACA,YACA,SACA,UACA,QACA,QACA,UACA,SACA,UACA,SACA,WACA,WACA,UACA,SACA,WACA,QACA,SACA,UACA,YACA,SACA,UACA,YACA,YACA,WACA,WACA,YACA,UACA,WACA,QACA,YACA,YACA,UACA,QACA,YACA,YACA,YACA,YACA,WACA,WACA,UACA,UACA,QACA,QACA,WACA,QACA,OACA,WACA,YACA,YACA,WACA,OACA,QACA,WACA,WACA,QACA,QACA,YACA,UACA,WACA,QACA,SACA,UACA,SACA,UACA,UACA,UACA,SACA,UACA,OACA,QACA,QACA,SACA,UACA,UACA,QACA,SACA,UACA,SACA,YACA,WACA,QACA,MACA,SACA,YACA,SACA,YACA,UACA,QACA,QACA,OACA,QACA,QACA,SACA,YACA,SACA,WACA,SACA,UACA,WACA,UACA,UACA,YACA,YACA,YACA,SACA,WACA,QACA,OACA,WACA,OACA,SACA,YACA,UACA,SACA,SACA,UACA,YACA,WACA,YACA,YACA,SACA,QACA,SACA,WACA,YACA,YACA,WACA,UACA,YACA,WACA,UACA,UACA,WACA,QACA,WACA,YACA,SACA,YACA,SACA,SACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,SACA,SACA,WACA,SACA,UACA,WACA,QACA,WACA,UACA,OACA,QACA,QACA,SACA,QACA,QACA,SACA,UACA,SACA,QACA,OACA,OACA,SACA,WACA,SACA,SACA,WACA,YACA,YACA,WACA,SACA,SACA,YACA,WACA,WACA,UACA,YACA,WACA,WACA,YACA,UACA,UACA,WACA,YACA,WACA,WACA,YACA,WACA,WACA,YACA,WACA,WACA,YACA,WACA,YACA,SACA,WACA,WACA,YACA,WACA,QACA,WACA,YACA,SACA,QACA,UACA,QACA,UACA,SACA,WACA,QACA,SACA,UACA,SACA,SACA,YACA,UACA,QACA,UACA,WACA,QACA,SACA,WACA,SACA,UACA,YACA,UACA,QACA,WACA,SACA,SACA,SACA,WACA,QACA,WACA,WACA,SACA,SACA,UACA,WACA,WACA,SACA,YACA,UACA,SACA,WACA,SACA,UACA,SACA,UACA,QACA,WACA,UACA,WACA,SACA,UACA,SACA,OACA,YACA,UACA,YACA,SACA,WACA,YACA,UACA,WACA,YACA,WACA,OACA,YACA,SACA,QACA,QACA,QACA,SACA,SACA,QACA,OACA,QACA,OACA,YACA,WACA,YACA,UACA,UACA,SACA,SACA,UACA,UACA,UACA,QACA,OACA,QACA,UACA,YACA,YACA,QACA,YACA,YACA,QACA,WACA,YACA,SACA,UACA,SACA,QACA,QACA,UACA,QACA,QACA,WACA,QACA,QACA,UACA,UACA,WACA,SACA,OACA,WACA,QACA,WACA,UACA,WACA,OACA,OACA,WACA,WACA,UACA,OACA,SACA,UACA,QACA,SACA,YACA,QACA,QACA,UACA,SACA,QACA,QACA,WACA,UACA,WACA,WACA,OACA,SACA,UACA,SACA,SACA,UACA,UACA,YACA,OACA,SACA,SACA,QACA,OACA,MACA,UACA,OACA,UACA,SACA,UACA,WACA,QACA,WACA,WACA,WACA,QACA,UACA,SACA,SACA,QACA,OACA,YACA,YACA,OACA,YACA,SACA,QACA,SACA,UACA,WACA,UACA,QACA,QACA,QACA,SACA,UACA,WACA,YACA,OACA,YACA,WACA,SACA,QACA,OACA,SACA,WACA,SACA,SACA,WACA,SACA,WACA,YACA,YACA,SACA,SACA,QACA,SACA,UACA,OACA,SACA,SACA,WACA,YACA,UACA,WACA,SACA,SACA,WACA,UACA,UACA,QACA,QACA,QACA,QACA,UACA,UACA,SACA,YACA,OACA,QACA,QACA,UACA,UACA,YACA,UACA,UACA,YACA,YACA,UACA,UACA,YACA,YACA,YACA,UACA,WACA,SACA,SACA,YACA,SACA,SACA,WACA,QACA,QACA,UACA,WACA,YACA,SACA,WACA,WACA,SACA,WACA,QACA,QACA,WACA,QACA,YACA,SACA,WACA,SACA,YACA,SACA,SACA,SACA,WACA,WACA,YACA,YACA,WACA,WACA,UACA,QACA,SACA,UACA,SACA,SACA,UACA,UACA,QACA,OACA,QACA,YACA,SACA,OACA,UACA,YACA,YACA,WACA,WACA,UACA,UACA,UACA,WACA,WACA,WACA,QACA,QACA,SACA,SACA,SACA,UACA,YACA,WACA,QACA,OACA,SACA,OACA,SACA,UACA,OACA,WACA,OACA,SACA,UACA,SACA,YACA,QACA,UACA,QACA,SACA,QACA,SACA,SACA,QACA,QACA,WACA,UACA,OACA,UACA,OACA,WACA,WACA,UACA,YACA,WACA,UACA,YACA,OACA,UACA,UACA,UACA,YACA,QACA,SACA,WACA,SACA,WACA,UACA,WACA,SACA,QACA,SACA,SACA,UACA,SACA,QACA,OACA,SACA,WACA,WACA,SACA,UACA,SACA,SACA,SACA,QACA,YACA,SACA,UACA,SACA,UACA,UACA,WACA,OACA,YACA,UACA,UACA,SACA,YACA,UACA,UACA,UACA,YACA,UACA,YACA,UACA,UACA,QACA,UACA,SACA,YACA,SACA,UACA,WACA,WACA,YACA,YACA,YACA,WACA,SACA,YACA,QACA,SACA,UACA,UACA,WACA,UACA,YACA,WACA,YACA,QACA,YACA,YACA,UACA,UACA,UACA,SACA,YACA,QACA,SACA,WACA,SACA,UACA,YACA,YACA,QACA,UACA,UACA,UACA,OACA,OACA,SACA,SACA,SACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,YACA,UACA,YACA,UACA,WACA,SACA,UACA,WACA,WACA,UACA,YACA,WACA,UACA,SACA,SACA,SACA,UACA,YACA,SACA,QACA,UACA,YACA,SACA,SACA,YACA,QACA,UACA,YACA,UACA,WACA,WACA,UACA,SACA,SACA,QACA,SACA,YACA,WACA,WACA,SACA,SACA,SACA,WACA,WACA,YACA,YACA,YACA,UACA,WACA,WACA,QACA,WACA,QACA,QACA,UACA,YACA,UACA,YACA,WACA,SACA,SACA,UACA,QACA,QACA,YACA,WACA,UACA,QACA,UACA,YACA,YACA,WACA,UACA,WACA,UACA,UACA,QACA,UACA,UACA,WACA,QACA,UACA,SACA,WACA,WACA,WACA,UACA,WACA,SACA,WACA,UACA,QACA,QACA,SACA,SACA,OACA,YACA,UACA,QACA,YACA,SACA,QACA,QACA,UACA,QACA,WACA,SACA,UACA,QACA,QACA,YACA,YACA,YACA,WACA,YACA,YACA,QACA,QACA,QACA,OACA,WACA,SACA,WACA,WACA,QACA,WACA,WACA,SACA,YACA,UACA,QACA,UACA,WACA,SACA,OACA,SACA,UACA,WACA,SACA,SACA,QACA,OACA,SACA,QACA,QACA,QACA,QACA,QACA,WACA,QACA,SACA,WACA,SACA,WACA,WACA,YACA,SACA,UACA,UACA,WACA,UACA,SACA,SACA,OACA,QACA,QACA,OACA,QACA,WACA,SACA,SACA,QACA,YACA,QACA,WACA,UACA,UACA,WACA,UACA,WACA,UACA,QACA,QACA,QACA,UACA,SACA,WACA,OACA,OACA,QACA,QACA,QACA,UACA,QACA,SACA,YACA,WACA,QACA,SACA,UACA,SACA,UACA,WACA,QACA,SACA,WACA,OACA,SACA,QACA,UACA,QACA,QACA,UACA,WACA,UACA,UACA,WACA,QACA,SACA,UACA,WACA,YACA,QACA,WACA,SACA,SACA,YACA,SACA,UACA,QACA,YACA,UACA,UACA,WACA,YACA,YACA,OACA,WACA,SACA,UACA,SACA,QACA,UACA,MACA,WACA,SACA,UACA,SACA,YACA,YACA,YACA,WACA,YACA,WACA,WACA,OACA,OACA,OACA,OACA,WACA,WACA,UACA,WACA,SACA,YACA,YACA,UACA,SACA,YACA,WACA,WACA,WACA,SACA,WACA,OACA,OACA,OACA,UACA,QACA,QACA,SACA,QACA,WACA,UACA,UACA,WACA,UACA,YACA,YACA,SACA,YACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,UACA,UACA,SACA,UACA,SACA,YACA,WACA,WACA,YACA,UACA,YACA,WACA,WACA,YACA,WACA,YACA,UACA,UACA,UACA,WACA,UACA,YACA,UACA,QACA,YACA,UACA,WACA,WACA,SACA,WACA,YACA,YACA,UACA,YACA,YACA,UACA,OACA,UACA,WACA,YACA,YACA,WACA,YACA,YACA,WACA,YACA,UACA,WACA,UACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,WACA,WACA,UACA,YACA,UACA,WACA,YACA,YACA,YACA,UACA,UACA,YACA,YACA,YACA,WACA,YACA,YACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,UACA,YACA,YACA,WACA,UACA,UACA,UACA,UACA,WACA,UACA,YACA,UACA,UACA,YACA,OACA,SACA,SACA,UACA,SACA,UACA,SACA,OACA,QACA,OACA,WACA,YACA,UACA,SACA,SACA,SACA,YACA,YACA,WACA,WACA,YACA,QACA,WACA,UACA,WACA,YACA,SACA,UACA,WACA,UACA,YACA,YACA,UACA,SACA,SACA,WACA,YACA,SACA,SACA,YACA,OACA,UACA,SACA,QACA,QACA,QACA,YACA,YACA,WACA,YACA,UACA,SACA,UACA,WACA,QACA,UACA,WACA,UACA,SACA,WACA,OACA,WACA,YACA,WACA,WACA,SACA,WACA,UACA,WACA,YACA,YACA,SACA,QACA,YACA,QACA,UACA,UACA,QACA,QACA,QACA,UACA,WACA,WACA,WACA,WACA,SACA,SACA,UACA,YACA,QACA,UACA,UACA,YACA,SACA,WACA,YACA,SACA,WACA,WACA,WACA,WACA,WACA,SACA,QACA,QACA,SACA,QACA,QACA,WACA,UACA,WACA,YACA,UACA,WACA,UACA,WACA,OACA,UACA,QACA,QACA,QACA,UACA,SACA,WACA,UACA,UACA,UACA,WACA,UACA,YACA,SACA,WACA,UACA,QACA,QACA,QACA,QACA,OACA,QACA,SACA,UACA,UACA,QACA,QACA,UACA,UACA,YACA,UACA,YACA,UACA,QACA,YACA,SACA,UACA,WACA,WACA,YACA,UACA,WACA,YACA,UACA,UACA,WACA,QACA,OACA,SACA,UACA,UACA,YACA,OACA,UACA,UACA,WACA,SACA,SACA,WACA,WACA,YACA,WACA,UACA,YACA,WACA,UACA,YACA,UACA,QACA,SACA,UACA,UACA,UACA,SACA,OACA,SACA,SACA,SACA,SACA,YACA,UACA,QACA,QACA,QACA,UACA,SACA,UACA,SACA,SACA,YACA,QACA,QACA,QACA,OACA,SACA,UACA,YACA,UACA,YACA,WACA,YACA,UACA,MACA,QACA,SACA,UACA,UACA,WACA,SACA,YACA,YACA,MACA,MACA,WACA,SACA,QACA,WACA,SACA,QACA,QACA,WACA,QACA,UACA,YACA,SACA,WACA,QACA,SACA,SACA,WACA,YACA,QACA,WACA,WACA,YACA,UACA,WACA,WACA,UACA,OACA,OACA,YACA,OACA,YACA,OACA,WACA,SACA,WACA,WACA,UACA,OACA,SACA,WACA,UACA,WACA,WACA,UACA,UACA,UACA,UACA,WACA,SACA,YACA,WACA,SACA,UACA,YACA,QACA,OACA,YACA,SACA,WACA,QACA,UACA,WACA,SACA,QACA,SACA,SACA,QACA,QACA,YACA,QACA,WACA,SACA,WACA,YACA,WACA,UACA,SACA,YACA,YACA,UACA,YACA,UACA,YACA,WACA,OACA,WACA,UACA,SACA,YACA,YACA,YACA,QACA,WACA,SACA,WACA,YACA,SACA,SACA,OACA,OACA,SACA,SACA,WACA,SACA,WACA,SACA,UACA,SACA,YACA,YACA,YACA,WACA,UACA,YACA,WACA,WACA,WACA,UACA,SACA,WACA,SACA,WACA,UACA,YACA,WACA,YACA,YACA,QACA,WACA,UACA,UACA,SACA,SACA,OACA,WACA,YACA,WACA,SACA,YACA,QACA,WACA,QACA,WACA,YACA,SACA,WACA,WACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,UACA,QACA,SACA,WACA,SACA,YACA,YACA,WACA,SACA,YACA,WACA,SACA,WACA,YACA,YACA,WACA,SACA,QACA,SACA,QACA,UACA,SACA,UACA,UACA,OACA,YACA,YACA,WACA,YACA,SACA,UACA,YACA,WACA,SACA,SACA,SACA,WACA,YACA,YACA,UACA,UACA,QACA,WACA,SACA,SACA,WACA,QACA,UACA,YACA,UACA,YACA,YACA,WACA,WACA,YACA,YACA,UACA,WACA,WACA,UACA,UACA,UACA,UACA,YACA,WACA,WACA,SACA,YACA,YACA,WACA,YACA,YACA,SACA,WACA,YACA,WACA,UACA,QACA,UACA,WACA,UACA,UACA,YACA,WACA,SACA,UACA,YACA,UACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,WACA,YACA,YACA,UACA,OACA,WACA,SACA,YACA,QACA,OACA,SACA,UACA,YACA,WACA,YACA,WACA,WACA,YACA,YACA,MACA,WACA,YACA,WACA,OACA,SACA,OACA,WACA,QACA,SACA,SACA,UACA,SACA,QACA,UACA,SACA,YACA,QACA,QACA,SACA,SACA,UACA,UACA,UACA,SACA,SACA,UACA,WACA,YACA,YACA,WACA,YACA,WACA,YACA,WACA,WACA,WACA,SACA,WACA,WACA,UACA,YACA,WACA,UACA,UACA,YACA,WACA,WACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,WACA,OACA,YACA,UACA,OACA,UACA,YACA,YACA,WACA,WACA,YACA,SACA,UACA,WACA,UACA,WACA,SACA,YACA,YACA,WACA,WACA,YACA,YACA,YACA,WACA,UACA,YACA,WACA,UACA,WACA,UACA,YACA,UACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,QACA,QACA,QACA,YACA,UACA,WACA,WACA,WACA,WACA,SACA,WACA,YACA,YACA,WACA,WACA,WACA,YACA,QACA,SACA,SACA,OACA,WACA,WACA,QACA,QACA,QACA,QACA,OACA,SACA,YACA,SACA,QACA,UACA,SACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,QACA,QACA,SACA,WACA,YACA,WACA,UACA,UACA,WACA,WACA,WACA,WACA,UACA,QACA,OACA,YACA,SACA,SACA,OACA,SACA,WACA,SACA,OACA,OACA,QACA,OACA,OACA,WACA,YACA,YACA,WACA,YACA,WACA,UACA,UACA,YACA,WACA,YACA,QACA,UACA,UACA,OACA,UACA,WACA,YACA,YACA,WACA,YACA,YACA,YACA,SACA,SACA,WACA,SACA,SACA,QACA,OACA,UACA,QACA,QACA,QACA,UACA,WACA,YACA,WACA,WACA,SACA,WACA,SACA,SACA,WACA,UACA,UACA,UACA,QACA,QACA,QACA,YACA,UACA,WACA,UACA,UACA,UACA,QACA,QACA,WACA,SACA,OACA,MACA,SACA,YACA,UACA,WACA,UACA,WACA,WACA,QACA,OACA,OACA,SACA,SACA,MACA,OACA,SACA,WACA,OACA,UACA,WACA,WACA,MACA,OACA,SACA,YACA,YACA,UACA,UACA,WACA,SACA,SACA,OACA,OACA,UACA,OACA,QACA,QACA,QACA,UACA,UACA,WACA,UACA,YACA,UACA,WACA,UACA,WACA,WACA,OACA,QACA,UACA,UACA,UACA,SACA,UACA,QACA,UACA,UACA,WACA,WACA,WACA,UACA,UACA,UACA,YACA,YACA,UACA,YACA,SACA,SACA,UACA,QACA,UACA,SACA,WACA,SACA,YACA,YACA,SACA,WACA,UACA,QACA,SACA,SACA,OACA,OACA,QACA,QACA,QACA,YACA,OACA,SACA,UACA,YACA,UACA,WACA,YACA,UACA,YACA,YACA,OACA,WACA,SACA,OACA,UACA,SACA,WACA,YACA,WACA,MACA,YACA,UACA,YACA,SACA,YACA,SACA,SACA,WACA,WACA,YACA,UACA,YACA,SACA,QACA,YACA,UACA,SACA,QACA,YACA,UACA,SACA,YACA,WACA,WACA,WACA,UACA,YACA,YACA,WACA,SACA,MACA,WACA,WACA,YACA,QACA,UACA,SACA,MACA,UACA,WACA,MACA,YACA,QACA,YACA,WACA,YACA,QACA,UACA,QACA,QACA,UACA,SACA,UACA,YACA,YACA,QACA,WACA,UACA,SACA,SACA,WACA,SACA,YACA,QACA,UACA,YACA,WACA,OACA,QACA,WACA,UACA,WACA,UACA,UACA,WACA,WACA,YACA,WACA,YACA,WACA,WACA,WACA,WACA,UACA,UACA,YACA,QACA,MACA,SACA,YACA,SACA,YACA,YACA,WACA,UACA,YACA,SACA,SACA,YACA,YACA,WACA,UACA,UACA,WACA,WACA,YACA,QACA,SACA,UACA,UACA,YACA,YACA,UACA,YACA,WACA,YACA,YACA,WACA,YACA,WACA,SACA,WACA,WACA,UACA,WACA,SACA,UACA,WACA,WACA,YACA,UACA,SACA,UACA,YACA,YACA,YACA,UACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,SACA,SACA,SACA,UACA,UACA,SACA,SACA,YACA,WACA,YACA,WACA,SACA,UACA,SACA,SACA,YACA,SACA,SACA,WACA,UACA,WACA,UACA,YACA,WACA,WACA,WACA,UACA,WACA,QACA,OACA,SACA,OACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,WACA,UACA,QACA,SACA,WACA,UACA,UACA,YACA,SACA,YACA,YACA,WACA,SACA,SACA,UACA,YACA,SACA,SACA,UACA,QACA,QACA,WACA,YACA,YACA,WACA,WACA,WACA,SACA,YACA,YACA,WACA,UACA,QACA,UACA,YACA,YACA,SACA,WACA,WACA,YACA,YACA,WACA,UACA,UACA,WACA,UACA,QACA,YACA,SACA,YACA,WACA,UACA,QACA,WACA,YACA,YACA,UACA,UACA,OACA,YACA,YACA,YACA,WACA,WACA,QACA,WACA,UACA,OACA,QACA,YACA,SACA,QACA,UACA,UACA,WACA,YACA,YACA,YACA,SACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,SACA,YACA,YACA,YACA,YACA,QACA,OACA,YACA,SACA,UACA,SACA,QACA,WACA,OACA,SACA,YACA,WACA,WACA,SACA,UACA,YACA,YACA,YACA,YACA,YACA,QACA,SACA,WACA,YACA,SACA,SACA,WACA,UACA,YACA,WACA,UACA,UACA,UACA,YACA,WACA,WACA,YACA,SACA,WACA,UACA,YACA,YACA,WACA,YACA,SACA,YACA,WACA,WACA,UACA,YACA,YACA,SACA,YACA,UACA,YACA,YACA,QACA,SACA,WACA,WACA,YACA,WACA,WACA,WACA,YACA,UACA,SACA,WACA,SACA,YACA,UACA,UACA,SACA,YACA,UACA,UACA,OACA,SACA,UACA,SACA,OACA,QACA,UACA,OACA,WACA,SACA,SACA,WACA,UACA,UACA,YACA,QACA,UACA,OACA,UACA,YACA,YACA,UACA,UACA,WACA,SACA,UACA,WACA,SACA,YACA,YACA,UACA,WACA,WACA,MACA,QACA,UACA,SACA,SACA,OACA,OACA,SACA,SACA,WACA,WACA,WACA,WACA,WACA,QACA,QACA,UACA,SACA,UACA,WACA,YACA,WACA,SACA,SACA,QACA,SACA,SACA,WACA,UACA,YACA,QACA,QACA,QACA,QACA,UACA,SACA,WACA,WACA,YACA,UACA,UACA,QACA,WACA,QACA,UACA,SACA,WACA,SACA,SACA,SACA,UACA,OACA,SACA,QACA,WACA,SACA,WACA,WACA,UACA,UACA,YACA,QACA,WACA,QACA,UACA,WACA,WACA,YACA,SACA,UACA,UACA,WACA,MACA,OACA,UACA,UACA,WACA,WACA,YACA,YACA,QACA,UACA,QACA,QACA,YACA,UACA,WACA,WACA,OACA,UACA,YACA,YACA,YACA,WACA,WACA,SACA,QACA,UACA,WACA,SACA,WACA,UACA,YACA,YACA,WACA,UACA,WACA,WACA,WACA,YACA,YACA,WACA,OACA,UACA,SACA,QACA,QACA,SACA,SACA,QACA,QACA,OACA,QACA,QACA,QACA,WACA,OACA,SACA,UACA,QACA,WACA,UACA,UACA,QACA,SACA,UACA,WACA,OACA,MACA,MACA,OACA,QACA,OACA,WACA,SACA,WACA,SACA,WACA,SACA,OACA,OACA,OACA,UACA,WACA,WACA,YACA,SACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,YACA,WACA,UACA,WACA,WACA,WACA,SACA,SACA,UACA,WACA,WACA,MACA,QACA,WACA,WACA,UACA,YACA,WACA,YACA,WACA,QACA,QACA,UACA,UACA,YACA,SACA,UACA,QACA,WACA,WACA,WACA,UACA,UACA,UACA,WACA,WACA,UACA,WACA,SACA,YACA,WACA,YACA,WACA,UACA,WACA,YACA,WACA,UACA,SACA,WACA,SACA,YACA,WACA,QACA,UACA,UACA,WACA,SACA,SACA,QACA,SACA,WACA,YACA,YACA,WACA,QACA,SACA,UACA,QACA,UACA,YACA,SACA,OACA,QACA,YACA,UACA,WACA,WACA,YACA,SACA,QACA,QACA,SACA,WACA,YACA,WACA,QACA,YACA,SACA,MACA,QACA,MACA,YACA,UACA,QACA,OACA,YACA,WACA,UACA,SACA,SACA,UACA,YACA,SACA,YACA,WACA,OACA,SACA,QACA,SACA,SACA,WACA,UACA,MACA,SACA,UACA,SACA,SACA,UACA,SACA,UACA,SACA,UACA,SACA,MACA,WACA,YACA,SACA,UACA,WACA,QACA,OACA,OACA,SACA,OACA,QACA,OACA,SACA,MACA,SACA,UACA,WACA,WACA,QACA,UACA,YACA,SACA,QACA,YACA,WACA,YACA,UACA,YACA,WACA,WACA,SACA,YACA,YACA,YACA,WACA,YACA,UACA,YACA,UACA,UACA,UACA,QACA,QACA,YACA,SACA,UACA,YACA,QACA,OACA,WACA,YACA,WACA,SACA,WACA,SACA,SACA,SACA,QACA,UACA,SACA,WACA,QACA,QACA,SACA,QACA,UACA,UACA,UACA,QACA,YACA,SACA,YACA,UACA,SACA,WACA,YACA,QACA,UACA,QACA,WACA,UACA,WACA,UACA,SACA,UACA,UACA,UACA,UACA,SACA,UACA,SACA,UACA,WACA,WACA,SACA,YACA,YACA,UACA,WACA,QACA,QACA,QACA,UACA,WACA,UACA,OACA,SACA,YACA,UACA,SACA,OACA,OACA,WACA,OACA,UACA,QACA,WACA,WACA,YACA,OACA,UACA,QACA,UACA,OACA,OACA,OACA,QACA,WACA,YACA,QACA,SACA,OACA,SACA,OACA,SACA,WACA,OACA,UACA,SACA,SACA,SACA,OACA,OACA,OACA,WACA,YACA,WACA,YACA,SACA,SACA,WACA,UACA,YACA,WACA,WACA,UACA,WACA,QACA,WACA,WACA,UACA,UACA,UACA,WACA,UACA,SACA,UACA,QACA,WACA,QACA,QACA,UACA,YACA,QACA,QACA,YACA,UACA,UACA,YACA,WACA,SACA,YACA,SACA,YACA,YACA,UACA,QACA,OACA,UACA,WACA,WACA,YACA,SACA,QACA,UACA,WACA,OACA,YACA,OACA,QACA,YACA,WACA,WACA,QACA,UACA,YACA,QACA,YACA,QACA,SACA,WACA,OACA,UACA,OACA,WACA,SACA,QACA,QACA,SACA,WACA,SACA,QACA,SACA,UACA,QACA,QACA,SACA,UACA,QACA,OACA,SACA,WACA,WACA,UACA,UACA,YACA,UACA,WACA,SACA,QACA,YACA,WACA,WACA,QACA,UACA,YACA,QACA,OACA,WACA,QACA,OACA,UACA,UACA,YACA,UACA,QACA,SACA,WACA,OACA,OACA,QACA,QACA,UACA,OACA,SACA,MACA,UACA,WACA,YACA,WACA,UACA,WACA,SACA,SACA,UACA,UACA,MACA,UACA,QACA,OACA,UACA,OACA,SACA,SACA,YACA,SACA,UACA,SACA,UACA,YACA,UACA,WACA,WACA,YACA,WACA,WACA,YACA,YACA,WACA,SACA,UACA,WACA,UACA,WACA,YACA,YACA,YACA,UACA,UACA,WACA,WACA,UACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,YACA,WACA,WACA,YACA,YACA,WACA,WACA,UACA,WACA,SACA,YACA,SACA,QACA,YACA,YACA,UACA,WACA,UACA,YACA,QACA,SACA,WACA,WACA,YACA,WACA,WACA,WACA,YACA,UACA,WACA,YACA,SACA,WACA,WACA,WACA,YACA,WACA,QACA,UACA,WACA,YACA,YACA,YACA,UACA,UACA,UACA,QACA,UACA,OACA,SACA,QACA,UACA,YACA,QACA,SACA,YACA,WACA,UACA,WACA,YACA,OACA,UACA,SACA,QACA,QACA,SACA,WACA,SACA,WACA,SACA,OACA,WACA,WACA,YACA,YACA,YACA,SACA,SACA,YACA,WACA,UACA,WACA,WACA,WACA,YACA,YACA,WACA,WACA,YACA,UACA,WACA,YACA,YACA,UACA,WACA,OACA,OACA,QACA,UACA,YACA,UACA,QACA,UACA,YACA,QACA,SACA,SACA,SACA,UACA,UACA,WACA,WACA,UACA,YACA,QACA,WACA,QACA,SACA,SACA,YACA,QACA,WACA,SACA,UACA,UACA,UACA,UACA,QACA,YACA,WACA,WACA,UACA,WACA,SACA,SACA,WACA,OACA,MACA,OACA,OACA,OACA,QACA,SACA,WACA,SACA,QACA,YACA,WACA,UACA,SACA,YACA,WACA,YACA,WACA,WACA,SACA,SACA,YACA,YACA,SACA,WACA,SACA,OACA,SACA,UACA,WACA,WACA,SACA,SACA,SACA,UACA,SACA,YACA,UACA,QACA,OACA,UACA,OACA,SACA,YACA,MACA,SACA,UACA,WACA,YACA,WACA,YACA,YACA,YACA,SACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,MACA,UACA,QACA,OACA,OACA,MACA,WACA,WACA,WACA,UACA,YACA,YACA,WACA,WACA,WACA,SACA,QACA,OACA,QACA,WACA,SACA,SACA,YACA,WACA,WACA,QACA,YACA,WACA,UACA,WACA,UACA,YACA,WACA,UACA,YACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,WACA,SACA,SACA,YACA,UACA,WACA,YACA,YACA,WACA,SACA,UACA,YACA,YACA,WACA,UACA,YACA,YACA,QACA,WACA,YACA,WACA,SACA,WACA,YACA,YACA,WACA,UACA,YACA,UACA,WACA,YACA,WACA,UACA,YACA,YACA,YACA,UACA,YACA,SACA,WACA,SACA,SACA,MACA,OACA,SACA,OACA,QACA,MACA,OACA,YACA,WACA,YACA,YACA,WACA,WACA,UACA,WACA,WACA,YACA,YACA,UACA,QACA,UACA,YACA,UACA,OACA,YACA,SACA,QACA,MACA,MACA,SACA,SACA,YACA,UACA,WACA,YACA,SACA,YACA,WACA,MACA,UACA,UACA,SACA,UACA,UACA,WACA,QACA,OACA,QACA,UACA,UACA,OACA,UACA,YACA,OACA,OACA,YACA,UACA,QACA,SACA,SACA,MACA,QACA,SACA,QACA,SACA,WACA,OACA,UACA,UACA,MACA,SACA,YACA,SACA,UACA,OACA,UACA,WACA,WACA,YACA,QACA,OACA,MACA,SACA,WACA,YACA,SACA,UACA,WACA,YACA,WACA,QACA,YACA,WACA,YACA,OACA,SACA,WACA,UACA,QACA,YACA,QACA,UACA,UACA,OACA,SACA,QACA,OACA,WACA,WACA,OACA,SACA,UACA,SACA,UACA,WACA,SACA,QACA,OACA,UACA,YACA,UACA,SACA,WACA,WACA,QACA,WACA,UACA,SACA,QACA,QACA,SACA,WACA,OACA,MACA,OACA,SACA,OACA,WACA,WACA,SACA,OACA,OACA,WACA,WACA,YACA,WACA,OACA,SACA,SACA,WACA,SACA,WACA,UACA,UACA,UACA,OACA,UACA,UACA,YACA,WACA,SACA,UACA,UACA,OACA,SACA,QACA,OACA,UACA,WACA,OACA,QACA,WACA,QACA,QACA,QACA,SACA,UACA,QACA,OACA,UACA,UACA,WACA,YACA,WACA,SACA,SACA,QACA,UACA,WACA,SACA,UACA,SACA,OACA,OACA,QACA,SACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YACA,YACA,WACA,YACA,WACA,YACA,QACA,UACA,SACA,QACA,SACA,UACA,SACA,OACA,QACA,OACA,OACA,QACA,OACA,QACA,OACA,SACA,WACA,UACA,SACA,WACA,SACA,UACA,UACA,SACA,WACA,SACA,WACA,SACA,WACA,OACA,WACA,OACA,SACA,QACA,SACA,SACA,WACA,UACA,UACA,YACA,OACA,UACA,SACA,YACA,UACA,QACA,OACA,SACA,OACA,OACA,UACA,SACA,UACA,YACA,WACA,SACA,UACA,QACA,WACA,SACA,WACA,YACA,YACA,SACA,UACA,YACA,UACA,UACA,WACA,MACA,OACA,SACA,UACA,UACA,WACA,SACA,WACA,WACA,SACA,QACA,QACA,OACA,OACA,UACA,YACA,QACA,QACA,UACA,WACA,OACA,QACA,WACA,WACA,SACA,SACA,WACA,UACA,OACA,OACA,MACA,UACA,UACA,SACA,OACA,OACA,WACA,YACA,SACA,SACA,SACA,UACA,QACA,SACA,QACA,YACA,UACA,SACA,SACA,YACA,YACA,QACA,UACA,YACA,WACA,YACA,YACA,SACA,WACA,UACA,SACA,YACA,WACA,YACA,UACA,UACA,SACA,QACA,WACA,WACA,YACA,YACA,OACA,QACA,OACA,YACA,OACA,SACA,WACA,SACA,YACA,UACA,YACA,WACA,QACA,YACA,SACA,QACA,YACA,WACA,WACA,SACA,WACA,WACA,QACA,OACA,UACA,YACA,WACA,UACA,SACA,UACA,WACA,QACA,YACA,WACA,YACA,YACA,YACA,UACA,YACA,WACA,WACA,SACA,WACA,UACA,YACA,WACA,WACA,QACA,YACA,SACA,YACA,OACA,OACA,SACA,UACA,YACA,UACA,WACA,UACA,WACA,UACA,YACA,WACA,SACA,SACA,QACA,QACA,YACA,UACA,UACA,UACA,YACA,WACA,YACA,SACA,UACA,UACA,YACA,QACA,UACA,SACA,UACA,QACA,WACA,SACA,SACA,SACA,OACA,MACA,WACA,YACA,UACA,UACA,WACA,QACA,QACA,YACA,YACA,SACA,WACA,SACA,SACA,UACA,WACA,SACA,YACA,SACA,UACA,SACA,QACA,YACA,SACA,YACA,YACA,UACA,SACA,YACA,SACA,UACA,WACA,SACA,UACA,UACA,UACA,YACA,WACA,UACA,WACA,YACA,WACA,WACA,YACA,OACA,SACA,YACA,YACA,SACA,SACA,SACA,SACA,WACA,WACA,WACA,QACA,WACA,WACA,UACA,QACA,SACA,YACA,SACA,UACA,SACA,WACA,WACA,UACA,QACA,SACA,SACA,WACA,SACA,UACA,YACA,SACA,UACA,YACA,WACA,QACA,WACA,OACA,YACA,WACA,WACA,UACA,MACA,YACA,SACA,WACA,WACA,YACA,YACA,YACA,WACA,UACA,UACA,WACA,WACA,WACA,YACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,YACA,UACA,WACA,UACA,YACA,QACA,SACA,WACA,SACA,YACA,WACA,UACA,WACA,YACA,YACA,YACA,WACA,MACA,SACA,WACA,UACA,YACA,WACA,WACA,WACA,QACA,YACA,WACA,YACA,YACA,UACA,WACA,SACA,QACA,OACA,WACA,YACA,SACA,WACA,YACA,SACA,YACA,QACA,QACA,YACA,WACA,UACA,WACA,UACA,WACA,QACA,YACA,YACA,QACA,QACA,UACA,OACA,QACA,SACA,QACA,SACA,OACA,OACA,MACA,MACA,WACA,QACA,OACA,SACA,UACA,WACA,WACA,YACA,YACA,SACA,WACA,QACA,YACA,UACA,QACA,QACA,WACA,UACA,YACA,SACA,QACA,YACA,QACA,YACA,WACA,SACA,UACA,YACA,WACA,QACA,QACA,SACA,YACA,QACA,UACA,UACA,SACA,YACA,QACA,UACA,SACA,WACA,OACA,YACA,YACA,SACA,OACA,SACA,SACA,SACA,UACA,YACA,UACA,OACA,QACA,MACA,OACA,OACA,SACA,QACA,YACA,OACA,SACA,SACA,UACA,QACA,SACA,UACA,YACA,WACA,SACA,WACA,UACA,SACA,WACA,WACA,WACA,YACA,OACA,SACA,UACA,SACA,WACA,SACA,WACA,SACA,YACA,SACA,SACA,WACA,WACA,YACA,WACA,YACA,YACA,UACA,UACA,OACA,SACA,OACA,UACA,QACA,OACA,MACA,YACA,SACA,WACA,WACA,SACA,UACA,QACA,OACA,SACA,WACA,WACA,QACA,QACA,SACA,SACA,WACA,YACA,QACA,WACA,QACA,UACA,SACA,UACA,SACA,UACA,SACA,UACA,SACA,WACA,UACA,WACA,YACA,UACA,WACA,WACA,UACA,UACA,UACA,UACA,UACA,SACA,WACA,WACA,YACA,QACA,SACA,QACA,MACA,MACA,QACA,MACA,YACA,WACA,WACA,SACA,WACA,UACA,WACA,YACA,SACA,YACA,OACA,UACA,YACA,YACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,SACA,YACA,SACA,UACA,YACA,YACA,WACA,WACA,SACA,QACA,SACA,UACA,SACA,UACA,UACA,OACA,MACA,OACA,WACA,OACA,MACA,QACA,WACA,QACA,OACA,UACA,WACA,OACA,WACA,UACA,WACA,UACA,QACA,SACA,WACA,OACA,WACA,QACA,UACA,YACA,UACA,OACA,SACA,OACA,OACA,OACA,OACA,UACA,OACA,OACA,WACA,UACA,YACA,YACA,YACA,WACA,QACA,UACA,WACA,SACA,WACA,WACA,YACA,YACA,MACA,YACA,UACA,QACA,QACA,OACA,QACA,QACA,SACA,UACA,SACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,QACA,WACA,SACA,WACA,WACA,UACA,WACA,SACA,UACA,SACA,UACA,UACA,WACA,WACA,UACA,YACA,YACA,UACA,UACA,SACA,UACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,UACA,WACA,SACA,OACA,QACA,OACA,UACA,UACA,WACA,UACA,WACA,WACA,YACA,YACA,WACA,YACA,WACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,UACA,YACA,YACA,YACA,UACA,WACA,WACA,WACA,WACA,YACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YACA,WACA,YACA,WACA,UACA,UACA,WACA,WACA,WACA,YACA,YACA,WACA,UACA,YACA,WACA,YACA,YACA,WACA,YACA,YACA,WACA,WACA,WACA,UACA,YACA,WACA,YACA,YACA,YACA,WACA,YACA,YACA,WACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,UACA,WACA,WACA,WACA,UACA,YACA,WACA,YACA,MACA,SACA,UACA,YACA,UACA,YACA,SACA,WACA,SACA,QACA,QACA,YACA,UACA,WACA,WACA,WACA,SACA,SACA,UACA,SACA,WACA,UACA,QACA,QACA,SACA,UACA,SACA,YACA,OACA,WACA,YACA,SACA,WACA,WACA,UACA,WACA,SACA,UACA,WACA,QACA,WACA,OACA,YACA,QACA,UACA,WACA,YACA,UACA,YACA,SACA,QACA,YACA,YACA,SACA,QACA,UACA,UACA,WACA,YACA,SACA,UACA,YACA,WACA,YACA,YACA,YACA,WACA,YACA,YACA,YACA,WACA,WACA,YACA,SACA,UACA,YACA,SACA,SACA,QACA,UACA,UACA,SACA,WACA,SACA,SACA,UACA,UACA,UACA,SACA,UACA,YACA,SACA,UACA,YACA,QACA,WACA,WACA,UACA,WACA,YACA,WACA,UACA,UACA,UACA,YACA,WACA,WACA,WACA,QACA,SACA,SACA,UACA,SACA,WACA,UACA,QACA,YACA,SACA,WACA,YACA,OACA,WACA,UACA,QACA,YACA,UACA,SACA,YACA,YACA,SACA,WACA,QACA,YACA,WACA,SACA,SACA,UACA,UACA,WACA,SACA,QACA,QACA,SACA,UACA,WACA,UACA,SACA,SACA,QACA,SACA,WACA,WACA,YACA,WACA,WACA,YACA,WACA,UACA,SACA,OACA,SACA,WACA,UACA,SACA,UACA,UACA,YACA,WACA,UACA,YACA,QACA,SACA,UACA,WACA,YACA,MACA,WACA,UACA,QACA,YACA,YACA,YACA,YACA,UACA,YACA,SACA,WACA,UACA,YACA,QACA,OACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,QACA,OACA,YACA,YACA,SACA,YACA,QACA,SACA,WACA,QACA,YACA,SACA,YACA,YACA,QACA,UACA,UACA,SACA,UACA,YACA,SACA,UACA,YACA,QACA,YACA,QACA,SACA,WACA,UACA,UACA,WACA,QACA,UACA,QACA,SACA,UACA,UACA,SACA,WACA,UACA,WACA,WACA,UACA,WACA,YACA,YACA,WACA,WACA,SACA,UACA,YACA,YACA,UACA,WACA,YACA,WACA,UACA,UACA,WACA,UACA,YACA,WACA,QACA,WACA,QACA,SACA,YACA,SACA,WACA,YACA,UACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,UACA,WACA,SACA,OACA,YACA,UACA,QACA,MACA,OACA,OACA,OACA,UACA,UACA,WACA,YACA,SACA,QACA,SACA,QACA,SACA,QACA,SACA,SACA,QACA,SACA,WACA,QACA,OACA,YACA,UACA,YACA,UACA,SACA,OACA,OACA,UACA,OACA,SACA,SACA,QACA,WACA,WACA,UACA,WACA,YACA,OACA,SACA,WACA,WACA,SACA,YACA,WACA,UACA,SACA,WACA,QACA,OACA,SACA,WACA,WACA,SACA,UACA,SACA,UACA,WACA,SACA,SACA,UACA,YACA,UACA,UACA,QACA,SACA,WACA,QACA,UACA,OACA,WACA,YACA,UACA,QACA,SACA,MACA,WACA,SACA,WACA,UACA,WACA,YACA,SACA,UACA,WACA,YACA,UACA,WACA,WACA,UACA,YACA,UACA,SACA,WACA,YACA,UACA,UACA,SACA,YACA,YACA,UACA,YACA,WACA,YACA,YACA,SACA,UACA,WACA,WACA,UACA,WACA,YACA,WACA,UACA,SACA,UACA,SACA,YACA,YACA,YACA,SACA,UACA,YACA,UACA,QACA,UACA,YACA,UACA,YACA,YACA,WACA,UACA,SACA,UACA,UACA,YACA,UACA,UACA,WACA,SACA,YACA,WACA,QACA,SACA,YACA,UACA,UACA,SACA,QACA,WACA,QACA,QACA,QACA,SACA,SACA,WACA,UACA,UACA,YACA,QACA,YACA,WACA,WACA,YACA,QACA,UACA,YACA,UACA,YACA,UACA,WACA,YACA,WACA,WACA,UACA,UACA,UACA,UACA,YACA,YACA,YACA,UACA,WACA,YACA,UACA,YACA,UACA,WACA,YACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,WACA,QACA,QACA,YACA,SACA,WACA,YACA,SACA,YACA,WACA,WACA,YACA,WACA,UACA,QACA,UACA,YACA,WACA,SACA,YACA,YACA,WACA,WACA,QACA,WACA,SACA,SACA,WACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,UACA,UACA,WACA,YACA,QACA,SACA,QACA,YACA,QACA,UACA,MACA,UACA,SACA,YACA,SACA,SACA,MACA,OACA,YACA,OACA,UACA,QACA,YACA,OACA,SACA,SACA,QACA,WACA,YACA,YACA,UACA,WACA,OACA,QACA,SACA,QACA,WACA,YACA,WACA,SACA,WACA,YACA,QACA,UACA,WACA,SACA,SACA,UACA,SACA,SACA,WACA,YACA,OACA,QACA,YACA,WACA,UACA,WACA,WACA,YACA,SACA,YACA,UACA,WACA,UACA,SACA,QACA,UACA,OACA,SACA,WACA,UACA,YACA,SACA,QACA,WACA,QACA,WACA,QACA,UACA,YACA,YACA,UACA,UACA,QACA,UACA,UACA,SACA,YACA,YACA,WACA,UACA,SACA,QACA,UACA,UACA,YACA,YACA,YACA,QACA,QACA,QACA,UACA,YACA,QACA,OACA,SACA,YACA,WACA,YACA,QACA,QACA,OACA,SACA,SACA,OACA,SACA,QACA,SACA,WACA,YACA,WACA,YACA,WACA,QACA,SACA,SACA,OACA,OACA,SACA,SACA,UACA,SACA,UACA,UACA,WACA,UACA,SACA,OACA,SACA,QACA,SACA,WACA,OACA,SACA,QACA,YACA,SACA,SACA,SACA,UACA,SACA,UACA,UACA,UACA,QACA,OACA,SACA,SACA,OACA,UACA,SACA,QACA,SACA,SACA,UACA,YACA,WACA,QACA,YACA,WACA,WACA,UACA,WACA,OACA,YACA,WACA,UACA,YACA,YACA,YACA,WACA,SACA,WACA,WACA,WACA,UACA,YACA,SACA,QACA,UACA,SACA,SACA,UACA,SACA,UACA,UACA,WACA,WACA,SACA,SACA,YACA,SACA,SACA,SACA,SACA,YACA,YACA,UACA,SACA,WACA,UACA,WACA,YACA,UACA,YACA,YACA,SACA,YACA,UACA,YACA,YACA,YACA,SACA,SACA,UACA,SACA,WACA,WACA,SACA,YACA,YACA,UACA,WACA,WACA,YACA,WACA,UACA,UACA,UACA,YACA,YACA,UACA,YACA,SACA,YACA,UACA,WACA,WACA,WACA,YACA,YACA,SACA,SACA,UACA,SACA,WACA,WACA,WACA,WACA,YACA,UACA,UACA,WACA,UACA,UACA,YACA,SACA,YACA,YACA,UACA,SACA,WACA,YACA,SACA,SACA,UACA,UACA,SACA,SACA,SACA,WACA,YACA,WACA,UACA,YACA,UACA,UACA,WACA,YACA,QACA,SACA,SACA,YACA,YACA,UACA,YACA,UACA,YACA,SACA,WACA,UACA,YACA,YACA,UACA,WACA,WACA,QACA,QACA,UACA,UACA,YACA,WACA,WACA,WACA,UACA,QACA,UACA,YACA,UACA,SACA,SACA,SACA,WACA,SACA,YACA,OACA,SACA,SACA,UACA,UACA,WACA,SACA,WACA,WACA,YACA,YACA,QACA,UACA,YACA,SACA,UACA,SACA,YACA,UACA,UACA,UACA,WACA,SACA,WACA,YACA,YACA,WACA,YACA,YACA,UACA,UACA,WACA,WACA,YACA,WACA,SACA,SACA,SACA,WACA,UACA,SACA,UACA,YACA,YACA,UACA,SACA,SACA,WACA,YACA,SACA,WACA,WACA,SACA,WACA,UACA,SACA,UACA,QACA,WACA,SACA,YACA,SACA,YACA,YACA,UACA,UACA,WACA,YACA,YACA,YACA,OACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,UACA,UACA,YACA,UACA,QACA,SACA,WACA,UACA,SACA,WACA,WACA,WACA,WACA,SACA,SACA,QACA,UACA,UACA,YACA,YACA,YACA,WACA,WACA,UACA,WACA,YACA,YACA,YACA,SACA,WACA,WACA,WACA,WACA,SACA,WACA,UACA,WACA,SACA,SACA,WACA,YACA,YACA,SACA,WACA,YACA,SACA,YACA,YACA,UACA,UACA,UACA,UACA,WACA,SACA,SACA,WACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YACA,YACA,QACA,SACA,UACA,SACA,UACA,UACA,WACA,QACA,SACA,UACA,UACA,UACA,SACA,UACA,YACA,WACA,WACA,UACA,YACA,YACA,SACA,YACA,SACA,WACA,UACA,YACA,UACA,UACA,WACA,YACA,SACA,SACA,WACA,YACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UACA,QACA,SACA,UACA,OACA,SACA,SACA,WACA,UACA,UACA,WACA,SACA,OACA,SACA,UACA,OACA,UACA,QACA,QACA,UACA,SACA,OACA,OACA,QACA,UACA,OACA,UACA,WACA,WACA,UACA,SACA,WACA,UACA,OACA,SACA,OACA,UACA,UACA,QACA,QACA,YACA,WACA,YACA,YACA,UACA,WACA,SACA,UACA,QACA,UACA,OACA,QACA,WACA,SACA,WACA,SACA,SACA,WACA,YACA,UACA,WACA,YACA,WACA,QACA,QACA,QACA,OACA,OACA,SACA,SACA,OACA,SACA,UACA,UACA,WACA,WACA,WACA,YACA,UACA,YACA,UACA,UACA,QACA,SACA,QACA,SACA,SACA,UACA,SACA,UACA,OACA,SACA,SACA,MACA,SACA,OACA,SACA,WACA,UACA,QACA,YACA,UACA,SACA,UACA,QACA,OACA,SACA,UACA,QACA,OACA,OACA,OACA,MACA,UACA,WACA,YACA,SACA,YACA,SACA,YACA,UACA,WACA,QACA,UACA,SACA,YACA,YACA,SACA,WACA,UACA,OACA,OACA,UACA,QACA,OACA,QACA,OACA,QACA,SACA,WACA,SACA,SACA,QACA,SACA,QACA,OACA,WACA,SACA,UACA,YACA,YACA,OACA,SACA,WACA,WACA,WACA,YACA,SACA,UACA,WACA,UACA,YACA,UACA,SACA,WACA,UACA,UACA,YACA,UACA,YACA,YACA,WACA,QACA,WACA,YACA,OACA,QACA,UACA,YACA,QACA,UACA,YACA,UACA,OACA,YACA,QACA,UACA,WACA,QACA,YACA,YACA,UACA,WACA,WACA,YACA,QACA,QACA,SACA,UACA,QACA,UACA,SACA,QACA,YACA,MACA,UACA,SACA,UACA,WACA,QACA,UACA,WACA,UACA,WACA,OACA,UACA,UACA,WACA,QACA,YACA,SACA,WACA,YACA,SACA,QACA,UACA,YACA,WACA,QACA,YACA,SACA,WACA,YACA,SACA,WACA,YACA,WACA,UACA,UACA,YACA,QACA,QACA,WACA,QACA,QACA,UACA,QACA,SACA,YACA,YACA,SACA,YACA,SACA,UACA,QACA,WACA,SACA,YACA,UACA,WACA,WACA,SACA,WACA,WACA,WACA,YACA,YACA,QACA,UACA,UACA,SACA,WACA,SACA,WACA,YACA,SACA,SACA,UACA,YACA,WACA,WACA,UACA,UACA,WACA,QACA,QACA,WACA,YACA,SACA,UACA,WACA,YACA,YACA,SACA,UACA,SACA,YACA,SACA,UACA,WACA,WACA,QACA,SACA,WACA,WACA,WACA,SACA,WACA,UACA,UACA,UACA,SACA,WACA,YACA,YACA,WACA,OACA,UACA,WACA,WACA,YACA,YACA,UACA,WACA,YACA,SACA,UACA,OACA,SACA,WACA,YACA,YACA,YACA,YACA,WACA,QACA,YACA,SACA,SACA,SACA,WACA,YACA,SACA,SACA,YACA,UACA,WACA,QACA,UACA,UACA,SACA,WACA,UACA,UACA,SACA,WACA,QACA,YACA,YACA,UACA,UACA,WACA,SACA,QACA,SACA,UACA,YACA,UACA,SACA,QACA,QACA,WACA,UACA,YACA,UACA,QACA,QACA,UACA,UACA,QACA,UACA,WACA,QACA,SACA,QACA,UACA,QACA,YACA,UACA,UACA,UACA,YACA,QACA,SACA,OACA,QACA,QACA,QACA,QACA,UACA,SACA,WACA,SACA,SACA,UACA,WACA,YACA,SACA,UACA,SACA,UACA,QACA,UACA,YACA,UACA,QACA,OACA,QACA,YACA,QACA,QACA,WACA,UACA,WACA,WACA,QACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,UACA,YACA,SACA,YACA,SACA,QACA,QACA,UACA,WACA,WACA,SACA,WACA,UACA,UACA,QACA,UACA,YACA,YACA,WACA,QACA,SACA,WACA,WACA,YACA,WACA,SACA,SACA,SACA,SACA,SACA,UACA,WACA,YACA,SACA,QACA,SACA,WACA,UACA,UACA,YACA,OACA,QACA,OACA,MACA,UACA,WACA,UACA,SACA,SACA,SACA,OACA,UACA,WACA,WACA,SACA,SACA,UACA,OACA,YACA,QACA,OACA,OACA,SACA,YACA,SACA,YACA,SACA,WACA,SACA,UACA,YACA,SACA,UACA,SACA,WACA,WACA,UACA,SACA,UACA,MACA,QACA,SACA,SACA,SACA,UACA,WACA,YACA,UACA,UACA,QACA,UACA,WACA,YACA,UACA,UACA,OACA,SACA,SACA,WACA,SACA,UACA,YACA,WACA,WACA,UACA,SACA,SACA,SACA,OACA,QACA,QACA,QACA,SACA,UACA,UACA,WACA,UACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,SACA,YACA,UACA,WACA,WACA,QACA,UACA,WACA,WACA,UACA,QACA,YACA,UACA,OACA,UACA,UACA,WACA,YACA,SACA,QACA,OACA,UACA,QACA,WACA,YACA,UACA,WACA,QACA,UACA,OACA,OACA,QACA,QACA,QACA,SACA,QACA,YACA,SACA,SACA,UACA,QACA,SACA,YACA,UACA,WACA,YACA,WACA,WACA,QACA,WACA,YACA,SACA,OACA,OACA,SACA,WACA,SACA,SACA,UACA,WACA,SACA,OACA,YACA,UACA,SACA,OACA,OACA,QACA,QACA,MACA,QACA,UACA,YACA,UACA,WACA,UACA,QACA,WACA,QACA,YACA,QACA,QACA,QACA,UACA,QACA,OACA,SACA,YACA,YACA,UACA,QACA,UACA,SACA,UACA,SACA,SACA,WACA,YACA,SACA,WACA,QACA,UACA,UACA,OACA,QACA,QACA,SACA,QACA,QACA,SACA,WACA,QACA,QACA,UACA,WACA,SACA,UACA,SACA,QACA,UACA,UACA,QACA,QACA,WACA,YACA,YACA,UACA,YACA,WACA,WACA,YACA,YACA,YACA,WACA,UACA,WACA,WACA,YACA,WACA,QACA,OACA,QACA,UACA,SACA,WACA,QACA,YACA,YACA,WACA,YACA,UACA,WACA,UACA,WACA,SACA,YACA,YACA,WACA,YACA,SACA,QACA,YACA,UACA,WACA,YACA,UACA,WACA,QACA,OACA,SACA,YACA,SACA,SACA,QACA,SACA,QACA,QACA,UACA,SACA,UACA,UACA,WACA,UACA,WACA,QACA,SACA,WACA,YACA,UACA,YACA,WACA,YACA,UACA,WACA,SACA,WACA,WACA,SACA,WACA,WACA,WACA,UACA,WACA,UACA,UACA,WACA,SACA,SACA,YACA,SACA,SACA,UACA,QACA,WACA,SACA,QACA,QACA,QACA,WACA,SACA,SACA,WACA,YACA,UACA,UACA,WACA,SACA,UACA,SACA,QACA,SACA,SACA,SACA,QACA,QACA,QACA,SACA,YACA,YACA,SACA,SACA,SACA,SACA,SACA,OACA,OACA,OACA,UACA,WACA,WACA,QACA,SACA,WACA,SACA,WACA,WACA,YACA,SACA,WACA,YACA,YACA,WACA,UACA,YACA,QACA,WACA,WACA,SACA,SACA,SACA,YACA,UACA,YACA,YACA,SACA,QACA,UACA,QACA,QACA,UACA,WACA,WACA,YACA,UACA,WACA,YACA,YACA,YACA,WACA,WACA,UACA,UACA,QACA,QACA,QACA,SACA,WACA,YACA,SACA,UACA,WACA,WACA,YACA,UACA,QACA,WACA,UACA,YACA,UACA,WACA,SACA,WACA,UACA,WACA,UACA,YACA,UACA,UACA,WACA,QACA,QACA,SACA,YACA,SACA,UACA,SACA,UACA,YACA,UACA,QACA,YACA,WACA,WACA,YACA,QACA,QACA,QACA,YACA,WACA,YACA,YACA,UACA,OACA,SACA,UACA,OACA,SACA,UACA,YACA,YACA,WACA,YACA,UACA,OACA,QACA,UACA,UACA,YACA,SACA,WACA,YACA,QACA,YACA,YACA,UACA,WACA,UACA,WACA,WACA,WACA,SACA,WACA,SACA,UACA,YACA,OACA,SACA,QACA,QACA,QACA,QACA,QACA,YACA,YACA,YACA,UACA,QACA,QACA,SACA,QACA,QACA,YACA,YACA,WACA,UACA,UACA,WACA,YACA,WACA,UACA,YACA,YACA,QACA,QACA,QACA,WACA,UACA,WACA,YACA,WACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,UACA,QACA,QACA,SACA,SACA,SACA,WACA,YACA,QACA,SACA,UACA,SACA,WACA,SACA,SACA,SACA,SACA,WACA,SACA,WACA,SACA,SACA,WACA,YACA,WACA,YACA,SACA,YACA,UACA,WACA,QACA,SACA,QACA,UACA,UACA,UACA,WACA,SACA,QACA,UACA,UACA,SACA,QACA,UACA,WACA,SACA,UACA,YACA,QACA,QACA,UACA,UACA,WACA,QACA,SACA,WACA,SACA,UACA,YACA,UACA,WACA,SACA,QACA,YACA,YACA,YACA,UACA,WACA,WACA,WACA,YACA,UACA,WACA,SACA,WACA,UACA,YACA,WACA,YACA,YACA,WACA,SACA,UACA,WACA,YACA,YACA,YACA,UACA,YACA,YACA,UACA,UACA,WACA,YACA,YACA,UACA,WACA,SACA,WACA,WACA,UACA,SACA,SACA,YACA,UACA,YACA,OACA,UACA,SACA,SACA,OACA,WACA,YACA,UACA,SACA,YACA,WACA,QACA,UACA,QACA,WACA,WACA,WACA,SACA,UACA,UACA,UACA,SACA,OACA,SACA,WACA,YACA,SACA,YACA,YACA,YACA,WACA,WACA,WACA,WACA,YACA,YACA,SACA,WACA,SACA,UACA,YACA,UACA,YACA,SACA,WACA,UACA,YACA,YACA,SACA,UACA,WACA,UACA,UACA,UACA,UACA,WACA,UACA,YACA,YACA,WACA,SACA,WACA,UACA,YACA,WACA,QACA,UACA,UACA,WACA,YACA,YACA,OACA,YACA,UACA,YACA,OACA,WACA,QACA,OACA,QACA,QACA,QACA,QACA,QACA,SACA,UACA,UACA,YACA,YACA,UACA,WACA,WACA,WACA,UACA,WACA,QACA,QACA,SACA,SACA,UACA,UACA,QACA,SACA,QACA,QACA,QACA,WACA,WACA,YACA,WACA,UACA,UACA,WACA,UACA,WACA,WACA,YACA,YACA,QACA,SACA,UACA,UACA,QACA,WACA,SACA,SACA,YACA,UACA,YACA,UACA,SACA,WACA,QACA,OACA,UACA,WACA,UACA,UACA,WACA,UACA,YACA,MACA,UACA,OACA,SACA,SACA,WACA,OACA,QACA,SACA,WACA,QACA,SACA,OACA,SACA,UACA,UACA,UACA,WACA,UACA,WACA,WACA,UACA,UACA,OACA,YACA,SACA,SACA,UACA,QACA,SACA,SACA,WACA,OACA,SACA,QACA,YACA,UACA,QACA,WACA,SACA,WACA,SACA,QACA,SACA,QACA,OACA,OACA,UACA,YACA,OACA,QACA,QACA,WACA,WACA,UACA,UACA,YACA,QACA,SACA,WACA,UACA,UACA,YACA,WACA,WACA,QACA,UACA,QACA,QACA,SACA,UACA,WACA,WACA,YACA,YACA,UACA,WACA,SACA,QACA,QACA,QACA,WACA,SACA,SACA,WACA,YACA,SACA,SACA,SACA,WACA,SACA,YACA,SACA,WACA,YACA,YACA,UACA,WACA,OACA,QACA,WACA,WACA,OACA,YACA,UACA,QACA,QACA,QACA,SACA,WACA,UACA,OACA,QACA,UACA,UACA,YACA,YACA,WACA,UACA,OACA,SACA,OACA,OACA,QACA,SACA,UACA,YACA,UACA,SACA,WACA,SACA,SACA,WACA,SACA,WACA,OACA,UACA,OACA,SACA,SACA,SACA,UACA,YACA,SACA,SACA,SACA,QACA,UACA,QACA,WACA,UACA,QACA,UACA,YACA,UACA,UACA,WACA,YACA,QACA,UACA,SACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,WACA,UACA,YACA,UACA,UACA,WACA,QACA,QACA,SACA,WACA,WACA,OACA,YACA,WACA,YACA,UACA,QACA,SACA,OACA,UACA,UACA,YACA,SACA,SACA,QACA,WACA,SACA,QACA,WACA,YACA,WACA,UACA,YACA,UACA,UACA,WACA,WACA,WACA,UACA,YACA,SACA,WACA,WACA,UACA,QACA,SACA,YACA,WACA,UACA,YACA,UACA,WACA,WACA,UACA,OACA,SACA,WACA,UACA,UACA,UACA,WACA,WACA,SACA,WACA,UACA,UACA,YACA,SACA,WACA,QACA,SACA,QACA,QACA,UACA,QACA,SACA,YACA,UACA,WACA,WACA,YACA,QACA,MACA,QACA,WACA,UACA,UACA,UACA,MACA,UACA,QACA,SACA,WACA,QACA,SACA,UACA,WACA,WACA,YACA,OACA,SACA,UACA,SACA,SACA,OACA,QACA,OACA,MACA,QACA,QACA,QACA,WACA,SACA,YACA,SACA,QACA,QACA,UACA,YACA,OACA,WACA,QACA,QACA,QACA,YACA,UACA,UACA,WACA,SACA,SACA,UACA,SACA,QACA,OACA,QACA,WACA,YACA,QACA,YACA,WACA,SACA,YACA,SACA,YACA,YACA,WACA,UACA,YACA,YACA,YACA,YACA,YACA,UACA,UACA,UACA,YACA,WACA,SACA,SACA,WACA,WACA,YACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,WACA,YACA,WACA,WACA,WACA,UACA,WACA,WACA,YACA,UACA,YACA,YACA,UACA,UACA,SACA,YACA,YACA,UACA,QACA,SACA,UACA,SACA,YACA,WACA,WACA,YACA,WACA,WACA,WACA,SACA,YACA,YACA,WACA,UACA,UACA,UACA,UACA,YACA,UACA,YACA,WACA,QACA,YACA,UACA,YACA,SACA,YACA,YACA,WACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,YACA,YACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,YACA,YACA,YACA,YACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,UACA,SACA,YACA,UACA,YACA,WACA,UACA,WACA,UACA,SACA,WACA,SACA,YACA,UACA,WACA,YACA,WACA,YACA,WACA,UACA,YACA,SACA,YACA,YACA,YACA,SACA,WACA,UACA,YACA,UACA,WACA,WACA,YACA,YACA,UACA,WACA,YACA,SACA,YACA,WACA,WACA,YACA,WACA,WACA,WACA,WACA,SACA,UACA,WACA,YACA,YACA,WACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,YACA,WACA,UACA,YACA,SACA,SACA,UACA,WACA,UACA,UACA,YACA,YACA,QACA,YACA,YACA,YACA,YACA,YACA,QACA,WACA,YACA,SACA,WACA,OACA,YACA,WACA,WACA,UACA,SACA,YACA,YACA,UACA,UACA,UACA,WACA,WACA,YACA,UACA,SACA,YACA,YACA,YACA,YACA,UACA,WACA,WACA,QACA,YACA,WACA,WACA,WACA,YACA,YACA,UACA,WACA,WACA,YACA,UACA,SACA,YACA,WACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,UACA,WACA,UACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,UACA,YACA,YACA,WACA,YACA,SACA,WACA,SACA,YACA,WACA,UACA,WACA,WACA,YACA,WACA,YACA,YACA,YACA,YACA,WACA,SACA,YACA,WACA,UACA,WACA,UACA,YACA,YACA,SACA,SACA,YACA,YACA,YACA,WACA,SACA,YACA,YACA,WACA,SACA,YACA,YACA,UACA,SACA,YACA,SACA,WACA,WACA,SACA,SACA,WACA,UACA,WACA,YACA,YACA,UACA,WACA,WACA,YACA,WACA,WACA,SACA,WACA,YACA,SACA,YACA,YACA,WACA,WACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,WACA,SACA,WACA,WACA,SACA,WACA,WACA,YACA,WACA,WACA,YACA,YACA,WACA,YACA,YACA,WACA,YACA,UACA,YACA,YACA,WACA,WACA,WACA,SACA,UACA,WACA,YACA,UACA,UACA,YACA,WACA,UACA,WACA,WACA,SACA,QACA,QACA,UACA,WACA,WACA,YACA,SACA,YACA,YACA,YACA,YACA,UACA,YACA,SACA,UACA,WACA,UACA,UACA,WACA,SACA,UACA,WACA,WACA,YACA,WACA,YACA,WACA,WACA,YACA,UACA,WACA,YACA,SACA,WACA,YACA,UACA,QACA,YACA,SACA,WACA,YACA,SACA,UACA,YACA,YACA,YACA,SACA,YACA,WACA,UACA,UACA,YACA,YACA,QACA,SACA,UACA,WACA,YACA,SACA,UACA,UACA,WACA,SACA,SACA,SACA,WACA,YACA,SACA,OACA,QACA,UACA,WACA,UACA,SACA,SACA,UACA,SACA,UACA,WACA,UACA,UACA,WACA,WACA,UACA,SACA,UACA,SACA,WACA,SACA,SACA,UACA,QACA,SACA,WACA,UACA,SACA,SACA,YACA,UACA,SACA,QACA,UACA,OACA,YACA,OACA,QACA,QACA,UACA,UACA,UACA,SACA,SACA,QACA,UACA,SACA,SACA,WACA,WACA,WACA,YACA,UACA,YACA,UACA,QACA,SACA,SACA,YACA,QACA,UACA,SACA,SACA,WACA,UACA,YACA,WACA,WACA,SACA,UACA,UACA,UACA,UACA,UACA,UACA,WACA,WACA,SACA,WACA,OACA,QACA,SACA,YACA,SACA,WACA,SACA,WACA,UACA,SACA,YACA,WACA,WACA,YACA,UACA,QACA,QACA,YACA,WACA,UACA,UACA,SACA,QACA,UACA,SACA,YACA,WACA,UACA,OACA,SACA,OACA,UACA,OACA,WACA,YACA,SACA,QACA,OACA,WACA,UACA,QACA,WACA,SACA,UACA,WACA,YACA,WACA,UACA,UACA,YACA,WACA,UACA,UACA,YACA,WACA,SACA,SACA,QACA,QACA,UACA,WACA,QACA,OACA,YACA,UACA,WACA,UACA,UACA,SACA,WACA,UACA,QACA,QACA,WACA,WACA,UACA,WACA,YACA,UACA,YACA,QACA,WACA,WACA,UACA,WACA,QACA,UACA,OACA,WACA,SACA,UACA,UACA,QACA,SACA,UACA,QACA,QACA,SACA,YACA,MACA,QACA,SACA,QACA,QACA,QACA,SACA,QACA,OACA,SACA,OACA,UACA,SACA,SACA,QACA,OACA,UACA,SACA,UACA,SACA,WACA,YACA,YACA,WACA,YACA,UACA,SACA,SACA,YACA,UACA,UACA,WACA,YACA,UACA,OACA,UACA,QACA,QACA,WACA,SACA,OACA,WACA,SACA,OACA,QACA,QACA,WACA,QACA,YACA,SACA,QACA,WACA,UACA,QACA,WACA,UACA,WACA,SACA,MACA,OACA,SACA,QACA,SACA,QACA,QACA,YACA,UACA,OACA,OACA,YACA,WACA,UACA,SACA,WACA,WACA,WACA,WACA,SACA,WACA,SACA,YACA,UACA,SACA,YACA,OACA,OACA,QACA,UACA,OACA,OACA,UACA,SACA,WACA,SACA,OACA,QACA,WACA,SACA,OACA,SACA,OACA,OACA,WACA,QACA,UACA,SACA,SACA,WACA,SACA,MACA,OACA,YACA,YACA,YACA,YACA,YACA,UACA,OACA,OACA,SACA,OACA,QACA,OACA,OACA,UACA,UACA,YACA,QACA,YACA,YACA,QACA,QACA,QACA,MACA,UACA,QACA,SACA,WACA,UACA,WACA,SACA,UACA,UACA,UACA,UACA,QACA,UACA,UACA,YACA,UACA,WACA,UACA,YACA,UACA,OACA,QACA,QACA,MACA,UACA,UACA,OACA,OACA,OACA,WACA,WACA,SACA,WACA,QA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","file":"app/main.3c452efe559e1a8340d7.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([724,2]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export abstract class I18nService {\n locale: string;\n supportedTranslationLocales: string[];\n translationLocale: string;\n collator: Intl.Collator;\n localeNames: Map;\n t: (id: string, p1?: string, p2?: string, p3?: string) => string;\n translate: (id: string, p1?: string, p2?: string, p3?: string) => string;\n}\n","import { PolicyType } from '../enums/policyType';\n\nimport { EnvironmentUrls } from '../models/domain/environmentUrls';\n\nimport { BitPayInvoiceRequest } from '../models/request/bitPayInvoiceRequest';\nimport { CipherBulkDeleteRequest } from '../models/request/cipherBulkDeleteRequest';\nimport { CipherBulkMoveRequest } from '../models/request/cipherBulkMoveRequest';\nimport { CipherBulkRestoreRequest } from '../models/request/cipherBulkRestoreRequest';\nimport { CipherBulkShareRequest } from '../models/request/cipherBulkShareRequest';\nimport { CipherCollectionsRequest } from '../models/request/cipherCollectionsRequest';\nimport { CipherCreateRequest } from '../models/request/cipherCreateRequest';\nimport { CipherRequest } from '../models/request/cipherRequest';\nimport { CipherShareRequest } from '../models/request/cipherShareRequest';\nimport { CollectionRequest } from '../models/request/collectionRequest';\nimport { DeleteRecoverRequest } from '../models/request/deleteRecoverRequest';\nimport { EmailRequest } from '../models/request/emailRequest';\nimport { EmailTokenRequest } from '../models/request/emailTokenRequest';\nimport { EventRequest } from '../models/request/eventRequest';\nimport { FolderRequest } from '../models/request/folderRequest';\nimport { GroupRequest } from '../models/request/groupRequest';\nimport { IapCheckRequest } from '../models/request/iapCheckRequest';\nimport { ImportCiphersRequest } from '../models/request/importCiphersRequest';\nimport { ImportDirectoryRequest } from '../models/request/importDirectoryRequest';\nimport { ImportOrganizationCiphersRequest } from '../models/request/importOrganizationCiphersRequest';\nimport { KdfRequest } from '../models/request/kdfRequest';\nimport { KeysRequest } from '../models/request/keysRequest';\nimport { OrganizationCreateRequest } from '../models/request/organizationCreateRequest';\nimport { OrganizationUpdateRequest } from '../models/request/organizationUpdateRequest';\nimport { OrganizationUpgradeRequest } from '../models/request/organizationUpgradeRequest';\nimport { OrganizationUserAcceptRequest } from '../models/request/organizationUserAcceptRequest';\nimport { OrganizationUserConfirmRequest } from '../models/request/organizationUserConfirmRequest';\nimport { OrganizationUserInviteRequest } from '../models/request/organizationUserInviteRequest';\nimport { OrganizationUserUpdateGroupsRequest } from '../models/request/organizationUserUpdateGroupsRequest';\nimport { OrganizationUserUpdateRequest } from '../models/request/organizationUserUpdateRequest';\nimport { PasswordHintRequest } from '../models/request/passwordHintRequest';\nimport { PasswordRequest } from '../models/request/passwordRequest';\nimport { PasswordVerificationRequest } from '../models/request/passwordVerificationRequest';\nimport { PaymentRequest } from '../models/request/paymentRequest';\nimport { PolicyRequest } from '../models/request/policyRequest';\nimport { PreloginRequest } from '../models/request/preloginRequest';\nimport { RegisterRequest } from '../models/request/registerRequest';\nimport { SeatRequest } from '../models/request/seatRequest';\nimport { SelectionReadOnlyRequest } from '../models/request/selectionReadOnlyRequest';\nimport { StorageRequest } from '../models/request/storageRequest';\nimport { TokenRequest } from '../models/request/tokenRequest';\nimport { TwoFactorEmailRequest } from '../models/request/twoFactorEmailRequest';\nimport { TwoFactorProviderRequest } from '../models/request/twoFactorProviderRequest';\nimport { TwoFactorRecoveryRequest } from '../models/request/twoFactorRecoveryRequest';\nimport { UpdateDomainsRequest } from '../models/request/updateDomainsRequest';\nimport { UpdateKeyRequest } from '../models/request/updateKeyRequest';\nimport { UpdateProfileRequest } from '../models/request/updateProfileRequest';\nimport { UpdateTwoFactorAuthenticatorRequest } from '../models/request/updateTwoFactorAuthenticatorRequest';\nimport { UpdateTwoFactorDuoRequest } from '../models/request/updateTwoFactorDuoRequest';\nimport { UpdateTwoFactorEmailRequest } from '../models/request/updateTwoFactorEmailRequest';\nimport { UpdateTwoFactorU2fDeleteRequest } from '../models/request/updateTwoFactorU2fDeleteRequest';\nimport { UpdateTwoFactorU2fRequest } from '../models/request/updateTwoFactorU2fRequest';\nimport { UpdateTwoFactorYubioOtpRequest } from '../models/request/updateTwoFactorYubioOtpRequest';\nimport { VerifyBankRequest } from '../models/request/verifyBankRequest';\nimport { VerifyDeleteRecoverRequest } from '../models/request/verifyDeleteRecoverRequest';\nimport { VerifyEmailRequest } from '../models/request/verifyEmailRequest';\n\nimport { ApiKeyResponse } from '../models/response/apiKeyResponse';\nimport { BillingResponse } from '../models/response/billingResponse';\nimport { BreachAccountResponse } from '../models/response/breachAccountResponse';\nimport { CipherResponse } from '../models/response/cipherResponse';\nimport {\n CollectionGroupDetailsResponse,\n CollectionResponse,\n} from '../models/response/collectionResponse';\nimport { DomainsResponse } from '../models/response/domainsResponse';\nimport { EventResponse } from '../models/response/eventResponse';\nimport { FolderResponse } from '../models/response/folderResponse';\nimport {\n GroupDetailsResponse,\n GroupResponse,\n} from '../models/response/groupResponse';\nimport { IdentityTokenResponse } from '../models/response/identityTokenResponse';\nimport { IdentityTwoFactorResponse } from '../models/response/identityTwoFactorResponse';\nimport { ListResponse } from '../models/response/listResponse';\nimport { OrganizationResponse } from '../models/response/organizationResponse';\nimport { OrganizationSubscriptionResponse } from '../models/response/organizationSubscriptionResponse';\nimport {\n OrganizationUserDetailsResponse,\n OrganizationUserUserDetailsResponse,\n} from '../models/response/organizationUserResponse';\nimport { PaymentResponse } from '../models/response/paymentResponse';\nimport { PolicyResponse } from '../models/response/policyResponse';\nimport { PreloginResponse } from '../models/response/preloginResponse';\nimport { ProfileResponse } from '../models/response/profileResponse';\nimport { SelectionReadOnlyResponse } from '../models/response/selectionReadOnlyResponse';\nimport { SubscriptionResponse } from '../models/response/subscriptionResponse';\nimport { SyncResponse } from '../models/response/syncResponse';\nimport { TwoFactorAuthenticatorResponse } from '../models/response/twoFactorAuthenticatorResponse';\nimport { TwoFactorDuoResponse } from '../models/response/twoFactorDuoResponse';\nimport { TwoFactorEmailResponse } from '../models/response/twoFactorEmailResponse';\nimport { TwoFactorProviderResponse } from '../models/response/twoFactorProviderResponse';\nimport { TwoFactorRecoverResponse } from '../models/response/twoFactorRescoverResponse';\nimport {\n ChallengeResponse,\n TwoFactorU2fResponse,\n} from '../models/response/twoFactorU2fResponse';\nimport { TwoFactorYubiKeyResponse } from '../models/response/twoFactorYubiKeyResponse';\nimport { UserKeyResponse } from '../models/response/userKeyResponse';\n\nexport abstract class ApiService {\n urlsSet: boolean;\n apiBaseUrl: string;\n identityBaseUrl: string;\n eventsBaseUrl: string;\n\n setUrls: (urls: EnvironmentUrls) => void;\n postIdentityToken: (request: TokenRequest) => Promise;\n refreshIdentityToken: () => Promise;\n\n getProfile: () => Promise;\n getUserBilling: () => Promise;\n getUserSubscription: () => Promise;\n putProfile: (request: UpdateProfileRequest) => Promise;\n postPrelogin: (request: PreloginRequest) => Promise;\n postEmailToken: (request: EmailTokenRequest) => Promise;\n postEmail: (request: EmailRequest) => Promise;\n postPassword: (request: PasswordRequest) => Promise;\n postSecurityStamp: (request: PasswordVerificationRequest) => Promise;\n deleteAccount: (request: PasswordVerificationRequest) => Promise;\n getAccountRevisionDate: () => Promise;\n postPasswordHint: (request: PasswordHintRequest) => Promise;\n postRegister: (request: RegisterRequest) => Promise;\n postPremium: (data: FormData) => Promise;\n postIapCheck: (request: IapCheckRequest) => Promise;\n postReinstatePremium: () => Promise;\n postCancelPremium: () => Promise;\n postAccountStorage: (request: StorageRequest) => Promise;\n postAccountPayment: (request: PaymentRequest) => Promise;\n postAccountLicense: (data: FormData) => Promise;\n postAccountKey: (request: UpdateKeyRequest) => Promise;\n postAccountKeys: (request: KeysRequest) => Promise;\n postAccountVerifyEmail: () => Promise;\n postAccountVerifyEmailToken: (request: VerifyEmailRequest) => Promise;\n postAccountRecoverDelete: (request: DeleteRecoverRequest) => Promise;\n postAccountRecoverDeleteToken: (request: VerifyDeleteRecoverRequest) => Promise;\n postAccountKdf: (request: KdfRequest) => Promise;\n\n getFolder: (id: string) => Promise;\n postFolder: (request: FolderRequest) => Promise;\n putFolder: (id: string, request: FolderRequest) => Promise;\n deleteFolder: (id: string) => Promise;\n\n getCipher: (id: string) => Promise;\n getCipherAdmin: (id: string) => Promise;\n getCiphersOrganization: (organizationId: string) => Promise>;\n postCipher: (request: CipherRequest) => Promise;\n postCipherCreate: (request: CipherCreateRequest) => Promise;\n postCipherAdmin: (request: CipherCreateRequest) => Promise;\n putCipher: (id: string, request: CipherRequest) => Promise;\n putCipherAdmin: (id: string, request: CipherRequest) => Promise;\n deleteCipher: (id: string) => Promise;\n deleteCipherAdmin: (id: string) => Promise;\n deleteManyCiphers: (request: CipherBulkDeleteRequest) => Promise;\n putMoveCiphers: (request: CipherBulkMoveRequest) => Promise;\n putShareCipher: (id: string, request: CipherShareRequest) => Promise;\n putShareCiphers: (request: CipherBulkShareRequest) => Promise;\n putCipherCollections: (id: string, request: CipherCollectionsRequest) => Promise;\n putCipherCollectionsAdmin: (id: string, request: CipherCollectionsRequest) => Promise;\n postPurgeCiphers: (request: PasswordVerificationRequest, organizationId?: string) => Promise;\n postImportCiphers: (request: ImportCiphersRequest) => Promise;\n postImportOrganizationCiphers: (organizationId: string, request: ImportOrganizationCiphersRequest) => Promise;\n putDeleteCipher: (id: string) => Promise;\n putDeleteCipherAdmin: (id: string) => Promise;\n putDeleteManyCiphers: (request: CipherBulkDeleteRequest) => Promise;\n putRestoreCipher: (id: string) => Promise;\n putRestoreCipherAdmin: (id: string) => Promise;\n putRestoreManyCiphers: (request: CipherBulkRestoreRequest) => Promise;\n\n postCipherAttachment: (id: string, data: FormData) => Promise;\n postCipherAttachmentAdmin: (id: string, data: FormData) => Promise;\n deleteCipherAttachment: (id: string, attachmentId: string) => Promise;\n deleteCipherAttachmentAdmin: (id: string, attachmentId: string) => Promise;\n postShareCipherAttachment: (id: string, attachmentId: string, data: FormData,\n organizationId: string) => Promise;\n\n getCollectionDetails: (organizationId: string, id: string) => Promise;\n getUserCollections: () => Promise>;\n getCollections: (organizationId: string) => Promise>;\n getCollectionUsers: (organizationId: string, id: string) => Promise;\n postCollection: (organizationId: string, request: CollectionRequest) => Promise;\n putCollectionUsers: (organizationId: string, id: string, request: SelectionReadOnlyRequest[]) => Promise;\n putCollection: (organizationId: string, id: string, request: CollectionRequest) => Promise;\n deleteCollection: (organizationId: string, id: string) => Promise;\n deleteCollectionUser: (organizationId: string, id: string, organizationUserId: string) => Promise;\n\n getGroupDetails: (organizationId: string, id: string) => Promise;\n getGroups: (organizationId: string) => Promise>;\n getGroupUsers: (organizationId: string, id: string) => Promise;\n postGroup: (organizationId: string, request: GroupRequest) => Promise;\n putGroup: (organizationId: string, id: string, request: GroupRequest) => Promise;\n putGroupUsers: (organizationId: string, id: string, request: string[]) => Promise;\n deleteGroup: (organizationId: string, id: string) => Promise;\n deleteGroupUser: (organizationId: string, id: string, organizationUserId: string) => Promise;\n\n getPolicy: (organizationId: string, type: PolicyType) => Promise;\n getPolicies: (organizationId: string) => Promise>;\n getPoliciesByToken: (organizationId: string, token: string, email: string, organizationUserId: string) =>\n Promise>;\n putPolicy: (organizationId: string, type: PolicyType, request: PolicyRequest) => Promise;\n\n getOrganizationUser: (organizationId: string, id: string) => Promise;\n getOrganizationUserGroups: (organizationId: string, id: string) => Promise;\n getOrganizationUsers: (organizationId: string) => Promise>;\n postOrganizationUserInvite: (organizationId: string, request: OrganizationUserInviteRequest) => Promise;\n postOrganizationUserReinvite: (organizationId: string, id: string) => Promise;\n postOrganizationUserAccept: (organizationId: string, id: string,\n request: OrganizationUserAcceptRequest) => Promise;\n postOrganizationUserConfirm: (organizationId: string, id: string,\n request: OrganizationUserConfirmRequest) => Promise;\n putOrganizationUser: (organizationId: string, id: string, request: OrganizationUserUpdateRequest) => Promise;\n putOrganizationUserGroups: (organizationId: string, id: string,\n request: OrganizationUserUpdateGroupsRequest) => Promise;\n deleteOrganizationUser: (organizationId: string, id: string) => Promise;\n\n getSync: () => Promise;\n postImportDirectory: (organizationId: string, request: ImportDirectoryRequest) => Promise;\n\n getSettingsDomains: () => Promise;\n putSettingsDomains: (request: UpdateDomainsRequest) => Promise;\n\n getTwoFactorProviders: () => Promise>;\n getTwoFactorOrganizationProviders: (organizationId: string) => Promise>;\n getTwoFactorAuthenticator: (request: PasswordVerificationRequest) => Promise;\n getTwoFactorEmail: (request: PasswordVerificationRequest) => Promise;\n getTwoFactorDuo: (request: PasswordVerificationRequest) => Promise;\n getTwoFactorOrganizationDuo: (organizationId: string,\n request: PasswordVerificationRequest) => Promise;\n getTwoFactorYubiKey: (request: PasswordVerificationRequest) => Promise;\n getTwoFactorU2f: (request: PasswordVerificationRequest) => Promise;\n getTwoFactorU2fChallenge: (request: PasswordVerificationRequest) => Promise;\n getTwoFactorRecover: (request: PasswordVerificationRequest) => Promise;\n putTwoFactorAuthenticator: (\n request: UpdateTwoFactorAuthenticatorRequest) => Promise;\n putTwoFactorEmail: (request: UpdateTwoFactorEmailRequest) => Promise;\n putTwoFactorDuo: (request: UpdateTwoFactorDuoRequest) => Promise;\n putTwoFactorOrganizationDuo: (organizationId: string,\n request: UpdateTwoFactorDuoRequest) => Promise;\n putTwoFactorYubiKey: (request: UpdateTwoFactorYubioOtpRequest) => Promise;\n putTwoFactorU2f: (request: UpdateTwoFactorU2fRequest) => Promise;\n deleteTwoFactorU2f: (request: UpdateTwoFactorU2fDeleteRequest) => Promise;\n putTwoFactorDisable: (request: TwoFactorProviderRequest) => Promise;\n putTwoFactorOrganizationDisable: (organizationId: string,\n request: TwoFactorProviderRequest) => Promise;\n postTwoFactorRecover: (request: TwoFactorRecoveryRequest) => Promise;\n postTwoFactorEmailSetup: (request: TwoFactorEmailRequest) => Promise;\n postTwoFactorEmail: (request: TwoFactorEmailRequest) => Promise;\n\n getOrganization: (id: string) => Promise;\n getOrganizationBilling: (id: string) => Promise;\n getOrganizationSubscription: (id: string) => Promise;\n getOrganizationLicense: (id: string, installationId: string) => Promise;\n postOrganization: (request: OrganizationCreateRequest) => Promise;\n putOrganization: (id: string, request: OrganizationUpdateRequest) => Promise;\n postLeaveOrganization: (id: string) => Promise;\n postOrganizationLicense: (data: FormData) => Promise;\n postOrganizationLicenseUpdate: (id: string, data: FormData) => Promise;\n postOrganizationApiKey: (id: string, request: PasswordVerificationRequest) => Promise;\n postOrganizationRotateApiKey: (id: string, request: PasswordVerificationRequest) => Promise;\n postOrganizationUpgrade: (id: string, request: OrganizationUpgradeRequest) => Promise;\n postOrganizationSeat: (id: string, request: SeatRequest) => Promise;\n postOrganizationStorage: (id: string, request: StorageRequest) => Promise;\n postOrganizationPayment: (id: string, request: PaymentRequest) => Promise;\n postOrganizationVerifyBank: (id: string, request: VerifyBankRequest) => Promise;\n postOrganizationCancel: (id: string) => Promise;\n postOrganizationReinstate: (id: string) => Promise;\n deleteOrganization: (id: string, request: PasswordVerificationRequest) => Promise;\n\n getEvents: (start: string, end: string, token: string) => Promise>;\n getEventsCipher: (id: string, start: string, end: string, token: string) => Promise>;\n getEventsOrganization: (id: string, start: string, end: string,\n token: string) => Promise>;\n getEventsOrganizationUser: (organizationId: string, id: string,\n start: string, end: string, token: string) => Promise>;\n postEventsCollect: (request: EventRequest[]) => Promise;\n\n getUserPublicKey: (id: string) => Promise;\n\n getHibpBreach: (username: string) => Promise;\n\n postBitPayInvoice: (request: BitPayInvoiceRequest) => Promise;\n postSetupPayment: () => Promise;\n\n getActiveBearerToken: () => Promise;\n fetch: (request: Request) => Promise;\n nativeFetch: (request: Request) => Promise;\n}\n","import { DeviceType } from '../enums/deviceType';\n\nexport abstract class PlatformUtilsService {\n identityClientId: string;\n getDevice: () => DeviceType;\n getDeviceString: () => string;\n isFirefox: () => boolean;\n isChrome: () => boolean;\n isEdge: () => boolean;\n isOpera: () => boolean;\n isVivaldi: () => boolean;\n isSafari: () => boolean;\n isIE: () => boolean;\n isMacAppStore: () => boolean;\n analyticsId: () => string;\n isViewOpen: () => Promise;\n /**\n * @deprecated This only ever returns null. Pull from your platform's storage using ConstantsService.vaultTimeoutKey\n */\n lockTimeout: () => number;\n launchUri: (uri: string, options?: any) => void;\n saveFile: (win: Window, blobData: any, blobOptions: any, fileName: string) => void;\n getApplicationVersion: () => string;\n supportsU2f: (win: Window) => boolean;\n supportsDuo: () => boolean;\n showToast: (type: 'error' | 'success' | 'warning' | 'info', title: string, text: string | string[],\n options?: any) => void;\n showDialog: (text: string, title?: string, confirmText?: string, cancelText?: string,\n type?: string) => Promise;\n eventTrack: (action: string, label?: string, options?: any) => void;\n isDev: () => boolean;\n isSelfHost: () => boolean;\n copyToClipboard: (text: string, options?: any) => void;\n readFromClipboard: (options?: any) => Promise;\n}\n","import {\n Pipe,\n PipeTransform,\n} from '@angular/core';\n\nimport { I18nService } from '../../abstractions/i18n.service';\n\n@Pipe({\n name: 'i18n',\n})\nexport class I18nPipe implements PipeTransform {\n constructor(private i18nService: I18nService) { }\n\n transform(id: string, p1?: string, p2?: string, p3?: string): string {\n return this.i18nService.t(id, p1, p2, p3);\n }\n}\n","import { OrganizationData } from '../models/data/organizationData';\nimport { Organization } from '../models/domain/organization';\n\nimport { KdfType } from '../enums/kdfType';\n\nexport abstract class UserService {\n setInformation: (userId: string, email: string, kdf: KdfType, kdfIterations: number) => Promise;\n setSecurityStamp: (stamp: string) => Promise;\n getUserId: () => Promise;\n getEmail: () => Promise;\n getSecurityStamp: () => Promise;\n getKdf: () => Promise;\n getKdfIterations: () => Promise;\n clear: () => Promise;\n isAuthenticated: () => Promise;\n canAccessPremium: () => Promise;\n getOrganization: (id: string) => Promise;\n getAllOrganizations: () => Promise;\n replaceOrganizations: (organizations: { [id: string]: OrganizationData; }) => Promise;\n clearOrganizations: (userId: string) => Promise;\n}\n","import { Injectable } from '@angular/core';\n\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\n\nimport { ErrorResponse } from '../../models/response/errorResponse';\n\n@Injectable()\nexport class ValidationService {\n constructor(private i18nService: I18nService, private platformUtilsService: PlatformUtilsService) { }\n\n showError(data: any): string[] {\n const defaultErrorMessage = this.i18nService.t('unexpectedError');\n let errors: string[] = [];\n\n if (data != null && typeof data === 'string') {\n errors.push(data);\n } else if (data == null || typeof data !== 'object') {\n errors.push(defaultErrorMessage);\n } else if (data.validationErrors != null) {\n errors = errors.concat((data as ErrorResponse).getAllMessages());\n } else {\n errors.push(data.message ? data.message : defaultErrorMessage);\n }\n\n if (errors.length === 1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'), errors[0]);\n } else if (errors.length > 1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'), errors, {\n timeout: 5000 * errors.length,\n });\n }\n\n return errors;\n }\n}\n","import {\n Directive,\n ElementRef,\n Input,\n OnChanges,\n} from '@angular/core';\n\nimport { ValidationService } from '../services/validation.service';\n\n@Directive({\n selector: '[appApiAction]',\n})\nexport class ApiActionDirective implements OnChanges {\n @Input() appApiAction: Promise;\n\n constructor(private el: ElementRef, private validationService: ValidationService) { }\n\n ngOnChanges(changes: any) {\n if (this.appApiAction == null || this.appApiAction.then == null) {\n return;\n }\n\n this.el.nativeElement.loading = true;\n\n this.appApiAction.then((response: any) => {\n this.el.nativeElement.loading = false;\n }, (e: any) => {\n this.el.nativeElement.loading = false;\n this.validationService.showError(e);\n });\n }\n}\n","import {\n Directive,\n ElementRef,\n Input,\n Renderer2,\n} from '@angular/core';\n\n@Directive({\n selector: '[appA11yTitle]',\n})\nexport class A11yTitleDirective {\n @Input() set appA11yTitle(title: string) {\n this.title = title;\n }\n\n private title: string;\n\n constructor(private el: ElementRef, private renderer: Renderer2) { }\n\n ngOnInit() {\n if (!this.el.nativeElement.hasAttribute('title')) {\n this.renderer.setAttribute(this.el.nativeElement, 'title', this.title);\n }\n if (!this.el.nativeElement.hasAttribute('aria-label')) {\n this.renderer.setAttribute(this.el.nativeElement, 'aria-label', this.title);\n }\n }\n}\n","export abstract class MessagingService {\n send: (subscriber: string, arg?: any) => void;\n}\n","import { CipherString } from '../models/domain/cipherString';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { ProfileOrganizationResponse } from '../models/response/profileOrganizationResponse';\n\nimport { KdfType } from '../enums/kdfType';\n\nexport abstract class CryptoService {\n setKey: (key: SymmetricCryptoKey) => Promise;\n setKeyHash: (keyHash: string) => Promise<{}>;\n setEncKey: (encKey: string) => Promise<{}>;\n setEncPrivateKey: (encPrivateKey: string) => Promise<{}>;\n setOrgKeys: (orgs: ProfileOrganizationResponse[]) => Promise<{}>;\n getKey: () => Promise;\n getKeyHash: () => Promise;\n getEncKey: (key?: SymmetricCryptoKey) => Promise;\n getPublicKey: () => Promise;\n getPrivateKey: () => Promise;\n getFingerprint: (userId: string, publicKey?: ArrayBuffer) => Promise;\n getOrgKeys: () => Promise>;\n getOrgKey: (orgId: string) => Promise;\n hasKey: () => Promise;\n hasEncKey: () => Promise;\n clearKey: () => Promise;\n clearKeyHash: () => Promise;\n clearEncKey: (memoryOnly?: boolean) => Promise;\n clearKeyPair: (memoryOnly?: boolean) => Promise;\n clearOrgKeys: (memoryOnly?: boolean) => Promise;\n clearPinProtectedKey: () => Promise;\n clearKeys: () => Promise;\n toggleKey: () => Promise;\n makeKey: (password: string, salt: string, kdf: KdfType, kdfIterations: number) => Promise;\n makeKeyFromPin: (pin: string, salt: string, kdf: KdfType, kdfIterations: number,\n protectedKeyCs?: CipherString) => Promise;\n makeShareKey: () => Promise<[CipherString, SymmetricCryptoKey]>;\n makeKeyPair: (key?: SymmetricCryptoKey) => Promise<[string, CipherString]>;\n makePinKey: (pin: string, salt: string, kdf: KdfType, kdfIterations: number) => Promise;\n hashPassword: (password: string, key: SymmetricCryptoKey) => Promise;\n makeEncKey: (key: SymmetricCryptoKey) => Promise<[SymmetricCryptoKey, CipherString]>;\n remakeEncKey: (key: SymmetricCryptoKey) => Promise<[SymmetricCryptoKey, CipherString]>;\n encrypt: (plainValue: string | ArrayBuffer, key?: SymmetricCryptoKey) => Promise;\n encryptToBytes: (plainValue: ArrayBuffer, key?: SymmetricCryptoKey) => Promise;\n rsaEncrypt: (data: ArrayBuffer, publicKey?: ArrayBuffer) => Promise;\n decryptToBytes: (cipherString: CipherString, key?: SymmetricCryptoKey) => Promise;\n decryptToUtf8: (cipherString: CipherString, key?: SymmetricCryptoKey) => Promise;\n decryptFromBytes: (encBuf: ArrayBuffer, key: SymmetricCryptoKey) => Promise;\n randomNumber: (min: number, max: number) => Promise;\n}\n","import { CipherType } from '../enums/cipherType';\n\nimport { CipherData } from '../models/data/cipherData';\n\nimport { Cipher } from '../models/domain/cipher';\nimport { Field } from '../models/domain/field';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { AttachmentView } from '../models/view/attachmentView';\nimport { CipherView } from '../models/view/cipherView';\nimport { FieldView } from '../models/view/fieldView';\n\nexport abstract class CipherService {\n decryptedCipherCache: CipherView[];\n\n clearCache: () => void;\n encrypt: (model: CipherView, key?: SymmetricCryptoKey, originalCipher?: Cipher) => Promise;\n encryptFields: (fieldsModel: FieldView[], key: SymmetricCryptoKey) => Promise;\n encryptField: (fieldModel: FieldView, key: SymmetricCryptoKey) => Promise;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n getAllDecryptedForGrouping: (groupingId: string, folder?: boolean) => Promise;\n getAllDecryptedForUrl: (url: string, includeOtherTypes?: CipherType[]) => Promise;\n getAllFromApiForOrganization: (organizationId: string) => Promise;\n getLastUsedForUrl: (url: string) => Promise;\n updateLastUsedDate: (id: string) => Promise;\n saveNeverDomain: (domain: string) => Promise;\n saveWithServer: (cipher: Cipher) => Promise;\n shareWithServer: (cipher: CipherView, organizationId: string, collectionIds: string[]) => Promise;\n shareManyWithServer: (ciphers: CipherView[], organizationId: string, collectionIds: string[]) => Promise;\n saveAttachmentWithServer: (cipher: Cipher, unencryptedFile: any, admin?: boolean) => Promise;\n saveAttachmentRawWithServer: (cipher: Cipher, filename: string, data: ArrayBuffer,\n admin?: boolean) => Promise;\n saveCollectionsWithServer: (cipher: Cipher) => Promise;\n upsert: (cipher: CipherData | CipherData[]) => Promise;\n replace: (ciphers: { [id: string]: CipherData; }) => Promise;\n clear: (userId: string) => Promise;\n moveManyWithServer: (ids: string[], folderId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n deleteWithServer: (id: string) => Promise;\n deleteManyWithServer: (ids: string[]) => Promise;\n deleteAttachment: (id: string, attachmentId: string) => Promise;\n deleteAttachmentWithServer: (id: string, attachmentId: string) => Promise;\n sortCiphersByLastUsed: (a: any, b: any) => number;\n sortCiphersByLastUsedThenName: (a: any, b: any) => number;\n getLocaleSortingFunction: () => (a: CipherView, b: CipherView) => number;\n softDelete: (id: string | string[]) => Promise;\n softDeleteWithServer: (id: string) => Promise;\n softDeleteManyWithServer: (ids: string[]) => Promise;\n restore: (id: string | string[]) => Promise;\n restoreWithServer: (id: string) => Promise;\n restoreManyWithServer: (ids: string[]) => Promise;\n}\n","import * as papa from 'papaparse';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherView } from '../models/view/cipherView';\nimport { CollectionView } from '../models/view/collectionView';\nimport { LoginUriView } from '../models/view/loginUriView';\n\nimport { Utils } from '../misc/utils';\n\nimport { FieldView } from '../models/view/fieldView';\nimport { FolderView } from '../models/view/folderView';\nimport { LoginView } from '../models/view/loginView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { FieldType } from '../enums/fieldType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nexport abstract class BaseImporter {\n organization = false;\n\n protected newLineRegex = /(?:\\r\\n|\\r|\\n)/;\n\n protected passwordFieldNames = [\n 'password', 'pass word', 'passphrase', 'pass phrase',\n 'pass', 'code', 'code word', 'codeword',\n 'secret', 'secret word', 'personpwd',\n 'key', 'keyword', 'key word', 'keyphrase', 'key phrase',\n 'form_pw', 'wppassword', 'pin', 'pwd', 'pw', 'pword', 'passwd',\n 'p', 'serial', 'serial#', 'license key', 'reg #',\n\n // Non-English names\n 'passwort',\n ];\n\n protected usernameFieldNames = [\n 'user', 'name', 'user name', 'username', 'login name',\n 'email', 'e-mail', 'id', 'userid', 'user id',\n 'login', 'form_loginname', 'wpname', 'mail',\n 'loginid', 'login id', 'log', 'personlogin',\n 'first name', 'last name', 'card#', 'account #',\n 'member', 'member #',\n\n // Non-English names\n 'nom', 'benutzername',\n ];\n\n protected notesFieldNames = [\n 'note', 'notes', 'comment', 'comments', 'memo',\n 'description', 'free form', 'freeform',\n 'free text', 'freetext', 'free',\n\n // Non-English names\n 'kommentar',\n ];\n\n protected uriFieldNames: string[] = [\n 'url', 'hyper link', 'hyperlink', 'link',\n 'host', 'hostname', 'host name', 'server', 'address',\n 'hyper ref', 'href', 'web', 'website', 'web site', 'site',\n 'web-site', 'uri',\n\n // Non-English names\n 'ort', 'adresse',\n ];\n\n protected parseXml(data: string): Document {\n const parser = new DOMParser();\n const doc = parser.parseFromString(data, 'application/xml');\n return doc != null && doc.querySelector('parsererror') == null ? doc : null;\n }\n\n protected parseCsv(data: string, header: boolean): any[] {\n data = this.splitNewLine(data).join('\\n').trim();\n const result = papa.parse(data, {\n header: header,\n encoding: 'UTF-8',\n skipEmptyLines: false,\n });\n if (result.errors != null && result.errors.length > 0) {\n result.errors.forEach((e) => {\n if (e.row != null) {\n // tslint:disable-next-line\n console.warn('Error parsing row ' + e.row + ': ' + e.message);\n }\n });\n }\n return result.data && result.data.length > 0 ? result.data : null;\n }\n\n protected parseSingleRowCsv(rowData: string) {\n if (this.isNullOrWhitespace(rowData)) {\n return null;\n }\n const parsedRow = this.parseCsv(rowData, false);\n if (parsedRow != null && parsedRow.length > 0 && parsedRow[0].length > 0) {\n return parsedRow[0];\n }\n return null;\n }\n\n protected makeUriArray(uri: string | string[]): LoginUriView[] {\n if (uri == null) {\n return null;\n }\n\n if (typeof uri === 'string') {\n const loginUri = new LoginUriView();\n loginUri.uri = this.fixUri(uri);\n if (this.isNullOrWhitespace(loginUri.uri)) {\n return null;\n }\n loginUri.match = null;\n return [loginUri];\n }\n\n if (uri.length > 0) {\n const returnArr: LoginUriView[] = [];\n uri.forEach((u) => {\n const loginUri = new LoginUriView();\n loginUri.uri = this.fixUri(u);\n if (this.isNullOrWhitespace(loginUri.uri)) {\n return;\n }\n loginUri.match = null;\n returnArr.push(loginUri);\n });\n return returnArr.length === 0 ? null : returnArr;\n }\n\n return null;\n }\n\n protected fixUri(uri: string) {\n if (uri == null) {\n return null;\n }\n uri = uri.trim();\n if (uri.indexOf('://') === -1 && uri.indexOf('.') >= 0) {\n uri = 'http://' + uri;\n }\n if (uri.length > 1000) {\n return uri.substring(0, 1000);\n }\n return uri;\n }\n\n protected nameFromUrl(url: string) {\n const hostname = Utils.getHostname(url);\n if (this.isNullOrWhitespace(hostname)) {\n return null;\n }\n return hostname.startsWith('www.') ? hostname.replace('www.', '') : hostname;\n }\n\n protected isNullOrWhitespace(str: string): boolean {\n return Utils.isNullOrWhitespace(str);\n }\n\n protected getValueOrDefault(str: string, defaultValue: string = null): string {\n if (this.isNullOrWhitespace(str)) {\n return defaultValue;\n }\n return str;\n }\n\n protected splitNewLine(str: string): string[] {\n return str.split(this.newLineRegex);\n }\n\n // ref https://stackoverflow.com/a/5911300\n protected getCardBrand(cardNum: string) {\n if (this.isNullOrWhitespace(cardNum)) {\n return null;\n }\n\n // Visa\n let re = new RegExp('^4');\n if (cardNum.match(re) != null) {\n return 'Visa';\n }\n\n // Mastercard\n // Updated for Mastercard 2017 BINs expansion\n if (/^(5[1-5][0-9]{14}|2(22[1-9][0-9]{12}|2[3-9][0-9]{13}|[3-6][0-9]{14}|7[0-1][0-9]{13}|720[0-9]{12}))$/\n .test(cardNum)) {\n return 'Mastercard';\n }\n\n // AMEX\n re = new RegExp('^3[47]');\n if (cardNum.match(re) != null) {\n return 'Amex';\n }\n\n // Discover\n re = new RegExp('^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)');\n if (cardNum.match(re) != null) {\n return 'Discover';\n }\n\n // Diners\n re = new RegExp('^36');\n if (cardNum.match(re) != null) {\n return 'Diners Club';\n }\n\n // Diners - Carte Blanche\n re = new RegExp('^30[0-5]');\n if (cardNum.match(re) != null) {\n return 'Diners Club';\n }\n\n // JCB\n re = new RegExp('^35(2[89]|[3-8][0-9])');\n if (cardNum.match(re) != null) {\n return 'JCB';\n }\n\n // Visa Electron\n re = new RegExp('^(4026|417500|4508|4844|491(3|7))');\n if (cardNum.match(re) != null) {\n return 'Visa';\n }\n\n return null;\n }\n\n protected setCardExpiration(cipher: CipherView, expiration: string): boolean {\n if (!this.isNullOrWhitespace(expiration)) {\n const parts = expiration.split('/');\n if (parts.length === 2) {\n let month: string = null;\n let year: string = null;\n if (parts[0].length === 1 || parts[0].length === 2) {\n month = parts[0];\n if (month.length === 2 && month[0] === '0') {\n month = month.substr(1, 1);\n }\n }\n if (parts[1].length === 2 || parts[1].length === 4) {\n year = month.length === 2 ? '20' + parts[1] : parts[1];\n }\n if (month != null && year != null) {\n cipher.card.expMonth = month;\n cipher.card.expYear = year;\n return true;\n }\n }\n }\n return false;\n }\n\n protected moveFoldersToCollections(result: ImportResult) {\n result.folderRelationships.forEach((r) => result.collectionRelationships.push(r));\n result.collections = result.folders.map((f) => {\n const collection = new CollectionView();\n collection.name = f.name;\n return collection;\n });\n result.folderRelationships = [];\n result.folders = [];\n }\n\n protected querySelectorDirectChild(parentEl: Element, query: string) {\n const els = this.querySelectorAllDirectChild(parentEl, query);\n return els.length === 0 ? null : els[0];\n }\n\n protected querySelectorAllDirectChild(parentEl: Element, query: string) {\n return Array.from(parentEl.querySelectorAll(query)).filter((el) => el.parentNode === parentEl);\n }\n\n protected initLoginCipher() {\n const cipher = new CipherView();\n cipher.favorite = false;\n cipher.notes = '';\n cipher.fields = [];\n cipher.login = new LoginView();\n cipher.type = CipherType.Login;\n return cipher;\n }\n\n protected cleanupCipher(cipher: CipherView) {\n if (cipher == null) {\n return;\n }\n if (cipher.type !== CipherType.Login) {\n cipher.login = null;\n }\n if (this.isNullOrWhitespace(cipher.name)) {\n cipher.name = '--';\n }\n if (this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes = null;\n } else {\n cipher.notes = cipher.notes.trim();\n }\n if (cipher.fields != null && cipher.fields.length === 0) {\n cipher.fields = null;\n }\n }\n\n protected processKvp(cipher: CipherView, key: string, value: string, type: FieldType = FieldType.Text) {\n if (this.isNullOrWhitespace(value)) {\n return;\n }\n if (this.isNullOrWhitespace(key)) {\n key = '';\n }\n if (value.length > 200 || value.trim().search(this.newLineRegex) > -1) {\n if (cipher.notes == null) {\n cipher.notes = '';\n }\n cipher.notes += (key + ': ' + this.splitNewLine(value).join('\\n') + '\\n');\n } else {\n if (cipher.fields == null) {\n cipher.fields = [];\n }\n const field = new FieldView();\n field.type = type;\n field.name = key;\n field.value = value;\n cipher.fields.push(field);\n }\n }\n\n protected processFolder(result: ImportResult, folderName: string) {\n let folderIndex = result.folders.length;\n const hasFolder = !this.isNullOrWhitespace(folderName);\n let addFolder = hasFolder;\n\n if (hasFolder) {\n for (let i = 0; i < result.folders.length; i++) {\n if (result.folders[i].name === folderName) {\n addFolder = false;\n folderIndex = i;\n break;\n }\n }\n }\n\n if (addFolder) {\n const f = new FolderView();\n f.name = folderName;\n result.folders.push(f);\n }\n if (hasFolder) {\n result.folderRelationships.push([result.ciphers.length, folderIndex]);\n }\n }\n\n protected convertToNoteIfNeeded(cipher: CipherView) {\n if (cipher.type === CipherType.Login && this.isNullOrWhitespace(cipher.login.username) &&\n this.isNullOrWhitespace(cipher.login.password) &&\n (cipher.login.uris == null || cipher.login.uris.length === 0)) {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n }\n }\n}\n","import { CipherView } from '../view/cipherView';\nimport { CollectionView } from '../view/collectionView';\nimport { FolderView } from '../view/folderView';\n\nexport class ImportResult {\n success = false;\n errorMessage: string;\n ciphers: CipherView[] = [];\n folders: FolderView[] = [];\n folderRelationships: Array<[number, number]> = [];\n collections: CollectionView[] = [];\n collectionRelationships: Array<[number, number]> = [];\n}\n","import {\n Component,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { I18nService } from '../../abstractions/i18n.service';\n\n@Component({\n selector: 'app-callout',\n templateUrl: 'callout.component.html',\n})\nexport class CalloutComponent implements OnInit {\n @Input() type = 'info';\n @Input() icon: string;\n @Input() title: string;\n\n calloutStyle: string;\n\n constructor(private i18nService: I18nService) { }\n\n ngOnInit() {\n this.calloutStyle = this.type;\n\n if (this.type === 'warning' || this.type === 'danger') {\n if (this.type === 'danger') {\n this.calloutStyle = 'danger';\n }\n if (this.title === undefined) {\n this.title = this.i18nService.t('warning');\n }\n if (this.icon === undefined) {\n this.icon = 'fa-warning';\n }\n } else if (this.type === 'error') {\n this.calloutStyle = 'danger';\n if (this.title === undefined) {\n this.title = this.i18nService.t('error');\n }\n if (this.icon === undefined) {\n this.icon = 'fa-bolt';\n }\n } else if (this.type === 'tip') {\n this.calloutStyle = 'success';\n if (this.title === undefined) {\n this.title = this.i18nService.t('tip');\n }\n if (this.icon === undefined) {\n this.icon = 'fa-lightbulb-o';\n }\n }\n }\n}\n","
\n

\n \n {{title}}\n

\n \n
\n","export abstract class StateService {\n get: (key: string) => Promise;\n save: (key: string, obj: any) => Promise;\n remove: (key: string) => Promise;\n purge: () => Promise;\n}\n","export abstract class BaseResponse {\n protected response: any;\n\n constructor(response: any) {\n this.response = response;\n }\n\n protected getResponseProperty(propertyName: string, response: any = null, exactName = false): any {\n if (propertyName == null || propertyName === '') {\n throw new Error('propertyName must not be null/empty.');\n }\n if (response == null && this.response != null) {\n response = this.response;\n }\n if (response == null) {\n return null;\n }\n if (!exactName && response[propertyName] === undefined) {\n let otherCasePropertyName: string = null;\n if (propertyName.charAt(0) === propertyName.charAt(0).toUpperCase()) {\n otherCasePropertyName = propertyName.charAt(0).toLowerCase();\n } else {\n otherCasePropertyName = propertyName.charAt(0).toUpperCase();\n }\n if (propertyName.length > 1) {\n otherCasePropertyName += propertyName.slice(1);\n }\n\n propertyName = otherCasePropertyName;\n if (response[propertyName] === undefined) {\n propertyName = propertyName.toLowerCase();\n }\n if (response[propertyName] === undefined) {\n propertyName = propertyName.toUpperCase();\n }\n }\n return response[propertyName];\n }\n}\n","export enum CipherType {\n Login = 1,\n SecureNote = 2,\n Card = 3,\n Identity = 4,\n}\n","import * as tldjs from 'tldjs';\n\nimport { I18nService } from '../abstractions/i18n.service';\n\n// tslint:disable-next-line\nconst nodeURL = typeof window === 'undefined' ? require('url') : null;\n\nexport class Utils {\n static inited = false;\n static isNativeScript = false;\n static isNode = false;\n static isBrowser = true;\n static isMobileBrowser = false;\n static isAppleMobileBrowser = false;\n static global: any = null;\n static tldEndingRegex = /.*\\.(com|net|org|edu|uk|gov|ca|de|jp|fr|au|ru|ch|io|es|us|co|xyz|info|ly|mil)$/;\n\n static init() {\n if (Utils.inited) {\n return;\n }\n\n Utils.inited = true;\n Utils.isNode = typeof process !== 'undefined' && (process as any).release != null &&\n (process as any).release.name === 'node';\n Utils.isBrowser = typeof window !== 'undefined';\n Utils.isNativeScript = !Utils.isNode && !Utils.isBrowser;\n Utils.isMobileBrowser = Utils.isBrowser && this.isMobile(window);\n Utils.isAppleMobileBrowser = Utils.isBrowser && this.isAppleMobile(window);\n Utils.global = Utils.isNativeScript ? global : (Utils.isNode && !Utils.isBrowser ? global : window);\n }\n\n static fromB64ToArray(str: string): Uint8Array {\n if (Utils.isNode || Utils.isNativeScript) {\n return new Uint8Array(Buffer.from(str, 'base64'));\n } else {\n const binaryString = window.atob(str);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n }\n }\n\n static fromHexToArray(str: string): Uint8Array {\n if (Utils.isNode || Utils.isNativeScript) {\n return new Uint8Array(Buffer.from(str, 'hex'));\n } else {\n const bytes = new Uint8Array(str.length / 2);\n for (let i = 0; i < str.length; i += 2) {\n bytes[i / 2] = parseInt(str.substr(i, 2), 16);\n }\n return bytes;\n }\n }\n\n static fromUtf8ToArray(str: string): Uint8Array {\n if (Utils.isNode || Utils.isNativeScript) {\n return new Uint8Array(Buffer.from(str, 'utf8'));\n } else {\n const strUtf8 = unescape(encodeURIComponent(str));\n const arr = new Uint8Array(strUtf8.length);\n for (let i = 0; i < strUtf8.length; i++) {\n arr[i] = strUtf8.charCodeAt(i);\n }\n return arr;\n }\n }\n\n static fromByteStringToArray(str: string): Uint8Array {\n const arr = new Uint8Array(str.length);\n for (let i = 0; i < str.length; i++) {\n arr[i] = str.charCodeAt(i);\n }\n return arr;\n }\n\n static fromBufferToB64(buffer: ArrayBuffer): string {\n if (Utils.isNode || Utils.isNativeScript) {\n return Buffer.from(buffer).toString('base64');\n } else {\n let binary = '';\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return window.btoa(binary);\n }\n }\n\n static fromBufferToUtf8(buffer: ArrayBuffer): string {\n if (Utils.isNode || Utils.isNativeScript) {\n return Buffer.from(buffer).toString('utf8');\n } else {\n const bytes = new Uint8Array(buffer);\n const encodedString = String.fromCharCode.apply(null, bytes);\n return decodeURIComponent(escape(encodedString));\n }\n }\n\n static fromBufferToByteString(buffer: ArrayBuffer): string {\n return String.fromCharCode.apply(null, new Uint8Array(buffer));\n }\n\n // ref: https://stackoverflow.com/a/40031979/1090359\n static fromBufferToHex(buffer: ArrayBuffer): string {\n if (Utils.isNode || Utils.isNativeScript) {\n return Buffer.from(buffer).toString('hex');\n } else {\n const bytes = new Uint8Array(buffer);\n return Array.prototype.map.call(bytes, (x: number) => ('00' + x.toString(16)).slice(-2)).join('');\n }\n }\n\n static fromUrlB64ToUtf8(b64Str: string): string {\n let output = b64Str.replace(/-/g, '+').replace(/_/g, '/');\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += '==';\n break;\n case 3:\n output += '=';\n break;\n default:\n throw new Error('Illegal base64url string!');\n }\n\n return Utils.fromB64ToUtf8(output);\n }\n\n static fromB64ToUtf8(b64Str: string): string {\n if (Utils.isNode || Utils.isNativeScript) {\n return Buffer.from(b64Str, 'base64').toString('utf8');\n } else {\n return decodeURIComponent(escape(window.atob(b64Str)));\n }\n }\n\n // ref: http://stackoverflow.com/a/2117523/1090359\n static newGuid(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n // tslint:disable-next-line\n const r = Math.random() * 16 | 0;\n // tslint:disable-next-line\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n static isGuid(id: string) {\n return RegExp(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/, 'i').test(id);\n }\n\n static getHostname(uriString: string): string {\n const url = Utils.getUrl(uriString);\n try {\n return url != null ? url.hostname : null;\n } catch {\n return null;\n }\n }\n\n static getHost(uriString: string): string {\n const url = Utils.getUrl(uriString);\n try {\n return url != null ? url.host : null;\n } catch {\n return null;\n }\n }\n\n static getDomain(uriString: string): string {\n if (uriString == null) {\n return null;\n }\n\n uriString = uriString.trim();\n if (uriString === '') {\n return null;\n }\n\n if (uriString.startsWith('data:')) {\n return null;\n }\n\n let httpUrl = uriString.startsWith('http://') || uriString.startsWith('https://');\n if (!httpUrl && uriString.indexOf('://') < 0 && Utils.tldEndingRegex.test(uriString)) {\n uriString = 'http://' + uriString;\n httpUrl = true;\n }\n\n if (httpUrl) {\n try {\n const url = Utils.getUrlObject(uriString);\n if (url.hostname === 'localhost' || Utils.validIpAddress(url.hostname)) {\n return url.hostname;\n }\n\n const urlDomain = tldjs != null && tldjs.getDomain != null ? tldjs.getDomain(url.hostname) : null;\n return urlDomain != null ? urlDomain : url.hostname;\n } catch (e) { }\n }\n\n const domain = tldjs != null && tldjs.getDomain != null ? tldjs.getDomain(uriString) : null;\n if (domain != null) {\n return domain;\n }\n\n return null;\n }\n\n static getQueryParams(uriString: string): Map {\n const url = Utils.getUrl(uriString);\n if (url == null || url.search == null || url.search === '') {\n return null;\n }\n const map = new Map();\n const pairs = (url.search[0] === '?' ? url.search.substr(1) : url.search).split('&');\n pairs.forEach((pair) => {\n const parts = pair.split('=');\n if (parts.length < 1) {\n return;\n }\n map.set(decodeURIComponent(parts[0]).toLowerCase(), parts[1] == null ? '' : decodeURIComponent(parts[1]));\n });\n return map;\n }\n\n static getSortFunction(i18nService: I18nService, prop: string) {\n return (a: any, b: any) => {\n if (a[prop] == null && b[prop] != null) {\n return -1;\n }\n if (a[prop] != null && b[prop] == null) {\n return 1;\n }\n if (a[prop] == null && b[prop] == null) {\n return 0;\n }\n\n return i18nService.collator ? i18nService.collator.compare(a[prop], b[prop]) :\n a[prop].localeCompare(b[prop]);\n };\n }\n\n static isNullOrWhitespace(str: string): boolean {\n return str == null || typeof str !== 'string' || str.trim() === '';\n }\n\n private static validIpAddress(ipString: string): boolean {\n // tslint:disable-next-line\n const ipRegex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n return ipRegex.test(ipString);\n }\n\n private static isMobile(win: Window) {\n let mobile = false;\n ((a) => {\n // tslint:disable-next-line\n if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0, 4))) {\n mobile = true;\n }\n })(win.navigator.userAgent || win.navigator.vendor || (win as any).opera);\n return mobile || win.navigator.userAgent.match(/iPad/i) != null;\n }\n\n private static isAppleMobile(win: Window) {\n return win.navigator.userAgent.match(/iPhone/i) != null || win.navigator.userAgent.match(/iPad/i) != null;\n }\n\n private static getUrl(uriString: string): URL {\n if (uriString == null) {\n return null;\n }\n\n uriString = uriString.trim();\n if (uriString === '') {\n return null;\n }\n\n const hasProtocol = uriString.indexOf('://') > -1;\n if (!hasProtocol && uriString.indexOf('.') > -1) {\n uriString = 'http://' + uriString;\n } else if (!hasProtocol) {\n return null;\n }\n\n return Utils.getUrlObject(uriString);\n }\n\n private static getUrlObject(uriString: string): URL {\n try {\n if (nodeURL != null) {\n return nodeURL.URL ? new nodeURL.URL(uriString) : nodeURL.parse(uriString);\n } else if (typeof URL === 'function') {\n return new URL(uriString);\n } else if (window != null) {\n const anchor = window.document.createElement('a');\n anchor.href = uriString;\n return anchor as any;\n }\n } catch (e) { }\n\n return null;\n }\n}\n\nUtils.init();\n","import {\n Directive,\n HostListener,\n} from '@angular/core';\n\n@Directive({\n selector: '[appStopClick]',\n})\nexport class StopClickDirective {\n @HostListener('click', ['$event']) onClick($event: MouseEvent) {\n $event.preventDefault();\n }\n}\n","import { CollectionData } from '../models/data/collectionData';\n\nimport { Collection } from '../models/domain/collection';\nimport { TreeNode } from '../models/domain/treeNode';\n\nimport { CollectionView } from '../models/view/collectionView';\n\nexport abstract class CollectionService {\n decryptedCollectionCache: CollectionView[];\n\n clearCache: () => void;\n encrypt: (model: CollectionView) => Promise;\n decryptMany: (collections: Collection[]) => Promise;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n getAllNested: (collections?: CollectionView[]) => Promise>>;\n getNested: (id: string) => Promise>;\n upsert: (collection: CollectionData | CollectionData[]) => Promise;\n replace: (collections: { [id: string]: CollectionData; }) => Promise;\n clear: (userId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n}\n","import {\n Directive,\n ElementRef,\n Input,\n Renderer2,\n} from '@angular/core';\n\n@Directive({\n selector: '[appInputVerbatim]',\n})\nexport class InputVerbatimDirective {\n @Input() set appInputVerbatim(condition: boolean | string) {\n this.disableComplete = condition === '' || condition === true;\n }\n\n private disableComplete: boolean;\n\n constructor(private el: ElementRef, private renderer: Renderer2) { }\n\n ngOnInit() {\n if (this.disableComplete && !this.el.nativeElement.hasAttribute('autocomplete')) {\n this.renderer.setAttribute(this.el.nativeElement, 'autocomplete', 'off');\n }\n if (!this.el.nativeElement.hasAttribute('autocapitalize')) {\n this.renderer.setAttribute(this.el.nativeElement, 'autocapitalize', 'none');\n }\n if (!this.el.nativeElement.hasAttribute('autocorrect')) {\n this.renderer.setAttribute(this.el.nativeElement, 'autocorrect', 'none');\n }\n if (!this.el.nativeElement.hasAttribute('spellcheck')) {\n this.renderer.setAttribute(this.el.nativeElement, 'spellcheck', 'false');\n }\n if (!this.el.nativeElement.hasAttribute('inputmode')) {\n this.renderer.setAttribute(this.el.nativeElement, 'inputmode', 'verbatim');\n }\n }\n}\n","export abstract class StorageService {\n get: (key: string) => Promise;\n save: (key: string, obj: any) => Promise;\n remove: (key: string) => Promise;\n}\n","import { FolderData } from '../models/data/folderData';\n\nimport { Folder } from '../models/domain/folder';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\nimport { TreeNode } from '../models/domain/treeNode';\n\nimport { FolderView } from '../models/view/folderView';\n\nexport abstract class FolderService {\n decryptedFolderCache: FolderView[];\n\n clearCache: () => void;\n encrypt: (model: FolderView, key?: SymmetricCryptoKey) => Promise;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n getAllNested: () => Promise>>;\n getNested: (id: string) => Promise>;\n saveWithServer: (folder: Folder) => Promise;\n upsert: (folder: FolderData | FolderData[]) => Promise;\n replace: (folders: { [id: string]: FolderData; }) => Promise;\n clear: (userId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n deleteWithServer: (id: string) => Promise;\n}\n","import {\n SyncCipherNotification,\n SyncFolderNotification,\n} from '../models/response/notificationResponse';\n\nexport abstract class SyncService {\n syncInProgress: boolean;\n\n getLastSync: () => Promise;\n setLastSync: (date: Date) => Promise;\n fullSync: (forceSync: boolean, allowThrowOnError?: boolean) => Promise;\n syncUpsertFolder: (notification: SyncFolderNotification, isEdit: boolean) => Promise;\n syncDeleteFolder: (notification: SyncFolderNotification) => Promise;\n syncUpsertCipher: (notification: SyncCipherNotification, isEdit: boolean) => Promise;\n syncDeleteCipher: (notification: SyncFolderNotification) => Promise;\n}\n","import {\n Directive,\n HostListener,\n} from '@angular/core';\n\n@Directive({\n selector: '[appStopProp]',\n})\nexport class StopPropDirective {\n @HostListener('click', ['$event']) onClick($event: MouseEvent) {\n $event.stopPropagation();\n }\n}\n","import { GeneratedPasswordHistory } from '../models/domain/generatedPasswordHistory';\nimport { PasswordGeneratorPolicyOptions } from '../models/domain/passwordGeneratorPolicyOptions';\n\nexport abstract class PasswordGenerationService {\n generatePassword: (options: any) => Promise;\n generatePassphrase: (options: any) => Promise;\n getOptions: () => Promise<[any, PasswordGeneratorPolicyOptions]>;\n enforcePasswordGeneratorPoliciesOnOptions: (options: any) => Promise<[any, PasswordGeneratorPolicyOptions]>;\n getPasswordGeneratorPolicyOptions: () => Promise;\n saveOptions: (options: any) => Promise;\n getHistory: () => Promise;\n addHistory: (password: string) => Promise;\n clear: () => Promise;\n passwordStrength: (password: string, userInputs?: string[]) => zxcvbn.ZXCVBNResult;\n normalizeOptions: (options: any, enforcedPolicyOptions: PasswordGeneratorPolicyOptions) => void;\n}\n","export class ConstantsService {\n static readonly environmentUrlsKey: string = 'environmentUrls';\n static readonly disableGaKey: string = 'disableGa';\n static readonly disableAddLoginNotificationKey: string = 'disableAddLoginNotification';\n static readonly disableChangedPasswordNotificationKey: string = 'disableChangedPasswordNotification';\n static readonly disableContextMenuItemKey: string = 'disableContextMenuItem';\n static readonly disableFaviconKey: string = 'disableFavicon';\n static readonly disableAutoTotpCopyKey: string = 'disableAutoTotpCopy';\n static readonly enableAutoFillOnPageLoadKey: string = 'enableAutoFillOnPageLoad';\n static readonly vaultTimeoutKey: string = 'lockOption';\n static readonly vaultTimeoutActionKey: string = 'vaultTimeoutAction';\n static readonly lastActiveKey: string = 'lastActive';\n static readonly neverDomainsKey: string = 'neverDomains';\n static readonly installedVersionKey: string = 'installedVersion';\n static readonly localeKey: string = 'locale';\n static readonly themeKey: string = 'theme';\n static readonly collapsedGroupingsKey: string = 'collapsedGroupings';\n static readonly autoConfirmFingerprints: string = 'autoConfirmFingerprints';\n static readonly dontShowCardsCurrentTab: string = 'dontShowCardsCurrentTab';\n static readonly dontShowIdentitiesCurrentTab: string = 'dontShowIdentitiesCurrentTab';\n static readonly defaultUriMatch: string = 'defaultUriMatch';\n static readonly pinProtectedKey: string = 'pinProtectedKey';\n static readonly protectedPin: string = 'protectedPin';\n static readonly clearClipboardKey: string = 'clearClipboardKey';\n static readonly eventCollectionKey: string = 'eventCollection';\n\n readonly environmentUrlsKey: string = ConstantsService.environmentUrlsKey;\n readonly disableGaKey: string = ConstantsService.disableGaKey;\n readonly disableAddLoginNotificationKey: string = ConstantsService.disableAddLoginNotificationKey;\n readonly disableContextMenuItemKey: string = ConstantsService.disableContextMenuItemKey;\n readonly disableFaviconKey: string = ConstantsService.disableFaviconKey;\n readonly disableAutoTotpCopyKey: string = ConstantsService.disableAutoTotpCopyKey;\n readonly enableAutoFillOnPageLoadKey: string = ConstantsService.enableAutoFillOnPageLoadKey;\n readonly vaultTimeoutKey: string = ConstantsService.vaultTimeoutKey;\n readonly vaultTimeoutActionKey: string = ConstantsService.vaultTimeoutActionKey;\n readonly lastActiveKey: string = ConstantsService.lastActiveKey;\n readonly neverDomainsKey: string = ConstantsService.neverDomainsKey;\n readonly installedVersionKey: string = ConstantsService.installedVersionKey;\n readonly localeKey: string = ConstantsService.localeKey;\n readonly themeKey: string = ConstantsService.themeKey;\n readonly collapsedGroupingsKey: string = ConstantsService.collapsedGroupingsKey;\n readonly autoConfirmFingerprints: string = ConstantsService.autoConfirmFingerprints;\n readonly dontShowCardsCurrentTab: string = ConstantsService.dontShowCardsCurrentTab;\n readonly dontShowIdentitiesCurrentTab: string = ConstantsService.dontShowIdentitiesCurrentTab;\n readonly defaultUriMatch: string = ConstantsService.defaultUriMatch;\n readonly pinProtectedKey: string = ConstantsService.pinProtectedKey;\n readonly protectedPin: string = ConstantsService.protectedPin;\n readonly clearClipboardKey: string = ConstantsService.clearClipboardKey;\n readonly eventCollectionKey: string = ConstantsService.eventCollectionKey;\n}\n","export abstract class EnvironmentService {\n baseUrl: string;\n webVaultUrl: string;\n apiUrl: string;\n identityUrl: string;\n iconsUrl: string;\n notificationsUrl: string;\n eventsUrl: string;\n\n getWebVaultUrl: () => string;\n setUrlsFromStorage: () => Promise;\n setUrls: (urls: any) => Promise;\n}\n","export class PasswordVerificationRequest {\n masterPasswordHash: string;\n}\n","import { EventType } from '../enums/eventType';\n\nexport abstract class EventService {\n collect: (eventType: EventType, cipherId?: string, uploadImmediately?: boolean) => Promise;\n uploadEvents: () => Promise;\n clearEvents: () => Promise;\n}\n","export abstract class TokenService {\n token: string;\n decodedToken: any;\n refreshToken: string;\n setTokens: (accessToken: string, refreshToken: string) => Promise;\n setToken: (token: string) => Promise;\n getToken: () => Promise;\n setRefreshToken: (refreshToken: string) => Promise;\n getRefreshToken: () => Promise;\n toggleTokens: () => Promise;\n setTwoFactorToken: (token: string, email: string) => Promise;\n getTwoFactorToken: (email: string) => Promise;\n clearTwoFactorToken: (email: string) => Promise;\n clearToken: () => Promise;\n decodeToken: () => any;\n getTokenExpirationDate: () => Date;\n tokenSecondsRemaining: (offsetSeconds?: number) => number;\n tokenNeedsRefresh: (minutes?: number) => boolean;\n getUserId: () => string;\n getEmail: () => string;\n getEmailVerified: () => boolean;\n getName: () => string;\n getPremium: () => boolean;\n getIssuer: () => string;\n}\n","import { View } from './view';\n\nimport { Card } from '../domain/card';\n\nexport class CardView implements View {\n cardholderName: string = null;\n expMonth: string = null;\n expYear: string = null;\n code: string = null;\n\n // tslint:disable\n private _brand: string = null;\n private _number: string = null;\n private _subTitle: string = null;\n // tslint:enable\n\n constructor(c?: Card) {\n // ctor\n }\n\n get maskedCode(): string {\n return this.code != null ? '•'.repeat(this.code.length) : null;\n }\n\n get brand(): string {\n return this._brand;\n }\n set brand(value: string) {\n this._brand = value;\n this._subTitle = null;\n }\n\n get number(): string {\n return this._number;\n }\n set number(value: string) {\n this._number = value;\n this._subTitle = null;\n }\n\n get subTitle(): string {\n if (this._subTitle == null) {\n this._subTitle = this.brand;\n if (this.number != null && this.number.length >= 4) {\n if (this._subTitle != null && this._subTitle !== '') {\n this._subTitle += ', ';\n } else {\n this._subTitle = '';\n }\n\n // Show last 5 on amex, last 4 for all others\n const count = this.number.length >= 5 && this.number.match(new RegExp('^3[47]')) != null ? 5 : 4;\n this._subTitle += ('*' + this.number.substr(this.number.length - count));\n }\n }\n return this._subTitle;\n }\n\n get expiration(): string {\n if (!this.expMonth && !this.expYear) {\n return null;\n }\n\n let exp = this.expMonth != null ? ('0' + this.expMonth).slice(-2) : '__';\n exp += (' / ' + (this.expYear != null ? this.formatYear(this.expYear) : '____'));\n return exp;\n }\n\n private formatYear(year: string): string {\n return year.length === 2 ? '20' + year : year;\n }\n}\n","import { SecureNoteType } from '../../enums/secureNoteType';\n\nimport { View } from './view';\n\nimport { SecureNote } from '../domain/secureNote';\n\nexport class SecureNoteView implements View {\n type: SecureNoteType = null;\n\n constructor(n?: SecureNote) {\n if (!n) {\n return;\n }\n\n this.type = n.type;\n }\n\n get subTitle(): string {\n return null;\n }\n}\n","import {\n Directive,\n ElementRef,\n Input,\n} from '@angular/core';\n\nimport { Utils } from '../../misc/utils';\n\n@Directive({\n selector: '[appAutofocus]',\n})\nexport class AutofocusDirective {\n @Input() set appAutofocus(condition: boolean | string) {\n this.autofocus = condition === '' || condition === true;\n }\n\n private autofocus: boolean;\n\n constructor(private el: ElementRef) { }\n\n ngOnInit() {\n if (!Utils.isMobileBrowser && this.autofocus) {\n this.el.nativeElement.focus();\n }\n }\n}\n","import { CipherString } from './cipherString';\n\nimport { View } from '../view/view';\n\nexport default class Domain {\n protected buildDomainModel(domain: D, dataObj: any, map: any,\n alreadyEncrypted: boolean, notEncList: any[] = []) {\n for (const prop in map) {\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n const objProp = dataObj[(map[prop] || prop)];\n if (alreadyEncrypted === true || notEncList.indexOf(prop) > -1) {\n (domain as any)[prop] = objProp ? objProp : null;\n } else {\n (domain as any)[prop] = objProp ? new CipherString(objProp) : null;\n }\n }\n }\n protected buildDataModel(domain: D, dataObj: any, map: any, notCipherStringList: any[] = []) {\n for (const prop in map) {\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n const objProp = (domain as any)[(map[prop] || prop)];\n if (notCipherStringList.indexOf(prop) > -1) {\n (dataObj as any)[prop] = objProp != null ? objProp : null;\n } else {\n (dataObj as any)[prop] = objProp != null ? (objProp as CipherString).encryptedString : null;\n }\n }\n }\n\n protected async decryptObj(viewModel: T, map: any, orgId: string): Promise {\n const promises = [];\n const self: any = this;\n\n for (const prop in map) {\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n // tslint:disable-next-line\n (function (theProp) {\n const p = Promise.resolve().then(() => {\n const mapProp = map[theProp] || theProp;\n if (self[mapProp]) {\n return self[mapProp].decrypt(orgId);\n }\n return null;\n }).then((val: any) => {\n (viewModel as any)[theProp] = val;\n });\n promises.push(p);\n })(prop);\n }\n\n await Promise.all(promises);\n return viewModel;\n }\n}\n","import { TwoFactorProviderType } from '../enums/twoFactorProviderType';\n\nimport { AuthResult } from '../models/domain/authResult';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nexport abstract class AuthService {\n email: string;\n masterPasswordHash: string;\n twoFactorProvidersData: Map;\n selectedTwoFactorProviderType: TwoFactorProviderType;\n\n logIn: (email: string, masterPassword: string) => Promise;\n logInTwoFactor: (twoFactorProvider: TwoFactorProviderType, twoFactorToken: string,\n remember?: boolean) => Promise;\n logInComplete: (email: string, masterPassword: string, twoFactorProvider: TwoFactorProviderType,\n twoFactorToken: string, remember?: boolean) => Promise;\n logOut: (callback: Function) => void;\n getSupportedTwoFactorProviders: (win: Window) => any[];\n getDefaultTwoFactorProvider: (u2fSupported: boolean) => TwoFactorProviderType;\n makePreloginKey: (masterPassword: string, email: string) => Promise;\n}\n","import * as jq from 'jquery';\n\nimport {\n Component,\n ComponentFactoryResolver,\n Type,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ModalComponent as BaseModalComponent } from 'jslib/angular/components/modal.component';\nimport { Utils } from 'jslib/misc/utils';\n\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\n\n@Component({\n selector: 'app-modal',\n template: ``,\n})\nexport class ModalComponent extends BaseModalComponent {\n el: any = null;\n\n constructor(componentFactoryResolver: ComponentFactoryResolver, messagingService: MessagingService) {\n super(componentFactoryResolver, messagingService);\n }\n\n ngOnDestroy() { /* Nothing */ }\n\n show(type: Type, parentContainer: ViewContainerRef, fade: boolean = true,\n setComponentParameters: (component: T) => void = null): T {\n this.parentContainer = parentContainer;\n this.fade = fade;\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(type);\n const componentRef = this.container.createComponent(factory);\n if (setComponentParameters != null) {\n setComponentParameters(componentRef.instance);\n }\n\n const modals = Array.from(document.querySelectorAll('.modal'));\n if (modals.length > 0) {\n this.el = jq(modals[0]);\n this.el.modal('show');\n\n this.el.on('show.bs.modal', () => {\n this.onShow.emit();\n this.messagingService.send('modalShow');\n });\n this.el.on('shown.bs.modal', () => {\n this.onShown.emit();\n this.messagingService.send('modalShown');\n if (!Utils.isMobileBrowser) {\n this.el.find('*[appAutoFocus]').focus();\n }\n });\n this.el.on('hide.bs.modal', () => {\n this.onClose.emit();\n this.messagingService.send('modalClose');\n });\n this.el.on('hidden.bs.modal', () => {\n this.onClosed.emit();\n this.messagingService.send('modalClosed');\n if (this.parentContainer != null) {\n this.parentContainer.clear();\n }\n });\n }\n\n return componentRef.instance;\n }\n\n close() {\n if (this.el != null) {\n this.el.modal('hide');\n }\n }\n}\n","import {\n Component,\n Input,\n OnChanges,\n} from '@angular/core';\n\nimport { CipherType } from '../../enums/cipherType';\n\nimport { CipherView } from '../../models/view/cipherView';\n\nimport { EnvironmentService } from '../../abstractions/environment.service';\nimport { StateService } from '../../abstractions/state.service';\n\nimport { ConstantsService } from '../../services/constants.service';\n\nimport { Utils } from '../../misc/utils';\n\nconst IconMap: any = {\n 'fa-globe': String.fromCharCode(0xf0ac),\n 'fa-sticky-note-o': String.fromCharCode(0xf24a),\n 'fa-id-card-o': String.fromCharCode(0xf2c3),\n 'fa-credit-card': String.fromCharCode(0xf09d),\n 'fa-android': String.fromCharCode(0xf17b),\n 'fa-apple': String.fromCharCode(0xf179),\n};\n\n@Component({\n selector: 'app-vault-icon',\n templateUrl: 'icon.component.html',\n})\nexport class IconComponent implements OnChanges {\n @Input() cipher: CipherView;\n icon: string;\n image: string;\n fallbackImage: string;\n imageEnabled: boolean;\n\n private iconsUrl: string;\n\n constructor(environmentService: EnvironmentService, protected stateService: StateService) {\n this.iconsUrl = environmentService.iconsUrl;\n if (!this.iconsUrl) {\n if (environmentService.baseUrl) {\n this.iconsUrl = environmentService.baseUrl + '/icons';\n } else {\n this.iconsUrl = 'https://icons.bitwarden.net';\n }\n }\n }\n\n async ngOnChanges() {\n this.imageEnabled = !(await this.stateService.get(ConstantsService.disableFaviconKey));\n this.load();\n }\n\n get iconCode(): string {\n return IconMap[this.icon];\n }\n\n protected load() {\n switch (this.cipher.type) {\n case CipherType.Login:\n this.icon = 'fa-globe';\n this.setLoginIcon();\n break;\n case CipherType.SecureNote:\n this.icon = 'fa-sticky-note-o';\n break;\n case CipherType.Card:\n this.icon = 'fa-credit-card';\n break;\n case CipherType.Identity:\n this.icon = 'fa-id-card-o';\n break;\n default:\n break;\n }\n }\n\n private setLoginIcon() {\n if (this.cipher.login.uri) {\n let hostnameUri = this.cipher.login.uri;\n let isWebsite = false;\n\n if (hostnameUri.indexOf('androidapp://') === 0) {\n this.icon = 'fa-android';\n this.image = null;\n } else if (hostnameUri.indexOf('iosapp://') === 0) {\n this.icon = 'fa-apple';\n this.image = null;\n } else if (this.imageEnabled && hostnameUri.indexOf('://') === -1 && hostnameUri.indexOf('.') > -1) {\n hostnameUri = 'http://' + hostnameUri;\n isWebsite = true;\n } else if (this.imageEnabled) {\n isWebsite = hostnameUri.indexOf('http') === 0 && hostnameUri.indexOf('.') > -1;\n }\n\n if (this.imageEnabled && isWebsite) {\n try {\n this.image = this.iconsUrl + '/' + Utils.getHostname(hostnameUri) + '/icon.png';\n this.fallbackImage = 'images/fa-globe.png';\n } catch (e) { }\n }\n } else {\n this.image = null;\n }\n }\n}\n","export enum SecureNoteType {\n Generic = 0,\n}\n","import { Injectable } from '@angular/core';\n\nimport { BroadcasterService as BaseBroadcasterService } from '../../services/broadcaster.service';\n\n@Injectable()\nexport class BroadcasterService extends BaseBroadcasterService {\n}\n","import { PolicyData } from '../models/data/policyData';\n\nimport { MasterPasswordPolicyOptions } from '../models/domain/masterPasswordPolicyOptions';\nimport { Policy } from '../models/domain/policy';\n\nimport { PolicyType } from '../enums/policyType';\n\nexport abstract class PolicyService {\n policyCache: Policy[];\n\n clearCache: () => void;\n getAll: (type?: PolicyType) => Promise;\n replace: (policies: { [id: string]: PolicyData; }) => Promise;\n clear: (userId: string) => Promise;\n getMasterPasswordPolicyOptions: (policies?: Policy[]) => Promise;\n evaluateMasterPassword: (passwordStrength: number, newPassword: string,\n enforcedPolicyOptions?: MasterPasswordPolicyOptions) => boolean;\n}\n","export enum TwoFactorProviderType {\n Authenticator = 0,\n Email = 1,\n Duo = 2,\n Yubikey = 3,\n U2f = 4,\n Remember = 5,\n OrganizationDuo = 6,\n}\n","
\n \"\"\n \n
\n","import { DecryptParameters } from '../models/domain/decryptParameters';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nexport abstract class CryptoFunctionService {\n pbkdf2: (password: string | ArrayBuffer, salt: string | ArrayBuffer, algorithm: 'sha256' | 'sha512',\n iterations: number) => Promise;\n hash: (value: string | ArrayBuffer, algorithm: 'sha1' | 'sha256' | 'sha512' | 'md5') => Promise;\n hmac: (value: ArrayBuffer, key: ArrayBuffer, algorithm: 'sha1' | 'sha256' | 'sha512') => Promise;\n compare: (a: ArrayBuffer, b: ArrayBuffer) => Promise;\n hmacFast: (value: ArrayBuffer | string, key: ArrayBuffer | string, algorithm: 'sha1' | 'sha256' | 'sha512') =>\n Promise;\n compareFast: (a: ArrayBuffer | string, b: ArrayBuffer | string) => Promise;\n aesEncrypt: (data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer) => Promise;\n aesDecryptFastParameters: (data: string, iv: string, mac: string, key: SymmetricCryptoKey) =>\n DecryptParameters;\n aesDecryptFast: (parameters: DecryptParameters) => Promise;\n aesDecrypt: (data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer) => Promise;\n rsaEncrypt: (data: ArrayBuffer, publicKey: ArrayBuffer, algorithm: 'sha1' | 'sha256') => Promise;\n rsaDecrypt: (data: ArrayBuffer, privateKey: ArrayBuffer, algorithm: 'sha1' | 'sha256') => Promise;\n rsaExtractPublicKey: (privateKey: ArrayBuffer) => Promise;\n rsaGenerateKeyPair: (length: 1024 | 2048 | 4096) => Promise<[ArrayBuffer, ArrayBuffer]>;\n randomBytes: (length: number) => Promise;\n}\n","import { BreachAccountResponse } from '../models/response/breachAccountResponse';\n\nexport abstract class AuditService {\n passwordLeaked: (password: string) => Promise;\n breachedAccounts: (username: string) => Promise;\n}\n","import {\n Component,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { PaymentMethodType } from 'jslib/enums/paymentMethodType';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { WebConstants } from '../../services/webConstants';\n\nconst StripeElementStyle = {\n base: {\n color: '#333333',\n fontFamily: '\"Open Sans\", \"Helvetica Neue\", Helvetica, Arial, sans-serif, ' +\n '\"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"',\n fontSize: '14px',\n fontSmoothing: 'antialiased',\n },\n invalid: {\n color: '#333333',\n },\n};\n\nconst StripeElementClasses = {\n focus: 'is-focused',\n empty: 'is-empty',\n invalid: 'is-invalid',\n};\n\n@Component({\n selector: 'app-payment',\n templateUrl: 'payment.component.html',\n})\nexport class PaymentComponent implements OnInit {\n @Input() showMethods = true;\n @Input() showOptions = true;\n @Input() method = PaymentMethodType.Card;\n @Input() hideBank = false;\n @Input() hidePaypal = false;\n @Input() hideCredit = false;\n\n bank: any = {\n routing_number: null,\n account_number: null,\n account_holder_name: null,\n account_holder_type: '',\n currency: 'USD',\n country: 'US',\n };\n\n paymentMethodType = PaymentMethodType;\n\n private btScript: HTMLScriptElement;\n private btInstance: any = null;\n private stripeScript: HTMLScriptElement;\n private stripe: any = null;\n private stripeElements: any = null;\n private stripeCardNumberElement: any = null;\n private stripeCardExpiryElement: any = null;\n private stripeCardCvcElement: any = null;\n\n constructor(private platformUtilsService: PlatformUtilsService, private apiService: ApiService) {\n this.stripeScript = window.document.createElement('script');\n this.stripeScript.src = 'https://js.stripe.com/v3/';\n this.stripeScript.async = true;\n this.stripeScript.onload = () => {\n this.stripe = (window as any).Stripe(this.platformUtilsService.isDev() ?\n WebConstants.stripeTestKey : WebConstants.stripeLiveKey);\n this.stripeElements = this.stripe.elements();\n this.setStripeElement();\n };\n this.btScript = window.document.createElement('script');\n this.btScript.src = 'scripts/dropin.js';\n this.btScript.async = true;\n }\n\n ngOnInit() {\n if (!this.showOptions) {\n this.hidePaypal = this.method !== PaymentMethodType.PayPal;\n this.hideBank = this.method !== PaymentMethodType.BankAccount;\n this.hideCredit = this.method !== PaymentMethodType.Credit;\n }\n window.document.head.appendChild(this.stripeScript);\n if (!this.hidePaypal) {\n window.document.head.appendChild(this.btScript);\n }\n }\n\n ngOnDestroy() {\n window.document.head.removeChild(this.stripeScript);\n window.setTimeout(() => {\n Array.from(window.document.querySelectorAll('iframe')).forEach((el) => {\n if (el.src != null && el.src.indexOf('stripe') > -1) {\n try {\n window.document.body.removeChild(el);\n } catch { }\n }\n });\n }, 500);\n if (!this.hidePaypal) {\n window.document.head.removeChild(this.btScript);\n window.setTimeout(() => {\n Array.from(window.document.head.querySelectorAll('script')).forEach((el) => {\n if (el.src != null && el.src.indexOf('paypal') > -1) {\n try {\n window.document.head.removeChild(el);\n } catch { }\n }\n });\n const btStylesheet = window.document.head.querySelector('#braintree-dropin-stylesheet');\n if (btStylesheet != null) {\n try {\n window.document.head.removeChild(btStylesheet);\n } catch { }\n }\n }, 500);\n }\n }\n\n changeMethod() {\n this.btInstance = null;\n\n if (this.method === PaymentMethodType.PayPal) {\n window.setTimeout(() => {\n (window as any).braintree.dropin.create({\n authorization: this.platformUtilsService.isDev() ?\n WebConstants.btSandboxKey : WebConstants.btProductionKey,\n container: '#bt-dropin-container',\n paymentOptionPriority: ['paypal'],\n paypal: {\n flow: 'vault',\n buttonStyle: {\n label: 'pay',\n size: 'medium',\n shape: 'pill',\n color: 'blue',\n },\n },\n }, (createErr: any, instance: any) => {\n if (createErr != null) {\n // tslint:disable-next-line\n console.error(createErr);\n return;\n }\n this.btInstance = instance;\n });\n }, 250);\n } else {\n this.setStripeElement();\n }\n }\n\n createPaymentToken(): Promise<[string, PaymentMethodType]> {\n return new Promise((resolve, reject) => {\n if (this.method === PaymentMethodType.Credit) {\n resolve([null, this.method]);\n } else if (this.method === PaymentMethodType.PayPal) {\n this.btInstance.requestPaymentMethod().then((payload: any) => {\n resolve([payload.nonce, this.method]);\n }).catch((err: any) => {\n reject(err.message);\n });\n } else if (this.method === PaymentMethodType.Card || this.method === PaymentMethodType.BankAccount) {\n if (this.method === PaymentMethodType.Card) {\n this.apiService.postSetupPayment().then((clientSecret) =>\n this.stripe.handleCardSetup(clientSecret, this.stripeCardNumberElement))\n .then((result: any) => {\n if (result.error) {\n reject(result.error.message);\n } else if (result.setupIntent && result.setupIntent.status === 'succeeded') {\n resolve([result.setupIntent.payment_method, this.method]);\n } else {\n reject();\n }\n });\n } else {\n this.stripe.createToken('bank_account', this.bank).then((result: any) => {\n if (result.error) {\n reject(result.error.message);\n } else if (result.token && result.token.id != null) {\n resolve([result.token.id, this.method]);\n } else {\n reject();\n }\n });\n }\n }\n });\n }\n\n handleStripeCardPayment(clientSecret: string, successCallback: () => Promise): Promise {\n return new Promise((resolve, reject) => {\n if (this.showMethods && this.stripeCardNumberElement == null) {\n reject();\n return;\n }\n const handleCardPayment = () => this.showMethods ?\n this.stripe.handleCardPayment(clientSecret, this.stripeCardNumberElement) :\n this.stripe.handleCardPayment(clientSecret);\n return handleCardPayment().then(async (result: any) => {\n if (result.error) {\n reject(result.error.message);\n } else if (result.paymentIntent && result.paymentIntent.status === 'succeeded') {\n if (successCallback != null) {\n await successCallback();\n }\n resolve();\n } else {\n reject();\n }\n });\n });\n }\n\n private setStripeElement() {\n window.setTimeout(() => {\n if (this.showMethods && this.method === PaymentMethodType.Card) {\n if (this.stripeCardNumberElement == null) {\n this.stripeCardNumberElement = this.stripeElements.create('cardNumber', {\n style: StripeElementStyle,\n classes: StripeElementClasses,\n placeholder: '',\n });\n }\n if (this.stripeCardExpiryElement == null) {\n this.stripeCardExpiryElement = this.stripeElements.create('cardExpiry', {\n style: StripeElementStyle,\n classes: StripeElementClasses,\n });\n }\n if (this.stripeCardCvcElement == null) {\n this.stripeCardCvcElement = this.stripeElements.create('cardCvc', {\n style: StripeElementStyle,\n classes: StripeElementClasses,\n placeholder: '',\n });\n }\n this.stripeCardNumberElement.mount('#stripe-card-number-element');\n this.stripeCardExpiryElement.mount('#stripe-card-expiry-element');\n this.stripeCardCvcElement.mount('#stripe-card-cvc-element');\n }\n }, 50);\n }\n}\n","import { View } from './view';\n\nimport { Folder } from '../domain/folder';\nimport { ITreeNodeObject } from '../domain/treeNode';\n\nexport class FolderView implements View, ITreeNodeObject {\n id: string = null;\n name: string = null;\n revisionDate: Date = null;\n\n constructor(f?: Folder) {\n if (!f) {\n return;\n }\n\n this.id = f.id;\n this.revisionDate = f.revisionDate;\n }\n}\n","import { CipherView } from '../models/view/cipherView';\n\nexport abstract class SearchService {\n clearIndex: () => void;\n isSearchable: (query: string) => boolean;\n indexCiphers: () => Promise;\n searchCiphers: (query: string,\n filter?: ((cipher: CipherView) => boolean) | (Array<(cipher: CipherView) => boolean>),\n ciphers?: CipherView[]) => Promise;\n searchCiphersBasic: (ciphers: CipherView[], query: string, deleted?: boolean) => CipherView[];\n}\n","import { CipherString } from '../models/domain/cipherString';\n\nexport abstract class VaultTimeoutService {\n pinProtectedKey: CipherString;\n isLocked: () => Promise;\n checkVaultTimeout: () => Promise;\n lock: (allowSoftLock?: boolean) => Promise;\n logOut: () => Promise;\n setVaultTimeoutOptions: (vaultTimeout: number, vaultTimeoutAction: string) => Promise;\n isPinLockSet: () => Promise<[boolean, boolean]>;\n clear: () => Promise;\n}\n","import { CipherType } from '../../enums/cipherType';\n\nimport { Cipher } from '../domain/cipher';\n\nimport { AttachmentView } from './attachmentView';\nimport { CardView } from './cardView';\nimport { FieldView } from './fieldView';\nimport { IdentityView } from './identityView';\nimport { LoginView } from './loginView';\nimport { PasswordHistoryView } from './passwordHistoryView';\nimport { SecureNoteView } from './secureNoteView';\nimport { View } from './view';\n\nexport class CipherView implements View {\n id: string = null;\n organizationId: string = null;\n folderId: string = null;\n name: string = null;\n notes: string = null;\n type: CipherType = null;\n favorite = false;\n organizationUseTotp = false;\n edit = false;\n localData: any;\n login = new LoginView();\n identity = new IdentityView();\n card = new CardView();\n secureNote = new SecureNoteView();\n attachments: AttachmentView[] = null;\n fields: FieldView[] = null;\n passwordHistory: PasswordHistoryView[] = null;\n collectionIds: string[] = null;\n revisionDate: Date = null;\n deletedDate: Date = null;\n\n constructor(c?: Cipher) {\n if (!c) {\n return;\n }\n\n this.id = c.id;\n this.organizationId = c.organizationId;\n this.folderId = c.folderId;\n this.favorite = c.favorite;\n this.organizationUseTotp = c.organizationUseTotp;\n this.edit = c.edit;\n this.type = c.type;\n this.localData = c.localData;\n this.collectionIds = c.collectionIds;\n this.revisionDate = c.revisionDate;\n this.deletedDate = c.deletedDate;\n }\n\n get subTitle(): string {\n switch (this.type) {\n case CipherType.Login:\n return this.login.subTitle;\n case CipherType.SecureNote:\n return this.secureNote.subTitle;\n case CipherType.Card:\n return this.card.subTitle;\n case CipherType.Identity:\n return this.identity.subTitle;\n default:\n break;\n }\n\n return null;\n }\n\n get hasPasswordHistory(): boolean {\n return this.passwordHistory && this.passwordHistory.length > 0;\n }\n\n get hasAttachments(): boolean {\n return this.attachments && this.attachments.length > 0;\n }\n\n get hasOldAttachments(): boolean {\n if (this.hasAttachments) {\n for (let i = 0; i < this.attachments.length; i++) {\n if (this.attachments[i].key == null) {\n return true;\n }\n }\n }\n return false;\n }\n\n get hasFields(): boolean {\n return this.fields && this.fields.length > 0;\n }\n\n get passwordRevisionDisplayDate(): Date {\n if (this.type !== CipherType.Login || this.login == null) {\n return null;\n } else if (this.login.password == null || this.login.password === '') {\n return null;\n }\n return this.login.passwordRevisionDate;\n }\n\n get isDeleted(): boolean {\n return this.deletedDate != null;\n }\n}\n","import { View } from './view';\n\nimport { Identity } from '../domain/identity';\n\nimport { Utils } from '../../misc/utils';\n\nexport class IdentityView implements View {\n title: string = null;\n middleName: string = null;\n address1: string = null;\n address2: string = null;\n address3: string = null;\n city: string = null;\n state: string = null;\n postalCode: string = null;\n country: string = null;\n company: string = null;\n email: string = null;\n phone: string = null;\n ssn: string = null;\n username: string = null;\n passportNumber: string = null;\n licenseNumber: string = null;\n\n // tslint:disable\n private _firstName: string = null;\n private _lastName: string = null;\n private _subTitle: string = null;\n // tslint:enable\n\n constructor(i?: Identity) {\n // ctor\n }\n\n get firstName(): string {\n return this._firstName;\n }\n set firstName(value: string) {\n this._firstName = value;\n this._subTitle = null;\n }\n\n get lastName(): string {\n return this._lastName;\n }\n set lastName(value: string) {\n this._lastName = value;\n this._subTitle = null;\n }\n\n get subTitle(): string {\n if (this._subTitle == null && (this.firstName != null || this.lastName != null)) {\n this._subTitle = '';\n if (this.firstName != null) {\n this._subTitle = this.firstName;\n }\n if (this.lastName != null) {\n if (this._subTitle !== '') {\n this._subTitle += ' ';\n }\n this._subTitle += this.lastName;\n }\n }\n\n return this._subTitle;\n }\n\n get fullName(): string {\n if (this.title != null || this.firstName != null || this.middleName != null || this.lastName != null) {\n let name = '';\n if (this.title != null) {\n name += (this.title + ' ');\n }\n if (this.firstName != null) {\n name += (this.firstName + ' ');\n }\n if (this.middleName != null) {\n name += (this.middleName + ' ');\n }\n if (this.lastName != null) {\n name += this.lastName;\n }\n return name.trim();\n }\n\n return null;\n }\n\n get fullAddress(): string {\n let address = this.address1;\n if (!Utils.isNullOrWhitespace(this.address2)) {\n if (!Utils.isNullOrWhitespace(address)) {\n address += ', ';\n }\n address += this.address2;\n }\n if (!Utils.isNullOrWhitespace(this.address3)) {\n if (!Utils.isNullOrWhitespace(address)) {\n address += ', ';\n }\n address += this.address3;\n }\n return address;\n }\n\n get fullAddressPart2(): string {\n if (this.city == null && this.state == null && this.postalCode == null) {\n return null;\n }\n const city = this.city || '-';\n const state = this.state;\n const postalCode = this.postalCode || '-';\n let addressPart2 = city;\n if (!Utils.isNullOrWhitespace(state)) {\n addressPart2 += ', ' + state;\n }\n addressPart2 += ', ' + postalCode;\n return addressPart2;\n }\n}\n","import {\n Component,\n Input,\n OnChanges,\n OnInit,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { CryptoFunctionService } from 'jslib/abstractions/cryptoFunction.service';\nimport { StateService } from 'jslib/abstractions/state.service';\n\nimport { Utils } from 'jslib/misc/utils';\n\n@Component({\n selector: 'app-avatar',\n template: '',\n})\nexport class AvatarComponent implements OnChanges, OnInit {\n @Input() data: string;\n @Input() email: string;\n @Input() size = 45;\n @Input() charCount = 2;\n @Input() textColor = '#ffffff';\n @Input() fontSize = 20;\n @Input() fontWeight = 300;\n @Input() dynamic = false;\n @Input() circle = false;\n\n src: string;\n\n constructor(public sanitizer: DomSanitizer, private cryptoFunctionService: CryptoFunctionService,\n private stateService: StateService) { }\n\n ngOnInit() {\n if (!this.dynamic) {\n this.generate();\n }\n }\n\n ngOnChanges() {\n if (this.dynamic) {\n this.generate();\n }\n }\n\n private async generate() {\n const enableGravatars = await this.stateService.get('enableGravatars');\n if (enableGravatars && this.email != null) {\n const hashBytes = await this.cryptoFunctionService.hash(this.email.toLowerCase().trim(), 'md5');\n const hash = Utils.fromBufferToHex(hashBytes).toLowerCase();\n this.src = 'https://www.gravatar.com/avatar/' + hash + '?s=' + this.size + '&r=pg&d=retro';\n } else {\n let chars: string = null;\n const upperData = this.data.toUpperCase();\n\n if (this.charCount > 1) {\n chars = this.getFirstLetters(upperData, this.charCount);\n }\n if (chars == null) {\n chars = upperData.substr(0, this.charCount);\n }\n\n const charObj = this.getCharText(chars);\n const color = this.stringToColor(upperData);\n const svg = this.getSvg(this.size, color);\n svg.appendChild(charObj);\n const html = window.document.createElement('div').appendChild(svg).outerHTML;\n const svgHtml = window.btoa(unescape(encodeURIComponent(html)));\n this.src = 'data:image/svg+xml;base64,' + svgHtml;\n }\n }\n\n private stringToColor(str: string): string {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n // tslint:disable-next-line\n hash = str.charCodeAt(i) + ((hash << 5) - hash);\n }\n let color = '#';\n for (let i = 0; i < 3; i++) {\n // tslint:disable-next-line\n const value = (hash >> (i * 8)) & 0xFF;\n color += ('00' + value.toString(16)).substr(-2);\n }\n return color;\n }\n\n private getFirstLetters(data: string, count: number): string {\n const parts = data.split(' ');\n if (parts.length > 1) {\n let text = '';\n for (let i = 0; i < count; i++) {\n text += parts[i].substr(0, 1);\n }\n return text;\n }\n return null;\n }\n\n private getSvg(size: number, color: string): HTMLElement {\n const svgTag = window.document.createElement('svg');\n svgTag.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n svgTag.setAttribute('pointer-events', 'none');\n svgTag.setAttribute('width', size.toString());\n svgTag.setAttribute('height', size.toString());\n svgTag.style.backgroundColor = color;\n svgTag.style.width = size + 'px';\n svgTag.style.height = size + 'px';\n return svgTag;\n }\n\n private getCharText(character: string): HTMLElement {\n const textTag = window.document.createElement('text');\n textTag.setAttribute('text-anchor', 'middle');\n textTag.setAttribute('y', '50%');\n textTag.setAttribute('x', '50%');\n textTag.setAttribute('dy', '0.35em');\n textTag.setAttribute('pointer-events', 'auto');\n textTag.setAttribute('fill', this.textColor);\n textTag.setAttribute('font-family', '\"Open Sans\",\"Helvetica Neue\",Helvetica,Arial,' +\n 'sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\"');\n textTag.textContent = character;\n textTag.style.fontWeight = this.fontWeight.toString();\n textTag.style.fontSize = this.fontSize + 'px';\n return textTag;\n }\n}\n","import { LoginUriView } from './loginUriView';\nimport { View } from './view';\n\nimport { Login } from '../domain/login';\n\nexport class LoginView implements View {\n username: string = null;\n password: string = null;\n passwordRevisionDate?: Date = null;\n totp: string = null;\n uris: LoginUriView[] = null;\n\n constructor(l?: Login) {\n if (!l) {\n return;\n }\n\n this.passwordRevisionDate = l.passwordRevisionDate;\n }\n\n get uri(): string {\n return this.hasUris ? this.uris[0].uri : null;\n }\n\n get maskedPassword(): string {\n return this.password != null ? '••••••••' : null;\n }\n\n get subTitle(): string {\n return this.username;\n }\n\n get canLaunch(): boolean {\n return this.hasUris && this.uris.some((u) => u.canLaunch);\n }\n\n get launchUri(): string {\n if (this.hasUris) {\n const uri = this.uris.find((u) => u.canLaunch);\n if (uri != null) {\n return uri.launchUri;\n }\n }\n return null;\n }\n\n get hasUris(): boolean {\n return this.uris != null && this.uris.length > 0;\n }\n}\n","export enum FieldType {\n Text = 0,\n Hidden = 1,\n Boolean = 2,\n}\n","import { View } from './view';\n\nimport { Collection } from '../domain/collection';\nimport { ITreeNodeObject } from '../domain/treeNode';\n\nimport { CollectionGroupDetailsResponse } from '../response/collectionResponse';\n\nexport class CollectionView implements View, ITreeNodeObject {\n id: string = null;\n organizationId: string = null;\n name: string = null;\n externalId: string = null;\n readOnly: boolean = null;\n\n constructor(c?: Collection | CollectionGroupDetailsResponse) {\n if (!c) {\n return;\n }\n\n this.id = c.id;\n this.organizationId = c.organizationId;\n this.externalId = c.externalId;\n if (c instanceof Collection) {\n this.readOnly = c.readOnly;\n }\n }\n}\n","","import { CipherType } from '../../enums/cipherType';\n\nimport { AttachmentData } from './attachmentData';\nimport { CardData } from './cardData';\nimport { FieldData } from './fieldData';\nimport { IdentityData } from './identityData';\nimport { LoginData } from './loginData';\nimport { PasswordHistoryData } from './passwordHistoryData';\nimport { SecureNoteData } from './secureNoteData';\n\nimport { CipherResponse } from '../response/cipherResponse';\n\nexport class CipherData {\n id: string;\n organizationId: string;\n folderId: string;\n userId: string;\n edit: boolean;\n organizationUseTotp: boolean;\n favorite: boolean;\n revisionDate: string;\n type: CipherType;\n sizeName: string;\n name: string;\n notes: string;\n login?: LoginData;\n secureNote?: SecureNoteData;\n card?: CardData;\n identity?: IdentityData;\n fields?: FieldData[];\n attachments?: AttachmentData[];\n passwordHistory?: PasswordHistoryData[];\n collectionIds?: string[];\n deletedDate: string;\n\n constructor(response?: CipherResponse, userId?: string, collectionIds?: string[]) {\n if (response == null) {\n return;\n }\n\n this.id = response.id;\n this.organizationId = response.organizationId;\n this.folderId = response.folderId;\n this.userId = userId;\n this.edit = response.edit;\n this.organizationUseTotp = response.organizationUseTotp;\n this.favorite = response.favorite;\n this.revisionDate = response.revisionDate;\n this.type = response.type;\n this.name = response.name;\n this.notes = response.notes;\n this.collectionIds = collectionIds != null ? collectionIds : response.collectionIds;\n this.deletedDate = response.deletedDate;\n\n switch (this.type) {\n case CipherType.Login:\n this.login = new LoginData(response.login);\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNoteData(response.secureNote);\n break;\n case CipherType.Card:\n this.card = new CardData(response.card);\n break;\n case CipherType.Identity:\n this.identity = new IdentityData(response.identity);\n break;\n default:\n break;\n }\n\n if (response.fields != null) {\n this.fields = response.fields.map((f) => new FieldData(f));\n }\n if (response.attachments != null) {\n this.attachments = response.attachments.map((a) => new AttachmentData(a));\n }\n if (response.passwordHistory != null) {\n this.passwordHistory = response.passwordHistory.map((ph) => new PasswordHistoryData(ph));\n }\n }\n}\n","import { CollectionDetailsResponse } from '../response/collectionResponse';\n\nexport class CollectionData {\n id: string;\n organizationId: string;\n name: string;\n externalId: string;\n readOnly: boolean;\n\n constructor(response: CollectionDetailsResponse) {\n this.id = response.id;\n this.organizationId = response.organizationId;\n this.name = response.name;\n this.externalId = response.externalId;\n this.readOnly = response.readOnly;\n }\n}\n","import { CollectionData } from '../data/collectionData';\n\nimport { CollectionView } from '../view/collectionView';\n\nimport { CipherString } from './cipherString';\nimport Domain from './domainBase';\n\nexport class Collection extends Domain {\n id: string;\n organizationId: string;\n name: CipherString;\n externalId: string;\n readOnly: boolean;\n\n constructor(obj?: CollectionData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n id: null,\n organizationId: null,\n name: null,\n externalId: null,\n readOnly: null,\n }, alreadyEncrypted, ['id', 'organizationId', 'externalId', 'readOnly']);\n }\n\n decrypt(): Promise {\n return this.decryptObj(new CollectionView(this), {\n name: null,\n }, this.organizationId);\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { TwoFactorProviderType } from 'jslib/enums/twoFactorProviderType';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { PasswordVerificationRequest } from 'jslib/models/request/passwordVerificationRequest';\n\n@Component({\n selector: 'app-two-factor-verify',\n templateUrl: 'two-factor-verify.component.html',\n})\nexport class TwoFactorVerifyComponent {\n @Input() type: TwoFactorProviderType;\n @Input() organizationId: string;\n @Output() onAuthed = new EventEmitter();\n\n masterPassword: string;\n formPromise: Promise;\n\n private masterPasswordHash: string;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private cryptoService: CryptoService) { }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = this.masterPasswordHash =\n await this.cryptoService.hashPassword(this.masterPassword, null);\n\n try {\n switch (this.type) {\n case -1:\n this.formPromise = this.apiService.getTwoFactorRecover(request);\n break;\n case TwoFactorProviderType.Duo:\n case TwoFactorProviderType.OrganizationDuo:\n if (this.organizationId != null) {\n this.formPromise = this.apiService.getTwoFactorOrganizationDuo(this.organizationId, request);\n } else {\n this.formPromise = this.apiService.getTwoFactorDuo(request);\n }\n break;\n case TwoFactorProviderType.Email:\n this.formPromise = this.apiService.getTwoFactorEmail(request);\n break;\n case TwoFactorProviderType.U2f:\n this.formPromise = this.apiService.getTwoFactorU2f(request);\n break;\n case TwoFactorProviderType.Authenticator:\n this.formPromise = this.apiService.getTwoFactorAuthenticator(request);\n break;\n case TwoFactorProviderType.Yubikey:\n this.formPromise = this.apiService.getTwoFactorYubiKey(request);\n break;\n }\n\n const response = await this.formPromise;\n this.onAuthed.emit({\n response: response,\n masterPasswordHash: this.masterPasswordHash,\n });\n } catch { }\n }\n}\n","import { CipherType } from '../../enums/cipherType';\n\nimport { Cipher } from '../domain/cipher';\n\nimport { CardApi } from '../api/cardApi';\nimport { FieldApi } from '../api/fieldApi';\nimport { IdentityApi } from '../api/identityApi';\nimport { LoginApi } from '../api/loginApi';\nimport { LoginUriApi } from '../api/loginUriApi';\nimport { SecureNoteApi } from '../api/secureNoteApi';\n\nimport { AttachmentRequest } from './attachmentRequest';\nimport { PasswordHistoryRequest } from './passwordHistoryRequest';\n\nexport class CipherRequest {\n type: CipherType;\n folderId: string;\n organizationId: string;\n name: string;\n notes: string;\n favorite: boolean;\n login: LoginApi;\n secureNote: SecureNoteApi;\n card: CardApi;\n identity: IdentityApi;\n fields: FieldApi[];\n passwordHistory: PasswordHistoryRequest[];\n // Deprecated, remove at some point and rename attachments2 to attachments\n attachments: { [id: string]: string; };\n attachments2: { [id: string]: AttachmentRequest; };\n\n constructor(cipher: Cipher) {\n this.type = cipher.type;\n this.folderId = cipher.folderId;\n this.organizationId = cipher.organizationId;\n this.name = cipher.name ? cipher.name.encryptedString : null;\n this.notes = cipher.notes ? cipher.notes.encryptedString : null;\n this.favorite = cipher.favorite;\n\n switch (this.type) {\n case CipherType.Login:\n this.login = new LoginApi();\n this.login.uris = null;\n this.login.username = cipher.login.username ? cipher.login.username.encryptedString : null;\n this.login.password = cipher.login.password ? cipher.login.password.encryptedString : null;\n this.login.passwordRevisionDate = cipher.login.passwordRevisionDate != null ?\n cipher.login.passwordRevisionDate.toISOString() : null;\n this.login.totp = cipher.login.totp ? cipher.login.totp.encryptedString : null;\n\n if (cipher.login.uris != null) {\n this.login.uris = cipher.login.uris.map((u) => {\n const uri = new LoginUriApi();\n uri.uri = u.uri != null ? u.uri.encryptedString : null;\n uri.match = u.match != null ? u.match : null;\n return uri;\n });\n }\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNoteApi();\n this.secureNote.type = cipher.secureNote.type;\n break;\n case CipherType.Card:\n this.card = new CardApi();\n this.card.cardholderName = cipher.card.cardholderName != null ?\n cipher.card.cardholderName.encryptedString : null;\n this.card.brand = cipher.card.brand != null ? cipher.card.brand.encryptedString : null;\n this.card.number = cipher.card.number != null ? cipher.card.number.encryptedString : null;\n this.card.expMonth = cipher.card.expMonth != null ? cipher.card.expMonth.encryptedString : null;\n this.card.expYear = cipher.card.expYear != null ? cipher.card.expYear.encryptedString : null;\n this.card.code = cipher.card.code != null ? cipher.card.code.encryptedString : null;\n break;\n case CipherType.Identity:\n this.identity = new IdentityApi();\n this.identity.title = cipher.identity.title != null ? cipher.identity.title.encryptedString : null;\n this.identity.firstName = cipher.identity.firstName != null ?\n cipher.identity.firstName.encryptedString : null;\n this.identity.middleName = cipher.identity.middleName != null ?\n cipher.identity.middleName.encryptedString : null;\n this.identity.lastName = cipher.identity.lastName != null ?\n cipher.identity.lastName.encryptedString : null;\n this.identity.address1 = cipher.identity.address1 != null ?\n cipher.identity.address1.encryptedString : null;\n this.identity.address2 = cipher.identity.address2 != null ?\n cipher.identity.address2.encryptedString : null;\n this.identity.address3 = cipher.identity.address3 != null ?\n cipher.identity.address3.encryptedString : null;\n this.identity.city = cipher.identity.city != null ? cipher.identity.city.encryptedString : null;\n this.identity.state = cipher.identity.state != null ? cipher.identity.state.encryptedString : null;\n this.identity.postalCode = cipher.identity.postalCode != null ?\n cipher.identity.postalCode.encryptedString : null;\n this.identity.country = cipher.identity.country != null ?\n cipher.identity.country.encryptedString : null;\n this.identity.company = cipher.identity.company != null ?\n cipher.identity.company.encryptedString : null;\n this.identity.email = cipher.identity.email != null ? cipher.identity.email.encryptedString : null;\n this.identity.phone = cipher.identity.phone != null ? cipher.identity.phone.encryptedString : null;\n this.identity.ssn = cipher.identity.ssn != null ? cipher.identity.ssn.encryptedString : null;\n this.identity.username = cipher.identity.username != null ?\n cipher.identity.username.encryptedString : null;\n this.identity.passportNumber = cipher.identity.passportNumber != null ?\n cipher.identity.passportNumber.encryptedString : null;\n this.identity.licenseNumber = cipher.identity.licenseNumber != null ?\n cipher.identity.licenseNumber.encryptedString : null;\n break;\n default:\n break;\n }\n\n if (cipher.fields != null) {\n this.fields = cipher.fields.map((f) => {\n const field = new FieldApi();\n field.type = f.type;\n field.name = f.name ? f.name.encryptedString : null;\n field.value = f.value ? f.value.encryptedString : null;\n return field;\n });\n }\n\n if (cipher.passwordHistory != null) {\n this.passwordHistory = [];\n cipher.passwordHistory.forEach((ph) => {\n this.passwordHistory.push({\n lastUsedDate: ph.lastUsedDate,\n password: ph.password ? ph.password.encryptedString : null,\n });\n });\n }\n\n if (cipher.attachments != null) {\n this.attachments = {};\n this.attachments2 = {};\n cipher.attachments.forEach((attachment) => {\n const fileName = attachment.fileName ? attachment.fileName.encryptedString : null;\n this.attachments[attachment.id] = fileName;\n const attachmentRequest = new AttachmentRequest();\n attachmentRequest.fileName = fileName;\n if (attachment.key != null) {\n attachmentRequest.key = attachment.key.encryptedString;\n }\n this.attachments2[attachment.id] = attachmentRequest;\n });\n }\n }\n}\n","import { FieldType } from '../../enums/fieldType';\n\nimport { View } from './view';\n\nimport { Field } from '../domain/field';\n\nexport class FieldView implements View {\n name: string = null;\n value: string = null;\n type: FieldType = null;\n\n constructor(f?: Field) {\n if (!f) {\n return;\n }\n\n this.type = f.type;\n }\n\n get maskedValue(): string {\n return this.value != null ? '••••••••' : null;\n }\n}\n","
\n
\n

{{'twoStepLoginAuthDesc' | i18n}}

\n \n \n
\n
\n \n \n
\n
\n","import { Injectable } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport {\n ActivatedRoute,\n NavigationEnd,\n Router,\n} from '@angular/router';\n\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\n@Injectable()\nexport class RouterService {\n private previousUrl: string = undefined;\n private currentUrl: string = undefined;\n\n constructor(private router: Router, private activatedRoute: ActivatedRoute,\n private titleService: Title, i18nService: I18nService) {\n this.currentUrl = this.router.url;\n router.events.subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.previousUrl = this.currentUrl;\n this.currentUrl = event.url;\n\n let title = i18nService.t('pageTitle', 'SecretSafe');\n let titleId: string = null;\n let rawTitle: string = null;\n let child = this.activatedRoute.firstChild;\n while (child != null) {\n if (child.firstChild != null) {\n child = child.firstChild;\n } else if (child.snapshot.data != null && child.snapshot.data.title != null) {\n rawTitle = child.snapshot.data.title;\n break;\n } else if (child.snapshot.data != null && child.snapshot.data.titleId != null) {\n titleId = child.snapshot.data.titleId;\n break;\n } else {\n titleId = null;\n rawTitle = null;\n break;\n }\n }\n\n if (titleId != null || rawTitle != null) {\n const newTitle = rawTitle != null ? rawTitle : i18nService.t(titleId);\n if (newTitle != null && newTitle !== '') {\n title = (newTitle + ' | ' + title);\n }\n }\n this.titleService.setTitle(title);\n }\n });\n }\n\n getPreviousUrl() {\n return this.previousUrl;\n }\n\n setPreviousUrl(url: string) {\n this.previousUrl = url;\n }\n}\n","import { EncryptionType } from '../../enums/encryptionType';\n\nimport { CryptoService } from '../../abstractions/crypto.service';\n\nimport { Utils } from '../../misc/utils';\n\nexport class CipherString {\n encryptedString?: string;\n encryptionType?: EncryptionType;\n decryptedValue?: string;\n data?: string;\n iv?: string;\n mac?: string;\n\n constructor(encryptedStringOrType: string | EncryptionType, data?: string, iv?: string, mac?: string) {\n if (data != null) {\n // data and header\n const encType = encryptedStringOrType as EncryptionType;\n\n if (iv != null) {\n this.encryptedString = encType + '.' + iv + '|' + data;\n } else {\n this.encryptedString = encType + '.' + data;\n }\n\n // mac\n if (mac != null) {\n this.encryptedString += ('|' + mac);\n }\n\n this.encryptionType = encType;\n this.data = data;\n this.iv = iv;\n this.mac = mac;\n\n return;\n }\n\n this.encryptedString = encryptedStringOrType as string;\n if (!this.encryptedString) {\n return;\n }\n\n const headerPieces = this.encryptedString.split('.');\n let encPieces: string[] = null;\n\n if (headerPieces.length === 2) {\n try {\n this.encryptionType = parseInt(headerPieces[0], null);\n encPieces = headerPieces[1].split('|');\n } catch (e) {\n return;\n }\n } else {\n encPieces = this.encryptedString.split('|');\n this.encryptionType = encPieces.length === 3 ? EncryptionType.AesCbc128_HmacSha256_B64 :\n EncryptionType.AesCbc256_B64;\n }\n\n switch (this.encryptionType) {\n case EncryptionType.AesCbc128_HmacSha256_B64:\n case EncryptionType.AesCbc256_HmacSha256_B64:\n if (encPieces.length !== 3) {\n return;\n }\n\n this.iv = encPieces[0];\n this.data = encPieces[1];\n this.mac = encPieces[2];\n break;\n case EncryptionType.AesCbc256_B64:\n if (encPieces.length !== 2) {\n return;\n }\n\n this.iv = encPieces[0];\n this.data = encPieces[1];\n break;\n case EncryptionType.Rsa2048_OaepSha256_B64:\n case EncryptionType.Rsa2048_OaepSha1_B64:\n if (encPieces.length !== 1) {\n return;\n }\n\n this.data = encPieces[0];\n break;\n default:\n return;\n }\n }\n\n async decrypt(orgId: string): Promise {\n if (this.decryptedValue != null) {\n return this.decryptedValue;\n }\n\n let cryptoService: CryptoService;\n const containerService = (Utils.global as any).bitwardenContainerService;\n if (containerService) {\n cryptoService = containerService.getCryptoService();\n } else {\n throw new Error('global bitwardenContainerService not initialized.');\n }\n\n try {\n const orgKey = await cryptoService.getOrgKey(orgId);\n this.decryptedValue = await cryptoService.decryptToUtf8(this, orgKey);\n } catch (e) {\n this.decryptedValue = '[error: cannot decrypt]';\n }\n return this.decryptedValue;\n }\n}\n","export enum EventType {\n User_LoggedIn = 1000,\n User_ChangedPassword = 1001,\n User_Updated2fa = 1002,\n User_Disabled2fa = 1003,\n User_Recovered2fa = 1004,\n User_FailedLogIn = 1005,\n User_FailedLogIn2fa = 1006,\n User_ClientExportedVault = 1007,\n\n Cipher_Created = 1100,\n Cipher_Updated = 1101,\n Cipher_Deleted = 1102,\n Cipher_AttachmentCreated = 1103,\n Cipher_AttachmentDeleted = 1104,\n Cipher_Shared = 1105,\n Cipher_UpdatedCollections = 1106,\n Cipher_ClientViewed = 1107,\n Cipher_ClientToggledPasswordVisible = 1108,\n Cipher_ClientToggledHiddenFieldVisible = 1109,\n Cipher_ClientToggledCardCodeVisible = 1110,\n Cipher_ClientCopiedPassword = 1111,\n Cipher_ClientCopiedHiddenField = 1112,\n Cipher_ClientCopiedCardCode = 1113,\n Cipher_ClientAutofilled = 1114,\n Cipher_SoftDeleted = 1115,\n Cipher_Restored = 1116,\n\n Collection_Created = 1300,\n Collection_Updated = 1301,\n Collection_Deleted = 1302,\n\n Group_Created = 1400,\n Group_Updated = 1401,\n Group_Deleted = 1402,\n\n OrganizationUser_Invited = 1500,\n OrganizationUser_Confirmed = 1501,\n OrganizationUser_Updated = 1502,\n OrganizationUser_Removed = 1503,\n OrganizationUser_UpdatedGroups = 1504,\n\n Organization_Updated = 1600,\n Organization_PurgedVault = 1601,\n // Organization_ClientExportedVault = 1602,\n\n Policy_Created = 1700,\n Policy_Updated = 1701,\n Policy_Deleted = 1702,\n}\n","import {\n Component,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { SyncService } from 'jslib/abstractions/sync.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { Organization } from 'jslib/models/domain/organization';\n\nimport { Utils } from 'jslib/misc/utils';\n\n@Component({\n selector: 'app-organizations',\n templateUrl: 'organizations.component.html',\n})\nexport class OrganizationsComponent implements OnInit {\n @Input() vault = false;\n\n organizations: Organization[];\n loaded: boolean = false;\n actionPromise: Promise;\n\n constructor(private userService: UserService, private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService, private apiService: ApiService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private syncService: SyncService) { }\n\n async ngOnInit() {\n if (!this.vault) {\n await this.load();\n }\n }\n\n async load() {\n const orgs = await this.userService.getAllOrganizations();\n orgs.sort(Utils.getSortFunction(this.i18nService, 'name'));\n this.organizations = orgs;\n this.loaded = true;\n }\n\n async leave(org: Organization) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('leaveOrganizationConfirmation'), org.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.apiService.postLeaveOrganization(org.id).then(() => {\n return this.syncService.fullSync(true);\n });\n await this.actionPromise;\n this.analytics.eventTrack.next({ action: 'Left Organization' });\n this.toasterService.popAsync('success', null, this.i18nService.t('leftOrganization'));\n await this.load();\n } catch { }\n }\n}\n","export abstract class TotpService {\n getCode: (key: string) => Promise;\n getTimeInterval: (key: string) => number;\n isAutoCopyEnabled: () => Promise;\n}\n","export enum OrganizationUserStatusType {\n Invited = 0,\n Accepted = 1,\n Confirmed = 2,\n}\n","import { UriMatchType } from '../../enums/uriMatchType';\n\nimport { View } from './view';\n\nimport { LoginUri } from '../domain/loginUri';\n\nimport { Utils } from '../../misc/utils';\n\nconst CanLaunchWhitelist = [\n 'https://',\n 'http://',\n 'ssh://',\n 'ftp://',\n 'sftp://',\n 'irc://',\n 'vnc://',\n 'chrome://',\n 'iosapp://',\n 'androidapp://',\n];\n\nexport class LoginUriView implements View {\n match: UriMatchType = null;\n\n // tslint:disable\n private _uri: string = null;\n private _domain: string = null;\n private _hostname: string = null;\n private _canLaunch: boolean = null;\n // tslint:enable\n\n constructor(u?: LoginUri) {\n if (!u) {\n return;\n }\n\n this.match = u.match;\n }\n\n get uri(): string {\n return this._uri;\n }\n set uri(value: string) {\n this._uri = value;\n this._domain = null;\n this._canLaunch = null;\n }\n\n get domain(): string {\n if (this._domain == null && this.uri != null) {\n this._domain = Utils.getDomain(this.uri);\n if (this._domain === '') {\n this._domain = null;\n }\n }\n\n return this._domain;\n }\n\n get hostname(): string {\n if (this._hostname == null && this.uri != null) {\n this._hostname = Utils.getHostname(this.uri);\n if (this._hostname === '') {\n this._hostname = null;\n }\n }\n\n return this._hostname;\n }\n\n get hostnameOrUri(): string {\n return this.hostname != null ? this.hostname : this.uri;\n }\n\n get isWebsite(): boolean {\n return this.uri != null && (this.uri.indexOf('http://') === 0 || this.uri.indexOf('https://') === 0 ||\n (this.uri.indexOf('://') < 0 && Utils.tldEndingRegex.test(this.uri)));\n }\n\n get canLaunch(): boolean {\n if (this._canLaunch != null) {\n return this._canLaunch;\n }\n if (this.uri != null && this.match !== UriMatchType.RegularExpression) {\n const uri = this.launchUri;\n for (let i = 0; i < CanLaunchWhitelist.length; i++) {\n if (uri.indexOf(CanLaunchWhitelist[i]) === 0) {\n this._canLaunch = true;\n return this._canLaunch;\n }\n }\n }\n this._canLaunch = false;\n return this._canLaunch;\n }\n\n get launchUri(): string {\n return this.uri.indexOf('://') < 0 && Utils.tldEndingRegex.test(this.uri) ? ('http://' + this.uri) : this.uri;\n }\n}\n","export enum PolicyType {\n TwoFactorAuthentication = 0,\n MasterPassword = 1,\n PasswordGenerator = 2,\n}\n","import {\n EventEmitter,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { TwoFactorProviderType } from 'jslib/enums/twoFactorProviderType';\nimport { TwoFactorProviderRequest } from 'jslib/models/request/twoFactorProviderRequest';\n\nexport abstract class TwoFactorBaseComponent {\n @Output() onUpdated = new EventEmitter();\n\n type: TwoFactorProviderType;\n organizationId: string;\n twoFactorProviderType = TwoFactorProviderType;\n enabled = false;\n authed = false;\n\n protected masterPasswordHash: string;\n\n constructor(protected apiService: ApiService, protected i18nService: I18nService,\n protected analytics: Angulartics2, protected toasterService: ToasterService,\n protected platformUtilsService: PlatformUtilsService) { }\n\n protected auth(authResponse: any) {\n this.masterPasswordHash = authResponse.masterPasswordHash;\n this.authed = true;\n }\n\n protected async enable(enableFunction: () => Promise) {\n try {\n await enableFunction();\n this.analytics.eventTrack.next({\n action: 'Enabled Two-step ' + TwoFactorProviderType[this.type].toString(),\n });\n this.onUpdated.emit(true);\n } catch { }\n }\n\n protected async disable(promise: Promise) {\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('twoStepDisableDesc'),\n this.i18nService.t('disable'), this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n\n try {\n const request = new TwoFactorProviderRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n request.type = this.type;\n if (this.organizationId != null) {\n promise = this.apiService.putTwoFactorOrganizationDisable(this.organizationId, request);\n } else {\n promise = this.apiService.putTwoFactorDisable(request);\n }\n await promise;\n this.enabled = false;\n this.analytics.eventTrack.next({\n action: 'Disabled Two-step ' + TwoFactorProviderType[this.type].toString(),\n });\n this.toasterService.popAsync('success', null, this.i18nService.t('twoStepDisabled'));\n this.onUpdated.emit(false);\n } catch { }\n }\n}\n","
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n\n
\n
\n \n
\n
\n
\n \"Visa,\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n
\n\n \n {{'verifyBankAccountInitialDesc' | i18n}} {{'verifyBankAccountFailureWarning' | i18n}}\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n\n
\n
\n {{'paypalClickSubmit' | i18n}}\n
\n
\n\n \n {{'makeSureEnoughCredit' | i18n}}\n \n\n","import { Importer } from '../importers/importer';\n\nexport interface ImportOption {\n id: string;\n name: string;\n}\nexport abstract class ImportService {\n featuredImportOptions: ImportOption[];\n regularImportOptions: ImportOption[];\n getImportOptions: () => ImportOption[];\n import: (importer: Importer, fileContents: string, organizationId?: string) => Promise;\n getImporter: (format: string, organization?: boolean) => Importer;\n}\n","export abstract class ExportService {\n getExport: (format?: 'csv' | 'json') => Promise;\n getOrganizationExport: (organizationId: string, format?: 'csv' | 'json') => Promise;\n getFileName: (prefix?: string, extension?: string) => string;\n}\n","import {\n ComponentFactoryResolver,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { CipherView } from 'jslib/models/view/cipherView';\n\nimport { Organization } from 'jslib/models/domain/organization';\n\nimport { ModalComponent } from '../modal.component';\nimport { AddEditComponent as OrgAddEditComponent } from '../organizations/vault/add-edit.component';\nimport { AddEditComponent } from '../vault/add-edit.component';\n\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nexport class CipherReportComponent {\n @ViewChild('cipherAddEdit', { read: ViewContainerRef }) cipherAddEditModalRef: ViewContainerRef;\n\n loading = false;\n hasLoaded = false;\n ciphers: CipherView[] = [];\n organization: Organization;\n\n private modal: ModalComponent = null;\n\n constructor(private componentFactoryResolver: ComponentFactoryResolver, protected userService: UserService,\n protected messagingService: MessagingService, public requiresPaid: boolean) { }\n\n async load() {\n this.loading = true;\n await this.setCiphers();\n this.loading = false;\n this.hasLoaded = true;\n }\n\n selectCipher(cipher: CipherView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.cipherAddEditModalRef.createComponent(factory).instance;\n let childComponent: OrgAddEditComponent | AddEditComponent;\n if (this.organization != null) {\n childComponent = this.modal.show(OrgAddEditComponent, this.cipherAddEditModalRef);\n (childComponent as OrgAddEditComponent).organization = this.organization;\n } else {\n childComponent = this.modal.show(AddEditComponent, this.cipherAddEditModalRef);\n }\n\n childComponent.cipherId = cipher == null ? null : cipher.id;\n if (this.organization != null) {\n childComponent.organizationId = this.organization.id;\n }\n childComponent.onSavedCipher.subscribe(async (c: CipherView) => {\n this.modal.close();\n await this.load();\n });\n childComponent.onDeletedCipher.subscribe(async (c: CipherView) => {\n this.modal.close();\n await this.load();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n\n return childComponent;\n }\n\n protected async checkAccess(): Promise {\n if (this.organization != null) {\n // TODO: Maybe we want to just make sure they are not on a free plan? Just compare useTotp for now\n // since all paid plans include useTotp\n if (this.requiresPaid && !this.organization.useTotp) {\n this.messagingService.send('upgradeOrganization', { organizationId: this.organization.id });\n return false;\n }\n } else {\n const accessPremium = await this.userService.canAccessPremium();\n if (this.requiresPaid && !accessPremium) {\n this.messagingService.send('premiumRequired');\n this.loading = false;\n return false;\n }\n }\n return true;\n }\n\n protected async setCiphers() {\n this.ciphers = [];\n }\n}\n","import { CipherType } from '../../enums/cipherType';\n\nimport { CipherData } from '../data/cipherData';\n\nimport { CipherView } from '../view/cipherView';\n\nimport { Attachment } from './attachment';\nimport { Card } from './card';\nimport { CipherString } from './cipherString';\nimport Domain from './domainBase';\nimport { Field } from './field';\nimport { Identity } from './identity';\nimport { Login } from './login';\nimport { Password } from './password';\nimport { SecureNote } from './secureNote';\n\nexport class Cipher extends Domain {\n id: string;\n organizationId: string;\n folderId: string;\n name: CipherString;\n notes: CipherString;\n type: CipherType;\n favorite: boolean;\n organizationUseTotp: boolean;\n edit: boolean;\n revisionDate: Date;\n localData: any;\n login: Login;\n identity: Identity;\n card: Card;\n secureNote: SecureNote;\n attachments: Attachment[];\n fields: Field[];\n passwordHistory: Password[];\n collectionIds: string[];\n deletedDate: Date;\n\n constructor(obj?: CipherData, alreadyEncrypted: boolean = false, localData: any = null) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n id: null,\n userId: null,\n organizationId: null,\n folderId: null,\n name: null,\n notes: null,\n }, alreadyEncrypted, ['id', 'userId', 'organizationId', 'folderId']);\n\n this.type = obj.type;\n this.favorite = obj.favorite;\n this.organizationUseTotp = obj.organizationUseTotp;\n this.edit = obj.edit;\n this.revisionDate = obj.revisionDate != null ? new Date(obj.revisionDate) : null;\n this.collectionIds = obj.collectionIds;\n this.localData = localData;\n this.deletedDate = obj.deletedDate != null ? new Date(obj.deletedDate) : null;\n\n switch (this.type) {\n case CipherType.Login:\n this.login = new Login(obj.login, alreadyEncrypted);\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNote(obj.secureNote, alreadyEncrypted);\n break;\n case CipherType.Card:\n this.card = new Card(obj.card, alreadyEncrypted);\n break;\n case CipherType.Identity:\n this.identity = new Identity(obj.identity, alreadyEncrypted);\n break;\n default:\n break;\n }\n\n if (obj.attachments != null) {\n this.attachments = obj.attachments.map((a) => new Attachment(a, alreadyEncrypted));\n } else {\n this.attachments = null;\n }\n\n if (obj.fields != null) {\n this.fields = obj.fields.map((f) => new Field(f, alreadyEncrypted));\n } else {\n this.fields = null;\n }\n\n if (obj.passwordHistory != null) {\n this.passwordHistory = obj.passwordHistory.map((ph) => new Password(ph, alreadyEncrypted));\n } else {\n this.passwordHistory = null;\n }\n }\n\n async decrypt(): Promise {\n const model = new CipherView(this);\n\n await this.decryptObj(model, {\n name: null,\n notes: null,\n }, this.organizationId);\n\n switch (this.type) {\n case CipherType.Login:\n model.login = await this.login.decrypt(this.organizationId);\n break;\n case CipherType.SecureNote:\n model.secureNote = await this.secureNote.decrypt(this.organizationId);\n break;\n case CipherType.Card:\n model.card = await this.card.decrypt(this.organizationId);\n break;\n case CipherType.Identity:\n model.identity = await this.identity.decrypt(this.organizationId);\n break;\n default:\n break;\n }\n\n const orgId = this.organizationId;\n\n if (this.attachments != null && this.attachments.length > 0) {\n const attachments: any[] = [];\n await this.attachments.reduce((promise, attachment) => {\n return promise.then(() => {\n return attachment.decrypt(orgId);\n }).then((decAttachment) => {\n attachments.push(decAttachment);\n });\n }, Promise.resolve());\n model.attachments = attachments;\n }\n\n if (this.fields != null && this.fields.length > 0) {\n const fields: any[] = [];\n await this.fields.reduce((promise, field) => {\n return promise.then(() => {\n return field.decrypt(orgId);\n }).then((decField) => {\n fields.push(decField);\n });\n }, Promise.resolve());\n model.fields = fields;\n }\n\n if (this.passwordHistory != null && this.passwordHistory.length > 0) {\n const passwordHistory: any[] = [];\n await this.passwordHistory.reduce((promise, ph) => {\n return promise.then(() => {\n return ph.decrypt(orgId);\n }).then((decPh) => {\n passwordHistory.push(decPh);\n });\n }, Promise.resolve());\n model.passwordHistory = passwordHistory;\n }\n\n return model;\n }\n\n toCipherData(userId: string): CipherData {\n const c = new CipherData();\n c.id = this.id;\n c.organizationId = this.organizationId;\n c.folderId = this.folderId;\n c.userId = this.organizationId != null ? userId : null;\n c.edit = this.edit;\n c.organizationUseTotp = this.organizationUseTotp;\n c.favorite = this.favorite;\n c.revisionDate = this.revisionDate != null ? this.revisionDate.toISOString() : null;\n c.type = this.type;\n c.collectionIds = this.collectionIds;\n c.deletedDate = this.deletedDate != null ? this.deletedDate.toISOString() : null;\n\n this.buildDataModel(this, c, {\n name: null,\n notes: null,\n });\n\n switch (c.type) {\n case CipherType.Login:\n c.login = this.login.toLoginData();\n break;\n case CipherType.SecureNote:\n c.secureNote = this.secureNote.toSecureNoteData();\n break;\n case CipherType.Card:\n c.card = this.card.toCardData();\n break;\n case CipherType.Identity:\n c.identity = this.identity.toIdentityData();\n break;\n default:\n break;\n }\n\n if (this.fields != null) {\n c.fields = this.fields.map((f) => f.toFieldData());\n }\n if (this.attachments != null) {\n c.attachments = this.attachments.map((a) => a.toAttachmentData());\n }\n if (this.passwordHistory != null) {\n c.passwordHistory = this.passwordHistory.map((ph) => ph.toPasswordHistoryData());\n }\n return c;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { DeviceType } from 'jslib/enums/deviceType';\nimport { EventType } from 'jslib/enums/eventType';\n\nimport { EventResponse } from 'jslib/models/response/eventResponse';\n\n@Injectable()\nexport class EventService {\n constructor(private i18nService: I18nService) { }\n\n getDefaultDateFilters() {\n const d = new Date();\n const end = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 23, 59);\n d.setDate(d.getDate() - 30);\n const start = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 0, 0);\n return [this.toDateTimeLocalString(start), this.toDateTimeLocalString(end)];\n }\n\n formatDateFilters(filterStart: string, filterEnd: string) {\n const start: Date = new Date(filterStart);\n const end: Date = new Date(filterEnd + ':59.999');\n if (isNaN(start.getTime()) || isNaN(end.getTime()) || end < start) {\n throw new Error('Invalid date range.');\n }\n return [start.toISOString(), end.toISOString()];\n }\n\n getEventInfo(ev: EventResponse, options = new EventOptions()): EventInfo {\n const appInfo = this.getAppInfo(ev.deviceType);\n return {\n message: this.getEventMessage(ev, options),\n appIcon: appInfo[0],\n appName: appInfo[1],\n };\n }\n\n private getEventMessage(ev: EventResponse, options: EventOptions) {\n let msg = '';\n switch (ev.type) {\n // User\n case EventType.User_LoggedIn:\n msg = this.i18nService.t('loggedIn');\n break;\n case EventType.User_ChangedPassword:\n msg = this.i18nService.t('changedPassword');\n break;\n case EventType.User_Updated2fa:\n msg = this.i18nService.t('enabledUpdated2fa');\n break;\n case EventType.User_Disabled2fa:\n msg = this.i18nService.t('disabled2fa');\n break;\n case EventType.User_Recovered2fa:\n msg = this.i18nService.t('recovered2fa');\n break;\n case EventType.User_FailedLogIn:\n msg = this.i18nService.t('failedLogin');\n break;\n case EventType.User_FailedLogIn2fa:\n msg = this.i18nService.t('failedLogin2fa');\n break;\n case EventType.User_ClientExportedVault:\n msg = this.i18nService.t('exportedVault');\n break;\n // Cipher\n case EventType.Cipher_Created:\n msg = this.i18nService.t('createdItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_Updated:\n msg = this.i18nService.t('editedItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_Deleted:\n msg = this.i18nService.t('deletedItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_AttachmentCreated:\n msg = this.i18nService.t('createdAttachmentForItem', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_AttachmentDeleted:\n msg = this.i18nService.t('deletedAttachmentForItem', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_Shared:\n msg = this.i18nService.t('sharedItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_ClientViewed:\n msg = this.i18nService.t('viewedItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_ClientToggledPasswordVisible:\n msg = this.i18nService.t('viewedPasswordItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_ClientToggledHiddenFieldVisible:\n msg = this.i18nService.t('viewedHiddenFieldItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_ClientToggledCardCodeVisible:\n msg = this.i18nService.t('viewedSecurityCodeItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_ClientCopiedHiddenField:\n msg = this.i18nService.t('copiedHiddenFieldItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_ClientCopiedPassword:\n msg = this.i18nService.t('copiedPasswordItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_ClientCopiedCardCode:\n msg = this.i18nService.t('copiedSecurityCodeItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_ClientAutofilled:\n msg = this.i18nService.t('autofilledItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_UpdatedCollections:\n msg = this.i18nService.t('editedCollectionsForItem', this.formatCipherId(ev, options));\n break;\n // Collection\n case EventType.Collection_Created:\n msg = this.i18nService.t('createdCollectionId', this.formatCollectionId(ev));\n break;\n case EventType.Collection_Updated:\n msg = this.i18nService.t('editedCollectionId', this.formatCollectionId(ev));\n break;\n case EventType.Collection_Deleted:\n msg = this.i18nService.t('deletedCollectionId', this.formatCollectionId(ev));\n break;\n // Group\n case EventType.Group_Created:\n msg = this.i18nService.t('createdGroupId', this.formatGroupId(ev));\n break;\n case EventType.Group_Updated:\n msg = this.i18nService.t('editedGroupId', this.formatGroupId(ev));\n break;\n case EventType.Group_Deleted:\n msg = this.i18nService.t('deletedGroupId', this.formatGroupId(ev));\n break;\n // Org user\n case EventType.OrganizationUser_Invited:\n msg = this.i18nService.t('invitedUserId', this.formatOrgUserId(ev));\n break;\n case EventType.OrganizationUser_Confirmed:\n msg = this.i18nService.t('confirmedUserId', this.formatOrgUserId(ev));\n break;\n case EventType.OrganizationUser_Updated:\n msg = this.i18nService.t('editedUserId', this.formatOrgUserId(ev));\n break;\n case EventType.OrganizationUser_Removed:\n msg = this.i18nService.t('removedUserId', this.formatOrgUserId(ev));\n break;\n case EventType.OrganizationUser_UpdatedGroups:\n msg = this.i18nService.t('editedGroupsForUser', this.formatOrgUserId(ev));\n break;\n // Org\n case EventType.Organization_Updated:\n msg = this.i18nService.t('editedOrgSettings');\n break;\n case EventType.Organization_PurgedVault:\n msg = this.i18nService.t('purgedOrganizationVault');\n break;\n /*\n case EventType.Organization_ClientExportedVault:\n msg = this.i18nService.t('exportedOrganizationVault');\n break;\n */\n default:\n break;\n }\n return msg === '' ? null : msg;\n }\n\n private getAppInfo(deviceType: DeviceType): [string, string] {\n switch (deviceType) {\n case DeviceType.Android:\n return ['fa-android', this.i18nService.t('mobile') + ' - Android'];\n case DeviceType.iOS:\n return ['fa-apple', this.i18nService.t('mobile') + ' - iOS'];\n case DeviceType.UWP:\n return ['fa-windows', this.i18nService.t('mobile') + ' - Windows'];\n case DeviceType.ChromeExtension:\n return ['fa-chrome', this.i18nService.t('extension') + ' - Chrome'];\n case DeviceType.FirefoxExtension:\n return ['fa-firefox', this.i18nService.t('extension') + ' - Firefox'];\n case DeviceType.OperaExtension:\n return ['fa-opera', this.i18nService.t('extension') + ' - Opera'];\n case DeviceType.EdgeExtension:\n return ['fa-edge', this.i18nService.t('extension') + ' - Edge'];\n case DeviceType.VivaldiExtension:\n return ['fa-puzzle-piece', this.i18nService.t('extension') + ' - Vivaldi'];\n case DeviceType.SafariExtension:\n return ['fa-safari', this.i18nService.t('extension') + ' - Safari'];\n case DeviceType.WindowsDesktop:\n return ['fa-windows', this.i18nService.t('desktop') + ' - Windows'];\n case DeviceType.MacOsDesktop:\n return ['fa-apple', this.i18nService.t('desktop') + ' - macOS'];\n case DeviceType.LinuxDesktop:\n return ['fa-linux', this.i18nService.t('desktop') + ' - Linux'];\n case DeviceType.ChromeBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Chrome'];\n case DeviceType.FirefoxBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Firefox'];\n case DeviceType.OperaBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Opera'];\n case DeviceType.SafariBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Safari'];\n case DeviceType.VivaldiBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Vivaldi'];\n case DeviceType.EdgeBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Edge'];\n case DeviceType.IEBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - IE'];\n case DeviceType.UnknownBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - ' + this.i18nService.t('unknown')];\n default:\n return ['fa-globe', this.i18nService.t('unknown')];\n }\n }\n\n private formatCipherId(ev: EventResponse, options: EventOptions) {\n const shortId = this.getShortId(ev.cipherId);\n if (ev.organizationId == null || !options.cipherInfo) {\n return '' + shortId + '';\n }\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/organizations/' + ev.organizationId + '/vault?search=' + shortId +\n '&viewEvents=' + ev.cipherId);\n return a.outerHTML;\n }\n\n private formatGroupId(ev: EventResponse) {\n const shortId = this.getShortId(ev.groupId);\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/organizations/' + ev.organizationId + '/manage/groups?search=' + shortId);\n return a.outerHTML;\n }\n\n private formatCollectionId(ev: EventResponse) {\n const shortId = this.getShortId(ev.collectionId);\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/organizations/' + ev.organizationId + '/manage/collections?search=' + shortId);\n return a.outerHTML;\n }\n\n private formatOrgUserId(ev: EventResponse) {\n const shortId = this.getShortId(ev.organizationUserId);\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/organizations/' + ev.organizationId + '/manage/people?search=' + shortId +\n '&viewEvents=' + ev.organizationUserId);\n return a.outerHTML;\n }\n\n private makeAnchor(shortId: string) {\n const a = document.createElement('a');\n a.title = this.i18nService.t('view');\n a.innerHTML = '' + shortId + '';\n return a;\n }\n\n private getShortId(id: string) {\n return id.substring(0, 8);\n }\n\n private toDateTimeLocalString(date: Date) {\n return date.getFullYear() +\n '-' + this.pad(date.getMonth() + 1) +\n '-' + this.pad(date.getDate()) +\n 'T' + this.pad(date.getHours()) +\n ':' + this.pad(date.getMinutes());\n }\n\n private pad(num: number) {\n const norm = Math.floor(Math.abs(num));\n return (norm < 10 ? '0' : '') + norm;\n }\n}\n\nexport class EventInfo {\n message: string;\n appIcon: string;\n appName: string;\n}\n\nexport class EventOptions {\n cipherInfo = true;\n}\n","export enum DeviceType {\n Android = 0,\n iOS = 1,\n ChromeExtension = 2,\n FirefoxExtension = 3,\n OperaExtension = 4,\n EdgeExtension = 5,\n WindowsDesktop = 6,\n MacOsDesktop = 7,\n LinuxDesktop = 8,\n ChromeBrowser = 9,\n FirefoxBrowser = 10,\n OperaBrowser = 11,\n EdgeBrowser = 12,\n IEBrowser = 13,\n UnknownBrowser = 14,\n AndroidAmazon = 15,\n UWP = 16,\n SafariBrowser = 17,\n VivaldiBrowser = 18,\n VivaldiExtension = 19,\n SafariExtension = 20,\n}\n","export enum OrganizationUserType {\n Owner = 0,\n Admin = 1,\n User = 2,\n Manager = 3,\n}\n","import { KdfType } from '../enums/kdfType';\nimport { TwoFactorProviderType } from '../enums/twoFactorProviderType';\n\nimport { AuthResult } from '../models/domain/authResult';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { DeviceRequest } from '../models/request/deviceRequest';\nimport { KeysRequest } from '../models/request/keysRequest';\nimport { PreloginRequest } from '../models/request/preloginRequest';\nimport { TokenRequest } from '../models/request/tokenRequest';\n\nimport { ErrorResponse } from '../models/response/errorResponse';\nimport { IdentityTokenResponse } from '../models/response/identityTokenResponse';\nimport { IdentityTwoFactorResponse } from '../models/response/identityTwoFactorResponse';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { AppIdService } from '../abstractions/appId.service';\nimport { AuthService as AuthServiceAbstraction } from '../abstractions/auth.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { MessagingService } from '../abstractions/messaging.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\nimport { TokenService } from '../abstractions/token.service';\nimport { UserService } from '../abstractions/user.service';\n\nexport const TwoFactorProviders = {\n [TwoFactorProviderType.Authenticator]: {\n type: TwoFactorProviderType.Authenticator,\n name: null as string,\n description: null as string,\n priority: 1,\n sort: 1,\n premium: false,\n },\n [TwoFactorProviderType.Yubikey]: {\n type: TwoFactorProviderType.Yubikey,\n name: null as string,\n description: null as string,\n priority: 3,\n sort: 2,\n premium: true,\n },\n [TwoFactorProviderType.Duo]: {\n type: TwoFactorProviderType.Duo,\n name: 'Duo',\n description: null as string,\n priority: 2,\n sort: 3,\n premium: true,\n },\n [TwoFactorProviderType.OrganizationDuo]: {\n type: TwoFactorProviderType.OrganizationDuo,\n name: 'Duo (Organization)',\n description: null as string,\n priority: 10,\n sort: 4,\n premium: false,\n },\n [TwoFactorProviderType.U2f]: {\n type: TwoFactorProviderType.U2f,\n name: null as string,\n description: null as string,\n priority: 4,\n sort: 5,\n premium: true,\n },\n [TwoFactorProviderType.Email]: {\n type: TwoFactorProviderType.Email,\n name: null as string,\n description: null as string,\n priority: 0,\n sort: 6,\n premium: false,\n },\n};\n\nexport class AuthService implements AuthServiceAbstraction {\n email: string;\n masterPasswordHash: string;\n twoFactorProvidersData: Map;\n selectedTwoFactorProviderType: TwoFactorProviderType = null;\n\n private key: SymmetricCryptoKey;\n private kdf: KdfType;\n private kdfIterations: number;\n\n constructor(private cryptoService: CryptoService, private apiService: ApiService,\n private userService: UserService, private tokenService: TokenService,\n private appIdService: AppIdService, private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService, private messagingService: MessagingService,\n private setCryptoKeys = true) { }\n\n init() {\n TwoFactorProviders[TwoFactorProviderType.Email].name = this.i18nService.t('emailTitle');\n TwoFactorProviders[TwoFactorProviderType.Email].description = this.i18nService.t('emailDesc');\n\n TwoFactorProviders[TwoFactorProviderType.Authenticator].name = this.i18nService.t('authenticatorAppTitle');\n TwoFactorProviders[TwoFactorProviderType.Authenticator].description =\n this.i18nService.t('authenticatorAppDesc');\n\n TwoFactorProviders[TwoFactorProviderType.Duo].description = this.i18nService.t('duoDesc');\n\n TwoFactorProviders[TwoFactorProviderType.OrganizationDuo].name =\n 'Duo (' + this.i18nService.t('organization') + ')';\n TwoFactorProviders[TwoFactorProviderType.OrganizationDuo].description =\n this.i18nService.t('duoOrganizationDesc');\n\n TwoFactorProviders[TwoFactorProviderType.U2f].name = this.i18nService.t('u2fTitle');\n TwoFactorProviders[TwoFactorProviderType.U2f].description = this.i18nService.t('u2fDesc');\n\n TwoFactorProviders[TwoFactorProviderType.Yubikey].name = this.i18nService.t('yubiKeyTitle');\n TwoFactorProviders[TwoFactorProviderType.Yubikey].description = this.i18nService.t('yubiKeyDesc');\n }\n\n async logIn(email: string, masterPassword: string): Promise {\n this.selectedTwoFactorProviderType = null;\n const key = await this.makePreloginKey(masterPassword, email);\n const hashedPassword = await this.cryptoService.hashPassword(masterPassword, key);\n return await this.logInHelper(email, hashedPassword, key);\n }\n\n async logInTwoFactor(twoFactorProvider: TwoFactorProviderType, twoFactorToken: string,\n remember?: boolean): Promise {\n return await this.logInHelper(this.email, this.masterPasswordHash, this.key, twoFactorProvider,\n twoFactorToken, remember);\n }\n\n async logInComplete(email: string, masterPassword: string, twoFactorProvider: TwoFactorProviderType,\n twoFactorToken: string, remember?: boolean): Promise {\n this.selectedTwoFactorProviderType = null;\n const key = await this.makePreloginKey(masterPassword, email);\n const hashedPassword = await this.cryptoService.hashPassword(masterPassword, key);\n return await this.logInHelper(email, hashedPassword, key, twoFactorProvider, twoFactorToken, remember);\n }\n\n logOut(callback: Function) {\n callback();\n this.messagingService.send('loggedOut');\n }\n\n getSupportedTwoFactorProviders(win: Window): any[] {\n const providers: any[] = [];\n if (this.twoFactorProvidersData == null) {\n return providers;\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.OrganizationDuo) &&\n this.platformUtilsService.supportsDuo()) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.OrganizationDuo]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.Authenticator)) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Authenticator]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.Yubikey)) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Yubikey]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.Duo) && this.platformUtilsService.supportsDuo()) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Duo]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.U2f) && this.platformUtilsService.supportsU2f(win)) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.U2f]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.Email)) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Email]);\n }\n\n return providers;\n }\n\n getDefaultTwoFactorProvider(u2fSupported: boolean): TwoFactorProviderType {\n if (this.twoFactorProvidersData == null) {\n return null;\n }\n\n if (this.selectedTwoFactorProviderType != null &&\n this.twoFactorProvidersData.has(this.selectedTwoFactorProviderType)) {\n return this.selectedTwoFactorProviderType;\n }\n\n let providerType: TwoFactorProviderType = null;\n let providerPriority = -1;\n this.twoFactorProvidersData.forEach((value, type) => {\n const provider = (TwoFactorProviders as any)[type];\n if (provider != null && provider.priority > providerPriority) {\n if (type === TwoFactorProviderType.U2f && !u2fSupported) {\n return;\n }\n\n providerType = type;\n providerPriority = provider.priority;\n }\n });\n\n return providerType;\n }\n\n async makePreloginKey(masterPassword: string, email: string): Promise {\n email = email.trim().toLowerCase();\n this.kdf = null;\n this.kdfIterations = null;\n try {\n const preloginResponse = await this.apiService.postPrelogin(new PreloginRequest(email));\n if (preloginResponse != null) {\n this.kdf = preloginResponse.kdf;\n this.kdfIterations = preloginResponse.kdfIterations;\n }\n } catch (e) {\n if (e == null || e.statusCode !== 404) {\n throw e;\n }\n }\n return this.cryptoService.makeKey(masterPassword, email, this.kdf, this.kdfIterations);\n }\n\n private async logInHelper(email: string, hashedPassword: string, key: SymmetricCryptoKey,\n twoFactorProvider?: TwoFactorProviderType, twoFactorToken?: string, remember?: boolean): Promise {\n const storedTwoFactorToken = await this.tokenService.getTwoFactorToken(email);\n const appId = await this.appIdService.getAppId();\n const deviceRequest = new DeviceRequest(appId, this.platformUtilsService);\n\n let request: TokenRequest;\n if (twoFactorToken != null && twoFactorProvider != null) {\n request = new TokenRequest(email, hashedPassword, twoFactorProvider, twoFactorToken, remember,\n deviceRequest);\n } else if (storedTwoFactorToken != null) {\n request = new TokenRequest(email, hashedPassword, TwoFactorProviderType.Remember,\n storedTwoFactorToken, false, deviceRequest);\n } else {\n request = new TokenRequest(email, hashedPassword, null, null, false, deviceRequest);\n }\n\n const response = await this.apiService.postIdentityToken(request);\n\n this.clearState();\n const result = new AuthResult();\n result.twoFactor = !(response as any).accessToken;\n\n if (result.twoFactor) {\n // two factor required\n const twoFactorResponse = response as IdentityTwoFactorResponse;\n this.email = email;\n this.masterPasswordHash = hashedPassword;\n this.key = this.setCryptoKeys ? key : null;\n this.twoFactorProvidersData = twoFactorResponse.twoFactorProviders2;\n result.twoFactorProviders = twoFactorResponse.twoFactorProviders2;\n return result;\n }\n\n const tokenResponse = response as IdentityTokenResponse;\n if (tokenResponse.twoFactorToken != null) {\n await this.tokenService.setTwoFactorToken(tokenResponse.twoFactorToken, email);\n }\n\n await this.tokenService.setTokens(tokenResponse.accessToken, tokenResponse.refreshToken);\n await this.userService.setInformation(this.tokenService.getUserId(), this.tokenService.getEmail(),\n this.kdf, this.kdfIterations);\n if (this.setCryptoKeys) {\n await this.cryptoService.setKey(key);\n await this.cryptoService.setKeyHash(hashedPassword);\n await this.cryptoService.setEncKey(tokenResponse.key);\n\n // User doesn't have a key pair yet (old account), let's generate one for them\n if (tokenResponse.privateKey == null) {\n try {\n const keyPair = await this.cryptoService.makeKeyPair();\n await this.apiService.postAccountKeys(new KeysRequest(keyPair[0], keyPair[1].encryptedString));\n tokenResponse.privateKey = keyPair[1].encryptedString;\n } catch (e) {\n // tslint:disable-next-line\n console.error(e);\n }\n }\n\n await this.cryptoService.setEncPrivateKey(tokenResponse.privateKey);\n }\n\n this.messagingService.send('loggedIn');\n return result;\n }\n\n private clearState(): void {\n this.email = null;\n this.masterPasswordHash = null;\n this.twoFactorProvidersData = null;\n this.selectedTwoFactorProviderType = null;\n }\n}\n","import {\n Component,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nimport { CollectionService } from 'jslib/abstractions/collection.service';\nimport { FolderService } from 'jslib/abstractions/folder.service';\nimport { StorageService } from 'jslib/abstractions/storage.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { GroupingsComponent as BaseGroupingsComponent } from 'jslib/angular/components/groupings.component';\n\n@Component({\n selector: 'app-vault-groupings',\n templateUrl: 'groupings.component.html',\n})\nexport class GroupingsComponent extends BaseGroupingsComponent {\n @Output() onSearchTextChanged = new EventEmitter();\n\n searchText: string = '';\n searchPlaceholder: string = null;\n\n constructor(collectionService: CollectionService, folderService: FolderService,\n storageService: StorageService, userService: UserService) {\n super(collectionService, folderService, storageService, userService);\n }\n\n searchTextChanged() {\n this.onSearchTextChanged.emit(this.searchText);\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { EventService } from 'jslib/abstractions/event.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { SearchService } from 'jslib/abstractions/search.service';\n\nimport { CiphersComponent as BaseCiphersComponent } from 'jslib/angular/components/ciphers.component';\n\nimport { CipherType } from 'jslib/enums/cipherType';\nimport { EventType } from 'jslib/enums/eventType';\n\nimport { CipherView } from 'jslib/models/view/cipherView';\n\nconst MaxCheckedCount = 500;\n\n@Component({\n selector: 'app-vault-ciphers',\n templateUrl: 'ciphers.component.html',\n})\nexport class CiphersComponent extends BaseCiphersComponent implements OnDestroy {\n @Input() showAddNew = true;\n @Output() onAttachmentsClicked = new EventEmitter();\n @Output() onShareClicked = new EventEmitter();\n @Output() onCollectionsClicked = new EventEmitter();\n @Output() onCloneClicked = new EventEmitter();\n\n cipherType = CipherType;\n actionPromise: Promise;\n\n constructor(searchService: SearchService, protected analytics: Angulartics2,\n protected toasterService: ToasterService, protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService, protected cipherService: CipherService,\n protected eventService: EventService) {\n super(searchService);\n this.pageSize = 200;\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n checkCipher(c: CipherView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n launch(uri: string) {\n this.platformUtilsService.eventTrack('Launched Login URI');\n this.platformUtilsService.launchUri(uri);\n }\n\n selectAll(select: boolean) {\n if (select) {\n this.selectAll(false);\n }\n const selectCount = select && this.ciphers.length > MaxCheckedCount ? MaxCheckedCount : this.ciphers.length;\n for (let i = 0; i < selectCount; i++) {\n this.checkCipher(this.ciphers[i], select);\n }\n }\n\n getSelected(): CipherView[] {\n if (this.ciphers == null) {\n return [];\n }\n return this.ciphers.filter((c) => !!(c as any).checked);\n }\n\n getSelectedIds(): string[] {\n return this.getSelected().map((c) => c.id);\n }\n\n attachments(c: CipherView) {\n this.onAttachmentsClicked.emit(c);\n }\n\n share(c: CipherView) {\n this.onShareClicked.emit(c);\n }\n\n collections(c: CipherView) {\n this.onCollectionsClicked.emit(c);\n }\n\n clone(c: CipherView) {\n this.onCloneClicked.emit(c);\n }\n\n async delete(c: CipherView): Promise {\n if (this.actionPromise != null) {\n return;\n }\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteItemConfirmation'), this.i18nService.t('deleteItem'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.deleteCipher(c.id);\n await this.actionPromise;\n this.analytics.eventTrack.next({ action: 'Deleted Cipher' });\n this.toasterService.popAsync('success', null, this.i18nService.t('deletedItem'));\n this.refresh();\n } catch { }\n this.actionPromise = null;\n }\n\n copy(cipher: CipherView, value: string, typeI18nKey: string, aType: string) {\n if (value == null) {\n return;\n }\n\n this.analytics.eventTrack.next({ action: 'Copied ' + aType.toLowerCase() + ' from listing.' });\n this.platformUtilsService.copyToClipboard(value, { window: window });\n this.toasterService.popAsync('info', null,\n this.i18nService.t('valueCopied', this.i18nService.t(typeI18nKey)));\n\n if (typeI18nKey === 'password') {\n this.eventService.collect(EventType.Cipher_ClientToggledHiddenFieldVisible, cipher.id);\n } else if (typeI18nKey === 'securityCode') {\n this.eventService.collect(EventType.Cipher_ClientCopiedCardCode, cipher.id);\n }\n }\n\n protected deleteCipher(id: string) {\n return this.cipherService.deleteWithServer(id);\n }\n\n protected showFixOldAttachments(c: CipherView) {\n return c.hasOldAttachments && c.organizationId == null;\n }\n}\n","import { Component } from '@angular/core';\n\nimport { CipherType } from 'jslib/enums/cipherType';\nimport { EventType } from 'jslib/enums/eventType';\n\nimport { AuditService } from 'jslib/abstractions/audit.service';\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { CollectionService } from 'jslib/abstractions/collection.service';\nimport { EventService } from 'jslib/abstractions/event.service';\nimport { FolderService } from 'jslib/abstractions/folder.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { StateService } from 'jslib/abstractions/state.service';\nimport { TotpService } from 'jslib/abstractions/totp.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { AddEditComponent as BaseAddEditComponent } from 'jslib/angular/components/add-edit.component';\nimport { LoginUriView } from 'jslib/models/view/loginUriView';\n\n@Component({\n selector: 'app-vault-add-edit',\n templateUrl: 'add-edit.component.html',\n})\nexport class AddEditComponent extends BaseAddEditComponent {\n canAccessPremium: boolean;\n totpCode: string;\n totpCodeFormatted: string;\n totpDash: number;\n totpSec: number;\n totpLow: boolean;\n showRevisionDate = false;\n hasPasswordHistory = false;\n viewingPasswordHistory = false;\n\n protected totpInterval: number;\n\n constructor(cipherService: CipherService, folderService: FolderService,\n i18nService: I18nService, platformUtilsService: PlatformUtilsService,\n auditService: AuditService, stateService: StateService,\n userService: UserService, collectionService: CollectionService,\n protected totpService: TotpService, protected passwordGenerationService: PasswordGenerationService,\n protected messagingService: MessagingService, eventService: EventService) {\n super(cipherService, folderService, i18nService, platformUtilsService, auditService, stateService,\n userService, collectionService, messagingService, eventService);\n }\n\n async ngOnInit() {\n await super.ngOnInit();\n await this.load();\n this.showRevisionDate = this.cipher.passwordRevisionDisplayDate != null;\n this.hasPasswordHistory = this.cipher.hasPasswordHistory;\n this.cleanUp();\n\n this.canAccessPremium = await this.userService.canAccessPremium();\n if (this.cipher.type === CipherType.Login && this.cipher.login.totp &&\n (this.cipher.organizationUseTotp || this.canAccessPremium)) {\n await this.totpUpdateCode();\n const interval = this.totpService.getTimeInterval(this.cipher.login.totp);\n await this.totpTick(interval);\n\n this.totpInterval = window.setInterval(async () => {\n await this.totpTick(interval);\n }, 1000);\n }\n }\n\n toggleFavorite() {\n this.cipher.favorite = !this.cipher.favorite;\n }\n\n launch(uri: LoginUriView) {\n if (!uri.canLaunch) {\n return;\n }\n\n this.platformUtilsService.eventTrack('Launched Login URI');\n this.platformUtilsService.launchUri(uri.launchUri);\n }\n\n copy(value: string, typeI18nKey: string, aType: string) {\n if (value == null) {\n return;\n }\n\n this.platformUtilsService.eventTrack('Copied ' + aType);\n this.platformUtilsService.copyToClipboard(value, { window: window });\n this.platformUtilsService.showToast('info', null,\n this.i18nService.t('valueCopied', this.i18nService.t(typeI18nKey)));\n\n if (this.editMode) {\n if (typeI18nKey === 'password') {\n this.eventService.collect(EventType.Cipher_ClientToggledHiddenFieldVisible, this.cipherId);\n } else if (typeI18nKey === 'securityCode') {\n this.eventService.collect(EventType.Cipher_ClientCopiedCardCode, this.cipherId);\n } else if (aType === 'H_Field') {\n this.eventService.collect(EventType.Cipher_ClientCopiedHiddenField, this.cipherId);\n }\n }\n }\n\n async generatePassword(): Promise {\n const confirmed = await super.generatePassword();\n if (confirmed) {\n const options = (await this.passwordGenerationService.getOptions())[0];\n this.cipher.login.password = await this.passwordGenerationService.generatePassword(options);\n }\n return confirmed;\n }\n\n premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send('premiumRequired');\n return;\n }\n }\n\n upgradeOrganization() {\n this.messagingService.send('upgradeOrganization', { organizationId: this.cipher.organizationId });\n }\n\n viewHistory() {\n this.viewingPasswordHistory = !this.viewingPasswordHistory;\n }\n\n protected cleanUp() {\n if (this.totpInterval) {\n window.clearInterval(this.totpInterval);\n }\n }\n\n protected async totpUpdateCode() {\n if (this.cipher == null || this.cipher.type !== CipherType.Login || this.cipher.login.totp == null) {\n if (this.totpInterval) {\n window.clearInterval(this.totpInterval);\n }\n return;\n }\n\n this.totpCode = await this.totpService.getCode(this.cipher.login.totp);\n if (this.totpCode != null) {\n if (this.totpCode.length > 4) {\n const half = Math.floor(this.totpCode.length / 2);\n this.totpCodeFormatted = this.totpCode.substring(0, half) + ' ' + this.totpCode.substring(half);\n } else {\n this.totpCodeFormatted = this.totpCode;\n }\n } else {\n this.totpCodeFormatted = null;\n if (this.totpInterval) {\n window.clearInterval(this.totpInterval);\n }\n }\n }\n\n protected allowOwnershipAssignment() {\n return (!this.editMode || this.cloneMode) && this.ownershipOptions != null && this.ownershipOptions.length > 1;\n }\n\n private async totpTick(intervalSeconds: number) {\n const epoch = Math.round(new Date().getTime() / 1000.0);\n const mod = epoch % intervalSeconds;\n\n this.totpSec = intervalSeconds - mod;\n this.totpDash = +(Math.round((((78.6 / intervalSeconds) * mod) + 'e+2') as any) + 'e-2');\n this.totpLow = this.totpSec <= 7;\n if (mod === 0) {\n await this.totpUpdateCode();\n }\n }\n}\n","export enum UriMatchType {\n Domain = 0,\n Host = 1,\n StartsWith = 2,\n Exact = 3,\n RegularExpression = 4,\n Never = 5,\n}\n","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PolicyService } from 'jslib/abstractions/policy.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { TwoFactorProviders } from 'jslib/services/auth.service';\n\nimport { PolicyType } from 'jslib/enums/policyType';\nimport { TwoFactorProviderType } from 'jslib/enums/twoFactorProviderType';\n\nimport { ModalComponent } from '../modal.component';\n\nimport { TwoFactorAuthenticatorComponent } from './two-factor-authenticator.component';\nimport { TwoFactorDuoComponent } from './two-factor-duo.component';\nimport { TwoFactorEmailComponent } from './two-factor-email.component';\nimport { TwoFactorRecoveryComponent } from './two-factor-recovery.component';\nimport { TwoFactorU2fComponent } from './two-factor-u2f.component';\nimport { TwoFactorYubiKeyComponent } from './two-factor-yubikey.component';\n\n@Component({\n selector: 'app-two-factor-setup',\n templateUrl: 'two-factor-setup.component.html',\n})\nexport class TwoFactorSetupComponent implements OnInit {\n @ViewChild('recoveryTemplate', { read: ViewContainerRef }) recoveryModalRef: ViewContainerRef;\n @ViewChild('authenticatorTemplate', { read: ViewContainerRef }) authenticatorModalRef: ViewContainerRef;\n @ViewChild('yubikeyTemplate', { read: ViewContainerRef }) yubikeyModalRef: ViewContainerRef;\n @ViewChild('u2fTemplate', { read: ViewContainerRef }) u2fModalRef: ViewContainerRef;\n @ViewChild('duoTemplate', { read: ViewContainerRef }) duoModalRef: ViewContainerRef;\n @ViewChild('emailTemplate', { read: ViewContainerRef }) emailModalRef: ViewContainerRef;\n\n organizationId: string;\n providers: any[] = [];\n canAccessPremium: boolean;\n showPolicyWarning = false;\n loading = true;\n\n private modal: ModalComponent = null;\n\n constructor(protected apiService: ApiService, protected userService: UserService,\n protected componentFactoryResolver: ComponentFactoryResolver, protected messagingService: MessagingService,\n protected policyService: PolicyService) { }\n\n async ngOnInit() {\n this.canAccessPremium = await this.userService.canAccessPremium();\n\n for (const key in TwoFactorProviders) {\n if (!TwoFactorProviders.hasOwnProperty(key)) {\n continue;\n }\n\n const p = (TwoFactorProviders as any)[key];\n if (this.filterProvider(p.type)) {\n continue;\n }\n\n this.providers.push({\n type: p.type,\n name: p.name,\n description: p.description,\n enabled: false,\n premium: p.premium,\n sort: p.sort,\n });\n }\n\n this.providers.sort((a: any, b: any) => a.sort - b.sort);\n await this.load();\n }\n\n async load() {\n this.loading = true;\n const providerList = await this.getTwoFactorProviders();\n providerList.data.forEach((p) => {\n this.providers.forEach((p2) => {\n if (p.type === p2.type) {\n p2.enabled = p.enabled;\n }\n });\n });\n this.evaluatePolicies();\n this.loading = false;\n }\n\n manage(type: TwoFactorProviderType) {\n switch (type) {\n case TwoFactorProviderType.Authenticator:\n const authComp = this.openModal(this.authenticatorModalRef, TwoFactorAuthenticatorComponent);\n authComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Authenticator);\n });\n break;\n case TwoFactorProviderType.Yubikey:\n const yubiComp = this.openModal(this.yubikeyModalRef, TwoFactorYubiKeyComponent);\n yubiComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Yubikey);\n });\n break;\n case TwoFactorProviderType.Duo:\n const duoComp = this.openModal(this.duoModalRef, TwoFactorDuoComponent);\n duoComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Duo);\n });\n break;\n case TwoFactorProviderType.Email:\n const emailComp = this.openModal(this.emailModalRef, TwoFactorEmailComponent);\n emailComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Email);\n });\n break;\n case TwoFactorProviderType.U2f:\n const u2fComp = this.openModal(this.u2fModalRef, TwoFactorU2fComponent);\n u2fComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.U2f);\n });\n break;\n default:\n break;\n }\n }\n\n recoveryCode() {\n this.openModal(this.recoveryModalRef, TwoFactorRecoveryComponent);\n }\n\n async premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send('premiumRequired');\n return;\n }\n }\n\n protected getTwoFactorProviders() {\n return this.apiService.getTwoFactorProviders();\n }\n\n protected filterProvider(type: TwoFactorProviderType) {\n return type === TwoFactorProviderType.OrganizationDuo;\n }\n\n protected openModal(ref: ViewContainerRef, type: Type): T {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = ref.createComponent(factory).instance;\n const childComponent = this.modal.show(type, ref);\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n return childComponent;\n }\n\n protected updateStatus(enabled: boolean, type: TwoFactorProviderType) {\n if (!enabled && this.modal != null) {\n this.modal.close();\n }\n this.providers.forEach((p) => {\n if (p.type === type) {\n p.enabled = enabled;\n }\n });\n this.evaluatePolicies();\n }\n\n private async evaluatePolicies() {\n if (this.organizationId == null && this.providers.filter((p) => p.enabled).length === 1) {\n const policies = await this.policyService.getAll(PolicyType.TwoFactorAuthentication);\n this.showPolicyWarning = policies != null && policies.some((p) => p.enabled);\n } else {\n this.showPolicyWarning = false;\n }\n }\n}\n","export enum PaymentMethodType {\n Card = 0,\n BankAccount = 1,\n PayPal = 2,\n BitPay = 3,\n Credit = 4,\n WireTransfer = 5,\n AppleInApp = 6,\n GoogleInApp = 7,\n Check = 8,\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { BillingResponse } from 'jslib/models/response/billingResponse';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { PaymentMethodType } from 'jslib/enums/paymentMethodType';\nimport { TransactionType } from 'jslib/enums/transactionType';\nimport { VerifyBankRequest } from 'jslib/models/request/verifyBankRequest';\n\n@Component({\n selector: 'app-user-billing',\n templateUrl: 'user-billing.component.html',\n})\nexport class UserBillingComponent implements OnInit {\n loading = false;\n firstLoaded = false;\n showAdjustPayment = false;\n showAddCredit = false;\n billing: BillingResponse;\n paymentMethodType = PaymentMethodType;\n transactionType = TransactionType;\n organizationId: string;\n verifyAmount1: number;\n verifyAmount2: number;\n\n verifyBankPromise: Promise;\n\n constructor(protected apiService: ApiService, protected i18nService: I18nService,\n protected analytics: Angulartics2, protected toasterService: ToasterService,\n protected platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n await this.load();\n this.firstLoaded = true;\n }\n\n async load() {\n if (this.loading) {\n return;\n }\n this.loading = true;\n if (this.organizationId != null) {\n this.billing = await this.apiService.getOrganizationBilling(this.organizationId);\n } else {\n this.billing = await this.apiService.getUserBilling();\n }\n this.loading = false;\n }\n\n async verifyBank() {\n if (this.loading) {\n return;\n }\n\n try {\n const request = new VerifyBankRequest();\n request.amount1 = this.verifyAmount1;\n request.amount2 = this.verifyAmount2;\n this.verifyBankPromise = this.apiService.postOrganizationVerifyBank(this.organizationId, request);\n await this.verifyBankPromise;\n this.analytics.eventTrack.next({ action: 'Verified Bank Account' });\n this.toasterService.popAsync('success', null, this.i18nService.t('verifiedBankAccount'));\n this.load();\n } catch { }\n }\n\n addCredit() {\n if (this.paymentSourceInApp) {\n this.platformUtilsService.showDialog(this.i18nService.t('cannotPerformInAppPurchase'),\n this.i18nService.t('addCredit'), null, null, 'warning');\n return;\n }\n this.showAddCredit = true;\n }\n\n closeAddCredit(load: boolean) {\n this.showAddCredit = false;\n if (load) {\n this.load();\n }\n }\n\n changePayment() {\n if (this.paymentSourceInApp) {\n this.platformUtilsService.showDialog(this.i18nService.t('cannotPerformInAppPurchase'),\n this.i18nService.t('changePaymentMethod'), null, null, 'warning');\n return;\n }\n this.showAdjustPayment = true;\n }\n\n closePayment(load: boolean) {\n this.showAdjustPayment = false;\n if (load) {\n this.load();\n }\n }\n\n get isCreditBalance() {\n return this.billing == null || this.billing.balance <= 0;\n }\n\n get creditOrBalance() {\n return Math.abs(this.billing != null ? this.billing.balance : 0);\n }\n\n get paymentSource() {\n return this.billing != null ? this.billing.paymentSource : null;\n }\n\n get paymentSourceInApp() {\n return this.paymentSource != null &&\n (this.paymentSource.type === PaymentMethodType.AppleInApp ||\n this.paymentSource.type === PaymentMethodType.GoogleInApp);\n }\n\n get invoices() {\n return this.billing != null ? this.billing.invoices : null;\n }\n\n get transactions() {\n return this.billing != null ? this.billing.transactions : null;\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { PaymentMethodType } from 'jslib/enums/paymentMethodType';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { SyncService } from 'jslib/abstractions/sync.service';\n\nimport { PaymentComponent } from './payment.component';\n\nimport { PlanType } from 'jslib/enums/planType';\nimport { OrganizationCreateRequest } from 'jslib/models/request/organizationCreateRequest';\nimport { OrganizationUpgradeRequest } from 'jslib/models/request/organizationUpgradeRequest';\n\n@Component({\n selector: 'app-organization-plans',\n templateUrl: 'organization-plans.component.html',\n})\nexport class OrganizationPlansComponent {\n @ViewChild(PaymentComponent) paymentComponent: PaymentComponent;\n\n @Input() organizationId: string;\n @Input() showFree = true;\n @Input() showCancel = false;\n @Input() plan = 'free';\n @Output() onSuccess = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n selfHosted = false;\n ownedBusiness = false;\n premiumAccessAddon = false;\n storageGbPriceMonthly = 0.33;\n additionalStorage = 0;\n additionalSeats = 0;\n interval = 'year';\n name: string;\n billingEmail: string;\n businessName: string;\n\n storageGb: any = {\n price: 0.33,\n monthlyPrice: 0.50,\n yearlyPrice: 4,\n };\n\n plans: any = {\n free: {\n basePrice: 0,\n noAdditionalSeats: true,\n noPayment: true,\n },\n families: {\n basePrice: 1,\n annualBasePrice: 12,\n baseSeats: 5,\n noAdditionalSeats: true,\n annualPlanType: PlanType.FamiliesAnnually,\n canBuyPremiumAccessAddon: true,\n },\n teams: {\n basePrice: 5,\n annualBasePrice: 60,\n monthlyBasePrice: 8,\n baseSeats: 5,\n seatPrice: 2,\n annualSeatPrice: 24,\n monthlySeatPrice: 2.5,\n monthPlanType: PlanType.TeamsMonthly,\n annualPlanType: PlanType.TeamsAnnually,\n },\n enterprise: {\n seatPrice: 3,\n annualSeatPrice: 36,\n monthlySeatPrice: 4,\n monthPlanType: PlanType.EnterpriseMonthly,\n annualPlanType: PlanType.EnterpriseAnnually,\n },\n };\n\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n platformUtilsService: PlatformUtilsService, private cryptoService: CryptoService,\n private router: Router, private syncService: SyncService) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async submit() {\n let files: FileList = null;\n if (this.createOrganization && this.selfHosted) {\n const fileEl = document.getElementById('file') as HTMLInputElement;\n files = fileEl.files;\n if (files == null || files.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n return;\n }\n }\n\n try {\n const doSubmit = async () => {\n let orgId: string = null;\n if (this.createOrganization) {\n let tokenResult: [string, PaymentMethodType] = null;\n if (!this.selfHosted && this.plan !== 'free') {\n tokenResult = await this.paymentComponent.createPaymentToken();\n }\n const shareKey = await this.cryptoService.makeShareKey();\n const key = shareKey[0].encryptedString;\n const collection = await this.cryptoService.encrypt(\n this.i18nService.t('defaultCollection'), shareKey[1]);\n const collectionCt = collection.encryptedString;\n\n if (this.selfHosted) {\n const fd = new FormData();\n fd.append('license', files[0]);\n fd.append('key', key);\n fd.append('collectionName', collectionCt);\n const response = await this.apiService.postOrganizationLicense(fd);\n orgId = response.id;\n } else {\n const request = new OrganizationCreateRequest();\n request.key = key;\n request.collectionName = collectionCt;\n request.name = this.name;\n request.billingEmail = this.billingEmail;\n\n if (this.plan === 'free') {\n request.planType = PlanType.Free;\n } else {\n request.paymentToken = tokenResult[0];\n request.paymentMethodType = tokenResult[1];\n request.businessName = this.ownedBusiness ? this.businessName : null;\n request.additionalSeats = this.additionalSeats;\n request.additionalStorageGb = this.additionalStorage;\n request.premiumAccessAddon = this.plans[this.plan].canBuyPremiumAccessAddon &&\n this.premiumAccessAddon;\n if (this.interval === 'month') {\n request.planType = this.plans[this.plan].monthPlanType;\n } else {\n request.planType = this.plans[this.plan].annualPlanType;\n }\n }\n const response = await this.apiService.postOrganization(request);\n orgId = response.id;\n }\n } else {\n const request = new OrganizationUpgradeRequest();\n request.businessName = this.ownedBusiness ? this.businessName : null;\n request.additionalSeats = this.additionalSeats;\n request.additionalStorageGb = this.additionalStorage;\n request.premiumAccessAddon = this.plans[this.plan].canBuyPremiumAccessAddon &&\n this.premiumAccessAddon;\n if (this.interval === 'month') {\n request.planType = this.plans[this.plan].monthPlanType;\n } else {\n request.planType = this.plans[this.plan].annualPlanType;\n }\n const result = await this.apiService.postOrganizationUpgrade(this.organizationId, request);\n if (!result.success && result.paymentIntentClientSecret != null) {\n await this.paymentComponent.handleStripeCardPayment(result.paymentIntentClientSecret, null);\n }\n orgId = this.organizationId;\n }\n\n if (orgId != null) {\n await this.apiService.refreshIdentityToken();\n await this.syncService.fullSync(true);\n if (this.createOrganization) {\n this.analytics.eventTrack.next({ action: 'Created Organization' });\n this.toasterService.popAsync('success',\n this.i18nService.t('organizationCreated'), this.i18nService.t('organizationReadyToGo'));\n } else {\n this.analytics.eventTrack.next({ action: 'Upgraded Organization' });\n this.toasterService.popAsync('success', null, this.i18nService.t('organizationUpgraded'));\n }\n this.router.navigate(['/organizations/' + orgId]);\n }\n };\n\n this.formPromise = doSubmit();\n await this.formPromise;\n this.onSuccess.emit();\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n changedPlan() {\n if (!this.plans[this.plan].canBuyPremiumAccessAddon) {\n this.premiumAccessAddon = false;\n }\n\n if (this.plans[this.plan].monthPlanType == null) {\n this.interval = 'year';\n }\n\n if (this.plans[this.plan].noAdditionalSeats) {\n this.additionalSeats = 0;\n } else if (!this.additionalSeats && !this.plans[this.plan].baseSeats &&\n !this.plans[this.plan].noAdditionalSeats) {\n this.additionalSeats = 1;\n }\n }\n\n changedOwnedBusiness() {\n if (!this.ownedBusiness || this.plan === 'teams' || this.plan === 'enterprise') {\n return;\n }\n this.plan = 'teams';\n }\n\n additionalStorageTotal(annual: boolean): number {\n if (annual) {\n return Math.abs(this.additionalStorage || 0) * this.storageGb.yearlyPrice;\n } else {\n return Math.abs(this.additionalStorage || 0) * this.storageGb.monthlyPrice;\n }\n }\n\n seatTotal(annual: boolean): number {\n if (this.plans[this.plan].noAdditionalSeats) {\n return 0;\n }\n\n if (annual) {\n return this.plans[this.plan].annualSeatPrice * Math.abs(this.additionalSeats || 0);\n } else {\n return this.plans[this.plan].monthlySeatPrice * Math.abs(this.additionalSeats || 0);\n }\n }\n\n baseTotal(annual: boolean): number {\n if (annual) {\n return Math.abs(this.plans[this.plan].annualBasePrice || 0);\n } else {\n return Math.abs(this.plans[this.plan].monthlyBasePrice || 0);\n }\n }\n\n premiumAccessTotal(annual: boolean): number {\n if (this.plans[this.plan].canBuyPremiumAccessAddon && this.premiumAccessAddon) {\n if (annual) {\n return 40;\n }\n }\n return 0;\n }\n\n get total(): number {\n const annual = this.interval === 'year';\n return this.baseTotal(annual) + this.seatTotal(annual) + this.additionalStorageTotal(annual) +\n this.premiumAccessTotal(annual);\n }\n\n get createOrganization() {\n return this.organizationId == null;\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { ImportOption, ImportService } from 'jslib/abstractions/import.service';\n\n@Component({\n selector: 'app-import',\n templateUrl: 'import.component.html',\n})\nexport class ImportComponent implements OnInit {\n featuredImportOptions: ImportOption[];\n importOptions: ImportOption[];\n format: string = null;\n fileContents: string;\n formPromise: Promise;\n\n protected organizationId: string = null;\n protected successNavigate: any[] = ['vault'];\n\n constructor(protected i18nService: I18nService, protected analytics: Angulartics2,\n protected toasterService: ToasterService, protected importService: ImportService,\n protected router: Router) { }\n\n ngOnInit() {\n this.setImportOptions();\n this.importOptions.sort((a, b) => {\n if (a.name == null && b.name != null) {\n return -1;\n }\n if (a.name != null && b.name == null) {\n return 1;\n }\n if (a.name == null && b.name == null) {\n return 0;\n }\n\n return this.i18nService.collator ? this.i18nService.collator.compare(a.name, b.name) :\n a.name.localeCompare(b.name);\n });\n }\n\n async submit() {\n const importer = this.importService.getImporter(this.format, this.organizationId != null);\n if (importer === null) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFormat'));\n return;\n }\n\n const fileEl = document.getElementById('file') as HTMLInputElement;\n const files = fileEl.files;\n if ((files == null || files.length === 0) && (this.fileContents == null || this.fileContents === '')) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n return;\n }\n\n let fileContents = this.fileContents;\n if (files != null && files.length > 0) {\n try {\n const content = await this.getFileContents(files[0]);\n if (content != null) {\n fileContents = content;\n }\n } catch { }\n }\n\n if (fileContents == null || fileContents === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n return;\n }\n\n try {\n this.formPromise = this.importService.import(importer, fileContents, this.organizationId);\n const error = await this.formPromise;\n if (error != null) {\n this.error(error);\n return;\n }\n this.analytics.eventTrack.next({\n action: 'Imported Data',\n properties: { label: this.format },\n });\n this.toasterService.popAsync('success', null, this.i18nService.t('importSuccess'));\n this.router.navigate(this.successNavigate);\n } catch { }\n }\n\n getFormatInstructionTitle() {\n if (this.format == null) {\n return null;\n }\n\n const results = this.featuredImportOptions.concat(this.importOptions).filter((o) => o.id === this.format);\n if (results.length > 0) {\n return this.i18nService.t('instructionsFor', results[0].name);\n }\n return null;\n }\n\n protected setImportOptions() {\n this.featuredImportOptions = [{\n id: null,\n name: '-- ' + this.i18nService.t('select') + ' --',\n }, ...this.importService.featuredImportOptions];\n this.importOptions = this.importService.regularImportOptions;\n }\n\n private error(error: Error) {\n this.analytics.eventTrack.next({\n action: 'Import Data Failed',\n properties: { label: this.format },\n });\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'), error.message);\n }\n\n private getFileContents(file: File): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsText(file, 'utf-8');\n reader.onload = (evt) => {\n if (this.format === 'lastpasscsv' && file.type === 'text/html') {\n const parser = new DOMParser();\n const doc = parser.parseFromString((evt.target as any).result, 'text/html');\n const pre = doc.querySelector('pre');\n if (pre != null) {\n resolve(pre.textContent);\n return;\n }\n reject();\n return;\n }\n\n resolve((evt.target as any).result);\n };\n reader.onerror = () => {\n reject();\n };\n });\n }\n}\n","import { Component } from '@angular/core';\n\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { EventService } from 'jslib/abstractions/event.service';\nimport { ExportService } from 'jslib/abstractions/export.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { ExportComponent as BaseExportComponent } from 'jslib/angular/components/export.component';\n\n@Component({\n selector: 'app-export',\n templateUrl: 'export.component.html',\n})\nexport class ExportComponent extends BaseExportComponent {\n constructor(cryptoService: CryptoService, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService, exportService: ExportService,\n eventService: EventService) {\n super(cryptoService, i18nService, platformUtilsService, exportService, eventService, window);\n }\n\n protected saved() {\n super.saved();\n this.masterPassword = null;\n this.platformUtilsService.showToast('success', null, this.i18nService.t('exportSuccess'));\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CipherView } from 'jslib/models/view/cipherView';\n\nimport { CipherType } from 'jslib/enums/cipherType';\n\nimport { CipherReportComponent } from './cipher-report.component';\n\n@Component({\n selector: 'app-reused-passwords-report',\n templateUrl: 'reused-passwords-report.component.html',\n})\nexport class ReusedPasswordsReportComponent extends CipherReportComponent implements OnInit {\n passwordUseMap: Map;\n\n constructor(protected cipherService: CipherService, componentFactoryResolver: ComponentFactoryResolver,\n messagingService: MessagingService, userService: UserService) {\n super(componentFactoryResolver, userService, messagingService, true);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const ciphersWithPasswords: CipherView[] = [];\n this.passwordUseMap = new Map();\n allCiphers.forEach((c) => {\n if (c.type !== CipherType.Login || c.login.password == null || c.login.password === '') {\n return;\n }\n ciphersWithPasswords.push(c);\n if (this.passwordUseMap.has(c.login.password)) {\n this.passwordUseMap.set(c.login.password, this.passwordUseMap.get(c.login.password) + 1);\n } else {\n this.passwordUseMap.set(c.login.password, 1);\n }\n });\n const reusedPasswordCiphers = ciphersWithPasswords.filter((c) =>\n this.passwordUseMap.has(c.login.password) && this.passwordUseMap.get(c.login.password) > 1);\n this.ciphers = reusedPasswordCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CipherType } from 'jslib/enums/cipherType';\n\nimport { CipherView } from 'jslib/models/view/cipherView';\n\nimport { CipherReportComponent } from './cipher-report.component';\n\n@Component({\n selector: 'app-unsecured-websites-report',\n templateUrl: 'unsecured-websites-report.component.html',\n})\nexport class UnsecuredWebsitesReportComponent extends CipherReportComponent implements OnInit {\n constructor(protected cipherService: CipherService, componentFactoryResolver: ComponentFactoryResolver,\n messagingService: MessagingService, userService: UserService) {\n super(componentFactoryResolver, userService, messagingService, true);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const unsecuredCiphers = allCiphers.filter((c) => {\n if (c.type !== CipherType.Login || !c.login.hasUris) {\n return false;\n }\n return c.login.uris.some((u) => u.uri != null && u.uri.indexOf('http://') === 0);\n });\n this.ciphers = unsecuredCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CipherView } from 'jslib/models/view/cipherView';\n\nimport { CipherType } from 'jslib/enums/cipherType';\n\nimport { CipherReportComponent } from './cipher-report.component';\n\n@Component({\n selector: 'app-weak-passwords-report',\n templateUrl: 'weak-passwords-report.component.html',\n})\nexport class WeakPasswordsReportComponent extends CipherReportComponent implements OnInit {\n passwordStrengthMap = new Map();\n\n private passwordStrengthCache = new Map();\n\n constructor(protected cipherService: CipherService, protected passwordGenerationService: PasswordGenerationService,\n componentFactoryResolver: ComponentFactoryResolver, messagingService: MessagingService,\n userService: UserService) {\n super(componentFactoryResolver, userService, messagingService, true);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const weakPasswordCiphers: CipherView[] = [];\n allCiphers.forEach((c) => {\n if (c.type !== CipherType.Login || c.login.password == null || c.login.password === '') {\n return;\n }\n const hasUsername = c.login.username != null && c.login.username.trim() !== '';\n const cacheKey = c.login.password + '_____' + (hasUsername ? c.login.username : '');\n if (!this.passwordStrengthCache.has(cacheKey)) {\n let userInput: string[] = [];\n if (hasUsername) {\n const atPosition = c.login.username.indexOf('@');\n if (atPosition > -1) {\n userInput = userInput.concat(\n c.login.username.substr(0, atPosition).trim().toLowerCase().split(/[^A-Za-z0-9]/))\n .filter((i) => i.length >= 3);\n } else {\n userInput = c.login.username.trim().toLowerCase().split(/[^A-Za-z0-9]/)\n .filter((i) => i.length >= 3);\n }\n }\n const result = this.passwordGenerationService.passwordStrength(c.login.password,\n userInput.length > 0 ? userInput : null);\n this.passwordStrengthCache.set(cacheKey, result.score);\n }\n const score = this.passwordStrengthCache.get(cacheKey);\n if (score != null && score <= 2) {\n this.passwordStrengthMap.set(c.id, this.scoreKey(score));\n weakPasswordCiphers.push(c);\n }\n });\n this.ciphers = weakPasswordCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n\n private scoreKey(score: number): [string, string] {\n switch (score) {\n case 4:\n return ['strong', 'success'];\n case 3:\n return ['good', 'primary'];\n case 2:\n return ['weak', 'warning'];\n default:\n return ['veryWeak', 'danger'];\n }\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n} from '@angular/core';\n\nimport { AuditService } from 'jslib/abstractions/audit.service';\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CipherView } from 'jslib/models/view/cipherView';\n\nimport { CipherType } from 'jslib/enums/cipherType';\n\nimport { CipherReportComponent } from './cipher-report.component';\n\n@Component({\n selector: 'app-exposed-passwords-report',\n templateUrl: 'exposed-passwords-report.component.html',\n})\nexport class ExposedPasswordsReportComponent extends CipherReportComponent implements OnInit {\n exposedPasswordMap = new Map();\n\n constructor(protected cipherService: CipherService, protected auditService: AuditService,\n componentFactoryResolver: ComponentFactoryResolver, messagingService: MessagingService,\n userService: UserService) {\n super(componentFactoryResolver, userService, messagingService, true);\n }\n\n ngOnInit() {\n this.checkAccess();\n }\n\n async load() {\n if (await this.checkAccess()) {\n super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const exposedPasswordCiphers: CipherView[] = [];\n const promises: Array> = [];\n allCiphers.forEach((c) => {\n if (c.type !== CipherType.Login || c.login.password == null || c.login.password === '') {\n return;\n }\n const promise = this.auditService.passwordLeaked(c.login.password).then((exposedCount) => {\n if (exposedCount > 0) {\n exposedPasswordCiphers.push(c);\n this.exposedPasswordMap.set(c.id, exposedCount);\n }\n });\n promises.push(promise);\n });\n await Promise.all(promises);\n this.ciphers = exposedPasswordCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CipherView } from 'jslib/models/view/cipherView';\n\nimport { CipherType } from 'jslib/enums/cipherType';\n\nimport { Utils } from 'jslib/misc/utils';\n\nimport { CipherReportComponent } from './cipher-report.component';\n\n@Component({\n selector: 'app-inactive-two-factor-report',\n templateUrl: 'inactive-two-factor-report.component.html',\n})\nexport class InactiveTwoFactorReportComponent extends CipherReportComponent implements OnInit {\n services = new Map();\n cipherDocs = new Map();\n\n constructor(protected cipherService: CipherService, componentFactoryResolver: ComponentFactoryResolver,\n messagingService: MessagingService, userService: UserService) {\n super(componentFactoryResolver, userService, messagingService, true);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n try {\n await this.load2fa();\n } catch { }\n if (this.services.size > 0) {\n const allCiphers = await this.getAllCiphers();\n const inactive2faCiphers: CipherView[] = [];\n const promises: Array> = [];\n const docs = new Map();\n allCiphers.forEach((c) => {\n if (c.type !== CipherType.Login || (c.login.totp != null && c.login.totp !== '') || !c.login.hasUris) {\n return;\n }\n for (let i = 0; i < c.login.uris.length; i++) {\n const u = c.login.uris[i];\n if (u.uri != null && u.uri !== '') {\n const hostname = Utils.getHostname(u.uri);\n if (hostname != null && this.services.has(hostname)) {\n if (this.services.get(hostname) != null) {\n docs.set(c.id, this.services.get(hostname));\n }\n inactive2faCiphers.push(c);\n break;\n }\n }\n }\n });\n await Promise.all(promises);\n this.ciphers = inactive2faCiphers;\n this.cipherDocs = docs;\n }\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n\n private async load2fa() {\n if (this.services.size > 0) {\n return;\n }\n const response = await fetch(new Request('https://twofactorauth.org/api/v1/data.json'));\n if (response.status !== 200) {\n throw new Error();\n }\n const responseJson = await response.json();\n for (const categoryName in responseJson) {\n if (responseJson.hasOwnProperty(categoryName)) {\n const category = responseJson[categoryName];\n for (const serviceName in category) {\n if (category.hasOwnProperty(serviceName)) {\n const service = category[serviceName];\n if (service.tfa && service.software && service.url != null) {\n const hostname = Utils.getHostname(service.url);\n if (hostname != null) {\n this.services.set(hostname, service.doc);\n }\n }\n }\n }\n }\n }\n }\n}\n","import {\n Pipe,\n PipeTransform,\n} from '@angular/core';\n\n@Pipe({\n name: 'search',\n})\nexport class SearchPipe implements PipeTransform {\n transform(items: any[], searchText: string, prop1?: string, prop2?: string, prop3?: string): any[] {\n if (items == null || items.length === 0) {\n return [];\n }\n\n if (searchText == null || searchText.length < 2) {\n return items;\n }\n\n searchText = searchText.trim().toLowerCase();\n return items.filter((i) => {\n if (prop1 != null && i[prop1] != null && i[prop1].toString().toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n if (prop2 != null && i[prop2] != null && i[prop2].toString().toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n if (prop3 != null && i[prop3] != null && i[prop3].toString().toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n return false;\n });\n }\n}\n","export class SelectionReadOnlyRequest {\n id: string;\n readOnly: boolean;\n\n constructor(id: string, readOnly: boolean) {\n this.id = id;\n this.readOnly = readOnly;\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class SelectionReadOnlyResponse extends BaseResponse {\n id: string;\n readOnly: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.readOnly = this.getResponseProperty('ReadOnly');\n }\n}\n","import { EnvironmentService } from './environment.service';\n\nexport abstract class NotificationsService {\n init: (environmentService: EnvironmentService) => Promise;\n updateConnection: (sync?: boolean) => Promise;\n reconnectFromActivity: () => Promise;\n disconnectFromInactivity: () => Promise;\n}\n","export abstract class SettingsService {\n clearCache: () => void;\n getEquivalentDomains: () => Promise;\n setEquivalentDomains: (equivalentDomains: string[][]) => Promise;\n clear: (userId: string) => Promise;\n}\n","import {\n Component,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\n@Component({\n selector: 'app-frontend-layout',\n templateUrl: 'frontend-layout.component.html',\n})\nexport class FrontendLayoutComponent implements OnInit, OnDestroy {\n version: string;\n year: string = '2015';\n\n constructor(private platformUtilsService: PlatformUtilsService) { }\n\n ngOnInit() {\n this.year = new Date().getFullYear().toString();\n this.version = this.platformUtilsService.getApplicationVersion();\n document.body.classList.add('layout_frontend');\n }\n\n ngOnDestroy() {\n document.body.classList.remove('layout_frontend');\n }\n}\n","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { AuthService } from 'jslib/abstractions/auth.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { StateService } from 'jslib/abstractions/state.service';\nimport { StorageService } from 'jslib/abstractions/storage.service';\n\nimport { LoginComponent as BaseLoginComponent } from 'jslib/angular/components/login.component';\n\n@Component({\n selector: 'app-login',\n templateUrl: 'login.component.html',\n})\nexport class LoginComponent extends BaseLoginComponent {\n constructor(authService: AuthService, router: Router,\n i18nService: I18nService, private route: ActivatedRoute,\n storageService: StorageService, stateService: StateService,\n platformUtilsService: PlatformUtilsService) {\n super(authService, router, platformUtilsService, i18nService, storageService, stateService);\n this.onSuccessfulLoginNavigate = this.goAfterLogIn;\n }\n\n async ngOnInit() {\n const queryParamsSub = this.route.queryParams.subscribe(async (qParams) => {\n if (qParams.email != null && qParams.email.indexOf('@') > -1) {\n this.email = qParams.email;\n }\n if (qParams.premium != null) {\n this.stateService.save('loginRedirect', { route: '/settings/premium' });\n } else if (qParams.org != null) {\n this.stateService.save('loginRedirect',\n { route: '/settings/create-organization', qParams: { plan: qParams.org } });\n }\n await super.ngOnInit();\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n }\n\n async goAfterLogIn() {\n const invite = await this.stateService.get('orgInvitation');\n if (invite != null) {\n this.router.navigate(['accept-organization'], { queryParams: invite });\n } else {\n const loginRedirect = await this.stateService.get('loginRedirect');\n if (loginRedirect != null) {\n this.router.navigate([loginRedirect.route], { queryParams: loginRedirect.qParams });\n await this.stateService.remove('loginRedirect');\n } else {\n this.router.navigate([this.successRoute]);\n }\n }\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { Router } from '@angular/router';\n\nimport { TwoFactorOptionsComponent } from './two-factor-options.component';\n\nimport { ModalComponent } from '../modal.component';\n\nimport { TwoFactorProviderType } from 'jslib/enums/twoFactorProviderType';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { AuthService } from 'jslib/abstractions/auth.service';\nimport { EnvironmentService } from 'jslib/abstractions/environment.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { StateService } from 'jslib/abstractions/state.service';\nimport { StorageService } from 'jslib/abstractions/storage.service';\n\nimport { TwoFactorComponent as BaseTwoFactorComponent } from 'jslib/angular/components/two-factor.component';\n\n@Component({\n selector: 'app-two-factor',\n templateUrl: 'two-factor.component.html',\n})\nexport class TwoFactorComponent extends BaseTwoFactorComponent {\n @ViewChild('twoFactorOptions', { read: ViewContainerRef }) twoFactorOptionsModal: ViewContainerRef;\n\n constructor(authService: AuthService, router: Router,\n i18nService: I18nService, apiService: ApiService,\n platformUtilsService: PlatformUtilsService, stateService: StateService,\n environmentService: EnvironmentService, private componentFactoryResolver: ComponentFactoryResolver,\n storageService: StorageService) {\n super(authService, router, i18nService, apiService, platformUtilsService, window, environmentService,\n stateService, storageService);\n this.onSuccessfulLoginNavigate = this.goAfterLogIn;\n }\n\n anotherMethod() {\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n const modal = this.twoFactorOptionsModal.createComponent(factory).instance;\n const childComponent = modal.show(TwoFactorOptionsComponent,\n this.twoFactorOptionsModal);\n\n childComponent.onProviderSelected.subscribe(async (provider: TwoFactorProviderType) => {\n modal.close();\n this.selectedProviderType = provider;\n await this.init();\n });\n childComponent.onRecoverSelected.subscribe(() => {\n modal.close();\n });\n }\n\n async goAfterLogIn() {\n const invite = await this.stateService.get('orgInvitation');\n if (invite != null) {\n this.router.navigate(['accept-organization'], { queryParams: invite });\n } else {\n const loginRedirect = await this.stateService.get('loginRedirect');\n if (loginRedirect != null) {\n this.router.navigate([loginRedirect.route], { queryParams: loginRedirect.qParams });\n await this.stateService.remove('loginRedirect');\n } else {\n this.router.navigate([this.successRoute]);\n }\n }\n }\n}\n","import {\n Component,\n Input,\n OnChanges,\n} from '@angular/core';\n\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\n@Component({\n selector: 'app-password-strength',\n templateUrl: 'password-strength.component.html',\n})\nexport class PasswordStrengthComponent implements OnChanges {\n @Input() score?: number;\n @Input() showText = false;\n\n scoreWidth = 0;\n color = 'bg-danger';\n text: string;\n\n constructor(private i18nService: I18nService) { }\n\n ngOnChanges(): void {\n this.scoreWidth = this.score == null ? 0 : (this.score + 1) * 20;\n switch (this.score) {\n case 4:\n this.color = 'bg-success';\n this.text = this.i18nService.t('strong');\n break;\n case 3:\n this.color = 'bg-primary';\n this.text = this.i18nService.t('good');\n break;\n case 2:\n this.color = 'bg-warning';\n this.text = this.i18nService.t('weak');\n break;\n default:\n this.color = 'bg-danger';\n this.text = this.score != null ? this.i18nService.t('weak') : null;\n break;\n }\n }\n}\n","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { AuthService } from 'jslib/abstractions/auth.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib/abstractions/policy.service';\nimport { StateService } from 'jslib/abstractions/state.service';\n\nimport { RegisterComponent as BaseRegisterComponent } from 'jslib/angular/components/register.component';\n\nimport { MasterPasswordPolicyOptions } from 'jslib/models/domain/masterPasswordPolicyOptions';\nimport { Policy } from 'jslib/models/domain/policy';\n\nimport { PolicyData } from 'jslib/models/data/policyData';\n\n@Component({\n selector: 'app-register',\n templateUrl: 'register.component.html',\n})\nexport class RegisterComponent extends BaseRegisterComponent {\n showCreateOrgMessage = false;\n showTerms = true;\n enforcedPolicyOptions: MasterPasswordPolicyOptions;\n\n private policies: Policy[];\n\n constructor(authService: AuthService, router: Router,\n i18nService: I18nService, cryptoService: CryptoService,\n apiService: ApiService, private route: ActivatedRoute,\n stateService: StateService, platformUtilsService: PlatformUtilsService,\n passwordGenerationService: PasswordGenerationService, private policyService: PolicyService) {\n super(authService, router, i18nService, cryptoService, apiService, stateService, platformUtilsService,\n passwordGenerationService);\n this.showTerms = !platformUtilsService.isSelfHost();\n }\n\n getPasswordScoreAlertDisplay() {\n if (this.enforcedPolicyOptions == null) {\n return '';\n }\n\n let str: string;\n switch (this.enforcedPolicyOptions.minComplexity) {\n case 4:\n str = this.i18nService.t('strong');\n break;\n case 3:\n str = this.i18nService.t('good');\n break;\n default:\n str = this.i18nService.t('weak');\n break;\n }\n return str + ' (' + this.enforcedPolicyOptions.minComplexity + ')';\n }\n\n async ngOnInit() {\n const queryParamsSub = this.route.queryParams.subscribe((qParams) => {\n if (qParams.email != null && qParams.email.indexOf('@') > -1) {\n this.email = qParams.email;\n }\n if (qParams.premium != null) {\n this.stateService.save('loginRedirect', { route: '/settings/premium' });\n } else if (qParams.org != null) {\n this.showCreateOrgMessage = true;\n this.stateService.save('loginRedirect',\n { route: '/settings/create-organization', qParams: { plan: qParams.org } });\n }\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n const invite = await this.stateService.get('orgInvitation');\n if (invite != null) {\n try {\n const policies = await this.apiService.getPoliciesByToken(invite.organizationId, invite.token,\n invite.email, invite.organizationUserId);\n if (policies.data != null) {\n const policiesData = policies.data.map((p) => new PolicyData(p));\n this.policies = policiesData.map((p) => new Policy(p));\n }\n } catch { }\n }\n\n if (this.policies != null) {\n this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions(this.policies);\n }\n }\n\n async submit() {\n if (this.enforcedPolicyOptions != null &&\n !this.policyService.evaluateMasterPassword(this.masterPasswordScore, this.masterPassword,\n this.enforcedPolicyOptions)) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPasswordPolicyRequirementsNotMet'));\n return;\n }\n\n await super.submit();\n }\n}\n","export enum KdfType {\n PBKDF2_SHA256 = 0,\n}\n","export enum EncryptionType {\n AesCbc256_B64 = 0,\n AesCbc128_HmacSha256_B64 = 1,\n AesCbc256_HmacSha256_B64 = 2,\n Rsa2048_OaepSha256_B64 = 3,\n Rsa2048_OaepSha1_B64 = 4,\n Rsa2048_OaepSha256_HmacSha256_B64 = 5,\n Rsa2048_OaepSha1_HmacSha256_B64 = 6,\n}\n","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { HintComponent as BaseHintComponent } from 'jslib/angular/components/hint.component';\n\n@Component({\n selector: 'app-hint',\n templateUrl: 'hint.component.html',\n})\nexport class HintComponent extends BaseHintComponent {\n constructor(router: Router, i18nService: I18nService,\n apiService: ApiService, platformUtilsService: PlatformUtilsService) {\n super(router, i18nService, apiService, platformUtilsService);\n }\n}\n","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { EnvironmentService } from 'jslib/abstractions/environment.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { StateService } from 'jslib/abstractions/state.service';\nimport { StorageService } from 'jslib/abstractions/storage.service';\nimport { UserService } from 'jslib/abstractions/user.service';\nimport { VaultTimeoutService } from 'jslib/abstractions/vaultTimeout.service';\n\nimport { RouterService } from '../services/router.service';\n\nimport { LockComponent as BaseLockComponent } from 'jslib/angular/components/lock.component';\n\n@Component({\n selector: 'app-lock',\n templateUrl: 'lock.component.html',\n})\nexport class LockComponent extends BaseLockComponent {\n constructor(router: Router, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService, messagingService: MessagingService,\n userService: UserService, cryptoService: CryptoService,\n storageService: StorageService, vaultTimeoutService: VaultTimeoutService,\n environmentService: EnvironmentService, private routerService: RouterService,\n stateService: StateService) {\n super(router, i18nService, platformUtilsService, messagingService, userService, cryptoService,\n storageService, vaultTimeoutService, environmentService, stateService);\n }\n\n async ngOnInit() {\n await super.ngOnInit();\n const authed = await this.userService.isAuthenticated();\n if (!authed) {\n this.router.navigate(['/']);\n } else if (await this.cryptoService.hasKey()) {\n this.router.navigate(['vault']);\n }\n\n this.onSuccessfulSubmit = () => {\n const previousUrl = this.routerService.getPreviousUrl();\n if (previousUrl !== '/' && previousUrl.indexOf('lock') === -1) {\n this.successRoute = previousUrl;\n }\n this.router.navigate([this.successRoute]);\n };\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { VerifyEmailRequest } from 'jslib/models/request/verifyEmailRequest';\n\n@Component({\n selector: 'app-verify-email-token',\n templateUrl: 'verify-email-token.component.html',\n})\nexport class VerifyEmailTokenComponent implements OnInit {\n constructor(private router: Router, private toasterService: ToasterService,\n private i18nService: I18nService, private route: ActivatedRoute,\n private apiService: ApiService, private userService: UserService) { }\n\n ngOnInit() {\n let fired = false;\n this.route.queryParams.subscribe(async (qParams) => {\n if (fired) {\n return;\n }\n fired = true;\n if (qParams.userId != null && qParams.token != null) {\n try {\n await this.apiService.postAccountVerifyEmailToken(\n new VerifyEmailRequest(qParams.userId, qParams.token));\n const authed = await this.userService.isAuthenticated();\n if (authed) {\n await this.apiService.refreshIdentityToken();\n }\n this.toasterService.popAsync('success', null, this.i18nService.t('emailVerified'));\n this.router.navigate(['/']);\n return;\n } catch { }\n }\n this.toasterService.popAsync('error', null, this.i18nService.t('emailVerifiedFailed'));\n this.router.navigate(['/']);\n });\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport {\n Toast,\n ToasterService,\n} from 'angular2-toaster';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { StateService } from 'jslib/abstractions/state.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { OrganizationUserAcceptRequest } from 'jslib/models/request/organizationUserAcceptRequest';\n\n@Component({\n selector: 'app-accept-organization',\n templateUrl: 'accept-organization.component.html',\n})\nexport class AcceptOrganizationComponent implements OnInit {\n loading = true;\n authed = false;\n orgName: string;\n email: string;\n actionPromise: Promise;\n\n constructor(private router: Router, private toasterService: ToasterService,\n private i18nService: I18nService, private route: ActivatedRoute,\n private apiService: ApiService, private userService: UserService,\n private stateService: StateService) { }\n\n ngOnInit() {\n let fired = false;\n this.route.queryParams.subscribe(async (qParams) => {\n if (fired) {\n return;\n }\n fired = true;\n await this.stateService.remove('orgInvitation');\n let error = qParams.organizationId == null || qParams.organizationUserId == null || qParams.token == null;\n let errorMessage: string = null;\n if (!error) {\n this.authed = await this.userService.isAuthenticated();\n if (this.authed) {\n const request = new OrganizationUserAcceptRequest();\n request.token = qParams.token;\n try {\n this.actionPromise = this.apiService.postOrganizationUserAccept(qParams.organizationId,\n qParams.organizationUserId, request);\n await this.actionPromise;\n const toast: Toast = {\n type: 'success',\n title: this.i18nService.t('inviteAccepted'),\n body: this.i18nService.t('inviteAcceptedDesc'),\n timeout: 10000,\n };\n this.toasterService.popAsync(toast);\n this.router.navigate(['/vault']);\n } catch (e) {\n error = true;\n errorMessage = e.message;\n }\n } else {\n await this.stateService.save('orgInvitation', qParams);\n this.email = qParams.email;\n this.orgName = qParams.organizationName;\n if (this.orgName != null) {\n // Fix URL encoding of space issue with Angular\n this.orgName = this.orgName.replace(/\\+/g, ' ');\n }\n }\n }\n\n if (error) {\n const toast: Toast = {\n type: 'error',\n title: null,\n body: errorMessage != null ? this.i18nService.t('inviteAcceptFailedShort', errorMessage) :\n this.i18nService.t('inviteAcceptFailed'),\n timeout: 10000,\n };\n this.toasterService.popAsync(toast);\n this.router.navigate(['/']);\n }\n\n this.loading = false;\n });\n }\n}\n","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { AuthService } from 'jslib/abstractions/auth.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { TwoFactorRecoveryRequest } from 'jslib/models/request/twoFactorRecoveryRequest';\n\n@Component({\n selector: 'app-recover-two-factor',\n templateUrl: 'recover-two-factor.component.html',\n})\nexport class RecoverTwoFactorComponent {\n email: string;\n masterPassword: string;\n recoveryCode: string;\n formPromise: Promise;\n\n constructor(private router: Router, private apiService: ApiService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private i18nService: I18nService, private cryptoService: CryptoService,\n private authService: AuthService) { }\n\n async submit() {\n try {\n const request = new TwoFactorRecoveryRequest();\n request.recoveryCode = this.recoveryCode.replace(/\\s/g, '').toLowerCase();\n request.email = this.email.trim().toLowerCase();\n const key = await this.authService.makePreloginKey(this.masterPassword, request.email);\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, key);\n this.formPromise = this.apiService.postTwoFactorRecover(request);\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Recovered 2FA' });\n this.toasterService.popAsync('success', null, this.i18nService.t('twoStepRecoverDisabled'));\n this.router.navigate(['/']);\n } catch { }\n }\n}\n","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { DeleteRecoverRequest } from 'jslib/models/request/deleteRecoverRequest';\n\n@Component({\n selector: 'app-recover-delete',\n templateUrl: 'recover-delete.component.html',\n})\nexport class RecoverDeleteComponent {\n email: string;\n formPromise: Promise;\n\n constructor(private router: Router, private apiService: ApiService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private i18nService: I18nService) {\n }\n\n async submit() {\n try {\n const request = new DeleteRecoverRequest();\n request.email = this.email.trim().toLowerCase();\n this.formPromise = this.apiService.postAccountRecoverDelete(request);\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Started Delete Recovery' });\n this.toasterService.popAsync('success', null, this.i18nService.t('deleteRecoverEmailSent'));\n this.router.navigate(['/']);\n } catch { }\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { VerifyDeleteRecoverRequest } from 'jslib/models/request/verifyDeleteRecoverRequest';\n\n@Component({\n selector: 'app-verify-recover-delete',\n templateUrl: 'verify-recover-delete.component.html',\n})\nexport class VerifyRecoverDeleteComponent implements OnInit {\n email: string;\n formPromise: Promise;\n\n private userId: string;\n private token: string;\n\n constructor(private router: Router, private apiService: ApiService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private i18nService: I18nService, private route: ActivatedRoute) {\n }\n\n ngOnInit() {\n let fired = false;\n this.route.queryParams.subscribe(async (qParams) => {\n if (fired) {\n return;\n }\n fired = true;\n if (qParams.userId != null && qParams.token != null && qParams.email != null) {\n this.userId = qParams.userId;\n this.token = qParams.token;\n this.email = qParams.email;\n } else {\n this.router.navigate(['/']);\n }\n });\n }\n\n async submit() {\n try {\n const request = new VerifyDeleteRecoverRequest(this.userId, this.token);\n this.formPromise = this.apiService.postAccountRecoverDeleteToken(request);\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Recovered Delete' });\n this.toasterService.popAsync('success', this.i18nService.t('accountDeleted'),\n this.i18nService.t('accountDeletedDesc'));\n this.router.navigate(['/']);\n } catch { }\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { TokenService } from 'jslib/abstractions/token.service';\n\n@Component({\n selector: 'app-navbar',\n templateUrl: 'navbar.component.html',\n})\nexport class NavbarComponent implements OnInit {\n selfHosted = false;\n name: string;\n email: string;\n\n constructor(private messagingService: MessagingService, private platformUtilsService: PlatformUtilsService,\n private tokenService: TokenService) {\n this.selfHosted = this.platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n this.name = await this.tokenService.getName();\n this.email = await this.tokenService.getEmail();\n if (this.name == null || this.name.trim() === '') {\n this.name = this.email;\n }\n }\n\n lock() {\n this.messagingService.send('lockVault');\n }\n\n logOut() {\n this.messagingService.send('logout');\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\n@Component({\n selector: 'app-footer',\n templateUrl: 'footer.component.html',\n})\nexport class FooterComponent implements OnInit {\n version: string;\n year: string = '2015';\n\n constructor(private platformUtilsService: PlatformUtilsService) { }\n\n ngOnInit() {\n this.year = new Date().getFullYear().toString();\n this.version = this.platformUtilsService.getApplicationVersion();\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\n@Component({\n selector: 'app-user-layout',\n templateUrl: 'user-layout.component.html',\n})\nexport class UserLayoutComponent implements OnInit {\n ngOnInit() {\n document.body.classList.remove('layout_frontend');\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n NgZone,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { CipherType } from 'jslib/enums/cipherType';\n\nimport { CipherView } from 'jslib/models/view/cipherView';\n\nimport { ModalComponent } from '../modal.component';\n\nimport { OrganizationsComponent } from '../settings/organizations.component';\nimport { UpdateKeyComponent } from '../settings/update-key.component';\nimport { AddEditComponent } from './add-edit.component';\nimport { AttachmentsComponent } from './attachments.component';\nimport { BulkDeleteComponent } from './bulk-delete.component';\nimport { BulkMoveComponent } from './bulk-move.component';\nimport { BulkShareComponent } from './bulk-share.component';\nimport { CiphersComponent } from './ciphers.component';\nimport { CollectionsComponent } from './collections.component';\nimport { FolderAddEditComponent } from './folder-add-edit.component';\nimport { GroupingsComponent } from './groupings.component';\nimport { ShareComponent } from './share.component';\n\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { SyncService } from 'jslib/abstractions/sync.service';\nimport { TokenService } from 'jslib/abstractions/token.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { BroadcasterService } from 'jslib/angular/services/broadcaster.service';\n\nconst BroadcasterSubscriptionId = 'VaultComponent';\n\n@Component({\n selector: 'app-vault',\n templateUrl: 'vault.component.html',\n})\nexport class VaultComponent implements OnInit, OnDestroy {\n @ViewChild(GroupingsComponent) groupingsComponent: GroupingsComponent;\n @ViewChild(CiphersComponent) ciphersComponent: CiphersComponent;\n @ViewChild(OrganizationsComponent) organizationsComponent: OrganizationsComponent;\n @ViewChild('attachments', { read: ViewContainerRef }) attachmentsModalRef: ViewContainerRef;\n @ViewChild('folderAddEdit', { read: ViewContainerRef }) folderAddEditModalRef: ViewContainerRef;\n @ViewChild('cipherAddEdit', { read: ViewContainerRef }) cipherAddEditModalRef: ViewContainerRef;\n @ViewChild('share', { read: ViewContainerRef }) shareModalRef: ViewContainerRef;\n @ViewChild('collections', { read: ViewContainerRef }) collectionsModalRef: ViewContainerRef;\n @ViewChild('bulkDeleteTemplate', { read: ViewContainerRef }) bulkDeleteModalRef: ViewContainerRef;\n @ViewChild('bulkMoveTemplate', { read: ViewContainerRef }) bulkMoveModalRef: ViewContainerRef;\n @ViewChild('bulkShareTemplate', { read: ViewContainerRef }) bulkShareModalRef: ViewContainerRef;\n @ViewChild('updateKeyTemplate', { read: ViewContainerRef }) updateKeyModalRef: ViewContainerRef;\n\n favorites: boolean = false;\n type: CipherType = null;\n folderId: string = null;\n collectionId: string = null;\n showVerifyEmail = false;\n showBrowserOutdated = false;\n showUpdateKey = false;\n showPremiumCallout = false;\n\n private modal: ModalComponent = null;\n\n constructor(private syncService: SyncService, private route: ActivatedRoute,\n private router: Router, private changeDetectorRef: ChangeDetectorRef,\n private i18nService: I18nService, private componentFactoryResolver: ComponentFactoryResolver,\n private tokenService: TokenService, private cryptoService: CryptoService,\n private messagingService: MessagingService, private userService: UserService,\n private platformUtilsService: PlatformUtilsService, private toasterService: ToasterService,\n private broadcasterService: BroadcasterService, private ngZone: NgZone) { }\n\n async ngOnInit() {\n this.showVerifyEmail = !(await this.tokenService.getEmailVerified());\n this.showBrowserOutdated = window.navigator.userAgent.indexOf('MSIE') !== -1;\n\n const queryParamsSub = this.route.queryParams.subscribe(async (params) => {\n await this.syncService.fullSync(false);\n\n this.showUpdateKey = !(await this.cryptoService.hasEncKey());\n const canAccessPremium = await this.userService.canAccessPremium();\n this.showPremiumCallout = !this.showVerifyEmail && !canAccessPremium &&\n !this.platformUtilsService.isSelfHost();\n\n await Promise.all([\n this.groupingsComponent.load(),\n this.organizationsComponent.load(),\n ]);\n\n if (params == null) {\n this.groupingsComponent.selectedAll = true;\n await this.ciphersComponent.reload();\n } else {\n if (params.favorites) {\n this.groupingsComponent.selectedFavorites = true;\n await this.filterFavorites();\n } else if (params.type) {\n const t = parseInt(params.type, null);\n this.groupingsComponent.selectedType = t;\n await this.filterCipherType(t);\n } else if (params.folderId) {\n this.groupingsComponent.selectedFolder = true;\n this.groupingsComponent.selectedFolderId = params.folderId;\n await this.filterFolder(params.folderId);\n } else if (params.collectionId) {\n this.groupingsComponent.selectedCollectionId = params.collectionId;\n await this.filterCollection(params.collectionId);\n } else {\n this.groupingsComponent.selectedAll = true;\n await this.ciphersComponent.reload();\n }\n }\n\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'syncCompleted':\n if (message.successfully) {\n await Promise.all([\n this.groupingsComponent.load(),\n this.organizationsComponent.load(),\n this.ciphersComponent.load(this.ciphersComponent.filter),\n ]);\n this.changeDetectorRef.detectChanges();\n }\n break;\n }\n });\n });\n\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async clearGroupingFilters() {\n this.ciphersComponent.showAddNew = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchVault');\n await this.ciphersComponent.reload();\n this.clearFilters();\n this.go();\n }\n\n async filterFavorites() {\n this.ciphersComponent.showAddNew = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchFavorites');\n await this.ciphersComponent.reload((c) => c.favorite);\n this.clearFilters();\n this.favorites = true;\n this.go();\n }\n\n async filterCipherType(type: CipherType) {\n this.ciphersComponent.showAddNew = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchType');\n await this.ciphersComponent.reload((c) => c.type === type);\n this.clearFilters();\n this.type = type;\n this.go();\n }\n\n async filterFolder(folderId: string) {\n this.ciphersComponent.showAddNew = true;\n folderId = folderId === 'none' ? null : folderId;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchFolder');\n await this.ciphersComponent.reload((c) => c.folderId === folderId);\n this.clearFilters();\n this.folderId = folderId == null ? 'none' : folderId;\n this.go();\n }\n\n async filterCollection(collectionId: string) {\n this.ciphersComponent.showAddNew = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchCollection');\n await this.ciphersComponent.reload((c) => c.collectionIds != null &&\n c.collectionIds.indexOf(collectionId) > -1);\n this.clearFilters();\n this.collectionId = collectionId;\n this.go();\n }\n\n filterSearchText(searchText: string) {\n this.ciphersComponent.searchText = searchText;\n this.ciphersComponent.search(200);\n }\n\n async editCipherAttachments(cipher: CipherView) {\n const canAccessPremium = await this.userService.canAccessPremium();\n if (cipher.organizationId == null && !canAccessPremium) {\n this.messagingService.send('premiumRequired');\n return;\n } else if (cipher.organizationId != null) {\n const org = await this.userService.getOrganization(cipher.organizationId);\n if (org != null && (org.maxStorageGb == null || org.maxStorageGb === 0)) {\n this.messagingService.send('upgradeOrganization', { organizationId: cipher.organizationId });\n return;\n }\n }\n\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.attachmentsModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(AttachmentsComponent, this.attachmentsModalRef);\n\n childComponent.cipherId = cipher.id;\n let madeAttachmentChanges = false;\n childComponent.onUploadedAttachment.subscribe(() => madeAttachmentChanges = true);\n childComponent.onDeletedAttachment.subscribe(() => madeAttachmentChanges = true);\n childComponent.onReuploadedAttachment.subscribe(() => madeAttachmentChanges = true);\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n if (madeAttachmentChanges) {\n await this.ciphersComponent.refresh();\n }\n madeAttachmentChanges = false;\n });\n }\n\n shareCipher(cipher: CipherView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.shareModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(ShareComponent, this.shareModalRef);\n\n childComponent.cipherId = cipher.id;\n childComponent.onSharedCipher.subscribe(async () => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n editCipherCollections(cipher: CipherView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.collectionsModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(CollectionsComponent, this.collectionsModalRef);\n\n childComponent.cipherId = cipher.id;\n childComponent.onSavedCollections.subscribe(async () => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n async addFolder() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.folderAddEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n FolderAddEditComponent, this.folderAddEditModalRef);\n\n childComponent.folderId = null;\n childComponent.onSavedFolder.subscribe(async () => {\n this.modal.close();\n await this.groupingsComponent.loadFolders();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n async editFolder(folderId: string) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.folderAddEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n FolderAddEditComponent, this.folderAddEditModalRef);\n\n childComponent.folderId = folderId;\n childComponent.onSavedFolder.subscribe(async () => {\n this.modal.close();\n await this.groupingsComponent.loadFolders();\n });\n childComponent.onDeletedFolder.subscribe(async () => {\n this.modal.close();\n await this.groupingsComponent.loadFolders();\n await this.filterFolder('none');\n this.groupingsComponent.selectedFolderId = null;\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n addCipher() {\n const component = this.editCipher(null);\n component.type = this.type;\n component.folderId = this.folderId === 'none' ? null : this.folderId;\n if (this.collectionId != null) {\n const collection = this.groupingsComponent.collections.filter((c) => c.id === this.collectionId);\n if (collection.length > 0) {\n component.organizationId = collection[0].organizationId;\n component.collectionIds = [this.collectionId];\n }\n }\n }\n\n editCipher(cipher: CipherView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.cipherAddEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n AddEditComponent, this.cipherAddEditModalRef);\n\n childComponent.cipherId = cipher == null ? null : cipher.id;\n childComponent.onSavedCipher.subscribe(async (c: CipherView) => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n childComponent.onDeletedCipher.subscribe(async (c: CipherView) => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n\n return childComponent;\n }\n\n cloneCipher(cipher: CipherView) {\n const component = this.editCipher(cipher);\n component.cloneMode = true;\n }\n\n bulkDelete() {\n const selectedIds = this.ciphersComponent.getSelectedIds();\n if (selectedIds.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nothingSelected'));\n return;\n }\n\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.bulkDeleteModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(BulkDeleteComponent, this.bulkDeleteModalRef);\n\n childComponent.cipherIds = selectedIds;\n childComponent.onDeleted.subscribe(async () => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n bulkShare() {\n const selectedCiphers = this.ciphersComponent.getSelected();\n if (selectedCiphers.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nothingSelected'));\n return;\n }\n\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.bulkShareModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(BulkShareComponent, this.bulkShareModalRef);\n\n childComponent.ciphers = selectedCiphers;\n childComponent.onShared.subscribe(async () => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n bulkMove() {\n const selectedIds = this.ciphersComponent.getSelectedIds();\n if (selectedIds.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nothingSelected'));\n return;\n }\n\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.bulkMoveModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(BulkMoveComponent, this.bulkMoveModalRef);\n\n childComponent.cipherIds = selectedIds;\n childComponent.onMoved.subscribe(async () => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n selectAll(select: boolean) {\n this.ciphersComponent.selectAll(select);\n }\n\n updateKey() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.updateKeyModalRef.createComponent(factory).instance;\n this.modal.show(UpdateKeyComponent, this.updateKeyModalRef);\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n private clearFilters() {\n this.folderId = null;\n this.collectionId = null;\n this.favorites = false;\n this.type = null;\n }\n\n private go(queryParams: any = null) {\n if (queryParams == null) {\n queryParams = {\n favorites: this.favorites ? true : null,\n type: this.type,\n folderId: this.folderId,\n collectionId: this.collectionId,\n };\n }\n\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: queryParams,\n replaceUrl: true,\n });\n }\n}\n","import { CipherRequest } from './cipherRequest';\n\nimport { Cipher } from '../domain/cipher';\n\nexport class CipherWithIdRequest extends CipherRequest {\n id: string;\n\n constructor(cipher: Cipher) {\n super(cipher);\n this.id = cipher.id;\n }\n}\n","import { Folder } from '../domain/folder';\n\nexport class FolderRequest {\n name: string;\n\n constructor(folder: Folder) {\n this.name = folder.name ? folder.name.encryptedString : null;\n }\n}\n","import { Component } from '@angular/core';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { AttachmentView } from 'jslib/models/view/attachmentView';\n\nimport { AttachmentsComponent as BaseAttachmentsComponent } from 'jslib/angular/components/attachments.component';\n\n@Component({\n selector: 'app-vault-attachments',\n templateUrl: 'attachments.component.html',\n})\nexport class AttachmentsComponent extends BaseAttachmentsComponent {\n constructor(cipherService: CipherService, i18nService: I18nService,\n cryptoService: CryptoService, userService: UserService,\n platformUtilsService: PlatformUtilsService) {\n super(cipherService, i18nService, cryptoService, userService, platformUtilsService, window);\n }\n\n protected async reupload(attachment: AttachmentView) {\n if (this.showFixOldAttachments(attachment)) {\n await this.reuploadCipherAttachment(attachment, false);\n }\n }\n\n protected showFixOldAttachments(attachment: AttachmentView) {\n return attachment.key == null && this.cipher.organizationId == null;\n }\n}\n","import {\n Component,\n OnDestroy,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { CollectionService } from 'jslib/abstractions/collection.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { CollectionView } from 'jslib/models/view/collectionView';\n\nimport { CollectionsComponent as BaseCollectionsComponent } from 'jslib/angular/components/collections.component';\n\n@Component({\n selector: 'app-vault-collections',\n templateUrl: 'collections.component.html',\n})\nexport class CollectionsComponent extends BaseCollectionsComponent implements OnDestroy {\n constructor(collectionService: CollectionService, platformUtilsService: PlatformUtilsService,\n i18nService: I18nService, cipherService: CipherService) {\n super(collectionService, platformUtilsService, i18nService, cipherService);\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n selectAll(select: boolean) {\n this.collections.forEach((c) => this.check(c, select));\n }\n}\n","import {\n Component,\n NgZone,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { TokenService } from 'jslib/abstractions/token.service';\n\nimport { BroadcasterService } from 'jslib/angular/services/broadcaster.service';\n\nconst BroadcasterSubscriptionId = 'SettingsComponent';\n\n@Component({\n selector: 'app-settings',\n templateUrl: 'settings.component.html',\n})\nexport class SettingsComponent implements OnInit, OnDestroy {\n premium: boolean;\n selfHosted: boolean;\n\n constructor(private tokenService: TokenService, private broadcasterService: BroadcasterService,\n private ngZone: NgZone, private platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'purchasedPremium':\n await this.load();\n break;\n default:\n }\n });\n });\n\n this.selfHosted = await this.platformUtilsService.isSelfHost();\n await this.load();\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async load() {\n this.premium = await this.tokenService.getPremium();\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ModalComponent } from '../modal.component';\nimport { DeauthorizeSessionsComponent } from './deauthorize-sessions.component';\nimport { DeleteAccountComponent } from './delete-account.component';\nimport { PurgeVaultComponent } from './purge-vault.component';\n\n@Component({\n selector: 'app-account',\n templateUrl: 'account.component.html',\n})\nexport class AccountComponent {\n @ViewChild('deauthorizeSessionsTemplate', { read: ViewContainerRef }) deauthModalRef: ViewContainerRef;\n @ViewChild('purgeVaultTemplate', { read: ViewContainerRef }) purgeModalRef: ViewContainerRef;\n @ViewChild('deleteAccountTemplate', { read: ViewContainerRef }) deleteModalRef: ViewContainerRef;\n\n private modal: ModalComponent = null;\n\n constructor(private componentFactoryResolver: ComponentFactoryResolver) { }\n\n deauthorizeSessions() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.deauthModalRef.createComponent(factory).instance;\n this.modal.show(DeauthorizeSessionsComponent, this.deauthModalRef);\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n purgeVault() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.purgeModalRef.createComponent(factory).instance;\n this.modal.show(PurgeVaultComponent, this.purgeModalRef);\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n deleteAccount() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.deleteModalRef.createComponent(factory).instance;\n this.modal.show(DeleteAccountComponent, this.deleteModalRef);\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n}\n","import {\n Component,\n Input,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { PasswordVerificationRequest } from 'jslib/models/request/passwordVerificationRequest';\n\n@Component({\n selector: 'app-purge-vault',\n templateUrl: 'purge-vault.component.html',\n})\nexport class PurgeVaultComponent {\n @Input() organizationId?: string = null;\n\n masterPassword: string;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private cryptoService: CryptoService, private router: Router) { }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.apiService.postPurgeCiphers(request, this.organizationId);\n await this.formPromise;\n this.analytics.eventTrack.next({\n action: this.organizationId != null ? 'Purged Organization Vault' : 'Purged Vault',\n });\n this.toasterService.popAsync('success', null, this.i18nService.t('vaultPurged'));\n if (this.organizationId != null) {\n this.router.navigate(['organizations', this.organizationId, 'vault']);\n } else {\n this.router.navigate(['vault']);\n }\n } catch { }\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { StateService } from 'jslib/abstractions/state.service';\nimport { StorageService } from 'jslib/abstractions/storage.service';\nimport { VaultTimeoutService } from 'jslib/abstractions/vaultTimeout.service';\n\nimport { ConstantsService } from 'jslib/services/constants.service';\n\nimport { Utils } from 'jslib/misc/utils';\n\n@Component({\n selector: 'app-options',\n templateUrl: 'options.component.html',\n})\nexport class OptionsComponent implements OnInit {\n vaultTimeout: number = null;\n vaultTimeoutAction: string = 'lock';\n disableIcons: boolean;\n enableGravatars: boolean;\n locale: string;\n vaultTimeouts: any[];\n localeOptions: any[];\n\n private startingLocale: string;\n\n constructor(private storageService: StorageService, private stateService: StateService,\n private analytics: Angulartics2, private i18nService: I18nService,\n private toasterService: ToasterService, private vaultTimeoutService: VaultTimeoutService,\n private platformUtilsService: PlatformUtilsService) {\n this.vaultTimeouts = [\n { name: i18nService.t('oneMinute'), value: 1 },\n { name: i18nService.t('fiveMinutes'), value: 5 },\n { name: i18nService.t('fifteenMinutes'), value: 15 },\n { name: i18nService.t('thirtyMinutes'), value: 30 },\n { name: i18nService.t('oneHour'), value: 60 },\n { name: i18nService.t('fourHours'), value: 240 },\n { name: i18nService.t('onRefresh'), value: -1 },\n ];\n if (this.platformUtilsService.isDev()) {\n this.vaultTimeouts.push({ name: i18nService.t('never'), value: null });\n }\n\n const localeOptions: any[] = [];\n i18nService.supportedTranslationLocales.forEach((locale) => {\n let name = locale;\n if (i18nService.localeNames.has(locale)) {\n name += (' - ' + i18nService.localeNames.get(locale));\n }\n localeOptions.push({ name: name, value: locale });\n });\n localeOptions.sort(Utils.getSortFunction(i18nService, 'name'));\n localeOptions.splice(0, 0, { name: i18nService.t('default'), value: null });\n this.localeOptions = localeOptions;\n }\n\n async ngOnInit() {\n this.vaultTimeout = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n this.vaultTimeoutAction = await this.storageService.get(ConstantsService.vaultTimeoutActionKey);\n this.disableIcons = await this.storageService.get(ConstantsService.disableFaviconKey);\n this.enableGravatars = await this.storageService.get('enableGravatars');\n this.locale = this.startingLocale = await this.storageService.get(ConstantsService.localeKey);\n }\n\n async submit() {\n if (this.vaultTimeoutAction === 'logOut') {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('vaultTimeoutLogOutConfirmation'),\n this.i18nService.t('vaultTimeoutLogOutConfirmationTitle'),\n this.i18nService.t('yes'), this.i18nService.t('cancel'), 'warning');\n if (!confirmed) {\n return;\n }\n }\n await this.vaultTimeoutService.setVaultTimeoutOptions(this.vaultTimeout != null ? this.vaultTimeout : null,\n this.vaultTimeoutAction);\n await this.storageService.save(ConstantsService.disableFaviconKey, this.disableIcons);\n await this.stateService.save(ConstantsService.disableFaviconKey, this.disableIcons);\n await this.storageService.save('enableGravatars', this.enableGravatars);\n await this.stateService.save('enableGravatars', this.enableGravatars);\n await this.storageService.save(ConstantsService.localeKey, this.locale);\n this.analytics.eventTrack.next({ action: 'Saved Options' });\n if (this.locale !== this.startingLocale) {\n window.location.reload();\n } else {\n this.toasterService.popAsync('success', null, this.i18nService.t('optionsUpdated'));\n }\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { UpdateDomainsRequest } from 'jslib/models/request/updateDomainsRequest';\n\n@Component({\n selector: 'app-domain-rules',\n templateUrl: 'domain-rules.component.html',\n})\nexport class DomainRulesComponent implements OnInit {\n loading = true;\n custom: string[] = [];\n global: any[] = [];\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService) { }\n\n async ngOnInit() {\n const response = await this.apiService.getSettingsDomains();\n this.loading = false;\n if (response.equivalentDomains != null) {\n this.custom = response.equivalentDomains.map((d) => d.join(', '));\n }\n if (response.globalEquivalentDomains != null) {\n this.global = response.globalEquivalentDomains.map((d) => {\n return {\n domains: d.domains.join(', '),\n excluded: d.excluded,\n key: d.type,\n };\n });\n }\n }\n\n toggleExcluded(globalDomain: any) {\n globalDomain.excluded = !globalDomain.excluded;\n }\n\n customize(globalDomain: any) {\n globalDomain.excluded = true;\n this.custom.push(globalDomain.domains);\n }\n\n remove(index: number) {\n this.custom.splice(index, 1);\n }\n\n add() {\n this.custom.push('');\n }\n\n async submit() {\n const request = new UpdateDomainsRequest();\n request.excludedGlobalEquivalentDomains = this.global.filter((d) => d.excluded)\n .map((d) => d.key);\n if (request.excludedGlobalEquivalentDomains.length === 0) {\n request.excludedGlobalEquivalentDomains = null;\n }\n request.equivalentDomains = this.custom.filter((d) => d != null && d.trim() !== '')\n .map((d) => d.split(',').map((d2) => d2.trim()));\n if (request.equivalentDomains.length === 0) {\n request.equivalentDomains = null;\n }\n\n try {\n this.formPromise = this.apiService.putSettingsDomains(request);\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Saved Equivalent Domains' });\n this.toasterService.popAsync('success', null, this.i18nService.t('domainsUpdated'));\n } catch { }\n }\n\n indexTrackBy(index: number, obj: any): any {\n return index;\n }\n}\n","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { TwoFactorProviderType } from 'jslib/enums/twoFactorProviderType';\nimport { UpdateTwoFactorDuoRequest } from 'jslib/models/request/updateTwoFactorDuoRequest';\nimport { TwoFactorDuoResponse } from 'jslib/models/response/twoFactorDuoResponse';\n\nimport { TwoFactorBaseComponent } from './two-factor-base.component';\n\n@Component({\n selector: 'app-two-factor-duo',\n templateUrl: 'two-factor-duo.component.html',\n})\nexport class TwoFactorDuoComponent extends TwoFactorBaseComponent {\n type = TwoFactorProviderType.Duo;\n ikey: string;\n skey: string;\n host: string;\n formPromise: Promise;\n\n constructor(apiService: ApiService, i18nService: I18nService,\n analytics: Angulartics2, toasterService: ToasterService,\n platformUtilsService: PlatformUtilsService) {\n super(apiService, i18nService, analytics, toasterService, platformUtilsService);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n this.processResponse(authResponse.response);\n }\n\n submit() {\n if (this.enabled) {\n return super.disable(this.formPromise);\n } else {\n return this.enable();\n }\n }\n\n protected enable() {\n const request = new UpdateTwoFactorDuoRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n request.integrationKey = this.ikey;\n request.secretKey = this.skey;\n request.host = this.host;\n\n return super.enable(async () => {\n if (this.organizationId != null) {\n this.formPromise = this.apiService.putTwoFactorOrganizationDuo(this.organizationId, request);\n } else {\n this.formPromise = this.apiService.putTwoFactorDuo(request);\n }\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n private processResponse(response: TwoFactorDuoResponse) {\n this.ikey = response.integrationKey;\n this.skey = response.secretKey;\n this.host = response.host;\n this.enabled = response.enabled;\n }\n}\n","import {\n Component,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { SyncService } from 'jslib/abstractions/sync.service';\nimport { TokenService } from 'jslib/abstractions/token.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { PaymentComponent } from './payment.component';\n\n@Component({\n selector: 'app-premium',\n templateUrl: 'premium.component.html',\n})\nexport class PremiumComponent implements OnInit {\n @ViewChild(PaymentComponent) paymentComponent: PaymentComponent;\n\n canAccessPremium = false;\n selfHosted = false;\n premiumPrice = 10;\n storageGbPrice = 4;\n additionalStorage = 0;\n\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n platformUtilsService: PlatformUtilsService, private tokenService: TokenService,\n private router: Router, private messagingService: MessagingService,\n private syncService: SyncService, private userService: UserService) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n this.canAccessPremium = await this.userService.canAccessPremium();\n const premium = await this.tokenService.getPremium();\n if (premium) {\n this.router.navigate(['/settings/subscription']);\n return;\n }\n }\n\n async submit() {\n let files: FileList = null;\n if (this.selfHosted) {\n const fileEl = document.getElementById('file') as HTMLInputElement;\n files = fileEl.files;\n if (files == null || files.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n return;\n }\n }\n\n try {\n if (this.selfHosted) {\n if (!this.tokenService.getEmailVerified()) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('verifyEmailFirst'));\n return;\n }\n\n const fd = new FormData();\n fd.append('license', files[0]);\n this.formPromise = this.apiService.postAccountLicense(fd).then(() => {\n return this.finalizePremium();\n });\n } else {\n this.formPromise = this.paymentComponent.createPaymentToken().then((result) => {\n const fd = new FormData();\n fd.append('paymentMethodType', result[1].toString());\n if (result[0] != null) {\n fd.append('paymentToken', result[0]);\n }\n fd.append('additionalStorageGb', (this.additionalStorage || 0).toString());\n return this.apiService.postPremium(fd);\n }).then((paymentResponse) => {\n if (!paymentResponse.success && paymentResponse.paymentIntentClientSecret != null) {\n return this.paymentComponent.handleStripeCardPayment(paymentResponse.paymentIntentClientSecret,\n () => this.finalizePremium());\n } else {\n return this.finalizePremium();\n }\n });\n }\n await this.formPromise;\n } catch { }\n }\n\n async finalizePremium() {\n await this.apiService.refreshIdentityToken();\n await this.syncService.fullSync(true);\n this.analytics.eventTrack.next({ action: 'Signed Up Premium' });\n this.toasterService.popAsync('success', null, this.i18nService.t('premiumUpdated'));\n this.messagingService.send('purchasedPremium');\n this.router.navigate(['/settings/subscription']);\n }\n\n get additionalStorageTotal(): number {\n return this.storageGbPrice * Math.abs(this.additionalStorage || 0);\n }\n\n get total(): number {\n return this.additionalStorageTotal + this.premiumPrice;\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { PaymentMethodType } from 'jslib/enums/paymentMethodType';\n\nimport { BitPayInvoiceRequest } from 'jslib/models/request/bitPayInvoiceRequest';\n\nimport { WebConstants } from '../../services/webConstants';\n\n@Component({\n selector: 'app-add-credit',\n templateUrl: 'add-credit.component.html',\n})\nexport class AddCreditComponent implements OnInit {\n @Input() creditAmount: string;\n @Input() showOptions = true;\n @Input() method = PaymentMethodType.PayPal;\n @Input() organizationId: string;\n @Output() onAdded = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n @ViewChild('ppButtonForm', { read: ElementRef }) ppButtonFormRef: ElementRef;\n\n paymentMethodType = PaymentMethodType;\n ppButtonFormAction = WebConstants.paypal.buttonActionProduction;\n ppButtonBusinessId = WebConstants.paypal.businessIdProduction;\n ppButtonCustomField: string;\n ppLoading = false;\n subject: string;\n returnUrl: string;\n formPromise: Promise;\n\n private userId: string;\n private name: string;\n private email: string;\n\n constructor(private userService: UserService, private apiService: ApiService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private platformUtilsService: PlatformUtilsService) {\n if (platformUtilsService.isDev()) {\n this.ppButtonFormAction = WebConstants.paypal.buttonActionSandbox;\n this.ppButtonBusinessId = WebConstants.paypal.businessIdSandbox;\n }\n }\n\n async ngOnInit() {\n if (this.organizationId != null) {\n if (this.creditAmount == null) {\n this.creditAmount = '20.00';\n }\n this.ppButtonCustomField = 'organization_id:' + this.organizationId;\n const org = await this.userService.getOrganization(this.organizationId);\n if (org != null) {\n this.subject = org.name;\n this.name = org.name;\n }\n } else {\n if (this.creditAmount == null) {\n this.creditAmount = '10.00';\n }\n this.userId = await this.userService.getUserId();\n this.subject = await this.userService.getEmail();\n this.email = this.subject;\n this.ppButtonCustomField = 'user_id:' + this.userId;\n }\n this.ppButtonCustomField += ',account_credit:1';\n this.returnUrl = window.location.href;\n }\n\n async submit() {\n if (this.creditAmount == null || this.creditAmount === '') {\n return;\n }\n\n if (this.method === PaymentMethodType.PayPal) {\n this.ppButtonFormRef.nativeElement.submit();\n this.ppLoading = true;\n return;\n }\n if (this.method === PaymentMethodType.BitPay) {\n try {\n const req = new BitPayInvoiceRequest();\n req.email = this.email;\n req.name = this.name;\n req.credit = true;\n req.amount = this.creditAmountNumber;\n req.organizationId = this.organizationId;\n req.userId = this.userId;\n req.returnUrl = this.returnUrl;\n this.formPromise = this.apiService.postBitPayInvoice(req);\n const bitPayUrl: string = await this.formPromise;\n this.platformUtilsService.launchUri(bitPayUrl);\n } catch { }\n return;\n }\n try {\n this.analytics.eventTrack.next({\n action: 'Added Credit',\n });\n this.onAdded.emit();\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n formatAmount() {\n try {\n if (this.creditAmount != null && this.creditAmount !== '') {\n const floatAmount = Math.abs(parseFloat(this.creditAmount));\n if (floatAmount > 0) {\n this.creditAmount = parseFloat((Math.round(floatAmount * 100) / 100).toString())\n .toFixed(2).toString();\n return;\n }\n }\n } catch { }\n this.creditAmount = '';\n }\n\n get creditAmountNumber(): number {\n if (this.creditAmount != null && this.creditAmount !== '') {\n try {\n return parseFloat(this.creditAmount);\n } catch { }\n }\n return null;\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { PaymentRequest } from 'jslib/models/request/paymentRequest';\n\nimport { PaymentMethodType } from 'jslib/enums/paymentMethodType';\n\nimport { PaymentComponent } from './payment.component';\n\n@Component({\n selector: 'app-adjust-payment',\n templateUrl: 'adjust-payment.component.html',\n})\nexport class AdjustPaymentComponent {\n @ViewChild(PaymentComponent) paymentComponent: PaymentComponent;\n\n @Input() currentType?: PaymentMethodType;\n @Input() organizationId: string;\n @Output() onAdjusted = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n paymentMethodType = PaymentMethodType;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService) { }\n\n async submit() {\n try {\n const request = new PaymentRequest();\n this.formPromise = this.paymentComponent.createPaymentToken().then((result) => {\n request.paymentToken = result[0];\n request.paymentMethodType = result[1];\n if (this.organizationId == null) {\n return this.apiService.postAccountPayment(request);\n } else {\n return this.apiService.postOrganizationPayment(this.organizationId, request);\n }\n });\n await this.formPromise;\n this.analytics.eventTrack.next({\n action: this.currentType == null ? 'Added Payment Method' : 'Changed Payment Method',\n });\n this.toasterService.popAsync('success', null, this.i18nService.t('updatedPaymentMethod'));\n this.onAdjusted.emit();\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\n@Component({\n selector: 'app-update-license',\n templateUrl: 'update-license.component.html',\n})\nexport class UpdateLicenseComponent {\n @Input() organizationId: string;\n @Output() onUpdated = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService) { }\n\n async submit() {\n const fileEl = document.getElementById('file') as HTMLInputElement;\n const files = fileEl.files;\n if (files == null || files.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n return;\n }\n\n try {\n const fd = new FormData();\n fd.append('license', files[0]);\n\n let updatePromise: Promise = null;\n if (this.organizationId == null) {\n updatePromise = this.apiService.postAccountLicense(fd);\n } else {\n updatePromise = this.apiService.postOrganizationLicenseUpdate(this.organizationId, fd);\n }\n\n this.formPromise = updatePromise.then(() => {\n return this.apiService.refreshIdentityToken();\n });\n\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Updated License' });\n this.toasterService.popAsync('success', null, this.i18nService.t('updatedLicense'));\n this.onUpdated.emit();\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { StorageRequest } from 'jslib/models/request/storageRequest';\n\nimport { PaymentResponse } from 'jslib/models/response/paymentResponse';\n\nimport { PaymentComponent } from './payment.component';\n\n@Component({\n selector: 'app-adjust-storage',\n templateUrl: 'adjust-storage.component.html',\n})\nexport class AdjustStorageComponent {\n @Input() storageGbPrice = 0;\n @Input() add = true;\n @Input() organizationId: string;\n @Input() interval = 'year';\n @Output() onAdjusted = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n @ViewChild(PaymentComponent) paymentComponent: PaymentComponent;\n\n storageAdjustment = 0;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private router: Router, private activatedRoute: ActivatedRoute) { }\n\n async submit() {\n try {\n const request = new StorageRequest();\n request.storageGbAdjustment = this.storageAdjustment;\n if (!this.add) {\n request.storageGbAdjustment *= -1;\n }\n\n let paymentFailed = false;\n const action = async () => {\n let response: Promise;\n if (this.organizationId == null) {\n response = this.formPromise = this.apiService.postAccountStorage(request);\n } else {\n response = this.formPromise = this.apiService.postOrganizationStorage(this.organizationId, request);\n }\n const result = await response;\n if (result != null && result.paymentIntentClientSecret != null) {\n try {\n await this.paymentComponent.handleStripeCardPayment(result.paymentIntentClientSecret, null);\n } catch {\n paymentFailed = true;\n }\n }\n };\n this.formPromise = action();\n await this.formPromise;\n this.analytics.eventTrack.next({ action: this.add ? 'Added Storage' : 'Removed Storage' });\n this.onAdjusted.emit(this.storageAdjustment);\n if (paymentFailed) {\n this.toasterService.popAsync({\n body: this.i18nService.t('couldNotChargeCardPayInvoice'),\n type: 'warning',\n timeout: 10000,\n });\n this.router.navigate(['../billing'], { relativeTo: this.activatedRoute });\n } else {\n this.toasterService.popAsync('success', null,\n this.i18nService.t('adjustedStorage', request.storageGbAdjustment.toString()));\n }\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n get adjustedStorageTotal(): number {\n return this.storageGbPrice * this.storageAdjustment;\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { SubscriptionResponse } from 'jslib/models/response/subscriptionResponse';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { TokenService } from 'jslib/abstractions/token.service';\n\n@Component({\n selector: 'app-user-subscription',\n templateUrl: 'user-subscription.component.html',\n})\nexport class UserSubscriptionComponent implements OnInit {\n loading = false;\n firstLoaded = false;\n adjustStorageAdd = true;\n showAdjustStorage = false;\n showUpdateLicense = false;\n sub: SubscriptionResponse;\n selfHosted = false;\n\n cancelPromise: Promise;\n reinstatePromise: Promise;\n\n constructor(private tokenService: TokenService, private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private router: Router) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n await this.load();\n this.firstLoaded = true;\n }\n\n async load() {\n if (this.loading) {\n return;\n }\n\n if (this.tokenService.getPremium()) {\n this.loading = true;\n this.sub = await this.apiService.getUserSubscription();\n } else {\n this.router.navigate(['/settings/premium']);\n return;\n }\n\n this.loading = false;\n }\n\n async reinstate() {\n if (this.loading) {\n return;\n }\n\n if (this.usingInAppPurchase) {\n this.platformUtilsService.showDialog(this.i18nService.t('manageSubscriptionFromStore'),\n this.i18nService.t('cancelSubscription'), null, null, 'warning');\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('reinstateConfirmation'),\n this.i18nService.t('reinstateSubscription'), this.i18nService.t('yes'), this.i18nService.t('cancel'));\n if (!confirmed) {\n return;\n }\n\n try {\n this.reinstatePromise = this.apiService.postReinstatePremium();\n await this.reinstatePromise;\n this.analytics.eventTrack.next({ action: 'Reinstated Premium' });\n this.toasterService.popAsync('success', null, this.i18nService.t('reinstated'));\n this.load();\n } catch { }\n }\n\n async cancel() {\n if (this.loading) {\n return;\n }\n\n if (this.usingInAppPurchase) {\n this.platformUtilsService.showDialog(this.i18nService.t('manageSubscriptionFromStore'),\n this.i18nService.t('cancelSubscription'), null, null, 'warning');\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('cancelConfirmation'),\n this.i18nService.t('cancelSubscription'), this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n\n try {\n this.cancelPromise = this.apiService.postCancelPremium();\n await this.cancelPromise;\n this.analytics.eventTrack.next({ action: 'Canceled Premium' });\n this.toasterService.popAsync('success', null, this.i18nService.t('canceledSubscription'));\n this.load();\n } catch { }\n }\n\n downloadLicense() {\n if (this.loading) {\n return;\n }\n\n const licenseString = JSON.stringify(this.sub.license, null, 2);\n this.platformUtilsService.saveFile(window, licenseString, null, 'bitwarden_premium_license.json');\n }\n\n updateLicense() {\n if (this.loading) {\n return;\n }\n this.showUpdateLicense = true;\n }\n\n closeUpdateLicense(load: boolean) {\n this.showUpdateLicense = false;\n if (load) {\n this.load();\n }\n }\n\n adjustStorage(add: boolean) {\n if (this.usingInAppPurchase) {\n this.platformUtilsService.showDialog(this.i18nService.t('cannotPerformInAppPurchase'),\n this.i18nService.t(add ? 'addStorage' : 'removeStorage'), null, null, 'warning');\n return;\n }\n this.adjustStorageAdd = add;\n this.showAdjustStorage = true;\n }\n\n closeStorage(load: boolean) {\n this.showAdjustStorage = false;\n if (load) {\n this.load();\n }\n }\n\n get subscriptionMarkedForCancel() {\n return this.subscription != null && !this.subscription.cancelled && this.subscription.cancelAtEndDate;\n }\n\n get subscription() {\n return this.sub != null ? this.sub.subscription : null;\n }\n\n get nextInvoice() {\n return this.sub != null ? this.sub.upcomingInvoice : null;\n }\n\n get storagePercentage() {\n return this.sub != null && this.sub.maxStorageGb ?\n +(100 * (this.sub.storageGb / this.sub.maxStorageGb)).toFixed(2) : 0;\n }\n\n get storageProgressWidth() {\n return this.storagePercentage < 5 ? 5 : 0;\n }\n\n get usingInAppPurchase() {\n return this.sub != null ? this.sub.usingInAppPurchase : false;\n }\n}\n","import {\n Component,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { OrganizationPlansComponent } from './organization-plans.component';\n\n@Component({\n selector: 'app-create-organization',\n templateUrl: 'create-organization.component.html',\n})\nexport class CreateOrganizationComponent implements OnInit {\n @ViewChild(OrganizationPlansComponent) orgPlansComponent: OrganizationPlansComponent;\n\n constructor(private route: ActivatedRoute) { }\n\n ngOnInit() {\n const queryParamsSub = this.route.queryParams.subscribe(async (qParams) => {\n if (qParams.plan === 'families' || qParams.plan === 'teams' || qParams.plan === 'enterprise') {\n this.orgPlansComponent.plan = qParams.plan;\n }\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\n@Component({\n selector: 'app-tools',\n templateUrl: 'tools.component.html',\n})\nexport class ToolsComponent implements OnInit {\n canAccessPremium = false;\n\n constructor(private userService: UserService, private messagingService: MessagingService) { }\n\n async ngOnInit() {\n this.canAccessPremium = await this.userService.canAccessPremium();\n }\n\n premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send('premiumRequired');\n return;\n }\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport {\n PasswordGeneratorComponent as BasePasswordGeneratorComponent,\n} from 'jslib/angular/components/password-generator.component';\n\nimport { ModalComponent } from '../modal.component';\nimport { PasswordGeneratorHistoryComponent } from './password-generator-history.component';\n\n@Component({\n selector: 'app-password-generator',\n templateUrl: 'password-generator.component.html',\n})\nexport class PasswordGeneratorComponent extends BasePasswordGeneratorComponent {\n @ViewChild('historyTemplate', { read: ViewContainerRef }) historyModalRef: ViewContainerRef;\n\n private modal: ModalComponent = null;\n\n constructor(passwordGenerationService: PasswordGenerationService, platformUtilsService: PlatformUtilsService,\n i18nService: I18nService, private componentFactoryResolver: ComponentFactoryResolver) {\n super(passwordGenerationService, platformUtilsService, i18nService, window);\n }\n\n history() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.historyModalRef.createComponent(factory).instance;\n this.modal.show(PasswordGeneratorHistoryComponent, this.historyModalRef);\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n lengthChanged() {\n document.getElementById('length').focus();\n }\n\n minNumberChanged() {\n document.getElementById('min-number').focus();\n }\n\n minSpecialChanged() {\n document.getElementById('min-special').focus();\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { AuditService } from 'jslib/abstractions/audit.service';\nimport { UserService } from 'jslib/abstractions/user.service';\nimport { BreachAccountResponse } from 'jslib/models/response/breachAccountResponse';\n\n@Component({\n selector: 'app-breach-report',\n templateUrl: 'breach-report.component.html',\n})\nexport class BreachReportComponent implements OnInit {\n error = false;\n username: string;\n checkedUsername: string;\n breachedAccounts: BreachAccountResponse[] = [];\n formPromise: Promise;\n\n constructor(private auditService: AuditService, private userService: UserService) { }\n\n async ngOnInit() {\n this.username = await this.userService.getEmail();\n }\n\n async submit() {\n this.error = false;\n this.username = this.username.toLowerCase();\n try {\n this.formPromise = this.auditService.breachedAccounts(this.username);\n this.breachedAccounts = await this.formPromise;\n } catch {\n this.error = true;\n }\n this.checkedUsername = this.username;\n }\n}\n","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { AuditService } from 'jslib/abstractions/audit.service';\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { CollectionService } from 'jslib/abstractions/collection.service';\nimport { EventService } from 'jslib/abstractions/event.service';\nimport { FolderService } from 'jslib/abstractions/folder.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { StateService } from 'jslib/abstractions/state.service';\nimport { TotpService } from 'jslib/abstractions/totp.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CipherData } from 'jslib/models/data/cipherData';\nimport { Cipher } from 'jslib/models/domain/cipher';\nimport { Organization } from 'jslib/models/domain/organization';\nimport { CipherCreateRequest } from 'jslib/models/request/cipherCreateRequest';\nimport { CipherRequest } from 'jslib/models/request/cipherRequest';\n\nimport { AddEditComponent as BaseAddEditComponent } from '../../vault/add-edit.component';\n\n@Component({\n selector: 'app-org-vault-add-edit',\n templateUrl: '../../vault/add-edit.component.html',\n})\nexport class AddEditComponent extends BaseAddEditComponent {\n organization: Organization;\n originalCipher: Cipher = null;\n\n constructor(cipherService: CipherService, folderService: FolderService,\n i18nService: I18nService, platformUtilsService: PlatformUtilsService,\n auditService: AuditService, stateService: StateService,\n userService: UserService, collectionService: CollectionService,\n totpService: TotpService, passwordGenerationService: PasswordGenerationService,\n private apiService: ApiService, messagingService: MessagingService,\n eventService: EventService) {\n super(cipherService, folderService, i18nService, platformUtilsService, auditService, stateService,\n userService, collectionService, totpService, passwordGenerationService, messagingService,\n eventService);\n }\n\n protected allowOwnershipAssignment() {\n if (this.ownershipOptions != null && this.ownershipOptions.length > 1) {\n if (this.organization != null) {\n return this.cloneMode && this.organization.isAdmin;\n } else {\n return !this.editMode || this.cloneMode;\n }\n }\n return false;\n }\n\n protected loadCollections() {\n if (!this.organization.isAdmin) {\n return super.loadCollections();\n }\n return Promise.resolve(this.collections);\n }\n\n protected async loadCipher() {\n if (!this.organization.isAdmin) {\n return await super.loadCipher();\n }\n const response = await this.apiService.getCipherAdmin(this.cipherId);\n const data = new CipherData(response);\n this.originalCipher = new Cipher(data);\n return new Cipher(data);\n }\n\n protected encryptCipher() {\n if (!this.organization.isAdmin) {\n return super.encryptCipher();\n }\n return this.cipherService.encrypt(this.cipher, null, this.originalCipher);\n }\n\n protected async saveCipher(cipher: Cipher) {\n if (!this.organization.isAdmin || cipher.organizationId == null) {\n return super.saveCipher(cipher);\n }\n if (this.editMode && !this.cloneMode) {\n const request = new CipherRequest(cipher);\n return this.apiService.putCipherAdmin(this.cipherId, request);\n } else {\n const request = new CipherCreateRequest(cipher);\n return this.apiService.postCipherAdmin(request);\n }\n }\n\n protected async deleteCipher() {\n if (!this.organization.isAdmin) {\n return super.deleteCipher();\n }\n return this.apiService.deleteCipherAdmin(this.cipherId);\n }\n}\n","import { View } from './view';\n\nimport { Password } from '../domain/password';\n\nexport class PasswordHistoryView implements View {\n password: string = null;\n lastUsedDate: Date = null;\n\n constructor(ph?: Password) {\n if (!ph) {\n return;\n }\n\n this.lastUsedDate = ph.lastUsedDate;\n }\n}\n","import {\n Component,\n NgZone,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { BroadcasterService } from 'jslib/angular/services/broadcaster.service';\n\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { Organization } from 'jslib/models/domain/organization';\n\nconst BroadcasterSubscriptionId = 'OrganizationLayoutComponent';\n\n@Component({\n selector: 'app-organization-layout',\n templateUrl: 'organization-layout.component.html',\n})\nexport class OrganizationLayoutComponent implements OnInit, OnDestroy {\n organization: Organization;\n\n private organizationId: string;\n\n constructor(private route: ActivatedRoute, private userService: UserService,\n private broadcasterService: BroadcasterService, private ngZone: NgZone) { }\n\n ngOnInit() {\n document.body.classList.remove('layout_frontend');\n this.route.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n await this.load();\n });\n\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'updatedOrgLicense':\n await this.load();\n break;\n }\n });\n });\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async load() {\n this.organization = await this.userService.getOrganization(this.organizationId);\n }\n}\n","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CollectionService } from 'jslib/abstractions/collection.service';\nimport { FolderService } from 'jslib/abstractions/folder.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { StorageService } from 'jslib/abstractions/storage.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CollectionData } from 'jslib/models/data/collectionData';\nimport { Collection } from 'jslib/models/domain/collection';\nimport { Organization } from 'jslib/models/domain/organization';\nimport { CollectionDetailsResponse } from 'jslib/models/response/collectionResponse';\nimport { CollectionView } from 'jslib/models/view/collectionView';\n\nimport { GroupingsComponent as BaseGroupingsComponent } from '../../vault/groupings.component';\n\n@Component({\n selector: 'app-org-vault-groupings',\n templateUrl: '../../vault/groupings.component.html',\n})\nexport class GroupingsComponent extends BaseGroupingsComponent {\n organization: Organization;\n\n constructor(collectionService: CollectionService, folderService: FolderService,\n storageService: StorageService, userService: UserService,\n private apiService: ApiService, private i18nService: I18nService) {\n super(collectionService, folderService, storageService, userService);\n }\n\n async loadCollections() {\n if (!this.organization.isAdmin) {\n await super.loadCollections(this.organization.id);\n return;\n }\n\n const collections = await this.apiService.getCollections(this.organization.id);\n if (collections != null && collections.data != null && collections.data.length) {\n const collectionDomains = collections.data.map((r) =>\n new Collection(new CollectionData(r as CollectionDetailsResponse)));\n this.collections = await this.collectionService.decryptMany(collectionDomains);\n } else {\n this.collections = [];\n }\n\n const unassignedCollection = new CollectionView();\n unassignedCollection.name = this.i18nService.t('unassigned');\n unassignedCollection.id = 'unassigned';\n unassignedCollection.organizationId = this.organization.id;\n unassignedCollection.readOnly = true;\n this.collections.push(unassignedCollection);\n this.nestedCollections = await this.collectionService.getAllNested(this.collections);\n }\n\n collapse(grouping: CollectionView) {\n super.collapse(grouping, 'org_');\n }\n\n isCollapsed(grouping: CollectionView) {\n return super.isCollapsed(grouping, 'org_');\n }\n}\n","import {\n Component,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { EventService } from 'jslib/abstractions/event.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { SearchService } from 'jslib/abstractions/search.service';\n\nimport { Organization } from 'jslib/models/domain/organization';\nimport { CipherView } from 'jslib/models/view/cipherView';\n\nimport { CiphersComponent as BaseCiphersComponent } from '../../vault/ciphers.component';\n\n@Component({\n selector: 'app-org-vault-ciphers',\n templateUrl: '../../vault/ciphers.component.html',\n})\nexport class CiphersComponent extends BaseCiphersComponent {\n @Output() onEventsClicked = new EventEmitter();\n\n organization: Organization;\n accessEvents = false;\n\n protected allCiphers: CipherView[] = [];\n\n constructor(searchService: SearchService, analytics: Angulartics2,\n toasterService: ToasterService, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService, cipherService: CipherService,\n private apiService: ApiService, eventService: EventService) {\n super(searchService, analytics, toasterService, i18nService, platformUtilsService,\n cipherService, eventService);\n }\n\n async load(filter: (cipher: CipherView) => boolean = null) {\n if (!this.organization.isAdmin) {\n await super.load(filter);\n return;\n }\n this.accessEvents = this.organization.useEvents;\n this.allCiphers = await this.cipherService.getAllFromApiForOrganization(this.organization.id);\n this.applyFilter(filter);\n this.loaded = true;\n }\n\n async applyFilter(filter: (cipher: CipherView) => boolean = null) {\n if (this.organization.isAdmin) {\n await super.applyFilter(filter);\n } else {\n const f = (c: CipherView) => c.organizationId === this.organization.id && (filter == null || filter(c));\n await super.applyFilter(f);\n }\n }\n\n async search(timeout: number = null) {\n if (!this.organization.isAdmin) {\n return super.search(timeout);\n }\n this.searchPending = false;\n let filteredCiphers = this.allCiphers;\n if (this.filter != null) {\n filteredCiphers = filteredCiphers.filter(this.filter);\n }\n if (this.searchText == null || this.searchText.trim().length < 2) {\n this.ciphers = filteredCiphers;\n } else {\n this.ciphers = this.searchService.searchCiphersBasic(filteredCiphers, this.searchText);\n }\n await this.resetPaging();\n }\n\n checkCipher(c: CipherView) {\n // do nothing\n }\n\n events(c: CipherView) {\n this.onEventsClicked.emit(c);\n }\n\n protected deleteCipher(id: string) {\n if (!this.organization.isAdmin) {\n return super.deleteCipher(id);\n }\n return this.apiService.deleteCipherAdmin(id);\n }\n\n protected showFixOldAttachments(c: CipherView) {\n return this.organization.isAdmin && c.hasOldAttachments;\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n NgZone,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { SyncService } from 'jslib/abstractions/sync.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { BroadcasterService } from 'jslib/angular/services/broadcaster.service';\n\nimport { Organization } from 'jslib/models/domain/organization';\nimport { CipherView } from 'jslib/models/view/cipherView';\n\nimport { CipherType } from 'jslib/enums/cipherType';\n\nimport { ModalComponent } from '../../modal.component';\n\nimport { EntityEventsComponent } from '../manage/entity-events.component';\nimport { AddEditComponent } from './add-edit.component';\nimport { AttachmentsComponent } from './attachments.component';\nimport { CiphersComponent } from './ciphers.component';\nimport { CollectionsComponent } from './collections.component';\nimport { GroupingsComponent } from './groupings.component';\n\nconst BroadcasterSubscriptionId = 'OrgVaultComponent';\n\n@Component({\n selector: 'app-org-vault',\n templateUrl: 'vault.component.html',\n})\nexport class VaultComponent implements OnInit, OnDestroy {\n @ViewChild(GroupingsComponent) groupingsComponent: GroupingsComponent;\n @ViewChild(CiphersComponent) ciphersComponent: CiphersComponent;\n @ViewChild('attachments', { read: ViewContainerRef }) attachmentsModalRef: ViewContainerRef;\n @ViewChild('cipherAddEdit', { read: ViewContainerRef }) cipherAddEditModalRef: ViewContainerRef;\n @ViewChild('collections', { read: ViewContainerRef }) collectionsModalRef: ViewContainerRef;\n @ViewChild('eventsTemplate', { read: ViewContainerRef }) eventsModalRef: ViewContainerRef;\n\n organization: Organization;\n collectionId: string;\n type: CipherType;\n\n private modal: ModalComponent = null;\n\n constructor(private route: ActivatedRoute, private userService: UserService,\n private router: Router, private changeDetectorRef: ChangeDetectorRef,\n private syncService: SyncService, private i18nService: I18nService,\n private componentFactoryResolver: ComponentFactoryResolver, private messagingService: MessagingService,\n private broadcasterService: BroadcasterService, private ngZone: NgZone) { }\n\n ngOnInit() {\n this.route.parent.params.subscribe(async (params) => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n this.groupingsComponent.organization = this.organization;\n this.ciphersComponent.organization = this.organization;\n\n const queryParamsSub = this.route.queryParams.subscribe(async (qParams) => {\n this.ciphersComponent.searchText = this.groupingsComponent.searchText = qParams.search;\n if (!this.organization.isAdmin) {\n await this.syncService.fullSync(false);\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'syncCompleted':\n if (message.successfully) {\n await Promise.all([\n this.groupingsComponent.load(),\n this.ciphersComponent.refresh(),\n ]);\n this.changeDetectorRef.detectChanges();\n }\n break;\n }\n });\n });\n }\n await this.groupingsComponent.load();\n\n if (qParams == null) {\n this.groupingsComponent.selectedAll = true;\n await this.ciphersComponent.reload();\n } else {\n if (qParams.type) {\n const t = parseInt(qParams.type, null);\n this.groupingsComponent.selectedType = t;\n await this.filterCipherType(t, true);\n } else if (qParams.collectionId) {\n this.groupingsComponent.selectedCollectionId = qParams.collectionId;\n await this.filterCollection(qParams.collectionId, true);\n } else {\n this.groupingsComponent.selectedAll = true;\n await this.ciphersComponent.reload();\n }\n }\n\n if (qParams.viewEvents != null) {\n const cipher = this.ciphersComponent.ciphers.filter((c) => c.id === qParams.viewEvents);\n if (cipher.length > 0) {\n this.viewEvents(cipher[0]);\n }\n }\n\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n });\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async clearGroupingFilters() {\n this.ciphersComponent.showAddNew = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchVault');\n await this.ciphersComponent.applyFilter();\n this.clearFilters();\n this.go();\n }\n\n async filterCipherType(type: CipherType, load = false) {\n this.ciphersComponent.showAddNew = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchType');\n const filter = (c: CipherView) => c.type === type;\n if (load) {\n await this.ciphersComponent.reload(filter);\n } else {\n await this.ciphersComponent.applyFilter(filter);\n }\n this.clearFilters();\n this.type = type;\n this.go();\n }\n\n async filterCollection(collectionId: string, load = false) {\n this.ciphersComponent.showAddNew = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchCollection');\n const filter = (c: CipherView) => {\n if (collectionId === 'unassigned') {\n return c.collectionIds == null || c.collectionIds.length === 0;\n } else {\n return c.collectionIds != null && c.collectionIds.indexOf(collectionId) > -1;\n }\n };\n if (load) {\n await this.ciphersComponent.reload(filter);\n } else {\n await this.ciphersComponent.applyFilter(filter);\n }\n this.clearFilters();\n this.collectionId = collectionId;\n this.go();\n }\n\n filterSearchText(searchText: string) {\n this.ciphersComponent.searchText = searchText;\n this.ciphersComponent.search(200);\n }\n\n editCipherAttachments(cipher: CipherView) {\n if (this.organization.maxStorageGb == null || this.organization.maxStorageGb === 0) {\n this.messagingService.send('upgradeOrganization', { organizationId: cipher.organizationId });\n return;\n }\n\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.attachmentsModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(AttachmentsComponent, this.attachmentsModalRef);\n\n childComponent.organization = this.organization;\n childComponent.cipherId = cipher.id;\n let madeAttachmentChanges = false;\n childComponent.onUploadedAttachment.subscribe(() => madeAttachmentChanges = true);\n childComponent.onDeletedAttachment.subscribe(() => madeAttachmentChanges = true);\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n if (madeAttachmentChanges) {\n await this.ciphersComponent.refresh();\n }\n madeAttachmentChanges = false;\n });\n }\n\n editCipherCollections(cipher: CipherView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.collectionsModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(CollectionsComponent, this.collectionsModalRef);\n\n if (this.organization.isAdmin) {\n childComponent.collectionIds = cipher.collectionIds;\n childComponent.collections = this.groupingsComponent.collections.filter((c) => !c.readOnly);\n }\n childComponent.organization = this.organization;\n childComponent.cipherId = cipher.id;\n childComponent.onSavedCollections.subscribe(async () => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n addCipher() {\n const component = this.editCipher(null);\n component.organizationId = this.organization.id;\n component.type = this.type;\n if (this.organization.isAdmin) {\n component.collections = this.groupingsComponent.collections.filter((c) => !c.readOnly);\n }\n if (this.collectionId != null) {\n component.collectionIds = [this.collectionId];\n }\n }\n\n editCipher(cipher: CipherView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.cipherAddEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(AddEditComponent, this.cipherAddEditModalRef);\n\n childComponent.organization = this.organization;\n childComponent.cipherId = cipher == null ? null : cipher.id;\n childComponent.onSavedCipher.subscribe(async (c: CipherView) => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n childComponent.onDeletedCipher.subscribe(async (c: CipherView) => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n\n return childComponent;\n }\n\n cloneCipher(cipher: CipherView) {\n const component = this.editCipher(cipher);\n component.cloneMode = true;\n component.organizationId = this.organization.id;\n if (this.organization.isAdmin) {\n component.collections = this.groupingsComponent.collections.filter((c) => !c.readOnly);\n }\n // Regardless of Admin state, the collection Ids need to passed manually as they are not assigned value\n // in the add-edit componenet\n component.collectionIds = cipher.collectionIds;\n }\n\n async viewEvents(cipher: CipherView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.eventsModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n EntityEventsComponent, this.eventsModalRef);\n\n childComponent.name = cipher.name;\n childComponent.organizationId = this.organization.id;\n childComponent.entityId = cipher.id;\n childComponent.showUser = true;\n childComponent.entity = 'cipher';\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n private clearFilters() {\n this.collectionId = null;\n this.type = null;\n }\n\n private go(queryParams: any = null) {\n if (queryParams == null) {\n queryParams = {\n type: this.type,\n collectionId: this.collectionId,\n };\n }\n\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: queryParams,\n replaceUrl: true,\n });\n }\n}\n","import {\n Component,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { EventService } from '../../services/event.service';\n\nimport { EventResponse } from 'jslib/models/response/eventResponse';\nimport { ListResponse } from 'jslib/models/response/listResponse';\n\n@Component({\n selector: 'app-entity-events',\n templateUrl: 'entity-events.component.html',\n})\nexport class EntityEventsComponent implements OnInit {\n @Input() name: string;\n @Input() entity: 'user' | 'cipher';\n @Input() entityId: string;\n @Input() organizationId: string;\n @Input() showUser = false;\n\n loading = true;\n loaded = false;\n events: any[];\n start: string;\n end: string;\n continuationToken: string;\n refreshPromise: Promise;\n morePromise: Promise;\n\n private orgUsersUserIdMap = new Map();\n private orgUsersIdMap = new Map();\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private eventService: EventService, private toasterService: ToasterService) { }\n\n async ngOnInit() {\n const defaultDates = this.eventService.getDefaultDateFilters();\n this.start = defaultDates[0];\n this.end = defaultDates[1];\n await this.load();\n }\n\n async load() {\n if (this.showUser) {\n const response = await this.apiService.getOrganizationUsers(this.organizationId);\n response.data.forEach((u) => {\n const name = u.name == null || u.name.trim() === '' ? u.email : u.name;\n this.orgUsersIdMap.set(u.id, { name: name, email: u.email });\n this.orgUsersUserIdMap.set(u.userId, { name: name, email: u.email });\n });\n }\n await this.loadEvents(true);\n this.loaded = true;\n }\n\n async loadEvents(clearExisting: boolean) {\n if (this.refreshPromise != null || this.morePromise != null) {\n return;\n }\n\n let dates: string[] = null;\n try {\n dates = this.eventService.formatDateFilters(this.start, this.end);\n } catch (e) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidDateRange'));\n return;\n }\n\n this.loading = true;\n let response: ListResponse;\n try {\n let promise: Promise;\n if (this.entity === 'user') {\n promise = this.apiService.getEventsOrganizationUser(this.organizationId, this.entityId,\n dates[0], dates[1], clearExisting ? null : this.continuationToken);\n } else {\n promise = this.apiService.getEventsCipher(this.entityId,\n dates[0], dates[1], clearExisting ? null : this.continuationToken);\n }\n if (clearExisting) {\n this.refreshPromise = promise;\n } else {\n this.morePromise = promise;\n }\n response = await promise;\n } catch { }\n\n this.continuationToken = response.continuationToken;\n const events = response.data.map((r) => {\n const userId = r.actingUserId == null ? r.userId : r.actingUserId;\n const eventInfo = this.eventService.getEventInfo(r);\n const user = this.showUser && userId != null && this.orgUsersUserIdMap.has(userId) ?\n this.orgUsersUserIdMap.get(userId) : null;\n return {\n message: eventInfo.message,\n appIcon: eventInfo.appIcon,\n appName: eventInfo.appName,\n userId: userId,\n userName: user != null ? user.name : this.showUser ? this.i18nService.t('unknown') : null,\n userEmail: user != null ? user.email : this.showUser ? '' : null,\n date: r.date,\n ip: r.ipAddress,\n type: r.type,\n };\n });\n\n if (!clearExisting && this.events != null && this.events.length > 0) {\n this.events = this.events.concat(events);\n } else {\n this.events = events;\n }\n\n this.loading = false;\n this.morePromise = null;\n this.refreshPromise = null;\n }\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { Organization } from 'jslib/models/domain/organization';\n\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\n@Component({\n selector: 'app-org-tools',\n templateUrl: 'tools.component.html',\n})\nexport class ToolsComponent {\n organization: Organization;\n accessReports = false;\n\n constructor(private route: ActivatedRoute, private userService: UserService,\n private messagingService: MessagingService) { }\n\n ngOnInit() {\n this.route.parent.params.subscribe(async (params) => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n // TODO: Maybe we want to just make sure they are not on a free plan? Just compare useTotp for now\n // since all paid plans include useTotp\n this.accessReports = this.organization.useTotp;\n });\n }\n\n upgradeOrganization() {\n this.messagingService.send('upgradeOrganization', { organizationId: this.organization.id });\n }\n}\n","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { ImportService } from 'jslib/abstractions/import.service';\n\nimport { ImportComponent as BaseImportComponent } from '../../tools/import.component';\n\n@Component({\n selector: 'app-org-import',\n templateUrl: '../../tools/import.component.html',\n})\nexport class ImportComponent extends BaseImportComponent {\n constructor(i18nService: I18nService, analytics: Angulartics2,\n toasterService: ToasterService, importService: ImportService,\n router: Router, private route: ActivatedRoute) {\n super(i18nService, analytics, toasterService, importService, router);\n }\n\n ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n this.successNavigate = ['organizations', this.organizationId, 'vault'];\n super.ngOnInit();\n });\n }\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { EventService } from 'jslib/abstractions/event.service';\nimport { ExportService } from 'jslib/abstractions/export.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { ExportComponent as BaseExportComponent } from '../../tools/export.component';\n\nimport { EventType } from 'jslib/enums/eventType';\n\n@Component({\n selector: 'app-org-export',\n templateUrl: '../../tools/export.component.html',\n})\nexport class ExportComponent extends BaseExportComponent {\n organizationId: string;\n\n constructor(cryptoService: CryptoService, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService, exportService: ExportService,\n eventService: EventService, private route: ActivatedRoute) {\n super(cryptoService, i18nService, platformUtilsService, exportService, eventService);\n }\n\n ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n });\n }\n\n getExportData() {\n return this.exportService.getOrganizationExport(this.organizationId, this.format);\n }\n\n getFileName() {\n return super.getFileName('org');\n }\n\n async collectEvent(): Promise {\n // TODO\n // await this.eventService.collect(EventType.Organization_ClientExportedVault);\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { AuditService } from 'jslib/abstractions/audit.service';\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport {\n ExposedPasswordsReportComponent as BaseExposedPasswordsReportComponent,\n} from '../../tools/exposed-passwords-report.component';\n\nimport { CipherView } from 'jslib/models/view/cipherView';\n\n@Component({\n selector: 'app-exposed-passwords-report',\n templateUrl: '../../tools/exposed-passwords-report.component.html',\n})\nexport class ExposedPasswordsReportComponent extends BaseExposedPasswordsReportComponent {\n constructor(cipherService: CipherService, auditService: AuditService,\n componentFactoryResolver: ComponentFactoryResolver, messagingService: MessagingService,\n userService: UserService, private route: ActivatedRoute) {\n super(cipherService, auditService, componentFactoryResolver, messagingService, userService);\n }\n\n ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport {\n InactiveTwoFactorReportComponent as BaseInactiveTwoFactorReportComponent,\n} from '../../tools/inactive-two-factor-report.component';\n\nimport { CipherView } from 'jslib/models/view/cipherView';\n\n@Component({\n selector: 'app-inactive-two-factor-report',\n templateUrl: '../../tools/inactive-two-factor-report.component.html',\n})\nexport class InactiveTwoFactorReportComponent extends BaseInactiveTwoFactorReportComponent {\n constructor(cipherService: CipherService, componentFactoryResolver: ComponentFactoryResolver,\n messagingService: MessagingService, userService: UserService,\n private route: ActivatedRoute) {\n super(cipherService, componentFactoryResolver, messagingService, userService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CipherView } from 'jslib/models/view/cipherView';\n\nimport {\n ReusedPasswordsReportComponent as BaseReusedPasswordsReportComponent,\n} from '../../tools/reused-passwords-report.component';\n\n@Component({\n selector: 'app-reused-passwords-report',\n templateUrl: '../../tools/reused-passwords-report.component.html',\n})\nexport class ReusedPasswordsReportComponent extends BaseReusedPasswordsReportComponent {\n constructor(cipherService: CipherService, componentFactoryResolver: ComponentFactoryResolver,\n messagingService: MessagingService, userService: UserService,\n private route: ActivatedRoute) {\n super(cipherService, componentFactoryResolver, messagingService, userService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport {\n UnsecuredWebsitesReportComponent as BaseUnsecuredWebsitesReportComponent,\n} from '../../tools/unsecured-websites-report.component';\n\nimport { CipherView } from 'jslib/models/view/cipherView';\n\n@Component({\n selector: 'app-unsecured-websites-report',\n templateUrl: '../../tools/unsecured-websites-report.component.html',\n})\nexport class UnsecuredWebsitesReportComponent extends BaseUnsecuredWebsitesReportComponent {\n constructor(cipherService: CipherService, componentFactoryResolver: ComponentFactoryResolver,\n messagingService: MessagingService, userService: UserService,\n private route: ActivatedRoute) {\n super(cipherService, componentFactoryResolver, messagingService, userService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CipherView } from 'jslib/models/view/cipherView';\n\nimport {\n WeakPasswordsReportComponent as BaseWeakPasswordsReportComponent,\n} from '../../tools/weak-passwords-report.component';\n\n@Component({\n selector: 'app-weak-passwords-report',\n templateUrl: '../../tools/weak-passwords-report.component.html',\n})\nexport class WeakPasswordsReportComponent extends BaseWeakPasswordsReportComponent {\n constructor(cipherService: CipherService, passwordGenerationService: PasswordGenerationService,\n componentFactoryResolver: ComponentFactoryResolver, messagingService: MessagingService,\n userService: UserService, private route: ActivatedRoute) {\n super(cipherService, passwordGenerationService, componentFactoryResolver, messagingService, userService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { Organization } from 'jslib/models/domain/organization';\n\n@Component({\n selector: 'app-org-manage',\n templateUrl: 'manage.component.html',\n})\nexport class ManageComponent implements OnInit {\n organization: Organization;\n accessPolicies = false;\n accessGroups = false;\n accessEvents = false;\n\n constructor(private route: ActivatedRoute, private userService: UserService) { }\n\n ngOnInit() {\n this.route.parent.params.subscribe(async (params) => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n this.accessPolicies = this.organization.usePolicies;\n this.accessEvents = this.organization.useEvents;\n this.accessGroups = this.organization.useGroups;\n });\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CollectionService } from 'jslib/abstractions/collection.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CollectionData } from 'jslib/models/data/collectionData';\nimport { Collection } from 'jslib/models/domain/collection';\nimport {\n CollectionDetailsResponse,\n CollectionResponse,\n} from 'jslib/models/response/collectionResponse';\nimport { ListResponse } from 'jslib/models/response/listResponse';\nimport { CollectionView } from 'jslib/models/view/collectionView';\n\nimport { ModalComponent } from '../../modal.component';\nimport { CollectionAddEditComponent } from './collection-add-edit.component';\nimport { EntityUsersComponent } from './entity-users.component';\n\n@Component({\n selector: 'app-org-manage-collections',\n templateUrl: 'collections.component.html',\n})\nexport class CollectionsComponent implements OnInit {\n @ViewChild('addEdit', { read: ViewContainerRef }) addEditModalRef: ViewContainerRef;\n @ViewChild('usersTemplate', { read: ViewContainerRef }) usersModalRef: ViewContainerRef;\n\n loading = true;\n organizationId: string;\n collections: CollectionView[];\n searchText: string;\n\n private modal: ModalComponent = null;\n\n constructor(private apiService: ApiService, private route: ActivatedRoute,\n private collectionService: CollectionService, private componentFactoryResolver: ComponentFactoryResolver,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private i18nService: I18nService, private platformUtilsService: PlatformUtilsService,\n private userService: UserService) { }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n await this.load();\n const queryParamsSub = this.route.queryParams.subscribe(async (qParams) => {\n this.searchText = qParams.search;\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n });\n }\n\n async load() {\n const organization = await this.userService.getOrganization(this.organizationId);\n let response: ListResponse;\n if (organization.isAdmin) {\n response = await this.apiService.getCollections(this.organizationId);\n } else {\n response = await this.apiService.getUserCollections();\n }\n const collections = response.data.filter((c) => c.organizationId === this.organizationId).map((r) =>\n new Collection(new CollectionData(r as CollectionDetailsResponse)));\n this.collections = await this.collectionService.decryptMany(collections);\n this.loading = false;\n }\n\n edit(collection: CollectionView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.addEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n CollectionAddEditComponent, this.addEditModalRef);\n\n childComponent.organizationId = this.organizationId;\n childComponent.collectionId = collection != null ? collection.id : null;\n childComponent.onSavedCollection.subscribe(() => {\n this.modal.close();\n this.load();\n });\n childComponent.onDeletedCollection.subscribe(() => {\n this.modal.close();\n this.removeCollection(collection);\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n add() {\n this.edit(null);\n }\n\n async delete(collection: CollectionView) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteCollectionConfirmation'), collection.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n await this.apiService.deleteCollection(this.organizationId, collection.id);\n this.analytics.eventTrack.next({ action: 'Deleted Collection' });\n this.toasterService.popAsync('success', null, this.i18nService.t('deletedCollectionId', collection.name));\n this.removeCollection(collection);\n } catch { }\n }\n\n users(collection: CollectionView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.usersModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n EntityUsersComponent, this.usersModalRef);\n\n childComponent.organizationId = this.organizationId;\n childComponent.entity = 'collection';\n childComponent.entityId = collection.id;\n childComponent.entityName = collection.name;\n\n childComponent.onEditedUsers.subscribe(() => {\n this.load();\n this.modal.close();\n });\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n private removeCollection(collection: CollectionView) {\n const index = this.collections.indexOf(collection);\n if (index > -1) {\n this.collections.splice(index, 1);\n }\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { OrganizationUserStatusType } from 'jslib/enums/organizationUserStatusType';\nimport { OrganizationUserType } from 'jslib/enums/organizationUserType';\nimport { SelectionReadOnlyRequest } from 'jslib/models/request/selectionReadOnlyRequest';\nimport { OrganizationUserUserDetailsResponse } from 'jslib/models/response/organizationUserResponse';\n\nimport { Utils } from 'jslib/misc/utils';\n\n@Component({\n selector: 'app-entity-users',\n templateUrl: 'entity-users.component.html',\n})\nexport class EntityUsersComponent implements OnInit {\n @Input() entity: 'group' | 'collection';\n @Input() entityId: string;\n @Input() entityName: string;\n @Input() organizationId: string;\n @Output() onEditedUsers = new EventEmitter();\n\n organizationUserType = OrganizationUserType;\n organizationUserStatusType = OrganizationUserStatusType;\n\n showSelected = false;\n loading = true;\n formPromise: Promise;\n selectedCount = 0;\n searchText: string;\n\n private allUsers: OrganizationUserUserDetailsResponse[] = [];\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService) { }\n\n async ngOnInit() {\n await this.loadUsers();\n this.loading = false;\n }\n\n get users() {\n if (this.showSelected) {\n return this.allUsers.filter((u) => (u as any).checked);\n } else {\n return this.allUsers;\n }\n }\n\n async loadUsers() {\n const users = await this.apiService.getOrganizationUsers(this.organizationId);\n this.allUsers = users.data.map((r) => r).sort(Utils.getSortFunction(this.i18nService, 'email'));\n if (this.entity === 'group') {\n const response = await this.apiService.getGroupUsers(this.organizationId, this.entityId);\n if (response != null && users.data.length > 0) {\n response.forEach((s) => {\n const user = users.data.filter((u) => u.id === s);\n if (user != null && user.length > 0) {\n (user[0] as any).checked = true;\n }\n });\n }\n } else if (this.entity === 'collection') {\n const response = await this.apiService.getCollectionUsers(this.organizationId, this.entityId);\n if (response != null && users.data.length > 0) {\n response.forEach((s) => {\n const user = users.data.filter((u) => !u.accessAll && u.id === s.id);\n if (user != null && user.length > 0) {\n (user[0] as any).checked = true;\n (user[0] as any).readOnly = s.readOnly;\n }\n });\n }\n }\n\n this.allUsers.forEach((u) => {\n if (this.entity === 'collection' && u.accessAll) {\n (u as any).checked = true;\n }\n if ((u as any).checked) {\n this.selectedCount++;\n }\n });\n }\n\n check(u: OrganizationUserUserDetailsResponse) {\n if (this.entity === 'collection' && u.accessAll) {\n return;\n }\n (u as any).checked = !(u as any).checked;\n this.selectedChanged(u);\n }\n\n selectedChanged(u: OrganizationUserUserDetailsResponse) {\n if ((u as any).checked) {\n this.selectedCount++;\n } else {\n if (this.entity === 'collection') {\n (u as any).readOnly = false;\n }\n this.selectedCount--;\n }\n }\n\n filterSelected(showSelected: boolean) {\n this.showSelected = showSelected;\n }\n\n async submit() {\n try {\n if (this.entity === 'group') {\n const selections = this.users.filter((u) => (u as any).checked).map((u) => u.id);\n this.formPromise = this.apiService.putGroupUsers(this.organizationId, this.entityId, selections);\n } else {\n const selections = this.users.filter((u) => (u as any).checked && !u.accessAll)\n .map((u) => new SelectionReadOnlyRequest(u.id, !!(u as any).readOnly));\n this.formPromise = this.apiService.putCollectionUsers(this.organizationId, this.entityId, selections);\n }\n await this.formPromise;\n this.analytics.eventTrack.next({\n action: this.entity === 'group' ? 'Edited Group Users' : 'Edited Collection Users',\n });\n this.toasterService.popAsync('success', null, this.i18nService.t('updatedUsers'));\n this.onEditedUsers.emit();\n } catch { }\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { EventService } from '../../services/event.service';\n\nimport { EventResponse } from 'jslib/models/response/eventResponse';\nimport { ListResponse } from 'jslib/models/response/listResponse';\n\n@Component({\n selector: 'app-org-events',\n templateUrl: 'events.component.html',\n})\nexport class EventsComponent implements OnInit {\n loading = true;\n loaded = false;\n organizationId: string;\n events: any[];\n start: string;\n end: string;\n continuationToken: string;\n refreshPromise: Promise;\n morePromise: Promise;\n\n private orgUsersUserIdMap = new Map();\n private orgUsersIdMap = new Map();\n\n constructor(private apiService: ApiService, private route: ActivatedRoute,\n private eventService: EventService, private i18nService: I18nService,\n private toasterService: ToasterService, private userService: UserService,\n private router: Router) { }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n const organization = await this.userService.getOrganization(this.organizationId);\n if (organization == null || !organization.useEvents) {\n this.router.navigate(['/organizations', this.organizationId]);\n return;\n }\n const defaultDates = this.eventService.getDefaultDateFilters();\n this.start = defaultDates[0];\n this.end = defaultDates[1];\n await this.load();\n });\n }\n\n async load() {\n const response = await this.apiService.getOrganizationUsers(this.organizationId);\n response.data.forEach((u) => {\n const name = u.name == null || u.name.trim() === '' ? u.email : u.name;\n this.orgUsersIdMap.set(u.id, { name: name, email: u.email });\n this.orgUsersUserIdMap.set(u.userId, { name: name, email: u.email });\n });\n await this.loadEvents(true);\n this.loaded = true;\n }\n\n async loadEvents(clearExisting: boolean) {\n if (this.refreshPromise != null || this.morePromise != null) {\n return;\n }\n\n let dates: string[] = null;\n try {\n dates = this.eventService.formatDateFilters(this.start, this.end);\n } catch (e) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidDateRange'));\n return;\n }\n\n this.loading = true;\n let response: ListResponse;\n try {\n const promise = this.apiService.getEventsOrganization(this.organizationId, dates[0], dates[1],\n clearExisting ? null : this.continuationToken);\n if (clearExisting) {\n this.refreshPromise = promise;\n } else {\n this.morePromise = promise;\n }\n response = await promise;\n } catch { }\n\n this.continuationToken = response.continuationToken;\n const events = response.data.map((r) => {\n const userId = r.actingUserId == null ? r.userId : r.actingUserId;\n const eventInfo = this.eventService.getEventInfo(r);\n const user = userId != null && this.orgUsersUserIdMap.has(userId) ?\n this.orgUsersUserIdMap.get(userId) : null;\n return {\n message: eventInfo.message,\n appIcon: eventInfo.appIcon,\n appName: eventInfo.appName,\n userId: userId,\n userName: user != null ? user.name : this.i18nService.t('unknown'),\n userEmail: user != null ? user.email : '',\n date: r.date,\n ip: r.ipAddress,\n type: r.type,\n };\n });\n\n if (!clearExisting && this.events != null && this.events.length > 0) {\n this.events = this.events.concat(events);\n } else {\n this.events = events;\n }\n\n this.loading = false;\n this.morePromise = null;\n this.refreshPromise = null;\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { GroupResponse } from 'jslib/models/response/groupResponse';\n\nimport { Utils } from 'jslib/misc/utils';\n\nimport { ModalComponent } from '../../modal.component';\nimport { EntityUsersComponent } from './entity-users.component';\nimport { GroupAddEditComponent } from './group-add-edit.component';\n\n@Component({\n selector: 'app-org-groups',\n templateUrl: 'groups.component.html',\n})\nexport class GroupsComponent implements OnInit {\n @ViewChild('addEdit', { read: ViewContainerRef }) addEditModalRef: ViewContainerRef;\n @ViewChild('usersTemplate', { read: ViewContainerRef }) usersModalRef: ViewContainerRef;\n\n loading = true;\n organizationId: string;\n groups: GroupResponse[];\n searchText: string;\n\n private modal: ModalComponent = null;\n\n constructor(private apiService: ApiService, private route: ActivatedRoute,\n private i18nService: I18nService, private componentFactoryResolver: ComponentFactoryResolver,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private platformUtilsService: PlatformUtilsService, private userService: UserService,\n private router: Router) { }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n const organization = await this.userService.getOrganization(this.organizationId);\n if (organization == null || !organization.useGroups) {\n this.router.navigate(['/organizations', this.organizationId]);\n return;\n }\n await this.load();\n const queryParamsSub = this.route.queryParams.subscribe(async (qParams) => {\n this.searchText = qParams.search;\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n });\n }\n\n async load() {\n const response = await this.apiService.getGroups(this.organizationId);\n const groups = response.data != null && response.data.length > 0 ? response.data : [];\n groups.sort(Utils.getSortFunction(this.i18nService, 'name'));\n this.groups = groups;\n this.loading = false;\n }\n\n edit(group: GroupResponse) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.addEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n GroupAddEditComponent, this.addEditModalRef);\n\n childComponent.organizationId = this.organizationId;\n childComponent.groupId = group != null ? group.id : null;\n childComponent.onSavedGroup.subscribe(() => {\n this.modal.close();\n this.load();\n });\n childComponent.onDeletedGroup.subscribe(() => {\n this.modal.close();\n this.removeGroup(group);\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n add() {\n this.edit(null);\n }\n\n async delete(group: GroupResponse) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteGroupConfirmation'), group.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n await this.apiService.deleteGroup(this.organizationId, group.id);\n this.analytics.eventTrack.next({ action: 'Deleted Group' });\n this.toasterService.popAsync('success', null, this.i18nService.t('deletedGroupId', group.name));\n this.removeGroup(group);\n } catch { }\n }\n\n users(group: GroupResponse) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.usersModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n EntityUsersComponent, this.usersModalRef);\n\n childComponent.organizationId = this.organizationId;\n childComponent.entity = 'group';\n childComponent.entityId = group.id;\n childComponent.entityName = group.name;\n\n childComponent.onEditedUsers.subscribe(() => {\n this.modal.close();\n });\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n private removeGroup(group: GroupResponse) {\n const index = this.groups.indexOf(group);\n if (index > -1) {\n this.groups.splice(index, 1);\n }\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ConstantsService } from 'jslib/services/constants.service';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { StorageService } from 'jslib/abstractions/storage.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { OrganizationUserConfirmRequest } from 'jslib/models/request/organizationUserConfirmRequest';\n\nimport { OrganizationUserUserDetailsResponse } from 'jslib/models/response/organizationUserResponse';\n\nimport { OrganizationUserStatusType } from 'jslib/enums/organizationUserStatusType';\nimport { OrganizationUserType } from 'jslib/enums/organizationUserType';\n\nimport { Utils } from 'jslib/misc/utils';\n\nimport { ModalComponent } from '../../modal.component';\nimport { EntityEventsComponent } from './entity-events.component';\nimport { UserAddEditComponent } from './user-add-edit.component';\nimport { UserConfirmComponent } from './user-confirm.component';\nimport { UserGroupsComponent } from './user-groups.component';\n\n@Component({\n selector: 'app-org-people',\n templateUrl: 'people.component.html',\n})\nexport class PeopleComponent implements OnInit {\n @ViewChild('addEdit', { read: ViewContainerRef }) addEditModalRef: ViewContainerRef;\n @ViewChild('groupsTemplate', { read: ViewContainerRef }) groupsModalRef: ViewContainerRef;\n @ViewChild('eventsTemplate', { read: ViewContainerRef }) eventsModalRef: ViewContainerRef;\n @ViewChild('confirmTemplate', { read: ViewContainerRef }) confirmModalRef: ViewContainerRef;\n\n loading = true;\n organizationId: string;\n users: OrganizationUserUserDetailsResponse[];\n searchText: string;\n status: OrganizationUserStatusType = null;\n statusMap = new Map();\n organizationUserType = OrganizationUserType;\n organizationUserStatusType = OrganizationUserStatusType;\n actionPromise: Promise;\n accessEvents = false;\n accessGroups = false;\n\n private modal: ModalComponent = null;\n private allUsers: OrganizationUserUserDetailsResponse[];\n\n constructor(private apiService: ApiService, private route: ActivatedRoute,\n private i18nService: I18nService, private componentFactoryResolver: ComponentFactoryResolver,\n private platformUtilsService: PlatformUtilsService, private analytics: Angulartics2,\n private toasterService: ToasterService, private cryptoService: CryptoService,\n private userService: UserService, private router: Router,\n private storageService: StorageService) { }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n const organization = await this.userService.getOrganization(this.organizationId);\n if (!organization.isAdmin) {\n this.router.navigate(['../collections'], { relativeTo: this.route });\n return;\n }\n this.accessEvents = organization.useEvents;\n this.accessGroups = organization.useGroups;\n await this.load();\n\n const queryParamsSub = this.route.queryParams.subscribe(async (qParams) => {\n this.searchText = qParams.search;\n if (qParams.viewEvents != null) {\n const user = this.users.filter((u) => u.id === qParams.viewEvents);\n if (user.length > 0 && user[0].status === OrganizationUserStatusType.Confirmed) {\n this.events(user[0]);\n }\n }\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n });\n }\n\n async load() {\n const response = await this.apiService.getOrganizationUsers(this.organizationId);\n this.statusMap.clear();\n this.allUsers = response.data != null && response.data.length > 0 ? response.data : [];\n this.allUsers.sort(Utils.getSortFunction(this.i18nService, 'email'));\n this.allUsers.forEach((u) => {\n if (!this.statusMap.has(u.status)) {\n this.statusMap.set(u.status, [u]);\n } else {\n this.statusMap.get(u.status).push(u);\n }\n });\n this.filter(this.status);\n this.loading = false;\n }\n\n filter(status: OrganizationUserStatusType) {\n this.status = status;\n if (this.status != null) {\n this.users = this.statusMap.get(this.status);\n } else {\n this.users = this.allUsers;\n }\n }\n\n get allCount() {\n return this.allUsers != null ? this.allUsers.length : 0;\n }\n\n get invitedCount() {\n return this.statusMap.has(OrganizationUserStatusType.Invited) ?\n this.statusMap.get(OrganizationUserStatusType.Invited).length : 0;\n }\n\n get acceptedCount() {\n return this.statusMap.has(OrganizationUserStatusType.Accepted) ?\n this.statusMap.get(OrganizationUserStatusType.Accepted).length : 0;\n }\n\n get confirmedCount() {\n return this.statusMap.has(OrganizationUserStatusType.Confirmed) ?\n this.statusMap.get(OrganizationUserStatusType.Confirmed).length : 0;\n }\n\n get showConfirmUsers(): boolean {\n return this.allUsers != null && this.statusMap != null && this.allUsers.length > 1 &&\n this.confirmedCount > 0 && this.confirmedCount < 3 && this.acceptedCount > 0;\n }\n\n edit(user: OrganizationUserUserDetailsResponse) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.addEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n UserAddEditComponent, this.addEditModalRef);\n\n childComponent.name = user != null ? user.name || user.email : null;\n childComponent.organizationId = this.organizationId;\n childComponent.organizationUserId = user != null ? user.id : null;\n childComponent.onSavedUser.subscribe(() => {\n this.modal.close();\n this.load();\n });\n childComponent.onDeletedUser.subscribe(() => {\n this.modal.close();\n this.removeUser(user);\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n invite() {\n this.edit(null);\n }\n\n groups(user: OrganizationUserUserDetailsResponse) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.groupsModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n UserGroupsComponent, this.groupsModalRef);\n\n childComponent.name = user != null ? user.name || user.email : null;\n childComponent.organizationId = this.organizationId;\n childComponent.organizationUserId = user != null ? user.id : null;\n childComponent.onSavedUser.subscribe(() => {\n this.modal.close();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n async remove(user: OrganizationUserUserDetailsResponse) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('removeUserConfirmation'), user.name || user.email,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n await this.apiService.deleteOrganizationUser(this.organizationId, user.id);\n this.analytics.eventTrack.next({ action: 'Deleted User' });\n this.toasterService.popAsync('success', null, this.i18nService.t('removedUserId', user.name || user.email));\n this.removeUser(user);\n } catch { }\n }\n\n async reinvite(user: OrganizationUserUserDetailsResponse) {\n if (this.actionPromise != null) {\n return;\n }\n this.actionPromise = this.apiService.postOrganizationUserReinvite(this.organizationId, user.id);\n await this.actionPromise;\n this.analytics.eventTrack.next({ action: 'Reinvited User' });\n this.toasterService.popAsync('success', null, this.i18nService.t('hasBeenReinvited', user.name || user.email));\n this.actionPromise = null;\n }\n\n async confirm(user: OrganizationUserUserDetailsResponse) {\n function updateUser(self: PeopleComponent) {\n user.status = OrganizationUserStatusType.Confirmed;\n const mapIndex = self.statusMap.get(OrganizationUserStatusType.Accepted).indexOf(user);\n if (mapIndex > -1) {\n self.statusMap.get(OrganizationUserStatusType.Accepted).splice(mapIndex, 1);\n self.statusMap.get(OrganizationUserStatusType.Confirmed).push(user);\n }\n }\n\n if (this.actionPromise != null) {\n return;\n }\n\n const autoConfirm = await this.storageService.get(ConstantsService.autoConfirmFingerprints);\n if (autoConfirm == null || !autoConfirm) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.confirmModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n UserConfirmComponent, this.confirmModalRef);\n\n childComponent.name = user != null ? user.name || user.email : null;\n childComponent.organizationId = this.organizationId;\n childComponent.organizationUserId = user != null ? user.id : null;\n childComponent.userId = user != null ? user.userId : null;\n childComponent.onConfirmedUser.subscribe(() => {\n this.modal.close();\n updateUser(this);\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n return;\n }\n\n this.actionPromise = this.doConfirmation(user);\n await this.actionPromise;\n updateUser(this);\n this.analytics.eventTrack.next({ action: 'Confirmed User' });\n this.toasterService.popAsync('success', null, this.i18nService.t('hasBeenConfirmed', user.name || user.email));\n this.actionPromise = null;\n }\n\n async events(user: OrganizationUserUserDetailsResponse) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.eventsModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n EntityEventsComponent, this.eventsModalRef);\n\n childComponent.name = user.name || user.email;\n childComponent.organizationId = this.organizationId;\n childComponent.entityId = user.id;\n childComponent.showUser = false;\n childComponent.entity = 'user';\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n private async doConfirmation(user: OrganizationUserUserDetailsResponse) {\n const orgKey = await this.cryptoService.getOrgKey(this.organizationId);\n const publicKeyResponse = await this.apiService.getUserPublicKey(user.userId);\n const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n try {\n // tslint:disable-next-line\n console.log('User\\'s fingerprint: ' +\n (await this.cryptoService.getFingerprint(user.userId, publicKey.buffer)).join('-'));\n } catch { }\n const key = await this.cryptoService.rsaEncrypt(orgKey.key, publicKey.buffer);\n const request = new OrganizationUserConfirmRequest();\n request.key = key.encryptedString;\n await this.apiService.postOrganizationUserConfirm(this.organizationId, user.id, request);\n }\n\n private removeUser(user: OrganizationUserUserDetailsResponse) {\n let index = this.users.indexOf(user);\n if (index > -1) {\n this.users.splice(index, 1);\n }\n if (this.statusMap.has(OrganizationUserStatusType.Accepted)) {\n index = this.statusMap.get(OrganizationUserStatusType.Accepted).indexOf(user);\n if (index > -1) {\n this.statusMap.get(OrganizationUserStatusType.Accepted).splice(index, 1);\n }\n }\n if (this.statusMap.has(OrganizationUserStatusType.Invited)) {\n index = this.statusMap.get(OrganizationUserStatusType.Invited).indexOf(user);\n if (index > -1) {\n this.statusMap.get(OrganizationUserStatusType.Invited).splice(index, 1);\n }\n }\n if (this.statusMap.has(OrganizationUserStatusType.Confirmed)) {\n index = this.statusMap.get(OrganizationUserStatusType.Confirmed).indexOf(user);\n if (index > -1) {\n this.statusMap.get(OrganizationUserStatusType.Confirmed).splice(index, 1);\n }\n }\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { PolicyType } from 'jslib/enums/policyType';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { PolicyResponse } from 'jslib/models/response/policyResponse';\n\nimport { ModalComponent } from '../../modal.component';\n\nimport { PolicyEditComponent } from './policy-edit.component';\n\n@Component({\n selector: 'app-org-policies',\n templateUrl: 'policies.component.html',\n})\nexport class PoliciesComponent implements OnInit {\n @ViewChild('editTemplate', { read: ViewContainerRef }) editModalRef: ViewContainerRef;\n\n loading = true;\n organizationId: string;\n policies: any[];\n\n private modal: ModalComponent = null;\n private orgPolicies: PolicyResponse[];\n private policiesEnabledMap: Map = new Map();\n\n constructor(private apiService: ApiService, private route: ActivatedRoute,\n private i18nService: I18nService, private componentFactoryResolver: ComponentFactoryResolver,\n private platformUtilsService: PlatformUtilsService, private userService: UserService,\n private router: Router) {\n this.policies = [\n {\n name: i18nService.t('twoStepLogin'),\n description: i18nService.t('twoStepLoginPolicyDesc'),\n type: PolicyType.TwoFactorAuthentication,\n enabled: false,\n },\n {\n name: i18nService.t('masterPass'),\n description: i18nService.t('masterPassPolicyDesc'),\n type: PolicyType.MasterPassword,\n enabled: false,\n },\n {\n name: i18nService.t('passwordGenerator'),\n description: i18nService.t('passwordGeneratorPolicyDesc'),\n type: PolicyType.PasswordGenerator,\n enabled: false,\n },\n ];\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n const organization = await this.userService.getOrganization(this.organizationId);\n if (organization == null || !organization.usePolicies) {\n this.router.navigate(['/organizations', this.organizationId]);\n return;\n }\n await this.load();\n });\n }\n\n async load() {\n const response = await this.apiService.getPolicies(this.organizationId);\n this.orgPolicies = response.data != null && response.data.length > 0 ? response.data : [];\n this.orgPolicies.forEach((op) => {\n this.policiesEnabledMap.set(op.type, op.enabled);\n });\n this.policies.forEach((p) => {\n p.enabled = this.policiesEnabledMap.has(p.type) && this.policiesEnabledMap.get(p.type);\n });\n this.loading = false;\n }\n\n edit(p: any) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.editModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n PolicyEditComponent, this.editModalRef);\n\n childComponent.name = p.name;\n childComponent.description = p.description;\n childComponent.type = p.type;\n childComponent.organizationId = this.organizationId;\n childComponent.onSavedPolicy.subscribe(() => {\n this.modal.close();\n this.load();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\n@Component({\n selector: 'app-org-settings',\n templateUrl: 'settings.component.html',\n})\nexport class SettingsComponent {\n access2fa = false;\n selfHosted: boolean;\n\n constructor(private route: ActivatedRoute, private userService: UserService,\n private platformUtilsService: PlatformUtilsService) { }\n\n ngOnInit() {\n this.route.parent.params.subscribe(async (params) => {\n this.selfHosted = await this.platformUtilsService.isSelfHost();\n const organization = await this.userService.getOrganization(params.organizationId);\n this.access2fa = organization.use2fa;\n });\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { SyncService } from 'jslib/abstractions/sync.service';\n\nimport { OrganizationUpdateRequest } from 'jslib/models/request/organizationUpdateRequest';\nimport { OrganizationResponse } from 'jslib/models/response/organizationResponse';\n\nimport { ModalComponent } from '../../modal.component';\nimport { PurgeVaultComponent } from '../../settings/purge-vault.component';\nimport { ApiKeyComponent } from './api-key.component';\nimport { DeleteOrganizationComponent } from './delete-organization.component';\nimport { RotateApiKeyComponent } from './rotate-api-key.component';\n\n@Component({\n selector: 'app-org-account',\n templateUrl: 'account.component.html',\n})\nexport class AccountComponent {\n @ViewChild('deleteOrganizationTemplate', { read: ViewContainerRef }) deleteModalRef: ViewContainerRef;\n @ViewChild('purgeOrganizationTemplate', { read: ViewContainerRef }) purgeModalRef: ViewContainerRef;\n @ViewChild('apiKeyTemplate', { read: ViewContainerRef }) apiKeyModalRef: ViewContainerRef;\n @ViewChild('rotateApiKeyTemplate', { read: ViewContainerRef }) rotateApiKeyModalRef: ViewContainerRef;\n\n loading = true;\n canUseApi = false;\n org: OrganizationResponse;\n formPromise: Promise;\n\n private organizationId: string;\n private modal: ModalComponent = null;\n\n constructor(private componentFactoryResolver: ComponentFactoryResolver,\n private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private route: ActivatedRoute, private syncService: SyncService) { }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n try {\n this.org = await this.apiService.getOrganization(this.organizationId);\n this.canUseApi = this.org.useApi;\n } catch { }\n });\n this.loading = false;\n }\n\n async submit() {\n try {\n const request = new OrganizationUpdateRequest();\n request.name = this.org.name;\n request.businessName = this.org.businessName;\n request.billingEmail = this.org.billingEmail;\n this.formPromise = this.apiService.putOrganization(this.organizationId, request).then(() => {\n return this.syncService.fullSync(true);\n });\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Updated Organization Settings' });\n this.toasterService.popAsync('success', null, this.i18nService.t('organizationUpdated'));\n } catch { }\n }\n\n deleteOrganization() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.deleteModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n DeleteOrganizationComponent, this.deleteModalRef);\n childComponent.organizationId = this.organizationId;\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n purgeVault() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.purgeModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(PurgeVaultComponent, this.purgeModalRef);\n childComponent.organizationId = this.organizationId;\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n viewApiKey() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.apiKeyModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(ApiKeyComponent, this.apiKeyModalRef);\n childComponent.organizationId = this.organizationId;\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n rotateApiKey() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.rotateApiKeyModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(RotateApiKeyComponent, this.rotateApiKeyModalRef);\n childComponent.organizationId = this.organizationId;\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PolicyService } from 'jslib/abstractions/policy.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { TwoFactorProviderType } from 'jslib/enums/twoFactorProviderType';\n\nimport { TwoFactorDuoComponent } from '../../settings/two-factor-duo.component';\nimport { TwoFactorSetupComponent as BaseTwoFactorSetupComponent } from '../../settings/two-factor-setup.component';\n\n@Component({\n selector: 'app-two-factor-setup',\n templateUrl: '../../settings/two-factor-setup.component.html',\n})\nexport class TwoFactorSetupComponent extends BaseTwoFactorSetupComponent {\n constructor(apiService: ApiService, userService: UserService,\n componentFactoryResolver: ComponentFactoryResolver, messagingService: MessagingService,\n policyService: PolicyService, private route: ActivatedRoute) {\n super(apiService, userService, componentFactoryResolver, messagingService, policyService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n await super.ngOnInit();\n });\n }\n\n manage(type: TwoFactorProviderType) {\n switch (type) {\n case TwoFactorProviderType.OrganizationDuo:\n const duoComp = this.openModal(this.duoModalRef, TwoFactorDuoComponent);\n duoComp.type = TwoFactorProviderType.OrganizationDuo;\n duoComp.organizationId = this.organizationId;\n duoComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.OrganizationDuo);\n });\n break;\n default:\n break;\n }\n }\n\n protected getTwoFactorProviders() {\n return this.apiService.getTwoFactorOrganizationProviders(this.organizationId);\n }\n\n protected filterProvider(type: TwoFactorProviderType) {\n return type !== TwoFactorProviderType.OrganizationDuo;\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { UserBillingComponent } from '../../settings/user-billing.component';\n\n@Component({\n selector: 'app-org-billing',\n templateUrl: '../../settings/user-billing.component.html',\n})\nexport class OrganizationBillingComponent extends UserBillingComponent implements OnInit {\n constructor(apiService: ApiService, i18nService: I18nService,\n analytics: Angulartics2, toasterService: ToasterService,\n private route: ActivatedRoute, platformUtilsService: PlatformUtilsService) {\n super(apiService, i18nService, analytics, toasterService, platformUtilsService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n await this.load();\n this.firstLoaded = true;\n });\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { OrganizationSubscriptionResponse } from 'jslib/models/response/organizationSubscriptionResponse';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { TokenService } from 'jslib/abstractions/token.service';\n\nimport { PlanType } from 'jslib/enums/planType';\n\n@Component({\n selector: 'app-org-subscription',\n templateUrl: 'organization-subscription.component.html',\n})\nexport class OrganizationSubscriptionComponent implements OnInit {\n loading = false;\n firstLoaded = false;\n organizationId: string;\n adjustSeatsAdd = true;\n showAdjustSeats = false;\n adjustStorageAdd = true;\n showAdjustStorage = false;\n showUpdateLicense = false;\n showDownloadLicense = false;\n showChangePlan = false;\n sub: OrganizationSubscriptionResponse;\n selfHosted = false;\n\n cancelPromise: Promise;\n reinstatePromise: Promise;\n\n constructor(private tokenService: TokenService, private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private messagingService: MessagingService, private route: ActivatedRoute) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n await this.load();\n this.firstLoaded = true;\n });\n }\n\n async load() {\n if (this.loading) {\n return;\n }\n this.loading = true;\n this.sub = await this.apiService.getOrganizationSubscription(this.organizationId);\n this.loading = false;\n }\n\n async reinstate() {\n if (this.loading) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('reinstateConfirmation'),\n this.i18nService.t('reinstateSubscription'), this.i18nService.t('yes'), this.i18nService.t('cancel'));\n if (!confirmed) {\n return;\n }\n\n try {\n this.reinstatePromise = this.apiService.postOrganizationReinstate(this.organizationId);\n await this.reinstatePromise;\n this.analytics.eventTrack.next({ action: 'Reinstated Plan' });\n this.toasterService.popAsync('success', null, this.i18nService.t('reinstated'));\n this.load();\n } catch { }\n }\n\n async cancel() {\n if (this.loading) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('cancelConfirmation'),\n this.i18nService.t('cancelSubscription'), this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n\n try {\n this.cancelPromise = this.apiService.postOrganizationCancel(this.organizationId);\n await this.cancelPromise;\n this.analytics.eventTrack.next({ action: 'Canceled Plan' });\n this.toasterService.popAsync('success', null, this.i18nService.t('canceledSubscription'));\n this.load();\n } catch { }\n }\n\n async changePlan() {\n if (this.subscription == null && this.sub.planType === PlanType.Free) {\n this.showChangePlan = !this.showChangePlan;\n return;\n }\n const contactSupport = await this.platformUtilsService.showDialog(this.i18nService.t('changeBillingPlanDesc'),\n this.i18nService.t('changeBillingPlan'), this.i18nService.t('contactSupport'), this.i18nService.t('close'));\n if (contactSupport) {\n this.platformUtilsService.launchUri('https://bitwarden.com/contact');\n }\n }\n\n closeChangePlan(changed: boolean) {\n this.showChangePlan = false;\n }\n\n downloadLicense() {\n this.showDownloadLicense = !this.showDownloadLicense;\n }\n\n closeDownloadLicense() {\n this.showDownloadLicense = false;\n }\n\n updateLicense() {\n if (this.loading) {\n return;\n }\n this.showUpdateLicense = true;\n }\n\n closeUpdateLicense(updated: boolean) {\n this.showUpdateLicense = false;\n if (updated) {\n this.load();\n this.messagingService.send('updatedOrgLicense');\n }\n }\n\n adjustSeats(add: boolean) {\n this.adjustSeatsAdd = add;\n this.showAdjustSeats = true;\n }\n\n closeSeats(load: boolean) {\n this.showAdjustSeats = false;\n if (load) {\n this.load();\n }\n }\n\n adjustStorage(add: boolean) {\n this.adjustStorageAdd = add;\n this.showAdjustStorage = true;\n }\n\n closeStorage(load: boolean) {\n this.showAdjustStorage = false;\n if (load) {\n this.load();\n }\n }\n\n get isExpired() {\n return this.sub != null && this.sub.expiration != null &&\n new Date(this.sub.expiration) < new Date();\n }\n\n get subscriptionMarkedForCancel() {\n return this.subscription != null && !this.subscription.cancelled && this.subscription.cancelAtEndDate;\n }\n\n get subscription() {\n return this.sub != null ? this.sub.subscription : null;\n }\n\n get nextInvoice() {\n return this.sub != null ? this.sub.upcomingInvoice : null;\n }\n\n get storagePercentage() {\n return this.sub != null && this.sub.maxStorageGb ?\n +(100 * (this.sub.storageGb / this.sub.maxStorageGb)).toFixed(2) : 0;\n }\n\n get storageProgressWidth() {\n return this.storagePercentage < 5 ? 5 : 0;\n }\n\n get billingInterval() {\n const monthly = this.sub.planType === PlanType.EnterpriseMonthly ||\n this.sub.planType === PlanType.TeamsMonthly;\n return monthly ? 'month' : 'year';\n }\n\n get storageGbPrice() {\n return this.billingInterval === 'month' ? 0.5 : 4;\n }\n\n get seatPrice() {\n switch (this.sub.planType) {\n case PlanType.EnterpriseMonthly:\n return 4;\n case PlanType.EnterpriseAnnually:\n return 36;\n case PlanType.TeamsMonthly:\n return 2.5;\n case PlanType.TeamsAnnually:\n return 24;\n default:\n return 0;\n }\n }\n\n get canAdjustSeats() {\n return this.sub.planType === PlanType.EnterpriseMonthly ||\n this.sub.planType === PlanType.EnterpriseAnnually ||\n this.sub.planType === PlanType.TeamsMonthly || this.sub.planType === PlanType.TeamsAnnually;\n }\n\n get canDownloadLicense() {\n return (this.sub.planType !== PlanType.Free && this.subscription == null) ||\n (this.subscription != null && !this.subscription.cancelled);\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { ProfileOrganizationResponse } from './profileOrganizationResponse';\n\nexport class ProfileResponse extends BaseResponse {\n id: string;\n name: string;\n email: string;\n emailVerified: boolean;\n masterPasswordHint: string;\n premium: boolean;\n culture: string;\n twoFactorEnabled: boolean;\n key: string;\n privateKey: string;\n securityStamp: string;\n organizations: ProfileOrganizationResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.name = this.getResponseProperty('Name');\n this.email = this.getResponseProperty('Email');\n this.emailVerified = this.getResponseProperty('EmailVerified');\n this.masterPasswordHint = this.getResponseProperty('MasterPasswordHint');\n this.premium = this.getResponseProperty('Premium');\n this.culture = this.getResponseProperty('Culture');\n this.twoFactorEnabled = this.getResponseProperty('TwoFactorEnabled');\n this.key = this.getResponseProperty('Key');\n this.privateKey = this.getResponseProperty('PrivateKey');\n this.securityStamp = this.getResponseProperty('SecurityStamp');\n\n const organizations = this.getResponseProperty('Organizations');\n if (organizations != null) {\n this.organizations = organizations.map((o: any) => new ProfileOrganizationResponse(o));\n }\n }\n}\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 553;","import * as jq from 'jquery';\nimport Swal from 'sweetalert2/src/sweetalert2.js';\n\nimport {\n BodyOutputType,\n Toast,\n ToasterConfig,\n ToasterContainerComponent,\n ToasterService,\n} from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\nimport { Angulartics2GoogleAnalytics } from 'angulartics2/ga';\n\nimport {\n Component,\n NgZone,\n OnDestroy,\n OnInit,\n SecurityContext,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport {\n NavigationEnd,\n Router,\n} from '@angular/router';\n\nimport { BroadcasterService } from 'jslib/angular/services/broadcaster.service';\n\nimport { StorageService } from 'jslib/abstractions/storage.service';\n\nimport { AuthService } from 'jslib/abstractions/auth.service';\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { CollectionService } from 'jslib/abstractions/collection.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { EventService } from 'jslib/abstractions/event.service';\nimport { FolderService } from 'jslib/abstractions/folder.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { NotificationsService } from 'jslib/abstractions/notifications.service';\nimport { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib/abstractions/policy.service';\nimport { SearchService } from 'jslib/abstractions/search.service';\nimport { SettingsService } from 'jslib/abstractions/settings.service';\nimport { StateService } from 'jslib/abstractions/state.service';\nimport { SyncService } from 'jslib/abstractions/sync.service';\nimport { TokenService } from 'jslib/abstractions/token.service';\nimport { UserService } from 'jslib/abstractions/user.service';\nimport { VaultTimeoutService } from 'jslib/abstractions/vaultTimeout.service';\n\nimport { ConstantsService } from 'jslib/services/constants.service';\n\nimport { RouterService } from './services/router.service';\n\nconst BroadcasterSubscriptionId = 'AppComponent';\nconst IdleTimeout = 60000 * 10; // 10 minutes\n\n@Component({\n selector: 'app-root',\n templateUrl: 'app.component.html',\n})\nexport class AppComponent implements OnDestroy, OnInit {\n toasterConfig: ToasterConfig = new ToasterConfig({\n showCloseButton: true,\n mouseoverTimerStop: true,\n animation: 'flyRight',\n limit: 5,\n });\n\n private lastActivity: number = null;\n private idleTimer: number = null;\n private isIdle = false;\n\n constructor(private angulartics2GoogleAnalytics: Angulartics2GoogleAnalytics,\n private broadcasterService: BroadcasterService, private userService: UserService,\n private tokenService: TokenService, private folderService: FolderService,\n private settingsService: SettingsService, private syncService: SyncService,\n private passwordGenerationService: PasswordGenerationService, private cipherService: CipherService,\n private authService: AuthService, private router: Router, private analytics: Angulartics2,\n private toasterService: ToasterService, private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService, private ngZone: NgZone,\n private vaultTimeoutService: VaultTimeoutService, private storageService: StorageService,\n private cryptoService: CryptoService, private collectionService: CollectionService,\n private sanitizer: DomSanitizer, private searchService: SearchService,\n private notificationsService: NotificationsService, private routerService: RouterService,\n private stateService: StateService, private eventService: EventService,\n private policyService: PolicyService) { }\n\n ngOnInit() {\n this.ngZone.runOutsideAngular(() => {\n window.onmousemove = () => this.recordActivity();\n window.onmousedown = () => this.recordActivity();\n window.ontouchstart = () => this.recordActivity();\n window.onclick = () => this.recordActivity();\n window.onscroll = () => this.recordActivity();\n window.onkeypress = () => this.recordActivity();\n });\n\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'loggedIn':\n case 'loggedOut':\n case 'unlocked':\n this.notificationsService.updateConnection(false);\n break;\n case 'authBlocked':\n this.router.navigate(['/']);\n break;\n case 'logout':\n this.logOut(!!message.expired);\n break;\n case 'lockVault':\n await this.vaultTimeoutService.lock();\n break;\n case 'locked':\n this.notificationsService.updateConnection(false);\n this.router.navigate(['lock']);\n break;\n case 'lockedUrl':\n window.setTimeout(() => this.routerService.setPreviousUrl(message.url), 500);\n break;\n case 'syncStarted':\n break;\n case 'syncCompleted':\n break;\n case 'upgradeOrganization':\n const upgradeConfirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('upgradeOrganizationDesc'), this.i18nService.t('upgradeOrganization'),\n this.i18nService.t('upgradeOrganization'), this.i18nService.t('cancel'));\n if (upgradeConfirmed) {\n this.router.navigate(['organizations', message.organizationId, 'settings', 'billing']);\n }\n break;\n case 'premiumRequired':\n const premiumConfirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('premiumRequiredDesc'), this.i18nService.t('premiumRequired'),\n this.i18nService.t('learnMore'), this.i18nService.t('cancel'));\n if (premiumConfirmed) {\n this.router.navigate(['settings/premium']);\n }\n break;\n case 'showToast':\n if (typeof message.text === \"string\" && (message.text.indexOf(\"this.subtle\") != -1 || message.text.indexOf(\"importKey\") != -1)) {\n message.title=\"This browser requires HTTPS to use the web vault\";\n message.text=\"Check the bitwarden_rs wiki for details on how to enable it\";\n }\n this.showToast(message);\n break;\n case 'analyticsEventTrack':\n this.analytics.eventTrack.next({\n action: message.action,\n properties: { label: message.label },\n });\n break;\n default:\n break;\n }\n });\n });\n\n this.router.events.subscribe((event) => {\n if (event instanceof NavigationEnd) {\n const modals = Array.from(document.querySelectorAll('.modal'));\n for (const modal of modals) {\n (jq(modal) as any).modal('hide');\n }\n\n if (document.querySelector('.swal-modal') != null) {\n Swal.close(undefined);\n }\n }\n });\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n private async logOut(expired: boolean) {\n await this.eventService.uploadEvents();\n const userId = await this.userService.getUserId();\n\n await Promise.all([\n this.eventService.clearEvents(),\n this.syncService.setLastSync(new Date(0)),\n this.tokenService.clearToken(),\n this.cryptoService.clearKeys(),\n this.userService.clear(),\n this.settingsService.clear(userId),\n this.cipherService.clear(userId),\n this.folderService.clear(userId),\n this.collectionService.clear(userId),\n this.policyService.clear(userId),\n this.passwordGenerationService.clear(),\n this.stateService.purge(),\n ]);\n\n this.searchService.clearIndex();\n this.authService.logOut(async () => {\n this.analytics.eventTrack.next({ action: 'Logged Out' });\n if (expired) {\n this.toasterService.popAsync('warning', this.i18nService.t('loggedOut'),\n this.i18nService.t('loginExpired'));\n }\n this.router.navigate(['/']);\n });\n }\n\n private async recordActivity() {\n const now = (new Date()).getTime();\n if (this.lastActivity != null && now - this.lastActivity < 250) {\n return;\n }\n\n this.lastActivity = now;\n this.storageService.save(ConstantsService.lastActiveKey, now);\n\n // Idle states\n if (this.isIdle) {\n this.isIdle = false;\n this.idleStateChanged();\n }\n if (this.idleTimer != null) {\n window.clearTimeout(this.idleTimer);\n this.idleTimer = null;\n }\n this.idleTimer = window.setTimeout(() => {\n if (!this.isIdle) {\n this.isIdle = true;\n this.idleStateChanged();\n }\n }, IdleTimeout);\n }\n\n private showToast(msg: any) {\n const toast: Toast = {\n type: msg.type,\n title: msg.title,\n };\n if (typeof (msg.text) === 'string') {\n toast.body = msg.text;\n } else if (msg.text.length === 1) {\n toast.body = msg.text[0];\n } else {\n let message = '';\n msg.text.forEach((t: string) =>\n message += ('

' + this.sanitizer.sanitize(SecurityContext.HTML, t) + '

'));\n toast.body = message;\n toast.bodyOutputType = BodyOutputType.TrustedHtml;\n }\n if (msg.options != null) {\n if (msg.options.trustedHtml === true) {\n toast.bodyOutputType = BodyOutputType.TrustedHtml;\n }\n if (msg.options.timeout != null && msg.options.timeout > 0) {\n toast.timeout = msg.options.timeout;\n }\n }\n this.toasterService.popAsync(toast);\n }\n\n private idleStateChanged() {\n if (this.isIdle) {\n this.notificationsService.disconnectFromInactivity();\n } else {\n this.notificationsService.reconnectFromActivity();\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { AuthService } from 'jslib/abstractions/auth.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport {\n TwoFactorOptionsComponent as BaseTwoFactorOptionsComponent,\n} from 'jslib/angular/components/two-factor-options.component';\n\n@Component({\n selector: 'app-two-factor-options',\n templateUrl: 'two-factor-options.component.html',\n})\nexport class TwoFactorOptionsComponent extends BaseTwoFactorOptionsComponent {\n constructor(authService: AuthService, router: Router,\n i18nService: I18nService, platformUtilsService: PlatformUtilsService) {\n super(authService, router, i18nService, platformUtilsService, window);\n }\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class TwoFactorEmailRequest extends PasswordVerificationRequest {\n email: string;\n\n constructor(email: string, masterPasswordHash: string) {\n super();\n this.masterPasswordHash = masterPasswordHash;\n this.email = email;\n }\n}\n","export class KeysRequest {\n publicKey: string;\n encryptedPrivateKey: string;\n\n constructor(publicKey: string, encryptedPrivateKey: string) {\n this.publicKey = publicKey;\n this.encryptedPrivateKey = encryptedPrivateKey;\n }\n}\n","
\n
\n \n {{text}}\n \n
\n
\n","import { PolicyData } from '../data/policyData';\n\nimport Domain from './domainBase';\n\nimport { PolicyType } from '../../enums/policyType';\n\nexport class Policy extends Domain {\n id: string;\n organizationId: string;\n type: PolicyType;\n data: any;\n enabled: boolean;\n\n constructor(obj?: PolicyData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.id = obj.id;\n this.organizationId = obj.organizationId;\n this.type = obj.type;\n this.data = obj.data;\n this.enabled = obj.enabled;\n }\n}\n","import { PolicyResponse } from '../response/policyResponse';\n\nimport { PolicyType } from '../../enums/policyType';\n\nexport class PolicyData {\n id: string;\n organizationId: string;\n type: PolicyType;\n data: any;\n enabled: boolean;\n\n constructor(response: PolicyResponse) {\n this.id = response.id;\n this.organizationId = response.organizationId;\n this.type = response.type;\n this.data = response.data;\n this.enabled = response.enabled;\n }\n}\n","\n","
\n
\n
\n © {{year}}, Bitwarden Inc & Raytio Ltd.\n
\n
\n
\n {{'versionNumber' | i18n : version}}\n
\n
\n
\n","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\n@Component({\n selector: 'app-verify-email',\n templateUrl: 'verify-email.component.html',\n})\nexport class VerifyEmailComponent {\n actionPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService) { }\n\n async send() {\n if (this.actionPromise != null) {\n return;\n }\n try {\n this.actionPromise = this.apiService.postAccountVerifyEmail();\n await this.actionPromise;\n this.analytics.eventTrack.next({ action: 'Sent Verification Email' });\n this.toasterService.popAsync('success', null, this.i18nService.t('checkInboxForVerification'));\n } catch { }\n this.actionPromise = null;\n }\n}\n","\n

\n \n {{'loading' | i18n}}\n

\n \n \n

{{'noOrganizationsList' | i18n}}

\n
\n \n \n {{'newOrganization' | i18n}}\n \n
\n\n
\n

\n {{'organizations' | i18n}}\n \n \n \n {{'loading' | i18n}}\n \n \n

\n \n \n {{'newOrganization' | i18n}}\n \n
\n \n \n {{'loading' | i18n}}\n \n \n \n

{{'noOrganizationsList' | i18n}}

\n \n \n {{'newOrganization' | i18n}}\n \n
\n \n \n \n \n \n \n \n \n
\n \n \n {{o.name}}\n \n \n {{'organizationIsDisabled' | i18n}}\n \n \n
\n \n \n
\n
\n
\n
\n","import { Component } from '@angular/core';\n\nimport {\n Toast,\n ToasterService,\n} from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { FolderService } from 'jslib/abstractions/folder.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { SyncService } from 'jslib/abstractions/sync.service';\n\nimport { CipherString } from 'jslib/models/domain/cipherString';\n\nimport { CipherWithIdRequest } from 'jslib/models/request/cipherWithIdRequest';\nimport { FolderWithIdRequest } from 'jslib/models/request/folderWithIdRequest';\nimport { UpdateKeyRequest } from 'jslib/models/request/updateKeyRequest';\n\n@Component({\n selector: 'app-update-key',\n templateUrl: 'update-key.component.html',\n})\nexport class UpdateKeyComponent {\n masterPassword: string;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private cryptoService: CryptoService, private messagingService: MessagingService,\n private syncService: SyncService, private folderService: FolderService,\n private cipherService: CipherService) { }\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (hasEncKey) {\n return;\n }\n\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n try {\n this.formPromise = this.makeRequest().then((request) => {\n return this.apiService.postAccountKey(request);\n });\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Key Updated' });\n const toast: Toast = {\n type: 'success',\n title: this.i18nService.t('keyUpdated'),\n body: this.i18nService.t('logBackInOthersToo'),\n timeout: 15000,\n };\n this.toasterService.popAsync(toast);\n this.messagingService.send('logout');\n } catch { }\n }\n\n private async makeRequest(): Promise {\n const key = await this.cryptoService.getKey();\n const encKey = await this.cryptoService.makeEncKey(key);\n const privateKey = await this.cryptoService.getPrivateKey();\n let encPrivateKey: CipherString = null;\n if (privateKey != null) {\n encPrivateKey = await this.cryptoService.encrypt(privateKey, encKey[0]);\n }\n const request = new UpdateKeyRequest();\n request.privateKey = encPrivateKey != null ? encPrivateKey.encryptedString : null;\n request.key = encKey[1].encryptedString;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n\n await this.syncService.fullSync(true);\n\n const folders = await this.folderService.getAllDecrypted();\n for (let i = 0; i < folders.length; i++) {\n if (folders[i].id == null) {\n continue;\n }\n const folder = await this.folderService.encrypt(folders[i], encKey[0]);\n request.folders.push(new FolderWithIdRequest(folder));\n }\n\n const ciphers = await this.cipherService.getAllDecrypted();\n for (let i = 0; i < ciphers.length; i++) {\n if (ciphers[i].organizationId != null) {\n continue;\n }\n const cipher = await this.cipherService.encrypt(ciphers[i], encKey[0]);\n request.ciphers.push(new CipherWithIdRequest(cipher));\n }\n\n return request;\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nexport class CardApi extends BaseResponse {\n cardholderName: string;\n brand: string;\n number: string;\n expMonth: string;\n expYear: string;\n code: string;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.cardholderName = this.getResponseProperty('CardholderName');\n this.brand = this.getResponseProperty('Brand');\n this.number = this.getResponseProperty('Number');\n this.expMonth = this.getResponseProperty('ExpMonth');\n this.expYear = this.getResponseProperty('ExpYear');\n this.code = this.getResponseProperty('Code');\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nimport { FieldType } from '../../enums/fieldType';\n\nexport class FieldApi extends BaseResponse {\n name: string;\n value: string;\n type: FieldType;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.type = this.getResponseProperty('Type');\n this.name = this.getResponseProperty('Name');\n this.value = this.getResponseProperty('Value');\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nexport class IdentityApi extends BaseResponse {\n title: string;\n firstName: string;\n middleName: string;\n lastName: string;\n address1: string;\n address2: string;\n address3: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n company: string;\n email: string;\n phone: string;\n ssn: string;\n username: string;\n passportNumber: string;\n licenseNumber: string;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.title = this.getResponseProperty('Title');\n this.firstName = this.getResponseProperty('FirstName');\n this.middleName = this.getResponseProperty('MiddleName');\n this.lastName = this.getResponseProperty('LastName');\n this.address1 = this.getResponseProperty('Address1');\n this.address2 = this.getResponseProperty('Address2');\n this.address3 = this.getResponseProperty('Address3');\n this.city = this.getResponseProperty('City');\n this.state = this.getResponseProperty('State');\n this.postalCode = this.getResponseProperty('PostalCode');\n this.country = this.getResponseProperty('Country');\n this.company = this.getResponseProperty('Company');\n this.email = this.getResponseProperty('Email');\n this.phone = this.getResponseProperty('Phone');\n this.ssn = this.getResponseProperty('SSN');\n this.username = this.getResponseProperty('Username');\n this.passportNumber = this.getResponseProperty('PassportNumber');\n this.licenseNumber = this.getResponseProperty('LicenseNumber');\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nimport { LoginUriApi } from './loginUriApi';\n\nexport class LoginApi extends BaseResponse {\n uris: LoginUriApi[];\n username: string;\n password: string;\n passwordRevisionDate: string;\n totp: string;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.username = this.getResponseProperty('Username');\n this.password = this.getResponseProperty('Password');\n this.passwordRevisionDate = this.getResponseProperty('PasswordRevisionDate');\n this.totp = this.getResponseProperty('Totp');\n\n const uris = this.getResponseProperty('Uris');\n if (uris != null) {\n this.uris = uris.map((u: any) => new LoginUriApi(u));\n }\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nimport { UriMatchType } from '../../enums/uriMatchType';\n\nexport class LoginUriApi extends BaseResponse {\n uri: string;\n match: UriMatchType = null;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.uri = this.getResponseProperty('Uri');\n const match = this.getResponseProperty('Match');\n this.match = match != null ? match : null;\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nimport { SecureNoteType } from '../../enums/secureNoteType';\n\nexport class SecureNoteApi extends BaseResponse {\n type: SecureNoteType;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.type = this.getResponseProperty('Type');\n }\n}\n","import { FolderRequest } from './folderRequest';\n\nimport { Folder } from '../domain/folder';\n\nexport class FolderWithIdRequest extends FolderRequest {\n id: string;\n\n constructor(folder: Folder) {\n super(folder);\n this.id = folder.id;\n }\n}\n","import { CipherWithIdRequest } from './cipherWithIdRequest';\nimport { FolderWithIdRequest } from './folderWithIdRequest';\n\nexport class UpdateKeyRequest {\n ciphers: CipherWithIdRequest[] = [];\n folders: FolderWithIdRequest[] = [];\n masterPasswordHash: string;\n privateKey: string;\n key: string;\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\n@Component({\n selector: 'app-vault-bulk-delete',\n templateUrl: 'bulk-delete.component.html',\n})\nexport class BulkDeleteComponent {\n @Input() cipherIds: string[] = [];\n @Output() onDeleted = new EventEmitter();\n\n formPromise: Promise;\n\n constructor(private analytics: Angulartics2, private cipherService: CipherService,\n private toasterService: ToasterService, private i18nService: I18nService) { }\n\n async submit() {\n this.formPromise = this.cipherService.deleteManyWithServer(this.cipherIds);\n await this.formPromise;\n this.onDeleted.emit();\n this.analytics.eventTrack.next({ action: 'Bulk Deleted Items' });\n this.toasterService.popAsync('success', null, this.i18nService.t('deletedItems'));\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { FolderService } from 'jslib/abstractions/folder.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { FolderView } from 'jslib/models/view/folderView';\n\n@Component({\n selector: 'app-vault-bulk-move',\n templateUrl: 'bulk-move.component.html',\n})\nexport class BulkMoveComponent implements OnInit {\n @Input() cipherIds: string[] = [];\n @Output() onMoved = new EventEmitter();\n\n folderId: string = null;\n folders: FolderView[] = [];\n formPromise: Promise;\n\n constructor(private analytics: Angulartics2, private cipherService: CipherService,\n private toasterService: ToasterService, private i18nService: I18nService,\n private folderService: FolderService) { }\n\n async ngOnInit() {\n this.folders = await this.folderService.getAllDecrypted();\n this.folderId = this.folders[0].id;\n }\n\n async submit() {\n this.formPromise = this.cipherService.moveManyWithServer(this.cipherIds, this.folderId);\n await this.formPromise;\n this.onMoved.emit();\n this.analytics.eventTrack.next({ action: 'Bulk Moved Items' });\n this.toasterService.popAsync('success', null, this.i18nService.t('movedItems'));\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { CollectionService } from 'jslib/abstractions/collection.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CipherView } from 'jslib/models/view';\nimport { CollectionView } from 'jslib/models/view/collectionView';\n\nimport { Organization } from 'jslib/models/domain/organization';\n\n@Component({\n selector: 'app-vault-bulk-share',\n templateUrl: 'bulk-share.component.html',\n})\nexport class BulkShareComponent implements OnInit {\n @Input() ciphers: CipherView[] = [];\n @Input() organizationId: string;\n @Output() onShared = new EventEmitter();\n\n nonShareableCount = 0;\n collections: CollectionView[] = [];\n organizations: Organization[] = [];\n shareableCiphers: CipherView[] = [];\n formPromise: Promise;\n\n private writeableCollections: CollectionView[] = [];\n\n constructor(private analytics: Angulartics2, private cipherService: CipherService,\n private toasterService: ToasterService, private i18nService: I18nService,\n private collectionService: CollectionService, private userService: UserService) { }\n\n async ngOnInit() {\n this.shareableCiphers = this.ciphers.filter((c) => !c.hasOldAttachments && c.organizationId == null);\n this.nonShareableCount = this.ciphers.length - this.shareableCiphers.length;\n const allCollections = await this.collectionService.getAllDecrypted();\n this.writeableCollections = allCollections.filter((c) => !c.readOnly);\n this.organizations = await this.userService.getAllOrganizations();\n if (this.organizationId == null && this.organizations.length > 0) {\n this.organizationId = this.organizations[0].id;\n }\n this.filterCollections();\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n filterCollections() {\n this.selectAll(false);\n if (this.organizationId == null || this.writeableCollections.length === 0) {\n this.collections = [];\n } else {\n this.collections = this.writeableCollections.filter((c) => c.organizationId === this.organizationId);\n }\n }\n\n async submit() {\n const checkedCollectionIds = this.collections.filter((c) => (c as any).checked).map((c) => c.id);\n try {\n this.formPromise = this.cipherService.shareManyWithServer(this.shareableCiphers, this.organizationId,\n checkedCollectionIds);\n await this.formPromise;\n this.onShared.emit();\n this.analytics.eventTrack.next({ action: 'Bulk Shared Items' });\n this.toasterService.popAsync('success', null, this.i18nService.t('sharedItems'));\n } catch { }\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n selectAll(select: boolean) {\n const collections = select ? this.collections : this.writeableCollections;\n collections.forEach((c) => this.check(c, select));\n }\n\n get canSave() {\n if (this.shareableCiphers != null && this.shareableCiphers.length > 0 && this.collections != null) {\n for (let i = 0; i < this.collections.length; i++) {\n if ((this.collections[i] as any).checked) {\n return true;\n }\n }\n }\n return false;\n }\n}\n","import { Component } from '@angular/core';\n\nimport { FolderService } from 'jslib/abstractions/folder.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport {\n FolderAddEditComponent as BaseFolderAddEditComponent,\n} from 'jslib/angular/components/folder-add-edit.component';\n\n@Component({\n selector: 'app-folder-add-edit',\n templateUrl: 'folder-add-edit.component.html',\n})\nexport class FolderAddEditComponent extends BaseFolderAddEditComponent {\n constructor(folderService: FolderService, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService) {\n super(folderService, i18nService, platformUtilsService);\n }\n}\n","import {\n Component,\n OnDestroy,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { CollectionService } from 'jslib/abstractions/collection.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CollectionView } from 'jslib/models/view/collectionView';\n\nimport { ShareComponent as BaseShareComponent } from 'jslib/angular/components/share.component';\n\n@Component({\n selector: 'app-vault-share',\n templateUrl: 'share.component.html',\n})\nexport class ShareComponent extends BaseShareComponent implements OnDestroy {\n constructor(collectionService: CollectionService, platformUtilsService: PlatformUtilsService,\n i18nService: I18nService, userService: UserService,\n cipherService: CipherService) {\n super(collectionService, platformUtilsService, i18nService, userService, cipherService);\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n selectAll(select: boolean) {\n const collections = select ? this.collections : this.writeableCollections;\n collections.forEach((c) => this.check(c, select));\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { UpdateProfileRequest } from 'jslib/models/request/updateProfileRequest';\n\nimport { ProfileResponse } from 'jslib/models/response/profileResponse';\n\n@Component({\n selector: 'app-profile',\n templateUrl: 'profile.component.html',\n})\nexport class ProfileComponent implements OnInit {\n loading = true;\n profile: ProfileResponse;\n fingerprint: string;\n\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private userService: UserService, private cryptoService: CryptoService) { }\n\n async ngOnInit() {\n this.profile = await this.apiService.getProfile();\n this.loading = false;\n const fingerprint = await this.cryptoService.getFingerprint(await this.userService.getUserId());\n if (fingerprint != null) {\n this.fingerprint = fingerprint.join('-');\n }\n }\n\n async submit() {\n try {\n const request = new UpdateProfileRequest(this.profile.name, this.profile.masterPasswordHint);\n this.formPromise = this.apiService.putProfile(request);\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Updated Profile' });\n this.toasterService.popAsync('success', null, this.i18nService.t('accountUpdated'));\n } catch { }\n }\n}\n","import {\n Component,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { EmailRequest } from 'jslib/models/request/emailRequest';\nimport { EmailTokenRequest } from 'jslib/models/request/emailTokenRequest';\n\n@Component({\n selector: 'app-change-email',\n templateUrl: 'change-email.component.html',\n})\nexport class ChangeEmailComponent {\n masterPassword: string;\n newEmail: string;\n token: string;\n tokenSent = false;\n\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private cryptoService: CryptoService, private messagingService: MessagingService,\n private userService: UserService) { }\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (!hasEncKey) {\n this.toasterService.popAsync('error', null, this.i18nService.t('updateKey'));\n return;\n }\n\n this.newEmail = this.newEmail.trim().toLowerCase();\n if (!this.tokenSent) {\n const request = new EmailTokenRequest();\n request.newEmail = this.newEmail;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.apiService.postEmailToken(request);\n await this.formPromise;\n this.tokenSent = true;\n } catch { }\n } else {\n const request = new EmailRequest();\n request.token = this.token;\n request.newEmail = this.newEmail;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n const kdf = await this.userService.getKdf();\n const kdfIterations = await this.userService.getKdfIterations();\n const newKey = await this.cryptoService.makeKey(this.masterPassword, this.newEmail, kdf, kdfIterations);\n request.newMasterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, newKey);\n const newEncKey = await this.cryptoService.remakeEncKey(newKey);\n request.key = newEncKey[1].encryptedString;\n try {\n this.formPromise = this.apiService.postEmail(request);\n await this.formPromise;\n this.reset();\n this.analytics.eventTrack.next({ action: 'Changed Email' });\n this.toasterService.popAsync('success', this.i18nService.t('emailChanged'),\n this.i18nService.t('logBackIn'));\n this.messagingService.send('logout');\n } catch { }\n }\n }\n\n reset() {\n this.token = this.newEmail = this.masterPassword = null;\n this.tokenSent = false;\n }\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class EmailTokenRequest extends PasswordVerificationRequest {\n newEmail: string;\n masterPasswordHash: string;\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { FolderService } from 'jslib/abstractions/folder.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib/abstractions/policy.service';\nimport { SyncService } from 'jslib/abstractions/sync.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CipherString } from 'jslib/models/domain/cipherString';\nimport { MasterPasswordPolicyOptions } from 'jslib/models/domain/masterPasswordPolicyOptions';\nimport { SymmetricCryptoKey } from 'jslib/models/domain/symmetricCryptoKey';\n\nimport { CipherWithIdRequest } from 'jslib/models/request/cipherWithIdRequest';\nimport { FolderWithIdRequest } from 'jslib/models/request/folderWithIdRequest';\nimport { PasswordRequest } from 'jslib/models/request/passwordRequest';\nimport { UpdateKeyRequest } from 'jslib/models/request/updateKeyRequest';\n\n@Component({\n selector: 'app-change-password',\n templateUrl: 'change-password.component.html',\n})\nexport class ChangePasswordComponent implements OnInit {\n currentMasterPassword: string;\n newMasterPassword: string;\n confirmNewMasterPassword: string;\n formPromise: Promise;\n masterPasswordScore: number;\n rotateEncKey = false;\n enforcedPolicyOptions: MasterPasswordPolicyOptions;\n\n private masterPasswordStrengthTimeout: any;\n private email: string;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private cryptoService: CryptoService, private messagingService: MessagingService,\n private userService: UserService, private passwordGenerationService: PasswordGenerationService,\n private platformUtilsService: PlatformUtilsService, private folderService: FolderService,\n private cipherService: CipherService, private syncService: SyncService,\n private policyService: PolicyService) { }\n\n async ngOnInit() {\n this.email = await this.userService.getEmail();\n this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions();\n }\n\n getPasswordScoreAlertDisplay() {\n if (this.enforcedPolicyOptions == null) {\n return '';\n }\n\n let str: string;\n switch (this.enforcedPolicyOptions.minComplexity) {\n case 4:\n str = this.i18nService.t('strong');\n break;\n case 3:\n str = this.i18nService.t('good');\n break;\n default:\n str = this.i18nService.t('weak');\n break;\n }\n return str + ' (' + this.enforcedPolicyOptions.minComplexity + ')';\n }\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (!hasEncKey) {\n this.toasterService.popAsync('error', null, this.i18nService.t('updateKey'));\n return;\n }\n\n if (this.currentMasterPassword == null || this.currentMasterPassword === '' ||\n this.newMasterPassword == null || this.newMasterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n if (this.newMasterPassword.length < 8) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassLength'));\n return;\n }\n if (this.newMasterPassword !== this.confirmNewMasterPassword) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassDoesntMatch'));\n return;\n }\n\n const strengthResult = this.passwordGenerationService.passwordStrength(this.newMasterPassword,\n this.getPasswordStrengthUserInput());\n\n if (this.enforcedPolicyOptions != null &&\n !this.policyService.evaluateMasterPassword(\n strengthResult.score,\n this.newMasterPassword,\n this.enforcedPolicyOptions)) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPasswordPolicyRequirementsNotMet'));\n return;\n }\n\n if (strengthResult != null && strengthResult.score < 3) {\n const result = await this.platformUtilsService.showDialog(this.i18nService.t('weakMasterPasswordDesc'),\n this.i18nService.t('weakMasterPassword'), this.i18nService.t('yes'), this.i18nService.t('no'),\n 'warning');\n if (!result) {\n return;\n }\n }\n\n if (this.rotateEncKey) {\n await this.syncService.fullSync(true);\n }\n\n const request = new PasswordRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.currentMasterPassword, null);\n const email = await this.userService.getEmail();\n const kdf = await this.userService.getKdf();\n const kdfIterations = await this.userService.getKdfIterations();\n const newKey = await this.cryptoService.makeKey(this.newMasterPassword, email.trim().toLowerCase(),\n kdf, kdfIterations);\n request.newMasterPasswordHash = await this.cryptoService.hashPassword(this.newMasterPassword, newKey);\n const newEncKey = await this.cryptoService.remakeEncKey(newKey);\n request.key = newEncKey[1].encryptedString;\n try {\n if (this.rotateEncKey) {\n this.formPromise = this.apiService.postPassword(request).then(() => {\n return this.updateKey(newKey, request.newMasterPasswordHash);\n });\n } else {\n this.formPromise = this.apiService.postPassword(request);\n }\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Changed Password' });\n this.toasterService.popAsync('success', this.i18nService.t('masterPasswordChanged'),\n this.i18nService.t('logBackIn'));\n this.messagingService.send('logout');\n } catch { }\n }\n\n updatePasswordStrength() {\n if (this.masterPasswordStrengthTimeout != null) {\n clearTimeout(this.masterPasswordStrengthTimeout);\n }\n this.masterPasswordStrengthTimeout = setTimeout(() => {\n const strengthResult = this.passwordGenerationService.passwordStrength(this.newMasterPassword,\n this.getPasswordStrengthUserInput());\n this.masterPasswordScore = strengthResult == null ? null : strengthResult.score;\n }, 300);\n }\n\n async rotateEncKeyClicked() {\n if (this.rotateEncKey) {\n const ciphers = await this.cipherService.getAllDecrypted();\n let hasOldAttachments = false;\n if (ciphers != null) {\n for (let i = 0; i < ciphers.length; i++) {\n if (ciphers[i].organizationId == null && ciphers[i].hasOldAttachments) {\n hasOldAttachments = true;\n break;\n }\n }\n }\n\n if (hasOldAttachments) {\n const learnMore = await this.platformUtilsService.showDialog(\n this.i18nService.t('oldAttachmentsNeedFixDesc'), null,\n this.i18nService.t('learnMore'), this.i18nService.t('close'), 'warning');\n if (learnMore) {\n this.platformUtilsService.launchUri(\n 'https://dev-docs.rayt.io/docs/article/attachments/#fixing-old-attachments');\n }\n this.rotateEncKey = false;\n return;\n }\n\n const result = await this.platformUtilsService.showDialog(\n this.i18nService.t('updateEncryptionKeyWarning') + ' ' +\n this.i18nService.t('rotateEncKeyConfirmation'), this.i18nService.t('rotateEncKeyTitle'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!result) {\n this.rotateEncKey = false;\n }\n }\n }\n\n private getPasswordStrengthUserInput() {\n let userInput: string[] = [];\n const atPosition = this.email.indexOf('@');\n if (atPosition > -1) {\n userInput = userInput.concat(this.email.substr(0, atPosition).trim().toLowerCase().split(/[^A-Za-z0-9]/));\n }\n return userInput;\n }\n\n private async updateKey(key: SymmetricCryptoKey, masterPasswordHash: string) {\n const encKey = await this.cryptoService.makeEncKey(key);\n const privateKey = await this.cryptoService.getPrivateKey();\n let encPrivateKey: CipherString = null;\n if (privateKey != null) {\n encPrivateKey = await this.cryptoService.encrypt(privateKey, encKey[0]);\n }\n const request = new UpdateKeyRequest();\n request.privateKey = encPrivateKey != null ? encPrivateKey.encryptedString : null;\n request.key = encKey[1].encryptedString;\n request.masterPasswordHash = masterPasswordHash;\n\n const folders = await this.folderService.getAllDecrypted();\n for (let i = 0; i < folders.length; i++) {\n if (folders[i].id == null) {\n continue;\n }\n const folder = await this.folderService.encrypt(folders[i], encKey[0]);\n request.folders.push(new FolderWithIdRequest(folder));\n }\n\n const ciphers = await this.cipherService.getAllDecrypted();\n for (let i = 0; i < ciphers.length; i++) {\n if (ciphers[i].organizationId != null) {\n continue;\n }\n\n const cipher = await this.cipherService.encrypt(ciphers[i], encKey[0]);\n request.ciphers.push(new CipherWithIdRequest(cipher));\n }\n\n await this.apiService.postAccountKey(request);\n }\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class PasswordRequest extends PasswordVerificationRequest {\n newMasterPasswordHash: string;\n key: string;\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { KdfRequest } from 'jslib/models/request/kdfRequest';\n\nimport { KdfType } from 'jslib/enums/kdfType';\n\n@Component({\n selector: 'app-change-kdf',\n templateUrl: 'change-kdf.component.html',\n})\nexport class ChangeKdfComponent implements OnInit {\n masterPassword: string;\n kdfIterations: number;\n kdf = KdfType.PBKDF2_SHA256;\n kdfOptions: any[] = [];\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private cryptoService: CryptoService, private messagingService: MessagingService,\n private userService: UserService) {\n this.kdfOptions = [\n { name: 'PBKDF2 SHA-256', value: KdfType.PBKDF2_SHA256 },\n ];\n }\n\n async ngOnInit() {\n this.kdf = await this.userService.getKdf();\n this.kdfIterations = await this.userService.getKdfIterations();\n }\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (!hasEncKey) {\n this.toasterService.popAsync('error', null, this.i18nService.t('updateKey'));\n return;\n }\n\n const request = new KdfRequest();\n request.kdf = this.kdf;\n request.kdfIterations = this.kdfIterations;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n const email = await this.userService.getEmail();\n const newKey = await this.cryptoService.makeKey(this.masterPassword, email, this.kdf, this.kdfIterations);\n request.newMasterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, newKey);\n const newEncKey = await this.cryptoService.remakeEncKey(newKey);\n request.key = newEncKey[1].encryptedString;\n try {\n this.formPromise = this.apiService.postAccountKdf(request);\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Changed KDF' });\n this.toasterService.popAsync('success', this.i18nService.t('encKeySettingsChanged'),\n this.i18nService.t('logBackIn'));\n this.messagingService.send('logout');\n } catch { }\n }\n}\n","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\n\nimport { PasswordVerificationRequest } from 'jslib/models/request/passwordVerificationRequest';\n\n@Component({\n selector: 'app-deauthorize-sessions',\n templateUrl: 'deauthorize-sessions.component.html',\n})\nexport class DeauthorizeSessionsComponent {\n masterPassword: string;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private cryptoService: CryptoService, private messagingService: MessagingService) { }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.apiService.postSecurityStamp(request);\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Deauthorized Sessions' });\n this.toasterService.popAsync('success', this.i18nService.t('sessionsDeauthorized'),\n this.i18nService.t('logBackIn'));\n this.messagingService.send('logout');\n } catch { }\n }\n}\n","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\n\nimport { PasswordVerificationRequest } from 'jslib/models/request/passwordVerificationRequest';\n\n@Component({\n selector: 'app-delete-account',\n templateUrl: 'delete-account.component.html',\n})\nexport class DeleteAccountComponent {\n masterPassword: string;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private cryptoService: CryptoService, private messagingService: MessagingService) { }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.apiService.deleteAccount(request);\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Deleted Account' });\n this.toasterService.popAsync('success', this.i18nService.t('accountDeleted'),\n this.i18nService.t('accountDeletedDesc'));\n this.messagingService.send('logout');\n } catch { }\n }\n}\n","import {\n Component,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { UpdateTwoFactorAuthenticatorRequest } from 'jslib/models/request/updateTwoFactorAuthenticatorRequest';\nimport { TwoFactorAuthenticatorResponse } from 'jslib/models/response/twoFactorAuthenticatorResponse';\n\nimport { TwoFactorProviderType } from 'jslib/enums/twoFactorProviderType';\n\nimport { TwoFactorBaseComponent } from './two-factor-base.component';\n\n@Component({\n selector: 'app-two-factor-authenticator',\n templateUrl: 'two-factor-authenticator.component.html',\n})\nexport class TwoFactorAuthenticatorComponent extends TwoFactorBaseComponent implements OnInit, OnDestroy {\n type = TwoFactorProviderType.Authenticator;\n key: string;\n token: string;\n formPromise: Promise;\n\n private qrScript: HTMLScriptElement;\n\n constructor(apiService: ApiService, i18nService: I18nService,\n analytics: Angulartics2, toasterService: ToasterService,\n private userService: UserService, platformUtilsService: PlatformUtilsService) {\n super(apiService, i18nService, analytics, toasterService, platformUtilsService);\n this.qrScript = window.document.createElement('script');\n this.qrScript.src = 'scripts/qrious.min.js';\n this.qrScript.async = true;\n }\n\n ngOnInit() {\n window.document.body.appendChild(this.qrScript);\n }\n\n ngOnDestroy() {\n window.document.body.removeChild(this.qrScript);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n return this.processResponse(authResponse.response);\n }\n\n submit() {\n if (this.enabled) {\n return super.disable(this.formPromise);\n } else {\n return this.enable();\n }\n }\n\n protected enable() {\n const request = new UpdateTwoFactorAuthenticatorRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n request.token = this.token;\n request.key = this.key;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorAuthenticator(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n private async processResponse(response: TwoFactorAuthenticatorResponse) {\n this.token = null;\n this.enabled = response.enabled;\n this.key = response.key;\n const email = await this.userService.getEmail();\n window.setTimeout(() => {\n const qr = new (window as any).QRious({\n element: document.getElementById('qr'),\n value: 'otpauth://totp/Bitwarden:' + encodeURIComponent(email) +\n '?secret=' + encodeURIComponent(this.key) + '&issuer=Bitwarden',\n size: 160,\n });\n }, 100);\n }\n}\n","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { TwoFactorEmailRequest } from 'jslib/models/request/twoFactorEmailRequest';\n\nimport { TwoFactorProviderType } from 'jslib/enums/twoFactorProviderType';\nimport { UpdateTwoFactorEmailRequest } from 'jslib/models/request/updateTwoFactorEmailRequest';\nimport { TwoFactorEmailResponse } from 'jslib/models/response/twoFactorEmailResponse';\n\nimport { TwoFactorBaseComponent } from './two-factor-base.component';\n\n@Component({\n selector: 'app-two-factor-email',\n templateUrl: 'two-factor-email.component.html',\n})\nexport class TwoFactorEmailComponent extends TwoFactorBaseComponent {\n type = TwoFactorProviderType.Email;\n email: string;\n token: string;\n sentEmail: string;\n formPromise: Promise;\n emailPromise: Promise;\n\n constructor(apiService: ApiService, i18nService: I18nService,\n analytics: Angulartics2, toasterService: ToasterService,\n platformUtilsService: PlatformUtilsService, private userService: UserService) {\n super(apiService, i18nService, analytics, toasterService, platformUtilsService);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n return this.processResponse(authResponse.response);\n }\n\n submit() {\n if (this.enabled) {\n return super.disable(this.formPromise);\n } else {\n return this.enable();\n }\n }\n\n async sendEmail() {\n try {\n const request = new TwoFactorEmailRequest(this.email, this.masterPasswordHash);\n this.emailPromise = this.apiService.postTwoFactorEmailSetup(request);\n await this.emailPromise;\n this.sentEmail = this.email;\n } catch { }\n }\n\n protected enable() {\n const request = new UpdateTwoFactorEmailRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n request.email = this.email;\n request.token = this.token;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorEmail(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n private async processResponse(response: TwoFactorEmailResponse) {\n this.token = null;\n this.email = response.email;\n this.enabled = response.enabled;\n if (!this.enabled && (this.email == null || this.email === '')) {\n this.email = await this.userService.getEmail();\n }\n }\n}\n","import { Component } from '@angular/core';\n\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { TwoFactorRecoverResponse } from 'jslib/models/response/twoFactorRescoverResponse';\n\nimport { TwoFactorProviderType } from 'jslib/enums/twoFactorProviderType';\n\n@Component({\n selector: 'app-two-factor-recovery',\n templateUrl: 'two-factor-recovery.component.html',\n})\nexport class TwoFactorRecoveryComponent {\n type = -1;\n code: string;\n authed: boolean;\n twoFactorProviderType = TwoFactorProviderType;\n\n constructor(private i18nService: I18nService) { }\n\n auth(authResponse: any) {\n this.authed = true;\n this.processResponse(authResponse.response);\n }\n\n print() {\n const w = window.open();\n w.document.write('
' +\n '

' + this.i18nService.t('twoFactorRecoveryYourCode') + ':

' +\n '' +\n this.code + '
' +\n '

' + new Date() + '

');\n w.print();\n w.close();\n }\n\n private formatString(s: string) {\n if (s == null) {\n return null;\n }\n return s.replace(/(.{4})/g, '$1 ').trim().toUpperCase();\n }\n\n private processResponse(response: TwoFactorRecoverResponse) {\n this.code = this.formatString(response.code);\n }\n}\n","import {\n Component,\n NgZone,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { TwoFactorProviderType } from 'jslib/enums/twoFactorProviderType';\n\nimport { PasswordVerificationRequest } from 'jslib/models/request/passwordVerificationRequest';\nimport { UpdateTwoFactorU2fDeleteRequest } from 'jslib/models/request/updateTwoFactorU2fDeleteRequest';\nimport { UpdateTwoFactorU2fRequest } from 'jslib/models/request/updateTwoFactorU2fRequest';\nimport {\n ChallengeResponse,\n TwoFactorU2fResponse,\n} from 'jslib/models/response/twoFactorU2fResponse';\n\nimport { TwoFactorBaseComponent } from './two-factor-base.component';\n\n@Component({\n selector: 'app-two-factor-u2f',\n templateUrl: 'two-factor-u2f.component.html',\n})\nexport class TwoFactorU2fComponent extends TwoFactorBaseComponent implements OnInit, OnDestroy {\n type = TwoFactorProviderType.U2f;\n name: string;\n keys: any[];\n keyIdAvailable: number = null;\n keysConfiguredCount = 0;\n u2fError: boolean;\n u2fListening: boolean;\n u2fResponse: string;\n challengePromise: Promise;\n formPromise: Promise;\n\n private u2fScript: HTMLScriptElement;\n\n constructor(apiService: ApiService, i18nService: I18nService,\n analytics: Angulartics2, toasterService: ToasterService,\n platformUtilsService: PlatformUtilsService, private ngZone: NgZone) {\n super(apiService, i18nService, analytics, toasterService, platformUtilsService);\n this.u2fScript = window.document.createElement('script');\n this.u2fScript.src = 'scripts/u2f.js';\n this.u2fScript.async = true;\n }\n\n ngOnInit() {\n window.document.body.appendChild(this.u2fScript);\n }\n\n ngOnDestroy() {\n window.document.body.removeChild(this.u2fScript);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n this.processResponse(authResponse.response);\n }\n\n submit() {\n if (this.u2fResponse == null || this.keyIdAvailable == null) {\n // Should never happen.\n return Promise.reject();\n }\n const request = new UpdateTwoFactorU2fRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n request.deviceResponse = this.u2fResponse;\n request.id = this.keyIdAvailable;\n request.name = this.name;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorU2f(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n disable() {\n return super.disable(this.formPromise);\n }\n\n async remove(key: any) {\n if (this.keysConfiguredCount <= 1 || key.removePromise != null) {\n return;\n }\n const name = key.name != null ? key.name : this.i18nService.t('u2fkeyX', key.id);\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('removeU2fConfirmation'), name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n const request = new UpdateTwoFactorU2fDeleteRequest();\n request.id = key.id;\n request.masterPasswordHash = this.masterPasswordHash;\n try {\n key.removePromise = this.apiService.deleteTwoFactorU2f(request);\n const response = await key.removePromise;\n key.removePromise = null;\n await this.processResponse(response);\n } catch { }\n }\n\n async readKey() {\n if (this.keyIdAvailable == null) {\n return;\n }\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n try {\n this.challengePromise = this.apiService.getTwoFactorU2fChallenge(request);\n const challenge = await this.challengePromise;\n this.readDevice(challenge);\n } catch { }\n }\n\n private readDevice(u2fChallenge: ChallengeResponse) {\n // tslint:disable-next-line\n console.log('listening for key...');\n this.resetU2f(true);\n (window as any).u2f.register(u2fChallenge.appId, [{\n version: u2fChallenge.version,\n challenge: u2fChallenge.challenge,\n attestation: 'direct',\n }], [], (data: any) => {\n this.ngZone.run(() => {\n this.u2fListening = false;\n if (data.errorCode) {\n this.u2fError = true;\n // tslint:disable-next-line\n console.log('error: ' + data.errorCode);\n return;\n }\n this.u2fResponse = JSON.stringify(data);\n });\n }, 15);\n }\n\n private resetU2f(listening = false) {\n this.u2fResponse = null;\n this.u2fError = false;\n this.u2fListening = listening;\n }\n\n private processResponse(response: TwoFactorU2fResponse) {\n this.resetU2f();\n this.keys = [];\n this.keyIdAvailable = null;\n this.name = null;\n this.keysConfiguredCount = 0;\n for (let i = 1; i <= 5; i++) {\n if (response.keys != null) {\n const key = response.keys.filter((k) => k.id === i);\n if (key.length > 0) {\n this.keysConfiguredCount++;\n this.keys.push({\n id: i, name: key[0].name,\n configured: true,\n compromised: key[0].compromised,\n removePromise: null,\n });\n continue;\n }\n }\n this.keys.push({ id: i, name: null, configured: false, compromised: false, removePromise: null });\n if (this.keyIdAvailable == null) {\n this.keyIdAvailable = i;\n }\n }\n this.enabled = response.enabled;\n }\n}\n","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { UpdateTwoFactorYubioOtpRequest } from 'jslib/models/request/updateTwoFactorYubioOtpRequest';\nimport { TwoFactorYubiKeyResponse } from 'jslib/models/response/twoFactorYubiKeyResponse';\n\nimport { TwoFactorProviderType } from 'jslib/enums/twoFactorProviderType';\n\nimport { TwoFactorBaseComponent } from './two-factor-base.component';\n\n@Component({\n selector: 'app-two-factor-yubikey',\n templateUrl: 'two-factor-yubikey.component.html',\n})\nexport class TwoFactorYubiKeyComponent extends TwoFactorBaseComponent {\n type = TwoFactorProviderType.Yubikey;\n keys: any[];\n nfc = false;\n\n formPromise: Promise;\n disablePromise: Promise;\n\n constructor(apiService: ApiService, i18nService: I18nService,\n analytics: Angulartics2, toasterService: ToasterService,\n platformUtilsService: PlatformUtilsService) {\n super(apiService, i18nService, analytics, toasterService, platformUtilsService);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n this.processResponse(authResponse.response);\n }\n\n submit() {\n const request = new UpdateTwoFactorYubioOtpRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n request.key1 = this.keys != null && this.keys.length > 0 ? this.keys[0].key : null;\n request.key2 = this.keys != null && this.keys.length > 1 ? this.keys[1].key : null;\n request.key3 = this.keys != null && this.keys.length > 2 ? this.keys[2].key : null;\n request.key4 = this.keys != null && this.keys.length > 3 ? this.keys[3].key : null;\n request.key5 = this.keys != null && this.keys.length > 4 ? this.keys[4].key : null;\n request.nfc = this.nfc;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorYubiKey(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n this.toasterService.popAsync('success', null, this.i18nService.t('yubikeysUpdated'));\n });\n }\n\n disable() {\n return super.disable(this.disablePromise);\n }\n\n remove(key: any) {\n key.existingKey = null;\n key.key = null;\n }\n\n private processResponse(response: TwoFactorYubiKeyResponse) {\n this.enabled = response.enabled;\n this.keys = [\n { key: response.key1, existingKey: this.padRight(response.key1) },\n { key: response.key2, existingKey: this.padRight(response.key2) },\n { key: response.key3, existingKey: this.padRight(response.key3) },\n { key: response.key4, existingKey: this.padRight(response.key4) },\n { key: response.key5, existingKey: this.padRight(response.key5) },\n ];\n this.nfc = response.nfc || !response.enabled;\n }\n\n private padRight(str: string, character = '•', size = 44) {\n if (str == null || character == null || str.length >= size) {\n return str;\n }\n const max = (size - str.length) / character.length;\n for (let i = 0; i < max; i++) {\n str += character;\n }\n return str;\n }\n}\n","export class WebConstants {\n static readonly stripeTestKey = 'pk_test_KPoCfZXu7mznb9uSCPZ2JpTD';\n static readonly stripeLiveKey = 'pk_live_bpN0P37nMxrMQkcaHXtAybJk';\n static readonly btSandboxKey = 'sandbox_r72q8jq6_9pnxkwm75f87sdc2';\n static readonly btProductionKey = 'production_qfbsv8kc_njj2zjtyngtjmbjd';\n static readonly paypal = {\n businessIdProduction: '4ZDA7DLUUJGMN',\n businessIdSandbox: 'AD3LAUZSNVPJY',\n buttonActionProduction: 'https://www.paypal.com/cgi-bin/webscr',\n buttonActionSandbox: 'https://www.sandbox.paypal.com/cgi-bin/webscr',\n };\n}\n","
\n
\n \n

{{'addCredit' | i18n}}

\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n
\n \n
\n
$USD
\n \n
\n
\n
\n {{'creditDelayed' | i18n}}\n
\n \n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n","
\n
\n \n

{{(currentType != null ? 'changePaymentMethod' : 'addPaymentMethod') | i18n}}

\n \n \n \n
\n
\n","
\n
\n \n \n {{'licenseFileDesc' | i18n : (!organizationId ? 'bitwarden_premium_license.json' : 'bitwarden_organization_license.json')}}\n
\n \n \n
\n","
\n
\n \n

{{(add ? 'addStorage' : 'removeStorage') | i18n}}

\n
\n
\n \n \n
\n
\n
\n {{'total' | i18n}}: {{storageAdjustment || 0}} GB × {{storageGbPrice | currency:'$'}}\n = {{adjustedStorageTotal\n | currency:'$'}} /{{interval | i18n}}\n
\n \n \n \n {{(add ? 'storageAddNote' : 'storageRemoveNote') | i18n}}\n \n
\n
\n\n","\n

{{'uploadLicenseFileOrg' | i18n}}

\n
\n
\n \n \n {{'licenseFileDesc' | i18n : 'bitwarden_organization_license.json'}}\n
\n \n
\n
\n
\n

{{'generalInformation' | i18n}}

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

{{'chooseYourPlan' | i18n}}

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

{{'users' | i18n}}

\n
\n
\n \n \n {{'userSeatsHowManyDesc' | i18n}}\n
\n
\n
\n

{{'addons' | i18n}}

\n
\n
\n \n \n {{'userSeatsAdditionalDesc' | i18n : plans[plan].baseSeats : (plans[plan].seatPrice | currency:'$')}}\n
\n
\n
\n
\n \n \n {{'additionalStorageIntervalDesc' | i18n : '1 GB' : (storageGb.price | currency:'$') : ('month' | i18n)}}\n
\n
\n
\n
\n
\n \n \n
\n {{'premiumAccessDesc' | i18n : (3.33 | currency:'$') : ('month' | i18n)}}\n
\n
\n

{{'summary' | i18n}}

\n
\n \n \n
\n
\n \n \n
\n
\n
\n {{'total' | i18n}}: {{total | currency:'USD $'}} /{{interval | i18n}}\n
\n \n {{'paymentChargedWithTrial' | i18n : (interval | i18n) }}\n

{{'paymentInformation' | i18n}}

\n \n
\n \n \n \n \n {{'paymentCharged' | i18n : (interval | i18n) }}\n
\n
\n \n \n
\n
\n","export enum PlanType {\n Free = 0,\n FamiliesAnnually = 1,\n TeamsMonthly = 2,\n TeamsAnnually = 3,\n EnterpriseMonthly = 4,\n EnterpriseAnnually = 5,\n Custom = 6,\n}\n","import {\n Pipe,\n PipeTransform,\n} from '@angular/core';\n\n/**\n * A pipe that sanitizes HTML and highlights numbers and special characters (in different colors each).\n */\n@Pipe({ name: 'colorPassword' })\nexport class ColorPasswordPipe implements PipeTransform {\n transform(password: string) {\n let colorizedPassword = '';\n for (let i = 0; i < password.length; i++) {\n let character = password[i];\n let isSpecial = false;\n // Sanitize HTML first.\n switch (character) {\n case '&':\n character = '&';\n isSpecial = true;\n break;\n case '<':\n character = '<';\n isSpecial = true;\n break;\n case '>':\n character = '>';\n isSpecial = true;\n break;\n case ' ':\n character = ' ';\n isSpecial = true;\n break;\n default:\n break;\n }\n let type = 'letter';\n if (isSpecial || character.match(/[^\\w ]/)) {\n type = 'special';\n } else if (character.match(/\\d/)) {\n type = 'number';\n }\n colorizedPassword += '' + character + '';\n }\n return colorizedPassword;\n }\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n} from '@angular/core';\n\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\n\n@Directive({\n selector: '[appSelectCopy]',\n})\nexport class SelectCopyDirective {\n constructor(private el: ElementRef, private platformUtilsService: PlatformUtilsService) { }\n\n @HostListener('copy') onCopy() {\n if (window == null) {\n return;\n }\n let copyText = '';\n const selection = window.getSelection();\n for (let i = 0; i < selection.rangeCount; i++) {\n const range = selection.getRangeAt(i);\n const text = range.toString();\n\n // The selection should only contain one line of text. In some cases however, the\n // selection contains newlines and space characters from the indentation of following\n // sibling nodes. To avoid copying passwords containing trailing newlines and spaces\n // that aren't part of the password, the selection has to be trimmed.\n let stringEndPos = text.length;\n const newLinePos = text.search(/(?:\\r\\n|\\r|\\n)/);\n if (newLinePos > -1) {\n const otherPart = text.substr(newLinePos).trim();\n if (otherPart === '') {\n stringEndPos = newLinePos;\n }\n }\n copyText += text.substring(0, stringEndPos);\n }\n this.platformUtilsService.copyToClipboard(copyText, { window: window });\n }\n}\n","import { Component } from '@angular/core';\n\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport {\n PasswordGeneratorHistoryComponent as BasePasswordGeneratorHistoryComponent,\n} from 'jslib/angular/components/password-generator-history.component';\n\n@Component({\n selector: 'app-password-generator-history',\n templateUrl: 'password-generator-history.component.html',\n})\nexport class PasswordGeneratorHistoryComponent extends BasePasswordGeneratorHistoryComponent {\n constructor(passwordGenerationService: PasswordGenerationService, platformUtilsService: PlatformUtilsService,\n i18nService: I18nService) {\n super(passwordGenerationService, platformUtilsService, i18nService, window);\n }\n}\n","import { AttachmentResponse } from '../response/attachmentResponse';\n\nexport class AttachmentData {\n id: string;\n url: string;\n fileName: string;\n key: string;\n size: string;\n sizeName: string;\n\n constructor(response?: AttachmentResponse) {\n if (response == null) {\n return;\n }\n this.id = response.id;\n this.url = response.url;\n this.fileName = response.fileName;\n this.key = response.key;\n this.size = response.size;\n this.sizeName = response.sizeName;\n }\n}\n","import { CardApi } from '../api/cardApi';\n\nexport class CardData {\n cardholderName: string;\n brand: string;\n number: string;\n expMonth: string;\n expYear: string;\n code: string;\n\n constructor(data?: CardApi) {\n if (data == null) {\n return;\n }\n\n this.cardholderName = data.cardholderName;\n this.brand = data.brand;\n this.number = data.number;\n this.expMonth = data.expMonth;\n this.expYear = data.expYear;\n this.code = data.code;\n }\n}\n","import { FieldType } from '../../enums/fieldType';\n\nimport { FieldApi } from '../api/fieldApi';\n\nexport class FieldData {\n type: FieldType;\n name: string;\n value: string;\n\n constructor(response?: FieldApi) {\n if (response == null) {\n return;\n }\n this.type = response.type;\n this.name = response.name;\n this.value = response.value;\n }\n}\n","import { IdentityApi } from '../api/identityApi';\n\nexport class IdentityData {\n title: string;\n firstName: string;\n middleName: string;\n lastName: string;\n address1: string;\n address2: string;\n address3: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n company: string;\n email: string;\n phone: string;\n ssn: string;\n username: string;\n passportNumber: string;\n licenseNumber: string;\n\n constructor(data?: IdentityApi) {\n if (data == null) {\n return;\n }\n\n this.title = data.title;\n this.firstName = data.firstName;\n this.middleName = data.middleName;\n this.lastName = data.lastName;\n this.address1 = data.address1;\n this.address2 = data.address2;\n this.address3 = data.address3;\n this.city = data.city;\n this.state = data.state;\n this.postalCode = data.postalCode;\n this.country = data.country;\n this.company = data.company;\n this.email = data.email;\n this.phone = data.phone;\n this.ssn = data.ssn;\n this.username = data.username;\n this.passportNumber = data.passportNumber;\n this.licenseNumber = data.licenseNumber;\n }\n}\n","import { LoginApi } from '../api/loginApi';\n\nimport { LoginUriData } from './loginUriData';\n\nexport class LoginData {\n uris: LoginUriData[];\n username: string;\n password: string;\n passwordRevisionDate: string;\n totp: string;\n\n constructor(data?: LoginApi) {\n if (data == null) {\n return;\n }\n\n this.username = data.username;\n this.password = data.password;\n this.passwordRevisionDate = data.passwordRevisionDate;\n this.totp = data.totp;\n\n if (data.uris) {\n this.uris = data.uris.map((u) => new LoginUriData(u));\n }\n }\n}\n","import { UriMatchType } from '../../enums/uriMatchType';\n\nimport { LoginUriApi } from '../api/loginUriApi';\n\nexport class LoginUriData {\n uri: string;\n match: UriMatchType = null;\n\n constructor(data?: LoginUriApi) {\n if (data == null) {\n return;\n }\n this.uri = data.uri;\n this.match = data.match;\n }\n}\n","import { PasswordHistoryResponse } from '../response/passwordHistoryResponse';\n\nexport class PasswordHistoryData {\n password: string;\n lastUsedDate: string;\n\n constructor(response?: PasswordHistoryResponse) {\n if (response == null) {\n return;\n }\n\n this.password = response.password;\n this.lastUsedDate = response.lastUsedDate;\n }\n}\n","import { SecureNoteType } from '../../enums/secureNoteType';\n\nimport { SecureNoteApi } from '../api/secureNoteApi';\n\nexport class SecureNoteData {\n type: SecureNoteType;\n\n constructor(data?: SecureNoteApi) {\n if (data == null) {\n return;\n }\n\n this.type = data.type;\n }\n}\n","import { AttachmentData } from '../data/attachmentData';\n\nimport { AttachmentView } from '../view/attachmentView';\n\nimport { CipherString } from './cipherString';\nimport Domain from './domainBase';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nimport { CryptoService } from '../../abstractions/crypto.service';\n\nimport { Utils } from '../../misc/utils';\n\nexport class Attachment extends Domain {\n id: string;\n url: string;\n size: string;\n sizeName: string;\n key: CipherString;\n fileName: CipherString;\n\n constructor(obj?: AttachmentData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.size = obj.size;\n this.buildDomainModel(this, obj, {\n id: null,\n url: null,\n sizeName: null,\n fileName: null,\n key: null,\n }, alreadyEncrypted, ['id', 'url', 'sizeName']);\n }\n\n async decrypt(orgId: string): Promise {\n const view = await this.decryptObj(new AttachmentView(this), {\n fileName: null,\n }, orgId);\n\n if (this.key != null) {\n let cryptoService: CryptoService;\n const containerService = (Utils.global as any).bitwardenContainerService;\n if (containerService) {\n cryptoService = containerService.getCryptoService();\n } else {\n throw new Error('global bitwardenContainerService not initialized.');\n }\n\n try {\n const orgKey = await cryptoService.getOrgKey(orgId);\n const decValue = await cryptoService.decryptToBytes(this.key, orgKey);\n view.key = new SymmetricCryptoKey(decValue);\n } catch (e) {\n // TODO: error?\n }\n }\n\n return view;\n }\n\n toAttachmentData(): AttachmentData {\n const a = new AttachmentData();\n a.size = this.size;\n this.buildDataModel(this, a, {\n id: null,\n url: null,\n sizeName: null,\n fileName: null,\n key: null,\n }, ['id', 'url', 'sizeName']);\n return a;\n }\n}\n","import { View } from './view';\n\nimport { Attachment } from '../domain/attachment';\nimport { SymmetricCryptoKey } from '../domain/symmetricCryptoKey';\n\nexport class AttachmentView implements View {\n id: string = null;\n url: string = null;\n size: string = null;\n sizeName: string = null;\n fileName: string = null;\n key: SymmetricCryptoKey = null;\n\n constructor(a?: Attachment) {\n if (!a) {\n return;\n }\n\n this.id = a.id;\n this.url = a.url;\n this.size = a.size;\n this.sizeName = a.sizeName;\n }\n\n get fileSize(): number {\n try {\n if (this.size != null) {\n return parseInt(this.size, null);\n }\n } catch { }\n return 0;\n }\n}\n","import { EncryptionType } from '../../enums/encryptionType';\n\nimport { Utils } from '../../misc/utils';\n\nexport class SymmetricCryptoKey {\n key: ArrayBuffer;\n encKey?: ArrayBuffer;\n macKey?: ArrayBuffer;\n encType: EncryptionType;\n\n keyB64: string;\n encKeyB64: string;\n macKeyB64: string;\n\n meta: any;\n\n constructor(key: ArrayBuffer, encType?: EncryptionType) {\n if (key == null) {\n throw new Error('Must provide key');\n }\n\n if (encType == null) {\n if (key.byteLength === 32) {\n encType = EncryptionType.AesCbc256_B64;\n } else if (key.byteLength === 64) {\n encType = EncryptionType.AesCbc256_HmacSha256_B64;\n } else {\n throw new Error('Unable to determine encType.');\n }\n }\n\n this.key = key;\n this.encType = encType;\n\n if (encType === EncryptionType.AesCbc256_B64 && key.byteLength === 32) {\n this.encKey = key;\n this.macKey = null;\n } else if (encType === EncryptionType.AesCbc128_HmacSha256_B64 && key.byteLength === 32) {\n this.encKey = key.slice(0, 16);\n this.macKey = key.slice(16, 32);\n } else if (encType === EncryptionType.AesCbc256_HmacSha256_B64 && key.byteLength === 64) {\n this.encKey = key.slice(0, 32);\n this.macKey = key.slice(32, 64);\n } else {\n throw new Error('Unsupported encType/key length.');\n }\n\n if (this.key != null) {\n this.keyB64 = Utils.fromBufferToB64(this.key);\n }\n if (this.encKey != null) {\n this.encKeyB64 = Utils.fromBufferToB64(this.encKey);\n }\n if (this.macKey != null) {\n this.macKeyB64 = Utils.fromBufferToB64(this.macKey);\n }\n }\n}\n","import { CardData } from '../data/cardData';\n\nimport { CipherString } from './cipherString';\nimport Domain from './domainBase';\n\nimport { CardView } from '../view/cardView';\n\nexport class Card extends Domain {\n cardholderName: CipherString;\n brand: CipherString;\n number: CipherString;\n expMonth: CipherString;\n expYear: CipherString;\n code: CipherString;\n\n constructor(obj?: CardData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n }, alreadyEncrypted, []);\n }\n\n decrypt(orgId: string): Promise {\n return this.decryptObj(new CardView(this), {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n }, orgId);\n }\n\n toCardData(): CardData {\n const c = new CardData();\n this.buildDataModel(this, c, {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n });\n return c;\n }\n}\n","import { FieldType } from '../../enums/fieldType';\n\nimport { FieldData } from '../data/fieldData';\n\nimport { CipherString } from './cipherString';\nimport Domain from './domainBase';\n\nimport { FieldView } from '../view/fieldView';\n\nexport class Field extends Domain {\n name: CipherString;\n value: CipherString;\n type: FieldType;\n\n constructor(obj?: FieldData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.type = obj.type;\n this.buildDomainModel(this, obj, {\n name: null,\n value: null,\n }, alreadyEncrypted, []);\n }\n\n decrypt(orgId: string): Promise {\n return this.decryptObj(new FieldView(this), {\n name: null,\n value: null,\n }, orgId);\n }\n\n toFieldData(): FieldData {\n const f = new FieldData();\n this.buildDataModel(this, f, {\n name: null,\n value: null,\n type: null,\n }, ['type']);\n return f;\n }\n}\n","import { IdentityData } from '../data/identityData';\n\nimport { CipherString } from './cipherString';\nimport Domain from './domainBase';\n\nimport { IdentityView } from '../view/identityView';\n\nexport class Identity extends Domain {\n title: CipherString;\n firstName: CipherString;\n middleName: CipherString;\n lastName: CipherString;\n address1: CipherString;\n address2: CipherString;\n address3: CipherString;\n city: CipherString;\n state: CipherString;\n postalCode: CipherString;\n country: CipherString;\n company: CipherString;\n email: CipherString;\n phone: CipherString;\n ssn: CipherString;\n username: CipherString;\n passportNumber: CipherString;\n licenseNumber: CipherString;\n\n constructor(obj?: IdentityData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n }, alreadyEncrypted, []);\n }\n\n decrypt(orgId: string): Promise {\n return this.decryptObj(new IdentityView(this), {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n }, orgId);\n }\n\n toIdentityData(): IdentityData {\n const i = new IdentityData();\n this.buildDataModel(this, i, {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n });\n return i;\n }\n}\n","import { LoginUri } from './loginUri';\n\nimport { LoginData } from '../data/loginData';\n\nimport { LoginView } from '../view/loginView';\n\nimport { CipherString } from './cipherString';\nimport Domain from './domainBase';\n\nexport class Login extends Domain {\n uris: LoginUri[];\n username: CipherString;\n password: CipherString;\n passwordRevisionDate?: Date;\n totp: CipherString;\n\n constructor(obj?: LoginData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.passwordRevisionDate = obj.passwordRevisionDate != null ? new Date(obj.passwordRevisionDate) : null;\n this.buildDomainModel(this, obj, {\n username: null,\n password: null,\n totp: null,\n }, alreadyEncrypted, []);\n\n if (obj.uris) {\n this.uris = [];\n obj.uris.forEach((u) => {\n this.uris.push(new LoginUri(u, alreadyEncrypted));\n });\n }\n }\n\n async decrypt(orgId: string): Promise {\n const view = await this.decryptObj(new LoginView(this), {\n username: null,\n password: null,\n totp: null,\n }, orgId);\n\n if (this.uris != null) {\n view.uris = [];\n for (let i = 0; i < this.uris.length; i++) {\n const uri = await this.uris[i].decrypt(orgId);\n view.uris.push(uri);\n }\n }\n\n return view;\n }\n\n toLoginData(): LoginData {\n const l = new LoginData();\n l.passwordRevisionDate = this.passwordRevisionDate != null ? this.passwordRevisionDate.toISOString() : null;\n this.buildDataModel(this, l, {\n username: null,\n password: null,\n totp: null,\n });\n\n if (this.uris != null && this.uris.length > 0) {\n l.uris = [];\n this.uris.forEach((u) => {\n l.uris.push(u.toLoginUriData());\n });\n }\n\n return l;\n }\n}\n","import { UriMatchType } from '../../enums/uriMatchType';\n\nimport { LoginUriData } from '../data/loginUriData';\n\nimport { LoginUriView } from '../view/loginUriView';\n\nimport { CipherString } from './cipherString';\nimport Domain from './domainBase';\n\nexport class LoginUri extends Domain {\n uri: CipherString;\n match: UriMatchType;\n\n constructor(obj?: LoginUriData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.match = obj.match;\n this.buildDomainModel(this, obj, {\n uri: null,\n }, alreadyEncrypted, []);\n }\n\n decrypt(orgId: string): Promise {\n return this.decryptObj(new LoginUriView(this), {\n uri: null,\n }, orgId);\n }\n\n toLoginUriData(): LoginUriData {\n const u = new LoginUriData();\n this.buildDataModel(this, u, {\n uri: null,\n }, ['match']);\n return u;\n }\n}\n","import { PasswordHistoryData } from '../data/passwordHistoryData';\n\nimport { CipherString } from './cipherString';\nimport Domain from './domainBase';\n\nimport { PasswordHistoryView } from '../view/passwordHistoryView';\n\nexport class Password extends Domain {\n password: CipherString;\n lastUsedDate: Date;\n\n constructor(obj?: PasswordHistoryData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n password: null,\n }, alreadyEncrypted);\n this.lastUsedDate = new Date(obj.lastUsedDate);\n }\n\n decrypt(orgId: string): Promise {\n return this.decryptObj(new PasswordHistoryView(this), {\n password: null,\n }, orgId);\n }\n\n toPasswordHistoryData(): PasswordHistoryData {\n const ph = new PasswordHistoryData();\n ph.lastUsedDate = this.lastUsedDate.toISOString();\n this.buildDataModel(this, ph, {\n password: null,\n });\n return ph;\n }\n}\n","import { SecureNoteType } from '../../enums/secureNoteType';\n\nimport { SecureNoteData } from '../data/secureNoteData';\n\nimport Domain from './domainBase';\n\nimport { SecureNoteView } from '../view/secureNoteView';\n\nexport class SecureNote extends Domain {\n type: SecureNoteType;\n\n constructor(obj?: SecureNoteData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.type = obj.type;\n }\n\n decrypt(orgId: string): Promise {\n return Promise.resolve(new SecureNoteView(this));\n }\n\n toSecureNoteData(): SecureNoteData {\n const n = new SecureNoteData();\n n.type = this.type;\n return n;\n }\n}\n","import { CipherRequest } from './cipherRequest';\n\nimport { Cipher } from '../domain/cipher';\n\nexport class CipherCreateRequest {\n cipher: CipherRequest;\n collectionIds: string[];\n\n constructor(cipher: Cipher) {\n this.cipher = new CipherRequest(cipher);\n this.collectionIds = cipher.collectionIds;\n }\n}\n","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CipherData } from 'jslib/models/data/cipherData';\nimport { Cipher } from 'jslib/models/domain/cipher';\nimport { Organization } from 'jslib/models/domain/organization';\n\nimport { AttachmentView } from 'jslib/models/view/attachmentView';\n\nimport { AttachmentsComponent as BaseAttachmentsComponent } from '../../vault/attachments.component';\n\n@Component({\n selector: 'app-org-vault-attachments',\n templateUrl: '../../vault/attachments.component.html',\n})\nexport class AttachmentsComponent extends BaseAttachmentsComponent {\n organization: Organization;\n\n constructor(cipherService: CipherService, i18nService: I18nService,\n cryptoService: CryptoService, userService: UserService,\n platformUtilsService: PlatformUtilsService, private apiService: ApiService) {\n super(cipherService, i18nService, cryptoService, userService, platformUtilsService);\n }\n\n protected async reupload(attachment: AttachmentView) {\n if (this.organization.isAdmin && this.showFixOldAttachments(attachment)) {\n await super.reuploadCipherAttachment(attachment, true);\n }\n }\n\n protected async loadCipher() {\n if (!this.organization.isAdmin) {\n return await super.loadCipher();\n }\n const response = await this.apiService.getCipherAdmin(this.cipherId);\n return new Cipher(new CipherData(response));\n }\n\n protected saveCipherAttachment(file: File) {\n return this.cipherService.saveAttachmentWithServer(this.cipherDomain, file, this.organization.isAdmin);\n }\n\n protected deleteCipherAttachment(attachmentId: string) {\n if (!this.organization.isAdmin) {\n return super.deleteCipherAttachment(attachmentId);\n }\n return this.apiService.deleteCipherAttachmentAdmin(this.cipherId, attachmentId);\n }\n\n protected showFixOldAttachments(attachment: AttachmentView) {\n return attachment.key == null && this.organization.isAdmin;\n }\n}\n","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CipherService } from 'jslib/abstractions/cipher.service';\nimport { CollectionService } from 'jslib/abstractions/collection.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { CipherData } from 'jslib/models/data/cipherData';\nimport { Cipher } from 'jslib/models/domain/cipher';\nimport { Organization } from 'jslib/models/domain/organization';\nimport { CipherCollectionsRequest } from 'jslib/models/request/cipherCollectionsRequest';\n\nimport { CollectionsComponent as BaseCollectionsComponent } from '../../vault/collections.component';\n\n@Component({\n selector: 'app-org-vault-collections',\n templateUrl: '../../vault/collections.component.html',\n})\nexport class CollectionsComponent extends BaseCollectionsComponent {\n organization: Organization;\n\n constructor(collectionService: CollectionService, platformUtilsService: PlatformUtilsService,\n i18nService: I18nService, cipherService: CipherService,\n private apiService: ApiService) {\n super(collectionService, platformUtilsService, i18nService, cipherService);\n this.allowSelectNone = true;\n }\n\n protected async loadCipher() {\n if (!this.organization.isAdmin) {\n return await super.loadCipher();\n }\n const response = await this.apiService.getCipherAdmin(this.cipherId);\n return new Cipher(new CipherData(response));\n }\n\n protected loadCipherCollections() {\n if (!this.organization.isAdmin) {\n return super.loadCipherCollections();\n }\n return this.collectionIds;\n }\n\n protected loadCollections() {\n if (!this.organization.isAdmin) {\n return super.loadCollections();\n }\n return Promise.resolve(this.collections);\n }\n\n protected saveCollections() {\n if (this.organization.isAdmin) {\n const request = new CipherCollectionsRequest(this.cipherDomain.collectionIds);\n return this.apiService.putCipherCollectionsAdmin(this.cipherId, request);\n } else {\n return super.saveCollections();\n }\n }\n}\n","export class CipherCollectionsRequest {\n collectionIds: string[];\n\n constructor(collectionIds: string[]) {\n this.collectionIds = collectionIds == null ? [] : collectionIds;\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { CipherString } from 'jslib/models/domain/cipherString';\nimport { SymmetricCryptoKey } from 'jslib/models/domain/symmetricCryptoKey';\nimport { CollectionRequest } from 'jslib/models/request/collectionRequest';\nimport { SelectionReadOnlyRequest } from 'jslib/models/request/selectionReadOnlyRequest';\nimport { GroupResponse } from 'jslib/models/response/groupResponse';\n\nimport { Utils } from 'jslib/misc/utils';\n\n@Component({\n selector: 'app-collection-add-edit',\n templateUrl: 'collection-add-edit.component.html',\n})\nexport class CollectionAddEditComponent implements OnInit {\n @Input() collectionId: string;\n @Input() organizationId: string;\n @Output() onSavedCollection = new EventEmitter();\n @Output() onDeletedCollection = new EventEmitter();\n\n loading = true;\n editMode: boolean = false;\n accessGroups: boolean = false;\n title: string;\n name: string;\n externalId: string;\n groups: GroupResponse[] = [];\n formPromise: Promise;\n deletePromise: Promise;\n\n private orgKey: SymmetricCryptoKey;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private platformUtilsService: PlatformUtilsService, private cryptoService: CryptoService,\n private userService: UserService) { }\n\n async ngOnInit() {\n const organization = await this.userService.getOrganization(this.organizationId);\n this.accessGroups = organization.useGroups;\n this.editMode = this.loading = this.collectionId != null;\n if (this.accessGroups) {\n const groupsResponse = await this.apiService.getGroups(this.organizationId);\n this.groups = groupsResponse.data.map((r) => r).sort(Utils.getSortFunction(this.i18nService, 'name'));\n }\n this.orgKey = await this.cryptoService.getOrgKey(this.organizationId);\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t('editCollection');\n try {\n const collection = await this.apiService.getCollectionDetails(this.organizationId, this.collectionId);\n this.name = await this.cryptoService.decryptToUtf8(new CipherString(collection.name), this.orgKey);\n this.externalId = collection.externalId;\n if (collection.groups != null && this.groups.length > 0) {\n collection.groups.forEach((s) => {\n const group = this.groups.filter((g) => !g.accessAll && g.id === s.id);\n if (group != null && group.length > 0) {\n (group[0] as any).checked = true;\n (group[0] as any).readOnly = s.readOnly;\n }\n });\n }\n } catch { }\n } else {\n this.title = this.i18nService.t('addCollection');\n }\n\n this.groups.forEach((g) => {\n if (g.accessAll) {\n (g as any).checked = true;\n }\n });\n\n this.loading = false;\n }\n\n check(g: GroupResponse, select?: boolean) {\n if (g.accessAll) {\n return;\n }\n (g as any).checked = select == null ? !(g as any).checked : select;\n if (!(g as any).checked) {\n (g as any).readOnly = false;\n }\n }\n\n selectAll(select: boolean) {\n this.groups.forEach((g) => this.check(g, select));\n }\n\n async submit() {\n if (this.orgKey == null) {\n throw new Error('No encryption key for this organization.');\n }\n\n const request = new CollectionRequest();\n request.name = (await this.cryptoService.encrypt(this.name, this.orgKey)).encryptedString;\n request.externalId = this.externalId;\n request.groups = this.groups.filter((g) => (g as any).checked && !g.accessAll)\n .map((g) => new SelectionReadOnlyRequest(g.id, !!(g as any).readOnly));\n\n try {\n if (this.editMode) {\n this.formPromise = this.apiService.putCollection(this.organizationId, this.collectionId, request);\n } else {\n this.formPromise = this.apiService.postCollection(this.organizationId, request);\n }\n await this.formPromise;\n this.analytics.eventTrack.next({ action: this.editMode ? 'Edited Collection' : 'Created Collection' });\n this.toasterService.popAsync('success', null,\n this.i18nService.t(this.editMode ? 'editedCollectionId' : 'createdCollectionId', this.name));\n this.onSavedCollection.emit();\n } catch { }\n }\n\n async delete() {\n if (!this.editMode) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteCollectionConfirmation'), this.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.apiService.deleteCollection(this.organizationId, this.collectionId);\n await this.deletePromise;\n this.analytics.eventTrack.next({ action: 'Deleted Collection' });\n this.toasterService.popAsync('success', null, this.i18nService.t('deletedCollectionId', this.name));\n this.onDeletedCollection.emit();\n } catch { }\n }\n}\n","import { Collection } from '../domain/collection';\n\nimport { SelectionReadOnlyRequest } from './selectionReadOnlyRequest';\n\nexport class CollectionRequest {\n name: string;\n externalId: string;\n groups: SelectionReadOnlyRequest[] = [];\n\n constructor(collection?: Collection) {\n if (collection == null) {\n return;\n }\n this.name = collection.name ? collection.name.encryptedString : null;\n this.externalId = collection.externalId;\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CollectionService } from 'jslib/abstractions/collection.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { CollectionData } from 'jslib/models/data/collectionData';\nimport { Collection } from 'jslib/models/domain/collection';\nimport { GroupRequest } from 'jslib/models/request/groupRequest';\nimport { SelectionReadOnlyRequest } from 'jslib/models/request/selectionReadOnlyRequest';\nimport { CollectionDetailsResponse } from 'jslib/models/response/collectionResponse';\nimport { CollectionView } from 'jslib/models/view/collectionView';\n\n@Component({\n selector: 'app-group-add-edit',\n templateUrl: 'group-add-edit.component.html',\n})\nexport class GroupAddEditComponent implements OnInit {\n @Input() groupId: string;\n @Input() organizationId: string;\n @Output() onSavedGroup = new EventEmitter();\n @Output() onDeletedGroup = new EventEmitter();\n\n loading = true;\n editMode: boolean = false;\n title: string;\n name: string;\n externalId: string;\n access: 'all' | 'selected' = 'selected';\n collections: CollectionView[] = [];\n formPromise: Promise;\n deletePromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private collectionService: CollectionService, private platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n this.editMode = this.loading = this.groupId != null;\n await this.loadCollections();\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t('editGroup');\n try {\n const group = await this.apiService.getGroupDetails(this.organizationId, this.groupId);\n this.access = group.accessAll ? 'all' : 'selected';\n this.name = group.name;\n this.externalId = group.externalId;\n if (group.collections != null && this.collections != null) {\n group.collections.forEach((s) => {\n const collection = this.collections.filter((c) => c.id === s.id);\n if (collection != null && collection.length > 0) {\n (collection[0] as any).checked = true;\n collection[0].readOnly = s.readOnly;\n }\n });\n }\n } catch { }\n } else {\n this.title = this.i18nService.t('addGroup');\n }\n\n this.loading = false;\n }\n\n async loadCollections() {\n const response = await this.apiService.getCollections(this.organizationId);\n const collections = response.data.map((r) =>\n new Collection(new CollectionData(r as CollectionDetailsResponse)));\n this.collections = await this.collectionService.decryptMany(collections);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n if (!(c as any).checked) {\n c.readOnly = false;\n }\n }\n\n selectAll(select: boolean) {\n this.collections.forEach((c) => this.check(c, select));\n }\n\n async submit() {\n const request = new GroupRequest();\n request.name = this.name;\n request.externalId = this.externalId;\n request.accessAll = this.access === 'all';\n if (!request.accessAll) {\n request.collections = this.collections.filter((c) => (c as any).checked)\n .map((c) => new SelectionReadOnlyRequest(c.id, !!c.readOnly));\n }\n\n try {\n if (this.editMode) {\n this.formPromise = this.apiService.putGroup(this.organizationId, this.groupId, request);\n } else {\n this.formPromise = this.apiService.postGroup(this.organizationId, request);\n }\n await this.formPromise;\n this.analytics.eventTrack.next({ action: this.editMode ? 'Edited Group' : 'Created Group' });\n this.toasterService.popAsync('success', null,\n this.i18nService.t(this.editMode ? 'editedGroupId' : 'createdGroupId', this.name));\n this.onSavedGroup.emit();\n } catch { }\n }\n\n async delete() {\n if (!this.editMode) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteGroupConfirmation'), this.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.apiService.deleteGroup(this.organizationId, this.groupId);\n await this.deletePromise;\n this.analytics.eventTrack.next({ action: 'Deleted Group' });\n this.toasterService.popAsync('success', null, this.i18nService.t('deletedGroupId', this.name));\n this.onDeletedGroup.emit();\n } catch { }\n }\n}\n","export class OrganizationUserConfirmRequest {\n key: string;\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CollectionService } from 'jslib/abstractions/collection.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { CollectionData } from 'jslib/models/data/collectionData';\nimport { Collection } from 'jslib/models/domain/collection';\nimport { OrganizationUserInviteRequest } from 'jslib/models/request/organizationUserInviteRequest';\nimport { OrganizationUserUpdateRequest } from 'jslib/models/request/organizationUserUpdateRequest';\nimport { SelectionReadOnlyRequest } from 'jslib/models/request/selectionReadOnlyRequest';\nimport { CollectionDetailsResponse } from 'jslib/models/response/collectionResponse';\nimport { CollectionView } from 'jslib/models/view/collectionView';\n\nimport { OrganizationUserType } from 'jslib/enums/organizationUserType';\n\n@Component({\n selector: 'app-user-add-edit',\n templateUrl: 'user-add-edit.component.html',\n})\nexport class UserAddEditComponent implements OnInit {\n @Input() name: string;\n @Input() organizationUserId: string;\n @Input() organizationId: string;\n @Output() onSavedUser = new EventEmitter();\n @Output() onDeletedUser = new EventEmitter();\n\n loading = true;\n editMode: boolean = false;\n title: string;\n emails: string;\n type: OrganizationUserType = OrganizationUserType.User;\n access: 'all' | 'selected' = 'selected';\n collections: CollectionView[] = [];\n formPromise: Promise;\n deletePromise: Promise;\n organizationUserType = OrganizationUserType;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private collectionService: CollectionService, private platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n this.editMode = this.loading = this.organizationUserId != null;\n await this.loadCollections();\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t('editUser');\n try {\n const user = await this.apiService.getOrganizationUser(this.organizationId, this.organizationUserId);\n this.access = user.accessAll ? 'all' : 'selected';\n this.type = user.type;\n if (user.collections != null && this.collections != null) {\n user.collections.forEach((s) => {\n const collection = this.collections.filter((c) => c.id === s.id);\n if (collection != null && collection.length > 0) {\n (collection[0] as any).checked = true;\n collection[0].readOnly = s.readOnly;\n }\n });\n }\n } catch { }\n } else {\n this.title = this.i18nService.t('inviteUser');\n }\n\n this.loading = false;\n }\n\n async loadCollections() {\n const response = await this.apiService.getCollections(this.organizationId);\n const collections = response.data.map((r) =>\n new Collection(new CollectionData(r as CollectionDetailsResponse)));\n this.collections = await this.collectionService.decryptMany(collections);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n if (!(c as any).checked) {\n c.readOnly = false;\n }\n }\n\n selectAll(select: boolean) {\n this.collections.forEach((c) => this.check(c, select));\n }\n\n async submit() {\n let collections: SelectionReadOnlyRequest[] = null;\n if (this.access !== 'all') {\n collections = this.collections.filter((c) => (c as any).checked)\n .map((c) => new SelectionReadOnlyRequest(c.id, !!c.readOnly));\n }\n\n try {\n if (this.editMode) {\n const request = new OrganizationUserUpdateRequest();\n request.accessAll = this.access === 'all';\n request.type = this.type;\n request.collections = collections;\n this.formPromise = this.apiService.putOrganizationUser(this.organizationId, this.organizationUserId,\n request);\n } else {\n const request = new OrganizationUserInviteRequest();\n request.emails = this.emails.trim().split(/\\s*,\\s*/);\n request.accessAll = this.access === 'all';\n request.type = this.type;\n request.collections = collections;\n this.formPromise = this.apiService.postOrganizationUserInvite(this.organizationId, request);\n }\n await this.formPromise;\n this.analytics.eventTrack.next({ action: this.editMode ? 'Edited User' : 'Invited User' });\n this.toasterService.popAsync('success', null,\n this.i18nService.t(this.editMode ? 'editedUserId' : 'invitedUsers', this.name));\n this.onSavedUser.emit();\n } catch { }\n }\n\n async delete() {\n if (!this.editMode) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('removeUserConfirmation'), this.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.apiService.deleteOrganizationUser(this.organizationId, this.organizationUserId);\n await this.deletePromise;\n this.analytics.eventTrack.next({ action: 'Deleted User' });\n this.toasterService.popAsync('success', null, this.i18nService.t('removedUserId', this.name));\n this.onDeletedUser.emit();\n } catch { }\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ConstantsService } from 'jslib/services/constants.service';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { StorageService } from 'jslib/abstractions/storage.service';\n\nimport { OrganizationUserConfirmRequest } from 'jslib/models/request/organizationUserConfirmRequest';\n\nimport { Utils } from 'jslib/misc/utils';\n\n@Component({\n selector: 'app-user-confirm',\n templateUrl: 'user-confirm.component.html',\n})\nexport class UserConfirmComponent implements OnInit {\n @Input() name: string;\n @Input() userId: string;\n @Input() organizationUserId: string;\n @Input() organizationId: string;\n @Output() onConfirmedUser = new EventEmitter();\n\n dontAskAgain = false;\n loading = true;\n fingerprint: string;\n formPromise: Promise;\n\n private publicKey: Uint8Array = null;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private cryptoService: CryptoService, private storageService: StorageService) { }\n\n async ngOnInit() {\n try {\n const publicKeyResponse = await this.apiService.getUserPublicKey(this.userId);\n if (publicKeyResponse != null) {\n this.publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n const fingerprint = await this.cryptoService.getFingerprint(this.userId, this.publicKey.buffer);\n if (fingerprint != null) {\n this.fingerprint = fingerprint.join('-');\n }\n }\n } catch { }\n this.loading = false;\n }\n\n async submit() {\n if (this.loading) {\n return;\n }\n\n if (this.dontAskAgain) {\n await this.storageService.save(ConstantsService.autoConfirmFingerprints, true);\n }\n\n try {\n this.formPromise = this.doConfirmation();\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Confirmed User' });\n this.toasterService.popAsync('success', null, this.i18nService.t('hasBeenConfirmed', this.name));\n this.onConfirmedUser.emit();\n } catch { }\n }\n\n private async doConfirmation() {\n const orgKey = await this.cryptoService.getOrgKey(this.organizationId);\n const key = await this.cryptoService.rsaEncrypt(orgKey.key, this.publicKey.buffer);\n const request = new OrganizationUserConfirmRequest();\n request.key = key.encryptedString;\n await this.apiService.postOrganizationUserConfirm(this.organizationId, this.organizationUserId, request);\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { OrganizationUserUpdateGroupsRequest } from 'jslib/models/request/organizationUserUpdateGroupsRequest';\nimport { GroupResponse } from 'jslib/models/response/groupResponse';\n\nimport { Utils } from 'jslib/misc/utils';\n\n@Component({\n selector: 'app-user-groups',\n templateUrl: 'user-groups.component.html',\n})\nexport class UserGroupsComponent implements OnInit {\n @Input() name: string;\n @Input() organizationUserId: string;\n @Input() organizationId: string;\n @Output() onSavedUser = new EventEmitter();\n\n loading = true;\n groups: GroupResponse[] = [];\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService) { }\n\n async ngOnInit() {\n const groupsResponse = await this.apiService.getGroups(this.organizationId);\n const groups = groupsResponse.data.map((r) => r);\n groups.sort(Utils.getSortFunction(this.i18nService, 'name'));\n this.groups = groups;\n\n try {\n const userGroups = await this.apiService.getOrganizationUserGroups(\n this.organizationId, this.organizationUserId);\n if (userGroups != null && this.groups != null) {\n userGroups.forEach((ug) => {\n const group = this.groups.filter((g) => g.id === ug);\n if (group != null && group.length > 0) {\n (group[0] as any).checked = true;\n }\n });\n }\n } catch { }\n\n this.loading = false;\n }\n\n check(g: GroupResponse, select?: boolean) {\n (g as any).checked = select == null ? !(g as any).checked : select;\n if (!(g as any).checked) {\n (g as any).readOnly = false;\n }\n }\n\n selectAll(select: boolean) {\n this.groups.forEach((g) => this.check(g, select));\n }\n\n async submit() {\n const request = new OrganizationUserUpdateGroupsRequest();\n request.groupIds = this.groups.filter((g) => (g as any).checked).map((g) => g.id);\n\n try {\n this.formPromise = this.apiService.putOrganizationUserGroups(this.organizationId, this.organizationUserId,\n request);\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Edited User Groups' });\n this.toasterService.popAsync('success', null, this.i18nService.t('editedGroupsForUser', this.name));\n this.onSavedUser.emit();\n } catch { }\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { PolicyType } from 'jslib/enums/policyType';\n\nimport { PolicyRequest } from 'jslib/models/request/policyRequest';\n\nimport { PolicyResponse } from 'jslib/models/response/policyResponse';\n\n@Component({\n selector: 'app-policy-edit',\n templateUrl: 'policy-edit.component.html',\n})\nexport class PolicyEditComponent implements OnInit {\n @Input() name: string;\n @Input() description: string;\n @Input() type: PolicyType;\n @Input() organizationId: string;\n @Output() onSavedPolicy = new EventEmitter();\n\n policyType = PolicyType;\n loading = true;\n enabled = false;\n formPromise: Promise;\n passwordScores: any[];\n defaultTypes: any[];\n\n // Master password\n\n masterPassMinComplexity?: number = null;\n masterPassMinLength?: number;\n masterPassRequireUpper?: number;\n masterPassRequireLower?: number;\n masterPassRequireNumbers?: number;\n masterPassRequireSpecial?: number;\n\n // Password generator\n\n passGenDefaultType?: string;\n passGenMinLength?: number;\n passGenUseUpper?: boolean;\n passGenUseLower?: boolean;\n passGenUseNumbers?: boolean;\n passGenUseSpecial?: boolean;\n passGenMinNumbers?: number;\n passGenMinSpecial?: number;\n passGenMinNumberWords?: number;\n passGenCapitalize?: boolean;\n passGenIncludeNumber?: boolean;\n\n private policy: PolicyResponse;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService) {\n this.passwordScores = [\n { name: '-- ' + i18nService.t('select') + ' --', value: null },\n { name: i18nService.t('weak') + ' (0)', value: 0 },\n { name: i18nService.t('weak') + ' (1)', value: 1 },\n { name: i18nService.t('weak') + ' (2)', value: 2 },\n { name: i18nService.t('good') + ' (3)', value: 3 },\n { name: i18nService.t('strong') + ' (4)', value: 4 },\n ];\n this.defaultTypes = [\n { name: i18nService.t('userPreference'), value: null },\n { name: i18nService.t('password'), value: 'password' },\n { name: i18nService.t('passphrase'), value: 'passphrase' },\n ];\n }\n\n async ngOnInit() {\n await this.load();\n this.loading = false;\n }\n\n async load() {\n try {\n this.policy = await this.apiService.getPolicy(this.organizationId, this.type);\n\n if (this.policy != null) {\n this.enabled = this.policy.enabled;\n if (this.policy.data != null) {\n switch (this.type) {\n case PolicyType.PasswordGenerator:\n this.passGenDefaultType = this.policy.data.defaultType;\n this.passGenMinLength = this.policy.data.minLength;\n this.passGenUseUpper = this.policy.data.useUpper;\n this.passGenUseLower = this.policy.data.useLower;\n this.passGenUseNumbers = this.policy.data.useNumbers;\n this.passGenUseSpecial = this.policy.data.useSpecial;\n this.passGenMinNumbers = this.policy.data.minNumbers;\n this.passGenMinSpecial = this.policy.data.minSpecial;\n this.passGenMinNumberWords = this.policy.data.minNumberWords;\n this.passGenCapitalize = this.policy.data.capitalize;\n this.passGenIncludeNumber = this.policy.data.includeNumber;\n break;\n case PolicyType.MasterPassword:\n this.masterPassMinComplexity = this.policy.data.minComplexity;\n this.masterPassMinLength = this.policy.data.minLength;\n this.masterPassRequireUpper = this.policy.data.requireUpper;\n this.masterPassRequireLower = this.policy.data.requireLower;\n this.masterPassRequireNumbers = this.policy.data.requireNumbers;\n this.masterPassRequireSpecial = this.policy.data.requireSpecial;\n break;\n default:\n break;\n }\n }\n }\n } catch (e) {\n if (e.statusCode === 404) {\n this.enabled = false;\n } else {\n throw e;\n }\n }\n }\n\n async submit() {\n const request = new PolicyRequest();\n request.enabled = this.enabled;\n request.type = this.type;\n request.data = null;\n switch (this.type) {\n case PolicyType.PasswordGenerator:\n request.data = {\n defaultType: this.passGenDefaultType,\n minLength: this.passGenMinLength || null,\n useUpper: this.passGenUseUpper,\n useLower: this.passGenUseLower,\n useNumbers: this.passGenUseNumbers,\n useSpecial: this.passGenUseSpecial,\n minNumbers: this.passGenMinNumbers || null,\n minSpecial: this.passGenMinSpecial || null,\n minNumberWords: this.passGenMinNumberWords || null,\n capitalize: this.passGenCapitalize,\n includeNumber: this.passGenIncludeNumber,\n };\n break;\n case PolicyType.MasterPassword:\n request.data = {\n minComplexity: this.masterPassMinComplexity || null,\n minLength: this.masterPassMinLength || null,\n requireUpper: this.masterPassRequireUpper,\n requireLower: this.masterPassRequireLower,\n requireNumbers: this.masterPassRequireNumbers,\n requireSpecial: this.masterPassRequireSpecial,\n };\n break;\n default:\n break;\n }\n try {\n this.formPromise = this.apiService.putPolicy(this.organizationId, this.type, request);\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Edited Policy' });\n this.toasterService.popAsync('success', null, this.i18nService.t('editedPolicyId', this.name));\n this.onSavedPolicy.emit();\n } catch { }\n }\n}\n","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { PasswordVerificationRequest } from 'jslib/models/request/passwordVerificationRequest';\n\nimport { ApiKeyResponse } from 'jslib/models/response/apiKeyResponse';\n\n@Component({\n selector: 'app-api-key',\n templateUrl: 'api-key.component.html',\n})\nexport class ApiKeyComponent {\n organizationId: string;\n\n masterPassword: string;\n formPromise: Promise;\n clientId: string;\n clientSecret: string;\n scope: string;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private cryptoService: CryptoService, private router: Router) { }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.apiService.postOrganizationApiKey(this.organizationId, request);\n const response = await this.formPromise;\n this.clientSecret = response.apiKey;\n this.clientId = 'organization.' + this.organizationId;\n this.scope = 'api.organization';\n this.analytics.eventTrack.next({ action: 'Viewed Organization API Key' });\n } catch { }\n }\n}\n","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { PasswordVerificationRequest } from 'jslib/models/request/passwordVerificationRequest';\n\n@Component({\n selector: 'app-delete-organization',\n templateUrl: 'delete-organization.component.html',\n})\nexport class DeleteOrganizationComponent {\n organizationId: string;\n\n masterPassword: string;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private cryptoService: CryptoService, private router: Router) { }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.apiService.deleteOrganization(this.organizationId, request);\n await this.formPromise;\n this.analytics.eventTrack.next({ action: 'Deleted Organization' });\n this.toasterService.popAsync('success', this.i18nService.t('organizationDeleted'),\n this.i18nService.t('organizationDeletedDesc'));\n this.router.navigate(['/']);\n } catch { }\n }\n}\n","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { CryptoService } from 'jslib/abstractions/crypto.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { PasswordVerificationRequest } from 'jslib/models/request/passwordVerificationRequest';\n\nimport { ApiKeyResponse } from 'jslib/models/response/apiKeyResponse';\n\n@Component({\n selector: 'app-rotate-api-key',\n templateUrl: 'rotate-api-key.component.html',\n})\nexport class RotateApiKeyComponent {\n organizationId: string;\n\n masterPassword: string;\n formPromise: Promise;\n clientId: string;\n clientSecret: string;\n scope: string;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private cryptoService: CryptoService, private router: Router) { }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.apiService.postOrganizationRotateApiKey(this.organizationId, request);\n const response = await this.formPromise;\n this.clientSecret = response.apiKey;\n this.clientId = 'organization.' + this.organizationId;\n this.scope = 'api.organization';\n this.analytics.eventTrack.next({ action: 'Rotated Organization API Key' });\n } catch { }\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\n@Component({\n selector: 'app-change-plan',\n templateUrl: 'change-plan.component.html',\n})\nexport class ChangePlanComponent {\n @Input() organizationId: string;\n @Output() onChanged = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private platformUtilsService: PlatformUtilsService) { }\n\n async submit() {\n try {\n this.platformUtilsService.eventTrack('Changed Plan');\n this.onChanged.emit();\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\n@Component({\n selector: 'app-download-license',\n templateUrl: 'download-license.component.html',\n})\nexport class DownloadLicenseComponent {\n @Input() organizationId: string;\n @Output() onDownloaded = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n installationId: string;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private platformUtilsService: PlatformUtilsService) { }\n\n async submit() {\n if (this.installationId == null || this.installationId === '') {\n return;\n }\n\n try {\n this.formPromise = this.apiService.getOrganizationLicense(this.organizationId, this.installationId);\n const license = await this.formPromise;\n const licenseString = JSON.stringify(license, null, 2);\n this.platformUtilsService.saveFile(window, licenseString, null, 'bitwarden_organization_license.json');\n this.platformUtilsService.eventTrack('Downloaded License');\n this.onDownloaded.emit();\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { Angulartics2 } from 'angulartics2';\n\nimport { ApiService } from 'jslib/abstractions/api.service';\nimport { I18nService } from 'jslib/abstractions/i18n.service';\n\nimport { SeatRequest } from 'jslib/models/request/seatRequest';\n\nimport { PaymentComponent } from '../../settings/payment.component';\n\n@Component({\n selector: 'app-adjust-seats',\n templateUrl: 'adjust-seats.component.html',\n})\nexport class AdjustSeatsComponent {\n @Input() seatPrice = 0;\n @Input() add = true;\n @Input() organizationId: string;\n @Input() interval = 'year';\n @Output() onAdjusted = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n @ViewChild(PaymentComponent) paymentComponent: PaymentComponent;\n\n seatAdjustment = 0;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private analytics: Angulartics2, private toasterService: ToasterService,\n private router: Router, private activatedRoute: ActivatedRoute) { }\n\n async submit() {\n try {\n const request = new SeatRequest();\n request.seatAdjustment = this.seatAdjustment;\n if (!this.add) {\n request.seatAdjustment *= -1;\n }\n\n let paymentFailed = false;\n const action = async () => {\n const result = await this.apiService.postOrganizationSeat(this.organizationId, request);\n if (result != null && result.paymentIntentClientSecret != null) {\n try {\n await this.paymentComponent.handleStripeCardPayment(result.paymentIntentClientSecret, null);\n } catch {\n paymentFailed = true;\n }\n }\n };\n this.formPromise = action();\n await this.formPromise;\n this.analytics.eventTrack.next({ action: this.add ? 'Added Seats' : 'Removed Seats' });\n this.onAdjusted.emit(this.seatAdjustment);\n if (paymentFailed) {\n this.toasterService.popAsync({\n body: this.i18nService.t('couldNotChargeCardPayInvoice'),\n type: 'warning',\n timeout: 10000,\n });\n this.router.navigate(['../billing'], { relativeTo: this.activatedRoute });\n } else {\n this.toasterService.popAsync('success', null,\n this.i18nService.t('adjustedSeats', request.seatAdjustment.toString()));\n }\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n get adjustedSeatTotal(): number {\n return this.seatAdjustment * this.seatPrice;\n }\n}\n","import {\n Directive,\n ElementRef,\n forwardRef,\n HostListener,\n Input,\n Renderer2,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n NgControl,\n} from '@angular/forms';\n\n// ref: https://juristr.com/blog/2018/02/ng-true-value-directive/\n@Directive({\n selector: 'input[type=checkbox][appTrueFalseValue]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TrueFalseValueDirective),\n multi: true,\n },\n ],\n})\nexport class TrueFalseValueDirective implements ControlValueAccessor {\n @Input() trueValue = true;\n @Input() falseValue = false;\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2) { }\n\n @HostListener('change', ['$event'])\n onHostChange(ev: any) {\n this.propagateChange(ev.target.checked ? this.trueValue : this.falseValue);\n }\n\n writeValue(obj: any): void {\n if (obj === this.trueValue) {\n this.renderer.setProperty(this.elementRef.nativeElement, 'checked', true);\n } else {\n this.renderer.setProperty(this.elementRef.nativeElement, 'checked', false);\n }\n }\n\n registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n\n registerOnTouched(fn: any): void { /* nothing */ }\n\n setDisabledState?(isDisabled: boolean): void { /* nothing */ }\n\n private propagateChange = (_: any) => { /* nothing */ };\n}\n","import { DeviceType } from '../enums/deviceType';\nimport { PolicyType } from '../enums/policyType';\n\nimport { ApiService as ApiServiceAbstraction } from '../abstractions/api.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\nimport { TokenService } from '../abstractions/token.service';\n\nimport { EnvironmentUrls } from '../models/domain/environmentUrls';\n\nimport { BitPayInvoiceRequest } from '../models/request/bitPayInvoiceRequest';\nimport { CipherBulkDeleteRequest } from '../models/request/cipherBulkDeleteRequest';\nimport { CipherBulkMoveRequest } from '../models/request/cipherBulkMoveRequest';\nimport { CipherBulkShareRequest } from '../models/request/cipherBulkShareRequest';\nimport { CipherCollectionsRequest } from '../models/request/cipherCollectionsRequest';\nimport { CipherCreateRequest } from '../models/request/cipherCreateRequest';\nimport { CipherRequest } from '../models/request/cipherRequest';\nimport { CipherShareRequest } from '../models/request/cipherShareRequest';\nimport { CollectionRequest } from '../models/request/collectionRequest';\nimport { DeleteRecoverRequest } from '../models/request/deleteRecoverRequest';\nimport { EmailRequest } from '../models/request/emailRequest';\nimport { EmailTokenRequest } from '../models/request/emailTokenRequest';\nimport { EventRequest } from '../models/request/eventRequest';\nimport { FolderRequest } from '../models/request/folderRequest';\nimport { GroupRequest } from '../models/request/groupRequest';\nimport { IapCheckRequest } from '../models/request/iapCheckRequest';\nimport { ImportCiphersRequest } from '../models/request/importCiphersRequest';\nimport { ImportDirectoryRequest } from '../models/request/importDirectoryRequest';\nimport { ImportOrganizationCiphersRequest } from '../models/request/importOrganizationCiphersRequest';\nimport { KdfRequest } from '../models/request/kdfRequest';\nimport { KeysRequest } from '../models/request/keysRequest';\nimport { OrganizationCreateRequest } from '../models/request/organizationCreateRequest';\nimport { OrganizationUpdateRequest } from '../models/request/organizationUpdateRequest';\nimport { OrganizationUpgradeRequest } from '../models/request/organizationUpgradeRequest';\nimport { OrganizationUserAcceptRequest } from '../models/request/organizationUserAcceptRequest';\nimport { OrganizationUserConfirmRequest } from '../models/request/organizationUserConfirmRequest';\nimport { OrganizationUserInviteRequest } from '../models/request/organizationUserInviteRequest';\nimport { OrganizationUserUpdateGroupsRequest } from '../models/request/organizationUserUpdateGroupsRequest';\nimport { OrganizationUserUpdateRequest } from '../models/request/organizationUserUpdateRequest';\nimport { PasswordHintRequest } from '../models/request/passwordHintRequest';\nimport { PasswordRequest } from '../models/request/passwordRequest';\nimport { PasswordVerificationRequest } from '../models/request/passwordVerificationRequest';\nimport { PaymentRequest } from '../models/request/paymentRequest';\nimport { PolicyRequest } from '../models/request/policyRequest';\nimport { PreloginRequest } from '../models/request/preloginRequest';\nimport { RegisterRequest } from '../models/request/registerRequest';\nimport { SeatRequest } from '../models/request/seatRequest';\nimport { SelectionReadOnlyRequest } from '../models/request/selectionReadOnlyRequest';\nimport { StorageRequest } from '../models/request/storageRequest';\nimport { TokenRequest } from '../models/request/tokenRequest';\nimport { TwoFactorEmailRequest } from '../models/request/twoFactorEmailRequest';\nimport { TwoFactorProviderRequest } from '../models/request/twoFactorProviderRequest';\nimport { TwoFactorRecoveryRequest } from '../models/request/twoFactorRecoveryRequest';\nimport { UpdateDomainsRequest } from '../models/request/updateDomainsRequest';\nimport { UpdateKeyRequest } from '../models/request/updateKeyRequest';\nimport { UpdateProfileRequest } from '../models/request/updateProfileRequest';\nimport { UpdateTwoFactorAuthenticatorRequest } from '../models/request/updateTwoFactorAuthenticatorRequest';\nimport { UpdateTwoFactorDuoRequest } from '../models/request/updateTwoFactorDuoRequest';\nimport { UpdateTwoFactorEmailRequest } from '../models/request/updateTwoFactorEmailRequest';\nimport { UpdateTwoFactorU2fDeleteRequest } from '../models/request/updateTwoFactorU2fDeleteRequest';\nimport { UpdateTwoFactorU2fRequest } from '../models/request/updateTwoFactorU2fRequest';\nimport { UpdateTwoFactorYubioOtpRequest } from '../models/request/updateTwoFactorYubioOtpRequest';\nimport { VerifyBankRequest } from '../models/request/verifyBankRequest';\nimport { VerifyDeleteRecoverRequest } from '../models/request/verifyDeleteRecoverRequest';\nimport { VerifyEmailRequest } from '../models/request/verifyEmailRequest';\n\nimport { ApiKeyResponse } from '../models/response/apiKeyResponse';\nimport { BillingResponse } from '../models/response/billingResponse';\nimport { BreachAccountResponse } from '../models/response/breachAccountResponse';\nimport { CipherResponse } from '../models/response/cipherResponse';\nimport {\n CollectionGroupDetailsResponse,\n CollectionResponse,\n} from '../models/response/collectionResponse';\nimport { DomainsResponse } from '../models/response/domainsResponse';\nimport { ErrorResponse } from '../models/response/errorResponse';\nimport { EventResponse } from '../models/response/eventResponse';\nimport { FolderResponse } from '../models/response/folderResponse';\nimport {\n GroupDetailsResponse,\n GroupResponse,\n} from '../models/response/groupResponse';\nimport { IdentityTokenResponse } from '../models/response/identityTokenResponse';\nimport { IdentityTwoFactorResponse } from '../models/response/identityTwoFactorResponse';\nimport { ListResponse } from '../models/response/listResponse';\nimport { OrganizationResponse } from '../models/response/organizationResponse';\nimport { OrganizationSubscriptionResponse } from '../models/response/organizationSubscriptionResponse';\nimport {\n OrganizationUserDetailsResponse,\n OrganizationUserUserDetailsResponse,\n} from '../models/response/organizationUserResponse';\nimport { PaymentResponse } from '../models/response/paymentResponse';\nimport { PolicyResponse } from '../models/response/policyResponse';\nimport { PreloginResponse } from '../models/response/preloginResponse';\nimport { ProfileResponse } from '../models/response/profileResponse';\nimport { SelectionReadOnlyResponse } from '../models/response/selectionReadOnlyResponse';\nimport { SubscriptionResponse } from '../models/response/subscriptionResponse';\nimport { SyncResponse } from '../models/response/syncResponse';\nimport { TwoFactorAuthenticatorResponse } from '../models/response/twoFactorAuthenticatorResponse';\nimport { TwoFactorDuoResponse } from '../models/response/twoFactorDuoResponse';\nimport { TwoFactorEmailResponse } from '../models/response/twoFactorEmailResponse';\nimport { TwoFactorProviderResponse } from '../models/response/twoFactorProviderResponse';\nimport { TwoFactorRecoverResponse } from '../models/response/twoFactorRescoverResponse';\nimport {\n ChallengeResponse,\n TwoFactorU2fResponse,\n} from '../models/response/twoFactorU2fResponse';\nimport { TwoFactorYubiKeyResponse } from '../models/response/twoFactorYubiKeyResponse';\nimport { UserKeyResponse } from '../models/response/userKeyResponse';\n\nexport class ApiService implements ApiServiceAbstraction {\n urlsSet: boolean = false;\n apiBaseUrl: string;\n identityBaseUrl: string;\n eventsBaseUrl: string;\n\n private device: DeviceType;\n private deviceType: string;\n private isWebClient = false;\n private isDesktopClient = false;\n private usingBaseUrl = false;\n\n constructor(private tokenService: TokenService, private platformUtilsService: PlatformUtilsService,\n private logoutCallback: (expired: boolean) => Promise, private customUserAgent: string = null) {\n this.device = platformUtilsService.getDevice();\n this.deviceType = this.device.toString();\n this.isWebClient = this.device === DeviceType.IEBrowser || this.device === DeviceType.ChromeBrowser ||\n this.device === DeviceType.EdgeBrowser || this.device === DeviceType.FirefoxBrowser ||\n this.device === DeviceType.OperaBrowser || this.device === DeviceType.SafariBrowser ||\n this.device === DeviceType.UnknownBrowser || this.device === DeviceType.VivaldiBrowser;\n this.isDesktopClient = this.device === DeviceType.WindowsDesktop || this.device === DeviceType.MacOsDesktop ||\n this.device === DeviceType.LinuxDesktop;\n }\n\n setUrls(urls: EnvironmentUrls): void {\n this.urlsSet = true;\n\n if (urls.base != null) {\n this.usingBaseUrl = true;\n this.apiBaseUrl = urls.base + '/api';\n this.identityBaseUrl = urls.base + '/identity';\n this.eventsBaseUrl = urls.base + '/events';\n return;\n }\n\n this.apiBaseUrl = urls.api;\n this.identityBaseUrl = urls.identity;\n this.eventsBaseUrl = urls.events;\n\n // Production\n if (this.apiBaseUrl == null) {\n this.apiBaseUrl = 'https://api.bitwarden.com';\n }\n if (this.identityBaseUrl == null) {\n this.identityBaseUrl = 'https://identity.bitwarden.com';\n }\n if (this.eventsBaseUrl == null) {\n this.eventsBaseUrl = 'https://events.bitwarden.com';\n }\n }\n\n // Auth APIs\n\n async postIdentityToken(request: TokenRequest): Promise {\n const headers = new Headers({\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n 'Accept': 'application/json',\n 'Device-Type': this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set('User-Agent', this.customUserAgent);\n }\n const response = await this.fetch(new Request(this.identityBaseUrl + '/connect/token', {\n body: this.qsStringify(request.toIdentityToken(this.platformUtilsService.identityClientId)),\n credentials: this.getCredentials(),\n cache: 'no-store',\n headers: headers,\n method: 'POST',\n }));\n\n let responseJson: any = null;\n if (this.isJsonResponse(response)) {\n responseJson = await response.json();\n }\n\n if (responseJson != null) {\n if (response.status === 200) {\n return new IdentityTokenResponse(responseJson);\n } else if (response.status === 400 && responseJson.TwoFactorProviders2 &&\n Object.keys(responseJson.TwoFactorProviders2).length) {\n await this.tokenService.clearTwoFactorToken(request.email);\n return new IdentityTwoFactorResponse(responseJson);\n }\n }\n\n return Promise.reject(new ErrorResponse(responseJson, response.status, true));\n }\n\n async refreshIdentityToken(): Promise {\n try {\n await this.doRefreshToken();\n } catch (e) {\n return Promise.reject(null);\n }\n }\n\n // Account APIs\n\n async getProfile(): Promise {\n const r = await this.send('GET', '/accounts/profile', null, true, true);\n return new ProfileResponse(r);\n }\n\n async getUserBilling(): Promise {\n const r = await this.send('GET', '/accounts/billing', null, true, true);\n return new BillingResponse(r);\n }\n\n async getUserSubscription(): Promise {\n const r = await this.send('GET', '/accounts/subscription', null, true, true);\n return new SubscriptionResponse(r);\n }\n\n async putProfile(request: UpdateProfileRequest): Promise {\n const r = await this.send('PUT', '/accounts/profile', request, true, true);\n return new ProfileResponse(r);\n }\n\n async postPrelogin(request: PreloginRequest): Promise {\n const r = await this.send('POST', '/accounts/prelogin', request, false, true);\n return new PreloginResponse(r);\n }\n\n postEmailToken(request: EmailTokenRequest): Promise {\n return this.send('POST', '/accounts/email-token', request, true, false);\n }\n\n postEmail(request: EmailRequest): Promise {\n return this.send('POST', '/accounts/email', request, true, false);\n }\n\n postPassword(request: PasswordRequest): Promise {\n return this.send('POST', '/accounts/password', request, true, false);\n }\n\n postSecurityStamp(request: PasswordVerificationRequest): Promise {\n return this.send('POST', '/accounts/security-stamp', request, true, false);\n }\n\n deleteAccount(request: PasswordVerificationRequest): Promise {\n return this.send('DELETE', '/accounts', request, true, false);\n }\n\n async getAccountRevisionDate(): Promise {\n const r = await this.send('GET', '/accounts/revision-date', null, true, true);\n return r as number;\n }\n\n postPasswordHint(request: PasswordHintRequest): Promise {\n return this.send('POST', '/accounts/password-hint', request, false, false);\n }\n\n postRegister(request: RegisterRequest): Promise {\n return this.send('POST', '/accounts/register', request, false, false);\n }\n\n async postPremium(data: FormData): Promise {\n const r = await this.send('POST', '/accounts/premium', data, true, true);\n return new PaymentResponse(r);\n }\n\n async postIapCheck(request: IapCheckRequest): Promise {\n return this.send('POST', '/accounts/iap-check', request, true, false);\n }\n\n postReinstatePremium(): Promise {\n return this.send('POST', '/accounts/reinstate-premium', null, true, false);\n }\n\n postCancelPremium(): Promise {\n return this.send('POST', '/accounts/cancel-premium', null, true, false);\n }\n\n async postAccountStorage(request: StorageRequest): Promise {\n const r = await this.send('POST', '/accounts/storage', request, true, true);\n return new PaymentResponse(r);\n }\n\n postAccountPayment(request: PaymentRequest): Promise {\n return this.send('POST', '/accounts/payment', request, true, false);\n }\n\n postAccountLicense(data: FormData): Promise {\n return this.send('POST', '/accounts/license', data, true, false);\n }\n\n postAccountKeys(request: KeysRequest): Promise {\n return this.send('POST', '/accounts/keys', request, true, false);\n }\n\n postAccountKey(request: UpdateKeyRequest): Promise {\n return this.send('POST', '/accounts/key', request, true, false);\n }\n\n postAccountVerifyEmail(): Promise {\n return this.send('POST', '/accounts/verify-email', null, true, false);\n }\n\n postAccountVerifyEmailToken(request: VerifyEmailRequest): Promise {\n return this.send('POST', '/accounts/verify-email-token', request, false, false);\n }\n\n postAccountRecoverDelete(request: DeleteRecoverRequest): Promise {\n return this.send('POST', '/accounts/delete-recover', request, false, false);\n }\n\n postAccountRecoverDeleteToken(request: VerifyDeleteRecoverRequest): Promise {\n return this.send('POST', '/accounts/delete-recover-token', request, false, false);\n }\n\n postAccountKdf(request: KdfRequest): Promise {\n return this.send('POST', '/accounts/kdf', request, true, false);\n }\n\n // Folder APIs\n\n async getFolder(id: string): Promise {\n const r = await this.send('GET', '/folders/' + id, null, true, true);\n return new FolderResponse(r);\n }\n\n async postFolder(request: FolderRequest): Promise {\n const r = await this.send('POST', '/folders', request, true, true);\n return new FolderResponse(r);\n }\n\n async putFolder(id: string, request: FolderRequest): Promise {\n const r = await this.send('PUT', '/folders/' + id, request, true, true);\n return new FolderResponse(r);\n }\n\n deleteFolder(id: string): Promise {\n return this.send('DELETE', '/folders/' + id, null, true, false);\n }\n\n // Cipher APIs\n\n async getCipher(id: string): Promise {\n const r = await this.send('GET', '/ciphers/' + id, null, true, true);\n return new CipherResponse(r);\n }\n\n async getCipherAdmin(id: string): Promise {\n const r = await this.send('GET', '/ciphers/' + id + '/admin', null, true, true);\n return new CipherResponse(r);\n }\n\n async getCiphersOrganization(organizationId: string): Promise> {\n const r = await this.send('GET', '/ciphers/organization-details?organizationId=' + organizationId,\n null, true, true);\n return new ListResponse(r, CipherResponse);\n }\n\n async postCipher(request: CipherRequest): Promise {\n const r = await this.send('POST', '/ciphers', request, true, true);\n return new CipherResponse(r);\n }\n\n async postCipherCreate(request: CipherCreateRequest): Promise {\n const r = await this.send('POST', '/ciphers/create', request, true, true);\n return new CipherResponse(r);\n }\n\n async postCipherAdmin(request: CipherCreateRequest): Promise {\n const r = await this.send('POST', '/ciphers/admin', request, true, true);\n return new CipherResponse(r);\n }\n\n async putCipher(id: string, request: CipherRequest): Promise {\n const r = await this.send('PUT', '/ciphers/' + id, request, true, true);\n return new CipherResponse(r);\n }\n\n async putCipherAdmin(id: string, request: CipherRequest): Promise {\n const r = await this.send('PUT', '/ciphers/' + id + '/admin', request, true, true);\n return new CipherResponse(r);\n }\n\n deleteCipher(id: string): Promise {\n return this.send('DELETE', '/ciphers/' + id, null, true, false);\n }\n\n deleteCipherAdmin(id: string): Promise {\n return this.send('DELETE', '/ciphers/' + id + '/admin', null, true, false);\n }\n\n deleteManyCiphers(request: CipherBulkDeleteRequest): Promise {\n return this.send('DELETE', '/ciphers', request, true, false);\n }\n\n putMoveCiphers(request: CipherBulkMoveRequest): Promise {\n return this.send('PUT', '/ciphers/move', request, true, false);\n }\n\n async putShareCipher(id: string, request: CipherShareRequest): Promise {\n const r = await this.send('PUT', '/ciphers/' + id + '/share', request, true, true);\n return new CipherResponse(r);\n }\n\n putShareCiphers(request: CipherBulkShareRequest): Promise {\n return this.send('PUT', '/ciphers/share', request, true, false);\n }\n\n putCipherCollections(id: string, request: CipherCollectionsRequest): Promise {\n return this.send('PUT', '/ciphers/' + id + '/collections', request, true, false);\n }\n\n putCipherCollectionsAdmin(id: string, request: CipherCollectionsRequest): Promise {\n return this.send('PUT', '/ciphers/' + id + '/collections-admin', request, true, false);\n }\n\n postPurgeCiphers(request: PasswordVerificationRequest, organizationId: string = null): Promise {\n let path = '/ciphers/purge';\n if (organizationId != null) {\n path += '?organizationId=' + organizationId;\n }\n return this.send('POST', path, request, true, false);\n }\n\n postImportCiphers(request: ImportCiphersRequest): Promise {\n return this.send('POST', '/ciphers/import', request, true, false);\n }\n\n postImportOrganizationCiphers(organizationId: string, request: ImportOrganizationCiphersRequest): Promise {\n return this.send('POST', '/ciphers/import-organization?organizationId=' + organizationId, request, true, false);\n }\n\n putDeleteCipher(id: string): Promise {\n return this.send('PUT', '/ciphers/' + id + '/delete', null, true, false);\n }\n\n putDeleteCipherAdmin(id: string): Promise {\n return this.send('PUT', '/ciphers/' + id + '/delete-admin', null, true, false);\n }\n\n putDeleteManyCiphers(request: CipherBulkDeleteRequest): Promise {\n return this.send('PUT', '/ciphers/delete', request, true, false);\n }\n\n putRestoreCipher(id: string): Promise {\n return this.send('PUT', '/ciphers/' + id + '/restore', null, true, false);\n }\n\n putRestoreCipherAdmin(id: string): Promise {\n return this.send('PUT', '/ciphers/' + id + '/restore-admin', null, true, false);\n }\n\n putRestoreManyCiphers(request: CipherBulkDeleteRequest): Promise {\n return this.send('PUT', '/ciphers/restore', request, true, false);\n }\n\n // Attachments APIs\n\n async postCipherAttachment(id: string, data: FormData): Promise {\n const r = await this.send('POST', '/ciphers/' + id + '/attachment', data, true, true);\n return new CipherResponse(r);\n }\n\n async postCipherAttachmentAdmin(id: string, data: FormData): Promise {\n const r = await this.send('POST', '/ciphers/' + id + '/attachment-admin', data, true, true);\n return new CipherResponse(r);\n }\n\n deleteCipherAttachment(id: string, attachmentId: string): Promise {\n return this.send('DELETE', '/ciphers/' + id + '/attachment/' + attachmentId, null, true, false);\n }\n\n deleteCipherAttachmentAdmin(id: string, attachmentId: string): Promise {\n return this.send('DELETE', '/ciphers/' + id + '/attachment/' + attachmentId + '/admin', null, true, false);\n }\n\n postShareCipherAttachment(id: string, attachmentId: string, data: FormData,\n organizationId: string): Promise {\n return this.send('POST', '/ciphers/' + id + '/attachment/' +\n attachmentId + '/share?organizationId=' + organizationId, data, true, false);\n }\n\n // Collections APIs\n\n async getCollectionDetails(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/collections/' + id + '/details',\n null, true, true);\n return new CollectionGroupDetailsResponse(r);\n }\n\n async getUserCollections(): Promise> {\n const r = await this.send('GET', '/collections', null, true, true);\n return new ListResponse(r, CollectionResponse);\n }\n\n async getCollections(organizationId: string): Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/collections', null, true, true);\n return new ListResponse(r, CollectionResponse);\n }\n\n async getCollectionUsers(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/collections/' + id + '/users',\n null, true, true);\n return r.map((dr: any) => new SelectionReadOnlyResponse(dr));\n }\n\n async postCollection(organizationId: string, request: CollectionRequest): Promise {\n const r = await this.send('POST', '/organizations/' + organizationId + '/collections', request, true, true);\n return new CollectionResponse(r);\n }\n\n async putCollection(organizationId: string, id: string, request: CollectionRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + organizationId + '/collections/' + id,\n request, true, true);\n return new CollectionResponse(r);\n }\n\n async putCollectionUsers(organizationId: string, id: string, request: SelectionReadOnlyRequest[]): Promise {\n await this.send('PUT', '/organizations/' + organizationId + '/collections/' + id + '/users',\n request, true, false);\n }\n\n deleteCollection(organizationId: string, id: string): Promise {\n return this.send('DELETE', '/organizations/' + organizationId + '/collections/' + id, null, true, false);\n }\n\n deleteCollectionUser(organizationId: string, id: string, organizationUserId: string): Promise {\n return this.send('DELETE',\n '/organizations/' + organizationId + '/collections/' + id + '/user/' + organizationUserId,\n null, true, false);\n }\n\n // Groups APIs\n\n async getGroupDetails(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/groups/' + id + '/details',\n null, true, true);\n return new GroupDetailsResponse(r);\n }\n\n async getGroups(organizationId: string): Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/groups', null, true, true);\n return new ListResponse(r, GroupResponse);\n }\n\n async getGroupUsers(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/groups/' + id + '/users',\n null, true, true);\n return r;\n }\n\n async postGroup(organizationId: string, request: GroupRequest): Promise {\n const r = await this.send('POST', '/organizations/' + organizationId + '/groups', request, true, true);\n return new GroupResponse(r);\n }\n\n async putGroup(organizationId: string, id: string, request: GroupRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + organizationId + '/groups/' + id, request, true, true);\n return new GroupResponse(r);\n }\n\n async putGroupUsers(organizationId: string, id: string, request: string[]): Promise {\n await this.send('PUT', '/organizations/' + organizationId + '/groups/' + id + '/users', request, true, false);\n }\n\n deleteGroup(organizationId: string, id: string): Promise {\n return this.send('DELETE', '/organizations/' + organizationId + '/groups/' + id, null, true, false);\n }\n\n deleteGroupUser(organizationId: string, id: string, organizationUserId: string): Promise {\n return this.send('DELETE',\n '/organizations/' + organizationId + '/groups/' + id + '/user/' + organizationUserId, null, true, false);\n }\n\n // Policy APIs\n\n async getPolicy(organizationId: string, type: PolicyType): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/policies/' + type, null, true, true);\n return new PolicyResponse(r);\n }\n\n async getPolicies(organizationId: string): Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/policies', null, true, true);\n return new ListResponse(r, PolicyResponse);\n }\n\n async getPoliciesByToken(organizationId: string, token: string, email: string, organizationUserId: string):\n Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/policies/token?' +\n 'token=' + encodeURIComponent(token) + '&email=' + encodeURIComponent(email) +\n '&organizationUserId=' + organizationUserId, null, false, true);\n return new ListResponse(r, PolicyResponse);\n }\n\n async putPolicy(organizationId: string, type: PolicyType, request: PolicyRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + organizationId + '/policies/' + type, request, true, true);\n return new PolicyResponse(r);\n }\n\n // Organization User APIs\n\n async getOrganizationUser(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/users/' + id, null, true, true);\n return new OrganizationUserDetailsResponse(r);\n }\n\n async getOrganizationUserGroups(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/users/' + id + '/groups',\n null, true, true);\n return r;\n }\n\n async getOrganizationUsers(organizationId: string): Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/users', null, true, true);\n return new ListResponse(r, OrganizationUserUserDetailsResponse);\n }\n\n postOrganizationUserInvite(organizationId: string, request: OrganizationUserInviteRequest): Promise {\n return this.send('POST', '/organizations/' + organizationId + '/users/invite', request, true, false);\n }\n\n postOrganizationUserReinvite(organizationId: string, id: string): Promise {\n return this.send('POST', '/organizations/' + organizationId + '/users/' + id + '/reinvite', null, true, false);\n }\n\n postOrganizationUserAccept(organizationId: string, id: string,\n request: OrganizationUserAcceptRequest): Promise {\n return this.send('POST', '/organizations/' + organizationId + '/users/' + id + '/accept', request, true, false);\n }\n\n postOrganizationUserConfirm(organizationId: string, id: string,\n request: OrganizationUserConfirmRequest): Promise {\n return this.send('POST', '/organizations/' + organizationId + '/users/' + id + '/confirm',\n request, true, false);\n }\n\n putOrganizationUser(organizationId: string, id: string, request: OrganizationUserUpdateRequest): Promise {\n return this.send('PUT', '/organizations/' + organizationId + '/users/' + id, request, true, false);\n }\n\n putOrganizationUserGroups(organizationId: string, id: string,\n request: OrganizationUserUpdateGroupsRequest): Promise {\n return this.send('PUT', '/organizations/' + organizationId + '/users/' + id + '/groups', request, true, false);\n }\n\n deleteOrganizationUser(organizationId: string, id: string): Promise {\n return this.send('DELETE', '/organizations/' + organizationId + '/users/' + id, null, true, false);\n }\n\n // Sync APIs\n\n async getSync(): Promise {\n const path = this.isDesktopClient || this.isWebClient ? '/sync?excludeDomains=true' : '/sync';\n const r = await this.send('GET', path, null, true, true);\n return new SyncResponse(r);\n }\n\n async postImportDirectory(organizationId: string, request: ImportDirectoryRequest): Promise {\n return this.send('POST', '/organizations/' + organizationId + '/import', request, true, false);\n }\n\n // Settings APIs\n\n async getSettingsDomains(): Promise {\n const r = await this.send('GET', '/settings/domains', null, true, true);\n return new DomainsResponse(r);\n }\n\n async putSettingsDomains(request: UpdateDomainsRequest): Promise {\n const r = await this.send('PUT', '/settings/domains', request, true, true);\n return new DomainsResponse(r);\n }\n\n // Two-factor APIs\n\n async getTwoFactorProviders(): Promise> {\n const r = await this.send('GET', '/two-factor', null, true, true);\n return new ListResponse(r, TwoFactorProviderResponse);\n }\n\n async getTwoFactorOrganizationProviders(organizationId: string): Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/two-factor', null, true, true);\n return new ListResponse(r, TwoFactorProviderResponse);\n }\n\n async getTwoFactorAuthenticator(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-authenticator', request, true, true);\n return new TwoFactorAuthenticatorResponse(r);\n }\n\n async getTwoFactorEmail(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-email', request, true, true);\n return new TwoFactorEmailResponse(r);\n }\n\n async getTwoFactorDuo(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-duo', request, true, true);\n return new TwoFactorDuoResponse(r);\n }\n\n async getTwoFactorOrganizationDuo(organizationId: string,\n request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/organizations/' + organizationId + '/two-factor/get-duo',\n request, true, true);\n return new TwoFactorDuoResponse(r);\n }\n\n async getTwoFactorYubiKey(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-yubikey', request, true, true);\n return new TwoFactorYubiKeyResponse(r);\n }\n\n async getTwoFactorU2f(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-u2f', request, true, true);\n return new TwoFactorU2fResponse(r);\n }\n\n async getTwoFactorU2fChallenge(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-u2f-challenge', request, true, true);\n return new ChallengeResponse(r);\n }\n\n async getTwoFactorRecover(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-recover', request, true, true);\n return new TwoFactorRecoverResponse(r);\n }\n\n async putTwoFactorAuthenticator(\n request: UpdateTwoFactorAuthenticatorRequest): Promise {\n const r = await this.send('PUT', '/two-factor/authenticator', request, true, true);\n return new TwoFactorAuthenticatorResponse(r);\n }\n\n async putTwoFactorEmail(request: UpdateTwoFactorEmailRequest): Promise {\n const r = await this.send('PUT', '/two-factor/email', request, true, true);\n return new TwoFactorEmailResponse(r);\n }\n\n async putTwoFactorDuo(request: UpdateTwoFactorDuoRequest): Promise {\n const r = await this.send('PUT', '/two-factor/duo', request, true, true);\n return new TwoFactorDuoResponse(r);\n }\n\n async putTwoFactorOrganizationDuo(organizationId: string,\n request: UpdateTwoFactorDuoRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + organizationId + '/two-factor/duo', request, true, true);\n return new TwoFactorDuoResponse(r);\n }\n\n async putTwoFactorYubiKey(request: UpdateTwoFactorYubioOtpRequest): Promise {\n const r = await this.send('PUT', '/two-factor/yubikey', request, true, true);\n return new TwoFactorYubiKeyResponse(r);\n }\n\n async putTwoFactorU2f(request: UpdateTwoFactorU2fRequest): Promise {\n const r = await this.send('PUT', '/two-factor/u2f', request, true, true);\n return new TwoFactorU2fResponse(r);\n }\n\n async deleteTwoFactorU2f(request: UpdateTwoFactorU2fDeleteRequest): Promise {\n const r = await this.send('DELETE', '/two-factor/u2f', request, true, true);\n return new TwoFactorU2fResponse(r);\n }\n\n async putTwoFactorDisable(request: TwoFactorProviderRequest): Promise {\n const r = await this.send('PUT', '/two-factor/disable', request, true, true);\n return new TwoFactorProviderResponse(r);\n }\n\n async putTwoFactorOrganizationDisable(organizationId: string,\n request: TwoFactorProviderRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + organizationId + '/two-factor/disable',\n request, true, true);\n return new TwoFactorProviderResponse(r);\n }\n\n postTwoFactorRecover(request: TwoFactorRecoveryRequest): Promise {\n return this.send('POST', '/two-factor/recover', request, false, false);\n }\n\n postTwoFactorEmailSetup(request: TwoFactorEmailRequest): Promise {\n return this.send('POST', '/two-factor/send-email', request, true, false);\n }\n\n postTwoFactorEmail(request: TwoFactorEmailRequest): Promise {\n return this.send('POST', '/two-factor/send-email-login', request, false, false);\n }\n\n // Organization APIs\n\n async getOrganization(id: string): Promise {\n const r = await this.send('GET', '/organizations/' + id, null, true, true);\n return new OrganizationResponse(r);\n }\n\n async getOrganizationBilling(id: string): Promise {\n const r = await this.send('GET', '/organizations/' + id + '/billing', null, true, true);\n return new BillingResponse(r);\n }\n\n async getOrganizationSubscription(id: string): Promise {\n const r = await this.send('GET', '/organizations/' + id + '/subscription', null, true, true);\n return new OrganizationSubscriptionResponse(r);\n }\n\n async getOrganizationLicense(id: string, installationId: string): Promise {\n return this.send('GET', '/organizations/' + id + '/license?installationId=' + installationId,\n null, true, true);\n }\n\n async postOrganization(request: OrganizationCreateRequest): Promise {\n const r = await this.send('POST', '/organizations', request, true, true);\n return new OrganizationResponse(r);\n }\n\n async putOrganization(id: string, request: OrganizationUpdateRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + id, request, true, true);\n return new OrganizationResponse(r);\n }\n\n postLeaveOrganization(id: string): Promise {\n return this.send('POST', '/organizations/' + id + '/leave', null, true, false);\n }\n\n async postOrganizationLicense(data: FormData): Promise {\n const r = await this.send('POST', '/organizations/license', data, true, true);\n return new OrganizationResponse(r);\n }\n\n async postOrganizationLicenseUpdate(id: string, data: FormData): Promise {\n return this.send('POST', '/organizations/' + id + '/license', data, true, false);\n }\n\n async postOrganizationApiKey(id: string, request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/api-key', request, true, true);\n return new ApiKeyResponse(r);\n }\n\n async postOrganizationRotateApiKey(id: string, request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/rotate-api-key', request, true, true);\n return new ApiKeyResponse(r);\n }\n\n async postOrganizationUpgrade(id: string, request: OrganizationUpgradeRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/upgrade', request, true, true);\n return new PaymentResponse(r);\n }\n\n async postOrganizationSeat(id: string, request: SeatRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/seat', request, true, true);\n return new PaymentResponse(r);\n }\n\n async postOrganizationStorage(id: string, request: StorageRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/storage', request, true, true);\n return new PaymentResponse(r);\n }\n\n postOrganizationPayment(id: string, request: PaymentRequest): Promise {\n return this.send('POST', '/organizations/' + id + '/payment', request, true, false);\n }\n\n postOrganizationVerifyBank(id: string, request: VerifyBankRequest): Promise {\n return this.send('POST', '/organizations/' + id + '/verify-bank', request, true, false);\n }\n\n postOrganizationCancel(id: string): Promise {\n return this.send('POST', '/organizations/' + id + '/cancel', null, true, false);\n }\n\n postOrganizationReinstate(id: string): Promise {\n return this.send('POST', '/organizations/' + id + '/reinstate', null, true, false);\n }\n\n deleteOrganization(id: string, request: PasswordVerificationRequest): Promise {\n return this.send('DELETE', '/organizations/' + id, request, true, false);\n }\n\n // Event APIs\n\n async getEvents(start: string, end: string, token: string): Promise> {\n const r = await this.send('GET', this.addEventParameters('/events', start, end, token), null, true, true);\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsCipher(id: string, start: string, end: string,\n token: string): Promise> {\n const r = await this.send('GET', this.addEventParameters('/ciphers/' + id + '/events', start, end, token),\n null, true, true);\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsOrganization(id: string, start: string, end: string,\n token: string): Promise> {\n const r = await this.send('GET', this.addEventParameters('/organizations/' + id + '/events', start, end, token),\n null, true, true);\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsOrganizationUser(organizationId: string, id: string,\n start: string, end: string, token: string): Promise> {\n const r = await this.send('GET',\n this.addEventParameters('/organizations/' + organizationId + '/users/' + id + '/events', start, end, token),\n null, true, true);\n return new ListResponse(r, EventResponse);\n }\n\n async postEventsCollect(request: EventRequest[]): Promise {\n const authHeader = await this.getActiveBearerToken();\n const headers = new Headers({\n 'Device-Type': this.deviceType,\n 'Authorization': 'Bearer ' + authHeader,\n 'Content-Type': 'application/json; charset=utf-8',\n });\n if (this.customUserAgent != null) {\n headers.set('User-Agent', this.customUserAgent);\n }\n const response = await this.fetch(new Request(this.eventsBaseUrl + '/collect', {\n cache: 'no-store',\n credentials: this.getCredentials(),\n method: 'POST',\n body: JSON.stringify(request),\n headers: headers,\n }));\n if (response.status !== 200) {\n return Promise.reject('Event post failed.');\n }\n }\n\n // User APIs\n\n async getUserPublicKey(id: string): Promise {\n const r = await this.send('GET', '/users/' + id + '/public-key', null, true, true);\n return new UserKeyResponse(r);\n }\n\n // HIBP APIs\n\n async getHibpBreach(username: string): Promise {\n const r = await this.send('GET', '/hibp/breach?username=' + username, null, true, true);\n return r.map((a: any) => new BreachAccountResponse(a));\n }\n\n // Misc\n\n async postBitPayInvoice(request: BitPayInvoiceRequest): Promise {\n const r = await this.send('POST', '/bitpay-invoice', request, true, true);\n return r as string;\n }\n\n async postSetupPayment(): Promise {\n const r = await this.send('POST', '/setup-payment', null, true, true);\n return r as string;\n }\n\n // Helpers\n\n async getActiveBearerToken(): Promise {\n let accessToken = await this.tokenService.getToken();\n if (this.tokenService.tokenNeedsRefresh()) {\n const tokenResponse = await this.doRefreshToken();\n accessToken = tokenResponse.accessToken;\n }\n return accessToken;\n }\n\n fetch(request: Request): Promise {\n if (request.method === 'GET') {\n request.headers.set('Cache-Control', 'no-store');\n request.headers.set('Pragma', 'no-cache');\n }\n return this.nativeFetch(request);\n }\n\n nativeFetch(request: Request): Promise {\n return fetch(request);\n }\n\n private async send(method: 'GET' | 'POST' | 'PUT' | 'DELETE', path: string, body: any,\n authed: boolean, hasResponse: boolean): Promise {\n const headers = new Headers({\n 'Device-Type': this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set('User-Agent', this.customUserAgent);\n }\n\n const requestInit: RequestInit = {\n cache: 'no-store',\n credentials: this.getCredentials(),\n method: method,\n };\n\n if (authed) {\n const authHeader = await this.getActiveBearerToken();\n headers.set('Authorization', 'Bearer ' + authHeader);\n }\n if (body != null) {\n if (typeof body === 'string') {\n requestInit.body = body;\n headers.set('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');\n } else if (typeof body === 'object') {\n if (body instanceof FormData) {\n requestInit.body = body;\n } else {\n headers.set('Content-Type', 'application/json; charset=utf-8');\n requestInit.body = JSON.stringify(body);\n }\n }\n }\n if (hasResponse) {\n headers.set('Accept', 'application/json');\n }\n\n requestInit.headers = headers;\n const response = await this.fetch(new Request(this.apiBaseUrl + path, requestInit));\n\n if (hasResponse && response.status === 200) {\n const responseJson = await response.json();\n return responseJson;\n } else if (response.status !== 200) {\n const error = await this.handleError(response, false);\n return Promise.reject(error);\n }\n }\n\n private async handleError(response: Response, tokenError: boolean): Promise {\n if ((tokenError && response.status === 400) || response.status === 401 || response.status === 403) {\n await this.logoutCallback(true);\n return null;\n }\n\n let responseJson: any = null;\n if (this.isJsonResponse(response)) {\n responseJson = await response.json();\n }\n\n return new ErrorResponse(responseJson, response.status, tokenError);\n }\n\n private async doRefreshToken(): Promise {\n const refreshToken = await this.tokenService.getRefreshToken();\n if (refreshToken == null || refreshToken === '') {\n throw new Error();\n }\n const headers = new Headers({\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n 'Accept': 'application/json',\n 'Device-Type': this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set('User-Agent', this.customUserAgent);\n }\n\n const decodedToken = this.tokenService.decodeToken();\n const response = await this.fetch(new Request(this.identityBaseUrl + '/connect/token', {\n body: this.qsStringify({\n grant_type: 'refresh_token',\n client_id: decodedToken.client_id,\n refresh_token: refreshToken,\n }),\n cache: 'no-store',\n credentials: this.getCredentials(),\n headers: headers,\n method: 'POST',\n }));\n\n if (response.status === 200) {\n const responseJson = await response.json();\n const tokenResponse = new IdentityTokenResponse(responseJson);\n await this.tokenService.setTokens(tokenResponse.accessToken, tokenResponse.refreshToken);\n return tokenResponse;\n } else {\n const error = await this.handleError(response, true);\n return Promise.reject(error);\n }\n }\n\n private qsStringify(params: any): string {\n return Object.keys(params).map((key) => {\n return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);\n }).join('&');\n }\n\n private getCredentials(): RequestCredentials {\n if (this.device !== DeviceType.SafariExtension && (!this.isWebClient || this.usingBaseUrl)) {\n return 'include';\n }\n return undefined;\n }\n\n private addEventParameters(base: string, start: string, end: string, token: string) {\n if (start != null) {\n base += ('?start=' + start);\n }\n if (end != null) {\n base += (base.indexOf('?') > -1 ? '&' : '?');\n base += ('end=' + end);\n }\n if (token != null) {\n base += (base.indexOf('?') > -1 ? '&' : '?');\n base += ('continuationToken=' + token);\n }\n return base;\n }\n\n private isJsonResponse(response: Response): boolean {\n const typeHeader = response.headers.get('content-type');\n return typeHeader != null && typeHeader.indexOf('application/json') > -1;\n }\n}\n","import { AttachmentResponse } from './attachmentResponse';\nimport { BaseResponse } from './baseResponse';\nimport { PasswordHistoryResponse } from './passwordHistoryResponse';\n\nimport { CardApi } from '../api/cardApi';\nimport { FieldApi } from '../api/fieldApi';\nimport { IdentityApi } from '../api/identityApi';\nimport { LoginApi } from '../api/loginApi';\nimport { SecureNoteApi } from '../api/secureNoteApi';\n\nexport class CipherResponse extends BaseResponse {\n id: string;\n organizationId: string;\n folderId: string;\n type: number;\n name: string;\n notes: string;\n fields: FieldApi[];\n login: LoginApi;\n card: CardApi;\n identity: IdentityApi;\n secureNote: SecureNoteApi;\n favorite: boolean;\n edit: boolean;\n organizationUseTotp: boolean;\n revisionDate: string;\n attachments: AttachmentResponse[];\n passwordHistory: PasswordHistoryResponse[];\n collectionIds: string[];\n deletedDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.folderId = this.getResponseProperty('FolderId') || null;\n this.type = this.getResponseProperty('Type');\n this.name = this.getResponseProperty('Name');\n this.notes = this.getResponseProperty('Notes');\n this.favorite = this.getResponseProperty('Favorite') || false;\n this.edit = this.getResponseProperty('Edit') || true;\n this.organizationUseTotp = this.getResponseProperty('OrganizationUseTotp');\n this.revisionDate = this.getResponseProperty('RevisionDate');\n this.collectionIds = this.getResponseProperty('CollectionIds');\n this.deletedDate = this.getResponseProperty('DeletedDate');\n\n const login = this.getResponseProperty('Login');\n if (login != null) {\n this.login = new LoginApi(login);\n }\n\n const card = this.getResponseProperty('Card');\n if (card != null) {\n this.card = new CardApi(card);\n }\n\n const identity = this.getResponseProperty('Identity');\n if (identity != null) {\n this.identity = new IdentityApi(identity);\n }\n\n const secureNote = this.getResponseProperty('SecureNote');\n if (secureNote != null) {\n this.secureNote = new SecureNoteApi(secureNote);\n }\n\n const fields = this.getResponseProperty('Fields');\n if (fields != null) {\n this.fields = fields.map((f: any) => new FieldApi(f));\n }\n\n const attachments = this.getResponseProperty('Attachments');\n if (attachments != null) {\n this.attachments = attachments.map((a: any) => new AttachmentResponse(a));\n }\n\n const passwordHistory = this.getResponseProperty('PasswordHistory');\n if (passwordHistory != null) {\n this.passwordHistory = passwordHistory.map((h: any) => new PasswordHistoryResponse(h));\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { SelectionReadOnlyResponse } from './selectionReadOnlyResponse';\n\nexport class CollectionResponse extends BaseResponse {\n id: string;\n organizationId: string;\n name: string;\n externalId: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.name = this.getResponseProperty('Name');\n this.externalId = this.getResponseProperty('ExternalId');\n }\n}\n\nexport class CollectionDetailsResponse extends CollectionResponse {\n readOnly: boolean;\n\n constructor(response: any) {\n super(response);\n this.readOnly = this.getResponseProperty('ReadOnly') || false;\n }\n}\n\nexport class CollectionGroupDetailsResponse extends CollectionResponse {\n groups: SelectionReadOnlyResponse[] = [];\n\n constructor(response: any) {\n super(response);\n const groups = this.getResponseProperty('Groups');\n if (groups != null) {\n this.groups = groups.map((g: any) => new SelectionReadOnlyResponse(g));\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { GlobalDomainResponse } from './globalDomainResponse';\n\nexport class DomainsResponse extends BaseResponse {\n equivalentDomains: string[][];\n globalEquivalentDomains: GlobalDomainResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.equivalentDomains = this.getResponseProperty('EquivalentDomains');\n const globalEquivalentDomains = this.getResponseProperty('GlobalEquivalentDomains');\n if (globalEquivalentDomains != null) {\n this.globalEquivalentDomains = globalEquivalentDomains.map((d: any) => new GlobalDomainResponse(d));\n } else {\n this.globalEquivalentDomains = [];\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class FolderResponse extends BaseResponse {\n id: string;\n name: string;\n revisionDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.name = this.getResponseProperty('Name');\n this.revisionDate = this.getResponseProperty('RevisionDate');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { PlanType } from '../../enums/planType';\n\nexport class OrganizationResponse extends BaseResponse {\n id: string;\n name: string;\n businessName: string;\n businessAddress1: string;\n businessAddress2: string;\n businessAddress3: string;\n businessCountry: string;\n businessTaxNumber: string;\n billingEmail: string;\n plan: string;\n planType: PlanType;\n seats: number;\n maxCollections: number;\n maxStorageGb: number;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.name = this.getResponseProperty('Name');\n this.businessName = this.getResponseProperty('BusinessName');\n this.businessAddress1 = this.getResponseProperty('BusinessAddress1');\n this.businessAddress2 = this.getResponseProperty('BusinessAddress2');\n this.businessAddress3 = this.getResponseProperty('BusinessAddress3');\n this.businessCountry = this.getResponseProperty('BusinessCountry');\n this.businessTaxNumber = this.getResponseProperty('BusinessTaxNumber');\n this.billingEmail = this.getResponseProperty('BillingEmail');\n this.plan = this.getResponseProperty('Plan');\n this.planType = this.getResponseProperty('PlanType');\n this.seats = this.getResponseProperty('Seats');\n this.maxCollections = this.getResponseProperty('MaxCollections');\n this.maxStorageGb = this.getResponseProperty('MaxStorageGb');\n this.useGroups = this.getResponseProperty('UseGroups');\n this.useDirectory = this.getResponseProperty('UseDirectory');\n this.useEvents = this.getResponseProperty('UseEvents');\n this.useTotp = this.getResponseProperty('UseTotp');\n this.use2fa = this.getResponseProperty('Use2fa');\n this.useApi = this.getResponseProperty('UseApi');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class SubscriptionResponse extends BaseResponse {\n storageName: string;\n storageGb: number;\n maxStorageGb: number;\n subscription: BillingSubscriptionResponse;\n upcomingInvoice: BillingSubscriptionUpcomingInvoiceResponse;\n license: any;\n expiration: string;\n usingInAppPurchase: boolean;\n\n constructor(response: any) {\n super(response);\n this.storageName = this.getResponseProperty('StorageName');\n this.storageGb = this.getResponseProperty('StorageGb');\n this.maxStorageGb = this.getResponseProperty('MaxStorageGb');\n this.license = this.getResponseProperty('License');\n this.expiration = this.getResponseProperty('Expiration');\n this.usingInAppPurchase = this.getResponseProperty('UsingInAppPurchase');\n const subscription = this.getResponseProperty('Subscription');\n const upcomingInvoice = this.getResponseProperty('UpcomingInvoice');\n this.subscription = subscription == null ? null : new BillingSubscriptionResponse(subscription);\n this.upcomingInvoice = upcomingInvoice == null ? null :\n new BillingSubscriptionUpcomingInvoiceResponse(upcomingInvoice);\n }\n}\n\nexport class BillingSubscriptionResponse extends BaseResponse {\n trialStartDate: string;\n trialEndDate: string;\n periodStartDate: string;\n periodEndDate: string;\n cancelledDate: string;\n cancelAtEndDate: boolean;\n status: string;\n cancelled: boolean;\n items: BillingSubscriptionItemResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.trialEndDate = this.getResponseProperty('TrialStartDate');\n this.trialEndDate = this.getResponseProperty('TrialEndDate');\n this.periodStartDate = this.getResponseProperty('PeriodStartDate');\n this.periodEndDate = this.getResponseProperty('PeriodEndDate');\n this.cancelledDate = this.getResponseProperty('CancelledDate');\n this.cancelAtEndDate = this.getResponseProperty('CancelAtEndDate');\n this.status = this.getResponseProperty('Status');\n this.cancelled = this.getResponseProperty('Cancelled');\n const items = this.getResponseProperty('Items');\n if (items != null) {\n this.items = items.map((i: any) => new BillingSubscriptionItemResponse(i));\n }\n }\n}\n\nexport class BillingSubscriptionItemResponse extends BaseResponse {\n name: string;\n amount: number;\n quantity: number;\n interval: string;\n\n constructor(response: any) {\n super(response);\n this.name = this.getResponseProperty('Name');\n this.amount = this.getResponseProperty('Amount');\n this.quantity = this.getResponseProperty('Quantity');\n this.interval = this.getResponseProperty('Interval');\n }\n}\n\nexport class BillingSubscriptionUpcomingInvoiceResponse extends BaseResponse {\n date: string;\n amount: number;\n\n constructor(response: any) {\n super(response);\n this.date = this.getResponseProperty('Date');\n this.amount = this.getResponseProperty('Amount');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { PolicyType } from '../../enums/policyType';\n\nexport class PolicyResponse extends BaseResponse {\n id: string;\n organizationId: string;\n type: PolicyType;\n data: any;\n enabled: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.type = this.getResponseProperty('Type');\n this.data = this.getResponseProperty('Data');\n this.enabled = this.getResponseProperty('Enabled');\n }\n}\n","import { Utils } from '../misc/utils';\n\nimport { AppIdService as AppIdServiceAbstraction } from '../abstractions/appId.service';\nimport { StorageService } from '../abstractions/storage.service';\n\nexport class AppIdService implements AppIdServiceAbstraction {\n constructor(private storageService: StorageService) {\n }\n\n getAppId(): Promise {\n return this.makeAndGetAppId('appId');\n }\n\n getAnonymousAppId(): Promise {\n return this.makeAndGetAppId('anonymousAppId');\n }\n\n private async makeAndGetAppId(key: string) {\n const existingId = await this.storageService.get(key);\n if (existingId != null) {\n return existingId;\n }\n\n const guid = Utils.newGuid();\n await this.storageService.save(key, guid);\n return guid;\n }\n}\n","import { ApiService } from '../abstractions/api.service';\nimport { AuditService as AuditServiceAbstraction } from '../abstractions/audit.service';\nimport { CryptoFunctionService } from '../abstractions/cryptoFunction.service';\n\nimport { throttle } from '../misc/throttle';\nimport { Utils } from '../misc/utils';\n\nimport { BreachAccountResponse } from '../models/response/breachAccountResponse';\nimport { ErrorResponse } from '../models/response/errorResponse';\n\nconst PwnedPasswordsApi = 'https://api.pwnedpasswords.com/range/';\n\nexport class AuditService implements AuditServiceAbstraction {\n constructor(private cryptoFunctionService: CryptoFunctionService, private apiService: ApiService) { }\n\n @throttle(100, () => 'passwordLeaked')\n async passwordLeaked(password: string): Promise {\n const hashBytes = await this.cryptoFunctionService.hash(password, 'sha1');\n const hash = Utils.fromBufferToHex(hashBytes).toUpperCase();\n const hashStart = hash.substr(0, 5);\n const hashEnding = hash.substr(5);\n\n const response = await this.apiService.nativeFetch(new Request(PwnedPasswordsApi + hashStart));\n const leakedHashes = await response.text();\n const match = leakedHashes.split(/\\r?\\n/).find((v) => {\n return v.split(':')[0] === hashEnding;\n });\n\n return match != null ? parseInt(match.split(':')[1], 10) : 0;\n }\n\n async breachedAccounts(username: string): Promise {\n try {\n return await this.apiService.getHibpBreach(username);\n } catch (e) {\n const error = e as ErrorResponse;\n if (error.statusCode === 404) {\n return [];\n }\n throw new Error();\n }\n }\n}\n","import { CipherType } from '../enums/cipherType';\nimport { FieldType } from '../enums/fieldType';\nimport { UriMatchType } from '../enums/uriMatchType';\n\nimport { CipherData } from '../models/data/cipherData';\n\nimport { Attachment } from '../models/domain/attachment';\nimport { Card } from '../models/domain/card';\nimport { Cipher } from '../models/domain/cipher';\nimport { CipherString } from '../models/domain/cipherString';\nimport Domain from '../models/domain/domainBase';\nimport { Field } from '../models/domain/field';\nimport { Identity } from '../models/domain/identity';\nimport { Login } from '../models/domain/login';\nimport { LoginUri } from '../models/domain/loginUri';\nimport { Password } from '../models/domain/password';\nimport { SecureNote } from '../models/domain/secureNote';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { CipherBulkDeleteRequest } from '../models/request/cipherBulkDeleteRequest';\nimport { CipherBulkMoveRequest } from '../models/request/cipherBulkMoveRequest';\nimport { CipherBulkRestoreRequest } from '../models/request/cipherBulkRestoreRequest';\nimport { CipherBulkShareRequest } from '../models/request/cipherBulkShareRequest';\nimport { CipherCollectionsRequest } from '../models/request/cipherCollectionsRequest';\nimport { CipherCreateRequest } from '../models/request/cipherCreateRequest';\nimport { CipherRequest } from '../models/request/cipherRequest';\nimport { CipherShareRequest } from '../models/request/cipherShareRequest';\n\nimport { CipherResponse } from '../models/response/cipherResponse';\nimport { ErrorResponse } from '../models/response/errorResponse';\n\nimport { AttachmentView } from '../models/view/attachmentView';\nimport { CipherView } from '../models/view/cipherView';\nimport { FieldView } from '../models/view/fieldView';\nimport { PasswordHistoryView } from '../models/view/passwordHistoryView';\nimport { View } from '../models/view/view';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { CipherService as CipherServiceAbstraction } from '../abstractions/cipher.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { SearchService } from '../abstractions/search.service';\nimport { SettingsService } from '../abstractions/settings.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { ConstantsService } from './constants.service';\n\nimport { sequentialize } from '../misc/sequentialize';\nimport { Utils } from '../misc/utils';\n\nconst Keys = {\n ciphersPrefix: 'ciphers_',\n localData: 'sitesLocalData',\n neverDomains: 'neverDomains',\n};\n\nconst DomainMatchBlacklist = new Map>([\n ['google.com', new Set(['script.google.com'])],\n]);\n\nexport class CipherService implements CipherServiceAbstraction {\n // tslint:disable-next-line\n _decryptedCipherCache: CipherView[];\n\n constructor(private cryptoService: CryptoService, private userService: UserService,\n private settingsService: SettingsService, private apiService: ApiService,\n private storageService: StorageService, private i18nService: I18nService,\n private searchService: () => SearchService) {\n }\n\n get decryptedCipherCache() {\n return this._decryptedCipherCache;\n }\n set decryptedCipherCache(value: CipherView[]) {\n this._decryptedCipherCache = value;\n if (this.searchService != null) {\n if (value == null) {\n this.searchService().clearIndex();\n } else {\n this.searchService().indexCiphers();\n }\n }\n }\n\n clearCache(): void {\n this.decryptedCipherCache = null;\n }\n\n async encrypt(model: CipherView, key?: SymmetricCryptoKey, originalCipher: Cipher = null): Promise {\n // Adjust password history\n if (model.id != null) {\n if (originalCipher == null) {\n originalCipher = await this.get(model.id);\n }\n if (originalCipher != null) {\n const existingCipher = await originalCipher.decrypt();\n model.passwordHistory = existingCipher.passwordHistory || [];\n if (model.type === CipherType.Login && existingCipher.type === CipherType.Login) {\n if (existingCipher.login.password != null && existingCipher.login.password !== '' &&\n existingCipher.login.password !== model.login.password) {\n const ph = new PasswordHistoryView();\n ph.password = existingCipher.login.password;\n ph.lastUsedDate = model.login.passwordRevisionDate = new Date();\n model.passwordHistory.splice(0, 0, ph);\n } else {\n model.login.passwordRevisionDate = existingCipher.login.passwordRevisionDate;\n }\n }\n if (existingCipher.hasFields) {\n const existingHiddenFields = existingCipher.fields.filter((f) => f.type === FieldType.Hidden &&\n f.name != null && f.name !== '' && f.value != null && f.value !== '');\n const hiddenFields = model.fields == null ? [] :\n model.fields.filter((f) => f.type === FieldType.Hidden && f.name != null && f.name !== '');\n existingHiddenFields.forEach((ef) => {\n const matchedField = hiddenFields.find((f) => f.name === ef.name);\n if (matchedField == null || matchedField.value !== ef.value) {\n const ph = new PasswordHistoryView();\n ph.password = ef.name + ': ' + ef.value;\n ph.lastUsedDate = new Date();\n model.passwordHistory.splice(0, 0, ph);\n }\n });\n }\n }\n if (model.passwordHistory != null && model.passwordHistory.length === 0) {\n model.passwordHistory = null;\n } else if (model.passwordHistory != null && model.passwordHistory.length > 5) {\n // only save last 5 history\n model.passwordHistory = model.passwordHistory.slice(0, 5);\n }\n }\n\n const cipher = new Cipher();\n cipher.id = model.id;\n cipher.folderId = model.folderId;\n cipher.favorite = model.favorite;\n cipher.organizationId = model.organizationId;\n cipher.type = model.type;\n cipher.collectionIds = model.collectionIds;\n\n if (key == null && cipher.organizationId != null) {\n key = await this.cryptoService.getOrgKey(cipher.organizationId);\n if (key == null) {\n throw new Error('Cannot encrypt cipher for organization. No key.');\n }\n }\n await Promise.all([\n this.encryptObjProperty(model, cipher, {\n name: null,\n notes: null,\n }, key),\n this.encryptCipherData(cipher, model, key),\n this.encryptFields(model.fields, key).then((fields) => {\n cipher.fields = fields;\n }),\n this.encryptPasswordHistories(model.passwordHistory, key).then((ph) => {\n cipher.passwordHistory = ph;\n }),\n this.encryptAttachments(model.attachments, key).then((attachments) => {\n cipher.attachments = attachments;\n }),\n ]);\n\n return cipher;\n }\n\n async encryptAttachments(attachmentsModel: AttachmentView[], key: SymmetricCryptoKey): Promise {\n if (attachmentsModel == null || attachmentsModel.length === 0) {\n return null;\n }\n\n const promises: Array> = [];\n const encAttachments: Attachment[] = [];\n attachmentsModel.forEach(async (model) => {\n const attachment = new Attachment();\n attachment.id = model.id;\n attachment.size = model.size;\n attachment.sizeName = model.sizeName;\n attachment.url = model.url;\n const promise = this.encryptObjProperty(model, attachment, {\n fileName: null,\n }, key).then(async () => {\n if (model.key != null) {\n attachment.key = await this.cryptoService.encrypt(model.key.key, key);\n }\n encAttachments.push(attachment);\n });\n promises.push(promise);\n });\n\n await Promise.all(promises);\n return encAttachments;\n }\n\n async encryptFields(fieldsModel: FieldView[], key: SymmetricCryptoKey): Promise {\n if (!fieldsModel || !fieldsModel.length) {\n return null;\n }\n\n const self = this;\n const encFields: Field[] = [];\n await fieldsModel.reduce((promise, field) => {\n return promise.then(() => {\n return self.encryptField(field, key);\n }).then((encField: Field) => {\n encFields.push(encField);\n });\n }, Promise.resolve());\n\n return encFields;\n }\n\n async encryptField(fieldModel: FieldView, key: SymmetricCryptoKey): Promise {\n const field = new Field();\n field.type = fieldModel.type;\n // normalize boolean type field values\n if (fieldModel.type === FieldType.Boolean && fieldModel.value !== 'true') {\n fieldModel.value = 'false';\n }\n\n await this.encryptObjProperty(fieldModel, field, {\n name: null,\n value: null,\n }, key);\n\n return field;\n }\n\n async encryptPasswordHistories(phModels: PasswordHistoryView[], key: SymmetricCryptoKey): Promise {\n if (!phModels || !phModels.length) {\n return null;\n }\n\n const self = this;\n const encPhs: Password[] = [];\n await phModels.reduce((promise, ph) => {\n return promise.then(() => {\n return self.encryptPasswordHistory(ph, key);\n }).then((encPh: Password) => {\n encPhs.push(encPh);\n });\n }, Promise.resolve());\n\n return encPhs;\n }\n\n async encryptPasswordHistory(phModel: PasswordHistoryView, key: SymmetricCryptoKey): Promise {\n const ph = new Password();\n ph.lastUsedDate = phModel.lastUsedDate;\n\n await this.encryptObjProperty(phModel, ph, {\n password: null,\n }, key);\n\n return ph;\n }\n\n async get(id: string): Promise {\n const userId = await this.userService.getUserId();\n const localData = await this.storageService.get(Keys.localData);\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null || !ciphers.hasOwnProperty(id)) {\n return null;\n }\n\n return new Cipher(ciphers[id], false, localData ? localData[id] : null);\n }\n\n async getAll(): Promise {\n const userId = await this.userService.getUserId();\n const localData = await this.storageService.get(Keys.localData);\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n const response: Cipher[] = [];\n for (const id in ciphers) {\n if (ciphers.hasOwnProperty(id)) {\n response.push(new Cipher(ciphers[id], false, localData ? localData[id] : null));\n }\n }\n return response;\n }\n\n @sequentialize(() => 'getAllDecrypted')\n async getAllDecrypted(): Promise {\n if (this.decryptedCipherCache != null) {\n return this.decryptedCipherCache;\n }\n\n const decCiphers: CipherView[] = [];\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error('No key.');\n }\n\n const promises: any[] = [];\n const ciphers = await this.getAll();\n ciphers.forEach((cipher) => {\n promises.push(cipher.decrypt().then((c) => decCiphers.push(c)));\n });\n\n await Promise.all(promises);\n decCiphers.sort(this.getLocaleSortingFunction());\n this.decryptedCipherCache = decCiphers;\n return this.decryptedCipherCache;\n }\n\n async getAllDecryptedForGrouping(groupingId: string, folder: boolean = true): Promise {\n const ciphers = await this.getAllDecrypted();\n\n return ciphers.filter((cipher) => {\n if (cipher.isDeleted) {\n return false;\n }\n if (folder && cipher.folderId === groupingId) {\n return true;\n } else if (!folder && cipher.collectionIds != null && cipher.collectionIds.indexOf(groupingId) > -1) {\n return true;\n }\n\n return false;\n });\n }\n\n async getAllDecryptedForUrl(url: string, includeOtherTypes?: CipherType[]): Promise {\n if (url == null && includeOtherTypes == null) {\n return Promise.resolve([]);\n }\n\n const domain = Utils.getDomain(url);\n const eqDomainsPromise = domain == null ? Promise.resolve([]) :\n this.settingsService.getEquivalentDomains().then((eqDomains: any[][]) => {\n let matches: any[] = [];\n eqDomains.forEach((eqDomain) => {\n if (eqDomain.length && eqDomain.indexOf(domain) >= 0) {\n matches = matches.concat(eqDomain);\n }\n });\n\n if (!matches.length) {\n matches.push(domain);\n }\n\n return matches;\n });\n\n const result = await Promise.all([eqDomainsPromise, this.getAllDecrypted()]);\n const matchingDomains = result[0];\n const ciphers = result[1];\n\n let defaultMatch = await this.storageService.get(ConstantsService.defaultUriMatch);\n if (defaultMatch == null) {\n defaultMatch = UriMatchType.Domain;\n }\n\n return ciphers.filter((cipher) => {\n if (cipher.deletedDate != null) {\n return false;\n }\n if (includeOtherTypes != null && includeOtherTypes.indexOf(cipher.type) > -1) {\n return true;\n }\n\n if (url != null && cipher.type === CipherType.Login && cipher.login.uris != null) {\n for (let i = 0; i < cipher.login.uris.length; i++) {\n const u = cipher.login.uris[i];\n if (u.uri == null) {\n continue;\n }\n\n const match = u.match == null ? defaultMatch : u.match;\n switch (match) {\n case UriMatchType.Domain:\n if (domain != null && u.domain != null && matchingDomains.indexOf(u.domain) > -1) {\n if (DomainMatchBlacklist.has(u.domain)) {\n const domainUrlHost = Utils.getHost(url);\n if (!DomainMatchBlacklist.get(u.domain).has(domainUrlHost)) {\n return true;\n }\n } else {\n return true;\n }\n }\n break;\n case UriMatchType.Host:\n const urlHost = Utils.getHost(url);\n if (urlHost != null && urlHost === Utils.getHost(u.uri)) {\n return true;\n }\n break;\n case UriMatchType.Exact:\n if (url === u.uri) {\n return true;\n }\n break;\n case UriMatchType.StartsWith:\n if (url.startsWith(u.uri)) {\n return true;\n }\n break;\n case UriMatchType.RegularExpression:\n try {\n const regex = new RegExp(u.uri, 'i');\n if (regex.test(url)) {\n return true;\n }\n } catch { }\n break;\n case UriMatchType.Never:\n default:\n break;\n }\n }\n }\n\n return false;\n });\n }\n\n async getAllFromApiForOrganization(organizationId: string): Promise {\n const ciphers = await this.apiService.getCiphersOrganization(organizationId);\n if (ciphers != null && ciphers.data != null && ciphers.data.length) {\n const decCiphers: CipherView[] = [];\n const promises: any[] = [];\n ciphers.data.forEach((r) => {\n const data = new CipherData(r);\n const cipher = new Cipher(data);\n promises.push(cipher.decrypt().then((c) => decCiphers.push(c)));\n });\n await Promise.all(promises);\n decCiphers.sort(this.getLocaleSortingFunction());\n return decCiphers;\n } else {\n return [];\n }\n }\n\n async getLastUsedForUrl(url: string): Promise {\n const ciphers = await this.getAllDecryptedForUrl(url);\n if (ciphers.length === 0) {\n return null;\n }\n\n const sortedCiphers = ciphers.sort(this.sortCiphersByLastUsed);\n return sortedCiphers[0];\n }\n\n async updateLastUsedDate(id: string): Promise {\n let ciphersLocalData = await this.storageService.get(Keys.localData);\n if (!ciphersLocalData) {\n ciphersLocalData = {};\n }\n\n if (ciphersLocalData[id]) {\n ciphersLocalData[id].lastUsedDate = new Date().getTime();\n } else {\n ciphersLocalData[id] = {\n lastUsedDate: new Date().getTime(),\n };\n }\n\n await this.storageService.save(Keys.localData, ciphersLocalData);\n\n if (this.decryptedCipherCache == null) {\n return;\n }\n\n for (let i = 0; i < this.decryptedCipherCache.length; i++) {\n const cached = this.decryptedCipherCache[i];\n if (cached.id === id) {\n cached.localData = ciphersLocalData[id];\n break;\n }\n }\n }\n\n async saveNeverDomain(domain: string): Promise {\n if (domain == null) {\n return;\n }\n\n let domains = await this.storageService.get<{ [id: string]: any; }>(Keys.neverDomains);\n if (!domains) {\n domains = {};\n }\n domains[domain] = null;\n await this.storageService.save(Keys.neverDomains, domains);\n }\n\n async saveWithServer(cipher: Cipher): Promise {\n let response: CipherResponse;\n if (cipher.id == null) {\n if (cipher.collectionIds != null) {\n const request = new CipherCreateRequest(cipher);\n response = await this.apiService.postCipherCreate(request);\n } else {\n const request = new CipherRequest(cipher);\n response = await this.apiService.postCipher(request);\n }\n cipher.id = response.id;\n } else {\n const request = new CipherRequest(cipher);\n response = await this.apiService.putCipher(cipher.id, request);\n }\n\n const userId = await this.userService.getUserId();\n const data = new CipherData(response, userId, cipher.collectionIds);\n await this.upsert(data);\n }\n\n async shareWithServer(cipher: CipherView, organizationId: string, collectionIds: string[]): Promise {\n const attachmentPromises: Array> = [];\n if (cipher.attachments != null) {\n cipher.attachments.forEach((attachment) => {\n if (attachment.key == null) {\n attachmentPromises.push(this.shareAttachmentWithServer(attachment, cipher.id, organizationId));\n }\n });\n }\n await Promise.all(attachmentPromises);\n\n cipher.organizationId = organizationId;\n cipher.collectionIds = collectionIds;\n const encCipher = await this.encrypt(cipher);\n const request = new CipherShareRequest(encCipher);\n const response = await this.apiService.putShareCipher(cipher.id, request);\n const userId = await this.userService.getUserId();\n const data = new CipherData(response, userId, collectionIds);\n await this.upsert(data);\n }\n\n async shareManyWithServer(ciphers: CipherView[], organizationId: string, collectionIds: string[]): Promise {\n const promises: Array> = [];\n const encCiphers: Cipher[] = [];\n for (const cipher of ciphers) {\n cipher.organizationId = organizationId;\n cipher.collectionIds = collectionIds;\n promises.push(this.encrypt(cipher).then((c) => {\n encCiphers.push(c);\n }));\n }\n await Promise.all(promises);\n const request = new CipherBulkShareRequest(encCiphers, collectionIds);\n await this.apiService.putShareCiphers(request);\n const userId = await this.userService.getUserId();\n await this.upsert(encCiphers.map((c) => c.toCipherData(userId)));\n }\n\n saveAttachmentWithServer(cipher: Cipher, unencryptedFile: any, admin = false): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsArrayBuffer(unencryptedFile);\n reader.onload = async (evt: any) => {\n try {\n const cData = await this.saveAttachmentRawWithServer(cipher,\n unencryptedFile.name, evt.target.result, admin);\n resolve(cData);\n } catch (e) {\n reject(e);\n }\n };\n reader.onerror = (evt) => {\n reject('Error reading file.');\n };\n });\n }\n\n async saveAttachmentRawWithServer(cipher: Cipher, filename: string,\n data: ArrayBuffer, admin = false): Promise {\n const key = await this.cryptoService.getOrgKey(cipher.organizationId);\n const encFileName = await this.cryptoService.encrypt(filename, key);\n\n const dataEncKey = await this.cryptoService.makeEncKey(key);\n const encData = await this.cryptoService.encryptToBytes(data, dataEncKey[0]);\n\n const fd = new FormData();\n try {\n const blob = new Blob([encData], { type: 'application/octet-stream' });\n fd.append('key', dataEncKey[1].encryptedString);\n fd.append('data', blob, encFileName.encryptedString);\n } catch (e) {\n if (Utils.isNode && !Utils.isBrowser) {\n fd.append('key', dataEncKey[1].encryptedString);\n fd.append('data', Buffer.from(encData) as any, {\n filepath: encFileName.encryptedString,\n contentType: 'application/octet-stream',\n } as any);\n } else {\n throw e;\n }\n }\n\n let response: CipherResponse;\n try {\n if (admin) {\n response = await this.apiService.postCipherAttachmentAdmin(cipher.id, fd);\n } else {\n response = await this.apiService.postCipherAttachment(cipher.id, fd);\n }\n } catch (e) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n }\n\n const userId = await this.userService.getUserId();\n const cData = new CipherData(response, userId, cipher.collectionIds);\n if (!admin) {\n await this.upsert(cData);\n }\n return new Cipher(cData);\n }\n\n async saveCollectionsWithServer(cipher: Cipher): Promise {\n const request = new CipherCollectionsRequest(cipher.collectionIds);\n await this.apiService.putCipherCollections(cipher.id, request);\n const userId = await this.userService.getUserId();\n const data = cipher.toCipherData(userId);\n await this.upsert(data);\n }\n\n async upsert(cipher: CipherData | CipherData[]): Promise {\n const userId = await this.userService.getUserId();\n let ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null) {\n ciphers = {};\n }\n\n if (cipher instanceof CipherData) {\n const c = cipher as CipherData;\n ciphers[c.id] = c;\n } else {\n (cipher as CipherData[]).forEach((c) => {\n ciphers[c.id] = c;\n });\n }\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async replace(ciphers: { [id: string]: CipherData; }): Promise {\n const userId = await this.userService.getUserId();\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.ciphersPrefix + userId);\n this.clearCache();\n }\n\n async moveManyWithServer(ids: string[], folderId: string): Promise {\n await this.apiService.putMoveCiphers(new CipherBulkMoveRequest(ids, folderId));\n\n const userId = await this.userService.getUserId();\n let ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null) {\n ciphers = {};\n }\n\n ids.forEach((id) => {\n if (ciphers.hasOwnProperty(id)) {\n ciphers[id].folderId = folderId;\n }\n });\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async delete(id: string | string[]): Promise {\n const userId = await this.userService.getUserId();\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null) {\n return;\n }\n\n if (typeof id === 'string') {\n if (ciphers[id] == null) {\n return;\n }\n delete ciphers[id];\n } else {\n (id as string[]).forEach((i) => {\n delete ciphers[i];\n });\n }\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async deleteWithServer(id: string): Promise {\n await this.apiService.deleteCipher(id);\n await this.delete(id);\n }\n\n async deleteManyWithServer(ids: string[]): Promise {\n await this.apiService.deleteManyCiphers(new CipherBulkDeleteRequest(ids));\n await this.delete(ids);\n }\n\n async deleteAttachment(id: string, attachmentId: string): Promise {\n const userId = await this.userService.getUserId();\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n\n if (ciphers == null || !ciphers.hasOwnProperty(id) || ciphers[id].attachments == null) {\n return;\n }\n\n for (let i = 0; i < ciphers[id].attachments.length; i++) {\n if (ciphers[id].attachments[i].id === attachmentId) {\n ciphers[id].attachments.splice(i, 1);\n }\n }\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async deleteAttachmentWithServer(id: string, attachmentId: string): Promise {\n try {\n await this.apiService.deleteCipherAttachment(id, attachmentId);\n } catch (e) {\n return Promise.reject((e as ErrorResponse).getSingleMessage());\n }\n await this.deleteAttachment(id, attachmentId);\n }\n\n sortCiphersByLastUsed(a: CipherView, b: CipherView): number {\n const aLastUsed = a.localData && a.localData.lastUsedDate ? a.localData.lastUsedDate as number : null;\n const bLastUsed = b.localData && b.localData.lastUsedDate ? b.localData.lastUsedDate as number : null;\n\n const bothNotNull = aLastUsed != null && bLastUsed != null;\n if (bothNotNull && aLastUsed < bLastUsed) {\n return 1;\n }\n if (aLastUsed != null && bLastUsed == null) {\n return -1;\n }\n\n if (bothNotNull && aLastUsed > bLastUsed) {\n return -1;\n }\n if (bLastUsed != null && aLastUsed == null) {\n return 1;\n }\n\n return 0;\n }\n\n sortCiphersByLastUsedThenName(a: CipherView, b: CipherView): number {\n const result = this.sortCiphersByLastUsed(a, b);\n if (result !== 0) {\n return result;\n }\n\n return this.getLocaleSortingFunction()(a, b);\n }\n\n getLocaleSortingFunction(): (a: CipherView, b: CipherView) => number {\n return (a, b) => {\n let aName = a.name;\n let bName = b.name;\n\n if (aName == null && bName != null) {\n return -1;\n }\n if (aName != null && bName == null) {\n return 1;\n }\n if (aName == null && bName == null) {\n return 0;\n }\n\n const result = this.i18nService.collator ? this.i18nService.collator.compare(aName, bName) :\n aName.localeCompare(bName);\n\n if (result !== 0 || a.type !== CipherType.Login || b.type !== CipherType.Login) {\n return result;\n }\n\n if (a.login.username != null) {\n aName += a.login.username;\n }\n\n if (b.login.username != null) {\n bName += b.login.username;\n }\n\n return this.i18nService.collator ? this.i18nService.collator.compare(aName, bName) :\n aName.localeCompare(bName);\n };\n }\n\n async softDelete(id: string | string[]): Promise {\n const userId = await this.userService.getUserId();\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null) {\n return;\n }\n\n const setDeletedDate = (cipherId: string) => {\n if (ciphers[cipherId] == null) {\n return;\n }\n ciphers[cipherId].deletedDate = new Date().toISOString();\n };\n\n if (typeof id === 'string') {\n setDeletedDate(id);\n } else {\n (id as string[]).forEach(setDeletedDate);\n }\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async softDeleteWithServer(id: string): Promise {\n await this.apiService.putDeleteCipher(id);\n await this.softDelete(id);\n }\n\n async softDeleteManyWithServer(ids: string[]): Promise {\n await this.apiService.putDeleteManyCiphers(new CipherBulkDeleteRequest(ids));\n await this.softDelete(ids);\n }\n\n async restore(id: string | string[]): Promise {\n const userId = await this.userService.getUserId();\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null) {\n return;\n }\n\n const clearDeletedDate = (cipherId: string) => {\n if (ciphers[cipherId] == null) {\n return;\n }\n ciphers[cipherId].deletedDate = null;\n };\n\n if (typeof id === 'string') {\n clearDeletedDate(id);\n } else {\n (id as string[]).forEach(clearDeletedDate);\n }\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async restoreWithServer(id: string): Promise {\n await this.apiService.putRestoreCipher(id);\n await this.restore(id);\n }\n\n async restoreManyWithServer(ids: string[]): Promise {\n await this.apiService.putRestoreManyCiphers(new CipherBulkRestoreRequest(ids));\n await this.restore(ids);\n }\n\n // Helpers\n\n private async shareAttachmentWithServer(attachmentView: AttachmentView, cipherId: string,\n organizationId: string): Promise {\n const attachmentResponse = await this.apiService.nativeFetch(\n new Request(attachmentView.url, { cache: 'no-store' }));\n if (attachmentResponse.status !== 200) {\n throw Error('Failed to download attachment: ' + attachmentResponse.status.toString());\n }\n\n const buf = await attachmentResponse.arrayBuffer();\n const decBuf = await this.cryptoService.decryptFromBytes(buf, null);\n const key = await this.cryptoService.getOrgKey(organizationId);\n const encFileName = await this.cryptoService.encrypt(attachmentView.fileName, key);\n\n const dataEncKey = await this.cryptoService.makeEncKey(key);\n const encData = await this.cryptoService.encryptToBytes(decBuf, dataEncKey[0]);\n\n const fd = new FormData();\n try {\n const blob = new Blob([encData], { type: 'application/octet-stream' });\n fd.append('key', dataEncKey[1].encryptedString);\n fd.append('data', blob, encFileName.encryptedString);\n } catch (e) {\n if (Utils.isNode && !Utils.isBrowser) {\n fd.append('key', dataEncKey[1].encryptedString);\n fd.append('data', Buffer.from(encData) as any, {\n filepath: encFileName.encryptedString,\n contentType: 'application/octet-stream',\n } as any);\n } else {\n throw e;\n }\n }\n\n try {\n await this.apiService.postShareCipherAttachment(cipherId, attachmentView.id, fd, organizationId);\n } catch (e) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n }\n }\n\n private async encryptObjProperty(model: V, obj: D,\n map: any, key: SymmetricCryptoKey): Promise {\n const promises = [];\n const self = this;\n\n for (const prop in map) {\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n // tslint:disable-next-line\n (function (theProp, theObj) {\n const p = Promise.resolve().then(() => {\n const modelProp = (model as any)[(map[theProp] || theProp)];\n if (modelProp && modelProp !== '') {\n return self.cryptoService.encrypt(modelProp, key);\n }\n return null;\n }).then((val: CipherString) => {\n (theObj as any)[theProp] = val;\n });\n promises.push(p);\n })(prop, obj);\n }\n\n await Promise.all(promises);\n }\n\n private async encryptCipherData(cipher: Cipher, model: CipherView, key: SymmetricCryptoKey) {\n switch (cipher.type) {\n case CipherType.Login:\n cipher.login = new Login();\n cipher.login.passwordRevisionDate = model.login.passwordRevisionDate;\n await this.encryptObjProperty(model.login, cipher.login, {\n username: null,\n password: null,\n totp: null,\n }, key);\n\n if (model.login.uris != null) {\n cipher.login.uris = [];\n for (let i = 0; i < model.login.uris.length; i++) {\n const loginUri = new LoginUri();\n loginUri.match = model.login.uris[i].match;\n await this.encryptObjProperty(model.login.uris[i], loginUri, {\n uri: null,\n }, key);\n cipher.login.uris.push(loginUri);\n }\n }\n return;\n case CipherType.SecureNote:\n cipher.secureNote = new SecureNote();\n cipher.secureNote.type = model.secureNote.type;\n return;\n case CipherType.Card:\n cipher.card = new Card();\n await this.encryptObjProperty(model.card, cipher.card, {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n }, key);\n return;\n case CipherType.Identity:\n cipher.identity = new Identity();\n await this.encryptObjProperty(model.identity, cipher.identity, {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n }, key);\n return;\n default:\n throw new Error('Unknown cipher type.');\n }\n }\n}\n","/**\n * Use as a Decorator on async functions, it will prevent multiple 'active' calls as the same time\n *\n * If a promise was returned from a previous call to this function, that hasn't yet resolved it will\n * be returned, instead of calling the original function again\n *\n * Results are not cached, once the promise has returned, the next call will result in a fresh call\n *\n * Read more at https://github.com/bitwarden/jslib/pull/7\n */\nexport function sequentialize(cacheKey: (args: any[]) => string) {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const originalMethod: () => Promise = descriptor.value;\n const caches = new Map>>();\n\n const getCache = (obj: any) => {\n let cache = caches.get(obj);\n if (cache != null) {\n return cache;\n }\n cache = new Map>();\n caches.set(obj, cache);\n return cache;\n };\n\n return {\n value: function(...args: any[]) {\n const cache = getCache(this);\n const argsCacheKey = cacheKey(args);\n let response = cache.get(argsCacheKey);\n if (response != null) {\n return response;\n }\n\n const onFinally = () => {\n cache.delete(argsCacheKey);\n if (cache.size === 0) {\n caches.delete(this);\n }\n };\n response = originalMethod.apply(this, args).then((val: any) => {\n onFinally();\n return val;\n }).catch((err: any) => {\n onFinally();\n throw err;\n });\n\n cache.set(argsCacheKey, response);\n return response;\n },\n };\n };\n}\n","import { CollectionData } from '../models/data/collectionData';\n\nimport { Collection } from '../models/domain/collection';\nimport { TreeNode } from '../models/domain/treeNode';\n\nimport { CollectionView } from '../models/view/collectionView';\n\nimport { CollectionService as CollectionServiceAbstraction } from '../abstractions/collection.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { ServiceUtils } from '../misc/serviceUtils';\nimport { Utils } from '../misc/utils';\n\nconst Keys = {\n collectionsPrefix: 'collections_',\n};\nconst NestingDelimiter = '/';\n\nexport class CollectionService implements CollectionServiceAbstraction {\n decryptedCollectionCache: CollectionView[];\n\n constructor(private cryptoService: CryptoService, private userService: UserService,\n private storageService: StorageService, private i18nService: I18nService) {\n }\n\n clearCache(): void {\n this.decryptedCollectionCache = null;\n }\n\n async encrypt(model: CollectionView): Promise {\n if (model.organizationId == null) {\n throw new Error('Collection has no organization id.');\n }\n const key = await this.cryptoService.getOrgKey(model.organizationId);\n if (key == null) {\n throw new Error('No key for this collection\\'s organization.');\n }\n const collection = new Collection();\n collection.id = model.id;\n collection.organizationId = model.organizationId;\n collection.readOnly = model.readOnly;\n collection.name = await this.cryptoService.encrypt(model.name, key);\n return collection;\n }\n\n async decryptMany(collections: Collection[]): Promise {\n if (collections == null) {\n return [];\n }\n const decCollections: CollectionView[] = [];\n const promises: Array> = [];\n collections.forEach((collection) => {\n promises.push(collection.decrypt().then((c) => decCollections.push(c)));\n });\n await Promise.all(promises);\n return decCollections.sort(Utils.getSortFunction(this.i18nService, 'name'));\n }\n\n async get(id: string): Promise {\n const userId = await this.userService.getUserId();\n const collections = await this.storageService.get<{ [id: string]: CollectionData; }>(\n Keys.collectionsPrefix + userId);\n if (collections == null || !collections.hasOwnProperty(id)) {\n return null;\n }\n\n return new Collection(collections[id]);\n }\n\n async getAll(): Promise {\n const userId = await this.userService.getUserId();\n const collections = await this.storageService.get<{ [id: string]: CollectionData; }>(\n Keys.collectionsPrefix + userId);\n const response: Collection[] = [];\n for (const id in collections) {\n if (collections.hasOwnProperty(id)) {\n response.push(new Collection(collections[id]));\n }\n }\n return response;\n }\n\n async getAllDecrypted(): Promise {\n if (this.decryptedCollectionCache != null) {\n return this.decryptedCollectionCache;\n }\n\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error('No key.');\n }\n\n const collections = await this.getAll();\n this.decryptedCollectionCache = await this.decryptMany(collections);\n return this.decryptedCollectionCache;\n }\n\n async getAllNested(collections: CollectionView[] = null): Promise>> {\n if (collections == null) {\n collections = await this.getAllDecrypted();\n }\n const nodes: Array> = [];\n collections.forEach((c) => {\n const collectionCopy = new CollectionView();\n collectionCopy.id = c.id;\n collectionCopy.organizationId = c.organizationId;\n const parts = c.name != null ? c.name.replace(/^\\/+|\\/+$/g, '').split(NestingDelimiter) : [];\n ServiceUtils.nestedTraverse(nodes, 0, parts, collectionCopy, null, NestingDelimiter);\n });\n return nodes;\n }\n\n async getNested(id: string): Promise> {\n const collections = await this.getAllNested();\n return ServiceUtils.getTreeNodeObject(collections, id) as TreeNode;\n }\n\n async upsert(collection: CollectionData | CollectionData[]): Promise {\n const userId = await this.userService.getUserId();\n let collections = await this.storageService.get<{ [id: string]: CollectionData; }>(\n Keys.collectionsPrefix + userId);\n if (collections == null) {\n collections = {};\n }\n\n if (collection instanceof CollectionData) {\n const c = collection as CollectionData;\n collections[c.id] = c;\n } else {\n (collection as CollectionData[]).forEach((c) => {\n collections[c.id] = c;\n });\n }\n\n await this.storageService.save(Keys.collectionsPrefix + userId, collections);\n this.decryptedCollectionCache = null;\n }\n\n async replace(collections: { [id: string]: CollectionData; }): Promise {\n const userId = await this.userService.getUserId();\n await this.storageService.save(Keys.collectionsPrefix + userId, collections);\n this.decryptedCollectionCache = null;\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.collectionsPrefix + userId);\n this.decryptedCollectionCache = null;\n }\n\n async delete(id: string | string[]): Promise {\n const userId = await this.userService.getUserId();\n const collections = await this.storageService.get<{ [id: string]: CollectionData; }>(\n Keys.collectionsPrefix + userId);\n if (collections == null) {\n return;\n }\n\n if (typeof id === 'string') {\n const i = id as string;\n delete collections[id];\n } else {\n (id as string[]).forEach((i) => {\n delete collections[i];\n });\n }\n\n await this.storageService.save(Keys.collectionsPrefix + userId, collections);\n this.decryptedCollectionCache = null;\n }\n}\n","import {\n ITreeNodeObject,\n TreeNode,\n} from '../models/domain/treeNode';\n\nexport class ServiceUtils {\n static nestedTraverse(nodeTree: Array>, partIndex: number, parts: string[],\n obj: ITreeNodeObject, parent: ITreeNodeObject, delimiter: string) {\n if (parts.length <= partIndex) {\n return;\n }\n\n const end = partIndex === parts.length - 1;\n const partName = parts[partIndex];\n\n for (let i = 0; i < nodeTree.length; i++) {\n if (nodeTree[i].node.name !== parts[partIndex]) {\n continue;\n }\n if (end && nodeTree[i].node.id !== obj.id) {\n // Another node with the same name.\n nodeTree.push(new TreeNode(obj, partName, parent));\n return;\n }\n ServiceUtils.nestedTraverse(nodeTree[i].children, partIndex + 1, parts,\n obj, nodeTree[i].node, delimiter);\n return;\n }\n\n if (nodeTree.filter((n) => n.node.name === partName).length === 0) {\n if (end) {\n nodeTree.push(new TreeNode(obj, partName, parent));\n return;\n }\n const newPartName = parts[partIndex] + delimiter + parts[partIndex + 1];\n ServiceUtils.nestedTraverse(nodeTree, 0, [newPartName, ...parts.slice(partIndex + 2)],\n obj, parent, delimiter);\n }\n }\n\n static getTreeNodeObject(nodeTree: Array>, id: string): TreeNode {\n for (let i = 0; i < nodeTree.length; i++) {\n if (nodeTree[i].node.id === id) {\n return nodeTree[i];\n } else if (nodeTree[i].children != null) {\n const node = ServiceUtils.getTreeNodeObject(nodeTree[i].children, id);\n if (node !== null) {\n return node;\n }\n }\n }\n return null;\n }\n}\n","import { CryptoService } from '../abstractions/crypto.service';\n\nexport class ContainerService {\n constructor(private cryptoService: CryptoService) {\n }\n\n // deprecated, use attachToGlobal instead\n attachToWindow(win: any) {\n this.attachToGlobal(win);\n }\n\n attachToGlobal(global: any) {\n if (!global.bitwardenContainerService) {\n global.bitwardenContainerService = this;\n }\n }\n\n getCryptoService(): CryptoService {\n return this.cryptoService;\n }\n}\n","import * as bigInt from 'big-integer';\n\nimport { EncryptionType } from '../enums/encryptionType';\nimport { KdfType } from '../enums/kdfType';\n\nimport { CipherString } from '../models/domain/cipherString';\nimport { EncryptedObject } from '../models/domain/encryptedObject';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\nimport { ProfileOrganizationResponse } from '../models/response/profileOrganizationResponse';\n\nimport { CryptoService as CryptoServiceAbstraction } from '../abstractions/crypto.service';\nimport { CryptoFunctionService } from '../abstractions/cryptoFunction.service';\nimport { StorageService } from '../abstractions/storage.service';\n\nimport { ConstantsService } from './constants.service';\n\nimport { sequentialize } from '../misc/sequentialize';\nimport { Utils } from '../misc/utils';\nimport { EEFLongWordList } from '../misc/wordlist';\n\nconst Keys = {\n key: 'key', // Master Key\n encOrgKeys: 'encOrgKeys',\n encPrivateKey: 'encPrivateKey',\n encKey: 'encKey', // Generated Symmetric Key\n keyHash: 'keyHash',\n};\n\nexport class CryptoService implements CryptoServiceAbstraction {\n private key: SymmetricCryptoKey;\n private encKey: SymmetricCryptoKey;\n private legacyEtmKey: SymmetricCryptoKey;\n private keyHash: string;\n private publicKey: ArrayBuffer;\n private privateKey: ArrayBuffer;\n private orgKeys: Map;\n\n constructor(private storageService: StorageService, private secureStorageService: StorageService,\n private cryptoFunctionService: CryptoFunctionService) { }\n\n async setKey(key: SymmetricCryptoKey): Promise {\n this.key = key;\n\n const option = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n if (option != null) {\n // if we have a lock option set, we do not store the key\n return;\n }\n\n return this.secureStorageService.save(Keys.key, key.keyB64);\n }\n\n setKeyHash(keyHash: string): Promise<{}> {\n this.keyHash = keyHash;\n return this.storageService.save(Keys.keyHash, keyHash);\n }\n\n async setEncKey(encKey: string): Promise<{}> {\n if (encKey == null) {\n return;\n }\n\n await this.storageService.save(Keys.encKey, encKey);\n this.encKey = null;\n }\n\n async setEncPrivateKey(encPrivateKey: string): Promise<{}> {\n if (encPrivateKey == null) {\n return;\n }\n\n await this.storageService.save(Keys.encPrivateKey, encPrivateKey);\n this.privateKey = null;\n }\n\n setOrgKeys(orgs: ProfileOrganizationResponse[]): Promise<{}> {\n const orgKeys: any = {};\n orgs.forEach((org) => {\n orgKeys[org.id] = org.key;\n });\n\n this.orgKeys = null;\n return this.storageService.save(Keys.encOrgKeys, orgKeys);\n }\n\n async getKey(): Promise {\n if (this.key != null) {\n return this.key;\n }\n\n const key = await this.secureStorageService.get(Keys.key);\n if (key != null) {\n this.key = new SymmetricCryptoKey(Utils.fromB64ToArray(key).buffer);\n }\n\n return key == null ? null : this.key;\n }\n\n async getKeyHash(): Promise {\n if (this.keyHash != null) {\n return this.keyHash;\n }\n\n const keyHash = await this.storageService.get(Keys.keyHash);\n if (keyHash != null) {\n this.keyHash = keyHash;\n }\n\n return keyHash == null ? null : this.keyHash;\n }\n\n @sequentialize(() => 'getEncKey')\n async getEncKey(key: SymmetricCryptoKey = null): Promise {\n if (this.encKey != null) {\n return this.encKey;\n }\n\n const encKey = await this.storageService.get(Keys.encKey);\n if (encKey == null) {\n return null;\n }\n\n if (key == null) {\n key = await this.getKey();\n }\n if (key == null) {\n return null;\n }\n\n let decEncKey: ArrayBuffer;\n const encKeyCipher = new CipherString(encKey);\n if (encKeyCipher.encryptionType === EncryptionType.AesCbc256_B64) {\n decEncKey = await this.decryptToBytes(encKeyCipher, key);\n } else if (encKeyCipher.encryptionType === EncryptionType.AesCbc256_HmacSha256_B64) {\n const newKey = await this.stretchKey(key);\n decEncKey = await this.decryptToBytes(encKeyCipher, newKey);\n } else {\n throw new Error('Unsupported encKey type.');\n }\n\n if (decEncKey == null) {\n return null;\n }\n this.encKey = new SymmetricCryptoKey(decEncKey);\n return this.encKey;\n }\n\n async getPublicKey(): Promise {\n if (this.publicKey != null) {\n return this.publicKey;\n }\n\n const privateKey = await this.getPrivateKey();\n if (privateKey == null) {\n return null;\n }\n\n this.publicKey = await this.cryptoFunctionService.rsaExtractPublicKey(privateKey);\n return this.publicKey;\n }\n\n async getPrivateKey(): Promise {\n if (this.privateKey != null) {\n return this.privateKey;\n }\n\n const encPrivateKey = await this.storageService.get(Keys.encPrivateKey);\n if (encPrivateKey == null) {\n return null;\n }\n\n this.privateKey = await this.decryptToBytes(new CipherString(encPrivateKey), null);\n return this.privateKey;\n }\n\n async getFingerprint(userId: string, publicKey?: ArrayBuffer): Promise {\n if (publicKey == null) {\n publicKey = await this.getPublicKey();\n }\n if (publicKey === null) {\n throw new Error('No public key available.');\n }\n const keyFingerprint = await this.cryptoFunctionService.hash(publicKey, 'sha256');\n const userFingerprint = await this.hkdfExpand(keyFingerprint, Utils.fromUtf8ToArray(userId), 32);\n return this.hashPhrase(userFingerprint.buffer);\n }\n\n @sequentialize(() => 'getOrgKeys')\n async getOrgKeys(): Promise> {\n if (this.orgKeys != null && this.orgKeys.size > 0) {\n return this.orgKeys;\n }\n\n const encOrgKeys = await this.storageService.get(Keys.encOrgKeys);\n if (encOrgKeys == null) {\n return null;\n }\n\n const orgKeys: Map = new Map();\n let setKey = false;\n\n for (const orgId in encOrgKeys) {\n if (!encOrgKeys.hasOwnProperty(orgId)) {\n continue;\n }\n\n const decValue = await this.rsaDecrypt(encOrgKeys[orgId]);\n orgKeys.set(orgId, new SymmetricCryptoKey(decValue));\n setKey = true;\n }\n\n if (setKey) {\n this.orgKeys = orgKeys;\n }\n\n return this.orgKeys;\n }\n\n async getOrgKey(orgId: string): Promise {\n if (orgId == null) {\n return null;\n }\n\n const orgKeys = await this.getOrgKeys();\n if (orgKeys == null || !orgKeys.has(orgId)) {\n return null;\n }\n\n return orgKeys.get(orgId);\n }\n\n async hasKey(): Promise {\n return (await this.getKey()) != null;\n }\n\n async hasEncKey(): Promise {\n const encKey = await this.storageService.get(Keys.encKey);\n return encKey != null;\n }\n\n clearKey(): Promise {\n this.key = this.legacyEtmKey = null;\n return this.secureStorageService.remove(Keys.key);\n }\n\n clearKeyHash(): Promise {\n this.keyHash = null;\n return this.storageService.remove(Keys.keyHash);\n }\n\n clearEncKey(memoryOnly?: boolean): Promise {\n this.encKey = null;\n if (memoryOnly) {\n return Promise.resolve();\n }\n return this.storageService.remove(Keys.encKey);\n }\n\n clearKeyPair(memoryOnly?: boolean): Promise {\n this.privateKey = null;\n this.publicKey = null;\n if (memoryOnly) {\n return Promise.resolve();\n }\n return this.storageService.remove(Keys.encPrivateKey);\n }\n\n clearOrgKeys(memoryOnly?: boolean): Promise {\n this.orgKeys = null;\n if (memoryOnly) {\n return Promise.resolve();\n }\n return this.storageService.remove(Keys.encOrgKeys);\n }\n\n clearPinProtectedKey(): Promise {\n return this.storageService.remove(ConstantsService.pinProtectedKey);\n }\n\n clearKeys(): Promise {\n return Promise.all([\n this.clearKey(),\n this.clearKeyHash(),\n this.clearOrgKeys(),\n this.clearEncKey(),\n this.clearKeyPair(),\n this.clearPinProtectedKey(),\n ]);\n }\n\n async toggleKey(): Promise {\n const key = await this.getKey();\n const option = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n if (option != null || option === 0) {\n // if we have a lock option set, clear the key\n await this.clearKey();\n this.key = key;\n return;\n }\n\n await this.setKey(key);\n }\n\n async makeKey(password: string, salt: string, kdf: KdfType, kdfIterations: number):\n Promise {\n let key: ArrayBuffer = null;\n if (kdf == null || kdf === KdfType.PBKDF2_SHA256) {\n if (kdfIterations == null) {\n kdfIterations = 5000;\n } else if (kdfIterations < 5000) {\n throw new Error('PBKDF2 iteration minimum is 5000.');\n }\n key = await this.cryptoFunctionService.pbkdf2(password, salt, 'sha256', kdfIterations);\n } else {\n throw new Error('Unknown Kdf.');\n }\n return new SymmetricCryptoKey(key);\n }\n\n async makeKeyFromPin(pin: string, salt: string, kdf: KdfType, kdfIterations: number,\n protectedKeyCs: CipherString = null):\n Promise {\n if (protectedKeyCs == null) {\n const pinProtectedKey = await this.storageService.get(ConstantsService.pinProtectedKey);\n if (pinProtectedKey == null) {\n throw new Error('No PIN protected key found.');\n }\n protectedKeyCs = new CipherString(pinProtectedKey);\n }\n const pinKey = await this.makePinKey(pin, salt, kdf, kdfIterations);\n const decKey = await this.decryptToBytes(protectedKeyCs, pinKey);\n return new SymmetricCryptoKey(decKey);\n }\n\n async makeShareKey(): Promise<[CipherString, SymmetricCryptoKey]> {\n const shareKey = await this.cryptoFunctionService.randomBytes(64);\n const publicKey = await this.getPublicKey();\n const encShareKey = await this.rsaEncrypt(shareKey, publicKey);\n return [encShareKey, new SymmetricCryptoKey(shareKey)];\n }\n\n async makeKeyPair(key?: SymmetricCryptoKey): Promise<[string, CipherString]> {\n const keyPair = await this.cryptoFunctionService.rsaGenerateKeyPair(2048);\n const publicB64 = Utils.fromBufferToB64(keyPair[0]);\n const privateEnc = await this.encrypt(keyPair[1], key);\n return [publicB64, privateEnc];\n }\n\n async makePinKey(pin: string, salt: string, kdf: KdfType, kdfIterations: number): Promise {\n const pinKey = await this.makeKey(pin, salt, kdf, kdfIterations);\n return await this.stretchKey(pinKey);\n }\n\n async hashPassword(password: string, key: SymmetricCryptoKey): Promise {\n if (key == null) {\n key = await this.getKey();\n }\n if (password == null || key == null) {\n throw new Error('Invalid parameters.');\n }\n\n const hash = await this.cryptoFunctionService.pbkdf2(key.key, password, 'sha256', 1);\n return Utils.fromBufferToB64(hash);\n }\n\n async makeEncKey(key: SymmetricCryptoKey): Promise<[SymmetricCryptoKey, CipherString]> {\n const theKey = await this.getKeyForEncryption(key);\n const encKey = await this.cryptoFunctionService.randomBytes(64);\n return this.buildEncKey(theKey, encKey);\n }\n\n async remakeEncKey(key: SymmetricCryptoKey): Promise<[SymmetricCryptoKey, CipherString]> {\n const encKey = await this.getEncKey();\n return this.buildEncKey(key, encKey.key);\n }\n\n async encrypt(plainValue: string | ArrayBuffer, key?: SymmetricCryptoKey): Promise {\n if (plainValue == null) {\n return Promise.resolve(null);\n }\n\n let plainBuf: ArrayBuffer;\n if (typeof (plainValue) === 'string') {\n plainBuf = Utils.fromUtf8ToArray(plainValue).buffer;\n } else {\n plainBuf = plainValue;\n }\n\n const encObj = await this.aesEncrypt(plainBuf, key);\n const iv = Utils.fromBufferToB64(encObj.iv);\n const data = Utils.fromBufferToB64(encObj.data);\n const mac = encObj.mac != null ? Utils.fromBufferToB64(encObj.mac) : null;\n return new CipherString(encObj.key.encType, data, iv, mac);\n }\n\n async encryptToBytes(plainValue: ArrayBuffer, key?: SymmetricCryptoKey): Promise {\n const encValue = await this.aesEncrypt(plainValue, key);\n let macLen = 0;\n if (encValue.mac != null) {\n macLen = encValue.mac.byteLength;\n }\n\n const encBytes = new Uint8Array(1 + encValue.iv.byteLength + macLen + encValue.data.byteLength);\n encBytes.set([encValue.key.encType]);\n encBytes.set(new Uint8Array(encValue.iv), 1);\n if (encValue.mac != null) {\n encBytes.set(new Uint8Array(encValue.mac), 1 + encValue.iv.byteLength);\n }\n\n encBytes.set(new Uint8Array(encValue.data), 1 + encValue.iv.byteLength + macLen);\n return encBytes.buffer;\n }\n\n async rsaEncrypt(data: ArrayBuffer, publicKey?: ArrayBuffer): Promise {\n if (publicKey == null) {\n publicKey = await this.getPublicKey();\n }\n if (publicKey == null) {\n throw new Error('Public key unavailable.');\n }\n\n const encBytes = await this.cryptoFunctionService.rsaEncrypt(data, publicKey, 'sha1');\n return new CipherString(EncryptionType.Rsa2048_OaepSha1_B64, Utils.fromBufferToB64(encBytes));\n }\n\n async decryptToBytes(cipherString: CipherString, key?: SymmetricCryptoKey): Promise {\n const iv = Utils.fromB64ToArray(cipherString.iv).buffer;\n const data = Utils.fromB64ToArray(cipherString.data).buffer;\n const mac = cipherString.mac ? Utils.fromB64ToArray(cipherString.mac).buffer : null;\n const decipher = await this.aesDecryptToBytes(cipherString.encryptionType, data, iv, mac, key);\n if (decipher == null) {\n return null;\n }\n\n return decipher;\n }\n\n async decryptToUtf8(cipherString: CipherString, key?: SymmetricCryptoKey): Promise {\n return await this.aesDecryptToUtf8(cipherString.encryptionType, cipherString.data,\n cipherString.iv, cipherString.mac, key);\n }\n\n async decryptFromBytes(encBuf: ArrayBuffer, key: SymmetricCryptoKey): Promise {\n if (encBuf == null) {\n throw new Error('no encBuf.');\n }\n\n const encBytes = new Uint8Array(encBuf);\n const encType = encBytes[0];\n let ctBytes: Uint8Array = null;\n let ivBytes: Uint8Array = null;\n let macBytes: Uint8Array = null;\n\n switch (encType) {\n case EncryptionType.AesCbc128_HmacSha256_B64:\n case EncryptionType.AesCbc256_HmacSha256_B64:\n if (encBytes.length <= 49) { // 1 + 16 + 32 + ctLength\n return null;\n }\n\n ivBytes = encBytes.slice(1, 17);\n macBytes = encBytes.slice(17, 49);\n ctBytes = encBytes.slice(49);\n break;\n case EncryptionType.AesCbc256_B64:\n if (encBytes.length <= 17) { // 1 + 16 + ctLength\n return null;\n }\n\n ivBytes = encBytes.slice(1, 17);\n ctBytes = encBytes.slice(17);\n break;\n default:\n return null;\n }\n\n return await this.aesDecryptToBytes(encType, ctBytes.buffer, ivBytes.buffer,\n macBytes != null ? macBytes.buffer : null, key);\n }\n\n // EFForg/OpenWireless\n // ref https://github.com/EFForg/OpenWireless/blob/master/app/js/diceware.js\n async randomNumber(min: number, max: number): Promise {\n let rval = 0;\n const range = max - min + 1;\n const bitsNeeded = Math.ceil(Math.log2(range));\n if (bitsNeeded > 53) {\n throw new Error('We cannot generate numbers larger than 53 bits.');\n }\n\n const bytesNeeded = Math.ceil(bitsNeeded / 8);\n const mask = Math.pow(2, bitsNeeded) - 1;\n // 7776 -> (2^13 = 8192) -1 == 8191 or 0x00001111 11111111\n\n // Fill a byte array with N random numbers\n const byteArray = new Uint8Array(await this.cryptoFunctionService.randomBytes(bytesNeeded));\n\n let p = (bytesNeeded - 1) * 8;\n for (let i = 0; i < bytesNeeded; i++) {\n rval += byteArray[i] * Math.pow(2, p);\n p -= 8;\n }\n\n // Use & to apply the mask and reduce the number of recursive lookups\n // tslint:disable-next-line\n rval = rval & mask;\n\n if (rval >= range) {\n // Integer out of acceptable range\n return this.randomNumber(min, max);\n }\n\n // Return an integer that falls within the range\n return min + rval;\n }\n\n // Helpers\n\n private async aesEncrypt(data: ArrayBuffer, key: SymmetricCryptoKey): Promise {\n const obj = new EncryptedObject();\n obj.key = await this.getKeyForEncryption(key);\n obj.iv = await this.cryptoFunctionService.randomBytes(16);\n obj.data = await this.cryptoFunctionService.aesEncrypt(data, obj.iv, obj.key.encKey);\n\n if (obj.key.macKey != null) {\n const macData = new Uint8Array(obj.iv.byteLength + obj.data.byteLength);\n macData.set(new Uint8Array(obj.iv), 0);\n macData.set(new Uint8Array(obj.data), obj.iv.byteLength);\n obj.mac = await this.cryptoFunctionService.hmac(macData.buffer, obj.key.macKey, 'sha256');\n }\n\n return obj;\n }\n\n private async aesDecryptToUtf8(encType: EncryptionType, data: string, iv: string, mac: string,\n key: SymmetricCryptoKey): Promise {\n const keyForEnc = await this.getKeyForEncryption(key);\n const theKey = this.resolveLegacyKey(encType, keyForEnc);\n\n if (theKey.macKey != null && mac == null) {\n // tslint:disable-next-line\n console.error('mac required.');\n return null;\n }\n\n if (theKey.encType !== encType) {\n // tslint:disable-next-line\n console.error('encType unavailable.');\n return null;\n }\n\n const fastParams = this.cryptoFunctionService.aesDecryptFastParameters(data, iv, mac, theKey);\n if (fastParams.macKey != null && fastParams.mac != null) {\n const computedMac = await this.cryptoFunctionService.hmacFast(fastParams.macData,\n fastParams.macKey, 'sha256');\n const macsEqual = await this.cryptoFunctionService.compareFast(fastParams.mac, computedMac);\n if (!macsEqual) {\n // tslint:disable-next-line\n console.error('mac failed.');\n return null;\n }\n }\n\n return this.cryptoFunctionService.aesDecryptFast(fastParams);\n }\n\n private async aesDecryptToBytes(encType: EncryptionType, data: ArrayBuffer, iv: ArrayBuffer,\n mac: ArrayBuffer, key: SymmetricCryptoKey): Promise {\n const keyForEnc = await this.getKeyForEncryption(key);\n const theKey = this.resolveLegacyKey(encType, keyForEnc);\n\n if (theKey.macKey != null && mac == null) {\n return null;\n }\n\n if (theKey.encType !== encType) {\n return null;\n }\n\n if (theKey.macKey != null && mac != null) {\n const macData = new Uint8Array(iv.byteLength + data.byteLength);\n macData.set(new Uint8Array(iv), 0);\n macData.set(new Uint8Array(data), iv.byteLength);\n const computedMac = await this.cryptoFunctionService.hmac(macData.buffer, theKey.macKey, 'sha256');\n if (computedMac === null) {\n return null;\n }\n\n const macsMatch = await this.cryptoFunctionService.compare(mac, computedMac);\n if (!macsMatch) {\n // tslint:disable-next-line\n console.error('mac failed.');\n return null;\n }\n }\n\n return await this.cryptoFunctionService.aesDecrypt(data, iv, theKey.encKey);\n }\n\n private async rsaDecrypt(encValue: string): Promise {\n const headerPieces = encValue.split('.');\n let encType: EncryptionType = null;\n let encPieces: string[];\n\n if (headerPieces.length === 1) {\n encType = EncryptionType.Rsa2048_OaepSha256_B64;\n encPieces = [headerPieces[0]];\n } else if (headerPieces.length === 2) {\n try {\n encType = parseInt(headerPieces[0], null);\n encPieces = headerPieces[1].split('|');\n } catch (e) { }\n }\n\n switch (encType) {\n case EncryptionType.Rsa2048_OaepSha256_B64:\n case EncryptionType.Rsa2048_OaepSha1_B64:\n // HmacSha256 types are deprecated\n case EncryptionType.Rsa2048_OaepSha256_HmacSha256_B64:\n case EncryptionType.Rsa2048_OaepSha1_HmacSha256_B64:\n break;\n default:\n throw new Error('encType unavailable.');\n }\n\n if (encPieces == null || encPieces.length <= 0) {\n throw new Error('encPieces unavailable.');\n }\n\n const data = Utils.fromB64ToArray(encPieces[0]).buffer;\n const privateKey = await this.getPrivateKey();\n if (privateKey == null) {\n throw new Error('No private key.');\n }\n\n let alg: 'sha1' | 'sha256' = 'sha1';\n switch (encType) {\n case EncryptionType.Rsa2048_OaepSha256_B64:\n case EncryptionType.Rsa2048_OaepSha256_HmacSha256_B64:\n alg = 'sha256';\n break;\n case EncryptionType.Rsa2048_OaepSha1_B64:\n case EncryptionType.Rsa2048_OaepSha1_HmacSha256_B64:\n break;\n default:\n throw new Error('encType unavailable.');\n }\n\n return this.cryptoFunctionService.rsaDecrypt(data, privateKey, alg);\n }\n\n private async getKeyForEncryption(key?: SymmetricCryptoKey): Promise {\n if (key != null) {\n return key;\n }\n\n const encKey = await this.getEncKey();\n if (encKey != null) {\n return encKey;\n }\n\n return await this.getKey();\n }\n\n private resolveLegacyKey(encType: EncryptionType, key: SymmetricCryptoKey): SymmetricCryptoKey {\n if (encType === EncryptionType.AesCbc128_HmacSha256_B64 &&\n key.encType === EncryptionType.AesCbc256_B64) {\n // Old encrypt-then-mac scheme, make a new key\n if (this.legacyEtmKey == null) {\n this.legacyEtmKey = new SymmetricCryptoKey(key.key, EncryptionType.AesCbc128_HmacSha256_B64);\n }\n return this.legacyEtmKey;\n }\n\n return key;\n }\n\n private async stretchKey(key: SymmetricCryptoKey): Promise {\n const newKey = new Uint8Array(64);\n newKey.set(await this.hkdfExpand(key.key, Utils.fromUtf8ToArray('enc'), 32));\n newKey.set(await this.hkdfExpand(key.key, Utils.fromUtf8ToArray('mac'), 32), 32);\n return new SymmetricCryptoKey(newKey.buffer);\n }\n\n // ref: https://tools.ietf.org/html/rfc5869\n private async hkdfExpand(prk: ArrayBuffer, info: Uint8Array, size: number) {\n const hashLen = 32; // sha256\n const okm = new Uint8Array(size);\n let previousT = new Uint8Array(0);\n const n = Math.ceil(size / hashLen);\n for (let i = 0; i < n; i++) {\n const t = new Uint8Array(previousT.length + info.length + 1);\n t.set(previousT);\n t.set(info, previousT.length);\n t.set([i + 1], t.length - 1);\n previousT = new Uint8Array(await this.cryptoFunctionService.hmac(t.buffer, prk, 'sha256'));\n okm.set(previousT, i * hashLen);\n }\n return okm;\n }\n\n private async hashPhrase(hash: ArrayBuffer, minimumEntropy: number = 64) {\n const entropyPerWord = Math.log(EEFLongWordList.length) / Math.log(2);\n let numWords = Math.ceil(minimumEntropy / entropyPerWord);\n\n const hashArr = Array.from(new Uint8Array(hash));\n const entropyAvailable = hashArr.length * 4;\n if (numWords * entropyPerWord > entropyAvailable) {\n throw new Error('Output entropy of hash function is too small');\n }\n\n const phrase: string[] = [];\n let hashNumber = bigInt.fromArray(hashArr, 256);\n while (numWords--) {\n const remainder = hashNumber.mod(EEFLongWordList.length);\n hashNumber = hashNumber.divide(EEFLongWordList.length);\n phrase.push(EEFLongWordList[remainder as any]);\n }\n return phrase;\n }\n\n private async buildEncKey(key: SymmetricCryptoKey, encKey: ArrayBuffer)\n : Promise<[SymmetricCryptoKey, CipherString]> {\n let encKeyEnc: CipherString = null;\n if (key.key.byteLength === 32) {\n const newKey = await this.stretchKey(key);\n encKeyEnc = await this.encrypt(encKey, newKey);\n } else if (key.key.byteLength === 64) {\n encKeyEnc = await this.encrypt(encKey, key);\n } else {\n throw new Error('Invalid key size.');\n }\n return [new SymmetricCryptoKey(encKey), encKeyEnc];\n }\n}\n","// EFF's Long Wordlist from https://www.eff.org/dice\nexport const EEFLongWordList = [\n 'abacus',\n 'abdomen',\n 'abdominal',\n 'abide',\n 'abiding',\n 'ability',\n 'ablaze',\n 'able',\n 'abnormal',\n 'abrasion',\n 'abrasive',\n 'abreast',\n 'abridge',\n 'abroad',\n 'abruptly',\n 'absence',\n 'absentee',\n 'absently',\n 'absinthe',\n 'absolute',\n 'absolve',\n 'abstain',\n 'abstract',\n 'absurd',\n 'accent',\n 'acclaim',\n 'acclimate',\n 'accompany',\n 'account',\n 'accuracy',\n 'accurate',\n 'accustom',\n 'acetone',\n 'achiness',\n 'aching',\n 'acid',\n 'acorn',\n 'acquaint',\n 'acquire',\n 'acre',\n 'acrobat',\n 'acronym',\n 'acting',\n 'action',\n 'activate',\n 'activator',\n 'active',\n 'activism',\n 'activist',\n 'activity',\n 'actress',\n 'acts',\n 'acutely',\n 'acuteness',\n 'aeration',\n 'aerobics',\n 'aerosol',\n 'aerospace',\n 'afar',\n 'affair',\n 'affected',\n 'affecting',\n 'affection',\n 'affidavit',\n 'affiliate',\n 'affirm',\n 'affix',\n 'afflicted',\n 'affluent',\n 'afford',\n 'affront',\n 'aflame',\n 'afloat',\n 'aflutter',\n 'afoot',\n 'afraid',\n 'afterglow',\n 'afterlife',\n 'aftermath',\n 'aftermost',\n 'afternoon',\n 'aged',\n 'ageless',\n 'agency',\n 'agenda',\n 'agent',\n 'aggregate',\n 'aghast',\n 'agile',\n 'agility',\n 'aging',\n 'agnostic',\n 'agonize',\n 'agonizing',\n 'agony',\n 'agreeable',\n 'agreeably',\n 'agreed',\n 'agreeing',\n 'agreement',\n 'aground',\n 'ahead',\n 'ahoy',\n 'aide',\n 'aids',\n 'aim',\n 'ajar',\n 'alabaster',\n 'alarm',\n 'albatross',\n 'album',\n 'alfalfa',\n 'algebra',\n 'algorithm',\n 'alias',\n 'alibi',\n 'alienable',\n 'alienate',\n 'aliens',\n 'alike',\n 'alive',\n 'alkaline',\n 'alkalize',\n 'almanac',\n 'almighty',\n 'almost',\n 'aloe',\n 'aloft',\n 'aloha',\n 'alone',\n 'alongside',\n 'aloof',\n 'alphabet',\n 'alright',\n 'although',\n 'altitude',\n 'alto',\n 'aluminum',\n 'alumni',\n 'always',\n 'amaretto',\n 'amaze',\n 'amazingly',\n 'amber',\n 'ambiance',\n 'ambiguity',\n 'ambiguous',\n 'ambition',\n 'ambitious',\n 'ambulance',\n 'ambush',\n 'amendable',\n 'amendment',\n 'amends',\n 'amenity',\n 'amiable',\n 'amicably',\n 'amid',\n 'amigo',\n 'amino',\n 'amiss',\n 'ammonia',\n 'ammonium',\n 'amnesty',\n 'amniotic',\n 'among',\n 'amount',\n 'amperage',\n 'ample',\n 'amplifier',\n 'amplify',\n 'amply',\n 'amuck',\n 'amulet',\n 'amusable',\n 'amused',\n 'amusement',\n 'amuser',\n 'amusing',\n 'anaconda',\n 'anaerobic',\n 'anagram',\n 'anatomist',\n 'anatomy',\n 'anchor',\n 'anchovy',\n 'ancient',\n 'android',\n 'anemia',\n 'anemic',\n 'aneurism',\n 'anew',\n 'angelfish',\n 'angelic',\n 'anger',\n 'angled',\n 'angler',\n 'angles',\n 'angling',\n 'angrily',\n 'angriness',\n 'anguished',\n 'angular',\n 'animal',\n 'animate',\n 'animating',\n 'animation',\n 'animator',\n 'anime',\n 'animosity',\n 'ankle',\n 'annex',\n 'annotate',\n 'announcer',\n 'annoying',\n 'annually',\n 'annuity',\n 'anointer',\n 'another',\n 'answering',\n 'antacid',\n 'antarctic',\n 'anteater',\n 'antelope',\n 'antennae',\n 'anthem',\n 'anthill',\n 'anthology',\n 'antibody',\n 'antics',\n 'antidote',\n 'antihero',\n 'antiquely',\n 'antiques',\n 'antiquity',\n 'antirust',\n 'antitoxic',\n 'antitrust',\n 'antiviral',\n 'antivirus',\n 'antler',\n 'antonym',\n 'antsy',\n 'anvil',\n 'anybody',\n 'anyhow',\n 'anymore',\n 'anyone',\n 'anyplace',\n 'anything',\n 'anytime',\n 'anyway',\n 'anywhere',\n 'aorta',\n 'apache',\n 'apostle',\n 'appealing',\n 'appear',\n 'appease',\n 'appeasing',\n 'appendage',\n 'appendix',\n 'appetite',\n 'appetizer',\n 'applaud',\n 'applause',\n 'apple',\n 'appliance',\n 'applicant',\n 'applied',\n 'apply',\n 'appointee',\n 'appraisal',\n 'appraiser',\n 'apprehend',\n 'approach',\n 'approval',\n 'approve',\n 'apricot',\n 'april',\n 'apron',\n 'aptitude',\n 'aptly',\n 'aqua',\n 'aqueduct',\n 'arbitrary',\n 'arbitrate',\n 'ardently',\n 'area',\n 'arena',\n 'arguable',\n 'arguably',\n 'argue',\n 'arise',\n 'armadillo',\n 'armband',\n 'armchair',\n 'armed',\n 'armful',\n 'armhole',\n 'arming',\n 'armless',\n 'armoire',\n 'armored',\n 'armory',\n 'armrest',\n 'army',\n 'aroma',\n 'arose',\n 'around',\n 'arousal',\n 'arrange',\n 'array',\n 'arrest',\n 'arrival',\n 'arrive',\n 'arrogance',\n 'arrogant',\n 'arson',\n 'art',\n 'ascend',\n 'ascension',\n 'ascent',\n 'ascertain',\n 'ashamed',\n 'ashen',\n 'ashes',\n 'ashy',\n 'aside',\n 'askew',\n 'asleep',\n 'asparagus',\n 'aspect',\n 'aspirate',\n 'aspire',\n 'aspirin',\n 'astonish',\n 'astound',\n 'astride',\n 'astrology',\n 'astronaut',\n 'astronomy',\n 'astute',\n 'atlantic',\n 'atlas',\n 'atom',\n 'atonable',\n 'atop',\n 'atrium',\n 'atrocious',\n 'atrophy',\n 'attach',\n 'attain',\n 'attempt',\n 'attendant',\n 'attendee',\n 'attention',\n 'attentive',\n 'attest',\n 'attic',\n 'attire',\n 'attitude',\n 'attractor',\n 'attribute',\n 'atypical',\n 'auction',\n 'audacious',\n 'audacity',\n 'audible',\n 'audibly',\n 'audience',\n 'audio',\n 'audition',\n 'augmented',\n 'august',\n 'authentic',\n 'author',\n 'autism',\n 'autistic',\n 'autograph',\n 'automaker',\n 'automated',\n 'automatic',\n 'autopilot',\n 'available',\n 'avalanche',\n 'avatar',\n 'avenge',\n 'avenging',\n 'avenue',\n 'average',\n 'aversion',\n 'avert',\n 'aviation',\n 'aviator',\n 'avid',\n 'avoid',\n 'await',\n 'awaken',\n 'award',\n 'aware',\n 'awhile',\n 'awkward',\n 'awning',\n 'awoke',\n 'awry',\n 'axis',\n 'babble',\n 'babbling',\n 'babied',\n 'baboon',\n 'backache',\n 'backboard',\n 'backboned',\n 'backdrop',\n 'backed',\n 'backer',\n 'backfield',\n 'backfire',\n 'backhand',\n 'backing',\n 'backlands',\n 'backlash',\n 'backless',\n 'backlight',\n 'backlit',\n 'backlog',\n 'backpack',\n 'backpedal',\n 'backrest',\n 'backroom',\n 'backshift',\n 'backside',\n 'backslid',\n 'backspace',\n 'backspin',\n 'backstab',\n 'backstage',\n 'backtalk',\n 'backtrack',\n 'backup',\n 'backward',\n 'backwash',\n 'backwater',\n 'backyard',\n 'bacon',\n 'bacteria',\n 'bacterium',\n 'badass',\n 'badge',\n 'badland',\n 'badly',\n 'badness',\n 'baffle',\n 'baffling',\n 'bagel',\n 'bagful',\n 'baggage',\n 'bagged',\n 'baggie',\n 'bagginess',\n 'bagging',\n 'baggy',\n 'bagpipe',\n 'baguette',\n 'baked',\n 'bakery',\n 'bakeshop',\n 'baking',\n 'balance',\n 'balancing',\n 'balcony',\n 'balmy',\n 'balsamic',\n 'bamboo',\n 'banana',\n 'banish',\n 'banister',\n 'banjo',\n 'bankable',\n 'bankbook',\n 'banked',\n 'banker',\n 'banking',\n 'banknote',\n 'bankroll',\n 'banner',\n 'bannister',\n 'banshee',\n 'banter',\n 'barbecue',\n 'barbed',\n 'barbell',\n 'barber',\n 'barcode',\n 'barge',\n 'bargraph',\n 'barista',\n 'baritone',\n 'barley',\n 'barmaid',\n 'barman',\n 'barn',\n 'barometer',\n 'barrack',\n 'barracuda',\n 'barrel',\n 'barrette',\n 'barricade',\n 'barrier',\n 'barstool',\n 'bartender',\n 'barterer',\n 'bash',\n 'basically',\n 'basics',\n 'basil',\n 'basin',\n 'basis',\n 'basket',\n 'batboy',\n 'batch',\n 'bath',\n 'baton',\n 'bats',\n 'battalion',\n 'battered',\n 'battering',\n 'battery',\n 'batting',\n 'battle',\n 'bauble',\n 'bazooka',\n 'blabber',\n 'bladder',\n 'blade',\n 'blah',\n 'blame',\n 'blaming',\n 'blanching',\n 'blandness',\n 'blank',\n 'blaspheme',\n 'blasphemy',\n 'blast',\n 'blatancy',\n 'blatantly',\n 'blazer',\n 'blazing',\n 'bleach',\n 'bleak',\n 'bleep',\n 'blemish',\n 'blend',\n 'bless',\n 'blighted',\n 'blimp',\n 'bling',\n 'blinked',\n 'blinker',\n 'blinking',\n 'blinks',\n 'blip',\n 'blissful',\n 'blitz',\n 'blizzard',\n 'bloated',\n 'bloating',\n 'blob',\n 'blog',\n 'bloomers',\n 'blooming',\n 'blooper',\n 'blot',\n 'blouse',\n 'blubber',\n 'bluff',\n 'bluish',\n 'blunderer',\n 'blunt',\n 'blurb',\n 'blurred',\n 'blurry',\n 'blurt',\n 'blush',\n 'blustery',\n 'boaster',\n 'boastful',\n 'boasting',\n 'boat',\n 'bobbed',\n 'bobbing',\n 'bobble',\n 'bobcat',\n 'bobsled',\n 'bobtail',\n 'bodacious',\n 'body',\n 'bogged',\n 'boggle',\n 'bogus',\n 'boil',\n 'bok',\n 'bolster',\n 'bolt',\n 'bonanza',\n 'bonded',\n 'bonding',\n 'bondless',\n 'boned',\n 'bonehead',\n 'boneless',\n 'bonelike',\n 'boney',\n 'bonfire',\n 'bonnet',\n 'bonsai',\n 'bonus',\n 'bony',\n 'boogeyman',\n 'boogieman',\n 'book',\n 'boondocks',\n 'booted',\n 'booth',\n 'bootie',\n 'booting',\n 'bootlace',\n 'bootleg',\n 'boots',\n 'boozy',\n 'borax',\n 'boring',\n 'borough',\n 'borrower',\n 'borrowing',\n 'boss',\n 'botanical',\n 'botanist',\n 'botany',\n 'botch',\n 'both',\n 'bottle',\n 'bottling',\n 'bottom',\n 'bounce',\n 'bouncing',\n 'bouncy',\n 'bounding',\n 'boundless',\n 'bountiful',\n 'bovine',\n 'boxcar',\n 'boxer',\n 'boxing',\n 'boxlike',\n 'boxy',\n 'breach',\n 'breath',\n 'breeches',\n 'breeching',\n 'breeder',\n 'breeding',\n 'breeze',\n 'breezy',\n 'brethren',\n 'brewery',\n 'brewing',\n 'briar',\n 'bribe',\n 'brick',\n 'bride',\n 'bridged',\n 'brigade',\n 'bright',\n 'brilliant',\n 'brim',\n 'bring',\n 'brink',\n 'brisket',\n 'briskly',\n 'briskness',\n 'bristle',\n 'brittle',\n 'broadband',\n 'broadcast',\n 'broaden',\n 'broadly',\n 'broadness',\n 'broadside',\n 'broadways',\n 'broiler',\n 'broiling',\n 'broken',\n 'broker',\n 'bronchial',\n 'bronco',\n 'bronze',\n 'bronzing',\n 'brook',\n 'broom',\n 'brought',\n 'browbeat',\n 'brownnose',\n 'browse',\n 'browsing',\n 'bruising',\n 'brunch',\n 'brunette',\n 'brunt',\n 'brush',\n 'brussels',\n 'brute',\n 'brutishly',\n 'bubble',\n 'bubbling',\n 'bubbly',\n 'buccaneer',\n 'bucked',\n 'bucket',\n 'buckle',\n 'buckshot',\n 'buckskin',\n 'bucktooth',\n 'buckwheat',\n 'buddhism',\n 'buddhist',\n 'budding',\n 'buddy',\n 'budget',\n 'buffalo',\n 'buffed',\n 'buffer',\n 'buffing',\n 'buffoon',\n 'buggy',\n 'bulb',\n 'bulge',\n 'bulginess',\n 'bulgur',\n 'bulk',\n 'bulldog',\n 'bulldozer',\n 'bullfight',\n 'bullfrog',\n 'bullhorn',\n 'bullion',\n 'bullish',\n 'bullpen',\n 'bullring',\n 'bullseye',\n 'bullwhip',\n 'bully',\n 'bunch',\n 'bundle',\n 'bungee',\n 'bunion',\n 'bunkbed',\n 'bunkhouse',\n 'bunkmate',\n 'bunny',\n 'bunt',\n 'busboy',\n 'bush',\n 'busily',\n 'busload',\n 'bust',\n 'busybody',\n 'buzz',\n 'cabana',\n 'cabbage',\n 'cabbie',\n 'cabdriver',\n 'cable',\n 'caboose',\n 'cache',\n 'cackle',\n 'cacti',\n 'cactus',\n 'caddie',\n 'caddy',\n 'cadet',\n 'cadillac',\n 'cadmium',\n 'cage',\n 'cahoots',\n 'cake',\n 'calamari',\n 'calamity',\n 'calcium',\n 'calculate',\n 'calculus',\n 'caliber',\n 'calibrate',\n 'calm',\n 'caloric',\n 'calorie',\n 'calzone',\n 'camcorder',\n 'cameo',\n 'camera',\n 'camisole',\n 'camper',\n 'campfire',\n 'camping',\n 'campsite',\n 'campus',\n 'canal',\n 'canary',\n 'cancel',\n 'candied',\n 'candle',\n 'candy',\n 'cane',\n 'canine',\n 'canister',\n 'cannabis',\n 'canned',\n 'canning',\n 'cannon',\n 'cannot',\n 'canola',\n 'canon',\n 'canopener',\n 'canopy',\n 'canteen',\n 'canyon',\n 'capable',\n 'capably',\n 'capacity',\n 'cape',\n 'capillary',\n 'capital',\n 'capitol',\n 'capped',\n 'capricorn',\n 'capsize',\n 'capsule',\n 'caption',\n 'captivate',\n 'captive',\n 'captivity',\n 'capture',\n 'caramel',\n 'carat',\n 'caravan',\n 'carbon',\n 'cardboard',\n 'carded',\n 'cardiac',\n 'cardigan',\n 'cardinal',\n 'cardstock',\n 'carefully',\n 'caregiver',\n 'careless',\n 'caress',\n 'caretaker',\n 'cargo',\n 'caring',\n 'carless',\n 'carload',\n 'carmaker',\n 'carnage',\n 'carnation',\n 'carnival',\n 'carnivore',\n 'carol',\n 'carpenter',\n 'carpentry',\n 'carpool',\n 'carport',\n 'carried',\n 'carrot',\n 'carrousel',\n 'carry',\n 'cartel',\n 'cartload',\n 'carton',\n 'cartoon',\n 'cartridge',\n 'cartwheel',\n 'carve',\n 'carving',\n 'carwash',\n 'cascade',\n 'case',\n 'cash',\n 'casing',\n 'casino',\n 'casket',\n 'cassette',\n 'casually',\n 'casualty',\n 'catacomb',\n 'catalog',\n 'catalyst',\n 'catalyze',\n 'catapult',\n 'cataract',\n 'catatonic',\n 'catcall',\n 'catchable',\n 'catcher',\n 'catching',\n 'catchy',\n 'caterer',\n 'catering',\n 'catfight',\n 'catfish',\n 'cathedral',\n 'cathouse',\n 'catlike',\n 'catnap',\n 'catnip',\n 'catsup',\n 'cattail',\n 'cattishly',\n 'cattle',\n 'catty',\n 'catwalk',\n 'caucasian',\n 'caucus',\n 'causal',\n 'causation',\n 'cause',\n 'causing',\n 'cauterize',\n 'caution',\n 'cautious',\n 'cavalier',\n 'cavalry',\n 'caviar',\n 'cavity',\n 'cedar',\n 'celery',\n 'celestial',\n 'celibacy',\n 'celibate',\n 'celtic',\n 'cement',\n 'census',\n 'ceramics',\n 'ceremony',\n 'certainly',\n 'certainty',\n 'certified',\n 'certify',\n 'cesarean',\n 'cesspool',\n 'chafe',\n 'chaffing',\n 'chain',\n 'chair',\n 'chalice',\n 'challenge',\n 'chamber',\n 'chamomile',\n 'champion',\n 'chance',\n 'change',\n 'channel',\n 'chant',\n 'chaos',\n 'chaperone',\n 'chaplain',\n 'chapped',\n 'chaps',\n 'chapter',\n 'character',\n 'charbroil',\n 'charcoal',\n 'charger',\n 'charging',\n 'chariot',\n 'charity',\n 'charm',\n 'charred',\n 'charter',\n 'charting',\n 'chase',\n 'chasing',\n 'chaste',\n 'chastise',\n 'chastity',\n 'chatroom',\n 'chatter',\n 'chatting',\n 'chatty',\n 'cheating',\n 'cheddar',\n 'cheek',\n 'cheer',\n 'cheese',\n 'cheesy',\n 'chef',\n 'chemicals',\n 'chemist',\n 'chemo',\n 'cherisher',\n 'cherub',\n 'chess',\n 'chest',\n 'chevron',\n 'chevy',\n 'chewable',\n 'chewer',\n 'chewing',\n 'chewy',\n 'chief',\n 'chihuahua',\n 'childcare',\n 'childhood',\n 'childish',\n 'childless',\n 'childlike',\n 'chili',\n 'chill',\n 'chimp',\n 'chip',\n 'chirping',\n 'chirpy',\n 'chitchat',\n 'chivalry',\n 'chive',\n 'chloride',\n 'chlorine',\n 'choice',\n 'chokehold',\n 'choking',\n 'chomp',\n 'chooser',\n 'choosing',\n 'choosy',\n 'chop',\n 'chosen',\n 'chowder',\n 'chowtime',\n 'chrome',\n 'chubby',\n 'chuck',\n 'chug',\n 'chummy',\n 'chump',\n 'chunk',\n 'churn',\n 'chute',\n 'cider',\n 'cilantro',\n 'cinch',\n 'cinema',\n 'cinnamon',\n 'circle',\n 'circling',\n 'circular',\n 'circulate',\n 'circus',\n 'citable',\n 'citadel',\n 'citation',\n 'citizen',\n 'citric',\n 'citrus',\n 'city',\n 'civic',\n 'civil',\n 'clad',\n 'claim',\n 'clambake',\n 'clammy',\n 'clamor',\n 'clamp',\n 'clamshell',\n 'clang',\n 'clanking',\n 'clapped',\n 'clapper',\n 'clapping',\n 'clarify',\n 'clarinet',\n 'clarity',\n 'clash',\n 'clasp',\n 'class',\n 'clatter',\n 'clause',\n 'clavicle',\n 'claw',\n 'clay',\n 'clean',\n 'clear',\n 'cleat',\n 'cleaver',\n 'cleft',\n 'clench',\n 'clergyman',\n 'clerical',\n 'clerk',\n 'clever',\n 'clicker',\n 'client',\n 'climate',\n 'climatic',\n 'cling',\n 'clinic',\n 'clinking',\n 'clip',\n 'clique',\n 'cloak',\n 'clobber',\n 'clock',\n 'clone',\n 'cloning',\n 'closable',\n 'closure',\n 'clothes',\n 'clothing',\n 'cloud',\n 'clover',\n 'clubbed',\n 'clubbing',\n 'clubhouse',\n 'clump',\n 'clumsily',\n 'clumsy',\n 'clunky',\n 'clustered',\n 'clutch',\n 'clutter',\n 'coach',\n 'coagulant',\n 'coastal',\n 'coaster',\n 'coasting',\n 'coastland',\n 'coastline',\n 'coat',\n 'coauthor',\n 'cobalt',\n 'cobbler',\n 'cobweb',\n 'cocoa',\n 'coconut',\n 'cod',\n 'coeditor',\n 'coerce',\n 'coexist',\n 'coffee',\n 'cofounder',\n 'cognition',\n 'cognitive',\n 'cogwheel',\n 'coherence',\n 'coherent',\n 'cohesive',\n 'coil',\n 'coke',\n 'cola',\n 'cold',\n 'coleslaw',\n 'coliseum',\n 'collage',\n 'collapse',\n 'collar',\n 'collected',\n 'collector',\n 'collide',\n 'collie',\n 'collision',\n 'colonial',\n 'colonist',\n 'colonize',\n 'colony',\n 'colossal',\n 'colt',\n 'coma',\n 'come',\n 'comfort',\n 'comfy',\n 'comic',\n 'coming',\n 'comma',\n 'commence',\n 'commend',\n 'comment',\n 'commerce',\n 'commode',\n 'commodity',\n 'commodore',\n 'common',\n 'commotion',\n 'commute',\n 'commuting',\n 'compacted',\n 'compacter',\n 'compactly',\n 'compactor',\n 'companion',\n 'company',\n 'compare',\n 'compel',\n 'compile',\n 'comply',\n 'component',\n 'composed',\n 'composer',\n 'composite',\n 'compost',\n 'composure',\n 'compound',\n 'compress',\n 'comprised',\n 'computer',\n 'computing',\n 'comrade',\n 'concave',\n 'conceal',\n 'conceded',\n 'concept',\n 'concerned',\n 'concert',\n 'conch',\n 'concierge',\n 'concise',\n 'conclude',\n 'concrete',\n 'concur',\n 'condense',\n 'condiment',\n 'condition',\n 'condone',\n 'conducive',\n 'conductor',\n 'conduit',\n 'cone',\n 'confess',\n 'confetti',\n 'confidant',\n 'confident',\n 'confider',\n 'confiding',\n 'configure',\n 'confined',\n 'confining',\n 'confirm',\n 'conflict',\n 'conform',\n 'confound',\n 'confront',\n 'confused',\n 'confusing',\n 'confusion',\n 'congenial',\n 'congested',\n 'congrats',\n 'congress',\n 'conical',\n 'conjoined',\n 'conjure',\n 'conjuror',\n 'connected',\n 'connector',\n 'consensus',\n 'consent',\n 'console',\n 'consoling',\n 'consonant',\n 'constable',\n 'constant',\n 'constrain',\n 'constrict',\n 'construct',\n 'consult',\n 'consumer',\n 'consuming',\n 'contact',\n 'container',\n 'contempt',\n 'contend',\n 'contented',\n 'contently',\n 'contents',\n 'contest',\n 'context',\n 'contort',\n 'contour',\n 'contrite',\n 'control',\n 'contusion',\n 'convene',\n 'convent',\n 'copartner',\n 'cope',\n 'copied',\n 'copier',\n 'copilot',\n 'coping',\n 'copious',\n 'copper',\n 'copy',\n 'coral',\n 'cork',\n 'cornball',\n 'cornbread',\n 'corncob',\n 'cornea',\n 'corned',\n 'corner',\n 'cornfield',\n 'cornflake',\n 'cornhusk',\n 'cornmeal',\n 'cornstalk',\n 'corny',\n 'coronary',\n 'coroner',\n 'corporal',\n 'corporate',\n 'corral',\n 'correct',\n 'corridor',\n 'corrode',\n 'corroding',\n 'corrosive',\n 'corsage',\n 'corset',\n 'cortex',\n 'cosigner',\n 'cosmetics',\n 'cosmic',\n 'cosmos',\n 'cosponsor',\n 'cost',\n 'cottage',\n 'cotton',\n 'couch',\n 'cough',\n 'could',\n 'countable',\n 'countdown',\n 'counting',\n 'countless',\n 'country',\n 'county',\n 'courier',\n 'covenant',\n 'cover',\n 'coveted',\n 'coveting',\n 'coyness',\n 'cozily',\n 'coziness',\n 'cozy',\n 'crabbing',\n 'crabgrass',\n 'crablike',\n 'crabmeat',\n 'cradle',\n 'cradling',\n 'crafter',\n 'craftily',\n 'craftsman',\n 'craftwork',\n 'crafty',\n 'cramp',\n 'cranberry',\n 'crane',\n 'cranial',\n 'cranium',\n 'crank',\n 'crate',\n 'crave',\n 'craving',\n 'crawfish',\n 'crawlers',\n 'crawling',\n 'crayfish',\n 'crayon',\n 'crazed',\n 'crazily',\n 'craziness',\n 'crazy',\n 'creamed',\n 'creamer',\n 'creamlike',\n 'crease',\n 'creasing',\n 'creatable',\n 'create',\n 'creation',\n 'creative',\n 'creature',\n 'credible',\n 'credibly',\n 'credit',\n 'creed',\n 'creme',\n 'creole',\n 'crepe',\n 'crept',\n 'crescent',\n 'crested',\n 'cresting',\n 'crestless',\n 'crevice',\n 'crewless',\n 'crewman',\n 'crewmate',\n 'crib',\n 'cricket',\n 'cried',\n 'crier',\n 'crimp',\n 'crimson',\n 'cringe',\n 'cringing',\n 'crinkle',\n 'crinkly',\n 'crisped',\n 'crisping',\n 'crisply',\n 'crispness',\n 'crispy',\n 'criteria',\n 'critter',\n 'croak',\n 'crock',\n 'crook',\n 'croon',\n 'crop',\n 'cross',\n 'crouch',\n 'crouton',\n 'crowbar',\n 'crowd',\n 'crown',\n 'crucial',\n 'crudely',\n 'crudeness',\n 'cruelly',\n 'cruelness',\n 'cruelty',\n 'crumb',\n 'crummiest',\n 'crummy',\n 'crumpet',\n 'crumpled',\n 'cruncher',\n 'crunching',\n 'crunchy',\n 'crusader',\n 'crushable',\n 'crushed',\n 'crusher',\n 'crushing',\n 'crust',\n 'crux',\n 'crying',\n 'cryptic',\n 'crystal',\n 'cubbyhole',\n 'cube',\n 'cubical',\n 'cubicle',\n 'cucumber',\n 'cuddle',\n 'cuddly',\n 'cufflink',\n 'culinary',\n 'culminate',\n 'culpable',\n 'culprit',\n 'cultivate',\n 'cultural',\n 'culture',\n 'cupbearer',\n 'cupcake',\n 'cupid',\n 'cupped',\n 'cupping',\n 'curable',\n 'curator',\n 'curdle',\n 'cure',\n 'curfew',\n 'curing',\n 'curled',\n 'curler',\n 'curliness',\n 'curling',\n 'curly',\n 'curry',\n 'curse',\n 'cursive',\n 'cursor',\n 'curtain',\n 'curtly',\n 'curtsy',\n 'curvature',\n 'curve',\n 'curvy',\n 'cushy',\n 'cusp',\n 'cussed',\n 'custard',\n 'custodian',\n 'custody',\n 'customary',\n 'customer',\n 'customize',\n 'customs',\n 'cut',\n 'cycle',\n 'cyclic',\n 'cycling',\n 'cyclist',\n 'cylinder',\n 'cymbal',\n 'cytoplasm',\n 'cytoplast',\n 'dab',\n 'dad',\n 'daffodil',\n 'dagger',\n 'daily',\n 'daintily',\n 'dainty',\n 'dairy',\n 'daisy',\n 'dallying',\n 'dance',\n 'dancing',\n 'dandelion',\n 'dander',\n 'dandruff',\n 'dandy',\n 'danger',\n 'dangle',\n 'dangling',\n 'daredevil',\n 'dares',\n 'daringly',\n 'darkened',\n 'darkening',\n 'darkish',\n 'darkness',\n 'darkroom',\n 'darling',\n 'darn',\n 'dart',\n 'darwinism',\n 'dash',\n 'dastardly',\n 'data',\n 'datebook',\n 'dating',\n 'daughter',\n 'daunting',\n 'dawdler',\n 'dawn',\n 'daybed',\n 'daybreak',\n 'daycare',\n 'daydream',\n 'daylight',\n 'daylong',\n 'dayroom',\n 'daytime',\n 'dazzler',\n 'dazzling',\n 'deacon',\n 'deafening',\n 'deafness',\n 'dealer',\n 'dealing',\n 'dealmaker',\n 'dealt',\n 'dean',\n 'debatable',\n 'debate',\n 'debating',\n 'debit',\n 'debrief',\n 'debtless',\n 'debtor',\n 'debug',\n 'debunk',\n 'decade',\n 'decaf',\n 'decal',\n 'decathlon',\n 'decay',\n 'deceased',\n 'deceit',\n 'deceiver',\n 'deceiving',\n 'december',\n 'decency',\n 'decent',\n 'deception',\n 'deceptive',\n 'decibel',\n 'decidable',\n 'decimal',\n 'decimeter',\n 'decipher',\n 'deck',\n 'declared',\n 'decline',\n 'decode',\n 'decompose',\n 'decorated',\n 'decorator',\n 'decoy',\n 'decrease',\n 'decree',\n 'dedicate',\n 'dedicator',\n 'deduce',\n 'deduct',\n 'deed',\n 'deem',\n 'deepen',\n 'deeply',\n 'deepness',\n 'deface',\n 'defacing',\n 'defame',\n 'default',\n 'defeat',\n 'defection',\n 'defective',\n 'defendant',\n 'defender',\n 'defense',\n 'defensive',\n 'deferral',\n 'deferred',\n 'defiance',\n 'defiant',\n 'defile',\n 'defiling',\n 'define',\n 'definite',\n 'deflate',\n 'deflation',\n 'deflator',\n 'deflected',\n 'deflector',\n 'defog',\n 'deforest',\n 'defraud',\n 'defrost',\n 'deftly',\n 'defuse',\n 'defy',\n 'degraded',\n 'degrading',\n 'degrease',\n 'degree',\n 'dehydrate',\n 'deity',\n 'dejected',\n 'delay',\n 'delegate',\n 'delegator',\n 'delete',\n 'deletion',\n 'delicacy',\n 'delicate',\n 'delicious',\n 'delighted',\n 'delirious',\n 'delirium',\n 'deliverer',\n 'delivery',\n 'delouse',\n 'delta',\n 'deluge',\n 'delusion',\n 'deluxe',\n 'demanding',\n 'demeaning',\n 'demeanor',\n 'demise',\n 'democracy',\n 'democrat',\n 'demote',\n 'demotion',\n 'demystify',\n 'denatured',\n 'deniable',\n 'denial',\n 'denim',\n 'denote',\n 'dense',\n 'density',\n 'dental',\n 'dentist',\n 'denture',\n 'deny',\n 'deodorant',\n 'deodorize',\n 'departed',\n 'departure',\n 'depict',\n 'deplete',\n 'depletion',\n 'deplored',\n 'deploy',\n 'deport',\n 'depose',\n 'depraved',\n 'depravity',\n 'deprecate',\n 'depress',\n 'deprive',\n 'depth',\n 'deputize',\n 'deputy',\n 'derail',\n 'deranged',\n 'derby',\n 'derived',\n 'desecrate',\n 'deserve',\n 'deserving',\n 'designate',\n 'designed',\n 'designer',\n 'designing',\n 'deskbound',\n 'desktop',\n 'deskwork',\n 'desolate',\n 'despair',\n 'despise',\n 'despite',\n 'destiny',\n 'destitute',\n 'destruct',\n 'detached',\n 'detail',\n 'detection',\n 'detective',\n 'detector',\n 'detention',\n 'detergent',\n 'detest',\n 'detonate',\n 'detonator',\n 'detoxify',\n 'detract',\n 'deuce',\n 'devalue',\n 'deviancy',\n 'deviant',\n 'deviate',\n 'deviation',\n 'deviator',\n 'device',\n 'devious',\n 'devotedly',\n 'devotee',\n 'devotion',\n 'devourer',\n 'devouring',\n 'devoutly',\n 'dexterity',\n 'dexterous',\n 'diabetes',\n 'diabetic',\n 'diabolic',\n 'diagnoses',\n 'diagnosis',\n 'diagram',\n 'dial',\n 'diameter',\n 'diaper',\n 'diaphragm',\n 'diary',\n 'dice',\n 'dicing',\n 'dictate',\n 'dictation',\n 'dictator',\n 'difficult',\n 'diffused',\n 'diffuser',\n 'diffusion',\n 'diffusive',\n 'dig',\n 'dilation',\n 'diligence',\n 'diligent',\n 'dill',\n 'dilute',\n 'dime',\n 'diminish',\n 'dimly',\n 'dimmed',\n 'dimmer',\n 'dimness',\n 'dimple',\n 'diner',\n 'dingbat',\n 'dinghy',\n 'dinginess',\n 'dingo',\n 'dingy',\n 'dining',\n 'dinner',\n 'diocese',\n 'dioxide',\n 'diploma',\n 'dipped',\n 'dipper',\n 'dipping',\n 'directed',\n 'direction',\n 'directive',\n 'directly',\n 'directory',\n 'direness',\n 'dirtiness',\n 'disabled',\n 'disagree',\n 'disallow',\n 'disarm',\n 'disarray',\n 'disaster',\n 'disband',\n 'disbelief',\n 'disburse',\n 'discard',\n 'discern',\n 'discharge',\n 'disclose',\n 'discolor',\n 'discount',\n 'discourse',\n 'discover',\n 'discuss',\n 'disdain',\n 'disengage',\n 'disfigure',\n 'disgrace',\n 'dish',\n 'disinfect',\n 'disjoin',\n 'disk',\n 'dislike',\n 'disliking',\n 'dislocate',\n 'dislodge',\n 'disloyal',\n 'dismantle',\n 'dismay',\n 'dismiss',\n 'dismount',\n 'disobey',\n 'disorder',\n 'disown',\n 'disparate',\n 'disparity',\n 'dispatch',\n 'dispense',\n 'dispersal',\n 'dispersed',\n 'disperser',\n 'displace',\n 'display',\n 'displease',\n 'disposal',\n 'dispose',\n 'disprove',\n 'dispute',\n 'disregard',\n 'disrupt',\n 'dissuade',\n 'distance',\n 'distant',\n 'distaste',\n 'distill',\n 'distinct',\n 'distort',\n 'distract',\n 'distress',\n 'district',\n 'distrust',\n 'ditch',\n 'ditto',\n 'ditzy',\n 'dividable',\n 'divided',\n 'dividend',\n 'dividers',\n 'dividing',\n 'divinely',\n 'diving',\n 'divinity',\n 'divisible',\n 'divisibly',\n 'division',\n 'divisive',\n 'divorcee',\n 'dizziness',\n 'dizzy',\n 'doable',\n 'docile',\n 'dock',\n 'doctrine',\n 'document',\n 'dodge',\n 'dodgy',\n 'doily',\n 'doing',\n 'dole',\n 'dollar',\n 'dollhouse',\n 'dollop',\n 'dolly',\n 'dolphin',\n 'domain',\n 'domelike',\n 'domestic',\n 'dominion',\n 'dominoes',\n 'donated',\n 'donation',\n 'donator',\n 'donor',\n 'donut',\n 'doodle',\n 'doorbell',\n 'doorframe',\n 'doorknob',\n 'doorman',\n 'doormat',\n 'doornail',\n 'doorpost',\n 'doorstep',\n 'doorstop',\n 'doorway',\n 'doozy',\n 'dork',\n 'dormitory',\n 'dorsal',\n 'dosage',\n 'dose',\n 'dotted',\n 'doubling',\n 'douche',\n 'dove',\n 'down',\n 'dowry',\n 'doze',\n 'drab',\n 'dragging',\n 'dragonfly',\n 'dragonish',\n 'dragster',\n 'drainable',\n 'drainage',\n 'drained',\n 'drainer',\n 'drainpipe',\n 'dramatic',\n 'dramatize',\n 'drank',\n 'drapery',\n 'drastic',\n 'draw',\n 'dreaded',\n 'dreadful',\n 'dreadlock',\n 'dreamboat',\n 'dreamily',\n 'dreamland',\n 'dreamless',\n 'dreamlike',\n 'dreamt',\n 'dreamy',\n 'drearily',\n 'dreary',\n 'drench',\n 'dress',\n 'drew',\n 'dribble',\n 'dried',\n 'drier',\n 'drift',\n 'driller',\n 'drilling',\n 'drinkable',\n 'drinking',\n 'dripping',\n 'drippy',\n 'drivable',\n 'driven',\n 'driver',\n 'driveway',\n 'driving',\n 'drizzle',\n 'drizzly',\n 'drone',\n 'drool',\n 'droop',\n 'drop-down',\n 'dropbox',\n 'dropkick',\n 'droplet',\n 'dropout',\n 'dropper',\n 'drove',\n 'drown',\n 'drowsily',\n 'drudge',\n 'drum',\n 'dry',\n 'dubbed',\n 'dubiously',\n 'duchess',\n 'duckbill',\n 'ducking',\n 'duckling',\n 'ducktail',\n 'ducky',\n 'duct',\n 'dude',\n 'duffel',\n 'dugout',\n 'duh',\n 'duke',\n 'duller',\n 'dullness',\n 'duly',\n 'dumping',\n 'dumpling',\n 'dumpster',\n 'duo',\n 'dupe',\n 'duplex',\n 'duplicate',\n 'duplicity',\n 'durable',\n 'durably',\n 'duration',\n 'duress',\n 'during',\n 'dusk',\n 'dust',\n 'dutiful',\n 'duty',\n 'duvet',\n 'dwarf',\n 'dweeb',\n 'dwelled',\n 'dweller',\n 'dwelling',\n 'dwindle',\n 'dwindling',\n 'dynamic',\n 'dynamite',\n 'dynasty',\n 'dyslexia',\n 'dyslexic',\n 'each',\n 'eagle',\n 'earache',\n 'eardrum',\n 'earflap',\n 'earful',\n 'earlobe',\n 'early',\n 'earmark',\n 'earmuff',\n 'earphone',\n 'earpiece',\n 'earplugs',\n 'earring',\n 'earshot',\n 'earthen',\n 'earthlike',\n 'earthling',\n 'earthly',\n 'earthworm',\n 'earthy',\n 'earwig',\n 'easeful',\n 'easel',\n 'easiest',\n 'easily',\n 'easiness',\n 'easing',\n 'eastbound',\n 'eastcoast',\n 'easter',\n 'eastward',\n 'eatable',\n 'eaten',\n 'eatery',\n 'eating',\n 'eats',\n 'ebay',\n 'ebony',\n 'ebook',\n 'ecard',\n 'eccentric',\n 'echo',\n 'eclair',\n 'eclipse',\n 'ecologist',\n 'ecology',\n 'economic',\n 'economist',\n 'economy',\n 'ecosphere',\n 'ecosystem',\n 'edge',\n 'edginess',\n 'edging',\n 'edgy',\n 'edition',\n 'editor',\n 'educated',\n 'education',\n 'educator',\n 'eel',\n 'effective',\n 'effects',\n 'efficient',\n 'effort',\n 'eggbeater',\n 'egging',\n 'eggnog',\n 'eggplant',\n 'eggshell',\n 'egomaniac',\n 'egotism',\n 'egotistic',\n 'either',\n 'eject',\n 'elaborate',\n 'elastic',\n 'elated',\n 'elbow',\n 'eldercare',\n 'elderly',\n 'eldest',\n 'electable',\n 'election',\n 'elective',\n 'elephant',\n 'elevate',\n 'elevating',\n 'elevation',\n 'elevator',\n 'eleven',\n 'elf',\n 'eligible',\n 'eligibly',\n 'eliminate',\n 'elite',\n 'elitism',\n 'elixir',\n 'elk',\n 'ellipse',\n 'elliptic',\n 'elm',\n 'elongated',\n 'elope',\n 'eloquence',\n 'eloquent',\n 'elsewhere',\n 'elude',\n 'elusive',\n 'elves',\n 'email',\n 'embargo',\n 'embark',\n 'embassy',\n 'embattled',\n 'embellish',\n 'ember',\n 'embezzle',\n 'emblaze',\n 'emblem',\n 'embody',\n 'embolism',\n 'emboss',\n 'embroider',\n 'emcee',\n 'emerald',\n 'emergency',\n 'emission',\n 'emit',\n 'emote',\n 'emoticon',\n 'emotion',\n 'empathic',\n 'empathy',\n 'emperor',\n 'emphases',\n 'emphasis',\n 'emphasize',\n 'emphatic',\n 'empirical',\n 'employed',\n 'employee',\n 'employer',\n 'emporium',\n 'empower',\n 'emptier',\n 'emptiness',\n 'empty',\n 'emu',\n 'enable',\n 'enactment',\n 'enamel',\n 'enchanted',\n 'enchilada',\n 'encircle',\n 'enclose',\n 'enclosure',\n 'encode',\n 'encore',\n 'encounter',\n 'encourage',\n 'encroach',\n 'encrust',\n 'encrypt',\n 'endanger',\n 'endeared',\n 'endearing',\n 'ended',\n 'ending',\n 'endless',\n 'endnote',\n 'endocrine',\n 'endorphin',\n 'endorse',\n 'endowment',\n 'endpoint',\n 'endurable',\n 'endurance',\n 'enduring',\n 'energetic',\n 'energize',\n 'energy',\n 'enforced',\n 'enforcer',\n 'engaged',\n 'engaging',\n 'engine',\n 'engorge',\n 'engraved',\n 'engraver',\n 'engraving',\n 'engross',\n 'engulf',\n 'enhance',\n 'enigmatic',\n 'enjoyable',\n 'enjoyably',\n 'enjoyer',\n 'enjoying',\n 'enjoyment',\n 'enlarged',\n 'enlarging',\n 'enlighten',\n 'enlisted',\n 'enquirer',\n 'enrage',\n 'enrich',\n 'enroll',\n 'enslave',\n 'ensnare',\n 'ensure',\n 'entail',\n 'entangled',\n 'entering',\n 'entertain',\n 'enticing',\n 'entire',\n 'entitle',\n 'entity',\n 'entomb',\n 'entourage',\n 'entrap',\n 'entree',\n 'entrench',\n 'entrust',\n 'entryway',\n 'entwine',\n 'enunciate',\n 'envelope',\n 'enviable',\n 'enviably',\n 'envious',\n 'envision',\n 'envoy',\n 'envy',\n 'enzyme',\n 'epic',\n 'epidemic',\n 'epidermal',\n 'epidermis',\n 'epidural',\n 'epilepsy',\n 'epileptic',\n 'epilogue',\n 'epiphany',\n 'episode',\n 'equal',\n 'equate',\n 'equation',\n 'equator',\n 'equinox',\n 'equipment',\n 'equity',\n 'equivocal',\n 'eradicate',\n 'erasable',\n 'erased',\n 'eraser',\n 'erasure',\n 'ergonomic',\n 'errand',\n 'errant',\n 'erratic',\n 'error',\n 'erupt',\n 'escalate',\n 'escalator',\n 'escapable',\n 'escapade',\n 'escapist',\n 'escargot',\n 'eskimo',\n 'esophagus',\n 'espionage',\n 'espresso',\n 'esquire',\n 'essay',\n 'essence',\n 'essential',\n 'establish',\n 'estate',\n 'esteemed',\n 'estimate',\n 'estimator',\n 'estranged',\n 'estrogen',\n 'etching',\n 'eternal',\n 'eternity',\n 'ethanol',\n 'ether',\n 'ethically',\n 'ethics',\n 'euphemism',\n 'evacuate',\n 'evacuee',\n 'evade',\n 'evaluate',\n 'evaluator',\n 'evaporate',\n 'evasion',\n 'evasive',\n 'even',\n 'everglade',\n 'evergreen',\n 'everybody',\n 'everyday',\n 'everyone',\n 'evict',\n 'evidence',\n 'evident',\n 'evil',\n 'evoke',\n 'evolution',\n 'evolve',\n 'exact',\n 'exalted',\n 'example',\n 'excavate',\n 'excavator',\n 'exceeding',\n 'exception',\n 'excess',\n 'exchange',\n 'excitable',\n 'exciting',\n 'exclaim',\n 'exclude',\n 'excluding',\n 'exclusion',\n 'exclusive',\n 'excretion',\n 'excretory',\n 'excursion',\n 'excusable',\n 'excusably',\n 'excuse',\n 'exemplary',\n 'exemplify',\n 'exemption',\n 'exerciser',\n 'exert',\n 'exes',\n 'exfoliate',\n 'exhale',\n 'exhaust',\n 'exhume',\n 'exile',\n 'existing',\n 'exit',\n 'exodus',\n 'exonerate',\n 'exorcism',\n 'exorcist',\n 'expand',\n 'expanse',\n 'expansion',\n 'expansive',\n 'expectant',\n 'expedited',\n 'expediter',\n 'expel',\n 'expend',\n 'expenses',\n 'expensive',\n 'expert',\n 'expire',\n 'expiring',\n 'explain',\n 'expletive',\n 'explicit',\n 'explode',\n 'exploit',\n 'explore',\n 'exploring',\n 'exponent',\n 'exporter',\n 'exposable',\n 'expose',\n 'exposure',\n 'express',\n 'expulsion',\n 'exquisite',\n 'extended',\n 'extending',\n 'extent',\n 'extenuate',\n 'exterior',\n 'external',\n 'extinct',\n 'extortion',\n 'extradite',\n 'extras',\n 'extrovert',\n 'extrude',\n 'extruding',\n 'exuberant',\n 'fable',\n 'fabric',\n 'fabulous',\n 'facebook',\n 'facecloth',\n 'facedown',\n 'faceless',\n 'facelift',\n 'faceplate',\n 'faceted',\n 'facial',\n 'facility',\n 'facing',\n 'facsimile',\n 'faction',\n 'factoid',\n 'factor',\n 'factsheet',\n 'factual',\n 'faculty',\n 'fade',\n 'fading',\n 'failing',\n 'falcon',\n 'fall',\n 'false',\n 'falsify',\n 'fame',\n 'familiar',\n 'family',\n 'famine',\n 'famished',\n 'fanatic',\n 'fancied',\n 'fanciness',\n 'fancy',\n 'fanfare',\n 'fang',\n 'fanning',\n 'fantasize',\n 'fantastic',\n 'fantasy',\n 'fascism',\n 'fastball',\n 'faster',\n 'fasting',\n 'fastness',\n 'faucet',\n 'favorable',\n 'favorably',\n 'favored',\n 'favoring',\n 'favorite',\n 'fax',\n 'feast',\n 'federal',\n 'fedora',\n 'feeble',\n 'feed',\n 'feel',\n 'feisty',\n 'feline',\n 'felt-tip',\n 'feminine',\n 'feminism',\n 'feminist',\n 'feminize',\n 'femur',\n 'fence',\n 'fencing',\n 'fender',\n 'ferment',\n 'fernlike',\n 'ferocious',\n 'ferocity',\n 'ferret',\n 'ferris',\n 'ferry',\n 'fervor',\n 'fester',\n 'festival',\n 'festive',\n 'festivity',\n 'fetal',\n 'fetch',\n 'fever',\n 'fiber',\n 'fiction',\n 'fiddle',\n 'fiddling',\n 'fidelity',\n 'fidgeting',\n 'fidgety',\n 'fifteen',\n 'fifth',\n 'fiftieth',\n 'fifty',\n 'figment',\n 'figure',\n 'figurine',\n 'filing',\n 'filled',\n 'filler',\n 'filling',\n 'film',\n 'filter',\n 'filth',\n 'filtrate',\n 'finale',\n 'finalist',\n 'finalize',\n 'finally',\n 'finance',\n 'financial',\n 'finch',\n 'fineness',\n 'finer',\n 'finicky',\n 'finished',\n 'finisher',\n 'finishing',\n 'finite',\n 'finless',\n 'finlike',\n 'fiscally',\n 'fit',\n 'five',\n 'flaccid',\n 'flagman',\n 'flagpole',\n 'flagship',\n 'flagstick',\n 'flagstone',\n 'flail',\n 'flakily',\n 'flaky',\n 'flame',\n 'flammable',\n 'flanked',\n 'flanking',\n 'flannels',\n 'flap',\n 'flaring',\n 'flashback',\n 'flashbulb',\n 'flashcard',\n 'flashily',\n 'flashing',\n 'flashy',\n 'flask',\n 'flatbed',\n 'flatfoot',\n 'flatly',\n 'flatness',\n 'flatten',\n 'flattered',\n 'flatterer',\n 'flattery',\n 'flattop',\n 'flatware',\n 'flatworm',\n 'flavored',\n 'flavorful',\n 'flavoring',\n 'flaxseed',\n 'fled',\n 'fleshed',\n 'fleshy',\n 'flick',\n 'flier',\n 'flight',\n 'flinch',\n 'fling',\n 'flint',\n 'flip',\n 'flirt',\n 'float',\n 'flock',\n 'flogging',\n 'flop',\n 'floral',\n 'florist',\n 'floss',\n 'flounder',\n 'flyable',\n 'flyaway',\n 'flyer',\n 'flying',\n 'flyover',\n 'flypaper',\n 'foam',\n 'foe',\n 'fog',\n 'foil',\n 'folic',\n 'folk',\n 'follicle',\n 'follow',\n 'fondling',\n 'fondly',\n 'fondness',\n 'fondue',\n 'font',\n 'food',\n 'fool',\n 'footage',\n 'football',\n 'footbath',\n 'footboard',\n 'footer',\n 'footgear',\n 'foothill',\n 'foothold',\n 'footing',\n 'footless',\n 'footman',\n 'footnote',\n 'footpad',\n 'footpath',\n 'footprint',\n 'footrest',\n 'footsie',\n 'footsore',\n 'footwear',\n 'footwork',\n 'fossil',\n 'foster',\n 'founder',\n 'founding',\n 'fountain',\n 'fox',\n 'foyer',\n 'fraction',\n 'fracture',\n 'fragile',\n 'fragility',\n 'fragment',\n 'fragrance',\n 'fragrant',\n 'frail',\n 'frame',\n 'framing',\n 'frantic',\n 'fraternal',\n 'frayed',\n 'fraying',\n 'frays',\n 'freckled',\n 'freckles',\n 'freebase',\n 'freebee',\n 'freebie',\n 'freedom',\n 'freefall',\n 'freehand',\n 'freeing',\n 'freeload',\n 'freely',\n 'freemason',\n 'freeness',\n 'freestyle',\n 'freeware',\n 'freeway',\n 'freewill',\n 'freezable',\n 'freezing',\n 'freight',\n 'french',\n 'frenzied',\n 'frenzy',\n 'frequency',\n 'frequent',\n 'fresh',\n 'fretful',\n 'fretted',\n 'friction',\n 'friday',\n 'fridge',\n 'fried',\n 'friend',\n 'frighten',\n 'frightful',\n 'frigidity',\n 'frigidly',\n 'frill',\n 'fringe',\n 'frisbee',\n 'frisk',\n 'fritter',\n 'frivolous',\n 'frolic',\n 'from',\n 'front',\n 'frostbite',\n 'frosted',\n 'frostily',\n 'frosting',\n 'frostlike',\n 'frosty',\n 'froth',\n 'frown',\n 'frozen',\n 'fructose',\n 'frugality',\n 'frugally',\n 'fruit',\n 'frustrate',\n 'frying',\n 'gab',\n 'gaffe',\n 'gag',\n 'gainfully',\n 'gaining',\n 'gains',\n 'gala',\n 'gallantly',\n 'galleria',\n 'gallery',\n 'galley',\n 'gallon',\n 'gallows',\n 'gallstone',\n 'galore',\n 'galvanize',\n 'gambling',\n 'game',\n 'gaming',\n 'gamma',\n 'gander',\n 'gangly',\n 'gangrene',\n 'gangway',\n 'gap',\n 'garage',\n 'garbage',\n 'garden',\n 'gargle',\n 'garland',\n 'garlic',\n 'garment',\n 'garnet',\n 'garnish',\n 'garter',\n 'gas',\n 'gatherer',\n 'gathering',\n 'gating',\n 'gauging',\n 'gauntlet',\n 'gauze',\n 'gave',\n 'gawk',\n 'gazing',\n 'gear',\n 'gecko',\n 'geek',\n 'geiger',\n 'gem',\n 'gender',\n 'generic',\n 'generous',\n 'genetics',\n 'genre',\n 'gentile',\n 'gentleman',\n 'gently',\n 'gents',\n 'geography',\n 'geologic',\n 'geologist',\n 'geology',\n 'geometric',\n 'geometry',\n 'geranium',\n 'gerbil',\n 'geriatric',\n 'germicide',\n 'germinate',\n 'germless',\n 'germproof',\n 'gestate',\n 'gestation',\n 'gesture',\n 'getaway',\n 'getting',\n 'getup',\n 'giant',\n 'gibberish',\n 'giblet',\n 'giddily',\n 'giddiness',\n 'giddy',\n 'gift',\n 'gigabyte',\n 'gigahertz',\n 'gigantic',\n 'giggle',\n 'giggling',\n 'giggly',\n 'gigolo',\n 'gilled',\n 'gills',\n 'gimmick',\n 'girdle',\n 'giveaway',\n 'given',\n 'giver',\n 'giving',\n 'gizmo',\n 'gizzard',\n 'glacial',\n 'glacier',\n 'glade',\n 'gladiator',\n 'gladly',\n 'glamorous',\n 'glamour',\n 'glance',\n 'glancing',\n 'glandular',\n 'glare',\n 'glaring',\n 'glass',\n 'glaucoma',\n 'glazing',\n 'gleaming',\n 'gleeful',\n 'glider',\n 'gliding',\n 'glimmer',\n 'glimpse',\n 'glisten',\n 'glitch',\n 'glitter',\n 'glitzy',\n 'gloater',\n 'gloating',\n 'gloomily',\n 'gloomy',\n 'glorified',\n 'glorifier',\n 'glorify',\n 'glorious',\n 'glory',\n 'gloss',\n 'glove',\n 'glowing',\n 'glowworm',\n 'glucose',\n 'glue',\n 'gluten',\n 'glutinous',\n 'glutton',\n 'gnarly',\n 'gnat',\n 'goal',\n 'goatskin',\n 'goes',\n 'goggles',\n 'going',\n 'goldfish',\n 'goldmine',\n 'goldsmith',\n 'golf',\n 'goliath',\n 'gonad',\n 'gondola',\n 'gone',\n 'gong',\n 'good',\n 'gooey',\n 'goofball',\n 'goofiness',\n 'goofy',\n 'google',\n 'goon',\n 'gopher',\n 'gore',\n 'gorged',\n 'gorgeous',\n 'gory',\n 'gosling',\n 'gossip',\n 'gothic',\n 'gotten',\n 'gout',\n 'gown',\n 'grab',\n 'graceful',\n 'graceless',\n 'gracious',\n 'gradation',\n 'graded',\n 'grader',\n 'gradient',\n 'grading',\n 'gradually',\n 'graduate',\n 'graffiti',\n 'grafted',\n 'grafting',\n 'grain',\n 'granddad',\n 'grandkid',\n 'grandly',\n 'grandma',\n 'grandpa',\n 'grandson',\n 'granite',\n 'granny',\n 'granola',\n 'grant',\n 'granular',\n 'grape',\n 'graph',\n 'grapple',\n 'grappling',\n 'grasp',\n 'grass',\n 'gratified',\n 'gratify',\n 'grating',\n 'gratitude',\n 'gratuity',\n 'gravel',\n 'graveness',\n 'graves',\n 'graveyard',\n 'gravitate',\n 'gravity',\n 'gravy',\n 'gray',\n 'grazing',\n 'greasily',\n 'greedily',\n 'greedless',\n 'greedy',\n 'green',\n 'greeter',\n 'greeting',\n 'grew',\n 'greyhound',\n 'grid',\n 'grief',\n 'grievance',\n 'grieving',\n 'grievous',\n 'grill',\n 'grimace',\n 'grimacing',\n 'grime',\n 'griminess',\n 'grimy',\n 'grinch',\n 'grinning',\n 'grip',\n 'gristle',\n 'grit',\n 'groggily',\n 'groggy',\n 'groin',\n 'groom',\n 'groove',\n 'grooving',\n 'groovy',\n 'grope',\n 'ground',\n 'grouped',\n 'grout',\n 'grove',\n 'grower',\n 'growing',\n 'growl',\n 'grub',\n 'grudge',\n 'grudging',\n 'grueling',\n 'gruffly',\n 'grumble',\n 'grumbling',\n 'grumbly',\n 'grumpily',\n 'grunge',\n 'grunt',\n 'guacamole',\n 'guidable',\n 'guidance',\n 'guide',\n 'guiding',\n 'guileless',\n 'guise',\n 'gulf',\n 'gullible',\n 'gully',\n 'gulp',\n 'gumball',\n 'gumdrop',\n 'gumminess',\n 'gumming',\n 'gummy',\n 'gurgle',\n 'gurgling',\n 'guru',\n 'gush',\n 'gusto',\n 'gusty',\n 'gutless',\n 'guts',\n 'gutter',\n 'guy',\n 'guzzler',\n 'gyration',\n 'habitable',\n 'habitant',\n 'habitat',\n 'habitual',\n 'hacked',\n 'hacker',\n 'hacking',\n 'hacksaw',\n 'had',\n 'haggler',\n 'haiku',\n 'half',\n 'halogen',\n 'halt',\n 'halved',\n 'halves',\n 'hamburger',\n 'hamlet',\n 'hammock',\n 'hamper',\n 'hamster',\n 'hamstring',\n 'handbag',\n 'handball',\n 'handbook',\n 'handbrake',\n 'handcart',\n 'handclap',\n 'handclasp',\n 'handcraft',\n 'handcuff',\n 'handed',\n 'handful',\n 'handgrip',\n 'handgun',\n 'handheld',\n 'handiness',\n 'handiwork',\n 'handlebar',\n 'handled',\n 'handler',\n 'handling',\n 'handmade',\n 'handoff',\n 'handpick',\n 'handprint',\n 'handrail',\n 'handsaw',\n 'handset',\n 'handsfree',\n 'handshake',\n 'handstand',\n 'handwash',\n 'handwork',\n 'handwoven',\n 'handwrite',\n 'handyman',\n 'hangnail',\n 'hangout',\n 'hangover',\n 'hangup',\n 'hankering',\n 'hankie',\n 'hanky',\n 'haphazard',\n 'happening',\n 'happier',\n 'happiest',\n 'happily',\n 'happiness',\n 'happy',\n 'harbor',\n 'hardcopy',\n 'hardcore',\n 'hardcover',\n 'harddisk',\n 'hardened',\n 'hardener',\n 'hardening',\n 'hardhat',\n 'hardhead',\n 'hardiness',\n 'hardly',\n 'hardness',\n 'hardship',\n 'hardware',\n 'hardwired',\n 'hardwood',\n 'hardy',\n 'harmful',\n 'harmless',\n 'harmonica',\n 'harmonics',\n 'harmonize',\n 'harmony',\n 'harness',\n 'harpist',\n 'harsh',\n 'harvest',\n 'hash',\n 'hassle',\n 'haste',\n 'hastily',\n 'hastiness',\n 'hasty',\n 'hatbox',\n 'hatchback',\n 'hatchery',\n 'hatchet',\n 'hatching',\n 'hatchling',\n 'hate',\n 'hatless',\n 'hatred',\n 'haunt',\n 'haven',\n 'hazard',\n 'hazelnut',\n 'hazily',\n 'haziness',\n 'hazing',\n 'hazy',\n 'headache',\n 'headband',\n 'headboard',\n 'headcount',\n 'headdress',\n 'headed',\n 'header',\n 'headfirst',\n 'headgear',\n 'heading',\n 'headlamp',\n 'headless',\n 'headlock',\n 'headphone',\n 'headpiece',\n 'headrest',\n 'headroom',\n 'headscarf',\n 'headset',\n 'headsman',\n 'headstand',\n 'headstone',\n 'headway',\n 'headwear',\n 'heap',\n 'heat',\n 'heave',\n 'heavily',\n 'heaviness',\n 'heaving',\n 'hedge',\n 'hedging',\n 'heftiness',\n 'hefty',\n 'helium',\n 'helmet',\n 'helper',\n 'helpful',\n 'helping',\n 'helpless',\n 'helpline',\n 'hemlock',\n 'hemstitch',\n 'hence',\n 'henchman',\n 'henna',\n 'herald',\n 'herbal',\n 'herbicide',\n 'herbs',\n 'heritage',\n 'hermit',\n 'heroics',\n 'heroism',\n 'herring',\n 'herself',\n 'hertz',\n 'hesitancy',\n 'hesitant',\n 'hesitate',\n 'hexagon',\n 'hexagram',\n 'hubcap',\n 'huddle',\n 'huddling',\n 'huff',\n 'hug',\n 'hula',\n 'hulk',\n 'hull',\n 'human',\n 'humble',\n 'humbling',\n 'humbly',\n 'humid',\n 'humiliate',\n 'humility',\n 'humming',\n 'hummus',\n 'humongous',\n 'humorist',\n 'humorless',\n 'humorous',\n 'humpback',\n 'humped',\n 'humvee',\n 'hunchback',\n 'hundredth',\n 'hunger',\n 'hungrily',\n 'hungry',\n 'hunk',\n 'hunter',\n 'hunting',\n 'huntress',\n 'huntsman',\n 'hurdle',\n 'hurled',\n 'hurler',\n 'hurling',\n 'hurray',\n 'hurricane',\n 'hurried',\n 'hurry',\n 'hurt',\n 'husband',\n 'hush',\n 'husked',\n 'huskiness',\n 'hut',\n 'hybrid',\n 'hydrant',\n 'hydrated',\n 'hydration',\n 'hydrogen',\n 'hydroxide',\n 'hyperlink',\n 'hypertext',\n 'hyphen',\n 'hypnoses',\n 'hypnosis',\n 'hypnotic',\n 'hypnotism',\n 'hypnotist',\n 'hypnotize',\n 'hypocrisy',\n 'hypocrite',\n 'ibuprofen',\n 'ice',\n 'iciness',\n 'icing',\n 'icky',\n 'icon',\n 'icy',\n 'idealism',\n 'idealist',\n 'idealize',\n 'ideally',\n 'idealness',\n 'identical',\n 'identify',\n 'identity',\n 'ideology',\n 'idiocy',\n 'idiom',\n 'idly',\n 'igloo',\n 'ignition',\n 'ignore',\n 'iguana',\n 'illicitly',\n 'illusion',\n 'illusive',\n 'image',\n 'imaginary',\n 'imagines',\n 'imaging',\n 'imbecile',\n 'imitate',\n 'imitation',\n 'immature',\n 'immerse',\n 'immersion',\n 'imminent',\n 'immobile',\n 'immodest',\n 'immorally',\n 'immortal',\n 'immovable',\n 'immovably',\n 'immunity',\n 'immunize',\n 'impaired',\n 'impale',\n 'impart',\n 'impatient',\n 'impeach',\n 'impeding',\n 'impending',\n 'imperfect',\n 'imperial',\n 'impish',\n 'implant',\n 'implement',\n 'implicate',\n 'implicit',\n 'implode',\n 'implosion',\n 'implosive',\n 'imply',\n 'impolite',\n 'important',\n 'importer',\n 'impose',\n 'imposing',\n 'impotence',\n 'impotency',\n 'impotent',\n 'impound',\n 'imprecise',\n 'imprint',\n 'imprison',\n 'impromptu',\n 'improper',\n 'improve',\n 'improving',\n 'improvise',\n 'imprudent',\n 'impulse',\n 'impulsive',\n 'impure',\n 'impurity',\n 'iodine',\n 'iodize',\n 'ion',\n 'ipad',\n 'iphone',\n 'ipod',\n 'irate',\n 'irk',\n 'iron',\n 'irregular',\n 'irrigate',\n 'irritable',\n 'irritably',\n 'irritant',\n 'irritate',\n 'islamic',\n 'islamist',\n 'isolated',\n 'isolating',\n 'isolation',\n 'isotope',\n 'issue',\n 'issuing',\n 'italicize',\n 'italics',\n 'item',\n 'itinerary',\n 'itunes',\n 'ivory',\n 'ivy',\n 'jab',\n 'jackal',\n 'jacket',\n 'jackknife',\n 'jackpot',\n 'jailbird',\n 'jailbreak',\n 'jailer',\n 'jailhouse',\n 'jalapeno',\n 'jam',\n 'janitor',\n 'january',\n 'jargon',\n 'jarring',\n 'jasmine',\n 'jaundice',\n 'jaunt',\n 'java',\n 'jawed',\n 'jawless',\n 'jawline',\n 'jaws',\n 'jaybird',\n 'jaywalker',\n 'jazz',\n 'jeep',\n 'jeeringly',\n 'jellied',\n 'jelly',\n 'jersey',\n 'jester',\n 'jet',\n 'jiffy',\n 'jigsaw',\n 'jimmy',\n 'jingle',\n 'jingling',\n 'jinx',\n 'jitters',\n 'jittery',\n 'job',\n 'jockey',\n 'jockstrap',\n 'jogger',\n 'jogging',\n 'john',\n 'joining',\n 'jokester',\n 'jokingly',\n 'jolliness',\n 'jolly',\n 'jolt',\n 'jot',\n 'jovial',\n 'joyfully',\n 'joylessly',\n 'joyous',\n 'joyride',\n 'joystick',\n 'jubilance',\n 'jubilant',\n 'judge',\n 'judgingly',\n 'judicial',\n 'judiciary',\n 'judo',\n 'juggle',\n 'juggling',\n 'jugular',\n 'juice',\n 'juiciness',\n 'juicy',\n 'jujitsu',\n 'jukebox',\n 'july',\n 'jumble',\n 'jumbo',\n 'jump',\n 'junction',\n 'juncture',\n 'june',\n 'junior',\n 'juniper',\n 'junkie',\n 'junkman',\n 'junkyard',\n 'jurist',\n 'juror',\n 'jury',\n 'justice',\n 'justifier',\n 'justify',\n 'justly',\n 'justness',\n 'juvenile',\n 'kabob',\n 'kangaroo',\n 'karaoke',\n 'karate',\n 'karma',\n 'kebab',\n 'keenly',\n 'keenness',\n 'keep',\n 'keg',\n 'kelp',\n 'kennel',\n 'kept',\n 'kerchief',\n 'kerosene',\n 'kettle',\n 'kick',\n 'kiln',\n 'kilobyte',\n 'kilogram',\n 'kilometer',\n 'kilowatt',\n 'kilt',\n 'kimono',\n 'kindle',\n 'kindling',\n 'kindly',\n 'kindness',\n 'kindred',\n 'kinetic',\n 'kinfolk',\n 'king',\n 'kinship',\n 'kinsman',\n 'kinswoman',\n 'kissable',\n 'kisser',\n 'kissing',\n 'kitchen',\n 'kite',\n 'kitten',\n 'kitty',\n 'kiwi',\n 'kleenex',\n 'knapsack',\n 'knee',\n 'knelt',\n 'knickers',\n 'knoll',\n 'koala',\n 'kooky',\n 'kosher',\n 'krypton',\n 'kudos',\n 'kung',\n 'labored',\n 'laborer',\n 'laboring',\n 'laborious',\n 'labrador',\n 'ladder',\n 'ladies',\n 'ladle',\n 'ladybug',\n 'ladylike',\n 'lagged',\n 'lagging',\n 'lagoon',\n 'lair',\n 'lake',\n 'lance',\n 'landed',\n 'landfall',\n 'landfill',\n 'landing',\n 'landlady',\n 'landless',\n 'landline',\n 'landlord',\n 'landmark',\n 'landmass',\n 'landmine',\n 'landowner',\n 'landscape',\n 'landside',\n 'landslide',\n 'language',\n 'lankiness',\n 'lanky',\n 'lantern',\n 'lapdog',\n 'lapel',\n 'lapped',\n 'lapping',\n 'laptop',\n 'lard',\n 'large',\n 'lark',\n 'lash',\n 'lasso',\n 'last',\n 'latch',\n 'late',\n 'lather',\n 'latitude',\n 'latrine',\n 'latter',\n 'latticed',\n 'launch',\n 'launder',\n 'laundry',\n 'laurel',\n 'lavender',\n 'lavish',\n 'laxative',\n 'lazily',\n 'laziness',\n 'lazy',\n 'lecturer',\n 'left',\n 'legacy',\n 'legal',\n 'legend',\n 'legged',\n 'leggings',\n 'legible',\n 'legibly',\n 'legislate',\n 'lego',\n 'legroom',\n 'legume',\n 'legwarmer',\n 'legwork',\n 'lemon',\n 'lend',\n 'length',\n 'lens',\n 'lent',\n 'leotard',\n 'lesser',\n 'letdown',\n 'lethargic',\n 'lethargy',\n 'letter',\n 'lettuce',\n 'level',\n 'leverage',\n 'levers',\n 'levitate',\n 'levitator',\n 'liability',\n 'liable',\n 'liberty',\n 'librarian',\n 'library',\n 'licking',\n 'licorice',\n 'lid',\n 'life',\n 'lifter',\n 'lifting',\n 'liftoff',\n 'ligament',\n 'likely',\n 'likeness',\n 'likewise',\n 'liking',\n 'lilac',\n 'lilly',\n 'lily',\n 'limb',\n 'limeade',\n 'limelight',\n 'limes',\n 'limit',\n 'limping',\n 'limpness',\n 'line',\n 'lingo',\n 'linguini',\n 'linguist',\n 'lining',\n 'linked',\n 'linoleum',\n 'linseed',\n 'lint',\n 'lion',\n 'lip',\n 'liquefy',\n 'liqueur',\n 'liquid',\n 'lisp',\n 'list',\n 'litigate',\n 'litigator',\n 'litmus',\n 'litter',\n 'little',\n 'livable',\n 'lived',\n 'lively',\n 'liver',\n 'livestock',\n 'lividly',\n 'living',\n 'lizard',\n 'lubricant',\n 'lubricate',\n 'lucid',\n 'luckily',\n 'luckiness',\n 'luckless',\n 'lucrative',\n 'ludicrous',\n 'lugged',\n 'lukewarm',\n 'lullaby',\n 'lumber',\n 'luminance',\n 'luminous',\n 'lumpiness',\n 'lumping',\n 'lumpish',\n 'lunacy',\n 'lunar',\n 'lunchbox',\n 'luncheon',\n 'lunchroom',\n 'lunchtime',\n 'lung',\n 'lurch',\n 'lure',\n 'luridness',\n 'lurk',\n 'lushly',\n 'lushness',\n 'luster',\n 'lustfully',\n 'lustily',\n 'lustiness',\n 'lustrous',\n 'lusty',\n 'luxurious',\n 'luxury',\n 'lying',\n 'lyrically',\n 'lyricism',\n 'lyricist',\n 'lyrics',\n 'macarena',\n 'macaroni',\n 'macaw',\n 'mace',\n 'machine',\n 'machinist',\n 'magazine',\n 'magenta',\n 'maggot',\n 'magical',\n 'magician',\n 'magma',\n 'magnesium',\n 'magnetic',\n 'magnetism',\n 'magnetize',\n 'magnifier',\n 'magnify',\n 'magnitude',\n 'magnolia',\n 'mahogany',\n 'maimed',\n 'majestic',\n 'majesty',\n 'majorette',\n 'majority',\n 'makeover',\n 'maker',\n 'makeshift',\n 'making',\n 'malformed',\n 'malt',\n 'mama',\n 'mammal',\n 'mammary',\n 'mammogram',\n 'manager',\n 'managing',\n 'manatee',\n 'mandarin',\n 'mandate',\n 'mandatory',\n 'mandolin',\n 'manger',\n 'mangle',\n 'mango',\n 'mangy',\n 'manhandle',\n 'manhole',\n 'manhood',\n 'manhunt',\n 'manicotti',\n 'manicure',\n 'manifesto',\n 'manila',\n 'mankind',\n 'manlike',\n 'manliness',\n 'manly',\n 'manmade',\n 'manned',\n 'mannish',\n 'manor',\n 'manpower',\n 'mantis',\n 'mantra',\n 'manual',\n 'many',\n 'map',\n 'marathon',\n 'marauding',\n 'marbled',\n 'marbles',\n 'marbling',\n 'march',\n 'mardi',\n 'margarine',\n 'margarita',\n 'margin',\n 'marigold',\n 'marina',\n 'marine',\n 'marital',\n 'maritime',\n 'marlin',\n 'marmalade',\n 'maroon',\n 'married',\n 'marrow',\n 'marry',\n 'marshland',\n 'marshy',\n 'marsupial',\n 'marvelous',\n 'marxism',\n 'mascot',\n 'masculine',\n 'mashed',\n 'mashing',\n 'massager',\n 'masses',\n 'massive',\n 'mastiff',\n 'matador',\n 'matchbook',\n 'matchbox',\n 'matcher',\n 'matching',\n 'matchless',\n 'material',\n 'maternal',\n 'maternity',\n 'math',\n 'mating',\n 'matriarch',\n 'matrimony',\n 'matrix',\n 'matron',\n 'matted',\n 'matter',\n 'maturely',\n 'maturing',\n 'maturity',\n 'mauve',\n 'maverick',\n 'maximize',\n 'maximum',\n 'maybe',\n 'mayday',\n 'mayflower',\n 'moaner',\n 'moaning',\n 'mobile',\n 'mobility',\n 'mobilize',\n 'mobster',\n 'mocha',\n 'mocker',\n 'mockup',\n 'modified',\n 'modify',\n 'modular',\n 'modulator',\n 'module',\n 'moisten',\n 'moistness',\n 'moisture',\n 'molar',\n 'molasses',\n 'mold',\n 'molecular',\n 'molecule',\n 'molehill',\n 'mollusk',\n 'mom',\n 'monastery',\n 'monday',\n 'monetary',\n 'monetize',\n 'moneybags',\n 'moneyless',\n 'moneywise',\n 'mongoose',\n 'mongrel',\n 'monitor',\n 'monkhood',\n 'monogamy',\n 'monogram',\n 'monologue',\n 'monopoly',\n 'monorail',\n 'monotone',\n 'monotype',\n 'monoxide',\n 'monsieur',\n 'monsoon',\n 'monstrous',\n 'monthly',\n 'monument',\n 'moocher',\n 'moodiness',\n 'moody',\n 'mooing',\n 'moonbeam',\n 'mooned',\n 'moonlight',\n 'moonlike',\n 'moonlit',\n 'moonrise',\n 'moonscape',\n 'moonshine',\n 'moonstone',\n 'moonwalk',\n 'mop',\n 'morale',\n 'morality',\n 'morally',\n 'morbidity',\n 'morbidly',\n 'morphine',\n 'morphing',\n 'morse',\n 'mortality',\n 'mortally',\n 'mortician',\n 'mortified',\n 'mortify',\n 'mortuary',\n 'mosaic',\n 'mossy',\n 'most',\n 'mothball',\n 'mothproof',\n 'motion',\n 'motivate',\n 'motivator',\n 'motive',\n 'motocross',\n 'motor',\n 'motto',\n 'mountable',\n 'mountain',\n 'mounted',\n 'mounting',\n 'mourner',\n 'mournful',\n 'mouse',\n 'mousiness',\n 'moustache',\n 'mousy',\n 'mouth',\n 'movable',\n 'move',\n 'movie',\n 'moving',\n 'mower',\n 'mowing',\n 'much',\n 'muck',\n 'mud',\n 'mug',\n 'mulberry',\n 'mulch',\n 'mule',\n 'mulled',\n 'mullets',\n 'multiple',\n 'multiply',\n 'multitask',\n 'multitude',\n 'mumble',\n 'mumbling',\n 'mumbo',\n 'mummified',\n 'mummify',\n 'mummy',\n 'mumps',\n 'munchkin',\n 'mundane',\n 'municipal',\n 'muppet',\n 'mural',\n 'murkiness',\n 'murky',\n 'murmuring',\n 'muscular',\n 'museum',\n 'mushily',\n 'mushiness',\n 'mushroom',\n 'mushy',\n 'music',\n 'musket',\n 'muskiness',\n 'musky',\n 'mustang',\n 'mustard',\n 'muster',\n 'mustiness',\n 'musty',\n 'mutable',\n 'mutate',\n 'mutation',\n 'mute',\n 'mutilated',\n 'mutilator',\n 'mutiny',\n 'mutt',\n 'mutual',\n 'muzzle',\n 'myself',\n 'myspace',\n 'mystified',\n 'mystify',\n 'myth',\n 'nacho',\n 'nag',\n 'nail',\n 'name',\n 'naming',\n 'nanny',\n 'nanometer',\n 'nape',\n 'napkin',\n 'napped',\n 'napping',\n 'nappy',\n 'narrow',\n 'nastily',\n 'nastiness',\n 'national',\n 'native',\n 'nativity',\n 'natural',\n 'nature',\n 'naturist',\n 'nautical',\n 'navigate',\n 'navigator',\n 'navy',\n 'nearby',\n 'nearest',\n 'nearly',\n 'nearness',\n 'neatly',\n 'neatness',\n 'nebula',\n 'nebulizer',\n 'nectar',\n 'negate',\n 'negation',\n 'negative',\n 'neglector',\n 'negligee',\n 'negligent',\n 'negotiate',\n 'nemeses',\n 'nemesis',\n 'neon',\n 'nephew',\n 'nerd',\n 'nervous',\n 'nervy',\n 'nest',\n 'net',\n 'neurology',\n 'neuron',\n 'neurosis',\n 'neurotic',\n 'neuter',\n 'neutron',\n 'never',\n 'next',\n 'nibble',\n 'nickname',\n 'nicotine',\n 'niece',\n 'nifty',\n 'nimble',\n 'nimbly',\n 'nineteen',\n 'ninetieth',\n 'ninja',\n 'nintendo',\n 'ninth',\n 'nuclear',\n 'nuclei',\n 'nucleus',\n 'nugget',\n 'nullify',\n 'number',\n 'numbing',\n 'numbly',\n 'numbness',\n 'numeral',\n 'numerate',\n 'numerator',\n 'numeric',\n 'numerous',\n 'nuptials',\n 'nursery',\n 'nursing',\n 'nurture',\n 'nutcase',\n 'nutlike',\n 'nutmeg',\n 'nutrient',\n 'nutshell',\n 'nuttiness',\n 'nutty',\n 'nuzzle',\n 'nylon',\n 'oaf',\n 'oak',\n 'oasis',\n 'oat',\n 'obedience',\n 'obedient',\n 'obituary',\n 'object',\n 'obligate',\n 'obliged',\n 'oblivion',\n 'oblivious',\n 'oblong',\n 'obnoxious',\n 'oboe',\n 'obscure',\n 'obscurity',\n 'observant',\n 'observer',\n 'observing',\n 'obsessed',\n 'obsession',\n 'obsessive',\n 'obsolete',\n 'obstacle',\n 'obstinate',\n 'obstruct',\n 'obtain',\n 'obtrusive',\n 'obtuse',\n 'obvious',\n 'occultist',\n 'occupancy',\n 'occupant',\n 'occupier',\n 'occupy',\n 'ocean',\n 'ocelot',\n 'octagon',\n 'octane',\n 'october',\n 'octopus',\n 'ogle',\n 'oil',\n 'oink',\n 'ointment',\n 'okay',\n 'old',\n 'olive',\n 'olympics',\n 'omega',\n 'omen',\n 'ominous',\n 'omission',\n 'omit',\n 'omnivore',\n 'onboard',\n 'oncoming',\n 'ongoing',\n 'onion',\n 'online',\n 'onlooker',\n 'only',\n 'onscreen',\n 'onset',\n 'onshore',\n 'onslaught',\n 'onstage',\n 'onto',\n 'onward',\n 'onyx',\n 'oops',\n 'ooze',\n 'oozy',\n 'opacity',\n 'opal',\n 'open',\n 'operable',\n 'operate',\n 'operating',\n 'operation',\n 'operative',\n 'operator',\n 'opium',\n 'opossum',\n 'opponent',\n 'oppose',\n 'opposing',\n 'opposite',\n 'oppressed',\n 'oppressor',\n 'opt',\n 'opulently',\n 'osmosis',\n 'other',\n 'otter',\n 'ouch',\n 'ought',\n 'ounce',\n 'outage',\n 'outback',\n 'outbid',\n 'outboard',\n 'outbound',\n 'outbreak',\n 'outburst',\n 'outcast',\n 'outclass',\n 'outcome',\n 'outdated',\n 'outdoors',\n 'outer',\n 'outfield',\n 'outfit',\n 'outflank',\n 'outgoing',\n 'outgrow',\n 'outhouse',\n 'outing',\n 'outlast',\n 'outlet',\n 'outline',\n 'outlook',\n 'outlying',\n 'outmatch',\n 'outmost',\n 'outnumber',\n 'outplayed',\n 'outpost',\n 'outpour',\n 'output',\n 'outrage',\n 'outrank',\n 'outreach',\n 'outright',\n 'outscore',\n 'outsell',\n 'outshine',\n 'outshoot',\n 'outsider',\n 'outskirts',\n 'outsmart',\n 'outsource',\n 'outspoken',\n 'outtakes',\n 'outthink',\n 'outward',\n 'outweigh',\n 'outwit',\n 'oval',\n 'ovary',\n 'oven',\n 'overact',\n 'overall',\n 'overarch',\n 'overbid',\n 'overbill',\n 'overbite',\n 'overblown',\n 'overboard',\n 'overbook',\n 'overbuilt',\n 'overcast',\n 'overcoat',\n 'overcome',\n 'overcook',\n 'overcrowd',\n 'overdraft',\n 'overdrawn',\n 'overdress',\n 'overdrive',\n 'overdue',\n 'overeager',\n 'overeater',\n 'overexert',\n 'overfed',\n 'overfeed',\n 'overfill',\n 'overflow',\n 'overfull',\n 'overgrown',\n 'overhand',\n 'overhang',\n 'overhaul',\n 'overhead',\n 'overhear',\n 'overheat',\n 'overhung',\n 'overjoyed',\n 'overkill',\n 'overlabor',\n 'overlaid',\n 'overlap',\n 'overlay',\n 'overload',\n 'overlook',\n 'overlord',\n 'overlying',\n 'overnight',\n 'overpass',\n 'overpay',\n 'overplant',\n 'overplay',\n 'overpower',\n 'overprice',\n 'overrate',\n 'overreach',\n 'overreact',\n 'override',\n 'overripe',\n 'overrule',\n 'overrun',\n 'overshoot',\n 'overshot',\n 'oversight',\n 'oversized',\n 'oversleep',\n 'oversold',\n 'overspend',\n 'overstate',\n 'overstay',\n 'overstep',\n 'overstock',\n 'overstuff',\n 'oversweet',\n 'overtake',\n 'overthrow',\n 'overtime',\n 'overtly',\n 'overtone',\n 'overture',\n 'overturn',\n 'overuse',\n 'overvalue',\n 'overview',\n 'overwrite',\n 'owl',\n 'oxford',\n 'oxidant',\n 'oxidation',\n 'oxidize',\n 'oxidizing',\n 'oxygen',\n 'oxymoron',\n 'oyster',\n 'ozone',\n 'paced',\n 'pacemaker',\n 'pacific',\n 'pacifier',\n 'pacifism',\n 'pacifist',\n 'pacify',\n 'padded',\n 'padding',\n 'paddle',\n 'paddling',\n 'padlock',\n 'pagan',\n 'pager',\n 'paging',\n 'pajamas',\n 'palace',\n 'palatable',\n 'palm',\n 'palpable',\n 'palpitate',\n 'paltry',\n 'pampered',\n 'pamperer',\n 'pampers',\n 'pamphlet',\n 'panama',\n 'pancake',\n 'pancreas',\n 'panda',\n 'pandemic',\n 'pang',\n 'panhandle',\n 'panic',\n 'panning',\n 'panorama',\n 'panoramic',\n 'panther',\n 'pantomime',\n 'pantry',\n 'pants',\n 'pantyhose',\n 'paparazzi',\n 'papaya',\n 'paper',\n 'paprika',\n 'papyrus',\n 'parabola',\n 'parachute',\n 'parade',\n 'paradox',\n 'paragraph',\n 'parakeet',\n 'paralegal',\n 'paralyses',\n 'paralysis',\n 'paralyze',\n 'paramedic',\n 'parameter',\n 'paramount',\n 'parasail',\n 'parasite',\n 'parasitic',\n 'parcel',\n 'parched',\n 'parchment',\n 'pardon',\n 'parish',\n 'parka',\n 'parking',\n 'parkway',\n 'parlor',\n 'parmesan',\n 'parole',\n 'parrot',\n 'parsley',\n 'parsnip',\n 'partake',\n 'parted',\n 'parting',\n 'partition',\n 'partly',\n 'partner',\n 'partridge',\n 'party',\n 'passable',\n 'passably',\n 'passage',\n 'passcode',\n 'passenger',\n 'passerby',\n 'passing',\n 'passion',\n 'passive',\n 'passivism',\n 'passover',\n 'passport',\n 'password',\n 'pasta',\n 'pasted',\n 'pastel',\n 'pastime',\n 'pastor',\n 'pastrami',\n 'pasture',\n 'pasty',\n 'patchwork',\n 'patchy',\n 'paternal',\n 'paternity',\n 'path',\n 'patience',\n 'patient',\n 'patio',\n 'patriarch',\n 'patriot',\n 'patrol',\n 'patronage',\n 'patronize',\n 'pauper',\n 'pavement',\n 'paver',\n 'pavestone',\n 'pavilion',\n 'paving',\n 'pawing',\n 'payable',\n 'payback',\n 'paycheck',\n 'payday',\n 'payee',\n 'payer',\n 'paying',\n 'payment',\n 'payphone',\n 'payroll',\n 'pebble',\n 'pebbly',\n 'pecan',\n 'pectin',\n 'peculiar',\n 'peddling',\n 'pediatric',\n 'pedicure',\n 'pedigree',\n 'pedometer',\n 'pegboard',\n 'pelican',\n 'pellet',\n 'pelt',\n 'pelvis',\n 'penalize',\n 'penalty',\n 'pencil',\n 'pendant',\n 'pending',\n 'penholder',\n 'penknife',\n 'pennant',\n 'penniless',\n 'penny',\n 'penpal',\n 'pension',\n 'pentagon',\n 'pentagram',\n 'pep',\n 'perceive',\n 'percent',\n 'perch',\n 'percolate',\n 'perennial',\n 'perfected',\n 'perfectly',\n 'perfume',\n 'periscope',\n 'perish',\n 'perjurer',\n 'perjury',\n 'perkiness',\n 'perky',\n 'perm',\n 'peroxide',\n 'perpetual',\n 'perplexed',\n 'persecute',\n 'persevere',\n 'persuaded',\n 'persuader',\n 'pesky',\n 'peso',\n 'pessimism',\n 'pessimist',\n 'pester',\n 'pesticide',\n 'petal',\n 'petite',\n 'petition',\n 'petri',\n 'petroleum',\n 'petted',\n 'petticoat',\n 'pettiness',\n 'petty',\n 'petunia',\n 'phantom',\n 'phobia',\n 'phoenix',\n 'phonebook',\n 'phoney',\n 'phonics',\n 'phoniness',\n 'phony',\n 'phosphate',\n 'photo',\n 'phrase',\n 'phrasing',\n 'placard',\n 'placate',\n 'placidly',\n 'plank',\n 'planner',\n 'plant',\n 'plasma',\n 'plaster',\n 'plastic',\n 'plated',\n 'platform',\n 'plating',\n 'platinum',\n 'platonic',\n 'platter',\n 'platypus',\n 'plausible',\n 'plausibly',\n 'playable',\n 'playback',\n 'player',\n 'playful',\n 'playgroup',\n 'playhouse',\n 'playing',\n 'playlist',\n 'playmaker',\n 'playmate',\n 'playoff',\n 'playpen',\n 'playroom',\n 'playset',\n 'plaything',\n 'playtime',\n 'plaza',\n 'pleading',\n 'pleat',\n 'pledge',\n 'plentiful',\n 'plenty',\n 'plethora',\n 'plexiglas',\n 'pliable',\n 'plod',\n 'plop',\n 'plot',\n 'plow',\n 'ploy',\n 'pluck',\n 'plug',\n 'plunder',\n 'plunging',\n 'plural',\n 'plus',\n 'plutonium',\n 'plywood',\n 'poach',\n 'pod',\n 'poem',\n 'poet',\n 'pogo',\n 'pointed',\n 'pointer',\n 'pointing',\n 'pointless',\n 'pointy',\n 'poise',\n 'poison',\n 'poker',\n 'poking',\n 'polar',\n 'police',\n 'policy',\n 'polio',\n 'polish',\n 'politely',\n 'polka',\n 'polo',\n 'polyester',\n 'polygon',\n 'polygraph',\n 'polymer',\n 'poncho',\n 'pond',\n 'pony',\n 'popcorn',\n 'pope',\n 'poplar',\n 'popper',\n 'poppy',\n 'popsicle',\n 'populace',\n 'popular',\n 'populate',\n 'porcupine',\n 'pork',\n 'porous',\n 'porridge',\n 'portable',\n 'portal',\n 'portfolio',\n 'porthole',\n 'portion',\n 'portly',\n 'portside',\n 'poser',\n 'posh',\n 'posing',\n 'possible',\n 'possibly',\n 'possum',\n 'postage',\n 'postal',\n 'postbox',\n 'postcard',\n 'posted',\n 'poster',\n 'posting',\n 'postnasal',\n 'posture',\n 'postwar',\n 'pouch',\n 'pounce',\n 'pouncing',\n 'pound',\n 'pouring',\n 'pout',\n 'powdered',\n 'powdering',\n 'powdery',\n 'power',\n 'powwow',\n 'pox',\n 'praising',\n 'prance',\n 'prancing',\n 'pranker',\n 'prankish',\n 'prankster',\n 'prayer',\n 'praying',\n 'preacher',\n 'preaching',\n 'preachy',\n 'preamble',\n 'precinct',\n 'precise',\n 'precision',\n 'precook',\n 'precut',\n 'predator',\n 'predefine',\n 'predict',\n 'preface',\n 'prefix',\n 'preflight',\n 'preformed',\n 'pregame',\n 'pregnancy',\n 'pregnant',\n 'preheated',\n 'prelaunch',\n 'prelaw',\n 'prelude',\n 'premiere',\n 'premises',\n 'premium',\n 'prenatal',\n 'preoccupy',\n 'preorder',\n 'prepaid',\n 'prepay',\n 'preplan',\n 'preppy',\n 'preschool',\n 'prescribe',\n 'preseason',\n 'preset',\n 'preshow',\n 'president',\n 'presoak',\n 'press',\n 'presume',\n 'presuming',\n 'preteen',\n 'pretended',\n 'pretender',\n 'pretense',\n 'pretext',\n 'pretty',\n 'pretzel',\n 'prevail',\n 'prevalent',\n 'prevent',\n 'preview',\n 'previous',\n 'prewar',\n 'prewashed',\n 'prideful',\n 'pried',\n 'primal',\n 'primarily',\n 'primary',\n 'primate',\n 'primer',\n 'primp',\n 'princess',\n 'print',\n 'prior',\n 'prism',\n 'prison',\n 'prissy',\n 'pristine',\n 'privacy',\n 'private',\n 'privatize',\n 'prize',\n 'proactive',\n 'probable',\n 'probably',\n 'probation',\n 'probe',\n 'probing',\n 'probiotic',\n 'problem',\n 'procedure',\n 'process',\n 'proclaim',\n 'procreate',\n 'procurer',\n 'prodigal',\n 'prodigy',\n 'produce',\n 'product',\n 'profane',\n 'profanity',\n 'professed',\n 'professor',\n 'profile',\n 'profound',\n 'profusely',\n 'progeny',\n 'prognosis',\n 'program',\n 'progress',\n 'projector',\n 'prologue',\n 'prolonged',\n 'promenade',\n 'prominent',\n 'promoter',\n 'promotion',\n 'prompter',\n 'promptly',\n 'prone',\n 'prong',\n 'pronounce',\n 'pronto',\n 'proofing',\n 'proofread',\n 'proofs',\n 'propeller',\n 'properly',\n 'property',\n 'proponent',\n 'proposal',\n 'propose',\n 'props',\n 'prorate',\n 'protector',\n 'protegee',\n 'proton',\n 'prototype',\n 'protozoan',\n 'protract',\n 'protrude',\n 'proud',\n 'provable',\n 'proved',\n 'proven',\n 'provided',\n 'provider',\n 'providing',\n 'province',\n 'proving',\n 'provoke',\n 'provoking',\n 'provolone',\n 'prowess',\n 'prowler',\n 'prowling',\n 'proximity',\n 'proxy',\n 'prozac',\n 'prude',\n 'prudishly',\n 'prune',\n 'pruning',\n 'pry',\n 'psychic',\n 'public',\n 'publisher',\n 'pucker',\n 'pueblo',\n 'pug',\n 'pull',\n 'pulmonary',\n 'pulp',\n 'pulsate',\n 'pulse',\n 'pulverize',\n 'puma',\n 'pumice',\n 'pummel',\n 'punch',\n 'punctual',\n 'punctuate',\n 'punctured',\n 'pungent',\n 'punisher',\n 'punk',\n 'pupil',\n 'puppet',\n 'puppy',\n 'purchase',\n 'pureblood',\n 'purebred',\n 'purely',\n 'pureness',\n 'purgatory',\n 'purge',\n 'purging',\n 'purifier',\n 'purify',\n 'purist',\n 'puritan',\n 'purity',\n 'purple',\n 'purplish',\n 'purposely',\n 'purr',\n 'purse',\n 'pursuable',\n 'pursuant',\n 'pursuit',\n 'purveyor',\n 'pushcart',\n 'pushchair',\n 'pusher',\n 'pushiness',\n 'pushing',\n 'pushover',\n 'pushpin',\n 'pushup',\n 'pushy',\n 'putdown',\n 'putt',\n 'puzzle',\n 'puzzling',\n 'pyramid',\n 'pyromania',\n 'python',\n 'quack',\n 'quadrant',\n 'quail',\n 'quaintly',\n 'quake',\n 'quaking',\n 'qualified',\n 'qualifier',\n 'qualify',\n 'quality',\n 'qualm',\n 'quantum',\n 'quarrel',\n 'quarry',\n 'quartered',\n 'quarterly',\n 'quarters',\n 'quartet',\n 'quench',\n 'query',\n 'quicken',\n 'quickly',\n 'quickness',\n 'quicksand',\n 'quickstep',\n 'quiet',\n 'quill',\n 'quilt',\n 'quintet',\n 'quintuple',\n 'quirk',\n 'quit',\n 'quiver',\n 'quizzical',\n 'quotable',\n 'quotation',\n 'quote',\n 'rabid',\n 'race',\n 'racing',\n 'racism',\n 'rack',\n 'racoon',\n 'radar',\n 'radial',\n 'radiance',\n 'radiantly',\n 'radiated',\n 'radiation',\n 'radiator',\n 'radio',\n 'radish',\n 'raffle',\n 'raft',\n 'rage',\n 'ragged',\n 'raging',\n 'ragweed',\n 'raider',\n 'railcar',\n 'railing',\n 'railroad',\n 'railway',\n 'raisin',\n 'rake',\n 'raking',\n 'rally',\n 'ramble',\n 'rambling',\n 'ramp',\n 'ramrod',\n 'ranch',\n 'rancidity',\n 'random',\n 'ranged',\n 'ranger',\n 'ranging',\n 'ranked',\n 'ranking',\n 'ransack',\n 'ranting',\n 'rants',\n 'rare',\n 'rarity',\n 'rascal',\n 'rash',\n 'rasping',\n 'ravage',\n 'raven',\n 'ravine',\n 'raving',\n 'ravioli',\n 'ravishing',\n 'reabsorb',\n 'reach',\n 'reacquire',\n 'reaction',\n 'reactive',\n 'reactor',\n 'reaffirm',\n 'ream',\n 'reanalyze',\n 'reappear',\n 'reapply',\n 'reappoint',\n 'reapprove',\n 'rearrange',\n 'rearview',\n 'reason',\n 'reassign',\n 'reassure',\n 'reattach',\n 'reawake',\n 'rebalance',\n 'rebate',\n 'rebel',\n 'rebirth',\n 'reboot',\n 'reborn',\n 'rebound',\n 'rebuff',\n 'rebuild',\n 'rebuilt',\n 'reburial',\n 'rebuttal',\n 'recall',\n 'recant',\n 'recapture',\n 'recast',\n 'recede',\n 'recent',\n 'recess',\n 'recharger',\n 'recipient',\n 'recital',\n 'recite',\n 'reckless',\n 'reclaim',\n 'recliner',\n 'reclining',\n 'recluse',\n 'reclusive',\n 'recognize',\n 'recoil',\n 'recollect',\n 'recolor',\n 'reconcile',\n 'reconfirm',\n 'reconvene',\n 'recopy',\n 'record',\n 'recount',\n 'recoup',\n 'recovery',\n 'recreate',\n 'rectal',\n 'rectangle',\n 'rectified',\n 'rectify',\n 'recycled',\n 'recycler',\n 'recycling',\n 'reemerge',\n 'reenact',\n 'reenter',\n 'reentry',\n 'reexamine',\n 'referable',\n 'referee',\n 'reference',\n 'refill',\n 'refinance',\n 'refined',\n 'refinery',\n 'refining',\n 'refinish',\n 'reflected',\n 'reflector',\n 'reflex',\n 'reflux',\n 'refocus',\n 'refold',\n 'reforest',\n 'reformat',\n 'reformed',\n 'reformer',\n 'reformist',\n 'refract',\n 'refrain',\n 'refreeze',\n 'refresh',\n 'refried',\n 'refueling',\n 'refund',\n 'refurbish',\n 'refurnish',\n 'refusal',\n 'refuse',\n 'refusing',\n 'refutable',\n 'refute',\n 'regain',\n 'regalia',\n 'regally',\n 'reggae',\n 'regime',\n 'region',\n 'register',\n 'registrar',\n 'registry',\n 'regress',\n 'regretful',\n 'regroup',\n 'regular',\n 'regulate',\n 'regulator',\n 'rehab',\n 'reheat',\n 'rehire',\n 'rehydrate',\n 'reimburse',\n 'reissue',\n 'reiterate',\n 'rejoice',\n 'rejoicing',\n 'rejoin',\n 'rekindle',\n 'relapse',\n 'relapsing',\n 'relatable',\n 'related',\n 'relation',\n 'relative',\n 'relax',\n 'relay',\n 'relearn',\n 'release',\n 'relenting',\n 'reliable',\n 'reliably',\n 'reliance',\n 'reliant',\n 'relic',\n 'relieve',\n 'relieving',\n 'relight',\n 'relish',\n 'relive',\n 'reload',\n 'relocate',\n 'relock',\n 'reluctant',\n 'rely',\n 'remake',\n 'remark',\n 'remarry',\n 'rematch',\n 'remedial',\n 'remedy',\n 'remember',\n 'reminder',\n 'remindful',\n 'remission',\n 'remix',\n 'remnant',\n 'remodeler',\n 'remold',\n 'remorse',\n 'remote',\n 'removable',\n 'removal',\n 'removed',\n 'remover',\n 'removing',\n 'rename',\n 'renderer',\n 'rendering',\n 'rendition',\n 'renegade',\n 'renewable',\n 'renewably',\n 'renewal',\n 'renewed',\n 'renounce',\n 'renovate',\n 'renovator',\n 'rentable',\n 'rental',\n 'rented',\n 'renter',\n 'reoccupy',\n 'reoccur',\n 'reopen',\n 'reorder',\n 'repackage',\n 'repacking',\n 'repaint',\n 'repair',\n 'repave',\n 'repaying',\n 'repayment',\n 'repeal',\n 'repeated',\n 'repeater',\n 'repent',\n 'rephrase',\n 'replace',\n 'replay',\n 'replica',\n 'reply',\n 'reporter',\n 'repose',\n 'repossess',\n 'repost',\n 'repressed',\n 'reprimand',\n 'reprint',\n 'reprise',\n 'reproach',\n 'reprocess',\n 'reproduce',\n 'reprogram',\n 'reps',\n 'reptile',\n 'reptilian',\n 'repugnant',\n 'repulsion',\n 'repulsive',\n 'repurpose',\n 'reputable',\n 'reputably',\n 'request',\n 'require',\n 'requisite',\n 'reroute',\n 'rerun',\n 'resale',\n 'resample',\n 'rescuer',\n 'reseal',\n 'research',\n 'reselect',\n 'reseller',\n 'resemble',\n 'resend',\n 'resent',\n 'reset',\n 'reshape',\n 'reshoot',\n 'reshuffle',\n 'residence',\n 'residency',\n 'resident',\n 'residual',\n 'residue',\n 'resigned',\n 'resilient',\n 'resistant',\n 'resisting',\n 'resize',\n 'resolute',\n 'resolved',\n 'resonant',\n 'resonate',\n 'resort',\n 'resource',\n 'respect',\n 'resubmit',\n 'result',\n 'resume',\n 'resupply',\n 'resurface',\n 'resurrect',\n 'retail',\n 'retainer',\n 'retaining',\n 'retake',\n 'retaliate',\n 'retention',\n 'rethink',\n 'retinal',\n 'retired',\n 'retiree',\n 'retiring',\n 'retold',\n 'retool',\n 'retorted',\n 'retouch',\n 'retrace',\n 'retract',\n 'retrain',\n 'retread',\n 'retreat',\n 'retrial',\n 'retrieval',\n 'retriever',\n 'retry',\n 'return',\n 'retying',\n 'retype',\n 'reunion',\n 'reunite',\n 'reusable',\n 'reuse',\n 'reveal',\n 'reveler',\n 'revenge',\n 'revenue',\n 'reverb',\n 'revered',\n 'reverence',\n 'reverend',\n 'reversal',\n 'reverse',\n 'reversing',\n 'reversion',\n 'revert',\n 'revisable',\n 'revise',\n 'revision',\n 'revisit',\n 'revivable',\n 'revival',\n 'reviver',\n 'reviving',\n 'revocable',\n 'revoke',\n 'revolt',\n 'revolver',\n 'revolving',\n 'reward',\n 'rewash',\n 'rewind',\n 'rewire',\n 'reword',\n 'rework',\n 'rewrap',\n 'rewrite',\n 'rhyme',\n 'ribbon',\n 'ribcage',\n 'rice',\n 'riches',\n 'richly',\n 'richness',\n 'rickety',\n 'ricotta',\n 'riddance',\n 'ridden',\n 'ride',\n 'riding',\n 'rifling',\n 'rift',\n 'rigging',\n 'rigid',\n 'rigor',\n 'rimless',\n 'rimmed',\n 'rind',\n 'rink',\n 'rinse',\n 'rinsing',\n 'riot',\n 'ripcord',\n 'ripeness',\n 'ripening',\n 'ripping',\n 'ripple',\n 'rippling',\n 'riptide',\n 'rise',\n 'rising',\n 'risk',\n 'risotto',\n 'ritalin',\n 'ritzy',\n 'rival',\n 'riverbank',\n 'riverbed',\n 'riverboat',\n 'riverside',\n 'riveter',\n 'riveting',\n 'roamer',\n 'roaming',\n 'roast',\n 'robbing',\n 'robe',\n 'robin',\n 'robotics',\n 'robust',\n 'rockband',\n 'rocker',\n 'rocket',\n 'rockfish',\n 'rockiness',\n 'rocking',\n 'rocklike',\n 'rockslide',\n 'rockstar',\n 'rocky',\n 'rogue',\n 'roman',\n 'romp',\n 'rope',\n 'roping',\n 'roster',\n 'rosy',\n 'rotten',\n 'rotting',\n 'rotunda',\n 'roulette',\n 'rounding',\n 'roundish',\n 'roundness',\n 'roundup',\n 'roundworm',\n 'routine',\n 'routing',\n 'rover',\n 'roving',\n 'royal',\n 'rubbed',\n 'rubber',\n 'rubbing',\n 'rubble',\n 'rubdown',\n 'ruby',\n 'ruckus',\n 'rudder',\n 'rug',\n 'ruined',\n 'rule',\n 'rumble',\n 'rumbling',\n 'rummage',\n 'rumor',\n 'runaround',\n 'rundown',\n 'runner',\n 'running',\n 'runny',\n 'runt',\n 'runway',\n 'rupture',\n 'rural',\n 'ruse',\n 'rush',\n 'rust',\n 'rut',\n 'sabbath',\n 'sabotage',\n 'sacrament',\n 'sacred',\n 'sacrifice',\n 'sadden',\n 'saddlebag',\n 'saddled',\n 'saddling',\n 'sadly',\n 'sadness',\n 'safari',\n 'safeguard',\n 'safehouse',\n 'safely',\n 'safeness',\n 'saffron',\n 'saga',\n 'sage',\n 'sagging',\n 'saggy',\n 'said',\n 'saint',\n 'sake',\n 'salad',\n 'salami',\n 'salaried',\n 'salary',\n 'saline',\n 'salon',\n 'saloon',\n 'salsa',\n 'salt',\n 'salutary',\n 'salute',\n 'salvage',\n 'salvaging',\n 'salvation',\n 'same',\n 'sample',\n 'sampling',\n 'sanction',\n 'sanctity',\n 'sanctuary',\n 'sandal',\n 'sandbag',\n 'sandbank',\n 'sandbar',\n 'sandblast',\n 'sandbox',\n 'sanded',\n 'sandfish',\n 'sanding',\n 'sandlot',\n 'sandpaper',\n 'sandpit',\n 'sandstone',\n 'sandstorm',\n 'sandworm',\n 'sandy',\n 'sanitary',\n 'sanitizer',\n 'sank',\n 'santa',\n 'sapling',\n 'sappiness',\n 'sappy',\n 'sarcasm',\n 'sarcastic',\n 'sardine',\n 'sash',\n 'sasquatch',\n 'sassy',\n 'satchel',\n 'satiable',\n 'satin',\n 'satirical',\n 'satisfied',\n 'satisfy',\n 'saturate',\n 'saturday',\n 'sauciness',\n 'saucy',\n 'sauna',\n 'savage',\n 'savanna',\n 'saved',\n 'savings',\n 'savior',\n 'savor',\n 'saxophone',\n 'say',\n 'scabbed',\n 'scabby',\n 'scalded',\n 'scalding',\n 'scale',\n 'scaling',\n 'scallion',\n 'scallop',\n 'scalping',\n 'scam',\n 'scandal',\n 'scanner',\n 'scanning',\n 'scant',\n 'scapegoat',\n 'scarce',\n 'scarcity',\n 'scarecrow',\n 'scared',\n 'scarf',\n 'scarily',\n 'scariness',\n 'scarring',\n 'scary',\n 'scavenger',\n 'scenic',\n 'schedule',\n 'schematic',\n 'scheme',\n 'scheming',\n 'schilling',\n 'schnapps',\n 'scholar',\n 'science',\n 'scientist',\n 'scion',\n 'scoff',\n 'scolding',\n 'scone',\n 'scoop',\n 'scooter',\n 'scope',\n 'scorch',\n 'scorebook',\n 'scorecard',\n 'scored',\n 'scoreless',\n 'scorer',\n 'scoring',\n 'scorn',\n 'scorpion',\n 'scotch',\n 'scoundrel',\n 'scoured',\n 'scouring',\n 'scouting',\n 'scouts',\n 'scowling',\n 'scrabble',\n 'scraggly',\n 'scrambled',\n 'scrambler',\n 'scrap',\n 'scratch',\n 'scrawny',\n 'screen',\n 'scribble',\n 'scribe',\n 'scribing',\n 'scrimmage',\n 'script',\n 'scroll',\n 'scrooge',\n 'scrounger',\n 'scrubbed',\n 'scrubber',\n 'scruffy',\n 'scrunch',\n 'scrutiny',\n 'scuba',\n 'scuff',\n 'sculptor',\n 'sculpture',\n 'scurvy',\n 'scuttle',\n 'secluded',\n 'secluding',\n 'seclusion',\n 'second',\n 'secrecy',\n 'secret',\n 'sectional',\n 'sector',\n 'secular',\n 'securely',\n 'security',\n 'sedan',\n 'sedate',\n 'sedation',\n 'sedative',\n 'sediment',\n 'seduce',\n 'seducing',\n 'segment',\n 'seismic',\n 'seizing',\n 'seldom',\n 'selected',\n 'selection',\n 'selective',\n 'selector',\n 'self',\n 'seltzer',\n 'semantic',\n 'semester',\n 'semicolon',\n 'semifinal',\n 'seminar',\n 'semisoft',\n 'semisweet',\n 'senate',\n 'senator',\n 'send',\n 'senior',\n 'senorita',\n 'sensation',\n 'sensitive',\n 'sensitize',\n 'sensually',\n 'sensuous',\n 'sepia',\n 'september',\n 'septic',\n 'septum',\n 'sequel',\n 'sequence',\n 'sequester',\n 'series',\n 'sermon',\n 'serotonin',\n 'serpent',\n 'serrated',\n 'serve',\n 'service',\n 'serving',\n 'sesame',\n 'sessions',\n 'setback',\n 'setting',\n 'settle',\n 'settling',\n 'setup',\n 'sevenfold',\n 'seventeen',\n 'seventh',\n 'seventy',\n 'severity',\n 'shabby',\n 'shack',\n 'shaded',\n 'shadily',\n 'shadiness',\n 'shading',\n 'shadow',\n 'shady',\n 'shaft',\n 'shakable',\n 'shakily',\n 'shakiness',\n 'shaking',\n 'shaky',\n 'shale',\n 'shallot',\n 'shallow',\n 'shame',\n 'shampoo',\n 'shamrock',\n 'shank',\n 'shanty',\n 'shape',\n 'shaping',\n 'share',\n 'sharpener',\n 'sharper',\n 'sharpie',\n 'sharply',\n 'sharpness',\n 'shawl',\n 'sheath',\n 'shed',\n 'sheep',\n 'sheet',\n 'shelf',\n 'shell',\n 'shelter',\n 'shelve',\n 'shelving',\n 'sherry',\n 'shield',\n 'shifter',\n 'shifting',\n 'shiftless',\n 'shifty',\n 'shimmer',\n 'shimmy',\n 'shindig',\n 'shine',\n 'shingle',\n 'shininess',\n 'shining',\n 'shiny',\n 'ship',\n 'shirt',\n 'shivering',\n 'shock',\n 'shone',\n 'shoplift',\n 'shopper',\n 'shopping',\n 'shoptalk',\n 'shore',\n 'shortage',\n 'shortcake',\n 'shortcut',\n 'shorten',\n 'shorter',\n 'shorthand',\n 'shortlist',\n 'shortly',\n 'shortness',\n 'shorts',\n 'shortwave',\n 'shorty',\n 'shout',\n 'shove',\n 'showbiz',\n 'showcase',\n 'showdown',\n 'shower',\n 'showgirl',\n 'showing',\n 'showman',\n 'shown',\n 'showoff',\n 'showpiece',\n 'showplace',\n 'showroom',\n 'showy',\n 'shrank',\n 'shrapnel',\n 'shredder',\n 'shredding',\n 'shrewdly',\n 'shriek',\n 'shrill',\n 'shrimp',\n 'shrine',\n 'shrink',\n 'shrivel',\n 'shrouded',\n 'shrubbery',\n 'shrubs',\n 'shrug',\n 'shrunk',\n 'shucking',\n 'shudder',\n 'shuffle',\n 'shuffling',\n 'shun',\n 'shush',\n 'shut',\n 'shy',\n 'siamese',\n 'siberian',\n 'sibling',\n 'siding',\n 'sierra',\n 'siesta',\n 'sift',\n 'sighing',\n 'silenced',\n 'silencer',\n 'silent',\n 'silica',\n 'silicon',\n 'silk',\n 'silliness',\n 'silly',\n 'silo',\n 'silt',\n 'silver',\n 'similarly',\n 'simile',\n 'simmering',\n 'simple',\n 'simplify',\n 'simply',\n 'sincere',\n 'sincerity',\n 'singer',\n 'singing',\n 'single',\n 'singular',\n 'sinister',\n 'sinless',\n 'sinner',\n 'sinuous',\n 'sip',\n 'siren',\n 'sister',\n 'sitcom',\n 'sitter',\n 'sitting',\n 'situated',\n 'situation',\n 'sixfold',\n 'sixteen',\n 'sixth',\n 'sixties',\n 'sixtieth',\n 'sixtyfold',\n 'sizable',\n 'sizably',\n 'size',\n 'sizing',\n 'sizzle',\n 'sizzling',\n 'skater',\n 'skating',\n 'skedaddle',\n 'skeletal',\n 'skeleton',\n 'skeptic',\n 'sketch',\n 'skewed',\n 'skewer',\n 'skid',\n 'skied',\n 'skier',\n 'skies',\n 'skiing',\n 'skilled',\n 'skillet',\n 'skillful',\n 'skimmed',\n 'skimmer',\n 'skimming',\n 'skimpily',\n 'skincare',\n 'skinhead',\n 'skinless',\n 'skinning',\n 'skinny',\n 'skintight',\n 'skipper',\n 'skipping',\n 'skirmish',\n 'skirt',\n 'skittle',\n 'skydiver',\n 'skylight',\n 'skyline',\n 'skype',\n 'skyrocket',\n 'skyward',\n 'slab',\n 'slacked',\n 'slacker',\n 'slacking',\n 'slackness',\n 'slacks',\n 'slain',\n 'slam',\n 'slander',\n 'slang',\n 'slapping',\n 'slapstick',\n 'slashed',\n 'slashing',\n 'slate',\n 'slather',\n 'slaw',\n 'sled',\n 'sleek',\n 'sleep',\n 'sleet',\n 'sleeve',\n 'slept',\n 'sliceable',\n 'sliced',\n 'slicer',\n 'slicing',\n 'slick',\n 'slider',\n 'slideshow',\n 'sliding',\n 'slighted',\n 'slighting',\n 'slightly',\n 'slimness',\n 'slimy',\n 'slinging',\n 'slingshot',\n 'slinky',\n 'slip',\n 'slit',\n 'sliver',\n 'slobbery',\n 'slogan',\n 'sloped',\n 'sloping',\n 'sloppily',\n 'sloppy',\n 'slot',\n 'slouching',\n 'slouchy',\n 'sludge',\n 'slug',\n 'slum',\n 'slurp',\n 'slush',\n 'sly',\n 'small',\n 'smartly',\n 'smartness',\n 'smasher',\n 'smashing',\n 'smashup',\n 'smell',\n 'smelting',\n 'smile',\n 'smilingly',\n 'smirk',\n 'smite',\n 'smith',\n 'smitten',\n 'smock',\n 'smog',\n 'smoked',\n 'smokeless',\n 'smokiness',\n 'smoking',\n 'smoky',\n 'smolder',\n 'smooth',\n 'smother',\n 'smudge',\n 'smudgy',\n 'smuggler',\n 'smuggling',\n 'smugly',\n 'smugness',\n 'snack',\n 'snagged',\n 'snaking',\n 'snap',\n 'snare',\n 'snarl',\n 'snazzy',\n 'sneak',\n 'sneer',\n 'sneeze',\n 'sneezing',\n 'snide',\n 'sniff',\n 'snippet',\n 'snipping',\n 'snitch',\n 'snooper',\n 'snooze',\n 'snore',\n 'snoring',\n 'snorkel',\n 'snort',\n 'snout',\n 'snowbird',\n 'snowboard',\n 'snowbound',\n 'snowcap',\n 'snowdrift',\n 'snowdrop',\n 'snowfall',\n 'snowfield',\n 'snowflake',\n 'snowiness',\n 'snowless',\n 'snowman',\n 'snowplow',\n 'snowshoe',\n 'snowstorm',\n 'snowsuit',\n 'snowy',\n 'snub',\n 'snuff',\n 'snuggle',\n 'snugly',\n 'snugness',\n 'speak',\n 'spearfish',\n 'spearhead',\n 'spearman',\n 'spearmint',\n 'species',\n 'specimen',\n 'specked',\n 'speckled',\n 'specks',\n 'spectacle',\n 'spectator',\n 'spectrum',\n 'speculate',\n 'speech',\n 'speed',\n 'spellbind',\n 'speller',\n 'spelling',\n 'spendable',\n 'spender',\n 'spending',\n 'spent',\n 'spew',\n 'sphere',\n 'spherical',\n 'sphinx',\n 'spider',\n 'spied',\n 'spiffy',\n 'spill',\n 'spilt',\n 'spinach',\n 'spinal',\n 'spindle',\n 'spinner',\n 'spinning',\n 'spinout',\n 'spinster',\n 'spiny',\n 'spiral',\n 'spirited',\n 'spiritism',\n 'spirits',\n 'spiritual',\n 'splashed',\n 'splashing',\n 'splashy',\n 'splatter',\n 'spleen',\n 'splendid',\n 'splendor',\n 'splice',\n 'splicing',\n 'splinter',\n 'splotchy',\n 'splurge',\n 'spoilage',\n 'spoiled',\n 'spoiler',\n 'spoiling',\n 'spoils',\n 'spoken',\n 'spokesman',\n 'sponge',\n 'spongy',\n 'sponsor',\n 'spoof',\n 'spookily',\n 'spooky',\n 'spool',\n 'spoon',\n 'spore',\n 'sporting',\n 'sports',\n 'sporty',\n 'spotless',\n 'spotlight',\n 'spotted',\n 'spotter',\n 'spotting',\n 'spotty',\n 'spousal',\n 'spouse',\n 'spout',\n 'sprain',\n 'sprang',\n 'sprawl',\n 'spray',\n 'spree',\n 'sprig',\n 'spring',\n 'sprinkled',\n 'sprinkler',\n 'sprint',\n 'sprite',\n 'sprout',\n 'spruce',\n 'sprung',\n 'spry',\n 'spud',\n 'spur',\n 'sputter',\n 'spyglass',\n 'squabble',\n 'squad',\n 'squall',\n 'squander',\n 'squash',\n 'squatted',\n 'squatter',\n 'squatting',\n 'squeak',\n 'squealer',\n 'squealing',\n 'squeamish',\n 'squeegee',\n 'squeeze',\n 'squeezing',\n 'squid',\n 'squiggle',\n 'squiggly',\n 'squint',\n 'squire',\n 'squirt',\n 'squishier',\n 'squishy',\n 'stability',\n 'stabilize',\n 'stable',\n 'stack',\n 'stadium',\n 'staff',\n 'stage',\n 'staging',\n 'stagnant',\n 'stagnate',\n 'stainable',\n 'stained',\n 'staining',\n 'stainless',\n 'stalemate',\n 'staleness',\n 'stalling',\n 'stallion',\n 'stamina',\n 'stammer',\n 'stamp',\n 'stand',\n 'stank',\n 'staple',\n 'stapling',\n 'starboard',\n 'starch',\n 'stardom',\n 'stardust',\n 'starfish',\n 'stargazer',\n 'staring',\n 'stark',\n 'starless',\n 'starlet',\n 'starlight',\n 'starlit',\n 'starring',\n 'starry',\n 'starship',\n 'starter',\n 'starting',\n 'startle',\n 'startling',\n 'startup',\n 'starved',\n 'starving',\n 'stash',\n 'state',\n 'static',\n 'statistic',\n 'statue',\n 'stature',\n 'status',\n 'statute',\n 'statutory',\n 'staunch',\n 'stays',\n 'steadfast',\n 'steadier',\n 'steadily',\n 'steadying',\n 'steam',\n 'steed',\n 'steep',\n 'steerable',\n 'steering',\n 'steersman',\n 'stegosaur',\n 'stellar',\n 'stem',\n 'stench',\n 'stencil',\n 'step',\n 'stereo',\n 'sterile',\n 'sterility',\n 'sterilize',\n 'sterling',\n 'sternness',\n 'sternum',\n 'stew',\n 'stick',\n 'stiffen',\n 'stiffly',\n 'stiffness',\n 'stifle',\n 'stifling',\n 'stillness',\n 'stilt',\n 'stimulant',\n 'stimulate',\n 'stimuli',\n 'stimulus',\n 'stinger',\n 'stingily',\n 'stinging',\n 'stingray',\n 'stingy',\n 'stinking',\n 'stinky',\n 'stipend',\n 'stipulate',\n 'stir',\n 'stitch',\n 'stock',\n 'stoic',\n 'stoke',\n 'stole',\n 'stomp',\n 'stonewall',\n 'stoneware',\n 'stonework',\n 'stoning',\n 'stony',\n 'stood',\n 'stooge',\n 'stool',\n 'stoop',\n 'stoplight',\n 'stoppable',\n 'stoppage',\n 'stopped',\n 'stopper',\n 'stopping',\n 'stopwatch',\n 'storable',\n 'storage',\n 'storeroom',\n 'storewide',\n 'storm',\n 'stout',\n 'stove',\n 'stowaway',\n 'stowing',\n 'straddle',\n 'straggler',\n 'strained',\n 'strainer',\n 'straining',\n 'strangely',\n 'stranger',\n 'strangle',\n 'strategic',\n 'strategy',\n 'stratus',\n 'straw',\n 'stray',\n 'streak',\n 'stream',\n 'street',\n 'strength',\n 'strenuous',\n 'strep',\n 'stress',\n 'stretch',\n 'strewn',\n 'stricken',\n 'strict',\n 'stride',\n 'strife',\n 'strike',\n 'striking',\n 'strive',\n 'striving',\n 'strobe',\n 'strode',\n 'stroller',\n 'strongbox',\n 'strongly',\n 'strongman',\n 'struck',\n 'structure',\n 'strudel',\n 'struggle',\n 'strum',\n 'strung',\n 'strut',\n 'stubbed',\n 'stubble',\n 'stubbly',\n 'stubborn',\n 'stucco',\n 'stuck',\n 'student',\n 'studied',\n 'studio',\n 'study',\n 'stuffed',\n 'stuffing',\n 'stuffy',\n 'stumble',\n 'stumbling',\n 'stump',\n 'stung',\n 'stunned',\n 'stunner',\n 'stunning',\n 'stunt',\n 'stupor',\n 'sturdily',\n 'sturdy',\n 'styling',\n 'stylishly',\n 'stylist',\n 'stylized',\n 'stylus',\n 'suave',\n 'subarctic',\n 'subatomic',\n 'subdivide',\n 'subdued',\n 'subduing',\n 'subfloor',\n 'subgroup',\n 'subheader',\n 'subject',\n 'sublease',\n 'sublet',\n 'sublevel',\n 'sublime',\n 'submarine',\n 'submerge',\n 'submersed',\n 'submitter',\n 'subpanel',\n 'subpar',\n 'subplot',\n 'subprime',\n 'subscribe',\n 'subscript',\n 'subsector',\n 'subside',\n 'subsiding',\n 'subsidize',\n 'subsidy',\n 'subsoil',\n 'subsonic',\n 'substance',\n 'subsystem',\n 'subtext',\n 'subtitle',\n 'subtly',\n 'subtotal',\n 'subtract',\n 'subtype',\n 'suburb',\n 'subway',\n 'subwoofer',\n 'subzero',\n 'succulent',\n 'such',\n 'suction',\n 'sudden',\n 'sudoku',\n 'suds',\n 'sufferer',\n 'suffering',\n 'suffice',\n 'suffix',\n 'suffocate',\n 'suffrage',\n 'sugar',\n 'suggest',\n 'suing',\n 'suitable',\n 'suitably',\n 'suitcase',\n 'suitor',\n 'sulfate',\n 'sulfide',\n 'sulfite',\n 'sulfur',\n 'sulk',\n 'sullen',\n 'sulphate',\n 'sulphuric',\n 'sultry',\n 'superbowl',\n 'superglue',\n 'superhero',\n 'superior',\n 'superjet',\n 'superman',\n 'supermom',\n 'supernova',\n 'supervise',\n 'supper',\n 'supplier',\n 'supply',\n 'support',\n 'supremacy',\n 'supreme',\n 'surcharge',\n 'surely',\n 'sureness',\n 'surface',\n 'surfacing',\n 'surfboard',\n 'surfer',\n 'surgery',\n 'surgical',\n 'surging',\n 'surname',\n 'surpass',\n 'surplus',\n 'surprise',\n 'surreal',\n 'surrender',\n 'surrogate',\n 'surround',\n 'survey',\n 'survival',\n 'survive',\n 'surviving',\n 'survivor',\n 'sushi',\n 'suspect',\n 'suspend',\n 'suspense',\n 'sustained',\n 'sustainer',\n 'swab',\n 'swaddling',\n 'swagger',\n 'swampland',\n 'swan',\n 'swapping',\n 'swarm',\n 'sway',\n 'swear',\n 'sweat',\n 'sweep',\n 'swell',\n 'swept',\n 'swerve',\n 'swifter',\n 'swiftly',\n 'swiftness',\n 'swimmable',\n 'swimmer',\n 'swimming',\n 'swimsuit',\n 'swimwear',\n 'swinger',\n 'swinging',\n 'swipe',\n 'swirl',\n 'switch',\n 'swivel',\n 'swizzle',\n 'swooned',\n 'swoop',\n 'swoosh',\n 'swore',\n 'sworn',\n 'swung',\n 'sycamore',\n 'sympathy',\n 'symphonic',\n 'symphony',\n 'symptom',\n 'synapse',\n 'syndrome',\n 'synergy',\n 'synopses',\n 'synopsis',\n 'synthesis',\n 'synthetic',\n 'syrup',\n 'system',\n 't-shirt',\n 'tabasco',\n 'tabby',\n 'tableful',\n 'tables',\n 'tablet',\n 'tableware',\n 'tabloid',\n 'tackiness',\n 'tacking',\n 'tackle',\n 'tackling',\n 'tacky',\n 'taco',\n 'tactful',\n 'tactical',\n 'tactics',\n 'tactile',\n 'tactless',\n 'tadpole',\n 'taekwondo',\n 'tag',\n 'tainted',\n 'take',\n 'taking',\n 'talcum',\n 'talisman',\n 'tall',\n 'talon',\n 'tamale',\n 'tameness',\n 'tamer',\n 'tamper',\n 'tank',\n 'tanned',\n 'tannery',\n 'tanning',\n 'tantrum',\n 'tapeless',\n 'tapered',\n 'tapering',\n 'tapestry',\n 'tapioca',\n 'tapping',\n 'taps',\n 'tarantula',\n 'target',\n 'tarmac',\n 'tarnish',\n 'tarot',\n 'tartar',\n 'tartly',\n 'tartness',\n 'task',\n 'tassel',\n 'taste',\n 'tastiness',\n 'tasting',\n 'tasty',\n 'tattered',\n 'tattle',\n 'tattling',\n 'tattoo',\n 'taunt',\n 'tavern',\n 'thank',\n 'that',\n 'thaw',\n 'theater',\n 'theatrics',\n 'thee',\n 'theft',\n 'theme',\n 'theology',\n 'theorize',\n 'thermal',\n 'thermos',\n 'thesaurus',\n 'these',\n 'thesis',\n 'thespian',\n 'thicken',\n 'thicket',\n 'thickness',\n 'thieving',\n 'thievish',\n 'thigh',\n 'thimble',\n 'thing',\n 'think',\n 'thinly',\n 'thinner',\n 'thinness',\n 'thinning',\n 'thirstily',\n 'thirsting',\n 'thirsty',\n 'thirteen',\n 'thirty',\n 'thong',\n 'thorn',\n 'those',\n 'thousand',\n 'thrash',\n 'thread',\n 'threaten',\n 'threefold',\n 'thrift',\n 'thrill',\n 'thrive',\n 'thriving',\n 'throat',\n 'throbbing',\n 'throng',\n 'throttle',\n 'throwaway',\n 'throwback',\n 'thrower',\n 'throwing',\n 'thud',\n 'thumb',\n 'thumping',\n 'thursday',\n 'thus',\n 'thwarting',\n 'thyself',\n 'tiara',\n 'tibia',\n 'tidal',\n 'tidbit',\n 'tidiness',\n 'tidings',\n 'tidy',\n 'tiger',\n 'tighten',\n 'tightly',\n 'tightness',\n 'tightrope',\n 'tightwad',\n 'tigress',\n 'tile',\n 'tiling',\n 'till',\n 'tilt',\n 'timid',\n 'timing',\n 'timothy',\n 'tinderbox',\n 'tinfoil',\n 'tingle',\n 'tingling',\n 'tingly',\n 'tinker',\n 'tinkling',\n 'tinsel',\n 'tinsmith',\n 'tint',\n 'tinwork',\n 'tiny',\n 'tipoff',\n 'tipped',\n 'tipper',\n 'tipping',\n 'tiptoeing',\n 'tiptop',\n 'tiring',\n 'tissue',\n 'trace',\n 'tracing',\n 'track',\n 'traction',\n 'tractor',\n 'trade',\n 'trading',\n 'tradition',\n 'traffic',\n 'tragedy',\n 'trailing',\n 'trailside',\n 'train',\n 'traitor',\n 'trance',\n 'tranquil',\n 'transfer',\n 'transform',\n 'translate',\n 'transpire',\n 'transport',\n 'transpose',\n 'trapdoor',\n 'trapeze',\n 'trapezoid',\n 'trapped',\n 'trapper',\n 'trapping',\n 'traps',\n 'trash',\n 'travel',\n 'traverse',\n 'travesty',\n 'tray',\n 'treachery',\n 'treading',\n 'treadmill',\n 'treason',\n 'treat',\n 'treble',\n 'tree',\n 'trekker',\n 'tremble',\n 'trembling',\n 'tremor',\n 'trench',\n 'trend',\n 'trespass',\n 'triage',\n 'trial',\n 'triangle',\n 'tribesman',\n 'tribunal',\n 'tribune',\n 'tributary',\n 'tribute',\n 'triceps',\n 'trickery',\n 'trickily',\n 'tricking',\n 'trickle',\n 'trickster',\n 'tricky',\n 'tricolor',\n 'tricycle',\n 'trident',\n 'tried',\n 'trifle',\n 'trifocals',\n 'trillion',\n 'trilogy',\n 'trimester',\n 'trimmer',\n 'trimming',\n 'trimness',\n 'trinity',\n 'trio',\n 'tripod',\n 'tripping',\n 'triumph',\n 'trivial',\n 'trodden',\n 'trolling',\n 'trombone',\n 'trophy',\n 'tropical',\n 'tropics',\n 'trouble',\n 'troubling',\n 'trough',\n 'trousers',\n 'trout',\n 'trowel',\n 'truce',\n 'truck',\n 'truffle',\n 'trump',\n 'trunks',\n 'trustable',\n 'trustee',\n 'trustful',\n 'trusting',\n 'trustless',\n 'truth',\n 'try',\n 'tubby',\n 'tubeless',\n 'tubular',\n 'tucking',\n 'tuesday',\n 'tug',\n 'tuition',\n 'tulip',\n 'tumble',\n 'tumbling',\n 'tummy',\n 'turban',\n 'turbine',\n 'turbofan',\n 'turbojet',\n 'turbulent',\n 'turf',\n 'turkey',\n 'turmoil',\n 'turret',\n 'turtle',\n 'tusk',\n 'tutor',\n 'tutu',\n 'tux',\n 'tweak',\n 'tweed',\n 'tweet',\n 'tweezers',\n 'twelve',\n 'twentieth',\n 'twenty',\n 'twerp',\n 'twice',\n 'twiddle',\n 'twiddling',\n 'twig',\n 'twilight',\n 'twine',\n 'twins',\n 'twirl',\n 'twistable',\n 'twisted',\n 'twister',\n 'twisting',\n 'twisty',\n 'twitch',\n 'twitter',\n 'tycoon',\n 'tying',\n 'tyke',\n 'udder',\n 'ultimate',\n 'ultimatum',\n 'ultra',\n 'umbilical',\n 'umbrella',\n 'umpire',\n 'unabashed',\n 'unable',\n 'unadorned',\n 'unadvised',\n 'unafraid',\n 'unaired',\n 'unaligned',\n 'unaltered',\n 'unarmored',\n 'unashamed',\n 'unaudited',\n 'unawake',\n 'unaware',\n 'unbaked',\n 'unbalance',\n 'unbeaten',\n 'unbend',\n 'unbent',\n 'unbiased',\n 'unbitten',\n 'unblended',\n 'unblessed',\n 'unblock',\n 'unbolted',\n 'unbounded',\n 'unboxed',\n 'unbraided',\n 'unbridle',\n 'unbroken',\n 'unbuckled',\n 'unbundle',\n 'unburned',\n 'unbutton',\n 'uncanny',\n 'uncapped',\n 'uncaring',\n 'uncertain',\n 'unchain',\n 'unchanged',\n 'uncharted',\n 'uncheck',\n 'uncivil',\n 'unclad',\n 'unclaimed',\n 'unclamped',\n 'unclasp',\n 'uncle',\n 'unclip',\n 'uncloak',\n 'unclog',\n 'unclothed',\n 'uncoated',\n 'uncoiled',\n 'uncolored',\n 'uncombed',\n 'uncommon',\n 'uncooked',\n 'uncork',\n 'uncorrupt',\n 'uncounted',\n 'uncouple',\n 'uncouth',\n 'uncover',\n 'uncross',\n 'uncrown',\n 'uncrushed',\n 'uncured',\n 'uncurious',\n 'uncurled',\n 'uncut',\n 'undamaged',\n 'undated',\n 'undaunted',\n 'undead',\n 'undecided',\n 'undefined',\n 'underage',\n 'underarm',\n 'undercoat',\n 'undercook',\n 'undercut',\n 'underdog',\n 'underdone',\n 'underfed',\n 'underfeed',\n 'underfoot',\n 'undergo',\n 'undergrad',\n 'underhand',\n 'underline',\n 'underling',\n 'undermine',\n 'undermost',\n 'underpaid',\n 'underpass',\n 'underpay',\n 'underrate',\n 'undertake',\n 'undertone',\n 'undertook',\n 'undertow',\n 'underuse',\n 'underwear',\n 'underwent',\n 'underwire',\n 'undesired',\n 'undiluted',\n 'undivided',\n 'undocked',\n 'undoing',\n 'undone',\n 'undrafted',\n 'undress',\n 'undrilled',\n 'undusted',\n 'undying',\n 'unearned',\n 'unearth',\n 'unease',\n 'uneasily',\n 'uneasy',\n 'uneatable',\n 'uneaten',\n 'unedited',\n 'unelected',\n 'unending',\n 'unengaged',\n 'unenvied',\n 'unequal',\n 'unethical',\n 'uneven',\n 'unexpired',\n 'unexposed',\n 'unfailing',\n 'unfair',\n 'unfasten',\n 'unfazed',\n 'unfeeling',\n 'unfiled',\n 'unfilled',\n 'unfitted',\n 'unfitting',\n 'unfixable',\n 'unfixed',\n 'unflawed',\n 'unfocused',\n 'unfold',\n 'unfounded',\n 'unframed',\n 'unfreeze',\n 'unfrosted',\n 'unfrozen',\n 'unfunded',\n 'unglazed',\n 'ungloved',\n 'unglue',\n 'ungodly',\n 'ungraded',\n 'ungreased',\n 'unguarded',\n 'unguided',\n 'unhappily',\n 'unhappy',\n 'unharmed',\n 'unhealthy',\n 'unheard',\n 'unhearing',\n 'unheated',\n 'unhelpful',\n 'unhidden',\n 'unhinge',\n 'unhitched',\n 'unholy',\n 'unhook',\n 'unicorn',\n 'unicycle',\n 'unified',\n 'unifier',\n 'uniformed',\n 'uniformly',\n 'unify',\n 'unimpeded',\n 'uninjured',\n 'uninstall',\n 'uninsured',\n 'uninvited',\n 'union',\n 'uniquely',\n 'unisexual',\n 'unison',\n 'unissued',\n 'unit',\n 'universal',\n 'universe',\n 'unjustly',\n 'unkempt',\n 'unkind',\n 'unknotted',\n 'unknowing',\n 'unknown',\n 'unlaced',\n 'unlatch',\n 'unlawful',\n 'unleaded',\n 'unlearned',\n 'unleash',\n 'unless',\n 'unleveled',\n 'unlighted',\n 'unlikable',\n 'unlimited',\n 'unlined',\n 'unlinked',\n 'unlisted',\n 'unlit',\n 'unlivable',\n 'unloaded',\n 'unloader',\n 'unlocked',\n 'unlocking',\n 'unlovable',\n 'unloved',\n 'unlovely',\n 'unloving',\n 'unluckily',\n 'unlucky',\n 'unmade',\n 'unmanaged',\n 'unmanned',\n 'unmapped',\n 'unmarked',\n 'unmasked',\n 'unmasking',\n 'unmatched',\n 'unmindful',\n 'unmixable',\n 'unmixed',\n 'unmolded',\n 'unmoral',\n 'unmovable',\n 'unmoved',\n 'unmoving',\n 'unnamable',\n 'unnamed',\n 'unnatural',\n 'unneeded',\n 'unnerve',\n 'unnerving',\n 'unnoticed',\n 'unopened',\n 'unopposed',\n 'unpack',\n 'unpadded',\n 'unpaid',\n 'unpainted',\n 'unpaired',\n 'unpaved',\n 'unpeeled',\n 'unpicked',\n 'unpiloted',\n 'unpinned',\n 'unplanned',\n 'unplanted',\n 'unpleased',\n 'unpledged',\n 'unplowed',\n 'unplug',\n 'unpopular',\n 'unproven',\n 'unquote',\n 'unranked',\n 'unrated',\n 'unraveled',\n 'unreached',\n 'unread',\n 'unreal',\n 'unreeling',\n 'unrefined',\n 'unrelated',\n 'unrented',\n 'unrest',\n 'unretired',\n 'unrevised',\n 'unrigged',\n 'unripe',\n 'unrivaled',\n 'unroasted',\n 'unrobed',\n 'unroll',\n 'unruffled',\n 'unruly',\n 'unrushed',\n 'unsaddle',\n 'unsafe',\n 'unsaid',\n 'unsalted',\n 'unsaved',\n 'unsavory',\n 'unscathed',\n 'unscented',\n 'unscrew',\n 'unsealed',\n 'unseated',\n 'unsecured',\n 'unseeing',\n 'unseemly',\n 'unseen',\n 'unselect',\n 'unselfish',\n 'unsent',\n 'unsettled',\n 'unshackle',\n 'unshaken',\n 'unshaved',\n 'unshaven',\n 'unsheathe',\n 'unshipped',\n 'unsightly',\n 'unsigned',\n 'unskilled',\n 'unsliced',\n 'unsmooth',\n 'unsnap',\n 'unsocial',\n 'unsoiled',\n 'unsold',\n 'unsolved',\n 'unsorted',\n 'unspoiled',\n 'unspoken',\n 'unstable',\n 'unstaffed',\n 'unstamped',\n 'unsteady',\n 'unsterile',\n 'unstirred',\n 'unstitch',\n 'unstopped',\n 'unstuck',\n 'unstuffed',\n 'unstylish',\n 'unsubtle',\n 'unsubtly',\n 'unsuited',\n 'unsure',\n 'unsworn',\n 'untagged',\n 'untainted',\n 'untaken',\n 'untamed',\n 'untangled',\n 'untapped',\n 'untaxed',\n 'unthawed',\n 'unthread',\n 'untidy',\n 'untie',\n 'until',\n 'untimed',\n 'untimely',\n 'untitled',\n 'untoasted',\n 'untold',\n 'untouched',\n 'untracked',\n 'untrained',\n 'untreated',\n 'untried',\n 'untrimmed',\n 'untrue',\n 'untruth',\n 'unturned',\n 'untwist',\n 'untying',\n 'unusable',\n 'unused',\n 'unusual',\n 'unvalued',\n 'unvaried',\n 'unvarying',\n 'unveiled',\n 'unveiling',\n 'unvented',\n 'unviable',\n 'unvisited',\n 'unvocal',\n 'unwanted',\n 'unwarlike',\n 'unwary',\n 'unwashed',\n 'unwatched',\n 'unweave',\n 'unwed',\n 'unwelcome',\n 'unwell',\n 'unwieldy',\n 'unwilling',\n 'unwind',\n 'unwired',\n 'unwitting',\n 'unwomanly',\n 'unworldly',\n 'unworn',\n 'unworried',\n 'unworthy',\n 'unwound',\n 'unwoven',\n 'unwrapped',\n 'unwritten',\n 'unzip',\n 'upbeat',\n 'upchuck',\n 'upcoming',\n 'upcountry',\n 'update',\n 'upfront',\n 'upgrade',\n 'upheaval',\n 'upheld',\n 'uphill',\n 'uphold',\n 'uplifted',\n 'uplifting',\n 'upload',\n 'upon',\n 'upper',\n 'upright',\n 'uprising',\n 'upriver',\n 'uproar',\n 'uproot',\n 'upscale',\n 'upside',\n 'upstage',\n 'upstairs',\n 'upstart',\n 'upstate',\n 'upstream',\n 'upstroke',\n 'upswing',\n 'uptake',\n 'uptight',\n 'uptown',\n 'upturned',\n 'upward',\n 'upwind',\n 'uranium',\n 'urban',\n 'urchin',\n 'urethane',\n 'urgency',\n 'urgent',\n 'urging',\n 'urologist',\n 'urology',\n 'usable',\n 'usage',\n 'useable',\n 'used',\n 'uselessly',\n 'user',\n 'usher',\n 'usual',\n 'utensil',\n 'utility',\n 'utilize',\n 'utmost',\n 'utopia',\n 'utter',\n 'vacancy',\n 'vacant',\n 'vacate',\n 'vacation',\n 'vagabond',\n 'vagrancy',\n 'vagrantly',\n 'vaguely',\n 'vagueness',\n 'valiant',\n 'valid',\n 'valium',\n 'valley',\n 'valuables',\n 'value',\n 'vanilla',\n 'vanish',\n 'vanity',\n 'vanquish',\n 'vantage',\n 'vaporizer',\n 'variable',\n 'variably',\n 'varied',\n 'variety',\n 'various',\n 'varmint',\n 'varnish',\n 'varsity',\n 'varying',\n 'vascular',\n 'vaseline',\n 'vastly',\n 'vastness',\n 'veal',\n 'vegan',\n 'veggie',\n 'vehicular',\n 'velcro',\n 'velocity',\n 'velvet',\n 'vendetta',\n 'vending',\n 'vendor',\n 'veneering',\n 'vengeful',\n 'venomous',\n 'ventricle',\n 'venture',\n 'venue',\n 'venus',\n 'verbalize',\n 'verbally',\n 'verbose',\n 'verdict',\n 'verify',\n 'verse',\n 'version',\n 'versus',\n 'vertebrae',\n 'vertical',\n 'vertigo',\n 'very',\n 'vessel',\n 'vest',\n 'veteran',\n 'veto',\n 'vexingly',\n 'viability',\n 'viable',\n 'vibes',\n 'vice',\n 'vicinity',\n 'victory',\n 'video',\n 'viewable',\n 'viewer',\n 'viewing',\n 'viewless',\n 'viewpoint',\n 'vigorous',\n 'village',\n 'villain',\n 'vindicate',\n 'vineyard',\n 'vintage',\n 'violate',\n 'violation',\n 'violator',\n 'violet',\n 'violin',\n 'viper',\n 'viral',\n 'virtual',\n 'virtuous',\n 'virus',\n 'visa',\n 'viscosity',\n 'viscous',\n 'viselike',\n 'visible',\n 'visibly',\n 'vision',\n 'visiting',\n 'visitor',\n 'visor',\n 'vista',\n 'vitality',\n 'vitalize',\n 'vitally',\n 'vitamins',\n 'vivacious',\n 'vividly',\n 'vividness',\n 'vixen',\n 'vocalist',\n 'vocalize',\n 'vocally',\n 'vocation',\n 'voice',\n 'voicing',\n 'void',\n 'volatile',\n 'volley',\n 'voltage',\n 'volumes',\n 'voter',\n 'voting',\n 'voucher',\n 'vowed',\n 'vowel',\n 'voyage',\n 'wackiness',\n 'wad',\n 'wafer',\n 'waffle',\n 'waged',\n 'wager',\n 'wages',\n 'waggle',\n 'wagon',\n 'wake',\n 'waking',\n 'walk',\n 'walmart',\n 'walnut',\n 'walrus',\n 'waltz',\n 'wand',\n 'wannabe',\n 'wanted',\n 'wanting',\n 'wasabi',\n 'washable',\n 'washbasin',\n 'washboard',\n 'washbowl',\n 'washcloth',\n 'washday',\n 'washed',\n 'washer',\n 'washhouse',\n 'washing',\n 'washout',\n 'washroom',\n 'washstand',\n 'washtub',\n 'wasp',\n 'wasting',\n 'watch',\n 'water',\n 'waviness',\n 'waving',\n 'wavy',\n 'whacking',\n 'whacky',\n 'wham',\n 'wharf',\n 'wheat',\n 'whenever',\n 'whiff',\n 'whimsical',\n 'whinny',\n 'whiny',\n 'whisking',\n 'whoever',\n 'whole',\n 'whomever',\n 'whoopee',\n 'whooping',\n 'whoops',\n 'why',\n 'wick',\n 'widely',\n 'widen',\n 'widget',\n 'widow',\n 'width',\n 'wieldable',\n 'wielder',\n 'wife',\n 'wifi',\n 'wikipedia',\n 'wildcard',\n 'wildcat',\n 'wilder',\n 'wildfire',\n 'wildfowl',\n 'wildland',\n 'wildlife',\n 'wildly',\n 'wildness',\n 'willed',\n 'willfully',\n 'willing',\n 'willow',\n 'willpower',\n 'wilt',\n 'wimp',\n 'wince',\n 'wincing',\n 'wind',\n 'wing',\n 'winking',\n 'winner',\n 'winnings',\n 'winter',\n 'wipe',\n 'wired',\n 'wireless',\n 'wiring',\n 'wiry',\n 'wisdom',\n 'wise',\n 'wish',\n 'wisplike',\n 'wispy',\n 'wistful',\n 'wizard',\n 'wobble',\n 'wobbling',\n 'wobbly',\n 'wok',\n 'wolf',\n 'wolverine',\n 'womanhood',\n 'womankind',\n 'womanless',\n 'womanlike',\n 'womanly',\n 'womb',\n 'woof',\n 'wooing',\n 'wool',\n 'woozy',\n 'word',\n 'work',\n 'worried',\n 'worrier',\n 'worrisome',\n 'worry',\n 'worsening',\n 'worshiper',\n 'worst',\n 'wound',\n 'woven',\n 'wow',\n 'wrangle',\n 'wrath',\n 'wreath',\n 'wreckage',\n 'wrecker',\n 'wrecking',\n 'wrench',\n 'wriggle',\n 'wriggly',\n 'wrinkle',\n 'wrinkly',\n 'wrist',\n 'writing',\n 'written',\n 'wrongdoer',\n 'wronged',\n 'wrongful',\n 'wrongly',\n 'wrongness',\n 'wrought',\n 'xbox',\n 'xerox',\n 'yahoo',\n 'yam',\n 'yanking',\n 'yapping',\n 'yard',\n 'yarn',\n 'yeah',\n 'yearbook',\n 'yearling',\n 'yearly',\n 'yearning',\n 'yeast',\n 'yelling',\n 'yelp',\n 'yen',\n 'yesterday',\n 'yiddish',\n 'yield',\n 'yin',\n 'yippee',\n 'yo-yo',\n 'yodel',\n 'yoga',\n 'yogurt',\n 'yonder',\n 'yoyo',\n 'yummy',\n 'zap',\n 'zealous',\n 'zebra',\n 'zen',\n 'zeppelin',\n 'zero',\n 'zestfully',\n 'zesty',\n 'zigzagged',\n 'zipfile',\n 'zipping',\n 'zippy',\n 'zips',\n 'zit',\n 'zodiac',\n 'zombie',\n 'zone',\n 'zoning',\n 'zookeeper',\n 'zoologist',\n 'zoology',\n 'zoom',\n];\n","import { EnvironmentUrls } from '../models/domain/environmentUrls';\n\nimport { ConstantsService } from './constants.service';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { EnvironmentService as EnvironmentServiceAbstraction } from '../abstractions/environment.service';\nimport { NotificationsService } from '../abstractions/notifications.service';\nimport { StorageService } from '../abstractions/storage.service';\n\nexport class EnvironmentService implements EnvironmentServiceAbstraction {\n baseUrl: string;\n webVaultUrl: string;\n apiUrl: string;\n identityUrl: string;\n iconsUrl: string;\n notificationsUrl: string;\n eventsUrl: string;\n\n constructor(private apiService: ApiService, private storageService: StorageService,\n private notificationsService: NotificationsService) { }\n\n getWebVaultUrl(): string {\n if (this.webVaultUrl != null) {\n return this.webVaultUrl;\n } else if (this.baseUrl) {\n return this.baseUrl;\n }\n return null;\n }\n\n async setUrlsFromStorage(): Promise {\n const urlsObj: any = await this.storageService.get(ConstantsService.environmentUrlsKey);\n const urls = urlsObj || {\n base: null,\n api: null,\n identity: null,\n icons: null,\n notifications: null,\n events: null,\n webVault: null,\n };\n\n const envUrls = new EnvironmentUrls();\n\n if (urls.base) {\n this.baseUrl = envUrls.base = urls.base;\n this.apiService.setUrls(envUrls);\n return;\n }\n\n this.webVaultUrl = urls.webVault;\n this.apiUrl = envUrls.api = urls.api;\n this.identityUrl = envUrls.identity = urls.identity;\n this.iconsUrl = urls.icons;\n this.notificationsUrl = urls.notifications;\n this.eventsUrl = envUrls.events = urls.events;\n this.apiService.setUrls(envUrls);\n }\n\n async setUrls(urls: any): Promise {\n urls.base = this.formatUrl(urls.base);\n urls.webVault = this.formatUrl(urls.webVault);\n urls.api = this.formatUrl(urls.api);\n urls.identity = this.formatUrl(urls.identity);\n urls.icons = this.formatUrl(urls.icons);\n urls.notifications = this.formatUrl(urls.notifications);\n urls.events = this.formatUrl(urls.events);\n\n await this.storageService.save(ConstantsService.environmentUrlsKey, {\n base: urls.base,\n api: urls.api,\n identity: urls.identity,\n webVault: urls.webVault,\n icons: urls.icons,\n notifications: urls.notifications,\n events: urls.events,\n });\n\n this.baseUrl = urls.base;\n this.webVaultUrl = urls.webVault;\n this.apiUrl = urls.api;\n this.identityUrl = urls.identity;\n this.iconsUrl = urls.icons;\n this.notificationsUrl = urls.notifications;\n this.eventsUrl = urls.events;\n\n const envUrls = new EnvironmentUrls();\n if (this.baseUrl) {\n envUrls.base = this.baseUrl;\n } else {\n envUrls.api = this.apiUrl;\n envUrls.identity = this.identityUrl;\n envUrls.events = this.eventsUrl;\n }\n\n this.apiService.setUrls(envUrls);\n if (this.notificationsService != null) {\n this.notificationsService.init(this);\n }\n return urls;\n }\n\n private formatUrl(url: string): string {\n if (url == null || url === '') {\n return null;\n }\n\n url = url.replace(/\\/+$/g, '');\n if (!url.startsWith('http://') && !url.startsWith('https://')) {\n url = 'https://' + url;\n }\n\n return url.trim();\n }\n}\n","import { FolderData } from '../models/data/folderData';\n\nimport { Folder } from '../models/domain/folder';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\nimport { TreeNode } from '../models/domain/treeNode';\n\nimport { FolderRequest } from '../models/request/folderRequest';\n\nimport { FolderResponse } from '../models/response/folderResponse';\n\nimport { FolderView } from '../models/view/folderView';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { CipherService } from '../abstractions/cipher.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { FolderService as FolderServiceAbstraction } from '../abstractions/folder.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\nimport { CipherData } from '../models/data/cipherData';\n\nimport { ServiceUtils } from '../misc/serviceUtils';\nimport { Utils } from '../misc/utils';\n\nconst Keys = {\n foldersPrefix: 'folders_',\n ciphersPrefix: 'ciphers_',\n};\nconst NestingDelimiter = '/';\n\nexport class FolderService implements FolderServiceAbstraction {\n decryptedFolderCache: FolderView[];\n\n constructor(private cryptoService: CryptoService, private userService: UserService,\n private apiService: ApiService, private storageService: StorageService,\n private i18nService: I18nService, private cipherService: CipherService) { }\n\n clearCache(): void {\n this.decryptedFolderCache = null;\n }\n\n async encrypt(model: FolderView, key?: SymmetricCryptoKey): Promise {\n const folder = new Folder();\n folder.id = model.id;\n folder.name = await this.cryptoService.encrypt(model.name, key);\n return folder;\n }\n\n async get(id: string): Promise {\n const userId = await this.userService.getUserId();\n const folders = await this.storageService.get<{ [id: string]: FolderData; }>(\n Keys.foldersPrefix + userId);\n if (folders == null || !folders.hasOwnProperty(id)) {\n return null;\n }\n\n return new Folder(folders[id]);\n }\n\n async getAll(): Promise {\n const userId = await this.userService.getUserId();\n const folders = await this.storageService.get<{ [id: string]: FolderData; }>(\n Keys.foldersPrefix + userId);\n const response: Folder[] = [];\n for (const id in folders) {\n if (folders.hasOwnProperty(id)) {\n response.push(new Folder(folders[id]));\n }\n }\n return response;\n }\n\n async getAllDecrypted(): Promise {\n if (this.decryptedFolderCache != null) {\n return this.decryptedFolderCache;\n }\n\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error('No key.');\n }\n\n const decFolders: FolderView[] = [];\n const promises: Array> = [];\n const folders = await this.getAll();\n folders.forEach((folder) => {\n promises.push(folder.decrypt().then((f) => decFolders.push(f)));\n });\n\n await Promise.all(promises);\n decFolders.sort(Utils.getSortFunction(this.i18nService, 'name'));\n\n const noneFolder = new FolderView();\n noneFolder.name = this.i18nService.t('noneFolder');\n decFolders.push(noneFolder);\n\n this.decryptedFolderCache = decFolders;\n return this.decryptedFolderCache;\n }\n\n async getAllNested(): Promise>> {\n const folders = await this.getAllDecrypted();\n const nodes: Array> = [];\n folders.forEach((f) => {\n const folderCopy = new FolderView();\n folderCopy.id = f.id;\n folderCopy.revisionDate = f.revisionDate;\n const parts = f.name != null ? f.name.replace(/^\\/+|\\/+$/g, '').split(NestingDelimiter) : [];\n ServiceUtils.nestedTraverse(nodes, 0, parts, folderCopy, null, NestingDelimiter);\n });\n return nodes;\n }\n\n async getNested(id: string): Promise> {\n const folders = await this.getAllNested();\n return ServiceUtils.getTreeNodeObject(folders, id) as TreeNode;\n }\n\n async saveWithServer(folder: Folder): Promise {\n const request = new FolderRequest(folder);\n\n let response: FolderResponse;\n if (folder.id == null) {\n response = await this.apiService.postFolder(request);\n folder.id = response.id;\n } else {\n response = await this.apiService.putFolder(folder.id, request);\n }\n\n const userId = await this.userService.getUserId();\n const data = new FolderData(response, userId);\n await this.upsert(data);\n }\n\n async upsert(folder: FolderData | FolderData[]): Promise {\n const userId = await this.userService.getUserId();\n let folders = await this.storageService.get<{ [id: string]: FolderData; }>(\n Keys.foldersPrefix + userId);\n if (folders == null) {\n folders = {};\n }\n\n if (folder instanceof FolderData) {\n const f = folder as FolderData;\n folders[f.id] = f;\n } else {\n (folder as FolderData[]).forEach((f) => {\n folders[f.id] = f;\n });\n }\n\n await this.storageService.save(Keys.foldersPrefix + userId, folders);\n this.decryptedFolderCache = null;\n }\n\n async replace(folders: { [id: string]: FolderData; }): Promise {\n const userId = await this.userService.getUserId();\n await this.storageService.save(Keys.foldersPrefix + userId, folders);\n this.decryptedFolderCache = null;\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.foldersPrefix + userId);\n this.decryptedFolderCache = null;\n }\n\n async delete(id: string | string[]): Promise {\n const userId = await this.userService.getUserId();\n const folders = await this.storageService.get<{ [id: string]: FolderData; }>(\n Keys.foldersPrefix + userId);\n if (folders == null) {\n return;\n }\n\n if (typeof id === 'string') {\n if (folders[id] == null) {\n return;\n }\n delete folders[id];\n } else {\n (id as string[]).forEach((i) => {\n delete folders[i];\n });\n }\n\n await this.storageService.save(Keys.foldersPrefix + userId, folders);\n this.decryptedFolderCache = null;\n\n // Items in a deleted folder are re-assigned to \"No Folder\"\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(Keys.ciphersPrefix + userId);\n if (ciphers != null) {\n const updates: CipherData[] = [];\n for (const cId in ciphers) {\n if (ciphers[cId].folderId === id) {\n ciphers[cId].folderId = null;\n updates.push(ciphers[cId]);\n }\n }\n if (updates.length > 0) {\n this.cipherService.upsert(updates);\n }\n }\n }\n\n async deleteWithServer(id: string): Promise {\n await this.apiService.deleteFolder(id);\n await this.delete(id);\n }\n}\n","import { FolderResponse } from '../response/folderResponse';\n\nexport class FolderData {\n id: string;\n userId: string;\n name: string;\n revisionDate: string;\n\n constructor(response: FolderResponse, userId: string) {\n this.userId = userId;\n this.name = response.name;\n this.id = response.id;\n this.revisionDate = response.revisionDate;\n }\n}\n","import { I18nService as I18nServiceAbstraction } from '../abstractions/i18n.service';\n\nexport class I18nService implements I18nServiceAbstraction {\n locale: string;\n // First locale is the default (English)\n supportedTranslationLocales: string[] = ['en'];\n translationLocale: string;\n collator: Intl.Collator;\n localeNames = new Map([\n ['af', 'Afrikaans'],\n ['bg', 'български'],\n ['ca', 'català'],\n ['cs', 'čeština'],\n ['da', 'dansk'],\n ['de', 'Deutsch'],\n ['el', 'Ελληνικά'],\n ['en', 'English'],\n ['en-GB', 'English (British)'],\n ['eo', 'Esperanto'],\n ['es', 'español'],\n ['et', 'eesti'],\n ['fa', 'فارسی'],\n ['fi', 'suomi'],\n ['fr', 'français'],\n ['he', 'עברית'],\n ['hi', 'हिन्दी'],\n ['hr', 'hrvatski'],\n ['hu', 'magyar'],\n ['id', 'Bahasa Indonesia'],\n ['it', 'italiano'],\n ['ja', '日本語'],\n ['ko', '한국어'],\n ['nb', 'norsk (bokmål)'],\n ['nl', 'Nederlands'],\n ['pl', 'polski'],\n ['pt-BR', 'português do Brasil'],\n ['pt-PT', 'português'],\n ['ro', 'română'],\n ['ru', 'русский'],\n ['sk', 'slovenčina'],\n ['sv', 'svenska'],\n ['th', 'ไทย'],\n ['tr', 'Türkçe'],\n ['uk', 'українська'],\n ['vi', 'Tiếng Việt'],\n ['zh-CN', '中文(中国大陆)'],\n ['zh-TW', '中文(台灣)'],\n ]);\n\n protected inited: boolean;\n protected defaultMessages: any = {};\n protected localeMessages: any = {};\n\n constructor(protected systemLanguage: string, protected localesDirectory: string,\n protected getLocalesJson: (formattedLocale: string) => Promise) {\n this.systemLanguage = systemLanguage.replace('_', '-');\n }\n\n async init(locale?: string) {\n if (this.inited) {\n throw new Error('i18n already initialized.');\n }\n if (this.supportedTranslationLocales == null || this.supportedTranslationLocales.length === 0) {\n throw new Error('supportedTranslationLocales not set.');\n }\n\n this.inited = true;\n this.locale = this.translationLocale = locale != null ? locale : this.systemLanguage;\n\n try {\n this.collator = new Intl.Collator(this.locale, { numeric: true, sensitivity: 'base' });\n } catch {\n this.collator = null;\n }\n\n if (this.supportedTranslationLocales.indexOf(this.translationLocale) === -1) {\n this.translationLocale = this.translationLocale.slice(0, 2);\n\n if (this.supportedTranslationLocales.indexOf(this.translationLocale) === -1) {\n this.translationLocale = this.supportedTranslationLocales[0];\n }\n }\n\n if (this.localesDirectory != null) {\n await this.loadMessages(this.translationLocale, this.localeMessages);\n if (this.translationLocale !== this.supportedTranslationLocales[0]) {\n await this.loadMessages(this.supportedTranslationLocales[0], this.defaultMessages);\n }\n }\n }\n\n t(id: string, p1?: string, p2?: string, p3?: string): string {\n return this.translate(id, p1, p2, p3);\n }\n\n translate(id: string, p1?: string, p2?: string, p3?: string): string {\n let result: string;\n if (this.localeMessages.hasOwnProperty(id) && this.localeMessages[id]) {\n result = this.localeMessages[id];\n } else if (this.defaultMessages.hasOwnProperty(id) && this.defaultMessages[id]) {\n result = this.defaultMessages[id];\n } else {\n result = '';\n }\n\n if (result !== '') {\n if (p1 != null) {\n result = result.split('__$1__').join(p1);\n }\n if (p2 != null) {\n result = result.split('__$2__').join(p2);\n }\n if (p3 != null) {\n result = result.split('__$3__').join(p3);\n }\n }\n\n return result;\n }\n\n private async loadMessages(locale: string, messagesObj: any): Promise {\n const formattedLocale = locale.replace('-', '_');\n const locales = await this.getLocalesJson(formattedLocale);\n for (const prop in locales) {\n if (!locales.hasOwnProperty(prop)) {\n continue;\n }\n messagesObj[prop] = locales[prop].message;\n\n if (locales[prop].placeholders) {\n for (const placeProp in locales[prop].placeholders) {\n if (!locales[prop].placeholders.hasOwnProperty(placeProp) ||\n !locales[prop].placeholders[placeProp].content) {\n continue;\n }\n\n const replaceToken = '\\\\$' + placeProp.toUpperCase() + '\\\\$';\n let replaceContent = locales[prop].placeholders[placeProp].content;\n if (replaceContent === '$1' || replaceContent === '$2' || replaceContent === '$3') {\n replaceContent = '__$' + replaceContent + '__';\n }\n messagesObj[prop] = messagesObj[prop].replace(new RegExp(replaceToken, 'g'), replaceContent);\n }\n }\n }\n }\n\n}\n","import * as zxcvbn from 'zxcvbn';\n\nimport { CipherString } from '../models/domain/cipherString';\nimport { GeneratedPasswordHistory } from '../models/domain/generatedPasswordHistory';\nimport { PasswordGeneratorPolicyOptions } from '../models/domain/passwordGeneratorPolicyOptions';\nimport { Policy } from '../models/domain/policy';\n\nimport { CryptoService } from '../abstractions/crypto.service';\nimport {\n PasswordGenerationService as PasswordGenerationServiceAbstraction,\n} from '../abstractions/passwordGeneration.service';\nimport { PolicyService } from '../abstractions/policy.service';\nimport { StorageService } from '../abstractions/storage.service';\n\nimport { EEFLongWordList } from '../misc/wordlist';\n\nimport { PolicyType } from '../enums/policyType';\n\nconst DefaultOptions = {\n length: 14,\n ambiguous: false,\n number: true,\n minNumber: 1,\n uppercase: true,\n minUppercase: 0,\n lowercase: true,\n minLowercase: 0,\n special: false,\n minSpecial: 1,\n type: 'password',\n numWords: 3,\n wordSeparator: '-',\n capitalize: false,\n includeNumber: false,\n};\n\nconst Keys = {\n options: 'passwordGenerationOptions',\n history: 'generatedPasswordHistory',\n};\n\nconst MaxPasswordsInHistory = 100;\n\nexport class PasswordGenerationService implements PasswordGenerationServiceAbstraction {\n private optionsCache: any;\n private history: GeneratedPasswordHistory[];\n\n constructor(private cryptoService: CryptoService, private storageService: StorageService,\n private policyService: PolicyService) { }\n\n async generatePassword(options: any): Promise {\n // overload defaults with given options\n const o = Object.assign({}, DefaultOptions, options);\n\n if (o.type === 'passphrase') {\n return this.generatePassphrase(options);\n }\n\n // sanitize\n this.sanitizePasswordLength(o, true);\n\n const minLength: number = o.minUppercase + o.minLowercase + o.minNumber + o.minSpecial;\n if (o.length < minLength) {\n o.length = minLength;\n }\n\n const positions: string[] = [];\n if (o.lowercase && o.minLowercase > 0) {\n for (let i = 0; i < o.minLowercase; i++) {\n positions.push('l');\n }\n }\n if (o.uppercase && o.minUppercase > 0) {\n for (let i = 0; i < o.minUppercase; i++) {\n positions.push('u');\n }\n }\n if (o.number && o.minNumber > 0) {\n for (let i = 0; i < o.minNumber; i++) {\n positions.push('n');\n }\n }\n if (o.special && o.minSpecial > 0) {\n for (let i = 0; i < o.minSpecial; i++) {\n positions.push('s');\n }\n }\n while (positions.length < o.length) {\n positions.push('a');\n }\n\n // shuffle\n await this.shuffleArray(positions);\n\n // build out the char sets\n let allCharSet = '';\n\n let lowercaseCharSet = 'abcdefghijkmnopqrstuvwxyz';\n if (o.ambiguous) {\n lowercaseCharSet += 'l';\n }\n if (o.lowercase) {\n allCharSet += lowercaseCharSet;\n }\n\n let uppercaseCharSet = 'ABCDEFGHJKLMNPQRSTUVWXYZ';\n if (o.ambiguous) {\n uppercaseCharSet += 'IO';\n }\n if (o.uppercase) {\n allCharSet += uppercaseCharSet;\n }\n\n let numberCharSet = '23456789';\n if (o.ambiguous) {\n numberCharSet += '01';\n }\n if (o.number) {\n allCharSet += numberCharSet;\n }\n\n const specialCharSet = '!@#$%^&*';\n if (o.special) {\n allCharSet += specialCharSet;\n }\n\n let password = '';\n for (let i = 0; i < o.length; i++) {\n let positionChars: string;\n switch (positions[i]) {\n case 'l':\n positionChars = lowercaseCharSet;\n break;\n case 'u':\n positionChars = uppercaseCharSet;\n break;\n case 'n':\n positionChars = numberCharSet;\n break;\n case 's':\n positionChars = specialCharSet;\n break;\n case 'a':\n positionChars = allCharSet;\n break;\n default:\n break;\n }\n\n const randomCharIndex = await this.cryptoService.randomNumber(0, positionChars.length - 1);\n password += positionChars.charAt(randomCharIndex);\n }\n\n return password;\n }\n\n async generatePassphrase(options: any): Promise {\n const o = Object.assign({}, DefaultOptions, options);\n\n if (o.numWords == null || o.numWords <= 2) {\n o.numWords = DefaultOptions.numWords;\n }\n if (o.wordSeparator == null || o.wordSeparator.length === 0 || o.wordSeparator.length > 1) {\n o.wordSeparator = ' ';\n }\n if (o.capitalize == null) {\n o.capitalize = false;\n }\n if (o.includeNumber == null) {\n o.includeNumber = false;\n }\n\n const listLength = EEFLongWordList.length - 1;\n const wordList = new Array(o.numWords);\n for (let i = 0; i < o.numWords; i++) {\n const wordIndex = await this.cryptoService.randomNumber(0, listLength);\n if (o.capitalize) {\n wordList[i] = this.capitalize(EEFLongWordList[wordIndex]);\n } else {\n wordList[i] = EEFLongWordList[wordIndex];\n }\n }\n\n if (o.includeNumber) {\n await this.appendRandomNumberToRandomWord(wordList);\n }\n return wordList.join(o.wordSeparator);\n }\n\n async getOptions(): Promise<[any, PasswordGeneratorPolicyOptions]> {\n if (this.optionsCache == null) {\n const options = await this.storageService.get(Keys.options);\n if (options == null) {\n this.optionsCache = DefaultOptions;\n } else {\n this.optionsCache = Object.assign({}, DefaultOptions, options);\n }\n }\n const enforcedOptions = await this.enforcePasswordGeneratorPoliciesOnOptions(this.optionsCache);\n this.optionsCache = enforcedOptions[0];\n return [this.optionsCache, enforcedOptions[1]];\n }\n\n async enforcePasswordGeneratorPoliciesOnOptions(options: any): Promise<[any, PasswordGeneratorPolicyOptions]> {\n let enforcedPolicyOptions = await this.getPasswordGeneratorPolicyOptions();\n if (enforcedPolicyOptions != null) {\n if (options.length < enforcedPolicyOptions.minLength) {\n options.length = enforcedPolicyOptions.minLength;\n }\n\n if (enforcedPolicyOptions.useUppercase) {\n options.uppercase = true;\n }\n\n if (enforcedPolicyOptions.useLowercase) {\n options.lowercase = true;\n }\n\n if (enforcedPolicyOptions.useNumbers) {\n options.number = true;\n }\n\n if (options.minNumber < enforcedPolicyOptions.numberCount) {\n options.minNumber = enforcedPolicyOptions.numberCount;\n }\n\n if (enforcedPolicyOptions.useSpecial) {\n options.special = true;\n }\n\n if (options.minSpecial < enforcedPolicyOptions.specialCount) {\n options.minSpecial = enforcedPolicyOptions.specialCount;\n }\n\n // Must normalize these fields because the receiving call expects all options to pass the current rules\n if (options.minSpecial + options.minNumber > options.length) {\n options.minSpecial = options.length - options.minNumber;\n }\n\n if (options.numWords < enforcedPolicyOptions.minNumberWords) {\n options.numWords = enforcedPolicyOptions.minNumberWords;\n }\n\n if (enforcedPolicyOptions.capitalize) {\n options.capitalize = true;\n }\n\n if (enforcedPolicyOptions.includeNumber) {\n options.includeNumber = true;\n }\n\n // Force default type if password/passphrase selected via policy\n if (enforcedPolicyOptions.defaultType === 'password' ||\n enforcedPolicyOptions.defaultType === 'passphrase') {\n options.type = enforcedPolicyOptions.defaultType;\n }\n } else { // UI layer expects an instantiated object to prevent more explicit null checks\n enforcedPolicyOptions = new PasswordGeneratorPolicyOptions();\n }\n return [options, enforcedPolicyOptions];\n }\n\n async getPasswordGeneratorPolicyOptions(): Promise {\n const policies: Policy[] = await this.policyService.getAll(PolicyType.PasswordGenerator);\n let enforcedOptions: PasswordGeneratorPolicyOptions = null;\n\n if (policies == null || policies.length === 0) {\n return enforcedOptions;\n }\n\n policies.forEach((currentPolicy) => {\n if (!currentPolicy.enabled || currentPolicy.data == null) {\n return;\n }\n\n if (enforcedOptions == null) {\n enforcedOptions = new PasswordGeneratorPolicyOptions();\n }\n\n // Password wins in multi-org collisions\n if (currentPolicy.data.defaultType != null && enforcedOptions.defaultType !== 'password') {\n enforcedOptions.defaultType = currentPolicy.data.defaultType;\n }\n\n if (currentPolicy.data.minLength != null\n && currentPolicy.data.minLength > enforcedOptions.minLength) {\n enforcedOptions.minLength = currentPolicy.data.minLength;\n }\n\n if (currentPolicy.data.useUpper) {\n enforcedOptions.useUppercase = true;\n }\n\n if (currentPolicy.data.useLower) {\n enforcedOptions.useLowercase = true;\n }\n\n if (currentPolicy.data.useNumbers) {\n enforcedOptions.useNumbers = true;\n }\n\n if (currentPolicy.data.minNumbers != null\n && currentPolicy.data.minNumbers > enforcedOptions.numberCount) {\n enforcedOptions.numberCount = currentPolicy.data.minNumbers;\n }\n\n if (currentPolicy.data.useSpecial) {\n enforcedOptions.useSpecial = true;\n }\n\n if (currentPolicy.data.minSpecial != null\n && currentPolicy.data.minSpecial > enforcedOptions.specialCount) {\n enforcedOptions.specialCount = currentPolicy.data.minSpecial;\n }\n\n if (currentPolicy.data.minNumberWords != null\n && currentPolicy.data.minNumberWords > enforcedOptions.minNumberWords) {\n enforcedOptions.minNumberWords = currentPolicy.data.minNumberWords;\n }\n\n if (currentPolicy.data.capitalize) {\n enforcedOptions.capitalize = true;\n }\n\n if (currentPolicy.data.includeNumber) {\n enforcedOptions.includeNumber = true;\n }\n });\n\n return enforcedOptions;\n }\n\n async saveOptions(options: any) {\n await this.storageService.save(Keys.options, options);\n this.optionsCache = options;\n }\n\n async getHistory(): Promise {\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n return new Array();\n }\n\n if (!this.history) {\n const encrypted = await this.storageService.get(Keys.history);\n this.history = await this.decryptHistory(encrypted);\n }\n\n return this.history || new Array();\n }\n\n async addHistory(password: string): Promise {\n // Cannot add new history if no key is available\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n return;\n }\n\n const currentHistory = await this.getHistory();\n\n // Prevent duplicates\n if (this.matchesPrevious(password, currentHistory)) {\n return;\n }\n\n currentHistory.unshift(new GeneratedPasswordHistory(password, Date.now()));\n\n // Remove old items.\n if (currentHistory.length > MaxPasswordsInHistory) {\n currentHistory.pop();\n }\n\n const newHistory = await this.encryptHistory(currentHistory);\n return await this.storageService.save(Keys.history, newHistory);\n }\n\n async clear(): Promise {\n this.history = [];\n return await this.storageService.remove(Keys.history);\n }\n\n passwordStrength(password: string, userInputs: string[] = null): zxcvbn.ZXCVBNResult {\n if (password == null || password.length === 0) {\n return null;\n }\n let globalUserInputs = ['bitwarden', 'bit', 'warden'];\n if (userInputs != null && userInputs.length > 0) {\n globalUserInputs = globalUserInputs.concat(userInputs);\n }\n // Use a hash set to get rid of any duplicate user inputs\n const finalUserInputs = Array.from(new Set(globalUserInputs));\n const result = zxcvbn(password, finalUserInputs);\n return result;\n }\n\n normalizeOptions(options: any, enforcedPolicyOptions: PasswordGeneratorPolicyOptions) {\n options.minLowercase = 0;\n options.minUppercase = 0;\n\n if (!options.length || options.length < 5) {\n options.length = 5;\n } else if (options.length > 128) {\n options.length = 128;\n }\n\n if (options.length < enforcedPolicyOptions.minLength) {\n options.length = enforcedPolicyOptions.minLength;\n }\n\n if (!options.minNumber) {\n options.minNumber = 0;\n } else if (options.minNumber > options.length) {\n options.minNumber = options.length;\n } else if (options.minNumber > 9) {\n options.minNumber = 9;\n }\n\n if (options.minNumber < enforcedPolicyOptions.numberCount) {\n options.minNumber = enforcedPolicyOptions.numberCount;\n }\n\n if (!options.minSpecial) {\n options.minSpecial = 0;\n } else if (options.minSpecial > options.length) {\n options.minSpecial = options.length;\n } else if (options.minSpecial > 9) {\n options.minSpecial = 9;\n }\n\n if (options.minSpecial < enforcedPolicyOptions.specialCount) {\n options.minSpecial = enforcedPolicyOptions.specialCount;\n }\n\n if (options.minSpecial + options.minNumber > options.length) {\n options.minSpecial = options.length - options.minNumber;\n }\n\n if (options.numWords == null || options.length < 3) {\n options.numWords = 3;\n } else if (options.numWords > 20) {\n options.numWords = 20;\n }\n\n if (options.numWords < enforcedPolicyOptions.minNumberWords) {\n options.numWords = enforcedPolicyOptions.minNumberWords;\n }\n\n if (options.wordSeparator != null && options.wordSeparator.length > 1) {\n options.wordSeparator = options.wordSeparator[0];\n }\n\n this.sanitizePasswordLength(options, false);\n }\n\n private capitalize(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n private async appendRandomNumberToRandomWord(wordList: string[]) {\n if (wordList == null || wordList.length <= 0) {\n return;\n }\n const index = await this.cryptoService.randomNumber(0, wordList.length - 1);\n const num = await this.cryptoService.randomNumber(0, 9);\n wordList[index] = wordList[index] + num;\n }\n\n private async encryptHistory(history: GeneratedPasswordHistory[]): Promise {\n if (history == null || history.length === 0) {\n return Promise.resolve([]);\n }\n\n const promises = history.map(async (item) => {\n const encrypted = await this.cryptoService.encrypt(item.password);\n return new GeneratedPasswordHistory(encrypted.encryptedString, item.date);\n });\n\n return await Promise.all(promises);\n }\n\n private async decryptHistory(history: GeneratedPasswordHistory[]): Promise {\n if (history == null || history.length === 0) {\n return Promise.resolve([]);\n }\n\n const promises = history.map(async (item) => {\n const decrypted = await this.cryptoService.decryptToUtf8(new CipherString(item.password));\n return new GeneratedPasswordHistory(decrypted, item.date);\n });\n\n return await Promise.all(promises);\n }\n\n private matchesPrevious(password: string, history: GeneratedPasswordHistory[]): boolean {\n if (history == null || history.length === 0) {\n return false;\n }\n\n return history[history.length - 1].password === password;\n }\n\n // ref: https://stackoverflow.com/a/12646864/1090359\n private async shuffleArray(array: string[]) {\n for (let i = array.length - 1; i > 0; i--) {\n const j = await this.cryptoService.randomNumber(0, i);\n [array[i], array[j]] = [array[j], array[i]];\n }\n }\n\n private sanitizePasswordLength(options: any, forGeneration: boolean) {\n let minUppercaseCalc = 0;\n let minLowercaseCalc = 0;\n let minNumberCalc: number = options.minNumber;\n let minSpecialCalc: number = options.minSpecial;\n\n if (options.uppercase && options.minUppercase <= 0) {\n minUppercaseCalc = 1;\n } else if (!options.uppercase) {\n minUppercaseCalc = 0;\n }\n\n if (options.lowercase && options.minLowercase <= 0) {\n minLowercaseCalc = 1;\n } else if (!options.lowercase) {\n minLowercaseCalc = 0;\n }\n\n if (options.number && options.minNumber <= 0) {\n minNumberCalc = 1;\n } else if (!options.number) {\n minNumberCalc = 0;\n }\n\n if (options.special && options.minSpecial <= 0) {\n minSpecialCalc = 1;\n } else if (!options.special) {\n minSpecialCalc = 0;\n }\n\n // This should never happen but is a final safety net\n if (!options.length || options.length < 1) {\n options.length = 10;\n }\n\n const minLength: number = minUppercaseCalc + minLowercaseCalc + minNumberCalc + minSpecialCalc;\n // Normalize and Generation both require this modification\n if (options.length < minLength) {\n options.length = minLength;\n }\n\n // Apply other changes if the options object passed in is for generation\n if (forGeneration) {\n options.minUppercase = minUppercaseCalc;\n options.minLowercase = minLowercaseCalc;\n options.minNumber = minNumberCalc;\n options.minSpecial = minSpecialCalc;\n }\n }\n}\n","import { SettingsService as SettingsServiceAbstraction } from '../abstractions/settings.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nconst Keys = {\n settingsPrefix: 'settings_',\n equivalentDomains: 'equivalentDomains',\n};\n\nexport class SettingsService implements SettingsServiceAbstraction {\n private settingsCache: any;\n\n constructor(private userService: UserService, private storageService: StorageService) {\n }\n\n clearCache(): void {\n this.settingsCache = null;\n }\n\n getEquivalentDomains(): Promise {\n return this.getSettingsKey(Keys.equivalentDomains);\n }\n\n async setEquivalentDomains(equivalentDomains: string[][]): Promise {\n await this.setSettingsKey(Keys.equivalentDomains, equivalentDomains);\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.settingsPrefix + userId);\n this.clearCache();\n }\n\n // Helpers\n\n private async getSettings(): Promise {\n if (this.settingsCache == null) {\n const userId = await this.userService.getUserId();\n this.settingsCache = this.storageService.get(Keys.settingsPrefix + userId);\n }\n return this.settingsCache;\n }\n\n private async getSettingsKey(key: string): Promise {\n const settings = await this.getSettings();\n if (settings != null && settings[key]) {\n return settings[key];\n }\n return null;\n }\n\n private async setSettingsKey(key: string, value: any): Promise {\n const userId = await this.userService.getUserId();\n let settings = await this.getSettings();\n if (!settings) {\n settings = {};\n }\n\n settings[key] = value;\n await this.storageService.save(Keys.settingsPrefix + userId, settings);\n this.settingsCache = settings;\n }\n}\n","import { StateService as StateServiceAbstraction } from '../abstractions/state.service';\n\nexport class StateService implements StateServiceAbstraction {\n private state: any = {};\n\n get(key: string): Promise {\n if (this.state.hasOwnProperty(key)) {\n return Promise.resolve(this.state[key]);\n }\n return Promise.resolve(null);\n }\n\n save(key: string, obj: any): Promise {\n this.state[key] = obj;\n return Promise.resolve();\n }\n\n remove(key: string): Promise {\n delete this.state[key];\n return Promise.resolve();\n }\n\n purge(): Promise {\n this.state = {};\n return Promise.resolve();\n }\n}\n","import { ApiService } from '../abstractions/api.service';\nimport { CipherService } from '../abstractions/cipher.service';\nimport { CollectionService } from '../abstractions/collection.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { FolderService } from '../abstractions/folder.service';\nimport { MessagingService } from '../abstractions/messaging.service';\nimport { PolicyService } from '../abstractions/policy.service';\nimport { SettingsService } from '../abstractions/settings.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { SyncService as SyncServiceAbstraction } from '../abstractions/sync.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { CipherData } from '../models/data/cipherData';\nimport { CollectionData } from '../models/data/collectionData';\nimport { FolderData } from '../models/data/folderData';\nimport { OrganizationData } from '../models/data/organizationData';\nimport { PolicyData } from '../models/data/policyData';\n\nimport { CipherResponse } from '../models/response/cipherResponse';\nimport { CollectionDetailsResponse } from '../models/response/collectionResponse';\nimport { DomainsResponse } from '../models/response/domainsResponse';\nimport { FolderResponse } from '../models/response/folderResponse';\nimport {\n SyncCipherNotification,\n SyncFolderNotification,\n} from '../models/response/notificationResponse';\nimport { PolicyResponse } from '../models/response/policyResponse';\nimport { ProfileResponse } from '../models/response/profileResponse';\n\nconst Keys = {\n lastSyncPrefix: 'lastSync_',\n};\n\nexport class SyncService implements SyncServiceAbstraction {\n syncInProgress: boolean = false;\n\n constructor(private userService: UserService, private apiService: ApiService,\n private settingsService: SettingsService, private folderService: FolderService,\n private cipherService: CipherService, private cryptoService: CryptoService,\n private collectionService: CollectionService, private storageService: StorageService,\n private messagingService: MessagingService, private policyService: PolicyService,\n private logoutCallback: (expired: boolean) => Promise) {\n }\n\n async getLastSync(): Promise {\n const userId = await this.userService.getUserId();\n if (userId == null) {\n return null;\n }\n\n const lastSync = await this.storageService.get(Keys.lastSyncPrefix + userId);\n if (lastSync) {\n return new Date(lastSync);\n }\n\n return null;\n }\n\n async setLastSync(date: Date): Promise {\n const userId = await this.userService.getUserId();\n if (userId == null) {\n return;\n }\n\n await this.storageService.save(Keys.lastSyncPrefix + userId, date.toJSON());\n }\n\n async fullSync(forceSync: boolean, allowThrowOnError = false): Promise {\n this.syncStarted();\n const isAuthenticated = await this.userService.isAuthenticated();\n if (!isAuthenticated) {\n return this.syncCompleted(false);\n }\n\n const now = new Date();\n const needsSyncResult = await this.needsSyncing(forceSync);\n const needsSync = needsSyncResult[0];\n const skipped = needsSyncResult[1];\n\n if (skipped) {\n return this.syncCompleted(false);\n }\n\n if (!needsSync) {\n await this.setLastSync(now);\n return this.syncCompleted(false);\n }\n\n const userId = await this.userService.getUserId();\n try {\n const response = await this.apiService.getSync();\n\n await this.syncProfile(response.profile);\n await this.syncFolders(userId, response.folders);\n await this.syncCollections(response.collections);\n await this.syncCiphers(userId, response.ciphers);\n await this.syncSettings(userId, response.domains);\n await this.syncPolicies(response.policies);\n\n await this.setLastSync(now);\n return this.syncCompleted(true);\n } catch (e) {\n if (allowThrowOnError) {\n throw e;\n } else {\n return this.syncCompleted(false);\n }\n }\n }\n\n async syncUpsertFolder(notification: SyncFolderNotification, isEdit: boolean): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n try {\n const localFolder = await this.folderService.get(notification.id);\n if ((!isEdit && localFolder == null) ||\n (isEdit && localFolder != null && localFolder.revisionDate < notification.revisionDate)) {\n const remoteFolder = await this.apiService.getFolder(notification.id);\n if (remoteFolder != null) {\n const userId = await this.userService.getUserId();\n await this.folderService.upsert(new FolderData(remoteFolder, userId));\n this.messagingService.send('syncedUpsertedFolder', { folderId: notification.id });\n return this.syncCompleted(true);\n }\n }\n } catch { }\n }\n return this.syncCompleted(false);\n }\n\n async syncDeleteFolder(notification: SyncFolderNotification): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n await this.folderService.delete(notification.id);\n this.messagingService.send('syncedDeletedFolder', { folderId: notification.id });\n this.syncCompleted(true);\n return true;\n }\n return this.syncCompleted(false);\n }\n\n async syncUpsertCipher(notification: SyncCipherNotification, isEdit: boolean): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n try {\n let shouldUpdate = true;\n const localCipher = await this.cipherService.get(notification.id);\n if (localCipher != null && localCipher.revisionDate >= notification.revisionDate) {\n shouldUpdate = false;\n }\n\n let checkCollections = false;\n if (shouldUpdate) {\n if (isEdit) {\n shouldUpdate = localCipher != null;\n checkCollections = true;\n } else {\n if (notification.collectionIds == null || notification.organizationId == null) {\n shouldUpdate = localCipher == null;\n } else {\n shouldUpdate = false;\n checkCollections = true;\n }\n }\n }\n\n if (!shouldUpdate && checkCollections && notification.organizationId != null &&\n notification.collectionIds != null && notification.collectionIds.length > 0) {\n const collections = await this.collectionService.getAll();\n if (collections != null) {\n for (let i = 0; i < collections.length; i++) {\n if (notification.collectionIds.indexOf(collections[i].id) > -1) {\n shouldUpdate = true;\n break;\n }\n }\n }\n }\n\n if (shouldUpdate) {\n const remoteCipher = await this.apiService.getCipher(notification.id);\n if (remoteCipher != null) {\n const userId = await this.userService.getUserId();\n await this.cipherService.upsert(new CipherData(remoteCipher, userId));\n this.messagingService.send('syncedUpsertedCipher', { cipherId: notification.id });\n return this.syncCompleted(true);\n }\n }\n } catch (e) {\n if (e != null && e.statusCode === 404 && isEdit) {\n await this.cipherService.delete(notification.id);\n this.messagingService.send('syncedDeletedCipher', { cipherId: notification.id });\n return this.syncCompleted(true);\n }\n }\n }\n return this.syncCompleted(false);\n }\n\n async syncDeleteCipher(notification: SyncCipherNotification): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n await this.cipherService.delete(notification.id);\n this.messagingService.send('syncedDeletedCipher', { cipherId: notification.id });\n return this.syncCompleted(true);\n }\n return this.syncCompleted(false);\n }\n\n // Helpers\n\n private syncStarted() {\n this.syncInProgress = true;\n this.messagingService.send('syncStarted');\n }\n\n private syncCompleted(successfully: boolean): boolean {\n this.syncInProgress = false;\n this.messagingService.send('syncCompleted', { successfully: successfully });\n return successfully;\n }\n\n private async needsSyncing(forceSync: boolean) {\n if (forceSync) {\n return [true, false];\n }\n\n const lastSync = await this.getLastSync();\n if (lastSync == null || lastSync.getTime() === 0) {\n return [true, false];\n }\n\n try {\n const response = await this.apiService.getAccountRevisionDate();\n if (new Date(response) <= lastSync) {\n return [false, false];\n }\n return [true, false];\n } catch (e) {\n return [false, true];\n }\n }\n\n private async syncProfile(response: ProfileResponse) {\n const stamp = await this.userService.getSecurityStamp();\n if (stamp != null && stamp !== response.securityStamp) {\n if (this.logoutCallback != null) {\n await this.logoutCallback(true);\n }\n\n throw new Error('Stamp has changed');\n }\n\n await this.cryptoService.setEncKey(response.key);\n await this.cryptoService.setEncPrivateKey(response.privateKey);\n await this.cryptoService.setOrgKeys(response.organizations);\n await this.userService.setSecurityStamp(response.securityStamp);\n\n const organizations: { [id: string]: OrganizationData; } = {};\n response.organizations.forEach((o) => {\n organizations[o.id] = new OrganizationData(o);\n });\n return await this.userService.replaceOrganizations(organizations);\n }\n\n private async syncFolders(userId: string, response: FolderResponse[]) {\n const folders: { [id: string]: FolderData; } = {};\n response.forEach((f) => {\n folders[f.id] = new FolderData(f, userId);\n });\n return await this.folderService.replace(folders);\n }\n\n private async syncCollections(response: CollectionDetailsResponse[]) {\n const collections: { [id: string]: CollectionData; } = {};\n response.forEach((c) => {\n collections[c.id] = new CollectionData(c);\n });\n return await this.collectionService.replace(collections);\n }\n\n private async syncCiphers(userId: string, response: CipherResponse[]) {\n const ciphers: { [id: string]: CipherData; } = {};\n response.forEach((c) => {\n ciphers[c.id] = new CipherData(c, userId);\n });\n return await this.cipherService.replace(ciphers);\n }\n\n private async syncSettings(userId: string, response: DomainsResponse) {\n let eqDomains: string[][] = [];\n if (response != null && response.equivalentDomains != null) {\n eqDomains = eqDomains.concat(response.equivalentDomains);\n }\n\n if (response != null && response.globalEquivalentDomains != null) {\n response.globalEquivalentDomains.forEach((global) => {\n if (global.domains.length > 0) {\n eqDomains.push(global.domains);\n }\n });\n }\n\n return this.settingsService.setEquivalentDomains(eqDomains);\n }\n\n private async syncPolicies(response: PolicyResponse[]) {\n const policies: { [id: string]: PolicyData; } = {};\n if (response != null) {\n response.forEach((p) => {\n policies[p.id] = new PolicyData(p);\n });\n }\n return await this.policyService.replace(policies);\n }\n}\n","import { ConstantsService } from './constants.service';\n\nimport { StorageService } from '../abstractions/storage.service';\nimport { TokenService as TokenServiceAbstraction } from '../abstractions/token.service';\n\nimport { Utils } from '../misc/utils';\n\nconst Keys = {\n accessToken: 'accessToken',\n refreshToken: 'refreshToken',\n twoFactorTokenPrefix: 'twoFactorToken_',\n};\n\nexport class TokenService implements TokenServiceAbstraction {\n token: string;\n decodedToken: any;\n refreshToken: string;\n\n constructor(private storageService: StorageService) {\n }\n\n setTokens(accessToken: string, refreshToken: string): Promise {\n return Promise.all([\n this.setToken(accessToken),\n this.setRefreshToken(refreshToken),\n ]);\n }\n\n async setToken(token: string): Promise {\n this.token = token;\n this.decodedToken = null;\n\n if (await this.skipTokenStorage()) {\n // if we have a vault timeout and the action is log out, don't store token\n return;\n }\n\n return this.storageService.save(Keys.accessToken, token);\n }\n\n async getToken(): Promise {\n if (this.token != null) {\n return this.token;\n }\n\n this.token = await this.storageService.get(Keys.accessToken);\n return this.token;\n }\n\n async setRefreshToken(refreshToken: string): Promise {\n this.refreshToken = refreshToken;\n\n if (await this.skipTokenStorage()) {\n // if we have a vault timeout and the action is log out, don't store token\n return;\n }\n\n return this.storageService.save(Keys.refreshToken, refreshToken);\n }\n\n async getRefreshToken(): Promise {\n if (this.refreshToken != null) {\n return this.refreshToken;\n }\n\n this.refreshToken = await this.storageService.get(Keys.refreshToken);\n return this.refreshToken;\n }\n\n async toggleTokens(): Promise {\n const token = await this.getToken();\n const refreshToken = await this.getRefreshToken();\n const timeout = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n const action = await this.storageService.get(ConstantsService.vaultTimeoutActionKey);\n if ((timeout != null || timeout === 0) && action === 'logOut') {\n // if we have a vault timeout and the action is log out, reset tokens\n await this.clearToken();\n this.token = token;\n this.refreshToken = refreshToken;\n return;\n }\n\n await this.setToken(token);\n await this.setRefreshToken(refreshToken);\n }\n\n setTwoFactorToken(token: string, email: string): Promise {\n return this.storageService.save(Keys.twoFactorTokenPrefix + email, token);\n }\n\n getTwoFactorToken(email: string): Promise {\n return this.storageService.get(Keys.twoFactorTokenPrefix + email);\n }\n\n clearTwoFactorToken(email: string): Promise {\n return this.storageService.remove(Keys.twoFactorTokenPrefix + email);\n }\n\n clearToken(): Promise {\n this.token = null;\n this.decodedToken = null;\n this.refreshToken = null;\n\n return Promise.all([\n this.storageService.remove(Keys.accessToken),\n this.storageService.remove(Keys.refreshToken),\n ]);\n }\n\n // jwthelper methods\n // ref https://github.com/auth0/angular-jwt/blob/master/src/angularJwt/services/jwt.js\n\n decodeToken(): any {\n if (this.decodedToken) {\n return this.decodedToken;\n }\n\n if (this.token == null) {\n throw new Error('Token not found.');\n }\n\n const parts = this.token.split('.');\n if (parts.length !== 3) {\n throw new Error('JWT must have 3 parts');\n }\n\n const decoded = Utils.fromUrlB64ToUtf8(parts[1]);\n if (decoded == null) {\n throw new Error('Cannot decode the token');\n }\n\n this.decodedToken = JSON.parse(decoded);\n return this.decodedToken;\n }\n\n getTokenExpirationDate(): Date {\n const decoded = this.decodeToken();\n if (typeof decoded.exp === 'undefined') {\n return null;\n }\n\n const d = new Date(0); // The 0 here is the key, which sets the date to the epoch\n d.setUTCSeconds(decoded.exp);\n return d;\n }\n\n tokenSecondsRemaining(offsetSeconds: number = 0): number {\n const d = this.getTokenExpirationDate();\n if (d == null) {\n return 0;\n }\n\n const msRemaining = d.valueOf() - (new Date().valueOf() + (offsetSeconds * 1000));\n return Math.round(msRemaining / 1000);\n }\n\n tokenNeedsRefresh(minutes: number = 5): boolean {\n const sRemaining = this.tokenSecondsRemaining();\n return sRemaining < (60 * minutes);\n }\n\n getUserId(): string {\n const decoded = this.decodeToken();\n if (typeof decoded.sub === 'undefined') {\n throw new Error('No user id found');\n }\n\n return decoded.sub as string;\n }\n\n getEmail(): string {\n const decoded = this.decodeToken();\n if (typeof decoded.email === 'undefined') {\n throw new Error('No email found');\n }\n\n return decoded.email as string;\n }\n\n getEmailVerified(): boolean {\n const decoded = this.decodeToken();\n if (typeof decoded.email_verified === 'undefined') {\n throw new Error('No email verification found');\n }\n\n return decoded.email_verified as boolean;\n }\n\n getName(): string {\n const decoded = this.decodeToken();\n if (typeof decoded.name === 'undefined') {\n return null;\n }\n\n return decoded.name as string;\n }\n\n getPremium(): boolean {\n const decoded = this.decodeToken();\n if (typeof decoded.premium === 'undefined') {\n return false;\n }\n\n return decoded.premium as boolean;\n }\n\n getIssuer(): string {\n const decoded = this.decodeToken();\n if (typeof decoded.iss === 'undefined') {\n throw new Error('No issuer found');\n }\n\n return decoded.iss as string;\n }\n\n private async skipTokenStorage(): Promise {\n const timeout = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n const action = await this.storageService.get(ConstantsService.vaultTimeoutActionKey);\n return timeout != null && action === 'logOut';\n }\n}\n","import { ConstantsService } from './constants.service';\n\nimport { CryptoFunctionService } from '../abstractions/cryptoFunction.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { TotpService as TotpServiceAbstraction } from '../abstractions/totp.service';\n\nimport { Utils } from '../misc/utils';\n\nconst B32Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';\nconst SteamChars = '23456789BCDFGHJKMNPQRTVWXY';\n\nexport class TotpService implements TotpServiceAbstraction {\n constructor(private storageService: StorageService, private cryptoFunctionService: CryptoFunctionService) { }\n\n async getCode(key: string): Promise {\n if (key == null) {\n return null;\n }\n let period = 30;\n let alg: 'sha1' | 'sha256' | 'sha512' = 'sha1';\n let digits = 6;\n let keyB32 = key;\n const isOtpAuth = key.toLowerCase().indexOf('otpauth://') === 0;\n const isSteamAuth = !isOtpAuth && key.toLowerCase().indexOf('steam://') === 0;\n if (isOtpAuth) {\n const params = Utils.getQueryParams(key);\n if (params.has('digits') && params.get('digits') != null) {\n try {\n const digitParams = parseInt(params.get('digits').trim(), null);\n if (digitParams > 10) {\n digits = 10;\n } else if (digitParams > 0) {\n digits = digitParams;\n }\n } catch { }\n }\n if (params.has('period') && params.get('period') != null) {\n try {\n const periodParam = parseInt(params.get('period').trim(), null);\n if (periodParam > 0) {\n period = periodParam;\n }\n } catch { }\n }\n if (params.has('secret') && params.get('secret') != null) {\n keyB32 = params.get('secret');\n }\n if (params.has('algorithm') && params.get('algorithm') != null) {\n const algParam = params.get('algorithm').toLowerCase();\n if (algParam === 'sha1' || algParam === 'sha256' || algParam === 'sha512') {\n alg = algParam;\n }\n }\n } else if (isSteamAuth) {\n keyB32 = key.substr('steam://'.length);\n digits = 5;\n }\n\n const epoch = Math.round(new Date().getTime() / 1000.0);\n const timeHex = this.leftPad(this.decToHex(Math.floor(epoch / period)), 16, '0');\n const timeBytes = Utils.fromHexToArray(timeHex);\n const keyBytes = this.b32ToBytes(keyB32);\n\n if (!keyBytes.length || !timeBytes.length) {\n return null;\n }\n\n const hash = await this.sign(keyBytes, timeBytes, alg);\n if (hash.length === 0) {\n return null;\n }\n\n /* tslint:disable */\n const offset = (hash[hash.length - 1] & 0xf);\n const binary = ((hash[offset] & 0x7f) << 24) | ((hash[offset + 1] & 0xff) << 16) |\n ((hash[offset + 2] & 0xff) << 8) | (hash[offset + 3] & 0xff);\n /* tslint:enable */\n\n let otp = '';\n if (isSteamAuth) {\n // tslint:disable-next-line\n let fullCode = binary & 0x7fffffff;\n for (let i = 0; i < digits; i++) {\n otp += SteamChars[fullCode % SteamChars.length];\n fullCode = Math.trunc(fullCode / SteamChars.length);\n }\n } else {\n otp = (binary % Math.pow(10, digits)).toString();\n otp = this.leftPad(otp, digits, '0');\n }\n\n return otp;\n }\n\n getTimeInterval(key: string): number {\n let period = 30;\n if (key != null && key.toLowerCase().indexOf('otpauth://') === 0) {\n const params = Utils.getQueryParams(key);\n if (params.has('period') && params.get('period') != null) {\n try {\n period = parseInt(params.get('period').trim(), null);\n } catch { }\n }\n }\n return period;\n }\n\n async isAutoCopyEnabled(): Promise {\n return !(await this.storageService.get(ConstantsService.disableAutoTotpCopyKey));\n }\n\n // Helpers\n\n private leftPad(s: string, l: number, p: string): string {\n if (l + 1 >= s.length) {\n s = Array(l + 1 - s.length).join(p) + s;\n }\n return s;\n }\n\n private decToHex(d: number): string {\n return (d < 15.5 ? '0' : '') + Math.round(d).toString(16);\n }\n\n private b32ToHex(s: string): string {\n s = s.toUpperCase();\n let cleanedInput = '';\n\n for (let i = 0; i < s.length; i++) {\n if (B32Chars.indexOf(s[i]) < 0) {\n continue;\n }\n\n cleanedInput += s[i];\n }\n s = cleanedInput;\n\n let bits = '';\n let hex = '';\n for (let i = 0; i < s.length; i++) {\n const byteIndex = B32Chars.indexOf(s.charAt(i));\n if (byteIndex < 0) {\n continue;\n }\n bits += this.leftPad(byteIndex.toString(2), 5, '0');\n }\n for (let i = 0; i + 4 <= bits.length; i += 4) {\n const chunk = bits.substr(i, 4);\n hex = hex + parseInt(chunk, 2).toString(16);\n }\n return hex;\n }\n\n private b32ToBytes(s: string): Uint8Array {\n return Utils.fromHexToArray(this.b32ToHex(s));\n }\n\n private async sign(keyBytes: Uint8Array, timeBytes: Uint8Array, alg: 'sha1' | 'sha256' | 'sha512') {\n const signature = await this.cryptoFunctionService.hmac(timeBytes.buffer, keyBytes.buffer, alg);\n return new Uint8Array(signature);\n }\n}\n","import { StorageService } from '../abstractions/storage.service';\nimport { TokenService } from '../abstractions/token.service';\nimport { UserService as UserServiceAbstraction } from '../abstractions/user.service';\n\nimport { OrganizationData } from '../models/data/organizationData';\nimport { Organization } from '../models/domain/organization';\n\nimport { KdfType } from '../enums/kdfType';\n\nconst Keys = {\n userId: 'userId',\n userEmail: 'userEmail',\n stamp: 'securityStamp',\n kdf: 'kdf',\n kdfIterations: 'kdfIterations',\n organizationsPrefix: 'organizations_',\n};\n\nexport class UserService implements UserServiceAbstraction {\n private userId: string;\n private email: string;\n private stamp: string;\n private kdf: KdfType;\n private kdfIterations: number;\n\n constructor(private tokenService: TokenService, private storageService: StorageService) { }\n\n setInformation(userId: string, email: string, kdf: KdfType, kdfIterations: number): Promise {\n this.email = email;\n this.userId = userId;\n this.kdf = kdf;\n this.kdfIterations = kdfIterations;\n\n return Promise.all([\n this.storageService.save(Keys.userEmail, email),\n this.storageService.save(Keys.userId, userId),\n this.storageService.save(Keys.kdf, kdf),\n this.storageService.save(Keys.kdfIterations, kdfIterations),\n ]);\n }\n\n setSecurityStamp(stamp: string): Promise {\n this.stamp = stamp;\n return this.storageService.save(Keys.stamp, stamp);\n }\n\n async getUserId(): Promise {\n if (this.userId == null) {\n this.userId = await this.storageService.get(Keys.userId);\n }\n return this.userId;\n }\n\n async getEmail(): Promise {\n if (this.email == null) {\n this.email = await this.storageService.get(Keys.userEmail);\n }\n return this.email;\n }\n\n async getSecurityStamp(): Promise {\n if (this.stamp == null) {\n this.stamp = await this.storageService.get(Keys.stamp);\n }\n return this.stamp;\n }\n\n async getKdf(): Promise {\n if (this.kdf == null) {\n this.kdf = await this.storageService.get(Keys.kdf);\n }\n return this.kdf;\n }\n\n async getKdfIterations(): Promise {\n if (this.kdfIterations == null) {\n this.kdfIterations = await this.storageService.get(Keys.kdfIterations);\n }\n return this.kdfIterations;\n }\n\n async clear(): Promise {\n const userId = await this.getUserId();\n\n await Promise.all([\n this.storageService.remove(Keys.userId),\n this.storageService.remove(Keys.userEmail),\n this.storageService.remove(Keys.stamp),\n this.storageService.remove(Keys.kdf),\n this.storageService.remove(Keys.kdfIterations),\n this.clearOrganizations(userId),\n ]);\n\n this.userId = this.email = this.stamp = null;\n this.kdf = null;\n this.kdfIterations = null;\n }\n\n async isAuthenticated(): Promise {\n const token = await this.tokenService.getToken();\n if (token == null) {\n return false;\n }\n\n const userId = await this.getUserId();\n return userId != null;\n }\n\n async canAccessPremium(): Promise {\n const tokenPremium = this.tokenService.getPremium();\n if (tokenPremium) {\n return true;\n }\n\n const orgs = await this.getAllOrganizations();\n for (let i = 0; i < orgs.length; i++) {\n if (orgs[i].usersGetPremium && orgs[i].enabled) {\n return true;\n }\n }\n return false;\n }\n\n async getOrganization(id: string): Promise {\n const userId = await this.getUserId();\n const organizations = await this.storageService.get<{ [id: string]: OrganizationData; }>(\n Keys.organizationsPrefix + userId);\n if (organizations == null || !organizations.hasOwnProperty(id)) {\n return null;\n }\n\n return new Organization(organizations[id]);\n }\n\n async getAllOrganizations(): Promise {\n const userId = await this.getUserId();\n const organizations = await this.storageService.get<{ [id: string]: OrganizationData; }>(\n Keys.organizationsPrefix + userId);\n const response: Organization[] = [];\n for (const id in organizations) {\n if (organizations.hasOwnProperty(id)) {\n response.push(new Organization(organizations[id]));\n }\n }\n return response;\n }\n\n async replaceOrganizations(organizations: { [id: string]: OrganizationData; }): Promise {\n const userId = await this.getUserId();\n await this.storageService.save(Keys.organizationsPrefix + userId, organizations);\n }\n\n async clearOrganizations(userId: string): Promise {\n await this.storageService.remove(Keys.organizationsPrefix + userId);\n }\n}\n","import { ConstantsService } from './constants.service';\n\nimport { CipherService } from '../abstractions/cipher.service';\nimport { CollectionService } from '../abstractions/collection.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { FolderService } from '../abstractions/folder.service';\nimport { MessagingService } from '../abstractions/messaging.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\nimport { SearchService } from '../abstractions/search.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { TokenService } from '../abstractions/token.service';\nimport { UserService } from '../abstractions/user.service';\nimport { VaultTimeoutService as VaultTimeoutServiceAbstraction } from '../abstractions/vaultTimeout.service';\n\nimport { CipherString } from '../models/domain/cipherString';\n\nexport class VaultTimeoutService implements VaultTimeoutServiceAbstraction {\n pinProtectedKey: CipherString = null;\n\n private inited = false;\n\n constructor(private cipherService: CipherService, private folderService: FolderService,\n private collectionService: CollectionService, private cryptoService: CryptoService,\n private platformUtilsService: PlatformUtilsService, private storageService: StorageService,\n private messagingService: MessagingService, private searchService: SearchService,\n private userService: UserService, private tokenService: TokenService,\n private lockedCallback: () => Promise = null, private loggedOutCallback: () => Promise = null) {\n }\n\n init(checkOnInterval: boolean) {\n if (this.inited) {\n return;\n }\n\n this.inited = true;\n if (checkOnInterval) {\n this.checkVaultTimeout();\n setInterval(() => this.checkVaultTimeout(), 10 * 1000); // check every 10 seconds\n }\n }\n\n // Keys aren't stored for a device that is locked or logged out.\n async isLocked(): Promise {\n const hasKey = await this.cryptoService.hasKey();\n return !hasKey;\n }\n\n async checkVaultTimeout(): Promise {\n if (await this.platformUtilsService.isViewOpen()) {\n // Do not lock\n return;\n }\n\n // \"is logged out check\" - similar to isLocked, below\n const authed = await this.userService.isAuthenticated();\n if (!authed) {\n return;\n }\n\n if (await this.isLocked()) {\n return;\n }\n\n // This has the potential to be removed. Evaluate after all platforms complete with auto-logout\n let vaultTimeout = this.platformUtilsService.lockTimeout();\n if (vaultTimeout == null) {\n vaultTimeout = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n }\n\n if (vaultTimeout == null || vaultTimeout < 0) {\n return;\n }\n\n const lastActive = await this.storageService.get(ConstantsService.lastActiveKey);\n if (lastActive == null) {\n return;\n }\n\n const vaultTimeoutSeconds = vaultTimeout * 60;\n const diffSeconds = ((new Date()).getTime() - lastActive) / 1000;\n if (diffSeconds >= vaultTimeoutSeconds) {\n // Pivot based on the saved vault timeout action\n const timeoutAction = await this.storageService.get(ConstantsService.vaultTimeoutActionKey);\n timeoutAction === 'lock' ? await this.lock(true) : await this.logOut();\n }\n }\n\n async lock(allowSoftLock = false): Promise {\n const authed = await this.userService.isAuthenticated();\n if (!authed) {\n return;\n }\n\n await Promise.all([\n this.cryptoService.clearKey(),\n this.cryptoService.clearOrgKeys(true),\n this.cryptoService.clearKeyPair(true),\n this.cryptoService.clearEncKey(true),\n ]);\n\n this.folderService.clearCache();\n this.cipherService.clearCache();\n this.collectionService.clearCache();\n this.searchService.clearIndex();\n this.messagingService.send('locked');\n if (this.lockedCallback != null) {\n await this.lockedCallback();\n }\n }\n\n async logOut(): Promise {\n if (this.loggedOutCallback != null) {\n await this.loggedOutCallback();\n }\n }\n\n async setVaultTimeoutOptions(timeout: number, action: string): Promise {\n await this.storageService.save(ConstantsService.vaultTimeoutKey, timeout);\n await this.storageService.save(ConstantsService.vaultTimeoutActionKey, action);\n await this.cryptoService.toggleKey();\n await this.tokenService.toggleTokens();\n }\n\n async isPinLockSet(): Promise<[boolean, boolean]> {\n const protectedPin = await this.storageService.get(ConstantsService.protectedPin);\n const pinProtectedKey = await this.storageService.get(ConstantsService.pinProtectedKey);\n return [protectedPin != null, pinProtectedKey != null];\n }\n\n clear(): Promise {\n this.pinProtectedKey = null;\n return this.storageService.remove(ConstantsService.protectedPin);\n }\n}\n","import { Cipher } from './cipher';\n\nimport { CipherView } from '../view/cipherView';\n\nexport class CipherWithIds extends Cipher {\n id: string;\n collectionIds: string[];\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CipherView) {\n this.id = o.id;\n super.build(o);\n this.collectionIds = o.collectionIds;\n }\n}\n","import { Collection } from './collection';\n\nimport { CollectionView } from '../view/collectionView';\n\nexport class CollectionWithId extends Collection {\n id: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CollectionView) {\n this.id = o.id;\n super.build(o);\n }\n}\n","import { Folder } from './folder';\n\nimport { FolderView } from '../view/folderView';\n\nexport class FolderWithId extends Folder {\n id: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: FolderView) {\n this.id = o.id;\n super.build(o);\n }\n}\n","export enum NotificationType {\n SyncCipherUpdate = 0,\n SyncCipherCreate = 1,\n SyncLoginDelete = 2,\n SyncFolderDelete = 3,\n SyncCiphers = 4,\n\n SyncVault = 5,\n SyncOrgKeys = 6,\n SyncFolderCreate = 7,\n SyncFolderUpdate = 8,\n SyncCipherDelete = 9,\n SyncSettings = 10,\n\n LogOut = 11,\n}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n Router,\n RouterStateSnapshot,\n} from '@angular/router';\n\nimport { MessagingService } from '../../abstractions/messaging.service';\nimport { UserService } from '../../abstractions/user.service';\nimport { VaultTimeoutService } from '../../abstractions/vaultTimeout.service';\n\n@Injectable()\nexport class AuthGuardService implements CanActivate {\n constructor(private vaultTimeoutService: VaultTimeoutService, private userService: UserService,\n private router: Router, private messagingService: MessagingService) { }\n\n async canActivate(route: ActivatedRouteSnapshot, routerState: RouterStateSnapshot) {\n const isAuthed = await this.userService.isAuthenticated();\n if (!isAuthed) {\n this.messagingService.send('authBlocked');\n return false;\n }\n\n const locked = await this.vaultTimeoutService.isLocked();\n if (locked) {\n if (routerState != null) {\n this.messagingService.send('lockedUrl', { url: routerState.url });\n }\n this.router.navigate(['lock']);\n return false;\n }\n\n return true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { UserService } from 'jslib/abstractions/user.service';\n\n@Injectable()\nexport class OrganizationGuardService implements CanActivate {\n constructor(private userService: UserService, private router: Router,\n private toasterService: ToasterService, private i18nService: I18nService) { }\n\n async canActivate(route: ActivatedRouteSnapshot) {\n const org = await this.userService.getOrganization(route.params.organizationId);\n if (org == null) {\n this.router.navigate(['/']);\n return false;\n }\n if (!org.isOwner && !org.enabled) {\n this.toasterService.popAsync('error', null, this.i18nService.t('organizationIsDisabled'));\n this.router.navigate(['/']);\n return false;\n }\n\n return true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n Router,\n} from '@angular/router';\n\nimport { UserService } from 'jslib/abstractions/user.service';\n\nimport { OrganizationUserType } from 'jslib/enums/organizationUserType';\n\n@Injectable()\nexport class OrganizationTypeGuardService implements CanActivate {\n constructor(private userService: UserService, private router: Router) { }\n\n async canActivate(route: ActivatedRouteSnapshot) {\n const org = await this.userService.getOrganization(route.parent.params.organizationId);\n const allowedTypes = route.data == null ? null : route.data.allowedTypes as OrganizationUserType[];\n if (allowedTypes == null || allowedTypes.indexOf(org.type) === -1) {\n this.router.navigate(['/organizations', org.id]);\n return false;\n }\n\n return true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n CanActivate,\n Router,\n} from '@angular/router';\n\nimport { UserService } from 'jslib/abstractions/user.service';\nimport { VaultTimeoutService } from 'jslib/abstractions/vaultTimeout.service';\n\n@Injectable()\nexport class UnauthGuardService implements CanActivate {\n constructor(private vaultTimeoutService: VaultTimeoutService, private userService: UserService,\n private router: Router) { }\n\n async canActivate() {\n const isAuthed = await this.userService.isAuthenticated();\n if (isAuthed) {\n const locked = await this.vaultTimeoutService.isLocked();\n if (locked) {\n this.router.navigate(['lock']);\n } else {\n this.router.navigate(['vault']);\n }\n return false;\n }\n\n return true;\n }\n}\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport 'bootstrap';\nimport 'jquery';\nimport 'popper.js';\n\n// tslint:disable-next-line\nrequire('../scss/styles.scss');\n\nimport { AppModule } from './app.module';\n\nif (process.env.ENV === 'production') {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule, { preserveWhitespaces: true });\n","import 'core-js';\n\nimport { ToasterModule } from 'angular2-toaster';\nimport { Angulartics2Module } from 'angulartics2';\nimport { Angulartics2GoogleAnalytics } from 'angulartics2/ga';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\n\nimport { AppRoutingModule } from './app-routing.module';\n\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n\nimport { ServicesModule } from './services/services.module';\n\nimport { AppComponent } from './app.component';\nimport { ModalComponent } from './modal.component';\n\nimport { AvatarComponent } from './components/avatar.component';\nimport { PasswordStrengthComponent } from './components/password-strength.component';\n\nimport { FooterComponent } from './layouts/footer.component';\nimport { FrontendLayoutComponent } from './layouts/frontend-layout.component';\nimport { NavbarComponent } from './layouts/navbar.component';\nimport { OrganizationLayoutComponent } from './layouts/organization-layout.component';\nimport { UserLayoutComponent } from './layouts/user-layout.component';\n\nimport { AcceptOrganizationComponent } from './accounts/accept-organization.component';\nimport { HintComponent } from './accounts/hint.component';\nimport { LockComponent } from './accounts/lock.component';\nimport { LoginComponent } from './accounts/login.component';\nimport { RecoverDeleteComponent } from './accounts/recover-delete.component';\nimport { RecoverTwoFactorComponent } from './accounts/recover-two-factor.component';\nimport { RegisterComponent } from './accounts/register.component';\nimport { TwoFactorOptionsComponent } from './accounts/two-factor-options.component';\nimport { TwoFactorComponent } from './accounts/two-factor.component';\nimport { VerifyEmailTokenComponent } from './accounts/verify-email-token.component';\nimport { VerifyRecoverDeleteComponent } from './accounts/verify-recover-delete.component';\n\nimport {\n CollectionAddEditComponent as OrgCollectionAddEditComponent,\n} from './organizations/manage/collection-add-edit.component';\nimport { CollectionsComponent as OrgManageCollectionsComponent } from './organizations/manage/collections.component';\nimport { EntityEventsComponent as OrgEntityEventsComponent } from './organizations/manage/entity-events.component';\nimport { EntityUsersComponent as OrgEntityUsersComponent } from './organizations/manage/entity-users.component';\nimport { EventsComponent as OrgEventsComponent } from './organizations/manage/events.component';\nimport { GroupAddEditComponent as OrgGroupAddEditComponent } from './organizations/manage/group-add-edit.component';\nimport { GroupsComponent as OrgGroupsComponent } from './organizations/manage/groups.component';\nimport { ManageComponent as OrgManageComponent } from './organizations/manage/manage.component';\nimport { PeopleComponent as OrgPeopleComponent } from './organizations/manage/people.component';\nimport { PoliciesComponent as OrgPoliciesComponent } from './organizations/manage/policies.component';\nimport { PolicyEditComponent as OrgPolicyEditComponent } from './organizations/manage/policy-edit.component';\nimport { UserAddEditComponent as OrgUserAddEditComponent } from './organizations/manage/user-add-edit.component';\nimport { UserConfirmComponent as OrgUserConfirmComponent } from './organizations/manage/user-confirm.component';\nimport { UserGroupsComponent as OrgUserGroupsComponent } from './organizations/manage/user-groups.component';\n\nimport { AccountComponent as OrgAccountComponent } from './organizations/settings/account.component';\nimport { AdjustSeatsComponent } from './organizations/settings/adjust-seats.component';\nimport { ApiKeyComponent as OrgApiKeyComponent } from './organizations/settings/api-key.component';\nimport { ChangePlanComponent } from './organizations/settings/change-plan.component';\nimport { DeleteOrganizationComponent } from './organizations/settings/delete-organization.component';\nimport { DownloadLicenseComponent } from './organizations/settings/download-license.component';\nimport { OrganizationBillingComponent } from './organizations/settings/organization-billing.component';\nimport { OrganizationSubscriptionComponent } from './organizations/settings/organization-subscription.component';\nimport { RotateApiKeyComponent as OrgRotateApiKeyComponent } from './organizations/settings/rotate-api-key.component';\nimport { SettingsComponent as OrgSettingComponent } from './organizations/settings/settings.component';\nimport {\n TwoFactorSetupComponent as OrgTwoFactorSetupComponent,\n} from './organizations/settings/two-factor-setup.component';\n\nimport { ExportComponent as OrgExportComponent } from './organizations/tools/export.component';\nimport {\n ExposedPasswordsReportComponent as OrgExposedPasswordsReportComponent,\n} from './organizations/tools/exposed-passwords-report.component';\nimport { ImportComponent as OrgImportComponent } from './organizations/tools/import.component';\nimport {\n InactiveTwoFactorReportComponent as OrgInactiveTwoFactorReportComponent,\n} from './organizations/tools/inactive-two-factor-report.component';\nimport {\n ReusedPasswordsReportComponent as OrgReusedPasswordsReportComponent,\n} from './organizations/tools/reused-passwords-report.component';\nimport { ToolsComponent as OrgToolsComponent } from './organizations/tools/tools.component';\nimport {\n UnsecuredWebsitesReportComponent as OrgUnsecuredWebsitesReportComponent,\n} from './organizations/tools/unsecured-websites-report.component';\nimport {\n WeakPasswordsReportComponent as OrgWeakPasswordsReportComponent,\n} from './organizations/tools/weak-passwords-report.component';\n\nimport { AddEditComponent as OrgAddEditComponent } from './organizations/vault/add-edit.component';\nimport { AttachmentsComponent as OrgAttachmentsComponent } from './organizations/vault/attachments.component';\nimport { CiphersComponent as OrgCiphersComponent } from './organizations/vault/ciphers.component';\nimport { CollectionsComponent as OrgCollectionsComponent } from './organizations/vault/collections.component';\nimport { GroupingsComponent as OrgGroupingsComponent } from './organizations/vault/groupings.component';\nimport { VaultComponent as OrgVaultComponent } from './organizations/vault/vault.component';\n\nimport { AccountComponent } from './settings/account.component';\nimport { AddCreditComponent } from './settings/add-credit.component';\nimport { AdjustPaymentComponent } from './settings/adjust-payment.component';\nimport { AdjustStorageComponent } from './settings/adjust-storage.component';\nimport { ChangeEmailComponent } from './settings/change-email.component';\nimport { ChangeKdfComponent } from './settings/change-kdf.component';\nimport { ChangePasswordComponent } from './settings/change-password.component';\nimport { CreateOrganizationComponent } from './settings/create-organization.component';\nimport { DeauthorizeSessionsComponent } from './settings/deauthorize-sessions.component';\nimport { DeleteAccountComponent } from './settings/delete-account.component';\nimport { DomainRulesComponent } from './settings/domain-rules.component';\nimport { OptionsComponent } from './settings/options.component';\nimport { OrganizationPlansComponent } from './settings/organization-plans.component';\nimport { OrganizationsComponent } from './settings/organizations.component';\nimport { PaymentComponent } from './settings/payment.component';\nimport { PremiumComponent } from './settings/premium.component';\nimport { ProfileComponent } from './settings/profile.component';\nimport { PurgeVaultComponent } from './settings/purge-vault.component';\nimport { SettingsComponent } from './settings/settings.component';\nimport { TwoFactorAuthenticatorComponent } from './settings/two-factor-authenticator.component';\nimport { TwoFactorDuoComponent } from './settings/two-factor-duo.component';\nimport { TwoFactorEmailComponent } from './settings/two-factor-email.component';\nimport { TwoFactorRecoveryComponent } from './settings/two-factor-recovery.component';\nimport { TwoFactorSetupComponent } from './settings/two-factor-setup.component';\nimport { TwoFactorU2fComponent } from './settings/two-factor-u2f.component';\nimport { TwoFactorVerifyComponent } from './settings/two-factor-verify.component';\nimport { TwoFactorYubiKeyComponent } from './settings/two-factor-yubikey.component';\nimport { UpdateKeyComponent } from './settings/update-key.component';\nimport { UpdateLicenseComponent } from './settings/update-license.component';\nimport { UserBillingComponent } from './settings/user-billing.component';\nimport { UserSubscriptionComponent } from './settings/user-subscription.component';\nimport { VerifyEmailComponent } from './settings/verify-email.component';\n\nimport { BreachReportComponent } from './tools/breach-report.component';\nimport { ExportComponent } from './tools/export.component';\nimport { ExposedPasswordsReportComponent } from './tools/exposed-passwords-report.component';\nimport { ImportComponent } from './tools/import.component';\nimport { InactiveTwoFactorReportComponent } from './tools/inactive-two-factor-report.component';\nimport { PasswordGeneratorHistoryComponent } from './tools/password-generator-history.component';\nimport { PasswordGeneratorComponent } from './tools/password-generator.component';\nimport { ReusedPasswordsReportComponent } from './tools/reused-passwords-report.component';\nimport { ToolsComponent } from './tools/tools.component';\nimport { UnsecuredWebsitesReportComponent } from './tools/unsecured-websites-report.component';\nimport { WeakPasswordsReportComponent } from './tools/weak-passwords-report.component';\n\nimport { AddEditComponent } from './vault/add-edit.component';\nimport { AttachmentsComponent } from './vault/attachments.component';\nimport { BulkDeleteComponent } from './vault/bulk-delete.component';\nimport { BulkMoveComponent } from './vault/bulk-move.component';\nimport { BulkShareComponent } from './vault/bulk-share.component';\nimport { CiphersComponent } from './vault/ciphers.component';\nimport { CollectionsComponent } from './vault/collections.component';\nimport { FolderAddEditComponent } from './vault/folder-add-edit.component';\nimport { GroupingsComponent } from './vault/groupings.component';\nimport { ShareComponent } from './vault/share.component';\nimport { VaultComponent } from './vault/vault.component';\n\nimport { CalloutComponent } from 'jslib/angular/components/callout.component';\nimport { IconComponent } from 'jslib/angular/components/icon.component';\n\nimport { A11yTitleDirective } from 'jslib/angular/directives/a11y-title.directive';\nimport { ApiActionDirective } from 'jslib/angular/directives/api-action.directive';\nimport { AutofocusDirective } from 'jslib/angular/directives/autofocus.directive';\nimport { BlurClickDirective } from 'jslib/angular/directives/blur-click.directive';\nimport { BoxRowDirective } from 'jslib/angular/directives/box-row.directive';\nimport { FallbackSrcDirective } from 'jslib/angular/directives/fallback-src.directive';\nimport { InputVerbatimDirective } from 'jslib/angular/directives/input-verbatim.directive';\nimport { SelectCopyDirective } from 'jslib/angular/directives/select-copy.directive';\nimport { StopClickDirective } from 'jslib/angular/directives/stop-click.directive';\nimport { StopPropDirective } from 'jslib/angular/directives/stop-prop.directive';\nimport { TrueFalseValueDirective } from 'jslib/angular/directives/true-false-value.directive';\n\nimport { ColorPasswordPipe } from 'jslib/angular/pipes/color-password.pipe';\nimport { I18nPipe } from 'jslib/angular/pipes/i18n.pipe';\nimport { SearchCiphersPipe } from 'jslib/angular/pipes/search-ciphers.pipe';\nimport { SearchPipe } from 'jslib/angular/pipes/search.pipe';\n\nimport { registerLocaleData } from '@angular/common';\nimport localeCa from '@angular/common/locales/ca';\nimport localeCs from '@angular/common/locales/cs';\nimport localeDa from '@angular/common/locales/da';\nimport localeDe from '@angular/common/locales/de';\nimport localeEnGb from '@angular/common/locales/en-GB';\nimport localeEs from '@angular/common/locales/es';\nimport localeEt from '@angular/common/locales/et';\nimport localeFr from '@angular/common/locales/fr';\nimport localeHe from '@angular/common/locales/he';\nimport localeIt from '@angular/common/locales/it';\nimport localeJa from '@angular/common/locales/ja';\nimport localeKo from '@angular/common/locales/ko';\nimport localeNb from '@angular/common/locales/nb';\nimport localeNl from '@angular/common/locales/nl';\nimport localePl from '@angular/common/locales/pl';\nimport localePtBr from '@angular/common/locales/pt';\nimport localePtPt from '@angular/common/locales/pt-PT';\nimport localeRu from '@angular/common/locales/ru';\nimport localeSk from '@angular/common/locales/sk';\nimport localeSv from '@angular/common/locales/sv';\nimport localeUk from '@angular/common/locales/uk';\nimport localeZhCn from '@angular/common/locales/zh-Hans';\nimport localeZhTw from '@angular/common/locales/zh-Hant';\n\nregisterLocaleData(localeCa, 'ca');\nregisterLocaleData(localeCs, 'cs');\nregisterLocaleData(localeDa, 'da');\nregisterLocaleData(localeDe, 'de');\nregisterLocaleData(localeEnGb, 'en-GB');\nregisterLocaleData(localeEs, 'es');\nregisterLocaleData(localeEt, 'et');\nregisterLocaleData(localeFr, 'fr');\nregisterLocaleData(localeHe, 'he');\nregisterLocaleData(localeIt, 'it');\nregisterLocaleData(localeJa, 'ja');\nregisterLocaleData(localeKo, 'ko');\nregisterLocaleData(localeNb, 'nb');\nregisterLocaleData(localeNl, 'nl');\nregisterLocaleData(localePl, 'pl');\nregisterLocaleData(localePtBr, 'pt-BR');\nregisterLocaleData(localePtPt, 'pt-PT');\nregisterLocaleData(localeRu, 'ru');\nregisterLocaleData(localeSk, 'sk');\nregisterLocaleData(localeSv, 'sv');\nregisterLocaleData(localeUk, 'uk');\nregisterLocaleData(localeZhCn, 'zh-CN');\nregisterLocaleData(localeZhTw, 'zh-TW');\n\n@NgModule({\n imports: [\n BrowserModule,\n BrowserAnimationsModule,\n FormsModule,\n AppRoutingModule,\n ServicesModule,\n Angulartics2Module.forRoot([Angulartics2GoogleAnalytics], {\n pageTracking: {\n clearQueryParams: true,\n },\n }),\n ToasterModule.forRoot(),\n InfiniteScrollModule,\n DragDropModule,\n ],\n declarations: [\n A11yTitleDirective,\n AcceptOrganizationComponent,\n AccountComponent,\n AddCreditComponent,\n AddEditComponent,\n AdjustPaymentComponent,\n AdjustSeatsComponent,\n AdjustStorageComponent,\n ApiActionDirective,\n AppComponent,\n AttachmentsComponent,\n AutofocusDirective,\n AvatarComponent,\n BlurClickDirective,\n BoxRowDirective,\n BreachReportComponent,\n BulkDeleteComponent,\n BulkMoveComponent,\n BulkShareComponent,\n CalloutComponent,\n ChangeEmailComponent,\n ChangeKdfComponent,\n ChangePasswordComponent,\n ChangePlanComponent,\n CiphersComponent,\n CollectionsComponent,\n ColorPasswordPipe,\n CreateOrganizationComponent,\n DeauthorizeSessionsComponent,\n DeleteAccountComponent,\n DeleteOrganizationComponent,\n DomainRulesComponent,\n DownloadLicenseComponent,\n ExportComponent,\n ExposedPasswordsReportComponent,\n FallbackSrcDirective,\n FolderAddEditComponent,\n FooterComponent,\n FrontendLayoutComponent,\n GroupingsComponent,\n HintComponent,\n I18nPipe,\n IconComponent,\n ImportComponent,\n InactiveTwoFactorReportComponent,\n InputVerbatimDirective,\n LockComponent,\n LoginComponent,\n ModalComponent,\n NavbarComponent,\n OptionsComponent,\n OrgAccountComponent,\n OrgAddEditComponent,\n OrgApiKeyComponent,\n OrganizationBillingComponent,\n OrganizationPlansComponent,\n OrganizationSubscriptionComponent,\n OrgAttachmentsComponent,\n OrgCiphersComponent,\n OrgCollectionAddEditComponent,\n OrgCollectionsComponent,\n OrgEntityEventsComponent,\n OrgEntityUsersComponent,\n OrgEventsComponent,\n OrgExportComponent,\n OrgExposedPasswordsReportComponent,\n OrgImportComponent,\n OrgInactiveTwoFactorReportComponent,\n OrgGroupAddEditComponent,\n OrgGroupingsComponent,\n OrgGroupsComponent,\n OrgManageCollectionsComponent,\n OrgManageComponent,\n OrgPeopleComponent,\n OrgPolicyEditComponent,\n OrgPoliciesComponent,\n OrgReusedPasswordsReportComponent,\n OrgRotateApiKeyComponent,\n OrgSettingComponent,\n OrgToolsComponent,\n OrgTwoFactorSetupComponent,\n OrgUserAddEditComponent,\n OrgUserConfirmComponent,\n OrgUserGroupsComponent,\n OrganizationsComponent,\n OrganizationLayoutComponent,\n OrgUnsecuredWebsitesReportComponent,\n OrgVaultComponent,\n OrgWeakPasswordsReportComponent,\n PasswordGeneratorComponent,\n PasswordGeneratorHistoryComponent,\n PasswordStrengthComponent,\n PaymentComponent,\n PremiumComponent,\n ProfileComponent,\n PurgeVaultComponent,\n RecoverDeleteComponent,\n RecoverTwoFactorComponent,\n RegisterComponent,\n ReusedPasswordsReportComponent,\n SearchCiphersPipe,\n SearchPipe,\n SelectCopyDirective,\n SettingsComponent,\n ShareComponent,\n StopClickDirective,\n StopPropDirective,\n ToolsComponent,\n TrueFalseValueDirective,\n TwoFactorAuthenticatorComponent,\n TwoFactorComponent,\n TwoFactorDuoComponent,\n TwoFactorEmailComponent,\n TwoFactorOptionsComponent,\n TwoFactorRecoveryComponent,\n TwoFactorSetupComponent,\n TwoFactorU2fComponent,\n TwoFactorVerifyComponent,\n TwoFactorYubiKeyComponent,\n UnsecuredWebsitesReportComponent,\n UpdateKeyComponent,\n UpdateLicenseComponent,\n UserBillingComponent,\n UserLayoutComponent,\n UserSubscriptionComponent,\n VaultComponent,\n VerifyEmailComponent,\n VerifyEmailTokenComponent,\n VerifyRecoverDeleteComponent,\n WeakPasswordsReportComponent,\n ],\n entryComponents: [\n AddEditComponent,\n AttachmentsComponent,\n BulkDeleteComponent,\n BulkMoveComponent,\n BulkShareComponent,\n CollectionsComponent,\n DeauthorizeSessionsComponent,\n DeleteAccountComponent,\n DeleteOrganizationComponent,\n FolderAddEditComponent,\n ModalComponent,\n OrgAddEditComponent,\n OrgApiKeyComponent,\n OrgAttachmentsComponent,\n OrgCollectionAddEditComponent,\n OrgCollectionsComponent,\n OrgEntityEventsComponent,\n OrgEntityUsersComponent,\n OrgGroupAddEditComponent,\n OrgPolicyEditComponent,\n OrgRotateApiKeyComponent,\n OrgUserAddEditComponent,\n OrgUserConfirmComponent,\n OrgUserGroupsComponent,\n PasswordGeneratorHistoryComponent,\n PurgeVaultComponent,\n ShareComponent,\n TwoFactorAuthenticatorComponent,\n TwoFactorDuoComponent,\n TwoFactorEmailComponent,\n TwoFactorOptionsComponent,\n TwoFactorRecoveryComponent,\n TwoFactorU2fComponent,\n TwoFactorYubiKeyComponent,\n UpdateKeyComponent,\n ],\n providers: [],\n bootstrap: [AppComponent],\n})\nexport class AppModule { }\n","import { BroadcasterService as BroadcasterServiceAbstraction } from '../abstractions/broadcaster.service';\n\nexport class BroadcasterService implements BroadcasterServiceAbstraction {\n subscribers: Map any> = new Map any>();\n\n send(message: any, id?: string) {\n if (id != null) {\n if (this.subscribers.has(id)) {\n this.subscribers.get(id)(message);\n }\n return;\n }\n\n this.subscribers.forEach((value) => {\n value(message);\n });\n }\n\n subscribe(id: string, messageCallback: (message: any) => any) {\n this.subscribers.set(id, messageCallback);\n }\n\n unsubscribe(id: string) {\n if (this.subscribers.has(id)) {\n this.subscribers.delete(id);\n }\n }\n}\n","\n
\n © {{year}}, Bitwarden Inc & Raytio Ltd.\n
{{'versionNumber' | i18n : version}}\n
\n","
\n
\n
\n \n

{{'loginOrCreateNewAccount' | i18n}}

\n
\n
\n
\n \n \n
\n
\n \n
\n \n \n
\n \n {{'getMasterPasswordHint' | i18n}}\n \n
\n
\n \n \n
\n
\n
\n \n \n {{'createAccount' | i18n}}\n \n
\n
\n
\n
\n
\n
\n","import {\n Input,\n OnInit,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { AuthResult } from '../../models/domain/authResult';\n\nimport { AuthService } from '../../abstractions/auth.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\nimport { StateService } from '../../abstractions/state.service';\nimport { StorageService } from '../../abstractions/storage.service';\n\nimport { ConstantsService } from '../../services/constants.service';\n\nimport { Utils } from '../../misc/utils';\n\nconst Keys = {\n rememberedEmail: 'rememberedEmail',\n rememberEmail: 'rememberEmail',\n};\n\nexport class LoginComponent implements OnInit {\n @Input() email: string = '';\n @Input() rememberEmail = true;\n\n masterPassword: string = '';\n showPassword: boolean = false;\n formPromise: Promise;\n onSuccessfulLogin: () => Promise;\n onSuccessfulLoginNavigate: () => Promise;\n onSuccessfulLoginTwoFactorNavigate: () => Promise;\n\n protected twoFactorRoute = '2fa';\n protected successRoute = 'vault';\n\n constructor(protected authService: AuthService, protected router: Router,\n protected platformUtilsService: PlatformUtilsService, protected i18nService: I18nService,\n private storageService: StorageService, protected stateService: StorageService) { }\n\n async ngOnInit() {\n if (this.email == null || this.email === '') {\n this.email = await this.storageService.get(Keys.rememberedEmail);\n if (this.email == null) {\n this.email = '';\n }\n }\n this.rememberEmail = await this.storageService.get(Keys.rememberEmail);\n if (this.rememberEmail == null) {\n this.rememberEmail = true;\n }\n if (Utils.isBrowser) {\n document.getElementById(this.email == null || this.email === '' ? 'email' : 'masterPassword').focus();\n }\n }\n\n async submit() {\n if (this.email == null || this.email === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('emailRequired'));\n return;\n }\n if (this.email.indexOf('@') === -1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidEmail'));\n return;\n }\n if (this.masterPassword == null || this.masterPassword === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n try {\n this.formPromise = this.authService.logIn(this.email, this.masterPassword);\n const response = await this.formPromise;\n await this.storageService.save(Keys.rememberEmail, this.rememberEmail);\n if (this.rememberEmail) {\n await this.storageService.save(Keys.rememberedEmail, this.email);\n } else {\n await this.storageService.remove(Keys.rememberedEmail);\n }\n if (response.twoFactor) {\n this.platformUtilsService.eventTrack('Logged In To Two-step');\n if (this.onSuccessfulLoginTwoFactorNavigate != null) {\n this.onSuccessfulLoginTwoFactorNavigate();\n } else {\n this.router.navigate([this.twoFactorRoute]);\n }\n } else {\n const disableFavicon = await this.storageService.get(ConstantsService.disableFaviconKey);\n await this.stateService.save(ConstantsService.disableFaviconKey, !!disableFavicon);\n if (this.onSuccessfulLogin != null) {\n this.onSuccessfulLogin();\n }\n this.platformUtilsService.eventTrack('Logged In');\n if (this.onSuccessfulLoginNavigate != null) {\n this.onSuccessfulLoginNavigate();\n } else {\n this.router.navigate([this.successRoute]);\n }\n }\n } catch { }\n }\n\n togglePassword() {\n this.platformUtilsService.eventTrack('Toggled Master Password on Login');\n this.showPassword = !this.showPassword;\n document.getElementById('masterPassword').focus();\n }\n}\n","export function getDomain(host: string): string | null {\n return null;\n}\n","
\n
\n
\n

{{title}}

\n
\n
\n \n

\n {{'enterVerificationCodeApp' | i18n}}

\n

\n {{'enterVerificationCodeEmail' | i18n : twoFactorEmail}}\n

\n
\n \n \n \n \n {{'sendVerificationCodeEmailAgain' | i18n}}\n \n \n
\n \n \n

{{'insertYubiKey' | i18n}}

\n \"\"\n
\n \n \n
\n
\n \n

\n \n {{'loading' | i18n}}\n

\n \n

{{'insertU2f' | i18n}}

\n \"\"\n
\n
\n \n
\n \n
\n
\n \n
\n \n \n
\n \n

{{'noTwoStepProviders' | i18n}}

\n

{{'noTwoStepProviders2' | i18n}}

\n
\n
\n
\n \n \n {{'cancel' | i18n}}\n \n
\n \n
\n
\n
\n
\n
\n\n\n","import {\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nimport { AuthService } from '../../abstractions/auth.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\n\nexport class TwoFactorOptionsComponent implements OnInit {\n @Output() onProviderSelected = new EventEmitter();\n @Output() onRecoverSelected = new EventEmitter();\n\n providers: any[] = [];\n\n constructor(protected authService: AuthService, protected router: Router,\n protected i18nService: I18nService, protected platformUtilsService: PlatformUtilsService,\n protected win: Window) { }\n\n ngOnInit() {\n this.providers = this.authService.getSupportedTwoFactorProviders(this.win);\n }\n\n choose(p: any) {\n this.onProviderSelected.emit(p.type);\n }\n\n recover() {\n this.platformUtilsService.eventTrack('Selected Recover');\n this.platformUtilsService.launchUri('https://help.bitwarden.com/article/lost-two-step-device/');\n this.onRecoverSelected.emit();\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n EventEmitter,\n OnDestroy,\n Output,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { MessagingService } from '../../abstractions/messaging.service';\n\n@Component({\n selector: 'app-modal',\n template: ``,\n})\nexport class ModalComponent implements OnDestroy {\n @Output() onClose = new EventEmitter();\n @Output() onClosed = new EventEmitter();\n @Output() onShow = new EventEmitter();\n @Output() onShown = new EventEmitter();\n @ViewChild('container', { read: ViewContainerRef }) container: ViewContainerRef;\n parentContainer: ViewContainerRef = null;\n fade: boolean = true;\n\n constructor(protected componentFactoryResolver: ComponentFactoryResolver,\n protected messagingService: MessagingService) { }\n\n ngOnDestroy() {\n document.body.classList.remove('modal-open');\n document.body.removeChild(document.querySelector('.modal-backdrop'));\n }\n\n show(type: Type, parentContainer: ViewContainerRef, fade: boolean = true,\n setComponentParameters: (component: T) => void = null): T {\n this.onShow.emit();\n this.messagingService.send('modalShow');\n this.parentContainer = parentContainer;\n this.fade = fade;\n\n document.body.classList.add('modal-open');\n const backdrop = document.createElement('div');\n backdrop.className = 'modal-backdrop' + (this.fade ? ' fade' : '');\n document.body.appendChild(backdrop);\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(type);\n const componentRef = this.container.createComponent(factory);\n if (setComponentParameters != null) {\n setComponentParameters(componentRef.instance);\n }\n\n document.querySelector('.modal-dialog').addEventListener('click', (e: Event) => {\n e.stopPropagation();\n });\n\n const modals = Array.from(document.querySelectorAll('.modal, .modal *[data-dismiss=\"modal\"]'));\n for (const closeElement of modals) {\n closeElement.addEventListener('click', (event) => {\n this.close();\n });\n }\n\n this.onShown.emit();\n this.messagingService.send('modalShown');\n return componentRef.instance;\n }\n\n close() {\n this.onClose.emit();\n this.messagingService.send('modalClose');\n this.onClosed.emit();\n this.messagingService.send('modalClosed');\n if (this.parentContainer != null) {\n this.parentContainer.clear();\n }\n }\n}\n","import {\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { DeviceType } from '../../enums/deviceType';\nimport { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nimport { TwoFactorEmailRequest } from '../../models/request/twoFactorEmailRequest';\n\nimport { ApiService } from '../../abstractions/api.service';\nimport { AuthService } from '../../abstractions/auth.service';\nimport { EnvironmentService } from '../../abstractions/environment.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\nimport { StateService } from '../../abstractions/state.service';\nimport { StorageService } from '../../abstractions/storage.service';\n\nimport { TwoFactorProviders } from '../../services/auth.service';\nimport { ConstantsService } from '../../services/constants.service';\n\nimport * as DuoWebSDK from 'duo_web_sdk';\nimport { U2f } from '../../misc/u2f';\n\nexport class TwoFactorComponent implements OnInit, OnDestroy {\n token: string = '';\n remember: boolean = false;\n u2fReady: boolean = false;\n initU2f: boolean = true;\n providers = TwoFactorProviders;\n providerType = TwoFactorProviderType;\n selectedProviderType: TwoFactorProviderType = TwoFactorProviderType.Authenticator;\n u2fSupported: boolean = false;\n u2f: U2f = null;\n title: string = '';\n twoFactorEmail: string = null;\n formPromise: Promise;\n emailPromise: Promise;\n onSuccessfulLogin: () => Promise;\n onSuccessfulLoginNavigate: () => Promise;\n\n protected loginRoute = 'login';\n protected successRoute = 'vault';\n\n constructor(protected authService: AuthService, protected router: Router,\n protected i18nService: I18nService, protected apiService: ApiService,\n protected platformUtilsService: PlatformUtilsService, protected win: Window,\n protected environmentService: EnvironmentService, protected stateService: StateService,\n protected storageService: StorageService) {\n this.u2fSupported = this.platformUtilsService.supportsU2f(win);\n }\n\n async ngOnInit() {\n if (this.authService.email == null || this.authService.masterPasswordHash == null ||\n this.authService.twoFactorProvidersData == null) {\n this.router.navigate([this.loginRoute]);\n return;\n }\n\n if (this.initU2f && this.win != null && this.u2fSupported) {\n let customWebVaultUrl: string = null;\n if (this.environmentService.baseUrl != null) {\n customWebVaultUrl = this.environmentService.baseUrl;\n } else if (this.environmentService.webVaultUrl != null) {\n customWebVaultUrl = this.environmentService.webVaultUrl;\n }\n\n this.u2f = new U2f(this.win, customWebVaultUrl, (token: string) => {\n this.token = token;\n this.submit();\n }, (error: string) => {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'), error);\n }, (info: string) => {\n if (info === 'ready') {\n this.u2fReady = true;\n }\n });\n }\n\n this.selectedProviderType = this.authService.getDefaultTwoFactorProvider(this.u2fSupported);\n await this.init();\n }\n\n ngOnDestroy(): void {\n this.cleanupU2f();\n this.u2f = null;\n }\n\n async init() {\n if (this.selectedProviderType == null) {\n this.title = this.i18nService.t('loginUnavailable');\n return;\n }\n\n this.cleanupU2f();\n this.title = (TwoFactorProviders as any)[this.selectedProviderType].name;\n const providerData = this.authService.twoFactorProvidersData.get(this.selectedProviderType);\n switch (this.selectedProviderType) {\n case TwoFactorProviderType.U2f:\n if (!this.u2fSupported || this.u2f == null) {\n break;\n }\n\n if (providerData.Challenge != null) {\n setTimeout(() => {\n this.u2f.init(JSON.parse(providerData.Challenge));\n }, 500);\n } else {\n // TODO: Deprecated. Remove in future version.\n const challenges = JSON.parse(providerData.Challenges);\n if (challenges != null && challenges.length > 0) {\n this.u2f.init({\n appId: challenges[0].appId,\n challenge: challenges[0].challenge,\n keys: challenges.map((c: any) => {\n return {\n version: c.version,\n keyHandle: c.keyHandle,\n };\n }),\n });\n }\n }\n break;\n case TwoFactorProviderType.Duo:\n case TwoFactorProviderType.OrganizationDuo:\n setTimeout(() => {\n DuoWebSDK.init({\n iframe: undefined,\n host: providerData.Host,\n sig_request: providerData.Signature,\n submit_callback: async (f: HTMLFormElement) => {\n const sig = f.querySelector('input[name=\"sig_response\"]') as HTMLInputElement;\n if (sig != null) {\n this.token = sig.value;\n await this.submit();\n }\n },\n });\n }, 0);\n break;\n case TwoFactorProviderType.Email:\n this.twoFactorEmail = providerData.Email;\n if (this.authService.twoFactorProvidersData.size > 1) {\n await this.sendEmail(false);\n }\n break;\n default:\n break;\n }\n }\n\n async submit() {\n if (this.token == null || this.token === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('verificationCodeRequired'));\n return;\n }\n\n if (this.selectedProviderType === TwoFactorProviderType.U2f) {\n if (this.u2f != null) {\n this.u2f.stop();\n } else {\n return;\n }\n } else if (this.selectedProviderType === TwoFactorProviderType.Email ||\n this.selectedProviderType === TwoFactorProviderType.Authenticator) {\n this.token = this.token.replace(' ', '').trim();\n }\n\n try {\n this.formPromise = this.authService.logInTwoFactor(this.selectedProviderType, this.token, this.remember);\n await this.formPromise;\n const disableFavicon = await this.storageService.get(ConstantsService.disableFaviconKey);\n await this.stateService.save(ConstantsService.disableFaviconKey, !!disableFavicon);\n if (this.onSuccessfulLogin != null) {\n this.onSuccessfulLogin();\n }\n this.platformUtilsService.eventTrack('Logged In From Two-step');\n if (this.onSuccessfulLoginNavigate != null) {\n this.onSuccessfulLoginNavigate();\n } else {\n this.router.navigate([this.successRoute]);\n }\n } catch {\n if (this.selectedProviderType === TwoFactorProviderType.U2f && this.u2f != null) {\n this.u2f.start();\n }\n }\n }\n\n async sendEmail(doToast: boolean) {\n if (this.selectedProviderType !== TwoFactorProviderType.Email) {\n return;\n }\n\n if (this.emailPromise != null) {\n return;\n }\n\n try {\n const request = new TwoFactorEmailRequest(this.authService.email, this.authService.masterPasswordHash);\n this.emailPromise = this.apiService.postTwoFactorEmail(request);\n await this.emailPromise;\n if (doToast) {\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t('verificationCodeEmailSent', this.twoFactorEmail));\n }\n } catch { }\n\n this.emailPromise = null;\n }\n\n private cleanupU2f() {\n if (this.u2f != null) {\n this.u2f.stop();\n this.u2f.cleanup();\n }\n }\n}\n","import { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nexport class AuthResult {\n twoFactor: boolean = false;\n twoFactorProviders: Map = null;\n}\n","import { DeviceType } from '../../enums/deviceType';\n\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\n\nexport class DeviceRequest {\n type: DeviceType;\n name: string;\n identifier: string;\n pushToken?: string;\n\n constructor(appId: string, platformUtilsService: PlatformUtilsService) {\n this.type = platformUtilsService.getDevice();\n this.name = platformUtilsService.getDeviceString();\n this.identifier = appId;\n this.pushToken = null;\n }\n}\n","export class PreloginRequest {\n email: string;\n\n constructor(email: string) {\n this.email = email;\n }\n}\n","import { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nimport { DeviceRequest } from './deviceRequest';\n\nexport class TokenRequest {\n email: string;\n masterPasswordHash: string;\n token: string;\n provider: TwoFactorProviderType;\n remember: boolean;\n device?: DeviceRequest;\n\n constructor(email: string, masterPasswordHash: string, provider: TwoFactorProviderType,\n token: string, remember: boolean, device?: DeviceRequest) {\n this.email = email;\n this.masterPasswordHash = masterPasswordHash;\n this.token = token;\n this.provider = provider;\n this.remember = remember;\n this.device = device != null ? device : null;\n }\n\n toIdentityToken(clientId: string) {\n const obj: any = {\n grant_type: 'password',\n username: this.email,\n password: this.masterPasswordHash,\n scope: 'api offline_access',\n client_id: clientId,\n };\n\n if (this.device) {\n obj.deviceType = this.device.type;\n obj.deviceIdentifier = this.device.identifier;\n obj.deviceName = this.device.name;\n // no push tokens for browser apps yet\n // obj.devicePushToken = this.device.pushToken;\n }\n\n if (this.token && this.provider != null) {\n obj.twoFactorToken = this.token;\n obj.twoFactorProvider = this.provider;\n obj.twoFactorRemember = this.remember ? '1' : '0';\n }\n\n return obj;\n }\n}\n","export class U2f {\n private iframe: HTMLIFrameElement = null;\n private connectorLink: HTMLAnchorElement;\n private parseFunction = this.parseMessage.bind(this);\n\n constructor(private win: Window, private webVaultUrl: string, private successCallback: Function,\n private errorCallback: Function, private infoCallback: Function) {\n this.connectorLink = win.document.createElement('a');\n this.webVaultUrl = webVaultUrl != null && webVaultUrl !== '' ? webVaultUrl : 'https://vault.bitwarden.com';\n }\n\n init(data: any): void {\n this.connectorLink.href = this.webVaultUrl + '/u2f-connector.html' +\n '?data=' + this.base64Encode(JSON.stringify(data)) +\n '&parent=' + encodeURIComponent(this.win.document.location.href) +\n '&v=1';\n\n this.iframe = this.win.document.getElementById('u2f_iframe') as HTMLIFrameElement;\n this.iframe.src = this.connectorLink.href;\n\n this.win.addEventListener('message', this.parseFunction, false);\n }\n\n stop() {\n this.sendMessage('stop');\n }\n\n start() {\n this.sendMessage('start');\n }\n\n sendMessage(message: any) {\n if (!this.iframe || !this.iframe.src || !this.iframe.contentWindow) {\n return;\n }\n\n this.iframe.contentWindow.postMessage(message, this.iframe.src);\n }\n\n base64Encode(str: string): string {\n return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (match, p1) => {\n return String.fromCharCode(('0x' + p1) as any);\n }));\n }\n\n cleanup() {\n this.win.removeEventListener('message', this.parseFunction, false);\n }\n\n private parseMessage(event: MessageEvent) {\n if (!this.validMessage(event)) {\n return;\n }\n\n const parts: string[] = event.data.split('|');\n if (parts[0] === 'success' && this.successCallback) {\n this.successCallback(parts[1]);\n } else if (parts[0] === 'error' && this.errorCallback) {\n this.errorCallback(parts[1]);\n } else if (parts[0] === 'info' && this.infoCallback) {\n this.infoCallback(parts[1]);\n }\n }\n\n private validMessage(event: MessageEvent) {\n if (event.origin == null || event.origin === '' || event.origin !== (this.connectorLink as any).origin ||\n event.data == null || typeof (event.data) !== 'string') {\n return false;\n }\n\n return event.data.indexOf('success|') === 0 || event.data.indexOf('error|') === 0 ||\n event.data.indexOf('info|') === 0;\n }\n}\n","
\n
\n
\n

{{'createAccount' | i18n}}

\n
\n
\n \n {{'createOrganizationCreatePersonalAccount' | i18n}}\n \n
\n \n \n {{'emailAddressDesc' | i18n}}\n
\n
\n \n \n {{'yourNameDesc' | i18n}}\n
\n
\n \n {{'masterPasswordPolicyInEffect' | i18n}}\n
    \n
  • 0\">\n {{'policyInEffectMinComplexity' | i18n : getPasswordScoreAlertDisplay()}}\n
  • \n
  • 0\">\n {{'policyInEffectMinLength' | i18n : enforcedPolicyOptions?.minLength.toString()}}\n
  • \n
  • \n {{'policyInEffectUppercase' | i18n}}
  • \n
  • \n {{'policyInEffectLowercase' | i18n}}
  • \n
  • \n {{'policyInEffectNumbers' | i18n}}
  • \n
  • \n {{'policyInEffectSpecial' | i18n : '!@#$%^&*'}}
  • \n
\n
\n \n
\n
\n \n \n \n
\n
\n \n
\n
\n
\n {{'masterPassDesc' | i18n}}\n
\n
\n \n
\n \n \n
\n
\n
\n \n \n {{'masterPassHintDesc' | i18n}}\n
\n
\n
\n \n \n {{'cancel' | i18n}}\n \n
\n \n {{'submitAgreePolicies' | i18n}}\n {{'termsOfService' | i18n}},\n {{'privacyPolicy' | i18n}}\n \n
\n
\n
\n
\n
\n","import { Router } from '@angular/router';\n\nimport { KeysRequest } from '../../models/request/keysRequest';\nimport { RegisterRequest } from '../../models/request/registerRequest';\n\nimport { ApiService } from '../../abstractions/api.service';\nimport { AuthService } from '../../abstractions/auth.service';\nimport { CryptoService } from '../../abstractions/crypto.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PasswordGenerationService } from '../../abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\nimport { StateService } from '../../abstractions/state.service';\n\nimport { KdfType } from '../../enums/kdfType';\n\nexport class RegisterComponent {\n name: string = '';\n email: string = '';\n masterPassword: string = '';\n confirmMasterPassword: string = '';\n hint: string = '';\n showPassword: boolean = false;\n formPromise: Promise;\n masterPasswordScore: number;\n\n protected successRoute = 'login';\n private masterPasswordStrengthTimeout: any;\n\n constructor(protected authService: AuthService, protected router: Router,\n protected i18nService: I18nService, protected cryptoService: CryptoService,\n protected apiService: ApiService, protected stateService: StateService,\n protected platformUtilsService: PlatformUtilsService,\n protected passwordGenerationService: PasswordGenerationService) { }\n\n get masterPasswordScoreWidth() {\n return this.masterPasswordScore == null ? 0 : (this.masterPasswordScore + 1) * 20;\n }\n\n get masterPasswordScoreColor() {\n switch (this.masterPasswordScore) {\n case 4:\n return 'success';\n case 3:\n return 'primary';\n case 2:\n return 'warning';\n default:\n return 'danger';\n }\n }\n\n get masterPasswordScoreText() {\n switch (this.masterPasswordScore) {\n case 4:\n return this.i18nService.t('strong');\n case 3:\n return this.i18nService.t('good');\n case 2:\n return this.i18nService.t('weak');\n default:\n return this.masterPasswordScore != null ? this.i18nService.t('weak') : null;\n }\n }\n\n async submit() {\n if (this.email == null || this.email === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('emailRequired'));\n return;\n }\n if (this.email.indexOf('@') === -1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidEmail'));\n return;\n }\n if (this.masterPassword == null || this.masterPassword === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n if (this.masterPassword.length < 8) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassLength'));\n return;\n }\n if (this.masterPassword !== this.confirmMasterPassword) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassDoesntMatch'));\n return;\n }\n\n const strengthResult = this.passwordGenerationService.passwordStrength(this.masterPassword,\n this.getPasswordStrengthUserInput());\n if (strengthResult != null && strengthResult.score < 3) {\n const result = await this.platformUtilsService.showDialog(this.i18nService.t('weakMasterPasswordDesc'),\n this.i18nService.t('weakMasterPassword'), this.i18nService.t('yes'), this.i18nService.t('no'),\n 'warning');\n if (!result) {\n return;\n }\n }\n\n this.name = this.name === '' ? null : this.name;\n this.email = this.email.trim().toLowerCase();\n const kdf = KdfType.PBKDF2_SHA256;\n const useLowerKdf = this.platformUtilsService.isEdge() || this.platformUtilsService.isIE();\n const kdfIterations = useLowerKdf ? 10000 : 100000;\n const key = await this.cryptoService.makeKey(this.masterPassword, this.email, kdf, kdfIterations);\n const encKey = await this.cryptoService.makeEncKey(key);\n const hashedPassword = await this.cryptoService.hashPassword(this.masterPassword, key);\n const keys = await this.cryptoService.makeKeyPair(encKey[0]);\n const request = new RegisterRequest(this.email, this.name, hashedPassword,\n this.hint, encKey[1].encryptedString, kdf, kdfIterations);\n request.keys = new KeysRequest(keys[0], keys[1].encryptedString);\n const orgInvite = await this.stateService.get('orgInvitation');\n if (orgInvite != null && orgInvite.token != null && orgInvite.organizationUserId != null) {\n request.token = orgInvite.token;\n request.organizationUserId = orgInvite.organizationUserId;\n }\n\n try {\n this.formPromise = this.apiService.postRegister(request);\n await this.formPromise;\n this.platformUtilsService.eventTrack('Registered');\n this.platformUtilsService.showToast('success', null, this.i18nService.t('newAccountCreated'));\n this.router.navigate([this.successRoute], { queryParams: { email: this.email } });\n } catch { }\n }\n\n togglePassword(confirmField: boolean) {\n this.platformUtilsService.eventTrack('Toggled Master Password on Register');\n this.showPassword = !this.showPassword;\n document.getElementById(confirmField ? 'masterPasswordRetype' : 'masterPassword').focus();\n }\n\n updatePasswordStrength() {\n if (this.masterPasswordStrengthTimeout != null) {\n clearTimeout(this.masterPasswordStrengthTimeout);\n }\n this.masterPasswordStrengthTimeout = setTimeout(() => {\n const strengthResult = this.passwordGenerationService.passwordStrength(this.masterPassword,\n this.getPasswordStrengthUserInput());\n this.masterPasswordScore = strengthResult == null ? null : strengthResult.score;\n }, 300);\n }\n\n private getPasswordStrengthUserInput() {\n let userInput: string[] = [];\n const atPosition = this.email.indexOf('@');\n if (atPosition > -1) {\n userInput = userInput.concat(this.email.substr(0, atPosition).trim().toLowerCase().split(/[^A-Za-z0-9]/));\n }\n if (this.name != null && this.name !== '') {\n userInput = userInput.concat(this.name.trim().toLowerCase().split(' '));\n }\n return userInput;\n }\n}\n","import { KeysRequest } from './keysRequest';\n\nimport { KdfType } from '../../enums/kdfType';\n\nexport class RegisterRequest {\n name: string;\n email: string;\n masterPasswordHash: string;\n masterPasswordHint: string;\n key: string;\n keys: KeysRequest;\n token: string;\n organizationUserId: string;\n kdf: KdfType;\n kdfIterations: number;\n\n constructor(email: string, name: string, masterPasswordHash: string, masterPasswordHint: string, key: string,\n kdf: KdfType, kdfIterations: number) {\n this.name = name;\n this.email = email;\n this.masterPasswordHash = masterPasswordHash;\n this.masterPasswordHint = masterPasswordHint ? masterPasswordHint : null;\n this.key = key;\n this.kdf = kdf;\n this.kdfIterations = kdfIterations;\n }\n}\n","
\n
\n
\n

{{'passwordHint' | i18n}}

\n
\n
\n
\n \n \n {{'enterEmailToGetHint' | i18n}}\n
\n
\n
\n \n \n {{'cancel' | i18n}}\n \n
\n
\n
\n
\n
\n
\n","import { Router } from '@angular/router';\n\nimport { PasswordHintRequest } from '../../models/request/passwordHintRequest';\n\nimport { ApiService } from '../../abstractions/api.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\n\nexport class HintComponent {\n email: string = '';\n formPromise: Promise;\n\n protected successRoute = 'login';\n protected onSuccessfulSubmit: () => void;\n\n constructor(protected router: Router, protected i18nService: I18nService,\n protected apiService: ApiService, protected platformUtilsService: PlatformUtilsService) { }\n\n async submit() {\n if (this.email == null || this.email === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('emailRequired'));\n return;\n }\n if (this.email.indexOf('@') === -1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidEmail'));\n return;\n }\n\n try {\n this.formPromise = this.apiService.postPasswordHint(new PasswordHintRequest(this.email));\n await this.formPromise;\n this.platformUtilsService.eventTrack('Requested Hint');\n this.platformUtilsService.showToast('success', null, this.i18nService.t('masterPassSent'));\n if (this.onSuccessfulSubmit != null) {\n this.onSuccessfulSubmit();\n } else if (this.router != null) {\n this.router.navigate([this.successRoute]);\n }\n } catch { }\n }\n}\n","export class PasswordHintRequest {\n email: string;\n\n constructor(email: string) {\n this.email = email;\n }\n}\n","
\n
\n
\n

\n \n

\n

{{'yourVaultIsLocked' | i18n}}

\n
\n
\n
\n \n
\n \n \n
\n \n {{'loggedInAsEmailOn' | i18n : email : webVaultHostname}}\n \n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n","import { OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { CryptoService } from '../../abstractions/crypto.service';\nimport { EnvironmentService } from '../../abstractions/environment.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { MessagingService } from '../../abstractions/messaging.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\nimport { StateService } from '../../abstractions/state.service';\nimport { StorageService } from '../../abstractions/storage.service';\nimport { UserService } from '../../abstractions/user.service';\nimport { VaultTimeoutService } from '../../abstractions/vaultTimeout.service';\n\nimport { ConstantsService } from '../../services/constants.service';\n\nimport { CipherString } from '../../models/domain/cipherString';\nimport { SymmetricCryptoKey } from '../../models/domain/symmetricCryptoKey';\n\nimport { Utils } from '../../misc/utils';\n\nexport class LockComponent implements OnInit {\n masterPassword: string = '';\n pin: string = '';\n showPassword: boolean = false;\n email: string;\n pinLock: boolean = false;\n webVaultHostname: string = '';\n\n protected successRoute: string = 'vault';\n protected onSuccessfulSubmit: () => void;\n\n private invalidPinAttempts = 0;\n private pinSet: [boolean, boolean];\n\n constructor(protected router: Router, protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService, protected messagingService: MessagingService,\n protected userService: UserService, protected cryptoService: CryptoService,\n protected storageService: StorageService, protected vaultTimeoutService: VaultTimeoutService,\n protected environmentService: EnvironmentService, protected stateService: StateService) { }\n\n async ngOnInit() {\n this.pinSet = await this.vaultTimeoutService.isPinLockSet();\n this.pinLock = (this.pinSet[0] && this.vaultTimeoutService.pinProtectedKey != null) || this.pinSet[1];\n this.email = await this.userService.getEmail();\n let vaultUrl = this.environmentService.getWebVaultUrl();\n if (vaultUrl == null) {\n vaultUrl = 'https://bitwarden.com';\n }\n this.webVaultHostname = Utils.getHostname(vaultUrl);\n }\n\n async submit() {\n if (this.pinLock && (this.pin == null || this.pin === '')) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('pinRequired'));\n return;\n }\n if (!this.pinLock && (this.masterPassword == null || this.masterPassword === '')) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const kdf = await this.userService.getKdf();\n const kdfIterations = await this.userService.getKdfIterations();\n\n if (this.pinLock) {\n let failed = true;\n try {\n if (this.pinSet[0]) {\n const key = await this.cryptoService.makeKeyFromPin(this.pin, this.email, kdf, kdfIterations,\n this.vaultTimeoutService.pinProtectedKey);\n const encKey = await this.cryptoService.getEncKey(key);\n const protectedPin = await this.storageService.get(ConstantsService.protectedPin);\n const decPin = await this.cryptoService.decryptToUtf8(new CipherString(protectedPin), encKey);\n failed = decPin !== this.pin;\n if (!failed) {\n await this.setKeyAndContinue(key);\n }\n } else {\n const key = await this.cryptoService.makeKeyFromPin(this.pin, this.email, kdf, kdfIterations);\n failed = false;\n await this.setKeyAndContinue(key);\n }\n } catch {\n failed = true;\n }\n\n if (failed) {\n this.invalidPinAttempts++;\n if (this.invalidPinAttempts >= 5) {\n this.messagingService.send('logout');\n return;\n }\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidPin'));\n }\n } else {\n const key = await this.cryptoService.makeKey(this.masterPassword, this.email, kdf, kdfIterations);\n const keyHash = await this.cryptoService.hashPassword(this.masterPassword, key);\n const storedKeyHash = await this.cryptoService.getKeyHash();\n\n if (storedKeyHash != null && keyHash != null && storedKeyHash === keyHash) {\n if (this.pinSet[0]) {\n const protectedPin = await this.storageService.get(ConstantsService.protectedPin);\n const encKey = await this.cryptoService.getEncKey(key);\n const decPin = await this.cryptoService.decryptToUtf8(new CipherString(protectedPin), encKey);\n const pinKey = await this.cryptoService.makePinKey(decPin, this.email, kdf, kdfIterations);\n this.vaultTimeoutService.pinProtectedKey = await this.cryptoService.encrypt(key.key, pinKey);\n }\n this.setKeyAndContinue(key);\n } else {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidMasterPassword'));\n }\n }\n }\n\n async logOut() {\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('logOutConfirmation'),\n this.i18nService.t('logOut'), this.i18nService.t('logOut'), this.i18nService.t('cancel'));\n if (confirmed) {\n this.messagingService.send('logout');\n }\n }\n\n togglePassword() {\n this.platformUtilsService.eventTrack('Toggled Master Password on Unlock');\n this.showPassword = !this.showPassword;\n document.getElementById(this.pinLock ? 'pin' : 'masterPassword').focus();\n }\n\n private async setKeyAndContinue(key: SymmetricCryptoKey) {\n await this.cryptoService.setKey(key);\n this.doContinue();\n }\n\n private async doContinue() {\n const disableFavicon = await this.storageService.get(ConstantsService.disableFaviconKey);\n await this.stateService.save(ConstantsService.disableFaviconKey, !!disableFavicon);\n this.messagingService.send('unlocked');\n if (this.onSuccessfulSubmit != null) {\n this.onSuccessfulSubmit();\n } else if (this.router != null) {\n this.router.navigate([this.successRoute]);\n }\n }\n}\n","
\n
\n \"SecretSafe\"\n

\n \n {{'loading' | i18n}}\n

\n
\n
\n","export class VerifyEmailRequest {\n userId: string;\n token: string;\n\n constructor(userId: string, token: string) {\n this.userId = userId;\n this.token = token;\n }\n}\n","
\n
\n \"SecretSafe\"\n

\n \n {{'loading' | i18n}}\n

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

{{'joinOrganization' | i18n}}

\n
\n
\n

\n {{orgName}}\n {{email}}\n

\n

{{'joinOrganizationDesc' | i18n}}

\n
\n \n
\n
\n
\n
\n
\n","export class OrganizationUserAcceptRequest {\n token: string;\n}\n","
\n
\n
\n

{{'recoverAccountTwoStep' | i18n}}

\n
\n
\n

{{'recoverAccountTwoStepDesc' | i18n}}\n {{'learnMore' | i18n}}\n

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n \n {{'cancel' | i18n}}\n \n
\n
\n
\n
\n
\n
\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class TwoFactorRecoveryRequest extends PasswordVerificationRequest {\n recoveryCode: string;\n email: string;\n}\n","
\n
\n
\n

{{'deleteAccount' | i18n}}

\n
\n
\n

{{'deleteRecoverDesc' | i18n}}

\n
\n \n \n
\n
\n
\n \n \n {{'cancel' | i18n}}\n \n
\n
\n
\n
\n
\n
\n","export class DeleteRecoverRequest {\n email: string;\n}\n","
\n
\n
\n

{{'deleteAccount' | i18n}}

\n
\n
\n {{'deleteAccountWarning' | i18n}}\n

\n {{email}}\n

\n

{{'deleteRecoverConfirmDesc' | i18n}}

\n
\n
\n \n \n {{'cancel' | i18n}}\n \n
\n
\n
\n
\n
\n
\n","export class VerifyDeleteRecoverRequest {\n userId: string;\n token: string;\n\n constructor(userId: string, token: string) {\n this.userId = userId;\n this.token = token;\n }\n}\n","\n\n\n","
\n
\n
\n \n \n
\n
\n
\n

\n {{'myVault' | i18n}}\n \n \n \n {{'loading' | i18n}}\n \n \n

\n \n
\n \n \n
\n
\n
\n
\n {{'updateKeyTitle' | i18n}}\n
\n
\n

{{'updateEncryptionKeyShortDesc' | i18n}}

\n \n
\n
\n \n
\n
\n {{'updateBrowser' | i18n}}\n
\n
\n

{{'updateBrowserDesc' | i18n}}

\n \n {{'updateBrowser' | i18n}}\n \n
\n
\n
\n
\n {{'goPremium' | i18n}}\n
\n
\n

{{'premiumUpgradeUnlockFeatures' | i18n}}

\n \n {{'goPremium' | i18n}}\n \n
\n
\n
\n
\n {{'organizations' | i18n}}\n \n \n \n
\n
\n \n
\n
\n
\n
\n
\n\n\n\n\n\n\n\n\n","
\n
\n {{'verifyEmail' | i18n}}\n
\n
\n

{{'verifyEmailDesc' | i18n}}

\n \n
\n
\n","
\n
\n {{'filters' | i18n}}\n \n \n \n
\n
\n \n \n

{{'types' | i18n}}

\n \n

\n \n {{'loading' | i18n}}\n

\n \n \n

\n {{'folders' | i18n}}\n \n \n \n

\n \n
\n \n

{{'collections' | i18n}}

\n \n
\n
\n
\n
\n","import {\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { CipherType } from '../../enums/cipherType';\n\nimport { CollectionView } from '../../models/view/collectionView';\nimport { FolderView } from '../../models/view/folderView';\n\nimport { TreeNode } from '../../models/domain/treeNode';\n\nimport { CollectionService } from '../../abstractions/collection.service';\nimport { FolderService } from '../../abstractions/folder.service';\nimport { StorageService } from '../../abstractions/storage.service';\nimport { UserService } from '../../abstractions/user.service';\n\nimport { ConstantsService } from '../../services/constants.service';\n\nexport class GroupingsComponent {\n @Input() showFolders = true;\n @Input() showCollections = true;\n @Input() showFavorites = true;\n @Input() showTrash = true;\n\n @Output() onAllClicked = new EventEmitter();\n @Output() onFavoritesClicked = new EventEmitter();\n @Output() onTrashClicked = new EventEmitter();\n @Output() onCipherTypeClicked = new EventEmitter();\n @Output() onFolderClicked = new EventEmitter();\n @Output() onAddFolder = new EventEmitter();\n @Output() onEditFolder = new EventEmitter();\n @Output() onCollectionClicked = new EventEmitter();\n\n folders: FolderView[];\n nestedFolders: Array>;\n collections: CollectionView[];\n nestedCollections: Array>;\n loaded: boolean = false;\n cipherType = CipherType;\n selectedAll: boolean = false;\n selectedFavorites: boolean = false;\n selectedTrash: boolean = false;\n selectedType: CipherType = null;\n selectedFolder: boolean = false;\n selectedFolderId: string = null;\n selectedCollectionId: string = null;\n\n private collapsedGroupings: Set;\n private collapsedGroupingsKey: string;\n\n constructor(protected collectionService: CollectionService, protected folderService: FolderService,\n protected storageService: StorageService, protected userService: UserService) { }\n\n async load(setLoaded = true) {\n const userId = await this.userService.getUserId();\n this.collapsedGroupingsKey = ConstantsService.collapsedGroupingsKey + '_' + userId;\n const collapsedGroupings = await this.storageService.get(this.collapsedGroupingsKey);\n if (collapsedGroupings == null) {\n this.collapsedGroupings = new Set();\n } else {\n this.collapsedGroupings = new Set(collapsedGroupings);\n }\n\n await this.loadFolders();\n await this.loadCollections();\n\n if (setLoaded) {\n this.loaded = true;\n }\n }\n\n async loadCollections(organizationId?: string) {\n if (!this.showCollections) {\n return;\n }\n const collections = await this.collectionService.getAllDecrypted();\n if (organizationId != null) {\n this.collections = collections.filter((c) => c.organizationId === organizationId);\n } else {\n this.collections = collections;\n }\n this.nestedCollections = await this.collectionService.getAllNested(this.collections);\n }\n\n async loadFolders() {\n if (!this.showFolders) {\n return;\n }\n this.folders = await this.folderService.getAllDecrypted();\n this.nestedFolders = await this.folderService.getAllNested();\n }\n\n selectAll() {\n this.clearSelections();\n this.selectedAll = true;\n this.onAllClicked.emit();\n }\n\n selectFavorites() {\n this.clearSelections();\n this.selectedFavorites = true;\n this.onFavoritesClicked.emit();\n }\n\n selectTrash() {\n this.clearSelections();\n this.selectedTrash = true;\n this.onTrashClicked.emit();\n }\n\n selectType(type: CipherType) {\n this.clearSelections();\n this.selectedType = type;\n this.onCipherTypeClicked.emit(type);\n }\n\n selectFolder(folder: FolderView) {\n this.clearSelections();\n this.selectedFolder = true;\n this.selectedFolderId = folder.id;\n this.onFolderClicked.emit(folder);\n }\n\n addFolder() {\n this.onAddFolder.emit();\n }\n\n editFolder(folder: FolderView) {\n this.onEditFolder.emit(folder);\n }\n\n selectCollection(collection: CollectionView) {\n this.clearSelections();\n this.selectedCollectionId = collection.id;\n this.onCollectionClicked.emit(collection);\n }\n\n clearSelections() {\n this.selectedAll = false;\n this.selectedFavorites = false;\n this.selectedTrash = false;\n this.selectedType = null;\n this.selectedFolder = false;\n this.selectedFolderId = null;\n this.selectedCollectionId = null;\n }\n\n collapse(grouping: FolderView | CollectionView, idPrefix = '') {\n if (grouping.id == null) {\n return;\n }\n const id = idPrefix + grouping.id;\n if (this.isCollapsed(grouping, idPrefix)) {\n this.collapsedGroupings.delete(id);\n } else {\n this.collapsedGroupings.add(id);\n }\n this.storageService.save(this.collapsedGroupingsKey, this.collapsedGroupings);\n }\n\n isCollapsed(grouping: FolderView | CollectionView, idPrefix = '') {\n return this.collapsedGroupings.has(idPrefix + grouping.id);\n }\n}\n","\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n {{c.name}}\n \n \n {{'shared' | i18n}}\n \n \n \n {{'attachments' | i18n}}\n \n \n {{'attachmentsNeedFix' | i18n}}\n \n \n
\n {{c.subTitle}}\n
\n \n
\n
\n \n \n {{'loading' | i18n}}\n \n \n

{{'noItemsInList' | i18n}}

\n \n
\n
\n
","import {\n Directive,\n ElementRef,\n HostListener,\n Input,\n} from '@angular/core';\n\n@Directive({\n selector: '[appFallbackSrc]',\n})\nexport class FallbackSrcDirective {\n @Input('appFallbackSrc') appFallbackSrc: string;\n\n constructor(private el: ElementRef) {\n }\n\n @HostListener('error') onError() {\n this.el.nativeElement.src = this.appFallbackSrc;\n }\n}\n","import {\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { SearchService } from '../../abstractions/search.service';\n\nimport { CipherView } from '../../models/view/cipherView';\n\nexport class CiphersComponent {\n @Input() activeCipherId: string = null;\n @Output() onCipherClicked = new EventEmitter();\n @Output() onCipherRightClicked = new EventEmitter();\n @Output() onAddCipher = new EventEmitter();\n @Output() onAddCipherOptions = new EventEmitter();\n\n loaded: boolean = false;\n ciphers: CipherView[] = [];\n pagedCiphers: CipherView[] = [];\n searchText: string;\n searchPlaceholder: string = null;\n filter: (cipher: CipherView) => boolean = null;\n deleted: boolean = false;\n\n protected searchPending = false;\n protected didScroll = false;\n protected pageSize = 100;\n\n private searchTimeout: any = null;\n private pagedCiphersCount = 0;\n private refreshing = false;\n\n constructor(protected searchService: SearchService) { }\n\n async load(filter: (cipher: CipherView) => boolean = null, deleted: boolean = false) {\n this.deleted = deleted || false;\n await this.applyFilter(filter);\n this.loaded = true;\n }\n\n loadMore() {\n if (this.ciphers.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedCiphers.length;\n let pagedSize = this.pageSize;\n if (this.refreshing && pagedLength === 0 && this.pagedCiphersCount > this.pageSize) {\n pagedSize = this.pagedCiphersCount;\n }\n if (this.ciphers.length > pagedLength) {\n this.pagedCiphers = this.pagedCiphers.concat(this.ciphers.slice(pagedLength, pagedLength + pagedSize));\n }\n this.pagedCiphersCount = this.pagedCiphers.length;\n this.didScroll = this.pagedCiphers.length > this.pageSize;\n }\n\n async reload(filter: (cipher: CipherView) => boolean = null, deleted: boolean = false) {\n this.loaded = false;\n this.ciphers = [];\n await this.load(filter, deleted);\n }\n\n async refresh() {\n try {\n this.refreshing = true;\n await this.reload(this.filter, this.deleted);\n } finally {\n this.refreshing = false;\n }\n }\n\n async applyFilter(filter: (cipher: CipherView) => boolean = null) {\n this.filter = filter;\n await this.search(null);\n }\n\n async search(timeout: number = null) {\n this.searchPending = false;\n if (this.searchTimeout != null) {\n clearTimeout(this.searchTimeout);\n }\n const deletedFilter: (cipher: CipherView) => boolean = (c) => c.isDeleted === this.deleted;\n if (timeout == null) {\n this.ciphers = await this.searchService.searchCiphers(this.searchText, [this.filter, deletedFilter], null);\n await this.resetPaging();\n return;\n }\n this.searchPending = true;\n this.searchTimeout = setTimeout(async () => {\n this.ciphers = await this.searchService.searchCiphers(this.searchText, [this.filter, deletedFilter], null);\n await this.resetPaging();\n this.searchPending = false;\n }, timeout);\n }\n\n selectCipher(cipher: CipherView) {\n this.onCipherClicked.emit(cipher);\n }\n\n rightClickCipher(cipher: CipherView) {\n this.onCipherRightClicked.emit(cipher);\n }\n\n addCipher() {\n this.onAddCipher.emit();\n }\n\n addCipherOptions() {\n this.onAddCipherOptions.emit();\n }\n\n isSearching() {\n return !this.searchPending && this.searchService.isSearchable(this.searchText);\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.ciphers.length > this.pageSize;\n }\n\n async resetPaging() {\n this.pagedCiphers = [];\n this.loadMore();\n }\n}\n","export class AttachmentRequest {\n fileName: string;\n key: string;\n}\n","import {\n CdkDragDrop,\n moveItemInArray,\n} from '@angular/cdk/drag-drop';\nimport {\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { CipherType } from '../../enums/cipherType';\nimport { EventType } from '../../enums/eventType';\nimport { FieldType } from '../../enums/fieldType';\nimport { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\nimport { SecureNoteType } from '../../enums/secureNoteType';\nimport { UriMatchType } from '../../enums/uriMatchType';\n\nimport { AuditService } from '../../abstractions/audit.service';\nimport { CipherService } from '../../abstractions/cipher.service';\nimport { CollectionService } from '../../abstractions/collection.service';\nimport { EventService } from '../../abstractions/event.service';\nimport { FolderService } from '../../abstractions/folder.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { MessagingService } from '../../abstractions/messaging.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\nimport { StateService } from '../../abstractions/state.service';\nimport { UserService } from '../../abstractions/user.service';\n\nimport { Cipher } from '../../models/domain/cipher';\n\nimport { CardView } from '../../models/view/cardView';\nimport { CipherView } from '../../models/view/cipherView';\nimport { CollectionView } from '../../models/view/collectionView';\nimport { FieldView } from '../../models/view/fieldView';\nimport { FolderView } from '../../models/view/folderView';\nimport { IdentityView } from '../../models/view/identityView';\nimport { LoginUriView } from '../../models/view/loginUriView';\nimport { LoginView } from '../../models/view/loginView';\nimport { SecureNoteView } from '../../models/view/secureNoteView';\n\nimport { Utils } from '../../misc/utils';\n\nexport class AddEditComponent implements OnInit {\n @Input() cloneMode: boolean = false;\n @Input() folderId: string = null;\n @Input() cipherId: string;\n @Input() type: CipherType;\n @Input() collectionIds: string[];\n @Input() organizationId: string = null;\n @Output() onSavedCipher = new EventEmitter();\n @Output() onDeletedCipher = new EventEmitter();\n @Output() onRestoredCipher = new EventEmitter();\n @Output() onCancelled = new EventEmitter();\n @Output() onEditAttachments = new EventEmitter();\n @Output() onShareCipher = new EventEmitter();\n @Output() onEditCollections = new EventEmitter();\n @Output() onGeneratePassword = new EventEmitter();\n\n editMode: boolean = false;\n cipher: CipherView;\n folders: FolderView[];\n collections: CollectionView[] = [];\n title: string;\n formPromise: Promise;\n deletePromise: Promise;\n restorePromise: Promise;\n checkPasswordPromise: Promise;\n showPassword: boolean = false;\n showCardCode: boolean = false;\n cipherType = CipherType;\n fieldType = FieldType;\n addFieldType: FieldType = FieldType.Text;\n typeOptions: any[];\n cardBrandOptions: any[];\n cardExpMonthOptions: any[];\n identityTitleOptions: any[];\n addFieldTypeOptions: any[];\n uriMatchOptions: any[];\n ownershipOptions: any[] = [];\n\n protected writeableCollections: CollectionView[];\n private previousCipherId: string;\n\n constructor(protected cipherService: CipherService, protected folderService: FolderService,\n protected i18nService: I18nService, protected platformUtilsService: PlatformUtilsService,\n protected auditService: AuditService, protected stateService: StateService,\n protected userService: UserService, protected collectionService: CollectionService,\n protected messagingService: MessagingService, protected eventService: EventService) {\n this.typeOptions = [\n { name: i18nService.t('typeLogin'), value: CipherType.Login },\n { name: i18nService.t('typeCard'), value: CipherType.Card },\n { name: i18nService.t('typeIdentity'), value: CipherType.Identity },\n { name: i18nService.t('typeSecureNote'), value: CipherType.SecureNote },\n ];\n this.cardBrandOptions = [\n { name: '-- ' + i18nService.t('select') + ' --', value: null },\n { name: 'Visa', value: 'Visa' },\n { name: 'Mastercard', value: 'Mastercard' },\n { name: 'American Express', value: 'Amex' },\n { name: 'Discover', value: 'Discover' },\n { name: 'Diners Club', value: 'Diners Club' },\n { name: 'JCB', value: 'JCB' },\n { name: 'Maestro', value: 'Maestro' },\n { name: 'UnionPay', value: 'UnionPay' },\n { name: i18nService.t('other'), value: 'Other' },\n ];\n this.cardExpMonthOptions = [\n { name: '-- ' + i18nService.t('select') + ' --', value: null },\n { name: '01 - ' + i18nService.t('january'), value: '1' },\n { name: '02 - ' + i18nService.t('february'), value: '2' },\n { name: '03 - ' + i18nService.t('march'), value: '3' },\n { name: '04 - ' + i18nService.t('april'), value: '4' },\n { name: '05 - ' + i18nService.t('may'), value: '5' },\n { name: '06 - ' + i18nService.t('june'), value: '6' },\n { name: '07 - ' + i18nService.t('july'), value: '7' },\n { name: '08 - ' + i18nService.t('august'), value: '8' },\n { name: '09 - ' + i18nService.t('september'), value: '9' },\n { name: '10 - ' + i18nService.t('october'), value: '10' },\n { name: '11 - ' + i18nService.t('november'), value: '11' },\n { name: '12 - ' + i18nService.t('december'), value: '12' },\n ];\n this.identityTitleOptions = [\n { name: '-- ' + i18nService.t('select') + ' --', value: null },\n { name: i18nService.t('mr'), value: i18nService.t('mr') },\n { name: i18nService.t('mrs'), value: i18nService.t('mrs') },\n { name: i18nService.t('ms'), value: i18nService.t('ms') },\n { name: i18nService.t('dr'), value: i18nService.t('dr') },\n ];\n this.addFieldTypeOptions = [\n { name: i18nService.t('cfTypeText'), value: FieldType.Text },\n { name: i18nService.t('cfTypeHidden'), value: FieldType.Hidden },\n { name: i18nService.t('cfTypeBoolean'), value: FieldType.Boolean },\n ];\n this.uriMatchOptions = [\n { name: i18nService.t('defaultMatchDetection'), value: null },\n { name: i18nService.t('baseDomain'), value: UriMatchType.Domain },\n { name: i18nService.t('host'), value: UriMatchType.Host },\n { name: i18nService.t('startsWith'), value: UriMatchType.StartsWith },\n { name: i18nService.t('regEx'), value: UriMatchType.RegularExpression },\n { name: i18nService.t('exact'), value: UriMatchType.Exact },\n { name: i18nService.t('never'), value: UriMatchType.Never },\n ];\n }\n\n async ngOnInit() {\n await this.init();\n }\n\n async init() {\n const myEmail = await this.userService.getEmail();\n this.ownershipOptions.push({ name: myEmail, value: null });\n const orgs = await this.userService.getAllOrganizations();\n orgs.sort(Utils.getSortFunction(this.i18nService, 'name')).forEach((o) => {\n if (o.enabled && o.status === OrganizationUserStatusType.Confirmed) {\n this.ownershipOptions.push({ name: o.name, value: o.id });\n }\n });\n this.writeableCollections = await this.loadCollections();\n }\n\n async load() {\n this.editMode = this.cipherId != null;\n if (this.editMode) {\n this.editMode = true;\n if (this.cloneMode) {\n this.cloneMode = true;\n this.title = this.i18nService.t('addItem');\n } else {\n this.title = this.i18nService.t('editItem');\n }\n } else {\n this.title = this.i18nService.t('addItem');\n }\n\n const addEditCipherInfo: any = await this.stateService.get('addEditCipherInfo');\n if (addEditCipherInfo != null) {\n this.cipher = addEditCipherInfo.cipher;\n this.collectionIds = addEditCipherInfo.collectionIds;\n }\n await this.stateService.remove('addEditCipherInfo');\n\n if (this.cipher == null) {\n if (this.editMode) {\n const cipher = await this.loadCipher();\n this.cipher = await cipher.decrypt();\n\n // Adjust Cipher Name if Cloning\n if (this.cloneMode) {\n this.cipher.name += ' - ' + this.i18nService.t('clone');\n }\n } else {\n this.cipher = new CipherView();\n this.cipher.organizationId = this.organizationId == null ? null : this.organizationId;\n this.cipher.folderId = this.folderId;\n this.cipher.type = this.type == null ? CipherType.Login : this.type;\n this.cipher.login = new LoginView();\n this.cipher.login.uris = [new LoginUriView()];\n this.cipher.card = new CardView();\n this.cipher.identity = new IdentityView();\n this.cipher.secureNote = new SecureNoteView();\n this.cipher.secureNote.type = SecureNoteType.Generic;\n }\n }\n\n if (this.cipher != null && (!this.editMode || addEditCipherInfo != null || this.cloneMode)) {\n await this.organizationChanged();\n if (this.collectionIds != null && this.collectionIds.length > 0 && this.collections.length > 0) {\n this.collections.forEach((c) => {\n if (this.collectionIds.indexOf(c.id) > -1) {\n (c as any).checked = true;\n }\n });\n }\n }\n\n this.folders = await this.folderService.getAllDecrypted();\n\n if (this.editMode && this.previousCipherId !== this.cipherId) {\n this.eventService.collect(EventType.Cipher_ClientViewed, this.cipherId);\n }\n this.previousCipherId = this.cipherId;\n }\n\n async submit(): Promise {\n if (this.cipher.isDeleted) {\n return this.restore();\n }\n\n if (this.cipher.name == null || this.cipher.name === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nameRequired'));\n return false;\n }\n\n if ((!this.editMode || this.cloneMode) && this.cipher.type === CipherType.Login &&\n this.cipher.login.uris != null && this.cipher.login.uris.length === 1 &&\n (this.cipher.login.uris[0].uri == null || this.cipher.login.uris[0].uri === '')) {\n this.cipher.login.uris = null;\n }\n\n // Allows saving of selected collections during \"Add\" and \"Clone\" flows\n if ((!this.editMode || this.cloneMode) && this.cipher.organizationId != null) {\n this.cipher.collectionIds = this.collections == null ? [] :\n this.collections.filter((c) => (c as any).checked).map((c) => c.id);\n }\n\n // Clear current Cipher Id to trigger \"Add\" cipher flow\n if (this.cloneMode) {\n this.cipher.id = null;\n }\n\n const cipher = await this.encryptCipher();\n try {\n this.formPromise = this.saveCipher(cipher);\n await this.formPromise;\n this.cipher.id = cipher.id;\n this.platformUtilsService.eventTrack(this.editMode && !this.cloneMode ? 'Edited Cipher' : 'Added Cipher');\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t(this.editMode && !this.cloneMode ? 'editedItem' : 'addedItem'));\n this.onSavedCipher.emit(this.cipher);\n this.messagingService.send(this.editMode && !this.cloneMode ? 'editedCipher' : 'addedCipher');\n return true;\n } catch { }\n\n return false;\n }\n\n addUri() {\n if (this.cipher.type !== CipherType.Login) {\n return;\n }\n\n if (this.cipher.login.uris == null) {\n this.cipher.login.uris = [];\n }\n\n this.cipher.login.uris.push(new LoginUriView());\n }\n\n removeUri(uri: LoginUriView) {\n if (this.cipher.type !== CipherType.Login || this.cipher.login.uris == null) {\n return;\n }\n\n const i = this.cipher.login.uris.indexOf(uri);\n if (i > -1) {\n this.cipher.login.uris.splice(i, 1);\n }\n }\n\n addField() {\n if (this.cipher.fields == null) {\n this.cipher.fields = [];\n }\n\n const f = new FieldView();\n f.type = this.addFieldType;\n this.cipher.fields.push(f);\n }\n\n removeField(field: FieldView) {\n const i = this.cipher.fields.indexOf(field);\n if (i > -1) {\n this.cipher.fields.splice(i, 1);\n }\n }\n\n trackByFunction(index: number, item: any) {\n return index;\n }\n\n cancel() {\n this.onCancelled.emit(this.cipher);\n }\n\n attachments() {\n this.onEditAttachments.emit(this.cipher);\n }\n\n share() {\n this.onShareCipher.emit(this.cipher);\n }\n\n editCollections() {\n this.onEditCollections.emit(this.cipher);\n }\n\n async delete(): Promise {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(this.cipher.isDeleted ? 'permanentlyDeleteItemConfirmation' : 'deleteItemConfirmation'),\n this.i18nService.t('deleteItem'), this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.deleteCipher();\n await this.deletePromise;\n this.platformUtilsService.eventTrack((this.cipher.isDeleted ? 'Permanently ' : '') + 'Deleted Cipher');\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t(this.cipher.isDeleted ? 'permanentlyDeletedItem' : 'deletedItem'));\n this.onDeletedCipher.emit(this.cipher);\n this.messagingService.send(this.cipher.isDeleted ? 'permanentlyDeletedCipher' : 'deletedCipher');\n } catch { }\n\n return true;\n }\n\n async restore(): Promise {\n if (!this.cipher.isDeleted) {\n return false;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('restoreItemConfirmation'), this.i18nService.t('restoreItem'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.restorePromise = this.restoreCipher();\n await this.restorePromise;\n this.platformUtilsService.eventTrack('Restored Cipher');\n this.platformUtilsService.showToast('success', null, this.i18nService.t('restoredItem'));\n this.onRestoredCipher.emit(this.cipher);\n this.messagingService.send('restoredCipher');\n } catch { }\n\n return true;\n }\n\n async generatePassword(): Promise {\n if (this.cipher.login != null && this.cipher.login.password != null && this.cipher.login.password.length) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('overwritePasswordConfirmation'), this.i18nService.t('overwritePassword'),\n this.i18nService.t('yes'), this.i18nService.t('no'));\n if (!confirmed) {\n return false;\n }\n }\n\n this.onGeneratePassword.emit();\n return true;\n }\n\n togglePassword() {\n this.platformUtilsService.eventTrack('Toggled Password on Edit');\n this.showPassword = !this.showPassword;\n document.getElementById('loginPassword').focus();\n if (this.editMode && this.showPassword) {\n this.eventService.collect(EventType.Cipher_ClientToggledPasswordVisible, this.cipherId);\n }\n }\n\n toggleCardCode() {\n this.platformUtilsService.eventTrack('Toggled CardCode on Edit');\n this.showCardCode = !this.showCardCode;\n document.getElementById('cardCode').focus();\n if (this.editMode && this.showCardCode) {\n this.eventService.collect(EventType.Cipher_ClientToggledCardCodeVisible, this.cipherId);\n }\n }\n\n toggleFieldValue(field: FieldView) {\n const f = (field as any);\n f.showValue = !f.showValue;\n if (this.editMode && f.showValue) {\n this.eventService.collect(EventType.Cipher_ClientToggledHiddenFieldVisible, this.cipherId);\n }\n }\n\n toggleUriOptions(uri: LoginUriView) {\n const u = (uri as any);\n u.showOptions = u.showOptions == null && uri.match != null ? false : !u.showOptions;\n }\n\n loginUriMatchChanged(uri: LoginUriView) {\n const u = (uri as any);\n u.showOptions = u.showOptions == null ? true : u.showOptions;\n }\n\n drop(event: CdkDragDrop) {\n moveItemInArray(this.cipher.fields, event.previousIndex, event.currentIndex);\n }\n\n async organizationChanged() {\n if (this.writeableCollections != null) {\n this.writeableCollections.forEach((c) => (c as any).checked = false);\n }\n if (this.cipher.organizationId != null) {\n this.collections = this.writeableCollections.filter((c) => c.organizationId === this.cipher.organizationId);\n const org = await this.userService.getOrganization(this.cipher.organizationId);\n if (org != null) {\n this.cipher.organizationUseTotp = org.useTotp;\n }\n } else {\n this.collections = [];\n }\n }\n\n async checkPassword() {\n if (this.checkPasswordPromise != null) {\n return;\n }\n\n if (this.cipher.login == null || this.cipher.login.password == null || this.cipher.login.password === '') {\n return;\n }\n\n this.platformUtilsService.eventTrack('Check Password');\n this.checkPasswordPromise = this.auditService.passwordLeaked(this.cipher.login.password);\n const matches = await this.checkPasswordPromise;\n this.checkPasswordPromise = null;\n\n if (matches > 0) {\n this.platformUtilsService.showToast('warning', null,\n this.i18nService.t('passwordExposed', matches.toString()));\n } else {\n this.platformUtilsService.showToast('success', null, this.i18nService.t('passwordSafe'));\n }\n }\n\n protected async loadCollections() {\n const allCollections = await this.collectionService.getAllDecrypted();\n return allCollections.filter((c) => !c.readOnly);\n }\n\n protected loadCipher() {\n return this.cipherService.get(this.cipherId);\n }\n\n protected encryptCipher() {\n return this.cipherService.encrypt(this.cipher);\n }\n\n protected saveCipher(cipher: Cipher) {\n return this.cipherService.saveWithServer(cipher);\n }\n\n protected deleteCipher() {\n return this.cipher.isDeleted ? this.cipherService.deleteWithServer(this.cipher.id)\n : this.cipherService.softDeleteWithServer(this.cipher.id);\n }\n\n protected restoreCipher() {\n return this.cipherService.restoreWithServer(this.cipher.id);\n }\n}\n","import {\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { CipherService } from '../../abstractions/cipher.service';\nimport { CryptoService } from '../../abstractions/crypto.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\nimport { UserService } from '../../abstractions/user.service';\n\nimport { Cipher } from '../../models/domain/cipher';\n\nimport { AttachmentView } from '../../models/view/attachmentView';\nimport { CipherView } from '../../models/view/cipherView';\n\nexport class AttachmentsComponent implements OnInit {\n @Input() cipherId: string;\n @Output() onUploadedAttachment = new EventEmitter();\n @Output() onDeletedAttachment = new EventEmitter();\n @Output() onReuploadedAttachment = new EventEmitter();\n\n cipher: CipherView;\n cipherDomain: Cipher;\n hasUpdatedKey: boolean;\n canAccessAttachments: boolean;\n formPromise: Promise;\n deletePromises: { [id: string]: Promise; } = {};\n reuploadPromises: { [id: string]: Promise; } = {};\n\n constructor(protected cipherService: CipherService, protected i18nService: I18nService,\n protected cryptoService: CryptoService, protected userService: UserService,\n protected platformUtilsService: PlatformUtilsService, protected win: Window) { }\n\n async ngOnInit() {\n await this.init();\n }\n\n async submit() {\n if (!this.hasUpdatedKey) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('updateKey'));\n return;\n }\n\n const fileEl = document.getElementById('file') as HTMLInputElement;\n const files = fileEl.files;\n if (files == null || files.length === 0) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n return;\n }\n\n if (files[0].size > 104857600) { // 100 MB\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('maxFileSize'));\n return;\n }\n\n try {\n this.formPromise = this.saveCipherAttachment(files[0]);\n this.cipherDomain = await this.formPromise;\n this.cipher = await this.cipherDomain.decrypt();\n this.platformUtilsService.eventTrack('Added Attachment');\n this.platformUtilsService.showToast('success', null, this.i18nService.t('attachmentSaved'));\n this.onUploadedAttachment.emit();\n } catch { }\n\n // reset file input\n // ref: https://stackoverflow.com/a/20552042\n fileEl.type = '';\n fileEl.type = 'file';\n fileEl.value = '';\n }\n\n async delete(attachment: AttachmentView) {\n if (this.deletePromises[attachment.id] != null) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteAttachmentConfirmation'), this.i18nService.t('deleteAttachment'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n\n try {\n this.deletePromises[attachment.id] = this.deleteCipherAttachment(attachment.id);\n await this.deletePromises[attachment.id];\n this.platformUtilsService.eventTrack('Deleted Attachment');\n this.platformUtilsService.showToast('success', null, this.i18nService.t('deletedAttachment'));\n const i = this.cipher.attachments.indexOf(attachment);\n if (i > -1) {\n this.cipher.attachments.splice(i, 1);\n }\n } catch { }\n\n this.deletePromises[attachment.id] = null;\n this.onDeletedAttachment.emit();\n }\n\n async download(attachment: AttachmentView) {\n const a = (attachment as any);\n if (a.downloading) {\n return;\n }\n\n if (!this.canAccessAttachments) {\n this.platformUtilsService.showToast('error', this.i18nService.t('premiumRequired'),\n this.i18nService.t('premiumRequiredDesc'));\n return;\n }\n\n a.downloading = true;\n const response = await fetch(new Request(attachment.url, { cache: 'no-store' }));\n if (response.status !== 200) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n a.downloading = false;\n return;\n }\n\n try {\n const buf = await response.arrayBuffer();\n const key = attachment.key != null ? attachment.key :\n await this.cryptoService.getOrgKey(this.cipher.organizationId);\n const decBuf = await this.cryptoService.decryptFromBytes(buf, key);\n this.platformUtilsService.saveFile(this.win, decBuf, null, attachment.fileName);\n } catch (e) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n }\n\n a.downloading = false;\n }\n\n protected async init() {\n this.cipherDomain = await this.loadCipher();\n this.cipher = await this.cipherDomain.decrypt();\n\n this.hasUpdatedKey = await this.cryptoService.hasEncKey();\n const canAccessPremium = await this.userService.canAccessPremium();\n this.canAccessAttachments = canAccessPremium || this.cipher.organizationId != null;\n\n if (!this.canAccessAttachments) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('premiumRequiredDesc'), this.i18nService.t('premiumRequired'),\n this.i18nService.t('learnMore'), this.i18nService.t('cancel'));\n if (confirmed) {\n this.platformUtilsService.launchUri('https://vault.bitwarden.com/#/?premium=purchase');\n }\n } else if (!this.hasUpdatedKey) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('updateKey'), this.i18nService.t('featureUnavailable'),\n this.i18nService.t('learnMore'), this.i18nService.t('cancel'), 'warning');\n if (confirmed) {\n this.platformUtilsService.launchUri('https://help.bitwarden.com/article/update-encryption-key/');\n }\n }\n }\n\n protected async reuploadCipherAttachment(attachment: AttachmentView, admin: boolean) {\n const a = (attachment as any);\n if (attachment.key != null || a.downloading || this.reuploadPromises[attachment.id] != null) {\n return;\n }\n\n try {\n this.reuploadPromises[attachment.id] = Promise.resolve().then(async () => {\n // 1. Download\n a.downloading = true;\n const response = await fetch(new Request(attachment.url, { cache: 'no-store' }));\n if (response.status !== 200) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n a.downloading = false;\n return;\n }\n\n try {\n // 2. Resave\n const buf = await response.arrayBuffer();\n const key = attachment.key != null ? attachment.key :\n await this.cryptoService.getOrgKey(this.cipher.organizationId);\n const decBuf = await this.cryptoService.decryptFromBytes(buf, key);\n this.cipherDomain = await this.cipherService.saveAttachmentRawWithServer(\n this.cipherDomain, attachment.fileName, decBuf, admin);\n this.cipher = await this.cipherDomain.decrypt();\n\n // 3. Delete old\n this.deletePromises[attachment.id] = this.deleteCipherAttachment(attachment.id);\n await this.deletePromises[attachment.id];\n const foundAttachment = this.cipher.attachments.filter((a2) => a2.id === attachment.id);\n if (foundAttachment.length > 0) {\n const i = this.cipher.attachments.indexOf(foundAttachment[0]);\n if (i > -1) {\n this.cipher.attachments.splice(i, 1);\n }\n }\n\n this.platformUtilsService.eventTrack('Reuploaded Attachment');\n this.platformUtilsService.showToast('success', null, this.i18nService.t('attachmentSaved'));\n this.onReuploadedAttachment.emit();\n } catch (e) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n }\n\n a.downloading = false;\n });\n await this.reuploadPromises[attachment.id];\n } catch { }\n }\n\n protected loadCipher() {\n return this.cipherService.get(this.cipherId);\n }\n\n protected saveCipherAttachment(file: File) {\n return this.cipherService.saveAttachmentWithServer(this.cipherDomain, file);\n }\n\n protected deleteCipherAttachment(attachmentId: string) {\n return this.cipherService.deleteAttachmentWithServer(this.cipher.id, attachmentId);\n }\n}\n","import {\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { CipherService } from '../../abstractions/cipher.service';\nimport { CollectionService } from '../../abstractions/collection.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\n\nimport { CipherView } from '../../models/view/cipherView';\nimport { CollectionView } from '../../models/view/collectionView';\n\nimport { Cipher } from '../../models/domain/cipher';\n\nexport class CollectionsComponent implements OnInit {\n @Input() cipherId: string;\n @Input() allowSelectNone = false;\n @Output() onSavedCollections = new EventEmitter();\n\n formPromise: Promise;\n cipher: CipherView;\n collectionIds: string[];\n collections: CollectionView[] = [];\n\n protected cipherDomain: Cipher;\n\n constructor(protected collectionService: CollectionService, protected platformUtilsService: PlatformUtilsService,\n protected i18nService: I18nService, protected cipherService: CipherService) { }\n\n async ngOnInit() {\n await this.load();\n }\n\n async load() {\n this.cipherDomain = await this.loadCipher();\n this.collectionIds = this.loadCipherCollections();\n this.cipher = await this.cipherDomain.decrypt();\n this.collections = await this.loadCollections();\n\n this.collections.forEach((c) => (c as any).checked = false);\n if (this.collectionIds != null) {\n this.collections.forEach((c) => {\n (c as any).checked = this.collectionIds != null && this.collectionIds.indexOf(c.id) > -1;\n });\n }\n }\n\n async submit() {\n const selectedCollectionIds = this.collections\n .filter((c) => !!(c as any).checked)\n .map((c) => c.id);\n if (!this.allowSelectNone && selectedCollectionIds.length === 0) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectOneCollection'));\n return;\n }\n this.cipherDomain.collectionIds = selectedCollectionIds;\n try {\n this.formPromise = this.saveCollections();\n await this.formPromise;\n this.onSavedCollections.emit();\n this.platformUtilsService.eventTrack('Edited Cipher Collections');\n this.platformUtilsService.showToast('success', null, this.i18nService.t('editedItem'));\n } catch { }\n }\n\n protected loadCipher() {\n return this.cipherService.get(this.cipherId);\n }\n\n protected loadCipherCollections() {\n return this.cipherDomain.collectionIds;\n }\n\n protected async loadCollections() {\n const allCollections = await this.collectionService.getAllDecrypted();\n return allCollections.filter((c) => !c.readOnly && c.organizationId === this.cipher.organizationId);\n }\n\n protected saveCollections() {\n return this.cipherService.saveCollectionsWithServer(this.cipherDomain);\n }\n}\n","import {\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { FolderService } from '../../abstractions/folder.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\n\nimport { FolderView } from '../../models/view/folderView';\n\nexport class FolderAddEditComponent implements OnInit {\n @Input() folderId: string;\n @Output() onSavedFolder = new EventEmitter();\n @Output() onDeletedFolder = new EventEmitter();\n\n editMode: boolean = false;\n folder: FolderView = new FolderView();\n title: string;\n formPromise: Promise;\n deletePromise: Promise;\n\n constructor(protected folderService: FolderService, protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n await this.init();\n }\n\n async submit(): Promise {\n if (this.folder.name == null || this.folder.name === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nameRequired'));\n return false;\n }\n\n try {\n const folder = await this.folderService.encrypt(this.folder);\n this.formPromise = this.folderService.saveWithServer(folder);\n await this.formPromise;\n this.platformUtilsService.eventTrack(this.editMode ? 'Edited Folder' : 'Added Folder');\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t(this.editMode ? 'editedFolder' : 'addedFolder'));\n this.onSavedFolder.emit(this.folder);\n return true;\n } catch { }\n\n return false;\n }\n\n async delete(): Promise {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteFolderConfirmation'), this.i18nService.t('deleteFolder'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.folderService.deleteWithServer(this.folder.id);\n await this.deletePromise;\n this.platformUtilsService.eventTrack('Deleted Folder');\n this.platformUtilsService.showToast('success', null, this.i18nService.t('deletedFolder'));\n this.onDeletedFolder.emit(this.folder);\n } catch { }\n\n return true;\n }\n\n protected async init() {\n this.editMode = this.folderId != null;\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t('editFolder');\n const folder = await this.folderService.get(this.folderId);\n this.folder = await folder.decrypt();\n } else {\n this.title = this.i18nService.t('addFolder');\n }\n }\n}\n","import {\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\n\nimport { CipherService } from '../../abstractions/cipher.service';\nimport { CollectionService } from '../../abstractions/collection.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\nimport { UserService } from '../../abstractions/user.service';\n\nimport { Organization } from '../../models/domain/organization';\nimport { CipherView } from '../../models/view/cipherView';\nimport { CollectionView } from '../../models/view/collectionView';\n\nimport { Utils } from '../../misc/utils';\n\nexport class ShareComponent implements OnInit {\n @Input() cipherId: string;\n @Input() organizationId: string;\n @Output() onSharedCipher = new EventEmitter();\n\n formPromise: Promise;\n cipher: CipherView;\n collections: CollectionView[] = [];\n organizations: Organization[] = [];\n\n protected writeableCollections: CollectionView[] = [];\n\n constructor(protected collectionService: CollectionService, protected platformUtilsService: PlatformUtilsService,\n protected i18nService: I18nService, protected userService: UserService,\n protected cipherService: CipherService) { }\n\n async ngOnInit() {\n await this.load();\n }\n\n async load() {\n const allCollections = await this.collectionService.getAllDecrypted();\n this.writeableCollections = allCollections.map((c) => c).filter((c) => !c.readOnly);\n const orgs = await this.userService.getAllOrganizations();\n this.organizations = orgs.sort(Utils.getSortFunction(this.i18nService, 'name'))\n .filter((o) => o.enabled && o.status === OrganizationUserStatusType.Confirmed);\n\n const cipherDomain = await this.cipherService.get(this.cipherId);\n this.cipher = await cipherDomain.decrypt();\n if (this.organizationId == null && this.organizations.length > 0) {\n this.organizationId = this.organizations[0].id;\n }\n this.filterCollections();\n }\n\n filterCollections() {\n this.writeableCollections.forEach((c) => (c as any).checked = false);\n if (this.organizationId == null || this.writeableCollections.length === 0) {\n this.collections = [];\n } else {\n this.collections = this.writeableCollections.filter((c) => c.organizationId === this.organizationId);\n }\n }\n\n async submit(): Promise {\n const selectedCollectionIds = this.collections\n .filter((c) => !!(c as any).checked)\n .map((c) => c.id);\n if (selectedCollectionIds.length === 0) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectOneCollection'));\n return;\n }\n\n const cipherDomain = await this.cipherService.get(this.cipherId);\n const cipherView = await cipherDomain.decrypt();\n\n try {\n this.formPromise = this.cipherService.shareWithServer(cipherView, this.organizationId,\n selectedCollectionIds).then(async () => {\n this.onSharedCipher.emit();\n this.platformUtilsService.eventTrack('Shared Cipher');\n this.platformUtilsService.showToast('success', null, this.i18nService.t('sharedItem'));\n });\n await this.formPromise;\n return true;\n } catch { }\n return false;\n }\n\n get canSave() {\n if (this.collections != null) {\n for (let i = 0; i < this.collections.length; i++) {\n if ((this.collections[i] as any).checked) {\n return true;\n }\n }\n }\n return false;\n }\n}\n","\n","
\n

{{'myAccount' | i18n}}

\n
\n\n
\n

{{'changeEmail' | i18n}}

\n
\n\n
\n

{{'changeMasterPassword' | i18n}}

\n
\n\n
\n

{{'encKeySettings' | i18n}}

\n
\n\n
\n

{{'dangerZone' | i18n}}

\n
\n
\n
\n

{{'dangerZoneDesc' | i18n}}

\n \n \n \n
\n
\n\n\n\n","
\n \n {{'loading' | i18n}}\n
\n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n
\n
\n

\n {{'yourAccountsFingerprint' | i18n}}:\n \n
\n {{fingerprint}}\n

\n
\n
\n \n
\n","export class UpdateProfileRequest {\n name: string;\n masterPasswordHint: string;\n culture = 'en-US'; // deprecated\n\n constructor(name: string, masterPasswordHint: string) {\n this.name = name;\n this.masterPasswordHint = masterPasswordHint ? masterPasswordHint : null;\n }\n}\n","
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n
\n

{{'changeEmailDesc' | i18n : newEmail}}

\n {{'loggedOutWarning' | i18n}}\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n","import { EmailTokenRequest } from './emailTokenRequest';\n\nexport class EmailRequest extends EmailTokenRequest {\n newMasterPasswordHash: string;\n token: string;\n key: string;\n}\n","{{'loggedOutWarning' | i18n}}\n\n {{'masterPasswordPolicyInEffect' | i18n}}\n
    \n
  • 0\">\n {{'policyInEffectMinComplexity' | i18n : getPasswordScoreAlertDisplay()}}\n
  • \n
  • 0\">\n {{'policyInEffectMinLength' | i18n : enforcedPolicyOptions?.minLength.toString()}}\n
  • \n
  • {{'policyInEffectUppercase' | i18n}}
  • \n
  • {{'policyInEffectLowercase' | i18n}}
  • \n
  • {{'policyInEffectNumbers' | i18n}}
  • \n
  • {{'policyInEffectSpecial' | i18n : '!@#$%^&*'}}
  • \n
\n
\n\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n \n \n \n \n \n
\n
\n \n
\n","{{'loggedOutWarning' | i18n}}\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n
\n
\n

{{'kdfIterationsDesc' | i18n : (100000 | number)}}

\n {{'warning' | i18n}}: {{'kdfIterationsWarning' | i18n : (50000 | number)}}\n
\n
\n
\n
\n \n
\n","import { PasswordRequest } from './passwordRequest';\n\nimport { KdfType } from '../../enums/kdfType';\n\nexport class KdfRequest extends PasswordRequest {\n kdf: KdfType;\n kdfIterations: number;\n}\n","
\n

{{'options' | i18n}}

\n
\n

{{'optionsDesc' | i18n}}

\n
\n
\n
\n
\n \n \n {{'vaultTimeoutDesc' | i18n}}\n
\n
\n
\n
\n \n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n \n \n
\n \n {{'languageDesc' | i18n}}\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n {{'disableIconsDesc' | i18n}}\n
\n
\n
\n \n \n \n \n \n
\n {{'enableGravatarsDesc' | i18n}}\n
\n \n
\n","
\n

{{'domainRules' | i18n}}

\n
\n

{{'domainRulesDesc' | i18n}}

\n
\n

{{'customEqDomains' | i18n}}

\n

\n \n {{'loading' | i18n}}\n

\n \n
\n
\n \n \n
\n \n
\n \n {{'newCustomDomainDesc' | i18n}}\n
\n \n

{{'globalEqDomains' | i18n}}

\n

\n \n {{'loading' | i18n}}\n

\n 0\">\n \n \n \n \n \n \n
{{d.domains}}\n \n
\n \n
\n","export class UpdateDomainsRequest {\n equivalentDomains: string[][];\n excludedGlobalEquivalentDomains: number[];\n}\n","
\n

{{'twoStepLogin' | i18n}}

\n
\n

{{'twoStepLoginDesc' | i18n}}

\n

{{'twoStepLoginOrganizationDesc' | i18n}}

\n\n

{{'twoStepLoginRecoveryWarning' | i18n}}

\n \n
\n

\n {{'providers' | i18n}}\n \n \n {{'loading' | i18n}}\n \n

\n\n {{'twoStepLoginPolicyUserWarning' | i18n}}\n\n
    \n
  • \n
    \n \"\"\n
    \n
    \n

    \n {{p.name}}\n \n \n {{'enabled' | i18n}}\n \n \n {{'premium' | i18n}}\n \n

    \n {{p.description}}\n
    \n
    \n \n
    \n
  • \n
\n\n\n\n\n\n\n\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class UpdateTwoFactorAuthenticatorRequest extends PasswordVerificationRequest {\n token: string;\n key: string;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nimport { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nexport class TwoFactorProviderRequest extends PasswordVerificationRequest {\n type: TwoFactorProviderType;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class UpdateTwoFactorDuoRequest extends PasswordVerificationRequest {\n integrationKey: string;\n secretKey: string;\n host: string;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class UpdateTwoFactorEmailRequest extends PasswordVerificationRequest {\n token: string;\n email: string;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class UpdateTwoFactorU2fDeleteRequest extends PasswordVerificationRequest {\n id: number;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class UpdateTwoFactorU2fRequest extends PasswordVerificationRequest {\n deviceResponse: string;\n name: string;\n id: number;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class UpdateTwoFactorYubioOtpRequest extends PasswordVerificationRequest {\n key1: string;\n key2: string;\n key3: string;\n key4: string;\n key5: string;\n nfc: boolean;\n}\n","
\n

{{'goPremium' | i18n}}

\n
\n\n {{'alreadyPremiumFromOrg' | i18n}}\n\n\n

{{'premiumUpgradeUnlockFeatures' | i18n}}

\n
    \n
  • \n \n {{'premiumSignUpStorage' | i18n}}\n
  • \n
  • \n \n {{'premiumSignUpTwoStep' | i18n}}\n
  • \n
  • \n \n {{'premiumSignUpReports' | i18n}}\n
  • \n
  • \n \n {{'premiumSignUpTotp' | i18n}}\n
  • \n
  • \n \n {{'premiumSignUpSupport' | i18n}}\n
  • \n
  • \n \n {{'premiumSignUpFuture' | i18n}}\n
  • \n
\n

{{'premiumPrice' | i18n : (premiumPrice | currency:'$')}}

\n \n {{'purchasePremium' | i18n}}\n \n
\n\n

{{'uploadLicenseFilePremium' | i18n}}

\n
\n
\n \n \n {{'licenseFileDesc' | i18n : 'bitwarden_premium_license.json'}}\n
\n \n
\n
\n
\n

{{'addons' | i18n}}

\n
\n
\n \n \n {{'additionalStorageIntervalDesc' | i18n : '1 GB' : (storageGbPrice | currency:'$') : ('year' | i18n)}}\n
\n
\n

{{'summary' | i18n}}

\n {{'premiumMembership' | i18n}}: {{premiumPrice | currency:'$'}}\n
{{'additionalStorageGb' | i18n}}: {{additionalStorage || 0}} GB × {{storageGbPrice | currency:'$'}} = {{additionalStorageTotal\n | currency:'$'}}\n
\n
\n {{'total' | i18n}}: {{total | currency:'USD $'}} /{{'year' | i18n}}\n
\n {{'paymentChargedAnnually' | i18n}}\n

{{'paymentInformation' | i18n}}

\n \n \n
\n","
\n

\n {{'billing' | i18n}}\n

\n \n
\n\n \n {{'loading' | i18n}}\n\n\n

{{(isCreditBalance ? 'accountCredit' : 'accountBalance') | i18n}}

\n

{{creditOrBalance | currency:'$'}}

\n

{{'creditAppliedDesc' | i18n}}

\n \n \n \n

{{'paymentMethod' | i18n}}

\n

{{'noPaymentMethod' | i18n}}

\n \n \n

{{'verifyBankAccountDesc' | i18n}} {{'verifyBankAccountFailureWarning' | i18n}}

\n
\n \n
\n
\n
$0.
\n
\n \n
\n \n
\n
\n
$0.
\n
\n \n
\n \n
\n
\n

\n \n {{'inAppPurchase' | i18n}}\n {{paymentSource.description}}\n

\n
\n \n \n \n

{{'invoices' | i18n}}

\n

{{'noInvoices' | i18n}}

\n \n \n \n \n \n \n \n \n \n
{{i.date | date:'mediumDate'}}\n \n \n \n {{'invoiceNumber' | i18n : i.number}}\n {{i.amount | currency:'$'}}\n \n \n {{'paid' | i18n}}\n \n \n \n {{'unpaid' | i18n}}\n \n
\n

{{'transactions' | i18n}}

\n

{{'noTransactions' | i18n}}

\n \n \n \n \n \n \n \n \n \n
{{t.createdDate | date:'mediumDate'}}\n \n {{'chargeNoun' | i18n}}\n \n {{'refundNoun' | i18n}}\n \n \n {{t.details}}\n \n {{t.amount | currency:'$'}}
\n * {{'chargesStatement' | i18n : 'BITWARDEN'}}\n
\n","export class BitPayInvoiceRequest {\n userId: string;\n organizationId: string;\n credit: boolean;\n amount: number;\n returnUrl: string;\n name: string;\n email: string;\n}\n","import { PaymentMethodType } from '../../enums/paymentMethodType';\n\nexport class PaymentRequest {\n paymentMethodType: PaymentMethodType;\n paymentToken: string;\n}\n","export enum TransactionType {\n Charge = 0,\n Credit = 1,\n PromotionalCredit = 2,\n ReferralCredit = 3,\n Refund = 4,\n}\n","export class VerifyBankRequest {\n amount1: number;\n amount2: number;\n}\n","
\n

\n {{'premiumMembership' | i18n}}\n \n \n {{'loading' | i18n}}\n \n

\n
\n\n \n {{'loading' | i18n}}\n\n\n \n {{'subscriptionCanceled' | i18n}}\n \n

{{'subscriptionPendingCanceled' | i18n}}

\n \n
\n
\n
{{'expiration' | i18n}}
\n
{{sub.expiration | date:'mediumDate'}}
\n
{{'neverExpires' | i18n}}
\n
\n
\n
\n
\n
{{'status' | i18n}}
\n
\n {{(subscription && subscription.status) || '-'}}\n {{'pendingCancellation' | i18n}}\n
\n
{{'nextCharge' | i18n}}
\n
{{nextInvoice ? ((nextInvoice.date | date: 'mediumDate') + ', ' + (nextInvoice.amount | currency:'$')) :\n '-'}}\n
\n
\n
\n
\n {{'details' | i18n}}\n \n \n \n \n \n \n \n
\n {{i.name}} {{i.quantity > 1 ? '×' + i.quantity : ''}} @ {{i.amount | currency:'$'}}\n \n {{(i.quantity * i.amount) | currency:'$'}} /{{i.interval | i18n}}\n
\n
\n
\n \n
\n \n \n {{'manageSubscription' | i18n}}\n \n
\n
\n
\n \n

{{'updateLicense' | i18n}}

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

{{'storage' | i18n}}

\n

{{'subscriptionStorage' | i18n : sub.maxStorageGb || 0 : sub.storageName || '0 MB'}}

\n
\n
\n {{(storagePercentage / 100) | percent}}
\n
\n \n
\n
\n \n \n
\n \n
\n
\n
\n
\n","export class StorageRequest {\n storageGbAdjustment: number;\n}\n","
\n

{{'newOrganization' | i18n}}

\n
\n

{{'newOrganizationDesc' | i18n}}

\n\n","import { PaymentMethodType } from '../../enums/paymentMethodType';\nimport { PlanType } from '../../enums/planType';\n\nexport class OrganizationCreateRequest {\n name: string;\n businessName: string;\n billingEmail: string;\n planType: PlanType;\n key: string;\n paymentMethodType: PaymentMethodType;\n paymentToken: string;\n additionalSeats: number;\n additionalStorageGb: number;\n premiumAccessAddon: boolean;\n collectionName: string;\n}\n","import { PlanType } from '../../enums/planType';\n\nexport class OrganizationUpgradeRequest {\n businessName: string;\n planType: PlanType;\n additionalSeats: number;\n additionalStorageGb: number;\n premiumAccessAddon: boolean;\n}\n","\n","
\n

{{'importData' | i18n}}

\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n See detailed instructions on our help site at\n \n https://dev-docs.rayt.io/docs/article/account/export-your-data/\n \n \n See detailed instructions on our help site at\n \n https://dev-docs.rayt.io/docs/article/import-from-lastpass/\n \n \n Using the KeePassX desktop application, navigate to \"Database\" → \"Export to CSV file\" and save the CSV\n file.\n \n \n In the Avira web vault, go to \"Settings\" → \"My Data\" → \"Export data\" and save the CSV file.\n \n \n In the Blur web vault, click your username at the top and go to \"Settings\" → \"Export Data\", then click\n \"Export CSV\"\n for your \"Accounts\".\n \n \n Using the SaveInCloud desktop application, navigate to \"File\" → \"Export\" → \"As XML\" and save the\n XML file.\n \n \n Using the Padlock desktop application, click the hamburger icon in the top left corner and navigate to\n \"Settings\" →\n \"Export\" button and save the file \"As CSV\".\n \n \n Using the KeePass 2 desktop application, navigate to \"File\" → \"Export\" and select the \"KeePass XML\n (2.x)\" option.\n \n \n Using the Universal Password Manager desktop application, navigate to \"Database\" → \"Export\" and save\n the CSV file.\n \n \n Using the SaferPass browser extension, click the hamburger icon in the top left corner and navigate to\n \"Settings\". Click the \"Export accounts\" button to save the CSV file.\n \n \n Using the Meldium web vault, navigate to \"Settings\". Locate the \"Export data\" function and click \"Show me my\n data\" to save the CSV file.\n \n \n Log into the Keeper web vault (keepersecurity.com/vault). Navigate to \"Backup\" (top right) and find the\n \"Export to .csv File\" option. Click \"Export Now\" to save the CSV file.\n \n \n \n The process is exactly the same as importing from Google Chrome.\n \n See detailed instructions on our help site at\n \n https://dev-docs.rayt.io/docs/article/import-from-chrome/\n \n \n Use the\n \n FF Password Exporter application to export your passwords to a CSV file.\n \n \n See detailed instructions on our help site at\n \n https://dev-docs.rayt.io/docs/article/import-from-1password/.\n \n \n Using the Password Dragon desktop application, navigate to \"File\" → \"Export\" → \"To XML\". In the\n dialog that pops up select \"All Rows\" and check all fields. Click the \"Export\" button and save the XML file.\n \n \n Using the Enpass desktop application, navigate to \"File\" → \"Export\" → \"As CSV\". Select \"OK\" to the\n warning alert and save the CSV file. Note that the importer only supports files exported while Enpass is set\n to the English language, so adjust your settings accordingly.\n \n \n Using the Enpass 6 desktop application, click the menu button and navigate to \"File\" → \"Export\".\n Select the \".json\" file format option and save the JSON file.\n \n \n Using the Password Safe desktop application, navigate to \"File\" → \"Export To\" → \"XML format...\"\n and save the XML file.\n \n \n Using the Dashlane desktop application, navigate to \"File\" → \"Export\" → \"Unsecured archive\n (readable) in JSON format\" and save the JSON file.\n \n \n Using the mSecure desktop application, navigate to \"File\" → \"Export\" → \"CSV File...\" and save the\n CSV file.\n \n \n Using the Sticky Password desktop application, navigate to \"Menu\" (top right) → \"Export\" → \"Export\n all\". Select the unencrypted format XML option and save the XML file.\n \n \n Using the True Key desktop application, click the gear icon (top right) and then navigate to \"App Settings\".\n Click the \"Export\" button, enter your password and save the CSV file.\n \n \n Log into the Clipperz web application (clipperz.is/app). Click the hamburger menu icon in the top right to\n expand the navigation bar. Navigate to \"Data\" → \"Export\". Click the \"download HTML+JSON\" button to save\n the HTML file.\n \n \n Using the RoboForm Editor desktop application, navigate to \"RoboForm\" (top left) → \"Options\" →\n \"Account & Data\" and click the \"Export\" button. Select all of your data, change the \"Format\" to \"CSV\n file\" and then click the \"Export\" button to save the CSV file. Note: RoboForm only allows you to export\n Logins. Other items will not be exported.\n \n \n Log into the Passbolt web vault and navigate to the \"Passwords\" listing. Select all of the passwords you\n would like to export and click the \"Export\" button at the top of the listing. Choose the \"csv (lastpass)\"\n export format and click the \"Export\" button.\n \n \n Using the Ascendo DataVault desktop application, navigate to \"Tools\" → \"Export\". In the dialog that\n pops up, select the \"All Items (DVX, CSV)\" option. Click the \"Ok\" button to save the CSV file.\n \n \n Using the Password Boss desktop application, navigate to \"File\" → \"Export data\" → \"Password Boss\n JSON - not encrypted\" and save the JSON file.\n \n \n Log into the Zoho web vault (vault.zoho.com). Navigate to \"Tools\" → \"Export Secrets\". Select \"All\n Secrets\" and click the \"Zoho Vault Format CSV\" button. Highlight and copy the data from the textarea. Open a\n text editor like Notepad and paste the data. Save the data from the text editor as\n zoho_export.csv.\n \n \n Using the SplashID Safe desktop application, click on the SplashID blue lock logo in the top right corner.\n Navigate to \"Export\" → \"Export as CSV\" and save the CSV file.\n \n \n Using the PassKeep mobile app, navigate to \"Backup/Restore\". Locate the \"CSV Backup/Restore\" section and\n click \"Backup to CSV\" to save the CSV file.\n \n \n Make sure you have python-keyring and python-gnomekeyring installed. Save the\n GNOME Keyring Import/Export python\n script to your desktop as pw_helper.py. Open terminal and run\n chmod +rx Desktop/pw_helper.py and then\n python Desktop/pw_helper.py export Desktop/my_passwords.json. Then upload the resulting\n my_passwords.json file here to SecretSafe.\n \n \n Using the Password Agent desktop application navigate to \"File\" → \"Export\", select the \"Fields to\n export\" button and check all of the fields, change the \"Output format\" to \"CSV\", and then click the \"Start\"\n button to save the CSV file.\n \n \n Log into the Passpack website vault and navigate to \"Settings\" → \"Export\", then click the \"Download\"\n button to save the CSV file.\n \n \n Open your Passman vault and click on \"Settings\" in the bottom left corner. In the \"Settings\" window switch\n to the \"Export credentials\" tab and choose \"JSON\" as the export type. Enter your vault's passphrase and\n click the \"Export\" button to save the JSON file.\n \n \n Open the Avast Passwords desktop application and navigate to \"Settings\" → \"Import/export data\". Select\n the \"Export\" button for the \"Export to CSV file\" option to save the CSV file.\n \n \n Open the Avast Passwords desktop application and navigate to \"Settings\" → \"Import/export data\". Select\n the \"Export\" button for the \"Export to JSON file\" option to save the JSON file.\n \n \n Open the F-Secure KEY desktop application and navigate to \"Settings\" → \"Export Passwords\". Select the\n \"Export\" button, enter your master password, and save the FSK file.\n \n \n Open the Kaspersky Password Manager desktop application and navigate to \"Settings\" → \"Import/Export\".\n Locate the \"Export to text file\" section and select the \"Export\" button to save the TXT file.\n \n \n Open the RememBear desktop application and navigate to \"Settings\" → \"Account\" → \"Export\".\n Enter your master password and select the \"Export Anyway\" button to save the CSV file.\n \n \n Open the PasswordWallet desktop application and navigate to \"File\" → \"Export\" →\n \"Visible entries to text file\". Enter your password and select the \"Ok\" button to save the TXT file.\n \n \n Open the Myki desktop browser extension and navigate to \"Advanced\" → \"Export Accounts\" and then scan\n the QR code with your mobile device. Various CSV files will then be saved to your computer's\n downloads folder.\n \n \n Export your SecureSafe password safe to a CSV file with a comma delimiter.\n \n \n Open the LogMeOnce browser extension, then navigate to \"Open Menu\" → \"Export To\" and\n select \"CSV File\" to save the CSV file.\n \n \n Open the BlackBerry Password Keeper application, then navigate to \"Settings\" → \"Import/Export\".\n Select \"Export Passwords\" and follow the instructions on screen to save the unencrypted CSV file.\n \n \n Open the Buttercup desktop application and unlock your vault. Right click on your vault's icon and\n select \"Export\" to save the CSV file.\n \n \n Open the Codebook desktop application and log in. Navigate to \"File\" → \"Export all\", then click\n \"Yes\" on the dialog and save the CSV file.\n \n \n Open the newest version of the Encryptr desktop application and allow all of your data to sync.\n Once syncing of your data is complete, the download icon in the top right corner will turn pink. Click\n the download icon and save the CSV file.\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n \n
\n","
\n
\n

{{'exportVault' | i18n}}

\n
\n

{{'exportMasterPassword' | i18n}}

\n {{'exportWarningDesc' | i18n}}\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n
\n","import {\n EventEmitter,\n Output,\n} from '@angular/core';\n\nimport { CryptoService } from '../../abstractions/crypto.service';\nimport { EventService } from '../../abstractions/event.service';\nimport { ExportService } from '../../abstractions/export.service';\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\nimport { EventType } from '../../enums/eventType';\n\nexport class ExportComponent {\n @Output() onSaved = new EventEmitter();\n\n formPromise: Promise;\n masterPassword: string;\n format: 'json' | 'csv' = 'json';\n showPassword = false;\n\n constructor(protected cryptoService: CryptoService, protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService, protected exportService: ExportService,\n protected eventService: EventService, protected win: Window) { }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidMasterPassword'));\n return;\n }\n\n const keyHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n const storedKeyHash = await this.cryptoService.getKeyHash();\n if (storedKeyHash != null && keyHash != null && storedKeyHash === keyHash) {\n try {\n this.formPromise = this.getExportData();\n const data = await this.formPromise;\n this.platformUtilsService.eventTrack('Exported Data');\n this.downloadFile(data);\n this.saved();\n await this.collectEvent();\n } catch { }\n } else {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidMasterPassword'));\n }\n }\n\n togglePassword() {\n this.platformUtilsService.eventTrack('Toggled Master Password on Export');\n this.showPassword = !this.showPassword;\n document.getElementById('masterPassword').focus();\n }\n\n protected saved() {\n this.onSaved.emit();\n }\n\n protected getExportData() {\n return this.exportService.getExport(this.format);\n }\n\n protected getFileName(prefix?: string) {\n return this.exportService.getFileName(prefix, this.format);\n }\n\n protected async collectEvent(): Promise {\n await this.eventService.collect(EventType.User_ClientExportedVault);\n }\n\n private downloadFile(csv: string): void {\n const fileName = this.getFileName();\n this.platformUtilsService.saveFile(this.win, csv, { type: 'text/plain' }, fileName);\n }\n}\n","
\n

{{'passwordGenerator' | i18n}}

\n
\n\n {{'passwordGeneratorPolicyInEffect' | i18n}}\n\n
\n
\n
\n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n
\n \n \n
\n
\n \n
\n
\n\n","import {\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PasswordGenerationService } from '../../abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\n\nimport { PasswordGeneratorPolicyOptions } from '../../models/domain/passwordGeneratorPolicyOptions';\n\nexport class PasswordGeneratorComponent implements OnInit {\n @Input() showSelect: boolean = false;\n @Output() onSelected = new EventEmitter();\n\n options: any = {};\n password: string = '-';\n showOptions = false;\n avoidAmbiguous = false;\n enforcedPolicyOptions: PasswordGeneratorPolicyOptions;\n\n constructor(protected passwordGenerationService: PasswordGenerationService,\n protected platformUtilsService: PlatformUtilsService, protected i18nService: I18nService,\n private win: Window) { }\n\n async ngOnInit() {\n const optionsResponse = await this.passwordGenerationService.getOptions();\n this.options = optionsResponse[0];\n this.enforcedPolicyOptions = optionsResponse[1];\n this.avoidAmbiguous = !this.options.ambiguous;\n this.options.type = this.options.type === 'passphrase' ? 'passphrase' : 'password';\n this.password = await this.passwordGenerationService.generatePassword(this.options);\n this.platformUtilsService.eventTrack('Generated Password');\n await this.passwordGenerationService.addHistory(this.password);\n }\n\n async sliderChanged() {\n this.saveOptions(false);\n await this.passwordGenerationService.addHistory(this.password);\n this.platformUtilsService.eventTrack('Regenerated Password');\n }\n\n async sliderInput() {\n this.normalizeOptions();\n this.password = await this.passwordGenerationService.generatePassword(this.options);\n }\n\n async saveOptions(regenerate: boolean = true) {\n this.normalizeOptions();\n await this.passwordGenerationService.saveOptions(this.options);\n\n if (regenerate) {\n await this.regenerate();\n }\n }\n\n async regenerate() {\n this.password = await this.passwordGenerationService.generatePassword(this.options);\n await this.passwordGenerationService.addHistory(this.password);\n this.platformUtilsService.eventTrack('Regenerated Password');\n }\n\n copy() {\n this.platformUtilsService.eventTrack('Copied Generated Password');\n const copyOptions = this.win != null ? { window: this.win } : null;\n this.platformUtilsService.copyToClipboard(this.password, copyOptions);\n this.platformUtilsService.showToast('info', null,\n this.i18nService.t('valueCopied', this.i18nService.t('password')));\n }\n\n select() {\n this.platformUtilsService.eventTrack('Selected Generated Password');\n this.onSelected.emit(this.password);\n }\n\n toggleOptions() {\n this.showOptions = !this.showOptions;\n }\n\n private normalizeOptions() {\n // Application level normalize options depedent on class variables\n this.options.ambiguous = !this.avoidAmbiguous;\n\n if (!this.options.uppercase && !this.options.lowercase && !this.options.number && !this.options.special) {\n this.options.lowercase = true;\n if (this.win != null) {\n const lowercase = this.win.document.querySelector('#lowercase') as HTMLInputElement;\n if (lowercase) {\n lowercase.checked = true;\n }\n }\n }\n\n this.passwordGenerationService.normalizeOptions(this.options, this.enforcedPolicyOptions);\n }\n}\n","import { OnInit } from '@angular/core';\n\nimport { I18nService } from '../../abstractions/i18n.service';\nimport { PasswordGenerationService } from '../../abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\n\nimport { GeneratedPasswordHistory } from '../../models/domain/generatedPasswordHistory';\n\nexport class PasswordGeneratorHistoryComponent implements OnInit {\n history: GeneratedPasswordHistory[] = [];\n\n constructor(protected passwordGenerationService: PasswordGenerationService,\n protected platformUtilsService: PlatformUtilsService, protected i18nService: I18nService,\n private win: Window) { }\n\n async ngOnInit() {\n this.history = await this.passwordGenerationService.getHistory();\n }\n\n clear() {\n this.history = [];\n this.passwordGenerationService.clear();\n }\n\n copy(password: string) {\n this.platformUtilsService.eventTrack('Copied Historical Password');\n const copyOptions = this.win != null ? { window: this.win } : null;\n this.platformUtilsService.copyToClipboard(password, copyOptions);\n this.platformUtilsService.showToast('info', null,\n this.i18nService.t('valueCopied', this.i18nService.t('password')));\n }\n}\n","
\n

{{'dataBreachReport' | i18n}}

\n
\n

{{'breachDesc' | i18n}}

\n
\n
\n
\n \n \n {{'breachCheckUsernameEmail' | i18n}}\n
\n
\n \n
\n
\n

{{'reportError' | i18n}}...

\n \n \n {{'breachUsernameNotFound' | i18n : checkedUsername}}\n \n \n {{'breachUsernameFound' | i18n : checkedUsername : breachedAccounts.length}}\n \n
    \n
  • \n
    \n
    \n \"\"\n
    \n
    \n

    {{a.title}}

    \n

    \n

    {{'compromisedData' | i18n}}:

    \n
      \n
    • {{d}}
    • \n
    \n
    \n
    \n
    \n
    {{'website' | i18n}}
    \n
    {{a.domain}}
    \n
    {{'affectedUsers' | i18n}}
    \n
    {{a.pwnCount | number}}
    \n
    {{'breachOccurred' | i18n}}
    \n
    {{a.breachDate | date: 'mediumDate'}}
    \n
    {{'breachReported' | i18n}}
    \n
    {{a.addedDate | date: 'mediumDate'}}
    \n
    \n
    \n
    \n
  • \n
\n
\n
\n","
\n

\n {{'reusedPasswordsReport' | i18n}}\n \n \n {{'loading' | i18n}}\n \n

\n
\n

{{'reusedPasswordsReportDesc' | i18n}}

\n
\n \n {{'loading' | i18n}}\n
\n
\n \n {{'noReusedPasswords' | i18n}}\n \n \n \n {{'reusedPasswordsFoundDesc' | i18n : (ciphers.length | number)}}\n \n \n \n \n \n \n \n \n \n
\n \n \n {{c.name}}\n \n \n {{'shared' | i18n}}\n \n \n \n {{'attachments' | i18n}}\n \n
\n {{c.subTitle}}\n
\n \n {{'reusedXTimes' | i18n : passwordUseMap.get(c.login.password)}}\n \n
\n
\n
\n\n","
\n

\n {{'unsecuredWebsitesReport' | i18n}}\n \n \n {{'loading' | i18n}}\n \n

\n
\n

{{'unsecuredWebsitesReportDesc' | i18n}}

\n
\n \n {{'loading' | i18n}}\n
\n
\n \n {{'noUnsecuredWebsites' | i18n}}\n \n \n \n {{'unsecuredWebsitesFoundDesc' | i18n : (ciphers.length | number)}}\n \n \n \n \n \n \n \n \n
\n \n \n {{c.name}}\n \n \n {{'shared' | i18n}}\n \n \n \n {{'attachments' | i18n}}\n \n
\n {{c.subTitle}}\n
\n
\n
\n\n","
\n

\n {{'weakPasswordsReport' | i18n}}\n \n \n {{'loading' | i18n}}\n \n

\n
\n

{{'weakPasswordsReportDesc' | i18n}}

\n
\n \n {{'loading' | i18n}}\n
\n
\n \n {{'noWeakPasswords' | i18n}}\n \n \n \n {{'weakPasswordsFoundDesc' | i18n : (ciphers.length | number)}}\n \n \n \n \n \n \n \n \n \n
\n \n \n {{c.name}}\n \n \n {{'shared' | i18n}}\n \n \n \n {{'attachments' | i18n}}\n \n
\n {{c.subTitle}}\n
\n \n {{passwordStrengthMap.get(c.id)[0] | i18n}}\n \n
\n
\n
\n\n","
\n

{{'exposedPasswordsReport' | i18n}}

\n
\n

{{'exposedPasswordsReportDesc' | i18n}}

\n\n
\n \n {{'noExposedPasswords' | i18n}}\n \n \n \n {{'exposedPasswordsFoundDesc' | i18n : (ciphers.length | number)}}\n \n \n \n \n \n \n \n \n \n
\n \n \n {{c.name}}\n \n \n {{'shared' | i18n}}\n \n \n \n {{'attachments' | i18n}}\n \n
\n {{c.subTitle}}\n
\n \n {{'exposedXTimes' | i18n : (exposedPasswordMap.get(c.id) | number)}}\n \n
\n
\n
\n\n","
\n

\n {{'inactive2faReport' | i18n}}\n \n \n {{'loading' | i18n}}\n \n

\n
\n

{{'inactive2faReportDesc' | i18n}}

\n
\n \n {{'loading' | i18n}}\n
\n
\n \n {{'noInactive2fa' | i18n}}\n \n \n \n {{'inactive2faFoundDesc' | i18n : (ciphers.length | number)}}\n \n \n \n \n \n \n \n \n \n
\n \n \n {{c.name}}\n \n \n {{'shared' | i18n}}\n \n \n \n {{'attachments' | i18n}}\n \n
\n {{c.subTitle}}\n
\n \n {{'instructions' | i18n}}\n
\n
\n
\n\n","\n
\n
\n
\n \n
\n {{organization.name}}\n {{'organization' | i18n}}\n
\n
\n
\n \n {{'organizationIsDisabled' | i18n}}\n
\n
\n
\n \n
\n
\n\n\n","
\n
\n
\n \n \n
\n
\n
\n

\n {{'vault' | i18n}}\n \n \n \n {{'loading' | i18n}}\n \n \n

\n \n
\n \n \n
\n
\n
\n\n\n\n","\n","\n","
\n

{{'collections' | i18n}}

\n
\n
\n \n \n
\n \n
\n
\n\n \n {{'loading' | i18n}}\n\n\n

{{'noCollectionsInList' | i18n}}

\n \n \n \n \n \n \n \n
\n {{c.name}}\n \n \n
\n
\n\n\n","
\n

{{'eventLogs' | i18n}}

\n
\n
\n \n \n -\n \n \n
\n \n
\n
\n\n \n {{'loading' | i18n}}\n\n\n

{{'noEventsInList' | i18n}}

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{'timestamp' | i18n}}\n {{'device' | i18n}}\n {{'user' | i18n}}{{'event' | i18n}}
{{e.date | date:'medium'}}\n \n {{e.appName}}, {{e.ip}}\n \n {{e.userName}}\n
\n \n
\n","
\n

{{'groups' | i18n}}

\n
\n
\n \n \n
\n \n
\n
\n\n \n {{'loading' | i18n}}\n\n\n

{{'noGroupsInList' | i18n}}

\n \n \n \n \n \n \n \n
\n {{g.name}}\n \n \n
\n
\n\n\n","import { SelectionReadOnlyRequest } from './selectionReadOnlyRequest';\n\nexport class GroupRequest {\n name: string;\n accessAll: boolean;\n externalId: string;\n collections: SelectionReadOnlyRequest[] = [];\n}\n","
\n

{{'people' | i18n}}

\n
\n
\n \n \n \n
\n
\n \n \n
\n \n
\n
\n\n \n {{'loading' | i18n}}\n\n\n

{{'noUsersInList' | i18n}}

\n \n \n {{'usersNeedConfirmed' | i18n}}\n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n {{u.email}}\n {{'invited' | i18n}}\n {{'accepted' | i18n}}\n {{u.name}}\n \n \n \n {{'userUsingTwoStep' | i18n}}\n \n \n {{'owner' | i18n}}\n {{'admin' | i18n}}\n {{'manager' | i18n}}\n {{'user' | i18n}}\n \n \n
\n
\n
\n\n\n\n\n","import { OrganizationUserType } from '../../enums/organizationUserType';\n\nimport { SelectionReadOnlyRequest } from './selectionReadOnlyRequest';\n\nexport class OrganizationUserInviteRequest {\n emails: string[] = [];\n type: OrganizationUserType;\n accessAll: boolean;\n collections: SelectionReadOnlyRequest[] = [];\n}\n","import { OrganizationUserType } from '../../enums/organizationUserType';\n\nimport { SelectionReadOnlyRequest } from './selectionReadOnlyRequest';\n\nexport class OrganizationUserUpdateRequest {\n type: OrganizationUserType;\n accessAll: boolean;\n collections: SelectionReadOnlyRequest[] = [];\n}\n","export class OrganizationUserUpdateGroupsRequest {\n groupIds: string[] = [];\n}\n","
\n

{{'policies' | i18n}}

\n
\n\n \n {{'loading' | i18n}}\n\n\n \n \n \n \n \n
\n {{p.name}}\n {{'enabled' | i18n}}\n {{p.description}}\n
\n\n","import { PolicyType } from '../../enums/policyType';\n\nexport class PolicyRequest {\n type: PolicyType;\n enabled: boolean;\n data: any;\n}\n","\n","
\n

{{'myOrganization' | i18n}}

\n
\n
\n \n {{'loading' | i18n}}\n
\n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n
\n
\n \n
\n\n
\n

{{'apiKey' | i18n}}

\n
\n

\n {{'apiKeyDesc' | i18n}}\n \n {{'learnMore' | i18n}}\n \n

\n \n \n
\n
\n

{{'taxInformation' | i18n}}

\n
\n

{{'taxInformationDesc' | i18n}}

\n\n {{'contactSupport' | i18n}}\n\n
\n

{{'dangerZone' | i18n}}

\n
\n
\n
\n

{{'dangerZoneDesc' | i18n}}

\n \n \n
\n
\n\n\n\n\n","export class OrganizationUpdateRequest {\n name: string;\n businessName: string;\n billingEmail: string;\n}\n","
\n

\n {{'subscription' | i18n}}\n \n \n {{'loading' | i18n}}\n \n

\n
\n\n \n {{'loading' | i18n}}\n\n\n \n {{'subscriptionCanceled' | i18n}}\n \n

{{'subscriptionPendingCanceled' | i18n}}

\n \n
\n
\n
{{'billingPlan' | i18n}}
\n
{{sub.plan}}
\n
{{'expiration' | i18n}}
\n
\n {{sub.expiration | date:'mediumDate'}}\n \n \n {{'licenseIsExpired' | i18n}}\n \n
\n
{{'neverExpires' | i18n}}
\n
\n
\n
\n
\n
{{'billingPlan' | i18n}}
\n
{{sub.plan}}
\n \n
{{'status' | i18n}}
\n
\n {{subscription.status || '-'}}\n {{'pendingCancellation' | i18n}}\n
\n
{{'nextCharge' | i18n}}
\n
{{nextInvoice ? ((nextInvoice.date | date: 'mediumDate') + ', ' + (nextInvoice.amount | currency:'$'))\n : '-'}}\n
\n
\n
\n
\n
\n {{'details' | i18n}}\n \n \n \n \n \n \n \n
\n {{i.name}} {{i.quantity > 1 ? '×' + i.quantity : ''}} @ {{i.amount | currency:'$'}}\n \n {{(i.quantity * i.amount) | currency:'$'}} /{{i.interval | i18n}}\n
\n
\n
\n \n
\n \n \n {{'manageSubscription' | i18n}}\n \n
\n
\n
\n \n

{{'updateLicense' | i18n}}

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

{{'userSeats' | i18n}}

\n

{{'subscriptionUserSeats' | i18n : sub.seats}}

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

{{'storage' | i18n}}

\n

{{'subscriptionStorage' | i18n : sub.maxStorageGb || 0 : sub.storageName || '0 MB'}}

\n
\n
\n {{(storagePercentage / 100) | percent}}
\n
\n \n
\n
\n \n \n
\n \n
\n
\n
\n
\n","
\n
\n \n

{{'changeBillingPlan' | i18n}}

\n

{{'changeBillingPlanUpgrade' | i18n}}

\n \n \n
\n
\n","
\n
\n \n

{{'downloadLicense' | i18n}}

\n
\n
\n
\n \n \n \n \n
\n \n
\n
\n \n \n
\n
\n","
\n
\n \n

{{(add ? 'addSeats' : 'removeSeats') | i18n}}

\n
\n
\n \n \n
\n
\n
\n {{'total' | i18n}}: {{seatAdjustment || 0}} × {{seatPrice | currency:'$'}} = {{adjustedSeatTotal\n | currency:'$'}} /{{interval | i18n}}\n
\n \n \n \n {{(add ? 'seatsAddNote' : 'seatsRemoveNote') | i18n}}\n \n
\n
\n\n","export class SeatRequest {\n seatAdjustment: number;\n}\n","
\n
\n
\n
\n

{{title}}

\n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n \n
\n \n
\n
\n
\n
\n
\n \n \n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n \n
\n \n {{totpSec}}\n \n \n \n \n \n \n \n {{totpCodeFormatted}}\n \n
\n
\n
\n \n
\n
\n \n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n \n \n \n
\n
\n \n \n
\n
\n
\n
\n \n {{'newUri' | i18n}}\n \n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n
\n \n
\n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n

{{'customFields' | i18n}}

\n
\n
\n
\n
\n \n \n \n \n
\n \n
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n \n
\n \n \n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n \n {{'newCustomField' | i18n}}\n \n
\n
\n \n \n
\n
\n \n

{{'ownership' | i18n}}

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

{{'collections' | i18n}}

\n
\n {{'noCollectionsInList' | i18n}}\n
\n \n
\n \n \n
\n
\n
\n \n
\n
\n {{'dateUpdated' | i18n}}:\n {{cipher.revisionDate | date:'medium'}}\n
\n
\n {{'datePasswordUpdated' | i18n}}:\n {{cipher.passwordRevisionDisplayDate | date:'medium'}}\n
\n
\n {{'passwordHistory' | i18n}}:\n \n {{cipher.passwordHistory.length}}\n \n
\n
\n
\n {{ph.lastUsedDate | date:'short'}} -\n {{ph.password}}\n
\n
\n
\n
\n
\n
\n \n \n
\n \n \n
\n
\n
\n
\n
","
\n
\n
\n
\n

\n {{'attachments' | i18n}}\n {{cipher.name}}\n

\n \n
\n
\n \n \n \n \n \n \n \n \n
\n \n \n \n
\n {{a.fileName}}\n
\n \n \n {{'attachmentFixDesc' | i18n}}\n \n
\n
\n {{a.sizeName}}\n
\n \n
\n

{{'newAttachment' | i18n}}

\n \n \n {{'maxFileSize' | i18n}}\n
\n
\n \n \n
\n
\n
\n
\n","
\n
\n
\n
\n

\n {{'deleteSelected' | i18n}}\n

\n \n
\n
\n {{'deleteSelectedItemsDesc' | i18n: cipherIds.length}}\n
\n
\n \n \n
\n
\n
\n
\n","
\n
\n
\n
\n

\n {{'moveSelected' | i18n}}\n

\n \n
\n
\n

{{'moveSelectedItemsDesc' | i18n: cipherIds.length}}

\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n","
\n
\n
\n
\n

\n {{'shareSelected' | i18n}}\n

\n \n
\n
\n

{{'shareManyDesc' | i18n}}

\n

{{'shareSelectedItemsCountDesc' | i18n: this.ciphers.length : shareableCiphers.length : nonShareableCount}}\n

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

{{'collections' | i18n}}

\n
\n \n \n
\n
\n
\n {{'noCollectionsInList' | i18n}}\n
\n \n \n \n \n \n \n \n
\n \n \n {{c.name}}\n
\n
\n
\n \n \n
\n
\n
\n
\n","
\n
\n
\n
\n

\n {{'collections' | i18n}}\n {{cipher.name}}\n

\n \n
\n
\n

{{'collectionsDesc' | i18n}}

\n
\n

{{'collections' | i18n}}

\n
\n \n \n
\n
\n
\n {{'noCollectionsInList' | i18n}}\n
\n \n \n \n \n \n \n \n
\n \n \n {{c.name}}\n
\n
\n
\n \n \n
\n
\n
\n
\n","
\n
\n
\n
\n

{{'deauthorizeSessions' | i18n}}

\n \n
\n
\n

{{'deauthorizeSessionsDesc' | i18n}}

\n {{'deauthorizeSessionsWarning' | i18n}}\n \n \n
\n
\n \n \n
\n
\n
\n
\n","
\n
\n
\n
\n

{{'deleteAccount' | i18n}}

\n \n
\n
\n

{{'deleteAccountDesc' | i18n}}

\n {{'deleteAccountWarning' | i18n}}\n \n \n
\n
\n \n \n
\n
\n
\n
\n","
\n
\n
\n
\n

{{'deleteOrganization' | i18n}}

\n \n
\n
\n

{{'deleteOrganizationDesc' | i18n}}

\n {{'deleteOrganizationWarning' | i18n}}\n \n \n
\n
\n \n \n
\n
\n
\n
\n","
\n
\n
\n
\n

{{title}}

\n \n
\n
\n \n \n
\n
\n \n \n
\n \n
\n
\n
\n
\n
\n","","
\n
\n
\n
\n

{{'apiKey' | i18n}}

\n \n
\n
\n

{{'apiKeyDesc' | i18n}}

\n \n \n \n \n {{'apiKeyWarning' | i18n}}\n \n

\n client_id:
\n {{clientId}}\n

\n

\n client_secret:
\n {{clientSecret}}\n

\n

\n scope:
\n {{scope}}\n

\n

\n grant_type:
\n client_credentials\n

\n
\n
\n
\n \n \n
\n
\n
\n
\n","
\n
\n
\n
\n

{{title}}

\n \n
\n
\n \n {{'loading' | i18n}}\n
\n
\n
\n \n \n
\n
\n \n \n {{'externalIdDesc' | i18n}}\n
\n \n

\n {{'groupAccess' | i18n}}\n
\n \n \n
\n

\n
\n {{'noGroupsInList' | i18n}}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 {{'name' | i18n}}{{'readOnly' | i18n}}
\n \n \n {{g.name}}\n \n \n {{'groupAccessAllItems' | i18n}}\n \n \n \n
\n
\n
\n
\n \n \n
\n \n
\n
\n
\n
\n
\n","
\n
\n
\n
\n

\n {{'eventLogs' | i18n}}\n {{name}}\n

\n \n
\n
\n \n {{'loading' | i18n}}\n
\n
\n
\n
\n \n \n -\n \n \n
\n \n
\n
\n
\n {{'noEventsInList' | i18n}}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{'timestamp' | i18n}}\n {{'device' | i18n}}\n {{'user' | i18n}}{{'event' | i18n}}
{{e.date | date:'medium'}}\n \n {{e.appName}}, {{e.ip}}\n \n {{e.userName}}\n
\n \n
\n
\n \n
\n
\n
\n
\n","
\n
\n
\n
\n

\n {{'userAccess' | i18n}}\n {{entityName}}\n

\n \n
\n
\n \n {{'loading' | i18n}}\n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n {{'noUsersInList' | i18n}}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
  {{'name' | i18n}} {{'userType' | i18n}}{{'readOnly' |\n i18n}}
\n \n \n \n \n {{u.email}}\n {{'invited'\n | i18n}}\n {{'accepted'\n | i18n}}\n {{u.name}}\n \n \n \n {{'userAccessAllItems' | i18n}}\n \n \n {{'owner' | i18n}}\n {{'admin' | i18n}}\n {{'manager' | i18n}}\n {{'user' | i18n}}\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n","
\n
\n
\n
\n

{{title}}

\n \n
\n
\n \n {{'loading' | i18n}}\n
\n
\n
\n \n \n
\n
\n \n \n {{'externalIdDesc' | i18n}}\n
\n

\n
\n {{'accessControl' | i18n}}\n
\n
\n \n \n
\n

\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n {{'noCollectionsInList' | i18n}}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 {{'name' | i18n}}{{'readOnly' | i18n}}
\n \n \n {{c.name}}\n \n \n
\n
\n
\n
\n \n \n
\n \n
\n
\n
\n
\n
\n","
\n
\n
\n
\n

{{'editPolicy' | i18n}} - {{name}}

\n \n
\n
\n \n {{'loading' | i18n}}\n
\n
\n

{{description}}

\n \n {{'twoStepLoginPolicyWarning' | i18n}}\n \n
\n
\n \n \n
\n
\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n
\n \n \n
\n
\n

{{'password' | i18n}}

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

{{'passphrase' | i18n}}

\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n","
\n
\n
\n
\n

{{'rotateApiKey' | i18n}}

\n \n
\n
\n

{{'apiKeyRotateDesc' | i18n}}

\n \n \n \n \n {{'apiKeyWarning' | i18n}}\n \n

\n client_id:
\n {{clientId}}\n

\n

\n client_secret:
\n {{clientSecret}}\n

\n

\n scope:
\n {{scope}}\n

\n

\n grant_type:
\n client_credentials\n

\n
\n
\n
\n \n \n
\n
\n
\n
\n","
\n
\n
\n
\n

\n {{title}}\n {{name}}\n

\n \n
\n
\n \n {{'loading' | i18n}}\n
\n
\n \n

{{'inviteUserDesc' | i18n}}

\n
\n \n \n {{'inviteMultipleEmailDesc' | i18n : '20'}}\n
\n
\n

{{'userType' | i18n}}

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

\n
\n {{'accessControl' | i18n}}\n
\n
\n \n \n
\n

\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n {{'noCollectionsInList' | i18n}}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 {{'name' | i18n}}{{'readOnly' | i18n}}
\n \n \n {{c.name}}\n \n \n
\n
\n
\n
\n \n \n
\n \n
\n
\n
\n
\n
\n","
\n
\n
\n
\n

\n {{'confirmUser' | i18n}}\n {{name}}\n

\n \n
\n
\n

\n {{'fingerprintEnsureIntegrityVerify' | i18n}}\n \n {{'learnMore' | i18n}}\n

\n

{{fingerprint}}

\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n","
\n
\n
\n
\n

\n {{'groupAccess' | i18n}}\n {{name}}\n

\n \n
\n
\n \n {{'loading' | i18n}}\n
\n
\n

{{'groupAccessUserDesc' | i18n}}

\n
\n {{'noGroupsInList' | i18n}}\n
\n \n \n \n \n \n \n \n
\n \n \n {{g.name}}\n
\n
\n
\n \n \n
\n
\n
\n
\n","
\n
\n
\n
\n

{{'passwordHistory' | i18n}}

\n \n
\n
    \n
  • \n
    \n
    \n {{h.date | date:'medium'}}\n
    \n
    \n \n
    \n
  • \n
\n
\n {{'noPasswordsInList' | i18n}}\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n","
\n
\n
\n
\n

{{'purgeVault' | i18n}}

\n \n
\n
\n

{{(organizationId ? 'purgeOrgVaultDesc' : 'purgeVaultDesc') | i18n}}

\n {{'purgeVaultWarning' | i18n}}\n \n \n
\n
\n \n \n
\n
\n
\n
\n","
\n
\n
\n
\n

\n {{'share' | i18n}}\n {{cipher.name}}\n

\n \n
\n
\n {{'noOrganizationsList' | i18n}}\n
\n
\n

{{'shareDesc' | i18n}}

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

{{'collections' | i18n}}

\n
\n \n \n
\n
\n
\n {{'noCollectionsInList' | i18n}}\n
\n \n \n \n \n \n \n \n
\n \n \n {{c.name}}\n
\n
\n
\n \n \n {{'newOrganization' | i18n}}\n \n \n
\n
\n
\n
\n","
\n
\n
\n
\n

\n {{'twoStepLogin' | i18n}}\n {{'authenticatorAppTitle' | i18n}}\n

\n \n
\n \n \n
\n
\n \n \"\"\n

{{'twoStepAuthenticatorDesc' | i18n}}

\n

\n 1. {{'twoStepAuthenticatorDownloadApp' | i18n}}\n

\n
\n \n \n

{{'twoStepLoginProviderEnabled' | i18n}}

\n {{'twoStepAuthenticatorReaddDesc' | i18n}}\n
\n \"\"\n

{{'twoStepAuthenticatorNeedApp' | i18n}}

\n
\n \n

{{'twoStepAuthenticatorAppsRecommended' | i18n}}

\n

\n 2. {{'twoStepAuthenticatorScanCode' | i18n}}\n

\n
\n

\n
\n {{key}}\n

\n \n \n \n \n
\n
\n \n \n
\n
\n
\n
\n
\n","
\n
\n
\n
\n

\n {{'twoStepLogin' | i18n}}\n Duo\n

\n \n
\n \n \n
\n
\n \n \n {{'twoStepLoginProviderEnabled' | i18n}}\n \n \"\"\n {{'twoFactorDuoIntegrationKey' | i18n}}: {{ikey}}\n
\n {{'twoFactorDuoSecretKey' | i18n}}: {{skey}}\n
\n {{'twoFactorDuoApiHostname' | i18n}}: {{host}}\n
\n \n \"\"\n

{{'twoFactorDuoDesc' | i18n}}

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n","
\n
\n
\n
\n

\n {{'twoStepLogin' | i18n}}\n {{'emailTitle' | i18n}}\n

\n \n
\n \n \n
\n
\n \n \n {{'twoStepLoginProviderEnabled' | i18n}}\n \n {{'email' | i18n}}: {{email}}\n \n \n

\n {{'twoFactorEmailDesc' | i18n}}\n \"\"\n

\n
\n \n \n
\n
\n \n \n {{'verificationCodeEmailSent' | i18n : sentEmail}}\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n","
\n
\n
\n
\n

{{'twoStepOptions' | i18n}}

\n \n
\n \n
\n \n
\n
\n
\n
\n","
\n
\n
\n
\n

\n {{'twoStepLogin' | i18n}}\n {{'recoveryCodeTitle' | i18n}}\n

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

{{'twoFactorRecoveryYourCode' | i18n}}:

\n {{code}}\n
\n \n {{'twoFactorRecoveryNoCode' | i18n}}\n \n
\n
\n \n \n
\n
\n
\n
\n
\n","
\n
\n
\n
\n

\n {{'twoStepLogin' | i18n}}\n FIDO U2F\n

\n \n
\n \n \n
\n
\n \n {{'twoStepLoginProviderEnabled' | i18n}}\n \n \n

{{'twoFactorU2fWarning' | i18n}}

\n
    \n
  • {{'twoFactorU2fSupportWeb' | i18n}}
  • \n
\n
\n \"\"\n
    \n
  • \n \n {{'u2fkeyX' | i18n : i + 1}}\n {{k.name}}\n \n \n \n {{'keyCompromised' | i18n}}\n \n \n \n {{'enabled' | i18n}}\n \n \n 1 && k.configured\">\n \n -\n {{'remove' | i18n}}\n \n
  • \n
\n
\n

{{'twoFactorU2fAdd' | i18n}}:

\n
    \n
  1. {{'twoFactorU2fGiveName' | i18n}}
  2. \n
  3. {{'twoFactorU2fPlugInReadKey' | i18n}}
  4. \n
  5. {{'twoFactorU2fTouchButton' | i18n}}
  6. \n
  7. {{'twoFactorU2fSaveForm' | i18n}}
  8. \n
\n
\n
\n \n \n
\n
\n \n \n \n \n \n \n \n {{'twoFactorU2fWaiting' | i18n}}...\n \n \n \n {{'twoFactorU2fClickSave' | i18n}}\n \n \n \n {{'twoFactorU2fProblemReadingTryAgain' | i18n}}\n \n \n
\n
\n \n \n \n
\n
\n
\n
\n
\n","
\n
\n
\n
\n

\n {{'twoStepLogin' | i18n}}\n YubiKey\n

\n \n
\n \n \n
\n
\n \n {{'twoStepLoginProviderEnabled' | i18n}}\n \n \n

{{'twoFactorYubikeyWarning' | i18n}}

\n
    \n
  • {{'twoFactorYubikeySupportUsb' | i18n}}
  • \n
  • {{'twoFactorYubikeySupportMobile' | i18n}}
  • \n
\n
\n \"\"\n

{{'twoFactorYubikeyAdd' | i18n}}:

\n
    \n
  1. {{'twoFactorYubikeyPlugIn' | i18n}}
  2. \n
  3. {{'twoFactorYubikeySelectKey' | i18n}}
  4. \n
  5. {{'twoFactorYubikeyTouchButton' | i18n}}
  6. \n
  7. {{'twoFactorYubikeySaveForm' | i18n}}
  8. \n
\n
\n
\n
\n \n \n
\n {{k.existingKey}}\n \n
\n
\n
\n {{'nfcSupport' | i18n}}\n
\n \n \n
\n {{'twoFactorYubikeySupportsNfcDesc' | i18n}}\n
\n
\n \n \n \n
\n
\n
\n
\n
\n","
\n
\n
\n
\n

{{'updateEncryptionKey' | i18n}}

\n \n
\n
\n

{{'updateEncryptionKeyShortDesc' | i18n}} {{'updateEncryptionKeyDesc' | i18n}}\n {{'learnMore' | i18n}}\n

\n {{'updateEncryptionKeyWarning' | i18n}}\n \n \n
\n
\n \n \n
\n
\n
\n
\n","\n\n","import {\n APP_INITIALIZER,\n LOCALE_ID,\n NgModule,\n} from '@angular/core';\n\nimport { ToasterModule } from 'angular2-toaster';\n\nimport { BroadcasterMessagingService } from '../../services/broadcasterMessaging.service';\nimport { HtmlStorageService } from '../../services/htmlStorage.service';\nimport { I18nService } from '../../services/i18n.service';\nimport { MemoryStorageService } from '../../services/memoryStorage.service';\nimport { WebPlatformUtilsService } from '../../services/webPlatformUtils.service';\n\nimport { EventService } from './event.service';\nimport { OrganizationGuardService } from './organization-guard.service';\nimport { OrganizationTypeGuardService } from './organization-type-guard.service';\nimport { RouterService } from './router.service';\nimport { UnauthGuardService } from './unauth-guard.service';\n\nimport { AuthGuardService } from 'jslib/angular/services/auth-guard.service';\nimport { BroadcasterService } from 'jslib/angular/services/broadcaster.service';\nimport { ValidationService } from 'jslib/angular/services/validation.service';\n\nimport { Analytics } from 'jslib/misc/analytics';\n\nimport { ApiService } from 'jslib/services/api.service';\nimport { AppIdService } from 'jslib/services/appId.service';\nimport { AuditService } from 'jslib/services/audit.service';\nimport { AuthService } from 'jslib/services/auth.service';\nimport { CipherService } from 'jslib/services/cipher.service';\nimport { CollectionService } from 'jslib/services/collection.service';\nimport { ConstantsService } from 'jslib/services/constants.service';\nimport { ContainerService } from 'jslib/services/container.service';\nimport { CryptoService } from 'jslib/services/crypto.service';\nimport { EnvironmentService } from 'jslib/services/environment.service';\nimport { EventService as EventLoggingService } from 'jslib/services/event.service';\nimport { ExportService } from 'jslib/services/export.service';\nimport { FolderService } from 'jslib/services/folder.service';\nimport { ImportService } from 'jslib/services/import.service';\nimport { NotificationsService } from 'jslib/services/notifications.service';\nimport { PasswordGenerationService } from 'jslib/services/passwordGeneration.service';\nimport { PolicyService } from 'jslib/services/policy.service';\nimport { SearchService } from 'jslib/services/search.service';\nimport { SettingsService } from 'jslib/services/settings.service';\nimport { StateService } from 'jslib/services/state.service';\nimport { SyncService } from 'jslib/services/sync.service';\nimport { TokenService } from 'jslib/services/token.service';\nimport { TotpService } from 'jslib/services/totp.service';\nimport { UserService } from 'jslib/services/user.service';\nimport { VaultTimeoutService } from 'jslib/services/vaultTimeout.service';\nimport { WebCryptoFunctionService } from 'jslib/services/webCryptoFunction.service';\n\nimport { ApiService as ApiServiceAbstraction } from 'jslib/abstractions/api.service';\nimport { AppIdService as AppIdServiceAbstraction } from 'jslib/abstractions/appId.service';\nimport { AuditService as AuditServiceAbstraction } from 'jslib/abstractions/audit.service';\nimport { AuthService as AuthServiceAbstraction } from 'jslib/abstractions/auth.service';\nimport { CipherService as CipherServiceAbstraction } from 'jslib/abstractions/cipher.service';\nimport { CollectionService as CollectionServiceAbstraction } from 'jslib/abstractions/collection.service';\nimport { CryptoService as CryptoServiceAbstraction } from 'jslib/abstractions/crypto.service';\nimport { CryptoFunctionService as CryptoFunctionServiceAbstraction } from 'jslib/abstractions/cryptoFunction.service';\nimport { EnvironmentService as EnvironmentServiceAbstraction } from 'jslib/abstractions/environment.service';\nimport { EventService as EventLoggingServiceAbstraction } from 'jslib/abstractions/event.service';\nimport { ExportService as ExportServiceAbstraction } from 'jslib/abstractions/export.service';\nimport { FolderService as FolderServiceAbstraction } from 'jslib/abstractions/folder.service';\nimport { I18nService as I18nServiceAbstraction } from 'jslib/abstractions/i18n.service';\nimport { ImportService as ImportServiceAbstraction } from 'jslib/abstractions/import.service';\nimport { LogService as LogServiceAbstraction } from 'jslib/abstractions/log.service';\nimport { MessagingService as MessagingServiceAbstraction } from 'jslib/abstractions/messaging.service';\nimport { NotificationsService as NotificationsServiceAbstraction } from 'jslib/abstractions/notifications.service';\nimport {\n PasswordGenerationService as PasswordGenerationServiceAbstraction,\n} from 'jslib/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService as PlatformUtilsServiceAbstraction } from 'jslib/abstractions/platformUtils.service';\nimport { PolicyService as PolicyServiceAbstraction } from 'jslib/abstractions/policy.service';\nimport { SearchService as SearchServiceAbstraction } from 'jslib/abstractions/search.service';\nimport { SettingsService as SettingsServiceAbstraction } from 'jslib/abstractions/settings.service';\nimport { StateService as StateServiceAbstraction } from 'jslib/abstractions/state.service';\nimport { StorageService as StorageServiceAbstraction } from 'jslib/abstractions/storage.service';\nimport { SyncService as SyncServiceAbstraction } from 'jslib/abstractions/sync.service';\nimport { TokenService as TokenServiceAbstraction } from 'jslib/abstractions/token.service';\nimport { TotpService as TotpServiceAbstraction } from 'jslib/abstractions/totp.service';\nimport { UserService as UserServiceAbstraction } from 'jslib/abstractions/user.service';\nimport { VaultTimeoutService as VaultTimeoutServiceAbstraction } from 'jslib/abstractions/vaultTimeout.service';\n\nconst i18nService = new I18nService(window.navigator.language, 'locales');\nconst stateService = new StateService();\nconst broadcasterService = new BroadcasterService();\nconst messagingService = new BroadcasterMessagingService(broadcasterService);\nconst platformUtilsService = new WebPlatformUtilsService(i18nService, messagingService);\nconst storageService: StorageServiceAbstraction = new HtmlStorageService(platformUtilsService);\nconst secureStorageService: StorageServiceAbstraction = new MemoryStorageService();\nconst cryptoFunctionService: CryptoFunctionServiceAbstraction = new WebCryptoFunctionService(window,\n platformUtilsService);\nconst cryptoService = new CryptoService(storageService,\n platformUtilsService.isDev() ? storageService : secureStorageService, cryptoFunctionService);\nconst tokenService = new TokenService(storageService);\nconst appIdService = new AppIdService(storageService);\nconst apiService = new ApiService(tokenService, platformUtilsService,\n async (expired: boolean) => messagingService.send('logout', { expired: expired }));\nconst userService = new UserService(tokenService, storageService);\nconst settingsService = new SettingsService(userService, storageService);\nexport let searchService: SearchService = null;\nconst cipherService = new CipherService(cryptoService, userService, settingsService,\n apiService, storageService, i18nService, () => searchService);\nconst folderService = new FolderService(cryptoService, userService, apiService, storageService,\n i18nService, cipherService);\nconst collectionService = new CollectionService(cryptoService, userService, storageService, i18nService);\nsearchService = new SearchService(cipherService, platformUtilsService);\nconst policyService = new PolicyService(userService, storageService);\nconst vaultTimeoutService = new VaultTimeoutService(cipherService, folderService, collectionService,\n cryptoService, platformUtilsService, storageService, messagingService, searchService, userService, tokenService,\n null, async () => messagingService.send('logout', { expired: false }));\nconst syncService = new SyncService(userService, apiService, settingsService,\n folderService, cipherService, cryptoService, collectionService, storageService, messagingService, policyService,\n async (expired: boolean) => messagingService.send('logout', { expired: expired }));\nconst passwordGenerationService = new PasswordGenerationService(cryptoService, storageService, policyService);\nconst totpService = new TotpService(storageService, cryptoFunctionService);\nconst containerService = new ContainerService(cryptoService);\nconst authService = new AuthService(cryptoService, apiService,\n userService, tokenService, appIdService, i18nService, platformUtilsService, messagingService);\nconst exportService = new ExportService(folderService, cipherService, apiService);\nconst importService = new ImportService(cipherService, folderService, apiService, i18nService, collectionService);\nconst notificationsService = new NotificationsService(userService, syncService, appIdService,\n apiService, vaultTimeoutService, async () => messagingService.send('logout', { expired: true }));\nconst environmentService = new EnvironmentService(apiService, storageService, notificationsService);\nconst auditService = new AuditService(cryptoFunctionService, apiService);\nconst eventLoggingService = new EventLoggingService(storageService, apiService, userService, cipherService);\n\nconst analytics = new Analytics(window, () => platformUtilsService.isDev() || platformUtilsService.isSelfHost() || true,\n platformUtilsService, storageService, appIdService);\ncontainerService.attachToWindow(window);\n\nexport function initFactory(): Function {\n function getBaseUrl() {\n // If the base URL is `https://bitwarden.example.com/base/path/`,\n // `window.location.href` should have one of the following forms:\n //\n // - `https://bitwarden.example.com/base/path/`\n // - `https://bitwarden.example.com/base/path/#/some/endpoint[?queryParam=...]`\n //\n // We want to get to just `https://bitwarden.example.com/base/path`.\n let baseUrl = window.location.href;\n baseUrl = baseUrl.replace(/#.*/, ''); // Strip off `#` and everything after.\n baseUrl = baseUrl.replace(/\\/+$/, ''); // Trim any trailing `/` chars.\n return baseUrl;\n }\n return async () => {\n await (storageService as HtmlStorageService).init();\n const isDev = false;\n environmentService.baseUrl = getBaseUrl();\n environmentService.notificationsUrl = environmentService.baseUrl + '/notifications';\n apiService.setUrls({\n base: isDev ? null : environmentService.baseUrl,\n api: isDev ? 'http://localhost:4000' : null,\n identity: isDev ? 'http://localhost:33656' : null,\n events: isDev ? 'http://localhost:46273' : null,\n\n // Uncomment these (and comment out the above) if you want to target production\n // servers for local development.\n\n // base: null,\n // api: 'https://api.bitwarden.com',\n // identity: 'https://identity.bitwarden.com',\n // events: 'https://events.bitwarden.com',\n });\n setTimeout(() => notificationsService.init(environmentService), 3000);\n\n vaultTimeoutService.init(true);\n const locale = await storageService.get(ConstantsService.localeKey);\n await i18nService.init(locale);\n eventLoggingService.init(true);\n authService.init();\n const htmlEl = window.document.documentElement;\n htmlEl.classList.add('locale_' + i18nService.translationLocale);\n let theme = await storageService.get(ConstantsService.themeKey);\n if (theme == null) {\n theme = 'light';\n }\n htmlEl.classList.add('theme_' + theme);\n stateService.save(ConstantsService.disableFaviconKey,\n await storageService.get(ConstantsService.disableFaviconKey));\n stateService.save('enableGravatars', await storageService.get('enableGravatars'));\n };\n}\n\n@NgModule({\n imports: [\n ToasterModule,\n ],\n declarations: [],\n providers: [\n ValidationService,\n AuthGuardService,\n OrganizationGuardService,\n OrganizationTypeGuardService,\n UnauthGuardService,\n RouterService,\n EventService,\n { provide: AuditServiceAbstraction, useValue: auditService },\n { provide: AuthServiceAbstraction, useValue: authService },\n { provide: CipherServiceAbstraction, useValue: cipherService },\n { provide: FolderServiceAbstraction, useValue: folderService },\n { provide: CollectionServiceAbstraction, useValue: collectionService },\n { provide: EnvironmentServiceAbstraction, useValue: environmentService },\n { provide: TotpServiceAbstraction, useValue: totpService },\n { provide: TokenServiceAbstraction, useValue: tokenService },\n { provide: I18nServiceAbstraction, useValue: i18nService },\n { provide: CryptoServiceAbstraction, useValue: cryptoService },\n { provide: PlatformUtilsServiceAbstraction, useValue: platformUtilsService },\n { provide: PasswordGenerationServiceAbstraction, useValue: passwordGenerationService },\n { provide: ApiServiceAbstraction, useValue: apiService },\n { provide: SyncServiceAbstraction, useValue: syncService },\n { provide: UserServiceAbstraction, useValue: userService },\n { provide: MessagingServiceAbstraction, useValue: messagingService },\n { provide: BroadcasterService, useValue: broadcasterService },\n { provide: SettingsServiceAbstraction, useValue: settingsService },\n { provide: VaultTimeoutServiceAbstraction, useValue: vaultTimeoutService },\n { provide: StorageServiceAbstraction, useValue: storageService },\n { provide: StateServiceAbstraction, useValue: stateService },\n { provide: ExportServiceAbstraction, useValue: exportService },\n { provide: SearchServiceAbstraction, useValue: searchService },\n { provide: ImportServiceAbstraction, useValue: importService },\n { provide: NotificationsServiceAbstraction, useValue: notificationsService },\n { provide: CryptoFunctionServiceAbstraction, useValue: cryptoFunctionService },\n { provide: EventLoggingServiceAbstraction, useValue: eventLoggingService },\n { provide: PolicyServiceAbstraction, useValue: policyService },\n {\n provide: APP_INITIALIZER,\n useFactory: initFactory,\n deps: [],\n multi: true,\n },\n {\n provide: LOCALE_ID,\n useFactory: () => i18nService.translationLocale,\n deps: [],\n },\n ],\n})\nexport class ServicesModule {\n}\n","import { MessagingService } from 'jslib/abstractions/messaging.service';\n\nimport { BroadcasterService } from 'jslib/angular/services/broadcaster.service';\n\nexport class BroadcasterMessagingService implements MessagingService {\n constructor(private broadcasterService: BroadcasterService) { }\n\n send(subscriber: string, arg: any = {}) {\n const message = Object.assign({}, { command: subscriber }, arg);\n this.broadcasterService.send(message);\n }\n}\n","import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\nimport { StorageService } from 'jslib/abstractions/storage.service';\nimport { ConstantsService } from 'jslib/services';\n\nexport class HtmlStorageService implements StorageService {\n private localStorageKeys = new Set(['appId', 'anonymousAppId', 'rememberedEmail', 'passwordGenerationOptions',\n ConstantsService.disableFaviconKey, 'rememberEmail', 'enableGravatars', ConstantsService.localeKey,\n ConstantsService.autoConfirmFingerprints, ConstantsService.vaultTimeoutKey,\n ConstantsService.vaultTimeoutActionKey]);\n private localStorageStartsWithKeys = ['twoFactorToken_', ConstantsService.collapsedGroupingsKey + '_'];\n\n constructor(private platformUtilsService: PlatformUtilsService) { }\n\n async init() {\n // LockOption -> VaultTimeout (uses the same legacy string value for backwards compat)\n const vaultTimeout = await this.get(ConstantsService.vaultTimeoutKey);\n if (vaultTimeout == null && !this.platformUtilsService.isDev()) {\n await this.save(ConstantsService.vaultTimeoutKey, 15);\n }\n\n // Default Action to lock\n const vaultTimeoutAction = await this.get(ConstantsService.vaultTimeoutActionKey);\n if (vaultTimeoutAction == null) {\n await this.save(ConstantsService.vaultTimeoutActionKey, 'lock');\n }\n }\n\n get(key: string): Promise {\n let json: string = null;\n if (this.isLocalStorage(key)) {\n json = window.localStorage.getItem(key);\n } else {\n json = window.sessionStorage.getItem(key);\n }\n if (json != null) {\n const obj = JSON.parse(json);\n return Promise.resolve(obj as T);\n }\n return Promise.resolve(null);\n }\n\n save(key: string, obj: any): Promise {\n if (obj == null) {\n return this.remove(key);\n }\n\n const json = JSON.stringify(obj);\n if (this.isLocalStorage(key)) {\n window.localStorage.setItem(key, json);\n } else {\n window.sessionStorage.setItem(key, json);\n }\n return Promise.resolve();\n }\n\n remove(key: string): Promise {\n if (this.isLocalStorage(key)) {\n window.localStorage.removeItem(key);\n } else {\n window.sessionStorage.removeItem(key);\n }\n return Promise.resolve();\n }\n\n private isLocalStorage(key: string): boolean {\n if (this.localStorageKeys.has(key)) {\n return true;\n }\n for (const swKey of this.localStorageStartsWithKeys) {\n if (key.startsWith(swKey)) {\n return true;\n }\n }\n return false;\n }\n}\n","export { ApiService } from './api.service';\nexport { AppIdService } from './appId.service';\nexport { AuditService } from './audit.service';\nexport { AuthService } from './auth.service';\nexport { CipherService } from './cipher.service';\nexport { CollectionService } from './collection.service';\nexport { ConstantsService } from './constants.service';\nexport { ContainerService } from './container.service';\nexport { CryptoService } from './crypto.service';\nexport { EnvironmentService } from './environment.service';\nexport { FolderService } from './folder.service';\nexport { I18nService } from './i18n.service';\nexport { PasswordGenerationService } from './passwordGeneration.service';\nexport { SettingsService } from './settings.service';\nexport { StateService } from './state.service';\nexport { SyncService } from './sync.service';\nexport { TokenService } from './token.service';\nexport { TotpService } from './totp.service';\nexport { UserService } from './user.service';\nexport { VaultTimeoutService } from './vaultTimeout.service';\n","import { BaseResponse } from './baseResponse';\n\nexport class ApiKeyResponse extends BaseResponse {\n apiKey: string;\n\n constructor(response: any) {\n super(response);\n this.apiKey = this.getResponseProperty('ApiKey');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { PaymentMethodType } from '../../enums/paymentMethodType';\nimport { TransactionType } from '../../enums/transactionType';\n\nexport class BillingResponse extends BaseResponse {\n balance: number;\n paymentSource: BillingSourceResponse;\n invoices: BillingInvoiceResponse[] = [];\n transactions: BillingTransactionResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.balance = this.getResponseProperty('Balance');\n const paymentSource = this.getResponseProperty('PaymentSource');\n const transactions = this.getResponseProperty('Transactions');\n const invoices = this.getResponseProperty('Invoices');\n this.paymentSource = paymentSource == null ? null : new BillingSourceResponse(paymentSource);\n if (transactions != null) {\n this.transactions = transactions.map((t: any) => new BillingTransactionResponse(t));\n }\n if (invoices != null) {\n this.invoices = invoices.map((i: any) => new BillingInvoiceResponse(i));\n }\n }\n}\n\nexport class BillingSourceResponse extends BaseResponse {\n type: PaymentMethodType;\n cardBrand: string;\n description: string;\n needsVerification: boolean;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty('Type');\n this.cardBrand = this.getResponseProperty('CardBrand');\n this.description = this.getResponseProperty('Description');\n this.needsVerification = this.getResponseProperty('NeedsVerification');\n }\n}\n\nexport class BillingInvoiceResponse extends BaseResponse {\n url: string;\n pdfUrl: string;\n number: string;\n paid: boolean;\n date: string;\n amount: number;\n\n constructor(response: any) {\n super(response);\n this.url = this.getResponseProperty('Url');\n this.pdfUrl = this.getResponseProperty('PdfUrl');\n this.number = this.getResponseProperty('Number');\n this.paid = this.getResponseProperty('Paid');\n this.date = this.getResponseProperty('Date');\n this.amount = this.getResponseProperty('Amount');\n }\n}\n\nexport class BillingTransactionResponse extends BaseResponse {\n createdDate: string;\n amount: number;\n refunded: boolean;\n partiallyRefunded: boolean;\n refundedAmount: number;\n type: TransactionType;\n paymentMethodType: PaymentMethodType;\n details: string;\n\n constructor(response: any) {\n super(response);\n this.createdDate = this.getResponseProperty('CreatedDate');\n this.amount = this.getResponseProperty('Amount');\n this.refunded = this.getResponseProperty('Refunded');\n this.partiallyRefunded = this.getResponseProperty('PartiallyRefunded');\n this.refundedAmount = this.getResponseProperty('RefundedAmount');\n this.type = this.getResponseProperty('Type');\n this.paymentMethodType = this.getResponseProperty('PaymentMethodType');\n this.details = this.getResponseProperty('Details');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class BreachAccountResponse extends BaseResponse {\n addedDate: string;\n breachDate: string;\n dataClasses: string[];\n description: string;\n domain: string;\n isActive: boolean;\n isVerified: boolean;\n logoPath: string;\n modifiedDate: string;\n name: string;\n pwnCount: number;\n title: string;\n\n constructor(response: any) {\n super(response);\n this.addedDate = this.getResponseProperty('AddedDate');\n this.breachDate = this.getResponseProperty('BreachDate');\n this.dataClasses = this.getResponseProperty('DataClasses');\n this.description = this.getResponseProperty('Description');\n this.domain = this.getResponseProperty('Domain');\n this.isActive = this.getResponseProperty('IsActive');\n this.isVerified = this.getResponseProperty('IsVerified');\n this.logoPath = this.getResponseProperty('LogoPath');\n this.modifiedDate = this.getResponseProperty('ModifiedDate');\n this.name = this.getResponseProperty('Name');\n this.pwnCount = this.getResponseProperty('PwnCount');\n this.title = this.getResponseProperty('Title');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class AttachmentResponse extends BaseResponse {\n id: string;\n url: string;\n fileName: string;\n key: string;\n size: string;\n sizeName: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.url = this.getResponseProperty('Url');\n this.fileName = this.getResponseProperty('FileName');\n this.key = this.getResponseProperty('Key');\n this.size = this.getResponseProperty('Size');\n this.sizeName = this.getResponseProperty('SizeName');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class PasswordHistoryResponse extends BaseResponse {\n password: string;\n lastUsedDate: string;\n\n constructor(response: any) {\n super(response);\n this.password = this.getResponseProperty('Password');\n this.lastUsedDate = this.getResponseProperty('LastUsedDate');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class GlobalDomainResponse extends BaseResponse {\n type: number;\n domains: string[];\n excluded: boolean;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty('Type');\n this.domains = this.getResponseProperty('Domains');\n this.excluded = this.getResponseProperty('Excluded');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class ErrorResponse extends BaseResponse {\n message: string;\n validationErrors: { [key: string]: string[]; };\n statusCode: number;\n\n constructor(response: any, status: number, identityResponse?: boolean) {\n super(response);\n let errorModel = null;\n if (response != null) {\n const responseErrorModel = this.getResponseProperty('ErrorModel');\n if (responseErrorModel && identityResponse) {\n errorModel = responseErrorModel;\n } else {\n errorModel = response;\n }\n }\n\n if (errorModel) {\n this.message = this.getResponseProperty('Message', errorModel);\n this.validationErrors = this.getResponseProperty('ValidationErrors', errorModel);\n } else {\n if (status === 429) {\n this.message = 'Rate limit exceeded. Try again later.';\n }\n }\n this.statusCode = status;\n }\n\n getSingleMessage(): string {\n if (this.validationErrors == null) {\n return this.message;\n }\n for (const key in this.validationErrors) {\n if (!this.validationErrors.hasOwnProperty(key)) {\n continue;\n }\n if (this.validationErrors[key].length) {\n return this.validationErrors[key][0];\n }\n }\n return this.message;\n }\n\n getAllMessages(): string[] {\n const messages: string[] = [];\n if (this.validationErrors == null) {\n return messages;\n }\n for (const key in this.validationErrors) {\n if (!this.validationErrors.hasOwnProperty(key)) {\n continue;\n }\n this.validationErrors[key].forEach((item: string) => {\n let prefix = '';\n if (key.indexOf('[') > -1 && key.indexOf(']') > -1) {\n const lastSep = key.lastIndexOf('.');\n prefix = key.substr(0, lastSep > -1 ? lastSep : key.length) + ': ';\n }\n messages.push(prefix + item);\n });\n }\n return messages;\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { DeviceType } from '../../enums/deviceType';\nimport { EventType } from '../../enums/eventType';\n\nexport class EventResponse extends BaseResponse {\n type: EventType;\n userId: string;\n organizationId: string;\n cipherId: string;\n collectionId: string;\n groupId: string;\n organizationUserId: string;\n actingUserId: string;\n date: string;\n deviceType: DeviceType;\n ipAddress: string;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty('Type');\n this.userId = this.getResponseProperty('UserId');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.cipherId = this.getResponseProperty('CipherId');\n this.collectionId = this.getResponseProperty('CollectionId');\n this.groupId = this.getResponseProperty('GroupId');\n this.organizationUserId = this.getResponseProperty('OrganizationUserId');\n this.actingUserId = this.getResponseProperty('ActingUserId');\n this.date = this.getResponseProperty('Date');\n this.deviceType = this.getResponseProperty('DeviceType');\n this.ipAddress = this.getResponseProperty('IpAddress');\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { SelectionReadOnlyResponse } from './selectionReadOnlyResponse';\n\nexport class GroupResponse extends BaseResponse {\n id: string;\n organizationId: string;\n name: string;\n accessAll: boolean;\n externalId: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.name = this.getResponseProperty('Name');\n this.accessAll = this.getResponseProperty('AccessAll');\n this.externalId = this.getResponseProperty('ExternalId');\n }\n}\n\nexport class GroupDetailsResponse extends GroupResponse {\n collections: SelectionReadOnlyResponse[] = [];\n\n constructor(response: any) {\n super(response);\n const collections = this.getResponseProperty('Collections');\n if (collections != null) {\n this.collections = collections.map((c: any) => new SelectionReadOnlyResponse(c));\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class IdentityTokenResponse extends BaseResponse {\n accessToken: string;\n expiresIn: number;\n refreshToken: string;\n tokenType: string;\n\n privateKey: string;\n key: string;\n twoFactorToken: string;\n\n constructor(response: any) {\n super(response);\n this.accessToken = response.access_token;\n this.expiresIn = response.expires_in;\n this.refreshToken = response.refresh_token;\n this.tokenType = response.token_type;\n\n this.privateKey = this.getResponseProperty('PrivateKey');\n this.key = this.getResponseProperty('Key');\n this.twoFactorToken = this.getResponseProperty('TwoFactorToken');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nexport class IdentityTwoFactorResponse extends BaseResponse {\n twoFactorProviders: TwoFactorProviderType[];\n twoFactorProviders2 = new Map();\n\n constructor(response: any) {\n super(response);\n this.twoFactorProviders = this.getResponseProperty('TwoFactorProviders');\n const twoFactorProviders2 = this.getResponseProperty('TwoFactorProviders2');\n if (twoFactorProviders2 != null) {\n for (const prop in twoFactorProviders2) {\n if (twoFactorProviders2.hasOwnProperty(prop)) {\n this.twoFactorProviders2.set(parseInt(prop, null), twoFactorProviders2[prop]);\n }\n }\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class ListResponse extends BaseResponse {\n data: T[];\n continuationToken: string;\n\n constructor(response: any, t: new (dataResponse: any) => T) {\n super(response);\n const data = this.getResponseProperty('Data');\n this.data = data == null ? [] : data.map((dr: any) => new t(dr));\n this.continuationToken = this.getResponseProperty('ContinuationToken');\n }\n}\n","import { OrganizationResponse } from './organizationResponse';\nimport {\n BillingSubscriptionResponse,\n BillingSubscriptionUpcomingInvoiceResponse,\n} from './subscriptionResponse';\n\nexport class OrganizationSubscriptionResponse extends OrganizationResponse {\n storageName: string;\n storageGb: number;\n subscription: BillingSubscriptionResponse;\n upcomingInvoice: BillingSubscriptionUpcomingInvoiceResponse;\n expiration: string;\n\n constructor(response: any) {\n super(response);\n this.storageName = this.getResponseProperty('StorageName');\n this.storageGb = this.getResponseProperty('StorageGb');\n const subscription = this.getResponseProperty('Subscription');\n this.subscription = subscription == null ? null : new BillingSubscriptionResponse(subscription);\n const upcomingInvoice = this.getResponseProperty('UpcomingInvoice');\n this.upcomingInvoice = upcomingInvoice == null ? null :\n new BillingSubscriptionUpcomingInvoiceResponse(upcomingInvoice);\n this.expiration = this.getResponseProperty('Expiration');\n }\n}\n","import { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\nimport { OrganizationUserType } from '../../enums/organizationUserType';\n\nimport { BaseResponse } from './baseResponse';\nimport { SelectionReadOnlyResponse } from './selectionReadOnlyResponse';\n\nexport class OrganizationUserResponse extends BaseResponse {\n id: string;\n userId: string;\n type: OrganizationUserType;\n status: OrganizationUserStatusType;\n accessAll: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.userId = this.getResponseProperty('UserId');\n this.type = this.getResponseProperty('Type');\n this.status = this.getResponseProperty('Status');\n this.accessAll = this.getResponseProperty('AccessAll');\n }\n}\n\nexport class OrganizationUserUserDetailsResponse extends OrganizationUserResponse {\n name: string;\n email: string;\n twoFactorEnabled: boolean;\n\n constructor(response: any) {\n super(response);\n this.name = this.getResponseProperty('Name');\n this.email = this.getResponseProperty('Email');\n this.twoFactorEnabled = this.getResponseProperty('TwoFactorEnabled');\n }\n}\n\nexport class OrganizationUserDetailsResponse extends OrganizationUserResponse {\n collections: SelectionReadOnlyResponse[] = [];\n\n constructor(response: any) {\n super(response);\n const collections = this.getResponseProperty('Collections');\n if (collections != null) {\n this.collections = collections.map((c: any) => new SelectionReadOnlyResponse(c));\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { ProfileResponse } from './profileResponse';\n\nexport class PaymentResponse extends BaseResponse {\n userProfile: ProfileResponse;\n paymentIntentClientSecret: string;\n success: boolean;\n\n constructor(response: any) {\n super(response);\n const userProfile = this.getResponseProperty('UserProfile');\n if (userProfile != null) {\n this.userProfile = new ProfileResponse(userProfile);\n }\n this.paymentIntentClientSecret = this.getResponseProperty('PaymentIntentClientSecret');\n this.success = this.getResponseProperty('Success');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\nimport { OrganizationUserType } from '../../enums/organizationUserType';\n\nexport class ProfileOrganizationResponse extends BaseResponse {\n id: string;\n name: string;\n usePolicies: boolean;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n selfHost: boolean;\n usersGetPremium: boolean;\n seats: number;\n maxCollections: number;\n maxStorageGb?: number;\n key: string;\n status: OrganizationUserStatusType;\n type: OrganizationUserType;\n enabled: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.name = this.getResponseProperty('Name');\n this.usePolicies = this.getResponseProperty('UsePolicies');\n this.useGroups = this.getResponseProperty('UseGroups');\n this.useDirectory = this.getResponseProperty('UseDirectory');\n this.useEvents = this.getResponseProperty('UseEvents');\n this.useTotp = this.getResponseProperty('UseTotp');\n this.use2fa = this.getResponseProperty('Use2fa');\n this.useApi = this.getResponseProperty('UseApi');\n this.selfHost = this.getResponseProperty('SelfHost');\n this.usersGetPremium = this.getResponseProperty('UsersGetPremium');\n this.seats = this.getResponseProperty('Seats');\n this.maxCollections = this.getResponseProperty('MaxCollections');\n this.maxStorageGb = this.getResponseProperty('MaxStorageGb');\n this.key = this.getResponseProperty('Key');\n this.status = this.getResponseProperty('Status');\n this.type = this.getResponseProperty('Type');\n this.enabled = this.getResponseProperty('Enabled');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { KdfType } from '../../enums/kdfType';\n\nexport class PreloginResponse extends BaseResponse {\n kdf: KdfType;\n kdfIterations: number;\n\n constructor(response: any) {\n super(response);\n this.kdf = this.getResponseProperty('Kdf');\n this.kdfIterations = this.getResponseProperty('KdfIterations');\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { CipherResponse } from './cipherResponse';\nimport { CollectionDetailsResponse } from './collectionResponse';\nimport { DomainsResponse } from './domainsResponse';\nimport { FolderResponse } from './folderResponse';\nimport { PolicyResponse } from './policyResponse';\nimport { ProfileResponse } from './profileResponse';\n\nexport class SyncResponse extends BaseResponse {\n profile?: ProfileResponse;\n folders: FolderResponse[] = [];\n collections: CollectionDetailsResponse[] = [];\n ciphers: CipherResponse[] = [];\n domains?: DomainsResponse;\n policies?: PolicyResponse[] = [];\n\n constructor(response: any) {\n super(response);\n\n const profile = this.getResponseProperty('Profile');\n if (profile != null) {\n this.profile = new ProfileResponse(profile);\n }\n\n const folders = this.getResponseProperty('Folders');\n if (folders != null) {\n this.folders = folders.map((f: any) => new FolderResponse(f));\n }\n\n const collections = this.getResponseProperty('Collections');\n if (collections != null) {\n this.collections = collections.map((c: any) => new CollectionDetailsResponse(c));\n }\n\n const ciphers = this.getResponseProperty('Ciphers');\n if (ciphers != null) {\n this.ciphers = ciphers.map((c: any) => new CipherResponse(c));\n }\n\n const domains = this.getResponseProperty('Domains');\n if (domains != null) {\n this.domains = new DomainsResponse(domains);\n }\n\n const policies = this.getResponseProperty('Policies');\n if (policies != null) {\n this.policies = policies.map((p: any) => new PolicyResponse(p));\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorAuthenticatorResponse extends BaseResponse {\n enabled: boolean;\n key: string;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n this.key = this.getResponseProperty('Key');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorDuoResponse extends BaseResponse {\n enabled: boolean;\n host: string;\n secretKey: string;\n integrationKey: string;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n this.host = this.getResponseProperty('Host');\n this.secretKey = this.getResponseProperty('SecretKey');\n this.integrationKey = this.getResponseProperty('IntegrationKey');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorEmailResponse extends BaseResponse {\n enabled: boolean;\n email: string;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n this.email = this.getResponseProperty('Email');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nexport class TwoFactorProviderResponse extends BaseResponse {\n enabled: boolean;\n type: TwoFactorProviderType;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n this.type = this.getResponseProperty('Type');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorRecoverResponse extends BaseResponse {\n code: string;\n\n constructor(response: any) {\n super(response);\n this.code = this.getResponseProperty('Code');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorU2fResponse extends BaseResponse {\n enabled: boolean;\n keys: KeyResponse[];\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n const keys = this.getResponseProperty('Keys');\n this.keys = keys == null ? null : keys.map((k: any) => new KeyResponse(k));\n }\n}\n\nexport class KeyResponse extends BaseResponse {\n name: string;\n id: number;\n compromised: boolean;\n\n constructor(response: any) {\n super(response);\n this.name = this.getResponseProperty('Name');\n this.id = this.getResponseProperty('Id');\n this.compromised = this.getResponseProperty('Compromised');\n }\n}\n\nexport class ChallengeResponse extends BaseResponse {\n userId: string;\n appId: string;\n challenge: string;\n version: string;\n\n constructor(response: any) {\n super(response);\n this.userId = this.getResponseProperty('UserId');\n this.appId = this.getResponseProperty('AppId');\n this.challenge = this.getResponseProperty('Challenge');\n this.version = this.getResponseProperty('Version');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorYubiKeyResponse extends BaseResponse {\n enabled: boolean;\n key1: string;\n key2: string;\n key3: string;\n key4: string;\n key5: string;\n nfc: boolean;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n this.key1 = this.getResponseProperty('Key1');\n this.key2 = this.getResponseProperty('Key2');\n this.key3 = this.getResponseProperty('Key3');\n this.key4 = this.getResponseProperty('Key4');\n this.key5 = this.getResponseProperty('Key5');\n this.nfc = this.getResponseProperty('Nfc');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class UserKeyResponse extends BaseResponse {\n userId: string;\n publicKey: string;\n\n constructor(response: any) {\n super(response);\n this.userId = this.getResponseProperty('UserId');\n this.publicKey = this.getResponseProperty('PublicKey');\n }\n}\n","/**\n * Use as a Decorator on async functions, it will limit how many times the function can be\n * in-flight at a time.\n *\n * Calls beyond the limit will be queued, and run when one of the active calls finishes\n */\nexport function throttle(limit: number, throttleKey: (args: any[]) => string) {\n return (target: any, propertyKey: string | symbol,\n descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise>) => {\n const originalMethod: () => Promise = descriptor.value;\n const allThrottles = new Map void>>>();\n\n const getThrottles = (obj: any) => {\n let throttles = allThrottles.get(obj);\n if (throttles != null) {\n return throttles;\n }\n throttles = new Map void>>();\n allThrottles.set(obj, throttles);\n return throttles;\n };\n\n return {\n value: function(...args: any[]) {\n const throttles = getThrottles(this);\n const argsThrottleKey = throttleKey(args);\n let queue = throttles.get(argsThrottleKey);\n if (queue == null) {\n queue = [];\n throttles.set(argsThrottleKey, queue);\n }\n\n return new Promise((resolve, reject) => {\n const exec = () => {\n const onFinally = () => {\n queue.splice(queue.indexOf(exec), 1);\n if (queue.length >= limit) {\n queue[limit - 1]();\n } else if (queue.length === 0) {\n throttles.delete(argsThrottleKey);\n if (throttles.size === 0) {\n allThrottles.delete(this);\n }\n }\n };\n originalMethod.apply(this, args).then((val: any) => {\n onFinally();\n return val;\n }).catch((err: any) => {\n onFinally();\n throw err;\n }).then(resolve, reject);\n };\n queue.push(exec);\n if (queue.length <= limit) {\n exec();\n }\n });\n },\n };\n };\n}\n","export class CipherBulkDeleteRequest {\n ids: string[];\n\n constructor(ids: string[]) {\n this.ids = ids == null ? [] : ids;\n }\n}\n","export class CipherBulkMoveRequest {\n ids: string[];\n folderId: string;\n\n constructor(ids: string[], folderId: string) {\n this.ids = ids == null ? [] : ids;\n this.folderId = folderId;\n }\n}\n","export class CipherBulkRestoreRequest {\n ids: string[];\n\n constructor(ids: string[]) {\n this.ids = ids == null ? [] : ids;\n }\n}\n","import { CipherWithIdRequest } from './cipherWithIdRequest';\n\nimport { Cipher } from '../domain/cipher';\n\nexport class CipherBulkShareRequest {\n ciphers: CipherWithIdRequest[];\n collectionIds: string[];\n\n constructor(ciphers: Cipher[], collectionIds: string[]) {\n if (ciphers != null) {\n this.ciphers = [];\n ciphers.forEach((c) => {\n this.ciphers.push(new CipherWithIdRequest(c));\n });\n }\n this.collectionIds = collectionIds;\n }\n}\n","import { CipherRequest } from './cipherRequest';\n\nimport { Cipher } from '../domain/cipher';\n\nexport class CipherShareRequest {\n cipher: CipherRequest;\n collectionIds: string[];\n\n constructor(cipher: Cipher) {\n this.cipher = new CipherRequest(cipher);\n this.collectionIds = cipher.collectionIds;\n }\n}\n","export class TreeNode {\n parent: T;\n node: T;\n children: Array> = [];\n\n constructor(node: T, name: string, parent: T) {\n this.parent = parent;\n this.node = node;\n this.node.name = name;\n }\n}\n\nexport interface ITreeNodeObject {\n id: string;\n name: string;\n}\n","import { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class EncryptedObject {\n iv: ArrayBuffer;\n data: ArrayBuffer;\n mac: ArrayBuffer;\n key: SymmetricCryptoKey;\n}\n","export class EnvironmentUrls {\n base: string;\n api: string;\n identity: string;\n events: string;\n}\n","import { FolderData } from '../data/folderData';\n\nimport { FolderView } from '../view/folderView';\n\nimport { CipherString } from './cipherString';\nimport Domain from './domainBase';\n\nexport class Folder extends Domain {\n id: string;\n name: CipherString;\n revisionDate: Date;\n\n constructor(obj?: FolderData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n id: null,\n name: null,\n }, alreadyEncrypted, ['id']);\n\n this.revisionDate = obj.revisionDate != null ? new Date(obj.revisionDate) : null;\n }\n\n decrypt(): Promise {\n return this.decryptObj(new FolderView(this), {\n name: null,\n }, null);\n }\n}\n","export class GeneratedPasswordHistory {\n password: string;\n date: number;\n\n constructor(password: string, date: number) {\n this.password = password;\n this.date = date;\n }\n}\n","import Domain from './domainBase';\n\nexport class PasswordGeneratorPolicyOptions extends Domain {\n defaultType: string = '';\n minLength: number = 0;\n useUppercase: boolean = false;\n useLowercase: boolean = false;\n useNumbers: boolean = false;\n numberCount: number = 0;\n useSpecial: boolean = false;\n specialCount: number = 0;\n minNumberWords: number = 0;\n capitalize: boolean = false;\n includeNumber: boolean = false;\n\n inEffect() {\n return this.defaultType !== '' ||\n this.minLength > 0 ||\n this.numberCount > 0 ||\n this.specialCount > 0 ||\n this.useUppercase ||\n this.useLowercase ||\n this.useNumbers ||\n this.useSpecial ||\n this.minNumberWords > 0 ||\n this.capitalize ||\n this.includeNumber;\n }\n}\n","import { ProfileOrganizationResponse } from '../response/profileOrganizationResponse';\n\nimport { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\nimport { OrganizationUserType } from '../../enums/organizationUserType';\n\nexport class OrganizationData {\n id: string;\n name: string;\n status: OrganizationUserStatusType;\n type: OrganizationUserType;\n enabled: boolean;\n usePolicies: boolean;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n selfHost: boolean;\n usersGetPremium: boolean;\n seats: number;\n maxCollections: number;\n maxStorageGb?: number;\n\n constructor(response: ProfileOrganizationResponse) {\n this.id = response.id;\n this.name = response.name;\n this.status = response.status;\n this.type = response.type;\n this.enabled = response.enabled;\n this.usePolicies = response.usePolicies;\n this.useGroups = response.useGroups;\n this.useDirectory = response.useDirectory;\n this.useEvents = response.useEvents;\n this.useTotp = response.useTotp;\n this.use2fa = response.use2fa;\n this.useApi = response.useApi;\n this.selfHost = response.selfHost;\n this.usersGetPremium = response.usersGetPremium;\n this.seats = response.seats;\n this.maxCollections = response.maxCollections;\n this.maxStorageGb = response.maxStorageGb;\n }\n}\n","import { OrganizationData } from '../data/organizationData';\n\nimport { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\nimport { OrganizationUserType } from '../../enums/organizationUserType';\n\nexport class Organization {\n id: string;\n name: string;\n status: OrganizationUserStatusType;\n type: OrganizationUserType;\n enabled: boolean;\n usePolicies: boolean;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n selfHost: boolean;\n usersGetPremium: boolean;\n seats: number;\n maxCollections: number;\n maxStorageGb?: number;\n\n constructor(obj?: OrganizationData) {\n if (obj == null) {\n return;\n }\n\n this.id = obj.id;\n this.name = obj.name;\n this.status = obj.status;\n this.type = obj.type;\n this.enabled = obj.enabled;\n this.usePolicies = obj.usePolicies;\n this.useGroups = obj.useGroups;\n this.useDirectory = obj.useDirectory;\n this.useEvents = obj.useEvents;\n this.useTotp = obj.useTotp;\n this.use2fa = obj.use2fa;\n this.useApi = obj.useApi;\n this.selfHost = obj.selfHost;\n this.usersGetPremium = obj.usersGetPremium;\n this.seats = obj.seats;\n this.maxCollections = obj.maxCollections;\n this.maxStorageGb = obj.maxStorageGb;\n }\n\n get canAccess() {\n if (this.type === OrganizationUserType.Owner) {\n return true;\n }\n return this.enabled && this.status === OrganizationUserStatusType.Confirmed;\n }\n\n get isManager() {\n return this.type === OrganizationUserType.Manager || this.type === OrganizationUserType.Owner ||\n this.type === OrganizationUserType.Admin;\n }\n\n get isAdmin() {\n return this.type === OrganizationUserType.Owner || this.type === OrganizationUserType.Admin;\n }\n\n get isOwner() {\n return this.type === OrganizationUserType.Owner;\n }\n}\n","import { I18nService as BaseI18nService } from 'jslib/services/i18n.service';\n\nexport class I18nService extends BaseI18nService {\n constructor(systemLanguage: string, localesDirectory: string) {\n super(systemLanguage || 'en-US', localesDirectory, async (formattedLocale: string) => {\n const filePath = this.localesDirectory + '/' + formattedLocale + '/messages.json?cache=' +\n process.env.CACHE_TAG;\n const localesResult = await fetch(filePath);\n const locales = await localesResult.json();\n return locales;\n });\n\n this.supportedTranslationLocales = [\n 'en', 'ca', 'cs', 'da', 'de', 'en-GB', 'es', 'et', 'fr', 'he', 'it', 'ja', 'ko', 'nb', 'nl', 'pl',\n 'pt-PT', 'pt-BR', 'ru', 'sk', 'sv', 'uk', 'zh-CN', 'zh-TW',\n ];\n }\n}\n","import { StorageService } from 'jslib/abstractions/storage.service';\n\nexport class MemoryStorageService implements StorageService {\n private store = new Map();\n\n get(key: string): Promise {\n if (this.store.has(key)) {\n const obj = this.store.get(key);\n return Promise.resolve(obj as T);\n }\n return Promise.resolve(null);\n }\n\n save(key: string, obj: any): Promise {\n if (obj == null) {\n return this.remove(key);\n }\n this.store.set(key, obj);\n return Promise.resolve();\n }\n\n remove(key: string): Promise {\n this.store.delete(key);\n return Promise.resolve();\n }\n}\n","import Swal, { SweetAlertIcon } from 'sweetalert2/src/sweetalert2.js';\n\nimport { DeviceType } from 'jslib/enums/deviceType';\n\nimport { I18nService } from 'jslib/abstractions/i18n.service';\nimport { MessagingService } from 'jslib/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service';\n\nimport { Utils } from 'jslib/misc/utils';\n\nexport class WebPlatformUtilsService implements PlatformUtilsService {\n identityClientId: string = 'web';\n\n private browserCache: DeviceType = null;\n\n constructor(private i18nService: I18nService, private messagingService: MessagingService) { }\n\n getDevice(): DeviceType {\n if (this.browserCache != null) {\n return this.browserCache;\n }\n\n if (navigator.userAgent.indexOf(' Firefox/') !== -1 || navigator.userAgent.indexOf(' Gecko/') !== -1) {\n this.browserCache = DeviceType.FirefoxBrowser;\n } else if (navigator.userAgent.indexOf(' OPR/') >= 0) {\n this.browserCache = DeviceType.OperaBrowser;\n } else if (navigator.userAgent.indexOf(' Edge/') !== -1) {\n this.browserCache = DeviceType.EdgeBrowser;\n } else if (navigator.userAgent.indexOf(' Vivaldi/') !== -1) {\n this.browserCache = DeviceType.VivaldiBrowser;\n } else if (navigator.userAgent.indexOf(' Safari/') !== -1 && navigator.userAgent.indexOf('Chrome') === -1) {\n this.browserCache = DeviceType.SafariBrowser;\n } else if ((window as any).chrome && navigator.userAgent.indexOf(' Chrome/') !== -1) {\n this.browserCache = DeviceType.ChromeBrowser;\n } else if (navigator.userAgent.indexOf(' Trident/') !== -1) {\n this.browserCache = DeviceType.IEBrowser;\n } else {\n this.browserCache = DeviceType.UnknownBrowser;\n }\n\n return this.browserCache;\n }\n\n getDeviceString(): string {\n const device = DeviceType[this.getDevice()].toLowerCase();\n return device.replace('browser', '');\n }\n\n isFirefox(): boolean {\n return this.getDevice() === DeviceType.FirefoxBrowser;\n }\n\n isChrome(): boolean {\n return this.getDevice() === DeviceType.ChromeBrowser;\n }\n\n isEdge(): boolean {\n return this.getDevice() === DeviceType.EdgeBrowser;\n }\n\n isOpera(): boolean {\n return this.getDevice() === DeviceType.OperaBrowser;\n }\n\n isVivaldi(): boolean {\n return this.getDevice() === DeviceType.VivaldiBrowser;\n }\n\n isSafari(): boolean {\n return this.getDevice() === DeviceType.SafariBrowser;\n }\n\n isIE(): boolean {\n return this.getDevice() === DeviceType.IEBrowser;\n }\n\n isMacAppStore(): boolean {\n return false;\n }\n\n analyticsId(): string {\n return 'UA-81915606-3';\n }\n\n isViewOpen(): Promise {\n return Promise.resolve(false);\n }\n\n lockTimeout(): number {\n return null;\n }\n\n launchUri(uri: string, options?: any): void {\n const a = document.createElement('a');\n a.href = uri;\n a.target = '_blank';\n a.rel = 'noreferrer noopener';\n a.classList.add('d-none');\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n }\n\n saveFile(win: Window, blobData: any, blobOptions: any, fileName: string): void {\n let blob: Blob = null;\n let type: string = null;\n const fileNameLower = fileName.toLowerCase();\n let doDownload = true;\n if (fileNameLower.endsWith('.pdf')) {\n type = 'application/pdf';\n doDownload = false;\n } else if (fileNameLower.endsWith('.xlsx')) {\n type = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n } else if (fileNameLower.endsWith('.docx')) {\n type = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n } else if (fileNameLower.endsWith('.pptx')) {\n type = 'application/vnd.openxmlformats-officedocument.presentationml.presentation';\n } else if (fileNameLower.endsWith('.csv')) {\n type = 'text/csv';\n } else if (fileNameLower.endsWith('.png')) {\n type = 'image/png';\n } else if (fileNameLower.endsWith('.jpg') || fileNameLower.endsWith('.jpeg')) {\n type = 'image/jpeg';\n } else if (fileNameLower.endsWith('.gif')) {\n type = 'image/gif';\n }\n if (type != null) {\n blobOptions = blobOptions || {};\n if (blobOptions.type == null) {\n blobOptions.type = type;\n }\n }\n if (blobOptions != null && !this.isIE()) {\n blob = new Blob([blobData], blobOptions);\n } else {\n blob = new Blob([blobData]);\n }\n if (navigator.msSaveOrOpenBlob) {\n navigator.msSaveBlob(blob, fileName);\n } else {\n const a = win.document.createElement('a');\n if (doDownload) {\n a.download = fileName;\n } else {\n a.target = '_blank';\n }\n a.href = win.URL.createObjectURL(blob);\n a.style.position = 'fixed';\n win.document.body.appendChild(a);\n a.click();\n win.document.body.removeChild(a);\n }\n }\n\n getApplicationVersion(): string {\n return process.env.APPLICATION_VERSION || '-';\n }\n\n supportsU2f(win: Window): boolean {\n if (win != null && (win as any).u2f != null) {\n return true;\n }\n return this.isChrome() || ((this.isOpera() || this.isVivaldi()) && !Utils.isMobileBrowser);\n }\n\n supportsDuo(): boolean {\n return true;\n }\n\n showToast(type: 'error' | 'success' | 'warning' | 'info', title: string, text: string | string[],\n options?: any): void {\n this.messagingService.send('showToast', {\n text: text,\n title: title,\n type: type,\n options: options,\n });\n }\n\n async showDialog(text: string, title?: string, confirmText?: string, cancelText?: string, type?: string) {\n let iconClasses: string = null;\n if (type != null) {\n // If you add custom types to this part, the type to SweetAlertIcon cast below needs to be changed.\n switch (type) {\n case 'success':\n iconClasses = 'fa-check text-success';\n break;\n case 'warning':\n iconClasses = 'fa-warning text-warning';\n break;\n case 'error':\n iconClasses = 'fa-bolt text-danger';\n break;\n case 'info':\n iconClasses = 'fa-info-circle text-info';\n break;\n default:\n break;\n }\n }\n\n const iconHtmlStr = iconClasses != null ? `` : undefined;\n const confirmed = await Swal.fire({\n heightAuto: false,\n buttonsStyling: false,\n icon: type as SweetAlertIcon, // required to be any of the SweetAlertIcons to output the iconHtml.\n iconHtml: iconHtmlStr,\n text: text,\n title: title,\n showCancelButton: (cancelText != null),\n cancelButtonText: cancelText,\n showConfirmButton: true,\n confirmButtonText: confirmText == null ? this.i18nService.t('ok') : confirmText,\n });\n\n return confirmed.value;\n }\n\n eventTrack(action: string, label?: string, options?: any) {\n this.messagingService.send('analyticsEventTrack', {\n action: action,\n label: label,\n options: options,\n });\n }\n\n isDev(): boolean {\n return process.env.ENV === 'development';\n }\n\n isSelfHost(): boolean {\n return process.env.SELF_HOST.toString() === 'true';\n }\n\n copyToClipboard(text: string, options?: any): void {\n let win = window;\n let doc = window.document;\n if (options && (options.window || options.win)) {\n win = options.window || options.win;\n doc = win.document;\n } else if (options && options.doc) {\n doc = options.doc;\n }\n if ((win as any).clipboardData && (win as any).clipboardData.setData) {\n // IE specific code path to prevent textarea being shown while dialog is visible.\n (win as any).clipboardData.setData('Text', text);\n } else if (doc.queryCommandSupported && doc.queryCommandSupported('copy')) {\n const textarea = doc.createElement('textarea');\n textarea.textContent = text;\n // Prevent scrolling to bottom of page in MS Edge.\n textarea.style.position = 'fixed';\n let copyEl = doc.body;\n // For some reason copy command won't work when modal is open if appending to body\n if (doc.body.classList.contains('modal-open')) {\n copyEl = doc.body.querySelector('.modal');\n }\n copyEl.appendChild(textarea);\n textarea.select();\n try {\n // Security exception may be thrown by some browsers.\n doc.execCommand('copy');\n } catch (e) {\n // tslint:disable-next-line\n console.warn('Copy to clipboard failed.', e);\n } finally {\n copyEl.removeChild(textarea);\n }\n }\n }\n\n readFromClipboard(options?: any): Promise {\n throw new Error('Cannot read from clipboard on web.');\n }\n}\n","import { AppIdService } from '../abstractions/appId.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\nimport { StorageService } from '../abstractions/storage.service';\n\nimport { ConstantsService } from '../services/constants.service';\n\nimport { DeviceType } from '../enums/deviceType';\n\nconst GaObj = 'ga';\n\nexport const AnalyticsIds = {\n [DeviceType.ChromeExtension]: 'UA-81915606-6',\n [DeviceType.FirefoxExtension]: 'UA-81915606-7',\n [DeviceType.OperaExtension]: 'UA-81915606-8',\n [DeviceType.EdgeExtension]: 'UA-81915606-9',\n [DeviceType.VivaldiExtension]: 'UA-81915606-15',\n [DeviceType.SafariExtension]: 'UA-81915606-16',\n [DeviceType.WindowsDesktop]: 'UA-81915606-17',\n [DeviceType.LinuxDesktop]: 'UA-81915606-19',\n [DeviceType.MacOsDesktop]: 'UA-81915606-18',\n};\n\nexport class Analytics {\n private gaTrackingId: string = null;\n private defaultDisabled = false;\n private appVersion: string;\n\n constructor(win: Window, private gaFilter?: () => boolean,\n private platformUtilsService?: PlatformUtilsService, private storageService?: StorageService,\n private appIdService?: AppIdService, private dependencyResolver?: () => any) {\n if (dependencyResolver != null) {\n const deps = dependencyResolver();\n if (platformUtilsService == null && deps.platformUtilsService) {\n this.platformUtilsService = deps.platformUtilsService as PlatformUtilsService;\n }\n if (storageService == null && deps.storageService) {\n this.storageService = deps.storageService as StorageService;\n }\n if (appIdService == null && deps.appIdService) {\n this.appIdService = deps.appIdService as AppIdService;\n }\n }\n\n this.appVersion = this.platformUtilsService.getApplicationVersion();\n this.defaultDisabled = this.platformUtilsService.getDevice() === DeviceType.FirefoxExtension ||\n this.platformUtilsService.isMacAppStore();\n this.gaTrackingId = this.platformUtilsService.analyticsId();\n\n (win as any).GoogleAnalyticsObject = GaObj;\n (win as any)[GaObj] = async (action: string, param1: any, param2?: any) => {\n await this.ga(action, param1, param2);\n };\n }\n\n async ga(action: string, param1: any, param2?: any) {\n return;\n\n if (this.gaFilter != null && this.gaFilter()) {\n return;\n }\n\n const disabled = await this.storageService.get(ConstantsService.disableGaKey);\n if ((this.defaultDisabled && disabled == null) || disabled != null && disabled) {\n return;\n }\n\n if (action !== 'send' || !param1) {\n return;\n }\n\n const gaAnonAppId = await this.appIdService.getAnonymousAppId();\n const version = encodeURIComponent(this.appVersion);\n let message = 'v=1&tid=' + this.gaTrackingId + '&cid=' + gaAnonAppId + '&cd1=' + version;\n\n if (param1 === 'pageview' && param2) {\n message += this.gaTrackPageView(param2);\n } else if (typeof param1 === 'object' && param1.hitType === 'pageview') {\n message += this.gaTrackPageView(param1.page);\n } else if (param1 === 'event' && param2) {\n message += this.gaTrackEvent(param2);\n } else if (typeof param1 === 'object' && param1.hitType === 'event') {\n message += this.gaTrackEvent(param1);\n }\n\n const request = new XMLHttpRequest();\n request.open('POST', 'https://www.google-analytics.com/collect', true);\n request.send(message);\n }\n\n private gaTrackEvent(options: any) {\n return '&t=event&ec=' + (options.eventCategory ? encodeURIComponent(options.eventCategory) : 'Event') +\n '&ea=' + encodeURIComponent(options.eventAction) +\n (options.eventLabel ? '&el=' + encodeURIComponent(options.eventLabel) : '') +\n (options.eventValue ? '&ev=' + encodeURIComponent(options.eventValue) : '') +\n (options.page ? '&dp=' + this.cleanPagePath(options.page) : '');\n }\n\n private gaTrackPageView(pagePath: string) {\n return '&t=pageview&dp=' + this.cleanPagePath(pagePath);\n }\n\n private cleanPagePath(pagePath: string) {\n const paramIndex = pagePath.indexOf('?');\n if (paramIndex > -1) {\n pagePath = pagePath.substring(0, paramIndex);\n }\n if (pagePath.indexOf('!/') === 0 || pagePath.indexOf('#/') === 0) {\n pagePath = pagePath.substring(1);\n }\n const pathParts = pagePath.split('/');\n const newPathParts: string[] = [];\n pathParts.forEach((p) => {\n if (p.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i)) {\n newPathParts.push('__guid__');\n } else {\n newPathParts.push(p);\n }\n });\n return encodeURIComponent(newPathParts.join('/'));\n }\n}\n","import { EventType } from '../enums/eventType';\n\nimport { EventData } from '../models/data/eventData';\n\nimport { EventRequest } from '../models/request/eventRequest';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { CipherService } from '../abstractions/cipher.service';\nimport { EventService as EventServiceAbstraction } from '../abstractions/event.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { ConstantsService } from './constants.service';\n\nexport class EventService implements EventServiceAbstraction {\n private inited = false;\n\n constructor(private storageService: StorageService, private apiService: ApiService,\n private userService: UserService, private cipherService: CipherService) { }\n\n init(checkOnInterval: boolean) {\n if (this.inited) {\n return;\n }\n\n this.inited = true;\n if (checkOnInterval) {\n this.uploadEvents();\n setInterval(() => this.uploadEvents(), 60 * 1000); // check every 60 seconds\n }\n }\n\n async collect(eventType: EventType, cipherId: string = null, uploadImmediately = false): Promise {\n const authed = await this.userService.isAuthenticated();\n if (!authed) {\n return;\n }\n const organizations = await this.userService.getAllOrganizations();\n if (organizations == null) {\n return;\n }\n const orgIds = new Set(organizations.filter((o) => o.useEvents).map((o) => o.id));\n if (orgIds.size === 0) {\n return;\n }\n if (cipherId != null) {\n const cipher = await this.cipherService.get(cipherId);\n if (cipher == null || cipher.organizationId == null || !orgIds.has(cipher.organizationId)) {\n return;\n }\n }\n let eventCollection = await this.storageService.get(ConstantsService.eventCollectionKey);\n if (eventCollection == null) {\n eventCollection = [];\n }\n const event = new EventData();\n event.type = eventType;\n event.cipherId = cipherId;\n event.date = new Date().toISOString();\n eventCollection.push(event);\n await this.storageService.save(ConstantsService.eventCollectionKey, eventCollection);\n if (uploadImmediately) {\n await this.uploadEvents();\n }\n }\n\n async uploadEvents(): Promise {\n const authed = await this.userService.isAuthenticated();\n if (!authed) {\n return;\n }\n const eventCollection = await this.storageService.get(ConstantsService.eventCollectionKey);\n if (eventCollection == null || eventCollection.length === 0) {\n return;\n }\n const request = eventCollection.map((e) => {\n const req = new EventRequest();\n req.type = e.type;\n req.cipherId = e.cipherId;\n req.date = e.date;\n return req;\n });\n try {\n await this.apiService.postEventsCollect(request);\n this.clearEvents();\n } catch { }\n }\n\n async clearEvents(): Promise {\n await this.storageService.remove(ConstantsService.eventCollectionKey);\n }\n}\n","import { EventType } from '../../enums/eventType';\n\nexport class EventData {\n type: EventType;\n cipherId: string;\n date: string;\n}\n","import { EventType } from '../../enums/eventType';\n\nexport class EventRequest {\n type: EventType;\n cipherId: string;\n date: string;\n}\n","import * as papa from 'papaparse';\n\nimport { CipherType } from '../enums/cipherType';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { CipherService } from '../abstractions/cipher.service';\nimport { ExportService as ExportServiceAbstraction } from '../abstractions/export.service';\nimport { FolderService } from '../abstractions/folder.service';\n\nimport { CipherView } from '../models/view/cipherView';\nimport { CollectionView } from '../models/view/collectionView';\nimport { FolderView } from '../models/view/folderView';\n\nimport { Cipher } from '../models/domain/cipher';\nimport { Collection } from '../models/domain/collection';\n\nimport { CipherData } from '../models/data/cipherData';\nimport { CollectionData } from '../models/data/collectionData';\nimport { CollectionDetailsResponse } from '../models/response/collectionResponse';\n\nimport { CipherWithIds as CipherExport } from '../models/export/cipherWithIds';\nimport { CollectionWithId as CollectionExport } from '../models/export/collectionWithId';\nimport { FolderWithId as FolderExport } from '../models/export/folderWithId';\n\nexport class ExportService implements ExportServiceAbstraction {\n constructor(private folderService: FolderService, private cipherService: CipherService,\n private apiService: ApiService) { }\n\n async getExport(format: 'csv' | 'json' = 'csv'): Promise {\n let decFolders: FolderView[] = [];\n let decCiphers: CipherView[] = [];\n const promises = [];\n\n promises.push(this.folderService.getAllDecrypted().then((folders) => {\n decFolders = folders;\n }));\n\n promises.push(this.cipherService.getAllDecrypted().then((ciphers) => {\n decCiphers = ciphers;\n }));\n\n await Promise.all(promises);\n\n if (format === 'csv') {\n const foldersMap = new Map();\n decFolders.forEach((f) => {\n if (f.id != null) {\n foldersMap.set(f.id, f);\n }\n });\n\n const exportCiphers: any[] = [];\n decCiphers.forEach((c) => {\n // only export logins and secure notes\n if (c.type !== CipherType.Login && c.type !== CipherType.SecureNote) {\n return;\n }\n if (c.organizationId != null) {\n return;\n }\n\n const cipher: any = {};\n cipher.folder = c.folderId != null && foldersMap.has(c.folderId) ?\n foldersMap.get(c.folderId).name : null;\n cipher.favorite = c.favorite ? 1 : null;\n this.buildCommonCipher(cipher, c);\n exportCiphers.push(cipher);\n });\n\n return papa.unparse(exportCiphers);\n } else {\n const jsonDoc: any = {\n folders: [],\n items: [],\n };\n\n decFolders.forEach((f) => {\n if (f.id == null) {\n return;\n }\n const folder = new FolderExport();\n folder.build(f);\n jsonDoc.folders.push(folder);\n });\n\n decCiphers.forEach((c) => {\n if (c.organizationId != null) {\n return;\n }\n const cipher = new CipherExport();\n cipher.build(c);\n cipher.collectionIds = null;\n jsonDoc.items.push(cipher);\n });\n\n return JSON.stringify(jsonDoc, null, ' ');\n }\n }\n\n async getOrganizationExport(organizationId: string, format: 'csv' | 'json' = 'csv'): Promise {\n const decCollections: CollectionView[] = [];\n const decCiphers: CipherView[] = [];\n const promises = [];\n\n promises.push(this.apiService.getCollections(organizationId).then((collections) => {\n const collectionPromises: any = [];\n if (collections != null && collections.data != null && collections.data.length > 0) {\n collections.data.forEach((c) => {\n const collection = new Collection(new CollectionData(c as CollectionDetailsResponse));\n collectionPromises.push(collection.decrypt().then((decCol) => {\n decCollections.push(decCol);\n }));\n });\n }\n return Promise.all(collectionPromises);\n }));\n\n promises.push(this.apiService.getCiphersOrganization(organizationId).then((ciphers) => {\n const cipherPromises: any = [];\n if (ciphers != null && ciphers.data != null && ciphers.data.length > 0) {\n ciphers.data.forEach((c) => {\n const cipher = new Cipher(new CipherData(c));\n cipherPromises.push(cipher.decrypt().then((decCipher) => {\n decCiphers.push(decCipher);\n }));\n });\n }\n return Promise.all(cipherPromises);\n }));\n\n await Promise.all(promises);\n\n if (format === 'csv') {\n const collectionsMap = new Map();\n decCollections.forEach((c) => {\n collectionsMap.set(c.id, c);\n });\n\n const exportCiphers: any[] = [];\n decCiphers.forEach((c) => {\n // only export logins and secure notes\n if (c.type !== CipherType.Login && c.type !== CipherType.SecureNote) {\n return;\n }\n\n const cipher: any = {};\n cipher.collections = [];\n if (c.collectionIds != null) {\n cipher.collections = c.collectionIds.filter((id) => collectionsMap.has(id))\n .map((id) => collectionsMap.get(id).name);\n }\n this.buildCommonCipher(cipher, c);\n exportCiphers.push(cipher);\n });\n\n return papa.unparse(exportCiphers);\n } else {\n const jsonDoc: any = {\n collections: [],\n items: [],\n };\n\n decCollections.forEach((c) => {\n const collection = new CollectionExport();\n collection.build(c);\n jsonDoc.collections.push(collection);\n });\n\n decCiphers.forEach((c) => {\n const cipher = new CipherExport();\n cipher.build(c);\n jsonDoc.items.push(cipher);\n });\n return JSON.stringify(jsonDoc, null, ' ');\n }\n }\n\n getFileName(prefix: string = null, extension: string = 'csv'): string {\n const now = new Date();\n const dateString =\n now.getFullYear() + '' + this.padNumber(now.getMonth() + 1, 2) + '' + this.padNumber(now.getDate(), 2) +\n this.padNumber(now.getHours(), 2) + '' + this.padNumber(now.getMinutes(), 2) +\n this.padNumber(now.getSeconds(), 2);\n\n return 'bitwarden' + (prefix ? ('_' + prefix) : '') + '_export_' + dateString + '.' + extension;\n }\n\n private padNumber(num: number, width: number, padCharacter: string = '0'): string {\n const numString = num.toString();\n return numString.length >= width ? numString :\n new Array(width - numString.length + 1).join(padCharacter) + numString;\n }\n\n private buildCommonCipher(cipher: any, c: CipherView) {\n cipher.type = null;\n cipher.name = c.name;\n cipher.notes = c.notes;\n cipher.fields = null;\n // Login props\n cipher.login_uri = null;\n cipher.login_username = null;\n cipher.login_password = null;\n cipher.login_totp = null;\n\n if (c.fields) {\n c.fields.forEach((f: any) => {\n if (!cipher.fields) {\n cipher.fields = '';\n } else {\n cipher.fields += '\\n';\n }\n\n cipher.fields += ((f.name || '') + ': ' + f.value);\n });\n }\n\n switch (c.type) {\n case CipherType.Login:\n cipher.type = 'login';\n cipher.login_username = c.login.username;\n cipher.login_password = c.login.password;\n cipher.login_totp = c.login.totp;\n\n if (c.login.uris) {\n cipher.login_uri = [];\n c.login.uris.forEach((u) => {\n cipher.login_uri.push(u.uri);\n });\n }\n break;\n case CipherType.SecureNote:\n cipher.type = 'note';\n break;\n default:\n return;\n }\n\n return cipher;\n }\n}\n","import { CipherType } from '../../enums/cipherType';\n\nimport { CipherView } from '../view/cipherView';\n\nimport { Card } from './card';\nimport { Field } from './field';\nimport { Identity } from './identity';\nimport { Login } from './login';\nimport { SecureNote } from './secureNote';\n\nexport class Cipher {\n static template(): Cipher {\n const req = new Cipher();\n req.organizationId = null;\n req.folderId = null;\n req.type = CipherType.Login;\n req.name = 'Item name';\n req.notes = 'Some notes about this item.';\n req.favorite = false;\n req.fields = [];\n req.login = null;\n req.secureNote = null;\n req.card = null;\n req.identity = null;\n return req;\n }\n\n static toView(req: Cipher, view = new CipherView()) {\n view.type = req.type;\n view.folderId = req.folderId;\n if (view.organizationId == null) {\n view.organizationId = req.organizationId;\n }\n view.name = req.name;\n view.notes = req.notes;\n view.favorite = req.favorite;\n\n if (req.fields != null) {\n view.fields = req.fields.map((f) => Field.toView(f));\n }\n\n switch (req.type) {\n case CipherType.Login:\n view.login = Login.toView(req.login);\n break;\n case CipherType.SecureNote:\n view.secureNote = SecureNote.toView(req.secureNote);\n break;\n case CipherType.Card:\n view.card = Card.toView(req.card);\n break;\n case CipherType.Identity:\n view.identity = Identity.toView(req.identity);\n break;\n }\n\n return view;\n }\n\n type: CipherType;\n folderId: string;\n organizationId: string;\n name: string;\n notes: string;\n favorite: boolean;\n fields: Field[];\n login: Login;\n secureNote: SecureNote;\n card: Card;\n identity: Identity;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CipherView) {\n this.organizationId = o.organizationId;\n this.folderId = o.folderId;\n this.type = o.type;\n this.name = o.name;\n this.notes = o.notes;\n this.favorite = o.favorite;\n\n if (o.fields != null) {\n this.fields = o.fields.map((f) => new Field(f));\n }\n\n switch (o.type) {\n case CipherType.Login:\n this.login = new Login(o.login);\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNote(o.secureNote);\n break;\n case CipherType.Card:\n this.card = new Card(o.card);\n break;\n case CipherType.Identity:\n this.identity = new Identity(o.identity);\n break;\n }\n }\n}\n","import { CardView } from '../view/cardView';\n\nexport class Card {\n static template(): Card {\n const req = new Card();\n req.cardholderName = 'John Doe';\n req.brand = 'visa';\n req.number = '4242424242424242';\n req.expMonth = '04';\n req.expYear = '2023';\n req.code = '123';\n return req;\n }\n\n static toView(req: Card, view = new CardView()) {\n view.cardholderName = req.cardholderName;\n view.brand = req.brand;\n view.number = req.number;\n view.expMonth = req.expMonth;\n view.expYear = req.expYear;\n view.code = req.code;\n return view;\n }\n\n cardholderName: string;\n brand: string;\n number: string;\n expMonth: string;\n expYear: string;\n code: string;\n\n constructor(o?: CardView) {\n if (o == null) {\n return;\n }\n\n this.cardholderName = o.cardholderName;\n this.brand = o.brand;\n this.number = o.number;\n this.expMonth = o.expMonth;\n this.expYear = o.expYear;\n this.code = o.code;\n }\n}\n","import { FieldType } from '../../enums/fieldType';\n\nimport { FieldView } from '../view/fieldView';\n\nexport class Field {\n static template(): Field {\n const req = new Field();\n req.name = 'Field name';\n req.value = 'Some value';\n req.type = FieldType.Text;\n return req;\n }\n\n static toView(req: Field, view = new FieldView()) {\n view.type = req.type;\n view.value = req.value;\n view.name = req.name;\n return view;\n }\n\n name: string;\n value: string;\n type: FieldType;\n\n constructor(o?: FieldView) {\n if (o == null) {\n return;\n }\n\n this.name = o.name;\n this.value = o.value;\n this.type = o.type;\n }\n}\n","import { IdentityView } from '../view/identityView';\n\nexport class Identity {\n static template(): Identity {\n const req = new Identity();\n req.title = 'Mr';\n req.firstName = 'John';\n req.middleName = 'William';\n req.lastName = 'Doe';\n req.address1 = '123 Any St';\n req.address2 = 'Apt #123';\n req.address3 = null;\n req.city = 'New York';\n req.state = 'NY';\n req.postalCode = '10001';\n req.country = 'US';\n req.company = 'Acme Inc.';\n req.email = 'john@company.com';\n req.phone = '5555551234';\n req.ssn = '000-123-4567';\n req.username = 'jdoe';\n req.passportNumber = 'US-123456789';\n req.licenseNumber = 'D123-12-123-12333';\n return req;\n }\n\n static toView(req: Identity, view = new IdentityView()) {\n view.title = req.title;\n view.firstName = req.firstName;\n view.middleName = req.middleName;\n view.lastName = req.lastName;\n view.address1 = req.address1;\n view.address2 = req.address2;\n view.address3 = req.address3;\n view.city = req.city;\n view.state = req.state;\n view.postalCode = req.postalCode;\n view.country = req.country;\n view.company = req.company;\n view.email = req.email;\n view.phone = req.phone;\n view.ssn = req.ssn;\n view.username = req.username;\n view.passportNumber = req.passportNumber;\n view.licenseNumber = req.licenseNumber;\n return view;\n }\n\n title: string;\n firstName: string;\n middleName: string;\n lastName: string;\n address1: string;\n address2: string;\n address3: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n company: string;\n email: string;\n phone: string;\n ssn: string;\n username: string;\n passportNumber: string;\n licenseNumber: string;\n\n constructor(o?: IdentityView) {\n if (o == null) {\n return;\n }\n\n this.title = o.title;\n this.firstName = o.firstName;\n this.middleName = o.middleName;\n this.lastName = o.lastName;\n this.address1 = o.address1;\n this.address2 = o.address2;\n this.address3 = o.address3;\n this.city = o.city;\n this.state = o.state;\n this.postalCode = o.postalCode;\n this.country = o.country;\n this.company = o.company;\n this.email = o.email;\n this.phone = o.phone;\n this.ssn = o.ssn;\n this.username = o.username;\n this.passportNumber = o.passportNumber;\n this.licenseNumber = o.licenseNumber;\n }\n}\n","import { LoginUri } from './loginUri';\n\nimport { LoginView } from '../view/loginView';\n\nexport class Login {\n static template(): Login {\n const req = new Login();\n req.uris = [];\n req.username = 'jdoe';\n req.password = 'myp@ssword123';\n req.totp = 'JBSWY3DPEHPK3PXP';\n return req;\n }\n\n static toView(req: Login, view = new LoginView()) {\n if (req.uris != null) {\n view.uris = req.uris.map((u) => LoginUri.toView(u));\n }\n view.username = req.username;\n view.password = req.password;\n view.totp = req.totp;\n return view;\n }\n\n uris: LoginUri[];\n username: string;\n password: string;\n totp: string;\n\n constructor(o?: LoginView) {\n if (o == null) {\n return;\n }\n\n if (o.uris != null) {\n this.uris = o.uris.map((u) => new LoginUri(u));\n }\n\n this.username = o.username;\n this.password = o.password;\n this.totp = o.totp;\n }\n}\n","import { UriMatchType } from '../../enums/uriMatchType';\n\nimport { LoginUriView } from '../view/loginUriView';\n\nexport class LoginUri {\n static template(): LoginUri {\n const req = new LoginUri();\n req.uri = 'https://google.com';\n req.match = null;\n return req;\n }\n\n static toView(req: LoginUri, view = new LoginUriView()) {\n view.uri = req.uri;\n view.match = req.match;\n return view;\n }\n\n uri: string;\n match: UriMatchType = null;\n\n constructor(o?: LoginUriView) {\n if (o == null) {\n return;\n }\n\n this.uri = o.uri;\n this.match = o.match;\n }\n}\n","import { SecureNoteType } from '../../enums/secureNoteType';\n\nimport { SecureNoteView } from '../view/secureNoteView';\n\nexport class SecureNote {\n static template(): SecureNote {\n const req = new SecureNote();\n req.type = SecureNoteType.Generic;\n return req;\n }\n\n static toView(req: SecureNote, view = new SecureNoteView()) {\n view.type = req.type;\n return view;\n }\n\n type: SecureNoteType;\n\n constructor(o?: SecureNoteView) {\n if (o == null) {\n return;\n }\n\n this.type = o.type;\n }\n}\n","import { CollectionView } from '../view/collectionView';\n\nexport class Collection {\n static template(): Collection {\n const req = new Collection();\n req.organizationId = '00000000-0000-0000-0000-000000000000';\n req.name = 'Collection name';\n req.externalId = null;\n return req;\n }\n\n static toView(req: Collection, view = new CollectionView()) {\n view.name = req.name;\n view.externalId = req.externalId;\n if (view.organizationId == null) {\n view.organizationId = req.organizationId;\n }\n return view;\n }\n\n organizationId: string;\n name: string;\n externalId: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CollectionView) {\n this.organizationId = o.organizationId;\n this.name = o.name;\n this.externalId = o.externalId;\n }\n}\n","import { FolderView } from '../view/folderView';\n\nexport class Folder {\n static template(): Folder {\n const req = new Folder();\n req.name = 'Folder name';\n return req;\n }\n\n static toView(req: Folder, view = new FolderView()) {\n view.name = req.name;\n return view;\n }\n\n name: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: FolderView) {\n this.name = o.name;\n }\n}\n","import { ApiService } from '../abstractions/api.service';\nimport { CipherService } from '../abstractions/cipher.service';\nimport { CollectionService } from '../abstractions/collection.service';\nimport { FolderService } from '../abstractions/folder.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport {\n ImportOption,\n ImportService as ImportServiceAbstraction,\n} from '../abstractions/import.service';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherType } from '../enums/cipherType';\n\nimport { Utils } from '../misc/utils';\n\nimport { CipherRequest } from '../models/request/cipherRequest';\nimport { CollectionRequest } from '../models/request/collectionRequest';\nimport { FolderRequest } from '../models/request/folderRequest';\nimport { ImportCiphersRequest } from '../models/request/importCiphersRequest';\nimport { ImportOrganizationCiphersRequest } from '../models/request/importOrganizationCiphersRequest';\nimport { KvpRequest } from '../models/request/kvpRequest';\n\nimport { CipherView } from '../models/view/cipherView';\n\nimport { AscendoCsvImporter } from '../importers/ascendoCsvImporter';\nimport { AvastCsvImporter } from '../importers/avastCsvImporter';\nimport { AvastJsonImporter } from '../importers/avastJsonImporter';\nimport { AviraCsvImporter } from '../importers/aviraCsvImporter';\nimport { BitwardenCsvImporter } from '../importers/bitwardenCsvImporter';\nimport { BitwardenJsonImporter } from '../importers/bitwardenJsonImporter';\nimport { BlackBerryCsvImporter } from '../importers/blackBerryCsvImporter';\nimport { BlurCsvImporter } from '../importers/blurCsvImporter';\nimport { ButtercupCsvImporter } from '../importers/buttercupCsvImporter';\nimport { ChromeCsvImporter } from '../importers/chromeCsvImporter';\nimport { ClipperzHtmlImporter } from '../importers/clipperzHtmlImporter';\nimport { CodebookCsvImporter } from '../importers/codebookCsvImporter';\nimport { DashlaneJsonImporter } from '../importers/dashlaneJsonImporter';\nimport { EncryptrCsvImporter } from '../importers/encryptrCsvImporter';\nimport { EnpassCsvImporter } from '../importers/enpassCsvImporter';\nimport { EnpassJsonImporter } from '../importers/enpassJsonImporter';\nimport { FirefoxCsvImporter } from '../importers/firefoxCsvImporter';\nimport { FSecureFskImporter } from '../importers/fsecureFskImporter';\nimport { GnomeJsonImporter } from '../importers/gnomeJsonImporter';\nimport { Importer } from '../importers/importer';\nimport { KasperskyTxtImporter } from '../importers/kasperskyTxtImporter';\nimport { KeePass2XmlImporter } from '../importers/keepass2XmlImporter';\nimport { KeePassXCsvImporter } from '../importers/keepassxCsvImporter';\nimport { KeeperCsvImporter } from '../importers/keeperCsvImporter';\nimport { LastPassCsvImporter } from '../importers/lastpassCsvImporter';\nimport { LogMeOnceCsvImporter } from '../importers/logMeOnceCsvImporter';\nimport { MeldiumCsvImporter } from '../importers/meldiumCsvImporter';\nimport { MSecureCsvImporter } from '../importers/msecureCsvImporter';\nimport { MykiCsvImporter } from '../importers/mykiCsvImporter';\nimport { OnePassword1PifImporter } from '../importers/onepassword1PifImporter';\nimport { OnePasswordWinCsvImporter } from '../importers/onepasswordWinCsvImporter';\nimport { PadlockCsvImporter } from '../importers/padlockCsvImporter';\nimport { PassKeepCsvImporter } from '../importers/passkeepCsvImporter';\nimport { PassmanJsonImporter } from '../importers/passmanJsonImporter';\nimport { PasspackCsvImporter } from '../importers/passpackCsvImporter';\nimport { PasswordAgentCsvImporter } from '../importers/passwordAgentCsvImporter';\nimport { PasswordBossJsonImporter } from '../importers/passwordBossJsonImporter';\nimport { PasswordDragonXmlImporter } from '../importers/passwordDragonXmlImporter';\nimport { PasswordSafeXmlImporter } from '../importers/passwordSafeXmlImporter';\nimport { PasswordWalletTxtImporter } from '../importers/passwordWalletTxtImporter';\nimport { RememBearCsvImporter } from '../importers/rememBearCsvImporter';\nimport { RoboFormCsvImporter } from '../importers/roboformCsvImporter';\nimport { SafeInCloudXmlImporter } from '../importers/safeInCloudXmlImporter';\nimport { SaferPassCsvImporter } from '../importers/saferpassCsvImport';\nimport { SecureSafeCsvImporter } from '../importers/secureSafeCsvImporter';\nimport { SplashIdCsvImporter } from '../importers/splashIdCsvImporter';\nimport { StickyPasswordXmlImporter } from '../importers/stickyPasswordXmlImporter';\nimport { TrueKeyCsvImporter } from '../importers/truekeyCsvImporter';\nimport { UpmCsvImporter } from '../importers/upmCsvImporter';\nimport { ZohoVaultCsvImporter } from '../importers/zohoVaultCsvImporter';\n\nexport class ImportService implements ImportServiceAbstraction {\n featuredImportOptions = [\n { id: 'bitwardenjson', name: 'Bitwarden (json)' },\n { id: 'bitwardencsv', name: 'Bitwarden (csv)' },\n { id: 'lastpasscsv', name: 'LastPass (csv)' },\n { id: 'chromecsv', name: 'Chrome (csv)' },\n { id: 'firefoxcsv', name: 'Firefox (csv)' },\n { id: 'keepass2xml', name: 'KeePass 2 (xml)' },\n { id: '1password1pif', name: '1Password (1pif)' },\n { id: 'dashlanejson', name: 'Dashlane (json)' },\n ];\n\n regularImportOptions: ImportOption[] = [\n { id: 'keepassxcsv', name: 'KeePassX (csv)' },\n { id: '1passwordwincsv', name: '1Password 6 and 7 Windows (csv)' },\n { id: 'roboformcsv', name: 'RoboForm (csv)' },\n { id: 'keepercsv', name: 'Keeper (csv)' },\n { id: 'enpasscsv', name: 'Enpass (csv)' },\n { id: 'enpassjson', name: 'Enpass (json)' },\n { id: 'safeincloudxml', name: 'SafeInCloud (xml)' },\n { id: 'pwsafexml', name: 'Password Safe (xml)' },\n { id: 'stickypasswordxml', name: 'Sticky Password (xml)' },\n { id: 'msecurecsv', name: 'mSecure (csv)' },\n { id: 'truekeycsv', name: 'True Key (csv)' },\n { id: 'passwordbossjson', name: 'Password Boss (json)' },\n { id: 'zohovaultcsv', name: 'Zoho Vault (csv)' },\n { id: 'splashidcsv', name: 'SplashID (csv)' },\n { id: 'passworddragonxml', name: 'Password Dragon (xml)' },\n { id: 'padlockcsv', name: 'Padlock (csv)' },\n { id: 'passboltcsv', name: 'Passbolt (csv)' },\n { id: 'clipperzhtml', name: 'Clipperz (html)' },\n { id: 'aviracsv', name: 'Avira (csv)' },\n { id: 'saferpasscsv', name: 'SaferPass (csv)' },\n { id: 'upmcsv', name: 'Universal Password Manager (csv)' },\n { id: 'ascendocsv', name: 'Ascendo DataVault (csv)' },\n { id: 'meldiumcsv', name: 'Meldium (csv)' },\n { id: 'passkeepcsv', name: 'PassKeep (csv)' },\n { id: 'operacsv', name: 'Opera (csv)' },\n { id: 'vivaldicsv', name: 'Vivaldi (csv)' },\n { id: 'gnomejson', name: 'GNOME Passwords and Keys/Seahorse (json)' },\n { id: 'blurcsv', name: 'Blur (csv)' },\n { id: 'passwordagentcsv', name: 'Password Agent (csv)' },\n { id: 'passpackcsv', name: 'Passpack (csv)' },\n { id: 'passmanjson', name: 'Passman (json)' },\n { id: 'avastcsv', name: 'Avast Passwords (csv)' },\n { id: 'avastjson', name: 'Avast Passwords (json)' },\n { id: 'fsecurefsk', name: 'F-Secure KEY (fsk)' },\n { id: 'kasperskytxt', name: 'Kaspersky Password Manager (txt)' },\n { id: 'remembearcsv', name: 'RememBear (csv)' },\n { id: 'passwordwallettxt', name: 'PasswordWallet (txt)' },\n { id: 'mykicsv', name: 'Myki (csv)' },\n { id: 'securesafecsv', name: 'SecureSafe (csv)' },\n { id: 'logmeoncecsv', name: 'LogMeOnce (csv)' },\n { id: 'blackberrycsv', name: 'BlackBerry Password Keeper (csv)' },\n { id: 'buttercupcsv', name: 'Buttercup (csv)' },\n { id: 'codebookcsv', name: 'Codebook (csv)' },\n { id: 'encryptrcsv', name: 'Encryptr (csv)' },\n ];\n\n constructor(private cipherService: CipherService, private folderService: FolderService,\n private apiService: ApiService, private i18nService: I18nService,\n private collectionService: CollectionService) { }\n\n getImportOptions(): ImportOption[] {\n return this.featuredImportOptions.concat(this.regularImportOptions);\n }\n\n async import(importer: Importer, fileContents: string, organizationId: string = null): Promise {\n const importResult = await importer.parse(fileContents);\n if (importResult.success) {\n if (importResult.folders.length === 0 && importResult.ciphers.length === 0) {\n return new Error(this.i18nService.t('importNothingError'));\n } else if (importResult.ciphers.length > 0) {\n const halfway = Math.floor(importResult.ciphers.length / 2);\n const last = importResult.ciphers.length - 1;\n\n if (this.badData(importResult.ciphers[0]) &&\n this.badData(importResult.ciphers[halfway]) &&\n this.badData(importResult.ciphers[last])) {\n return new Error(this.i18nService.t('importFormatError'));\n }\n }\n await this.postImport(importResult, organizationId);\n return null;\n } else {\n return new Error(this.i18nService.t('importFormatError'));\n }\n }\n\n getImporter(format: string, organization = false): Importer {\n const importer = this.getImporterInstance(format);\n if (importer == null) {\n return null;\n }\n importer.organization = organization;\n return importer;\n }\n\n private getImporterInstance(format: string) {\n if (format == null || format === '') {\n return null;\n }\n\n switch (format) {\n case 'bitwardencsv':\n return new BitwardenCsvImporter();\n case 'bitwardenjson':\n return new BitwardenJsonImporter();\n case 'lastpasscsv':\n case 'passboltcsv':\n return new LastPassCsvImporter();\n case 'keepassxcsv':\n return new KeePassXCsvImporter();\n case 'aviracsv':\n return new AviraCsvImporter();\n case 'blurcsv':\n return new BlurCsvImporter();\n case 'safeincloudxml':\n return new SafeInCloudXmlImporter();\n case 'padlockcsv':\n return new PadlockCsvImporter();\n case 'keepass2xml':\n return new KeePass2XmlImporter();\n case 'chromecsv':\n case 'operacsv':\n case 'vivaldicsv':\n return new ChromeCsvImporter();\n case 'firefoxcsv':\n return new FirefoxCsvImporter();\n case 'upmcsv':\n return new UpmCsvImporter();\n case 'saferpasscsv':\n return new SaferPassCsvImporter();\n case 'meldiumcsv':\n return new MeldiumCsvImporter();\n case '1password1pif':\n return new OnePassword1PifImporter();\n case '1passwordwincsv':\n return new OnePasswordWinCsvImporter();\n case 'keepercsv':\n return new KeeperCsvImporter();\n case 'passworddragonxml':\n return new PasswordDragonXmlImporter();\n case 'enpasscsv':\n return new EnpassCsvImporter();\n case 'enpassjson':\n return new EnpassJsonImporter();\n case 'pwsafexml':\n return new PasswordSafeXmlImporter();\n case 'dashlanejson':\n return new DashlaneJsonImporter();\n case 'msecurecsv':\n return new MSecureCsvImporter();\n case 'stickypasswordxml':\n return new StickyPasswordXmlImporter();\n case 'truekeycsv':\n return new TrueKeyCsvImporter();\n case 'clipperzhtml':\n return new ClipperzHtmlImporter();\n case 'roboformcsv':\n return new RoboFormCsvImporter();\n case 'ascendocsv':\n return new AscendoCsvImporter();\n case 'passwordbossjson':\n return new PasswordBossJsonImporter();\n case 'zohovaultcsv':\n return new ZohoVaultCsvImporter();\n case 'splashidcsv':\n return new SplashIdCsvImporter();\n case 'passkeepcsv':\n return new PassKeepCsvImporter();\n case 'gnomejson':\n return new GnomeJsonImporter();\n case 'passwordagentcsv':\n return new PasswordAgentCsvImporter();\n case 'passpackcsv':\n return new PasspackCsvImporter();\n case 'passmanjson':\n return new PassmanJsonImporter();\n case 'avastcsv':\n return new AvastCsvImporter();\n case 'avastjson':\n return new AvastJsonImporter();\n case 'fsecurefsk':\n return new FSecureFskImporter();\n case 'kasperskytxt':\n return new KasperskyTxtImporter();\n case 'remembearcsv':\n return new RememBearCsvImporter();\n case 'passwordwallettxt':\n return new PasswordWalletTxtImporter();\n case 'mykicsv':\n return new MykiCsvImporter();\n case 'securesafecsv':\n return new SecureSafeCsvImporter();\n case 'logmeoncecsv':\n return new LogMeOnceCsvImporter();\n case 'blackberrycsv':\n return new BlackBerryCsvImporter();\n case 'buttercupcsv':\n return new ButtercupCsvImporter();\n case 'codebookcsv':\n return new CodebookCsvImporter();\n case 'encryptrcsv':\n return new EncryptrCsvImporter();\n default:\n return null;\n }\n }\n\n private async postImport(importResult: ImportResult, organizationId: string = null) {\n if (organizationId == null) {\n const request = new ImportCiphersRequest();\n for (let i = 0; i < importResult.ciphers.length; i++) {\n const c = await this.cipherService.encrypt(importResult.ciphers[i]);\n request.ciphers.push(new CipherRequest(c));\n }\n if (importResult.folders != null) {\n for (let i = 0; i < importResult.folders.length; i++) {\n const f = await this.folderService.encrypt(importResult.folders[i]);\n request.folders.push(new FolderRequest(f));\n }\n }\n if (importResult.folderRelationships != null) {\n importResult.folderRelationships.forEach((r) =>\n request.folderRelationships.push(new KvpRequest(r[0], r[1])));\n }\n return await this.apiService.postImportCiphers(request);\n } else {\n const request = new ImportOrganizationCiphersRequest();\n for (let i = 0; i < importResult.ciphers.length; i++) {\n importResult.ciphers[i].organizationId = organizationId;\n const c = await this.cipherService.encrypt(importResult.ciphers[i]);\n request.ciphers.push(new CipherRequest(c));\n }\n if (importResult.collections != null) {\n for (let i = 0; i < importResult.collections.length; i++) {\n importResult.collections[i].organizationId = organizationId;\n const c = await this.collectionService.encrypt(importResult.collections[i]);\n request.collections.push(new CollectionRequest(c));\n }\n }\n if (importResult.collectionRelationships != null) {\n importResult.collectionRelationships.forEach((r) =>\n request.collectionRelationships.push(new KvpRequest(r[0], r[1])));\n }\n return await this.apiService.postImportOrganizationCiphers(organizationId, request);\n }\n }\n\n private badData(c: CipherView) {\n return (c.name == null || c.name === '--') &&\n (c.type === CipherType.Login && c.login != null && Utils.isNullOrWhitespace(c.login.password));\n }\n}\n","import { CipherRequest } from './cipherRequest';\nimport { FolderRequest } from './folderRequest';\nimport { KvpRequest } from './kvpRequest';\n\nexport class ImportCiphersRequest {\n ciphers: CipherRequest[] = [];\n folders: FolderRequest[] = [];\n folderRelationships: Array> = [];\n}\n","import { CipherRequest } from './cipherRequest';\nimport { CollectionRequest } from './collectionRequest';\nimport { KvpRequest } from './kvpRequest';\n\nexport class ImportOrganizationCiphersRequest {\n ciphers: CipherRequest[] = [];\n collections: CollectionRequest[] = [];\n collectionRelationships: Array> = [];\n}\n","export class KvpRequest {\n key: TK;\n value: TV;\n\n constructor(key: TK, value: TV) {\n this.key = key;\n this.value = value;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class AscendoCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n if (value.length < 2) {\n return;\n }\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[value.length - 1]);\n cipher.name = this.getValueOrDefault(value[0], '--');\n\n if (value.length > 2 && (value.length % 2) === 0) {\n for (let i = 0; i < value.length - 2; i += 2) {\n const val: string = value[i + 2];\n const field: string = value[i + 1];\n if (this.isNullOrWhitespace(val) || this.isNullOrWhitespace(field)) {\n continue;\n }\n\n const fieldLower = field.toLowerCase();\n if (cipher.login.password == null && this.passwordFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.password = this.getValueOrDefault(val);\n } else if (cipher.login.username == null &&\n this.usernameFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.username = this.getValueOrDefault(val);\n } else if ((cipher.login.uris == null || cipher.login.uris.length === 0) &&\n this.uriFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.uris = this.makeUriArray(val);\n } else {\n this.processKvp(cipher, field, val);\n }\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class AvastCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name);\n cipher.login.uris = this.makeUriArray(value.web);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.username = this.getValueOrDefault(value.login);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nexport class AvastJsonImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n if (results.logins != null) {\n results.logins.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.custName);\n cipher.notes = this.getValueOrDefault(value.note);\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.password = this.getValueOrDefault(value.pwd);\n cipher.login.username = this.getValueOrDefault(value.loginName);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n if (results.notes != null) {\n results.notes.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n cipher.name = this.getValueOrDefault(value.label);\n cipher.notes = this.getValueOrDefault(value.text);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n if (results.cards != null) {\n results.cards.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.type = CipherType.Card;\n cipher.name = this.getValueOrDefault(value.custName);\n cipher.notes = this.getValueOrDefault(value.note);\n cipher.card.cardholderName = this.getValueOrDefault(value.holderName);\n cipher.card.number = this.getValueOrDefault(value.cardNumber);\n cipher.card.code = this.getValueOrDefault(value.cvv);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n if (value.expirationDate != null) {\n if (value.expirationDate.month != null) {\n cipher.card.expMonth = value.expirationDate.month + '';\n }\n if (value.expirationDate.year != null) {\n cipher.card.expYear = value.expirationDate.year + '';\n }\n }\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class AviraCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name,\n this.getValueOrDefault(this.nameFromUrl(value.website), '--'));\n cipher.login.uris = this.makeUriArray(value.website);\n cipher.login.password = this.getValueOrDefault(value.password);\n\n if (this.isNullOrWhitespace(value.username) && !this.isNullOrWhitespace(value.secondary_username)) {\n cipher.login.username = value.secondary_username;\n } else {\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.notes = this.getValueOrDefault(value.secondary_username);\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherView } from '../models/view/cipherView';\nimport { CollectionView } from '../models/view/collectionView';\nimport { FieldView } from '../models/view/fieldView';\nimport { FolderView } from '../models/view/folderView';\nimport { LoginView } from '../models/view/loginView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { FieldType } from '../enums/fieldType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nexport class BitwardenCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n if (this.organization && !this.isNullOrWhitespace(value.collections)) {\n const collections = (value.collections as string).split(',');\n collections.forEach((col) => {\n let addCollection = true;\n let collectionIndex = result.collections.length;\n\n for (let i = 0; i < result.collections.length; i++) {\n if (result.collections[i].name === col) {\n addCollection = false;\n collectionIndex = i;\n break;\n }\n }\n\n if (addCollection) {\n const collection = new CollectionView();\n collection.name = col;\n result.collections.push(collection);\n }\n\n result.collectionRelationships.push([result.ciphers.length, collectionIndex]);\n });\n } else if (!this.organization) {\n this.processFolder(result, value.folder);\n }\n\n const cipher = new CipherView();\n cipher.favorite = !this.organization && this.getValueOrDefault(value.favorite, '0') !== '0' ? true : false;\n cipher.type = CipherType.Login;\n cipher.notes = this.getValueOrDefault(value.notes);\n cipher.name = this.getValueOrDefault(value.name, '--');\n\n if (!this.isNullOrWhitespace(value.fields)) {\n const fields = this.splitNewLine(value.fields);\n for (let i = 0; i < fields.length; i++) {\n if (this.isNullOrWhitespace(fields[i])) {\n continue;\n }\n\n const delimPosition = fields[i].lastIndexOf(': ');\n if (delimPosition === -1) {\n continue;\n }\n\n if (cipher.fields == null) {\n cipher.fields = [];\n }\n\n const field = new FieldView();\n field.name = fields[i].substr(0, delimPosition);\n field.value = null;\n field.type = FieldType.Text;\n if (fields[i].length > (delimPosition + 2)) {\n field.value = fields[i].substr(delimPosition + 2);\n }\n cipher.fields.push(field);\n }\n }\n\n const valueType = value.type != null ? value.type.toLowerCase() : null;\n switch (valueType) {\n case 'note':\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n break;\n default:\n cipher.type = CipherType.Login;\n cipher.login = new LoginView();\n cipher.login.totp = this.getValueOrDefault(value.login_totp || value.totp);\n cipher.login.username = this.getValueOrDefault(value.login_username || value.username);\n cipher.login.password = this.getValueOrDefault(value.login_password || value.password);\n const uris = this.parseSingleRowCsv(value.login_uri || value.uri);\n cipher.login.uris = this.makeUriArray(uris);\n break;\n }\n\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherWithIds } from '../models/export/cipherWithIds';\nimport { CollectionWithId } from '../models/export/collectionWithId';\nimport { FolderWithId } from '../models/export/folderWithId';\n\nexport class BitwardenJsonImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.items == null || results.items.length === 0) {\n result.success = false;\n return result;\n }\n\n const groupingsMap = new Map();\n if (this.organization && results.collections != null) {\n results.collections.forEach((c: CollectionWithId) => {\n const collection = CollectionWithId.toView(c);\n if (collection != null) {\n collection.id = null;\n collection.organizationId = null;\n groupingsMap.set(c.id, result.collections.length);\n result.collections.push(collection);\n }\n });\n } else if (!this.organization && results.folders != null) {\n results.folders.forEach((f: FolderWithId) => {\n const folder = FolderWithId.toView(f);\n if (folder != null) {\n folder.id = null;\n groupingsMap.set(f.id, result.folders.length);\n result.folders.push(folder);\n }\n });\n }\n\n results.items.forEach((c: CipherWithIds) => {\n const cipher = CipherWithIds.toView(c);\n // reset ids incase they were set for some reason\n cipher.id = null;\n cipher.folderId = null;\n cipher.organizationId = null;\n cipher.collectionIds = null;\n\n // make sure password history is limited\n if (cipher.passwordHistory != null && cipher.passwordHistory.length > 5) {\n cipher.passwordHistory = cipher.passwordHistory.slice(0, 5);\n }\n\n if (!this.organization && c.folderId != null && groupingsMap.has(c.folderId)) {\n result.folderRelationships.push([result.ciphers.length, groupingsMap.get(c.folderId)]);\n } else if (this.organization && c.collectionIds != null) {\n c.collectionIds.forEach((cId) => {\n if (groupingsMap.has(cId)) {\n result.collectionRelationships.push([result.ciphers.length, groupingsMap.get(cId)]);\n }\n });\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class BlackBerryCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n if (value.grouping === 'list') {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.favorite = value.fav === '1';\n cipher.name = this.getValueOrDefault(value.name);\n cipher.notes = this.getValueOrDefault(value.extra);\n if (value.grouping !== 'note') {\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.username = this.getValueOrDefault(value.username);\n }\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class BlurCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n if (value.label === 'null') {\n value.label = null;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.label,\n this.getValueOrDefault(this.nameFromUrl(value.domain), '--'));\n cipher.login.uris = this.makeUriArray(value.domain);\n cipher.login.password = this.getValueOrDefault(value.password);\n\n if (this.isNullOrWhitespace(value.email) && !this.isNullOrWhitespace(value.username)) {\n cipher.login.username = value.username;\n } else {\n cipher.login.username = this.getValueOrDefault(value.email);\n cipher.notes = this.getValueOrDefault(value.username);\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nconst OfficialProps = [\n '!group_id', '!group_name', 'title', 'username', 'password', 'URL', 'id',\n];\n\nexport class ButtercupCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n this.processFolder(result, this.getValueOrDefault(value['!group_name']));\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.title, '--');\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.URL);\n\n let processingCustomFields = false;\n for (const prop in value) {\n if (value.hasOwnProperty(prop)) {\n if (!processingCustomFields && OfficialProps.indexOf(prop) === -1) {\n processingCustomFields = true;\n }\n if (processingCustomFields) {\n this.processKvp(cipher, prop, value[prop]);\n }\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class ChromeCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name, '--');\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class ClipperzHtmlImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return result;\n }\n\n const textarea = doc.querySelector('textarea');\n if (textarea == null || this.isNullOrWhitespace(textarea.textContent)) {\n result.errorMessage = 'Missing textarea.';\n result.success = false;\n return result;\n }\n\n const entries = JSON.parse(textarea.textContent);\n entries.forEach((entry: any) => {\n const cipher = this.initLoginCipher();\n if (!this.isNullOrWhitespace(entry.label)) {\n cipher.name = entry.label.split(' ')[0];\n }\n if (entry.data != null && !this.isNullOrWhitespace(entry.data.notes)) {\n cipher.notes = entry.data.notes.split('\\\\n').join('\\n');\n }\n\n if (entry.currentVersion != null && entry.currentVersion.fields != null) {\n for (const property in entry.currentVersion.fields) {\n if (!entry.currentVersion.fields.hasOwnProperty(property)) {\n continue;\n }\n\n const field = entry.currentVersion.fields[property];\n const actionType = field.actionType != null ? field.actionType.toLowerCase() : null;\n switch (actionType) {\n case 'password':\n cipher.login.password = this.getValueOrDefault(field.value);\n break;\n case 'email':\n case 'username':\n case 'user':\n case 'name':\n cipher.login.username = this.getValueOrDefault(field.value);\n break;\n case 'url':\n cipher.login.uris = this.makeUriArray(field.value);\n break;\n default:\n const labelLower = field.label != null ? field.label.toLowerCase() : null;\n if (cipher.login.password == null && this.passwordFieldNames.indexOf(labelLower) > -1) {\n cipher.login.password = this.getValueOrDefault(field.value);\n } else if (cipher.login.username == null &&\n this.usernameFieldNames.indexOf(labelLower) > -1) {\n cipher.login.username = this.getValueOrDefault(field.value);\n } else if ((cipher.login.uris == null || cipher.login.uris.length === 0) &&\n this.uriFieldNames.indexOf(labelLower) > -1) {\n cipher.login.uris = this.makeUriArray(field.value);\n } else {\n this.processKvp(cipher, field.label, field.value);\n }\n break;\n }\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class CodebookCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n this.processFolder(result, this.getValueOrDefault(value.Category));\n\n const cipher = this.initLoginCipher();\n cipher.favorite = this.getValueOrDefault(value.Favorite) === 'True';\n cipher.name = this.getValueOrDefault(value.Entry, '--');\n cipher.notes = this.getValueOrDefault(value.Note);\n cipher.login.username = this.getValueOrDefault(value.Username, value.Email);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.totp = this.getValueOrDefault(value.TOTP);\n cipher.login.uris = this.makeUriArray(value.Website);\n\n if (!this.isNullOrWhitespace(value.Username)) {\n this.processKvp(cipher, 'Email', value.Email);\n }\n this.processKvp(cipher, 'Phone', value.Phone);\n this.processKvp(cipher, 'PIN', value.PIN);\n this.processKvp(cipher, 'Account', value.Account);\n this.processKvp(cipher, 'Date', value.Date);\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\nimport { CipherView } from '../models/view/cipherView';\nimport { IdentityView } from '../models/view/identityView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nconst HandledResults = new Set(['ADDRESS', 'AUTHENTIFIANT', 'BANKSTATEMENT', 'IDCARD', 'IDENTITY',\n 'PAYMENTMEANS_CREDITCARD', 'PAYMENTMEAN_PAYPAL', 'EMAIL']);\n\nexport class DashlaneJsonImporter extends BaseImporter implements Importer {\n private result: ImportResult;\n\n parse(data: string): ImportResult {\n this.result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.length === 0) {\n this.result.success = false;\n return this.result;\n }\n\n if (results.ADDRESS != null) {\n this.processAddress(results.ADDRESS);\n }\n if (results.AUTHENTIFIANT != null) {\n this.processAuth(results.AUTHENTIFIANT);\n }\n if (results.BANKSTATEMENT != null) {\n this.processNote(results.BANKSTATEMENT, 'BankAccountName');\n }\n if (results.IDCARD != null) {\n this.processNote(results.IDCARD, 'Fullname');\n }\n if (results.PAYMENTMEANS_CREDITCARD != null) {\n this.processCard(results.PAYMENTMEANS_CREDITCARD);\n }\n if (results.IDENTITY != null) {\n this.processIdentity(results.IDENTITY);\n }\n\n for (const key in results) {\n if (results.hasOwnProperty(key) && !HandledResults.has(key)) {\n this.processNote(results[key], null, 'Generic Note');\n }\n }\n\n this.result.success = true;\n return this.result;\n }\n\n private processAuth(results: any[]) {\n results.forEach((credential: any) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(credential.title);\n\n cipher.login.username = this.getValueOrDefault(credential.login,\n this.getValueOrDefault(credential.secondaryLogin));\n if (this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = this.getValueOrDefault(credential.email);\n } else if (!this.isNullOrWhitespace(credential.email)) {\n cipher.notes = ('Email: ' + credential.email + '\\n');\n }\n\n cipher.login.password = this.getValueOrDefault(credential.password);\n cipher.login.uris = this.makeUriArray(credential.domain);\n cipher.notes += this.getValueOrDefault(credential.note, '');\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processIdentity(results: any[]) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.identity = new IdentityView();\n cipher.type = CipherType.Identity;\n cipher.name = this.getValueOrDefault(obj.fullName, '');\n const nameParts = cipher.name.split(' ');\n if (nameParts.length > 0) {\n cipher.identity.firstName = this.getValueOrDefault(nameParts[0]);\n }\n if (nameParts.length === 2) {\n cipher.identity.lastName = this.getValueOrDefault(nameParts[1]);\n } else if (nameParts.length === 3) {\n cipher.identity.middleName = this.getValueOrDefault(nameParts[1]);\n cipher.identity.lastName = this.getValueOrDefault(nameParts[2]);\n }\n cipher.identity.username = this.getValueOrDefault(obj.pseudo);\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processAddress(results: any[]) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.identity = new IdentityView();\n cipher.type = CipherType.Identity;\n cipher.name = this.getValueOrDefault(obj.addressName);\n cipher.identity.address1 = this.getValueOrDefault(obj.addressFull);\n cipher.identity.city = this.getValueOrDefault(obj.city);\n cipher.identity.state = this.getValueOrDefault(obj.state);\n cipher.identity.postalCode = this.getValueOrDefault(obj.zipcode);\n cipher.identity.country = this.getValueOrDefault(obj.country);\n if (cipher.identity.country != null) {\n cipher.identity.country = cipher.identity.country.toUpperCase();\n }\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processCard(results: any[]) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n cipher.name = this.getValueOrDefault(obj.bank);\n cipher.card.number = this.getValueOrDefault(obj.cardNumber);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.cardholderName = this.getValueOrDefault(obj.owner);\n if (!this.isNullOrWhitespace(cipher.card.brand)) {\n if (this.isNullOrWhitespace(cipher.name)) {\n cipher.name = cipher.card.brand;\n } else {\n cipher.name += (' - ' + cipher.card.brand);\n }\n }\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processNote(results: any[], nameProperty: string, name: string = null) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.secureNote = new SecureNoteView();\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n if (name != null) {\n cipher.name = name;\n } else {\n cipher.name = this.getValueOrDefault(obj[nameProperty]);\n }\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && key !== nameProperty) {\n this.processKvp(cipher, key, obj[key].toString());\n }\n }\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\n\nimport { CipherType } from '../enums/cipherType';\n\nexport class EncryptrCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.Label, '--');\n cipher.notes = this.getValueOrDefault(value.Notes);\n const text = this.getValueOrDefault(value.Text);\n if (!this.isNullOrWhitespace(text)) {\n if (this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes = text;\n } else {\n cipher.notes += ('\\n\\n' + text);\n }\n }\n\n const type = value['Entry Type'];\n if (type === 'Password') {\n cipher.login.username = this.getValueOrDefault(value.Username);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value['Site URL']);\n } else if (type === 'Credit Card') {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value['Name on card']);\n cipher.card.number = this.getValueOrDefault(value['Card Number']);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.code = this.getValueOrDefault(value.CVV);\n const expiry = this.getValueOrDefault(value.Expiry);\n if (!this.isNullOrWhitespace(expiry)) {\n const expParts = expiry.split('/');\n if (expParts.length > 1) {\n cipher.card.expMonth = parseInt(expParts[0], null).toString();\n cipher.card.expYear = (2000 + parseInt(expParts[1], null)).toString();\n }\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nimport { CardView } from '../models/view/cardView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nexport class EnpassCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n let firstRow = true;\n results.forEach((value) => {\n if (value.length < 2 || (firstRow && (value[0] === 'Title' || value[0] === 'title'))) {\n firstRow = false;\n return;\n }\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[value.length - 1]);\n cipher.name = this.getValueOrDefault(value[0], '--');\n\n if (value.length === 2 || (!this.containsField(value, 'username') &&\n !this.containsField(value, 'password') && !this.containsField(value, 'email') &&\n !this.containsField(value, 'url'))) {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n }\n\n if (this.containsField(value, 'cardholder') && this.containsField(value, 'number') &&\n this.containsField(value, 'expiry date')) {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n }\n\n if (value.length > 2 && (value.length % 2) === 0) {\n for (let i = 0; i < value.length - 2; i += 2) {\n const fieldValue: string = value[i + 2];\n if (this.isNullOrWhitespace(fieldValue)) {\n continue;\n }\n\n const fieldName: string = value[i + 1];\n const fieldNameLower = fieldName.toLowerCase();\n\n if (cipher.type === CipherType.Login) {\n if (fieldNameLower === 'url' && (cipher.login.uris == null || cipher.login.uris.length === 0)) {\n cipher.login.uris = this.makeUriArray(fieldValue);\n continue;\n } else if ((fieldNameLower === 'username' || fieldNameLower === 'email') &&\n this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = fieldValue;\n continue;\n } else if (fieldNameLower === 'password' && this.isNullOrWhitespace(cipher.login.password)) {\n cipher.login.password = fieldValue;\n continue;\n } else if (fieldNameLower === 'totp' && this.isNullOrWhitespace(cipher.login.totp)) {\n cipher.login.totp = fieldValue;\n continue;\n }\n } else if (cipher.type === CipherType.Card) {\n if (fieldNameLower === 'cardholder' && this.isNullOrWhitespace(cipher.card.cardholderName)) {\n cipher.card.cardholderName = fieldValue;\n continue;\n } else if (fieldNameLower === 'number' && this.isNullOrWhitespace(cipher.card.number)) {\n cipher.card.number = fieldValue;\n cipher.card.brand = this.getCardBrand(fieldValue);\n continue;\n } else if (fieldNameLower === 'cvc' && this.isNullOrWhitespace(cipher.card.code)) {\n cipher.card.code = fieldValue;\n continue;\n } else if (fieldNameLower === 'expiry date' && this.isNullOrWhitespace(cipher.card.expMonth) &&\n this.isNullOrWhitespace(cipher.card.expYear)) {\n if (this.setCardExpiration(cipher, fieldValue)) {\n continue;\n }\n } else if (fieldNameLower === 'type') {\n // Skip since brand was determined from number above\n continue;\n }\n }\n\n this.processKvp(cipher, fieldName, fieldValue);\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\n }\n\n private containsField(fields: any[], name: string) {\n if (fields == null || name == null) {\n return false;\n }\n return fields.filter((f) => !this.isNullOrWhitespace(f) &&\n f.toLowerCase() === name.toLowerCase()).length > 0;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\nimport { CipherView } from '../models/view/cipherView';\nimport { FolderView } from '../models/view/folderView';\n\nimport { CipherType } from '../enums/cipherType';\n\nexport class EnpassJsonImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.items == null || results.items.length === 0) {\n result.success = false;\n return result;\n }\n\n const foldersMap = new Map();\n const foldersIndexMap = new Map();\n const folderTree = this.buildFolderTree(results.folders);\n this.flattenFolderTree(null, folderTree, foldersMap);\n foldersMap.forEach((val, key) => {\n foldersIndexMap.set(key, result.folders.length);\n const f = new FolderView();\n f.name = val;\n result.folders.push(f);\n });\n\n results.items.forEach((item: any) => {\n if (item.folders != null && item.folders.length > 0 && foldersIndexMap.has(item.folders[0])) {\n result.folderRelationships.push([result.ciphers.length, foldersIndexMap.get(item.folders[0])]);\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(item.title);\n cipher.favorite = item.favorite > 0;\n\n if (item.template_type != null && item.fields != null && item.fields.length > 0) {\n if (item.template_type.indexOf('login.') === 0 || item.template_type.indexOf('password.') === 0) {\n this.processLogin(cipher, item.fields);\n } else if (item.template_type.indexOf('creditcard.') === 0) {\n this.processCard(cipher, item.fields);\n } else if (item.template_type.indexOf('identity.') < 0 &&\n item.fields.some((f: any) => f.type === 'password' && !this.isNullOrWhitespace(f.value))) {\n this.processLogin(cipher, item.fields);\n } else {\n this.processNote(cipher, item.fields);\n }\n }\n\n cipher.notes += ('\\n' + this.getValueOrDefault(item.note, ''));\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\n }\n\n private processLogin(cipher: CipherView, fields: any[]) {\n const urls: string[] = [];\n fields.forEach((field: any) => {\n if (this.isNullOrWhitespace(field.value) || field.type === 'section') {\n return;\n }\n\n if ((field.type === 'username' || field.type === 'email') &&\n this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = field.value;\n } else if (field.type === 'password' && this.isNullOrWhitespace(cipher.login.password)) {\n cipher.login.password = field.value;\n } else if (field.type === 'totp' && this.isNullOrWhitespace(cipher.login.totp)) {\n cipher.login.totp = field.value;\n } else if (field.type === 'url') {\n urls.push(field.value);\n } else {\n this.processKvp(cipher, field.label, field.value);\n }\n });\n cipher.login.uris = this.makeUriArray(urls);\n }\n\n private processCard(cipher: CipherView, fields: any[]) {\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n fields.forEach((field: any) => {\n if (this.isNullOrWhitespace(field.value) || field.type === 'section' || field.type === 'ccType') {\n return;\n }\n\n if (field.type === 'ccName' && this.isNullOrWhitespace(cipher.card.cardholderName)) {\n cipher.card.cardholderName = field.value;\n } else if (field.type === 'ccNumber' && this.isNullOrWhitespace(cipher.card.number)) {\n cipher.card.number = field.value;\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n } else if (field.type === 'ccCvc' && this.isNullOrWhitespace(cipher.card.code)) {\n cipher.card.code = field.value;\n } else if (field.type === 'ccExpiry' && this.isNullOrWhitespace(cipher.card.expYear)) {\n if (!this.setCardExpiration(cipher, field.value)) {\n this.processKvp(cipher, field.label, field.value);\n }\n } else {\n this.processKvp(cipher, field.label, field.value);\n }\n });\n }\n\n private processNote(cipher: CipherView, fields: any[]) {\n fields.forEach((field: any) => {\n if (this.isNullOrWhitespace(field.value) || field.type === 'section') {\n return;\n }\n this.processKvp(cipher, field.label, field.value);\n });\n }\n\n private buildFolderTree(folders: any[]): any[] {\n if (folders == null) {\n return [];\n }\n const folderTree: any[] = [];\n const map = new Map([]);\n folders.forEach((obj: any) => {\n map.set(obj.uuid, obj);\n obj.children = [];\n });\n folders.forEach((obj: any) => {\n if (obj.parent_uuid != null && obj.parent_uuid !== '' && map.has(obj.parent_uuid)) {\n map.get(obj.parent_uuid).children.push(obj);\n } else {\n folderTree.push(obj);\n }\n });\n return folderTree;\n }\n\n private flattenFolderTree(titlePrefix: string, tree: any[], map: Map) {\n if (tree == null) {\n return;\n }\n tree.forEach((f: any) => {\n if (f.title != null && f.title.trim() !== '') {\n let title = f.title.trim();\n if (titlePrefix != null && titlePrefix.trim() !== '') {\n title = titlePrefix + '/' + title;\n }\n map.set(f.uuid, title);\n if (f.children != null && f.children.length !== 0) {\n this.flattenFolderTree(title, f.children, map);\n }\n }\n });\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class FirefoxCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(this.nameFromUrl(value.hostname), '--');\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.hostname);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\n\nimport { CipherType } from '../enums/cipherType';\n\nexport class FSecureFskImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.data == null) {\n result.success = false;\n return result;\n }\n\n for (const key in results.data) {\n if (!results.data.hasOwnProperty(key)) {\n continue;\n }\n\n const value = results.data[key];\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.service);\n cipher.notes = this.getValueOrDefault(value.notes);\n\n if (value.style === 'website') {\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n } else if (value.style === 'creditcard') {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value.username);\n cipher.card.number = this.getValueOrDefault(value.creditNumber);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.code = this.getValueOrDefault(value.creditCvv);\n if (!this.isNullOrWhitespace(value.creditExpiry)) {\n if (!this.setCardExpiration(cipher, value.creditExpiry)) {\n this.processKvp(cipher, 'Expiration', value.creditExpiry);\n }\n }\n if (!this.isNullOrWhitespace(value.password)) {\n this.processKvp(cipher, 'PIN', value.password);\n }\n } else {\n continue;\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n }\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class GnomeJsonImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || Object.keys(results).length === 0) {\n result.success = false;\n return result;\n }\n\n for (const keyRing in results) {\n if (!results.hasOwnProperty(keyRing) || this.isNullOrWhitespace(keyRing) ||\n results[keyRing].length === 0) {\n continue;\n }\n\n results[keyRing].forEach((value: any) => {\n if (this.isNullOrWhitespace(value.display_name) || value.display_name.indexOf('http') !== 0) {\n return;\n }\n\n this.processFolder(result, keyRing);\n const cipher = this.initLoginCipher();\n cipher.name = value.display_name.replace('http://', '').replace('https://', '');\n if (cipher.name.length > 30) {\n cipher.name = cipher.name.substring(0, 30);\n }\n cipher.login.password = this.getValueOrDefault(value.secret);\n cipher.login.uris = this.makeUriArray(value.display_name);\n\n if (value.attributes != null) {\n cipher.login.username = value.attributes != null ?\n this.getValueOrDefault(value.attributes.username_value) : null;\n for (const attr in value.attributes) {\n if (!value.attributes.hasOwnProperty(attr) || attr === 'username_value' ||\n attr === 'xdg:schema') {\n continue;\n }\n this.processKvp(cipher, attr, value.attributes[attr]);\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nconst NotesHeader = 'Notes\\n\\n';\nconst ApplicationsHeader = 'Applications\\n\\n';\nconst WebsitesHeader = 'Websites\\n\\n';\nconst Delimiter = '\\n---\\n';\n\nexport class KasperskyTxtImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n\n let notesData: string;\n let applicationsData: string;\n let websitesData: string;\n let workingData = this.splitNewLine(data).join('\\n');\n\n if (workingData.indexOf(NotesHeader) !== -1) {\n const parts = workingData.split(NotesHeader);\n if (parts.length > 1) {\n workingData = parts[0];\n notesData = parts[1];\n }\n }\n if (workingData.indexOf(ApplicationsHeader) !== -1) {\n const parts = workingData.split(ApplicationsHeader);\n if (parts.length > 1) {\n workingData = parts[0];\n applicationsData = parts[1];\n }\n }\n if (workingData.indexOf(WebsitesHeader) === 0) {\n const parts = workingData.split(WebsitesHeader);\n if (parts.length > 1) {\n workingData = parts[0];\n websitesData = parts[1];\n }\n }\n\n const notes = this.parseDataCategory(notesData);\n const applications = this.parseDataCategory(applicationsData);\n const websites = this.parseDataCategory(websitesData);\n\n notes.forEach((n) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(n.get('Name'));\n cipher.notes = this.getValueOrDefault(n.get('Text'));\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n websites.concat(applications).forEach((w) => {\n const cipher = this.initLoginCipher();\n const nameKey = w.has('Website name') ? 'Website name' : 'Application';\n cipher.name = this.getValueOrDefault(w.get(nameKey), '');\n if (!this.isNullOrWhitespace(w.get('Login name'))) {\n if (!this.isNullOrWhitespace(cipher.name)) {\n cipher.name += ': ';\n }\n cipher.name += w.get('Login name');\n }\n cipher.notes = this.getValueOrDefault(w.get('Comment'));\n if (w.has('Website URL')) {\n cipher.login.uris = this.makeUriArray(w.get('Website URL'));\n }\n cipher.login.username = this.getValueOrDefault(w.get('Login'));\n cipher.login.password = this.getValueOrDefault(w.get('Password'));\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\n }\n\n private parseDataCategory(data: string): Array> {\n if (this.isNullOrWhitespace(data) || data.indexOf(Delimiter) === -1) {\n return [];\n }\n const items: Array> = [];\n data.split(Delimiter).forEach((p) => {\n if (p.indexOf('\\n') === -1) {\n return;\n }\n const item = new Map();\n let itemComment: string;\n let itemCommentKey: string;\n p.split('\\n').forEach((l) => {\n if (itemComment != null) {\n itemComment += ('\\n' + l);\n return;\n }\n const colonIndex = l.indexOf(':');\n let key: string;\n let val: string;\n if (colonIndex === -1) {\n return;\n } else {\n key = l.substring(0, colonIndex);\n if (l.length > colonIndex + 1) {\n val = l.substring(colonIndex + 2);\n }\n }\n if (key != null) {\n item.set(key, val);\n }\n if (key === 'Comment' || key === 'Text') {\n itemComment = val;\n itemCommentKey = key;\n }\n });\n if (itemComment != null && itemCommentKey != null) {\n item.set(itemCommentKey, itemComment);\n }\n if (item.size === 0) {\n return;\n }\n items.push(item);\n });\n return items;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { FieldType } from '../enums/fieldType';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { FolderView } from '../models/view/folderView';\n\nexport class KeePass2XmlImporter extends BaseImporter implements Importer {\n result = new ImportResult();\n\n parse(data: string): ImportResult {\n const doc = this.parseXml(data);\n if (doc == null) {\n this.result.success = false;\n return this.result;\n }\n\n const rootGroup = doc.querySelector('KeePassFile > Root > Group');\n if (rootGroup == null) {\n this.result.errorMessage = 'Missing `KeePassFile > Root > Group` node.';\n this.result.success = false;\n return this.result;\n }\n\n this.traverse(rootGroup, true, '');\n\n if (this.organization) {\n this.moveFoldersToCollections(this.result);\n }\n\n this.result.success = true;\n return this.result;\n }\n\n traverse(node: Element, isRootNode: boolean, groupPrefixName: string) {\n const folderIndex = this.result.folders.length;\n let groupName = groupPrefixName;\n\n if (!isRootNode) {\n if (groupName !== '') {\n groupName += '/';\n }\n const nameEl = this.querySelectorDirectChild(node, 'Name');\n groupName += nameEl == null ? '-' : nameEl.textContent;\n const folder = new FolderView();\n folder.name = groupName;\n this.result.folders.push(folder);\n }\n\n this.querySelectorAllDirectChild(node, 'Entry').forEach((entry) => {\n const cipherIndex = this.result.ciphers.length;\n\n const cipher = this.initLoginCipher();\n this.querySelectorAllDirectChild(entry, 'String').forEach((entryString) => {\n const valueEl = this.querySelectorDirectChild(entryString, 'Value');\n const value = valueEl != null ? valueEl.textContent : null;\n if (this.isNullOrWhitespace(value)) {\n return;\n }\n const keyEl = this.querySelectorDirectChild(entryString, 'Key');\n const key = keyEl != null ? keyEl.textContent : null;\n\n if (key === 'URL') {\n cipher.login.uris = this.makeUriArray(value);\n } else if (key === 'UserName') {\n cipher.login.username = value;\n } else if (key === 'Password') {\n cipher.login.password = value;\n } else if (key === 'Title') {\n cipher.name = value;\n } else if (key === 'Notes') {\n cipher.notes += (value + '\\n');\n } else {\n let type = FieldType.Text;\n const attrs = (valueEl.attributes as any);\n if (attrs.length > 0 && attrs.ProtectInMemory != null &&\n attrs.ProtectInMemory.value === 'True') {\n type = FieldType.Hidden;\n }\n this.processKvp(cipher, key, value, type);\n }\n });\n\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n\n if (!isRootNode) {\n this.result.folderRelationships.push([cipherIndex, folderIndex]);\n }\n });\n\n this.querySelectorAllDirectChild(node, 'Group').forEach((group) => {\n this.traverse(group, false, groupName);\n });\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class KeePassXCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n if (this.isNullOrWhitespace(value.Title)) {\n return;\n }\n\n value.Group = !this.isNullOrWhitespace(value.Group) && value.Group.startsWith('Root/') ?\n value.Group.replace('Root/', '') : value.Group;\n const groupName = !this.isNullOrWhitespace(value.Group) ? value.Group : null;\n this.processFolder(result, groupName);\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value.Notes);\n cipher.name = this.getValueOrDefault(value.Title, '--');\n cipher.login.username = this.getValueOrDefault(value.Username);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.URL);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { FolderView } from '../models/view/folderView';\n\nexport class KeeperCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n if (value.length < 6) {\n return;\n }\n\n this.processFolder(result, value[0]);\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[5]) + '\\n';\n cipher.name = this.getValueOrDefault(value[1], '--');\n cipher.login.username = this.getValueOrDefault(value[2]);\n cipher.login.password = this.getValueOrDefault(value[3]);\n cipher.login.uris = this.makeUriArray(value[4]);\n\n if (value.length > 7) {\n // we have some custom fields.\n for (let i = 7; i < value.length; i = i + 2) {\n this.processKvp(cipher, value[i], value[i + 1]);\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\nimport { CipherView } from '../models/view/cipherView';\nimport { FolderView } from '../models/view/folderView';\nimport { IdentityView } from '../models/view/identityView';\nimport { LoginView } from '../models/view/loginView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nexport class LastPassCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value, index) => {\n const cipherIndex = result.ciphers.length;\n let folderIndex = result.folders.length;\n let grouping = value.grouping;\n if (grouping != null) {\n grouping = grouping.replace(/\\\\/g, '/').replace(/[\\x00-\\x1F\\x7F-\\x9F]/g, '');\n }\n const hasFolder = this.getValueOrDefault(grouping, '(none)') !== '(none)';\n let addFolder = hasFolder;\n\n if (hasFolder) {\n for (let i = 0; i < result.folders.length; i++) {\n if (result.folders[i].name === grouping) {\n addFolder = false;\n folderIndex = i;\n break;\n }\n }\n }\n\n const cipher = this.buildBaseCipher(value);\n if (cipher.type === CipherType.Login) {\n cipher.notes = this.getValueOrDefault(value.extra);\n cipher.login = new LoginView();\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n } else if (cipher.type === CipherType.SecureNote) {\n this.parseSecureNote(value, cipher);\n } else if (cipher.type === CipherType.Card) {\n cipher.card = this.parseCard(value);\n cipher.notes = this.getValueOrDefault(value.notes);\n } else if (cipher.type === CipherType.Identity) {\n cipher.identity = this.parseIdentity(value);\n cipher.notes = this.getValueOrDefault(value.notes);\n if (!this.isNullOrWhitespace(value.ccnum)) {\n // there is a card on this identity too\n const cardCipher = this.buildBaseCipher(value);\n cardCipher.identity = null;\n cardCipher.type = CipherType.Card;\n cardCipher.card = this.parseCard(value);\n result.ciphers.push(cardCipher);\n }\n }\n\n result.ciphers.push(cipher);\n\n if (addFolder) {\n const f = new FolderView();\n f.name = grouping;\n result.folders.push(f);\n }\n if (hasFolder) {\n result.folderRelationships.push([cipherIndex, folderIndex]);\n }\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return result;\n }\n\n private buildBaseCipher(value: any) {\n const cipher = new CipherView();\n if (value.hasOwnProperty('profilename') && value.hasOwnProperty('profilelanguage')) {\n // form fill\n cipher.favorite = false;\n cipher.name = this.getValueOrDefault(value.profilename, '--');\n cipher.type = CipherType.Card;\n\n if (!this.isNullOrWhitespace(value.title) || !this.isNullOrWhitespace(value.firstname) ||\n !this.isNullOrWhitespace(value.lastname) || !this.isNullOrWhitespace(value.address1) ||\n !this.isNullOrWhitespace(value.phone) || !this.isNullOrWhitespace(value.username) ||\n !this.isNullOrWhitespace(value.email)) {\n cipher.type = CipherType.Identity;\n }\n } else {\n // site or secure note\n cipher.favorite = !this.organization && this.getValueOrDefault(value.fav, '0') === '1';\n cipher.name = this.getValueOrDefault(value.name, '--');\n cipher.type = value.url === 'http://sn' ? CipherType.SecureNote : CipherType.Login;\n }\n return cipher;\n }\n\n private parseCard(value: any): CardView {\n const card = new CardView();\n card.cardholderName = this.getValueOrDefault(value.ccname);\n card.number = this.getValueOrDefault(value.ccnum);\n card.code = this.getValueOrDefault(value.cccsc);\n card.brand = this.getCardBrand(value.ccnum);\n\n if (!this.isNullOrWhitespace(value.ccexp) && value.ccexp.indexOf('-') > -1) {\n const ccexpParts = (value.ccexp as string).split('-');\n if (ccexpParts.length > 1) {\n card.expYear = ccexpParts[0];\n card.expMonth = ccexpParts[1];\n if (card.expMonth.length === 2 && card.expMonth[0] === '0') {\n card.expMonth = card.expMonth[1];\n }\n }\n }\n\n return card;\n }\n\n private parseIdentity(value: any): IdentityView {\n const identity = new IdentityView();\n identity.title = this.getValueOrDefault(value.title);\n identity.firstName = this.getValueOrDefault(value.firstname);\n identity.middleName = this.getValueOrDefault(value.middlename);\n identity.lastName = this.getValueOrDefault(value.lastname);\n identity.username = this.getValueOrDefault(value.username);\n identity.company = this.getValueOrDefault(value.company);\n identity.ssn = this.getValueOrDefault(value.ssn);\n identity.address1 = this.getValueOrDefault(value.address1);\n identity.address2 = this.getValueOrDefault(value.address2);\n identity.address3 = this.getValueOrDefault(value.address3);\n identity.city = this.getValueOrDefault(value.city);\n identity.state = this.getValueOrDefault(value.state);\n identity.postalCode = this.getValueOrDefault(value.zip);\n identity.country = this.getValueOrDefault(value.country);\n identity.email = this.getValueOrDefault(value.email);\n identity.phone = this.getValueOrDefault(value.phone);\n\n if (!this.isNullOrWhitespace(identity.title)) {\n identity.title = identity.title.charAt(0).toUpperCase() + identity.title.slice(1);\n }\n\n return identity;\n }\n\n private parseSecureNote(value: any, cipher: CipherView) {\n const extraParts = this.splitNewLine(value.extra);\n let processedNote = false;\n\n if (extraParts.length) {\n const typeParts = extraParts[0].split(':');\n if (typeParts.length > 1 && typeParts[0] === 'NoteType' &&\n (typeParts[1] === 'Credit Card' || typeParts[1] === 'Address')) {\n if (typeParts[1] === 'Credit Card') {\n const mappedData = this.parseSecureNoteMapping(cipher, extraParts, {\n 'Number': 'number',\n 'Name on Card': 'cardholderName',\n 'Security Code': 'code',\n // LP provides date in a format like 'June,2020'\n // Store in expMonth, then parse and modify\n 'Expiration Date': 'expMonth',\n });\n\n if (this.isNullOrWhitespace(mappedData.expMonth) || mappedData.expMonth === ',') {\n // No expiration data\n mappedData.expMonth = undefined;\n } else {\n const [monthString, year] = mappedData.expMonth.split(',');\n // Parse month name into number\n if (!this.isNullOrWhitespace(monthString)) {\n const month = new Date(Date.parse(monthString.trim() + ' 1, 2012')).getMonth() + 1;\n if (isNaN(month)) {\n mappedData.expMonth = undefined;\n } else {\n mappedData.expMonth = month.toString();\n }\n } else {\n mappedData.expMonth = undefined;\n }\n if (!this.isNullOrWhitespace(year)) {\n mappedData.expYear = year;\n }\n }\n\n cipher.type = CipherType.Card;\n cipher.card = mappedData;\n } else if (typeParts[1] === 'Address') {\n const mappedData = this.parseSecureNoteMapping(cipher, extraParts, {\n 'Title': 'title',\n 'First Name': 'firstName',\n 'Last Name': 'lastName',\n 'Middle Name': 'middleName',\n 'Company': 'company',\n 'Address 1': 'address1',\n 'Address 2': 'address2',\n 'Address 3': 'address3',\n 'City / Town': 'city',\n 'State': 'state',\n 'Zip / Postal Code': 'postalCode',\n 'Country': 'country',\n 'Email Address': 'email',\n 'Username': 'username',\n });\n cipher.type = CipherType.Identity;\n cipher.identity = mappedData;\n }\n processedNote = true;\n }\n }\n\n if (!processedNote) {\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n cipher.notes = this.getValueOrDefault(value.extra);\n }\n }\n\n private parseSecureNoteMapping(cipher: CipherView, extraParts: string[], map: any): T {\n const dataObj: any = {};\n\n let processingNotes = false;\n extraParts.forEach((extraPart) => {\n let key: string = null;\n let val: string = null;\n if (!processingNotes) {\n if (this.isNullOrWhitespace(extraPart)) {\n return;\n }\n const colonIndex = extraPart.indexOf(':');\n if (colonIndex === -1) {\n key = extraPart;\n } else {\n key = extraPart.substring(0, colonIndex);\n if (extraPart.length > colonIndex) {\n val = extraPart.substring(colonIndex + 1);\n }\n }\n if (this.isNullOrWhitespace(key) || this.isNullOrWhitespace(val) || key === 'NoteType') {\n return;\n }\n }\n\n if (processingNotes) {\n cipher.notes += ('\\n' + extraPart);\n } else if (key === 'Notes') {\n if (!this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes += ('\\n' + val);\n } else {\n cipher.notes = val;\n }\n processingNotes = true;\n } else if (map.hasOwnProperty(key)) {\n dataObj[map[key]] = val;\n } else {\n this.processKvp(cipher, key, val);\n }\n });\n\n return dataObj;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class LogMeOnceCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n if (value.length < 4) {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], '--');\n cipher.login.username = this.getValueOrDefault(value[2]);\n cipher.login.password = this.getValueOrDefault(value[3]);\n cipher.login.uris = this.makeUriArray(value[1]);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class MeldiumCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.DisplayName, '--');\n cipher.notes = this.getValueOrDefault(value.Notes);\n cipher.login.username = this.getValueOrDefault(value.UserName);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.Url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nexport class MSecureCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n if (value.length < 3) {\n return;\n }\n\n const folderName = this.getValueOrDefault(value[0], 'Unassigned') !== 'Unassigned' ? value[0] : null;\n this.processFolder(result, folderName);\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[2], '--');\n\n if (value[1] === 'Web Logins' || value[1] === 'Login') {\n cipher.login.uris = this.makeUriArray(value[4]);\n cipher.login.username = this.getValueOrDefault(value[5]);\n cipher.login.password = this.getValueOrDefault(value[6]);\n cipher.notes = !this.isNullOrWhitespace(value[3]) ? value[3].split('\\\\n').join('\\n') : null;\n } else if (value.length > 3) {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n for (let i = 3; i < value.length; i++) {\n if (!this.isNullOrWhitespace(value[i])) {\n cipher.notes += (value[i] + '\\n');\n }\n }\n }\n\n if (!this.isNullOrWhitespace(value[1]) && cipher.type !== CipherType.Login) {\n cipher.name = value[1] + ': ' + cipher.name;\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nimport { CardView } from '../models/view/cardView';\nimport { IdentityView } from '../models/view/identityView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class MykiCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.nickname, '--');\n cipher.notes = this.getValueOrDefault(value.additionalInfo);\n\n if (value.url !== undefined) {\n // Accounts\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.totp = this.getValueOrDefault(value.twoFactAuthToken);\n } else if (value.cardNumber !== undefined) {\n // Cards\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n cipher.card.cardholderName = this.getValueOrDefault(value.cardName);\n cipher.card.number = this.getValueOrDefault(value.cardNumber);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.expMonth = this.getValueOrDefault(value.exp_month);\n cipher.card.expYear = this.getValueOrDefault(value.exp_year);\n cipher.card.code = this.getValueOrDefault(value.cvv);\n } else if (value.firstName !== undefined) {\n // Identities\n cipher.identity = new IdentityView();\n cipher.type = CipherType.Identity;\n cipher.identity.title = this.getValueOrDefault(value.title);\n cipher.identity.firstName = this.getValueOrDefault(value.firstName);\n cipher.identity.middleName = this.getValueOrDefault(value.middleName);\n cipher.identity.lastName = this.getValueOrDefault(value.lastName);\n cipher.identity.phone = this.getValueOrDefault(value.number);\n cipher.identity.email = this.getValueOrDefault(value.email);\n cipher.identity.address1 = this.getValueOrDefault(value.firstAddressLine);\n cipher.identity.address2 = this.getValueOrDefault(value.secondAddressLine);\n cipher.identity.city = this.getValueOrDefault(value.city);\n cipher.identity.country = this.getValueOrDefault(value.country);\n cipher.identity.postalCode = this.getValueOrDefault(value.zipCode);\n } else if (value.content !== undefined) {\n // Notes\n cipher.secureNote = new SecureNoteView();\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n cipher.name = this.getValueOrDefault(value.title, '--');\n cipher.notes = this.getValueOrDefault(value.content);\n } else {\n return;\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\nimport { CipherView } from '../models/view/cipherView';\nimport { IdentityView } from '../models/view/identityView';\nimport { PasswordHistoryView } from '../models/view/passwordHistoryView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { FieldType } from '../enums/fieldType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nexport class OnePassword1PifImporter extends BaseImporter implements Importer {\n result = new ImportResult();\n\n parse(data: string): ImportResult {\n data.split(this.newLineRegex).forEach((line) => {\n if (this.isNullOrWhitespace(line) || line[0] !== '{') {\n return;\n }\n const item = JSON.parse(line);\n if (item.trashed === true) {\n return;\n }\n const cipher = this.initLoginCipher();\n\n if (this.isNullOrWhitespace(item.hmac)) {\n this.processStandardItem(item, cipher);\n } else {\n this.processWinOpVaultItem(item, cipher);\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n\n this.result.success = true;\n return this.result;\n }\n\n private processWinOpVaultItem(item: any, cipher: CipherView) {\n if (item.overview != null) {\n cipher.name = this.getValueOrDefault(item.overview.title);\n if (item.overview.URLs != null) {\n const urls: string[] = [];\n item.overview.URLs.forEach((url: any) => {\n if (!this.isNullOrWhitespace(url.u)) {\n urls.push(url.u);\n }\n });\n cipher.login.uris = this.makeUriArray(urls);\n }\n }\n\n if (item.details != null) {\n if (item.details.passwordHistory != null) {\n this.parsePasswordHistory(item.details.passwordHistory, cipher);\n }\n if (!this.isNullOrWhitespace(item.details.ccnum) || !this.isNullOrWhitespace(item.details.cvv)) {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n } else if (!this.isNullOrWhitespace(item.details.firstname) ||\n !this.isNullOrWhitespace(item.details.address1)) {\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n }\n if (cipher.type === CipherType.Login && !this.isNullOrWhitespace(item.details.password)) {\n cipher.login.password = item.details.password;\n }\n if (!this.isNullOrWhitespace(item.details.notesPlain)) {\n cipher.notes = item.details.notesPlain.split(this.newLineRegex).join('\\n') + '\\n';\n }\n if (item.details.fields != null) {\n this.parseFields(item.details.fields, cipher, 'designation', 'value', 'name');\n }\n if (item.details.sections != null) {\n item.details.sections.forEach((section: any) => {\n if (section.fields != null) {\n this.parseFields(section.fields, cipher, 'n', 'v', 't');\n }\n });\n }\n }\n }\n\n private processStandardItem(item: any, cipher: CipherView) {\n cipher.favorite = item.openContents && item.openContents.faveIndex ? true : false;\n cipher.name = this.getValueOrDefault(item.title);\n\n if (item.typeName === 'securenotes.SecureNote') {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n } else if (item.typeName === 'wallet.financial.CreditCard') {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n } else if (item.typeName === 'identities.Identity') {\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n } else {\n cipher.login.uris = this.makeUriArray(item.location);\n }\n\n if (item.secureContents != null) {\n if (item.secureContents.passwordHistory != null) {\n this.parsePasswordHistory(item.secureContents.passwordHistory, cipher);\n }\n if (!this.isNullOrWhitespace(item.secureContents.notesPlain)) {\n cipher.notes = item.secureContents.notesPlain.split(this.newLineRegex).join('\\n') + '\\n';\n }\n if (cipher.type === CipherType.Login) {\n if (!this.isNullOrWhitespace(item.secureContents.password)) {\n cipher.login.password = item.secureContents.password;\n }\n if (item.secureContents.URLs != null) {\n const urls: string[] = [];\n item.secureContents.URLs.forEach((u: any) => {\n if (!this.isNullOrWhitespace(u.url)) {\n urls.push(u.url);\n }\n });\n if (urls.length > 0) {\n cipher.login.uris = this.makeUriArray(urls);\n }\n }\n }\n if (item.secureContents.fields != null) {\n this.parseFields(item.secureContents.fields, cipher, 'designation', 'value', 'name');\n }\n if (item.secureContents.sections != null) {\n item.secureContents.sections.forEach((section: any) => {\n if (section.fields != null) {\n this.parseFields(section.fields, cipher, 'n', 'v', 't');\n }\n });\n }\n }\n }\n\n private parsePasswordHistory(items: any[], cipher: CipherView) {\n const maxSize = items.length > 5 ? 5 : items.length;\n cipher.passwordHistory = items\n .filter((h: any) => !this.isNullOrWhitespace(h.value) && h.time != null)\n .sort((a, b) => b.time - a.time)\n .slice(0, maxSize)\n .map((h: any) => {\n const ph = new PasswordHistoryView();\n ph.password = h.value;\n ph.lastUsedDate = new Date(('' + h.time).length >= 13 ? h.time : h.time * 1000);\n return ph;\n });\n }\n\n private parseFields(fields: any[], cipher: CipherView, designationKey: string, valueKey: string, nameKey: string) {\n fields.forEach((field: any) => {\n if (field[valueKey] == null || field[valueKey].toString().trim() === '') {\n return;\n }\n\n const fieldValue = field[valueKey].toString();\n const fieldDesignation = field[designationKey] != null ? field[designationKey].toString() : null;\n\n if (cipher.type === CipherType.Login) {\n if (this.isNullOrWhitespace(cipher.login.username) && fieldDesignation === 'username') {\n cipher.login.username = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(cipher.login.password) && fieldDesignation === 'password') {\n cipher.login.password = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(cipher.login.totp) && fieldDesignation != null &&\n fieldDesignation.startsWith('TOTP_')) {\n cipher.login.totp = fieldValue;\n return;\n }\n } else if (cipher.type === CipherType.Card) {\n if (this.isNullOrWhitespace(cipher.card.number) && fieldDesignation === 'ccnum') {\n cipher.card.number = fieldValue;\n cipher.card.brand = this.getCardBrand(fieldValue);\n return;\n } else if (this.isNullOrWhitespace(cipher.card.code) && fieldDesignation === 'cvv') {\n cipher.card.code = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(cipher.card.cardholderName) && fieldDesignation === 'cardholder') {\n cipher.card.cardholderName = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(cipher.card.expiration) && fieldDesignation === 'expiry' &&\n fieldValue.length === 6) {\n cipher.card.expMonth = (fieldValue as string).substr(4, 2);\n if (cipher.card.expMonth[0] === '0') {\n cipher.card.expMonth = cipher.card.expMonth.substr(1, 1);\n }\n cipher.card.expYear = (fieldValue as string).substr(0, 4);\n return;\n } else if (fieldDesignation === 'type') {\n // Skip since brand was determined from number above\n return;\n }\n } else if (cipher.type === CipherType.Identity) {\n const identity = cipher.identity;\n if (this.isNullOrWhitespace(identity.firstName) && fieldDesignation === 'firstname') {\n identity.firstName = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.lastName) && fieldDesignation === 'lastname') {\n identity.lastName = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.middleName) && fieldDesignation === 'initial') {\n identity.middleName = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.phone) && fieldDesignation === 'defphone') {\n identity.phone = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.company) && fieldDesignation === 'company') {\n identity.company = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.email) && fieldDesignation === 'email') {\n identity.email = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.username) && fieldDesignation === 'username') {\n identity.username = fieldValue;\n return;\n } else if (fieldDesignation === 'address') {\n // fieldValue is an object casted into a string, so access the plain value instead\n const { street, city, country, zip } = field[valueKey];\n identity.address1 = this.getValueOrDefault(street);\n identity.city = this.getValueOrDefault(city);\n if (!this.isNullOrWhitespace(country)) {\n identity.country = country.toUpperCase();\n }\n identity.postalCode = this.getValueOrDefault(zip);\n return;\n }\n }\n\n const fieldName = this.isNullOrWhitespace(field[nameKey]) ? 'no_name' : field[nameKey];\n if (fieldName === 'password' && cipher.passwordHistory != null &&\n cipher.passwordHistory.some((h) => h.password === fieldValue)) {\n return;\n }\n\n const fieldType = field.k === 'concealed' ? FieldType.Hidden : FieldType.Text;\n this.processKvp(cipher, fieldName, fieldValue, fieldType);\n });\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherType } from '../enums/cipherType';\nimport { CardView } from '../models/view';\n\nconst IgnoredProperties = ['ainfo', 'autosubmit', 'notesplain', 'ps', 'scope', 'tags', 'title', 'uuid'];\n\nexport class OnePasswordWinCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n if (this.isNullOrWhitespace(this.getProp(value, 'title'))) {\n return;\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(this.getProp(value, 'title'), '--');\n cipher.notes = this.getValueOrDefault(this.getProp(value, 'notesPlain'), '') + '\\n';\n\n if (!this.isNullOrWhitespace(this.getProp(value, 'number')) &&\n !this.isNullOrWhitespace(this.getProp(value, 'expiry date'))) {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n }\n\n let altUsername: string = null;\n for (const property in value) {\n if (!value.hasOwnProperty(property) || this.isNullOrWhitespace(value[property])) {\n continue;\n }\n\n const lowerProp = property.toLowerCase();\n if (cipher.type === CipherType.Login) {\n if (this.isNullOrWhitespace(cipher.login.password) && lowerProp === 'password') {\n cipher.login.password = value[property];\n continue;\n } else if (this.isNullOrWhitespace(cipher.login.username) && lowerProp === 'username') {\n cipher.login.username = value[property];\n continue;\n } else if ((cipher.login.uris == null || cipher.login.uri.length === 0) && lowerProp === 'urls') {\n const urls = value[property].split(this.newLineRegex);\n cipher.login.uris = this.makeUriArray(urls);\n continue;\n }\n } else if (cipher.type === CipherType.Card) {\n if (this.isNullOrWhitespace(cipher.card.number) && lowerProp === 'number') {\n cipher.card.number = value[property];\n cipher.card.brand = this.getCardBrand(this.getProp(value, 'number'));\n continue;\n } else if (this.isNullOrWhitespace(cipher.card.code) && lowerProp === 'verification number') {\n cipher.card.code = value[property];\n continue;\n } else if (this.isNullOrWhitespace(cipher.card.cardholderName) && lowerProp === 'cardholder name') {\n cipher.card.cardholderName = value[property];\n continue;\n } else if (this.isNullOrWhitespace(cipher.card.expiration) && lowerProp === 'expiry date' &&\n value[property].length === 6) {\n cipher.card.expMonth = (value[property] as string).substr(4, 2);\n if (cipher.card.expMonth[0] === '0') {\n cipher.card.expMonth = cipher.card.expMonth.substr(1, 1);\n }\n cipher.card.expYear = (value[property] as string).substr(0, 4);\n continue;\n } else if (lowerProp === 'type') {\n // Skip since brand was determined from number above\n continue;\n }\n }\n\n if (IgnoredProperties.indexOf(lowerProp) === -1 && !lowerProp.startsWith('section:') &&\n !lowerProp.startsWith('section ')) {\n if (altUsername == null && lowerProp === 'email') {\n altUsername = value[property];\n }\n this.processKvp(cipher, property, value[property]);\n }\n }\n\n if (cipher.type === CipherType.Login && !this.isNullOrWhitespace(altUsername) &&\n this.isNullOrWhitespace(cipher.login.username) && altUsername.indexOf('://') === -1) {\n cipher.login.username = altUsername;\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\n }\n\n private getProp(obj: any, name: string): any {\n return obj[name] || obj[name.toUpperCase()];\n }\n}\n","export { AttachmentView } from './attachmentView';\nexport { CardView } from './cardView';\nexport { CipherView } from './cipherView';\nexport { FieldView } from './fieldView';\nexport { IdentityView } from './identityView';\nexport { LoginUriView } from './loginUriView';\nexport { LoginView } from './loginView';\nexport { SecureNoteView } from './secureNoteView';\nexport { View } from './view';\n","export class View {\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CollectionView } from '../models/view/collectionView';\nimport { FolderView } from '../models/view/folderView';\n\nexport class PadlockCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n let headers: string[] = null;\n results.forEach((value) => {\n if (headers == null) {\n headers = value.map((v: string) => v);\n return;\n }\n\n if (value.length < 2 || value.length !== headers.length) {\n return;\n }\n\n if (!this.isNullOrWhitespace(value[1])) {\n if (this.organization) {\n const tags = (value[1] as string).split(',');\n tags.forEach((tag) => {\n tag = tag.trim();\n let addCollection = true;\n let collectionIndex = result.collections.length;\n\n for (let i = 0; i < result.collections.length; i++) {\n if (result.collections[i].name === tag) {\n addCollection = false;\n collectionIndex = i;\n break;\n }\n }\n\n if (addCollection) {\n const collection = new CollectionView();\n collection.name = tag;\n result.collections.push(collection);\n }\n\n result.collectionRelationships.push([result.ciphers.length, collectionIndex]);\n });\n } else {\n const tags = (value[1] as string).split(',');\n const tag = tags.length > 0 ? tags[0].trim() : null;\n this.processFolder(result, tag);\n }\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], '--');\n\n for (let i = 2; i < value.length; i++) {\n const header = headers[i].trim().toLowerCase();\n if (this.isNullOrWhitespace(value[i]) || this.isNullOrWhitespace(header)) {\n continue;\n }\n\n if (this.usernameFieldNames.indexOf(header) > -1) {\n cipher.login.username = value[i];\n } else if (this.passwordFieldNames.indexOf(header) > -1) {\n cipher.login.password = value[i];\n } else if (this.uriFieldNames.indexOf(header) > -1) {\n cipher.login.uris = this.makeUriArray(value[i]);\n } else {\n this.processKvp(cipher, headers[i], value[i]);\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PassKeepCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n this.processFolder(result, this.getValue('category', value));\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValue('description', value);\n cipher.name = this.getValueOrDefault(this.getValue('title', value), '--');\n cipher.login.username = this.getValue('username', value);\n cipher.login.password = this.getValue('password', value);\n cipher.login.uris = this.makeUriArray(this.getValue('site', value));\n this.processKvp(cipher, 'Password 2', this.getValue('password2', value));\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return result;\n }\n\n private getValue(key: string, value: any) {\n return this.getValueOrDefault(value[key], this.getValueOrDefault(value[(' ' + key)]));\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PassmanJsonImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.length === 0) {\n result.success = false;\n return result;\n }\n\n results.forEach((credential: any) => {\n if (credential.tags != null && credential.tags.length > 0) {\n const folderName = credential.tags[0].text;\n this.processFolder(result, folderName);\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = credential.label;\n\n cipher.login.username = this.getValueOrDefault(credential.username);\n if (this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = this.getValueOrDefault(credential.email);\n } else if (!this.isNullOrWhitespace(credential.email)) {\n cipher.notes = ('Email: ' + credential.email + '\\n');\n }\n\n cipher.login.password = this.getValueOrDefault(credential.password);\n cipher.login.uris = this.makeUriArray(credential.url);\n cipher.notes += this.getValueOrDefault(credential.description, '');\n if (credential.otp != null) {\n cipher.login.totp = this.getValueOrDefault(credential.otp.secret);\n }\n\n if (credential.custom_fields != null) {\n credential.custom_fields.forEach((customField: any) => {\n switch (customField.field_type) {\n case 'text':\n case 'password':\n this.processKvp(cipher, customField.label, customField.value);\n break;\n }\n });\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CollectionView } from '../models/view/collectionView';\n\nexport class PasspackCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n const tagsJson = !this.isNullOrWhitespace(value.Tags) ? JSON.parse(value.Tags) : null;\n const tags: string[] = tagsJson != null && tagsJson.tags != null && tagsJson.tags.length > 0 ?\n tagsJson.tags.map((tagJson: string) => {\n try {\n const t = JSON.parse(tagJson);\n return this.getValueOrDefault(t.tag);\n } catch { }\n return null;\n }).filter((t: string) => !this.isNullOrWhitespace(t)) : null;\n\n if (this.organization && tags != null && tags.length > 0) {\n tags.forEach((tag) => {\n let addCollection = true;\n let collectionIndex = result.collections.length;\n\n for (let i = 0; i < result.collections.length; i++) {\n if (result.collections[i].name === tag) {\n addCollection = false;\n collectionIndex = i;\n break;\n }\n }\n\n if (addCollection) {\n const collection = new CollectionView();\n collection.name = tag;\n result.collections.push(collection);\n }\n\n result.collectionRelationships.push([result.ciphers.length, collectionIndex]);\n });\n } else if (!this.organization && tags != null && tags.length > 0) {\n this.processFolder(result, tags[0]);\n }\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value.Notes, '');\n cipher.notes += ('\\n\\n' + this.getValueOrDefault(value['Shared Notes'], '') + '\\n');\n cipher.name = this.getValueOrDefault(value['Entry Name'], '--');\n cipher.login.username = this.getValueOrDefault(value['User ID']);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.URL);\n\n if (value.__parsed_extra != null && value.__parsed_extra.length > 0) {\n value.__parsed_extra.forEach((extra: string) => {\n if (!this.isNullOrWhitespace(extra)) {\n cipher.notes += ('\\n' + extra);\n }\n });\n }\n\n const fieldsJson = !this.isNullOrWhitespace(value['Extra Fields']) ?\n JSON.parse(value['Extra Fields']) : null;\n const fields = fieldsJson != null && fieldsJson.extraFields != null &&\n fieldsJson.extraFields.length > 0 ? fieldsJson.extraFields.map((fieldJson: string) => {\n try {\n return JSON.parse(fieldJson);\n } catch { }\n return null;\n }) : null;\n if (fields != null) {\n fields.forEach((f: any) => {\n if (f != null) {\n this.processKvp(cipher, f.name, f.data);\n }\n });\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PasswordAgentCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n let newVersion = true;\n results.forEach((value) => {\n if (value.length !== 5 && value.length < 9) {\n return;\n }\n const altFormat = value.length === 10 && value[0] === '0';\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[altFormat ? 1 : 0], '--');\n cipher.login.username = this.getValueOrDefault(value[altFormat ? 2 : 1]);\n cipher.login.password = this.getValueOrDefault(value[altFormat ? 3 : 2]);\n if (value.length === 5) {\n newVersion = false;\n cipher.notes = this.getValueOrDefault(value[4]);\n cipher.login.uris = this.makeUriArray(value[3]);\n } else {\n const folder = this.getValueOrDefault(value[altFormat ? 9 : 8], '(None)');\n let folderName = folder !== '(None)' ? folder.split('\\\\').join('/') : null;\n if (folderName != null) {\n folderName = folder.split(' > ').join('/');\n folderName = folder.split('>').join('/');\n }\n this.processFolder(result, folderName);\n cipher.notes = this.getValueOrDefault(value[altFormat ? 5 : 3]);\n cipher.login.uris = this.makeUriArray(value[4]);\n }\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (newVersion && this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\nimport { FolderView } from '../models/view/folderView';\n\nimport { CipherType } from '../enums/cipherType';\n\nexport class PasswordBossJsonImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.items == null) {\n result.success = false;\n return result;\n }\n\n const foldersMap = new Map();\n results.folders.forEach((value: any) => {\n foldersMap.set(value.id, value.name);\n });\n const foldersIndexMap = new Map();\n foldersMap.forEach((val, key) => {\n foldersIndexMap.set(key, result.folders.length);\n const f = new FolderView();\n f.name = val;\n result.folders.push(f);\n });\n\n results.items.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name, '--');\n cipher.login.uris = this.makeUriArray(value.login_url);\n\n if (value.folder != null && foldersIndexMap.has(value.folder)) {\n result.folderRelationships.push([result.ciphers.length, foldersIndexMap.get(value.folder)]);\n }\n\n if (value.identifiers == null) {\n return;\n }\n\n if (!this.isNullOrWhitespace(value.identifiers.notes)) {\n cipher.notes = value.identifiers.notes.split('\\\\r\\\\n').join('\\n').split('\\\\n').join('\\n');\n }\n\n if (value.type === 'CreditCard') {\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n }\n\n for (const property in value.identifiers) {\n if (!value.identifiers.hasOwnProperty(property)) {\n continue;\n }\n const valObj = value.identifiers[property];\n const val = valObj != null ? valObj.toString() : null;\n if (this.isNullOrWhitespace(val) || property === 'notes' || property === 'ignoreItemInSecurityScore') {\n continue;\n }\n\n if (property === 'custom_fields') {\n valObj.forEach((cf: any) => {\n this.processKvp(cipher, cf.name, cf.value);\n });\n continue;\n }\n\n if (cipher.type === CipherType.Card) {\n if (property === 'cardNumber') {\n cipher.card.number = val;\n cipher.card.brand = this.getCardBrand(val);\n continue;\n } else if (property === 'nameOnCard') {\n cipher.card.cardholderName = val;\n continue;\n } else if (property === 'security_code') {\n cipher.card.code = val;\n continue;\n } else if (property === 'expires') {\n try {\n const expDate = new Date(val);\n cipher.card.expYear = expDate.getFullYear().toString();\n cipher.card.expMonth = (expDate.getMonth() + 1).toString();\n } catch { }\n continue;\n } else if (property === 'cardType') {\n continue;\n }\n } else {\n if ((property === 'username' || property === 'email') &&\n this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = val;\n continue;\n } else if (property === 'password') {\n cipher.login.password = val;\n continue;\n } else if (property === 'totp') {\n cipher.login.totp = val;\n continue;\n } else if ((cipher.login.uris == null || cipher.login.uris.length === 0) &&\n this.uriFieldNames.indexOf(property) > -1) {\n cipher.login.uris = this.makeUriArray(val);\n continue;\n }\n }\n\n this.processKvp(cipher, property, val);\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PasswordDragonXmlImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return result;\n }\n\n const records = doc.querySelectorAll('PasswordManager > record');\n Array.from(records).forEach((record) => {\n const category = this.querySelectorDirectChild(record, 'Category');\n const categoryText = category != null && !this.isNullOrWhitespace(category.textContent) &&\n category.textContent !== 'Unfiled' ? category.textContent : null;\n this.processFolder(result, categoryText);\n\n const accountName = this.querySelectorDirectChild(record, 'Account-Name');\n const userId = this.querySelectorDirectChild(record, 'User-Id');\n const password = this.querySelectorDirectChild(record, 'Password');\n const url = this.querySelectorDirectChild(record, 'URL');\n const notes = this.querySelectorDirectChild(record, 'Notes');\n const cipher = this.initLoginCipher();\n cipher.name = accountName != null ? this.getValueOrDefault(accountName.textContent, '--') : '--';\n cipher.notes = notes != null ? this.getValueOrDefault(notes.textContent) : '';\n cipher.login.username = userId != null ? this.getValueOrDefault(userId.textContent) : null;\n cipher.login.password = password != null ? this.getValueOrDefault(password.textContent) : null;\n cipher.login.uris = url != null ? this.makeUriArray(url.textContent) : null;\n\n const attributes: string[] = [];\n for (let i = 1; i <= 10; i++) {\n attributes.push('Attribute-' + i);\n }\n\n this.querySelectorAllDirectChild(record, attributes.join(',')).forEach((attr) => {\n if (this.isNullOrWhitespace(attr.textContent) || attr.textContent === 'null') {\n return;\n }\n this.processKvp(cipher, attr.tagName, attr.textContent);\n });\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PasswordSafeXmlImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return result;\n }\n\n const passwordSafe = doc.querySelector('passwordsafe');\n if (passwordSafe == null) {\n result.errorMessage = 'Missing `passwordsafe` node.';\n result.success = false;\n return result;\n }\n\n const notesDelimiter = passwordSafe.getAttribute('delimiter');\n const entries = doc.querySelectorAll('passwordsafe > entry');\n Array.from(entries).forEach((entry) => {\n const group = this.querySelectorDirectChild(entry, 'group');\n const groupText = group != null && !this.isNullOrWhitespace(group.textContent) ?\n group.textContent.split('.').join('/') : null;\n this.processFolder(result, groupText);\n\n const title = this.querySelectorDirectChild(entry, 'title');\n const username = this.querySelectorDirectChild(entry, 'username');\n const email = this.querySelectorDirectChild(entry, 'email');\n const password = this.querySelectorDirectChild(entry, 'password');\n const url = this.querySelectorDirectChild(entry, 'url');\n const notes = this.querySelectorDirectChild(entry, 'notes');\n const cipher = this.initLoginCipher();\n cipher.name = title != null ? this.getValueOrDefault(title.textContent, '--') : '--';\n cipher.notes = notes != null ?\n this.getValueOrDefault(notes.textContent, '').split(notesDelimiter).join('\\n') : null;\n cipher.login.username = username != null ? this.getValueOrDefault(username.textContent) : null;\n cipher.login.password = password != null ? this.getValueOrDefault(password.textContent) : null;\n cipher.login.uris = url != null ? this.makeUriArray(url.textContent) : null;\n\n if (this.isNullOrWhitespace(cipher.login.username) && email != null) {\n cipher.login.username = this.getValueOrDefault(email.textContent);\n } else if (email != null && !this.isNullOrWhitespace(email.textContent)) {\n cipher.notes = this.isNullOrWhitespace(cipher.notes) ? 'Email: ' + email.textContent\n : (cipher.notes + '\\n' + 'Email: ' + email.textContent);\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PasswordWalletTxtImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n if (value.length < 1) {\n return;\n }\n if (value.length > 5) {\n this.processFolder(result, value[5]);\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], '--');\n if (value.length > 4) {\n cipher.notes = this.getValueOrDefault(value[4], '').split('¬').join('\\n');\n }\n if (value.length > 2) {\n cipher.login.username = this.getValueOrDefault(value[2]);\n }\n if (value.length > 3) {\n cipher.login.password = this.getValueOrDefault(value[3]);\n }\n if (value.length > 1) {\n cipher.login.uris = this.makeUriArray(value[1]);\n }\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { CipherType } from '../enums/cipherType';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\n\nexport class RememBearCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n if (value.trash === 'true') {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name);\n cipher.notes = this.getValueOrDefault(value.notes);\n if (value.type === 'LoginItem') {\n cipher.login.uris = this.makeUriArray(value.website);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.username = this.getValueOrDefault(value.username);\n } else if (value.type === 'CreditCardItem') {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value.cardholder);\n cipher.card.number = this.getValueOrDefault(value.number);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.code = this.getValueOrDefault(value.verification);\n\n try {\n const expMonth = this.getValueOrDefault(value.expiryMonth);\n if (expMonth != null) {\n const expMonthNumber = parseInt(expMonth, null);\n if (expMonthNumber != null && expMonthNumber >= 1 && expMonthNumber <= 12) {\n cipher.card.expMonth = expMonthNumber.toString();\n }\n }\n } catch { }\n try {\n const expYear = this.getValueOrDefault(value.expiryYear);\n if (expYear != null) {\n const expYearNumber = parseInt(expYear, null);\n if (expYearNumber != null) {\n cipher.card.expYear = expYearNumber.toString();\n }\n }\n } catch { }\n\n const pin = this.getValueOrDefault(value.pin);\n if (pin != null) {\n this.processKvp(cipher, 'PIN', pin);\n }\n const zip = this.getValueOrDefault(value.zipCode);\n if (zip != null) {\n this.processKvp(cipher, 'Zip Code', zip);\n }\n }\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class RoboFormCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n let i = 1;\n results.forEach((value) => {\n const folder = !this.isNullOrWhitespace(value.Folder) && value.Folder.startsWith('/') ?\n value.Folder.replace('/', '') : value.Folder;\n const folderName = !this.isNullOrWhitespace(folder) ? folder : null;\n this.processFolder(result, folderName);\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value.Note);\n cipher.name = this.getValueOrDefault(value.Name, '--');\n cipher.login.username = this.getValueOrDefault(value.Login);\n cipher.login.password = this.getValueOrDefault(value.Pwd);\n cipher.login.uris = this.makeUriArray(value.Url);\n\n if (!this.isNullOrWhitespace(value.Rf_fields)) {\n let fields: string[] = [value.Rf_fields];\n if (value.__parsed_extra != null && value.__parsed_extra.length > 0) {\n fields = fields.concat(value.__parsed_extra);\n }\n fields.forEach((field: string) => {\n const parts = field.split(':');\n if (parts.length < 3) {\n return;\n }\n const key = parts[0] === '-no-name-' ? null : parts[0];\n const val = parts.length === 4 && parts[2] === 'rck' ? parts[1] : parts[2];\n this.processKvp(cipher, key, val);\n });\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n\n if (i === results.length && cipher.name === '--' && this.isNullOrWhitespace(cipher.login.password)) {\n return;\n }\n\n result.ciphers.push(cipher);\n i++;\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { FolderView } from '../models/view/folderView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nexport class SafeInCloudXmlImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return result;\n }\n\n const db = doc.querySelector('database');\n if (db == null) {\n result.errorMessage = 'Missing `database` node.';\n result.success = false;\n return result;\n }\n\n const foldersMap = new Map();\n\n Array.from(doc.querySelectorAll('database > label')).forEach((labelEl) => {\n const name = labelEl.getAttribute('name');\n const id = labelEl.getAttribute('id');\n if (!this.isNullOrWhitespace(name) && !this.isNullOrWhitespace(id)) {\n foldersMap.set(id, result.folders.length);\n const folder = new FolderView();\n folder.name = name;\n result.folders.push(folder);\n }\n });\n\n Array.from(doc.querySelectorAll('database > card')).forEach((cardEl) => {\n if (cardEl.getAttribute('template') === 'true') {\n return;\n }\n\n const labelIdEl = this.querySelectorDirectChild(cardEl, 'label_id');\n if (labelIdEl != null) {\n const labelId = labelIdEl.textContent;\n if (!this.isNullOrWhitespace(labelId) && foldersMap.has(labelId)) {\n result.folderRelationships.push([result.ciphers.length, foldersMap.get(labelId)]);\n }\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(cardEl.getAttribute('title'), '--');\n\n const cardType = cardEl.getAttribute('type');\n if (cardType === 'note') {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n } else {\n Array.from(this.querySelectorAllDirectChild(cardEl, 'field')).forEach((fieldEl) => {\n const text = fieldEl.textContent;\n if (this.isNullOrWhitespace(text)) {\n return;\n }\n const name = fieldEl.getAttribute('name');\n const fieldType = this.getValueOrDefault(fieldEl.getAttribute('type'), '').toLowerCase();\n if (fieldType === 'login') {\n cipher.login.username = text;\n } else if (fieldType === 'password') {\n cipher.login.password = text;\n } else if (fieldType === 'one_time_password') {\n cipher.login.totp = text;\n } else if (fieldType === 'notes') {\n cipher.notes += (text + '\\n');\n } else if (fieldType === 'weblogin' || fieldType === 'website') {\n cipher.login.uris = this.makeUriArray(text);\n } else {\n this.processKvp(cipher, name, text);\n }\n });\n }\n\n Array.from(this.querySelectorAllDirectChild(cardEl, 'notes')).forEach((notesEl) => {\n cipher.notes += (notesEl.textContent + '\\n');\n });\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class SaferPassCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(this.nameFromUrl(value.url), '--');\n cipher.notes = this.getValueOrDefault(value.notes);\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class SecureSafeCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.Title);\n cipher.notes = this.getValueOrDefault(value.Comment);\n cipher.login.uris = this.makeUriArray(value.Url);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.username = this.getValueOrDefault(value.Username);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\nimport { CipherView } from '../models/view/cipherView';\n\nexport class SplashIdCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n if (value.length < 3) {\n return;\n }\n\n this.processFolder(result, this.getValueOrDefault(value[value.length - 1]));\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[value.length - 2], '');\n cipher.name = this.getValueOrDefault(value[1], '--');\n\n if (value[0] === 'Web Logins' || value[0] === 'Servers' || value[0] === 'Email Accounts') {\n cipher.login.username = this.getValueOrDefault(value[2]);\n cipher.login.password = this.getValueOrDefault(value[3]);\n cipher.login.uris = this.makeUriArray(value[4]);\n this.parseFieldsToNotes(cipher, 5, value);\n } else {\n this.parseFieldsToNotes(cipher, 2, value);\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return result;\n }\n\n private parseFieldsToNotes(cipher: CipherView, startIndex: number, value: any) {\n // last 3 rows do not get parsed\n for (let i = startIndex; i < value.length - 3; i++) {\n if (this.isNullOrWhitespace(value[i])) {\n continue;\n }\n cipher.notes += (value[i] + '\\n');\n }\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class StickyPasswordXmlImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return result;\n }\n\n const loginNodes = doc.querySelectorAll('root > Database > Logins > Login');\n Array.from(loginNodes).forEach((loginNode) => {\n const accountId = loginNode.getAttribute('ID');\n if (this.isNullOrWhitespace(accountId)) {\n return;\n }\n\n const usernameText = loginNode.getAttribute('Name');\n const passwordText = loginNode.getAttribute('Password');\n let titleText: string = null;\n let linkText: string = null;\n let notesText: string = null;\n let groupId: string = null;\n let groupText: string = null;\n\n const accountLogin = doc.querySelector('root > Database > Accounts > Account > ' +\n 'LoginLinks > Login[SourceLoginID=\"' + accountId + '\"]');\n if (accountLogin != null) {\n const account = accountLogin.parentElement.parentElement;\n if (account != null) {\n titleText = account.getAttribute('Name');\n linkText = account.getAttribute('Link');\n groupId = account.getAttribute('ParentID');\n notesText = account.getAttribute('Comments');\n if (!this.isNullOrWhitespace(notesText)) {\n notesText = notesText.split('/n').join('\\n');\n }\n }\n }\n\n if (!this.isNullOrWhitespace(groupId)) {\n groupText = this.buildGroupText(doc, groupId, '');\n this.processFolder(result, groupText);\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(titleText, '--');\n cipher.notes = this.getValueOrDefault(notesText);\n cipher.login.username = this.getValueOrDefault(usernameText);\n cipher.login.password = this.getValueOrDefault(passwordText);\n cipher.login.uris = this.makeUriArray(linkText);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return result;\n }\n\n buildGroupText(doc: Document, groupId: string, groupText: string): string {\n const group = doc.querySelector('root > Database > Groups > Group[ID=\"' + groupId + '\"]');\n if (group == null) {\n return groupText;\n }\n if (!this.isNullOrWhitespace(groupText)) {\n groupText = '/' + groupText;\n }\n groupText = group.getAttribute('Name') + groupText;\n return this.buildGroupText(doc, group.getAttribute('ParentID'), groupText);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nconst PropertiesToIgnore = ['kind', 'autologin', 'favorite', 'hexcolor', 'protectedwithpassword', 'subdomainonly',\n 'type', 'tk_export_version', 'note', 'title', 'document_content',\n];\n\nexport class TrueKeyCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.favorite = this.getValueOrDefault(value.favorite, '').toLowerCase() === 'true';\n cipher.name = this.getValueOrDefault(value.name, '--');\n cipher.notes = this.getValueOrDefault(value.memo, '');\n cipher.login.username = this.getValueOrDefault(value.login);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n\n if (value.kind !== 'login') {\n cipher.name = this.getValueOrDefault(value.title, '--');\n cipher.notes = this.getValueOrDefault(value.note, '');\n }\n\n if (value.kind === 'cc') {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value.cardholder);\n cipher.card.number = this.getValueOrDefault(value.number);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n if (!this.isNullOrWhitespace(value.expiryDate)) {\n try {\n const expDate = new Date(value.expiryDate);\n cipher.card.expYear = expDate.getFullYear().toString();\n cipher.card.expMonth = (expDate.getMonth() + 1).toString();\n } catch { }\n }\n } else if (value.kind !== 'login') {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n if (!this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes = this.getValueOrDefault(value.document_content, '');\n }\n for (const property in value) {\n if (value.hasOwnProperty(property) && PropertiesToIgnore.indexOf(property.toLowerCase()) < 0 &&\n !this.isNullOrWhitespace(value[property])) {\n this.processKvp(cipher, property, value[property]);\n }\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class UpmCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n if (value.length !== 5) {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], '--');\n cipher.notes = this.getValueOrDefault(value[4]);\n cipher.login.username = this.getValueOrDefault(value[1]);\n cipher.login.password = this.getValueOrDefault(value[2]);\n cipher.login.uris = this.makeUriArray(value[3]);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return result;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\nimport { CipherView } from '../models/view';\n\nexport class ZohoVaultCsvImporter extends BaseImporter implements Importer {\n parse(data: string): ImportResult {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return result;\n }\n\n results.forEach((value) => {\n if (this.isNullOrWhitespace(value['Password Name']) && this.isNullOrWhitespace(value['Secret Name'])) {\n return;\n }\n this.processFolder(result, this.getValueOrDefault(value.ChamberName));\n const cipher = this.initLoginCipher();\n cipher.favorite = this.getValueOrDefault(value.Favorite, '0') === '1';\n cipher.notes = this.getValueOrDefault(value.Notes);\n cipher.name = this.getValueOrDefault(\n value['Password Name'], this.getValueOrDefault(value['Secret Name'], '--'));\n cipher.login.uris = this.makeUriArray(\n this.getValueOrDefault(value['Password URL'], this.getValueOrDefault(value['Secret URL'])));\n this.parseData(cipher, value.SecretData);\n this.parseData(cipher, value.CustomData);\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return result;\n }\n\n private parseData(cipher: CipherView, data: string) {\n if (this.isNullOrWhitespace(data)) {\n return;\n }\n const dataLines = this.splitNewLine(data);\n dataLines.forEach((line) => {\n const delimPosition = line.indexOf(':');\n if (delimPosition < 0) {\n return;\n }\n const field = line.substring(0, delimPosition);\n const value = line.length > delimPosition ? line.substring(delimPosition + 1) : null;\n if (this.isNullOrWhitespace(field) || this.isNullOrWhitespace(value) || field === 'SecretType') {\n return;\n }\n const fieldLower = field.toLowerCase();\n if (cipher.login.username == null && this.usernameFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.username = value;\n } else if (cipher.login.password == null && this.passwordFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.password = value;\n } else {\n this.processKvp(cipher, field, value);\n }\n });\n }\n}\n","import * as signalR from '@microsoft/signalr';\nimport * as signalRMsgPack from '@microsoft/signalr-protocol-msgpack';\n\nimport { NotificationType } from '../enums/notificationType';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { AppIdService } from '../abstractions/appId.service';\nimport { EnvironmentService } from '../abstractions/environment.service';\nimport { NotificationsService as NotificationsServiceAbstraction } from '../abstractions/notifications.service';\nimport { SyncService } from '../abstractions/sync.service';\nimport { UserService } from '../abstractions/user.service';\nimport { VaultTimeoutService } from '../abstractions/vaultTimeout.service';\n\nimport {\n NotificationResponse,\n SyncCipherNotification,\n SyncFolderNotification,\n} from '../models/response/notificationResponse';\n\nexport class NotificationsService implements NotificationsServiceAbstraction {\n private signalrConnection: signalR.HubConnection;\n private url: string;\n private connected = false;\n private inited = false;\n private inactive = false;\n private reconnectTimer: any = null;\n\n constructor(private userService: UserService, private syncService: SyncService,\n private appIdService: AppIdService, private apiService: ApiService,\n private vaultTimeoutService: VaultTimeoutService, private logoutCallback: () => Promise) { }\n\n async init(environmentService: EnvironmentService): Promise {\n this.inited = false;\n this.url = 'https://notifications.bitwarden.com';\n if (environmentService.notificationsUrl != null) {\n this.url = environmentService.notificationsUrl;\n } else if (environmentService.baseUrl != null) {\n this.url = environmentService.baseUrl + '/notifications';\n }\n\n // Set notifications server URL to `https://-` to effectively disable communication\n // with the notifications server from the client app\n if (this.url === 'https://-') {\n return;\n }\n\n if (this.signalrConnection != null) {\n this.signalrConnection.off('ReceiveMessage');\n this.signalrConnection.off('Heartbeat');\n await this.signalrConnection.stop();\n this.connected = false;\n this.signalrConnection = null;\n }\n\n this.signalrConnection = new signalR.HubConnectionBuilder()\n .withUrl(this.url + '/hub', {\n accessTokenFactory: () => this.apiService.getActiveBearerToken(),\n skipNegotiation: true,\n transport: signalR.HttpTransportType.WebSockets,\n })\n .withHubProtocol(new signalRMsgPack.MessagePackHubProtocol())\n // .configureLogging(signalR.LogLevel.Trace)\n .build();\n\n this.signalrConnection.on('ReceiveMessage',\n (data: any) => this.processNotification(new NotificationResponse(data)));\n this.signalrConnection.on('Heartbeat',\n (data: any) => { /*console.log('Heartbeat!');*/ });\n this.signalrConnection.onclose(() => {\n this.connected = false;\n this.reconnect(true);\n });\n this.inited = true;\n if (await this.isAuthedAndUnlocked()) {\n await this.reconnect(false);\n }\n }\n\n async updateConnection(sync = false): Promise {\n if (!this.inited) {\n return;\n }\n try {\n if (await this.isAuthedAndUnlocked()) {\n await this.reconnect(sync);\n } else {\n await this.signalrConnection.stop();\n }\n } catch (e) {\n // tslint:disable-next-line\n console.error(e.toString());\n }\n }\n\n async reconnectFromActivity(): Promise {\n this.inactive = false;\n if (this.inited && !this.connected) {\n await this.reconnect(true);\n }\n }\n\n async disconnectFromInactivity(): Promise {\n this.inactive = true;\n if (this.inited && this.connected) {\n await this.signalrConnection.stop();\n }\n }\n\n private async processNotification(notification: NotificationResponse) {\n const appId = await this.appIdService.getAppId();\n if (notification == null || notification.contextId === appId) {\n return;\n }\n\n const isAuthenticated = await this.userService.isAuthenticated();\n const payloadUserId = notification.payload.userId || notification.payload.UserId;\n const myUserId = await this.userService.getUserId();\n if (isAuthenticated && payloadUserId != null && payloadUserId !== myUserId) {\n return;\n }\n\n switch (notification.type) {\n case NotificationType.SyncCipherCreate:\n case NotificationType.SyncCipherUpdate:\n await this.syncService.syncUpsertCipher(notification.payload as SyncCipherNotification,\n notification.type === NotificationType.SyncCipherUpdate);\n break;\n case NotificationType.SyncCipherDelete:\n case NotificationType.SyncLoginDelete:\n await this.syncService.syncDeleteCipher(notification.payload as SyncCipherNotification);\n break;\n case NotificationType.SyncFolderCreate:\n case NotificationType.SyncFolderUpdate:\n await this.syncService.syncUpsertFolder(notification.payload as SyncFolderNotification,\n notification.type === NotificationType.SyncFolderUpdate);\n break;\n case NotificationType.SyncFolderDelete:\n await this.syncService.syncDeleteFolder(notification.payload as SyncFolderNotification);\n break;\n case NotificationType.SyncVault:\n case NotificationType.SyncCiphers:\n case NotificationType.SyncSettings:\n if (isAuthenticated) {\n await this.syncService.fullSync(false);\n }\n break;\n case NotificationType.SyncOrgKeys:\n if (isAuthenticated) {\n await this.apiService.refreshIdentityToken();\n await this.syncService.fullSync(true);\n // Stop so a reconnect can be made\n await this.signalrConnection.stop();\n }\n break;\n case NotificationType.LogOut:\n if (isAuthenticated) {\n this.logoutCallback();\n }\n break;\n default:\n break;\n }\n }\n\n private async reconnect(sync: boolean) {\n if (this.reconnectTimer != null) {\n clearTimeout(this.reconnectTimer);\n this.reconnectTimer = null;\n }\n if (this.connected || !this.inited || this.inactive) {\n return;\n }\n const authedAndUnlocked = await this.isAuthedAndUnlocked();\n if (!authedAndUnlocked) {\n return;\n }\n\n try {\n await this.signalrConnection.start();\n this.connected = true;\n if (sync) {\n await this.syncService.fullSync(false);\n }\n } catch { }\n\n if (!this.connected) {\n this.reconnectTimer = setTimeout(() => this.reconnect(sync), this.random(120000, 300000));\n }\n }\n\n private async isAuthedAndUnlocked() {\n if (await this.userService.isAuthenticated()) {\n const locked = await this.vaultTimeoutService.isLocked();\n return !locked;\n }\n return false;\n }\n\n private random(min: number, max: number) {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { NotificationType } from '../../enums/notificationType';\n\nexport class NotificationResponse extends BaseResponse {\n contextId: string;\n type: NotificationType;\n payload: any;\n\n constructor(response: any) {\n super(response);\n this.contextId = this.getResponseProperty('ContextId');\n this.type = this.getResponseProperty('Type');\n\n const payload = this.getResponseProperty('Payload');\n switch (this.type) {\n case NotificationType.SyncCipherCreate:\n case NotificationType.SyncCipherDelete:\n case NotificationType.SyncCipherUpdate:\n case NotificationType.SyncLoginDelete:\n this.payload = new SyncCipherNotification(payload);\n break;\n case NotificationType.SyncFolderCreate:\n case NotificationType.SyncFolderDelete:\n case NotificationType.SyncFolderUpdate:\n this.payload = new SyncFolderNotification(payload);\n break;\n case NotificationType.SyncVault:\n case NotificationType.SyncCiphers:\n case NotificationType.SyncOrgKeys:\n case NotificationType.SyncSettings:\n case NotificationType.LogOut:\n this.payload = new UserNotification(payload);\n break;\n default:\n break;\n }\n }\n}\n\nexport class SyncCipherNotification extends BaseResponse {\n id: string;\n userId: string;\n organizationId: string;\n collectionIds: string[];\n revisionDate: Date;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.userId = this.getResponseProperty('UserId');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.collectionIds = this.getResponseProperty('CollectionIds');\n this.revisionDate = new Date(this.getResponseProperty('RevisionDate'));\n }\n}\n\nexport class SyncFolderNotification extends BaseResponse {\n id: string;\n userId: string;\n revisionDate: Date;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.userId = this.getResponseProperty('UserId');\n this.revisionDate = new Date(this.getResponseProperty('RevisionDate'));\n }\n}\n\nexport class UserNotification extends BaseResponse {\n userId: string;\n date: Date;\n\n constructor(response: any) {\n super(response);\n this.userId = this.getResponseProperty('UserId');\n this.date = new Date(this.getResponseProperty('Date'));\n }\n}\n","import { PolicyService as PolicyServiceAbstraction } from '../abstractions/policy.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { PolicyData } from '../models/data/policyData';\n\nimport { MasterPasswordPolicyOptions } from '../models/domain/masterPasswordPolicyOptions';\nimport { Policy } from '../models/domain/policy';\n\nimport { PolicyType } from '../enums/policyType';\n\nconst Keys = {\n policiesPrefix: 'policies_',\n};\n\nexport class PolicyService implements PolicyServiceAbstraction {\n policyCache: Policy[];\n\n constructor(private userService: UserService, private storageService: StorageService) {\n }\n\n clearCache(): void {\n this.policyCache = null;\n }\n\n async getAll(type?: PolicyType): Promise {\n if (this.policyCache == null) {\n const userId = await this.userService.getUserId();\n const policies = await this.storageService.get<{ [id: string]: PolicyData; }>(\n Keys.policiesPrefix + userId);\n const response: Policy[] = [];\n for (const id in policies) {\n if (policies.hasOwnProperty(id)) {\n response.push(new Policy(policies[id]));\n }\n }\n this.policyCache = response;\n }\n if (type != null) {\n return this.policyCache.filter((p) => p.type === type);\n } else {\n return this.policyCache;\n }\n }\n\n async replace(policies: { [id: string]: PolicyData; }): Promise {\n const userId = await this.userService.getUserId();\n await this.storageService.save(Keys.policiesPrefix + userId, policies);\n this.policyCache = null;\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.policiesPrefix + userId);\n this.policyCache = null;\n }\n\n async getMasterPasswordPolicyOptions(policies?: Policy[]): Promise {\n let enforcedOptions: MasterPasswordPolicyOptions = null;\n\n if (policies == null) {\n policies = await this.getAll(PolicyType.MasterPassword);\n } else {\n policies = policies.filter((p) => p.type === PolicyType.MasterPassword);\n }\n\n if (policies == null || policies.length === 0) {\n return enforcedOptions;\n }\n\n policies.forEach((currentPolicy) => {\n if (!currentPolicy.enabled || currentPolicy.data == null) {\n return;\n }\n\n if (enforcedOptions == null) {\n enforcedOptions = new MasterPasswordPolicyOptions();\n }\n\n if (currentPolicy.data.minComplexity != null\n && currentPolicy.data.minComplexity > enforcedOptions.minComplexity) {\n enforcedOptions.minComplexity = currentPolicy.data.minComplexity;\n }\n\n if (currentPolicy.data.minLength != null\n && currentPolicy.data.minLength > enforcedOptions.minLength) {\n enforcedOptions.minLength = currentPolicy.data.minLength;\n }\n\n if (currentPolicy.data.requireUpper) {\n enforcedOptions.requireUpper = true;\n }\n\n if (currentPolicy.data.requireLower) {\n enforcedOptions.requireLower = true;\n }\n\n if (currentPolicy.data.requireNumbers) {\n enforcedOptions.requireNumbers = true;\n }\n\n if (currentPolicy.data.requireSpecial) {\n enforcedOptions.requireSpecial = true;\n }\n });\n\n return enforcedOptions;\n }\n\n evaluateMasterPassword(passwordStrength: number, newPassword: string,\n enforcedPolicyOptions: MasterPasswordPolicyOptions): boolean {\n if (enforcedPolicyOptions == null) {\n return true;\n }\n\n if (enforcedPolicyOptions.minComplexity > 0 && enforcedPolicyOptions.minComplexity > passwordStrength) {\n return false;\n }\n\n if (enforcedPolicyOptions.minLength > 0 && enforcedPolicyOptions.minLength > newPassword.length) {\n return false;\n }\n\n if (enforcedPolicyOptions.requireUpper && newPassword.toLocaleLowerCase() === newPassword) {\n return false;\n }\n\n if (enforcedPolicyOptions.requireLower && newPassword.toLocaleUpperCase() === newPassword) {\n return false;\n }\n\n if (enforcedPolicyOptions.requireNumbers && !(/[0-9]/.test(newPassword))) {\n return false;\n }\n\n if (enforcedPolicyOptions.requireSpecial && !(/[!@#$%\\^&*]/g.test(newPassword))) {\n return false;\n }\n\n return true;\n }\n}\n","import Domain from './domainBase';\n\nexport class MasterPasswordPolicyOptions extends Domain {\n minComplexity: number = 0;\n minLength: number = 0;\n requireUpper: boolean = false;\n requireLower: boolean = false;\n requireNumbers: boolean = false;\n requireSpecial: boolean = false;\n}\n","import * as lunr from 'lunr';\n\nimport { CipherView } from '../models/view/cipherView';\n\nimport { CipherService } from '../abstractions/cipher.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\nimport { SearchService as SearchServiceAbstraction } from '../abstractions/search.service';\n\nimport { CipherType } from '../enums/cipherType';\nimport { DeviceType } from '../enums/deviceType';\nimport { FieldType } from '../enums/fieldType';\nimport { UriMatchType } from '../enums/uriMatchType';\n\nexport class SearchService implements SearchServiceAbstraction {\n private indexing = false;\n private index: lunr.Index = null;\n private onlySearchName = false;\n\n constructor(private cipherService: CipherService, platformUtilsService: PlatformUtilsService) {\n this.onlySearchName = platformUtilsService == null ||\n platformUtilsService.getDevice() === DeviceType.EdgeExtension;\n }\n\n clearIndex(): void {\n this.index = null;\n }\n\n isSearchable(query: string): boolean {\n const notSearchable = query == null || (this.index == null && query.length < 2) ||\n (this.index != null && query.length < 2 && query.indexOf('>') !== 0);\n return !notSearchable;\n }\n\n async indexCiphers(): Promise {\n if (this.indexing) {\n return;\n }\n // tslint:disable-next-line\n console.time('search indexing');\n this.indexing = true;\n this.index = null;\n const builder = new lunr.Builder();\n builder.ref('id');\n builder.field('shortid', { boost: 100, extractor: (c: CipherView) => c.id.substr(0, 8) });\n builder.field('name', { boost: 10 });\n builder.field('subtitle', {\n boost: 5,\n extractor: (c: CipherView) => {\n if (c.subTitle != null && c.type === CipherType.Card) {\n return c.subTitle.replace(/\\*/g, '');\n }\n return c.subTitle;\n },\n });\n builder.field('notes');\n builder.field('login.username', {\n extractor: (c: CipherView) => c.type === CipherType.Login && c.login != null ? c.login.username : null,\n });\n builder.field('login.uris', { boost: 2, extractor: (c: CipherView) => this.uriExtractor(c) });\n builder.field('fields', { extractor: (c: CipherView) => this.fieldExtractor(c, false) });\n builder.field('fields_joined', { extractor: (c: CipherView) => this.fieldExtractor(c, true) });\n builder.field('attachments', { extractor: (c: CipherView) => this.attachmentExtractor(c, false) });\n builder.field('attachments_joined',\n { extractor: (c: CipherView) => this.attachmentExtractor(c, true) });\n builder.field('organizationid', { extractor: (c: CipherView) => c.organizationId });\n const ciphers = await this.cipherService.getAllDecrypted();\n ciphers.forEach((c) => builder.add(c));\n this.index = builder.build();\n this.indexing = false;\n // tslint:disable-next-line\n console.timeEnd('search indexing');\n }\n\n async searchCiphers(query: string,\n filter: (((cipher: CipherView) => boolean) | (Array<(cipher: CipherView) => boolean>)) = null,\n ciphers: CipherView[] = null):\n Promise {\n const results: CipherView[] = [];\n if (query != null) {\n query = query.trim().toLowerCase();\n }\n if (query === '') {\n query = null;\n }\n\n if (ciphers == null) {\n ciphers = await this.cipherService.getAllDecrypted();\n }\n\n if (filter != null && Array.isArray(filter) && filter.length > 0) {\n ciphers = ciphers.filter((c) => filter.every((f) => f == null || f(c)));\n } else if (filter != null) {\n ciphers = ciphers.filter(filter as (cipher: CipherView) => boolean);\n }\n\n if (!this.isSearchable(query)) {\n return ciphers;\n }\n\n if (this.indexing) {\n await new Promise((r) => setTimeout(r, 250));\n if (this.indexing) {\n await new Promise((r) => setTimeout(r, 500));\n }\n }\n\n const index = this.getIndexForSearch();\n if (index == null) {\n // Fall back to basic search if index is not available\n return this.searchCiphersBasic(ciphers, query);\n }\n\n const ciphersMap = new Map();\n ciphers.forEach((c) => ciphersMap.set(c.id, c));\n\n let searchResults: lunr.Index.Result[] = null;\n const isQueryString = query != null && query.length > 1 && query.indexOf('>') === 0;\n if (isQueryString) {\n try {\n searchResults = index.search(query.substr(1).trim());\n } catch { }\n } else {\n // tslint:disable-next-line\n const soWild = lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING;\n searchResults = index.query((q) => {\n lunr.tokenizer(query).forEach((token) => {\n const t = token.toString();\n q.term(t, { fields: ['name'], wildcard: soWild });\n q.term(t, { fields: ['subtitle'], wildcard: soWild });\n q.term(t, { fields: ['login.uris'], wildcard: soWild });\n q.term(t, {});\n });\n });\n }\n\n if (searchResults != null) {\n searchResults.forEach((r) => {\n if (ciphersMap.has(r.ref)) {\n results.push(ciphersMap.get(r.ref));\n }\n });\n }\n return results;\n }\n\n searchCiphersBasic(ciphers: CipherView[], query: string, deleted: boolean = false) {\n query = query.trim().toLowerCase();\n return ciphers.filter((c) => {\n if (deleted !== c.isDeleted) {\n return false;\n }\n if (c.name != null && c.name.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (this.onlySearchName) {\n return false;\n }\n if (query.length >= 8 && c.id.startsWith(query)) {\n return true;\n }\n if (c.subTitle != null && c.subTitle.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (c.login && c.login.uri != null && c.login.uri.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n return false;\n });\n }\n\n getIndexForSearch(): lunr.Index {\n return this.index;\n }\n\n private fieldExtractor(c: CipherView, joined: boolean) {\n if (!c.hasFields) {\n return null;\n }\n let fields: string[] = [];\n c.fields.forEach((f) => {\n if (f.name != null) {\n fields.push(f.name);\n }\n if (f.type === FieldType.Text && f.value != null) {\n fields.push(f.value);\n }\n });\n fields = fields.filter((f) => f.trim() !== '');\n if (fields.length === 0) {\n return null;\n }\n return joined ? fields.join(' ') : fields;\n }\n\n private attachmentExtractor(c: CipherView, joined: boolean) {\n if (!c.hasAttachments) {\n return null;\n }\n let attachments: string[] = [];\n c.attachments.forEach((a) => {\n if (a != null && a.fileName != null) {\n if (joined && a.fileName.indexOf('.') > -1) {\n attachments.push(a.fileName.substr(0, a.fileName.lastIndexOf('.')));\n } else {\n attachments.push(a.fileName);\n }\n }\n });\n attachments = attachments.filter((f) => f.trim() !== '');\n if (attachments.length === 0) {\n return null;\n }\n return joined ? attachments.join(' ') : attachments;\n }\n\n private uriExtractor(c: CipherView) {\n if (c.type !== CipherType.Login || c.login == null || !c.login.hasUris) {\n return null;\n }\n const uris: string[] = [];\n c.login.uris.forEach((u) => {\n if (u.uri == null || u.uri === '') {\n return;\n }\n if (u.hostname != null) {\n uris.push(u.hostname);\n return;\n }\n let uri = u.uri;\n if (u.match !== UriMatchType.RegularExpression) {\n const protocolIndex = uri.indexOf('://');\n if (protocolIndex > -1) {\n uri = uri.substr(protocolIndex + 3);\n }\n const queryIndex = uri.search(/\\?|&|#/);\n if (queryIndex > -1) {\n uri = uri.substring(0, queryIndex);\n }\n }\n uris.push(uri);\n });\n return uris.length > 0 ? uris : null;\n }\n}\n","import * as forge from 'node-forge';\n\nimport { CryptoFunctionService } from '../abstractions/cryptoFunction.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\n\nimport { Utils } from '../misc/utils';\n\nimport { DecryptParameters } from '../models/domain/decryptParameters';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nexport class WebCryptoFunctionService implements CryptoFunctionService {\n private crypto: Crypto;\n private subtle: SubtleCrypto;\n private isEdge: boolean;\n private isIE: boolean;\n private isOldSafari: boolean;\n\n constructor(private win: Window, private platformUtilsService: PlatformUtilsService) {\n this.crypto = typeof win.crypto !== 'undefined' ? win.crypto : null;\n this.subtle = (!!this.crypto && typeof win.crypto.subtle !== 'undefined') ? win.crypto.subtle : null;\n this.isEdge = platformUtilsService.isEdge();\n this.isIE = platformUtilsService.isIE();\n const ua = win.navigator.userAgent;\n this.isOldSafari = platformUtilsService.isSafari() &&\n (ua.indexOf(' Version/10.') > -1 || ua.indexOf(' Version/9.') > -1);\n }\n\n async pbkdf2(password: string | ArrayBuffer, salt: string | ArrayBuffer, algorithm: 'sha256' | 'sha512',\n iterations: number): Promise {\n if (this.isEdge || this.isIE || this.isOldSafari) {\n const forgeLen = algorithm === 'sha256' ? 32 : 64;\n const passwordBytes = this.toByteString(password);\n const saltBytes = this.toByteString(salt);\n const derivedKeyBytes = (forge as any).pbkdf2(passwordBytes, saltBytes, iterations, forgeLen, algorithm);\n return Utils.fromByteStringToArray(derivedKeyBytes).buffer;\n }\n\n const wcLen = algorithm === 'sha256' ? 256 : 512;\n const passwordBuf = this.toBuf(password);\n const saltBuf = this.toBuf(salt);\n\n const pbkdf2Params: Pbkdf2Params = {\n name: 'PBKDF2',\n salt: saltBuf,\n iterations: iterations,\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n\n const impKey = await this.subtle.importKey('raw', passwordBuf, { name: 'PBKDF2' } as any,\n false, ['deriveBits']);\n return await this.subtle.deriveBits(pbkdf2Params, impKey, wcLen);\n }\n\n async hash(value: string | ArrayBuffer, algorithm: 'sha1' | 'sha256' | 'sha512' | 'md5'): Promise {\n if (((this.isEdge || this.isIE) && algorithm === 'sha1') || algorithm === 'md5') {\n const md = algorithm === 'md5' ? forge.md.md5.create() : forge.md.sha1.create();\n const valueBytes = this.toByteString(value);\n md.update(valueBytes, 'raw');\n return Utils.fromByteStringToArray(md.digest().data).buffer;\n }\n\n const valueBuf = this.toBuf(value);\n return await this.subtle.digest({ name: this.toWebCryptoAlgorithm(algorithm) }, valueBuf);\n }\n\n async hmac(value: ArrayBuffer, key: ArrayBuffer, algorithm: 'sha1' | 'sha256' | 'sha512'): Promise {\n if (this.isIE && algorithm === 'sha512') {\n const hmac = (forge as any).hmac.create();\n const keyBytes = this.toByteString(key);\n const valueBytes = this.toByteString(value);\n hmac.start(algorithm, keyBytes);\n hmac.update(valueBytes, 'raw');\n return Utils.fromByteStringToArray(hmac.digest().data).buffer;\n }\n\n const signingAlgorithm = {\n name: 'HMAC',\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n\n const impKey = await this.subtle.importKey('raw', key, signingAlgorithm, false, ['sign']);\n return await this.subtle.sign(signingAlgorithm, impKey, value);\n }\n\n // Safely compare two values in a way that protects against timing attacks (Double HMAC Verification).\n // ref: https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2011/february/double-hmac-verification/\n // ref: https://paragonie.com/blog/2015/11/preventing-timing-attacks-on-string-comparison-with-double-hmac-strategy\n async compare(a: ArrayBuffer, b: ArrayBuffer): Promise {\n const macKey = await this.randomBytes(32);\n const signingAlgorithm = {\n name: 'HMAC',\n hash: { name: 'SHA-256' },\n };\n const impKey = await this.subtle.importKey('raw', macKey, signingAlgorithm, false, ['sign']);\n const mac1 = await this.subtle.sign(signingAlgorithm, impKey, a);\n const mac2 = await this.subtle.sign(signingAlgorithm, impKey, b);\n\n if (mac1.byteLength !== mac2.byteLength) {\n return false;\n }\n\n const arr1 = new Uint8Array(mac1);\n const arr2 = new Uint8Array(mac2);\n for (let i = 0; i < arr2.length; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n hmacFast(value: string, key: string, algorithm: 'sha1' | 'sha256' | 'sha512'): Promise {\n const hmac = (forge as any).hmac.create();\n hmac.start(algorithm, key);\n hmac.update(value);\n const bytes = hmac.digest().getBytes();\n return Promise.resolve(bytes);\n }\n\n async compareFast(a: string, b: string): Promise {\n const rand = await this.randomBytes(32);\n const bytes = new Uint32Array(rand);\n const buffer = forge.util.createBuffer();\n for (let i = 0; i < bytes.length; i++) {\n buffer.putInt32(bytes[i]);\n }\n const macKey = buffer.getBytes();\n\n const hmac = (forge as any).hmac.create();\n hmac.start('sha256', macKey);\n hmac.update(a);\n const mac1 = hmac.digest().getBytes();\n\n hmac.start(null, null);\n hmac.update(b);\n const mac2 = hmac.digest().getBytes();\n\n const equals = mac1 === mac2;\n return equals;\n }\n\n async aesEncrypt(data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer): Promise {\n const impKey = await this.subtle.importKey('raw', key, { name: 'AES-CBC' } as any, false, ['encrypt']);\n return await this.subtle.encrypt({ name: 'AES-CBC', iv: iv }, impKey, data);\n }\n\n aesDecryptFastParameters(data: string, iv: string, mac: string, key: SymmetricCryptoKey):\n DecryptParameters {\n const p = new DecryptParameters();\n if (key.meta != null) {\n p.encKey = key.meta.encKeyByteString;\n p.macKey = key.meta.macKeyByteString;\n }\n\n if (p.encKey == null) {\n p.encKey = forge.util.decode64(key.encKeyB64);\n }\n p.data = forge.util.decode64(data);\n p.iv = forge.util.decode64(iv);\n p.macData = p.iv + p.data;\n if (p.macKey == null && key.macKeyB64 != null) {\n p.macKey = forge.util.decode64(key.macKeyB64);\n }\n if (mac != null) {\n p.mac = forge.util.decode64(mac);\n }\n\n // cache byte string keys for later\n if (key.meta == null) {\n key.meta = {};\n }\n if (key.meta.encKeyByteString == null) {\n key.meta.encKeyByteString = p.encKey;\n }\n if (p.macKey != null && key.meta.macKeyByteString == null) {\n key.meta.macKeyByteString = p.macKey;\n }\n\n return p;\n }\n\n aesDecryptFast(parameters: DecryptParameters): Promise {\n const dataBuffer = (forge as any).util.createBuffer(parameters.data);\n const decipher = (forge as any).cipher.createDecipher('AES-CBC', parameters.encKey);\n decipher.start({ iv: parameters.iv });\n decipher.update(dataBuffer);\n decipher.finish();\n const val = decipher.output.toString('utf8');\n return Promise.resolve(val);\n }\n\n async aesDecrypt(data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer): Promise {\n const impKey = await this.subtle.importKey('raw', key, { name: 'AES-CBC' } as any, false, ['decrypt']);\n return await this.subtle.decrypt({ name: 'AES-CBC', iv: iv }, impKey, data);\n }\n\n async rsaEncrypt(data: ArrayBuffer, publicKey: ArrayBuffer, algorithm: 'sha1' | 'sha256'): Promise {\n // Note: Edge browser requires that we specify name and hash for both key import and decrypt.\n // We cannot use the proper types here.\n const rsaParams = {\n name: 'RSA-OAEP',\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n const impKey = await this.subtle.importKey('spki', publicKey, rsaParams, false, ['encrypt']);\n return await this.subtle.encrypt(rsaParams, impKey, data);\n }\n\n async rsaDecrypt(data: ArrayBuffer, privateKey: ArrayBuffer, algorithm: 'sha1' | 'sha256'): Promise {\n // Note: Edge browser requires that we specify name and hash for both key import and decrypt.\n // We cannot use the proper types here.\n const rsaParams = {\n name: 'RSA-OAEP',\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n const impKey = await this.subtle.importKey('pkcs8', privateKey, rsaParams, false, ['decrypt']);\n return await this.subtle.decrypt(rsaParams, impKey, data);\n }\n\n async rsaExtractPublicKey(privateKey: ArrayBuffer): Promise {\n const rsaParams = {\n name: 'RSA-OAEP',\n // Have to specify some algorithm\n hash: { name: this.toWebCryptoAlgorithm('sha1') },\n };\n const impPrivateKey = await this.subtle.importKey('pkcs8', privateKey, rsaParams, true, ['decrypt']);\n const jwkPrivateKey = await this.subtle.exportKey('jwk', impPrivateKey);\n const jwkPublicKeyParams = {\n kty: 'RSA',\n e: jwkPrivateKey.e,\n n: jwkPrivateKey.n,\n alg: 'RSA-OAEP',\n ext: true,\n };\n const impPublicKey = await this.subtle.importKey('jwk', jwkPublicKeyParams, rsaParams, true, ['encrypt']);\n return await this.subtle.exportKey('spki', impPublicKey);\n }\n\n async rsaGenerateKeyPair(length: 1024 | 2048 | 4096): Promise<[ArrayBuffer, ArrayBuffer]> {\n const rsaParams = {\n name: 'RSA-OAEP',\n modulusLength: length,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]), // 65537\n // Have to specify some algorithm\n hash: { name: this.toWebCryptoAlgorithm('sha1') },\n };\n const keyPair = await this.subtle.generateKey(rsaParams, true, ['encrypt', 'decrypt']);\n const publicKey = await this.subtle.exportKey('spki', keyPair.publicKey);\n const privateKey = await this.subtle.exportKey('pkcs8', keyPair.privateKey);\n return [publicKey, privateKey];\n }\n\n randomBytes(length: number): Promise {\n const arr = new Uint8Array(length);\n this.crypto.getRandomValues(arr);\n return Promise.resolve(arr.buffer);\n }\n\n private toBuf(value: string | ArrayBuffer): ArrayBuffer {\n let buf: ArrayBuffer;\n if (typeof (value) === 'string') {\n buf = Utils.fromUtf8ToArray(value).buffer;\n } else {\n buf = value;\n }\n return buf;\n }\n\n private toByteString(value: string | ArrayBuffer): string {\n let bytes: string;\n if (typeof (value) === 'string') {\n bytes = forge.util.encodeUtf8(value);\n } else {\n bytes = Utils.fromBufferToByteString(value);\n }\n return bytes;\n }\n\n private toWebCryptoAlgorithm(algorithm: 'sha1' | 'sha256' | 'sha512' | 'md5'): string {\n if (algorithm === 'md5') {\n throw new Error('MD5 is not supported in WebCrypto.');\n }\n return algorithm === 'sha1' ? 'SHA-1' : algorithm === 'sha256' ? 'SHA-256' : 'SHA-512';\n }\n}\n","export class DecryptParameters {\n encKey: T;\n data: T;\n iv: T;\n macKey: T;\n mac: T;\n macData: T;\n}\n","import { NgModule } from '@angular/core';\nimport {\n RouterModule,\n Routes,\n} from '@angular/router';\n\nimport { FrontendLayoutComponent } from './layouts/frontend-layout.component';\nimport { OrganizationLayoutComponent } from './layouts/organization-layout.component';\nimport { UserLayoutComponent } from './layouts/user-layout.component';\n\nimport { AcceptOrganizationComponent } from './accounts/accept-organization.component';\nimport { HintComponent } from './accounts/hint.component';\nimport { LockComponent } from './accounts/lock.component';\nimport { LoginComponent } from './accounts/login.component';\nimport { RecoverDeleteComponent } from './accounts/recover-delete.component';\nimport { RecoverTwoFactorComponent } from './accounts/recover-two-factor.component';\nimport { RegisterComponent } from './accounts/register.component';\nimport { TwoFactorComponent } from './accounts/two-factor.component';\nimport { VerifyEmailTokenComponent } from './accounts/verify-email-token.component';\nimport { VerifyRecoverDeleteComponent } from './accounts/verify-recover-delete.component';\n\nimport { CollectionsComponent as OrgManageCollectionsComponent } from './organizations/manage/collections.component';\nimport { EventsComponent as OrgEventsComponent } from './organizations/manage/events.component';\nimport { GroupsComponent as OrgGroupsComponent } from './organizations/manage/groups.component';\nimport { ManageComponent as OrgManageComponent } from './organizations/manage/manage.component';\nimport { PeopleComponent as OrgPeopleComponent } from './organizations/manage/people.component';\nimport { PoliciesComponent as OrgPoliciesComponent } from './organizations/manage/policies.component';\n\nimport { AccountComponent as OrgAccountComponent } from './organizations/settings/account.component';\nimport { OrganizationBillingComponent } from './organizations/settings/organization-billing.component';\nimport { OrganizationSubscriptionComponent } from './organizations/settings/organization-subscription.component';\nimport { SettingsComponent as OrgSettingsComponent } from './organizations/settings/settings.component';\nimport {\n TwoFactorSetupComponent as OrgTwoFactorSetupComponent,\n} from './organizations/settings/two-factor-setup.component';\n\nimport { ExportComponent as OrgExportComponent } from './organizations/tools/export.component';\nimport {\n ExposedPasswordsReportComponent as OrgExposedPasswordsReportComponent,\n} from './organizations/tools/exposed-passwords-report.component';\nimport { ImportComponent as OrgImportComponent } from './organizations/tools/import.component';\nimport {\n InactiveTwoFactorReportComponent as OrgInactiveTwoFactorReportComponent,\n} from './organizations/tools/inactive-two-factor-report.component';\nimport {\n ReusedPasswordsReportComponent as OrgReusedPasswordsReportComponent,\n} from './organizations/tools/reused-passwords-report.component';\nimport { ToolsComponent as OrgToolsComponent } from './organizations/tools/tools.component';\nimport {\n UnsecuredWebsitesReportComponent as OrgUnsecuredWebsitesReportComponent,\n} from './organizations/tools/unsecured-websites-report.component';\nimport {\n WeakPasswordsReportComponent as OrgWeakPasswordsReportComponent,\n} from './organizations/tools/weak-passwords-report.component';\n\nimport { VaultComponent as OrgVaultComponent } from './organizations/vault/vault.component';\n\nimport { AccountComponent } from './settings/account.component';\nimport { CreateOrganizationComponent } from './settings/create-organization.component';\nimport { DomainRulesComponent } from './settings/domain-rules.component';\nimport { OptionsComponent } from './settings/options.component';\nimport { OrganizationsComponent } from './settings/organizations.component';\nimport { PremiumComponent } from './settings/premium.component';\nimport { SettingsComponent } from './settings/settings.component';\nimport { TwoFactorSetupComponent } from './settings/two-factor-setup.component';\nimport { UserBillingComponent } from './settings/user-billing.component';\nimport { UserSubscriptionComponent } from './settings/user-subscription.component';\n\nimport { BreachReportComponent } from './tools/breach-report.component';\nimport { ExportComponent } from './tools/export.component';\nimport { ExposedPasswordsReportComponent } from './tools/exposed-passwords-report.component';\nimport { ImportComponent } from './tools/import.component';\nimport { InactiveTwoFactorReportComponent } from './tools/inactive-two-factor-report.component';\nimport { PasswordGeneratorComponent } from './tools/password-generator.component';\nimport { ReusedPasswordsReportComponent } from './tools/reused-passwords-report.component';\nimport { ToolsComponent } from './tools/tools.component';\nimport { UnsecuredWebsitesReportComponent } from './tools/unsecured-websites-report.component';\nimport { WeakPasswordsReportComponent } from './tools/weak-passwords-report.component';\n\nimport { VaultComponent } from './vault/vault.component';\n\nimport { OrganizationGuardService } from './services/organization-guard.service';\nimport { OrganizationTypeGuardService } from './services/organization-type-guard.service';\nimport { UnauthGuardService } from './services/unauth-guard.service';\n\nimport { AuthGuardService } from 'jslib/angular/services/auth-guard.service';\n\nimport { OrganizationUserType } from 'jslib/enums/organizationUserType';\n\nconst routes: Routes = [\n {\n path: '',\n component: FrontendLayoutComponent,\n children: [\n { path: '', pathMatch: 'full', component: LoginComponent, canActivate: [UnauthGuardService] },\n { path: '2fa', component: TwoFactorComponent, canActivate: [UnauthGuardService] },\n {\n path: 'register', component: RegisterComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'createAccount' },\n },\n {\n path: 'hint', component: HintComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'passwordHint' },\n },\n { path: 'lock', component: LockComponent },\n { path: 'verify-email', component: VerifyEmailTokenComponent },\n {\n path: 'accept-organization',\n component: AcceptOrganizationComponent,\n data: { titleId: 'joinOrganization' },\n },\n { path: 'recover', pathMatch: 'full', redirectTo: 'recover-2fa' },\n {\n path: 'recover-2fa',\n component: RecoverTwoFactorComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'recoverAccountTwoStep' },\n },\n {\n path: 'recover-delete',\n component: RecoverDeleteComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'deleteAccount' },\n },\n {\n path: 'verify-recover-delete',\n component: VerifyRecoverDeleteComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'deleteAccount' },\n },\n ],\n },\n {\n path: '',\n component: UserLayoutComponent,\n canActivate: [AuthGuardService],\n children: [\n { path: 'vault', component: VaultComponent, data: { titleId: 'myVault' } },\n {\n path: 'settings',\n component: SettingsComponent,\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'account' },\n { path: 'account', component: AccountComponent, data: { titleId: 'myAccount' } },\n { path: 'options', component: OptionsComponent, data: { titleId: 'options' } },\n { path: 'domain-rules', component: DomainRulesComponent, data: { titleId: 'domainRules' } },\n { path: 'two-factor', component: TwoFactorSetupComponent, data: { titleId: 'twoStepLogin' } },\n { path: 'premium', component: PremiumComponent, data: { titleId: 'goPremium' } },\n { path: 'billing', component: UserBillingComponent, data: { titleId: 'billing' } },\n {\n path: 'subscription',\n component: UserSubscriptionComponent,\n data: { titleId: 'premiumMembership' },\n },\n { path: 'organizations', component: OrganizationsComponent, data: { titleId: 'organizations' } },\n {\n path: 'create-organization',\n component: CreateOrganizationComponent,\n data: { titleId: 'newOrganization' },\n },\n ],\n },\n {\n path: 'tools',\n component: ToolsComponent,\n canActivate: [AuthGuardService],\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'generator' },\n { path: 'import', component: ImportComponent, data: { titleId: 'importData' } },\n { path: 'export', component: ExportComponent, data: { titleId: 'exportVault' } },\n {\n path: 'generator',\n component: PasswordGeneratorComponent,\n data: { titleId: 'passwordGenerator' },\n },\n { path: 'breach-report', component: BreachReportComponent, data: { titleId: 'dataBreachReport' } },\n {\n path: 'reused-passwords-report',\n component: ReusedPasswordsReportComponent,\n data: { titleId: 'reusedPasswordsReport' },\n },\n {\n path: 'unsecured-websites-report',\n component: UnsecuredWebsitesReportComponent,\n data: { titleId: 'unsecuredWebsitesReport' },\n },\n {\n path: 'weak-passwords-report',\n component: WeakPasswordsReportComponent,\n data: { titleId: 'weakPasswordsReport' },\n },\n {\n path: 'exposed-passwords-report',\n component: ExposedPasswordsReportComponent,\n data: { titleId: 'exposedPasswordsReport' },\n },\n {\n path: 'inactive-two-factor-report',\n component: InactiveTwoFactorReportComponent,\n data: { titleId: 'inactive2faReport' },\n },\n ],\n },\n ],\n },\n {\n path: 'organizations/:organizationId',\n component: OrganizationLayoutComponent,\n canActivate: [AuthGuardService, OrganizationGuardService],\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'vault' },\n { path: 'vault', component: OrgVaultComponent, data: { titleId: 'vault' } },\n {\n path: 'tools',\n component: OrgToolsComponent,\n canActivate: [OrganizationTypeGuardService],\n data: { allowedTypes: [OrganizationUserType.Owner, OrganizationUserType.Admin] },\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'import' },\n { path: 'import', component: OrgImportComponent, data: { titleId: 'importData' } },\n { path: 'export', component: OrgExportComponent, data: { titleId: 'exportVault' } },\n {\n path: 'exposed-passwords-report',\n component: OrgExposedPasswordsReportComponent,\n data: { titleId: 'exposedPasswordsReport' },\n },\n {\n path: 'inactive-two-factor-report',\n component: OrgInactiveTwoFactorReportComponent,\n data: { titleId: 'inactive2faReport' },\n },\n {\n path: 'reused-passwords-report',\n component: OrgReusedPasswordsReportComponent,\n data: { titleId: 'reusedPasswordsReport' },\n },\n {\n path: 'unsecured-websites-report',\n component: OrgUnsecuredWebsitesReportComponent,\n data: { titleId: 'unsecuredWebsitesReport' },\n },\n {\n path: 'weak-passwords-report',\n component: OrgWeakPasswordsReportComponent,\n data: { titleId: 'weakPasswordsReport' },\n },\n ],\n },\n {\n path: 'manage',\n component: OrgManageComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n allowedTypes: [\n OrganizationUserType.Owner,\n OrganizationUserType.Admin,\n OrganizationUserType.Manager,\n ],\n },\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'people' },\n { path: 'collections', component: OrgManageCollectionsComponent, data: { titleId: 'collections' } },\n { path: 'events', component: OrgEventsComponent, data: { titleId: 'eventLogs' } },\n { path: 'groups', component: OrgGroupsComponent, data: { titleId: 'groups' } },\n { path: 'people', component: OrgPeopleComponent, data: { titleId: 'people' } },\n { path: 'policies', component: OrgPoliciesComponent, data: { titleId: 'policies' } },\n ],\n },\n {\n path: 'settings',\n component: OrgSettingsComponent,\n canActivate: [OrganizationTypeGuardService],\n data: { allowedTypes: [OrganizationUserType.Owner] },\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'account' },\n { path: 'account', component: OrgAccountComponent, data: { titleId: 'myOrganization' } },\n { path: 'two-factor', component: OrgTwoFactorSetupComponent, data: { titleId: 'twoStepLogin' } },\n {\n path: 'billing',\n component: OrganizationBillingComponent,\n data: { titleId: 'billing' },\n },\n {\n path: 'subscription',\n component: OrganizationSubscriptionComponent,\n data: { titleId: 'subscription' },\n },\n ],\n },\n ],\n },\n { path: '**', redirectTo: '' },\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, {\n useHash: true,\n /*enableTracing: true,*/\n })],\n exports: [RouterModule],\n})\nexport class AppRoutingModule { }\n"],"sourceRoot":""}