import {
  OpportunityMigrationService
} from "./chunk-TCEZD3XQ.js";
import {
  AppService
} from "./chunk-I3C723JV.js";
import "./chunk-YTSB4N6U.js";
import {
  DocumentService,
  InitialPadComponent,
  SharedDocumentsModule,
  SignaturePadComponent
} from "./chunk-NS3ZOTKG.js";
import "./chunk-HJJU6GQE.js";
import {
  SystemService
} from "./chunk-CEWZNQA5.js";
import {
  UiService
} from "./chunk-WUILV27O.js";
import {
  LogService
} from "./chunk-TJ5F7MJ2.js";
import {
  ContentService
} from "./chunk-QKEQQVYW.js";
import "./chunk-BN54ET2Y.js";
import "./chunk-7LL3CK47.js";
import {
  AuthService,
  OAuthModule,
  OAuthStorage
} from "./chunk-4KP7MY6X.js";
import "./chunk-IVJ6NEFT.js";
import {
  ApiService
} from "./chunk-EBH7MLJT.js";
import {
  AuthRefService,
  StorageService
} from "./chunk-M3LFBN7N.js";
import {
  deepClone
} from "./chunk-N36JE2BE.js";
import {
  environment
} from "./chunk-VWQQS2KV.js";
import {
  BrowserModule,
  Component,
  CurrencyPipe,
  DatePipe,
  EMPTY,
  HTTP_INTERCEPTORS,
  HammerGestureConfig,
  HttpClient,
  Injectable,
  LoaderComponent,
  NgModule,
  Observable,
  Router,
  RouterModule,
  RouterOutlet,
  UiModule,
  catchError,
  exhaustMap,
  filter,
  map,
  platformBrowser,
  provideHttpClient,
  provideZoneChangeDetection,
  setClassMetadata,
  take,
  throwError,
  withInterceptorsFromDi,
  ɵsetClassDebugInfo,
  ɵɵadvance,
  ɵɵclassProp,
  ɵɵconditional,
  ɵɵconditionalCreate,
  ɵɵdefineComponent,
  ɵɵdefineInjectable,
  ɵɵdefineInjector,
  ɵɵdefineNgModule,
  ɵɵdirectiveInject,
  ɵɵelement,
  ɵɵelementEnd,
  ɵɵelementStart,
  ɵɵgetCurrentView,
  ɵɵgetInheritedFactory,
  ɵɵinject,
  ɵɵlistener,
  ɵɵnextContext,
  ɵɵproperty,
  ɵɵresetView,
  ɵɵrestoreView,
  ɵɵtext,
  ɵɵtextInterpolate,
  ɵɵtextInterpolate1
} from "./chunk-VAMMRICA.js";
import {
  Capacitor
} from "./chunk-IT26RCSL.js";
import {
  __async
} from "./chunk-RVA4KI76.js";

