@snabcentr/client-core 2.64.3 → 2.65.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/cart/internal/sc-i-cart-item-dto.d.ts +2 -2
  2. package/catalog/classes/index.d.ts +1 -0
  3. package/catalog/classes/sc-catalog-item.d.ts +31 -0
  4. package/catalog/dto/index.d.ts +0 -2
  5. package/catalog/dto/sc-category.d.ts +18 -51
  6. package/catalog/dto/sc-product.d.ts +26 -51
  7. package/catalog/dto/sc-virtual-category.d.ts +13 -30
  8. package/catalog/interfaces/index.d.ts +4 -0
  9. package/catalog/interfaces/sc-i-catalog-item.d.ts +16 -0
  10. package/catalog/interfaces/sc-i-category.d.ts +29 -0
  11. package/catalog/{internal/sc-i-product-dto.d.ts → interfaces/sc-i-product.d.ts} +8 -27
  12. package/catalog/interfaces/sc-i-virtual-category.d.ts +20 -0
  13. package/catalog/internal/index.d.ts +0 -4
  14. package/catalog/services/sc-catalog.service.d.ts +3 -2
  15. package/catalog/services/sc-favorite.service.d.ts +1 -1
  16. package/common/classes/index.d.ts +9 -0
  17. package/common/classes/sc-catalogable-item.d.ts +17 -0
  18. package/common/classes/sc-coded-identity.d.ts +17 -0
  19. package/common/classes/sc-deletable-named-identity.d.ts +17 -0
  20. package/common/classes/sc-hidden-catalogable-item.d.ts +17 -0
  21. package/common/classes/sc-identity.d.ts +25 -0
  22. package/common/classes/sc-image.d.ts +6 -8
  23. package/common/classes/sc-named-identity.d.ts +17 -0
  24. package/common/classes/sc-primary-catalogable-item.d.ts +17 -0
  25. package/common/classes/sc-reference.d.ts +21 -0
  26. package/common/classes/sc-updatable-named-identity.d.ts +17 -0
  27. package/common/index.d.ts +1 -1
  28. package/common/interfaces/index.d.ts +16 -0
  29. package/common/interfaces/sc-i-catalogable-item.d.ts +10 -0
  30. package/common/interfaces/sc-i-coded-identity.d.ts +10 -0
  31. package/common/interfaces/sc-i-created-at.d.ts +9 -0
  32. package/common/interfaces/sc-i-date-period.d.ts +6 -0
  33. package/common/interfaces/sc-i-deletable-named-identity.d.ts +7 -0
  34. package/common/interfaces/sc-i-deleted-at.d.ts +9 -0
  35. package/common/interfaces/sc-i-file.d.ts +13 -0
  36. package/common/interfaces/sc-i-hidden-catalogable-item.d.ts +10 -0
  37. package/common/interfaces/sc-i-identity.d.ts +13 -0
  38. package/common/interfaces/sc-i-image.d.ts +1 -1
  39. package/common/interfaces/sc-i-named-identity.d.ts +7 -0
  40. package/common/interfaces/sc-i-named.d.ts +9 -0
  41. package/common/interfaces/sc-i-primary-catalogable-item.d.ts +10 -0
  42. package/common/interfaces/sc-i-reference.d.ts +14 -0
  43. package/common/interfaces/sc-i-typed-nullable-range.d.ts +13 -0
  44. package/common/interfaces/sc-i-updatable-named-identity.d.ts +7 -0
  45. package/common/interfaces/sc-i-updated-at.d.ts +9 -0
  46. package/config/index.d.ts +0 -1
  47. package/esm2022/cart/internal/sc-i-cart-item-dto.mjs +1 -1
  48. package/esm2022/catalog/classes/index.mjs +2 -1
  49. package/esm2022/catalog/classes/sc-catalog-item.mjs +19 -0
  50. package/esm2022/catalog/dto/index.mjs +1 -3
  51. package/esm2022/catalog/dto/sc-category.mjs +20 -38
  52. package/esm2022/catalog/dto/sc-product.mjs +27 -32
  53. package/esm2022/catalog/dto/sc-virtual-category.mjs +11 -14
  54. package/esm2022/catalog/interfaces/index.mjs +5 -1
  55. package/esm2022/catalog/interfaces/sc-i-catalog-item.mjs +2 -0
  56. package/esm2022/catalog/interfaces/sc-i-category.mjs +3 -0
  57. package/esm2022/catalog/interfaces/sc-i-product.mjs +3 -0
  58. package/esm2022/catalog/interfaces/sc-i-virtual-category.mjs +2 -0
  59. package/esm2022/catalog/internal/index.mjs +1 -5
  60. package/esm2022/catalog/services/sc-catalog.service.mjs +1 -1
  61. package/esm2022/catalog/services/sc-favorite.service.mjs +2 -2
  62. package/esm2022/catalog/services/sc-recommendation.service.mjs +1 -1
  63. package/esm2022/common/classes/index.mjs +10 -1
  64. package/esm2022/common/classes/sc-catalogable-item.mjs +16 -0
  65. package/esm2022/common/classes/sc-coded-identity.mjs +21 -0
  66. package/esm2022/common/classes/sc-deletable-named-identity.mjs +18 -0
  67. package/esm2022/common/classes/sc-hidden-catalogable-item.mjs +16 -0
  68. package/esm2022/common/classes/sc-identity.mjs +23 -0
  69. package/esm2022/common/classes/sc-image.mjs +7 -9
  70. package/esm2022/common/classes/sc-named-identity.mjs +21 -0
  71. package/esm2022/common/classes/sc-primary-catalogable-item.mjs +16 -0
  72. package/esm2022/common/classes/sc-reference.mjs +17 -0
  73. package/esm2022/common/classes/sc-updatable-named-identity.mjs +18 -0
  74. package/esm2022/common/index.mjs +2 -2
  75. package/esm2022/common/interfaces/index.mjs +17 -1
  76. package/esm2022/common/interfaces/sc-i-catalogable-item.mjs +2 -0
  77. package/esm2022/common/interfaces/sc-i-coded-identity.mjs +2 -0
  78. package/esm2022/common/interfaces/sc-i-created-at.mjs +2 -0
  79. package/esm2022/common/interfaces/sc-i-date-period.mjs +2 -0
  80. package/esm2022/common/interfaces/sc-i-deletable-named-identity.mjs +2 -0
  81. package/esm2022/common/interfaces/sc-i-deleted-at.mjs +2 -0
  82. package/esm2022/common/interfaces/sc-i-file.mjs +2 -0
  83. package/esm2022/common/interfaces/sc-i-hidden-catalogable-item.mjs +2 -0
  84. package/esm2022/common/interfaces/sc-i-identity.mjs +2 -0
  85. package/esm2022/common/interfaces/sc-i-image.mjs +1 -1
  86. package/esm2022/common/interfaces/sc-i-named-identity.mjs +2 -0
  87. package/esm2022/common/interfaces/sc-i-named.mjs +2 -0
  88. package/esm2022/common/interfaces/sc-i-primary-catalogable-item.mjs +2 -0
  89. package/esm2022/common/interfaces/sc-i-reference.mjs +2 -0
  90. package/esm2022/common/interfaces/sc-i-typed-nullable-range.mjs +2 -0
  91. package/esm2022/common/interfaces/sc-i-updatable-named-identity.mjs +2 -0
  92. package/esm2022/common/interfaces/sc-i-updated-at.mjs +2 -0
  93. package/esm2022/config/index.mjs +1 -2
  94. package/esm2022/configurator/services/sc-configurator.service.mjs +1 -1
  95. package/esm2022/guards/index.mjs +1 -2
  96. package/esm2022/helpers/sc-image-helper.mjs +13 -3
  97. package/esm2022/helpers/sc-units-helper.mjs +1 -1
  98. package/esm2022/news/classes/index.mjs +1 -5
  99. package/esm2022/news/classes/sc-news.mjs +13 -12
  100. package/esm2022/news/index.mjs +4 -7
  101. package/esm2022/news/interfaces/index.mjs +3 -0
  102. package/esm2022/news/interfaces/sc-i-news-tile.mjs +2 -0
  103. package/esm2022/news/interfaces/sc-i-news.mjs +2 -0
  104. package/esm2022/news/services/index.mjs +2 -0
  105. package/esm2022/news/services/sc-news.service.mjs +2 -2
  106. package/esm2022/news/tokens/index.mjs +2 -0
  107. package/esm2022/providers/sc-category.providers.mjs +3 -3
  108. package/esm2022/public-api.mjs +2 -6
  109. package/esm2022/search/services/sc-search.service.mjs +5 -5
  110. package/esm2022/seo/classes/index.mjs +2 -0
  111. package/esm2022/seo/classes/schema-org-factory.mjs +269 -0
  112. package/esm2022/seo/index.mjs +5 -0
  113. package/esm2022/seo/interfaces/index.mjs +5 -0
  114. package/esm2022/seo/interfaces/sc-i-default-page-meta.mjs +2 -0
  115. package/esm2022/seo/interfaces/sc-i-schema-org-breadcrumb-list.mjs +2 -0
  116. package/esm2022/seo/interfaces/sc-i-seo-resource.mjs +2 -0
  117. package/esm2022/seo/interfaces/sc-i-seo.mjs +2 -0
  118. package/esm2022/seo/services/index.mjs +2 -0
  119. package/esm2022/seo/services/sc-seo.service.mjs +206 -0
  120. package/esm2022/seo/types/index.mjs +2 -0
  121. package/esm2022/seo/types/robots-tag-type.mjs +2 -0
  122. package/esm2022/tokens/sc-default-page-meta.mjs +1 -1
  123. package/fesm2022/snabcentr-client-core.mjs +784 -580
  124. package/fesm2022/snabcentr-client-core.mjs.map +1 -1
  125. package/guards/index.d.ts +0 -1
  126. package/helpers/sc-image-helper.d.ts +1 -1
  127. package/helpers/sc-units-helper.d.ts +1 -1
  128. package/news/classes/index.d.ts +0 -1
  129. package/news/classes/sc-news.d.ts +18 -13
  130. package/news/index.d.ts +3 -3
  131. package/news/interfaces/index.d.ts +2 -0
  132. package/news/interfaces/sc-i-news-tile.d.ts +22 -0
  133. package/news/interfaces/sc-i-news.d.ts +11 -0
  134. package/news/services/index.d.ts +1 -0
  135. package/news/services/sc-news.service.d.ts +4 -3
  136. package/news/tokens/index.d.ts +1 -0
  137. package/package.json +1 -1
  138. package/providers/sc-category.providers.d.ts +1 -1
  139. package/public-api.d.ts +1 -2
  140. package/search/services/sc-search.service.d.ts +5 -4
  141. package/seo/classes/index.d.ts +1 -0
  142. package/seo/classes/schema-org-factory.d.ts +88 -0
  143. package/seo/index.d.ts +4 -0
  144. package/seo/interfaces/index.d.ts +4 -0
  145. package/seo/interfaces/sc-i-default-page-meta.d.ts +17 -0
  146. package/seo/interfaces/sc-i-schema-org-breadcrumb-list.d.ts +34 -0
  147. package/seo/interfaces/sc-i-seo-resource.d.ts +14 -0
  148. package/{catalog/dto → seo/interfaces}/sc-i-seo.d.ts +3 -14
  149. package/seo/services/index.d.ts +1 -0
  150. package/seo/services/sc-seo.service.d.ts +125 -0
  151. package/seo/types/index.d.ts +1 -0
  152. package/tokens/sc-default-page-meta.d.ts +1 -1
  153. package/catalog/dto/sc-i-seo-resource.d.ts +0 -10
  154. package/catalog/dto/sc-seo-resource.d.ts +0 -22
  155. package/catalog/internal/sc-i-category-dto.d.ts +0 -48
  156. package/catalog/internal/sc-i-seo-resource-dto.d.ts +0 -10
  157. package/catalog/internal/sc-i-virtual-category-dto.d.ts +0 -37
  158. package/config/sc-i-default-page-meta.d.ts +0 -17
  159. package/esm2022/catalog/dto/sc-i-seo-resource.mjs +0 -2
  160. package/esm2022/catalog/dto/sc-i-seo.mjs +0 -2
  161. package/esm2022/catalog/dto/sc-seo-resource.mjs +0 -23
  162. package/esm2022/catalog/internal/sc-i-category-dto.mjs +0 -3
  163. package/esm2022/catalog/internal/sc-i-product-dto.mjs +0 -2
  164. package/esm2022/catalog/internal/sc-i-seo-resource-dto.mjs +0 -2
  165. package/esm2022/catalog/internal/sc-i-virtual-category-dto.mjs +0 -2
  166. package/esm2022/config/sc-i-default-page-meta.mjs +0 -2
  167. package/esm2022/guards/catalog-seo.guard.mjs +0 -61
  168. package/esm2022/news/classes/sc-news-tile.mjs +0 -2
  169. package/esm2022/news/internal/sc-i-news-dto.mjs +0 -2
  170. package/esm2022/sc-json-ld/index.mjs +0 -3
  171. package/esm2022/sc-json-ld/sc-json-ld.component.mjs +0 -49
  172. package/esm2022/sc-json-ld/sc-json-ld.module.mjs +0 -19
  173. package/esm2022/services/index.mjs +0 -3
  174. package/esm2022/services/sc-seo.service.mjs +0 -271
  175. package/esm2022/services/types/robots-tag-type.mjs +0 -2
  176. package/guards/catalog-seo.guard.d.ts +0 -14
  177. package/news/classes/sc-news-tile.d.ts +0 -25
  178. package/news/internal/sc-i-news-dto.d.ts +0 -30
  179. package/sc-json-ld/index.d.ts +0 -2
  180. package/sc-json-ld/sc-json-ld.component.d.ts +0 -31
  181. package/sc-json-ld/sc-json-ld.module.d.ts +0 -10
  182. package/services/index.d.ts +0 -2
  183. package/services/sc-seo.service.d.ts +0 -184
  184. /package/{services → seo}/types/robots-tag-type.d.ts +0 -0
