blob: b928cb366105dbfd711364092b53e184577277b3 [file] [log] [blame]
{"version":3,"file":"router.js","sources":["../../../packages/router/src/events.js","../../../packages/router/src/shared.js","../../../packages/router/src/config.js","../../../packages/router/src/utils/collection.js","../../../packages/router/src/url_tree.js","../../../packages/router/src/apply_redirects.js","../../../packages/router/src/utils/tree.js","../../../packages/router/src/router_state.js","../../../packages/router/src/create_router_state.js","../../../packages/router/src/create_url_tree.js","../../../packages/router/src/pre_activation.js","../../../packages/router/src/recognize.js","../../../packages/router/src/route_reuse_strategy.js","../../../packages/router/src/router_config_loader.js","../../../packages/router/src/url_handling_strategy.js","../../../packages/router/src/router.js","../../../packages/router/src/directives/router_link.js","../../../packages/router/src/directives/router_link_active.js","../../../packages/router/src/router_outlet_context.js","../../../packages/router/src/directives/router_outlet.js","../../../packages/router/src/router_preloader.js","../../../packages/router/src/router_module.js","../../../packages/router/src/version.js","../../../packages/router/src/private_export.js","../../../packages/router/src/index.js","../../../packages/router/public_api.js","../../../packages/router/router.js"],"sourcesContent":["/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * \\@whatItDoes Base for events the Router goes through, as opposed to events tied to a specific\n * Route. `RouterEvent`s will only be fired one time for any given navigation.\n *\n * Example:\n *\n * ```\n * class MyService {\n * constructor(public router: Router, logger: Logger) {\n * router.events.filter(e => e instanceof RouterEvent).subscribe(e => {\n * logger.log(e.id, e.url);\n * });\n * }\n * }\n * ```\n *\n * \\@experimental\n */\nexport class RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n */\n constructor(id, url) {\n this.id = id;\n this.url = url;\n }\n}\nfunction RouterEvent_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n RouterEvent.prototype.id;\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n RouterEvent.prototype.url;\n}\n/**\n * \\@whatItDoes Represents an event triggered when a navigation starts.\n *\n * \\@stable\n */\nexport class NavigationStart extends RouterEvent {\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n toString() { return `NavigationStart(id: ${this.id}, url: '${this.url}')`; }\n}\n/**\n * \\@whatItDoes Represents an event triggered when a navigation ends successfully.\n *\n * \\@stable\n */\nexport class NavigationEnd extends RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n * @param {?} urlAfterRedirects\n */\n constructor(/** @docsNotRequired */\n /** @docsNotRequired */\n id, /** @docsNotRequired */\n /** @docsNotRequired */\n url, urlAfterRedirects) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n }\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n toString() {\n return `NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`;\n }\n}\nfunction NavigationEnd_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n NavigationEnd.prototype.urlAfterRedirects;\n}\n/**\n * \\@whatItDoes Represents an event triggered when a navigation is canceled.\n *\n * \\@stable\n */\nexport class NavigationCancel extends RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n * @param {?} reason\n */\n constructor(/** @docsNotRequired */\n /** @docsNotRequired */\n id, /** @docsNotRequired */\n /** @docsNotRequired */\n url, reason) {\n super(id, url);\n this.reason = reason;\n }\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n toString() { return `NavigationCancel(id: ${this.id}, url: '${this.url}')`; }\n}\nfunction NavigationCancel_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n NavigationCancel.prototype.reason;\n}\n/**\n * \\@whatItDoes Represents an event triggered when a navigation fails due to an unexpected error.\n *\n * \\@stable\n */\nexport class NavigationError extends RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n * @param {?} error\n */\n constructor(/** @docsNotRequired */\n /** @docsNotRequired */\n id, /** @docsNotRequired */\n /** @docsNotRequired */\n url, error) {\n super(id, url);\n this.error = error;\n }\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n toString() {\n return `NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`;\n }\n}\nfunction NavigationError_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n NavigationError.prototype.error;\n}\n/**\n * \\@whatItDoes Represents an event triggered when routes are recognized.\n *\n * \\@stable\n */\nexport class RoutesRecognized extends RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n * @param {?} urlAfterRedirects\n * @param {?} state\n */\n constructor(/** @docsNotRequired */\n /** @docsNotRequired */\n id, /** @docsNotRequired */\n /** @docsNotRequired */\n url, urlAfterRedirects, state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n }\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n toString() {\n return `RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\nfunction RoutesRecognized_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n RoutesRecognized.prototype.urlAfterRedirects;\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n RoutesRecognized.prototype.state;\n}\n/**\n * \\@whatItDoes Represents the start of the Guard phase of routing.\n *\n * \\@experimental\n */\nexport class GuardsCheckStart extends RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n * @param {?} urlAfterRedirects\n * @param {?} state\n */\n constructor(/** @docsNotRequired */\n /** @docsNotRequired */\n id, /** @docsNotRequired */\n /** @docsNotRequired */\n url, urlAfterRedirects, state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n }\n /**\n * @return {?}\n */\n toString() {\n return `GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\nfunction GuardsCheckStart_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n GuardsCheckStart.prototype.urlAfterRedirects;\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n GuardsCheckStart.prototype.state;\n}\n/**\n * \\@whatItDoes Represents the end of the Guard phase of routing.\n *\n * \\@experimental\n */\nexport class GuardsCheckEnd extends RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n * @param {?} urlAfterRedirects\n * @param {?} state\n * @param {?} shouldActivate\n */\n constructor(/** @docsNotRequired */\n /** @docsNotRequired */\n id, /** @docsNotRequired */\n /** @docsNotRequired */\n url, urlAfterRedirects, state, shouldActivate) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n this.shouldActivate = shouldActivate;\n }\n /**\n * @return {?}\n */\n toString() {\n return `GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`;\n }\n}\nfunction GuardsCheckEnd_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n GuardsCheckEnd.prototype.urlAfterRedirects;\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n GuardsCheckEnd.prototype.state;\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n GuardsCheckEnd.prototype.shouldActivate;\n}\n/**\n * \\@whatItDoes Represents the start of the Resolve phase of routing. The timing of this\n * event may change, thus it's experimental. In the current iteration it will run\n * in the \"resolve\" phase whether there's things to resolve or not. In the future this\n * behavior may change to only run when there are things to be resolved.\n *\n * \\@experimental\n */\nexport class ResolveStart extends RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n * @param {?} urlAfterRedirects\n * @param {?} state\n */\n constructor(/** @docsNotRequired */\n /** @docsNotRequired */\n id, /** @docsNotRequired */\n /** @docsNotRequired */\n url, urlAfterRedirects, state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n }\n /**\n * @return {?}\n */\n toString() {\n return `ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\nfunction ResolveStart_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n ResolveStart.prototype.urlAfterRedirects;\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n ResolveStart.prototype.state;\n}\n/**\n * \\@whatItDoes Represents the end of the Resolve phase of routing. See note on\n * {\\@link ResolveStart} for use of this experimental API.\n *\n * \\@experimental\n */\nexport class ResolveEnd extends RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n * @param {?} urlAfterRedirects\n * @param {?} state\n */\n constructor(/** @docsNotRequired */\n /** @docsNotRequired */\n id, /** @docsNotRequired */\n /** @docsNotRequired */\n url, urlAfterRedirects, state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n }\n /**\n * @return {?}\n */\n toString() {\n return `ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\nfunction ResolveEnd_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n ResolveEnd.prototype.urlAfterRedirects;\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n ResolveEnd.prototype.state;\n}\n/**\n * \\@whatItDoes Represents an event triggered before lazy loading a route config.\n *\n * \\@experimental\n */\nexport class RouteConfigLoadStart {\n /**\n * @param {?} route\n */\n constructor(route) {\n this.route = route;\n }\n /**\n * @return {?}\n */\n toString() { return `RouteConfigLoadStart(path: ${this.route.path})`; }\n}\nfunction RouteConfigLoadStart_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n RouteConfigLoadStart.prototype.route;\n}\n/**\n * \\@whatItDoes Represents an event triggered when a route has been lazy loaded.\n *\n * \\@experimental\n */\nexport class RouteConfigLoadEnd {\n /**\n * @param {?} route\n */\n constructor(route) {\n this.route = route;\n }\n /**\n * @return {?}\n */\n toString() { return `RouteConfigLoadEnd(path: ${this.route.path})`; }\n}\nfunction RouteConfigLoadEnd_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n RouteConfigLoadEnd.prototype.route;\n}\n/**\n * \\@whatItDoes Represents the start of end of the Resolve phase of routing. See note on\n * {\\@link ChildActivationEnd} for use of this experimental API.\n *\n * \\@experimental\n */\nexport class ChildActivationStart {\n /**\n * @param {?} snapshot\n */\n constructor(snapshot) {\n this.snapshot = snapshot;\n }\n /**\n * @return {?}\n */\n toString() {\n const /** @type {?} */ path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ChildActivationStart(path: '${path}')`;\n }\n}\nfunction ChildActivationStart_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n ChildActivationStart.prototype.snapshot;\n}\n/**\n * \\@whatItDoes Represents the start of end of the Resolve phase of routing. See note on\n * {\\@link ChildActivationStart} for use of this experimental API.\n *\n * \\@experimental\n */\nexport class ChildActivationEnd {\n /**\n * @param {?} snapshot\n */\n constructor(snapshot) {\n this.snapshot = snapshot;\n }\n /**\n * @return {?}\n */\n toString() {\n const /** @type {?} */ path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ChildActivationEnd(path: '${path}')`;\n }\n}\nfunction ChildActivationEnd_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n ChildActivationEnd.prototype.snapshot;\n}\n/**\n * \\@whatItDoes Represents the start of end of the Resolve phase of routing. See note on\n * {\\@link ActivationEnd} for use of this experimental API.\n *\n * \\@experimental\n */\nexport class ActivationStart {\n /**\n * @param {?} snapshot\n */\n constructor(snapshot) {\n this.snapshot = snapshot;\n }\n /**\n * @return {?}\n */\n toString() {\n const /** @type {?} */ path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ActivationStart(path: '${path}')`;\n }\n}\nfunction ActivationStart_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n ActivationStart.prototype.snapshot;\n}\n/**\n * \\@whatItDoes Represents the start of end of the Resolve phase of routing. See note on\n * {\\@link ActivationStart} for use of this experimental API.\n *\n * \\@experimental\n */\nexport class ActivationEnd {\n /**\n * @param {?} snapshot\n */\n constructor(snapshot) {\n this.snapshot = snapshot;\n }\n /**\n * @return {?}\n */\n toString() {\n const /** @type {?} */ path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ActivationEnd(path: '${path}')`;\n }\n}\nfunction ActivationEnd_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n ActivationEnd.prototype.snapshot;\n}\n//# sourceMappingURL=events.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * \\@whatItDoes Name of the primary outlet.\n *\n * \\@stable\n */\nexport const /** @type {?} */ PRIMARY_OUTLET = 'primary';\n/**\n * Matrix and Query parameters.\n *\n * `ParamMap` makes it easier to work with parameters as they could have either a single value or\n * multiple value. Because this should be known by the user, calling `get` or `getAll` returns the\n * correct type (either `string` or `string[]`).\n *\n * The API is inspired by the URLSearchParams interface.\n * see https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams\n *\n * \\@stable\n * @record\n */\nexport function ParamMap() { }\nfunction ParamMap_tsickle_Closure_declarations() {\n /** @type {?} */\n ParamMap.prototype.has;\n /**\n * Return a single value for the given parameter name:\n * - the value when the parameter has a single value,\n * - the first value if the parameter has multiple values,\n * - `null` when there is no such parameter.\n * @type {?}\n */\n ParamMap.prototype.get;\n /**\n * Return an array of values for the given parameter name.\n *\n * If there is no such parameter, an empty array is returned.\n * @type {?}\n */\n ParamMap.prototype.getAll;\n /**\n * Name of the parameters\n * @type {?}\n */\n ParamMap.prototype.keys;\n}\nclass ParamsAsMap {\n /**\n * @param {?} params\n */\n constructor(params) { this.params = params || {}; }\n /**\n * @param {?} name\n * @return {?}\n */\n has(name) { return this.params.hasOwnProperty(name); }\n /**\n * @param {?} name\n * @return {?}\n */\n get(name) {\n if (this.has(name)) {\n const /** @type {?} */ v = this.params[name];\n return Array.isArray(v) ? v[0] : v;\n }\n return null;\n }\n /**\n * @param {?} name\n * @return {?}\n */\n getAll(name) {\n if (this.has(name)) {\n const /** @type {?} */ v = this.params[name];\n return Array.isArray(v) ? v : [v];\n }\n return [];\n }\n /**\n * @return {?}\n */\n get keys() { return Object.keys(this.params); }\n}\nfunction ParamsAsMap_tsickle_Closure_declarations() {\n /** @type {?} */\n ParamsAsMap.prototype.params;\n}\n/**\n * Convert a {\\@link Params} instance to a {\\@link ParamMap}.\n *\n * \\@stable\n * @param {?} params\n * @return {?}\n */\nexport function convertToParamMap(params) {\n return new ParamsAsMap(params);\n}\nconst /** @type {?} */ NAVIGATION_CANCELING_ERROR = 'ngNavigationCancelingError';\n/**\n * @param {?} message\n * @return {?}\n */\nexport function navigationCancelingError(message) {\n const /** @type {?} */ error = Error('NavigationCancelingError: ' + message);\n (/** @type {?} */ (error))[NAVIGATION_CANCELING_ERROR] = true;\n return error;\n}\n/**\n * @param {?} error\n * @return {?}\n */\nexport function isNavigationCancelingError(error) {\n return error && (/** @type {?} */ (error))[NAVIGATION_CANCELING_ERROR];\n}\n/**\n * @param {?} segments\n * @param {?} segmentGroup\n * @param {?} route\n * @return {?}\n */\nexport function defaultUrlMatcher(segments, segmentGroup, route) {\n const /** @type {?} */ parts = /** @type {?} */ ((route.path)).split('/');\n if (parts.length > segments.length) {\n // The actual URL is shorter than the config, no match\n return null;\n }\n if (route.pathMatch === 'full' &&\n (segmentGroup.hasChildren() || parts.length < segments.length)) {\n // The config is longer than the actual URL but we are looking for a full match, return null\n return null;\n }\n const /** @type {?} */ posParams = {};\n // Check each config part against the actual URL\n for (let /** @type {?} */ index = 0; index < parts.length; index++) {\n const /** @type {?} */ part = parts[index];\n const /** @type {?} */ segment = segments[index];\n const /** @type {?} */ isParameter = part.startsWith(':');\n if (isParameter) {\n posParams[part.substring(1)] = segment;\n }\n else if (part !== segment.path) {\n // The actual URL part does not match the config, no match\n return null;\n }\n }\n return { consumed: segments.slice(0, parts.length), posParams };\n}\n//# sourceMappingURL=shared.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { PRIMARY_OUTLET } from './shared';\n/**\n * See {\\@link Routes} for more details.\n * \\@stable\n * @record\n */\nexport function Route() { }\nfunction Route_tsickle_Closure_declarations() {\n /** @type {?|undefined} */\n Route.prototype.path;\n /** @type {?|undefined} */\n Route.prototype.pathMatch;\n /** @type {?|undefined} */\n Route.prototype.matcher;\n /** @type {?|undefined} */\n Route.prototype.component;\n /** @type {?|undefined} */\n Route.prototype.redirectTo;\n /** @type {?|undefined} */\n Route.prototype.outlet;\n /** @type {?|undefined} */\n Route.prototype.canActivate;\n /** @type {?|undefined} */\n Route.prototype.canActivateChild;\n /** @type {?|undefined} */\n Route.prototype.canDeactivate;\n /** @type {?|undefined} */\n Route.prototype.canLoad;\n /** @type {?|undefined} */\n Route.prototype.data;\n /** @type {?|undefined} */\n Route.prototype.resolve;\n /** @type {?|undefined} */\n Route.prototype.children;\n /** @type {?|undefined} */\n Route.prototype.loadChildren;\n /** @type {?|undefined} */\n Route.prototype.runGuardsAndResolvers;\n /**\n * Filled for routes with `loadChildren` once the module has been loaded\n * \\@internal\n * @type {?|undefined}\n */\n Route.prototype._loadedConfig;\n}\nexport class LoadedRouterConfig {\n /**\n * @param {?} routes\n * @param {?} module\n */\n constructor(routes, module) {\n this.routes = routes;\n this.module = module;\n }\n}\nfunction LoadedRouterConfig_tsickle_Closure_declarations() {\n /** @type {?} */\n LoadedRouterConfig.prototype.routes;\n /** @type {?} */\n LoadedRouterConfig.prototype.module;\n}\n/**\n * @param {?} config\n * @param {?=} parentPath\n * @return {?}\n */\nexport function validateConfig(config, parentPath = '') {\n // forEach doesn't iterate undefined values\n for (let /** @type {?} */ i = 0; i < config.length; i++) {\n const /** @type {?} */ route = config[i];\n const /** @type {?} */ fullPath = getFullPath(parentPath, route);\n validateNode(route, fullPath);\n }\n}\n/**\n * @param {?} route\n * @param {?} fullPath\n * @return {?}\n */\nfunction validateNode(route, fullPath) {\n if (!route) {\n throw new Error(`\n Invalid configuration of route '${fullPath}': Encountered undefined route.\n The reason might be an extra comma.\n\n Example:\n const routes: Routes = [\n { path: '', redirectTo: '/dashboard', pathMatch: 'full' },\n { path: 'dashboard', component: DashboardComponent },, << two commas\n { path: 'detail/:id', component: HeroDetailComponent }\n ];\n `);\n }\n if (Array.isArray(route)) {\n throw new Error(`Invalid configuration of route '${fullPath}': Array cannot be specified`);\n }\n if (!route.component && (route.outlet && route.outlet !== PRIMARY_OUTLET)) {\n throw new Error(`Invalid configuration of route '${fullPath}': a componentless route cannot have a named outlet set`);\n }\n if (route.redirectTo && route.children) {\n throw new Error(`Invalid configuration of route '${fullPath}': redirectTo and children cannot be used together`);\n }\n if (route.redirectTo && route.loadChildren) {\n throw new Error(`Invalid configuration of route '${fullPath}': redirectTo and loadChildren cannot be used together`);\n }\n if (route.children && route.loadChildren) {\n throw new Error(`Invalid configuration of route '${fullPath}': children and loadChildren cannot be used together`);\n }\n if (route.redirectTo && route.component) {\n throw new Error(`Invalid configuration of route '${fullPath}': redirectTo and component cannot be used together`);\n }\n if (route.path && route.matcher) {\n throw new Error(`Invalid configuration of route '${fullPath}': path and matcher cannot be used together`);\n }\n if (route.redirectTo === void 0 && !route.component && !route.children && !route.loadChildren) {\n throw new Error(`Invalid configuration of route '${fullPath}'. One of the following must be provided: component, redirectTo, children or loadChildren`);\n }\n if (route.path === void 0 && route.matcher === void 0) {\n throw new Error(`Invalid configuration of route '${fullPath}': routes must have either a path or a matcher specified`);\n }\n if (typeof route.path === 'string' && route.path.charAt(0) === '/') {\n throw new Error(`Invalid configuration of route '${fullPath}': path cannot start with a slash`);\n }\n if (route.path === '' && route.redirectTo !== void 0 && route.pathMatch === void 0) {\n const /** @type {?} */ exp = `The default value of 'pathMatch' is 'prefix', but often the intent is to use 'full'.`;\n throw new Error(`Invalid configuration of route '{path: \"${fullPath}\", redirectTo: \"${route.redirectTo}\"}': please provide 'pathMatch'. ${exp}`);\n }\n if (route.pathMatch !== void 0 && route.pathMatch !== 'full' && route.pathMatch !== 'prefix') {\n throw new Error(`Invalid configuration of route '${fullPath}': pathMatch can only be set to 'prefix' or 'full'`);\n }\n if (route.children) {\n validateConfig(route.children, fullPath);\n }\n}\n/**\n * @param {?} parentPath\n * @param {?} currentRoute\n * @return {?}\n */\nfunction getFullPath(parentPath, currentRoute) {\n if (!currentRoute) {\n return parentPath;\n }\n if (!parentPath && !currentRoute.path) {\n return '';\n }\n else if (parentPath && !currentRoute.path) {\n return `${parentPath}/`;\n }\n else if (!parentPath && currentRoute.path) {\n return currentRoute.path;\n }\n else {\n return `${parentPath}/${currentRoute.path}`;\n }\n}\n//# sourceMappingURL=config.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ɵisObservable as isObservable, ɵisPromise as isPromise } from '@angular/core';\nimport { fromPromise } from 'rxjs/observable/fromPromise';\nimport { of } from 'rxjs/observable/of';\nimport { concatAll } from 'rxjs/operator/concatAll';\nimport { every } from 'rxjs/operator/every';\nimport * as l from 'rxjs/operator/last';\nimport { map } from 'rxjs/operator/map';\nimport { mergeAll } from 'rxjs/operator/mergeAll';\nimport { PRIMARY_OUTLET } from '../shared';\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nexport function shallowEqualArrays(a, b) {\n if (a.length !== b.length)\n return false;\n for (let /** @type {?} */ i = 0; i < a.length; ++i) {\n if (!shallowEqual(a[i], b[i]))\n return false;\n }\n return true;\n}\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nexport function shallowEqual(a, b) {\n const /** @type {?} */ k1 = Object.keys(a);\n const /** @type {?} */ k2 = Object.keys(b);\n if (k1.length != k2.length) {\n return false;\n }\n let /** @type {?} */ key;\n for (let /** @type {?} */ i = 0; i < k1.length; i++) {\n key = k1[i];\n if (a[key] !== b[key]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Flattens single-level nested arrays.\n * @template T\n * @param {?} arr\n * @return {?}\n */\nexport function flatten(arr) {\n return Array.prototype.concat.apply([], arr);\n}\n/**\n * Return the last element of an array.\n * @template T\n * @param {?} a\n * @return {?}\n */\nexport function last(a) {\n return a.length > 0 ? a[a.length - 1] : null;\n}\n/**\n * Verifys all booleans in an array are `true`.\n * @param {?} bools\n * @return {?}\n */\nexport function and(bools) {\n return !bools.some(v => !v);\n}\n/**\n * @template K, V\n * @param {?} map\n * @param {?} callback\n * @return {?}\n */\nexport function forEach(map, callback) {\n for (const /** @type {?} */ prop in map) {\n if (map.hasOwnProperty(prop)) {\n callback(map[prop], prop);\n }\n }\n}\n/**\n * @template A, B\n * @param {?} obj\n * @param {?} fn\n * @return {?}\n */\nexport function waitForMap(obj, fn) {\n if (Object.keys(obj).length === 0) {\n return of({});\n }\n const /** @type {?} */ waitHead = [];\n const /** @type {?} */ waitTail = [];\n const /** @type {?} */ res = {};\n forEach(obj, (a, k) => {\n const /** @type {?} */ mapped = map.call(fn(k, a), (r) => res[k] = r);\n if (k === PRIMARY_OUTLET) {\n waitHead.push(mapped);\n }\n else {\n waitTail.push(mapped);\n }\n });\n const /** @type {?} */ concat$ = concatAll.call(of(...waitHead, ...waitTail));\n const /** @type {?} */ last$ = l.last.call(concat$);\n return map.call(last$, () => res);\n}\n/**\n * ANDs Observables by merging all input observables, reducing to an Observable verifying all\n * input Observables return `true`.\n * @param {?} observables\n * @return {?}\n */\nexport function andObservables(observables) {\n const /** @type {?} */ merged$ = mergeAll.call(observables);\n return every.call(merged$, (result) => result === true);\n}\n/**\n * @template T\n * @param {?} value\n * @return {?}\n */\nexport function wrapIntoObservable(value) {\n if (isObservable(value)) {\n return value;\n }\n if (isPromise(value)) {\n // Use `Promise.resolve()` to wrap promise-like instances.\n // Required ie when a Resolver returns a AngularJS `$q` promise to correctly trigger the\n // change detection.\n return fromPromise(Promise.resolve(value));\n }\n return of(/** @type {?} */ (value));\n}\n//# sourceMappingURL=collection.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { PRIMARY_OUTLET, convertToParamMap } from './shared';\nimport { forEach, shallowEqual } from './utils/collection';\n/**\n * @return {?}\n */\nexport function createEmptyUrlTree() {\n return new UrlTree(new UrlSegmentGroup([], {}), {}, null);\n}\n/**\n * @param {?} container\n * @param {?} containee\n * @param {?} exact\n * @return {?}\n */\nexport function containsTree(container, containee, exact) {\n if (exact) {\n return equalQueryParams(container.queryParams, containee.queryParams) &&\n equalSegmentGroups(container.root, containee.root);\n }\n return containsQueryParams(container.queryParams, containee.queryParams) &&\n containsSegmentGroup(container.root, containee.root);\n}\n/**\n * @param {?} container\n * @param {?} containee\n * @return {?}\n */\nfunction equalQueryParams(container, containee) {\n return shallowEqual(container, containee);\n}\n/**\n * @param {?} container\n * @param {?} containee\n * @return {?}\n */\nfunction equalSegmentGroups(container, containee) {\n if (!equalPath(container.segments, containee.segments))\n return false;\n if (container.numberOfChildren !== containee.numberOfChildren)\n return false;\n for (const /** @type {?} */ c in containee.children) {\n if (!container.children[c])\n return false;\n if (!equalSegmentGroups(container.children[c], containee.children[c]))\n return false;\n }\n return true;\n}\n/**\n * @param {?} container\n * @param {?} containee\n * @return {?}\n */\nfunction containsQueryParams(container, containee) {\n return Object.keys(containee).length <= Object.keys(container).length &&\n Object.keys(containee).every(key => containee[key] === container[key]);\n}\n/**\n * @param {?} container\n * @param {?} containee\n * @return {?}\n */\nfunction containsSegmentGroup(container, containee) {\n return containsSegmentGroupHelper(container, containee, containee.segments);\n}\n/**\n * @param {?} container\n * @param {?} containee\n * @param {?} containeePaths\n * @return {?}\n */\nfunction containsSegmentGroupHelper(container, containee, containeePaths) {\n if (container.segments.length > containeePaths.length) {\n const /** @type {?} */ current = container.segments.slice(0, containeePaths.length);\n if (!equalPath(current, containeePaths))\n return false;\n if (containee.hasChildren())\n return false;\n return true;\n }\n else if (container.segments.length === containeePaths.length) {\n if (!equalPath(container.segments, containeePaths))\n return false;\n for (const /** @type {?} */ c in containee.children) {\n if (!container.children[c])\n return false;\n if (!containsSegmentGroup(container.children[c], containee.children[c]))\n return false;\n }\n return true;\n }\n else {\n const /** @type {?} */ current = containeePaths.slice(0, container.segments.length);\n const /** @type {?} */ next = containeePaths.slice(container.segments.length);\n if (!equalPath(container.segments, current))\n return false;\n if (!container.children[PRIMARY_OUTLET])\n return false;\n return containsSegmentGroupHelper(container.children[PRIMARY_OUTLET], containee, next);\n }\n}\n/**\n * \\@whatItDoes Represents the parsed URL.\n *\n * \\@howToUse\n *\n * ```\n * \\@Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const tree: UrlTree =\n * router.parseUrl('/team/33/(user/victor//support:help)?debug=true#fragment');\n * const f = tree.fragment; // return 'fragment'\n * const q = tree.queryParams; // returns {debug: 'true'}\n * const g: UrlSegmentGroup = tree.root.children[PRIMARY_OUTLET];\n * const s: UrlSegment[] = g.segments; // returns 2 segments 'team' and '33'\n * g.children[PRIMARY_OUTLET].segments; // returns 2 segments 'user' and 'victor'\n * g.children['support'].segments; // return 1 segment 'help'\n * }\n * }\n * ```\n *\n * \\@description\n *\n * Since a router state is a tree, and the URL is nothing but a serialized state, the URL is a\n * serialized tree.\n * UrlTree is a data structure that provides a lot of affordances in dealing with URLs\n *\n * \\@stable\n */\nexport class UrlTree {\n /**\n * \\@internal\n * @param {?} root\n * @param {?} queryParams\n * @param {?} fragment\n */\n constructor(root, queryParams, fragment) {\n this.root = root;\n this.queryParams = queryParams;\n this.fragment = fragment;\n }\n /**\n * @return {?}\n */\n get queryParamMap() {\n if (!this._queryParamMap) {\n this._queryParamMap = convertToParamMap(this.queryParams);\n }\n return this._queryParamMap;\n }\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n toString() { return DEFAULT_SERIALIZER.serialize(this); }\n}\nfunction UrlTree_tsickle_Closure_declarations() {\n /**\n * \\@internal\n * @type {?}\n */\n UrlTree.prototype._queryParamMap;\n /**\n * The root segment group of the URL tree\n * @type {?}\n */\n UrlTree.prototype.root;\n /**\n * The query params of the URL\n * @type {?}\n */\n UrlTree.prototype.queryParams;\n /**\n * The fragment of the URL\n * @type {?}\n */\n UrlTree.prototype.fragment;\n}\n/**\n * \\@whatItDoes Represents the parsed URL segment group.\n *\n * See {\\@link UrlTree} for more information.\n *\n * \\@stable\n */\nexport class UrlSegmentGroup {\n /**\n * @param {?} segments\n * @param {?} children\n */\n constructor(segments, children) {\n this.segments = segments;\n this.children = children;\n /**\n * The parent node in the url tree\n */\n this.parent = null;\n forEach(children, (v, k) => v.parent = this);\n }\n /**\n * Whether the segment has child segments\n * @return {?}\n */\n hasChildren() { return this.numberOfChildren > 0; }\n /**\n * Number of child segments\n * @return {?}\n */\n get numberOfChildren() { return Object.keys(this.children).length; }\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n toString() { return serializePaths(this); }\n}\nfunction UrlSegmentGroup_tsickle_Closure_declarations() {\n /**\n * \\@internal\n * @type {?}\n */\n UrlSegmentGroup.prototype._sourceSegment;\n /**\n * \\@internal\n * @type {?}\n */\n UrlSegmentGroup.prototype._segmentIndexShift;\n /**\n * The parent node in the url tree\n * @type {?}\n */\n UrlSegmentGroup.prototype.parent;\n /**\n * The URL segments of this group. See {\\@link UrlSegment} for more information\n * @type {?}\n */\n UrlSegmentGroup.prototype.segments;\n /**\n * The list of children of this group\n * @type {?}\n */\n UrlSegmentGroup.prototype.children;\n}\n/**\n * \\@whatItDoes Represents a single URL segment.\n *\n * \\@howToUse\n *\n * ```\n * \\@Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const tree: UrlTree = router.parseUrl('/team;id=33');\n * const g: UrlSegmentGroup = tree.root.children[PRIMARY_OUTLET];\n * const s: UrlSegment[] = g.segments;\n * s[0].path; // returns 'team'\n * s[0].parameters; // returns {id: 33}\n * }\n * }\n * ```\n *\n * \\@description\n *\n * A UrlSegment is a part of a URL between the two slashes. It contains a path and the matrix\n * parameters associated with the segment.\n *\n * \\@stable\n */\nexport class UrlSegment {\n /**\n * @param {?} path\n * @param {?} parameters\n */\n constructor(path, parameters) {\n this.path = path;\n this.parameters = parameters;\n }\n /**\n * @return {?}\n */\n get parameterMap() {\n if (!this._parameterMap) {\n this._parameterMap = convertToParamMap(this.parameters);\n }\n return this._parameterMap;\n }\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n toString() { return serializePath(this); }\n}\nfunction UrlSegment_tsickle_Closure_declarations() {\n /**\n * \\@internal\n * @type {?}\n */\n UrlSegment.prototype._parameterMap;\n /**\n * The path part of a URL segment\n * @type {?}\n */\n UrlSegment.prototype.path;\n /**\n * The matrix parameters associated with a segment\n * @type {?}\n */\n UrlSegment.prototype.parameters;\n}\n/**\n * @param {?} as\n * @param {?} bs\n * @return {?}\n */\nexport function equalSegments(as, bs) {\n return equalPath(as, bs) && as.every((a, i) => shallowEqual(a.parameters, bs[i].parameters));\n}\n/**\n * @param {?} as\n * @param {?} bs\n * @return {?}\n */\nexport function equalPath(as, bs) {\n if (as.length !== bs.length)\n return false;\n return as.every((a, i) => a.path === bs[i].path);\n}\n/**\n * @template T\n * @param {?} segment\n * @param {?} fn\n * @return {?}\n */\nexport function mapChildrenIntoArray(segment, fn) {\n let /** @type {?} */ res = [];\n forEach(segment.children, (child, childOutlet) => {\n if (childOutlet === PRIMARY_OUTLET) {\n res = res.concat(fn(child, childOutlet));\n }\n });\n forEach(segment.children, (child, childOutlet) => {\n if (childOutlet !== PRIMARY_OUTLET) {\n res = res.concat(fn(child, childOutlet));\n }\n });\n return res;\n}\n/**\n * \\@whatItDoes Serializes and deserializes a URL string into a URL tree.\n *\n * \\@description The url serialization strategy is customizable. You can\n * make all URLs case insensitive by providing a custom UrlSerializer.\n *\n * See {\\@link DefaultUrlSerializer} for an example of a URL serializer.\n *\n * \\@stable\n * @abstract\n */\nexport class UrlSerializer {\n}\nfunction UrlSerializer_tsickle_Closure_declarations() {\n /**\n * Parse a url into a {\\@link UrlTree}\n * @abstract\n * @param {?} url\n * @return {?}\n */\n UrlSerializer.prototype.parse = function (url) { };\n /**\n * Converts a {\\@link UrlTree} into a url\n * @abstract\n * @param {?} tree\n * @return {?}\n */\n UrlSerializer.prototype.serialize = function (tree) { };\n}\n/**\n * \\@whatItDoes A default implementation of the {\\@link UrlSerializer}.\n *\n * \\@description\n *\n * Example URLs:\n *\n * ```\n * /inbox/33(popup:compose)\n * /inbox/33;open=true/messages/44\n * ```\n *\n * DefaultUrlSerializer uses parentheses to serialize secondary segments (e.g., popup:compose), the\n * colon syntax to specify the outlet, and the ';parameter=value' syntax (e.g., open=true) to\n * specify route specific parameters.\n *\n * \\@stable\n */\nexport class DefaultUrlSerializer {\n /**\n * Parses a url into a {\\@link UrlTree}\n * @param {?} url\n * @return {?}\n */\n parse(url) {\n const /** @type {?} */ p = new UrlParser(url);\n return new UrlTree(p.parseRootSegment(), p.parseQueryParams(), p.parseFragment());\n }\n /**\n * Converts a {\\@link UrlTree} into a url\n * @param {?} tree\n * @return {?}\n */\n serialize(tree) {\n const /** @type {?} */ segment = `/${serializeSegment(tree.root, true)}`;\n const /** @type {?} */ query = serializeQueryParams(tree.queryParams);\n const /** @type {?} */ fragment = typeof tree.fragment === `string` ? `#${encodeURI((/** @type {?} */ ((tree.fragment))))}` : '';\n return `${segment}${query}${fragment}`;\n }\n}\nconst /** @type {?} */ DEFAULT_SERIALIZER = new DefaultUrlSerializer();\n/**\n * @param {?} segment\n * @return {?}\n */\nexport function serializePaths(segment) {\n return segment.segments.map(p => serializePath(p)).join('/');\n}\n/**\n * @param {?} segment\n * @param {?} root\n * @return {?}\n */\nfunction serializeSegment(segment, root) {\n if (!segment.hasChildren()) {\n return serializePaths(segment);\n }\n if (root) {\n const /** @type {?} */ primary = segment.children[PRIMARY_OUTLET] ?\n serializeSegment(segment.children[PRIMARY_OUTLET], false) :\n '';\n const /** @type {?} */ children = [];\n forEach(segment.children, (v, k) => {\n if (k !== PRIMARY_OUTLET) {\n children.push(`${k}:${serializeSegment(v, false)}`);\n }\n });\n return children.length > 0 ? `${primary}(${children.join('//')})` : primary;\n }\n else {\n const /** @type {?} */ children = mapChildrenIntoArray(segment, (v, k) => {\n if (k === PRIMARY_OUTLET) {\n return [serializeSegment(segment.children[PRIMARY_OUTLET], false)];\n }\n return [`${k}:${serializeSegment(v, false)}`];\n });\n return `${serializePaths(segment)}/(${children.join('//')})`;\n }\n}\n/**\n * This method is intended for encoding *key* or *value* parts of query component. We need a custom\n * method because encodeURIComponent is too aggressive and encodes stuff that doesn't have to be\n * encoded per http://tools.ietf.org/html/rfc3986:\n * query = *( pchar / \"/\" / \"?\" )\n * pchar = unreserved / pct-encoded / sub-delims / \":\" / \"\\@\"\n * unreserved = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\n * pct-encoded = \"%\" HEXDIG HEXDIG\n * sub-delims = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\"\n * / \"*\" / \"+\" / \",\" / \";\" / \"=\"\n * @param {?} s\n * @return {?}\n */\nexport function encode(s) {\n return encodeURIComponent(s)\n .replace(/%40/g, '@')\n .replace(/%3A/gi, ':')\n .replace(/%24/g, '$')\n .replace(/%2C/gi, ',')\n .replace(/%3B/gi, ';');\n}\n/**\n * @param {?} s\n * @return {?}\n */\nexport function decode(s) {\n return decodeURIComponent(s);\n}\n/**\n * @param {?} path\n * @return {?}\n */\nexport function serializePath(path) {\n return `${encode(path.path)}${serializeParams(path.parameters)}`;\n}\n/**\n * @param {?} params\n * @return {?}\n */\nfunction serializeParams(params) {\n return Object.keys(params).map(key => `;${encode(key)}=${encode(params[key])}`).join('');\n}\n/**\n * @param {?} params\n * @return {?}\n */\nfunction serializeQueryParams(params) {\n const /** @type {?} */ strParams = Object.keys(params).map((name) => {\n const /** @type {?} */ value = params[name];\n return Array.isArray(value) ? value.map(v => `${encode(name)}=${encode(v)}`).join('&') :\n `${encode(name)}=${encode(value)}`;\n });\n return strParams.length ? `?${strParams.join(\"&\")}` : '';\n}\nconst /** @type {?} */ SEGMENT_RE = /^[^\\/()?;=&#]+/;\n/**\n * @param {?} str\n * @return {?}\n */\nfunction matchSegments(str) {\n const /** @type {?} */ match = str.match(SEGMENT_RE);\n return match ? match[0] : '';\n}\nconst /** @type {?} */ QUERY_PARAM_RE = /^[^=?&#]+/;\n/**\n * @param {?} str\n * @return {?}\n */\nfunction matchQueryParams(str) {\n const /** @type {?} */ match = str.match(QUERY_PARAM_RE);\n return match ? match[0] : '';\n}\nconst /** @type {?} */ QUERY_PARAM_VALUE_RE = /^[^?&#]+/;\n/**\n * @param {?} str\n * @return {?}\n */\nfunction matchUrlQueryParamValue(str) {\n const /** @type {?} */ match = str.match(QUERY_PARAM_VALUE_RE);\n return match ? match[0] : '';\n}\nclass UrlParser {\n /**\n * @param {?} url\n */\n constructor(url) {\n this.url = url;\n this.remaining = url;\n }\n /**\n * @return {?}\n */\n parseRootSegment() {\n this.consumeOptional('/');\n if (this.remaining === '' || this.peekStartsWith('?') || this.peekStartsWith('#')) {\n return new UrlSegmentGroup([], {});\n }\n // The root segment group never has segments\n return new UrlSegmentGroup([], this.parseChildren());\n }\n /**\n * @return {?}\n */\n parseQueryParams() {\n const /** @type {?} */ params = {};\n if (this.consumeOptional('?')) {\n do {\n this.parseQueryParam(params);\n } while (this.consumeOptional('&'));\n }\n return params;\n }\n /**\n * @return {?}\n */\n parseFragment() {\n return this.consumeOptional('#') ? decodeURI(this.remaining) : null;\n }\n /**\n * @return {?}\n */\n parseChildren() {\n if (this.remaining === '') {\n return {};\n }\n this.consumeOptional('/');\n const /** @type {?} */ segments = [];\n if (!this.peekStartsWith('(')) {\n segments.push(this.parseSegment());\n }\n while (this.peekStartsWith('/') && !this.peekStartsWith('//') && !this.peekStartsWith('/(')) {\n this.capture('/');\n segments.push(this.parseSegment());\n }\n let /** @type {?} */ children = {};\n if (this.peekStartsWith('/(')) {\n this.capture('/');\n children = this.parseParens(true);\n }\n let /** @type {?} */ res = {};\n if (this.peekStartsWith('(')) {\n res = this.parseParens(false);\n }\n if (segments.length > 0 || Object.keys(children).length > 0) {\n res[PRIMARY_OUTLET] = new UrlSegmentGroup(segments, children);\n }\n return res;\n }\n /**\n * @return {?}\n */\n parseSegment() {\n const /** @type {?} */ path = matchSegments(this.remaining);\n if (path === '' && this.peekStartsWith(';')) {\n throw new Error(`Empty path url segment cannot have parameters: '${this.remaining}'.`);\n }\n this.capture(path);\n return new UrlSegment(decode(path), this.parseMatrixParams());\n }\n /**\n * @return {?}\n */\n parseMatrixParams() {\n const /** @type {?} */ params = {};\n while (this.consumeOptional(';')) {\n this.parseParam(params);\n }\n return params;\n }\n /**\n * @param {?} params\n * @return {?}\n */\n parseParam(params) {\n const /** @type {?} */ key = matchSegments(this.remaining);\n if (!key) {\n return;\n }\n this.capture(key);\n let /** @type {?} */ value = '';\n if (this.consumeOptional('=')) {\n const /** @type {?} */ valueMatch = matchSegments(this.remaining);\n if (valueMatch) {\n value = valueMatch;\n this.capture(value);\n }\n }\n params[decode(key)] = decode(value);\n }\n /**\n * @param {?} params\n * @return {?}\n */\n parseQueryParam(params) {\n const /** @type {?} */ key = matchQueryParams(this.remaining);\n if (!key) {\n return;\n }\n this.capture(key);\n let /** @type {?} */ value = '';\n if (this.consumeOptional('=')) {\n const /** @type {?} */ valueMatch = matchUrlQueryParamValue(this.remaining);\n if (valueMatch) {\n value = valueMatch;\n this.capture(value);\n }\n }\n const /** @type {?} */ decodedKey = decode(key);\n const /** @type {?} */ decodedVal = decode(value);\n if (params.hasOwnProperty(decodedKey)) {\n // Append to existing values\n let /** @type {?} */ currentVal = params[decodedKey];\n if (!Array.isArray(currentVal)) {\n currentVal = [currentVal];\n params[decodedKey] = currentVal;\n }\n currentVal.push(decodedVal);\n }\n else {\n // Create a new value\n params[decodedKey] = decodedVal;\n }\n }\n /**\n * @param {?} allowPrimary\n * @return {?}\n */\n parseParens(allowPrimary) {\n const /** @type {?} */ segments = {};\n this.capture('(');\n while (!this.consumeOptional(')') && this.remaining.length > 0) {\n const /** @type {?} */ path = matchSegments(this.remaining);\n const /** @type {?} */ next = this.remaining[path.length];\n // if is is not one of these characters, then the segment was unescaped\n // or the group was not closed\n if (next !== '/' && next !== ')' && next !== ';') {\n throw new Error(`Cannot parse url '${this.url}'`);\n }\n let /** @type {?} */ outletName = /** @type {?} */ ((undefined));\n if (path.indexOf(':') > -1) {\n outletName = path.substr(0, path.indexOf(':'));\n this.capture(outletName);\n this.capture(':');\n }\n else if (allowPrimary) {\n outletName = PRIMARY_OUTLET;\n }\n const /** @type {?} */ children = this.parseChildren();\n segments[outletName] = Object.keys(children).length === 1 ? children[PRIMARY_OUTLET] :\n new UrlSegmentGroup([], children);\n this.consumeOptional('//');\n }\n return segments;\n }\n /**\n * @param {?} str\n * @return {?}\n */\n peekStartsWith(str) { return this.remaining.startsWith(str); }\n /**\n * @param {?} str\n * @return {?}\n */\n consumeOptional(str) {\n if (this.peekStartsWith(str)) {\n this.remaining = this.remaining.substring(str.length);\n return true;\n }\n return false;\n }\n /**\n * @param {?} str\n * @return {?}\n */\n capture(str) {\n if (!this.consumeOptional(str)) {\n throw new Error(`Expected \"${str}\".`);\n }\n }\n}\nfunction UrlParser_tsickle_Closure_declarations() {\n /** @type {?} */\n UrlParser.prototype.remaining;\n /** @type {?} */\n UrlParser.prototype.url;\n}\n//# sourceMappingURL=url_tree.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { NgModuleRef } from '@angular/core';\nimport { Observable } from 'rxjs/Observable';\nimport { from } from 'rxjs/observable/from';\nimport { of } from 'rxjs/observable/of';\nimport { _catch } from 'rxjs/operator/catch';\nimport { concatAll } from 'rxjs/operator/concatAll';\nimport { first } from 'rxjs/operator/first';\nimport { map } from 'rxjs/operator/map';\nimport { mergeMap } from 'rxjs/operator/mergeMap';\nimport { EmptyError } from 'rxjs/util/EmptyError';\nimport { LoadedRouterConfig } from './config';\nimport { PRIMARY_OUTLET, defaultUrlMatcher, navigationCancelingError } from './shared';\nimport { UrlSegmentGroup, UrlTree } from './url_tree';\nimport { andObservables, forEach, waitForMap, wrapIntoObservable } from './utils/collection';\nclass NoMatch {\n /**\n * @param {?=} segmentGroup\n */\n constructor(segmentGroup) { this.segmentGroup = segmentGroup || null; }\n}\nfunction NoMatch_tsickle_Closure_declarations() {\n /** @type {?} */\n NoMatch.prototype.segmentGroup;\n}\nclass AbsoluteRedirect {\n /**\n * @param {?} urlTree\n */\n constructor(urlTree) {\n this.urlTree = urlTree;\n }\n}\nfunction AbsoluteRedirect_tsickle_Closure_declarations() {\n /** @type {?} */\n AbsoluteRedirect.prototype.urlTree;\n}\n/**\n * @param {?} segmentGroup\n * @return {?}\n */\nfunction noMatch(segmentGroup) {\n return new Observable((obs) => obs.error(new NoMatch(segmentGroup)));\n}\n/**\n * @param {?} newTree\n * @return {?}\n */\nfunction absoluteRedirect(newTree) {\n return new Observable((obs) => obs.error(new AbsoluteRedirect(newTree)));\n}\n/**\n * @param {?} redirectTo\n * @return {?}\n */\nfunction namedOutletsRedirect(redirectTo) {\n return new Observable((obs) => obs.error(new Error(`Only absolute redirects can have named outlets. redirectTo: '${redirectTo}'`)));\n}\n/**\n * @param {?} route\n * @return {?}\n */\nfunction canLoadFails(route) {\n return new Observable((obs) => obs.error(navigationCancelingError(`Cannot load children because the guard of the route \"path: '${route.path}'\" returned false`)));\n}\n/**\n * Returns the `UrlTree` with the redirection applied.\n *\n * Lazy modules are loaded along the way.\n * @param {?} moduleInjector\n * @param {?} configLoader\n * @param {?} urlSerializer\n * @param {?} urlTree\n * @param {?} config\n * @return {?}\n */\nexport function applyRedirects(moduleInjector, configLoader, urlSerializer, urlTree, config) {\n return new ApplyRedirects(moduleInjector, configLoader, urlSerializer, urlTree, config).apply();\n}\nclass ApplyRedirects {\n /**\n * @param {?} moduleInjector\n * @param {?} configLoader\n * @param {?} urlSerializer\n * @param {?} urlTree\n * @param {?} config\n */\n constructor(moduleInjector, configLoader, urlSerializer, urlTree, config) {\n this.configLoader = configLoader;\n this.urlSerializer = urlSerializer;\n this.urlTree = urlTree;\n this.config = config;\n this.allowRedirects = true;\n this.ngModule = moduleInjector.get(NgModuleRef);\n }\n /**\n * @return {?}\n */\n apply() {\n const /** @type {?} */ expanded$ = this.expandSegmentGroup(this.ngModule, this.config, this.urlTree.root, PRIMARY_OUTLET);\n const /** @type {?} */ urlTrees$ = map.call(expanded$, (rootSegmentGroup) => this.createUrlTree(rootSegmentGroup, this.urlTree.queryParams, /** @type {?} */ ((this.urlTree.fragment))));\n return _catch.call(urlTrees$, (e) => {\n if (e instanceof AbsoluteRedirect) {\n // after an absolute redirect we do not apply any more redirects!\n this.allowRedirects = false;\n // we need to run matching, so we can fetch all lazy-loaded modules\n return this.match(e.urlTree);\n }\n if (e instanceof NoMatch) {\n throw this.noMatchError(e);\n }\n throw e;\n });\n }\n /**\n * @param {?} tree\n * @return {?}\n */\n match(tree) {\n const /** @type {?} */ expanded$ = this.expandSegmentGroup(this.ngModule, this.config, tree.root, PRIMARY_OUTLET);\n const /** @type {?} */ mapped$ = map.call(expanded$, (rootSegmentGroup) => this.createUrlTree(rootSegmentGroup, tree.queryParams, /** @type {?} */ ((tree.fragment))));\n return _catch.call(mapped$, (e) => {\n if (e instanceof NoMatch) {\n throw this.noMatchError(e);\n }\n throw e;\n });\n }\n /**\n * @param {?} e\n * @return {?}\n */\n noMatchError(e) {\n return new Error(`Cannot match any routes. URL Segment: '${e.segmentGroup}'`);\n }\n /**\n * @param {?} rootCandidate\n * @param {?} queryParams\n * @param {?} fragment\n * @return {?}\n */\n createUrlTree(rootCandidate, queryParams, fragment) {\n const /** @type {?} */ root = rootCandidate.segments.length > 0 ?\n new UrlSegmentGroup([], { [PRIMARY_OUTLET]: rootCandidate }) :\n rootCandidate;\n return new UrlTree(root, queryParams, fragment);\n }\n /**\n * @param {?} ngModule\n * @param {?} routes\n * @param {?} segmentGroup\n * @param {?} outlet\n * @return {?}\n */\n expandSegmentGroup(ngModule, routes, segmentGroup, outlet) {\n if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {\n return map.call(this.expandChildren(ngModule, routes, segmentGroup), (children) => new UrlSegmentGroup([], children));\n }\n return this.expandSegment(ngModule, segmentGroup, routes, segmentGroup.segments, outlet, true);\n }\n /**\n * @param {?} ngModule\n * @param {?} routes\n * @param {?} segmentGroup\n * @return {?}\n */\n expandChildren(ngModule, routes, segmentGroup) {\n return waitForMap(segmentGroup.children, (childOutlet, child) => this.expandSegmentGroup(ngModule, routes, child, childOutlet));\n }\n /**\n * @param {?} ngModule\n * @param {?} segmentGroup\n * @param {?} routes\n * @param {?} segments\n * @param {?} outlet\n * @param {?} allowRedirects\n * @return {?}\n */\n expandSegment(ngModule, segmentGroup, routes, segments, outlet, allowRedirects) {\n const /** @type {?} */ routes$ = of(...routes);\n const /** @type {?} */ processedRoutes$ = map.call(routes$, (r) => {\n const /** @type {?} */ expanded$ = this.expandSegmentAgainstRoute(ngModule, segmentGroup, routes, r, segments, outlet, allowRedirects);\n return _catch.call(expanded$, (e) => {\n if (e instanceof NoMatch) {\n return of(null);\n }\n throw e;\n });\n });\n const /** @type {?} */ concattedProcessedRoutes$ = concatAll.call(processedRoutes$);\n const /** @type {?} */ first$ = first.call(concattedProcessedRoutes$, (s) => !!s);\n return _catch.call(first$, (e, _) => {\n if (e instanceof EmptyError || e.name === 'EmptyError') {\n if (this.noLeftoversInUrl(segmentGroup, segments, outlet)) {\n return of(new UrlSegmentGroup([], {}));\n }\n throw new NoMatch(segmentGroup);\n }\n throw e;\n });\n }\n /**\n * @param {?} segmentGroup\n * @param {?} segments\n * @param {?} outlet\n * @return {?}\n */\n noLeftoversInUrl(segmentGroup, segments, outlet) {\n return segments.length === 0 && !segmentGroup.children[outlet];\n }\n /**\n * @param {?} ngModule\n * @param {?} segmentGroup\n * @param {?} routes\n * @param {?} route\n * @param {?} paths\n * @param {?} outlet\n * @param {?} allowRedirects\n * @return {?}\n */\n expandSegmentAgainstRoute(ngModule, segmentGroup, routes, route, paths, outlet, allowRedirects) {\n if (getOutlet(route) !== outlet) {\n return noMatch(segmentGroup);\n }\n if (route.redirectTo === undefined) {\n return this.matchSegmentAgainstRoute(ngModule, segmentGroup, route, paths);\n }\n if (allowRedirects && this.allowRedirects) {\n return this.expandSegmentAgainstRouteUsingRedirect(ngModule, segmentGroup, routes, route, paths, outlet);\n }\n return noMatch(segmentGroup);\n }\n /**\n * @param {?} ngModule\n * @param {?} segmentGroup\n * @param {?} routes\n * @param {?} route\n * @param {?} segments\n * @param {?} outlet\n * @return {?}\n */\n expandSegmentAgainstRouteUsingRedirect(ngModule, segmentGroup, routes, route, segments, outlet) {\n if (route.path === '**') {\n return this.expandWildCardWithParamsAgainstRouteUsingRedirect(ngModule, routes, route, outlet);\n }\n return this.expandRegularSegmentAgainstRouteUsingRedirect(ngModule, segmentGroup, routes, route, segments, outlet);\n }\n /**\n * @param {?} ngModule\n * @param {?} routes\n * @param {?} route\n * @param {?} outlet\n * @return {?}\n */\n expandWildCardWithParamsAgainstRouteUsingRedirect(ngModule, routes, route, outlet) {\n const /** @type {?} */ newTree = this.applyRedirectCommands([], /** @type {?} */ ((route.redirectTo)), {});\n if (/** @type {?} */ ((route.redirectTo)).startsWith('/')) {\n return absoluteRedirect(newTree);\n }\n return mergeMap.call(this.lineralizeSegments(route, newTree), (newSegments) => {\n const /** @type {?} */ group = new UrlSegmentGroup(newSegments, {});\n return this.expandSegment(ngModule, group, routes, newSegments, outlet, false);\n });\n }\n /**\n * @param {?} ngModule\n * @param {?} segmentGroup\n * @param {?} routes\n * @param {?} route\n * @param {?} segments\n * @param {?} outlet\n * @return {?}\n */\n expandRegularSegmentAgainstRouteUsingRedirect(ngModule, segmentGroup, routes, route, segments, outlet) {\n const { matched, consumedSegments, lastChild, positionalParamSegments } = match(segmentGroup, route, segments);\n if (!matched)\n return noMatch(segmentGroup);\n const /** @type {?} */ newTree = this.applyRedirectCommands(consumedSegments, /** @type {?} */ ((route.redirectTo)), /** @type {?} */ (positionalParamSegments));\n if (/** @type {?} */ ((route.redirectTo)).startsWith('/')) {\n return absoluteRedirect(newTree);\n }\n return mergeMap.call(this.lineralizeSegments(route, newTree), (newSegments) => {\n return this.expandSegment(ngModule, segmentGroup, routes, newSegments.concat(segments.slice(lastChild)), outlet, false);\n });\n }\n /**\n * @param {?} ngModule\n * @param {?} rawSegmentGroup\n * @param {?} route\n * @param {?} segments\n * @return {?}\n */\n matchSegmentAgainstRoute(ngModule, rawSegmentGroup, route, segments) {\n if (route.path === '**') {\n if (route.loadChildren) {\n return map.call(this.configLoader.load(ngModule.injector, route), (cfg) => {\n route._loadedConfig = cfg;\n return new UrlSegmentGroup(segments, {});\n });\n }\n return of(new UrlSegmentGroup(segments, {}));\n }\n const { matched, consumedSegments, lastChild } = match(rawSegmentGroup, route, segments);\n if (!matched)\n return noMatch(rawSegmentGroup);\n const /** @type {?} */ rawSlicedSegments = segments.slice(lastChild);\n const /** @type {?} */ childConfig$ = this.getChildConfig(ngModule, route);\n return mergeMap.call(childConfig$, (routerConfig) => {\n const /** @type {?} */ childModule = routerConfig.module;\n const /** @type {?} */ childConfig = routerConfig.routes;\n const { segmentGroup, slicedSegments } = split(rawSegmentGroup, consumedSegments, rawSlicedSegments, childConfig);\n if (slicedSegments.length === 0 && segmentGroup.hasChildren()) {\n const /** @type {?} */ expanded$ = this.expandChildren(childModule, childConfig, segmentGroup);\n return map.call(expanded$, (children) => new UrlSegmentGroup(consumedSegments, children));\n }\n if (childConfig.length === 0 && slicedSegments.length === 0) {\n return of(new UrlSegmentGroup(consumedSegments, {}));\n }\n const /** @type {?} */ expanded$ = this.expandSegment(childModule, segmentGroup, childConfig, slicedSegments, PRIMARY_OUTLET, true);\n return map.call(expanded$, (cs) => new UrlSegmentGroup(consumedSegments.concat(cs.segments), cs.children));\n });\n }\n /**\n * @param {?} ngModule\n * @param {?} route\n * @return {?}\n */\n getChildConfig(ngModule, route) {\n if (route.children) {\n // The children belong to the same module\n return of(new LoadedRouterConfig(route.children, ngModule));\n }\n if (route.loadChildren) {\n // lazy children belong to the loaded module\n if (route._loadedConfig !== undefined) {\n return of(route._loadedConfig);\n }\n return mergeMap.call(runCanLoadGuard(ngModule.injector, route), (shouldLoad) => {\n if (shouldLoad) {\n return map.call(this.configLoader.load(ngModule.injector, route), (cfg) => {\n route._loadedConfig = cfg;\n return cfg;\n });\n }\n return canLoadFails(route);\n });\n }\n return of(new LoadedRouterConfig([], ngModule));\n }\n /**\n * @param {?} route\n * @param {?} urlTree\n * @return {?}\n */\n lineralizeSegments(route, urlTree) {\n let /** @type {?} */ res = [];\n let /** @type {?} */ c = urlTree.root;\n while (true) {\n res = res.concat(c.segments);\n if (c.numberOfChildren === 0) {\n return of(res);\n }\n if (c.numberOfChildren > 1 || !c.children[PRIMARY_OUTLET]) {\n return namedOutletsRedirect(/** @type {?} */ ((route.redirectTo)));\n }\n c = c.children[PRIMARY_OUTLET];\n }\n }\n /**\n * @param {?} segments\n * @param {?} redirectTo\n * @param {?} posParams\n * @return {?}\n */\n applyRedirectCommands(segments, redirectTo, posParams) {\n return this.applyRedirectCreatreUrlTree(redirectTo, this.urlSerializer.parse(redirectTo), segments, posParams);\n }\n /**\n * @param {?} redirectTo\n * @param {?} urlTree\n * @param {?} segments\n * @param {?} posParams\n * @return {?}\n */\n applyRedirectCreatreUrlTree(redirectTo, urlTree, segments, posParams) {\n const /** @type {?} */ newRoot = this.createSegmentGroup(redirectTo, urlTree.root, segments, posParams);\n return new UrlTree(newRoot, this.createQueryParams(urlTree.queryParams, this.urlTree.queryParams), urlTree.fragment);\n }\n /**\n * @param {?} redirectToParams\n * @param {?} actualParams\n * @return {?}\n */\n createQueryParams(redirectToParams, actualParams) {\n const /** @type {?} */ res = {};\n forEach(redirectToParams, (v, k) => {\n const /** @type {?} */ copySourceValue = typeof v === 'string' && v.startsWith(':');\n if (copySourceValue) {\n const /** @type {?} */ sourceName = v.substring(1);\n res[k] = actualParams[sourceName];\n }\n else {\n res[k] = v;\n }\n });\n return res;\n }\n /**\n * @param {?} redirectTo\n * @param {?} group\n * @param {?} segments\n * @param {?} posParams\n * @return {?}\n */\n createSegmentGroup(redirectTo, group, segments, posParams) {\n const /** @type {?} */ updatedSegments = this.createSegments(redirectTo, group.segments, segments, posParams);\n let /** @type {?} */ children = {};\n forEach(group.children, (child, name) => {\n children[name] = this.createSegmentGroup(redirectTo, child, segments, posParams);\n });\n return new UrlSegmentGroup(updatedSegments, children);\n }\n /**\n * @param {?} redirectTo\n * @param {?} redirectToSegments\n * @param {?} actualSegments\n * @param {?} posParams\n * @return {?}\n */\n createSegments(redirectTo, redirectToSegments, actualSegments, posParams) {\n return redirectToSegments.map(s => s.path.startsWith(':') ? this.findPosParam(redirectTo, s, posParams) :\n this.findOrReturn(s, actualSegments));\n }\n /**\n * @param {?} redirectTo\n * @param {?} redirectToUrlSegment\n * @param {?} posParams\n * @return {?}\n */\n findPosParam(redirectTo, redirectToUrlSegment, posParams) {\n const /** @type {?} */ pos = posParams[redirectToUrlSegment.path.substring(1)];\n if (!pos)\n throw new Error(`Cannot redirect to '${redirectTo}'. Cannot find '${redirectToUrlSegment.path}'.`);\n return pos;\n }\n /**\n * @param {?} redirectToUrlSegment\n * @param {?} actualSegments\n * @return {?}\n */\n findOrReturn(redirectToUrlSegment, actualSegments) {\n let /** @type {?} */ idx = 0;\n for (const /** @type {?} */ s of actualSegments) {\n if (s.path === redirectToUrlSegment.path) {\n actualSegments.splice(idx);\n return s;\n }\n idx++;\n }\n return redirectToUrlSegment;\n }\n}\nfunction ApplyRedirects_tsickle_Closure_declarations() {\n /** @type {?} */\n ApplyRedirects.prototype.allowRedirects;\n /** @type {?} */\n ApplyRedirects.prototype.ngModule;\n /** @type {?} */\n ApplyRedirects.prototype.configLoader;\n /** @type {?} */\n ApplyRedirects.prototype.urlSerializer;\n /** @type {?} */\n ApplyRedirects.prototype.urlTree;\n /** @type {?} */\n ApplyRedirects.prototype.config;\n}\n/**\n * @param {?} moduleInjector\n * @param {?} route\n * @return {?}\n */\nfunction runCanLoadGuard(moduleInjector, route) {\n const /** @type {?} */ canLoad = route.canLoad;\n if (!canLoad || canLoad.length === 0)\n return of(true);\n const /** @type {?} */ obs = map.call(from(canLoad), (injectionToken) => {\n const /** @type {?} */ guard = moduleInjector.get(injectionToken);\n return wrapIntoObservable(guard.canLoad ? guard.canLoad(route) : guard(route));\n });\n return andObservables(obs);\n}\n/**\n * @param {?} segmentGroup\n * @param {?} route\n * @param {?} segments\n * @return {?}\n */\nfunction match(segmentGroup, route, segments) {\n if (route.path === '') {\n if ((route.pathMatch === 'full') && (segmentGroup.hasChildren() || segments.length > 0)) {\n return { matched: false, consumedSegments: [], lastChild: 0, positionalParamSegments: {} };\n }\n return { matched: true, consumedSegments: [], lastChild: 0, positionalParamSegments: {} };\n }\n const /** @type {?} */ matcher = route.matcher || defaultUrlMatcher;\n const /** @type {?} */ res = matcher(segments, segmentGroup, route);\n if (!res) {\n return {\n matched: false,\n consumedSegments: /** @type {?} */ ([]),\n lastChild: 0,\n positionalParamSegments: {},\n };\n }\n return {\n matched: true,\n consumedSegments: /** @type {?} */ ((res.consumed)),\n lastChild: /** @type {?} */ ((res.consumed.length)),\n positionalParamSegments: /** @type {?} */ ((res.posParams)),\n };\n}\n/**\n * @param {?} segmentGroup\n * @param {?} consumedSegments\n * @param {?} slicedSegments\n * @param {?} config\n * @return {?}\n */\nfunction split(segmentGroup, consumedSegments, slicedSegments, config) {\n if (slicedSegments.length > 0 &&\n containsEmptyPathRedirectsWithNamedOutlets(segmentGroup, slicedSegments, config)) {\n const /** @type {?} */ s = new UrlSegmentGroup(consumedSegments, createChildrenForEmptySegments(config, new UrlSegmentGroup(slicedSegments, segmentGroup.children)));\n return { segmentGroup: mergeTrivialChildren(s), slicedSegments: [] };\n }\n if (slicedSegments.length === 0 &&\n containsEmptyPathRedirects(segmentGroup, slicedSegments, config)) {\n const /** @type {?} */ s = new UrlSegmentGroup(segmentGroup.segments, addEmptySegmentsToChildrenIfNeeded(segmentGroup, slicedSegments, config, segmentGroup.children));\n return { segmentGroup: mergeTrivialChildren(s), slicedSegments };\n }\n return { segmentGroup, slicedSegments };\n}\n/**\n * @param {?} s\n * @return {?}\n */\nfunction mergeTrivialChildren(s) {\n if (s.numberOfChildren === 1 && s.children[PRIMARY_OUTLET]) {\n const /** @type {?} */ c = s.children[PRIMARY_OUTLET];\n return new UrlSegmentGroup(s.segments.concat(c.segments), c.children);\n }\n return s;\n}\n/**\n * @param {?} segmentGroup\n * @param {?} slicedSegments\n * @param {?} routes\n * @param {?} children\n * @return {?}\n */\nfunction addEmptySegmentsToChildrenIfNeeded(segmentGroup, slicedSegments, routes, children) {\n const /** @type {?} */ res = {};\n for (const /** @type {?} */ r of routes) {\n if (isEmptyPathRedirect(segmentGroup, slicedSegments, r) && !children[getOutlet(r)]) {\n res[getOutlet(r)] = new UrlSegmentGroup([], {});\n }\n }\n return Object.assign({}, children, res);\n}\n/**\n * @param {?} routes\n * @param {?} primarySegmentGroup\n * @return {?}\n */\nfunction createChildrenForEmptySegments(routes, primarySegmentGroup) {\n const /** @type {?} */ res = {};\n res[PRIMARY_OUTLET] = primarySegmentGroup;\n for (const /** @type {?} */ r of routes) {\n if (r.path === '' && getOutlet(r) !== PRIMARY_OUTLET) {\n res[getOutlet(r)] = new UrlSegmentGroup([], {});\n }\n }\n return res;\n}\n/**\n * @param {?} segmentGroup\n * @param {?} segments\n * @param {?} routes\n * @return {?}\n */\nfunction containsEmptyPathRedirectsWithNamedOutlets(segmentGroup, segments, routes) {\n return routes.some(r => isEmptyPathRedirect(segmentGroup, segments, r) && getOutlet(r) !== PRIMARY_OUTLET);\n}\n/**\n * @param {?} segmentGroup\n * @param {?} segments\n * @param {?} routes\n * @return {?}\n */\nfunction containsEmptyPathRedirects(segmentGroup, segments, routes) {\n return routes.some(r => isEmptyPathRedirect(segmentGroup, segments, r));\n}\n/**\n * @param {?} segmentGroup\n * @param {?} segments\n * @param {?} r\n * @return {?}\n */\nfunction isEmptyPathRedirect(segmentGroup, segments, r) {\n if ((segmentGroup.hasChildren() || segments.length > 0) && r.pathMatch === 'full') {\n return false;\n }\n return r.path === '' && r.redirectTo !== undefined;\n}\n/**\n * @param {?} route\n * @return {?}\n */\nfunction getOutlet(route) {\n return route.outlet || PRIMARY_OUTLET;\n}\n//# sourceMappingURL=apply_redirects.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nexport class Tree {\n /**\n * @param {?} root\n */\n constructor(root) { this._root = root; }\n /**\n * @return {?}\n */\n get root() { return this._root.value; }\n /**\n * \\@internal\n * @param {?} t\n * @return {?}\n */\n parent(t) {\n const /** @type {?} */ p = this.pathFromRoot(t);\n return p.length > 1 ? p[p.length - 2] : null;\n }\n /**\n * \\@internal\n * @param {?} t\n * @return {?}\n */\n children(t) {\n const /** @type {?} */ n = findNode(t, this._root);\n return n ? n.children.map(t => t.value) : [];\n }\n /**\n * \\@internal\n * @param {?} t\n * @return {?}\n */\n firstChild(t) {\n const /** @type {?} */ n = findNode(t, this._root);\n return n && n.children.length > 0 ? n.children[0].value : null;\n }\n /**\n * \\@internal\n * @param {?} t\n * @return {?}\n */\n siblings(t) {\n const /** @type {?} */ p = findPath(t, this._root);\n if (p.length < 2)\n return [];\n const /** @type {?} */ c = p[p.length - 2].children.map(c => c.value);\n return c.filter(cc => cc !== t);\n }\n /**\n * \\@internal\n * @param {?} t\n * @return {?}\n */\n pathFromRoot(t) { return findPath(t, this._root).map(s => s.value); }\n}\nfunction Tree_tsickle_Closure_declarations() {\n /**\n * \\@internal\n * @type {?}\n */\n Tree.prototype._root;\n}\n/**\n * @template T\n * @param {?} value\n * @param {?} node\n * @return {?}\n */\nfunction findNode(value, node) {\n if (value === node.value)\n return node;\n for (const /** @type {?} */ child of node.children) {\n const /** @type {?} */ node = findNode(value, child);\n if (node)\n return node;\n }\n return null;\n}\n/**\n * @template T\n * @param {?} value\n * @param {?} node\n * @return {?}\n */\nfunction findPath(value, node) {\n if (value === node.value)\n return [node];\n for (const /** @type {?} */ child of node.children) {\n const /** @type {?} */ path = findPath(value, child);\n if (path.length) {\n path.unshift(node);\n return path;\n }\n }\n return [];\n}\nexport class TreeNode {\n /**\n * @param {?} value\n * @param {?} children\n */\n constructor(value, children) {\n this.value = value;\n this.children = children;\n }\n /**\n * @return {?}\n */\n toString() { return `TreeNode(${this.value})`; }\n}\nfunction TreeNode_tsickle_Closure_declarations() {\n /** @type {?} */\n TreeNode.prototype.value;\n /** @type {?} */\n TreeNode.prototype.children;\n}\n/**\n * @template T\n * @param {?} node\n * @return {?}\n */\nexport function nodeChildrenAsMap(node) {\n const /** @type {?} */ map = {};\n if (node) {\n node.children.forEach(child => map[child.value.outlet] = child);\n }\n return map;\n}\n//# sourceMappingURL=tree.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { BehaviorSubject } from 'rxjs/BehaviorSubject';\nimport { map } from 'rxjs/operator/map';\nimport { PRIMARY_OUTLET, convertToParamMap } from './shared';\nimport { UrlSegment, equalSegments } from './url_tree';\nimport { shallowEqual, shallowEqualArrays } from './utils/collection';\nimport { Tree, TreeNode } from './utils/tree';\n/**\n * \\@whatItDoes Represents the state of the router.\n *\n * \\@howToUse\n *\n * ```\n * \\@Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const state: RouterState = router.routerState;\n * const root: ActivatedRoute = state.root;\n * const child = root.firstChild;\n * const id: Observable<string> = child.params.map(p => p.id);\n * //...\n * }\n * }\n * ```\n *\n * \\@description\n * RouterState is a tree of activated routes. Every node in this tree knows about the \"consumed\" URL\n * segments, the extracted parameters, and the resolved data.\n *\n * See {\\@link ActivatedRoute} for more information.\n *\n * \\@stable\n */\nexport class RouterState extends Tree {\n /**\n * \\@internal\n * @param {?} root\n * @param {?} snapshot\n */\n constructor(root, snapshot) {\n super(root);\n this.snapshot = snapshot;\n setRouterState(/** @type {?} */ (this), root);\n }\n /**\n * @return {?}\n */\n toString() { return this.snapshot.toString(); }\n}\nfunction RouterState_tsickle_Closure_declarations() {\n /**\n * The current snapshot of the router state\n * @type {?}\n */\n RouterState.prototype.snapshot;\n}\n/**\n * @param {?} urlTree\n * @param {?} rootComponent\n * @return {?}\n */\nexport function createEmptyState(urlTree, rootComponent) {\n const /** @type {?} */ snapshot = createEmptyStateSnapshot(urlTree, rootComponent);\n const /** @type {?} */ emptyUrl = new BehaviorSubject([new UrlSegment('', {})]);\n const /** @type {?} */ emptyParams = new BehaviorSubject({});\n const /** @type {?} */ emptyData = new BehaviorSubject({});\n const /** @type {?} */ emptyQueryParams = new BehaviorSubject({});\n const /** @type {?} */ fragment = new BehaviorSubject('');\n const /** @type {?} */ activated = new ActivatedRoute(emptyUrl, emptyParams, emptyQueryParams, fragment, emptyData, PRIMARY_OUTLET, rootComponent, snapshot.root);\n activated.snapshot = snapshot.root;\n return new RouterState(new TreeNode(activated, []), snapshot);\n}\n/**\n * @param {?} urlTree\n * @param {?} rootComponent\n * @return {?}\n */\nexport function createEmptyStateSnapshot(urlTree, rootComponent) {\n const /** @type {?} */ emptyParams = {};\n const /** @type {?} */ emptyData = {};\n const /** @type {?} */ emptyQueryParams = {};\n const /** @type {?} */ fragment = '';\n const /** @type {?} */ activated = new ActivatedRouteSnapshot([], emptyParams, emptyQueryParams, fragment, emptyData, PRIMARY_OUTLET, rootComponent, null, urlTree.root, -1, {});\n return new RouterStateSnapshot('', new TreeNode(activated, []));\n}\n/**\n * \\@whatItDoes Contains the information about a route associated with a component loaded in an\n * outlet.\n * An `ActivatedRoute` can also be used to traverse the router state tree.\n *\n * \\@howToUse\n *\n * ```\n * \\@Component({...})\n * class MyComponent {\n * constructor(route: ActivatedRoute) {\n * const id: Observable<string> = route.params.map(p => p.id);\n * const url: Observable<string> = route.url.map(segments => segments.join(''));\n * // route.data includes both `data` and `resolve`\n * const user = route.data.map(d => d.user);\n * }\n * }\n * ```\n *\n * \\@stable\n */\nexport class ActivatedRoute {\n /**\n * \\@internal\n * @param {?} url\n * @param {?} params\n * @param {?} queryParams\n * @param {?} fragment\n * @param {?} data\n * @param {?} outlet\n * @param {?} component\n * @param {?} futureSnapshot\n */\n constructor(url, params, queryParams, fragment, data, outlet, component, futureSnapshot) {\n this.url = url;\n this.params = params;\n this.queryParams = queryParams;\n this.fragment = fragment;\n this.data = data;\n this.outlet = outlet;\n this.component = component;\n this._futureSnapshot = futureSnapshot;\n }\n /**\n * The configuration used to match this route\n * @return {?}\n */\n get routeConfig() { return this._futureSnapshot.routeConfig; }\n /**\n * The root of the router state\n * @return {?}\n */\n get root() { return this._routerState.root; }\n /**\n * The parent of this route in the router state tree\n * @return {?}\n */\n get parent() { return this._routerState.parent(this); }\n /**\n * The first child of this route in the router state tree\n * @return {?}\n */\n get firstChild() { return this._routerState.firstChild(this); }\n /**\n * The children of this route in the router state tree\n * @return {?}\n */\n get children() { return this._routerState.children(this); }\n /**\n * The path from the root of the router state tree to this route\n * @return {?}\n */\n get pathFromRoot() { return this._routerState.pathFromRoot(this); }\n /**\n * @return {?}\n */\n get paramMap() {\n if (!this._paramMap) {\n this._paramMap = map.call(this.params, (p) => convertToParamMap(p));\n }\n return this._paramMap;\n }\n /**\n * @return {?}\n */\n get queryParamMap() {\n if (!this._queryParamMap) {\n this._queryParamMap =\n map.call(this.queryParams, (p) => convertToParamMap(p));\n }\n return this._queryParamMap;\n }\n /**\n * @return {?}\n */\n toString() {\n return this.snapshot ? this.snapshot.toString() : `Future(${this._futureSnapshot})`;\n }\n}\nfunction ActivatedRoute_tsickle_Closure_declarations() {\n /**\n * The current snapshot of this route\n * @type {?}\n */\n ActivatedRoute.prototype.snapshot;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRoute.prototype._futureSnapshot;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRoute.prototype._routerState;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRoute.prototype._paramMap;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRoute.prototype._queryParamMap;\n /**\n * An observable of the URL segments matched by this route\n * @type {?}\n */\n ActivatedRoute.prototype.url;\n /**\n * An observable of the matrix parameters scoped to this route\n * @type {?}\n */\n ActivatedRoute.prototype.params;\n /**\n * An observable of the query parameters shared by all the routes\n * @type {?}\n */\n ActivatedRoute.prototype.queryParams;\n /**\n * An observable of the URL fragment shared by all the routes\n * @type {?}\n */\n ActivatedRoute.prototype.fragment;\n /**\n * An observable of the static and resolved data of this route.\n * @type {?}\n */\n ActivatedRoute.prototype.data;\n /**\n * The outlet name of the route. It's a constant\n * @type {?}\n */\n ActivatedRoute.prototype.outlet;\n /**\n * The component of the route. It's a constant\n * @type {?}\n */\n ActivatedRoute.prototype.component;\n}\n/**\n * Returns the inherited params, data, and resolve for a given route.\n * By default, this only inherits values up to the nearest path-less or component-less route.\n * \\@internal\n * @param {?} route\n * @param {?=} paramsInheritanceStrategy\n * @return {?}\n */\nexport function inheritedParamsDataResolve(route, paramsInheritanceStrategy = 'emptyOnly') {\n const /** @type {?} */ pathFromRoot = route.pathFromRoot;\n let /** @type {?} */ inheritingStartingFrom = 0;\n if (paramsInheritanceStrategy !== 'always') {\n inheritingStartingFrom = pathFromRoot.length - 1;\n while (inheritingStartingFrom >= 1) {\n const /** @type {?} */ current = pathFromRoot[inheritingStartingFrom];\n const /** @type {?} */ parent = pathFromRoot[inheritingStartingFrom - 1];\n // current route is an empty path => inherits its parent's params and data\n if (current.routeConfig && current.routeConfig.path === '') {\n inheritingStartingFrom--;\n // parent is componentless => current route should inherit its params and data\n }\n else if (!parent.component) {\n inheritingStartingFrom--;\n }\n else {\n break;\n }\n }\n }\n return flattenInherited(pathFromRoot.slice(inheritingStartingFrom));\n}\n/**\n * \\@internal\n * @param {?} pathFromRoot\n * @return {?}\n */\nfunction flattenInherited(pathFromRoot) {\n return pathFromRoot.reduce((res, curr) => {\n const /** @type {?} */ params = Object.assign({}, res.params, curr.params);\n const /** @type {?} */ data = Object.assign({}, res.data, curr.data);\n const /** @type {?} */ resolve = Object.assign({}, res.resolve, curr._resolvedData);\n return { params, data, resolve };\n }, /** @type {?} */ ({ params: {}, data: {}, resolve: {} }));\n}\n/**\n * \\@whatItDoes Contains the information about a route associated with a component loaded in an\n * outlet\n * at a particular moment in time. ActivatedRouteSnapshot can also be used to traverse the router\n * state tree.\n *\n * \\@howToUse\n *\n * ```\n * \\@Component({templateUrl:'./my-component.html'})\n * class MyComponent {\n * constructor(route: ActivatedRoute) {\n * const id: string = route.snapshot.params.id;\n * const url: string = route.snapshot.url.join('');\n * const user = route.snapshot.data.user;\n * }\n * }\n * ```\n *\n * \\@stable\n */\nexport class ActivatedRouteSnapshot {\n /**\n * \\@internal\n * @param {?} url\n * @param {?} params\n * @param {?} queryParams\n * @param {?} fragment\n * @param {?} data\n * @param {?} outlet\n * @param {?} component\n * @param {?} routeConfig\n * @param {?} urlSegment\n * @param {?} lastPathIndex\n * @param {?} resolve\n */\n constructor(url, params, queryParams, fragment, data, outlet, component, routeConfig, urlSegment, lastPathIndex, resolve) {\n this.url = url;\n this.params = params;\n this.queryParams = queryParams;\n this.fragment = fragment;\n this.data = data;\n this.outlet = outlet;\n this.component = component;\n this.routeConfig = routeConfig;\n this._urlSegment = urlSegment;\n this._lastPathIndex = lastPathIndex;\n this._resolve = resolve;\n }\n /**\n * The root of the router state\n * @return {?}\n */\n get root() { return this._routerState.root; }\n /**\n * The parent of this route in the router state tree\n * @return {?}\n */\n get parent() { return this._routerState.parent(this); }\n /**\n * The first child of this route in the router state tree\n * @return {?}\n */\n get firstChild() { return this._routerState.firstChild(this); }\n /**\n * The children of this route in the router state tree\n * @return {?}\n */\n get children() { return this._routerState.children(this); }\n /**\n * The path from the root of the router state tree to this route\n * @return {?}\n */\n get pathFromRoot() { return this._routerState.pathFromRoot(this); }\n /**\n * @return {?}\n */\n get paramMap() {\n if (!this._paramMap) {\n this._paramMap = convertToParamMap(this.params);\n }\n return this._paramMap;\n }\n /**\n * @return {?}\n */\n get queryParamMap() {\n if (!this._queryParamMap) {\n this._queryParamMap = convertToParamMap(this.queryParams);\n }\n return this._queryParamMap;\n }\n /**\n * @return {?}\n */\n toString() {\n const /** @type {?} */ url = this.url.map(segment => segment.toString()).join('/');\n const /** @type {?} */ matched = this.routeConfig ? this.routeConfig.path : '';\n return `Route(url:'${url}', path:'${matched}')`;\n }\n}\nfunction ActivatedRouteSnapshot_tsickle_Closure_declarations() {\n /**\n * The configuration used to match this route *\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype.routeConfig;\n /**\n * \\@internal *\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype._urlSegment;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype._lastPathIndex;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype._resolve;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype._resolvedData;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype._routerState;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype._paramMap;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype._queryParamMap;\n /**\n * The URL segments matched by this route\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype.url;\n /**\n * The matrix parameters scoped to this route\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype.params;\n /**\n * The query parameters shared by all the routes\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype.queryParams;\n /**\n * The URL fragment shared by all the routes\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype.fragment;\n /**\n * The static and resolved data of this route\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype.data;\n /**\n * The outlet name of the route\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype.outlet;\n /**\n * The component of the route\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype.component;\n}\n/**\n * \\@whatItDoes Represents the state of the router at a moment in time.\n *\n * \\@howToUse\n *\n * ```\n * \\@Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const state: RouterState = router.routerState;\n * const snapshot: RouterStateSnapshot = state.snapshot;\n * const root: ActivatedRouteSnapshot = snapshot.root;\n * const child = root.firstChild;\n * const id: Observable<string> = child.params.map(p => p.id);\n * //...\n * }\n * }\n * ```\n *\n * \\@description\n * RouterStateSnapshot is a tree of activated route snapshots. Every node in this tree knows about\n * the \"consumed\" URL segments, the extracted parameters, and the resolved data.\n *\n * \\@stable\n */\nexport class RouterStateSnapshot extends Tree {\n /**\n * \\@internal\n * @param {?} url\n * @param {?} root\n */\n constructor(url, root) {\n super(root);\n this.url = url;\n setRouterState(/** @type {?} */ (this), root);\n }\n /**\n * @return {?}\n */\n toString() { return serializeNode(this._root); }\n}\nfunction RouterStateSnapshot_tsickle_Closure_declarations() {\n /**\n * The url from which this snapshot was created\n * @type {?}\n */\n RouterStateSnapshot.prototype.url;\n}\n/**\n * @template U, T\n * @param {?} state\n * @param {?} node\n * @return {?}\n */\nfunction setRouterState(state, node) {\n node.value._routerState = state;\n node.children.forEach(c => setRouterState(state, c));\n}\n/**\n * @param {?} node\n * @return {?}\n */\nfunction serializeNode(node) {\n const /** @type {?} */ c = node.children.length > 0 ? ` { ${node.children.map(serializeNode).join(', ')} } ` : '';\n return `${node.value}${c}`;\n}\n/**\n * The expectation is that the activate route is created with the right set of parameters.\n * So we push new values into the observables only when they are not the initial values.\n * And we detect that by checking if the snapshot field is set.\n * @param {?} route\n * @return {?}\n */\nexport function advanceActivatedRoute(route) {\n if (route.snapshot) {\n const /** @type {?} */ currentSnapshot = route.snapshot;\n const /** @type {?} */ nextSnapshot = route._futureSnapshot;\n route.snapshot = nextSnapshot;\n if (!shallowEqual(currentSnapshot.queryParams, nextSnapshot.queryParams)) {\n (/** @type {?} */ (route.queryParams)).next(nextSnapshot.queryParams);\n }\n if (currentSnapshot.fragment !== nextSnapshot.fragment) {\n (/** @type {?} */ (route.fragment)).next(nextSnapshot.fragment);\n }\n if (!shallowEqual(currentSnapshot.params, nextSnapshot.params)) {\n (/** @type {?} */ (route.params)).next(nextSnapshot.params);\n }\n if (!shallowEqualArrays(currentSnapshot.url, nextSnapshot.url)) {\n (/** @type {?} */ (route.url)).next(nextSnapshot.url);\n }\n if (!shallowEqual(currentSnapshot.data, nextSnapshot.data)) {\n (/** @type {?} */ (route.data)).next(nextSnapshot.data);\n }\n }\n else {\n route.snapshot = route._futureSnapshot;\n // this is for resolved data\n (/** @type {?} */ (route.data)).next(route._futureSnapshot.data);\n }\n}\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nexport function equalParamsAndUrlSegments(a, b) {\n const /** @type {?} */ equalUrlParams = shallowEqual(a.params, b.params) && equalSegments(a.url, b.url);\n const /** @type {?} */ parentsMismatch = !a.parent !== !b.parent;\n return equalUrlParams && !parentsMismatch &&\n (!a.parent || equalParamsAndUrlSegments(a.parent, /** @type {?} */ ((b.parent))));\n}\n//# sourceMappingURL=router_state.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { BehaviorSubject } from 'rxjs/BehaviorSubject';\nimport { ActivatedRoute, RouterState } from './router_state';\nimport { TreeNode } from './utils/tree';\n/**\n * @param {?} routeReuseStrategy\n * @param {?} curr\n * @param {?} prevState\n * @return {?}\n */\nexport function createRouterState(routeReuseStrategy, curr, prevState) {\n const /** @type {?} */ root = createNode(routeReuseStrategy, curr._root, prevState ? prevState._root : undefined);\n return new RouterState(root, curr);\n}\n/**\n * @param {?} routeReuseStrategy\n * @param {?} curr\n * @param {?=} prevState\n * @return {?}\n */\nfunction createNode(routeReuseStrategy, curr, prevState) {\n // reuse an activated route that is currently displayed on the screen\n if (prevState && routeReuseStrategy.shouldReuseRoute(curr.value, prevState.value.snapshot)) {\n const /** @type {?} */ value = prevState.value;\n value._futureSnapshot = curr.value;\n const /** @type {?} */ children = createOrReuseChildren(routeReuseStrategy, curr, prevState);\n return new TreeNode(value, children);\n // retrieve an activated route that is used to be displayed, but is not currently displayed\n }\n else if (routeReuseStrategy.retrieve(curr.value)) {\n const /** @type {?} */ tree = (/** @type {?} */ (routeReuseStrategy.retrieve(curr.value))).route;\n setFutureSnapshotsOfActivatedRoutes(curr, tree);\n return tree;\n }\n else {\n const /** @type {?} */ value = createActivatedRoute(curr.value);\n const /** @type {?} */ children = curr.children.map(c => createNode(routeReuseStrategy, c));\n return new TreeNode(value, children);\n }\n}\n/**\n * @param {?} curr\n * @param {?} result\n * @return {?}\n */\nfunction setFutureSnapshotsOfActivatedRoutes(curr, result) {\n if (curr.value.routeConfig !== result.value.routeConfig) {\n throw new Error('Cannot reattach ActivatedRouteSnapshot created from a different route');\n }\n if (curr.children.length !== result.children.length) {\n throw new Error('Cannot reattach ActivatedRouteSnapshot with a different number of children');\n }\n result.value._futureSnapshot = curr.value;\n for (let /** @type {?} */ i = 0; i < curr.children.length; ++i) {\n setFutureSnapshotsOfActivatedRoutes(curr.children[i], result.children[i]);\n }\n}\n/**\n * @param {?} routeReuseStrategy\n * @param {?} curr\n * @param {?} prevState\n * @return {?}\n */\nfunction createOrReuseChildren(routeReuseStrategy, curr, prevState) {\n return curr.children.map(child => {\n for (const /** @type {?} */ p of prevState.children) {\n if (routeReuseStrategy.shouldReuseRoute(p.value.snapshot, child.value)) {\n return createNode(routeReuseStrategy, child, p);\n }\n }\n return createNode(routeReuseStrategy, child);\n });\n}\n/**\n * @param {?} c\n * @return {?}\n */\nfunction createActivatedRoute(c) {\n return new ActivatedRoute(new BehaviorSubject(c.url), new BehaviorSubject(c.params), new BehaviorSubject(c.queryParams), new BehaviorSubject(c.fragment), new BehaviorSubject(c.data), c.outlet, c.component, c);\n}\n//# sourceMappingURL=create_router_state.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { PRIMARY_OUTLET } from './shared';\nimport { UrlSegment, UrlSegmentGroup, UrlTree } from './url_tree';\nimport { forEach, last, shallowEqual } from './utils/collection';\n/**\n * @param {?} route\n * @param {?} urlTree\n * @param {?} commands\n * @param {?} queryParams\n * @param {?} fragment\n * @return {?}\n */\nexport function createUrlTree(route, urlTree, commands, queryParams, fragment) {\n if (commands.length === 0) {\n return tree(urlTree.root, urlTree.root, urlTree, queryParams, fragment);\n }\n const /** @type {?} */ nav = computeNavigation(commands);\n if (nav.toRoot()) {\n return tree(urlTree.root, new UrlSegmentGroup([], {}), urlTree, queryParams, fragment);\n }\n const /** @type {?} */ startingPosition = findStartingPosition(nav, urlTree, route);\n const /** @type {?} */ segmentGroup = startingPosition.processChildren ?\n updateSegmentGroupChildren(startingPosition.segmentGroup, startingPosition.index, nav.commands) :\n updateSegmentGroup(startingPosition.segmentGroup, startingPosition.index, nav.commands);\n return tree(startingPosition.segmentGroup, segmentGroup, urlTree, queryParams, fragment);\n}\n/**\n * @param {?} command\n * @return {?}\n */\nfunction isMatrixParams(command) {\n return typeof command === 'object' && command != null && !command.outlets && !command.segmentPath;\n}\n/**\n * @param {?} oldSegmentGroup\n * @param {?} newSegmentGroup\n * @param {?} urlTree\n * @param {?} queryParams\n * @param {?} fragment\n * @return {?}\n */\nfunction tree(oldSegmentGroup, newSegmentGroup, urlTree, queryParams, fragment) {\n let /** @type {?} */ qp = {};\n if (queryParams) {\n forEach(queryParams, (value, name) => {\n qp[name] = Array.isArray(value) ? value.map((v) => `${v}`) : `${value}`;\n });\n }\n if (urlTree.root === oldSegmentGroup) {\n return new UrlTree(newSegmentGroup, qp, fragment);\n }\n return new UrlTree(replaceSegment(urlTree.root, oldSegmentGroup, newSegmentGroup), qp, fragment);\n}\n/**\n * @param {?} current\n * @param {?} oldSegment\n * @param {?} newSegment\n * @return {?}\n */\nfunction replaceSegment(current, oldSegment, newSegment) {\n const /** @type {?} */ children = {};\n forEach(current.children, (c, outletName) => {\n if (c === oldSegment) {\n children[outletName] = newSegment;\n }\n else {\n children[outletName] = replaceSegment(c, oldSegment, newSegment);\n }\n });\n return new UrlSegmentGroup(current.segments, children);\n}\nclass Navigation {\n /**\n * @param {?} isAbsolute\n * @param {?} numberOfDoubleDots\n * @param {?} commands\n */\n constructor(isAbsolute, numberOfDoubleDots, commands) {\n this.isAbsolute = isAbsolute;\n this.numberOfDoubleDots = numberOfDoubleDots;\n this.commands = commands;\n if (isAbsolute && commands.length > 0 && isMatrixParams(commands[0])) {\n throw new Error('Root segment cannot have matrix parameters');\n }\n const /** @type {?} */ cmdWithOutlet = commands.find(c => typeof c === 'object' && c != null && c.outlets);\n if (cmdWithOutlet && cmdWithOutlet !== last(commands)) {\n throw new Error('{outlets:{}} has to be the last command');\n }\n }\n /**\n * @return {?}\n */\n toRoot() {\n return this.isAbsolute && this.commands.length === 1 && this.commands[0] == '/';\n }\n}\nfunction Navigation_tsickle_Closure_declarations() {\n /** @type {?} */\n Navigation.prototype.isAbsolute;\n /** @type {?} */\n Navigation.prototype.numberOfDoubleDots;\n /** @type {?} */\n Navigation.prototype.commands;\n}\n/**\n * Transforms commands to a normalized `Navigation`\n * @param {?} commands\n * @return {?}\n */\nfunction computeNavigation(commands) {\n if ((typeof commands[0] === 'string') && commands.length === 1 && commands[0] === '/') {\n return new Navigation(true, 0, commands);\n }\n let /** @type {?} */ numberOfDoubleDots = 0;\n let /** @type {?} */ isAbsolute = false;\n const /** @type {?} */ res = commands.reduce((res, cmd, cmdIdx) => {\n if (typeof cmd === 'object' && cmd != null) {\n if (cmd.outlets) {\n const /** @type {?} */ outlets = {};\n forEach(cmd.outlets, (commands, name) => {\n outlets[name] = typeof commands === 'string' ? commands.split('/') : commands;\n });\n return [...res, { outlets }];\n }\n if (cmd.segmentPath) {\n return [...res, cmd.segmentPath];\n }\n }\n if (!(typeof cmd === 'string')) {\n return [...res, cmd];\n }\n if (cmdIdx === 0) {\n cmd.split('/').forEach((urlPart, partIndex) => {\n if (partIndex == 0 && urlPart === '.') {\n // skip './a'\n }\n else if (partIndex == 0 && urlPart === '') {\n // '/a'\n isAbsolute = true;\n }\n else if (urlPart === '..') {\n // '../a'\n numberOfDoubleDots++;\n }\n else if (urlPart != '') {\n res.push(urlPart);\n }\n });\n return res;\n }\n return [...res, cmd];\n }, []);\n return new Navigation(isAbsolute, numberOfDoubleDots, res);\n}\nclass Position {\n /**\n * @param {?} segmentGroup\n * @param {?} processChildren\n * @param {?} index\n */\n constructor(segmentGroup, processChildren, index) {\n this.segmentGroup = segmentGroup;\n this.processChildren = processChildren;\n this.index = index;\n }\n}\nfunction Position_tsickle_Closure_declarations() {\n /** @type {?} */\n Position.prototype.segmentGroup;\n /** @type {?} */\n Position.prototype.processChildren;\n /** @type {?} */\n Position.prototype.index;\n}\n/**\n * @param {?} nav\n * @param {?} tree\n * @param {?} route\n * @return {?}\n */\nfunction findStartingPosition(nav, tree, route) {\n if (nav.isAbsolute) {\n return new Position(tree.root, true, 0);\n }\n if (route.snapshot._lastPathIndex === -1) {\n return new Position(route.snapshot._urlSegment, true, 0);\n }\n const /** @type {?} */ modifier = isMatrixParams(nav.commands[0]) ? 0 : 1;\n const /** @type {?} */ index = route.snapshot._lastPathIndex + modifier;\n return createPositionApplyingDoubleDots(route.snapshot._urlSegment, index, nav.numberOfDoubleDots);\n}\n/**\n * @param {?} group\n * @param {?} index\n * @param {?} numberOfDoubleDots\n * @return {?}\n */\nfunction createPositionApplyingDoubleDots(group, index, numberOfDoubleDots) {\n let /** @type {?} */ g = group;\n let /** @type {?} */ ci = index;\n let /** @type {?} */ dd = numberOfDoubleDots;\n while (dd > ci) {\n dd -= ci;\n g = /** @type {?} */ ((g.parent));\n if (!g) {\n throw new Error('Invalid number of \\'../\\'');\n }\n ci = g.segments.length;\n }\n return new Position(g, false, ci - dd);\n}\n/**\n * @param {?} command\n * @return {?}\n */\nfunction getPath(command) {\n if (typeof command === 'object' && command != null && command.outlets) {\n return command.outlets[PRIMARY_OUTLET];\n }\n return `${command}`;\n}\n/**\n * @param {?} commands\n * @return {?}\n */\nfunction getOutlets(commands) {\n if (!(typeof commands[0] === 'object'))\n return { [PRIMARY_OUTLET]: commands };\n if (commands[0].outlets === undefined)\n return { [PRIMARY_OUTLET]: commands };\n return commands[0].outlets;\n}\n/**\n * @param {?} segmentGroup\n * @param {?} startIndex\n * @param {?} commands\n * @return {?}\n */\nfunction updateSegmentGroup(segmentGroup, startIndex, commands) {\n if (!segmentGroup) {\n segmentGroup = new UrlSegmentGroup([], {});\n }\n if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {\n return updateSegmentGroupChildren(segmentGroup, startIndex, commands);\n }\n const /** @type {?} */ m = prefixedWith(segmentGroup, startIndex, commands);\n const /** @type {?} */ slicedCommands = commands.slice(m.commandIndex);\n if (m.match && m.pathIndex < segmentGroup.segments.length) {\n const /** @type {?} */ g = new UrlSegmentGroup(segmentGroup.segments.slice(0, m.pathIndex), {});\n g.children[PRIMARY_OUTLET] =\n new UrlSegmentGroup(segmentGroup.segments.slice(m.pathIndex), segmentGroup.children);\n return updateSegmentGroupChildren(g, 0, slicedCommands);\n }\n else if (m.match && slicedCommands.length === 0) {\n return new UrlSegmentGroup(segmentGroup.segments, {});\n }\n else if (m.match && !segmentGroup.hasChildren()) {\n return createNewSegmentGroup(segmentGroup, startIndex, commands);\n }\n else if (m.match) {\n return updateSegmentGroupChildren(segmentGroup, 0, slicedCommands);\n }\n else {\n return createNewSegmentGroup(segmentGroup, startIndex, commands);\n }\n}\n/**\n * @param {?} segmentGroup\n * @param {?} startIndex\n * @param {?} commands\n * @return {?}\n */\nfunction updateSegmentGroupChildren(segmentGroup, startIndex, commands) {\n if (commands.length === 0) {\n return new UrlSegmentGroup(segmentGroup.segments, {});\n }\n else {\n const /** @type {?} */ outlets = getOutlets(commands);\n const /** @type {?} */ children = {};\n forEach(outlets, (commands, outlet) => {\n if (commands !== null) {\n children[outlet] = updateSegmentGroup(segmentGroup.children[outlet], startIndex, commands);\n }\n });\n forEach(segmentGroup.children, (child, childOutlet) => {\n if (outlets[childOutlet] === undefined) {\n children[childOutlet] = child;\n }\n });\n return new UrlSegmentGroup(segmentGroup.segments, children);\n }\n}\n/**\n * @param {?} segmentGroup\n * @param {?} startIndex\n * @param {?} commands\n * @return {?}\n */\nfunction prefixedWith(segmentGroup, startIndex, commands) {\n let /** @type {?} */ currentCommandIndex = 0;\n let /** @type {?} */ currentPathIndex = startIndex;\n const /** @type {?} */ noMatch = { match: false, pathIndex: 0, commandIndex: 0 };\n while (currentPathIndex < segmentGroup.segments.length) {\n if (currentCommandIndex >= commands.length)\n return noMatch;\n const /** @type {?} */ path = segmentGroup.segments[currentPathIndex];\n const /** @type {?} */ curr = getPath(commands[currentCommandIndex]);\n const /** @type {?} */ next = currentCommandIndex < commands.length - 1 ? commands[currentCommandIndex + 1] : null;\n if (currentPathIndex > 0 && curr === undefined)\n break;\n if (curr && next && (typeof next === 'object') && next.outlets === undefined) {\n if (!compare(curr, next, path))\n return noMatch;\n currentCommandIndex += 2;\n }\n else {\n if (!compare(curr, {}, path))\n return noMatch;\n currentCommandIndex++;\n }\n currentPathIndex++;\n }\n return { match: true, pathIndex: currentPathIndex, commandIndex: currentCommandIndex };\n}\n/**\n * @param {?} segmentGroup\n * @param {?} startIndex\n * @param {?} commands\n * @return {?}\n */\nfunction createNewSegmentGroup(segmentGroup, startIndex, commands) {\n const /** @type {?} */ paths = segmentGroup.segments.slice(0, startIndex);\n let /** @type {?} */ i = 0;\n while (i < commands.length) {\n if (typeof commands[i] === 'object' && commands[i].outlets !== undefined) {\n const /** @type {?} */ children = createNewSegmentChildren(commands[i].outlets);\n return new UrlSegmentGroup(paths, children);\n }\n // if we start with an object literal, we need to reuse the path part from the segment\n if (i === 0 && isMatrixParams(commands[0])) {\n const /** @type {?} */ p = segmentGroup.segments[startIndex];\n paths.push(new UrlSegment(p.path, commands[0]));\n i++;\n continue;\n }\n const /** @type {?} */ curr = getPath(commands[i]);\n const /** @type {?} */ next = (i < commands.length - 1) ? commands[i + 1] : null;\n if (curr && next && isMatrixParams(next)) {\n paths.push(new UrlSegment(curr, stringify(next)));\n i += 2;\n }\n else {\n paths.push(new UrlSegment(curr, {}));\n i++;\n }\n }\n return new UrlSegmentGroup(paths, {});\n}\n/**\n * @param {?} outlets\n * @return {?}\n */\nfunction createNewSegmentChildren(outlets) {\n const /** @type {?} */ children = {};\n forEach(outlets, (commands, outlet) => {\n if (commands !== null) {\n children[outlet] = createNewSegmentGroup(new UrlSegmentGroup([], {}), 0, commands);\n }\n });\n return children;\n}\n/**\n * @param {?} params\n * @return {?}\n */\nfunction stringify(params) {\n const /** @type {?} */ res = {};\n forEach(params, (v, k) => res[k] = `${v}`);\n return res;\n}\n/**\n * @param {?} path\n * @param {?} params\n * @param {?} segment\n * @return {?}\n */\nfunction compare(path, params, segment) {\n return path == segment.path && shallowEqual(params, segment.parameters);\n}\n//# sourceMappingURL=create_url_tree.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { from } from 'rxjs/observable/from';\nimport { of } from 'rxjs/observable/of';\nimport { concatMap } from 'rxjs/operator/concatMap';\nimport { every } from 'rxjs/operator/every';\nimport { first } from 'rxjs/operator/first';\nimport { last } from 'rxjs/operator/last';\nimport { map } from 'rxjs/operator/map';\nimport { mergeMap } from 'rxjs/operator/mergeMap';\nimport { reduce } from 'rxjs/operator/reduce';\nimport { ActivationStart, ChildActivationStart } from './events';\nimport { equalParamsAndUrlSegments, inheritedParamsDataResolve } from './router_state';\nimport { andObservables, forEach, shallowEqual, wrapIntoObservable } from './utils/collection';\nimport { nodeChildrenAsMap } from './utils/tree';\nclass CanActivate {\n /**\n * @param {?} path\n */\n constructor(path) {\n this.path = path;\n this.route = this.path[this.path.length - 1];\n }\n}\nfunction CanActivate_tsickle_Closure_declarations() {\n /** @type {?} */\n CanActivate.prototype.route;\n /** @type {?} */\n CanActivate.prototype.path;\n}\nclass CanDeactivate {\n /**\n * @param {?} component\n * @param {?} route\n */\n constructor(component, route) {\n this.component = component;\n this.route = route;\n }\n}\nfunction CanDeactivate_tsickle_Closure_declarations() {\n /** @type {?} */\n CanDeactivate.prototype.component;\n /** @type {?} */\n CanDeactivate.prototype.route;\n}\n/**\n * This class bundles the actions involved in preactivation of a route.\n */\nexport class PreActivation {\n /**\n * @param {?} future\n * @param {?} curr\n * @param {?} moduleInjector\n * @param {?=} forwardEvent\n */\n constructor(future, curr, moduleInjector, forwardEvent) {\n this.future = future;\n this.curr = curr;\n this.moduleInjector = moduleInjector;\n this.forwardEvent = forwardEvent;\n this.canActivateChecks = [];\n this.canDeactivateChecks = [];\n }\n /**\n * @param {?} parentContexts\n * @return {?}\n */\n initialize(parentContexts) {\n const /** @type {?} */ futureRoot = this.future._root;\n const /** @type {?} */ currRoot = this.curr ? this.curr._root : null;\n this.setupChildRouteGuards(futureRoot, currRoot, parentContexts, [futureRoot.value]);\n }\n /**\n * @return {?}\n */\n checkGuards() {\n if (!this.isDeactivating() && !this.isActivating()) {\n return of(true);\n }\n const /** @type {?} */ canDeactivate$ = this.runCanDeactivateChecks();\n return mergeMap.call(canDeactivate$, (canDeactivate) => canDeactivate ? this.runCanActivateChecks() : of(false));\n }\n /**\n * @param {?} paramsInheritanceStrategy\n * @return {?}\n */\n resolveData(paramsInheritanceStrategy) {\n if (!this.isActivating())\n return of(null);\n const /** @type {?} */ checks$ = from(this.canActivateChecks);\n const /** @type {?} */ runningChecks$ = concatMap.call(checks$, (check) => this.runResolve(check.route, paramsInheritanceStrategy));\n return reduce.call(runningChecks$, (_, __) => _);\n }\n /**\n * @return {?}\n */\n isDeactivating() { return this.canDeactivateChecks.length !== 0; }\n /**\n * @return {?}\n */\n isActivating() { return this.canActivateChecks.length !== 0; }\n /**\n * Iterates over child routes and calls recursive `setupRouteGuards` to get `this` instance in\n * proper state to run `checkGuards()` method.\n * @param {?} futureNode\n * @param {?} currNode\n * @param {?} contexts\n * @param {?} futurePath\n * @return {?}\n */\n setupChildRouteGuards(futureNode, currNode, contexts, futurePath) {\n const /** @type {?} */ prevChildren = nodeChildrenAsMap(currNode);\n // Process the children of the future route\n futureNode.children.forEach(c => {\n this.setupRouteGuards(c, prevChildren[c.value.outlet], contexts, futurePath.concat([c.value]));\n delete prevChildren[c.value.outlet];\n });\n // Process any children left from the current route (not active for the future route)\n forEach(prevChildren, (v, k) => this.deactivateRouteAndItsChildren(v, /** @type {?} */ ((contexts)).getContext(k)));\n }\n /**\n * Iterates over child routes and calls recursive `setupRouteGuards` to get `this` instance in\n * proper state to run `checkGuards()` method.\n * @param {?} futureNode\n * @param {?} currNode\n * @param {?} parentContexts\n * @param {?} futurePath\n * @return {?}\n */\n setupRouteGuards(futureNode, currNode, parentContexts, futurePath) {\n const /** @type {?} */ future = futureNode.value;\n const /** @type {?} */ curr = currNode ? currNode.value : null;\n const /** @type {?} */ context = parentContexts ? parentContexts.getContext(futureNode.value.outlet) : null;\n // reusing the node\n if (curr && future.routeConfig === curr.routeConfig) {\n const /** @type {?} */ shouldRunGuardsAndResolvers = this.shouldRunGuardsAndResolvers(curr, future, /** @type {?} */ ((future.routeConfig)).runGuardsAndResolvers);\n if (shouldRunGuardsAndResolvers) {\n this.canActivateChecks.push(new CanActivate(futurePath));\n }\n else {\n // we need to set the data\n future.data = curr.data;\n future._resolvedData = curr._resolvedData;\n }\n // If we have a component, we need to go through an outlet.\n if (future.component) {\n this.setupChildRouteGuards(futureNode, currNode, context ? context.children : null, futurePath);\n // if we have a componentless route, we recurse but keep the same outlet map.\n }\n else {\n this.setupChildRouteGuards(futureNode, currNode, parentContexts, futurePath);\n }\n if (shouldRunGuardsAndResolvers) {\n const /** @type {?} */ outlet = /** @type {?} */ ((/** @type {?} */ ((context)).outlet));\n this.canDeactivateChecks.push(new CanDeactivate(outlet.component, curr));\n }\n }\n else {\n if (curr) {\n this.deactivateRouteAndItsChildren(currNode, context);\n }\n this.canActivateChecks.push(new CanActivate(futurePath));\n // If we have a component, we need to go through an outlet.\n if (future.component) {\n this.setupChildRouteGuards(futureNode, null, context ? context.children : null, futurePath);\n // if we have a componentless route, we recurse but keep the same outlet map.\n }\n else {\n this.setupChildRouteGuards(futureNode, null, parentContexts, futurePath);\n }\n }\n }\n /**\n * @param {?} curr\n * @param {?} future\n * @param {?} mode\n * @return {?}\n */\n shouldRunGuardsAndResolvers(curr, future, mode) {\n switch (mode) {\n case 'always':\n return true;\n case 'paramsOrQueryParamsChange':\n return !equalParamsAndUrlSegments(curr, future) ||\n !shallowEqual(curr.queryParams, future.queryParams);\n case 'paramsChange':\n default:\n return !equalParamsAndUrlSegments(curr, future);\n }\n }\n /**\n * @param {?} route\n * @param {?} context\n * @return {?}\n */\n deactivateRouteAndItsChildren(route, context) {\n const /** @type {?} */ children = nodeChildrenAsMap(route);\n const /** @type {?} */ r = route.value;\n forEach(children, (node, childName) => {\n if (!r.component) {\n this.deactivateRouteAndItsChildren(node, context);\n }\n else if (context) {\n this.deactivateRouteAndItsChildren(node, context.children.getContext(childName));\n }\n else {\n this.deactivateRouteAndItsChildren(node, null);\n }\n });\n if (!r.component) {\n this.canDeactivateChecks.push(new CanDeactivate(null, r));\n }\n else if (context && context.outlet && context.outlet.isActivated) {\n this.canDeactivateChecks.push(new CanDeactivate(context.outlet.component, r));\n }\n else {\n this.canDeactivateChecks.push(new CanDeactivate(null, r));\n }\n }\n /**\n * @return {?}\n */\n runCanDeactivateChecks() {\n const /** @type {?} */ checks$ = from(this.canDeactivateChecks);\n const /** @type {?} */ runningChecks$ = mergeMap.call(checks$, (check) => this.runCanDeactivate(check.component, check.route));\n return every.call(runningChecks$, (result) => result === true);\n }\n /**\n * @return {?}\n */\n runCanActivateChecks() {\n const /** @type {?} */ checks$ = from(this.canActivateChecks);\n const /** @type {?} */ runningChecks$ = concatMap.call(checks$, (check) => andObservables(from([\n this.fireChildActivationStart(check.route.parent), this.fireActivationStart(check.route),\n this.runCanActivateChild(check.path), this.runCanActivate(check.route)\n ])));\n return every.call(runningChecks$, (result) => result === true);\n // this.fireChildActivationStart(check.path),\n }\n /**\n * This should fire off `ActivationStart` events for each route being activated at this\n * level.\n * In other words, if you're activating `a` and `b` below, `path` will contain the\n * `ActivatedRouteSnapshot`s for both and we will fire `ActivationStart` for both. Always\n * return\n * `true` so checks continue to run.\n * @param {?} snapshot\n * @return {?}\n */\n fireActivationStart(snapshot) {\n if (snapshot !== null && this.forwardEvent) {\n this.forwardEvent(new ActivationStart(snapshot));\n }\n return of(true);\n }\n /**\n * This should fire off `ChildActivationStart` events for each route being activated at this\n * level.\n * In other words, if you're activating `a` and `b` below, `path` will contain the\n * `ActivatedRouteSnapshot`s for both and we will fire `ChildActivationStart` for both. Always\n * return\n * `true` so checks continue to run.\n * @param {?} snapshot\n * @return {?}\n */\n fireChildActivationStart(snapshot) {\n if (snapshot !== null && this.forwardEvent) {\n this.forwardEvent(new ChildActivationStart(snapshot));\n }\n return of(true);\n }\n /**\n * @param {?} future\n * @return {?}\n */\n runCanActivate(future) {\n const /** @type {?} */ canActivate = future.routeConfig ? future.routeConfig.canActivate : null;\n if (!canActivate || canActivate.length === 0)\n return of(true);\n const /** @type {?} */ obs = map.call(from(canActivate), (c) => {\n const /** @type {?} */ guard = this.getToken(c, future);\n let /** @type {?} */ observable;\n if (guard.canActivate) {\n observable = wrapIntoObservable(guard.canActivate(future, this.future));\n }\n else {\n observable = wrapIntoObservable(guard(future, this.future));\n }\n return first.call(observable);\n });\n return andObservables(obs);\n }\n /**\n * @param {?} path\n * @return {?}\n */\n runCanActivateChild(path) {\n const /** @type {?} */ future = path[path.length - 1];\n const /** @type {?} */ canActivateChildGuards = path.slice(0, path.length - 1)\n .reverse()\n .map(p => this.extractCanActivateChild(p))\n .filter(_ => _ !== null);\n return andObservables(map.call(from(canActivateChildGuards), (d) => {\n const /** @type {?} */ obs = map.call(from(d.guards), (c) => {\n const /** @type {?} */ guard = this.getToken(c, d.node);\n let /** @type {?} */ observable;\n if (guard.canActivateChild) {\n observable = wrapIntoObservable(guard.canActivateChild(future, this.future));\n }\n else {\n observable = wrapIntoObservable(guard(future, this.future));\n }\n return first.call(observable);\n });\n return andObservables(obs);\n }));\n }\n /**\n * @param {?} p\n * @return {?}\n */\n extractCanActivateChild(p) {\n const /** @type {?} */ canActivateChild = p.routeConfig ? p.routeConfig.canActivateChild : null;\n if (!canActivateChild || canActivateChild.length === 0)\n return null;\n return { node: p, guards: canActivateChild };\n }\n /**\n * @param {?} component\n * @param {?} curr\n * @return {?}\n */\n runCanDeactivate(component, curr) {\n const /** @type {?} */ canDeactivate = curr && curr.routeConfig ? curr.routeConfig.canDeactivate : null;\n if (!canDeactivate || canDeactivate.length === 0)\n return of(true);\n const /** @type {?} */ canDeactivate$ = mergeMap.call(from(canDeactivate), (c) => {\n const /** @type {?} */ guard = this.getToken(c, curr);\n let /** @type {?} */ observable;\n if (guard.canDeactivate) {\n observable =\n wrapIntoObservable(guard.canDeactivate(component, curr, this.curr, this.future));\n }\n else {\n observable = wrapIntoObservable(guard(component, curr, this.curr, this.future));\n }\n return first.call(observable);\n });\n return every.call(canDeactivate$, (result) => result === true);\n }\n /**\n * @param {?} future\n * @param {?} paramsInheritanceStrategy\n * @return {?}\n */\n runResolve(future, paramsInheritanceStrategy) {\n const /** @type {?} */ resolve = future._resolve;\n return map.call(this.resolveNode(resolve, future), (resolvedData) => {\n future._resolvedData = resolvedData;\n future.data = Object.assign({}, future.data, inheritedParamsDataResolve(future, paramsInheritanceStrategy).resolve);\n return null;\n });\n }\n /**\n * @param {?} resolve\n * @param {?} future\n * @return {?}\n */\n resolveNode(resolve, future) {\n const /** @type {?} */ keys = Object.keys(resolve);\n if (keys.length === 0) {\n return of({});\n }\n if (keys.length === 1) {\n const /** @type {?} */ key = keys[0];\n return map.call(this.getResolver(resolve[key], future), (value) => { return { [key]: value }; });\n }\n const /** @type {?} */ data = {};\n const /** @type {?} */ runningResolvers$ = mergeMap.call(from(keys), (key) => {\n return map.call(this.getResolver(resolve[key], future), (value) => {\n data[key] = value;\n return value;\n });\n });\n return map.call(last.call(runningResolvers$), () => data);\n }\n /**\n * @param {?} injectionToken\n * @param {?} future\n * @return {?}\n */\n getResolver(injectionToken, future) {\n const /** @type {?} */ resolver = this.getToken(injectionToken, future);\n return resolver.resolve ? wrapIntoObservable(resolver.resolve(future, this.future)) :\n wrapIntoObservable(resolver(future, this.future));\n }\n /**\n * @param {?} token\n * @param {?} snapshot\n * @return {?}\n */\n getToken(token, snapshot) {\n const /** @type {?} */ config = closestLoadedConfig(snapshot);\n const /** @type {?} */ injector = config ? config.module.injector : this.moduleInjector;\n return injector.get(token);\n }\n}\nfunction PreActivation_tsickle_Closure_declarations() {\n /** @type {?} */\n PreActivation.prototype.canActivateChecks;\n /** @type {?} */\n PreActivation.prototype.canDeactivateChecks;\n /** @type {?} */\n PreActivation.prototype.future;\n /** @type {?} */\n PreActivation.prototype.curr;\n /** @type {?} */\n PreActivation.prototype.moduleInjector;\n /** @type {?} */\n PreActivation.prototype.forwardEvent;\n}\n/**\n * @param {?} snapshot\n * @return {?}\n */\nfunction closestLoadedConfig(snapshot) {\n if (!snapshot)\n return null;\n for (let /** @type {?} */ s = snapshot.parent; s; s = s.parent) {\n const /** @type {?} */ route = s.routeConfig;\n if (route && route._loadedConfig)\n return route._loadedConfig;\n }\n return null;\n}\n//# sourceMappingURL=pre_activation.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Observable } from 'rxjs/Observable';\nimport { of } from 'rxjs/observable/of';\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, inheritedParamsDataResolve } from './router_state';\nimport { PRIMARY_OUTLET, defaultUrlMatcher } from './shared';\nimport { UrlSegmentGroup, mapChildrenIntoArray } from './url_tree';\nimport { forEach, last } from './utils/collection';\nimport { TreeNode } from './utils/tree';\nclass NoMatch {\n}\n/**\n * @param {?} rootComponentType\n * @param {?} config\n * @param {?} urlTree\n * @param {?} url\n * @param {?=} paramsInheritanceStrategy\n * @return {?}\n */\nexport function recognize(rootComponentType, config, urlTree, url, paramsInheritanceStrategy = 'emptyOnly') {\n return new Recognizer(rootComponentType, config, urlTree, url, paramsInheritanceStrategy)\n .recognize();\n}\nclass Recognizer {\n /**\n * @param {?} rootComponentType\n * @param {?} config\n * @param {?} urlTree\n * @param {?} url\n * @param {?} paramsInheritanceStrategy\n */\n constructor(rootComponentType, config, urlTree, url, paramsInheritanceStrategy) {\n this.rootComponentType = rootComponentType;\n this.config = config;\n this.urlTree = urlTree;\n this.url = url;\n this.paramsInheritanceStrategy = paramsInheritanceStrategy;\n }\n /**\n * @return {?}\n */\n recognize() {\n try {\n const /** @type {?} */ rootSegmentGroup = split(this.urlTree.root, [], [], this.config).segmentGroup;\n const /** @type {?} */ children = this.processSegmentGroup(this.config, rootSegmentGroup, PRIMARY_OUTLET);\n const /** @type {?} */ root = new ActivatedRouteSnapshot([], Object.freeze({}), Object.freeze(this.urlTree.queryParams), /** @type {?} */ ((this.urlTree.fragment)), {}, PRIMARY_OUTLET, this.rootComponentType, null, this.urlTree.root, -1, {});\n const /** @type {?} */ rootNode = new TreeNode(root, children);\n const /** @type {?} */ routeState = new RouterStateSnapshot(this.url, rootNode);\n this.inheritParamsAndData(routeState._root);\n return of(routeState);\n }\n catch (/** @type {?} */ e) {\n return new Observable((obs) => obs.error(e));\n }\n }\n /**\n * @param {?} routeNode\n * @return {?}\n */\n inheritParamsAndData(routeNode) {\n const /** @type {?} */ route = routeNode.value;\n const /** @type {?} */ i = inheritedParamsDataResolve(route, this.paramsInheritanceStrategy);\n route.params = Object.freeze(i.params);\n route.data = Object.freeze(i.data);\n routeNode.children.forEach(n => this.inheritParamsAndData(n));\n }\n /**\n * @param {?} config\n * @param {?} segmentGroup\n * @param {?} outlet\n * @return {?}\n */\n processSegmentGroup(config, segmentGroup, outlet) {\n if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {\n return this.processChildren(config, segmentGroup);\n }\n return this.processSegment(config, segmentGroup, segmentGroup.segments, outlet);\n }\n /**\n * @param {?} config\n * @param {?} segmentGroup\n * @return {?}\n */\n processChildren(config, segmentGroup) {\n const /** @type {?} */ children = mapChildrenIntoArray(segmentGroup, (child, childOutlet) => this.processSegmentGroup(config, child, childOutlet));\n checkOutletNameUniqueness(children);\n sortActivatedRouteSnapshots(children);\n return children;\n }\n /**\n * @param {?} config\n * @param {?} segmentGroup\n * @param {?} segments\n * @param {?} outlet\n * @return {?}\n */\n processSegment(config, segmentGroup, segments, outlet) {\n for (const /** @type {?} */ r of config) {\n try {\n return this.processSegmentAgainstRoute(r, segmentGroup, segments, outlet);\n }\n catch (/** @type {?} */ e) {\n if (!(e instanceof NoMatch))\n throw e;\n }\n }\n if (this.noLeftoversInUrl(segmentGroup, segments, outlet)) {\n return [];\n }\n throw new NoMatch();\n }\n /**\n * @param {?} segmentGroup\n * @param {?} segments\n * @param {?} outlet\n * @return {?}\n */\n noLeftoversInUrl(segmentGroup, segments, outlet) {\n return segments.length === 0 && !segmentGroup.children[outlet];\n }\n /**\n * @param {?} route\n * @param {?} rawSegment\n * @param {?} segments\n * @param {?} outlet\n * @return {?}\n */\n processSegmentAgainstRoute(route, rawSegment, segments, outlet) {\n if (route.redirectTo)\n throw new NoMatch();\n if ((route.outlet || PRIMARY_OUTLET) !== outlet)\n throw new NoMatch();\n let /** @type {?} */ snapshot;\n let /** @type {?} */ consumedSegments = [];\n let /** @type {?} */ rawSlicedSegments = [];\n if (route.path === '**') {\n const /** @type {?} */ params = segments.length > 0 ? /** @type {?} */ ((last(segments))).parameters : {};\n snapshot = new ActivatedRouteSnapshot(segments, params, Object.freeze(this.urlTree.queryParams), /** @type {?} */ ((this.urlTree.fragment)), getData(route), outlet, /** @type {?} */ ((route.component)), route, getSourceSegmentGroup(rawSegment), getPathIndexShift(rawSegment) + segments.length, getResolve(route));\n }\n else {\n const /** @type {?} */ result = match(rawSegment, route, segments);\n consumedSegments = result.consumedSegments;\n rawSlicedSegments = segments.slice(result.lastChild);\n snapshot = new ActivatedRouteSnapshot(consumedSegments, result.parameters, Object.freeze(this.urlTree.queryParams), /** @type {?} */ ((this.urlTree.fragment)), getData(route), outlet, /** @type {?} */ ((route.component)), route, getSourceSegmentGroup(rawSegment), getPathIndexShift(rawSegment) + consumedSegments.length, getResolve(route));\n }\n const /** @type {?} */ childConfig = getChildConfig(route);\n const { segmentGroup, slicedSegments } = split(rawSegment, consumedSegments, rawSlicedSegments, childConfig);\n if (slicedSegments.length === 0 && segmentGroup.hasChildren()) {\n const /** @type {?} */ children = this.processChildren(childConfig, segmentGroup);\n return [new TreeNode(snapshot, children)];\n }\n if (childConfig.length === 0 && slicedSegments.length === 0) {\n return [new TreeNode(snapshot, [])];\n }\n const /** @type {?} */ children = this.processSegment(childConfig, segmentGroup, slicedSegments, PRIMARY_OUTLET);\n return [new TreeNode(snapshot, children)];\n }\n}\nfunction Recognizer_tsickle_Closure_declarations() {\n /** @type {?} */\n Recognizer.prototype.rootComponentType;\n /** @type {?} */\n Recognizer.prototype.config;\n /** @type {?} */\n Recognizer.prototype.urlTree;\n /** @type {?} */\n Recognizer.prototype.url;\n /** @type {?} */\n Recognizer.prototype.paramsInheritanceStrategy;\n}\n/**\n * @param {?} nodes\n * @return {?}\n */\nfunction sortActivatedRouteSnapshots(nodes) {\n nodes.sort((a, b) => {\n if (a.value.outlet === PRIMARY_OUTLET)\n return -1;\n if (b.value.outlet === PRIMARY_OUTLET)\n return 1;\n return a.value.outlet.localeCompare(b.value.outlet);\n });\n}\n/**\n * @param {?} route\n * @return {?}\n */\nfunction getChildConfig(route) {\n if (route.children) {\n return route.children;\n }\n if (route.loadChildren) {\n return /** @type {?} */ ((route._loadedConfig)).routes;\n }\n return [];\n}\n/**\n * @record\n */\nfunction MatchResult() { }\nfunction MatchResult_tsickle_Closure_declarations() {\n /** @type {?} */\n MatchResult.prototype.consumedSegments;\n /** @type {?} */\n MatchResult.prototype.lastChild;\n /** @type {?} */\n MatchResult.prototype.parameters;\n}\n/**\n * @param {?} segmentGroup\n * @param {?} route\n * @param {?} segments\n * @return {?}\n */\nfunction match(segmentGroup, route, segments) {\n if (route.path === '') {\n if (route.pathMatch === 'full' && (segmentGroup.hasChildren() || segments.length > 0)) {\n throw new NoMatch();\n }\n return { consumedSegments: [], lastChild: 0, parameters: {} };\n }\n const /** @type {?} */ matcher = route.matcher || defaultUrlMatcher;\n const /** @type {?} */ res = matcher(segments, segmentGroup, route);\n if (!res)\n throw new NoMatch();\n const /** @type {?} */ posParams = {};\n forEach(/** @type {?} */ ((res.posParams)), (v, k) => { posParams[k] = v.path; });\n const /** @type {?} */ parameters = res.consumed.length > 0 ? Object.assign({}, posParams, res.consumed[res.consumed.length - 1].parameters) :\n posParams;\n return { consumedSegments: res.consumed, lastChild: res.consumed.length, parameters };\n}\n/**\n * @param {?} nodes\n * @return {?}\n */\nfunction checkOutletNameUniqueness(nodes) {\n const /** @type {?} */ names = {};\n nodes.forEach(n => {\n const /** @type {?} */ routeWithSameOutletName = names[n.value.outlet];\n if (routeWithSameOutletName) {\n const /** @type {?} */ p = routeWithSameOutletName.url.map(s => s.toString()).join('/');\n const /** @type {?} */ c = n.value.url.map(s => s.toString()).join('/');\n throw new Error(`Two segments cannot have the same outlet name: '${p}' and '${c}'.`);\n }\n names[n.value.outlet] = n.value;\n });\n}\n/**\n * @param {?} segmentGroup\n * @return {?}\n */\nfunction getSourceSegmentGroup(segmentGroup) {\n let /** @type {?} */ s = segmentGroup;\n while (s._sourceSegment) {\n s = s._sourceSegment;\n }\n return s;\n}\n/**\n * @param {?} segmentGroup\n * @return {?}\n */\nfunction getPathIndexShift(segmentGroup) {\n let /** @type {?} */ s = segmentGroup;\n let /** @type {?} */ res = (s._segmentIndexShift ? s._segmentIndexShift : 0);\n while (s._sourceSegment) {\n s = s._sourceSegment;\n res += (s._segmentIndexShift ? s._segmentIndexShift : 0);\n }\n return res - 1;\n}\n/**\n * @param {?} segmentGroup\n * @param {?} consumedSegments\n * @param {?} slicedSegments\n * @param {?} config\n * @return {?}\n */\nfunction split(segmentGroup, consumedSegments, slicedSegments, config) {\n if (slicedSegments.length > 0 &&\n containsEmptyPathMatchesWithNamedOutlets(segmentGroup, slicedSegments, config)) {\n const /** @type {?} */ s = new UrlSegmentGroup(consumedSegments, createChildrenForEmptyPaths(segmentGroup, consumedSegments, config, new UrlSegmentGroup(slicedSegments, segmentGroup.children)));\n s._sourceSegment = segmentGroup;\n s._segmentIndexShift = consumedSegments.length;\n return { segmentGroup: s, slicedSegments: [] };\n }\n if (slicedSegments.length === 0 &&\n containsEmptyPathMatches(segmentGroup, slicedSegments, config)) {\n const /** @type {?} */ s = new UrlSegmentGroup(segmentGroup.segments, addEmptyPathsToChildrenIfNeeded(segmentGroup, slicedSegments, config, segmentGroup.children));\n s._sourceSegment = segmentGroup;\n s._segmentIndexShift = consumedSegments.length;\n return { segmentGroup: s, slicedSegments };\n }\n const /** @type {?} */ s = new UrlSegmentGroup(segmentGroup.segments, segmentGroup.children);\n s._sourceSegment = segmentGroup;\n s._segmentIndexShift = consumedSegments.length;\n return { segmentGroup: s, slicedSegments };\n}\n/**\n * @param {?} segmentGroup\n * @param {?} slicedSegments\n * @param {?} routes\n * @param {?} children\n * @return {?}\n */\nfunction addEmptyPathsToChildrenIfNeeded(segmentGroup, slicedSegments, routes, children) {\n const /** @type {?} */ res = {};\n for (const /** @type {?} */ r of routes) {\n if (emptyPathMatch(segmentGroup, slicedSegments, r) && !children[getOutlet(r)]) {\n const /** @type {?} */ s = new UrlSegmentGroup([], {});\n s._sourceSegment = segmentGroup;\n s._segmentIndexShift = segmentGroup.segments.length;\n res[getOutlet(r)] = s;\n }\n }\n return Object.assign({}, children, res);\n}\n/**\n * @param {?} segmentGroup\n * @param {?} consumedSegments\n * @param {?} routes\n * @param {?} primarySegment\n * @return {?}\n */\nfunction createChildrenForEmptyPaths(segmentGroup, consumedSegments, routes, primarySegment) {\n const /** @type {?} */ res = {};\n res[PRIMARY_OUTLET] = primarySegment;\n primarySegment._sourceSegment = segmentGroup;\n primarySegment._segmentIndexShift = consumedSegments.length;\n for (const /** @type {?} */ r of routes) {\n if (r.path === '' && getOutlet(r) !== PRIMARY_OUTLET) {\n const /** @type {?} */ s = new UrlSegmentGroup([], {});\n s._sourceSegment = segmentGroup;\n s._segmentIndexShift = consumedSegments.length;\n res[getOutlet(r)] = s;\n }\n }\n return res;\n}\n/**\n * @param {?} segmentGroup\n * @param {?} slicedSegments\n * @param {?} routes\n * @return {?}\n */\nfunction containsEmptyPathMatchesWithNamedOutlets(segmentGroup, slicedSegments, routes) {\n return routes.some(r => emptyPathMatch(segmentGroup, slicedSegments, r) && getOutlet(r) !== PRIMARY_OUTLET);\n}\n/**\n * @param {?} segmentGroup\n * @param {?} slicedSegments\n * @param {?} routes\n * @return {?}\n */\nfunction containsEmptyPathMatches(segmentGroup, slicedSegments, routes) {\n return routes.some(r => emptyPathMatch(segmentGroup, slicedSegments, r));\n}\n/**\n * @param {?} segmentGroup\n * @param {?} slicedSegments\n * @param {?} r\n * @return {?}\n */\nfunction emptyPathMatch(segmentGroup, slicedSegments, r) {\n if ((segmentGroup.hasChildren() || slicedSegments.length > 0) && r.pathMatch === 'full') {\n return false;\n }\n return r.path === '' && r.redirectTo === undefined;\n}\n/**\n * @param {?} route\n * @return {?}\n */\nfunction getOutlet(route) {\n return route.outlet || PRIMARY_OUTLET;\n}\n/**\n * @param {?} route\n * @return {?}\n */\nfunction getData(route) {\n return route.data || {};\n}\n/**\n * @param {?} route\n * @return {?}\n */\nfunction getResolve(route) {\n return route.resolve || {};\n}\n//# sourceMappingURL=recognize.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * \\@whatItDoes Provides a way to customize when activated routes get reused.\n *\n * \\@experimental\n * @abstract\n */\nexport class RouteReuseStrategy {\n}\nfunction RouteReuseStrategy_tsickle_Closure_declarations() {\n /**\n * Determines if this route (and its subtree) should be detached to be reused later\n * @abstract\n * @param {?} route\n * @return {?}\n */\n RouteReuseStrategy.prototype.shouldDetach = function (route) { };\n /**\n * Stores the detached route.\n *\n * Storing a `null` value should erase the previously stored value.\n * @abstract\n * @param {?} route\n * @param {?} handle\n * @return {?}\n */\n RouteReuseStrategy.prototype.store = function (route, handle) { };\n /**\n * Determines if this route (and its subtree) should be reattached\n * @abstract\n * @param {?} route\n * @return {?}\n */\n RouteReuseStrategy.prototype.shouldAttach = function (route) { };\n /**\n * Retrieves the previously stored route\n * @abstract\n * @param {?} route\n * @return {?}\n */\n RouteReuseStrategy.prototype.retrieve = function (route) { };\n /**\n * Determines if a route should be reused\n * @abstract\n * @param {?} future\n * @param {?} curr\n * @return {?}\n */\n RouteReuseStrategy.prototype.shouldReuseRoute = function (future, curr) { };\n}\n/**\n * Does not detach any subtrees. Reuses routes as long as their route config is the same.\n */\nexport class DefaultRouteReuseStrategy {\n /**\n * @param {?} route\n * @return {?}\n */\n shouldDetach(route) { return false; }\n /**\n * @param {?} route\n * @param {?} detachedTree\n * @return {?}\n */\n store(route, detachedTree) { }\n /**\n * @param {?} route\n * @return {?}\n */\n shouldAttach(route) { return false; }\n /**\n * @param {?} route\n * @return {?}\n */\n retrieve(route) { return null; }\n /**\n * @param {?} future\n * @param {?} curr\n * @return {?}\n */\n shouldReuseRoute(future, curr) {\n return future.routeConfig === curr.routeConfig;\n }\n}\n//# sourceMappingURL=route_reuse_strategy.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { InjectionToken, NgModuleFactory } from '@angular/core';\nimport { fromPromise } from 'rxjs/observable/fromPromise';\nimport { of } from 'rxjs/observable/of';\nimport { map } from 'rxjs/operator/map';\nimport { mergeMap } from 'rxjs/operator/mergeMap';\nimport { LoadedRouterConfig } from './config';\nimport { flatten, wrapIntoObservable } from './utils/collection';\n/**\n * \\@docsNotRequired\n * \\@experimental\n */\nexport const /** @type {?} */ ROUTES = new InjectionToken('ROUTES');\nexport class RouterConfigLoader {\n /**\n * @param {?} loader\n * @param {?} compiler\n * @param {?=} onLoadStartListener\n * @param {?=} onLoadEndListener\n */\n constructor(loader, compiler, onLoadStartListener, onLoadEndListener) {\n this.loader = loader;\n this.compiler = compiler;\n this.onLoadStartListener = onLoadStartListener;\n this.onLoadEndListener = onLoadEndListener;\n }\n /**\n * @param {?} parentInjector\n * @param {?} route\n * @return {?}\n */\n load(parentInjector, route) {\n if (this.onLoadStartListener) {\n this.onLoadStartListener(route);\n }\n const /** @type {?} */ moduleFactory$ = this.loadModuleFactory(/** @type {?} */ ((route.loadChildren)));\n return map.call(moduleFactory$, (factory) => {\n if (this.onLoadEndListener) {\n this.onLoadEndListener(route);\n }\n const /** @type {?} */ module = factory.create(parentInjector);\n return new LoadedRouterConfig(flatten(module.injector.get(ROUTES)), module);\n });\n }\n /**\n * @param {?} loadChildren\n * @return {?}\n */\n loadModuleFactory(loadChildren) {\n if (typeof loadChildren === 'string') {\n return fromPromise(this.loader.load(loadChildren));\n }\n else {\n return mergeMap.call(wrapIntoObservable(loadChildren()), (t) => {\n if (t instanceof NgModuleFactory) {\n return of(t);\n }\n else {\n return fromPromise(this.compiler.compileModuleAsync(t));\n }\n });\n }\n }\n}\nfunction RouterConfigLoader_tsickle_Closure_declarations() {\n /** @type {?} */\n RouterConfigLoader.prototype.loader;\n /** @type {?} */\n RouterConfigLoader.prototype.compiler;\n /** @type {?} */\n RouterConfigLoader.prototype.onLoadStartListener;\n /** @type {?} */\n RouterConfigLoader.prototype.onLoadEndListener;\n}\n//# sourceMappingURL=router_config_loader.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * \\@whatItDoes Provides a way to migrate AngularJS applications to Angular.\n *\n * \\@experimental\n * @abstract\n */\nexport class UrlHandlingStrategy {\n}\nfunction UrlHandlingStrategy_tsickle_Closure_declarations() {\n /**\n * Tells the router if this URL should be processed.\n *\n * When it returns true, the router will execute the regular navigation.\n * When it returns false, the router will set the router state to an empty state.\n * As a result, all the active components will be destroyed.\n *\n * @abstract\n * @param {?} url\n * @return {?}\n */\n UrlHandlingStrategy.prototype.shouldProcessUrl = function (url) { };\n /**\n * Extracts the part of the URL that should be handled by the router.\n * The rest of the URL will remain untouched.\n * @abstract\n * @param {?} url\n * @return {?}\n */\n UrlHandlingStrategy.prototype.extract = function (url) { };\n /**\n * Merges the URL fragment with the rest of the URL.\n * @abstract\n * @param {?} newUrlPart\n * @param {?} rawUrl\n * @return {?}\n */\n UrlHandlingStrategy.prototype.merge = function (newUrlPart, rawUrl) { };\n}\n/**\n * \\@experimental\n */\nexport class DefaultUrlHandlingStrategy {\n /**\n * @param {?} url\n * @return {?}\n */\n shouldProcessUrl(url) { return true; }\n /**\n * @param {?} url\n * @return {?}\n */\n extract(url) { return url; }\n /**\n * @param {?} newUrlPart\n * @param {?} wholeUrl\n * @return {?}\n */\n merge(newUrlPart, wholeUrl) { return newUrlPart; }\n}\n//# sourceMappingURL=url_handling_strategy.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { NgModuleRef, isDevMode } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs/BehaviorSubject';\nimport { Subject } from 'rxjs/Subject';\nimport { of } from 'rxjs/observable/of';\nimport { concatMap } from 'rxjs/operator/concatMap';\nimport { map } from 'rxjs/operator/map';\nimport { mergeMap } from 'rxjs/operator/mergeMap';\nimport { applyRedirects } from './apply_redirects';\nimport { validateConfig } from './config';\nimport { createRouterState } from './create_router_state';\nimport { createUrlTree } from './create_url_tree';\nimport { ActivationEnd, ChildActivationEnd, GuardsCheckEnd, GuardsCheckStart, NavigationCancel, NavigationEnd, NavigationError, NavigationStart, ResolveEnd, ResolveStart, RouteConfigLoadEnd, RouteConfigLoadStart, RoutesRecognized } from './events';\nimport { PreActivation } from './pre_activation';\nimport { recognize } from './recognize';\nimport { DefaultRouteReuseStrategy } from './route_reuse_strategy';\nimport { RouterConfigLoader } from './router_config_loader';\nimport { advanceActivatedRoute, createEmptyState } from './router_state';\nimport { isNavigationCancelingError } from './shared';\nimport { DefaultUrlHandlingStrategy } from './url_handling_strategy';\nimport { UrlTree, containsTree, createEmptyUrlTree } from './url_tree';\nimport { forEach } from './utils/collection';\nimport { nodeChildrenAsMap } from './utils/tree';\n/**\n * \\@whatItDoes Represents the extra options used during navigation.\n *\n * \\@stable\n * @record\n */\nexport function NavigationExtras() { }\nfunction NavigationExtras_tsickle_Closure_declarations() {\n /**\n * Enables relative navigation from the current ActivatedRoute.\n *\n * Configuration:\n *\n * ```\n * [{\n * path: 'parent',\n * component: ParentComponent,\n * children: [{\n * path: 'list',\n * component: ListComponent\n * },{\n * path: 'child',\n * component: ChildComponent\n * }]\n * }]\n * ```\n *\n * Navigate to list route from child route:\n *\n * ```\n * \\@Component({...})\n * class ChildComponent {\n * constructor(private router: Router, private route: ActivatedRoute) {}\n *\n * go() {\n * this.router.navigate(['../list'], { relativeTo: this.route });\n * }\n * }\n * ```\n * @type {?|undefined}\n */\n NavigationExtras.prototype.relativeTo;\n /**\n * Sets query parameters to the URL.\n *\n * ```\n * // Navigate to /results?page=1\n * this.router.navigate(['/results'], { queryParams: { page: 1 } });\n * ```\n * @type {?|undefined}\n */\n NavigationExtras.prototype.queryParams;\n /**\n * Sets the hash fragment for the URL.\n *\n * ```\n * // Navigate to /results#top\n * this.router.navigate(['/results'], { fragment: 'top' });\n * ```\n * @type {?|undefined}\n */\n NavigationExtras.prototype.fragment;\n /**\n * Preserves the query parameters for the next navigation.\n *\n * deprecated, use `queryParamsHandling` instead\n *\n * ```\n * // Preserve query params from /results?page=1 to /view?page=1\n * this.router.navigate(['/view'], { preserveQueryParams: true });\n * ```\n *\n * @deprecated since v4\n * @type {?|undefined}\n */\n NavigationExtras.prototype.preserveQueryParams;\n /**\n * config strategy to handle the query parameters for the next navigation.\n *\n * ```\n * // from /results?page=1 to /view?page=1&page=2\n * this.router.navigate(['/view'], { queryParams: { page: 2 }, queryParamsHandling: \"merge\" });\n * ```\n * @type {?|undefined}\n */\n NavigationExtras.prototype.queryParamsHandling;\n /**\n * Preserves the fragment for the next navigation\n *\n * ```\n * // Preserve fragment from /results#top to /view#top\n * this.router.navigate(['/view'], { preserveFragment: true });\n * ```\n * @type {?|undefined}\n */\n NavigationExtras.prototype.preserveFragment;\n /**\n * Navigates without pushing a new state into history.\n *\n * ```\n * // Navigate silently to /view\n * this.router.navigate(['/view'], { skipLocationChange: true });\n * ```\n * @type {?|undefined}\n */\n NavigationExtras.prototype.skipLocationChange;\n /**\n * Navigates while replacing the current state in history.\n *\n * ```\n * // Navigate to /view\n * this.router.navigate(['/view'], { replaceUrl: true });\n * ```\n * @type {?|undefined}\n */\n NavigationExtras.prototype.replaceUrl;\n}\n/**\n * @param {?} error\n * @return {?}\n */\nfunction defaultErrorHandler(error) {\n throw error;\n}\n/**\n * \\@internal\n * @param {?} snapshot\n * @return {?}\n */\nfunction defaultRouterHook(snapshot) {\n return /** @type {?} */ (of(null));\n}\n/**\n * \\@whatItDoes Provides the navigation and url manipulation capabilities.\n *\n * See {\\@link Routes} for more details and examples.\n *\n * \\@ngModule RouterModule\n *\n * \\@stable\n */\nexport class Router {\n /**\n * Creates the router service.\n * @param {?} rootComponentType\n * @param {?} urlSerializer\n * @param {?} rootContexts\n * @param {?} location\n * @param {?} injector\n * @param {?} loader\n * @param {?} compiler\n * @param {?} config\n */\n constructor(rootComponentType, urlSerializer, rootContexts, location, injector, loader, compiler, config) {\n this.rootComponentType = rootComponentType;\n this.urlSerializer = urlSerializer;\n this.rootContexts = rootContexts;\n this.location = location;\n this.config = config;\n this.navigations = new BehaviorSubject(/** @type {?} */ ((null)));\n this.navigationId = 0;\n this.events = new Subject();\n /**\n * Error handler that is invoked when a navigation errors.\n *\n * See {\\@link ErrorHandler} for more information.\n */\n this.errorHandler = defaultErrorHandler;\n /**\n * Indicates if at least one navigation happened.\n */\n this.navigated = false;\n /**\n * Used by RouterModule. This allows us to\n * pause the navigation either before preactivation or after it.\n * \\@internal\n */\n this.hooks = {\n beforePreactivation: defaultRouterHook,\n afterPreactivation: defaultRouterHook\n };\n /**\n * Extracts and merges URLs. Used for AngularJS to Angular migrations.\n */\n this.urlHandlingStrategy = new DefaultUrlHandlingStrategy();\n this.routeReuseStrategy = new DefaultRouteReuseStrategy();\n /**\n * Define what the router should do if it receives a navigation request to the current URL.\n * By default, the router will ignore this navigation. However, this prevents features such\n * as a \"refresh\" button. Use this option to configure the behavior when navigating to the\n * current URL. Default is 'ignore'.\n */\n this.onSameUrlNavigation = 'ignore';\n /**\n * Defines how the router merges params, data and resolved data from parent to child\n * routes. Available options are:\n *\n * - `'emptyOnly'`, the default, only inherits parent params for path-less or component-less\n * routes.\n * - `'always'`, enables unconditional inheritance of parent params.\n */\n this.paramsInheritanceStrategy = 'emptyOnly';\n const /** @type {?} */ onLoadStart = (r) => this.triggerEvent(new RouteConfigLoadStart(r));\n const /** @type {?} */ onLoadEnd = (r) => this.triggerEvent(new RouteConfigLoadEnd(r));\n this.ngModule = injector.get(NgModuleRef);\n this.resetConfig(config);\n this.currentUrlTree = createEmptyUrlTree();\n this.rawUrlTree = this.currentUrlTree;\n this.configLoader = new RouterConfigLoader(loader, compiler, onLoadStart, onLoadEnd);\n this.routerState = createEmptyState(this.currentUrlTree, this.rootComponentType);\n this.processNavigations();\n }\n /**\n * \\@internal\n * TODO: this should be removed once the constructor of the router made internal\n * @param {?} rootComponentType\n * @return {?}\n */\n resetRootComponentType(rootComponentType) {\n this.rootComponentType = rootComponentType;\n // TODO: vsavkin router 4.0 should make the root component set to null\n // this will simplify the lifecycle of the router.\n this.routerState.root.component = this.rootComponentType;\n }\n /**\n * Sets up the location change listener and performs the initial navigation.\n * @return {?}\n */\n initialNavigation() {\n this.setUpLocationChangeListener();\n if (this.navigationId === 0) {\n this.navigateByUrl(this.location.path(true), { replaceUrl: true });\n }\n }\n /**\n * Sets up the location change listener.\n * @return {?}\n */\n setUpLocationChangeListener() {\n // Zone.current.wrap is needed because of the issue with RxJS scheduler,\n // which does not work properly with zone.js in IE and Safari\n if (!this.locationSubscription) {\n this.locationSubscription = /** @type {?} */ (this.location.subscribe(Zone.current.wrap((change) => {\n const /** @type {?} */ rawUrlTree = this.urlSerializer.parse(change['url']);\n const /** @type {?} */ source = change['type'] === 'popstate' ? 'popstate' : 'hashchange';\n setTimeout(() => { this.scheduleNavigation(rawUrlTree, source, { replaceUrl: true }); }, 0);\n })));\n }\n }\n /**\n * The current url\n * @return {?}\n */\n get url() { return this.serializeUrl(this.currentUrlTree); }\n /**\n * \\@internal\n * @param {?} e\n * @return {?}\n */\n triggerEvent(e) { (/** @type {?} */ (this.events)).next(e); }\n /**\n * Resets the configuration used for navigation and generating links.\n *\n * ### Usage\n *\n * ```\n * router.resetConfig([\n * { path: 'team/:id', component: TeamCmp, children: [\n * { path: 'simple', component: SimpleCmp },\n * { path: 'user/:name', component: UserCmp }\n * ]}\n * ]);\n * ```\n * @param {?} config\n * @return {?}\n */\n resetConfig(config) {\n validateConfig(config);\n this.config = config;\n this.navigated = false;\n }\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n ngOnDestroy() { this.dispose(); }\n /**\n * Disposes of the router\n * @return {?}\n */\n dispose() {\n if (this.locationSubscription) {\n this.locationSubscription.unsubscribe();\n this.locationSubscription = /** @type {?} */ ((null));\n }\n }\n /**\n * Applies an array of commands to the current url tree and creates a new url tree.\n *\n * When given an activate route, applies the given commands starting from the route.\n * When not given a route, applies the given command starting from the root.\n *\n * ### Usage\n *\n * ```\n * // create /team/33/user/11\n * router.createUrlTree(['/team', 33, 'user', 11]);\n *\n * // create /team/33;expand=true/user/11\n * router.createUrlTree(['/team', 33, {expand: true}, 'user', 11]);\n *\n * // you can collapse static segments like this (this works only with the first passed-in value):\n * router.createUrlTree(['/team/33/user', userId]);\n *\n * // If the first segment can contain slashes, and you do not want the router to split it, you\n * // can do the following:\n *\n * router.createUrlTree([{segmentPath: '/one/two'}]);\n *\n * // create /team/33/(user/11//right:chat)\n * router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: 'chat'}}]);\n *\n * // remove the right secondary node\n * router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: null}}]);\n *\n * // assuming the current url is `/team/33/user/11` and the route points to `user/11`\n *\n * // navigate to /team/33/user/11/details\n * router.createUrlTree(['details'], {relativeTo: route});\n *\n * // navigate to /team/33/user/22\n * router.createUrlTree(['../22'], {relativeTo: route});\n *\n * // navigate to /team/44/user/22\n * router.createUrlTree(['../../team/44/user/22'], {relativeTo: route});\n * ```\n * @param {?} commands\n * @param {?=} navigationExtras\n * @return {?}\n */\n createUrlTree(commands, navigationExtras = {}) {\n const { relativeTo, queryParams, fragment, preserveQueryParams, queryParamsHandling, preserveFragment } = navigationExtras;\n if (isDevMode() && preserveQueryParams && /** @type {?} */ (console) && /** @type {?} */ (console.warn)) {\n console.warn('preserveQueryParams is deprecated, use queryParamsHandling instead.');\n }\n const /** @type {?} */ a = relativeTo || this.routerState.root;\n const /** @type {?} */ f = preserveFragment ? this.currentUrlTree.fragment : fragment;\n let /** @type {?} */ q = null;\n if (queryParamsHandling) {\n switch (queryParamsHandling) {\n case 'merge':\n q = Object.assign({}, this.currentUrlTree.queryParams, queryParams);\n break;\n case 'preserve':\n q = this.currentUrlTree.queryParams;\n break;\n default:\n q = queryParams || null;\n }\n }\n else {\n q = preserveQueryParams ? this.currentUrlTree.queryParams : queryParams || null;\n }\n if (q !== null) {\n q = this.removeEmptyProps(q);\n }\n return createUrlTree(a, this.currentUrlTree, commands, /** @type {?} */ ((q)), /** @type {?} */ ((f)));\n }\n /**\n * Navigate based on the provided url. This navigation is always absolute.\n *\n * Returns a promise that:\n * - resolves to 'true' when navigation succeeds,\n * - resolves to 'false' when navigation fails,\n * - is rejected when an error happens.\n *\n * ### Usage\n *\n * ```\n * router.navigateByUrl(\"/team/33/user/11\");\n *\n * // Navigate without updating the URL\n * router.navigateByUrl(\"/team/33/user/11\", { skipLocationChange: true });\n * ```\n *\n * In opposite to `navigate`, `navigateByUrl` takes a whole URL\n * and does not apply any delta to the current one.\n * @param {?} url\n * @param {?=} extras\n * @return {?}\n */\n navigateByUrl(url, extras = { skipLocationChange: false }) {\n const /** @type {?} */ urlTree = url instanceof UrlTree ? url : this.parseUrl(url);\n const /** @type {?} */ mergedTree = this.urlHandlingStrategy.merge(urlTree, this.rawUrlTree);\n return this.scheduleNavigation(mergedTree, 'imperative', extras);\n }\n /**\n * Navigate based on the provided array of commands and a starting point.\n * If no starting route is provided, the navigation is absolute.\n *\n * Returns a promise that:\n * - resolves to 'true' when navigation succeeds,\n * - resolves to 'false' when navigation fails,\n * - is rejected when an error happens.\n *\n * ### Usage\n *\n * ```\n * router.navigate(['team', 33, 'user', 11], {relativeTo: route});\n *\n * // Navigate without updating the URL\n * router.navigate(['team', 33, 'user', 11], {relativeTo: route, skipLocationChange: true});\n * ```\n *\n * In opposite to `navigateByUrl`, `navigate` always takes a delta that is applied to the current\n * URL.\n * @param {?} commands\n * @param {?=} extras\n * @return {?}\n */\n navigate(commands, extras = { skipLocationChange: false }) {\n validateCommands(commands);\n return this.navigateByUrl(this.createUrlTree(commands, extras), extras);\n }\n /**\n * Serializes a {\\@link UrlTree} into a string\n * @param {?} url\n * @return {?}\n */\n serializeUrl(url) { return this.urlSerializer.serialize(url); }\n /**\n * Parses a string into a {\\@link UrlTree}\n * @param {?} url\n * @return {?}\n */\n parseUrl(url) { return this.urlSerializer.parse(url); }\n /**\n * Returns whether the url is activated\n * @param {?} url\n * @param {?} exact\n * @return {?}\n */\n isActive(url, exact) {\n if (url instanceof UrlTree) {\n return containsTree(this.currentUrlTree, url, exact);\n }\n const /** @type {?} */ urlTree = this.urlSerializer.parse(url);\n return containsTree(this.currentUrlTree, urlTree, exact);\n }\n /**\n * @param {?} params\n * @return {?}\n */\n removeEmptyProps(params) {\n return Object.keys(params).reduce((result, key) => {\n const /** @type {?} */ value = params[key];\n if (value !== null && value !== undefined) {\n result[key] = value;\n }\n return result;\n }, {});\n }\n /**\n * @return {?}\n */\n processNavigations() {\n concatMap\n .call(this.navigations, (nav) => {\n if (nav) {\n this.executeScheduledNavigation(nav);\n // a failed navigation should not stop the router from processing\n // further navigations => the catch\n return nav.promise.catch(() => { });\n }\n else {\n return /** @type {?} */ (of(null));\n }\n })\n .subscribe(() => { });\n }\n /**\n * @param {?} rawUrl\n * @param {?} source\n * @param {?} extras\n * @return {?}\n */\n scheduleNavigation(rawUrl, source, extras) {\n const /** @type {?} */ lastNavigation = this.navigations.value;\n // If the user triggers a navigation imperatively (e.g., by using navigateByUrl),\n // and that navigation results in 'replaceState' that leads to the same URL,\n // we should skip those.\n if (lastNavigation && source !== 'imperative' && lastNavigation.source === 'imperative' &&\n lastNavigation.rawUrl.toString() === rawUrl.toString()) {\n return Promise.resolve(true); // return value is not used\n }\n // Because of a bug in IE and Edge, the location class fires two events (popstate and\n // hashchange) every single time. The second one should be ignored. Otherwise, the URL will\n // flicker. Handles the case when a popstate was emitted first.\n if (lastNavigation && source == 'hashchange' && lastNavigation.source === 'popstate' &&\n lastNavigation.rawUrl.toString() === rawUrl.toString()) {\n return Promise.resolve(true); // return value is not used\n }\n // Because of a bug in IE and Edge, the location class fires two events (popstate and\n // hashchange) every single time. The second one should be ignored. Otherwise, the URL will\n // flicker. Handles the case when a hashchange was emitted first.\n if (lastNavigation && source == 'popstate' && lastNavigation.source === 'hashchange' &&\n lastNavigation.rawUrl.toString() === rawUrl.toString()) {\n return Promise.resolve(true); // return value is not used\n }\n let /** @type {?} */ resolve = null;\n let /** @type {?} */ reject = null;\n const /** @type {?} */ promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n const /** @type {?} */ id = ++this.navigationId;\n this.navigations.next({ id, source, rawUrl, extras, resolve, reject, promise });\n // Make sure that the error is propagated even though `processNavigations` catch\n // handler does not rethrow\n return promise.catch((e) => Promise.reject(e));\n }\n /**\n * @param {?} __0\n * @return {?}\n */\n executeScheduledNavigation({ id, rawUrl, extras, resolve, reject }) {\n const /** @type {?} */ url = this.urlHandlingStrategy.extract(rawUrl);\n const /** @type {?} */ urlTransition = !this.navigated || url.toString() !== this.currentUrlTree.toString();\n if ((this.onSameUrlNavigation === 'reload' ? true : urlTransition) &&\n this.urlHandlingStrategy.shouldProcessUrl(rawUrl)) {\n (/** @type {?} */ (this.events)).next(new NavigationStart(id, this.serializeUrl(url)));\n Promise.resolve()\n .then((_) => this.runNavigate(url, rawUrl, !!extras.skipLocationChange, !!extras.replaceUrl, id, null))\n .then(resolve, reject);\n // we cannot process the current URL, but we could process the previous one =>\n // we need to do some cleanup\n }\n else if (urlTransition && this.rawUrlTree &&\n this.urlHandlingStrategy.shouldProcessUrl(this.rawUrlTree)) {\n (/** @type {?} */ (this.events)).next(new NavigationStart(id, this.serializeUrl(url)));\n Promise.resolve()\n .then((_) => this.runNavigate(url, rawUrl, false, false, id, createEmptyState(url, this.rootComponentType).snapshot))\n .then(resolve, reject);\n }\n else {\n this.rawUrlTree = rawUrl;\n resolve(null);\n }\n }\n /**\n * @param {?} url\n * @param {?} rawUrl\n * @param {?} skipLocationChange\n * @param {?} replaceUrl\n * @param {?} id\n * @param {?} precreatedState\n * @return {?}\n */\n runNavigate(url, rawUrl, skipLocationChange, replaceUrl, id, precreatedState) {\n if (id !== this.navigationId) {\n (/** @type {?} */ (this.events))\n .next(new NavigationCancel(id, this.serializeUrl(url), `Navigation ID ${id} is not equal to the current navigation id ${this.navigationId}`));\n return Promise.resolve(false);\n }\n return new Promise((resolvePromise, rejectPromise) => {\n // create an observable of the url and route state snapshot\n // this operation do not result in any side effects\n let /** @type {?} */ urlAndSnapshot$;\n if (!precreatedState) {\n const /** @type {?} */ moduleInjector = this.ngModule.injector;\n const /** @type {?} */ redirectsApplied$ = applyRedirects(moduleInjector, this.configLoader, this.urlSerializer, url, this.config);\n urlAndSnapshot$ = mergeMap.call(redirectsApplied$, (appliedUrl) => {\n return map.call(recognize(this.rootComponentType, this.config, appliedUrl, this.serializeUrl(appliedUrl), this.paramsInheritanceStrategy), (snapshot) => {\n (/** @type {?} */ (this.events))\n .next(new RoutesRecognized(id, this.serializeUrl(url), this.serializeUrl(appliedUrl), snapshot));\n return { appliedUrl, snapshot };\n });\n });\n }\n else {\n urlAndSnapshot$ = of({ appliedUrl: url, snapshot: precreatedState });\n }\n const /** @type {?} */ beforePreactivationDone$ = mergeMap.call(urlAndSnapshot$, (p) => {\n return map.call(this.hooks.beforePreactivation(p.snapshot), () => p);\n });\n // run preactivation: guards and data resolvers\n let /** @type {?} */ preActivation;\n const /** @type {?} */ preactivationSetup$ = map.call(beforePreactivationDone$, ({ appliedUrl, snapshot }) => {\n const /** @type {?} */ moduleInjector = this.ngModule.injector;\n preActivation = new PreActivation(snapshot, this.routerState.snapshot, moduleInjector, (evt) => this.triggerEvent(evt));\n preActivation.initialize(this.rootContexts);\n return { appliedUrl, snapshot };\n });\n const /** @type {?} */ preactivationCheckGuards$ = mergeMap.call(preactivationSetup$, ({ appliedUrl, snapshot }) => {\n if (this.navigationId !== id)\n return of(false);\n this.triggerEvent(new GuardsCheckStart(id, this.serializeUrl(url), appliedUrl, snapshot));\n return map.call(preActivation.checkGuards(), (shouldActivate) => {\n this.triggerEvent(new GuardsCheckEnd(id, this.serializeUrl(url), appliedUrl, snapshot, shouldActivate));\n return { appliedUrl: appliedUrl, snapshot: snapshot, shouldActivate: shouldActivate };\n });\n });\n const /** @type {?} */ preactivationResolveData$ = mergeMap.call(preactivationCheckGuards$, (p) => {\n if (this.navigationId !== id)\n return of(false);\n if (p.shouldActivate && preActivation.isActivating()) {\n this.triggerEvent(new ResolveStart(id, this.serializeUrl(url), p.appliedUrl, p.snapshot));\n return map.call(preActivation.resolveData(this.paramsInheritanceStrategy), () => {\n this.triggerEvent(new ResolveEnd(id, this.serializeUrl(url), p.appliedUrl, p.snapshot));\n return p;\n });\n }\n else {\n return of(p);\n }\n });\n const /** @type {?} */ preactivationDone$ = mergeMap.call(preactivationResolveData$, (p) => {\n return map.call(this.hooks.afterPreactivation(p.snapshot), () => p);\n });\n // create router state\n // this operation has side effects => route state is being affected\n const /** @type {?} */ routerState$ = map.call(preactivationDone$, ({ appliedUrl, snapshot, shouldActivate }) => {\n if (shouldActivate) {\n const /** @type {?} */ state = createRouterState(this.routeReuseStrategy, snapshot, this.routerState);\n return { appliedUrl, state, shouldActivate };\n }\n else {\n return { appliedUrl, state: null, shouldActivate };\n }\n });\n // applied the new router state\n // this operation has side effects\n let /** @type {?} */ navigationIsSuccessful;\n const /** @type {?} */ storedState = this.routerState;\n const /** @type {?} */ storedUrl = this.currentUrlTree;\n routerState$\n .forEach(({ appliedUrl, state, shouldActivate }) => {\n if (!shouldActivate || id !== this.navigationId) {\n navigationIsSuccessful = false;\n return;\n }\n this.currentUrlTree = appliedUrl;\n this.rawUrlTree = this.urlHandlingStrategy.merge(this.currentUrlTree, rawUrl);\n (/** @type {?} */ (this)).routerState = state;\n if (!skipLocationChange) {\n const /** @type {?} */ path = this.urlSerializer.serialize(this.rawUrlTree);\n if (this.location.isCurrentPathEqualTo(path) || replaceUrl) {\n this.location.replaceState(path);\n }\n else {\n this.location.go(path);\n }\n }\n new ActivateRoutes(this.routeReuseStrategy, state, storedState, (evt) => this.triggerEvent(evt))\n .activate(this.rootContexts);\n navigationIsSuccessful = true;\n })\n .then(() => {\n if (navigationIsSuccessful) {\n this.navigated = true;\n (/** @type {?} */ (this.events))\n .next(new NavigationEnd(id, this.serializeUrl(url), this.serializeUrl(this.currentUrlTree)));\n resolvePromise(true);\n }\n else {\n this.resetUrlToCurrentUrlTree();\n (/** @type {?} */ (this.events))\n .next(new NavigationCancel(id, this.serializeUrl(url), ''));\n resolvePromise(false);\n }\n }, (e) => {\n if (isNavigationCancelingError(e)) {\n this.navigated = true;\n this.resetStateAndUrl(storedState, storedUrl, rawUrl);\n (/** @type {?} */ (this.events))\n .next(new NavigationCancel(id, this.serializeUrl(url), e.message));\n resolvePromise(false);\n }\n else {\n this.resetStateAndUrl(storedState, storedUrl, rawUrl);\n (/** @type {?} */ (this.events))\n .next(new NavigationError(id, this.serializeUrl(url), e));\n try {\n resolvePromise(this.errorHandler(e));\n }\n catch (/** @type {?} */ ee) {\n rejectPromise(ee);\n }\n }\n });\n });\n }\n /**\n * @param {?} storedState\n * @param {?} storedUrl\n * @param {?} rawUrl\n * @return {?}\n */\n resetStateAndUrl(storedState, storedUrl, rawUrl) {\n (/** @type {?} */ (this)).routerState = storedState;\n this.currentUrlTree = storedUrl;\n this.rawUrlTree = this.urlHandlingStrategy.merge(this.currentUrlTree, rawUrl);\n this.resetUrlToCurrentUrlTree();\n }\n /**\n * @return {?}\n */\n resetUrlToCurrentUrlTree() {\n this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree));\n }\n}\nfunction Router_tsickle_Closure_declarations() {\n /** @type {?} */\n Router.prototype.currentUrlTree;\n /** @type {?} */\n Router.prototype.rawUrlTree;\n /** @type {?} */\n Router.prototype.navigations;\n /** @type {?} */\n Router.prototype.locationSubscription;\n /** @type {?} */\n Router.prototype.navigationId;\n /** @type {?} */\n Router.prototype.configLoader;\n /** @type {?} */\n Router.prototype.ngModule;\n /** @type {?} */\n Router.prototype.events;\n /** @type {?} */\n Router.prototype.routerState;\n /**\n * Error handler that is invoked when a navigation errors.\n *\n * See {\\@link ErrorHandler} for more information.\n * @type {?}\n */\n Router.prototype.errorHandler;\n /**\n * Indicates if at least one navigation happened.\n * @type {?}\n */\n Router.prototype.navigated;\n /**\n * Used by RouterModule. This allows us to\n * pause the navigation either before preactivation or after it.\n * \\@internal\n * @type {?}\n */\n Router.prototype.hooks;\n /**\n * Extracts and merges URLs. Used for AngularJS to Angular migrations.\n * @type {?}\n */\n Router.prototype.urlHandlingStrategy;\n /** @type {?} */\n Router.prototype.routeReuseStrategy;\n /**\n * Define what the router should do if it receives a navigation request to the current URL.\n * By default, the router will ignore this navigation. However, this prevents features such\n * as a \"refresh\" button. Use this option to configure the behavior when navigating to the\n * current URL. Default is 'ignore'.\n * @type {?}\n */\n Router.prototype.onSameUrlNavigation;\n /**\n * Defines how the router merges params, data and resolved data from parent to child\n * routes. Available options are:\n *\n * - `'emptyOnly'`, the default, only inherits parent params for path-less or component-less\n * routes.\n * - `'always'`, enables unconditional inheritance of parent params.\n * @type {?}\n */\n Router.prototype.paramsInheritanceStrategy;\n /** @type {?} */\n Router.prototype.rootComponentType;\n /** @type {?} */\n Router.prototype.urlSerializer;\n /** @type {?} */\n Router.prototype.rootContexts;\n /** @type {?} */\n Router.prototype.location;\n /** @type {?} */\n Router.prototype.config;\n}\nclass ActivateRoutes {\n /**\n * @param {?} routeReuseStrategy\n * @param {?} futureState\n * @param {?} currState\n * @param {?} forwardEvent\n */\n constructor(routeReuseStrategy, futureState, currState, forwardEvent) {\n this.routeReuseStrategy = routeReuseStrategy;\n this.futureState = futureState;\n this.currState = currState;\n this.forwardEvent = forwardEvent;\n }\n /**\n * @param {?} parentContexts\n * @return {?}\n */\n activate(parentContexts) {\n const /** @type {?} */ futureRoot = this.futureState._root;\n const /** @type {?} */ currRoot = this.currState ? this.currState._root : null;\n this.deactivateChildRoutes(futureRoot, currRoot, parentContexts);\n advanceActivatedRoute(this.futureState.root);\n this.activateChildRoutes(futureRoot, currRoot, parentContexts);\n }\n /**\n * @param {?} futureNode\n * @param {?} currNode\n * @param {?} contexts\n * @return {?}\n */\n deactivateChildRoutes(futureNode, currNode, contexts) {\n const /** @type {?} */ children = nodeChildrenAsMap(currNode);\n // Recurse on the routes active in the future state to de-activate deeper children\n futureNode.children.forEach(futureChild => {\n const /** @type {?} */ childOutletName = futureChild.value.outlet;\n this.deactivateRoutes(futureChild, children[childOutletName], contexts);\n delete children[childOutletName];\n });\n // De-activate the routes that will not be re-used\n forEach(children, (v, childName) => {\n this.deactivateRouteAndItsChildren(v, contexts);\n });\n }\n /**\n * @param {?} futureNode\n * @param {?} currNode\n * @param {?} parentContext\n * @return {?}\n */\n deactivateRoutes(futureNode, currNode, parentContext) {\n const /** @type {?} */ future = futureNode.value;\n const /** @type {?} */ curr = currNode ? currNode.value : null;\n if (future === curr) {\n // Reusing the node, check to see if the children need to be de-activated\n if (future.component) {\n // If we have a normal route, we need to go through an outlet.\n const /** @type {?} */ context = parentContext.getContext(future.outlet);\n if (context) {\n this.deactivateChildRoutes(futureNode, currNode, context.children);\n }\n }\n else {\n // if we have a componentless route, we recurse but keep the same outlet map.\n this.deactivateChildRoutes(futureNode, currNode, parentContext);\n }\n }\n else {\n if (curr) {\n // Deactivate the current route which will not be re-used\n this.deactivateRouteAndItsChildren(currNode, parentContext);\n }\n }\n }\n /**\n * @param {?} route\n * @param {?} parentContexts\n * @return {?}\n */\n deactivateRouteAndItsChildren(route, parentContexts) {\n if (this.routeReuseStrategy.shouldDetach(route.value.snapshot)) {\n this.detachAndStoreRouteSubtree(route, parentContexts);\n }\n else {\n this.deactivateRouteAndOutlet(route, parentContexts);\n }\n }\n /**\n * @param {?} route\n * @param {?} parentContexts\n * @return {?}\n */\n detachAndStoreRouteSubtree(route, parentContexts) {\n const /** @type {?} */ context = parentContexts.getContext(route.value.outlet);\n if (context && context.outlet) {\n const /** @type {?} */ componentRef = context.outlet.detach();\n const /** @type {?} */ contexts = context.children.onOutletDeactivated();\n this.routeReuseStrategy.store(route.value.snapshot, { componentRef, route, contexts });\n }\n }\n /**\n * @param {?} route\n * @param {?} parentContexts\n * @return {?}\n */\n deactivateRouteAndOutlet(route, parentContexts) {\n const /** @type {?} */ context = parentContexts.getContext(route.value.outlet);\n if (context) {\n const /** @type {?} */ children = nodeChildrenAsMap(route);\n const /** @type {?} */ contexts = route.value.component ? context.children : parentContexts;\n forEach(children, (v, k) => this.deactivateRouteAndItsChildren(v, contexts));\n if (context.outlet) {\n // Destroy the component\n context.outlet.deactivate();\n // Destroy the contexts for all the outlets that were in the component\n context.children.onOutletDeactivated();\n }\n }\n }\n /**\n * @param {?} futureNode\n * @param {?} currNode\n * @param {?} contexts\n * @return {?}\n */\n activateChildRoutes(futureNode, currNode, contexts) {\n const /** @type {?} */ children = nodeChildrenAsMap(currNode);\n futureNode.children.forEach(c => {\n this.activateRoutes(c, children[c.value.outlet], contexts);\n this.forwardEvent(new ActivationEnd(c.value.snapshot));\n });\n if (futureNode.children.length) {\n this.forwardEvent(new ChildActivationEnd(futureNode.value.snapshot));\n }\n }\n /**\n * @param {?} futureNode\n * @param {?} currNode\n * @param {?} parentContexts\n * @return {?}\n */\n activateRoutes(futureNode, currNode, parentContexts) {\n const /** @type {?} */ future = futureNode.value;\n const /** @type {?} */ curr = currNode ? currNode.value : null;\n advanceActivatedRoute(future);\n // reusing the node\n if (future === curr) {\n if (future.component) {\n // If we have a normal route, we need to go through an outlet.\n const /** @type {?} */ context = parentContexts.getOrCreateContext(future.outlet);\n this.activateChildRoutes(futureNode, currNode, context.children);\n }\n else {\n // if we have a componentless route, we recurse but keep the same outlet map.\n this.activateChildRoutes(futureNode, currNode, parentContexts);\n }\n }\n else {\n if (future.component) {\n // if we have a normal route, we need to place the component into the outlet and recurse.\n const /** @type {?} */ context = parentContexts.getOrCreateContext(future.outlet);\n if (this.routeReuseStrategy.shouldAttach(future.snapshot)) {\n const /** @type {?} */ stored = (/** @type {?} */ (this.routeReuseStrategy.retrieve(future.snapshot)));\n this.routeReuseStrategy.store(future.snapshot, null);\n context.children.onOutletReAttached(stored.contexts);\n context.attachRef = stored.componentRef;\n context.route = stored.route.value;\n if (context.outlet) {\n // Attach right away when the outlet has already been instantiated\n // Otherwise attach from `RouterOutlet.ngOnInit` when it is instantiated\n context.outlet.attach(stored.componentRef, stored.route.value);\n }\n advanceActivatedRouteNodeAndItsChildren(stored.route);\n }\n else {\n const /** @type {?} */ config = parentLoadedConfig(future.snapshot);\n const /** @type {?} */ cmpFactoryResolver = config ? config.module.componentFactoryResolver : null;\n context.route = future;\n context.resolver = cmpFactoryResolver;\n if (context.outlet) {\n // Activate the outlet when it has already been instantiated\n // Otherwise it will get activated from its `ngOnInit` when instantiated\n context.outlet.activateWith(future, cmpFactoryResolver);\n }\n this.activateChildRoutes(futureNode, null, context.children);\n }\n }\n else {\n // if we have a componentless route, we recurse but keep the same outlet map.\n this.activateChildRoutes(futureNode, null, parentContexts);\n }\n }\n }\n}\nfunction ActivateRoutes_tsickle_Closure_declarations() {\n /** @type {?} */\n ActivateRoutes.prototype.routeReuseStrategy;\n /** @type {?} */\n ActivateRoutes.prototype.futureState;\n /** @type {?} */\n ActivateRoutes.prototype.currState;\n /** @type {?} */\n ActivateRoutes.prototype.forwardEvent;\n}\n/**\n * @param {?} node\n * @return {?}\n */\nfunction advanceActivatedRouteNodeAndItsChildren(node) {\n advanceActivatedRoute(node.value);\n node.children.forEach(advanceActivatedRouteNodeAndItsChildren);\n}\n/**\n * @param {?} snapshot\n * @return {?}\n */\nfunction parentLoadedConfig(snapshot) {\n for (let /** @type {?} */ s = snapshot.parent; s; s = s.parent) {\n const /** @type {?} */ route = s.routeConfig;\n if (route && route._loadedConfig)\n return route._loadedConfig;\n if (route && route.component)\n return null;\n }\n return null;\n}\n/**\n * @param {?} commands\n * @return {?}\n */\nfunction validateCommands(commands) {\n for (let /** @type {?} */ i = 0; i < commands.length; i++) {\n const /** @type {?} */ cmd = commands[i];\n if (cmd == null) {\n throw new Error(`The requested path contains ${cmd} segment at index ${i}`);\n }\n }\n}\n//# sourceMappingURL=router.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { LocationStrategy } from '@angular/common';\nimport { Attribute, Directive, ElementRef, HostBinding, HostListener, Input, Renderer2, isDevMode } from '@angular/core';\nimport { NavigationEnd } from '../events';\nimport { Router } from '../router';\nimport { ActivatedRoute } from '../router_state';\n/**\n * \\@whatItDoes Lets you link to specific parts of your app.\n *\n * \\@howToUse\n *\n * Consider the following route configuration:\n * `[{ path: 'user/:name', component: UserCmp }]`\n *\n * When linking to this `user/:name` route, you can write:\n * `<a routerLink='/user/bob'>link to user component</a>`\n *\n * \\@description\n *\n * The RouterLink directives let you link to specific parts of your app.\n *\n * When the link is static, you can use the directive as follows:\n * `<a routerLink=\"/user/bob\">link to user component</a>`\n *\n * If you use dynamic values to generate the link, you can pass an array of path\n * segments, followed by the params for each segment.\n *\n * For instance `['/team', teamId, 'user', userName, {details: true}]`\n * means that we want to generate a link to `/team/11/user/bob;details=true`.\n *\n * Multiple static segments can be merged into one\n * (e.g., `['/team/11/user', userName, {details: true}]`).\n *\n * The first segment name can be prepended with `/`, `./`, or `../`:\n * * If the first segment begins with `/`, the router will look up the route from the root of the\n * app.\n * * If the first segment begins with `./`, or doesn't begin with a slash, the router will\n * instead look in the children of the current activated route.\n * * And if the first segment begins with `../`, the router will go up one level.\n *\n * You can set query params and fragment as follows:\n *\n * ```\n * <a [routerLink]=\"['/user/bob']\" [queryParams]=\"{debug: true}\" fragment=\"education\">\n * link to user component\n * </a>\n * ```\n * RouterLink will use these to generate this link: `/user/bob#education?debug=true`.\n *\n * (Deprecated in v4.0.0 use `queryParamsHandling` instead) You can also tell the\n * directive to preserve the current query params and fragment:\n *\n * ```\n * <a [routerLink]=\"['/user/bob']\" preserveQueryParams preserveFragment>\n * link to user component\n * </a>\n * ```\n *\n * You can tell the directive to how to handle queryParams, available options are:\n * - `'merge'`: merge the queryParams into the current queryParams\n * - `'preserve'`: preserve the current queryParams\n * - default/`''`: use the queryParams only\n *\n * Same options for {\\@link NavigationExtras#queryParamsHandling\n * NavigationExtras#queryParamsHandling}.\n *\n * ```\n * <a [routerLink]=\"['/user/bob']\" [queryParams]=\"{debug: true}\" queryParamsHandling=\"merge\">\n * link to user component\n * </a>\n * ```\n *\n * The router link directive always treats the provided input as a delta to the current url.\n *\n * For instance, if the current url is `/user/(box//aux:team)`.\n *\n * Then the following link `<a [routerLink]=\"['/user/jim']\">Jim</a>` will generate the link\n * `/user/(jim//aux:team)`.\n *\n * See {\\@link Router#createUrlTree createUrlTree} for more information.\n *\n * \\@ngModule RouterModule\n *\n * \\@stable\n */\nexport class RouterLink {\n /**\n * @param {?} router\n * @param {?} route\n * @param {?} tabIndex\n * @param {?} renderer\n * @param {?} el\n */\n constructor(router, route, tabIndex, renderer, el) {\n this.router = router;\n this.route = route;\n this.commands = [];\n if (tabIndex == null) {\n renderer.setAttribute(el.nativeElement, 'tabindex', '0');\n }\n }\n /**\n * @param {?} commands\n * @return {?}\n */\n set routerLink(commands) {\n if (commands != null) {\n this.commands = Array.isArray(commands) ? commands : [commands];\n }\n else {\n this.commands = [];\n }\n }\n /**\n * @deprecated 4.0.0 use `queryParamsHandling` instead.\n * @param {?} value\n * @return {?}\n */\n set preserveQueryParams(value) {\n if (isDevMode() && /** @type {?} */ (console) && /** @type {?} */ (console.warn)) {\n console.warn('preserveQueryParams is deprecated!, use queryParamsHandling instead.');\n }\n this.preserve = value;\n }\n /**\n * @return {?}\n */\n onClick() {\n const /** @type {?} */ extras = {\n skipLocationChange: attrBoolValue(this.skipLocationChange),\n replaceUrl: attrBoolValue(this.replaceUrl),\n };\n this.router.navigateByUrl(this.urlTree, extras);\n return true;\n }\n /**\n * @return {?}\n */\n get urlTree() {\n return this.router.createUrlTree(this.commands, {\n relativeTo: this.route,\n queryParams: this.queryParams,\n fragment: this.fragment,\n preserveQueryParams: attrBoolValue(this.preserve),\n queryParamsHandling: this.queryParamsHandling,\n preserveFragment: attrBoolValue(this.preserveFragment),\n });\n }\n}\nRouterLink.decorators = [\n { type: Directive, args: [{ selector: ':not(a)[routerLink]' },] },\n];\n/** @nocollapse */\nRouterLink.ctorParameters = () => [\n { type: Router, },\n { type: ActivatedRoute, },\n { type: undefined, decorators: [{ type: Attribute, args: ['tabindex',] },] },\n { type: Renderer2, },\n { type: ElementRef, },\n];\nRouterLink.propDecorators = {\n \"queryParams\": [{ type: Input },],\n \"fragment\": [{ type: Input },],\n \"queryParamsHandling\": [{ type: Input },],\n \"preserveFragment\": [{ type: Input },],\n \"skipLocationChange\": [{ type: Input },],\n \"replaceUrl\": [{ type: Input },],\n \"routerLink\": [{ type: Input },],\n \"preserveQueryParams\": [{ type: Input },],\n \"onClick\": [{ type: HostListener, args: ['click',] },],\n};\nfunction RouterLink_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n RouterLink.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n RouterLink.ctorParameters;\n /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */\n RouterLink.propDecorators;\n /** @type {?} */\n RouterLink.prototype.queryParams;\n /** @type {?} */\n RouterLink.prototype.fragment;\n /** @type {?} */\n RouterLink.prototype.queryParamsHandling;\n /** @type {?} */\n RouterLink.prototype.preserveFragment;\n /** @type {?} */\n RouterLink.prototype.skipLocationChange;\n /** @type {?} */\n RouterLink.prototype.replaceUrl;\n /** @type {?} */\n RouterLink.prototype.commands;\n /** @type {?} */\n RouterLink.prototype.preserve;\n /** @type {?} */\n RouterLink.prototype.router;\n /** @type {?} */\n RouterLink.prototype.route;\n}\n/**\n * \\@whatItDoes Lets you link to specific parts of your app.\n *\n * See {\\@link RouterLink} for more information.\n *\n * \\@ngModule RouterModule\n *\n * \\@stable\n */\nexport class RouterLinkWithHref {\n /**\n * @param {?} router\n * @param {?} route\n * @param {?} locationStrategy\n */\n constructor(router, route, locationStrategy) {\n this.router = router;\n this.route = route;\n this.locationStrategy = locationStrategy;\n this.commands = [];\n this.subscription = router.events.subscribe(s => {\n if (s instanceof NavigationEnd) {\n this.updateTargetUrlAndHref();\n }\n });\n }\n /**\n * @param {?} commands\n * @return {?}\n */\n set routerLink(commands) {\n if (commands != null) {\n this.commands = Array.isArray(commands) ? commands : [commands];\n }\n else {\n this.commands = [];\n }\n }\n /**\n * @param {?} value\n * @return {?}\n */\n set preserveQueryParams(value) {\n if (isDevMode() && /** @type {?} */ (console) && /** @type {?} */ (console.warn)) {\n console.warn('preserveQueryParams is deprecated, use queryParamsHandling instead.');\n }\n this.preserve = value;\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) { this.updateTargetUrlAndHref(); }\n /**\n * @return {?}\n */\n ngOnDestroy() { this.subscription.unsubscribe(); }\n /**\n * @param {?} button\n * @param {?} ctrlKey\n * @param {?} metaKey\n * @param {?} shiftKey\n * @return {?}\n */\n onClick(button, ctrlKey, metaKey, shiftKey) {\n if (button !== 0 || ctrlKey || metaKey || shiftKey) {\n return true;\n }\n if (typeof this.target === 'string' && this.target != '_self') {\n return true;\n }\n const /** @type {?} */ extras = {\n skipLocationChange: attrBoolValue(this.skipLocationChange),\n replaceUrl: attrBoolValue(this.replaceUrl),\n };\n this.router.navigateByUrl(this.urlTree, extras);\n return false;\n }\n /**\n * @return {?}\n */\n updateTargetUrlAndHref() {\n this.href = this.locationStrategy.prepareExternalUrl(this.router.serializeUrl(this.urlTree));\n }\n /**\n * @return {?}\n */\n get urlTree() {\n return this.router.createUrlTree(this.commands, {\n relativeTo: this.route,\n queryParams: this.queryParams,\n fragment: this.fragment,\n preserveQueryParams: attrBoolValue(this.preserve),\n queryParamsHandling: this.queryParamsHandling,\n preserveFragment: attrBoolValue(this.preserveFragment),\n });\n }\n}\nRouterLinkWithHref.decorators = [\n { type: Directive, args: [{ selector: 'a[routerLink]' },] },\n];\n/** @nocollapse */\nRouterLinkWithHref.ctorParameters = () => [\n { type: Router, },\n { type: ActivatedRoute, },\n { type: LocationStrategy, },\n];\nRouterLinkWithHref.propDecorators = {\n \"target\": [{ type: HostBinding, args: ['attr.target',] }, { type: Input },],\n \"queryParams\": [{ type: Input },],\n \"fragment\": [{ type: Input },],\n \"queryParamsHandling\": [{ type: Input },],\n \"preserveFragment\": [{ type: Input },],\n \"skipLocationChange\": [{ type: Input },],\n \"replaceUrl\": [{ type: Input },],\n \"href\": [{ type: HostBinding },],\n \"routerLink\": [{ type: Input },],\n \"preserveQueryParams\": [{ type: Input },],\n \"onClick\": [{ type: HostListener, args: ['click', ['$event.button', '$event.ctrlKey', '$event.metaKey', '$event.shiftKey'],] },],\n};\nfunction RouterLinkWithHref_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n RouterLinkWithHref.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n RouterLinkWithHref.ctorParameters;\n /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */\n RouterLinkWithHref.propDecorators;\n /** @type {?} */\n RouterLinkWithHref.prototype.target;\n /** @type {?} */\n RouterLinkWithHref.prototype.queryParams;\n /** @type {?} */\n RouterLinkWithHref.prototype.fragment;\n /** @type {?} */\n RouterLinkWithHref.prototype.queryParamsHandling;\n /** @type {?} */\n RouterLinkWithHref.prototype.preserveFragment;\n /** @type {?} */\n RouterLinkWithHref.prototype.skipLocationChange;\n /** @type {?} */\n RouterLinkWithHref.prototype.replaceUrl;\n /** @type {?} */\n RouterLinkWithHref.prototype.commands;\n /** @type {?} */\n RouterLinkWithHref.prototype.subscription;\n /** @type {?} */\n RouterLinkWithHref.prototype.preserve;\n /** @type {?} */\n RouterLinkWithHref.prototype.href;\n /** @type {?} */\n RouterLinkWithHref.prototype.router;\n /** @type {?} */\n RouterLinkWithHref.prototype.route;\n /** @type {?} */\n RouterLinkWithHref.prototype.locationStrategy;\n}\n/**\n * @param {?} s\n * @return {?}\n */\nfunction attrBoolValue(s) {\n return s === '' || !!s;\n}\n//# sourceMappingURL=router_link.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ChangeDetectorRef, ContentChildren, Directive, ElementRef, Input, QueryList, Renderer2 } from '@angular/core';\nimport { NavigationEnd } from '../events';\nimport { Router } from '../router';\nimport { RouterLink, RouterLinkWithHref } from './router_link';\n/**\n * \\@whatItDoes Lets you add a CSS class to an element when the link's route becomes active.\n *\n * \\@howToUse\n *\n * ```\n * <a routerLink=\"/user/bob\" routerLinkActive=\"active-link\">Bob</a>\n * ```\n *\n * \\@description\n *\n * The RouterLinkActive directive lets you add a CSS class to an element when the link's route\n * becomes active.\n *\n * Consider the following example:\n *\n * ```\n * <a routerLink=\"/user/bob\" routerLinkActive=\"active-link\">Bob</a>\n * ```\n *\n * When the url is either '/user' or '/user/bob', the active-link class will\n * be added to the `a` tag. If the url changes, the class will be removed.\n *\n * You can set more than one class, as follows:\n *\n * ```\n * <a routerLink=\"/user/bob\" routerLinkActive=\"class1 class2\">Bob</a>\n * <a routerLink=\"/user/bob\" [routerLinkActive]=\"['class1', 'class2']\">Bob</a>\n * ```\n *\n * You can configure RouterLinkActive by passing `exact: true`. This will add the classes\n * only when the url matches the link exactly.\n *\n * ```\n * <a routerLink=\"/user/bob\" routerLinkActive=\"active-link\" [routerLinkActiveOptions]=\"{exact:\n * true}\">Bob</a>\n * ```\n *\n * You can assign the RouterLinkActive instance to a template variable and directly check\n * the `isActive` status.\n * ```\n * <a routerLink=\"/user/bob\" routerLinkActive #rla=\"routerLinkActive\">\n * Bob {{ rla.isActive ? '(already open)' : ''}}\n * </a>\n * ```\n *\n * Finally, you can apply the RouterLinkActive directive to an ancestor of a RouterLink.\n *\n * ```\n * <div routerLinkActive=\"active-link\" [routerLinkActiveOptions]=\"{exact: true}\">\n * <a routerLink=\"/user/jim\">Jim</a>\n * <a routerLink=\"/user/bob\">Bob</a>\n * </div>\n * ```\n *\n * This will set the active-link class on the div tag if the url is either '/user/jim' or\n * '/user/bob'.\n *\n * \\@ngModule RouterModule\n *\n * \\@stable\n */\nexport class RouterLinkActive {\n /**\n * @param {?} router\n * @param {?} element\n * @param {?} renderer\n * @param {?} cdr\n */\n constructor(router, element, renderer, cdr) {\n this.router = router;\n this.element = element;\n this.renderer = renderer;\n this.cdr = cdr;\n this.classes = [];\n this.isActive = false;\n this.routerLinkActiveOptions = { exact: false };\n this.subscription = router.events.subscribe(s => {\n if (s instanceof NavigationEnd) {\n this.update();\n }\n });\n }\n /**\n * @return {?}\n */\n ngAfterContentInit() {\n this.links.changes.subscribe(_ => this.update());\n this.linksWithHrefs.changes.subscribe(_ => this.update());\n this.update();\n }\n /**\n * @param {?} data\n * @return {?}\n */\n set routerLinkActive(data) {\n const /** @type {?} */ classes = Array.isArray(data) ? data : data.split(' ');\n this.classes = classes.filter(c => !!c);\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) { this.update(); }\n /**\n * @return {?}\n */\n ngOnDestroy() { this.subscription.unsubscribe(); }\n /**\n * @return {?}\n */\n update() {\n if (!this.links || !this.linksWithHrefs || !this.router.navigated)\n return;\n Promise.resolve().then(() => {\n const /** @type {?} */ hasActiveLinks = this.hasActiveLinks();\n if (this.isActive !== hasActiveLinks) {\n (/** @type {?} */ (this)).isActive = hasActiveLinks;\n this.classes.forEach((c) => {\n if (hasActiveLinks) {\n this.renderer.addClass(this.element.nativeElement, c);\n }\n else {\n this.renderer.removeClass(this.element.nativeElement, c);\n }\n });\n }\n });\n }\n /**\n * @param {?} router\n * @return {?}\n */\n isLinkActive(router) {\n return (link) => router.isActive(link.urlTree, this.routerLinkActiveOptions.exact);\n }\n /**\n * @return {?}\n */\n hasActiveLinks() {\n return this.links.some(this.isLinkActive(this.router)) ||\n this.linksWithHrefs.some(this.isLinkActive(this.router));\n }\n}\nRouterLinkActive.decorators = [\n { type: Directive, args: [{\n selector: '[routerLinkActive]',\n exportAs: 'routerLinkActive',\n },] },\n];\n/** @nocollapse */\nRouterLinkActive.ctorParameters = () => [\n { type: Router, },\n { type: ElementRef, },\n { type: Renderer2, },\n { type: ChangeDetectorRef, },\n];\nRouterLinkActive.propDecorators = {\n \"links\": [{ type: ContentChildren, args: [RouterLink, { descendants: true },] },],\n \"linksWithHrefs\": [{ type: ContentChildren, args: [RouterLinkWithHref, { descendants: true },] },],\n \"routerLinkActiveOptions\": [{ type: Input },],\n \"routerLinkActive\": [{ type: Input },],\n};\nfunction RouterLinkActive_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n RouterLinkActive.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n RouterLinkActive.ctorParameters;\n /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */\n RouterLinkActive.propDecorators;\n /** @type {?} */\n RouterLinkActive.prototype.links;\n /** @type {?} */\n RouterLinkActive.prototype.linksWithHrefs;\n /** @type {?} */\n RouterLinkActive.prototype.classes;\n /** @type {?} */\n RouterLinkActive.prototype.subscription;\n /** @type {?} */\n RouterLinkActive.prototype.isActive;\n /** @type {?} */\n RouterLinkActive.prototype.routerLinkActiveOptions;\n /** @type {?} */\n RouterLinkActive.prototype.router;\n /** @type {?} */\n RouterLinkActive.prototype.element;\n /** @type {?} */\n RouterLinkActive.prototype.renderer;\n /** @type {?} */\n RouterLinkActive.prototype.cdr;\n}\n//# sourceMappingURL=router_link_active.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Store contextual information about a {\\@link RouterOutlet}\n *\n * \\@stable\n */\nexport class OutletContext {\n constructor() {\n this.outlet = null;\n this.route = null;\n this.resolver = null;\n this.children = new ChildrenOutletContexts();\n this.attachRef = null;\n }\n}\nfunction OutletContext_tsickle_Closure_declarations() {\n /** @type {?} */\n OutletContext.prototype.outlet;\n /** @type {?} */\n OutletContext.prototype.route;\n /** @type {?} */\n OutletContext.prototype.resolver;\n /** @type {?} */\n OutletContext.prototype.children;\n /** @type {?} */\n OutletContext.prototype.attachRef;\n}\n/**\n * Store contextual information about the children (= nested) {\\@link RouterOutlet}\n *\n * \\@stable\n */\nexport class ChildrenOutletContexts {\n constructor() {\n this.contexts = new Map();\n }\n /**\n * Called when a `RouterOutlet` directive is instantiated\n * @param {?} childName\n * @param {?} outlet\n * @return {?}\n */\n onChildOutletCreated(childName, outlet) {\n const /** @type {?} */ context = this.getOrCreateContext(childName);\n context.outlet = outlet;\n this.contexts.set(childName, context);\n }\n /**\n * Called when a `RouterOutlet` directive is destroyed.\n * We need to keep the context as the outlet could be destroyed inside a NgIf and might be\n * re-created later.\n * @param {?} childName\n * @return {?}\n */\n onChildOutletDestroyed(childName) {\n const /** @type {?} */ context = this.getContext(childName);\n if (context) {\n context.outlet = null;\n }\n }\n /**\n * Called when the corresponding route is deactivated during navigation.\n * Because the component get destroyed, all children outlet are destroyed.\n * @return {?}\n */\n onOutletDeactivated() {\n const /** @type {?} */ contexts = this.contexts;\n this.contexts = new Map();\n return contexts;\n }\n /**\n * @param {?} contexts\n * @return {?}\n */\n onOutletReAttached(contexts) { this.contexts = contexts; }\n /**\n * @param {?} childName\n * @return {?}\n */\n getOrCreateContext(childName) {\n let /** @type {?} */ context = this.getContext(childName);\n if (!context) {\n context = new OutletContext();\n this.contexts.set(childName, context);\n }\n return context;\n }\n /**\n * @param {?} childName\n * @return {?}\n */\n getContext(childName) { return this.contexts.get(childName) || null; }\n}\nfunction ChildrenOutletContexts_tsickle_Closure_declarations() {\n /** @type {?} */\n ChildrenOutletContexts.prototype.contexts;\n}\n//# sourceMappingURL=router_outlet_context.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Attribute, ChangeDetectorRef, ComponentFactoryResolver, Directive, EventEmitter, Output, ViewContainerRef } from '@angular/core';\nimport { ChildrenOutletContexts } from '../router_outlet_context';\nimport { ActivatedRoute } from '../router_state';\nimport { PRIMARY_OUTLET } from '../shared';\n/**\n * \\@whatItDoes Acts as a placeholder that Angular dynamically fills based on the current router\n * state.\n *\n * \\@howToUse\n *\n * ```\n * <router-outlet></router-outlet>\n * <router-outlet name='left'></router-outlet>\n * <router-outlet name='right'></router-outlet>\n * ```\n *\n * A router outlet will emit an activate event any time a new component is being instantiated,\n * and a deactivate event when it is being destroyed.\n *\n * ```\n * <router-outlet\n * (activate)='onActivate($event)'\n * (deactivate)='onDeactivate($event)'></router-outlet>\n * ```\n * \\@ngModule RouterModule\n *\n * \\@stable\n */\nexport class RouterOutlet {\n /**\n * @param {?} parentContexts\n * @param {?} location\n * @param {?} resolver\n * @param {?} name\n * @param {?} changeDetector\n */\n constructor(parentContexts, location, resolver, name, changeDetector) {\n this.parentContexts = parentContexts;\n this.location = location;\n this.resolver = resolver;\n this.changeDetector = changeDetector;\n this.activated = null;\n this._activatedRoute = null;\n this.activateEvents = new EventEmitter();\n this.deactivateEvents = new EventEmitter();\n this.name = name || PRIMARY_OUTLET;\n parentContexts.onChildOutletCreated(this.name, this);\n }\n /**\n * @return {?}\n */\n ngOnDestroy() { this.parentContexts.onChildOutletDestroyed(this.name); }\n /**\n * @return {?}\n */\n ngOnInit() {\n if (!this.activated) {\n // If the outlet was not instantiated at the time the route got activated we need to populate\n // the outlet when it is initialized (ie inside a NgIf)\n const /** @type {?} */ context = this.parentContexts.getContext(this.name);\n if (context && context.route) {\n if (context.attachRef) {\n // `attachRef` is populated when there is an existing component to mount\n this.attach(context.attachRef, context.route);\n }\n else {\n // otherwise the component defined in the configuration is created\n this.activateWith(context.route, context.resolver || null);\n }\n }\n }\n }\n /**\n * @return {?}\n */\n get isActivated() { return !!this.activated; }\n /**\n * @return {?}\n */\n get component() {\n if (!this.activated)\n throw new Error('Outlet is not activated');\n return this.activated.instance;\n }\n /**\n * @return {?}\n */\n get activatedRoute() {\n if (!this.activated)\n throw new Error('Outlet is not activated');\n return /** @type {?} */ (this._activatedRoute);\n }\n /**\n * @return {?}\n */\n get activatedRouteData() {\n if (this._activatedRoute) {\n return this._activatedRoute.snapshot.data;\n }\n return {};\n }\n /**\n * Called when the `RouteReuseStrategy` instructs to detach the subtree\n * @return {?}\n */\n detach() {\n if (!this.activated)\n throw new Error('Outlet is not activated');\n this.location.detach();\n const /** @type {?} */ cmp = this.activated;\n this.activated = null;\n this._activatedRoute = null;\n return cmp;\n }\n /**\n * Called when the `RouteReuseStrategy` instructs to re-attach a previously detached subtree\n * @param {?} ref\n * @param {?} activatedRoute\n * @return {?}\n */\n attach(ref, activatedRoute) {\n this.activated = ref;\n this._activatedRoute = activatedRoute;\n this.location.insert(ref.hostView);\n }\n /**\n * @return {?}\n */\n deactivate() {\n if (this.activated) {\n const /** @type {?} */ c = this.component;\n this.activated.destroy();\n this.activated = null;\n this._activatedRoute = null;\n this.deactivateEvents.emit(c);\n }\n }\n /**\n * @param {?} activatedRoute\n * @param {?} resolver\n * @return {?}\n */\n activateWith(activatedRoute, resolver) {\n if (this.isActivated) {\n throw new Error('Cannot activate an already activated outlet');\n }\n this._activatedRoute = activatedRoute;\n const /** @type {?} */ snapshot = activatedRoute._futureSnapshot;\n const /** @type {?} */ component = /** @type {?} */ (/** @type {?} */ ((snapshot.routeConfig)).component);\n resolver = resolver || this.resolver;\n const /** @type {?} */ factory = resolver.resolveComponentFactory(component);\n const /** @type {?} */ childContexts = this.parentContexts.getOrCreateContext(this.name).children;\n const /** @type {?} */ injector = new OutletInjector(activatedRoute, childContexts, this.location.injector);\n this.activated = this.location.createComponent(factory, this.location.length, injector);\n // Calling `markForCheck` to make sure we will run the change detection when the\n // `RouterOutlet` is inside a `ChangeDetectionStrategy.OnPush` component.\n this.changeDetector.markForCheck();\n this.activateEvents.emit(this.activated.instance);\n }\n}\nRouterOutlet.decorators = [\n { type: Directive, args: [{ selector: 'router-outlet', exportAs: 'outlet' },] },\n];\n/** @nocollapse */\nRouterOutlet.ctorParameters = () => [\n { type: ChildrenOutletContexts, },\n { type: ViewContainerRef, },\n { type: ComponentFactoryResolver, },\n { type: undefined, decorators: [{ type: Attribute, args: ['name',] },] },\n { type: ChangeDetectorRef, },\n];\nRouterOutlet.propDecorators = {\n \"activateEvents\": [{ type: Output, args: ['activate',] },],\n \"deactivateEvents\": [{ type: Output, args: ['deactivate',] },],\n};\nfunction RouterOutlet_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n RouterOutlet.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n RouterOutlet.ctorParameters;\n /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */\n RouterOutlet.propDecorators;\n /** @type {?} */\n RouterOutlet.prototype.activated;\n /** @type {?} */\n RouterOutlet.prototype._activatedRoute;\n /** @type {?} */\n RouterOutlet.prototype.name;\n /** @type {?} */\n RouterOutlet.prototype.activateEvents;\n /** @type {?} */\n RouterOutlet.prototype.deactivateEvents;\n /** @type {?} */\n RouterOutlet.prototype.parentContexts;\n /** @type {?} */\n RouterOutlet.prototype.location;\n /** @type {?} */\n RouterOutlet.prototype.resolver;\n /** @type {?} */\n RouterOutlet.prototype.changeDetector;\n}\nclass OutletInjector {\n /**\n * @param {?} route\n * @param {?} childContexts\n * @param {?} parent\n */\n constructor(route, childContexts, parent) {\n this.route = route;\n this.childContexts = childContexts;\n this.parent = parent;\n }\n /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n get(token, notFoundValue) {\n if (token === ActivatedRoute) {\n return this.route;\n }\n if (token === ChildrenOutletContexts) {\n return this.childContexts;\n }\n return this.parent.get(token, notFoundValue);\n }\n}\nfunction OutletInjector_tsickle_Closure_declarations() {\n /** @type {?} */\n OutletInjector.prototype.route;\n /** @type {?} */\n OutletInjector.prototype.childContexts;\n /** @type {?} */\n OutletInjector.prototype.parent;\n}\n//# sourceMappingURL=router_outlet.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n*@license\n*Copyright Google Inc. All Rights Reserved.\n*\n*Use of this source code is governed by an MIT-style license that can be\n*found in the LICENSE file at https://angular.io/license\n*/\nimport { Compiler, Injectable, Injector, NgModuleFactoryLoader, NgModuleRef } from '@angular/core';\nimport { from } from 'rxjs/observable/from';\nimport { of } from 'rxjs/observable/of';\nimport { _catch } from 'rxjs/operator/catch';\nimport { concatMap } from 'rxjs/operator/concatMap';\nimport { filter } from 'rxjs/operator/filter';\nimport { mergeAll } from 'rxjs/operator/mergeAll';\nimport { mergeMap } from 'rxjs/operator/mergeMap';\nimport { NavigationEnd, RouteConfigLoadEnd, RouteConfigLoadStart } from './events';\nimport { Router } from './router';\nimport { RouterConfigLoader } from './router_config_loader';\n/**\n * \\@whatItDoes Provides a preloading strategy.\n *\n * \\@experimental\n * @abstract\n */\nexport class PreloadingStrategy {\n}\nfunction PreloadingStrategy_tsickle_Closure_declarations() {\n /**\n * @abstract\n * @param {?} route\n * @param {?} fn\n * @return {?}\n */\n PreloadingStrategy.prototype.preload = function (route, fn) { };\n}\n/**\n * \\@whatItDoes Provides a preloading strategy that preloads all modules as quickly as possible.\n *\n * \\@howToUse\n *\n * ```\n * RouteModule.forRoot(ROUTES, {preloadingStrategy: PreloadAllModules})\n * ```\n *\n * \\@experimental\n */\nexport class PreloadAllModules {\n /**\n * @param {?} route\n * @param {?} fn\n * @return {?}\n */\n preload(route, fn) {\n return _catch.call(fn(), () => of(null));\n }\n}\n/**\n * \\@whatItDoes Provides a preloading strategy that does not preload any modules.\n *\n * \\@description\n *\n * This strategy is enabled by default.\n *\n * \\@experimental\n */\nexport class NoPreloading {\n /**\n * @param {?} route\n * @param {?} fn\n * @return {?}\n */\n preload(route, fn) { return of(null); }\n}\n/**\n * The preloader optimistically loads all router configurations to\n * make navigations into lazily-loaded sections of the application faster.\n *\n * The preloader runs in the background. When the router bootstraps, the preloader\n * starts listening to all navigation events. After every such event, the preloader\n * will check if any configurations can be loaded lazily.\n *\n * If a route is protected by `canLoad` guards, the preloaded will not load it.\n *\n * \\@stable\n */\nexport class RouterPreloader {\n /**\n * @param {?} router\n * @param {?} moduleLoader\n * @param {?} compiler\n * @param {?} injector\n * @param {?} preloadingStrategy\n */\n constructor(router, moduleLoader, compiler, injector, preloadingStrategy) {\n this.router = router;\n this.injector = injector;\n this.preloadingStrategy = preloadingStrategy;\n const /** @type {?} */ onStartLoad = (r) => router.triggerEvent(new RouteConfigLoadStart(r));\n const /** @type {?} */ onEndLoad = (r) => router.triggerEvent(new RouteConfigLoadEnd(r));\n this.loader = new RouterConfigLoader(moduleLoader, compiler, onStartLoad, onEndLoad);\n }\n /**\n * @return {?}\n */\n setUpPreloading() {\n const /** @type {?} */ navigations$ = filter.call(this.router.events, (e) => e instanceof NavigationEnd);\n this.subscription = concatMap.call(navigations$, () => this.preload()).subscribe(() => { });\n }\n /**\n * @return {?}\n */\n preload() {\n const /** @type {?} */ ngModule = this.injector.get(NgModuleRef);\n return this.processRoutes(ngModule, this.router.config);\n }\n /**\n * @return {?}\n */\n ngOnDestroy() { this.subscription.unsubscribe(); }\n /**\n * @param {?} ngModule\n * @param {?} routes\n * @return {?}\n */\n processRoutes(ngModule, routes) {\n const /** @type {?} */ res = [];\n for (const /** @type {?} */ route of routes) {\n // we already have the config loaded, just recurse\n if (route.loadChildren && !route.canLoad && route._loadedConfig) {\n const /** @type {?} */ childConfig = route._loadedConfig;\n res.push(this.processRoutes(childConfig.module, childConfig.routes));\n // no config loaded, fetch the config\n }\n else if (route.loadChildren && !route.canLoad) {\n res.push(this.preloadConfig(ngModule, route));\n // recurse into children\n }\n else if (route.children) {\n res.push(this.processRoutes(ngModule, route.children));\n }\n }\n return mergeAll.call(from(res));\n }\n /**\n * @param {?} ngModule\n * @param {?} route\n * @return {?}\n */\n preloadConfig(ngModule, route) {\n return this.preloadingStrategy.preload(route, () => {\n const /** @type {?} */ loaded$ = this.loader.load(ngModule.injector, route);\n return mergeMap.call(loaded$, (config) => {\n route._loadedConfig = config;\n return this.processRoutes(config.module, config.routes);\n });\n });\n }\n}\nRouterPreloader.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nRouterPreloader.ctorParameters = () => [\n { type: Router, },\n { type: NgModuleFactoryLoader, },\n { type: Compiler, },\n { type: Injector, },\n { type: PreloadingStrategy, },\n];\nfunction RouterPreloader_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n RouterPreloader.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n RouterPreloader.ctorParameters;\n /** @type {?} */\n RouterPreloader.prototype.loader;\n /** @type {?} */\n RouterPreloader.prototype.subscription;\n /** @type {?} */\n RouterPreloader.prototype.router;\n /** @type {?} */\n RouterPreloader.prototype.injector;\n /** @type {?} */\n RouterPreloader.prototype.preloadingStrategy;\n}\n//# sourceMappingURL=router_preloader.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { APP_BASE_HREF, HashLocationStrategy, LOCATION_INITIALIZED, Location, LocationStrategy, PathLocationStrategy, PlatformLocation } from '@angular/common';\nimport { ANALYZE_FOR_ENTRY_COMPONENTS, APP_BOOTSTRAP_LISTENER, APP_INITIALIZER, ApplicationRef, Compiler, Inject, Injectable, InjectionToken, Injector, NgModule, NgModuleFactoryLoader, NgProbeToken, Optional, SkipSelf, SystemJsNgModuleLoader } from '@angular/core';\nimport { ɵgetDOM as getDOM } from '@angular/platform-browser';\nimport { Subject } from 'rxjs/Subject';\nimport { of } from 'rxjs/observable/of';\nimport { RouterLink, RouterLinkWithHref } from './directives/router_link';\nimport { RouterLinkActive } from './directives/router_link_active';\nimport { RouterOutlet } from './directives/router_outlet';\nimport { RouteReuseStrategy } from './route_reuse_strategy';\nimport { Router } from './router';\nimport { ROUTES } from './router_config_loader';\nimport { ChildrenOutletContexts } from './router_outlet_context';\nimport { NoPreloading, PreloadAllModules, PreloadingStrategy, RouterPreloader } from './router_preloader';\nimport { ActivatedRoute } from './router_state';\nimport { UrlHandlingStrategy } from './url_handling_strategy';\nimport { DefaultUrlSerializer, UrlSerializer } from './url_tree';\nimport { flatten } from './utils/collection';\n/**\n * \\@whatItDoes Contains a list of directives\n * \\@stable\n */\nconst /** @type {?} */ ROUTER_DIRECTIVES = [RouterOutlet, RouterLink, RouterLinkWithHref, RouterLinkActive];\n/**\n * \\@whatItDoes Is used in DI to configure the router.\n * \\@stable\n */\nexport const /** @type {?} */ ROUTER_CONFIGURATION = new InjectionToken('ROUTER_CONFIGURATION');\n/**\n * \\@docsNotRequired\n */\nexport const /** @type {?} */ ROUTER_FORROOT_GUARD = new InjectionToken('ROUTER_FORROOT_GUARD');\nexport const /** @type {?} */ ROUTER_PROVIDERS = [\n Location,\n { provide: UrlSerializer, useClass: DefaultUrlSerializer },\n {\n provide: Router,\n useFactory: setupRouter,\n deps: [\n ApplicationRef, UrlSerializer, ChildrenOutletContexts, Location, Injector,\n NgModuleFactoryLoader, Compiler, ROUTES, ROUTER_CONFIGURATION,\n [UrlHandlingStrategy, new Optional()], [RouteReuseStrategy, new Optional()]\n ]\n },\n ChildrenOutletContexts,\n { provide: ActivatedRoute, useFactory: rootRoute, deps: [Router] },\n { provide: NgModuleFactoryLoader, useClass: SystemJsNgModuleLoader },\n RouterPreloader,\n NoPreloading,\n PreloadAllModules,\n { provide: ROUTER_CONFIGURATION, useValue: { enableTracing: false } },\n];\n/**\n * @return {?}\n */\nexport function routerNgProbeToken() {\n return new NgProbeToken('Router', Router);\n}\n/**\n * \\@whatItDoes Adds router directives and providers.\n *\n * \\@howToUse\n *\n * RouterModule can be imported multiple times: once per lazily-loaded bundle.\n * Since the router deals with a global shared resource--location, we cannot have\n * more than one router service active.\n *\n * That is why there are two ways to create the module: `RouterModule.forRoot` and\n * `RouterModule.forChild`.\n *\n * * `forRoot` creates a module that contains all the directives, the given routes, and the router\n * service itself.\n * * `forChild` creates a module that contains all the directives and the given routes, but does not\n * include the router service.\n *\n * When registered at the root, the module should be used as follows\n *\n * ```\n * \\@NgModule({\n * imports: [RouterModule.forRoot(ROUTES)]\n * })\n * class MyNgModule {}\n * ```\n *\n * For submodules and lazy loaded submodules the module should be used as follows:\n *\n * ```\n * \\@NgModule({\n * imports: [RouterModule.forChild(ROUTES)]\n * })\n * class MyNgModule {}\n * ```\n *\n * \\@description\n *\n * Managing state transitions is one of the hardest parts of building applications. This is\n * especially true on the web, where you also need to ensure that the state is reflected in the URL.\n * In addition, we often want to split applications into multiple bundles and load them on demand.\n * Doing this transparently is not trivial.\n *\n * The Angular router solves these problems. Using the router, you can declaratively specify\n * application states, manage state transitions while taking care of the URL, and load bundles on\n * demand.\n *\n * [Read this developer guide](https://angular.io/docs/ts/latest/guide/router.html) to get an\n * overview of how the router should be used.\n *\n * \\@stable\n */\nexport class RouterModule {\n /**\n * @param {?} guard\n * @param {?} router\n */\n constructor(guard, router) { }\n /**\n * Creates a module with all the router providers and directives. It also optionally sets up an\n * application listener to perform an initial navigation.\n *\n * Options (see {\\@link ExtraOptions}):\n * * `enableTracing` makes the router log all its internal events to the console.\n * * `useHash` enables the location strategy that uses the URL fragment instead of the history\n * API.\n * * `initialNavigation` disables the initial navigation.\n * * `errorHandler` provides a custom error handler.\n * * `preloadingStrategy` configures a preloading strategy (see {\\@link PreloadAllModules}).\n * * `onSameUrlNavigation` configures how the router handles navigation to the current URL. See\n * {\\@link ExtraOptions} for more details.\n * @param {?} routes\n * @param {?=} config\n * @return {?}\n */\n static forRoot(routes, config) {\n return {\n ngModule: RouterModule,\n providers: [\n ROUTER_PROVIDERS,\n provideRoutes(routes),\n {\n provide: ROUTER_FORROOT_GUARD,\n useFactory: provideForRootGuard,\n deps: [[Router, new Optional(), new SkipSelf()]]\n },\n { provide: ROUTER_CONFIGURATION, useValue: config ? config : {} },\n {\n provide: LocationStrategy,\n useFactory: provideLocationStrategy,\n deps: [\n PlatformLocation, [new Inject(APP_BASE_HREF), new Optional()], ROUTER_CONFIGURATION\n ]\n },\n {\n provide: PreloadingStrategy,\n useExisting: config && config.preloadingStrategy ? config.preloadingStrategy :\n NoPreloading\n },\n { provide: NgProbeToken, multi: true, useFactory: routerNgProbeToken },\n provideRouterInitializer(),\n ],\n };\n }\n /**\n * Creates a module with all the router directives and a provider registering routes.\n * @param {?} routes\n * @return {?}\n */\n static forChild(routes) {\n return { ngModule: RouterModule, providers: [provideRoutes(routes)] };\n }\n}\nRouterModule.decorators = [\n { type: NgModule, args: [{ declarations: ROUTER_DIRECTIVES, exports: ROUTER_DIRECTIVES },] },\n];\n/** @nocollapse */\nRouterModule.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [ROUTER_FORROOT_GUARD,] },] },\n { type: Router, decorators: [{ type: Optional },] },\n];\nfunction RouterModule_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n RouterModule.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n RouterModule.ctorParameters;\n}\n/**\n * @param {?} platformLocationStrategy\n * @param {?} baseHref\n * @param {?=} options\n * @return {?}\n */\nexport function provideLocationStrategy(platformLocationStrategy, baseHref, options = {}) {\n return options.useHash ? new HashLocationStrategy(platformLocationStrategy, baseHref) :\n new PathLocationStrategy(platformLocationStrategy, baseHref);\n}\n/**\n * @param {?} router\n * @return {?}\n */\nexport function provideForRootGuard(router) {\n if (router) {\n throw new Error(`RouterModule.forRoot() called twice. Lazy loaded modules should use RouterModule.forChild() instead.`);\n }\n return 'guarded';\n}\n/**\n * \\@whatItDoes Registers routes.\n *\n * \\@howToUse\n *\n * ```\n * \\@NgModule({\n * imports: [RouterModule.forChild(ROUTES)],\n * providers: [provideRoutes(EXTRA_ROUTES)]\n * })\n * class MyNgModule {}\n * ```\n *\n * \\@stable\n * @param {?} routes\n * @return {?}\n */\nexport function provideRoutes(routes) {\n return [\n { provide: ANALYZE_FOR_ENTRY_COMPONENTS, multi: true, useValue: routes },\n { provide: ROUTES, multi: true, useValue: routes },\n ];\n}\n/**\n * \\@whatItDoes Represents options to configure the router.\n *\n * \\@stable\n * @record\n */\nexport function ExtraOptions() { }\nfunction ExtraOptions_tsickle_Closure_declarations() {\n /**\n * Makes the router log all its internal events to the console.\n * @type {?|undefined}\n */\n ExtraOptions.prototype.enableTracing;\n /**\n * Enables the location strategy that uses the URL fragment instead of the history API.\n * @type {?|undefined}\n */\n ExtraOptions.prototype.useHash;\n /**\n * Disables the initial navigation.\n * @type {?|undefined}\n */\n ExtraOptions.prototype.initialNavigation;\n /**\n * A custom error handler.\n * @type {?|undefined}\n */\n ExtraOptions.prototype.errorHandler;\n /**\n * Configures a preloading strategy. See {\\@link PreloadAllModules}.\n * @type {?|undefined}\n */\n ExtraOptions.prototype.preloadingStrategy;\n /**\n * Define what the router should do if it receives a navigation request to the current URL.\n * By default, the router will ignore this navigation. However, this prevents features such\n * as a \"refresh\" button. Use this option to configure the behavior when navigating to the\n * current URL. Default is 'ignore'.\n * @type {?|undefined}\n */\n ExtraOptions.prototype.onSameUrlNavigation;\n /**\n * Defines how the router merges params, data and resolved data from parent to child\n * routes. Available options are:\n *\n * - `'emptyOnly'`, the default, only inherits parent params for path-less or component-less\n * routes.\n * - `'always'`, enables unconditional inheritance of parent params.\n * @type {?|undefined}\n */\n ExtraOptions.prototype.paramsInheritanceStrategy;\n}\n/**\n * @param {?} ref\n * @param {?} urlSerializer\n * @param {?} contexts\n * @param {?} location\n * @param {?} injector\n * @param {?} loader\n * @param {?} compiler\n * @param {?} config\n * @param {?=} opts\n * @param {?=} urlHandlingStrategy\n * @param {?=} routeReuseStrategy\n * @return {?}\n */\nexport function setupRouter(ref, urlSerializer, contexts, location, injector, loader, compiler, config, opts = {}, urlHandlingStrategy, routeReuseStrategy) {\n const /** @type {?} */ router = new Router(null, urlSerializer, contexts, location, injector, loader, compiler, flatten(config));\n if (urlHandlingStrategy) {\n router.urlHandlingStrategy = urlHandlingStrategy;\n }\n if (routeReuseStrategy) {\n router.routeReuseStrategy = routeReuseStrategy;\n }\n if (opts.errorHandler) {\n router.errorHandler = opts.errorHandler;\n }\n if (opts.enableTracing) {\n const /** @type {?} */ dom = getDOM();\n router.events.subscribe(e => {\n dom.logGroup(`Router Event: ${((/** @type {?} */ (e.constructor))).name}`);\n dom.log(e.toString());\n dom.log(e);\n dom.logGroupEnd();\n });\n }\n if (opts.onSameUrlNavigation) {\n router.onSameUrlNavigation = opts.onSameUrlNavigation;\n }\n if (opts.paramsInheritanceStrategy) {\n router.paramsInheritanceStrategy = opts.paramsInheritanceStrategy;\n }\n return router;\n}\n/**\n * @param {?} router\n * @return {?}\n */\nexport function rootRoute(router) {\n return router.routerState.root;\n}\n/**\n * To initialize the router properly we need to do in two steps:\n *\n * We need to start the navigation in a APP_INITIALIZER to block the bootstrap if\n * a resolver or a guards executes asynchronously. Second, we need to actually run\n * activation in a BOOTSTRAP_LISTENER. We utilize the afterPreactivation\n * hook provided by the router to do that.\n *\n * The router navigation starts, reaches the point when preactivation is done, and then\n * pauses. It waits for the hook to be resolved. We then resolve it only in a bootstrap listener.\n */\nexport class RouterInitializer {\n /**\n * @param {?} injector\n */\n constructor(injector) {\n this.injector = injector;\n this.initNavigation = false;\n this.resultOfPreactivationDone = new Subject();\n }\n /**\n * @return {?}\n */\n appInitializer() {\n const /** @type {?} */ p = this.injector.get(LOCATION_INITIALIZED, Promise.resolve(null));\n return p.then(() => {\n let /** @type {?} */ resolve = /** @type {?} */ ((null));\n const /** @type {?} */ res = new Promise(r => resolve = r);\n const /** @type {?} */ router = this.injector.get(Router);\n const /** @type {?} */ opts = this.injector.get(ROUTER_CONFIGURATION);\n if (this.isLegacyDisabled(opts) || this.isLegacyEnabled(opts)) {\n resolve(true);\n }\n else if (opts.initialNavigation === 'disabled') {\n router.setUpLocationChangeListener();\n resolve(true);\n }\n else if (opts.initialNavigation === 'enabled') {\n router.hooks.afterPreactivation = () => {\n // only the initial navigation should be delayed\n if (!this.initNavigation) {\n this.initNavigation = true;\n resolve(true);\n return this.resultOfPreactivationDone;\n // subsequent navigations should not be delayed\n }\n else {\n return /** @type {?} */ (of(null));\n }\n };\n router.initialNavigation();\n }\n else {\n throw new Error(`Invalid initialNavigation options: '${opts.initialNavigation}'`);\n }\n return res;\n });\n }\n /**\n * @param {?} bootstrappedComponentRef\n * @return {?}\n */\n bootstrapListener(bootstrappedComponentRef) {\n const /** @type {?} */ opts = this.injector.get(ROUTER_CONFIGURATION);\n const /** @type {?} */ preloader = this.injector.get(RouterPreloader);\n const /** @type {?} */ router = this.injector.get(Router);\n const /** @type {?} */ ref = this.injector.get(ApplicationRef);\n if (bootstrappedComponentRef !== ref.components[0]) {\n return;\n }\n if (this.isLegacyEnabled(opts)) {\n router.initialNavigation();\n }\n else if (this.isLegacyDisabled(opts)) {\n router.setUpLocationChangeListener();\n }\n preloader.setUpPreloading();\n router.resetRootComponentType(ref.componentTypes[0]);\n this.resultOfPreactivationDone.next(/** @type {?} */ ((null)));\n this.resultOfPreactivationDone.complete();\n }\n /**\n * @param {?} opts\n * @return {?}\n */\n isLegacyEnabled(opts) {\n return opts.initialNavigation === 'legacy_enabled' || opts.initialNavigation === true ||\n opts.initialNavigation === undefined;\n }\n /**\n * @param {?} opts\n * @return {?}\n */\n isLegacyDisabled(opts) {\n return opts.initialNavigation === 'legacy_disabled' || opts.initialNavigation === false;\n }\n}\nRouterInitializer.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nRouterInitializer.ctorParameters = () => [\n { type: Injector, },\n];\nfunction RouterInitializer_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n RouterInitializer.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n RouterInitializer.ctorParameters;\n /** @type {?} */\n RouterInitializer.prototype.initNavigation;\n /** @type {?} */\n RouterInitializer.prototype.resultOfPreactivationDone;\n /** @type {?} */\n RouterInitializer.prototype.injector;\n}\n/**\n * @param {?} r\n * @return {?}\n */\nexport function getAppInitializer(r) {\n return r.appInitializer.bind(r);\n}\n/**\n * @param {?} r\n * @return {?}\n */\nexport function getBootstrapListener(r) {\n return r.bootstrapListener.bind(r);\n}\n/**\n * A token for the router initializer that will be called after the app is bootstrapped.\n *\n * \\@experimental\n */\nexport const /** @type {?} */ ROUTER_INITIALIZER = new InjectionToken('Router Initializer');\n/**\n * @return {?}\n */\nexport function provideRouterInitializer() {\n return [\n RouterInitializer,\n {\n provide: APP_INITIALIZER,\n multi: true,\n useFactory: getAppInitializer,\n deps: [RouterInitializer]\n },\n { provide: ROUTER_INITIALIZER, useFactory: getBootstrapListener, deps: [RouterInitializer] },\n { provide: APP_BOOTSTRAP_LISTENER, multi: true, useExisting: ROUTER_INITIALIZER },\n ];\n}\n//# sourceMappingURL=router_module.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Version } from '@angular/core';\n/**\n * \\@stable\n */\nexport const /** @type {?} */ VERSION = new Version('5.2.0');\n//# sourceMappingURL=version.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nexport { ROUTER_PROVIDERS as ɵROUTER_PROVIDERS } from './router_module';\nexport { flatten as ɵflatten } from './utils/collection';\n//# sourceMappingURL=private_export.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nexport { RouterLink, RouterLinkWithHref } from './directives/router_link';\nexport { RouterLinkActive } from './directives/router_link_active';\nexport { RouterOutlet } from './directives/router_outlet';\nexport { ActivationEnd, ActivationStart, ChildActivationEnd, ChildActivationStart, GuardsCheckEnd, GuardsCheckStart, NavigationCancel, NavigationEnd, NavigationError, NavigationStart, ResolveEnd, ResolveStart, RouteConfigLoadEnd, RouteConfigLoadStart, RouterEvent, RoutesRecognized } from './events';\nexport { RouteReuseStrategy } from './route_reuse_strategy';\nexport { Router } from './router';\nexport { ROUTES } from './router_config_loader';\nexport { ROUTER_CONFIGURATION, ROUTER_INITIALIZER, RouterModule, provideRoutes } from './router_module';\nexport { ChildrenOutletContexts, OutletContext } from './router_outlet_context';\nexport { NoPreloading, PreloadAllModules, PreloadingStrategy, RouterPreloader } from './router_preloader';\nexport { ActivatedRoute, ActivatedRouteSnapshot, RouterState, RouterStateSnapshot } from './router_state';\nexport { PRIMARY_OUTLET, convertToParamMap } from './shared';\nexport { UrlHandlingStrategy } from './url_handling_strategy';\nexport { DefaultUrlSerializer, UrlSegment, UrlSegmentGroup, UrlSerializer, UrlTree } from './url_tree';\nexport { VERSION } from './version';\nexport { ɵROUTER_PROVIDERS, ɵflatten } from './private_export';\n//# sourceMappingURL=index.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\nexport { RouterLink, RouterLinkWithHref, RouterLinkActive, RouterOutlet, ActivationEnd, ActivationStart, ChildActivationEnd, ChildActivationStart, GuardsCheckEnd, GuardsCheckStart, NavigationCancel, NavigationEnd, NavigationError, NavigationStart, ResolveEnd, ResolveStart, RouteConfigLoadEnd, RouteConfigLoadStart, RouterEvent, RoutesRecognized, RouteReuseStrategy, Router, ROUTES, ROUTER_CONFIGURATION, ROUTER_INITIALIZER, RouterModule, provideRoutes, ChildrenOutletContexts, OutletContext, NoPreloading, PreloadAllModules, PreloadingStrategy, RouterPreloader, ActivatedRoute, ActivatedRouteSnapshot, RouterState, RouterStateSnapshot, PRIMARY_OUTLET, convertToParamMap, UrlHandlingStrategy, DefaultUrlSerializer, UrlSegment, UrlSegmentGroup, UrlSerializer, UrlTree, VERSION, ɵROUTER_PROVIDERS, ɵflatten } from './src/index';\n// This file only reexports content of the `src` folder. Keep it that way.\n//# sourceMappingURL=public_api.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Generated bundle index. Do not edit.\n */\nexport { RouterLink, RouterLinkWithHref, RouterLinkActive, RouterOutlet, ActivationEnd, ActivationStart, ChildActivationEnd, ChildActivationStart, GuardsCheckEnd, GuardsCheckStart, NavigationCancel, NavigationEnd, NavigationError, NavigationStart, ResolveEnd, ResolveStart, RouteConfigLoadEnd, RouteConfigLoadStart, RouterEvent, RoutesRecognized, RouteReuseStrategy, Router, ROUTES, ROUTER_CONFIGURATION, ROUTER_INITIALIZER, RouterModule, provideRoutes, ChildrenOutletContexts, OutletContext, NoPreloading, PreloadAllModules, PreloadingStrategy, RouterPreloader, ActivatedRoute, ActivatedRouteSnapshot, RouterState, RouterStateSnapshot, PRIMARY_OUTLET, convertToParamMap, UrlHandlingStrategy, DefaultUrlSerializer, UrlSegment, UrlSegmentGroup, UrlSerializer, UrlTree, VERSION, ɵROUTER_PROVIDERS, ɵflatten } from './public_api';\nexport { ROUTER_FORROOT_GUARD as ɵa, RouterInitializer as ɵg, getAppInitializer as ɵh, getBootstrapListener as ɵi, provideForRootGuard as ɵd, provideLocationStrategy as ɵc, provideRouterInitializer as ɵj, rootRoute as ɵf, routerNgProbeToken as ɵb, setupRouter as ɵe } from './src/router_module';\nexport { Tree as ɵk, TreeNode as ɵl } from './src/utils/tree';\n//# sourceMappingURL=router.js.map"],"names":["last","map","l.last","isObservable","isPromise","NoMatch","split","match","getOutlet","getDOM"],"mappings":"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"}