// src/app/privacy-policy/privacy-policy.component.ts
function PrivacyPolicyComponent_Conditional_251_Template(rf, ctx) {
  if (rf & 1) {
    const _r2 = \u0275\u0275getCurrentView();
    \u0275\u0275elementStart(0, "button", 16);
    \u0275\u0275listener("click", function PrivacyPolicyComponent_Conditional_251_Template_button_click_0_listener() {
      \u0275\u0275restoreView(_r2);
      const ctx_r2 = \u0275\u0275nextContext();
      return \u0275\u0275resetView(ctx_r2.goHome());
    });
    \u0275\u0275elementStart(1, "span", 8);
    \u0275\u0275element(2, "i", 17);
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(3, "label");
    \u0275\u0275text(4, " Dashboard ");
    \u0275\u0275elementEnd()();
  }
}
var _PrivacyPolicyComponent = class _PrivacyPolicyComponent {
  constructor(authRefService, router) {
    this.authRefService = authRefService;
    this.router = router;
    this.authenticated = false;
    this.sideNavActive = false;
  }
  watchAuth() {
    this.authSubscription = this.authRefService.authenticated.subscribe({
      next: (authenticated) => {
        this.authenticated = authenticated;
      }
    });
  }
  toggleSideNav() {
    this.sideNavActive = !this.sideNavActive;
  }
  closeSideNav() {
    this.sideNavActive = false;
  }
  get showHomeNav() {
    return this.authenticated;
  }
  goHome() {
    this.router.navigate(["/"]);
  }
  // #endregion
  // #region Bootstrapping
  init() {
    this.watchAuth();
  }
  // #endregion
  ngOnInit() {
    this.init();
  }
  ngOnDestroy() {
    this.authSubscription?.unsubscribe();
  }
};
_PrivacyPolicyComponent.\u0275fac = function PrivacyPolicyComponent_Factory(__ngFactoryType__) {
  return new (__ngFactoryType__ || _PrivacyPolicyComponent)(\u0275\u0275directiveInject(AuthRefService), \u0275\u0275directiveInject(Router));
};
_PrivacyPolicyComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ type: _PrivacyPolicyComponent, selectors: [["ng-component"]], standalone: false, decls: 257, vars: 5, consts: [["sideNavControlElm", ""], ["id", "privacyPolicy"], [1, "logo"], ["src", "/assets/images/logo.svg"], [1, "document"], ["id", "sideNav"], [1, "bg", 3, "click"], [1, "control", 3, "click"], [1, "icon"], [1, "bars"], [1, "bar"], [1, "island"], [1, "routes"], [1, "route"], ["href", "https://repipe.com/", "target", "_blank", 1, "route"], [1, "fa-duotone", "fa-link"], [1, "route", 3, "click"], [1, "fa-duotone", "fa-solid", "fa-calendar"]], template: function PrivacyPolicyComponent_Template(rf, ctx) {
  if (rf & 1) {
    const _r1 = \u0275\u0275getCurrentView();
    \u0275\u0275elementStart(0, "section", 1)(1, "header")(2, "div", 2);
    \u0275\u0275element(3, "img", 3);
    \u0275\u0275elementEnd()();
    \u0275\u0275elementStart(4, "div", 4)(5, "h1");
    \u0275\u0275text(6, '"Repipe" Application');
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(7, "h1");
    \u0275\u0275text(8, "Privacy Policy");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(9, "p");
    \u0275\u0275text(10, "Effective Date: September 8, 2025");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(11, "p");
    \u0275\u0275text(12, "Last Updated: September 8, 2025");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(13, "h2");
    \u0275\u0275text(14, "1. Introduction");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(15, "p");
    \u0275\u0275text(16, 'National Renovations LLC ("we," "our," or "us") respects your privacy and is committed to protecting your personal information. This Privacy Policy explains how we collect, use, disclose, and safeguard your information when you use our mobile application Repipe (the "App").');
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(17, "h2");
    \u0275\u0275text(18, "2. Information We Collect");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(19, "h3");
    \u0275\u0275text(20, "2.1 Personal Information");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(21, "p");
    \u0275\u0275text(22, "We may collect the following types of personal information:");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(23, "ul")(24, "li")(25, "strong");
    \u0275\u0275text(26, "From Repipe Consultants:");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(27, "ul")(28, "li");
    \u0275\u0275text(29, "Name, email address, and phone number");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(30, "li");
    \u0275\u0275text(31, "Professional credentials and company affiliation");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(32, "li");
    \u0275\u0275text(33, "Profile photos");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(34, "li");
    \u0275\u0275text(35, "Device identifiers and technical information");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(36, "li");
    \u0275\u0275text(37, "App interaction patterns and feature usage analytics");
    \u0275\u0275elementEnd()()();
    \u0275\u0275elementStart(38, "li")(39, "strong");
    \u0275\u0275text(40, "From Homeowners:");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(41, "ul")(42, "li");
    \u0275\u0275text(43, "Name, email address, and phone number");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(44, "li");
    \u0275\u0275text(45, "Property address and location information");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(46, "li");
    \u0275\u0275text(47, "Communication preferences");
    \u0275\u0275elementEnd()()()();
    \u0275\u0275elementStart(48, "h3");
    \u0275\u0275text(49, "2.2 Property and Project Information");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(50, "ul")(51, "li");
    \u0275\u0275text(52, "Property diagrams and measurements");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(53, "li");
    \u0275\u0275text(54, "Photos of plumbing systems and property areas");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(55, "li");
    \u0275\u0275text(56, "Estimate details and pricing information");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(57, "li");
    \u0275\u0275text(58, "Project notes and specifications");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(59, "li");
    \u0275\u0275text(60, "Communication history between consultants and homeowners");
    \u0275\u0275elementEnd()();
    \u0275\u0275elementStart(61, "h3");
    \u0275\u0275text(62, "2.3 Location Information");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(63, "ul")(64, "li");
    \u0275\u0275text(65, "Precise location data when using mapping features");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(66, "li");
    \u0275\u0275text(67, "Property locations for service estimates");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(68, "li");
    \u0275\u0275text(69, "GPS coordinates for navigation purposes");
    \u0275\u0275elementEnd()();
    \u0275\u0275elementStart(70, "h3");
    \u0275\u0275text(71, "2.4 Communication Data");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(72, "ul")(73, "li");
    \u0275\u0275text(74, "Messages sent through the in-app messaging system");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(75, "li");
    \u0275\u0275text(76, "Call logs and communication history");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(77, "li");
    \u0275\u0275text(78, "File attachments and shared documents");
    \u0275\u0275elementEnd()();
    \u0275\u0275elementStart(79, "h3");
    \u0275\u0275text(80, "2.5 Technical Information");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(81, "ul")(82, "li");
    \u0275\u0275text(83, "Device type, operating system, and version");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(84, "li");
    \u0275\u0275text(85, "App usage analytics and performance data");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(86, "li");
    \u0275\u0275text(87, "IP address and network information");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(88, "li");
    \u0275\u0275text(89, "Crash reports and error logs");
    \u0275\u0275elementEnd()();
    \u0275\u0275elementStart(90, "h2");
    \u0275\u0275text(91, "3. How We Use Your Information");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(92, "p");
    \u0275\u0275text(93, "We use the collected information for the following purposes:");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(94, "h3");
    \u0275\u0275text(95, "3.1 Service Delivery");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(96, "ul")(97, "li");
    \u0275\u0275text(98, "Facilitate communication between consultants and homeowners");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(99, "li");
    \u0275\u0275text(100, "Create and store property diagrams and estimates");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(101, "li");
    \u0275\u0275text(102, "Schedule appointments and manage projects");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(103, "li");
    \u0275\u0275text(104, "Provide customer support");
    \u0275\u0275elementEnd()();
    \u0275\u0275elementStart(105, "h3");
    \u0275\u0275text(106, "3.2 App Functionality");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(107, "ul")(108, "li");
    \u0275\u0275text(109, "Enable location-based services and navigation");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(110, "li");
    \u0275\u0275text(111, "Synchronize data across devices");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(112, "li");
    \u0275\u0275text(113, "Maintain user accounts and preferences");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(114, "li");
    \u0275\u0275text(115, "Process payments and billing");
    \u0275\u0275elementEnd()();
    \u0275\u0275elementStart(116, "h3");
    \u0275\u0275text(117, "3.3 Business Operations");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(118, "ul")(119, "li");
    \u0275\u0275text(120, "Improve app performance and user experience");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(121, "li");
    \u0275\u0275text(122, "Analyze usage patterns and trends");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(123, "li");
    \u0275\u0275text(124, "Ensure security and prevent fraud");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(125, "li");
    \u0275\u0275text(126, "Comply with legal obligations");
    \u0275\u0275elementEnd()();
    \u0275\u0275elementStart(127, "h2");
    \u0275\u0275text(128, "4. Information Sharing and Disclosure");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(129, "h3");
    \u0275\u0275text(130, "4.1 Service Providers");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(131, "p");
    \u0275\u0275text(132, "We may share information with trusted third-party service providers who assist us in:");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(133, "ul")(134, "li");
    \u0275\u0275text(135, "Cloud storage and data hosting");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(136, "li");
    \u0275\u0275text(137, "Payment processing");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(138, "li");
    \u0275\u0275text(139, "Analytics and app performance monitoring");
    \u0275\u0275elementEnd()();
    \u0275\u0275elementStart(140, "h3");
    \u0275\u0275text(141, "4.2 Business Partners");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(142, "p");
    \u0275\u0275text(143, "Information may be shared between consultants and homeowners as necessary for service delivery.");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(144, "h3");
    \u0275\u0275text(145, "4.3 Legal Requirements");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(146, "p");
    \u0275\u0275text(147, "We may disclose information when required by law or to:");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(148, "ul")(149, "li");
    \u0275\u0275text(150, "Comply with legal processes");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(151, "li");
    \u0275\u0275text(152, "Protect our rights and property");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(153, "li");
    \u0275\u0275text(154, "Ensure user safety and security");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(155, "li");
    \u0275\u0275text(156, "Prevent fraud or illegal activities");
    \u0275\u0275elementEnd()();
    \u0275\u0275elementStart(157, "h3");
    \u0275\u0275text(158, "4.4 Business Transfers");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(159, "p");
    \u0275\u0275text(160, "In the event of a merger, acquisition, or sale of assets, user information may be transferred as part of the\ntransaction.");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(161, "h2");
    \u0275\u0275text(162, "5. Data Security");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(163, "p");
    \u0275\u0275text(164, "We implement appropriate technical and organizational measures to protect your information, including:");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(165, "ul")(166, "li");
    \u0275\u0275text(167, "Encryption of data in transit and at rest");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(168, "li");
    \u0275\u0275text(169, "Secure authentication protocols");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(170, "li");
    \u0275\u0275text(171, "Regular security assessments");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(172, "li");
    \u0275\u0275text(173, "Limited access controls");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(174, "li");
    \u0275\u0275text(175, "Secure data centers and hosting environments");
    \u0275\u0275elementEnd()();
    \u0275\u0275elementStart(176, "h2");
    \u0275\u0275text(177, "6. Data Retention");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(178, "p");
    \u0275\u0275text(179, "We retain your information for as long as necessary to:");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(180, "ul")(181, "li");
    \u0275\u0275text(182, "Provide our services");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(183, "li");
    \u0275\u0275text(184, "Comply with legal obligations");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(185, "li");
    \u0275\u0275text(186, "Resolve disputes");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(187, "li");
    \u0275\u0275text(188, "Enforce our agreements");
    \u0275\u0275elementEnd()();
    \u0275\u0275elementStart(189, "h2");
    \u0275\u0275text(190, "7. Your Rights and Choices");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(191, "h3");
    \u0275\u0275text(192, "7.1 Access and Correction");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(193, "p");
    \u0275\u0275text(194, "You may request access to or correction of your personal information by contacting us at\nit@repipespecialists.com.");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(195, "h3");
    \u0275\u0275text(196, "7.2 Data Deletion");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(197, "p");
    \u0275\u0275text(198, "You may request deletion of your account and associated data, subject to legal retention requirements.");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(199, "h3");
    \u0275\u0275text(200, "7.3 Communication Preferences");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(201, "p");
    \u0275\u0275text(202, "You can opt out of promotional communications while still receiving service-related messages.");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(203, "h3");
    \u0275\u0275text(204, "7.4 Location Services");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(205, "p");
    \u0275\u0275text(206, "You can disable location services through your device settings, though this may limit app functionality.");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(207, "h2");
    \u0275\u0275text(208, "8. Children's Privacy");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(209, "p");
    \u0275\u0275text(210, "Our App is not intended for children under 13 years of age. We do not knowingly collect personal information from children under 13. If we become aware that we have collected such information, we will take steps to\ndelete it promptly.");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(211, "h2");
    \u0275\u0275text(212, "9. App Access Restrictions");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(213, "p");
    \u0275\u0275text(214, "This App is restricted to authorized repipe consultants and employees of National Renovations, LLC. Access is granted only to verified personnel who have been properly onboarded and trained. Unauthorized use of this\nApp is prohibited.");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(215, "h2");
    \u0275\u0275text(216, "10. International Data Transfers");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(217, "p");
    \u0275\u0275text(218, "Your information may be transferred to and processed in countries other than your country of residence. We\nensure appropriate safeguards are in place for such transfers in accordance with applicable laws.");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(219, "h2");
    \u0275\u0275text(220, "11. Third-Party Services");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(221, "p");
    \u0275\u0275text(222, "Our App may contain links to or integrate with third-party services. This Privacy Policy does not apply to\nthose services, and we encourage you to review their privacy policies.");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(223, "h2");
    \u0275\u0275text(224, "12. Updates to This Policy");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(225, "p");
    \u0275\u0275text(226, "We may update this Privacy Policy periodically to reflect changes in our practices or applicable laws. We\nwill notify users of material changes through the App or other appropriate means.");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(227, "h2");
    \u0275\u0275text(228, "13. Contact Information");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(229, "p");
    \u0275\u0275text(230, "If you have questions about this Privacy Policy or our privacy practices, please contact us:");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(231, "p");
    \u0275\u0275text(232, "Email: it@repipespecialists.com");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(233, "h2");
    \u0275\u0275text(234, "14. Consent");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(235, "p");
    \u0275\u0275text(236, "By using our App, you consent to the collection, use, and disclosure of your information as described in this\nPrivacy Policy.");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(237, "p");
    \u0275\u0275text(238, "This Privacy Policy was last updated on September 8, 2025 and is effective as of September 8, 2025.");
    \u0275\u0275elementEnd()()();
    \u0275\u0275elementStart(239, "nav", 5)(240, "div", 6);
    \u0275\u0275listener("click", function PrivacyPolicyComponent_Template_div_click_240_listener() {
      \u0275\u0275restoreView(_r1);
      return \u0275\u0275resetView(ctx.closeSideNav());
    });
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(241, "button", 7, 0);
    \u0275\u0275listener("click", function PrivacyPolicyComponent_Template_button_click_241_listener() {
      \u0275\u0275restoreView(_r1);
      return \u0275\u0275resetView(ctx.toggleSideNav());
    });
    \u0275\u0275elementStart(243, "span", 8)(244, "span", 9);
    \u0275\u0275element(245, "span", 10)(246, "span", 10)(247, "span", 10);
    \u0275\u0275elementEnd()()();
    \u0275\u0275elementStart(248, "aside", 5)(249, "div", 11)(250, "div", 12);
    \u0275\u0275conditionalCreate(251, PrivacyPolicyComponent_Conditional_251_Template, 5, 0, "button", 13);
    \u0275\u0275elementStart(252, "a", 14)(253, "span", 8);
    \u0275\u0275element(254, "i", 15);
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(255, "label");
    \u0275\u0275text(256, " Repipe Home Page ");
    \u0275\u0275elementEnd()()()()()();
  }
  if (rf & 2) {
    \u0275\u0275advance(239);
    \u0275\u0275classProp("active", ctx.sideNavActive);
    \u0275\u0275advance(9);
    \u0275\u0275classProp("active", ctx.sideNavActive);
    \u0275\u0275advance(3);
    \u0275\u0275conditional(ctx.showHomeNav ? 251 : -1);
  }
}, styles: ['\n\n#privacyPolicy[_ngcontent-%COMP%] {\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  overflow-x: hidden;\n  padding: 5vw;\n}\n#privacyPolicy[_ngcontent-%COMP%]    > header[_ngcontent-%COMP%]    > .logo[_ngcontent-%COMP%] {\n  text-align: center;\n}\n#privacyPolicy[_ngcontent-%COMP%]    > header[_ngcontent-%COMP%]    > .logo[_ngcontent-%COMP%]   img[_ngcontent-%COMP%] {\n  width: 30vw;\n}\n#privacyPolicy[_ngcontent-%COMP%]    > .document[_ngcontent-%COMP%] {\n  margin-top: 3vw;\n}\n#privacyPolicy[_ngcontent-%COMP%]    > .document[_ngcontent-%COMP%]   *[_ngcontent-%COMP%] {\n  font-family:\n    "Times New Roman",\n    Times,\n    serif;\n}\n#privacyPolicy[_ngcontent-%COMP%]    > .document[_ngcontent-%COMP%]   h1[_ngcontent-%COMP%] {\n  text-align: center;\n  font-size: 4vw;\n  font-weight: var(--strongest);\n}\n#privacyPolicy[_ngcontent-%COMP%]    > .document[_ngcontent-%COMP%]   h2[_ngcontent-%COMP%] {\n  margin-top: 2vw;\n  font-size: 3vw;\n  font-weight: var(--stronger);\n}\n#privacyPolicy[_ngcontent-%COMP%]    > .document[_ngcontent-%COMP%]   h3[_ngcontent-%COMP%] {\n  margin-top: 0.5vw;\n  font-size: 2.6vw;\n  font-weight: var(--strong);\n}\n#privacyPolicy[_ngcontent-%COMP%]    > .document[_ngcontent-%COMP%]   p[_ngcontent-%COMP%] {\n  margin: 1vw 0;\n  font-size: 1.8vw;\n  font-weight: var(--stdweight);\n}\n#privacyPolicy[_ngcontent-%COMP%]    > .document[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%] {\n  margin: 1vw 0;\n  list-style-type: disc;\n}\n#privacyPolicy[_ngcontent-%COMP%]    > .document[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%] {\n  font-size: 1.8vw;\n  font-weight: var(--stdweight);\n  margin-top: 0.5vw;\n}\n#privacyPolicy[_ngcontent-%COMP%]    > .document[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]:first-child {\n  margin-top: 0;\n}\n#sideNav[_ngcontent-%COMP%]    > .bg[_ngcontent-%COMP%] {\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  z-index: calc(var(--sideNav-layer) - 1);\n  background-color: rgba(var(--color1-raw), 0.7);\n  -webkit-backdrop-filter: blur(0.25vw);\n  -moz-backdrop-filter: blur(0.25vw);\n  -o-backdrop-filter: blur(0.25vw);\n  -ms-backdrop-filter: blur(0.25vw);\n  backdrop-filter: blur(0.25vw);\n  opacity: 0;\n  -moz-transition: opacity 0.2s linear;\n  -o-transition: opacity 0.2s linear;\n  -webkit-transition: opacity 0.2s linear;\n  transition: opacity 0.2s linear;\n  pointer-events: none;\n}\n#sideNav[_ngcontent-%COMP%]    > .control[_ngcontent-%COMP%] {\n  position: fixed;\n  z-index: calc(var(--sideNav-layer) + 1);\n  top: calc(0.5vw + var(--systemOffset-top));\n  left: 0.5vw;\n  cursor: pointer;\n  -moz-transition: transform 0.2s var(--easeInOutQuad);\n  -o-transition: transform 0.2s var(--easeInOutQuad);\n  -webkit-transition: transform 0.2s var(--easeInOutQuad);\n  transition: transform 0.2s var(--easeInOutQuad);\n  -moz-transform: translateX(0) translateY(0);\n  -ms-transform: translateX(0) translateY(0);\n  -o-transform: translateX(0) translateY(0);\n  -webkit-transform: translateX(0) translateY(0);\n  transform: translateX(0) translateY(0);\n}\n#sideNav[_ngcontent-%COMP%]    > .control[_ngcontent-%COMP%]    > .icon[_ngcontent-%COMP%] {\n  display: block;\n  height: 3.5vw;\n  width: 3.5vw;\n  position: relative;\n}\n#sideNav[_ngcontent-%COMP%]    > .control[_ngcontent-%COMP%]    > .icon[_ngcontent-%COMP%]:before {\n  content: "";\n  display: block;\n  border-radius: 100%;\n  position: absolute;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  background-color: transparent;\n  z-index: 0;\n  -moz-transition: border-radius 0.2s var(--easeInOutQuad), background-color 0.2s var(--easeInOutQuad);\n  -o-transition: border-radius 0.2s var(--easeInOutQuad), background-color 0.2s var(--easeInOutQuad);\n  -webkit-transition: border-radius 0.2s var(--easeInOutQuad), background-color 0.2s var(--easeInOutQuad);\n  transition: border-radius 0.2s var(--easeInOutQuad), background-color 0.2s var(--easeInOutQuad);\n}\n#sideNav[_ngcontent-%COMP%]    > .control[_ngcontent-%COMP%]    > .icon[_ngcontent-%COMP%]    > .bars[_ngcontent-%COMP%] {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  -moz-transform: translate(-50%, -50%);\n  -ms-transform: translate(-50%, -50%);\n  -o-transform: translate(-50%, -50%);\n  -webkit-transform: translate(-50%, -50%);\n  transform: translate(-50%, -50%);\n  z-index: 1;\n  -moz-transform-origin: top center;\n  -ms-transform-origin: top center;\n  -o-transform-origin: top center;\n  -webkit-transform-origin: top center;\n  transform-origin: top center;\n  -moz-transition: transform 0.1s var(--easeInOutQuad);\n  -o-transition: transform 0.1s var(--easeInOutQuad);\n  -webkit-transition: transform 0.1s var(--easeInOutQuad);\n  transition: transform 0.1s var(--easeInOutQuad);\n}\n#sideNav[_ngcontent-%COMP%]    > .control[_ngcontent-%COMP%]    > .icon[_ngcontent-%COMP%]    > .bars[_ngcontent-%COMP%]    > .bar[_ngcontent-%COMP%] {\n  display: block;\n  width: 1.6vw;\n  height: 0.22vw;\n  background-color: var(--color1);\n  border-radius: 999px;\n  margin-top: 0.3vw;\n  opacity: 1;\n  -moz-transition: transform 0.2s var(--easeInOutQuad), opacity 0.2s var(--easeInOutQuad);\n  -o-transition: transform 0.2s var(--easeInOutQuad), opacity 0.2s var(--easeInOutQuad);\n  -webkit-transition: transform 0.2s var(--easeInOutQuad), opacity 0.2s var(--easeInOutQuad);\n  transition: transform 0.2s var(--easeInOutQuad), opacity 0.2s var(--easeInOutQuad);\n}\n#sideNav[_ngcontent-%COMP%]    > .control[_ngcontent-%COMP%]    > .icon[_ngcontent-%COMP%]    > .bars[_ngcontent-%COMP%]    > .bar[_ngcontent-%COMP%]:nth-child(1) {\n  -moz-transform-origin: top left;\n  -ms-transform-origin: top left;\n  -o-transform-origin: top left;\n  -webkit-transform-origin: top left;\n  transform-origin: top left;\n}\n#sideNav[_ngcontent-%COMP%]    > .control[_ngcontent-%COMP%]    > .icon[_ngcontent-%COMP%]    > .bars[_ngcontent-%COMP%]    > .bar[_ngcontent-%COMP%]:nth-child(3) {\n  -moz-transform-origin: bottom left;\n  -ms-transform-origin: bottom left;\n  -o-transform-origin: bottom left;\n  -webkit-transform-origin: bottom left;\n  transform-origin: bottom left;\n}\n#sideNav[_ngcontent-%COMP%]    > .control[_ngcontent-%COMP%]    > .icon[_ngcontent-%COMP%]    > .bars[_ngcontent-%COMP%]    > .bar[_ngcontent-%COMP%]:first-child {\n  margin-top: 0;\n}\n#sideNav[_ngcontent-%COMP%]   #sideNav[_ngcontent-%COMP%]    > .island[_ngcontent-%COMP%] {\n  position: fixed;\n  z-index: var(--sideNav-layer);\n  top: calc(1.5vw + var(--systemOffset-top));\n  left: 2vw;\n  background-color: var(--color2);\n  padding: 3vw 0 1vw;\n  border-radius: 999px;\n  -moz-transition: transform 0.2s var(--easeInOutQuad);\n  -o-transition: transform 0.2s var(--easeInOutQuad);\n  -webkit-transition: transform 0.2s var(--easeInOutQuad);\n  transition: transform 0.2s var(--easeInOutQuad);\n  -moz-transform: scale(0);\n  -ms-transform: scale(0);\n  -o-transform: scale(0);\n  -webkit-transform: scale(0);\n  transform: scale(0);\n  -moz-transform-origin: top left;\n  -ms-transform-origin: top left;\n  -o-transform-origin: top left;\n  -webkit-transform-origin: top left;\n  transform-origin: top left;\n}\n#sideNav[_ngcontent-%COMP%]   #sideNav[_ngcontent-%COMP%]    > .island[_ngcontent-%COMP%]    > .routes[_ngcontent-%COMP%] {\n  display: flex;\n  padding: 1vw;\n  display: flex;\n  flex-direction: column;\n  align-items: flex-start;\n  border-top: 0.1vw var(--color2Alt2) solid;\n}\n#sideNav[_ngcontent-%COMP%]   #sideNav[_ngcontent-%COMP%]    > .island[_ngcontent-%COMP%]    > .routes[_ngcontent-%COMP%]    > .route[_ngcontent-%COMP%] {\n  cursor: pointer;\n  position: relative;\n  margin-top: 1vw;\n  display: flex;\n  width: 100%;\n  align-items: center;\n}\n#sideNav[_ngcontent-%COMP%]   #sideNav[_ngcontent-%COMP%]    > .island[_ngcontent-%COMP%]    > .routes[_ngcontent-%COMP%]    > .route[_ngcontent-%COMP%]    > .icon[_ngcontent-%COMP%] {\n  display: block;\n  position: relative;\n  height: 4.2vw;\n  width: 4.2vw;\n  background-color: var(--color2);\n  border-radius: 100%;\n  -moz-transition: border-color 0.2s, background-color 0.2s;\n  -o-transition: border-color 0.2s, background-color 0.2s;\n  -webkit-transition: border-color 0.2s, background-color 0.2s;\n  transition: border-color 0.2s, background-color 0.2s;\n}\n#sideNav[_ngcontent-%COMP%]   #sideNav[_ngcontent-%COMP%]    > .island[_ngcontent-%COMP%]    > .routes[_ngcontent-%COMP%]    > .route[_ngcontent-%COMP%]    > .icon[_ngcontent-%COMP%]   i[_ngcontent-%COMP%] {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  -moz-transform: translate(-50%, -50%);\n  -ms-transform: translate(-50%, -50%);\n  -o-transform: translate(-50%, -50%);\n  -webkit-transform: translate(-50%, -50%);\n  transform: translate(-50%, -50%);\n  color: var(--color1Alt1);\n  font-size: 2vw;\n}\n#sideNav[_ngcontent-%COMP%]   #sideNav[_ngcontent-%COMP%]    > .island[_ngcontent-%COMP%]    > .routes[_ngcontent-%COMP%]    > .route[_ngcontent-%COMP%]    > label[_ngcontent-%COMP%] {\n  position: absolute;\n  top: 50%;\n  left: 100%;\n  margin-left: 2vw;\n  font-size: 1.4vw;\n  font-weight: var(--strong);\n  color: var(--color2);\n  white-space: nowrap;\n  display: block;\n  -moz-transform: scale(0) translateY(-50%);\n  -ms-transform: scale(0) translateY(-50%);\n  -o-transform: scale(0) translateY(-50%);\n  -webkit-transform: scale(0) translateY(-50%);\n  transform: scale(0) translateY(-50%);\n  -moz-transform-origin: left center;\n  -ms-transform-origin: left center;\n  -o-transform-origin: left center;\n  -webkit-transform-origin: left center;\n  transform-origin: left center;\n}\n#sideNav[_ngcontent-%COMP%]   #sideNav[_ngcontent-%COMP%]    > .island[_ngcontent-%COMP%]    > .routes[_ngcontent-%COMP%]    > .route.active[_ngcontent-%COMP%]    > .icon[_ngcontent-%COMP%] {\n  background-color: rgba(var(--color3-raw), 0.2);\n}\n#sideNav[_ngcontent-%COMP%]   #sideNav[_ngcontent-%COMP%]    > .island[_ngcontent-%COMP%]    > .routes[_ngcontent-%COMP%]    > .route.active[_ngcontent-%COMP%]    > .icon[_ngcontent-%COMP%]    > i[_ngcontent-%COMP%] {\n  color: var(--color3Alt1);\n}\n#sideNav[_ngcontent-%COMP%]   #sideNav[_ngcontent-%COMP%]    > .island[_ngcontent-%COMP%]    > .routes[_ngcontent-%COMP%]    > .route[_ngcontent-%COMP%]:first-child {\n  margin-top: 0;\n}\n#sideNav[_ngcontent-%COMP%]   #sideNav[_ngcontent-%COMP%]    > .island[_ngcontent-%COMP%]    > .routes[_ngcontent-%COMP%]:first-child {\n  border-top: none;\n}\n#sideNav[_ngcontent-%COMP%]   #sideNav.active[_ngcontent-%COMP%]    > .island[_ngcontent-%COMP%] {\n  -moz-transform: scale(1);\n  -ms-transform: scale(1);\n  -o-transform: scale(1);\n  -webkit-transform: scale(1);\n  transform: scale(1);\n}\n#sideNav[_ngcontent-%COMP%]   #sideNav.active[_ngcontent-%COMP%]    > .island[_ngcontent-%COMP%]    > .routes[_ngcontent-%COMP%]    > .route[_ngcontent-%COMP%]    > label[_ngcontent-%COMP%] {\n  -moz-transform: scale(1) translateY(-50%);\n  -ms-transform: scale(1) translateY(-50%);\n  -o-transform: scale(1) translateY(-50%);\n  -webkit-transform: scale(1) translateY(-50%);\n  transform: scale(1) translateY(-50%);\n  -moz-transition: transform 0.5s 0.3s;\n  -o-transition: transform 0.5s 0.3s;\n  -webkit-transition: transform 0.5s 0.3s;\n  transition: transform 0.5s 0.3s;\n}\n#sideNav.active[_ngcontent-%COMP%]    > .bg[_ngcontent-%COMP%] {\n  opacity: 1;\n  pointer-events: initial;\n}\n#sideNav.active[_ngcontent-%COMP%]    > .control[_ngcontent-%COMP%] {\n  -moz-transform: translateX(2.75vw) translateY(1vw);\n  -ms-transform: translateX(2.75vw) translateY(1vw);\n  -o-transform: translateX(2.75vw) translateY(1vw);\n  -webkit-transform: translateX(2.75vw) translateY(1vw);\n  transform: translateX(2.75vw) translateY(1vw);\n}\n#sideNav.active[_ngcontent-%COMP%]    > .control[_ngcontent-%COMP%]    > .icon[_ngcontent-%COMP%]:before {\n  background-color: var(--color2);\n  border-bottom-left-radius: 0;\n  border-bottom-right-radius: 0;\n}\n#sideNav.active[_ngcontent-%COMP%]    > .control[_ngcontent-%COMP%]    > .icon[_ngcontent-%COMP%]    > .bars[_ngcontent-%COMP%] {\n  -moz-transform: translate(-50%, -50%) translateX(25%);\n  -ms-transform: translate(-50%, -50%) translateX(25%);\n  -o-transform: translate(-50%, -50%) translateX(25%);\n  -webkit-transform: translate(-50%, -50%) translateX(25%);\n  transform: translate(-50%, -50%) translateX(25%);\n}\n#sideNav.active[_ngcontent-%COMP%]    > .control[_ngcontent-%COMP%]    > .icon[_ngcontent-%COMP%]    > .bars[_ngcontent-%COMP%]    > .bar[_ngcontent-%COMP%]:nth-child(1) {\n  -moz-transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  -o-transform: rotate(45deg);\n  -webkit-transform: rotate(45deg);\n  transform: rotate(45deg);\n}\n#sideNav.active[_ngcontent-%COMP%]    > .control[_ngcontent-%COMP%]    > .icon[_ngcontent-%COMP%]    > .bars[_ngcontent-%COMP%]    > .bar[_ngcontent-%COMP%]:nth-child(2) {\n  opacity: 0;\n}\n#sideNav.active[_ngcontent-%COMP%]    > .control[_ngcontent-%COMP%]    > .icon[_ngcontent-%COMP%]    > .bars[_ngcontent-%COMP%]    > .bar[_ngcontent-%COMP%]:nth-child(3) {\n  -moz-transform: rotate(-45deg);\n  -ms-transform: rotate(-45deg);\n  -o-transform: rotate(-45deg);\n  -webkit-transform: rotate(-45deg);\n  transform: rotate(-45deg);\n}\n/*# sourceMappingURL=privacy-policy.component.css.map */'] });
var PrivacyPolicyComponent = _PrivacyPolicyComponent;
(() => {
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(PrivacyPolicyComponent, [{
    type: Component,
    args: [{ standalone: false, template: `<section id="privacyPolicy">
  <header>
    <div class="logo">
      <img src="/assets/images/logo.svg" />
    </div>
  </header>
  <div class="document">
    <h1>"Repipe" Application</h1>
    <h1>Privacy Policy</h1>
    <p>Effective Date: September 8, 2025</p>
    <p>Last Updated: September 8, 2025</p>

    <h2>1. Introduction</h2>
    <p>National Renovations LLC ("we," "our," or "us") respects your privacy and is committed to protecting your
      personal information. This Privacy Policy explains how we collect, use, disclose, and safeguard your
    information when you use our mobile application Repipe (the "App").</p>

    <h2>2. Information We Collect</h2>
    <h3>2.1 Personal Information</h3>
    <p>We may collect the following types of personal information:</p>
    <ul>
      <li><strong>From Repipe Consultants:</strong>
      <ul>
        <li>Name, email address, and phone number</li>
        <li>Professional credentials and company affiliation</li>
        <li>Profile photos</li>
        <li>Device identifiers and technical information</li>
        <li>App interaction patterns and feature usage analytics</li>
      </ul>
    </li>
    <li><strong>From Homeowners:</strong>
    <ul>
      <li>Name, email address, and phone number</li>
      <li>Property address and location information</li>
      <li>Communication preferences</li>
    </ul>
  </li>
</ul>

<h3>2.2 Property and Project Information</h3>
<ul>
  <li>Property diagrams and measurements</li>
  <li>Photos of plumbing systems and property areas</li>
  <li>Estimate details and pricing information</li>
  <li>Project notes and specifications</li>
  <li>Communication history between consultants and homeowners</li>
</ul>

<h3>2.3 Location Information</h3>
<ul>
  <li>Precise location data when using mapping features</li>
  <li>Property locations for service estimates</li>
  <li>GPS coordinates for navigation purposes</li>
</ul>

<h3>2.4 Communication Data</h3>
<ul>
  <li>Messages sent through the in-app messaging system</li>
  <li>Call logs and communication history</li>
  <li>File attachments and shared documents</li>
</ul>

<h3>2.5 Technical Information</h3>
<ul>
  <li>Device type, operating system, and version</li>
  <li>App usage analytics and performance data</li>
  <li>IP address and network information</li>
  <li>Crash reports and error logs</li>
</ul>

<h2>3. How We Use Your Information</h2>
<p>We use the collected information for the following purposes:</p>
<h3>3.1 Service Delivery</h3>
<ul>
  <li>Facilitate communication between consultants and homeowners</li>
  <li>Create and store property diagrams and estimates</li>
  <li>Schedule appointments and manage projects</li>
  <li>Provide customer support</li>
</ul>

<h3>3.2 App Functionality</h3>
<ul>
  <li>Enable location-based services and navigation</li>
  <li>Synchronize data across devices</li>
  <li>Maintain user accounts and preferences</li>
  <li>Process payments and billing</li>
</ul>

<h3>3.3 Business Operations</h3>
<ul>
  <li>Improve app performance and user experience</li>
  <li>Analyze usage patterns and trends</li>
  <li>Ensure security and prevent fraud</li>
  <li>Comply with legal obligations</li>
</ul>

<h2>4. Information Sharing and Disclosure</h2>
<h3>4.1 Service Providers</h3>
<p>We may share information with trusted third-party service providers who assist us in:</p>
<ul>
  <li>Cloud storage and data hosting</li>
  <li>Payment processing</li>
  <li>Analytics and app performance monitoring</li>
</ul>

<h3>4.2 Business Partners</h3>
<p>Information may be shared between consultants and homeowners as necessary for service delivery.</p>

<h3>4.3 Legal Requirements</h3>
<p>We may disclose information when required by law or to:</p>
<ul>
  <li>Comply with legal processes</li>
  <li>Protect our rights and property</li>
  <li>Ensure user safety and security</li>
  <li>Prevent fraud or illegal activities</li>
</ul>

<h3>4.4 Business Transfers</h3>
<p>In the event of a merger, acquisition, or sale of assets, user information may be transferred as part of the
transaction.</p>

<h2>5. Data Security</h2>
<p>We implement appropriate technical and organizational measures to protect your information, including:</p>
<ul>
  <li>Encryption of data in transit and at rest</li>
  <li>Secure authentication protocols</li>
  <li>Regular security assessments</li>
  <li>Limited access controls</li>
  <li>Secure data centers and hosting environments</li>
</ul>

<h2>6. Data Retention</h2>
<p>We retain your information for as long as necessary to:</p>
<ul>
  <li>Provide our services</li>
  <li>Comply with legal obligations</li>
  <li>Resolve disputes</li>
  <li>Enforce our agreements</li>
</ul>

<h2>7. Your Rights and Choices</h2>
<h3>7.1 Access and Correction</h3>
<p>You may request access to or correction of your personal information by contacting us at
it&#64;repipespecialists.com.</p>

<h3>7.2 Data Deletion</h3>
<p>You may request deletion of your account and associated data, subject to legal retention requirements.</p>

<h3>7.3 Communication Preferences</h3>
<p>You can opt out of promotional communications while still receiving service-related messages.</p>

<h3>7.4 Location Services</h3>
<p>You can disable location services through your device settings, though this may limit app functionality.</p>

<h2>8. Children's Privacy</h2>
<p>Our App is not intended for children under 13 years of age. We do not knowingly collect personal information
  from children under 13. If we become aware that we have collected such information, we will take steps to
delete it promptly.</p>

<h2>9. App Access Restrictions</h2>
<p>This App is restricted to authorized repipe consultants and employees of National Renovations, LLC. Access is
  granted only to verified personnel who have been properly onboarded and trained. Unauthorized use of this
App is prohibited.</p>

<h2>10. International Data Transfers</h2>
<p>Your information may be transferred to and processed in countries other than your country of residence. We
ensure appropriate safeguards are in place for such transfers in accordance with applicable laws.</p>

<h2>11. Third-Party Services</h2>
<p>Our App may contain links to or integrate with third-party services. This Privacy Policy does not apply to
those services, and we encourage you to review their privacy policies.</p>

<h2>12. Updates to This Policy</h2>
<p>We may update this Privacy Policy periodically to reflect changes in our practices or applicable laws. We
will notify users of material changes through the App or other appropriate means.</p>

<h2>13. Contact Information</h2>
<p>If you have questions about this Privacy Policy or our privacy practices, please contact us:</p>
<p>Email: it&#64;repipespecialists.com</p>

<h2>14. Consent</h2>
<p>By using our App, you consent to the collection, use, and disclosure of your information as described in this
Privacy Policy.</p>

<p>This Privacy Policy was last updated on September 8, 2025 and is effective as of September 8, 2025.</p>
</div>
</section>

<nav id="sideNav" [class.active]="sideNavActive">
  <div class="bg" (click)="closeSideNav()"></div>

  <button class="control" #sideNavControlElm (click)="toggleSideNav()">
    <span class="icon">
      <span class="bars">
        <span class="bar"></span>
        <span class="bar"></span>
        <span class="bar"></span>
      </span>
    </span>
  </button>

  <aside id="sideNav" [class.active]="sideNavActive">
    <div class="island">
      <div class="routes">
        @if (showHomeNav) {
          <button class="route" (click)="goHome()">
            <span class="icon">
              <i class="fa-duotone fa-solid fa-calendar"></i>
            </span>
            <label>
              Dashboard
            </label>
          </button>
        }
        <a class="route" href="https://repipe.com/" target="_blank">
          <span class="icon">
            <i class="fa-duotone fa-link"></i>
          </span>
          <label>
            Repipe Home Page
          </label>
        </a>
      </div>
    </div>
  </aside>
</nav>`, styles: ['/* src/app/privacy-policy/privacy-policy.component.scss */\n#privacyPolicy {\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  overflow-x: hidden;\n  padding: 5vw;\n}\n#privacyPolicy > header > .logo {\n  text-align: center;\n}\n#privacyPolicy > header > .logo img {\n  width: 30vw;\n}\n#privacyPolicy > .document {\n  margin-top: 3vw;\n}\n#privacyPolicy > .document * {\n  font-family:\n    "Times New Roman",\n    Times,\n    serif;\n}\n#privacyPolicy > .document h1 {\n  text-align: center;\n  font-size: 4vw;\n  font-weight: var(--strongest);\n}\n#privacyPolicy > .document h2 {\n  margin-top: 2vw;\n  font-size: 3vw;\n  font-weight: var(--stronger);\n}\n#privacyPolicy > .document h3 {\n  margin-top: 0.5vw;\n  font-size: 2.6vw;\n  font-weight: var(--strong);\n}\n#privacyPolicy > .document p {\n  margin: 1vw 0;\n  font-size: 1.8vw;\n  font-weight: var(--stdweight);\n}\n#privacyPolicy > .document ul {\n  margin: 1vw 0;\n  list-style-type: disc;\n}\n#privacyPolicy > .document ul li {\n  font-size: 1.8vw;\n  font-weight: var(--stdweight);\n  margin-top: 0.5vw;\n}\n#privacyPolicy > .document ul li:first-child {\n  margin-top: 0;\n}\n#sideNav > .bg {\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  z-index: calc(var(--sideNav-layer) - 1);\n  background-color: rgba(var(--color1-raw), 0.7);\n  -webkit-backdrop-filter: blur(0.25vw);\n  -moz-backdrop-filter: blur(0.25vw);\n  -o-backdrop-filter: blur(0.25vw);\n  -ms-backdrop-filter: blur(0.25vw);\n  backdrop-filter: blur(0.25vw);\n  opacity: 0;\n  -moz-transition: opacity 0.2s linear;\n  -o-transition: opacity 0.2s linear;\n  -webkit-transition: opacity 0.2s linear;\n  transition: opacity 0.2s linear;\n  pointer-events: none;\n}\n#sideNav > .control {\n  position: fixed;\n  z-index: calc(var(--sideNav-layer) + 1);\n  top: calc(0.5vw + var(--systemOffset-top));\n  left: 0.5vw;\n  cursor: pointer;\n  -moz-transition: transform 0.2s var(--easeInOutQuad);\n  -o-transition: transform 0.2s var(--easeInOutQuad);\n  -webkit-transition: transform 0.2s var(--easeInOutQuad);\n  transition: transform 0.2s var(--easeInOutQuad);\n  -moz-transform: translateX(0) translateY(0);\n  -ms-transform: translateX(0) translateY(0);\n  -o-transform: translateX(0) translateY(0);\n  -webkit-transform: translateX(0) translateY(0);\n  transform: translateX(0) translateY(0);\n}\n#sideNav > .control > .icon {\n  display: block;\n  height: 3.5vw;\n  width: 3.5vw;\n  position: relative;\n}\n#sideNav > .control > .icon:before {\n  content: "";\n  display: block;\n  border-radius: 100%;\n  position: absolute;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  background-color: transparent;\n  z-index: 0;\n  -moz-transition: border-radius 0.2s var(--easeInOutQuad), background-color 0.2s var(--easeInOutQuad);\n  -o-transition: border-radius 0.2s var(--easeInOutQuad), background-color 0.2s var(--easeInOutQuad);\n  -webkit-transition: border-radius 0.2s var(--easeInOutQuad), background-color 0.2s var(--easeInOutQuad);\n  transition: border-radius 0.2s var(--easeInOutQuad), background-color 0.2s var(--easeInOutQuad);\n}\n#sideNav > .control > .icon > .bars {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  -moz-transform: translate(-50%, -50%);\n  -ms-transform: translate(-50%, -50%);\n  -o-transform: translate(-50%, -50%);\n  -webkit-transform: translate(-50%, -50%);\n  transform: translate(-50%, -50%);\n  z-index: 1;\n  -moz-transform-origin: top center;\n  -ms-transform-origin: top center;\n  -o-transform-origin: top center;\n  -webkit-transform-origin: top center;\n  transform-origin: top center;\n  -moz-transition: transform 0.1s var(--easeInOutQuad);\n  -o-transition: transform 0.1s var(--easeInOutQuad);\n  -webkit-transition: transform 0.1s var(--easeInOutQuad);\n  transition: transform 0.1s var(--easeInOutQuad);\n}\n#sideNav > .control > .icon > .bars > .bar {\n  display: block;\n  width: 1.6vw;\n  height: 0.22vw;\n  background-color: var(--color1);\n  border-radius: 999px;\n  margin-top: 0.3vw;\n  opacity: 1;\n  -moz-transition: transform 0.2s var(--easeInOutQuad), opacity 0.2s var(--easeInOutQuad);\n  -o-transition: transform 0.2s var(--easeInOutQuad), opacity 0.2s var(--easeInOutQuad);\n  -webkit-transition: transform 0.2s var(--easeInOutQuad), opacity 0.2s var(--easeInOutQuad);\n  transition: transform 0.2s var(--easeInOutQuad), opacity 0.2s var(--easeInOutQuad);\n}\n#sideNav > .control > .icon > .bars > .bar:nth-child(1) {\n  -moz-transform-origin: top left;\n  -ms-transform-origin: top left;\n  -o-transform-origin: top left;\n  -webkit-transform-origin: top left;\n  transform-origin: top left;\n}\n#sideNav > .control > .icon > .bars > .bar:nth-child(3) {\n  -moz-transform-origin: bottom left;\n  -ms-transform-origin: bottom left;\n  -o-transform-origin: bottom left;\n  -webkit-transform-origin: bottom left;\n  transform-origin: bottom left;\n}\n#sideNav > .control > .icon > .bars > .bar:first-child {\n  margin-top: 0;\n}\n#sideNav #sideNav > .island {\n  position: fixed;\n  z-index: var(--sideNav-layer);\n  top: calc(1.5vw + var(--systemOffset-top));\n  left: 2vw;\n  background-color: var(--color2);\n  padding: 3vw 0 1vw;\n  border-radius: 999px;\n  -moz-transition: transform 0.2s var(--easeInOutQuad);\n  -o-transition: transform 0.2s var(--easeInOutQuad);\n  -webkit-transition: transform 0.2s var(--easeInOutQuad);\n  transition: transform 0.2s var(--easeInOutQuad);\n  -moz-transform: scale(0);\n  -ms-transform: scale(0);\n  -o-transform: scale(0);\n  -webkit-transform: scale(0);\n  transform: scale(0);\n  -moz-transform-origin: top left;\n  -ms-transform-origin: top left;\n  -o-transform-origin: top left;\n  -webkit-transform-origin: top left;\n  transform-origin: top left;\n}\n#sideNav #sideNav > .island > .routes {\n  display: flex;\n  padding: 1vw;\n  display: flex;\n  flex-direction: column;\n  align-items: flex-start;\n  border-top: 0.1vw var(--color2Alt2) solid;\n}\n#sideNav #sideNav > .island > .routes > .route {\n  cursor: pointer;\n  position: relative;\n  margin-top: 1vw;\n  display: flex;\n  width: 100%;\n  align-items: center;\n}\n#sideNav #sideNav > .island > .routes > .route > .icon {\n  display: block;\n  position: relative;\n  height: 4.2vw;\n  width: 4.2vw;\n  background-color: var(--color2);\n  border-radius: 100%;\n  -moz-transition: border-color 0.2s, background-color 0.2s;\n  -o-transition: border-color 0.2s, background-color 0.2s;\n  -webkit-transition: border-color 0.2s, background-color 0.2s;\n  transition: border-color 0.2s, background-color 0.2s;\n}\n#sideNav #sideNav > .island > .routes > .route > .icon i {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  -moz-transform: translate(-50%, -50%);\n  -ms-transform: translate(-50%, -50%);\n  -o-transform: translate(-50%, -50%);\n  -webkit-transform: translate(-50%, -50%);\n  transform: translate(-50%, -50%);\n  color: var(--color1Alt1);\n  font-size: 2vw;\n}\n#sideNav #sideNav > .island > .routes > .route > label {\n  position: absolute;\n  top: 50%;\n  left: 100%;\n  margin-left: 2vw;\n  font-size: 1.4vw;\n  font-weight: var(--strong);\n  color: var(--color2);\n  white-space: nowrap;\n  display: block;\n  -moz-transform: scale(0) translateY(-50%);\n  -ms-transform: scale(0) translateY(-50%);\n  -o-transform: scale(0) translateY(-50%);\n  -webkit-transform: scale(0) translateY(-50%);\n  transform: scale(0) translateY(-50%);\n  -moz-transform-origin: left center;\n  -ms-transform-origin: left center;\n  -o-transform-origin: left center;\n  -webkit-transform-origin: left center;\n  transform-origin: left center;\n}\n#sideNav #sideNav > .island > .routes > .route.active > .icon {\n  background-color: rgba(var(--color3-raw), 0.2);\n}\n#sideNav #sideNav > .island > .routes > .route.active > .icon > i {\n  color: var(--color3Alt1);\n}\n#sideNav #sideNav > .island > .routes > .route:first-child {\n  margin-top: 0;\n}\n#sideNav #sideNav > .island > .routes:first-child {\n  border-top: none;\n}\n#sideNav #sideNav.active > .island {\n  -moz-transform: scale(1);\n  -ms-transform: scale(1);\n  -o-transform: scale(1);\n  -webkit-transform: scale(1);\n  transform: scale(1);\n}\n#sideNav #sideNav.active > .island > .routes > .route > label {\n  -moz-transform: scale(1) translateY(-50%);\n  -ms-transform: scale(1) translateY(-50%);\n  -o-transform: scale(1) translateY(-50%);\n  -webkit-transform: scale(1) translateY(-50%);\n  transform: scale(1) translateY(-50%);\n  -moz-transition: transform 0.5s 0.3s;\n  -o-transition: transform 0.5s 0.3s;\n  -webkit-transition: transform 0.5s 0.3s;\n  transition: transform 0.5s 0.3s;\n}\n#sideNav.active > .bg {\n  opacity: 1;\n  pointer-events: initial;\n}\n#sideNav.active > .control {\n  -moz-transform: translateX(2.75vw) translateY(1vw);\n  -ms-transform: translateX(2.75vw) translateY(1vw);\n  -o-transform: translateX(2.75vw) translateY(1vw);\n  -webkit-transform: translateX(2.75vw) translateY(1vw);\n  transform: translateX(2.75vw) translateY(1vw);\n}\n#sideNav.active > .control > .icon:before {\n  background-color: var(--color2);\n  border-bottom-left-radius: 0;\n  border-bottom-right-radius: 0;\n}\n#sideNav.active > .control > .icon > .bars {\n  -moz-transform: translate(-50%, -50%) translateX(25%);\n  -ms-transform: translate(-50%, -50%) translateX(25%);\n  -o-transform: translate(-50%, -50%) translateX(25%);\n  -webkit-transform: translate(-50%, -50%) translateX(25%);\n  transform: translate(-50%, -50%) translateX(25%);\n}\n#sideNav.active > .control > .icon > .bars > .bar:nth-child(1) {\n  -moz-transform: rotate(45deg);\n  -ms-transform: rotate(45deg);\n  -o-transform: rotate(45deg);\n  -webkit-transform: rotate(45deg);\n  transform: rotate(45deg);\n}\n#sideNav.active > .control > .icon > .bars > .bar:nth-child(2) {\n  opacity: 0;\n}\n#sideNav.active > .control > .icon > .bars > .bar:nth-child(3) {\n  -moz-transform: rotate(-45deg);\n  -ms-transform: rotate(-45deg);\n  -o-transform: rotate(-45deg);\n  -webkit-transform: rotate(-45deg);\n  transform: rotate(-45deg);\n}\n/*# sourceMappingURL=privacy-policy.component.css.map */\n'] }]
  }], () => [{ type: AuthRefService }, { type: Router }], null);
})();
(() => {
  (typeof ngDevMode === "undefined" || ngDevMode) && \u0275setClassDebugInfo(PrivacyPolicyComponent, { className: "PrivacyPolicyComponent" });
})();