@@ -0,0 +1,206 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { inject, Injectable, RendererFactory2 } from '@angular/core';
3
+ import { Meta, Title } from '@angular/platform-browser';
4
+ import { Router } from '@angular/router';
5
+ import { ScIdOrSlugPipe } from '../../pipes/sc-id-or-slug.pipe';
6
+ import { ScMediaImageTransformerPipe } from '../../pipes/sc-media-image-transformer.pipe';
7
+ import { SC_COMPANY_INFO } from '../../tokens/sc-company-info';
8
+ import { SC_CATALOG_PAGE_META, SC_DEFAULT_PAGE_META } from '../../tokens/sc-default-page-meta';
9
+ import { SC_ID_OR_SLUG_IN_ROUTE } from '../../tokens/sc-id-or-slug-in-route';
10
+ import { SC_URLS } from '../../tokens/sc-urls';
11
+ import * as i0 from "@angular/core";
12
+ /**
13
+ * Сервис управления SEO-параметрами.
14
+ */
15
+ export class ScSeoService {
16
+ constructor() {
17
+ /**
18
+ * Данные о компании.
19
+ */
20
+ this.companyInfo = inject(SC_COMPANY_INFO);
21
+ /**
22
+ * Метаданные по умолчанию.
23
+ */
24
+ this.defaultSeo = inject(SC_DEFAULT_PAGE_META);
25
+ /**
26
+ * Метаданные страницы каталога по умолчанию.
27
+ */
28
+ this.catalogDefaultSeo = inject(SC_CATALOG_PAGE_META);
29
+ /**
30
+ * Признак необходимости использовать Id или Slug при маршрутизации.
31
+ */
32
+ this.idOrSlugInRoute = inject(SC_ID_OR_SLUG_IN_ROUTE);
33
+ /**
34
+ * Список ссылок приложения.
35
+ */
36
+ this.urls = inject(SC_URLS);
37
+ /**
38
+ * Пайп, возвращающий идентификатор или символьное обозначение (slug) исходя из настроек окружения.
39
+ */
40
+ this.idOrSlugPipe = inject(ScIdOrSlugPipe);
41
+ /**
42
+ * Пайп для формирования полного URI изображения на media сервере.
43
+ */
44
+ this.mediaImageTransformerPipe = inject(ScMediaImageTransformerPipe);
45
+ /**
46
+ * Сервис установки метаданных страницы.
47
+ */
48
+ this.metaService = inject(Meta);
49
+ /**
50
+ * Сервис маршрутизации.
51
+ */
52
+ this.router = inject(Router);
53
+ /**
54
+ * Сервис управления заголовком страницы.
55
+ */
56
+ this.titleService = inject(Title);
57
+ /**
58
+ * Объект {@link Document}, предоставляющий доступ к DOM страницы.
59
+ */
60
+ this.document = inject(DOCUMENT);
61
+ /**
62
+ * Фабрика для создания экземпляров {@link Renderer2}.
63
+ */
64
+ this.rendererFactory = inject(RendererFactory2);
65
+ /**
66
+ * Экземпляр {@link Renderer2} для безопасной работы с DOM.
67
+ */
68
+ this.renderer = this.rendererFactory.createRenderer(null, null);
69
+ }
70
+ /**
71
+ * Устанавливает seo параметры на основе указанного ресурса. Если какого-то тега нет, будет установлено значение по умолчанию.
72
+ *
73
+ * @param resource Ресурс на основе которого необходимо установить мета-теги.
74
+ * @param img Изображение. Если не пришло, то будет установлено значение по умолчанию.
75
+ * @param robots Список robots-тегов для страницы.
76
+ */
77
+ setFromResource(resource, img = this.urls.logoUrl, robots = ['index', 'follow']) {
78
+ const updatedResource = {
79
+ title: resource?.title ?? this.defaultSeo.title,
80
+ description: resource?.description ?? this.defaultSeo.description,
81
+ keywords: resource?.keywords ?? this.defaultSeo.keywords,
82
+ meta: resource?.meta ?? [],
83
+ };
84
+ const url = `${this.urls.siteUrl}${this.router.url}`;
85
+ this.setMetaTags(updatedResource.title, updatedResource.description, updatedResource.keywords, updatedResource.meta, robots);
86
+ this.setOpenGraphMetaTags(updatedResource.title, updatedResource.description, url, img);
87
+ }
88
+ /**
89
+ * Устанавливает seo параметры со значением по умолчанию.
90
+ *
91
+ * @param title Заголовок страницы.
92
+ * @param robots Список robots тегов для страницы.
93
+ */
94
+ setByDefault(title, robots = ['index', 'follow']) {
95
+ this.setFromResource({
96
+ title: `${title ?? this.defaultSeo.title} - ${this.companyInfo.name}`,
97
+ description: `${title}, ${this.defaultSeo.description}`,
98
+ }, this.urls.logoUrl, robots);
99
+ }
100
+ /**
101
+ * Устанавливает seo параметры со значением по умолчанию. Устанавливает значение "не индексировать" для поисковых роботов.
102
+ *
103
+ * @param title Заголовок страницы.
104
+ */
105
+ setByDefaultAsNoIndexed(title) {
106
+ this.setByDefault(title, ['noindex', 'nofollow', 'noarchive']);
107
+ }
108
+ /**
109
+ * Устанавливает seo-параметры для указанного элемента каталога.
110
+ *
111
+ * @param item Данные об элементе каталога.
112
+ * @param urlPath Url путь к элементу каталога. В пути должен присутствовать шаблон ':id', обозначающий идентификатор элемента каталога для подстановки.
113
+ * @param schemaOrgData Данные Schema.org элемента каталога
114
+ */
115
+ setForCategoryItem(item, urlPath, schemaOrgData) {
116
+ const url = `${this.urls.siteUrl}${urlPath.replace(':id', this.idOrSlugPipe.transform(item).toString())}`;
117
+ const title = item.seo?.title ?? `${item.name} - Купить в ${this.companyInfo.name}`;
118
+ const description = item.seo?.description ?? `${item.name} - Купить по выгодным ценам в ${this.companyInfo.name}`;
119
+ const keywords = item.seo?.keywords ?? `${item.name}, ${this.catalogDefaultSeo.keywords}`;
120
+ const meta = item.seo?.meta ?? [];
121
+ // Устанавливаем стандартные seo-параметры.
122
+ this.setMetaTags(title, description, keywords, meta, ['index', 'follow']);
123
+ this.setOpenGraphMetaTags(title, description, url, this.mediaImageTransformerPipe.transform(item.image, true));
124
+ // В том случае, если используется slug для формирования ссылок, то необходимо сформировать кононическую
125
+ // ссылку на страницу в которой используется slug (а не id).
126
+ if (this.idOrSlugInRoute === 'slug' && item.id && item.slug) {
127
+ this.setCanonicalLink(url);
128
+ }
129
+ // Устанавливаем Schema.org параметры.
130
+ if (schemaOrgData) {
131
+ this.setSchemaOrgData(schemaOrgData);
132
+ }
133
+ }
134
+ /**
135
+ * Устанавливает все meta-теги страницы. Если какой-либо из параметров не указан, для него устанавливается значение по умолчанию.
136
+ *
137
+ * @param title Заголовок страницы.
138
+ * @param description Описание страницы.
139
+ * @param keywords Ключевые слова страницы.
140
+ * @param meta Массив дополнительных значений метатегов.
141
+ * @param robots Список robots тегов для страницы.
142
+ */
143
+ setMetaTags(title = this.defaultSeo.title, description = this.defaultSeo.description, keywords = this.defaultSeo.keywords, meta = [], robots = ['index', 'follow']) {
144
+ this.titleService.setTitle(title);
145
+ this.metaService.updateTag({ name: 'description', content: description });
146
+ this.metaService.updateTag({ name: 'keywords', content: keywords });
147
+ this.metaService.updateTag({ name: 'robots', content: robots.join(', ') });
148
+ meta.forEach((tag) => {
149
+ this.metaService.updateTag({ name: tag.name, content: tag.content });
150
+ });
151
+ }
152
+ /**
153
+ * Устанавливает Open Graph meta-теги.
154
+ *
155
+ * @param ogTitle Заголовок.
156
+ * @param ogDescription Описание.
157
+ * @param ogUrl Url.
158
+ * @param ogImg Ссылка на изображение.
159
+ */
160
+ setOpenGraphMetaTags(ogTitle, ogDescription, ogUrl, ogImg) {
161
+ this.metaService.updateTag({ property: 'og:type', content: 'website' });
162
+ this.metaService.updateTag({ property: 'og:title', content: ogTitle });
163
+ this.metaService.updateTag({ property: 'og:description', content: ogDescription });
164
+ this.metaService.updateTag({ property: 'og:url', content: ogUrl });
165
+ this.metaService.updateTag({ property: 'og:image', content: ogImg });
166
+ }
167
+ /**
168
+ * Устанавливает тег канонической страницы <link rel="canonical" href="..." />.
169
+ *
170
+ * @param url URL который необходимо использовать в качестве ссылки.
171
+ */
172
+ setCanonicalLink(url) {
173
+ // Удаляем существующий link canonical.
174
+ const existingLink = this.document.querySelector('link[rel="canonical"]');
175
+ if (existingLink?.parentNode) {
176
+ this.renderer.removeChild(existingLink.parentNode, existingLink);
177
+ }
178
+ // Создаём и устанавливаем новый тег.
179
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
180
+ const link = this.renderer.createElement('link');
181
+ this.renderer.setAttribute(link, 'rel', 'canonical');
182
+ this.renderer.setAttribute(link, 'href', url);
183
+ this.renderer.appendChild(this.document.head, link);
184
+ }
185
+ /**
186
+ * Устанавливает Schema.org объект страницы.
187
+ *
188
+ * @param data Данные Schema.org для встраивания на странице.
189
+ */
190
+ setSchemaOrgData(data) {
191
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
192
+ const script = this.renderer.createElement('script');
193
+ this.renderer.setAttribute(script, 'type', 'application/ld+json');
194
+ this.renderer.appendChild(script, this.document.createTextNode(JSON.stringify(data)));
195
+ this.renderer.appendChild(this.document.head, script);
196
+ }
197
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScSeoService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
198
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScSeoService, providedIn: 'root' }); }
199
+ }
200
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScSeoService, decorators: [{
201
+ type: Injectable,
202
+ args: [{
203
+ providedIn: 'root',
204
+ }]
205
+ }] });
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtc2VvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3Nlby9zZXJ2aWNlcy9zYy1zZW8uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQWEsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFLekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBSS9DOztHQUVHO0FBSUgsTUFBTSxPQUFPLFlBQVk7SUFIekI7UUFJSTs7V0FFRztRQUNjLGdCQUFXLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXZEOztXQUVHO1FBQ2MsZUFBVSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRTNEOztXQUVHO1FBQ2Msc0JBQWlCLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFbEU7O1dBRUc7UUFDYyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRWxFOztXQUVHO1FB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LENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssZ0JBQWdCLENBQWtCLElBQW9CO1FBQzFELG1FQUFtRTtRQUNuRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUM7K0dBek5RLFlBQVk7bUhBQVosWUFBWSxjQUZULE1BQU07OzRGQUVULFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1ldGEsIFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVGhpbmcsIFdpdGhDb250ZXh0IH0gZnJvbSAnc2NoZW1hLWR0cyc7XG5cbmltcG9ydCB7IFNjSUNhdGFsb2dJdGVtIH0gZnJvbSAnLi4vLi4vY2F0YWxvZy9pbnRlcmZhY2VzL3NjLWktY2F0YWxvZy1pdGVtJztcbmltcG9ydCB7IFNjSUNhdGVnb3J5IH0gZnJvbSAnLi4vLi4vY2F0YWxvZy9pbnRlcmZhY2VzL3NjLWktY2F0ZWdvcnknO1xuaW1wb3J0IHsgU2NJZE9yU2x1Z1BpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9zYy1pZC1vci1zbHVnLnBpcGUnO1xuaW1wb3J0IHsgU2NNZWRpYUltYWdlVHJhbnNmb3JtZXJQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvc2MtbWVkaWEtaW1hZ2UtdHJhbnNmb3JtZXIucGlwZSc7XG5pbXBvcnQgeyBTQ19DT01QQU5ZX0lORk8gfSBmcm9tICcuLi8uLi90b2tlbnMvc2MtY29tcGFueS1pbmZvJztcbmltcG9ydCB7IFNDX0NBVEFMT0dfUEFHRV9NRVRBLCBTQ19ERUZBVUxUX1BBR0VfTUVUQSB9IGZyb20gJy4uLy4uL3Rva2Vucy9zYy1kZWZhdWx0LXBhZ2UtbWV0YSc7XG5pbXBvcnQgeyBTQ19JRF9PUl9TTFVHX0lOX1JPVVRFIH0gZnJvbSAnLi4vLi4vdG9rZW5zL3NjLWlkLW9yLXNsdWctaW4tcm91dGUnO1xuaW1wb3J0IHsgU0NfVVJMUyB9IGZyb20gJy4uLy4uL3Rva2Vucy9zYy11cmxzJztcbmltcG9ydCB7IFNjSVNlbyB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2MtaS1zZW8nO1xuaW1wb3J0IHsgUm9ib3RzVGFnVHlwZSB9IGZyb20gJy4uL3R5cGVzL3JvYm90cy10YWctdHlwZSc7XG5cbi8qKlxuICog0KHQtdGA0LLQuNGBINGD0L/RgNCw0LLQu9C10L3QuNGPIFNFTy3Qv9Cw0YDQsNC80LXRgtGA0LDQvNC4LlxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTY1Nlb1NlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqINCU0LDQvdC90YvQtSDQviDQutC+0LzQv9Cw0L3QuNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcGFueUluZm8gPSBpbmplY3QoU0NfQ09NUEFOWV9JTkZPKTtcblxuICAgIC8qKlxuICAgICAqINCc0LXRgtCw0LTQsNC90L3Ri9C1INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFNlbyA9IGluamVjdChTQ19ERUZBVUxUX1BBR0VfTUVUQSk7XG5cbiAgICAvKipcbiAgICAgKiDQnNC10YLQsNC00LDQvdC90YvQtSDRgdGC0YDQsNC90LjRhtGLINC60LDRgtCw0LvQvtCz0LAg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXRhbG9nRGVmYXVsdFNlbyA9IGluamVjdChTQ19DQVRBTE9HX1BBR0VfTUVUQSk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiDQvdC10L7QsdGF0L7QtNC40LzQvtGB0YLQuCDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0YwgSWQg0LjQu9C4IFNsdWcg0L/RgNC4INC80LDRgNGI0YDRg9GC0LjQt9Cw0YbQuNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaWRPclNsdWdJblJvdXRlID0gaW5qZWN0KFNDX0lEX09SX1NMVUdfSU5fUk9VVEUpO1xuXG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INGB0YHRi9C70L7QuiDQv9GA0LjQu9C+0LbQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVybHMgPSBpbmplY3QoU0NfVVJMUyk7XG5cbiAgICAvKipcbiAgICAgKiDQn9Cw0LnQvywg0LLQvtC30LLRgNCw0YnQsNGO0YnQuNC5INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC40LvQuCDRgdC40LzQstC+0LvRjNC90L7QtSDQvtCx0L7Qt9C90LDRh9C10L3QuNC1IChzbHVnKSDQuNGB0YXQvtC00Y8g0LjQtyDQvdCw0YHRgtGA0L7QtdC6INC+0LrRgNGD0LbQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwcml2YXRlIGlkT3JTbHVnUGlwZTogU2NJZE9yU2x1Z1BpcGUgPSBpbmplY3QoU2NJZE9yU2x1Z1BpcGUpO1xuXG4gICAgLyoqXG4gICAgICog0J/QsNC50L8g0LTQu9GPINGE0L7RgNC80LjRgNC+0LLQsNC90LjRjyDQv9C+0LvQvdC+0LPQviBVUkkg0LjQt9C+0LHRgNCw0LbQtdC90LjRjyDQvdCwIG1lZGlhINGB0LXRgNCy0LXRgNC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVkaWFJbWFnZVRyYW5zZm9ybWVyUGlwZSA9IGluamVjdChTY01lZGlhSW1hZ2VUcmFuc2Zvcm1lclBpcGUpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINGD0YHRgtCw0L3QvtCy0LrQuCDQvNC10YLQsNC00LDQvdC90YvRhSDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWV0YVNlcnZpY2UgPSBpbmplY3QoTWV0YSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LzQsNGA0YjRgNGD0YLQuNC30LDRhtC40LguXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDRg9C/0YDQsNCy0LvQtdC90LjRjyDQt9Cw0LPQvtC70L7QstC60L7QvCDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdGl0bGVTZXJ2aWNlID0gaW5qZWN0KFRpdGxlKTtcblxuICAgIC8qKlxuICAgICAqINCe0LHRitC10LrRgiB7QGxpbmsgRG9jdW1lbnR9LCDQv9GA0LXQtNC+0YHRgtCw0LLQu9GP0Y7RidC40Lkg0LTQvtGB0YLRg9C/INC6IERPTSDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gICAgLyoqXG4gICAgICog0KTQsNCx0YDQuNC60LAg0LTQu9GPINGB0L7Qt9C00LDQvdC40Y8g0Y3QutC30LXQvNC/0LvRj9GA0L7QsiB7QGxpbmsgUmVuZGVyZXIyfS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyRmFjdG9yeSA9IGluamVjdChSZW5kZXJlckZhY3RvcnkyKTtcblxuICAgIC8qKlxuICAgICAqINCt0LrQt9C10LzQv9C70Y/RgCB7QGxpbmsgUmVuZGVyZXIyfSDQtNC70Y8g0LHQtdC30L7Qv9Cw0YHQvdC+0Lkg0YDQsNCx0L7RgtGLINGBIERPTS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIgPSB0aGlzLnJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCIHNlbyDQv9Cw0YDQsNC80LXRgtGA0Ysg0L3QsCDQvtGB0L3QvtCy0LUg0YPQutCw0LfQsNC90L3QvtCz0L4g0YDQtdGB0YPRgNGB0LAuINCV0YHQu9C4INC60LDQutC+0LPQvi3RgtC+INGC0LXQs9CwINC90LXRgiwg0LHRg9C00LXRgiDRg9GB0YLQsNC90L7QstC70LXQvdC+INC30L3QsNGH0LXQvdC40LUg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVzb3VyY2Ug0KDQtdGB0YPRgNGBINC90LAg0L7RgdC90L7QstC1INC60L7RgtC+0YDQvtCz0L4g0L3QtdC+0LHRhdC+0LTQuNC80L4g0YPRgdGC0LDQvdC+0LLQuNGC0Ywg0LzQtdGC0LAt0YLQtdCz0LguXG4gICAgICogQHBhcmFtIGltZyDQmNC30L7QsdGA0LDQttC10L3QuNC1LiDQldGB0LvQuCDQvdC1INC/0YDQuNGI0LvQviwg0YLQviDQsdGD0LTQtdGCINGD0YHRgtCw0L3QvtCy0LvQtdC90L4g0LfQvdCw0YfQtdC90LjQtSDQv9C+INGD0LzQvtC70YfQsNC90LjRji5cbiAgICAgKiBAcGFyYW0gcm9ib3RzINCh0L/QuNGB0L7QuiByb2JvdHMt0YLQtdCz0L7QsiDQtNC70Y8g0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0RnJvbVJlc291cmNlKHJlc291cmNlPzogU2NJU2VvLCBpbWc6IHN0cmluZyA9IHRoaXMudXJscy5sb2dvVXJsLCByb2JvdHM6IFJvYm90c1RhZ1R5cGVbXSA9IFsnaW5kZXgnLCAnZm9sbG93J10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZFJlc291cmNlID0ge1xuICAgICAgICAgICAgdGl0bGU6IHJlc291cmNlPy50aXRsZSA/PyB0aGlzLmRlZmF1bHRTZW8udGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcmVzb3VyY2U/LmRlc2NyaXB0aW9uID8/IHRoaXMuZGVmYXVsdFNlby5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGtleXdvcmRzOiByZXNvdXJjZT8ua2V5d29yZHMgPz8gdGhpcy5kZWZhdWx0U2VvLmtleXdvcmRzLFxuICAgICAgICAgICAgbWV0YTogcmVzb3VyY2U/Lm1ldGEgPz8gW10sXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMudXJscy5zaXRlVXJsfSR7dGhpcy5yb3V0ZXIudXJsfWA7XG5cbiAgICAgICAgdGhpcy5zZXRNZXRhVGFncyh1cGRhdGVkUmVzb3VyY2UudGl0bGUsIHVwZGF0ZWRSZXNvdXJjZS5kZXNjcmlwdGlvbiwgdXBkYXRlZFJlc291cmNlLmtleXdvcmRzLCB1cGRhdGVkUmVzb3VyY2UubWV0YSwgcm9ib3RzKTtcbiAgICAgICAgdGhpcy5zZXRPcGVuR3JhcGhNZXRhVGFncyh1cGRhdGVkUmVzb3VyY2UudGl0bGUsIHVwZGF0ZWRSZXNvdXJjZS5kZXNjcmlwdGlvbiwgdXJsLCBpbWcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCIHNlbyDQv9Cw0YDQsNC80LXRgtGA0Ysg0YHQviDQt9C90LDRh9C10L3QuNC10Lwg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGl0bGUg0JfQsNCz0L7Qu9C+0LLQvtC6INGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICogQHBhcmFtIHJvYm90cyDQodC/0LjRgdC+0Logcm9ib3RzINGC0LXQs9C+0LIg0LTQu9GPINGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICovXG4gICAgcHVibGljIHNldEJ5RGVmYXVsdCh0aXRsZT86IHN0cmluZywgcm9ib3RzOiBSb2JvdHNUYWdUeXBlW10gPSBbJ2luZGV4JywgJ2ZvbGxvdyddKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0RnJvbVJlc291cmNlKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBgJHt0aXRsZSA/PyB0aGlzLmRlZmF1bHRTZW8udGl0bGV9IC0gJHt0aGlzLmNvbXBhbnlJbmZvLm5hbWV9YCxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogYCR7dGl0bGV9LCAke3RoaXMuZGVmYXVsdFNlby5kZXNjcmlwdGlvbn1gLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMudXJscy5sb2dvVXJsLFxuICAgICAgICAgICAgcm9ib3RzXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIgc2VvINC/0LDRgNCw0LzQtdGC0YDRiyDRgdC+INC30L3QsNGH0LXQvdC40LXQvCDQv9C+INGD0LzQvtC70YfQsNC90LjRji4g0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0LfQvdCw0YfQtdC90LjQtSBcItC90LUg0LjQvdC00LXQutGB0LjRgNC+0LLQsNGC0YxcIiDQtNC70Y8g0L/QvtC40YHQutC+0LLRi9GFINGA0L7QsdC+0YLQvtCyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRpdGxlINCX0LDQs9C+0LvQvtCy0L7QuiDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRCeURlZmF1bHRBc05vSW5kZXhlZCh0aXRsZT86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldEJ5RGVmYXVsdCh0aXRsZSwgWydub2luZGV4JywgJ25vZm9sbG93JywgJ25vYXJjaGl2ZSddKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiBzZW8t0L/QsNGA0LDQvNC10YLRgNGLINC00LvRjyDRg9C60LDQt9Cw0L3QvdC+0LPQviDRjdC70LXQvNC10L3RgtCwINC60LDRgtCw0LvQvtCz0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaXRlbSDQlNCw0L3QvdGL0LUg0L7QsSDRjdC70LXQvNC10L3RgtC1INC60LDRgtCw0LvQvtCz0LAuXG4gICAgICogQHBhcmFtIHVybFBhdGggVXJsINC/0YPRgtGMINC6INGN0LvQtdC80LXQvdGC0YMg0LrQsNGC0LDQu9C+0LPQsC4g0JIg0L/Rg9GC0Lgg0LTQvtC70LbQtdC9INC/0YDQuNGB0YPRgtGB0YLQstC+0LLQsNGC0Ywg0YjQsNCx0LvQvtC9ICc6aWQnLCDQvtCx0L7Qt9C90LDRh9Cw0Y7RidC40Lkg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0Y3Qu9C10LzQtdC90YLQsCDQutCw0YLQsNC70L7Qs9CwINC00LvRjyDQv9C+0LTRgdGC0LDQvdC+0LLQutC4LlxuICAgICAqIEBwYXJhbSBzY2hlbWFPcmdEYXRhINCU0LDQvdC90YvQtSBTY2hlbWEub3JnINGN0LvQtdC80LXQvdGC0LAg0LrQsNGC0LDQu9C+0LPQsFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRGb3JDYXRlZ29yeUl0ZW0oaXRlbTogU2NJQ2F0YWxvZ0l0ZW08U2NJQ2F0ZWdvcnk+LCB1cmxQYXRoOiBzdHJpbmcsIHNjaGVtYU9yZ0RhdGE/OiBXaXRoQ29udGV4dDxUaGluZz4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy51cmxzLnNpdGVVcmx9JHt1cmxQYXRoLnJlcGxhY2UoJzppZCcsIHRoaXMuaWRPclNsdWdQaXBlLnRyYW5zZm9ybShpdGVtKS50b1N0cmluZygpKX1gO1xuICAgICAgICBjb25zdCB0aXRsZSA9IGl0ZW0uc2VvPy50aXRsZSA/PyBgJHtpdGVtLm5hbWV9IC0g0JrRg9C/0LjRgtGMINCyICR7dGhpcy5jb21wYW55SW5mby5uYW1lfWA7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gaXRlbS5zZW8/LmRlc2NyaXB0aW9uID8/IGAke2l0ZW0ubmFtZX0gLSDQmtGD0L/QuNGC0Ywg0L/QviDQstGL0LPQvtC00L3Ri9C8INGG0LXQvdCw0Lwg0LIgJHt0aGlzLmNvbXBhbnlJbmZvLm5hbWV9YDtcbiAgICAgICAgY29uc3Qga2V5d29yZHMgPSBpdGVtLnNlbz8ua2V5d29yZHMgPz8gYCR7aXRlbS5uYW1lfSwgJHt0aGlzLmNhdGFsb2dEZWZhdWx0U2VvLmtleXdvcmRzfWA7XG4gICAgICAgIGNvbnN0IG1ldGEgPSBpdGVtLnNlbz8ubWV0YSA/PyBbXTtcblxuICAgICAgICAvLyDQo9GB0YLQsNC90LDQstC70LjQstCw0LXQvCDRgdGC0LDQvdC00LDRgNGC0L3Ri9C1IHNlby3Qv9Cw0YDQsNC80LXRgtGA0YsuXG4gICAgICAgIHRoaXMuc2V0TWV0YVRhZ3ModGl0bGUsIGRlc2NyaXB0aW9uLCBrZXl3b3JkcywgbWV0YSwgWydpbmRleCcsICdmb2xsb3cnXSk7XG4gICAgICAgIHRoaXMuc2V0T3BlbkdyYXBoTWV0YVRhZ3ModGl0bGUsIGRlc2NyaXB0aW9uLCB1cmwsIHRoaXMubWVkaWFJbWFnZVRyYW5zZm9ybWVyUGlwZS50cmFuc2Zvcm0oaXRlbS5pbWFnZSwgdHJ1ZSkpO1xuXG4gICAgICAgIC8vINCSINGC0L7QvCDRgdC70YPRh9Cw0LUsINC10YHQu9C4INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyBzbHVnINC00LvRjyDRhNC+0YDQvNC40YDQvtCy0LDQvdC40Y8g0YHRgdGL0LvQvtC6LCDRgtC+INC90LXQvtCx0YXQvtC00LjQvNC+INGB0YTQvtGA0LzQuNGA0L7QstCw0YLRjCDQutC+0L3QvtC90LjRh9C10YHQutGD0Y5cbiAgICAgICAgLy8g0YHRgdGL0LvQutGDINC90LAg0YHRgtGA0LDQvdC40YbRgyDQsiDQutC+0YLQvtGA0L7QuSDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8gc2x1ZyAo0LAg0L3QtSBpZCkuXG4gICAgICAgIGlmICh0aGlzLmlkT3JTbHVnSW5Sb3V0ZSA9PT0gJ3NsdWcnICYmIGl0ZW0uaWQgJiYgaXRlbS5zbHVnKSB7XG4gICAgICAgICAgICB0aGlzLnNldENhbm9uaWNhbExpbmsodXJsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdC8IFNjaGVtYS5vcmcg0L/QsNGA0LDQvNC10YLRgNGLLlxuICAgICAgICBpZiAoc2NoZW1hT3JnRGF0YSkge1xuICAgICAgICAgICAgdGhpcy5zZXRTY2hlbWFPcmdEYXRhKHNjaGVtYU9yZ0RhdGEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0LLRgdC1IG1ldGEt0YLQtdCz0Lgg0YHRgtGA0LDQvdC40YbRiy4g0JXRgdC70Lgg0LrQsNC60L7QuS3Qu9C40LHQviDQuNC3INC/0LDRgNCw0LzQtdGC0YDQvtCyINC90LUg0YPQutCw0LfQsNC9LCDQtNC70Y8g0L3QtdCz0L4g0YPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YLRgdGPINC30L3QsNGH0LXQvdC40LUg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGl0bGUg0JfQsNCz0L7Qu9C+0LLQvtC6INGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICogQHBhcmFtIGRlc2NyaXB0aW9uINCe0L/QuNGB0LDQvdC40LUg0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKiBAcGFyYW0ga2V5d29yZHMg0JrQu9GO0YfQtdCy0YvQtSDRgdC70L7QstCwINGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICogQHBhcmFtIG1ldGEg0JzQsNGB0YHQuNCyINC00L7Qv9C+0LvQvdC40YLQtdC70YzQvdGL0YUg0LfQvdCw0YfQtdC90LjQuSDQvNC10YLQsNGC0LXQs9C+0LIuXG4gICAgICogQHBhcmFtIHJvYm90cyDQodC/0LjRgdC+0Logcm9ib3RzINGC0LXQs9C+0LIg0LTQu9GPINGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRNZXRhVGFncyhcbiAgICAgICAgdGl0bGU6IHN0cmluZyA9IHRoaXMuZGVmYXVsdFNlby50aXRsZSxcbiAgICAgICAgZGVzY3JpcHRpb246IHN0cmluZyA9IHRoaXMuZGVmYXVsdFNlby5kZXNjcmlwdGlvbixcbiAgICAgICAga2V5d29yZHM6IHN0cmluZyA9IHRoaXMuZGVmYXVsdFNlby5rZXl3b3JkcyxcbiAgICAgICAgbWV0YTogU2NJU2VvWydtZXRhJ10gPSBbXSxcbiAgICAgICAgcm9ib3RzOiBSb2JvdHNUYWdUeXBlW10gPSBbJ2luZGV4JywgJ2ZvbGxvdyddXG4gICAgKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKHRpdGxlKTtcblxuICAgICAgICB0aGlzLm1ldGFTZXJ2aWNlLnVwZGF0ZVRhZyh7IG5hbWU6ICdkZXNjcmlwdGlvbicsIGNvbnRlbnQ6IGRlc2NyaXB0aW9uIH0pO1xuICAgICAgICB0aGlzLm1ldGFTZXJ2aWNlLnVwZGF0ZVRhZyh7IG5hbWU6ICdrZXl3b3JkcycsIGNvbnRlbnQ6IGtleXdvcmRzIH0pO1xuICAgICAgICB0aGlzLm1ldGFTZXJ2aWNlLnVwZGF0ZVRhZyh7IG5hbWU6ICdyb2JvdHMnLCBjb250ZW50OiByb2JvdHMuam9pbignLCAnKSB9KTtcblxuICAgICAgICBtZXRhLmZvckVhY2goKHRhZykgPT4ge1xuICAgICAgICAgICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoeyBuYW1lOiB0YWcubmFtZSwgY29udGVudDogdGFnLmNvbnRlbnQgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCIE9wZW4gR3JhcGggbWV0YS3RgtC10LPQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvZ1RpdGxlINCX0LDQs9C+0LvQvtCy0L7Qui5cbiAgICAgKiBAcGFyYW0gb2dEZXNjcmlwdGlvbiDQntC/0LjRgdCw0L3QuNC1LlxuICAgICAqIEBwYXJhbSBvZ1VybCBVcmwuXG4gICAgICogQHBhcmFtIG9nSW1nINCh0YHRi9C70LrQsCDQvdCwINC40LfQvtCx0YDQsNC20LXQvdC40LUuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRPcGVuR3JhcGhNZXRhVGFncyhvZ1RpdGxlOiBzdHJpbmcsIG9nRGVzY3JpcHRpb246IHN0cmluZywgb2dVcmw6IHN0cmluZywgb2dJbWc6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLm1ldGFTZXJ2aWNlLnVwZGF0ZVRhZyh7IHByb3BlcnR5OiAnb2c6dHlwZScsIGNvbnRlbnQ6ICd3ZWJzaXRlJyB9KTtcbiAgICAgICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoeyBwcm9wZXJ0eTogJ29nOnRpdGxlJywgY29udGVudDogb2dUaXRsZSB9KTtcbiAgICAgICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoeyBwcm9wZXJ0eTogJ29nOmRlc2NyaXB0aW9uJywgY29udGVudDogb2dEZXNjcmlwdGlvbiB9KTtcbiAgICAgICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoeyBwcm9wZXJ0eTogJ29nOnVybCcsIGNvbnRlbnQ6IG9nVXJsIH0pO1xuICAgICAgICB0aGlzLm1ldGFTZXJ2aWNlLnVwZGF0ZVRhZyh7IHByb3BlcnR5OiAnb2c6aW1hZ2UnLCBjb250ZW50OiBvZ0ltZyB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDRgtC10LMg0LrQsNC90L7QvdC40YfQtdGB0LrQvtC5INGB0YLRgNCw0L3QuNGG0YsgPGxpbmsgcmVsPVwiY2Fub25pY2FsXCIgaHJlZj1cIi4uLlwiIC8+LlxuICAgICAqXG4gICAgICogQHBhcmFtIHVybCBVUkwg0LrQvtGC0L7RgNGL0Lkg0L3QtdC+0LHRhdC+0LTQuNC80L4g0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINCyINC60LDRh9C10YHRgtCy0LUg0YHRgdGL0LvQutC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0Q2Fub25pY2FsTGluayh1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICAvLyDQo9C00LDQu9GP0LXQvCDRgdGD0YnQtdGB0YLQstGD0Y7RidC40LkgbGluayBjYW5vbmljYWwuXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nTGluayA9IHRoaXMuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbGlua1tyZWw9XCJjYW5vbmljYWxcIl0nKTtcblxuICAgICAgICBpZiAoZXhpc3RpbmdMaW5rPy5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKGV4aXN0aW5nTGluay5wYXJlbnROb2RlLCBleGlzdGluZ0xpbmspO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g0KHQvtC30LTQsNGR0Lwg0Lgg0YPRgdGC0LDQvdCw0LLQu9C40LLQsNC10Lwg0L3QvtCy0YvQuSDRgtC10LMuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFzc2lnbm1lbnRcbiAgICAgICAgY29uc3QgbGluayA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnbGluaycpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShsaW5rLCAncmVsJywgJ2Nhbm9uaWNhbCcpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShsaW5rLCAnaHJlZicsIHVybCk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5oZWFkLCBsaW5rKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiBTY2hlbWEub3JnINC+0LHRitC10LrRgiDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGEg0JTQsNC90L3Ri9C1IFNjaGVtYS5vcmcg0LTQu9GPINCy0YHRgtGA0LDQuNCy0LDQvdC40Y8g0L3QsCDRgdGC0YDQsNC90LjRhtC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0U2NoZW1hT3JnRGF0YTxUIGV4dGVuZHMgVGhpbmc+KGRhdGE6IFdpdGhDb250ZXh0PFQ+KTogdm9pZCB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFzc2lnbm1lbnRcbiAgICAgICAgY29uc3Qgc2NyaXB0ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoc2NyaXB0LCAndHlwZScsICdhcHBsaWNhdGlvbi9sZCtqc29uJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoc2NyaXB0LCB0aGlzLmRvY3VtZW50LmNyZWF0ZVRleHROb2RlKEpTT04uc3RyaW5naWZ5KGRhdGEpKSk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5oZWFkLCBzY3JpcHQpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './robots-tag-type';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3Nlby90eXBlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9yb2JvdHMtdGFnLXR5cGUnO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9ib3RzLXRhZy10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zZW8vdHlwZXMvcm9ib3RzLXRhZy10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqINCi0LjQvyDQtNC+0L/Rg9GB0YLQuNC80YvRhSDQt9C90LDRh9C10L3QuNC5INC00LvRjyByb2JvdHMuXG4gKi9cbmV4cG9ydCB0eXBlIFJvYm90c1RhZ1R5cGUgPSAnaW5kZXgnIHwgJ25vaW5kZXgnIHwgJ2ZvbGxvdycgfCAnbm9mb2xsb3cnIHwgJ25vYXJjaGl2ZSc7XG4iXX0=
@@ -7,4 +7,4 @@ export const SC_DEFAULT_PAGE_META = new InjectionToken('SC_DEFAULT_PAGE_META');
7
7
  * Токен внедрения мета-данных страницы каталога.