// src/app/shared/authentication/guards/auth.guard.ts
var _AuthGuard = class _AuthGuard {
  constructor(authRefService, router) {
    this.authRefService = authRefService;
    this.router = router;
  }
  canActivate(next, state) {
    return this.authRefService.authenticated.pipe(map((authenticated) => {
      if (authenticated) {
        return true;
      } else {
        return this.router.parseUrl("/login");
      }
    }));
  }
};
_AuthGuard.\u0275fac = function AuthGuard_Factory(__ngFactoryType__) {
  return new (__ngFactoryType__ || _AuthGuard)(\u0275\u0275inject(AuthRefService), \u0275\u0275inject(Router));
};
_AuthGuard.\u0275prov = /* @__PURE__ */ \u0275\u0275defineInjectable({ token: _AuthGuard, factory: _AuthGuard.\u0275fac, providedIn: "root" });
var AuthGuard = _AuthGuard;
(() => {
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(AuthGuard, [{
    type: Injectable,
    args: [{
      providedIn: "root"
    }]
  }], () => [{ type: AuthRefService }, { type: Router }], null);
})();

// src/app/shared/authentication/guards/logged-out.guard.ts
var _LoggedOutGuard = class _LoggedOutGuard {
  constructor(authRefService, router) {
    this.authRefService = authRefService;
    this.router = router;
  }
  canActivate(next, state) {
    return new Observable((o) => {
      this.authRefService.authenticating.subscribe({
        next: (authenticating) => {
          if (!authenticating) {
            const isAuthenticated = this.authRefService.authenticated.getValue();
            if (isAuthenticated) {
              const route = this.router.parseUrl("/");
              o.next(route);
              o.complete();
            } else {
              o.next(true);
              o.complete();
            }
          }
        }
      });
    });
  }
};
_LoggedOutGuard.\u0275fac = function LoggedOutGuard_Factory(__ngFactoryType__) {
  return new (__ngFactoryType__ || _LoggedOutGuard)(\u0275\u0275inject(AuthRefService), \u0275\u0275inject(Router));
};
_LoggedOutGuard.\u0275prov = /* @__PURE__ */ \u0275\u0275defineInjectable({ token: _LoggedOutGuard, factory: _LoggedOutGuard.\u0275fac, providedIn: "root" });
var LoggedOutGuard = _LoggedOutGuard;
(() => {
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(LoggedOutGuard, [{
    type: Injectable,
    args: [{
      providedIn: "root"
    }]
  }], () => [{ type: AuthRefService }, { type: Router }], null);
})();

// src/app/app-routing.module.ts
var routes = [
  {
    path: "documents",
    loadChildren: () => import("./chunk-4DN4N2RC.js").then((m) => m.DocumentModule)
  },
  {
    path: "documents/:signerKey",
    loadChildren: () => import("./chunk-4DN4N2RC.js").then((m) => m.DocumentModule)
  },
  {
    path: "privacy-policy",
    component: PrivacyPolicyComponent
  },
  {
    path: "login",
    loadChildren: () => import("./chunk-ABT5D6ZT.js").then((m) => m.AuthenticationModule),
    canActivate: [LoggedOutGuard]
  },
  {
    path: "",
    loadChildren: () => import("./chunk-DTOIG3GJ.js").then((m) => m.MainModule),
    canActivate: [AuthGuard]
  }
];
var _AppRoutingModule = class _AppRoutingModule {
};
_AppRoutingModule.\u0275fac = function AppRoutingModule_Factory(__ngFactoryType__) {
  return new (__ngFactoryType__ || _AppRoutingModule)();
};
_AppRoutingModule.\u0275mod = /* @__PURE__ */ \u0275\u0275defineNgModule({ type: _AppRoutingModule });
_AppRoutingModule.\u0275inj = /* @__PURE__ */ \u0275\u0275defineInjector({ imports: [RouterModule.forRoot(routes), RouterModule] });
var AppRoutingModule = _AppRoutingModule;
(() => {
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(AppRoutingModule, [{
    type: NgModule,
    args: [{
      imports: [RouterModule.forRoot(routes)],
      exports: [RouterModule]
    }]
  }], null, null);
})();