8
8
  */
9
9
  export const SC_CATALOG_PAGE_META = new InjectionToken('SC_CATALOG_PAGE_META');
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZGVmYXVsdC1wYWdlLW1ldGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3Rva2Vucy9zYy1kZWZhdWx0LXBhZ2UtbWV0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSS9DOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQXFCLHNCQUFzQixDQUFDLENBQUM7QUFFbkc7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsQ0FBcUIsc0JBQXNCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNjSURlZmF1bHRQYWdlTWV0YSB9IGZyb20gJy4uL2NvbmZpZy9zYy1pLWRlZmF1bHQtcGFnZS1tZXRhJztcblxuLyoqXG4gKiDQotC+0LrQtdC9INCy0L3QtdC00YDQtdC90LjRjyDQvNC10YLQsC3QtNCw0L3QvdGL0YUg0YHRgtGA0LDQvdC40YbRiyDQv9C+INGD0LzQvtC70YfQsNC90LjRji5cbiAqL1xuZXhwb3J0IGNvbnN0IFNDX0RFRkFVTFRfUEFHRV9NRVRBID0gbmV3IEluamVjdGlvblRva2VuPFNjSURlZmF1bHRQYWdlTWV0YT4oJ1NDX0RFRkFVTFRfUEFHRV9NRVRBJyk7XG5cbi8qKlxuICog0KLQvtC60LXQvSDQstC90LXQtNGA0LXQvdC40Y8g0LzQtdGC0LAt0LTQsNC90L3Ri9GFINGB0YLRgNCw0L3QuNGG0Ysg0LrQsNGC0LDQu9C+0LPQsC5cbiAqL1xuZXhwb3J0IGNvbnN0IFNDX0NBVEFMT0dfUEFHRV9NRVRBID0gbmV3IEluamVjdGlvblRva2VuPFNjSURlZmF1bHRQYWdlTWV0YT4oJ1NDX0NBVEFMT0dfUEFHRV9NRVRBJyk7XG4iXX0=
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZGVmYXVsdC1wYWdlLW1ldGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3Rva2Vucy9zYy1kZWZhdWx0LXBhZ2UtbWV0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSS9DOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQXFCLHNCQUFzQixDQUFDLENBQUM7QUFFbkc7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsQ0FBcUIsc0JBQXNCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNjSURlZmF1bHRQYWdlTWV0YSB9IGZyb20gJy4uL3Nlby9pbnRlcmZhY2VzL3NjLWktZGVmYXVsdC1wYWdlLW1ldGEnO1xuXG4vKipcbiAqINCi0L7QutC10L0g0LLQvdC10LTRgNC10L3QuNGPINC80LXRgtCwLdC00LDQvdC90YvRhSDRgdGC0YDQsNC90LjRhtGLINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLlxuICovXG5leHBvcnQgY29uc3QgU0NfREVGQVVMVF9QQUdFX01FVEEgPSBuZXcgSW5qZWN0aW9uVG9rZW48U2NJRGVmYXVsdFBhZ2VNZXRhPignU0NfREVGQVVMVF9QQUdFX01FVEEnKTtcblxuLyoqXG4gKiDQotC+0LrQtdC9INCy0L3QtdC00YDQtdC90LjRjyDQvNC10YLQsC3QtNCw0L3QvdGL0YUg0YHRgtGA0LDQvdC40YbRiyDQutCw0YLQsNC70L7Qs9CwLlxuICovXG5leHBvcnQgY29uc3QgU0NfQ0FUQUxPR19QQUdFX01FVEEgPSBuZXcgSW5qZWN0aW9uVG9rZW48U2NJRGVmYXVsdFBhZ2VNZXRhPignU0NfQ0FUQUxPR19QQUdFX01FVEEnKTtcbiJdfQ==