// src/app/shared/system/services/img-cache.service.ts
var _ImageCacheService = class _ImageCacheService {
  constructor(http, storageService) {
    this.http = http;
    this.storageService = storageService;
    this.CACHE_DOMAIN = environment.API_URL;
    this.observer = null;
  }
  init() {
    this.observer = new MutationObserver((mutations) => {
      for (const mutation of mutations) {
        if (mutation.type === "childList") {
          mutation.addedNodes.forEach((node) => this.scanNode(node));
        } else if (mutation.type === "attributes" && mutation.attributeName === "src" && mutation.target instanceof HTMLImageElement) {
          this.processImageElement(mutation.target);
        }
      }
    });
    this.observer.observe(document.body, {
      childList: true,
      subtree: true,
      attributes: true,
      attributeFilter: ["src"]
    });
    document.querySelectorAll("img").forEach((img) => this.processImageElement(img));
  }
  scanNode(node) {
    if (node instanceof HTMLImageElement) {
      this.processImageElement(node);
    }
    if ("querySelectorAll" in node) {
      node.querySelectorAll("img").forEach((img) => this.processImageElement(img));
    }
  }
  processImageElement(img) {
    return __async(this, null, function* () {
      const originalSrc = img.src;
      if (!originalSrc || !originalSrc.startsWith(this.CACHE_DOMAIN) || originalSrc.startsWith("blob:") || originalSrc.startsWith("data:")) {
        return;
      }
      const cached = yield this.storageService.getImage(originalSrc);
      if (cached?.localSrc && cached.binary) {
        if (img.src.startsWith("blob:")) {
          URL.revokeObjectURL(img.src);
        }
        img.src = cached.localSrc;
        return;
      }
      if (!navigator.onLine) {
        return;
      }
      try {
        const blob = yield this.http.get(originalSrc, { responseType: "blob" }).toPromise();
        const localSrc = URL.createObjectURL(blob);
        const toStore = {
          src: originalSrc,
          localSrc,
          binary: blob
        };
        yield this.storageService.storeImage(toStore);
        img.src = localSrc;
        img.onload = () => {
        };
      } catch (err) {
        console.error(`Failed to fetch and cache image: ${originalSrc}`, err);
      }
    });
  }
  ngOnDestroy() {
    this.observer?.disconnect();
  }
};
_ImageCacheService.\u0275fac = function ImageCacheService_Factory(__ngFactoryType__) {
  return new (__ngFactoryType__ || _ImageCacheService)(\u0275\u0275inject(HttpClient), \u0275\u0275inject(StorageService));
};
_ImageCacheService.\u0275prov = /* @__PURE__ */ \u0275\u0275defineInjectable({ token: _ImageCacheService, factory: _ImageCacheService.\u0275fac, providedIn: "root" });
var ImageCacheService = _ImageCacheService;
(() => {
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ImageCacheService, [{
    type: Injectable,
    args: [{
      providedIn: "root"
    }]
  }], () => [{ type: HttpClient }, { type: StorageService }], null);
})();

// src/app/shared/system/services/console-watcher.service.ts
var _ConsoleWatcherService = class _ConsoleWatcherService {
  constructor(http, apiService, logService) {
    this.http = http;
    this.apiService = apiService;
    this.logService = logService;
    this.online = false;
    this.url = `{{api}}/system/logs/client/`;
    this.maxLogSize = 5e3;
    this.maxLogs = 100;
    this.maxRetries = 3;
    this.cooldownInMs = 6e4;
    this.priorLogs = [];
    this.healthy = true;
    this.failures = 0;
    this.init();
  }
  watchOnline() {
    this.onlineSubscription = this.apiService.online.subscribe({
      next: (online) => {
        this.online = online;
      }
    });
  }
  safeStringify(obj) {
    const clone = deepClone(obj);
    return JSON.stringify(clone);
  }
  truncate(str, max) {
    return str.length > max ? str.slice(0, max) + "..." : str;
  }
  shouldSend(message) {
    const ignore = [
      /ResizeObserver loop limit exceeded/,
      /Lit is in 'beta' mode/,
      /Deprecation/,
      /Zone\.js/,
      /ExpressionChangedAfterItHasBeenCheckedError/,
      /NG0\d+/
    ];
    return !ignore.some((re) => re.test(message));
  }
  overrideConsole() {
    const send = (args) => {
      let logLine = "";
      let stack;
      try {
        logLine = args.map((a) => {
          if (a instanceof Error) {
            stack = a.stack;
            return a.message;
          }
          if (typeof a === "object" && a !== null) {
            try {
              return this.safeStringify(a);
            } catch {
              return "[Unserializable]";
            }
          }
          return String(a);
        }).join(" ");
        logLine = this.truncate(logLine, this.maxLogSize);
      } catch {
        logLine = "[Failed to format log]";
      }
      this.originalError(...args);
      if (!this.shouldSend(logLine))
        return;
      const payload = { level: "error", message: logLine, stack };
      const body = this.safeStringify(payload);
      const log = logLine;
      if (!this.healthy)
        return;
      if (this.online) {
        this.logService.log(body, log).subscribe({
          next: () => {
          },
          error: (e) => {
            this.failures++;
            if (this.failures >= this.maxRetries) {
              this.healthy = false;
              setTimeout(() => {
                this.healthy = true;
                this.failures = 0;
              }, this.cooldownInMs);
            }
            this.originalError("Client-log POST failed:", e);
          }
        });
      }
      this.priorLogs.push(payload);
      if (this.priorLogs.length > this.maxLogs)
        this.priorLogs.shift();
    };
    console.error = (...a) => send(a);
  }
  getRecentLogs() {
    return [...this.priorLogs];
  }
  // #endregion
  // #region Bootstrapping
  init() {
    this.watchOnline();
    this.originalError = console.error.bind(console);
    this.overrideConsole();
  }
};
_ConsoleWatcherService.\u0275fac = function ConsoleWatcherService_Factory(__ngFactoryType__) {
  return new (__ngFactoryType__ || _ConsoleWatcherService)(\u0275\u0275inject(HttpClient), \u0275\u0275inject(ApiService), \u0275\u0275inject(LogService));
};
_ConsoleWatcherService.\u0275prov = /* @__PURE__ */ \u0275\u0275defineInjectable({ token: _ConsoleWatcherService, factory: _ConsoleWatcherService.\u0275fac, providedIn: "root" });
var ConsoleWatcherService = _ConsoleWatcherService;
(() => {
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ConsoleWatcherService, [{
    type: Injectable,
    args: [{ providedIn: "root" }]
  }], () => [{ type: HttpClient }, { type: ApiService }, { type: LogService }], null);
})();

// src/app/app.component.ts
function AppComponent_Conditional_0_Conditional_5_Template(rf, ctx) {
  if (rf & 1) {
    \u0275\u0275elementStart(0, "h2");
    \u0275\u0275text(1);
    \u0275\u0275elementEnd();
  }
  if (rf & 2) {
    const ctx_r0 = \u0275\u0275nextContext(2);
    \u0275\u0275advance();
    \u0275\u0275textInterpolate1(" ", ctx_r0.promptHeader, " ");
  }
}
function AppComponent_Conditional_0_Conditional_6_Template(rf, ctx) {
  if (rf & 1) {
    \u0275\u0275elementStart(0, "p");
    \u0275\u0275text(1);
    \u0275\u0275elementEnd();
  }
  if (rf & 2) {
    const ctx_r0 = \u0275\u0275nextContext(2);
    \u0275\u0275advance();
    \u0275\u0275textInterpolate1(" ", ctx_r0.promptDescription, " ");
  }
}
function AppComponent_Conditional_0_Conditional_8_Template(rf, ctx) {
  if (rf & 1) {
    const _r2 = \u0275\u0275getCurrentView();
    \u0275\u0275elementStart(0, "button", 12);
    \u0275\u0275listener("click", function AppComponent_Conditional_0_Conditional_8_Template_button_click_0_listener() {
      \u0275\u0275restoreView(_r2);
      const ctx_r0 = \u0275\u0275nextContext(2);
      return \u0275\u0275resetView(ctx_r0.cancelPrompt());
    });
    \u0275\u0275elementStart(1, "label");
    \u0275\u0275text(2);
    \u0275\u0275elementEnd()();
  }
  if (rf & 2) {
    const ctx_r0 = \u0275\u0275nextContext(2);
    \u0275\u0275advance(2);
    \u0275\u0275textInterpolate(ctx_r0.promptCancelLabel);
  }
}
function AppComponent_Conditional_0_Conditional_9_Template(rf, ctx) {
  if (rf & 1) {
    const _r3 = \u0275\u0275getCurrentView();
    \u0275\u0275elementStart(0, "button", 13);
    \u0275\u0275listener("click", function AppComponent_Conditional_0_Conditional_9_Template_button_click_0_listener() {
      \u0275\u0275restoreView(_r3);
      const ctx_r0 = \u0275\u0275nextContext(2);
      return \u0275\u0275resetView(ctx_r0.confirmPrompt());
    });
    \u0275\u0275elementStart(1, "label");
    \u0275\u0275text(2);
    \u0275\u0275elementEnd()();
  }
  if (rf & 2) {
    const ctx_r0 = \u0275\u0275nextContext(2);
    \u0275\u0275advance(2);
    \u0275\u0275textInterpolate(ctx_r0.promptConfirmLabel);
  }
}
function AppComponent_Conditional_0_Template(rf, ctx) {
  if (rf & 1) {
    \u0275\u0275elementStart(0, "main", 6);
    \u0275\u0275element(1, "router-outlet");
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(2, "aside", 7);
    \u0275\u0275element(3, "div", 1);
    \u0275\u0275elementStart(4, "div", 8);
    \u0275\u0275conditionalCreate(5, AppComponent_Conditional_0_Conditional_5_Template, 2, 1, "h2");
    \u0275\u0275conditionalCreate(6, AppComponent_Conditional_0_Conditional_6_Template, 2, 1, "p");
    \u0275\u0275elementStart(7, "div", 9);
    \u0275\u0275conditionalCreate(8, AppComponent_Conditional_0_Conditional_8_Template, 3, 1, "button", 10);
    \u0275\u0275conditionalCreate(9, AppComponent_Conditional_0_Conditional_9_Template, 3, 1, "button", 11);
    \u0275\u0275elementEnd()()();
  }
  if (rf & 2) {
    const ctx_r0 = \u0275\u0275nextContext();
    \u0275\u0275advance(2);
    \u0275\u0275classProp("active", ctx_r0.showPrompt);
    \u0275\u0275advance(3);
    \u0275\u0275conditional(ctx_r0.promptHeader != null ? 5 : -1);
    \u0275\u0275advance();
    \u0275\u0275conditional(ctx_r0.promptDescription != null ? 6 : -1);
    \u0275\u0275advance(2);
    \u0275\u0275conditional(ctx_r0.promptCancelLabel != null ? 8 : -1);
    \u0275\u0275advance();
    \u0275\u0275conditional(ctx_r0.promptConfirmLabel != null ? 9 : -1);
  }
}
function AppComponent_Conditional_3_Template(rf, ctx) {
  if (rf & 1) {
    const _r4 = \u0275\u0275getCurrentView();
    \u0275\u0275elementStart(0, "signature-pad", 14);
    \u0275\u0275listener("close", function AppComponent_Conditional_3_Template_signature_pad_close_0_listener($event) {
      \u0275\u0275restoreView(_r4);
      const ctx_r0 = \u0275\u0275nextContext();
      return \u0275\u0275resetView(ctx_r0.closeSignature($event));
    });
    \u0275\u0275elementEnd();
  }
  if (rf & 2) {
    const ctx_r0 = \u0275\u0275nextContext();
    \u0275\u0275property("fieldId", ctx_r0.signingFieldId)("documentId", ctx_r0.signingDocumentId)("signer", ctx_r0.signer);
  }
}
function AppComponent_Conditional_6_Template(rf, ctx) {
  if (rf & 1) {
    const _r5 = \u0275\u0275getCurrentView();
    \u0275\u0275elementStart(0, "initial-pad", 14);
    \u0275\u0275listener("close", function AppComponent_Conditional_6_Template_initial_pad_close_0_listener($event) {
      \u0275\u0275restoreView(_r5);
      const ctx_r0 = \u0275\u0275nextContext();
      return \u0275\u0275resetView(ctx_r0.closeInitials($event));
    });
    \u0275\u0275elementEnd();
  }
  if (rf & 2) {
    const ctx_r0 = \u0275\u0275nextContext();
    \u0275\u0275property("fieldId", ctx_r0.initialingFieldId)("documentId", ctx_r0.initialingDocumentId)("signer", ctx_r0.initialer);
  }
}
function AppComponent_Conditional_7_Template(rf, ctx) {
  if (rf & 1) {
    \u0275\u0275elementStart(0, "div", 4);
    \u0275\u0275text(1);
    \u0275\u0275elementEnd();
  }
  if (rf & 2) {
    const ctx_r0 = \u0275\u0275nextContext();
    \u0275\u0275advance();
    \u0275\u0275textInterpolate1(" Environment: ", ctx_r0.environment, " ");
  }
}
function AppComponent_Conditional_8_Template(rf, ctx) {
  if (rf & 1) {
    \u0275\u0275elementStart(0, "aside", 5);
    \u0275\u0275element(1, "loader", 15);
    \u0275\u0275elementStart(2, "h2");
    \u0275\u0275text(3);
    \u0275\u0275elementEnd()();
  }
  if (rf & 2) {
    const ctx_r0 = \u0275\u0275nextContext();
    \u0275\u0275advance();
    \u0275\u0275property("fill", true);
    \u0275\u0275advance(2);
    \u0275\u0275textInterpolate(ctx_r0.updatingLabel);
  }
}
var _AppComponent = class _AppComponent {
  constructor(appService, imgCacheService, consoleWatcherService, authRefService, authService, uiService, documentsService) {
    this.appService = appService;
    this.imgCacheService = imgCacheService;
    this.consoleWatcherService = consoleWatcherService;
    this.authRefService = authRefService;
    this.authService = authService;
    this.uiService = uiService;
    this.documentsService = documentsService;
    this.checkingForUpdate = false;
    this.updatingLabel = "Updating";
    this.authenticating = false;
    this.closing = false;
    this.initialized = false;
  }
  // #region Environment
  get environment() {
    return environment.environment;
  }
  get showEnvironment() {
    return environment.showEnvironment;
  }
  get updatingApp() {
    return this.appService.updatingApp;
  }
  checkForUpdate() {
    return __async(this, null, function* () {
      if (Capacitor.isNativePlatform()) {
        const update = yield this.appService.checkNativeUpdate();
        if (update != null) {
          this.checkingForUpdate = false;
          const updated = yield this.appService.downloadAndApplyUpdate(update);
          if (!updated) {
            this.appService.updatingApp = false;
            this.initialized = true;
          }
        } else {
          this.checkingForUpdate = false;
          this.appService.updatingApp = false;
          this.initialized = true;
        }
      } else {
        const update = yield this.appService.checkWebUpdate();
        if (update != null) {
          const url = new URL(window.location.href);
          url.searchParams.set("_", Date.now().toString());
          window.location.href = url.toString();
        } else {
          this.checkingForUpdate = false;
          this.appService.updatingApp = false;
          this.initialized = true;
        }
      }
    });
  }
  watchAuthentication() {
    clearTimeout(this.authTimer);
    clearTimeout(this.closeTimer);
    const initialTimer = setTimeout(() => {
      this.authenticating = false;
    }, 32);
    const start = (/* @__PURE__ */ new Date()).getTime();
    this.authSubscription = this.authRefService.authenticating.subscribe({
      next: (authenticating) => {
        if (!authenticating) {
          const now = (/* @__PURE__ */ new Date()).getTime();
          const delta = now - start;
          if (delta <= 64) {
            clearTimeout(initialTimer);
            this.closing = false;
            this.authenticating = false;
          } else {
            this.closeTimer = window.setTimeout(() => {
              this.closing = true;
            }, 2500);
            this.authTimer = window.setTimeout(() => {
              this.closing = false;
              this.authenticating = false;
            }, 3500);
          }
        } else {
          this.authenticating = true;
        }
      }
    });
  }
  initAuthentication() {
    return __async(this, null, function* () {
      this.authService.init();
      this.watchAuthentication();
    });
  }
  // #endregion
  // #region Prompts
  get showPrompt() {
    return this.uiService.showPrompt;
  }
  get promptHeader() {
    return this.uiService.promptHeader;
  }
  get promptDescription() {
    return this.uiService.promptDescription;
  }
  get promptConfirmLabel() {
    return this.uiService.promptConfirmLabel;
  }
  get promptCancelLabel() {
    return this.uiService.promptCancelLabel;
  }
  confirmPrompt() {
    this.uiService.confirmPrompt();
  }
  cancelPrompt() {
    this.uiService.cancelPrompt();
  }
  // #endregion
  // #region Initialing
  get initialer() {
    return this.documentsService.initialer;
  }
  get initialingFieldId() {
    return this.documentsService.initialingFieldId;
  }
  get initialingDocumentId() {
    return this.documentsService.initialingDocumentId;
  }
  get initialing() {
    return this.documentsService.initialing;
  }
  closeInitials(signature) {
    this.documentsService.closeInitials(signature);
  }
  // #endregion
  // #region Signing
  get signer() {
    return this.documentsService.signer;
  }
  get signingFieldId() {
    return this.documentsService.signingFieldId;
  }
  get signingDocumentId() {
    return this.documentsService.signingDocumentId;
  }
  get signing() {
    return this.documentsService.signing;
  }
  closeSignature(signature) {
    this.documentsService.closeSignature(signature);
  }
  // #endregion
  ngOnInit() {
    return __async(this, null, function* () {
      const requestedRoute = window.location.pathname;
      if (requestedRoute.indexOf("/documents") == 0) {
        this.checkingForUpdate = false;
        this.appService.updatingApp = false;
        this.authenticating = false;
      } else {
        this.initAuthentication();
        yield this.checkForUpdate();
      }
    });
  }
};
_AppComponent.\u0275fac = function AppComponent_Factory(__ngFactoryType__) {
  return new (__ngFactoryType__ || _AppComponent)(\u0275\u0275directiveInject(AppService), \u0275\u0275directiveInject(ImageCacheService), \u0275\u0275directiveInject(ConsoleWatcherService), \u0275\u0275directiveInject(AuthRefService), \u0275\u0275directiveInject(AuthService), \u0275\u0275directiveInject(UiService), \u0275\u0275directiveInject(DocumentService));
};
_AppComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ type: _AppComponent, selectors: [["app-root"]], standalone: false, decls: 9, vars: 9, consts: [[1, "signature-pad"], [1, "bg"], [3, "fieldId", "documentId", "signer"], [1, "initial-pad"], [1, "environment"], ["id", "appUpdater"], ["id", "appComponent"], ["id", "prompt"], [1, "content"], [1, "controls"], [1, "control", "alternate"], [1, "control", "success"], [1, "control", "alternate", 3, "click"], [1, "control", "success", 3, "click"], [3, "close", "fieldId", "documentId", "signer"], [1, "active", 3, "fill"]], template: function AppComponent_Template(rf, ctx) {
  if (rf & 1) {
    \u0275\u0275conditionalCreate(0, AppComponent_Conditional_0_Template, 10, 6);
    \u0275\u0275elementStart(1, "div", 0);
    \u0275\u0275element(2, "div", 1);
    \u0275\u0275conditionalCreate(3, AppComponent_Conditional_3_Template, 1, 3, "signature-pad", 2);
    \u0275\u0275elementEnd();
    \u0275\u0275elementStart(4, "div", 3);
    \u0275\u0275element(5, "div", 1);
    \u0275\u0275conditionalCreate(6, AppComponent_Conditional_6_Template, 1, 3, "initial-pad", 2);
    \u0275\u0275elementEnd();
    \u0275\u0275conditionalCreate(7, AppComponent_Conditional_7_Template, 2, 1, "div", 4);
    \u0275\u0275conditionalCreate(8, AppComponent_Conditional_8_Template, 4, 2, "aside", 5);
  }
  if (rf & 2) {
    \u0275\u0275conditional(ctx.initialized ? 0 : -1);
    \u0275\u0275advance();
    \u0275\u0275classProp("active", ctx.signing);
    \u0275\u0275advance(2);
    \u0275\u0275conditional(ctx.signing ? 3 : -1);
    \u0275\u0275advance();
    \u0275\u0275classProp("active", ctx.initialing);
    \u0275\u0275advance(2);
    \u0275\u0275conditional(ctx.initialing ? 6 : -1);
    \u0275\u0275advance();
    \u0275\u0275conditional(ctx.showEnvironment ? 7 : -1);
    \u0275\u0275advance();
    \u0275\u0275conditional(ctx.updatingApp ? 8 : -1);
  }
}, dependencies: [LoaderComponent, SignaturePadComponent, InitialPadComponent, RouterOutlet], styles: ["\n\n@-webkit-keyframes _ngcontent-%COMP%_loadIn {\n  0% {\n    opacity: 0;\n  }\n  100% {\n    opacity: 1;\n  }\n}\n@-moz-keyframes loadIn {\n  0% {\n    opacity: 0;\n  }\n  100% {\n    opacity: 1;\n  }\n}\n@-o-keyframes loadIn {\n  0% {\n    opacity: 0;\n  }\n  100% {\n    opacity: 1;\n  }\n}\n@keyframes _ngcontent-%COMP%_loadIn {\n  0% {\n    opacity: 0;\n  }\n  100% {\n    opacity: 1;\n  }\n}\n@-webkit-keyframes _ngcontent-%COMP%_loadOut {\n  0% {\n    opacity: 1;\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    -webkit-transform: scale(1);\n    transform: scale(1);\n  }\n  100% {\n    opacity: 0;\n    -moz-transform: scale(0.8);\n    -ms-transform: scale(0.8);\n    -o-transform: scale(0.8);\n    -webkit-transform: scale(0.8);\n    transform: scale(0.8);\n  }\n}\n@-moz-keyframes loadOut {\n  0% {\n    opacity: 1;\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    -webkit-transform: scale(1);\n    transform: scale(1);\n  }\n  100% {\n    opacity: 0;\n    -moz-transform: scale(0.8);\n    -ms-transform: scale(0.8);\n    -o-transform: scale(0.8);\n    -webkit-transform: scale(0.8);\n    transform: scale(0.8);\n  }\n}\n@-o-keyframes loadOut {\n  0% {\n    opacity: 1;\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    -webkit-transform: scale(1);\n    transform: scale(1);\n  }\n  100% {\n    opacity: 0;\n    -moz-transform: scale(0.8);\n    -ms-transform: scale(0.8);\n    -o-transform: scale(0.8);\n    -webkit-transform: scale(0.8);\n    transform: scale(0.8);\n  }\n}\n@keyframes _ngcontent-%COMP%_loadOut {\n  0% {\n    opacity: 1;\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    -webkit-transform: scale(1);\n    transform: scale(1);\n  }\n  100% {\n    opacity: 0;\n    -moz-transform: scale(0.8);\n    -ms-transform: scale(0.8);\n    -o-transform: scale(0.8);\n    -webkit-transform: scale(0.8);\n    transform: scale(0.8);\n  }\n}\n#appComponent[_ngcontent-%COMP%] {\n  -moz-animation-name: loadIn;\n  -ms-animation-name: loadIn;\n  -o-animation-name: loadIn;\n  -webkit-animation-name: _ngcontent-%COMP%_loadIn;\n  animation-name: _ngcontent-%COMP%_loadIn;\n  -moz-animation-iteration-count: 1;\n  -ms-animation-iteration-count: 1;\n  -o-animation-iteration-count: 1;\n  -webkit-animation-iteration-count: 1;\n  animation-iteration-count: 1;\n  -moz-animation-timing-function: linear;\n  -ms-animation-timing-function: linear;\n  -o-animation-timing-function: linear;\n  -webkit-animation-timing-function: linear;\n  animation-timing-function: linear;\n  -moz-animation-duration: 1s;\n  -ms-animation-duration: 1s;\n  -o-animation-duration: 1s;\n  -webkit-animation-duration: 1s;\n  animation-duration: 1s;\n  -moz-animation-direction: normal;\n  -ms-animation-direction: normal;\n  -o-animation-direction: normal;\n  -webkit-animation-direction: normal;\n  animation-direction: normal;\n  -moz-animation-delay: 0s;\n  -ms-animation-delay: 0s;\n  -o-animation-delay: 0s;\n  -webkit-animation-delay: 0s;\n  animation-delay: 0s;\n  -moz-animation-fill-mode: forwards;\n  -ms-animation-fill-mode: forwards;\n  -o-animation-fill-mode: forwards;\n  -webkit-animation-fill-mode: forwards;\n  animation-fill-mode: forwards;\n}\n#appUpdater[_ngcontent-%COMP%] {\n  position: fixed;\n  top: 50%;\n  left: 50%;\n  -moz-transform: translate(-50%, -50%);\n  -ms-transform: translate(-50%, -50%);\n  -o-transform: translate(-50%, -50%);\n  -webkit-transform: translate(-50%, -50%);\n  transform: translate(-50%, -50%);\n}\n#appUpdater[_ngcontent-%COMP%]    > loader[_ngcontent-%COMP%] {\n  display: block;\n  position: relative;\n  width: 14vw;\n  height: 14vw;\n  --fillSpeed: 2s;\n}\n#appUpdater[_ngcontent-%COMP%]   h2[_ngcontent-%COMP%] {\n  position: absolute;\n  top: 100%;\n  left: 2.5vw;\n  margin-top: 2vw;\n  text-align: left;\n  color: var(--color1);\n  font-size: 2.4vw;\n  font-weight: var(--ltweight);\n  white-space: nowrap;\n}\n#prompt[_ngcontent-%COMP%] {\n  pointer-events: none;\n  z-index: 10000;\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  opacity: 0;\n  -webkit-backdrop-filter: blur(0.5vw);\n  -moz-backdrop-filter: blur(0.5vw);\n  -o-backdrop-filter: blur(0.5vw);\n  -ms-backdrop-filter: blur(0.5vw);\n  backdrop-filter: blur(0.5vw);\n  -moz-transition: opacity 0.2s linear;\n  -o-transition: opacity 0.2s linear;\n  -webkit-transition: opacity 0.2s linear;\n  transition: opacity 0.2s linear;\n}\n#prompt[_ngcontent-%COMP%]    > .bg[_ngcontent-%COMP%] {\n  z-index: 10000;\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  background-color: var(--color2);\n  opacity: 0;\n  -moz-transition: opacity 0.2s linear;\n  -o-transition: opacity 0.2s linear;\n  -webkit-transition: opacity 0.2s linear;\n  transition: opacity 0.2s linear;\n}\n#prompt[_ngcontent-%COMP%]    > .content[_ngcontent-%COMP%] {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  -moz-transform: translate(-50%, -50%);\n  -ms-transform: translate(-50%, -50%);\n  -o-transform: translate(-50%, -50%);\n  -webkit-transform: translate(-50%, -50%);\n  transform: translate(-50%, -50%);\n  z-index: 10001;\n  background-color: var(--color2);\n  border-radius: 1vw;\n  overflow: hidden;\n  opacity: 0;\n  min-width: 25vw;\n  max-width: 50vw;\n  -moz-transform: translate(-50%, -50%) scale(0.8);\n  -ms-transform: translate(-50%, -50%) scale(0.8);\n  -o-transform: translate(-50%, -50%) scale(0.8);\n  -webkit-transform: translate(-50%, -50%) scale(0.8);\n  transform: translate(-50%, -50%) scale(0.8);\n  -moz-transition: opacity 0.2s, transform 0.2s;\n  -o-transition: opacity 0.2s, transform 0.2s;\n  -webkit-transition: opacity 0.2s, transform 0.2s;\n  transition: opacity 0.2s, transform 0.2s;\n  box-shadow: 0 0.2vw 1vw rgba(var(--black-raw), 0.1);\n  padding: 1vw;\n}\n#prompt[_ngcontent-%COMP%]    > .content[_ngcontent-%COMP%]    > h2[_ngcontent-%COMP%] {\n  font-size: 1.8vw;\n  color: var(--color1);\n  font-weight: var(--strong);\n  text-align: center;\n}\n#prompt[_ngcontent-%COMP%]    > .content[_ngcontent-%COMP%]   p[_ngcontent-%COMP%] {\n  margin-top: 1vw;\n  font-size: 1.6vw;\n  line-height: 1.1;\n  color: var(--colorAlt4);\n  font-weight: var(--stdweight);\n  text-align: center;\n}\n#prompt[_ngcontent-%COMP%]    > .content[_ngcontent-%COMP%]    > .controls[_ngcontent-%COMP%] {\n  margin-top: 2vw;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n#prompt[_ngcontent-%COMP%]    > .content[_ngcontent-%COMP%]    > .controls[_ngcontent-%COMP%]    > .control[_ngcontent-%COMP%] {\n  position: relative;\n  margin-left: 1vw;\n  padding: 0.8vw 2vw;\n  border-radius: 1vw;\n  cursor: pointer;\n  margin-left: 1vw;\n  display: flex;\n  align-items: center;\n  background-color: var(--color3);\n  border: 0.1vw transparent solid;\n  -moz-transition: background-color 0.1s linear;\n  -o-transition: background-color 0.1s linear;\n  -webkit-transition: background-color 0.1s linear;\n  transition: background-color 0.1s linear;\n}\n#prompt[_ngcontent-%COMP%]    > .content[_ngcontent-%COMP%]    > .controls[_ngcontent-%COMP%]    > .control[_ngcontent-%COMP%]    > label[_ngcontent-%COMP%] {\n  font-size: 1.2vw;\n  color: var(--color2);\n  font-weight: var(--strong);\n  line-height: 1;\n}\n#prompt[_ngcontent-%COMP%]    > .content[_ngcontent-%COMP%]    > .controls[_ngcontent-%COMP%]    > .control.alternate[_ngcontent-%COMP%] {\n  background-color: var(--color2Alt1);\n  border-color: var(--color1);\n}\n#prompt[_ngcontent-%COMP%]    > .content[_ngcontent-%COMP%]    > .controls[_ngcontent-%COMP%]    > .control.alternate[_ngcontent-%COMP%]    > label[_ngcontent-%COMP%] {\n  color: var(--color1);\n}\n#prompt[_ngcontent-%COMP%]    > .content[_ngcontent-%COMP%]    > .controls[_ngcontent-%COMP%]    > .control.success[_ngcontent-%COMP%] {\n  background-color: var(--success);\n}\n#prompt[_ngcontent-%COMP%]    > .content[_ngcontent-%COMP%]    > .controls[_ngcontent-%COMP%]    > .control[disabled][_ngcontent-%COMP%] {\n  opacity: 0.6;\n  pointer-events: none;\n}\n#prompt[_ngcontent-%COMP%]    > .content[_ngcontent-%COMP%]    > .controls[_ngcontent-%COMP%]    > .control[_ngcontent-%COMP%]:active {\n  background-color: var(--color3Alt4);\n}\n#prompt[_ngcontent-%COMP%]    > .content[_ngcontent-%COMP%]    > .controls[_ngcontent-%COMP%]    > .control[_ngcontent-%COMP%]:active.success {\n  background-color: var(--successAlt4);\n}\n#prompt[_ngcontent-%COMP%]    > .content[_ngcontent-%COMP%]    > .controls[_ngcontent-%COMP%]    > .control[_ngcontent-%COMP%]:active.alternate {\n  background-color: var(--color2Alt2);\n}\n#prompt[_ngcontent-%COMP%]    > .content[_ngcontent-%COMP%]    > .controls[_ngcontent-%COMP%]    > .control[_ngcontent-%COMP%]:first-child {\n  margin-left: 0;\n}\n#prompt.active[_ngcontent-%COMP%] {\n  opacity: 1;\n  pointer-events: initial;\n}\n#prompt.active[_ngcontent-%COMP%]    > .bg[_ngcontent-%COMP%] {\n  opacity: 0.8;\n}\n#prompt.active[_ngcontent-%COMP%]    > .content[_ngcontent-%COMP%] {\n  -moz-transform: translate(-50%, -50%) scale(1);\n  -ms-transform: translate(-50%, -50%) scale(1);\n  -o-transform: translate(-50%, -50%) scale(1);\n  -webkit-transform: translate(-50%, -50%) scale(1);\n  transform: translate(-50%, -50%) scale(1);\n  opacity: 1;\n}\n.environment[_ngcontent-%COMP%] {\n  position: fixed;\n  left: 50%;\n  -moz-transform: translate3d(-50%, 0, 0);\n  -ms-transform: translate3d(-50%, 0, 0);\n  -o-transform: translate3d(-50%, 0, 0);\n  -webkit-transform: translate3d(-50%, 0, 0);\n  transform: translate3d(-50%, 0, 0);\n  top: 0.5vw;\n  z-index: 10001;\n  border-radius: 999px;\n  pointer-events: none;\n  border: 0.3vw var(--warningAlt3) solid;\n  background-color: var(--warning);\n  padding: 0.5vw 1vw;\n  opacity: 0.8;\n  font-size: 1vw;\n  color: var(--color1);\n  font-weight: var(--strongest);\n  text-transform: uppercase;\n}\n.signature-pad[_ngcontent-%COMP%]    > .bg[_ngcontent-%COMP%] {\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  z-index: 1;\n  background-color: rgba(var(--color1-raw), 0.7);\n  -webkit-backdrop-filter: blur(0.25vw);\n  -moz-backdrop-filter: blur(0.25vw);\n  -o-backdrop-filter: blur(0.25vw);\n  -ms-backdrop-filter: blur(0.25vw);\n  backdrop-filter: blur(0.25vw);\n  opacity: 0;\n  -moz-transition: opacity 0.2s linear;\n  -o-transition: opacity 0.2s linear;\n  -webkit-transition: opacity 0.2s linear;\n  transition: opacity 0.2s linear;\n  pointer-events: none;\n  z-index: var(--sideNav-layer)1;\n}\n.signature-pad[_ngcontent-%COMP%]   signature-pad[_ngcontent-%COMP%] {\n  display: block;\n  position: fixed;\n  top: 50%;\n  left: 50%;\n  -moz-transform: translate(-50%, -50%);\n  -ms-transform: translate(-50%, -50%);\n  -o-transform: translate(-50%, -50%);\n  -webkit-transform: translate(-50%, -50%);\n  transform: translate(-50%, -50%);\n  z-index: 2;\n  width: 75vw;\n  z-index: var(--sideNav-layer)2;\n}\n.signature-pad.active[_ngcontent-%COMP%]    > .bg[_ngcontent-%COMP%] {\n  opacity: 1;\n  pointer-events: initial;\n}\n.initial-pad[_ngcontent-%COMP%]    > .bg[_ngcontent-%COMP%] {\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  z-index: 1;\n  background-color: rgba(var(--color1-raw), 0.7);\n  -webkit-backdrop-filter: blur(0.25vw);\n  -moz-backdrop-filter: blur(0.25vw);\n  -o-backdrop-filter: blur(0.25vw);\n  -ms-backdrop-filter: blur(0.25vw);\n  backdrop-filter: blur(0.25vw);\n  opacity: 0;\n  -moz-transition: opacity 0.2s linear;\n  -o-transition: opacity 0.2s linear;\n  -webkit-transition: opacity 0.2s linear;\n  transition: opacity 0.2s linear;\n  pointer-events: none;\n  z-index: var(--sideNav-layer)1;\n}\n.initial-pad[_ngcontent-%COMP%]   initial-pad[_ngcontent-%COMP%] {\n  display: block;\n  position: fixed;\n  top: 50%;\n  left: 50%;\n  -moz-transform: translate(-50%, -50%);\n  -ms-transform: translate(-50%, -50%);\n  -o-transform: translate(-50%, -50%);\n  -webkit-transform: translate(-50%, -50%);\n  transform: translate(-50%, -50%);\n  z-index: 2;\n  width: 50vw;\n  z-index: var(--sideNav-layer)2;\n}\n.initial-pad.active[_ngcontent-%COMP%]    > .bg[_ngcontent-%COMP%] {\n  opacity: 1;\n  pointer-events: initial;\n}\n@media only screen and (max-width: 768px) {\n  #prompt[_ngcontent-%COMP%]    > .content[_ngcontent-%COMP%] {\n    min-width: auto;\n    max-width: initial;\n    width: 75vw;\n    padding: 2vw;\n  }\n  #prompt[_ngcontent-%COMP%]    > .content[_ngcontent-%COMP%]    > h2[_ngcontent-%COMP%] {\n    font-size: 4vw;\n  }\n  #prompt[_ngcontent-%COMP%]    > .content[_ngcontent-%COMP%]    > p[_ngcontent-%COMP%] {\n    font-size: 3.6vw;\n  }\n  #prompt[_ngcontent-%COMP%]    > .content[_ngcontent-%COMP%]    > .controls[_ngcontent-%COMP%]    > .control[_ngcontent-%COMP%] {\n    margin-left: 3vw;\n    padding: 1.5vw 3vw;\n    border-radius: 999px;\n  }\n  #prompt[_ngcontent-%COMP%]    > .content[_ngcontent-%COMP%]    > .controls[_ngcontent-%COMP%]    > .control[_ngcontent-%COMP%]    > label[_ngcontent-%COMP%] {\n    font-size: 2.6vw;\n  }\n  .initial-pad[_ngcontent-%COMP%]   initial-pad[_ngcontent-%COMP%] {\n    width: 95vw;\n  }\n  .signature-pad[_ngcontent-%COMP%]   signature-pad[_ngcontent-%COMP%] {\n    width: 95vw;\n  }\n}\n/*# sourceMappingURL=app.component.css.map */"] });
var AppComponent = _AppComponent;
(() => {
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(AppComponent, [{
    type: Component,
    args: [{ standalone: false, selector: "app-root", template: '@if (initialized) {\n  <main id="appComponent">\n    <router-outlet></router-outlet>\n  </main>\n  <aside id="prompt" [class.active]="showPrompt">\n    <div class="bg"></div>\n    <div class="content">\n      @if (promptHeader != null) {\n      <h2>\n        {{promptHeader}}\n      </h2>\n      }\n      @if (promptDescription != null) {\n      <p>\n        {{promptDescription}}\n      </p>\n      }\n      <div class="controls">\n        @if (promptCancelLabel != null) {\n        <button class="control alternate" (click)="cancelPrompt()">\n          <label>{{promptCancelLabel}}</label>\n        </button>\n        }\n        @if (promptConfirmLabel != null) {\n        <button class="control success" (click)="confirmPrompt()">\n          <label>{{promptConfirmLabel}}</label>\n        </button>\n        }\n      </div>\n    </div>\n  </aside>\n}\n\n<div class="signature-pad" [class.active]="signing">\n  <div class="bg"></div>\n  @if (signing) {\n    <signature-pad [fieldId]="signingFieldId" [documentId]="signingDocumentId" [signer]="signer" (close)="closeSignature($event)"></signature-pad>\n  }\n</div>\n\n<div class="initial-pad" [class.active]="initialing">\n  <div class="bg"></div>\n  @if (initialing) {\n    <initial-pad [fieldId]="initialingFieldId" [documentId]="initialingDocumentId" [signer]="initialer" (close)="closeInitials($event)"></initial-pad>\n  }\n</div>\n\n@if (showEnvironment) {\n  <div class="environment">\n    Environment: {{environment}}\n  </div>\n}\n\n@if (updatingApp) {\n  <aside id="appUpdater">\n    <loader class="active" [fill]="true"></loader>\n    <h2>{{updatingLabel}}</h2>\n  </aside>\n}', styles: ["/* src/app/app.component.scss */\n@-webkit-keyframes loadIn {\n  0% {\n    opacity: 0;\n  }\n  100% {\n    opacity: 1;\n  }\n}\n@-moz-keyframes loadIn {\n  0% {\n    opacity: 0;\n  }\n  100% {\n    opacity: 1;\n  }\n}\n@-o-keyframes loadIn {\n  0% {\n    opacity: 0;\n  }\n  100% {\n    opacity: 1;\n  }\n}\n@keyframes loadIn {\n  0% {\n    opacity: 0;\n  }\n  100% {\n    opacity: 1;\n  }\n}\n@-webkit-keyframes loadOut {\n  0% {\n    opacity: 1;\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    -webkit-transform: scale(1);\n    transform: scale(1);\n  }\n  100% {\n    opacity: 0;\n    -moz-transform: scale(0.8);\n    -ms-transform: scale(0.8);\n    -o-transform: scale(0.8);\n    -webkit-transform: scale(0.8);\n    transform: scale(0.8);\n  }\n}\n@-moz-keyframes loadOut {\n  0% {\n    opacity: 1;\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    -webkit-transform: scale(1);\n    transform: scale(1);\n  }\n  100% {\n    opacity: 0;\n    -moz-transform: scale(0.8);\n    -ms-transform: scale(0.8);\n    -o-transform: scale(0.8);\n    -webkit-transform: scale(0.8);\n    transform: scale(0.8);\n  }\n}\n@-o-keyframes loadOut {\n  0% {\n    opacity: 1;\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    -webkit-transform: scale(1);\n    transform: scale(1);\n  }\n  100% {\n    opacity: 0;\n    -moz-transform: scale(0.8);\n    -ms-transform: scale(0.8);\n    -o-transform: scale(0.8);\n    -webkit-transform: scale(0.8);\n    transform: scale(0.8);\n  }\n}\n@keyframes loadOut {\n  0% {\n    opacity: 1;\n    -moz-transform: scale(1);\n    -ms-transform: scale(1);\n    -o-transform: scale(1);\n    -webkit-transform: scale(1);\n    transform: scale(1);\n  }\n  100% {\n    opacity: 0;\n    -moz-transform: scale(0.8);\n    -ms-transform: scale(0.8);\n    -o-transform: scale(0.8);\n    -webkit-transform: scale(0.8);\n    transform: scale(0.8);\n  }\n}\n#appComponent {\n  -moz-animation-name: loadIn;\n  -ms-animation-name: loadIn;\n  -o-animation-name: loadIn;\n  -webkit-animation-name: loadIn;\n  animation-name: loadIn;\n  -moz-animation-iteration-count: 1;\n  -ms-animation-iteration-count: 1;\n  -o-animation-iteration-count: 1;\n  -webkit-animation-iteration-count: 1;\n  animation-iteration-count: 1;\n  -moz-animation-timing-function: linear;\n  -ms-animation-timing-function: linear;\n  -o-animation-timing-function: linear;\n  -webkit-animation-timing-function: linear;\n  animation-timing-function: linear;\n  -moz-animation-duration: 1s;\n  -ms-animation-duration: 1s;\n  -o-animation-duration: 1s;\n  -webkit-animation-duration: 1s;\n  animation-duration: 1s;\n  -moz-animation-direction: normal;\n  -ms-animation-direction: normal;\n  -o-animation-direction: normal;\n  -webkit-animation-direction: normal;\n  animation-direction: normal;\n  -moz-animation-delay: 0s;\n  -ms-animation-delay: 0s;\n  -o-animation-delay: 0s;\n  -webkit-animation-delay: 0s;\n  animation-delay: 0s;\n  -moz-animation-fill-mode: forwards;\n  -ms-animation-fill-mode: forwards;\n  -o-animation-fill-mode: forwards;\n  -webkit-animation-fill-mode: forwards;\n  animation-fill-mode: forwards;\n}\n#appUpdater {\n  position: fixed;\n  top: 50%;\n  left: 50%;\n  -moz-transform: translate(-50%, -50%);\n  -ms-transform: translate(-50%, -50%);\n  -o-transform: translate(-50%, -50%);\n  -webkit-transform: translate(-50%, -50%);\n  transform: translate(-50%, -50%);\n}\n#appUpdater > loader {\n  display: block;\n  position: relative;\n  width: 14vw;\n  height: 14vw;\n  --fillSpeed: 2s;\n}\n#appUpdater h2 {\n  position: absolute;\n  top: 100%;\n  left: 2.5vw;\n  margin-top: 2vw;\n  text-align: left;\n  color: var(--color1);\n  font-size: 2.4vw;\n  font-weight: var(--ltweight);\n  white-space: nowrap;\n}\n#prompt {\n  pointer-events: none;\n  z-index: 10000;\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  opacity: 0;\n  -webkit-backdrop-filter: blur(0.5vw);\n  -moz-backdrop-filter: blur(0.5vw);\n  -o-backdrop-filter: blur(0.5vw);\n  -ms-backdrop-filter: blur(0.5vw);\n  backdrop-filter: blur(0.5vw);\n  -moz-transition: opacity 0.2s linear;\n  -o-transition: opacity 0.2s linear;\n  -webkit-transition: opacity 0.2s linear;\n  transition: opacity 0.2s linear;\n}\n#prompt > .bg {\n  z-index: 10000;\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  background-color: var(--color2);\n  opacity: 0;\n  -moz-transition: opacity 0.2s linear;\n  -o-transition: opacity 0.2s linear;\n  -webkit-transition: opacity 0.2s linear;\n  transition: opacity 0.2s linear;\n}\n#prompt > .content {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  -moz-transform: translate(-50%, -50%);\n  -ms-transform: translate(-50%, -50%);\n  -o-transform: translate(-50%, -50%);\n  -webkit-transform: translate(-50%, -50%);\n  transform: translate(-50%, -50%);\n  z-index: 10001;\n  background-color: var(--color2);\n  border-radius: 1vw;\n  overflow: hidden;\n  opacity: 0;\n  min-width: 25vw;\n  max-width: 50vw;\n  -moz-transform: translate(-50%, -50%) scale(0.8);\n  -ms-transform: translate(-50%, -50%) scale(0.8);\n  -o-transform: translate(-50%, -50%) scale(0.8);\n  -webkit-transform: translate(-50%, -50%) scale(0.8);\n  transform: translate(-50%, -50%) scale(0.8);\n  -moz-transition: opacity 0.2s, transform 0.2s;\n  -o-transition: opacity 0.2s, transform 0.2s;\n  -webkit-transition: opacity 0.2s, transform 0.2s;\n  transition: opacity 0.2s, transform 0.2s;\n  box-shadow: 0 0.2vw 1vw rgba(var(--black-raw), 0.1);\n  padding: 1vw;\n}\n#prompt > .content > h2 {\n  font-size: 1.8vw;\n  color: var(--color1);\n  font-weight: var(--strong);\n  text-align: center;\n}\n#prompt > .content p {\n  margin-top: 1vw;\n  font-size: 1.6vw;\n  line-height: 1.1;\n  color: var(--colorAlt4);\n  font-weight: var(--stdweight);\n  text-align: center;\n}\n#prompt > .content > .controls {\n  margin-top: 2vw;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n#prompt > .content > .controls > .control {\n  position: relative;\n  margin-left: 1vw;\n  padding: 0.8vw 2vw;\n  border-radius: 1vw;\n  cursor: pointer;\n  margin-left: 1vw;\n  display: flex;\n  align-items: center;\n  background-color: var(--color3);\n  border: 0.1vw transparent solid;\n  -moz-transition: background-color 0.1s linear;\n  -o-transition: background-color 0.1s linear;\n  -webkit-transition: background-color 0.1s linear;\n  transition: background-color 0.1s linear;\n}\n#prompt > .content > .controls > .control > label {\n  font-size: 1.2vw;\n  color: var(--color2);\n  font-weight: var(--strong);\n  line-height: 1;\n}\n#prompt > .content > .controls > .control.alternate {\n  background-color: var(--color2Alt1);\n  border-color: var(--color1);\n}\n#prompt > .content > .controls > .control.alternate > label {\n  color: var(--color1);\n}\n#prompt > .content > .controls > .control.success {\n  background-color: var(--success);\n}\n#prompt > .content > .controls > .control[disabled] {\n  opacity: 0.6;\n  pointer-events: none;\n}\n#prompt > .content > .controls > .control:active {\n  background-color: var(--color3Alt4);\n}\n#prompt > .content > .controls > .control:active.success {\n  background-color: var(--successAlt4);\n}\n#prompt > .content > .controls > .control:active.alternate {\n  background-color: var(--color2Alt2);\n}\n#prompt > .content > .controls > .control:first-child {\n  margin-left: 0;\n}\n#prompt.active {\n  opacity: 1;\n  pointer-events: initial;\n}\n#prompt.active > .bg {\n  opacity: 0.8;\n}\n#prompt.active > .content {\n  -moz-transform: translate(-50%, -50%) scale(1);\n  -ms-transform: translate(-50%, -50%) scale(1);\n  -o-transform: translate(-50%, -50%) scale(1);\n  -webkit-transform: translate(-50%, -50%) scale(1);\n  transform: translate(-50%, -50%) scale(1);\n  opacity: 1;\n}\n.environment {\n  position: fixed;\n  left: 50%;\n  -moz-transform: translate3d(-50%, 0, 0);\n  -ms-transform: translate3d(-50%, 0, 0);\n  -o-transform: translate3d(-50%, 0, 0);\n  -webkit-transform: translate3d(-50%, 0, 0);\n  transform: translate3d(-50%, 0, 0);\n  top: 0.5vw;\n  z-index: 10001;\n  border-radius: 999px;\n  pointer-events: none;\n  border: 0.3vw var(--warningAlt3) solid;\n  background-color: var(--warning);\n  padding: 0.5vw 1vw;\n  opacity: 0.8;\n  font-size: 1vw;\n  color: var(--color1);\n  font-weight: var(--strongest);\n  text-transform: uppercase;\n}\n.signature-pad > .bg {\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  z-index: 1;\n  background-color: rgba(var(--color1-raw), 0.7);\n  -webkit-backdrop-filter: blur(0.25vw);\n  -moz-backdrop-filter: blur(0.25vw);\n  -o-backdrop-filter: blur(0.25vw);\n  -ms-backdrop-filter: blur(0.25vw);\n  backdrop-filter: blur(0.25vw);\n  opacity: 0;\n  -moz-transition: opacity 0.2s linear;\n  -o-transition: opacity 0.2s linear;\n  -webkit-transition: opacity 0.2s linear;\n  transition: opacity 0.2s linear;\n  pointer-events: none;\n  z-index: var(--sideNav-layer)1;\n}\n.signature-pad signature-pad {\n  display: block;\n  position: fixed;\n  top: 50%;\n  left: 50%;\n  -moz-transform: translate(-50%, -50%);\n  -ms-transform: translate(-50%, -50%);\n  -o-transform: translate(-50%, -50%);\n  -webkit-transform: translate(-50%, -50%);\n  transform: translate(-50%, -50%);\n  z-index: 2;\n  width: 75vw;\n  z-index: var(--sideNav-layer)2;\n}\n.signature-pad.active > .bg {\n  opacity: 1;\n  pointer-events: initial;\n}\n.initial-pad > .bg {\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  z-index: 1;\n  background-color: rgba(var(--color1-raw), 0.7);\n  -webkit-backdrop-filter: blur(0.25vw);\n  -moz-backdrop-filter: blur(0.25vw);\n  -o-backdrop-filter: blur(0.25vw);\n  -ms-backdrop-filter: blur(0.25vw);\n  backdrop-filter: blur(0.25vw);\n  opacity: 0;\n  -moz-transition: opacity 0.2s linear;\n  -o-transition: opacity 0.2s linear;\n  -webkit-transition: opacity 0.2s linear;\n  transition: opacity 0.2s linear;\n  pointer-events: none;\n  z-index: var(--sideNav-layer)1;\n}\n.initial-pad initial-pad {\n  display: block;\n  position: fixed;\n  top: 50%;\n  left: 50%;\n  -moz-transform: translate(-50%, -50%);\n  -ms-transform: translate(-50%, -50%);\n  -o-transform: translate(-50%, -50%);\n  -webkit-transform: translate(-50%, -50%);\n  transform: translate(-50%, -50%);\n  z-index: 2;\n  width: 50vw;\n  z-index: var(--sideNav-layer)2;\n}\n.initial-pad.active > .bg {\n  opacity: 1;\n  pointer-events: initial;\n}\n@media only screen and (max-width: 768px) {\n  #prompt > .content {\n    min-width: auto;\n    max-width: initial;\n    width: 75vw;\n    padding: 2vw;\n  }\n  #prompt > .content > h2 {\n    font-size: 4vw;\n  }\n  #prompt > .content > p {\n    font-size: 3.6vw;\n  }\n  #prompt > .content > .controls > .control {\n    margin-left: 3vw;\n    padding: 1.5vw 3vw;\n    border-radius: 999px;\n  }\n  #prompt > .content > .controls > .control > label {\n    font-size: 2.6vw;\n  }\n  .initial-pad initial-pad {\n    width: 95vw;\n  }\n  .signature-pad signature-pad {\n    width: 95vw;\n  }\n}\n/*# sourceMappingURL=app.component.css.map */\n"] }]
  }], () => [{ type: AppService }, { type: ImageCacheService }, { type: ConsoleWatcherService }, { type: AuthRefService }, { type: AuthService }, { type: UiService }, { type: DocumentService }], null);
})();
(() => {
  (typeof ngDevMode === "undefined" || ngDevMode) && \u0275setClassDebugInfo(AppComponent, { className: "AppComponent" });
})();

// src/app/shared/system/interceptors/token.interceptor.ts
var _TokenInterceptor = class _TokenInterceptor {
  constructor(http, authRefService, logService) {
    this.http = http;
    this.authRefService = authRefService;
    this.logService = logService;
  }
  processApiRequest(url, request, next) {
    return this.authRefService.authenticating.pipe(filter((authenticating) => !authenticating), take(1), exhaustMap(() => {
      return this.processAuthenticatedRequest(url, request, next);
    }));
  }
  processAuthenticatedRequest(url, request, next) {
    const accessToken = this.authRefService.accessToken;
    if (accessToken != null) {
      const headers = {
        "Accept-Language": "en-US",
        Authorization: `Bearer ${accessToken}`
      };
      request = request.clone({
        setHeaders: headers,
        url
      });
      return next.handle(request).pipe(map((e) => {
        return e;
      }), catchError((e) => {
        this.storeError(request, e);
        return throwError(() => e);
      }));
    } else {
      return EMPTY;
    }
  }
  intercept(request, next) {
    let apiUrl;
    const isAuthenticatingRequest = request.url.includes("{{authApi}}");
    const isAuthenticatedRequest = request.url.includes("{{api}}");
    apiUrl = request.url.replace("{{api}}", environment.API_URL).replace("{{authApi}}", environment.API_URL);
    if (isAuthenticatedRequest) {
      return this.processApiRequest(apiUrl, request, next);
    } else if (isAuthenticatingRequest) {
      return this.processAuthenticatedRequest(apiUrl, request, next);
    } else {
      request = request.clone({
        url: apiUrl
      });
      return next.handle(request).pipe(map((e) => {
        return e;
      }), catchError((e) => {
        this.storeError(request, e);
        return throwError(() => e);
      }));
    }
  }
  // #region Logs
  shouldLogError(url) {
    return !url.includes("talk-to-me-goose") && !url.includes("system/logs/client") && !url.includes("openstreetmap");
  }
  storeError(request, error) {
    return __async(this, null, function* () {
      if (this.shouldLogError(request.url)) {
        const bodySize = this.getBodySize(request.body);
        const errorStr = JSON.stringify(error);
        this.logService.log(`HTTP Request Failed. Body Size: ${bodySize}. Error: ${errorStr}`, `Request: ${request.url} failed.`).subscribe();
      }
    });
  }
  getBodySize(body) {
    if (body === null || body === void 0) {
      return 0;
    }
    if (typeof body === "string") {
      return new Blob([body]).size;
    }
    if (body instanceof Blob) {
      return body.size;
    }
    if (body instanceof ArrayBuffer) {
      return body.byteLength;
    }
    if (body instanceof FormData) {
      return -1;
    }
    if (typeof body === "object") {
      try {
        return new Blob([JSON.stringify(body)]).size;
      } catch {
        return -1;
      }
    }
    try {
      return new Blob([body.toString()]).size;
    } catch {
      return -1;
    }
  }
};
_TokenInterceptor.\u0275fac = function TokenInterceptor_Factory(__ngFactoryType__) {
  return new (__ngFactoryType__ || _TokenInterceptor)(\u0275\u0275inject(HttpClient), \u0275\u0275inject(AuthRefService), \u0275\u0275inject(LogService));
};
_TokenInterceptor.\u0275prov = /* @__PURE__ */ \u0275\u0275defineInjectable({ token: _TokenInterceptor, factory: _TokenInterceptor.\u0275fac });
var TokenInterceptor = _TokenInterceptor;
(() => {
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(TokenInterceptor, [{
    type: Injectable
  }], () => [{ type: HttpClient }, { type: AuthRefService }, { type: LogService }], null);
})();

// src/app/app.module.ts
var _HammerConfig = class _HammerConfig extends HammerGestureConfig {
  constructor() {
    super(...arguments);
    this.overrides = {
      swipe: { enable: false },
      press: { time: 72 }
    };
  }
};
_HammerConfig.\u0275fac = /* @__PURE__ */ (() => {
  let \u0275HammerConfig_BaseFactory;
  return function HammerConfig_Factory(__ngFactoryType__) {
    return (\u0275HammerConfig_BaseFactory || (\u0275HammerConfig_BaseFactory = \u0275\u0275getInheritedFactory(_HammerConfig)))(__ngFactoryType__ || _HammerConfig);
  };
})();
_HammerConfig.\u0275prov = /* @__PURE__ */ \u0275\u0275defineInjectable({ token: _HammerConfig, factory: _HammerConfig.\u0275fac });
var HammerConfig = _HammerConfig;
(() => {
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(HammerConfig, [{
    type: Injectable
  }], null, null);
})();
var _AppModule = class _AppModule {
};
_AppModule.\u0275fac = function AppModule_Factory(__ngFactoryType__) {
  return new (__ngFactoryType__ || _AppModule)();
};
_AppModule.\u0275mod = /* @__PURE__ */ \u0275\u0275defineNgModule({ type: _AppModule, bootstrap: [AppComponent] });
_AppModule.\u0275inj = /* @__PURE__ */ \u0275\u0275defineInjector({ providers: [
  {
    provide: HTTP_INTERCEPTORS,
    useClass: TokenInterceptor,
    multi: true
  },
  AppService,
  LogService,
  ImageCacheService,
  ConsoleWatcherService,
  StorageService,
  ContentService,
  SystemService,
  DocumentService,
  ApiService,
  AuthService,
  AuthRefService,
  OpportunityMigrationService,
  UiService,
  DatePipe,
  CurrencyPipe,
  {
    provide: OAuthStorage,
    useFactory: storageFactory
  },
  provideHttpClient(withInterceptorsFromDi())
], imports: [
  BrowserModule,
  UiModule,
  SharedDocumentsModule,
  AppRoutingModule,
  OAuthModule.forRoot()
] });
var AppModule = _AppModule;
(() => {
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(AppModule, [{
    type: NgModule,
    args: [{
      declarations: [
        AppComponent,
        PrivacyPolicyComponent
      ],
      bootstrap: [
        AppComponent
      ],
      imports: [
        BrowserModule,
        UiModule,
        SharedDocumentsModule,
        AppRoutingModule,
        OAuthModule.forRoot()
      ],
      providers: [
        {
          provide: HTTP_INTERCEPTORS,
          useClass: TokenInterceptor,
          multi: true
        },
        AppService,
        LogService,
        ImageCacheService,
        ConsoleWatcherService,
        StorageService,
        ContentService,
        SystemService,
        DocumentService,
        ApiService,
        AuthService,
        AuthRefService,
        OpportunityMigrationService,
        UiService,
        DatePipe,
        CurrencyPipe,
        {
          provide: OAuthStorage,
          useFactory: storageFactory
        },
        provideHttpClient(withInterceptorsFromDi())
      ]
    }]
  }], null, null);
})();
function storageFactory() {
  return localStorage;
}

// src/main.ts
platformBrowser().bootstrapModule(AppModule, { applicationProviders: [provideZoneChangeDetection()] }).catch((err) => console.error(err));
//# sourceMappingURL=main.js.map
