@igo2/geo 17.0.0-next.0 → 17.0.0-next.10

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 (598) hide show
  1. package/assets/icons/cross_black_18px.svg +88 -88
  2. package/assets/icons/place_blue_36px.svg +55 -55
  3. package/assets/icons/place_green_36px.svg +55 -55
  4. package/assets/icons/place_red_36px.svg +55 -55
  5. package/assets/icons/place_yellow_36px.svg +55 -55
  6. package/assets/images/north-direction.png +0 -0
  7. package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +10 -8
  8. package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +11 -10
  9. package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +7 -6
  10. package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +5 -5
  11. package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +22 -20
  12. package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +8 -8
  13. package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +34 -16
  14. package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +9 -5
  15. package/esm2022/lib/catalog/catalog-library/index.mjs +2 -7
  16. package/esm2022/lib/catalog/catalog.module.mjs +15 -8
  17. package/esm2022/lib/catalog/index.mjs +2 -7
  18. package/esm2022/lib/catalog/shared/catalog.abstract.mjs +1 -1
  19. package/esm2022/lib/catalog/shared/catalog.enum.mjs +1 -1
  20. package/esm2022/lib/catalog/shared/catalog.interface.mjs +1 -1
  21. package/esm2022/lib/catalog/shared/catalog.service.mjs +12 -8
  22. package/esm2022/lib/catalog/shared/catalogs.mjs +1 -1
  23. package/esm2022/lib/catalog/shared/index.mjs +1 -1
  24. package/esm2022/lib/datasource/index.mjs +1 -1
  25. package/esm2022/lib/datasource/shared/capabilities.interface.mjs +1 -1
  26. package/esm2022/lib/datasource/shared/capabilities.service.mjs +4 -4
  27. package/esm2022/lib/datasource/shared/datasource.service.mjs +10 -8
  28. package/esm2022/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
  29. package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +1 -1
  30. package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +1 -1
  31. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
  32. package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
  33. package/esm2022/lib/datasource/shared/datasources/datasource.mjs +1 -1
  34. package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
  35. package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +1 -1
  36. package/esm2022/lib/datasource/shared/datasources/index.mjs +1 -1
  37. package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +1 -1
  38. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
  39. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +1 -1
  40. package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +3 -3
  41. package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
  42. package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +1 -1
  43. package/esm2022/lib/datasource/shared/options/options-api.providers.mjs +2 -2
  44. package/esm2022/lib/datasource/shared/options/options-api.service.mjs +3 -3
  45. package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +20 -16
  46. package/esm2022/lib/directions/directions-buttons/index.mjs +1 -1
  47. package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +9 -9
  48. package/esm2022/lib/directions/directions-inputs/index.mjs +1 -1
  49. package/esm2022/lib/directions/directions-results/directions-results.component.mjs +9 -9
  50. package/esm2022/lib/directions/directions-results/index.mjs +1 -1
  51. package/esm2022/lib/directions/directions-sources/directions-source.interface.mjs +5 -2
  52. package/esm2022/lib/directions/directions-sources/directions-source.mjs +1 -1
  53. package/esm2022/lib/directions/directions-sources/directions-source.provider.mjs +9 -2
  54. package/esm2022/lib/directions/directions-sources/index.mjs +1 -1
  55. package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +72 -41
  56. package/esm2022/lib/directions/directions.component.mjs +74 -20
  57. package/esm2022/lib/directions/directions.module.mjs +6 -12
  58. package/esm2022/lib/directions/directions.provider.mjs +16 -0
  59. package/esm2022/lib/directions/index.mjs +2 -1
  60. package/esm2022/lib/directions/shared/directions-source.service.mjs +1 -1
  61. package/esm2022/lib/directions/shared/directions.enum.mjs +1 -1
  62. package/esm2022/lib/directions/shared/directions.interface.mjs +1 -1
  63. package/esm2022/lib/directions/shared/directions.service.mjs +37 -27
  64. package/esm2022/lib/directions/shared/directions.utils.mjs +22 -22
  65. package/esm2022/lib/directions/shared/index.mjs +1 -1
  66. package/esm2022/lib/directions/shared/store.mjs +2 -2
  67. package/esm2022/lib/download/download-button/download-button.component.mjs +7 -7
  68. package/esm2022/lib/download/download-button/index.mjs +1 -1
  69. package/esm2022/lib/download/download.module.mjs +5 -5
  70. package/esm2022/lib/download/index.mjs +1 -1
  71. package/esm2022/lib/download/shared/download.interface.mjs +1 -1
  72. package/esm2022/lib/download/shared/download.service.mjs +6 -6
  73. package/esm2022/lib/download/shared/index.mjs +1 -1
  74. package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +7 -7
  75. package/esm2022/lib/draw/draw/draw-popup.component.mjs +9 -9
  76. package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +10 -7
  77. package/esm2022/lib/draw/draw/draw.component.mjs +11 -11
  78. package/esm2022/lib/draw/draw/draw.module.mjs +5 -5
  79. package/esm2022/lib/draw/drawingTool.module.mjs +5 -5
  80. package/esm2022/lib/draw/index.mjs +1 -1
  81. package/esm2022/lib/draw/shared/draw-icon.service.mjs +6 -6
  82. package/esm2022/lib/draw/shared/draw.enum.mjs +1 -1
  83. package/esm2022/lib/draw/shared/draw.interface.mjs +1 -1
  84. package/esm2022/lib/draw/shared/draw.utils.mjs +1 -1
  85. package/esm2022/lib/draw/shared/index.mjs +1 -1
  86. package/esm2022/lib/environment/environment.interface.mjs +1 -1
  87. package/esm2022/lib/environment/index.mjs +1 -1
  88. package/esm2022/lib/feature/feature-details/feature-details.component.mjs +18 -14
  89. package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +4 -4
  90. package/esm2022/lib/feature/feature-details/feature-details.module.mjs +13 -7
  91. package/esm2022/lib/feature/feature-details/index.mjs +2 -7
  92. package/esm2022/lib/feature/feature-form/feature-form.component.mjs +7 -7
  93. package/esm2022/lib/feature/feature-form/feature-form.module.mjs +5 -5
  94. package/esm2022/lib/feature/feature.module.mjs +15 -8
  95. package/esm2022/lib/feature/index.mjs +2 -7
  96. package/esm2022/lib/feature/shared/feature-store.utils.mjs +1 -1
  97. package/esm2022/lib/feature/shared/feature.enums.mjs +1 -1
  98. package/esm2022/lib/feature/shared/feature.interfaces.mjs +1 -1
  99. package/esm2022/lib/feature/shared/feature.utils.mjs +2 -2
  100. package/esm2022/lib/feature/shared/index.mjs +1 -1
  101. package/esm2022/lib/feature/shared/store.mjs +2 -2
  102. package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +2 -2
  103. package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +2 -2
  104. package/esm2022/lib/feature/shared/strategies/in-map-resolution.mjs +2 -2
  105. package/esm2022/lib/feature/shared/strategies/index.mjs +1 -1
  106. package/esm2022/lib/feature/shared/strategies/loading-layer.mjs +2 -2
  107. package/esm2022/lib/feature/shared/strategies/loading.mjs +2 -2
  108. package/esm2022/lib/feature/shared/strategies/search.mjs +2 -2
  109. package/esm2022/lib/feature/shared/strategies/selection.mjs +2 -2
  110. package/esm2022/lib/feature/shared/strategies.utils.mjs +1 -1
  111. package/esm2022/lib/filter/filter.module.mjs +8 -8
  112. package/esm2022/lib/filter/index.mjs +2 -36
  113. package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +8 -8
  114. package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +7 -7
  115. package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +11 -11
  116. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +9 -9
  117. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +21 -23
  118. package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +5 -5
  119. package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +8 -8
  120. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +4 -4
  121. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +7 -7
  122. package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +4 -4
  123. package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +3 -3
  124. package/esm2022/lib/filter/shared/ogc-filter.interface.mjs +1 -1
  125. package/esm2022/lib/filter/shared/ogc-filter.mjs +46 -3
  126. package/esm2022/lib/filter/shared/ogc-filter.service.mjs +3 -3
  127. package/esm2022/lib/filter/shared/spatial-filter.service.mjs +9 -7
  128. package/esm2022/lib/filter/shared/time-filter.service.mjs +3 -3
  129. package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +27 -25
  130. package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +9 -9
  131. package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +8 -8
  132. package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +8 -8
  133. package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +12 -12
  134. package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +8 -8
  135. package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +4 -4
  136. package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +5 -5
  137. package/esm2022/lib/geo.module.mjs +5 -5
  138. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +5 -5
  139. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +8 -8
  140. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +9 -5
  141. package/esm2022/lib/geometry/geometry-form-field/index.mjs +3 -8
  142. package/esm2022/lib/geometry/geometry.module.mjs +5 -5
  143. package/esm2022/lib/geometry/index.mjs +1 -1
  144. package/esm2022/lib/geometry/shared/controls/draw.mjs +1 -1
  145. package/esm2022/lib/geometry/shared/controls/index.mjs +1 -1
  146. package/esm2022/lib/geometry/shared/controls/modify.mjs +1 -1
  147. package/esm2022/lib/geometry/shared/controls/slice.mjs +1 -1
  148. package/esm2022/lib/geometry/shared/geometry.errors.mjs +1 -1
  149. package/esm2022/lib/geometry/shared/geometry.interfaces.mjs +1 -1
  150. package/esm2022/lib/geometry/shared/geometry.utils.mjs +1 -1
  151. package/esm2022/lib/geometry/shared/index.mjs +1 -1
  152. package/esm2022/lib/import-export/export-button/export-button.component.mjs +7 -7
  153. package/esm2022/lib/import-export/export-button/index.mjs +1 -1
  154. package/esm2022/lib/import-export/import-export/import-export.component.mjs +34 -26
  155. package/esm2022/lib/import-export/import-export/index.mjs +1 -1
  156. package/esm2022/lib/import-export/import-export.module.mjs +10 -5
  157. package/esm2022/lib/import-export/index.mjs +2 -9
  158. package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +17 -65
  159. package/esm2022/lib/import-export/shared/export.errors.mjs +1 -1
  160. package/esm2022/lib/import-export/shared/export.interface.mjs +1 -1
  161. package/esm2022/lib/import-export/shared/export.service.mjs +13 -7
  162. package/esm2022/lib/import-export/shared/export.type.mjs +1 -1
  163. package/esm2022/lib/import-export/shared/export.utils.mjs +2 -2
  164. package/esm2022/lib/import-export/shared/import.errors.mjs +1 -1
  165. package/esm2022/lib/import-export/shared/import.interface.mjs +1 -1
  166. package/esm2022/lib/import-export/shared/import.service.mjs +6 -6
  167. package/esm2022/lib/import-export/shared/import.utils.mjs +1 -1
  168. package/esm2022/lib/import-export/shared/index.mjs +1 -1
  169. package/esm2022/lib/layer/index.mjs +2 -19
  170. package/esm2022/lib/layer/layer-item/layer-item.component.mjs +9 -9
  171. package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +24 -20
  172. package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +6 -6
  173. package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +4 -4
  174. package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +7 -7
  175. package/esm2022/lib/layer/layer-list/layer-list-binding.directive.mjs +6 -6
  176. package/esm2022/lib/layer/layer-list/layer-list.component.mjs +9 -8
  177. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +8 -8
  178. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +3 -3
  179. package/esm2022/lib/layer/layer.module.mjs +16 -5
  180. package/esm2022/lib/layer/shared/layer.service.mjs +11 -11
  181. package/esm2022/lib/layer/shared/layers/image-layer.interface.mjs +1 -1
  182. package/esm2022/lib/layer/shared/layers/image-layer.mjs +1 -1
  183. package/esm2022/lib/layer/shared/layers/index.mjs +1 -1
  184. package/esm2022/lib/layer/shared/layers/layer.interface.mjs +1 -1
  185. package/esm2022/lib/layer/shared/layers/layer.mjs +1 -1
  186. package/esm2022/lib/layer/shared/layers/legend.interface.mjs +1 -1
  187. package/esm2022/lib/layer/shared/layers/tile-layer.interface.mjs +1 -1
  188. package/esm2022/lib/layer/shared/layers/tile-layer.mjs +1 -1
  189. package/esm2022/lib/layer/shared/layers/vector-layer.interface.mjs +1 -1
  190. package/esm2022/lib/layer/shared/layers/vector-layer.mjs +1 -1
  191. package/esm2022/lib/layer/shared/layers/vectortile-layer.interface.mjs +1 -1
  192. package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +1 -1
  193. package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +7 -7
  194. package/esm2022/lib/layer/utils/image-watcher.mjs +1 -1
  195. package/esm2022/lib/layer/utils/tile-watcher.mjs +1 -1
  196. package/esm2022/lib/layer/utils/vector-watcher.mjs +1 -1
  197. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +1 -1
  198. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +9 -9
  199. package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +4 -4
  200. package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +13 -13
  201. package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +8 -8
  202. package/esm2022/lib/map/index.mjs +1 -32
  203. package/esm2022/lib/map/info-section/info-section.component.mjs +4 -4
  204. package/esm2022/lib/map/map-browser/map-browser.component.mjs +6 -6
  205. package/esm2022/lib/map/map-center/map-center.component.mjs +4 -4
  206. package/esm2022/lib/map/map.module.mjs +36 -36
  207. package/esm2022/lib/map/menu-button/menu-button.component.mjs +9 -9
  208. package/esm2022/lib/map/offline-button/offline-button.component.mjs +7 -7
  209. package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +7 -7
  210. package/esm2022/lib/map/shared/controllers/geolocation.mjs +1 -1
  211. package/esm2022/lib/map/shared/controllers/view.mjs +1 -1
  212. package/esm2022/lib/map/shared/hover-feature.directive.mjs +7 -7
  213. package/esm2022/lib/map/shared/linkedLayers.utils.mjs +3 -3
  214. package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +6 -6
  215. package/esm2022/lib/map/shared/map.abstract.mjs +1 -1
  216. package/esm2022/lib/map/shared/map.mjs +1 -1
  217. package/esm2022/lib/map/shared/map.service.mjs +3 -3
  218. package/esm2022/lib/map/shared/mapOffline.directive.mjs +9 -7
  219. package/esm2022/lib/map/shared/projection.service.mjs +6 -6
  220. package/esm2022/lib/map/shared/projection.utils.mjs +60 -1
  221. package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +4 -4
  222. package/esm2022/lib/map/utils/layer-watcher.mjs +1 -1
  223. package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +12 -12
  224. package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +6 -6
  225. package/esm2022/lib/measure/index.mjs +1 -1
  226. package/esm2022/lib/measure/measure.module.mjs +5 -5
  227. package/esm2022/lib/measure/measurer/index.mjs +1 -1
  228. package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +4 -4
  229. package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +7 -7
  230. package/esm2022/lib/measure/measurer/measurer-item.component.mjs +7 -7
  231. package/esm2022/lib/measure/measurer/measurer.component.mjs +20 -18
  232. package/esm2022/lib/measure/measurer/measurer.module.mjs +5 -5
  233. package/esm2022/lib/measure/shared/index.mjs +1 -1
  234. package/esm2022/lib/measure/shared/measure.enum.mjs +1 -1
  235. package/esm2022/lib/measure/shared/measure.interfaces.mjs +1 -1
  236. package/esm2022/lib/measure/shared/measure.utils.mjs +1 -1
  237. package/esm2022/lib/metadata/index.mjs +2 -6
  238. package/esm2022/lib/metadata/metadata-button/index.mjs +1 -1
  239. package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +11 -11
  240. package/esm2022/lib/metadata/metadata.module.mjs +9 -5
  241. package/esm2022/lib/metadata/shared/index.mjs +1 -1
  242. package/esm2022/lib/metadata/shared/metadata.interface.mjs +1 -1
  243. package/esm2022/lib/metadata/shared/metadata.service.mjs +4 -4
  244. package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +6 -6
  245. package/esm2022/lib/offline/geoDB/geoDB.enums.mjs +1 -1
  246. package/esm2022/lib/offline/geoDB/geoDB.interface.mjs +1 -1
  247. package/esm2022/lib/offline/geoDB/geoDB.service.mjs +8 -10
  248. package/esm2022/lib/offline/geoDB/index.mjs +1 -1
  249. package/esm2022/lib/offline/index.mjs +1 -1
  250. package/esm2022/lib/offline/layerDB/index.mjs +1 -1
  251. package/esm2022/lib/offline/layerDB/layerDB.interface.mjs +1 -1
  252. package/esm2022/lib/offline/layerDB/layerDB.service.mjs +4 -4
  253. package/esm2022/lib/offline/shared/geo-network.service.mjs +6 -6
  254. package/esm2022/lib/offline/shared/index.mjs +1 -1
  255. package/esm2022/lib/overlay/index.mjs +1 -1
  256. package/esm2022/lib/overlay/overlay.module.mjs +5 -5
  257. package/esm2022/lib/overlay/shared/index.mjs +1 -1
  258. package/esm2022/lib/overlay/shared/overlay.directive.mjs +4 -4
  259. package/esm2022/lib/overlay/shared/overlay.enum.mjs +1 -1
  260. package/esm2022/lib/overlay/shared/overlay.mjs +1 -1
  261. package/esm2022/lib/overlay/shared/overlay.service.mjs +4 -4
  262. package/esm2022/lib/overlay/shared/overlay.utils.mjs +1 -1
  263. package/esm2022/lib/print/index.mjs +1 -1
  264. package/esm2022/lib/print/print/print.component.mjs +6 -6
  265. package/esm2022/lib/print/print-form/index.mjs +1 -1
  266. package/esm2022/lib/print/print-form/print-form.component.mjs +22 -10
  267. package/esm2022/lib/print/print.module.mjs +5 -5
  268. package/esm2022/lib/print/shared/geopdf.mjs +1 -1
  269. package/esm2022/lib/print/shared/index.mjs +1 -1
  270. package/esm2022/lib/print/shared/print.interface.mjs +1 -1
  271. package/esm2022/lib/print/shared/print.service.mjs +179 -126
  272. package/esm2022/lib/print/shared/print.type.mjs +1 -1
  273. package/esm2022/lib/query/index.mjs +1 -1
  274. package/esm2022/lib/query/query.module.mjs +6 -6
  275. package/esm2022/lib/query/shared/index.mjs +2 -1
  276. package/esm2022/lib/query/shared/query-search-source.mjs +4 -4
  277. package/esm2022/lib/query/shared/query-search-source.providers.mjs +2 -2
  278. package/esm2022/lib/query/shared/query.directive.mjs +4 -4
  279. package/esm2022/lib/query/shared/query.enums.mjs +1 -1
  280. package/esm2022/lib/query/shared/query.interfaces.mjs +1 -1
  281. package/esm2022/lib/query/shared/query.service.mjs +6 -6
  282. package/esm2022/lib/query/shared/query.utils.mjs +1 -1
  283. package/esm2022/lib/search/index.mjs +2 -13
  284. package/esm2022/lib/search/search-bar/search-bar.component.mjs +13 -10
  285. package/esm2022/lib/search/search-bar/search-bar.module.mjs +5 -5
  286. package/esm2022/lib/search/search-results/index.mjs +2 -7
  287. package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +10 -10
  288. package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +14 -12
  289. package/esm2022/lib/search/search-results/search-results-item.component.mjs +7 -6
  290. package/esm2022/lib/search/search-results/search-results.component.mjs +12 -10
  291. package/esm2022/lib/search/search-results/search-results.directive.mjs +7 -0
  292. package/esm2022/lib/search/search-results/search-results.module.mjs +5 -5
  293. package/esm2022/lib/search/search-selector/search-selector.component.mjs +7 -7
  294. package/esm2022/lib/search/search-selector/search-selector.module.mjs +5 -5
  295. package/esm2022/lib/search/search-settings/search-settings.component.mjs +21 -19
  296. package/esm2022/lib/search/search-settings/search-settings.module.mjs +5 -5
  297. package/esm2022/lib/search/search.module.mjs +19 -5
  298. package/esm2022/lib/search/shared/index.mjs +2 -1
  299. package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +7 -7
  300. package/esm2022/lib/search/shared/search-source-service.providers.mjs +1 -1
  301. package/esm2022/lib/search/shared/search-source.service.mjs +1 -1
  302. package/esm2022/lib/search/shared/search.enums.mjs +1 -1
  303. package/esm2022/lib/search/shared/search.interfaces.mjs +1 -1
  304. package/esm2022/lib/search/shared/search.provider.mjs +20 -0
  305. package/esm2022/lib/search/shared/search.service.mjs +32 -13
  306. package/esm2022/lib/search/shared/search.utils.mjs +2 -2
  307. package/esm2022/lib/search/shared/sources/cadastre.mjs +10 -8
  308. package/esm2022/lib/search/shared/sources/cadastre.providers.mjs +11 -2
  309. package/esm2022/lib/search/shared/sources/coordinates.interfaces.mjs +1 -1
  310. package/esm2022/lib/search/shared/sources/coordinates.mjs +13 -11
  311. package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +14 -2
  312. package/esm2022/lib/search/shared/sources/icherche-icons.mjs +32 -0
  313. package/esm2022/lib/search/shared/sources/icherche.interfaces.mjs +1 -1
  314. package/esm2022/lib/search/shared/sources/icherche.mjs +24 -17
  315. package/esm2022/lib/search/shared/sources/icherche.providers.mjs +23 -2
  316. package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
  317. package/esm2022/lib/search/shared/sources/ilayer.mjs +12 -10
  318. package/esm2022/lib/search/shared/sources/ilayer.providers.mjs +14 -2
  319. package/esm2022/lib/search/shared/sources/index.mjs +1 -1
  320. package/esm2022/lib/search/shared/sources/nominatim.interfaces.mjs +1 -1
  321. package/esm2022/lib/search/shared/sources/nominatim.mjs +8 -8
  322. package/esm2022/lib/search/shared/sources/nominatim.providers.mjs +10 -2
  323. package/esm2022/lib/search/shared/sources/source.interfaces.mjs +13 -2
  324. package/esm2022/lib/search/shared/sources/source.mjs +1 -1
  325. package/esm2022/lib/search/shared/sources/storedqueries.interfaces.mjs +1 -1
  326. package/esm2022/lib/search/shared/sources/storedqueries.mjs +15 -13
  327. package/esm2022/lib/search/shared/sources/storedqueries.providers.mjs +17 -2
  328. package/esm2022/lib/search/shared/sources/workspace.interfaces.mjs +1 -1
  329. package/esm2022/lib/search/shared/sources/workspace.mjs +10 -8
  330. package/esm2022/lib/search/shared/sources/workspace.providers.mjs +11 -2
  331. package/esm2022/lib/style/index.mjs +1 -1
  332. package/esm2022/lib/style/shared/datasource/esri-style-generator.mjs +1 -1
  333. package/esm2022/lib/style/shared/datasource/index.mjs +1 -1
  334. package/esm2022/lib/style/shared/feature/feature-style.mjs +3 -2
  335. package/esm2022/lib/style/shared/feature/index.mjs +1 -1
  336. package/esm2022/lib/style/shared/font.enum.mjs +1 -1
  337. package/esm2022/lib/style/shared/index.mjs +1 -1
  338. package/esm2022/lib/style/shared/overlay/index.mjs +1 -1
  339. package/esm2022/lib/style/shared/overlay/overlay-marker-style.utils.mjs +1 -1
  340. package/esm2022/lib/style/shared/overlay/overlay-style.utils.mjs +1 -1
  341. package/esm2022/lib/style/shared/vector/commonVectorStyle.mjs +1 -1
  342. package/esm2022/lib/style/shared/vector/conversion.utils.mjs +1 -1
  343. package/esm2022/lib/style/shared/vector/index.mjs +1 -1
  344. package/esm2022/lib/style/shared/vector/vector-style.interface.mjs +1 -1
  345. package/esm2022/lib/style/style-list/index.mjs +1 -1
  346. package/esm2022/lib/style/style-list/style-list.interface.mjs +1 -1
  347. package/esm2022/lib/style/style-list/style-list.module.mjs +5 -5
  348. package/esm2022/lib/style/style-list/style-list.provider.mjs +1 -1
  349. package/esm2022/lib/style/style-list/style-list.service.mjs +4 -4
  350. package/esm2022/lib/style/style-modal/drawing/index.mjs +1 -1
  351. package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +8 -8
  352. package/esm2022/lib/style/style-modal/index.mjs +1 -1
  353. package/esm2022/lib/style/style-modal/layer/index.mjs +1 -1
  354. package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +8 -8
  355. package/esm2022/lib/style/style-modal/layer-button/index.mjs +1 -1
  356. package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +6 -6
  357. package/esm2022/lib/style/style-modal/shared/index.mjs +1 -1
  358. package/esm2022/lib/style/style-modal/shared/style-modal.interface.mjs +1 -1
  359. package/esm2022/lib/style/style-service/draw-style.service.mjs +4 -4
  360. package/esm2022/lib/style/style-service/index.mjs +1 -1
  361. package/esm2022/lib/style/style-service/style.service.mjs +4 -4
  362. package/esm2022/lib/style/style.module.mjs +5 -5
  363. package/esm2022/lib/toast/index.mjs +1 -1
  364. package/esm2022/lib/toast/toast.component.mjs +8 -6
  365. package/esm2022/lib/toast/toast.module.mjs +5 -5
  366. package/esm2022/lib/utils/googleLinks.mjs +1 -1
  367. package/esm2022/lib/utils/id-generator.mjs +1 -1
  368. package/esm2022/lib/utils/index.mjs +1 -1
  369. package/esm2022/lib/utils/osmLinks.mjs +1 -1
  370. package/esm2022/lib/utils/propertyTypeDetector/index.mjs +1 -1
  371. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.interface.mjs +1 -1
  372. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +6 -6
  373. package/esm2022/lib/wkt/index.mjs +1 -1
  374. package/esm2022/lib/wkt/shared/index.mjs +1 -1
  375. package/esm2022/lib/wkt/shared/wkt.service.mjs +18 -18
  376. package/esm2022/lib/wkt/wkt.module.mjs +5 -5
  377. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +7 -7
  378. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +5 -5
  379. package/esm2022/lib/workspace/confirmation-popup/index.mjs +1 -1
  380. package/esm2022/lib/workspace/index.mjs +1 -1
  381. package/esm2022/lib/workspace/shared/edition-workspace.mjs +2 -2
  382. package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +19 -14
  383. package/esm2022/lib/workspace/shared/feature-workspace.mjs +2 -2
  384. package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +14 -11
  385. package/esm2022/lib/workspace/shared/index.mjs +1 -1
  386. package/esm2022/lib/workspace/shared/wfs-workspace.mjs +2 -2
  387. package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +14 -11
  388. package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +12 -9
  389. package/esm2022/lib/workspace/shared/workspace.utils.mjs +4 -4
  390. package/esm2022/lib/workspace/widgets/index.mjs +1 -1
  391. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +5 -5
  392. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +5 -5
  393. package/esm2022/lib/workspace/widgets/widgets.mjs +2 -2
  394. package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +6 -6
  395. package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +5 -5
  396. package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +4 -4
  397. package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +5 -5
  398. package/esm2022/lib/workspace/workspace.module.mjs +6 -6
  399. package/esm2022/public_api.mjs +1 -1
  400. package/fesm2022/igo2-geo.mjs +30613 -30234
  401. package/fesm2022/igo2-geo.mjs.map +1 -1
  402. package/lib/catalog/catalog-browser/catalog-browser-group.component.d.ts +2 -2
  403. package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +1 -1
  404. package/lib/catalog/catalog-browser/catalog-browser.component.d.ts +1 -1
  405. package/lib/catalog/catalog-library/add-catalog-dialog.component.d.ts +3 -2
  406. package/lib/catalog/catalog-library/catalog-library.component.d.ts +5 -2
  407. package/lib/catalog/catalog-library/catalog-library.module.d.ts +3 -0
  408. package/lib/catalog/catalog-library/index.d.ts +1 -3
  409. package/lib/catalog/catalog.module.d.ts +6 -3
  410. package/lib/catalog/index.d.ts +1 -2
  411. package/lib/catalog/shared/catalog.interface.d.ts +1 -1
  412. package/lib/catalog/shared/catalog.service.d.ts +3 -1
  413. package/lib/datasource/shared/datasource.service.d.ts +2 -1
  414. package/lib/datasource/shared/datasources/arcgisrest-datasource.d.ts +2 -3
  415. package/lib/datasource/shared/datasources/cluster-datasource.interface.d.ts +2 -3
  416. package/lib/datasource/shared/datasources/datasource.d.ts +1 -2
  417. package/lib/datasource/shared/datasources/feature-datasource.d.ts +2 -3
  418. package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +2 -3
  419. package/lib/datasource/shared/datasources/websocket-datasource.d.ts +1 -2
  420. package/lib/datasource/shared/datasources/wfs-datasource.d.ts +2 -3
  421. package/lib/datasource/shared/datasources/wfs-datasource.interface.d.ts +1 -2
  422. package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +1 -2
  423. package/lib/datasource/shared/options/options-api.providers.d.ts +1 -1
  424. package/lib/directions/directions-buttons/directions-buttons.component.d.ts +3 -1
  425. package/lib/directions/directions-inputs/directions-inputs.component.d.ts +1 -1
  426. package/lib/directions/directions-results/directions-results.component.d.ts +1 -1
  427. package/lib/directions/directions-sources/directions-source.d.ts +7 -3
  428. package/lib/directions/directions-sources/directions-source.interface.d.ts +19 -6
  429. package/lib/directions/directions-sources/directions-source.provider.d.ts +3 -1
  430. package/lib/directions/directions-sources/osrm-directions-source.d.ts +20 -11
  431. package/lib/directions/directions.component.d.ts +16 -4
  432. package/lib/directions/directions.module.d.ts +5 -6
  433. package/lib/directions/directions.provider.d.ts +3 -0
  434. package/lib/directions/index.d.ts +1 -0
  435. package/lib/directions/shared/directions.interface.d.ts +2 -9
  436. package/lib/directions/shared/directions.service.d.ts +7 -3
  437. package/lib/directions/shared/directions.utils.d.ts +2 -2
  438. package/lib/directions/shared/store.d.ts +1 -1
  439. package/lib/download/shared/download.service.d.ts +1 -1
  440. package/lib/draw/draw/draw-popup.component.d.ts +1 -1
  441. package/lib/draw/draw/draw-shorcuts.component.d.ts +2 -0
  442. package/lib/draw/draw/draw.component.d.ts +2 -2
  443. package/lib/draw/shared/draw-icon.service.d.ts +1 -1
  444. package/lib/environment/environment.interface.d.ts +2 -1
  445. package/lib/feature/feature-details/feature-details.component.d.ts +4 -3
  446. package/lib/feature/feature-details/feature-details.module.d.ts +3 -0
  447. package/lib/feature/feature-details/index.d.ts +1 -3
  448. package/lib/feature/feature-form/feature-form.component.d.ts +1 -2
  449. package/lib/feature/feature.module.d.ts +6 -3
  450. package/lib/feature/index.d.ts +1 -2
  451. package/lib/feature/shared/feature.interfaces.d.ts +1 -1
  452. package/lib/feature/shared/feature.utils.d.ts +1 -1
  453. package/lib/feature/shared/store.d.ts +1 -1
  454. package/lib/feature/shared/strategies/geo-properties.d.ts +1 -1
  455. package/lib/feature/shared/strategies/in-map-extent.d.ts +1 -1
  456. package/lib/feature/shared/strategies/in-map-resolution.d.ts +1 -1
  457. package/lib/feature/shared/strategies/loading-layer.d.ts +1 -1
  458. package/lib/feature/shared/strategies/loading.d.ts +1 -1
  459. package/lib/feature/shared/strategies/search.d.ts +1 -1
  460. package/lib/feature/shared/strategies/selection.d.ts +1 -1
  461. package/lib/filter/filter.module.d.ts +19 -0
  462. package/lib/filter/index.d.ts +1 -16
  463. package/lib/filter/ogc-filter-selection/ogc-filter-selection.component.d.ts +2 -2
  464. package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +3 -3
  465. package/lib/filter/shared/ogc-filter.d.ts +7 -0
  466. package/lib/filter/shared/ogc-filter.interface.d.ts +2 -3
  467. package/lib/filter/shared/spatial-filter.service.d.ts +2 -1
  468. package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +3 -2
  469. package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +2 -2
  470. package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +1 -1
  471. package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +1 -2
  472. package/lib/geometry/geometry-form-field/geometry-form-field.module.d.ts +3 -0
  473. package/lib/geometry/geometry-form-field/index.d.ts +2 -4
  474. package/lib/geometry/shared/controls/draw.d.ts +4 -4
  475. package/lib/geometry/shared/controls/slice.d.ts +4 -4
  476. package/lib/geometry/shared/geometry.interfaces.d.ts +1 -1
  477. package/lib/import-export/import-export/import-export.component.d.ts +6 -3
  478. package/lib/import-export/import-export.module.d.ts +4 -0
  479. package/lib/import-export/index.d.ts +1 -4
  480. package/lib/import-export/shared/drop-geo-file.directive.d.ts +4 -4
  481. package/lib/import-export/shared/export.service.d.ts +1 -1
  482. package/lib/import-export/shared/export.utils.d.ts +2 -2
  483. package/lib/import-export/shared/import.service.d.ts +1 -1
  484. package/lib/import-export/shared/import.utils.d.ts +2 -2
  485. package/lib/layer/index.d.ts +1 -8
  486. package/lib/layer/layer-item/layer-item.component.d.ts +1 -1
  487. package/lib/layer/layer-legend/layer-legend.component.d.ts +2 -1
  488. package/lib/layer/layer-legend-item/layer-legend-item.component.d.ts +1 -1
  489. package/lib/layer/layer-list/layer-list-binding.directive.d.ts +1 -1
  490. package/lib/layer/layer.module.d.ts +10 -0
  491. package/lib/layer/shared/layer.service.d.ts +1 -1
  492. package/lib/layer/shared/layers/image-layer.d.ts +1 -1
  493. package/lib/layer/shared/layers/layer.d.ts +1 -1
  494. package/lib/layer/shared/layers/layer.interface.d.ts +1 -1
  495. package/lib/layer/shared/layers/tile-layer.d.ts +1 -1
  496. package/lib/layer/shared/layers/vector-layer.d.ts +4 -5
  497. package/lib/layer/shared/layers/vector-layer.interface.d.ts +1 -2
  498. package/lib/layer/shared/layers/vectortile-layer.d.ts +1 -1
  499. package/lib/layer/utils/image-watcher.d.ts +1 -1
  500. package/lib/map/baselayers-switcher/baselayers-switcher.component.d.ts +1 -1
  501. package/lib/map/geolocate-button/geolocate-button.component.d.ts +1 -1
  502. package/lib/map/home-extent-button/home-extent-button.component.d.ts +1 -1
  503. package/lib/map/index.d.ts +0 -14
  504. package/lib/map/map-browser/map-browser.component.d.ts +1 -1
  505. package/lib/map/map.module.d.ts +32 -15
  506. package/lib/map/menu-button/menu-button.component.d.ts +1 -1
  507. package/lib/map/shared/controllers/geolocation.d.ts +2 -1
  508. package/lib/map/shared/hover-feature.directive.d.ts +1 -1
  509. package/lib/map/shared/map-pointer-position.directive.d.ts +1 -1
  510. package/lib/map/shared/map.d.ts +2 -1
  511. package/lib/map/shared/mapOffline.directive.d.ts +2 -1
  512. package/lib/map/shared/projection.service.d.ts +1 -1
  513. package/lib/map/shared/projection.utils.d.ts +11 -0
  514. package/lib/map/wake-lock-button/wake-lock-button.component.d.ts +1 -1
  515. package/lib/measure/measurer/measurer.component.d.ts +3 -2
  516. package/lib/measure/shared/measure.utils.d.ts +1 -1
  517. package/lib/metadata/index.d.ts +1 -2
  518. package/lib/metadata/metadata.module.d.ts +2 -0
  519. package/lib/offline/geoDB/configFileToGeoDB.service.d.ts +1 -1
  520. package/lib/offline/geoDB/geoDB.service.d.ts +2 -3
  521. package/lib/offline/shared/geo-network.service.d.ts +1 -1
  522. package/lib/print/print-form/print-form.component.d.ts +5 -2
  523. package/lib/print/shared/print.interface.d.ts +1 -0
  524. package/lib/print/shared/print.service.d.ts +31 -18
  525. package/lib/query/query.module.d.ts +1 -1
  526. package/lib/query/shared/index.d.ts +1 -0
  527. package/lib/query/shared/query-search-source.providers.d.ts +1 -1
  528. package/lib/query/shared/query.interfaces.d.ts +1 -2
  529. package/lib/query/shared/query.service.d.ts +1 -1
  530. package/lib/search/index.d.ts +1 -5
  531. package/lib/search/search-bar/search-bar.component.d.ts +3 -2
  532. package/lib/search/search-results/index.d.ts +1 -3
  533. package/lib/search/search-results/save-feature-dialog.component.d.ts +1 -1
  534. package/lib/search/search-results/search-results-add-button.component.d.ts +3 -3
  535. package/lib/search/search-results/search-results.component.d.ts +2 -2
  536. package/lib/search/search-results/search-results.directive.d.ts +3 -0
  537. package/lib/search/search-settings/search-settings.component.d.ts +2 -1
  538. package/lib/search/search.module.d.ts +8 -0
  539. package/lib/search/shared/index.d.ts +1 -0
  540. package/lib/search/shared/search-pointer-summary.directive.d.ts +1 -1
  541. package/lib/search/shared/search-source.service.d.ts +1 -1
  542. package/lib/search/shared/search.interfaces.d.ts +12 -10
  543. package/lib/search/shared/search.provider.d.ts +8 -0
  544. package/lib/search/shared/search.service.d.ts +8 -3
  545. package/lib/search/shared/sources/cadastre.d.ts +2 -1
  546. package/lib/search/shared/sources/cadastre.providers.d.ts +5 -1
  547. package/lib/search/shared/sources/coordinates.d.ts +2 -1
  548. package/lib/search/shared/sources/coordinates.providers.d.ts +5 -1
  549. package/lib/search/shared/sources/icherche-icons.d.ts +7 -0
  550. package/lib/search/shared/sources/icherche.d.ts +2 -1
  551. package/lib/search/shared/sources/icherche.providers.d.ts +9 -13
  552. package/lib/search/shared/sources/ilayer.d.ts +2 -1
  553. package/lib/search/shared/sources/ilayer.providers.d.ts +5 -1
  554. package/lib/search/shared/sources/nominatim.d.ts +1 -1
  555. package/lib/search/shared/sources/nominatim.providers.d.ts +4 -1
  556. package/lib/search/shared/sources/source.d.ts +2 -2
  557. package/lib/search/shared/sources/source.interfaces.d.ts +16 -0
  558. package/lib/search/shared/sources/storedqueries.d.ts +2 -1
  559. package/lib/search/shared/sources/storedqueries.providers.d.ts +6 -1
  560. package/lib/search/shared/sources/workspace.d.ts +2 -1
  561. package/lib/search/shared/sources/workspace.providers.d.ts +5 -1
  562. package/lib/style/shared/vector/conversion.utils.d.ts +2 -3
  563. package/lib/toast/toast.component.d.ts +1 -1
  564. package/lib/utils/propertyTypeDetector/propertyTypeDetector.service.d.ts +1 -1
  565. package/lib/wkt/shared/wkt.service.d.ts +1 -1
  566. package/lib/workspace/confirmation-popup/confirmation-popup.component.d.ts +1 -1
  567. package/lib/workspace/shared/edition-workspace.d.ts +2 -2
  568. package/lib/workspace/shared/edition-workspace.service.d.ts +5 -2
  569. package/lib/workspace/shared/feature-workspace.d.ts +1 -1
  570. package/lib/workspace/shared/feature-workspace.service.d.ts +2 -1
  571. package/lib/workspace/shared/wfs-workspace.d.ts +1 -1
  572. package/lib/workspace/shared/wfs-workspace.service.d.ts +2 -1
  573. package/lib/workspace/shared/wms-workspace.service.d.ts +2 -1
  574. package/lib/workspace/shared/workspace.utils.d.ts +2 -1
  575. package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +2 -1
  576. package/lib/workspace/widgets/widgets.d.ts +1 -1
  577. package/lib/workspace/workspace-selector/workspace-selector.directive.d.ts +1 -1
  578. package/lib/workspace/workspace-updator/workspace-updator.directive.d.ts +1 -1
  579. package/lib/workspace/workspace.module.d.ts +1 -1
  580. package/locale/en.geo.json +824 -818
  581. package/locale/fr.geo.json +825 -819
  582. package/package.json +6 -6
  583. package/src/_index.scss +2 -2
  584. package/src/lib/catalog/catalog-browser/catalog-browser.theming.scss +22 -22
  585. package/src/lib/catalog/catalog.theming.scss +5 -5
  586. package/src/lib/directions/directions-results/directions-results.theming.scss +10 -10
  587. package/src/lib/directions/directions.theming.scss +6 -6
  588. package/src/lib/draw/draw.theming.scss +32 -32
  589. package/src/lib/feature/feature-details/feature-details.theming.scss +16 -16
  590. package/src/lib/feature/feature.theming.scss +4 -4
  591. package/src/lib/measure/measure.theming.scss +5 -5
  592. package/src/lib/measure/measurer/measurer.theming.scss +26 -26
  593. package/src/lib/search/search-bar/search-bar.theming.scss +33 -33
  594. package/src/lib/search/search-results/search-results-item.theme.scss +20 -20
  595. package/src/lib/search/search.theming.scss +7 -7
  596. package/src/lib/workspace/confirmation-popup/confirmation-popup.theming.scss +14 -14
  597. package/src/lib/workspace/workspace.theming.scss +6 -6
  598. package/style/style.css +2 -1
@@ -54,7 +54,7 @@ export function getDirectParentLayerByProperty(map, layer, property) {
54
54
  }
55
55
  });
56
56
  if (parents.length > 1) {
57
- console.warn(`Your layer ${layer.title || layer.id} must only have 1 parent (${parents.map((p) => p.title || p.id)})
57
+ console.warn(`Your layer ${layer.title || layer.id} must only have 1 parent (${parents.map((p) => p.title || p.id)})
58
58
  , The first parent (${parents[0].title || parents[0].id}) will be use to sync properties`);
59
59
  }
60
60
  return parents[0];
@@ -109,7 +109,7 @@ export function getDirectParentLayerByDeletion(map, layer) {
109
109
  }
110
110
  });
111
111
  if (parents.length > 1) {
112
- console.warn(`Your layer ${layer.title || layer.id} must only have 1 parent (${parents.map((p) => p.title || p.id)})
112
+ console.warn(`Your layer ${layer.title || layer.id} must only have 1 parent (${parents.map((p) => p.title || p.id)})
113
113
  , The first parent (${parents[0].title || parents[0].id}) will be use to sync properties`);
114
114
  }
115
115
  return parents[0];
@@ -245,4 +245,4 @@ export function handleLayerPropertyChange(map, propertyChange, initiatorIgoLayer
245
245
  }
246
246
  }
247
247
  }
248
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VkTGF5ZXJzLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9saW5rZWRMYXllcnMudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQU1qQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBS2pFLE9BQU8sRUFBUyxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3BFLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxLQUFZO0lBQ2pELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFDcEMsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxHQUFZLEVBQUUsRUFBVTtJQUMxRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxNQUFNLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDdkUsQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsS0FBWSxFQUNaLFFBQTBCO0lBRTFCLElBQUksbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLE1BQU0sY0FBYyxHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JELElBQUksY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDM0MsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQ2hDLENBQUM7UUFDRixtQkFBbUIsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzVDLENBQUM7SUFDRCxPQUFPLG1CQUFtQixDQUFDO0FBQzdCLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsS0FBWTtJQUMvQyxJQUFJLHVCQUF1QixHQUFHLEtBQUssQ0FBQztJQUNwQyxNQUFNLGNBQWMsR0FBRyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyRCxJQUFJLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUMxQixNQUFNLElBQUksR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlELHVCQUF1QixHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDaEQsQ0FBQztJQUNELE9BQU8sdUJBQXVCLENBQUM7QUFDakMsQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsR0FBWSxFQUNaLEtBQVksRUFDWixRQUEwQjtJQUUxQixJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDdkIsSUFBSSxXQUFXLEdBQUcsVUFBVSxDQUFDO0lBQzdCLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQztJQUMxQixPQUFPLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLFVBQVUsR0FBRyxXQUFXLENBQUM7UUFDekIsV0FBVyxHQUFHLDhCQUE4QixDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDeEUsY0FBYyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDOUMsQ0FBQztJQUNELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDcEQsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sY0FBYyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztBQUNuRCxDQUFDO0FBRUQsTUFBTSxVQUFVLDhCQUE4QixDQUM1QyxHQUFZLEVBQ1osS0FBWSxFQUNaLFFBQTBCO0lBRTFCLElBQUksS0FBSyxFQUFFLE9BQU8sQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDeEMsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO1FBQ3hELElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7WUFDckMsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7WUFDN0MsSUFBSSxZQUFZLElBQUksWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN2QyxNQUFNLENBQUMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDL0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNKLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztvQkFDbkMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQ2xDLENBQUM7Z0JBQ0YsT0FBTyxDQUFDLENBQUM7WUFDWCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkIsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUNYLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEVBQ3ZCLDZCQUE2QixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7a0NBRXhELE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2pDLGtDQUFrQyxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLDhCQUE4QixDQUM1QyxHQUFZLEVBQ1osS0FBWSxFQUNaLFFBQTBCO0lBRTFCLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUNuQixJQUFJLEtBQUssRUFBRSxPQUFPLENBQUMsWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3ZDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUs7YUFDN0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNaLFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQy9ELENBQUM7QUFFRCxNQUFNLFVBQVUsMkJBQTJCLENBQ3pDLEdBQVksRUFDWixLQUFZLEVBQ1osZ0JBQXlCLEVBQ3pCLFFBQTBCO0lBRTFCLElBQUksV0FBVyxHQUFHLDhCQUE4QixDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdkUsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO1FBQ3JCLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQixNQUFNLGlCQUFpQixHQUFHLDhCQUE4QixDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDNUUsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RCLDJCQUEyQixDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDbkUsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxnQkFBZ0IsQ0FBQztBQUMxQixDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUFDLEdBQVksRUFBRSxLQUFZO0lBQ2hFLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztJQUN2QixJQUFJLFdBQVcsR0FBRyxVQUFVLENBQUM7SUFDN0IsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQzFCLE9BQU8sY0FBYyxFQUFFLENBQUM7UUFDdEIsVUFBVSxHQUFHLFdBQVcsQ0FBQztRQUN6QixXQUFXLEdBQUcsOEJBQThCLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlELGNBQWMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzlDLENBQUM7SUFDRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDdEMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sY0FBYyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztBQUNuRCxDQUFDO0FBRUQsTUFBTSxVQUFVLDhCQUE4QixDQUM1QyxHQUFZLEVBQ1osS0FBWTtJQUVaLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDdkMsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO1FBQ3hELElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7WUFDckMsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7WUFDN0MsSUFBSSxZQUFZLElBQUksWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN2QyxNQUFNLENBQUMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDL0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQzdELENBQUM7Z0JBQ0YsT0FBTyxDQUFDLENBQUM7WUFDWCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkIsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUNYLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEVBQ3ZCLDZCQUE2QixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0NBRTFELE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2pDLGtDQUFrQyxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLDhCQUE4QixDQUM1QyxHQUFZLEVBQ1osS0FBWTtJQUVaLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUNuQixJQUFJLEtBQUssRUFBRSxPQUFPLENBQUMsWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3ZDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUs7YUFDN0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO2FBQzdCLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1osU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUVELE1BQU0sVUFBVSwyQkFBMkIsQ0FDekMsR0FBWSxFQUNaLEtBQVksRUFDWixnQkFBeUI7SUFFekIsSUFBSSxXQUFXLEdBQUcsOEJBQThCLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzdELFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtRQUNyQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsTUFBTSxpQkFBaUIsR0FBRyw4QkFBOEIsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbEUsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RCLDJCQUEyQixDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUN6RCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLGdCQUFnQixDQUFDO0FBQzFCLENBQUM7QUFFRCxNQUFNLFVBQVUsaUNBQWlDLENBQy9DLEdBQVksRUFDWixNQUFlO0lBRWYsTUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7SUFDaEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzNDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNiLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2pELENBQUMsQ0FBQyxDQUFDO0lBQ0gsTUFBTTtTQUNILE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDeEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDVCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDZixNQUFNLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoQyxNQUFNLElBQUksR0FBRyx1QkFBdUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQXFCLENBQUMsQ0FBQztZQUNwRSxNQUFNLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekMsSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUN4QyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDMUMsTUFBTSxNQUFNLEdBQUcsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLHlCQUF5QixDQUN2QyxHQUFZLEVBQ1osY0FBMkIsRUFDM0IsaUJBQXdCO0lBRXhCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNwQixPQUFPO0lBQ1QsQ0FBQztJQUNELE1BQU0sZUFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7SUFDOUMsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDO0lBQzNCLElBQUksb0JBQW9CLEdBQUcsSUFBSSxDQUFDO0lBQ2hDLE1BQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUM7SUFDL0IsSUFBSSxRQUFRLENBQUM7SUFDYixJQUFJLEdBQUcsS0FBSyxZQUFZLEVBQUUsQ0FBQztRQUN6QixlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLG9CQUFvQixHQUFHLElBQUksQ0FBQztRQUM1QixRQUFRLEdBQ04saUJBQWlCLENBQUMsVUFBVSxDQUFDLE9BQzlCLENBQUMsVUFBVSxDQUFDO0lBQ2YsQ0FBQztTQUFNLElBQUksR0FBRyxLQUFLLFlBQVksRUFBRSxDQUFDO1FBQ2hDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1FBQzVCLFFBQVEsR0FDTixpQkFBaUIsQ0FBQyxVQUFVLENBQUMsT0FDOUIsQ0FBQyxVQUFVLENBQUM7SUFDZixDQUFDO1NBQU0sQ0FBQztRQUNOLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDdkIsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzdCLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxNQUFNLDRCQUE0QixHQUNoQyxzQkFBc0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzVDLElBQUksNEJBQTRCLEVBQUUsQ0FBQztRQUNqQyxJQUFJLG9CQUFvQixHQUFHLHVCQUF1QixDQUNoRCxHQUFHLEVBQ0gsaUJBQWlCLEVBQ2pCLEdBQXVCLENBQ3hCLENBQUM7UUFDRixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUMxQixvQkFBb0IsR0FBRyxpQkFBaUIsQ0FBQztRQUMzQyxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3BDLDJCQUEyQixDQUN6QixHQUFHLEVBQ0gsb0JBQW9CLEVBQ3BCLElBQUksRUFDSixHQUF1QixDQUN4QixDQUFDO1FBRUYsSUFBSSw0QkFBNEIsR0FBRyxLQUFLLENBQUM7UUFDekMsTUFBTSwyQkFBMkIsR0FDL0IsaUJBQWlCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQ2hELE1BQU0sK0NBQStDLEdBQUcsaUJBQWlCO2FBQ3RFLFVBQVUsQ0FBQyxPQUF5QyxDQUFDO1FBQ3hELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNiLElBQ0UsaUJBQWlCO2dCQUNqQixDQUFDO2dCQUNELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUM5QyxDQUFDO2dCQUNELE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2pELElBQUksZUFBZSxFQUFFLENBQUM7b0JBQ3BCLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQzlCLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO3dCQUN0QixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDNUIsQ0FBQztvQkFDRCxJQUFJLEdBQUcsS0FBSyxlQUFlLElBQUksR0FBRyxLQUFLLGVBQWUsRUFBRSxDQUFDO3dCQUN2RCw0QkFBNEIsR0FBRyxJQUFJLENBQUM7b0JBQ3RDLENBQUM7Z0JBQ0gsQ0FBQztxQkFBTSxJQUFJLG9CQUFvQixFQUFFLENBQUM7b0JBQ2hDLElBQUksR0FBRyxLQUFLLFlBQVksRUFBRSxDQUFDO3dCQUN4QixDQUFDLENBQUMsVUFBc0MsQ0FBQyxhQUFhLENBQ3JELFFBQVEsRUFDUixLQUFLLENBQ04sQ0FBQzt3QkFDRixJQUFJLFVBQVUsS0FBSyxLQUFLLEVBQUUsQ0FBQzs0QkFDekIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQzt3QkFDN0IsQ0FBQzt3QkFDRCxJQUFJLFVBQVUsS0FBSyxLQUFLLEVBQUUsQ0FBQzs0QkFDekIsSUFBSSxnQkFBZ0IsQ0FBQzs0QkFDckIsSUFBSSwyQkFBMkIsS0FBSyxLQUFLLEVBQUUsQ0FBQztnQ0FDMUMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLDRCQUE0QixDQUM3RCwrQ0FBK0MsRUFDOUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLE9BQWU7cUNBQzFDLGlCQUFpQixFQUNwQixTQUFTLEVBQ1QsR0FBRyxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsQ0FDckMsQ0FBQzs0QkFDSixDQUFDO2lDQUFNLElBQUksMkJBQTJCLEtBQUssS0FBSyxFQUFFLENBQUM7Z0NBQ2pELGdCQUFnQixHQUNkLGlCQUFpQixDQUFDLFVBQ25CLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQU0sQ0FBQzs0QkFDMUIsQ0FBQzs0QkFDQSxDQUFDLENBQUMsVUFBNEIsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDO2dDQUM5QyxNQUFNLEVBQUUsZ0JBQWdCOzZCQUN6QixDQUFDLENBQUM7d0JBQ0wsQ0FBQztvQkFDSCxDQUFDO3lCQUFNLElBQ0wsQ0FBQyxDQUFDLFVBQVUsWUFBWSxhQUFhO3dCQUNyQyxHQUFHLEtBQUssWUFBWSxFQUNwQixDQUFDO3dCQUNBLENBQUMsQ0FBQyxVQUF1QyxDQUFDLGFBQWEsQ0FDdEQsUUFBUSxFQUNSLEtBQUssQ0FDTixDQUFDO3dCQUNGLE1BQU0saUJBQWlCLEdBQ3JCLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQy9CLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDO3dCQUNuQixDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO29CQUM1RCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLDRCQUE0QixFQUFFLENBQUM7WUFDakMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVFLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9iamVjdEV2ZW50IH0gZnJvbSAnb2wvT2JqZWN0JztcclxuaW1wb3J0IG9sU291cmNlSW1hZ2VXTVMgZnJvbSAnb2wvc291cmNlL0ltYWdlV01TJztcclxuaW1wb3J0IHsgZ2V0VWlkIH0gZnJvbSAnb2wvdXRpbCc7XHJcblxyXG5pbXBvcnQge1xyXG4gIFRpbWVGaWx0ZXJhYmxlRGF0YVNvdXJjZSxcclxuICBUaW1lRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zXHJcbn0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMnO1xyXG5pbXBvcnQgeyBXTVNEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvd21zLWRhdGFzb3VyY2UnO1xyXG5pbXBvcnQgeyBPZ2NGaWx0ZXJXcml0ZXIgfSBmcm9tICcuLi8uLi9maWx0ZXIvc2hhcmVkL29nYy1maWx0ZXInO1xyXG5pbXBvcnQge1xyXG4gIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlLFxyXG4gIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9uc1xyXG59IGZyb20gJy4uLy4uL2ZpbHRlci9zaGFyZWQvb2djLWZpbHRlci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBMYXllciwgTGlua2VkUHJvcGVydGllcyB9IGZyb20gJy4uLy4uL2xheWVyL3NoYXJlZC9sYXllcnMnO1xyXG5pbXBvcnQgdHlwZSB7IE1hcEJhc2UgfSBmcm9tICcuLi9zaGFyZWQvbWFwLmFic3RyYWN0JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW5rZWRMYXllcnNPcHRpb25zKGxheWVyOiBMYXllcikge1xyXG4gIHJldHVybiBsYXllci5vcHRpb25zLmxpbmtlZExheWVycztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldElnb0xheWVyQnlMaW5rSWQobWFwOiBNYXBCYXNlLCBpZDogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIG1hcC5sYXllcnMuZmluZCgobCkgPT4gbC5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua0lkID09PSBpZCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBsYXllckhhc0xpbmtXaXRoUHJvcGVydHkoXHJcbiAgbGF5ZXI6IExheWVyLFxyXG4gIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzXHJcbik6IGJvb2xlYW4ge1xyXG4gIGxldCBoYXNMaW5rV2l0aFByb3BlcnR5ID0gZmFsc2U7XHJcbiAgY29uc3QgbGF5ZXJMTE9wdGlvbnMgPSBnZXRMaW5rZWRMYXllcnNPcHRpb25zKGxheWVyKTtcclxuICBpZiAobGF5ZXJMTE9wdGlvbnM/LmxpbmtzKSB7XHJcbiAgICBjb25zdCBsaW5rID0gbGF5ZXJMTE9wdGlvbnMubGlua3MuZmluZCgobCkgPT5cclxuICAgICAgbC5wcm9wZXJ0aWVzLmluY2x1ZGVzKHByb3BlcnR5KVxyXG4gICAgKTtcclxuICAgIGhhc0xpbmtXaXRoUHJvcGVydHkgPSBsaW5rID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuICByZXR1cm4gaGFzTGlua1dpdGhQcm9wZXJ0eTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxheWVySGFzTGlua0RlbGV0aW9uKGxheWVyOiBMYXllcik6IGJvb2xlYW4ge1xyXG4gIGxldCBoYXNMaW5rV2l0aFN5bmNlZERlbGV0ZSA9IGZhbHNlO1xyXG4gIGNvbnN0IGxheWVyTExPcHRpb25zID0gZ2V0TGlua2VkTGF5ZXJzT3B0aW9ucyhsYXllcik7XHJcbiAgaWYgKGxheWVyTExPcHRpb25zPy5saW5rcykge1xyXG4gICAgY29uc3QgbGluayA9IGxheWVyTExPcHRpb25zLmxpbmtzLmZpbmQoKGwpID0+IGwuc3luY2VkRGVsZXRlKTtcclxuICAgIGhhc0xpbmtXaXRoU3luY2VkRGVsZXRlID0gbGluayA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcbiAgcmV0dXJuIGhhc0xpbmtXaXRoU3luY2VkRGVsZXRlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um9vdFBhcmVudEJ5UHJvcGVydHkoXHJcbiAgbWFwOiBNYXBCYXNlLFxyXG4gIGxheWVyOiBMYXllcixcclxuICBwcm9wZXJ0eTogTGlua2VkUHJvcGVydGllc1xyXG4pOiBMYXllciB7XHJcbiAgbGV0IGxheWVyVG9Vc2UgPSBsYXllcjtcclxuICBsZXQgcGFyZW50TGF5ZXIgPSBsYXllclRvVXNlO1xyXG4gIGxldCBoYXNQYXJlbnRMYXllciA9IHRydWU7XHJcbiAgd2hpbGUgKGhhc1BhcmVudExheWVyKSB7XHJcbiAgICBsYXllclRvVXNlID0gcGFyZW50TGF5ZXI7XHJcbiAgICBwYXJlbnRMYXllciA9IGdldERpcmVjdFBhcmVudExheWVyQnlQcm9wZXJ0eShtYXAsIGxheWVyVG9Vc2UsIHByb3BlcnR5KTtcclxuICAgIGhhc1BhcmVudExheWVyID0gcGFyZW50TGF5ZXIgPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG4gIGlmICghaGFzUGFyZW50TGF5ZXIpIHtcclxuICAgIGlmICghbGF5ZXJIYXNMaW5rV2l0aFByb3BlcnR5KGxheWVyVG9Vc2UsIHByb3BlcnR5KSkge1xyXG4gICAgICBsYXllclRvVXNlID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gaGFzUGFyZW50TGF5ZXIgPyBwYXJlbnRMYXllciA6IGxheWVyVG9Vc2U7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXREaXJlY3RQYXJlbnRMYXllckJ5UHJvcGVydHkoXHJcbiAgbWFwOiBNYXBCYXNlLFxyXG4gIGxheWVyOiBMYXllcixcclxuICBwcm9wZXJ0eTogTGlua2VkUHJvcGVydGllc1xyXG4pOiBMYXllciB7XHJcbiAgaWYgKGxheWVyPy5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua0lkKSB7XHJcbiAgICBjb25zdCBjdXJyZW50TGlua0lkID0gbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua0lkO1xyXG4gICAgbGV0IHBhcmVudHMgPSBtYXAubGF5ZXJzLmZpbHRlcigocGwpID0+IHtcclxuICAgICAgY29uc3QgbGlua2VkTGF5ZXJzID0gcGwub3B0aW9ucy5saW5rZWRMYXllcnM7XHJcbiAgICAgIGlmIChsaW5rZWRMYXllcnMgJiYgbGlua2VkTGF5ZXJzLmxpbmtzKSB7XHJcbiAgICAgICAgY29uc3QgYSA9IGxpbmtlZExheWVycy5saW5rcy5maW5kKFxyXG4gICAgICAgICAgKGwpID0+XHJcbiAgICAgICAgICAgIGwubGlua2VkSWRzLmluY2x1ZGVzKGN1cnJlbnRMaW5rSWQpICYmXHJcbiAgICAgICAgICAgIGwucHJvcGVydGllcy5pbmNsdWRlcyhwcm9wZXJ0eSlcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBhO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChwYXJlbnRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgY29uc29sZS53YXJuKGBZb3VyIGxheWVyICR7XHJcbiAgICAgICAgbGF5ZXIudGl0bGUgfHwgbGF5ZXIuaWRcclxuICAgICAgfSBtdXN0IG9ubHkgaGF2ZSAxIHBhcmVudCAoJHtwYXJlbnRzLm1hcCgocCkgPT4gcC50aXRsZSB8fCBwLmlkKX0pXHJcbiAgICAgICAgICAgICwgVGhlIGZpcnN0IHBhcmVudCAoJHtcclxuICAgICAgICAgICAgICBwYXJlbnRzWzBdLnRpdGxlIHx8IHBhcmVudHNbMF0uaWRcclxuICAgICAgICAgICAgfSkgd2lsbCBiZSB1c2UgdG8gc3luYyBwcm9wZXJ0aWVzYCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGFyZW50c1swXTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXREaXJlY3RDaGlsZExheWVyc0J5UHJvcGVydHkoXHJcbiAgbWFwOiBNYXBCYXNlLFxyXG4gIGxheWVyOiBMYXllcixcclxuICBwcm9wZXJ0eTogTGlua2VkUHJvcGVydGllc1xyXG4pOiBMYXllcltdIHtcclxuICBsZXQgbGlua2VkSWRzID0gW107XHJcbiAgaWYgKGxheWVyPy5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua3MpIHtcclxuICAgIGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtzXHJcbiAgICAgIC5maWx0ZXIoKGwpID0+IGwucHJvcGVydGllcy5pbmNsdWRlcyhwcm9wZXJ0eSkpXHJcbiAgICAgIC5tYXAoKGxpbmspID0+IHtcclxuICAgICAgICBsaW5rZWRJZHMgPSBsaW5rZWRJZHMuY29uY2F0KGxpbmsubGlua2VkSWRzKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIHJldHVybiBsaW5rZWRJZHMubWFwKChsaWQpID0+IGdldElnb0xheWVyQnlMaW5rSWQobWFwLCBsaWQpKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbENoaWxkTGF5ZXJzQnlQcm9wZXJ0eShcclxuICBtYXA6IE1hcEJhc2UsXHJcbiAgbGF5ZXI6IExheWVyLFxyXG4gIGtub3duQ2hpbGRMYXllcnM6IExheWVyW10sXHJcbiAgcHJvcGVydHk6IExpbmtlZFByb3BlcnRpZXNcclxuKTogTGF5ZXJbXSB7XHJcbiAgbGV0IGNoaWxkTGF5ZXJzID0gZ2V0RGlyZWN0Q2hpbGRMYXllcnNCeVByb3BlcnR5KG1hcCwgbGF5ZXIsIHByb3BlcnR5KTtcclxuICBjaGlsZExheWVycy5tYXAoKGNsKSA9PiB7XHJcbiAgICBrbm93bkNoaWxkTGF5ZXJzLnB1c2goY2wpO1xyXG4gICAgY29uc3QgZGlyZWN0Q2hpbGRMYXllcnMgPSBnZXREaXJlY3RDaGlsZExheWVyc0J5UHJvcGVydHkobWFwLCBjbCwgcHJvcGVydHkpO1xyXG4gICAgaWYgKGRpcmVjdENoaWxkTGF5ZXJzKSB7XHJcbiAgICAgIGdldEFsbENoaWxkTGF5ZXJzQnlQcm9wZXJ0eShtYXAsIGNsLCBrbm93bkNoaWxkTGF5ZXJzLCBwcm9wZXJ0eSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIGtub3duQ2hpbGRMYXllcnM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRSb290UGFyZW50QnlEZWxldGlvbihtYXA6IE1hcEJhc2UsIGxheWVyOiBMYXllcik6IExheWVyIHtcclxuICBsZXQgbGF5ZXJUb1VzZSA9IGxheWVyO1xyXG4gIGxldCBwYXJlbnRMYXllciA9IGxheWVyVG9Vc2U7XHJcbiAgbGV0IGhhc1BhcmVudExheWVyID0gdHJ1ZTtcclxuICB3aGlsZSAoaGFzUGFyZW50TGF5ZXIpIHtcclxuICAgIGxheWVyVG9Vc2UgPSBwYXJlbnRMYXllcjtcclxuICAgIHBhcmVudExheWVyID0gZ2V0RGlyZWN0UGFyZW50TGF5ZXJCeURlbGV0aW9uKG1hcCwgbGF5ZXJUb1VzZSk7XHJcbiAgICBoYXNQYXJlbnRMYXllciA9IHBhcmVudExheWVyID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuICBpZiAoIWhhc1BhcmVudExheWVyKSB7XHJcbiAgICBpZiAoIWxheWVySGFzTGlua0RlbGV0aW9uKGxheWVyVG9Vc2UpKSB7XHJcbiAgICAgIGxheWVyVG9Vc2UgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBoYXNQYXJlbnRMYXllciA/IHBhcmVudExheWVyIDogbGF5ZXJUb1VzZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldERpcmVjdFBhcmVudExheWVyQnlEZWxldGlvbihcclxuICBtYXA6IE1hcEJhc2UsXHJcbiAgbGF5ZXI6IExheWVyXHJcbik6IExheWVyIHtcclxuICBpZiAobGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnM/LmxpbmtJZCkge1xyXG4gICAgY29uc3QgY3VycmVudExpbmtJZCA9IGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtJZDtcclxuICAgIGxldCBwYXJlbnRzID0gbWFwLmxheWVycy5maWx0ZXIoKHBsKSA9PiB7XHJcbiAgICAgIGNvbnN0IGxpbmtlZExheWVycyA9IHBsLm9wdGlvbnMubGlua2VkTGF5ZXJzO1xyXG4gICAgICBpZiAobGlua2VkTGF5ZXJzICYmIGxpbmtlZExheWVycy5saW5rcykge1xyXG4gICAgICAgIGNvbnN0IGEgPSBsaW5rZWRMYXllcnMubGlua3MuZmluZChcclxuICAgICAgICAgIChsKSA9PiBsLmxpbmtlZElkcy5pbmNsdWRlcyhjdXJyZW50TGlua0lkKSAmJiBsLnN5bmNlZERlbGV0ZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIGE7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKHBhcmVudHMubGVuZ3RoID4gMSkge1xyXG4gICAgICBjb25zb2xlLndhcm4oYFlvdXIgbGF5ZXIgJHtcclxuICAgICAgICBsYXllci50aXRsZSB8fCBsYXllci5pZFxyXG4gICAgICB9IG11c3Qgb25seSBoYXZlIDEgcGFyZW50ICgke3BhcmVudHMubWFwKChwKSA9PiBwLnRpdGxlIHx8IHAuaWQpfSlcclxuICAgICAgICAgICwgVGhlIGZpcnN0IHBhcmVudCAoJHtcclxuICAgICAgICAgICAgcGFyZW50c1swXS50aXRsZSB8fCBwYXJlbnRzWzBdLmlkXHJcbiAgICAgICAgICB9KSB3aWxsIGJlIHVzZSB0byBzeW5jIHByb3BlcnRpZXNgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXJlbnRzWzBdO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldERpcmVjdENoaWxkTGF5ZXJzQnlEZWxldGlvbihcclxuICBtYXA6IE1hcEJhc2UsXHJcbiAgbGF5ZXI6IExheWVyXHJcbik6IExheWVyW10ge1xyXG4gIGxldCBsaW5rZWRJZHMgPSBbXTtcclxuICBpZiAobGF5ZXI/Lm9wdGlvbnMubGlua2VkTGF5ZXJzPy5saW5rcykge1xyXG4gICAgbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua3NcclxuICAgICAgLmZpbHRlcigobCkgPT4gbC5zeW5jZWREZWxldGUpXHJcbiAgICAgIC5tYXAoKGxpbmspID0+IHtcclxuICAgICAgICBsaW5rZWRJZHMgPSBsaW5rZWRJZHMuY29uY2F0KGxpbmsubGlua2VkSWRzKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIHJldHVybiBsaW5rZWRJZHMubWFwKChsaWQpID0+IGdldElnb0xheWVyQnlMaW5rSWQobWFwLCBsaWQpKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbENoaWxkTGF5ZXJzQnlEZWxldGlvbihcclxuICBtYXA6IE1hcEJhc2UsXHJcbiAgbGF5ZXI6IExheWVyLFxyXG4gIGtub3duQ2hpbGRMYXllcnM6IExheWVyW11cclxuKTogTGF5ZXJbXSB7XHJcbiAgbGV0IGNoaWxkTGF5ZXJzID0gZ2V0RGlyZWN0Q2hpbGRMYXllcnNCeURlbGV0aW9uKG1hcCwgbGF5ZXIpO1xyXG4gIGNoaWxkTGF5ZXJzLm1hcCgoY2wpID0+IHtcclxuICAgIGtub3duQ2hpbGRMYXllcnMucHVzaChjbCk7XHJcbiAgICBjb25zdCBkaXJlY3RDaGlsZExheWVycyA9IGdldERpcmVjdENoaWxkTGF5ZXJzQnlEZWxldGlvbihtYXAsIGNsKTtcclxuICAgIGlmIChkaXJlY3RDaGlsZExheWVycykge1xyXG4gICAgICBnZXRBbGxDaGlsZExheWVyc0J5RGVsZXRpb24obWFwLCBjbCwga25vd25DaGlsZExheWVycyk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIGtub3duQ2hpbGRMYXllcnM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpbml0TGF5ZXJTeW5jRnJvbVJvb3RQYXJlbnRMYXllcnMoXHJcbiAgbWFwOiBNYXBCYXNlLFxyXG4gIGxheWVyczogTGF5ZXJbXVxyXG4pIHtcclxuICBjb25zdCByb290TGF5ZXJzQnlQcm9wZXJ0eSA9IHt9O1xyXG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhMaW5rZWRQcm9wZXJ0aWVzKTtcclxuICBrZXlzLm1hcCgoaykgPT4ge1xyXG4gICAgcm9vdExheWVyc0J5UHJvcGVydHlbTGlua2VkUHJvcGVydGllc1trXV0gPSBbXTtcclxuICB9KTtcclxuICBsYXllcnNcclxuICAgIC5maWx0ZXIoKGwpID0+IGdldExpbmtlZExheWVyc09wdGlvbnMobCkpXHJcbiAgICAubWFwKChsKSA9PiB7XHJcbiAgICAgIGtleXMubWFwKChrZXkpID0+IHtcclxuICAgICAgICBjb25zdCBrID0gTGlua2VkUHJvcGVydGllc1trZXldO1xyXG4gICAgICAgIGNvbnN0IHBsYnAgPSBnZXRSb290UGFyZW50QnlQcm9wZXJ0eShtYXAsIGwsIGsgYXMgTGlua2VkUHJvcGVydGllcyk7XHJcbiAgICAgICAgY29uc3QgbGF5ZXJzID0gcm9vdExheWVyc0J5UHJvcGVydHlba107XHJcbiAgICAgICAgY29uc3QgbGF5ZXJzSWQgPSBsYXllcnMubWFwKChsKSA9PiBsLmlkKTtcclxuICAgICAgICBpZiAocGxicCAmJiAhbGF5ZXJzSWQuaW5jbHVkZXMocGxicC5pZCkpIHtcclxuICAgICAgICAgIHJvb3RMYXllcnNCeVByb3BlcnR5W2tdLnB1c2gocGxicCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIE9iamVjdC5rZXlzKHJvb3RMYXllcnNCeVByb3BlcnR5KS5tYXAoKGspID0+IHtcclxuICAgIGNvbnN0IGxheWVycyA9IHJvb3RMYXllcnNCeVByb3BlcnR5W2tdO1xyXG4gICAgbGF5ZXJzLm1hcCgobDogTGF5ZXIpID0+IGwub2wubm90aWZ5KGssIHVuZGVmaW5lZCkpO1xyXG4gIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlTGF5ZXJQcm9wZXJ0eUNoYW5nZShcclxuICBtYXA6IE1hcEJhc2UsXHJcbiAgcHJvcGVydHlDaGFuZ2U6IE9iamVjdEV2ZW50LFxyXG4gIGluaXRpYXRvcklnb0xheWVyOiBMYXllclxyXG4pIHtcclxuICBpZiAoIXByb3BlcnR5Q2hhbmdlKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIGNvbnN0IG9nY0ZpbHRlcldyaXRlciA9IG5ldyBPZ2NGaWx0ZXJXcml0ZXIoKTtcclxuICBsZXQgaXNMYXllclByb3BlcnR5ID0gdHJ1ZTtcclxuICBsZXQgaXNEYXRhc291cmNlUHJvcGVydHkgPSB0cnVlO1xyXG4gIGNvbnN0IGtleSA9IHByb3BlcnR5Q2hhbmdlLmtleTtcclxuICBsZXQgbmV3VmFsdWU7XHJcbiAgaWYgKGtleSA9PT0gJ29nY0ZpbHRlcnMnKSB7XHJcbiAgICBpc0xheWVyUHJvcGVydHkgPSBmYWxzZTtcclxuICAgIGlzRGF0YXNvdXJjZVByb3BlcnR5ID0gdHJ1ZTtcclxuICAgIG5ld1ZhbHVlID0gKFxyXG4gICAgICBpbml0aWF0b3JJZ29MYXllci5kYXRhU291cmNlLm9wdGlvbnMgYXMgT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zXHJcbiAgICApLm9nY0ZpbHRlcnM7XHJcbiAgfSBlbHNlIGlmIChrZXkgPT09ICd0aW1lRmlsdGVyJykge1xyXG4gICAgaXNMYXllclByb3BlcnR5ID0gZmFsc2U7XHJcbiAgICBpc0RhdGFzb3VyY2VQcm9wZXJ0eSA9IHRydWU7XHJcbiAgICBuZXdWYWx1ZSA9IChcclxuICAgICAgaW5pdGlhdG9ySWdvTGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zIGFzIFRpbWVGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnNcclxuICAgICkudGltZUZpbHRlcjtcclxuICB9IGVsc2Uge1xyXG4gICAgaXNMYXllclByb3BlcnR5ID0gdHJ1ZTtcclxuICAgIGlzRGF0YXNvdXJjZVByb3BlcnR5ID0gZmFsc2U7XHJcbiAgICBuZXdWYWx1ZSA9IGluaXRpYXRvcklnb0xheWVyLm9sLmdldChrZXkpO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgaW5pdGlhdG9yTGlua2VkTGF5ZXJzT3B0aW9ucyA9XHJcbiAgICBnZXRMaW5rZWRMYXllcnNPcHRpb25zKGluaXRpYXRvcklnb0xheWVyKTtcclxuICBpZiAoaW5pdGlhdG9yTGlua2VkTGF5ZXJzT3B0aW9ucykge1xyXG4gICAgbGV0IHJvb3RQYXJlbnRCeVByb3BlcnR5ID0gZ2V0Um9vdFBhcmVudEJ5UHJvcGVydHkoXHJcbiAgICAgIG1hcCxcclxuICAgICAgaW5pdGlhdG9ySWdvTGF5ZXIsXHJcbiAgICAgIGtleSBhcyBMaW5rZWRQcm9wZXJ0aWVzXHJcbiAgICApO1xyXG4gICAgaWYgKCFyb290UGFyZW50QnlQcm9wZXJ0eSkge1xyXG4gICAgICByb290UGFyZW50QnlQcm9wZXJ0eSA9IGluaXRpYXRvcklnb0xheWVyO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNsYnAgPSBbcm9vdFBhcmVudEJ5UHJvcGVydHldO1xyXG4gICAgZ2V0QWxsQ2hpbGRMYXllcnNCeVByb3BlcnR5KFxyXG4gICAgICBtYXAsXHJcbiAgICAgIHJvb3RQYXJlbnRCeVByb3BlcnR5LFxyXG4gICAgICBjbGJwLFxyXG4gICAgICBrZXkgYXMgTGlua2VkUHJvcGVydGllc1xyXG4gICAgKTtcclxuXHJcbiAgICBsZXQgcmVzb2x1dGlvblByb3BlcnR5SGFzQ2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgY29uc3QgaW5pdGlhdG9ySWdvTGF5ZXJTb3VyY2VUeXBlID1cclxuICAgICAgaW5pdGlhdG9ySWdvTGF5ZXIub3B0aW9ucy5zb3VyY2Uub3B0aW9ucy50eXBlO1xyXG4gICAgY29uc3QgaW5pdGlhdG9ySWdvTGF5ZXJPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMgPSBpbml0aWF0b3JJZ29MYXllclxyXG4gICAgICAuZGF0YVNvdXJjZS5vcHRpb25zIGFzIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucztcclxuICAgIGNsYnAubWFwKChsKSA9PiB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBpbml0aWF0b3JJZ29MYXllciAmJlxyXG4gICAgICAgIGwgJiZcclxuICAgICAgICBnZXRVaWQoaW5pdGlhdG9ySWdvTGF5ZXIub2wpICE9PSBnZXRVaWQobD8ub2wpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IGxMYXllclR5cGUgPSBsLm9wdGlvbnMuc291cmNlLm9wdGlvbnMudHlwZTtcclxuICAgICAgICBpZiAoaXNMYXllclByb3BlcnR5KSB7XHJcbiAgICAgICAgICBsLm9sLnNldChrZXksIG5ld1ZhbHVlLCB0cnVlKTtcclxuICAgICAgICAgIGlmIChrZXkgPT09ICd2aXNpYmxlJykge1xyXG4gICAgICAgICAgICBsLnZpc2libGUkLm5leHQobmV3VmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGtleSA9PT0gJ21pblJlc29sdXRpb24nIHx8IGtleSA9PT0gJ21heFJlc29sdXRpb24nKSB7XHJcbiAgICAgICAgICAgIHJlc29sdXRpb25Qcm9wZXJ0eUhhc0NoYW5nZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoaXNEYXRhc291cmNlUHJvcGVydHkpIHtcclxuICAgICAgICAgIGlmIChrZXkgPT09ICdvZ2NGaWx0ZXJzJykge1xyXG4gICAgICAgICAgICAobC5kYXRhU291cmNlIGFzIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlKS5zZXRPZ2NGaWx0ZXJzKFxyXG4gICAgICAgICAgICAgIG5ld1ZhbHVlLFxyXG4gICAgICAgICAgICAgIGZhbHNlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChsTGF5ZXJUeXBlID09PSAnd2ZzJykge1xyXG4gICAgICAgICAgICAgIGwub2wuZ2V0U291cmNlKCkucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChsTGF5ZXJUeXBlID09PSAnd21zJykge1xyXG4gICAgICAgICAgICAgIGxldCBhcHBsaWVkT2djRmlsdGVyO1xyXG4gICAgICAgICAgICAgIGlmIChpbml0aWF0b3JJZ29MYXllclNvdXJjZVR5cGUgPT09ICd3ZnMnKSB7XHJcbiAgICAgICAgICAgICAgICBhcHBsaWVkT2djRmlsdGVyID0gb2djRmlsdGVyV3JpdGVyLmhhbmRsZU9nY0ZpbHRlcnNBcHBsaWVkVmFsdWUoXHJcbiAgICAgICAgICAgICAgICAgIGluaXRpYXRvcklnb0xheWVyT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zLFxyXG4gICAgICAgICAgICAgICAgICAoaW5pdGlhdG9ySWdvTGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zIGFzIGFueSlcclxuICAgICAgICAgICAgICAgICAgICAuZmllbGROYW1lR2VvbWV0cnksXHJcbiAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgbWFwLnZpZXdDb250cm9sbGVyLmdldE9sUHJvamVjdGlvbigpXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5pdGlhdG9ySWdvTGF5ZXJTb3VyY2VUeXBlID09PSAnd21zJykge1xyXG4gICAgICAgICAgICAgICAgYXBwbGllZE9nY0ZpbHRlciA9IChcclxuICAgICAgICAgICAgICAgICAgaW5pdGlhdG9ySWdvTGF5ZXIuZGF0YVNvdXJjZSBhcyBXTVNEYXRhU291cmNlXHJcbiAgICAgICAgICAgICAgICApLm9sLmdldFBhcmFtcygpLkZJTFRFUjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgKGwuZGF0YVNvdXJjZSBhcyBXTVNEYXRhU291cmNlKS5vbC51cGRhdGVQYXJhbXMoe1xyXG4gICAgICAgICAgICAgICAgRklMVEVSOiBhcHBsaWVkT2djRmlsdGVyXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgIGwuZGF0YVNvdXJjZSBpbnN0YW5jZW9mIFdNU0RhdGFTb3VyY2UgJiZcclxuICAgICAgICAgICAga2V5ID09PSAndGltZUZpbHRlcidcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAobC5kYXRhU291cmNlIGFzIFRpbWVGaWx0ZXJhYmxlRGF0YVNvdXJjZSkuc2V0VGltZUZpbHRlcihcclxuICAgICAgICAgICAgICBuZXdWYWx1ZSxcclxuICAgICAgICAgICAgICBmYWxzZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCBhcHBsaWVkVGltZUZpbHRlciA9IChcclxuICAgICAgICAgICAgICBpbml0aWF0b3JJZ29MYXllci5vbC5nZXRTb3VyY2UoKSBhcyBvbFNvdXJjZUltYWdlV01TXHJcbiAgICAgICAgICAgICkuZ2V0UGFyYW1zKCkuVElNRTtcclxuICAgICAgICAgICAgbC5kYXRhU291cmNlLm9sLnVwZGF0ZVBhcmFtcyh7IFRJTUU6IGFwcGxpZWRUaW1lRmlsdGVyIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAocmVzb2x1dGlvblByb3BlcnR5SGFzQ2hhbmdlZCkge1xyXG4gICAgICBtYXAudmlld0NvbnRyb2xsZXIucmVzb2x1dGlvbiQubmV4dChtYXAudmlld0NvbnRyb2xsZXIucmVzb2x1dGlvbiQudmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VkTGF5ZXJzLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9saW5rZWRMYXllcnMudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQU1qQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBS2pFLE9BQU8sRUFBUyxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3BFLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxLQUFZO0lBQ2pELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFDcEMsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxHQUFZLEVBQUUsRUFBVTtJQUMxRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxNQUFNLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDdkUsQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsS0FBWSxFQUNaLFFBQTBCO0lBRTFCLElBQUksbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLE1BQU0sY0FBYyxHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JELElBQUksY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDM0MsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQ2hDLENBQUM7UUFDRixtQkFBbUIs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SSxDQUFDO3dCQUNuQixDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO29CQUM1RCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLDRCQUE0QixFQUFFLENBQUM7WUFDakMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVFLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9iamVjdEV2ZW50IH0gZnJvbSAnb2wvT2JqZWN0JztcbmltcG9ydCBvbFNvdXJjZUltYWdlV01TIGZyb20gJ29sL3NvdXJjZS9JbWFnZVdNUyc7XG5pbXBvcnQgeyBnZXRVaWQgfSBmcm9tICdvbC91dGlsJztcblxuaW1wb3J0IHtcbiAgVGltZUZpbHRlcmFibGVEYXRhU291cmNlLFxuICBUaW1lRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zXG59IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzJztcbmltcG9ydCB7IFdNU0RhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy93bXMtZGF0YXNvdXJjZSc7XG5pbXBvcnQgeyBPZ2NGaWx0ZXJXcml0ZXIgfSBmcm9tICcuLi8uLi9maWx0ZXIvc2hhcmVkL29nYy1maWx0ZXInO1xuaW1wb3J0IHtcbiAgT2djRmlsdGVyYWJsZURhdGFTb3VyY2UsXG4gIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9uc1xufSBmcm9tICcuLi8uLi9maWx0ZXIvc2hhcmVkL29nYy1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IExheWVyLCBMaW5rZWRQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycyc7XG5pbXBvcnQgdHlwZSB7IE1hcEJhc2UgfSBmcm9tICcuLi9zaGFyZWQvbWFwLmFic3RyYWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldExpbmtlZExheWVyc09wdGlvbnMobGF5ZXI6IExheWVyKSB7XG4gIHJldHVybiBsYXllci5vcHRpb25zLmxpbmtlZExheWVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldElnb0xheWVyQnlMaW5rSWQobWFwOiBNYXBCYXNlLCBpZDogc3RyaW5nKSB7XG4gIHJldHVybiBtYXAubGF5ZXJzLmZpbmQoKGwpID0+IGwub3B0aW9ucy5saW5rZWRMYXllcnM/LmxpbmtJZCA9PT0gaWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGF5ZXJIYXNMaW5rV2l0aFByb3BlcnR5KFxuICBsYXllcjogTGF5ZXIsXG4gIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzXG4pOiBib29sZWFuIHtcbiAgbGV0IGhhc0xpbmtXaXRoUHJvcGVydHkgPSBmYWxzZTtcbiAgY29uc3QgbGF5ZXJMTE9wdGlvbnMgPSBnZXRMaW5rZWRMYXllcnNPcHRpb25zKGxheWVyKTtcbiAgaWYgKGxheWVyTExPcHRpb25zPy5saW5rcykge1xuICAgIGNvbnN0IGxpbmsgPSBsYXllckxMT3B0aW9ucy5saW5rcy5maW5kKChsKSA9PlxuICAgICAgbC5wcm9wZXJ0aWVzLmluY2x1ZGVzKHByb3BlcnR5KVxuICAgICk7XG4gICAgaGFzTGlua1dpdGhQcm9wZXJ0eSA9IGxpbmsgPyB0cnVlIDogZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGhhc0xpbmtXaXRoUHJvcGVydHk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYXllckhhc0xpbmtEZWxldGlvbihsYXllcjogTGF5ZXIpOiBib29sZWFuIHtcbiAgbGV0IGhhc0xpbmtXaXRoU3luY2VkRGVsZXRlID0gZmFsc2U7XG4gIGNvbnN0IGxheWVyTExPcHRpb25zID0gZ2V0TGlua2VkTGF5ZXJzT3B0aW9ucyhsYXllcik7XG4gIGlmIChsYXllckxMT3B0aW9ucz8ubGlua3MpIHtcbiAgICBjb25zdCBsaW5rID0gbGF5ZXJMTE9wdGlvbnMubGlua3MuZmluZCgobCkgPT4gbC5zeW5jZWREZWxldGUpO1xuICAgIGhhc0xpbmtXaXRoU3luY2VkRGVsZXRlID0gbGluayA/IHRydWUgOiBmYWxzZTtcbiAgfVxuICByZXR1cm4gaGFzTGlua1dpdGhTeW5jZWREZWxldGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb290UGFyZW50QnlQcm9wZXJ0eShcbiAgbWFwOiBNYXBCYXNlLFxuICBsYXllcjogTGF5ZXIsXG4gIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzXG4pOiBMYXllciB7XG4gIGxldCBsYXllclRvVXNlID0gbGF5ZXI7XG4gIGxldCBwYXJlbnRMYXllciA9IGxheWVyVG9Vc2U7XG4gIGxldCBoYXNQYXJlbnRMYXllciA9IHRydWU7XG4gIHdoaWxlIChoYXNQYXJlbnRMYXllcikge1xuICAgIGxheWVyVG9Vc2UgPSBwYXJlbnRMYXllcjtcbiAgICBwYXJlbnRMYXllciA9IGdldERpcmVjdFBhcmVudExheWVyQnlQcm9wZXJ0eShtYXAsIGxheWVyVG9Vc2UsIHByb3BlcnR5KTtcbiAgICBoYXNQYXJlbnRMYXllciA9IHBhcmVudExheWVyID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG4gIGlmICghaGFzUGFyZW50TGF5ZXIpIHtcbiAgICBpZiAoIWxheWVySGFzTGlua1dpdGhQcm9wZXJ0eShsYXllclRvVXNlLCBwcm9wZXJ0eSkpIHtcbiAgICAgIGxheWVyVG9Vc2UgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBoYXNQYXJlbnRMYXllciA/IHBhcmVudExheWVyIDogbGF5ZXJUb1VzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpcmVjdFBhcmVudExheWVyQnlQcm9wZXJ0eShcbiAgbWFwOiBNYXBCYXNlLFxuICBsYXllcjogTGF5ZXIsXG4gIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzXG4pOiBMYXllciB7XG4gIGlmIChsYXllcj8ub3B0aW9ucy5saW5rZWRMYXllcnM/LmxpbmtJZCkge1xuICAgIGNvbnN0IGN1cnJlbnRMaW5rSWQgPSBsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rSWQ7XG4gICAgbGV0IHBhcmVudHMgPSBtYXAubGF5ZXJzLmZpbHRlcigocGwpID0+IHtcbiAgICAgIGNvbnN0IGxpbmtlZExheWVycyA9IHBsLm9wdGlvbnMubGlua2VkTGF5ZXJzO1xuICAgICAgaWYgKGxpbmtlZExheWVycyAmJiBsaW5rZWRMYXllcnMubGlua3MpIHtcbiAgICAgICAgY29uc3QgYSA9IGxpbmtlZExheWVycy5saW5rcy5maW5kKFxuICAgICAgICAgIChsKSA9PlxuICAgICAgICAgICAgbC5saW5rZWRJZHMuaW5jbHVkZXMoY3VycmVudExpbmtJZCkgJiZcbiAgICAgICAgICAgIGwucHJvcGVydGllcy5pbmNsdWRlcyhwcm9wZXJ0eSlcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHBhcmVudHMubGVuZ3RoID4gMSkge1xuICAgICAgY29uc29sZS53YXJuKGBZb3VyIGxheWVyICR7XG4gICAgICAgIGxheWVyLnRpdGxlIHx8IGxheWVyLmlkXG4gICAgICB9IG11c3Qgb25seSBoYXZlIDEgcGFyZW50ICgke3BhcmVudHMubWFwKChwKSA9PiBwLnRpdGxlIHx8IHAuaWQpfSlcbiAgICAgICAgICAgICwgVGhlIGZpcnN0IHBhcmVudCAoJHtcbiAgICAgICAgICAgICAgcGFyZW50c1swXS50aXRsZSB8fCBwYXJlbnRzWzBdLmlkXG4gICAgICAgICAgICB9KSB3aWxsIGJlIHVzZSB0byBzeW5jIHByb3BlcnRpZXNgKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmVudHNbMF07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpcmVjdENoaWxkTGF5ZXJzQnlQcm9wZXJ0eShcbiAgbWFwOiBNYXBCYXNlLFxuICBsYXllcjogTGF5ZXIsXG4gIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzXG4pOiBMYXllcltdIHtcbiAgbGV0IGxpbmtlZElkcyA9IFtdO1xuICBpZiAobGF5ZXI/Lm9wdGlvbnMubGlua2VkTGF5ZXJzPy5saW5rcykge1xuICAgIGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtzXG4gICAgICAuZmlsdGVyKChsKSA9PiBsLnByb3BlcnRpZXMuaW5jbHVkZXMocHJvcGVydHkpKVxuICAgICAgLm1hcCgobGluaykgPT4ge1xuICAgICAgICBsaW5rZWRJZHMgPSBsaW5rZWRJZHMuY29uY2F0KGxpbmsubGlua2VkSWRzKTtcbiAgICAgIH0pO1xuICB9XG4gIHJldHVybiBsaW5rZWRJZHMubWFwKChsaWQpID0+IGdldElnb0xheWVyQnlMaW5rSWQobWFwLCBsaWQpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbENoaWxkTGF5ZXJzQnlQcm9wZXJ0eShcbiAgbWFwOiBNYXBCYXNlLFxuICBsYXllcjogTGF5ZXIsXG4gIGtub3duQ2hpbGRMYXllcnM6IExheWVyW10sXG4gIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzXG4pOiBMYXllcltdIHtcbiAgbGV0IGNoaWxkTGF5ZXJzID0gZ2V0RGlyZWN0Q2hpbGRMYXllcnNCeVByb3BlcnR5KG1hcCwgbGF5ZXIsIHByb3BlcnR5KTtcbiAgY2hpbGRMYXllcnMubWFwKChjbCkgPT4ge1xuICAgIGtub3duQ2hpbGRMYXllcnMucHVzaChjbCk7XG4gICAgY29uc3QgZGlyZWN0Q2hpbGRMYXllcnMgPSBnZXREaXJlY3RDaGlsZExheWVyc0J5UHJvcGVydHkobWFwLCBjbCwgcHJvcGVydHkpO1xuICAgIGlmIChkaXJlY3RDaGlsZExheWVycykge1xuICAgICAgZ2V0QWxsQ2hpbGRMYXllcnNCeVByb3BlcnR5KG1hcCwgY2wsIGtub3duQ2hpbGRMYXllcnMsIHByb3BlcnR5KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4ga25vd25DaGlsZExheWVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJvb3RQYXJlbnRCeURlbGV0aW9uKG1hcDogTWFwQmFzZSwgbGF5ZXI6IExheWVyKTogTGF5ZXIge1xuICBsZXQgbGF5ZXJUb1VzZSA9IGxheWVyO1xuICBsZXQgcGFyZW50TGF5ZXIgPSBsYXllclRvVXNlO1xuICBsZXQgaGFzUGFyZW50TGF5ZXIgPSB0cnVlO1xuICB3aGlsZSAoaGFzUGFyZW50TGF5ZXIpIHtcbiAgICBsYXllclRvVXNlID0gcGFyZW50TGF5ZXI7XG4gICAgcGFyZW50TGF5ZXIgPSBnZXREaXJlY3RQYXJlbnRMYXllckJ5RGVsZXRpb24obWFwLCBsYXllclRvVXNlKTtcbiAgICBoYXNQYXJlbnRMYXllciA9IHBhcmVudExheWVyID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG4gIGlmICghaGFzUGFyZW50TGF5ZXIpIHtcbiAgICBpZiAoIWxheWVySGFzTGlua0RlbGV0aW9uKGxheWVyVG9Vc2UpKSB7XG4gICAgICBsYXllclRvVXNlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaGFzUGFyZW50TGF5ZXIgPyBwYXJlbnRMYXllciA6IGxheWVyVG9Vc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXJlY3RQYXJlbnRMYXllckJ5RGVsZXRpb24oXG4gIG1hcDogTWFwQmFzZSxcbiAgbGF5ZXI6IExheWVyXG4pOiBMYXllciB7XG4gIGlmIChsYXllci5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua0lkKSB7XG4gICAgY29uc3QgY3VycmVudExpbmtJZCA9IGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtJZDtcbiAgICBsZXQgcGFyZW50cyA9IG1hcC5sYXllcnMuZmlsdGVyKChwbCkgPT4ge1xuICAgICAgY29uc3QgbGlua2VkTGF5ZXJzID0gcGwub3B0aW9ucy5saW5rZWRMYXllcnM7XG4gICAgICBpZiAobGlua2VkTGF5ZXJzICYmIGxpbmtlZExheWVycy5saW5rcykge1xuICAgICAgICBjb25zdCBhID0gbGlua2VkTGF5ZXJzLmxpbmtzLmZpbmQoXG4gICAgICAgICAgKGwpID0+IGwubGlua2VkSWRzLmluY2x1ZGVzKGN1cnJlbnRMaW5rSWQpICYmIGwuc3luY2VkRGVsZXRlXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChwYXJlbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnNvbGUud2FybihgWW91ciBsYXllciAke1xuICAgICAgICBsYXllci50aXRsZSB8fCBsYXllci5pZFxuICAgICAgfSBtdXN0IG9ubHkgaGF2ZSAxIHBhcmVudCAoJHtwYXJlbnRzLm1hcCgocCkgPT4gcC50aXRsZSB8fCBwLmlkKX0pXG4gICAgICAgICAgLCBUaGUgZmlyc3QgcGFyZW50ICgke1xuICAgICAgICAgICAgcGFyZW50c1swXS50aXRsZSB8fCBwYXJlbnRzWzBdLmlkXG4gICAgICAgICAgfSkgd2lsbCBiZSB1c2UgdG8gc3luYyBwcm9wZXJ0aWVzYCk7XG4gICAgfVxuICAgIHJldHVybiBwYXJlbnRzWzBdO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXJlY3RDaGlsZExheWVyc0J5RGVsZXRpb24oXG4gIG1hcDogTWFwQmFzZSxcbiAgbGF5ZXI6IExheWVyXG4pOiBMYXllcltdIHtcbiAgbGV0IGxpbmtlZElkcyA9IFtdO1xuICBpZiAobGF5ZXI/Lm9wdGlvbnMubGlua2VkTGF5ZXJzPy5saW5rcykge1xuICAgIGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtzXG4gICAgICAuZmlsdGVyKChsKSA9PiBsLnN5bmNlZERlbGV0ZSlcbiAgICAgIC5tYXAoKGxpbmspID0+IHtcbiAgICAgICAgbGlua2VkSWRzID0gbGlua2VkSWRzLmNvbmNhdChsaW5rLmxpbmtlZElkcyk7XG4gICAgICB9KTtcbiAgfVxuICByZXR1cm4gbGlua2VkSWRzLm1hcCgobGlkKSA9PiBnZXRJZ29MYXllckJ5TGlua0lkKG1hcCwgbGlkKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxDaGlsZExheWVyc0J5RGVsZXRpb24oXG4gIG1hcDogTWFwQmFzZSxcbiAgbGF5ZXI6IExheWVyLFxuICBrbm93bkNoaWxkTGF5ZXJzOiBMYXllcltdXG4pOiBMYXllcltdIHtcbiAgbGV0IGNoaWxkTGF5ZXJzID0gZ2V0RGlyZWN0Q2hpbGRMYXllcnNCeURlbGV0aW9uKG1hcCwgbGF5ZXIpO1xuICBjaGlsZExheWVycy5tYXAoKGNsKSA9PiB7XG4gICAga25vd25DaGlsZExheWVycy5wdXNoKGNsKTtcbiAgICBjb25zdCBkaXJlY3RDaGlsZExheWVycyA9IGdldERpcmVjdENoaWxkTGF5ZXJzQnlEZWxldGlvbihtYXAsIGNsKTtcbiAgICBpZiAoZGlyZWN0Q2hpbGRMYXllcnMpIHtcbiAgICAgIGdldEFsbENoaWxkTGF5ZXJzQnlEZWxldGlvbihtYXAsIGNsLCBrbm93bkNoaWxkTGF5ZXJzKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4ga25vd25DaGlsZExheWVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRMYXllclN5bmNGcm9tUm9vdFBhcmVudExheWVycyhcbiAgbWFwOiBNYXBCYXNlLFxuICBsYXllcnM6IExheWVyW11cbikge1xuICBjb25zdCByb290TGF5ZXJzQnlQcm9wZXJ0eSA9IHt9O1xuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoTGlua2VkUHJvcGVydGllcyk7XG4gIGtleXMubWFwKChrKSA9PiB7XG4gICAgcm9vdExheWVyc0J5UHJvcGVydHlbTGlua2VkUHJvcGVydGllc1trXV0gPSBbXTtcbiAgfSk7XG4gIGxheWVyc1xuICAgIC5maWx0ZXIoKGwpID0+IGdldExpbmtlZExheWVyc09wdGlvbnMobCkpXG4gICAgLm1hcCgobCkgPT4ge1xuICAgICAga2V5cy5tYXAoKGtleSkgPT4ge1xuICAgICAgICBjb25zdCBrID0gTGlua2VkUHJvcGVydGllc1trZXldO1xuICAgICAgICBjb25zdCBwbGJwID0gZ2V0Um9vdFBhcmVudEJ5UHJvcGVydHkobWFwLCBsLCBrIGFzIExpbmtlZFByb3BlcnRpZXMpO1xuICAgICAgICBjb25zdCBsYXllcnMgPSByb290TGF5ZXJzQnlQcm9wZXJ0eVtrXTtcbiAgICAgICAgY29uc3QgbGF5ZXJzSWQgPSBsYXllcnMubWFwKChsKSA9PiBsLmlkKTtcbiAgICAgICAgaWYgKHBsYnAgJiYgIWxheWVyc0lkLmluY2x1ZGVzKHBsYnAuaWQpKSB7XG4gICAgICAgICAgcm9vdExheWVyc0J5UHJvcGVydHlba10ucHVzaChwbGJwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIE9iamVjdC5rZXlzKHJvb3RMYXllcnNCeVByb3BlcnR5KS5tYXAoKGspID0+IHtcbiAgICBjb25zdCBsYXllcnMgPSByb290TGF5ZXJzQnlQcm9wZXJ0eVtrXTtcbiAgICBsYXllcnMubWFwKChsOiBMYXllcikgPT4gbC5vbC5ub3RpZnkoaywgdW5kZWZpbmVkKSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlTGF5ZXJQcm9wZXJ0eUNoYW5nZShcbiAgbWFwOiBNYXBCYXNlLFxuICBwcm9wZXJ0eUNoYW5nZTogT2JqZWN0RXZlbnQsXG4gIGluaXRpYXRvcklnb0xheWVyOiBMYXllclxuKSB7XG4gIGlmICghcHJvcGVydHlDaGFuZ2UpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3Qgb2djRmlsdGVyV3JpdGVyID0gbmV3IE9nY0ZpbHRlcldyaXRlcigpO1xuICBsZXQgaXNMYXllclByb3BlcnR5ID0gdHJ1ZTtcbiAgbGV0IGlzRGF0YXNvdXJjZVByb3BlcnR5ID0gdHJ1ZTtcbiAgY29uc3Qga2V5ID0gcHJvcGVydHlDaGFuZ2Uua2V5O1xuICBsZXQgbmV3VmFsdWU7XG4gIGlmIChrZXkgPT09ICdvZ2NGaWx0ZXJzJykge1xuICAgIGlzTGF5ZXJQcm9wZXJ0eSA9IGZhbHNlO1xuICAgIGlzRGF0YXNvdXJjZVByb3BlcnR5ID0gdHJ1ZTtcbiAgICBuZXdWYWx1ZSA9IChcbiAgICAgIGluaXRpYXRvcklnb0xheWVyLmRhdGFTb3VyY2Uub3B0aW9ucyBhcyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnNcbiAgICApLm9nY0ZpbHRlcnM7XG4gIH0gZWxzZSBpZiAoa2V5ID09PSAndGltZUZpbHRlcicpIHtcbiAgICBpc0xheWVyUHJvcGVydHkgPSBmYWxzZTtcbiAgICBpc0RhdGFzb3VyY2VQcm9wZXJ0eSA9IHRydWU7XG4gICAgbmV3VmFsdWUgPSAoXG4gICAgICBpbml0aWF0b3JJZ29MYXllci5kYXRhU291cmNlLm9wdGlvbnMgYXMgVGltZUZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9uc1xuICAgICkudGltZUZpbHRlcjtcbiAgfSBlbHNlIHtcbiAgICBpc0xheWVyUHJvcGVydHkgPSB0cnVlO1xuICAgIGlzRGF0YXNvdXJjZVByb3BlcnR5ID0gZmFsc2U7XG4gICAgbmV3VmFsdWUgPSBpbml0aWF0b3JJZ29MYXllci5vbC5nZXQoa2V5KTtcbiAgfVxuXG4gIGNvbnN0IGluaXRpYXRvckxpbmtlZExheWVyc09wdGlvbnMgPVxuICAgIGdldExpbmtlZExheWVyc09wdGlvbnMoaW5pdGlhdG9ySWdvTGF5ZXIpO1xuICBpZiAoaW5pdGlhdG9yTGlua2VkTGF5ZXJzT3B0aW9ucykge1xuICAgIGxldCByb290UGFyZW50QnlQcm9wZXJ0eSA9IGdldFJvb3RQYXJlbnRCeVByb3BlcnR5KFxuICAgICAgbWFwLFxuICAgICAgaW5pdGlhdG9ySWdvTGF5ZXIsXG4gICAgICBrZXkgYXMgTGlua2VkUHJvcGVydGllc1xuICAgICk7XG4gICAgaWYgKCFyb290UGFyZW50QnlQcm9wZXJ0eSkge1xuICAgICAgcm9vdFBhcmVudEJ5UHJvcGVydHkgPSBpbml0aWF0b3JJZ29MYXllcjtcbiAgICB9XG5cbiAgICBjb25zdCBjbGJwID0gW3Jvb3RQYXJlbnRCeVByb3BlcnR5XTtcbiAgICBnZXRBbGxDaGlsZExheWVyc0J5UHJvcGVydHkoXG4gICAgICBtYXAsXG4gICAgICByb290UGFyZW50QnlQcm9wZXJ0eSxcbiAgICAgIGNsYnAsXG4gICAgICBrZXkgYXMgTGlua2VkUHJvcGVydGllc1xuICAgICk7XG5cbiAgICBsZXQgcmVzb2x1dGlvblByb3BlcnR5SGFzQ2hhbmdlZCA9IGZhbHNlO1xuICAgIGNvbnN0IGluaXRpYXRvcklnb0xheWVyU291cmNlVHlwZSA9XG4gICAgICBpbml0aWF0b3JJZ29MYXllci5vcHRpb25zLnNvdXJjZS5vcHRpb25zLnR5cGU7XG4gICAgY29uc3QgaW5pdGlhdG9ySWdvTGF5ZXJPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMgPSBpbml0aWF0b3JJZ29MYXllclxuICAgICAgLmRhdGFTb3VyY2Uub3B0aW9ucyBhcyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnM7XG4gICAgY2xicC5tYXAoKGwpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgaW5pdGlhdG9ySWdvTGF5ZXIgJiZcbiAgICAgICAgbCAmJlxuICAgICAgICBnZXRVaWQoaW5pdGlhdG9ySWdvTGF5ZXIub2wpICE9PSBnZXRVaWQobD8ub2wpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgbExheWVyVHlwZSA9IGwub3B0aW9ucy5zb3VyY2Uub3B0aW9ucy50eXBlO1xuICAgICAgICBpZiAoaXNMYXllclByb3BlcnR5KSB7XG4gICAgICAgICAgbC5vbC5zZXQoa2V5LCBuZXdWYWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgaWYgKGtleSA9PT0gJ3Zpc2libGUnKSB7XG4gICAgICAgICAgICBsLnZpc2libGUkLm5leHQobmV3VmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoa2V5ID09PSAnbWluUmVzb2x1dGlvbicgfHwga2V5ID09PSAnbWF4UmVzb2x1dGlvbicpIHtcbiAgICAgICAgICAgIHJlc29sdXRpb25Qcm9wZXJ0eUhhc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChpc0RhdGFzb3VyY2VQcm9wZXJ0eSkge1xuICAgICAgICAgIGlmIChrZXkgPT09ICdvZ2NGaWx0ZXJzJykge1xuICAgICAgICAgICAgKGwuZGF0YVNvdXJjZSBhcyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZSkuc2V0T2djRmlsdGVycyhcbiAgICAgICAgICAgICAgbmV3VmFsdWUsXG4gICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGxMYXllclR5cGUgPT09ICd3ZnMnKSB7XG4gICAgICAgICAgICAgIGwub2wuZ2V0U291cmNlKCkucmVmcmVzaCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxMYXllclR5cGUgPT09ICd3bXMnKSB7XG4gICAgICAgICAgICAgIGxldCBhcHBsaWVkT2djRmlsdGVyO1xuICAgICAgICAgICAgICBpZiAoaW5pdGlhdG9ySWdvTGF5ZXJTb3VyY2VUeXBlID09PSAnd2ZzJykge1xuICAgICAgICAgICAgICAgIGFwcGxpZWRPZ2NGaWx0ZXIgPSBvZ2NGaWx0ZXJXcml0ZXIuaGFuZGxlT2djRmlsdGVyc0FwcGxpZWRWYWx1ZShcbiAgICAgICAgICAgICAgICAgIGluaXRpYXRvcklnb0xheWVyT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgKGluaXRpYXRvcklnb0xheWVyLmRhdGFTb3VyY2Uub3B0aW9ucyBhcyBhbnkpXG4gICAgICAgICAgICAgICAgICAgIC5maWVsZE5hbWVHZW9tZXRyeSxcbiAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIG1hcC52aWV3Q29udHJvbGxlci5nZXRPbFByb2plY3Rpb24oKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5pdGlhdG9ySWdvTGF5ZXJTb3VyY2VUeXBlID09PSAnd21zJykge1xuICAgICAgICAgICAgICAgIGFwcGxpZWRPZ2NGaWx0ZXIgPSAoXG4gICAgICAgICAgICAgICAgICBpbml0aWF0b3JJZ29MYXllci5kYXRhU291cmNlIGFzIFdNU0RhdGFTb3VyY2VcbiAgICAgICAgICAgICAgICApLm9sLmdldFBhcmFtcygpLkZJTFRFUjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAobC5kYXRhU291cmNlIGFzIFdNU0RhdGFTb3VyY2UpLm9sLnVwZGF0ZVBhcmFtcyh7XG4gICAgICAgICAgICAgICAgRklMVEVSOiBhcHBsaWVkT2djRmlsdGVyXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBsLmRhdGFTb3VyY2UgaW5zdGFuY2VvZiBXTVNEYXRhU291cmNlICYmXG4gICAgICAgICAgICBrZXkgPT09ICd0aW1lRmlsdGVyJ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgKGwuZGF0YVNvdXJjZSBhcyBUaW1lRmlsdGVyYWJsZURhdGFTb3VyY2UpLnNldFRpbWVGaWx0ZXIoXG4gICAgICAgICAgICAgIG5ld1ZhbHVlLFxuICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGFwcGxpZWRUaW1lRmlsdGVyID0gKFxuICAgICAgICAgICAgICBpbml0aWF0b3JJZ29MYXllci5vbC5nZXRTb3VyY2UoKSBhcyBvbFNvdXJjZUltYWdlV01TXG4gICAgICAgICAgICApLmdldFBhcmFtcygpLlRJTUU7XG4gICAgICAgICAgICBsLmRhdGFTb3VyY2Uub2wudXBkYXRlUGFyYW1zKHsgVElNRTogYXBwbGllZFRpbWVGaWx0ZXIgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHJlc29sdXRpb25Qcm9wZXJ0eUhhc0NoYW5nZWQpIHtcbiAgICAgIG1hcC52aWV3Q29udHJvbGxlci5yZXNvbHV0aW9uJC5uZXh0KG1hcC52aWV3Q29udHJvbGxlci5yZXNvbHV0aW9uJC52YWx1ZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,11 +1,11 @@
1
1
  import { Directive, EventEmitter, Input, Output, Self } from '@angular/core';
2
- import { MediaService } from '@igo2/core';
2
+ import { MediaService } from '@igo2/core/media';
3
3
  import { unByKey } from 'ol/Observable';
4
4
  import { transform } from 'ol/proj';
5
5
  import { MapBrowserComponent } from '../../map/map-browser/map-browser.component';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "../../map/map-browser/map-browser.component";
8
- import * as i2 from "@igo2/core";
8
+ import * as i2 from "@igo2/core/media";
9
9
  /**
10
10
  * This directive return the pointer coordinate (on click or pointermove)
11
11
  * in [longitude, latitude], delayed by in input (pointerMoveDelay)
@@ -103,10 +103,10 @@ export class PointerPositionDirective {
103
103
  this.pointerPositionCoord.emit(lonlat);
104
104
  }, delay);
105
105
  }
106
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: PointerPositionDirective, deps: [{ token: i1.MapBrowserComponent, self: true }, { token: i2.MediaService }], target: i0.ɵɵFactoryTarget.Directive });
107
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.1", type: PointerPositionDirective, isStandalone: true, selector: "[igoPointerPosition]", inputs: { pointerPositionDelay: "pointerPositionDelay" }, outputs: { pointerPositionCoord: "pointerPositionCoord" }, ngImport: i0 });
106
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: PointerPositionDirective, deps: [{ token: i1.MapBrowserComponent, self: true }, { token: i2.MediaService }], target: i0.ɵɵFactoryTarget.Directive });
107
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.9", type: PointerPositionDirective, isStandalone: true, selector: "[igoPointerPosition]", inputs: { pointerPositionDelay: "pointerPositionDelay" }, outputs: { pointerPositionCoord: "pointerPositionCoord" }, ngImport: i0 });
108
108
  }
109
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: PointerPositionDirective, decorators: [{
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: PointerPositionDirective, decorators: [{
110
110
  type: Directive,
111
111
  args: [{
112
112
  selector: '[igoPointerPosition]',
@@ -119,4 +119,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
119
119
  }], pointerPositionCoord: [{
120
120
  type: Output
121
121
  }] } });
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXBvaW50ZXItcG9zaXRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9tYXAtcG9pbnRlci1wb3NpdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUcxQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFcEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7Ozs7QUFHbEY7Ozs7R0FJRztBQUtILE1BQU0sT0FBTyx3QkFBd0I7SUFvQ2pCO0lBQ1I7SUFwQ0Ysa0JBQWtCLENBQUM7SUFFM0I7O09BRUc7SUFDSyxtQkFBbUIsQ0FBQztJQUU1Qjs7T0FFRztJQUNLLGdCQUFnQixDQUFDO0lBRXpCOztPQUVHO0lBQ00sb0JBQW9CLEdBQVcsSUFBSSxDQUFDO0lBRTdDOztPQUVHO0lBQ08sb0JBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7SUFFdEU7OztPQUdHO0lBQ0gsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBUSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQWMsQ0FBQyxVQUFVLENBQUM7SUFDbkQsQ0FBQztJQUVELFlBQ2tCLFNBQThCLEVBQ3RDLFlBQTBCO1FBRGxCLGNBQVMsR0FBVCxTQUFTLENBQXFCO1FBQ3RDLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBQ2pDLENBQUM7SUFFSjs7O09BR0c7SUFDSCxRQUFRO1FBQ04sSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSyxzQkFBc0I7UUFDNUIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FDdkMsYUFBYSxFQUNiLENBQUMsS0FBa0MsRUFBRSxFQUFFLENBQ3JDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUN4RCxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ssZ0JBQWdCO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQ3BDLGFBQWEsRUFDYixDQUFDLEtBQWtDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUN0RSxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ssd0JBQXdCO1FBQzlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7T0FFRztJQUNLLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7O09BR0c7SUFDSyxjQUFjLENBQUMsS0FBa0MsRUFBRSxLQUFhO1FBQ3RFLElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDeEQsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ25ELHNDQUFzQztZQUN0QyxZQUFZLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FDdEIsS0FBSyxDQUFDLFVBQVUsRUFDaEIsSUFBSSxDQUFDLGFBQWEsRUFDbEIsV0FBVyxDQUNRLENBQUM7UUFDdEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDeEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDWixDQUFDO3VHQW5IVSx3QkFBd0I7MkZBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFKcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQXFDSSxJQUFJO29FQXBCRSxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBS0ksb0JBQW9CO3NCQUE3QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBEaXJlY3RpdmUsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNlbGZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE1lZGlhU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xyXG5cclxuaW1wb3J0IE1hcEJyb3dzZXJQb2ludGVyRXZlbnQgZnJvbSAnb2wvTWFwQnJvd3NlckV2ZW50JztcclxuaW1wb3J0IHsgdW5CeUtleSB9IGZyb20gJ29sL09ic2VydmFibGUnO1xyXG5pbXBvcnQgeyB0cmFuc2Zvcm0gfSBmcm9tICdvbC9wcm9qJztcclxuXHJcbmltcG9ydCB7IE1hcEJyb3dzZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tYXAvbWFwLWJyb3dzZXIvbWFwLWJyb3dzZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9tYXAnO1xyXG5cclxuLyoqXHJcbiAqIFRoaXMgZGlyZWN0aXZlIHJldHVybiB0aGUgcG9pbnRlciBjb29yZGluYXRlIChvbiBjbGljayBvciBwb2ludGVybW92ZSlcclxuICogaW4gW2xvbmdpdHVkZSwgbGF0aXR1ZGVdLCBkZWxheWVkIGJ5IGluIGlucHV0IChwb2ludGVyTW92ZURlbGF5KVxyXG4gKiB0byBhdm9pZCB0b28gbWFueSBlbWl0dGVkIHZhbHVlcy5cclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2lnb1BvaW50ZXJQb3NpdGlvbl0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIFBvaW50ZXJQb3NpdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIGxhc3RUaW1lb3V0UmVxdWVzdDtcclxuXHJcbiAgLyoqXHJcbiAgICogTGlzdGVuZXIgdG8gdGhlIHBvaW50ZXIgbW92ZSBldmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgcG9pbnRlck1vdmVMaXN0ZW5lcjtcclxuXHJcbiAgLyoqXHJcbiAgICogTGlzdGVuZXIgdG8gdGhlIG1hcCBjbGljayBldmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgbWFwQ2xpY2tMaXN0ZW5lcjtcclxuXHJcbiAgLyoqXHJcbiAgICogRGVsYXkgYmVmb3JlIGVtaXR0aW5nIGFuIGV2ZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgcG9pbnRlclBvc2l0aW9uRGVsYXk6IG51bWJlciA9IDEwMDA7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgcG9pbnRlciBtb3ZlLCBkZWxheWVkIGJ5IHBvaW50ZXJNb3ZlRGVsYXlcclxuICAgKi9cclxuICBAT3V0cHV0KCkgcG9pbnRlclBvc2l0aW9uQ29vcmQgPSBuZXcgRXZlbnRFbWl0dGVyPFtudW1iZXIsIG51bWJlcl0+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIElHTyBtYXBcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBnZXQgbWFwKCk6IElnb01hcCB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnQubWFwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1hcFByb2plY3Rpb24oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAodGhpcy5jb21wb25lbnQubWFwIGFzIElnb01hcCkucHJvamVjdGlvbjtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQFNlbGYoKSBwcml2YXRlIGNvbXBvbmVudDogTWFwQnJvd3NlckNvbXBvbmVudCxcclxuICAgIHByaXZhdGUgbWVkaWFTZXJ2aWNlOiBNZWRpYVNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0YXJ0IGxpc3RlbmluZyB0byBwb2ludGVybW92ZVxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5saXN0ZW5Ub01hcFBvaW50ZXJNb3ZlKCk7XHJcbiAgICB0aGlzLmxpc3RlblRvTWFwQ2xpY2soKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0b3AgbGlzdGVuaW5nIHRvIHBvaW50ZXJtb3ZlXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnVubGlzdGVuVG9NYXBQb2ludGVyTW92ZSgpO1xyXG4gICAgdGhpcy51bmxpc3RlblRvTWFwQ2xpY2soKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIG1hcCBwb2ludGVybW92ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgbGlzdGVuVG9NYXBQb2ludGVyTW92ZSgpIHtcclxuICAgIHRoaXMucG9pbnRlck1vdmVMaXN0ZW5lciA9IHRoaXMubWFwLm9sLm9uKFxyXG4gICAgICAncG9pbnRlcm1vdmUnLFxyXG4gICAgICAoZXZlbnQ6IE1hcEJyb3dzZXJQb2ludGVyRXZlbnQ8YW55PikgPT5cclxuICAgICAgICB0aGlzLm9uUG9pbnRlckV2ZW50KGV2ZW50LCB0aGlzLnBvaW50ZXJQb3NpdGlvbkRlbGF5KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIG1hcCBjbGlja1xyXG4gICAqL1xyXG4gIHByaXZhdGUgbGlzdGVuVG9NYXBDbGljaygpIHtcclxuICAgIHRoaXMubWFwQ2xpY2tMaXN0ZW5lciA9IHRoaXMubWFwLm9sLm9uKFxyXG4gICAgICAnc2luZ2xlY2xpY2snLFxyXG4gICAgICAoZXZlbnQ6IE1hcEJyb3dzZXJQb2ludGVyRXZlbnQ8YW55PikgPT4gdGhpcy5vblBvaW50ZXJFdmVudChldmVudCwgMClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdG9wIGxpc3RlbmluZyBmb3IgbWFwIHBvaW50ZXJtb3ZlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1bmxpc3RlblRvTWFwUG9pbnRlck1vdmUoKSB7XHJcbiAgICB1bkJ5S2V5KHRoaXMucG9pbnRlck1vdmVMaXN0ZW5lcik7XHJcbiAgICB0aGlzLnBvaW50ZXJNb3ZlTGlzdGVuZXIgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdG9wIGxpc3RlbmluZyBmb3IgbWFwIGNsaWNrc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgdW5saXN0ZW5Ub01hcENsaWNrKCkge1xyXG4gICAgdGhpcy5tYXBDbGlja0xpc3RlbmVyID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZW1pdCBkZWxheWVkIGNvb3JkaW5hdGUgKGxvbmdpdHVkZSwgbGF0aXR1ZGUgYXJyYXkpIGJhc2VkIG9uIHBvaW50ZXJNb3ZlRGVsYXkgb3Igb24gY2xpY2tcclxuICAgKiBAcGFyYW0gZXZlbnQgT0wgbWFwIGJyb3dzZXIgcG9pbnRlciBldmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgb25Qb2ludGVyRXZlbnQoZXZlbnQ6IE1hcEJyb3dzZXJQb2ludGVyRXZlbnQ8YW55PiwgZGVsYXk6IG51bWJlcikge1xyXG4gICAgaWYgKGV2ZW50LmRyYWdnaW5nIHx8IHRoaXMubWVkaWFTZXJ2aWNlLmlzVG91Y2hTY3JlZW4oKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIHRoaXMubGFzdFRpbWVvdXRSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAvLyBjYW5jZWwgdGltZW91dCB3aGVuIHRoZSBtb3VzZSBtb3Zlc1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5sYXN0VGltZW91dFJlcXVlc3QpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGxvbmxhdCA9IHRyYW5zZm9ybShcclxuICAgICAgZXZlbnQuY29vcmRpbmF0ZSxcclxuICAgICAgdGhpcy5tYXBQcm9qZWN0aW9uLFxyXG4gICAgICAnRVBTRzo0MzI2J1xyXG4gICAgKSBhcyBbbnVtYmVyLCBudW1iZXJdO1xyXG4gICAgdGhpcy5sYXN0VGltZW91dFJlcXVlc3QgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5wb2ludGVyUG9zaXRpb25Db29yZC5lbWl0KGxvbmxhdCk7XHJcbiAgICB9LCBkZWxheSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXBvaW50ZXItcG9zaXRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9tYXAtcG9pbnRlci1wb3NpdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVwQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7OztBQUdsRjs7OztHQUlHO0FBS0gsTUFBTSxPQUFPLHdCQUF3QjtJQW9DakI7SUFDUjtJQXBDRixrQkFBa0IsQ0FBQztJQUUzQjs7T0FFRztJQUNLLG1CQUFtQixDQUFDO0lBRTVCOztPQUVHO0lBQ0ssZ0JBQWdCLENBQUM7SUFFekI7O09BRUc7SUFDTSxvQkFBb0IsR0FBVyxJQUFJLENBQUM7SUFFN0M7O09BRUc7SUFDTyxvQkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztJQUV0RTs7O09BR0c7SUFDSCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBYyxDQUFDLFVBQVUsQ0FBQztJQUNuRCxDQUFDO0lBRUQsWUFDa0IsU0FBOEIsRUFDdEMsWUFBMEI7UUFEbEIsY0FBUyxHQUFULFNBQVMsQ0FBcUI7UUFDdEMsaUJBQVksR0FBWixZQUFZLENBQWM7SUFDakMsQ0FBQztJQUVKOzs7T0FHRztJQUNILFFBQVE7UUFDTixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVztRQUNULElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNLLHNCQUFzQjtRQUM1QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUN2QyxhQUFhLEVBQ2IsQ0FBQyxLQUFrQyxFQUFFLEVBQUUsQ0FDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQ3hELENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSyxnQkFBZ0I7UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FDcEMsYUFBYSxFQUNiLENBQUMsS0FBa0MsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQ3RFLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSyx3QkFBd0I7UUFDOUIsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGNBQWMsQ0FBQyxLQUFrQyxFQUFFLEtBQWE7UUFDdEUsSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztZQUN4RCxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksT0FBTyxJQUFJLENBQUMsa0JBQWtCLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDbkQsc0NBQXNDO1lBQ3RDLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUN0QixLQUFLLENBQUMsVUFBVSxFQUNoQixJQUFJLENBQUMsYUFBYSxFQUNsQixXQUFXLENBQ1EsQ0FBQztRQUN0QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUN4QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNaLENBQUM7dUdBbkhVLHdCQUF3QjsyRkFBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQUpwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBcUNJLElBQUk7b0VBcEJFLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFLSSxvQkFBb0I7c0JBQTdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNlbGZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1lZGlhU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvbWVkaWEnO1xuXG5pbXBvcnQgTWFwQnJvd3NlclBvaW50ZXJFdmVudCBmcm9tICdvbC9NYXBCcm93c2VyRXZlbnQnO1xuaW1wb3J0IHsgdW5CeUtleSB9IGZyb20gJ29sL09ic2VydmFibGUnO1xuaW1wb3J0IHsgdHJhbnNmb3JtIH0gZnJvbSAnb2wvcHJvaic7XG5cbmltcG9ydCB7IE1hcEJyb3dzZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tYXAvbWFwLWJyb3dzZXIvbWFwLWJyb3dzZXIuY29tcG9uZW50JztcbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4uLy4uL21hcC9zaGFyZWQvbWFwJztcblxuLyoqXG4gKiBUaGlzIGRpcmVjdGl2ZSByZXR1cm4gdGhlIHBvaW50ZXIgY29vcmRpbmF0ZSAob24gY2xpY2sgb3IgcG9pbnRlcm1vdmUpXG4gKiBpbiBbbG9uZ2l0dWRlLCBsYXRpdHVkZV0sIGRlbGF5ZWQgYnkgaW4gaW5wdXQgKHBvaW50ZXJNb3ZlRGVsYXkpXG4gKiB0byBhdm9pZCB0b28gbWFueSBlbWl0dGVkIHZhbHVlcy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2lnb1BvaW50ZXJQb3NpdGlvbl0nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFBvaW50ZXJQb3NpdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBsYXN0VGltZW91dFJlcXVlc3Q7XG5cbiAgLyoqXG4gICAqIExpc3RlbmVyIHRvIHRoZSBwb2ludGVyIG1vdmUgZXZlbnRcbiAgICovXG4gIHByaXZhdGUgcG9pbnRlck1vdmVMaXN0ZW5lcjtcblxuICAvKipcbiAgICogTGlzdGVuZXIgdG8gdGhlIG1hcCBjbGljayBldmVudFxuICAgKi9cbiAgcHJpdmF0ZSBtYXBDbGlja0xpc3RlbmVyO1xuXG4gIC8qKlxuICAgKiBEZWxheSBiZWZvcmUgZW1pdHRpbmcgYW4gZXZlbnRcbiAgICovXG4gIEBJbnB1dCgpIHBvaW50ZXJQb3NpdGlvbkRlbGF5OiBudW1iZXIgPSAxMDAwO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHBvaW50ZXIgbW92ZSwgZGVsYXllZCBieSBwb2ludGVyTW92ZURlbGF5XG4gICAqL1xuICBAT3V0cHV0KCkgcG9pbnRlclBvc2l0aW9uQ29vcmQgPSBuZXcgRXZlbnRFbWl0dGVyPFtudW1iZXIsIG51bWJlcl0+KCk7XG5cbiAgLyoqXG4gICAqIElHTyBtYXBcbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXQgbWFwKCk6IElnb01hcCB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50Lm1hcDtcbiAgfVxuXG4gIGdldCBtYXBQcm9qZWN0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLmNvbXBvbmVudC5tYXAgYXMgSWdvTWFwKS5wcm9qZWN0aW9uO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQFNlbGYoKSBwcml2YXRlIGNvbXBvbmVudDogTWFwQnJvd3NlckNvbXBvbmVudCxcbiAgICBwcml2YXRlIG1lZGlhU2VydmljZTogTWVkaWFTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogU3RhcnQgbGlzdGVuaW5nIHRvIHBvaW50ZXJtb3ZlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0ZW5Ub01hcFBvaW50ZXJNb3ZlKCk7XG4gICAgdGhpcy5saXN0ZW5Ub01hcENsaWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCBsaXN0ZW5pbmcgdG8gcG9pbnRlcm1vdmVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnVubGlzdGVuVG9NYXBQb2ludGVyTW92ZSgpO1xuICAgIHRoaXMudW5saXN0ZW5Ub01hcENsaWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogT24gbWFwIHBvaW50ZXJtb3ZlXG4gICAqL1xuICBwcml2YXRlIGxpc3RlblRvTWFwUG9pbnRlck1vdmUoKSB7XG4gICAgdGhpcy5wb2ludGVyTW92ZUxpc3RlbmVyID0gdGhpcy5tYXAub2wub24oXG4gICAgICAncG9pbnRlcm1vdmUnLFxuICAgICAgKGV2ZW50OiBNYXBCcm93c2VyUG9pbnRlckV2ZW50PGFueT4pID0+XG4gICAgICAgIHRoaXMub25Qb2ludGVyRXZlbnQoZXZlbnQsIHRoaXMucG9pbnRlclBvc2l0aW9uRGVsYXkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPbiBtYXAgY2xpY2tcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuVG9NYXBDbGljaygpIHtcbiAgICB0aGlzLm1hcENsaWNrTGlzdGVuZXIgPSB0aGlzLm1hcC5vbC5vbihcbiAgICAgICdzaW5nbGVjbGljaycsXG4gICAgICAoZXZlbnQ6IE1hcEJyb3dzZXJQb2ludGVyRXZlbnQ8YW55PikgPT4gdGhpcy5vblBvaW50ZXJFdmVudChldmVudCwgMClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3AgbGlzdGVuaW5nIGZvciBtYXAgcG9pbnRlcm1vdmVcbiAgICovXG4gIHByaXZhdGUgdW5saXN0ZW5Ub01hcFBvaW50ZXJNb3ZlKCkge1xuICAgIHVuQnlLZXkodGhpcy5wb2ludGVyTW92ZUxpc3RlbmVyKTtcbiAgICB0aGlzLnBvaW50ZXJNb3ZlTGlzdGVuZXIgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCBsaXN0ZW5pbmcgZm9yIG1hcCBjbGlja3NcbiAgICovXG4gIHByaXZhdGUgdW5saXN0ZW5Ub01hcENsaWNrKCkge1xuICAgIHRoaXMubWFwQ2xpY2tMaXN0ZW5lciA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBlbWl0IGRlbGF5ZWQgY29vcmRpbmF0ZSAobG9uZ2l0dWRlLCBsYXRpdHVkZSBhcnJheSkgYmFzZWQgb24gcG9pbnRlck1vdmVEZWxheSBvciBvbiBjbGlja1xuICAgKiBAcGFyYW0gZXZlbnQgT0wgbWFwIGJyb3dzZXIgcG9pbnRlciBldmVudFxuICAgKi9cbiAgcHJpdmF0ZSBvblBvaW50ZXJFdmVudChldmVudDogTWFwQnJvd3NlclBvaW50ZXJFdmVudDxhbnk+LCBkZWxheTogbnVtYmVyKSB7XG4gICAgaWYgKGV2ZW50LmRyYWdnaW5nIHx8IHRoaXMubWVkaWFTZXJ2aWNlLmlzVG91Y2hTY3JlZW4oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHRoaXMubGFzdFRpbWVvdXRSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gY2FuY2VsIHRpbWVvdXQgd2hlbiB0aGUgbW91c2UgbW92ZXNcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmxhc3RUaW1lb3V0UmVxdWVzdCk7XG4gICAgfVxuXG4gICAgY29uc3QgbG9ubGF0ID0gdHJhbnNmb3JtKFxuICAgICAgZXZlbnQuY29vcmRpbmF0ZSxcbiAgICAgIHRoaXMubWFwUHJvamVjdGlvbixcbiAgICAgICdFUFNHOjQzMjYnXG4gICAgKSBhcyBbbnVtYmVyLCBudW1iZXJdO1xuICAgIHRoaXMubGFzdFRpbWVvdXRSZXF1ZXN0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnBvaW50ZXJQb3NpdGlvbkNvb3JkLmVtaXQobG9ubGF0KTtcbiAgICB9LCBkZWxheSk7XG4gIH1cbn1cbiJdfQ==
@@ -20,4 +20,4 @@ export class MapBase {
20
20
  viewProjection;
21
21
  projectionCode;
22
22
  }
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmFic3RyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9tYXAuYWJzdHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUJBLE1BQU0sT0FBZ0IsT0FBTztJQUMzQixFQUFFLENBQU07SUFDUixjQUFjLENBQTJCO0lBQ3pDLE9BQU8sQ0FBMkI7SUFDbEMsbUJBQW1CLENBQTJCO0lBQzlDLE9BQU8sQ0FBeUI7SUFDaEMsZUFBZSxDQUFnRDtJQUMvRCxPQUFPLENBQVU7SUFDakIsbUJBQW1CLENBQVU7SUFDN0Isb0JBQW9CLENBQVU7SUFDOUIsY0FBYyxDQUFvQjtJQUNsQyxxQkFBcUIsQ0FBMkI7SUFDaEQsYUFBYSxDQUEyQjtJQUN4QyxVQUFVLENBQTJCO0lBQ3JDLGlCQUFpQixDQUEyQjtJQUM1QyxnQkFBZ0IsQ0FBb0I7SUFFcEMsU0FBUztJQUNULE1BQU0sQ0FBVTtJQUNoQixVQUFVLENBQVM7SUFDbkIsY0FBYyxDQUFhO0lBQzNCLGNBQWMsQ0FBUztDQTBCeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0U3RhdHVzIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xyXG5cclxuaW1wb3J0IHsgT2JqZWN0RXZlbnQgfSBmcm9tICdvbC9PYmplY3QnO1xyXG5pbXBvcnQgeyBMYXllciBhcyBPbExheWVyIH0gZnJvbSAnb2wvbGF5ZXInO1xyXG5pbXBvcnQgeyBQcm9qZWN0aW9uIH0gZnJvbSAnb2wvcHJvaic7XHJcbmltcG9ydCB7IFNvdXJjZSB9IGZyb20gJ29sL3NvdXJjZSc7XHJcblxyXG5pbXBvcnQgeyBNYXAgfSBmcm9tICdvbCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgRmVhdHVyZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcyc7XHJcbmltcG9ydCB7IExheWVyIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycy9sYXllcic7XHJcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICcuLi8uLi9vdmVybGF5L3NoYXJlZC9vdmVybGF5JztcclxuaW1wb3J0IHtcclxuICBNYXBHZW9sb2NhdGlvbkNvbnRyb2xsZXIsXHJcbiAgTWFwVmlld0NvbnRyb2xsZXJcclxufSBmcm9tICcuLi9zaGFyZWQvY29udHJvbGxlcnMnO1xyXG5pbXBvcnQge1xyXG4gIE1hcENvbnRyb2xzT3B0aW9ucyxcclxuICBNYXBFeHRlbnQsXHJcbiAgTWFwVmlld09wdGlvbnNcclxufSBmcm9tICcuLi9zaGFyZWQvbWFwLmludGVyZmFjZSc7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTWFwQmFzZSB7XHJcbiAgb2w6IE1hcDtcclxuICBmb3JjZWRPZmZsaW5lJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xyXG4gIGxheWVycyQ6IEJlaGF2aW9yU3ViamVjdDxMYXllcltdPjtcclxuICBsYXllcnNBZGRlZEJ5Q2xpY2skOiBCZWhhdmlvclN1YmplY3Q8TGF5ZXJbXT47XHJcbiAgc3RhdHVzJDogU3ViamVjdDxTdWJqZWN0U3RhdHVzPjtcclxuICBwcm9wZXJ0eUNoYW5nZSQ6IFN1YmplY3Q8eyBldmVudDogT2JqZWN0RXZlbnQ7IGxheWVyOiBMYXllciB9PjtcclxuICBvdmVybGF5OiBPdmVybGF5O1xyXG4gIHF1ZXJ5UmVzdWx0c092ZXJsYXk6IE92ZXJsYXk7XHJcbiAgc2VhcmNoUmVzdWx0c092ZXJsYXk6IE92ZXJsYXk7XHJcbiAgdmlld0NvbnRyb2xsZXI6IE1hcFZpZXdDb250cm9sbGVyO1xyXG4gIGdlb2xvY2F0aW9uQ29udHJvbGxlcjogTWFwR2VvbG9jYXRpb25Db250cm9sbGVyO1xyXG4gIHN3aXBlRW5hYmxlZCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcclxuICBtYXBDZW50ZXIkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XHJcbiAgc2VsZWN0ZWRGZWF0dXJlcyQ6IEJlaGF2aW9yU3ViamVjdDxMYXllcltdPjtcclxuICBidWZmZXJEYXRhU291cmNlOiBGZWF0dXJlRGF0YVNvdXJjZTtcclxuXHJcbiAgLy8gR2V0dGVyXHJcbiAgbGF5ZXJzOiBMYXllcltdO1xyXG4gIHByb2plY3Rpb246IHN0cmluZztcclxuICB2aWV3UHJvamVjdGlvbjogUHJvamVjdGlvbjtcclxuICBwcm9qZWN0aW9uQ29kZTogc3RyaW5nO1xyXG5cclxuICBhYnN0cmFjdCBpbml0KCk6IHZvaWQ7XHJcbiAgYWJzdHJhY3Qgc2V0VGFyZ2V0KGlkOiBzdHJpbmcpOiB2b2lkO1xyXG4gIGFic3RyYWN0IHVwZGF0ZVZpZXcob3B0aW9uczogTWFwVmlld09wdGlvbnMpOiB2b2lkO1xyXG4gIGFic3RyYWN0IHNldFZpZXcob3B0aW9uczogTWFwVmlld09wdGlvbnMpOiB2b2lkO1xyXG4gIGFic3RyYWN0IHVwZGF0ZUNvbnRyb2xzKHZhbHVlOiBNYXBDb250cm9sc09wdGlvbnMpOiB2b2lkO1xyXG4gIGFic3RyYWN0IGdldENlbnRlcihwcm9qZWN0aW9uPzogc3RyaW5nIHwgUHJvamVjdGlvbik6IFtudW1iZXIsIG51bWJlcl07XHJcbiAgYWJzdHJhY3QgZ2V0RXh0ZW50KHByb2plY3Rpb24/OiBzdHJpbmcgfCBQcm9qZWN0aW9uKTogTWFwRXh0ZW50O1xyXG4gIGFic3RyYWN0IGdldFpvb20oKTogbnVtYmVyO1xyXG4gIGFic3RyYWN0IGNoYW5nZUJhc2VMYXllcihiYXNlTGF5ZXI6IExheWVyKTogdm9pZDtcclxuICBhYnN0cmFjdCBnZXRCYXNlTGF5ZXJzKCk6IExheWVyW107XHJcbiAgYWJzdHJhY3QgZ2V0TGF5ZXJCeUlkKGlkOiBzdHJpbmcpOiBMYXllciB8IHVuZGVmaW5lZDtcclxuICBhYnN0cmFjdCBnZXRMYXllckJ5QWxpYXMoYWxpYXM6IHN0cmluZyk6IExheWVyO1xyXG4gIGFic3RyYWN0IGdldExheWVyQnlPbFVJZChvbFVJZDogc3RyaW5nKTogTGF5ZXI7XHJcbiAgYWJzdHJhY3QgZ2V0TGF5ZXJCeU9sTGF5ZXIob2xMYXllcjogT2xMYXllcjxTb3VyY2U+KTogTGF5ZXI7XHJcbiAgYWJzdHJhY3QgYWRkTGF5ZXIobGF5ZXI6IExheWVyLCBwdXNoOiBib29sZWFuKTogdm9pZDtcclxuICBhYnN0cmFjdCBhZGRMYXllcnMobGF5ZXJzOiBMYXllcltdLCBwdXNoPzogYm9vbGVhbik6IHZvaWQ7XHJcbiAgYWJzdHJhY3QgcmVtb3ZlTGF5ZXIobGF5ZXI6IExheWVyKTogdm9pZDtcclxuICBhYnN0cmFjdCByZW1vdmVMYXllcnMobGF5ZXJzOiBMYXllcltdKTogdm9pZDtcclxuICBhYnN0cmFjdCByZW1vdmVBbGxMYXllcnMoKTogdm9pZDtcclxuICBhYnN0cmFjdCByYWlzZUxheWVyKGxheWVyOiBMYXllcik6IHZvaWQ7XHJcbiAgYWJzdHJhY3QgcmFpc2VMYXllcnMobGF5ZXJzOiBMYXllcltdKTogdm9pZDtcclxuICBhYnN0cmFjdCBsb3dlckxheWVyKGxheWVyOiBMYXllcik6IHZvaWQ7XHJcbiAgYWJzdHJhY3QgbG93ZXJMYXllcnMobGF5ZXJzOiBMYXllcltdKTogdm9pZDtcclxuICBhYnN0cmFjdCBtb3ZlTGF5ZXIobGF5ZXI6IExheWVyLCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpOiB2b2lkO1xyXG59XHJcbiJdfQ==
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmFic3RyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9tYXAuYWJzdHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUJBLE1BQU0sT0FBZ0IsT0FBTztJQUMzQixFQUFFLENBQU07SUFDUixjQUFjLENBQTJCO0lBQ3pDLE9BQU8sQ0FBMkI7SUFDbEMsbUJBQW1CLENBQTJCO0lBQzlDLE9BQU8sQ0FBeUI7SUFDaEMsZUFBZSxDQUFnRDtJQUMvRCxPQUFPLENBQVU7SUFDakIsbUJBQW1CLENBQVU7SUFDN0Isb0JBQW9CLENBQVU7SUFDOUIsY0FBYyxDQUFvQjtJQUNsQyxxQkFBcUIsQ0FBMkI7SUFDaEQsYUFBYSxDQUEyQjtJQUN4QyxVQUFVLENBQTJCO0lBQ3JDLGlCQUFpQixDQUEyQjtJQUM1QyxnQkFBZ0IsQ0FBb0I7SUFFcEMsU0FBUztJQUNULE1BQU0sQ0FBVTtJQUNoQixVQUFVLENBQVM7SUFDbkIsY0FBYyxDQUFhO0lBQzNCLGNBQWMsQ0FBUztDQTBCeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0U3RhdHVzIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgeyBPYmplY3RFdmVudCB9IGZyb20gJ29sL09iamVjdCc7XG5pbXBvcnQgeyBMYXllciBhcyBPbExheWVyIH0gZnJvbSAnb2wvbGF5ZXInO1xuaW1wb3J0IHsgUHJvamVjdGlvbiB9IGZyb20gJ29sL3Byb2onO1xuaW1wb3J0IHsgU291cmNlIH0gZnJvbSAnb2wvc291cmNlJztcblxuaW1wb3J0IHsgTWFwIH0gZnJvbSAnb2wnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZlYXR1cmVEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMnO1xuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQvbGF5ZXJzL2xheWVyJztcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICcuLi8uLi9vdmVybGF5L3NoYXJlZC9vdmVybGF5JztcbmltcG9ydCB7XG4gIE1hcEdlb2xvY2F0aW9uQ29udHJvbGxlcixcbiAgTWFwVmlld0NvbnRyb2xsZXJcbn0gZnJvbSAnLi4vc2hhcmVkL2NvbnRyb2xsZXJzJztcbmltcG9ydCB7XG4gIE1hcENvbnRyb2xzT3B0aW9ucyxcbiAgTWFwRXh0ZW50LFxuICBNYXBWaWV3T3B0aW9uc1xufSBmcm9tICcuLi9zaGFyZWQvbWFwLmludGVyZmFjZSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBNYXBCYXNlIHtcbiAgb2w6IE1hcDtcbiAgZm9yY2VkT2ZmbGluZSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcbiAgbGF5ZXJzJDogQmVoYXZpb3JTdWJqZWN0PExheWVyW10+O1xuICBsYXllcnNBZGRlZEJ5Q2xpY2skOiBCZWhhdmlvclN1YmplY3Q8TGF5ZXJbXT47XG4gIHN0YXR1cyQ6IFN1YmplY3Q8U3ViamVjdFN0YXR1cz47XG4gIHByb3BlcnR5Q2hhbmdlJDogU3ViamVjdDx7IGV2ZW50OiBPYmplY3RFdmVudDsgbGF5ZXI6IExheWVyIH0+O1xuICBvdmVybGF5OiBPdmVybGF5O1xuICBxdWVyeVJlc3VsdHNPdmVybGF5OiBPdmVybGF5O1xuICBzZWFyY2hSZXN1bHRzT3ZlcmxheTogT3ZlcmxheTtcbiAgdmlld0NvbnRyb2xsZXI6IE1hcFZpZXdDb250cm9sbGVyO1xuICBnZW9sb2NhdGlvbkNvbnRyb2xsZXI6IE1hcEdlb2xvY2F0aW9uQ29udHJvbGxlcjtcbiAgc3dpcGVFbmFibGVkJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuICBtYXBDZW50ZXIkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XG4gIHNlbGVjdGVkRmVhdHVyZXMkOiBCZWhhdmlvclN1YmplY3Q8TGF5ZXJbXT47XG4gIGJ1ZmZlckRhdGFTb3VyY2U6IEZlYXR1cmVEYXRhU291cmNlO1xuXG4gIC8vIEdldHRlclxuICBsYXllcnM6IExheWVyW107XG4gIHByb2plY3Rpb246IHN0cmluZztcbiAgdmlld1Byb2plY3Rpb246IFByb2plY3Rpb247XG4gIHByb2plY3Rpb25Db2RlOiBzdHJpbmc7XG5cbiAgYWJzdHJhY3QgaW5pdCgpOiB2b2lkO1xuICBhYnN0cmFjdCBzZXRUYXJnZXQoaWQ6IHN0cmluZyk6IHZvaWQ7XG4gIGFic3RyYWN0IHVwZGF0ZVZpZXcob3B0aW9uczogTWFwVmlld09wdGlvbnMpOiB2b2lkO1xuICBhYnN0cmFjdCBzZXRWaWV3KG9wdGlvbnM6IE1hcFZpZXdPcHRpb25zKTogdm9pZDtcbiAgYWJzdHJhY3QgdXBkYXRlQ29udHJvbHModmFsdWU6IE1hcENvbnRyb2xzT3B0aW9ucyk6IHZvaWQ7XG4gIGFic3RyYWN0IGdldENlbnRlcihwcm9qZWN0aW9uPzogc3RyaW5nIHwgUHJvamVjdGlvbik6IFtudW1iZXIsIG51bWJlcl07XG4gIGFic3RyYWN0IGdldEV4dGVudChwcm9qZWN0aW9uPzogc3RyaW5nIHwgUHJvamVjdGlvbik6IE1hcEV4dGVudDtcbiAgYWJzdHJhY3QgZ2V0Wm9vbSgpOiBudW1iZXI7XG4gIGFic3RyYWN0IGNoYW5nZUJhc2VMYXllcihiYXNlTGF5ZXI6IExheWVyKTogdm9pZDtcbiAgYWJzdHJhY3QgZ2V0QmFzZUxheWVycygpOiBMYXllcltdO1xuICBhYnN0cmFjdCBnZXRMYXllckJ5SWQoaWQ6IHN0cmluZyk6IExheWVyIHwgdW5kZWZpbmVkO1xuICBhYnN0cmFjdCBnZXRMYXllckJ5QWxpYXMoYWxpYXM6IHN0cmluZyk6IExheWVyO1xuICBhYnN0cmFjdCBnZXRMYXllckJ5T2xVSWQob2xVSWQ6IHN0cmluZyk6IExheWVyO1xuICBhYnN0cmFjdCBnZXRMYXllckJ5T2xMYXllcihvbExheWVyOiBPbExheWVyPFNvdXJjZT4pOiBMYXllcjtcbiAgYWJzdHJhY3QgYWRkTGF5ZXIobGF5ZXI6IExheWVyLCBwdXNoOiBib29sZWFuKTogdm9pZDtcbiAgYWJzdHJhY3QgYWRkTGF5ZXJzKGxheWVyczogTGF5ZXJbXSwgcHVzaD86IGJvb2xlYW4pOiB2b2lkO1xuICBhYnN0cmFjdCByZW1vdmVMYXllcihsYXllcjogTGF5ZXIpOiB2b2lkO1xuICBhYnN0cmFjdCByZW1vdmVMYXllcnMobGF5ZXJzOiBMYXllcltdKTogdm9pZDtcbiAgYWJzdHJhY3QgcmVtb3ZlQWxsTGF5ZXJzKCk6IHZvaWQ7XG4gIGFic3RyYWN0IHJhaXNlTGF5ZXIobGF5ZXI6IExheWVyKTogdm9pZDtcbiAgYWJzdHJhY3QgcmFpc2VMYXllcnMobGF5ZXJzOiBMYXllcltdKTogdm9pZDtcbiAgYWJzdHJhY3QgbG93ZXJMYXllcihsYXllcjogTGF5ZXIpOiB2b2lkO1xuICBhYnN0cmFjdCBsb3dlckxheWVycyhsYXllcnM6IExheWVyW10pOiB2b2lkO1xuICBhYnN0cmFjdCBtb3ZlTGF5ZXIobGF5ZXI6IExheWVyLCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpOiB2b2lkO1xufVxuIl19
@@ -434,4 +434,4 @@ export class IgoMap {
434
434
  return this.layers.findIndex((_layer) => _layer === layer);
435
435
  }
436
436
  }
437
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxLQUFLLE1BQU0sUUFBUSxDQUFDO0FBRTNCLE9BQU8sTUFBdUIsTUFBTSxTQUFTLENBQUM7QUFDOUMsT0FBTyxvQkFBb0IsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLGtCQUFrQixNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxhQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEQsT0FBTyxLQUFLLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFFbEMsT0FBTyxLQUFLLE9BQU8sTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVqQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLGVBQWUsRUFBVyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3JFLE9BQU8sRUFBUyxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFDTCwyQkFBMkIsRUFDM0IsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUN6QixpQ0FBaUMsRUFDbEMsTUFBTSxzQkFBc0IsQ0FBQztBQVc5Qiw4RUFBOEU7QUFDOUUsb0NBQW9DO0FBQ3BDLE1BQU0sT0FBTyxNQUFNO0lBNENQO0lBQ0E7SUE1Q0gsRUFBRSxDQUFRO0lBQ1YsY0FB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T0FHRztJQUNLLFNBQVMsQ0FBQyxNQUFlO1FBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGtCQUFrQixDQUFDLE1BQWU7UUFDeEMsNEJBQTRCO1FBQzVCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FDaEIsQ0FBQyxNQUFhLEVBQUUsTUFBYSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQ2hFLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGFBQWEsQ0FBQyxLQUFZO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFhLEVBQUUsRUFBRSxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsQ0FBQztJQUNwRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25maWdTZXJ2aWNlLCBTdG9yYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0U3RhdHVzIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xyXG5cclxuaW1wb3J0IG9sTWFwIGZyb20gJ29sL01hcCc7XHJcbmltcG9ydCB7IE9iamVjdEV2ZW50IH0gZnJvbSAnb2wvT2JqZWN0JztcclxuaW1wb3J0IG9sVmlldywgeyBWaWV3T3B0aW9ucyB9IGZyb20gJ29sL1ZpZXcnO1xyXG5pbXBvcnQgb2xDb250cm9sQXR0cmlidXRpb24gZnJvbSAnb2wvY29udHJvbC9BdHRyaWJ1dGlvbic7XHJcbmltcG9ydCBvbENvbnRyb2xTY2FsZUxpbmUgZnJvbSAnb2wvY29udHJvbC9TY2FsZUxpbmUnO1xyXG5pbXBvcnQgKiBhcyBvbGludGVyYWN0aW9uIGZyb20gJ29sL2ludGVyYWN0aW9uJztcclxuaW1wb3J0IG9sTGF5ZXIgZnJvbSAnb2wvbGF5ZXIvTGF5ZXInO1xyXG5pbXBvcnQgKiBhcyBvbHByb2ogZnJvbSAnb2wvcHJvaic7XHJcbmltcG9ydCBPbFByb2plY3Rpb24gZnJvbSAnb2wvcHJvai9Qcm9qZWN0aW9uJztcclxuaW1wb3J0ICogYXMgb2xwcm9qNCBmcm9tICdvbC9wcm9qL3Byb2o0JztcclxuaW1wb3J0IG9sU291cmNlIGZyb20gJ29sL3NvdXJjZS9Tb3VyY2UnO1xyXG5pbXBvcnQgeyBnZXRVaWQgfSBmcm9tICdvbC91dGlsJztcclxuXHJcbmltcG9ydCBwcm9qNCBmcm9tICdwcm9qNCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgcGFpcndpc2UsIHNraXBXaGlsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgRmVhdHVyZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy9mZWF0dXJlLWRhdGFzb3VyY2UnO1xyXG5pbXBvcnQgeyBMYXllciwgVmVjdG9yTGF5ZXIgfSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQvbGF5ZXJzJztcclxuaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJy4uLy4uL292ZXJsYXkvc2hhcmVkL292ZXJsYXknO1xyXG5pbXBvcnQgeyBMYXllcldhdGNoZXIgfSBmcm9tICcuLi91dGlscy9sYXllci13YXRjaGVyJztcclxuaW1wb3J0IHsgTWFwR2VvbG9jYXRpb25Db250cm9sbGVyIH0gZnJvbSAnLi9jb250cm9sbGVycy9nZW9sb2NhdGlvbic7XHJcbmltcG9ydCB7IE1hcFZpZXdDb250cm9sbGVyIH0gZnJvbSAnLi9jb250cm9sbGVycy92aWV3JztcclxuaW1wb3J0IHtcclxuICBnZXRBbGxDaGlsZExheWVyc0J5RGVsZXRpb24sXHJcbiAgZ2V0Um9vdFBhcmVudEJ5RGVsZXRpb24sXHJcbiAgaGFuZGxlTGF5ZXJQcm9wZXJ0eUNoYW5nZSxcclxuICBpbml0TGF5ZXJTeW5jRnJvbVJvb3RQYXJlbnRMYXllcnNcclxufSBmcm9tICcuL2xpbmtlZExheWVycy51dGlscyc7XHJcbmltcG9ydCB0eXBlIHsgTWFwQmFzZSB9IGZyb20gJy4vbWFwLmFic3RyYWN0JztcclxuaW1wb3J0IHtcclxuICBNYXBBdHRyaWJ1dGlvbk9wdGlvbnMsXHJcbiAgTWFwQ29udHJvbHNPcHRpb25zLFxyXG4gIE1hcEV4dGVudCxcclxuICBNYXBPcHRpb25zLFxyXG4gIE1hcFNjYWxlTGluZU9wdGlvbnMsXHJcbiAgTWFwVmlld09wdGlvbnNcclxufSBmcm9tICcuL21hcC5pbnRlcmZhY2UnO1xyXG5cclxuLy8gVE9ETzogVGhpcyBjbGFzcyBpcyBtZXNzeS4gQ2xlYXJseSBkZWZpbmUgaXQncyBzY29wZSBhbmQgdGhlIG1hcCBicm93c2VyJ3MuXHJcbi8vIE1vdmUgc29tZSBzdHVmZiBpbnRvIGNvbnRyb2xsZXJzLlxyXG5leHBvcnQgY2xhc3MgSWdvTWFwIGltcGxlbWVudHMgTWFwQmFzZSB7XHJcbiAgcHVibGljIG9sOiBvbE1hcDtcclxuICBwdWJsaWMgZm9yY2VkT2ZmbGluZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBwdWJsaWMgbGF5ZXJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TGF5ZXJbXT4oW10pO1xyXG4gIHB1YmxpYyBsYXllcnNBZGRlZEJ5Q2xpY2skID0gbmV3IEJlaGF2aW9yU3ViamVjdDxMYXllcltdPih1bmRlZmluZWQpO1xyXG4gIHB1YmxpYyBzdGF0dXMkOiBTdWJqZWN0PFN1YmplY3RTdGF0dXM+O1xyXG4gIHB1YmxpYyBwcm9wZXJ0eUNoYW5nZSQ6IFN1YmplY3Q8eyBldmVudDogT2JqZWN0RXZlbnQ7IGxheWVyOiBMYXllciB9PjtcclxuICBwdWJsaWMgb3ZlcmxheTogT3ZlcmxheTtcclxuICBwdWJsaWMgcXVlcnlSZXN1bHRzT3ZlcmxheTogT3ZlcmxheTtcclxuICBwdWJsaWMgc2VhcmNoUmVzdWx0c092ZXJsYXk6IE92ZXJsYXk7XHJcbiAgcHVibGljIHZpZXdDb250cm9sbGVyOiBNYXBWaWV3Q29udHJvbGxlcjtcclxuICBwdWJsaWMgZ2VvbG9jYXRpb25Db250cm9sbGVyOiBNYXBHZW9sb2NhdGlvbkNvbnRyb2xsZXI7XHJcbiAgcHVibGljIHN3aXBlRW5hYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBwdWJsaWMgbWFwQ2VudGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHB1YmxpYyBzZWxlY3RlZEZlYXR1cmVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TGF5ZXJbXT4obnVsbCk7XHJcblxyXG4gIHB1YmxpYyBidWZmZXJEYXRhU291cmNlOiBGZWF0dXJlRGF0YVNvdXJjZTtcclxuXHJcbiAgcHJpdmF0ZSBsYXllcldhdGNoZXI6IExheWVyV2F0Y2hlcjtcclxuICBwcml2YXRlIG9wdGlvbnM6IE1hcE9wdGlvbnM7XHJcbiAgcHJpdmF0ZSBtYXBWaWV3T3B0aW9uczogTWFwVmlld09wdGlvbnM7XHJcbiAgcHJpdmF0ZSBkZWZhdWx0T3B0aW9uczogUGFydGlhbDxNYXBPcHRpb25zPiA9IHtcclxuICAgIGNvbnRyb2xzOiB7IGF0dHJpYnV0aW9uOiBmYWxzZSB9XHJcbiAgfTtcclxuXHJcbiAgZ2V0IGxheWVycygpOiBMYXllcltdIHtcclxuICAgIHJldHVybiB0aGlzLmxheWVycyQudmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKiogQGRlcHJlY2F0ZWQgdXNlIHByb2plY3Rpb25Db2RlICovXHJcbiAgZ2V0IHByb2plY3Rpb24oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnByb2plY3Rpb25Db2RlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHZpZXdQcm9qZWN0aW9uKCk6IG9scHJvai5Qcm9qZWN0aW9uIHtcclxuICAgIHJldHVybiB0aGlzLnZpZXdDb250cm9sbGVyLmdldE9sUHJvamVjdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHByb2plY3Rpb25Db2RlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy52aWV3UHJvamVjdGlvbi5nZXRDb2RlKCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIG9wdGlvbnM/OiBNYXBPcHRpb25zLFxyXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZT86IFN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlPzogQ29uZmlnU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5kZWZhdWx0T3B0aW9ucywgb3B0aW9ucyk7XHJcbiAgICB0aGlzLmxheWVyV2F0Y2hlciA9IG5ldyBMYXllcldhdGNoZXIoKTtcclxuICAgIHRoaXMuc3RhdHVzJCA9IHRoaXMubGF5ZXJXYXRjaGVyLnN0YXR1cyQ7XHJcbiAgICB0aGlzLnByb3BlcnR5Q2hhbmdlJCA9IHRoaXMubGF5ZXJXYXRjaGVyLnByb3BlcnR5Q2hhbmdlJDtcclxuICAgIG9scHJvajQucmVnaXN0ZXIocHJvajQpO1xyXG4gICAgdGhpcy5pbml0KCk7XHJcbiAgfVxyXG5cclxuICBpbml0KCkge1xyXG4gICAgY29uc3QgY29udHJvbHMgPSBbXTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuY29udHJvbHMpIHtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5jb250cm9scy5hdHRyaWJ1dGlvbikge1xyXG4gICAgICAgIGNvbnN0IGF0dHJpYnV0aW9uT3B0ID0gKFxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmNvbnRyb2xzLmF0dHJpYnV0aW9uID09PSB0cnVlXHJcbiAgICAgICAgICAgID8ge31cclxuICAgICAgICAgICAgOiB0aGlzLm9wdGlvbnMuY29udHJvbHMuYXR0cmlidXRpb25cclxuICAgICAgICApIGFzIE1hcEF0dHJpYnV0aW9uT3B0aW9ucztcclxuICAgICAgICBjb250cm9scy5wdXNoKG5ldyBvbENvbnRyb2xBdHRyaWJ1dGlvbihhdHRyaWJ1dGlvbk9wdCkpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuY29udHJvbHMuc2NhbGVMaW5lKSB7XHJcbiAgICAgICAgY29uc3Qgc2NhbGVMaW5lT3B0ID0gKFxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmNvbnRyb2xzLnNjYWxlTGluZSA9PT0gdHJ1ZVxyXG4gICAgICAgICAgICA/IHt9XHJcbiAgICAgICAgICAgIDogdGhpcy5vcHRpb25zLmNvbnRyb2xzLnNjYWxlTGluZVxyXG4gICAgICAgICkgYXMgTWFwU2NhbGVMaW5lT3B0aW9ucztcclxuICAgICAgICBjb250cm9scy5wdXNoKG5ldyBvbENvbnRyb2xTY2FsZUxpbmUoc2NhbGVMaW5lT3B0KSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBpbnRlcmFjdGlvbnMgPSB7fTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuaW50ZXJhY3Rpb25zID09PSBmYWxzZSkge1xyXG4gICAgICBpbnRlcmFjdGlvbnMgPSB7XHJcbiAgICAgICAgYWx0U2hpZnREcmFnUm90YXRlOiBmYWxzZSxcclxuICAgICAgICBkb3VibGVDbGlja1pvb206IGZhbHNlLFxyXG4gICAgICAgIGtleWJvYXJkOiBmYWxzZSxcclxuICAgICAgICBtb3VzZVdoZWVsWm9vbTogZmFsc2UsXHJcbiAgICAgICAgc2hpZnREcmFnWm9vbTogZmFsc2UsXHJcbiAgICAgICAgZHJhZ1BhbjogZmFsc2UsXHJcbiAgICAgICAgcGluY2hSb3RhdGU6IGZhbHNlLFxyXG4gICAgICAgIHBpbmNoWm9vbTogZmFsc2VcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9sID0gbmV3IG9sTWFwKHtcclxuICAgICAgaW50ZXJhY3Rpb25zOiBvbGludGVyYWN0aW9uLmRlZmF1bHRzKGludGVyYWN0aW9ucyksXHJcbiAgICAgIGNvbnRyb2xzXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnNldFZpZXcodGhpcy5vcHRpb25zLnZpZXcgfHwge30pO1xyXG4gICAgdGhpcy52aWV3Q29udHJvbGxlciA9IG5ldyBNYXBWaWV3Q29udHJvbGxlcih7XHJcbiAgICAgIHN0YXRlSGlzdG9yeTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnZpZXdDb250cm9sbGVyLnNldE9sTWFwKHRoaXMub2wpO1xyXG4gICAgdGhpcy5vdmVybGF5ID0gbmV3IE92ZXJsYXkodGhpcyk7XHJcbiAgICB0aGlzLnF1ZXJ5UmVzdWx0c092ZXJsYXkgPSBuZXcgT3ZlcmxheSh0aGlzKTtcclxuICAgIHRoaXMuc2VhcmNoUmVzdWx0c092ZXJsYXkgPSBuZXcgT3ZlcmxheSh0aGlzKTtcclxuICAgIHRoaXMub2wub25jZSgncmVuZGVyY29tcGxldGUnLCAoKSA9PiB7XHJcbiAgICAgIHRoaXMuZ2VvbG9jYXRpb25Db250cm9sbGVyID0gbmV3IE1hcEdlb2xvY2F0aW9uQ29udHJvbGxlcihcclxuICAgICAgICB0aGlzLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHByb2plY3Rpb246IHRoaXMudmlld0NvbnRyb2xsZXIuZ2V0T2xQcm9qZWN0aW9uKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UsXHJcbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZ2VvbG9jYXRpb25Db250cm9sbGVyLnNldE9sTWFwKHRoaXMub2wpO1xyXG4gICAgICBpZiAodGhpcy5nZW9sb2NhdGlvbkNvbnRyb2xsZXIpIHtcclxuICAgICAgICB0aGlzLmdlb2xvY2F0aW9uQ29udHJvbGxlci51cGRhdGVHZW9sb2NhdGlvbk9wdGlvbnMoXHJcbiAgICAgICAgICB0aGlzLm1hcFZpZXdPcHRpb25zXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmxheWVycyQucGlwZShwYWlyd2lzZSgpKS5zdWJzY3JpYmUoKFtwcmV2TGF5ZXJzLCBjdXJyZW50TGF5ZXJzXSkgPT4ge1xyXG4gICAgICAgIGxldCBwcmV2TGF5ZXJzSWQ7XHJcbiAgICAgICAgaWYgKHByZXZMYXllcnMpIHtcclxuICAgICAgICAgIHByZXZMYXllcnNJZCA9IHByZXZMYXllcnMubWFwKChsKSA9PiBsLmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbGF5ZXJzID0gY3VycmVudExheWVycy5maWx0ZXIoXHJcbiAgICAgICAgICAobCkgPT4gIXByZXZMYXllcnNJZC5pbmNsdWRlcyhsLmlkKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgbGF5ZXJzKSB7XHJcbiAgICAgICAgICBpZiAobGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMpIHtcclxuICAgICAgICAgICAgbGF5ZXIub2wub25jZSgncG9zdHJlbmRlcicsICgpID0+IHtcclxuICAgICAgICAgICAgICBpbml0TGF5ZXJTeW5jRnJvbVJvb3RQYXJlbnRMYXllcnModGhpcywgbGF5ZXJzKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy52aWV3Q29udHJvbGxlci5tb25pdG9yUm90YXRpb24oKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5wcm9wZXJ0eUNoYW5nZSRcclxuICAgICAgLnBpcGUoc2tpcFdoaWxlKChwYykgPT4gIXBjKSlcclxuICAgICAgLnN1YnNjcmliZSgocCkgPT4gaGFuZGxlTGF5ZXJQcm9wZXJ0eUNoYW5nZSh0aGlzLCBwLmV2ZW50LCBwLmxheWVyKSk7XHJcbiAgfVxyXG5cclxuICBzZXRUYXJnZXQoaWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5vbC5zZXRUYXJnZXQoaWQpO1xyXG4gICAgaWYgKGlkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5sYXllcldhdGNoZXIuc3Vic2NyaWJlKCgpID0+IHt9LCBudWxsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubGF5ZXJXYXRjaGVyLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVWaWV3KG9wdGlvbnM6IE1hcFZpZXdPcHRpb25zKSB7XHJcbiAgICBjb25zdCBjdXJyZW50VmlldyA9IHRoaXMub2wuZ2V0VmlldygpO1xyXG4gICAgY29uc3Qgdmlld09wdGlvbnM6IE1hcFZpZXdPcHRpb25zID0ge1xyXG4gICAgICAuLi5jdXJyZW50Vmlldy5nZXRQcm9wZXJ0aWVzKCksXHJcbiAgICAgIC4uLm9wdGlvbnNcclxuICAgIH07XHJcblxyXG4gICAgaWYgKG9wdGlvbnMuem9vbSAmJiBvcHRpb25zLnJlc29sdXRpb24gPT0gbnVsbCkge1xyXG4gICAgICB2aWV3T3B0aW9ucy5yZXNvbHV0aW9uID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2V0Vmlldyh2aWV3T3B0aW9ucyk7XHJcbiAgICBpZiAob3B0aW9ucy5tYXhab29tT25FeHRlbnQpIHtcclxuICAgICAgdGhpcy52aWV3Q29udHJvbGxlci5tYXhab29tT25FeHRlbnQgPSBvcHRpb25zLm1heFpvb21PbkV4dGVudDtcclxuICAgIH1cclxuICAgIHRoaXMubWFwVmlld09wdGlvbnMgPSBvcHRpb25zO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRoZSBtYXAgdmlld1xyXG4gICAqIEBwYXJhbSBvcHRpb25zIE1hcCB2aWV3IG9wdGlvbnNcclxuICAgKi9cclxuICBzZXRWaWV3KG9wdGlvbnM6IE1hcFZpZXdPcHRpb25zKSB7XHJcbiAgICBpZiAodGhpcy52aWV3Q29udHJvbGxlciAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMudmlld0NvbnRyb2xsZXIuY2xlYXJTdGF0ZUhpc3RvcnkoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB2aWV3T3B0aW9uczogVmlld09wdGlvbnMgPSB7IGNvbnN0cmFpblJlc29sdXRpb246IHRydWUsIC4uLm9wdGlvbnMgfTtcclxuICAgIGlmIChvcHRpb25zLmNlbnRlcikge1xyXG4gICAgICB2aWV3T3B0aW9ucy5jZW50ZXIgPSBvbHByb2ouZnJvbUxvbkxhdChcclxuICAgICAgICBvcHRpb25zLmNlbnRlcixcclxuICAgICAgICBvcHRpb25zLnByb2plY3Rpb25cclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9sLnNldFZpZXcobmV3IG9sVmlldyh2aWV3T3B0aW9ucykpO1xyXG5cclxuICAgIGlmIChvcHRpb25zLm1heExheWVyWm9vbUV4dGVudCkge1xyXG4gICAgICB0aGlzLnZpZXdDb250cm9sbGVyLm1heExheWVyWm9vbUV4dGVudCA9IG9wdGlvbnMubWF4TGF5ZXJab29tRXh0ZW50O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlQ29udHJvbHModmFsdWU6IE1hcENvbnRyb2xzT3B0aW9ucykge1xyXG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbnRyb2xzID0gW107XHJcbiAgICBpZiAodmFsdWUuYXR0cmlidXRpb24pIHtcclxuICAgICAgY29uc3QgYXR0cmlidXRpb25PcHQgPSAoXHJcbiAgICAgICAgdmFsdWUuYXR0cmlidXRpb24gPT09IHRydWUgPyB7fSA6IHZhbHVlLmF0dHJpYnV0aW9uXHJcbiAgICAgICkgYXMgTWFwQXR0cmlidXRpb25PcHRpb25zO1xyXG4gICAgICBjb250cm9scy5wdXNoKG5ldyBvbENvbnRyb2xBdHRyaWJ1dGlvbihhdHRyaWJ1dGlvbk9wdCkpO1xyXG4gICAgfVxyXG4gICAgaWYgKHZhbHVlLnNjYWxlTGluZSkge1xyXG4gICAgICBjb25zdCBzY2FsZUxpbmVPcHQgPSAoXHJcbiAgICAgICAgdmFsdWUuc2NhbGVMaW5lID09PSB0cnVlID8ge30gOiB2YWx1ZS5zY2FsZUxpbmVcclxuICAgICAgKSBhcyBNYXBTY2FsZUxpbmVPcHRpb25zO1xyXG4gICAgICBjb250cm9scy5wdXNoKG5ldyBvbENvbnRyb2xTY2FsZUxpbmUoc2NhbGVMaW5lT3B0KSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY3VycmVudENvbnRyb2xzID0gT2JqZWN0LmFzc2lnbihbXSwgdGhpcy5vbC5nZXRDb250cm9scygpLmdldEFycmF5KCkpO1xyXG4gICAgY3VycmVudENvbnRyb2xzLmZvckVhY2goKGNvbnRyb2wpID0+IHtcclxuICAgICAgdGhpcy5vbC5yZW1vdmVDb250cm9sKGNvbnRyb2wpO1xyXG4gICAgfSk7XHJcbiAgICBjb250cm9scy5mb3JFYWNoKChjb250cm9sKSA9PiB7XHJcbiAgICAgIHRoaXMub2wuYWRkQ29udHJvbChjb250cm9sKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKiBUT0RPOiBNb3ZlIHRvIFZpZXdDb250cm9sbGVyIGFuZCB1cGRhdGUgZXZlcnkgcGxhY2UgaXQncyB1c2VkXHJcbiAgICovXHJcbiAgZ2V0Q2VudGVyKHByb2plY3Rpb24/OiBzdHJpbmcgfCBPbFByb2plY3Rpb24pOiBbbnVtYmVyLCBudW1iZXJdIHtcclxuICAgIHJldHVybiB0aGlzLnZpZXdDb250cm9sbGVyLmdldENlbnRlcihwcm9qZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICogVE9ETzogTW92ZSB0byBWaWV3Q29udHJvbGxlciBhbmQgdXBkYXRlIGV2ZXJ5IHBsYWNlIGl0J3MgdXNlZFxyXG4gICAqL1xyXG4gIGdldEV4dGVudChwcm9qZWN0aW9uPzogc3RyaW5nIHwgT2xQcm9qZWN0aW9uKTogTWFwRXh0ZW50IHtcclxuICAgIHJldHVybiB0aGlzLnZpZXdDb250cm9sbGVyLmdldEV4dGVudChwcm9qZWN0aW9uKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKiBUT0RPOiBNb3ZlIHRvIFZpZXdDb250cm9sbGVyIGFuZCB1cGRhdGUgZXZlcnkgcGxhY2UgaXQncyB1c2VkXHJcbiAgICovXHJcbiAgZ2V0Wm9vbSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMudmlld0NvbnRyb2xsZXIuZ2V0Wm9vbSgpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlQmFzZUxheWVyKGJhc2VMYXllcjogTGF5ZXIpIHtcclxuICAgIGlmICghYmFzZUxheWVyKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGNvbnN0IGJsIG9mIHRoaXMuZ2V0QmFzZUxheWVycygpKSB7XHJcbiAgICAgIGJsLnZpc2libGUgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBiYXNlTGF5ZXIudmlzaWJsZSA9IHRydWU7XHJcblxyXG4gICAgdGhpcy52aWV3Q29udHJvbGxlci5vbFZpZXcuc2V0TWluWm9vbShcclxuICAgICAgYmFzZUxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5taW5ab29tIHx8ICh0aGlzLm9wdGlvbnMudmlldyB8fCB7fSkubWluWm9vbVxyXG4gICAgKTtcclxuICAgIHRoaXMudmlld0NvbnRyb2xsZXIub2xWaWV3LnNldE1heFpvb20oXHJcbiAgICAgIGJhc2VMYXllci5kYXRhU291cmNlLm9wdGlvbnMubWF4Wm9vbSB8fCAodGhpcy5vcHRpb25zLnZpZXcgfHwge30pLm1heFpvb21cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRCYXNlTGF5ZXJzKCk6IExheWVyW10ge1xyXG4gICAgcmV0dXJuIHRoaXMubGF5ZXJzLmZpbHRlcigobGF5ZXI6IExheWVyKSA9PiBsYXllci5iYXNlTGF5ZXIgPT09IHRydWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TGF5ZXJCeUlkKGlkOiBzdHJpbmcpOiBMYXllciB7XHJcbiAgICByZXR1cm4gdGhpcy5sYXllcnMuZmluZCgobGF5ZXI6IExheWVyKSA9PiBsYXllci5pZCAmJiBsYXllci5pZCA9PT0gaWQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TGF5ZXJCeUFsaWFzKGFsaWFzOiBzdHJpbmcpOiBMYXllciB7XHJcbiAgICByZXR1cm4gdGhpcy5sYXllcnMuZmluZChcclxuICAgICAgKGxheWVyOiBMYXllcikgPT4gbGF5ZXIuYWxpYXMgJiYgbGF5ZXIuYWxpYXMgPT09IGFsaWFzXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0TGF5ZXJCeU9sVUlkKG9sVUlkOiBzdHJpbmcpOiBMYXllciB7XHJcbiAgICByZXR1cm4gdGhpcy5sYXllcnMuZmluZChcclxuICAgICAgKGxheWVyOiBMYXllcikgPT4gZ2V0VWlkKGxheWVyLm9sKSAmJiBnZXRVaWQobGF5ZXIub2wpID09PSBvbFVJZFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldExheWVyQnlPbExheWVyKG9sTGF5ZXI6IG9sTGF5ZXI8b2xTb3VyY2U+KTogTGF5ZXIge1xyXG4gICAgY29uc3Qgb2xVSWQgPSBnZXRVaWQob2xMYXllcik7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRMYXllckJ5T2xVSWQob2xVSWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGEgc2luZ2xlIGxheWVyXHJcbiAgICogQHBhcmFtIGxheWVyIExheWVyIHRvIGFkZFxyXG4gICAqIEBwYXJhbSBwdXNoIERFUFJFQ0FURURcclxuICAgKi9cclxuICBhZGRMYXllcihsYXllcjogTGF5ZXIsIHB1c2ggPSB0cnVlKSB7XHJcbiAgICB0aGlzLmFkZExheWVycyhbbGF5ZXJdKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBtYW55IGxheWVyc1xyXG4gICAqIEBwYXJhbSBsYXllcnMgTGF5ZXJzIHRvIGFkZFxyXG4gICAqIEBwYXJhbSBwdXNoIERFUFJFQ0FURURcclxuICAgKi9cclxuICBhZGRMYXllcnMobGF5ZXJzOiBMYXllcltdLCBwdXNoID0gdHJ1ZSkge1xyXG4gICAgbGV0IG9mZnNldFpJbmRleCA9IDA7XHJcbiAgICBsZXQgb2Zmc2V0QmFzZUxheWVyWkluZGV4ID0gMDtcclxuICAgIGNvbnN0IGFkZGVkTGF5ZXJzID0gbGF5ZXJzXHJcbiAgICAgIC5tYXAoKGxheWVyOiBMYXllcikgPT4ge1xyXG4gICAgICAgIGlmICghbGF5ZXIpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gbGF5ZXIuekluZGV4XHJcbiAgICAgICAgICA/IDBcclxuICAgICAgICAgIDogbGF5ZXIuYmFzZUxheWVyXHJcbiAgICAgICAgICAgID8gb2Zmc2V0QmFzZUxheWVyWkluZGV4KytcclxuICAgICAgICAgICAgOiBvZmZzZXRaSW5kZXgrKztcclxuICAgICAgICByZXR1cm4gdGhpcy5kb0FkZExheWVyKGxheWVyLCBvZmZzZXQpO1xyXG4gICAgICB9KVxyXG4gICAgICAuZmlsdGVyKChsYXllcjogTGF5ZXIgfCB1bmRlZmluZWQpID0+IGxheWVyICE9PSB1bmRlZmluZWQpO1xyXG4gICAgdGhpcy5zZXRMYXllcnMoW10uY29uY2F0KHRoaXMubGF5ZXJzLCBhZGRlZExheWVycykpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIGEgc2luZ2xlIGxheWVyXHJcbiAgICogQHBhcmFtIGxheWVyIExheWVyIHRvIHJlbW92ZVxyXG4gICAqL1xyXG4gIHJlbW92ZUxheWVyKGxheWVyOiBMYXllcikge1xyXG4gICAgdGhpcy5yZW1vdmVMYXllcnMoW2xheWVyXSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmUgbWFueSBsYXllcnNcclxuICAgKiBAcGFyYW0gbGF5ZXJzIExheWVycyB0byByZW1vdmVcclxuICAgKi9cclxuICByZW1vdmVMYXllcnMobGF5ZXJzOiBMYXllcltdKSB7XHJcbiAgICBjb25zdCBuZXdMYXllcnMgPSB0aGlzLmxheWVycyQudmFsdWUuc2xpY2UoMCk7XHJcbiAgICBjb25zdCBsYXllcnNUb1JlbW92ZSA9IFtdO1xyXG4gICAgbGF5ZXJzLmZvckVhY2goKGxheWVyOiBMYXllcikgPT4ge1xyXG4gICAgICBpZiAobGF5ZXIgaW5zdGFuY2VvZiBWZWN0b3JMYXllcikge1xyXG4gICAgICAgIGxheWVyLnJlbW92ZUxheWVyRnJvbUlEQigpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gbmV3TGF5ZXJzLmluZGV4T2YobGF5ZXIpO1xyXG4gICAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICAgIGxheWVyc1RvUmVtb3ZlLnB1c2gobGF5ZXIpO1xyXG4gICAgICAgIG5ld0xheWVycy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMuaGFuZGxlTGlua2VkTGF5ZXJzRGVsZXRpb24obGF5ZXIsIGxheWVyc1RvUmVtb3ZlKTtcclxuICAgICAgICBsYXllcnNUb1JlbW92ZS5tYXAoKGxpbmtlZExheWVyKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBsaW5rZWRJbmRleCA9IG5ld0xheWVycy5pbmRleE9mKGxpbmtlZExheWVyKTtcclxuICAgICAgICAgIGlmIChsaW5rZWRJbmRleCA+PSAwKSB7XHJcbiAgICAgICAgICAgIG5ld0xheWVycy5zcGxpY2UobGlua2VkSW5kZXgsIDEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBsYXllcnNUb1JlbW92ZS5mb3JFYWNoKChsYXllcjogTGF5ZXIpID0+IHRoaXMuZG9SZW1vdmVMYXllcihsYXllcikpO1xyXG4gICAgdGhpcy5zZXRMYXllcnMobmV3TGF5ZXJzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJ1aWxkIGEgbGlzdCBvZiBsaW5rZWQgbGF5ZXJzIHRvIGRlbGV0ZVxyXG4gICAqIEBwYXJhbSBzcmNMYXllciBMYXllciB0aGF0IGhhcyB0cmlnZ2VyZWQgdGhlIGRlbGV0aW9uXHJcbiAgICogQHBhcmFtIGxheWVyc1RvUmVtb3ZlIGxpc3QgdG8gYXBwZW5kIHRoZSBsYXllciB0byBkZWxldGUgaW50b1xyXG4gICAqL1xyXG4gIGhhbmRsZUxpbmtlZExheWVyc0RlbGV0aW9uKHNyY0xheWVyOiBMYXllciwgbGF5ZXJzVG9SZW1vdmU6IExheWVyW10pIHtcclxuICAgIGxldCByb290UGFyZW50QnlEZWxldGlvbiA9IGdldFJvb3RQYXJlbnRCeURlbGV0aW9uKHRoaXMsIHNyY0xheWVyKTtcclxuICAgIGlmICghcm9vdFBhcmVudEJ5RGVsZXRpb24pIHtcclxuICAgICAgcm9vdFBhcmVudEJ5RGVsZXRpb24gPSBzcmNMYXllcjtcclxuICAgIH1cclxuICAgIGNvbnN0IGNsYmQgPSBnZXRBbGxDaGlsZExheWVyc0J5RGVsZXRpb24odGhpcywgcm9vdFBhcmVudEJ5RGVsZXRpb24sIFtcclxuICAgICAgcm9vdFBhcmVudEJ5RGVsZXRpb25cclxuICAgIF0pO1xyXG4gICAgZm9yIChjb25zdCBsYXllciBvZiBjbGJkKSB7XHJcbiAgICAgIGxheWVyc1RvUmVtb3ZlLnB1c2gobGF5ZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIGFsbCBsYXllcnNcclxuICAgKi9cclxuICByZW1vdmVBbGxMYXllcnMoKSB7XHJcbiAgICB0aGlzLmxheWVycy5mb3JFYWNoKChsYXllcjogTGF5ZXIpID0+IHRoaXMuZG9SZW1vdmVMYXllcihsYXllcikpO1xyXG4gICAgdGhpcy5sYXllcnMkLm5leHQoW10pO1xyXG4gIH1cclxuXHJcbiAgcmFpc2VMYXllcihsYXllcjogTGF5ZXIpIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRMYXllckluZGV4KGxheWVyKTtcclxuICAgIGlmIChpbmRleCA+IDEpIHtcclxuICAgICAgdGhpcy5tb3ZlTGF5ZXIobGF5ZXIsIGluZGV4LCBpbmRleCAtIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmFpc2VMYXllcnMobGF5ZXJzOiBMYXllcltdKSB7XHJcbiAgICBmb3IgKGNvbnN0IGxheWVyIG9mIGxheWVycykge1xyXG4gICAgICB0aGlzLnJhaXNlTGF5ZXIobGF5ZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG93ZXJMYXllcihsYXllcjogTGF5ZXIpIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRMYXllckluZGV4KGxheWVyKTtcclxuICAgIGlmIChpbmRleCA8IHRoaXMubGF5ZXJzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgdGhpcy5tb3ZlTGF5ZXIobGF5ZXIsIGluZGV4LCBpbmRleCArIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG93ZXJMYXllcnMobGF5ZXJzOiBMYXllcltdKSB7XHJcbiAgICBjb25zdCByZXZlcnNlTGF5ZXJzID0gbGF5ZXJzLnJldmVyc2UoKTtcclxuICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgcmV2ZXJzZUxheWVycykge1xyXG4gICAgICB0aGlzLmxvd2VyTGF5ZXIobGF5ZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbW92ZUxheWVyKGxheWVyOiBMYXllciwgZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBsYXllclRvID0gdGhpcy5sYXllcnNbdG9dO1xyXG4gICAgY29uc3QgekluZGV4VG8gPSBsYXllclRvLnpJbmRleDtcclxuICAgIGNvbnN0IHpJbmRleEZyb20gPSBsYXllci56SW5kZXg7XHJcblxyXG4gICAgaWYgKGxheWVyVG8uYmFzZUxheWVyIHx8IGxheWVyLmJhc2VMYXllcikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGF5ZXIuekluZGV4ID0gekluZGV4VG87XHJcbiAgICBsYXllclRvLnpJbmRleCA9IHpJbmRleEZyb207XHJcblxyXG4gICAgdGhpcy5sYXllcnNbdG9dID0gbGF5ZXI7XHJcbiAgICB0aGlzLmxheWVyc1tmcm9tXSA9IGxheWVyVG87XHJcbiAgICB0aGlzLmxheWVycyQubmV4dCh0aGlzLmxheWVycy5zbGljZSgwKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgYSBsYXllciB0byB0aGUgT0wgbWFwIGFuZCBzdGFydCB3YXRjaGluZy4gSWYgdGhlIGxheWVyIGlzIGFscmVhZHlcclxuICAgKiBhZGRlZCB0byB0aGlzIG1hcCwgbWFrZSBpdCB2aXNpYmxlIGJ1dCBkb24ndCBhZGQgaXQgb25lIGFnYWluLlxyXG4gICAqIEBwYXJhbSBsYXllciBMYXllclxyXG4gICAqIEByZXR1cm5zIFRoZSBsYXllciBhZGRlZCwgaWYgYW55XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBkb0FkZExheWVyKGxheWVyOiBMYXllciwgb2Zmc2V0WkluZGV4OiBudW1iZXIpIHtcclxuICAgIGlmIChsYXllci5iYXNlTGF5ZXIgJiYgbGF5ZXIudmlzaWJsZSkge1xyXG4gICAgICB0aGlzLmNoYW5nZUJhc2VMYXllcihsYXllcik7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZXhpc3RpbmdMYXllciA9IHRoaXMuZ2V0TGF5ZXJCeUlkKGxheWVyLmlkKTtcclxuICAgIGlmIChleGlzdGluZ0xheWVyICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgZXhpc3RpbmdMYXllci52aXNpYmxlID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghbGF5ZXIuYmFzZUxheWVyICYmIGxheWVyLnpJbmRleCkge1xyXG4gICAgICBsYXllci56SW5kZXggKz0gMTA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGxheWVyLnpJbmRleCA9PT0gdW5kZWZpbmVkIHx8IGxheWVyLnpJbmRleCA9PT0gMCkge1xyXG4gICAgICBjb25zdCBtYXhaSW5kZXggPSBNYXRoLm1heChcclxuICAgICAgICBsYXllci5iYXNlTGF5ZXIgPyAwIDogMTAsXHJcbiAgICAgICAgLi4udGhpcy5sYXllcnNcclxuICAgICAgICAgIC5maWx0ZXIoXHJcbiAgICAgICAgICAgIChsKSA9PiBsLmJhc2VMYXllciA9PT0gbGF5ZXIuYmFzZUxheWVyICYmIGwuekluZGV4IDwgMjAwIC8vIHpJbmRleCA+IDIwMCA9IHN5c3RlbSBsYXllclxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLm1hcCgobCkgPT4gbC56SW5kZXgpXHJcbiAgICAgICk7XHJcbiAgICAgIGxheWVyLnpJbmRleCA9IG1heFpJbmRleCArIDEgKyBvZmZzZXRaSW5kZXg7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGxheWVyLmJhc2VMYXllciAmJiBsYXllci56SW5kZXggPiA5KSB7XHJcbiAgICAgIGxheWVyLnpJbmRleCA9IDEwOyAvLyBiYXNlbGF5ZXIgbXVzdCBoYXZlIHpJbmRleCA8IDEwXHJcbiAgICB9XHJcblxyXG4gICAgbGF5ZXIuc2V0TWFwKHRoaXMpO1xyXG4gICAgdGhpcy5sYXllcldhdGNoZXIud2F0Y2hMYXllcihsYXllcik7XHJcbiAgICB0aGlzLm9sLmFkZExheWVyKGxheWVyLm9sKTtcclxuXHJcbiAgICByZXR1cm4gbGF5ZXI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmUgYSBsYXllciBmcm9tIHRoZSBPTCBtYXAgYW5kIHN0b3Agd2F0Y2hpbmdcclxuICAgKiBAcGFyYW0gbGF5ZXIgTGF5ZXJcclxuICAgKi9cclxuICBwcml2YXRlIGRvUmVtb3ZlTGF5ZXIobGF5ZXI6IExheWVyKSB7XHJcbiAgICB0aGlzLmxheWVyV2F0Y2hlci51bndhdGNoTGF5ZXIobGF5ZXIpO1xyXG4gICAgdGhpcy5vbC5yZW1vdmVMYXllcihsYXllci5vbCk7XHJcbiAgICBsYXllci5zZXRNYXAodW5kZWZpbmVkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSB0aGUgbGF5ZXJzIG9ic2VydmFibGVcclxuICAgKiBAcGFyYW0gbGF5ZXJzIExheWVyc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0TGF5ZXJzKGxheWVyczogTGF5ZXJbXSkge1xyXG4gICAgdGhpcy5sYXllcnMkLm5leHQodGhpcy5zb3J0TGF5ZXJzQnlaSW5kZXgobGF5ZXJzKS5zbGljZSgwKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTb3J0IGxheWVycyBieSBkZXNjZW5kaW5nIHpJbmRleFxyXG4gICAqIEBwYXJhbSBsYXllcnMgQXJyYXkgb2YgbGF5ZXJzXHJcbiAgICogQHJldHVybnMgVGhlIG9yaWdpbmFsIGFycmF5LCBzb3J0ZWQgYnkgekluZGV4XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzb3J0TGF5ZXJzQnlaSW5kZXgobGF5ZXJzOiBMYXllcltdKSB7XHJcbiAgICAvLyBTb3J0IGJ5IGRlc2NlbmRpbmcgekluZGV4XHJcbiAgICByZXR1cm4gbGF5ZXJzLnNvcnQoXHJcbiAgICAgIChsYXllcjE6IExheWVyLCBsYXllcjI6IExheWVyKSA9PiBsYXllcjIuekluZGV4IC0gbGF5ZXIxLnpJbmRleFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBsYXllciBpbmRleCBpbiB0aGUgbWFwJ3MgaW5lbnIgYXJyYXkgb2YgbGF5ZXJzXHJcbiAgICogQHBhcmFtIGxheWVyIExheWVyXHJcbiAgICogQHJldHVybnMgVGhlIGxheWVyIGluZGV4XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRMYXllckluZGV4KGxheWVyOiBMYXllcikge1xyXG4gICAgcmV0dXJuIHRoaXMubGF5ZXJzLmZpbmRJbmRleCgoX2xheWVyOiBMYXllcikgPT4gX2xheWVyID09PSBsYXllcik7XHJcbiAgfVxyXG59XHJcbiJdfQ==
437
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxLQUFLLE1BQU0sUUFBUSxDQUFDO0FBRTNCLE9BQU8sTUFBdUIsTUFBTSxTQUFTLENBQUM7QUFDOUMsT0FBTyxvQkFBb0IsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLGtCQUFrQixNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxhQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEQsT0FBTyxLQUFLLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFFbEMsT0FBTyxLQUFLLE9BQU8sTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVqQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLGVBQWUsRUFBVyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3JFLE9BQU8sRUFBUyxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFDTCwyQkFBMkIsRUFDM0IsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUN6QixpQ0FBaUMsRUFDbEMsTUFBTSxzQkFBc0IsQ0FBQztBQVc5Qiw4RUFBOEU7QUFDOUUsb0NBQW9DO0FBQ3BDLE1BQU0sT0FBTyxNQUFNO0lBNENQO0lBQ0E7SUE1Q0gsRUFBRSxDQUFRO0lBQ1YsY0FB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T0FHRztJQUNLLFNBQVMsQ0FBQyxNQUFlO1FBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGtCQUFrQixDQUFDLE1BQWU7UUFDeEMsNEJBQTRCO1FBQzVCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FDaEIsQ0FBQyxNQUFhLEVBQUUsTUFBYSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQ2hFLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGFBQWEsQ0FBQyxLQUFZO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFhLEVBQUUsRUFBRSxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsQ0FBQztJQUNwRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9jb25maWcnO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL3N0b3JhZ2UnO1xuaW1wb3J0IHsgU3ViamVjdFN0YXR1cyB9IGZyb20gJ0BpZ28yL3V0aWxzJztcblxuaW1wb3J0IG9sTWFwIGZyb20gJ29sL01hcCc7XG5pbXBvcnQgeyBPYmplY3RFdmVudCB9IGZyb20gJ29sL09iamVjdCc7XG5pbXBvcnQgb2xWaWV3LCB7IFZpZXdPcHRpb25zIH0gZnJvbSAnb2wvVmlldyc7XG5pbXBvcnQgb2xDb250cm9sQXR0cmlidXRpb24gZnJvbSAnb2wvY29udHJvbC9BdHRyaWJ1dGlvbic7XG5pbXBvcnQgb2xDb250cm9sU2NhbGVMaW5lIGZyb20gJ29sL2NvbnRyb2wvU2NhbGVMaW5lJztcbmltcG9ydCAqIGFzIG9saW50ZXJhY3Rpb24gZnJvbSAnb2wvaW50ZXJhY3Rpb24nO1xuaW1wb3J0IG9sTGF5ZXIgZnJvbSAnb2wvbGF5ZXIvTGF5ZXInO1xuaW1wb3J0ICogYXMgb2xwcm9qIGZyb20gJ29sL3Byb2onO1xuaW1wb3J0IE9sUHJvamVjdGlvbiBmcm9tICdvbC9wcm9qL1Byb2plY3Rpb24nO1xuaW1wb3J0ICogYXMgb2xwcm9qNCBmcm9tICdvbC9wcm9qL3Byb2o0JztcbmltcG9ydCBvbFNvdXJjZSBmcm9tICdvbC9zb3VyY2UvU291cmNlJztcbmltcG9ydCB7IGdldFVpZCB9IGZyb20gJ29sL3V0aWwnO1xuXG5pbXBvcnQgcHJvajQgZnJvbSAncHJvajQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCBwYWlyd2lzZSwgc2tpcFdoaWxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZlYXR1cmVEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvZmVhdHVyZS1kYXRhc291cmNlJztcbmltcG9ydCB7IExheWVyLCBWZWN0b3JMYXllciB9IGZyb20gJy4uLy4uL2xheWVyL3NoYXJlZC9sYXllcnMnO1xuaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJy4uLy4uL292ZXJsYXkvc2hhcmVkL292ZXJsYXknO1xuaW1wb3J0IHsgTGF5ZXJXYXRjaGVyIH0gZnJvbSAnLi4vdXRpbHMvbGF5ZXItd2F0Y2hlcic7XG5pbXBvcnQgeyBNYXBHZW9sb2NhdGlvbkNvbnRyb2xsZXIgfSBmcm9tICcuL2NvbnRyb2xsZXJzL2dlb2xvY2F0aW9uJztcbmltcG9ydCB7IE1hcFZpZXdDb250cm9sbGVyIH0gZnJvbSAnLi9jb250cm9sbGVycy92aWV3JztcbmltcG9ydCB7XG4gIGdldEFsbENoaWxkTGF5ZXJzQnlEZWxldGlvbixcbiAgZ2V0Um9vdFBhcmVudEJ5RGVsZXRpb24sXG4gIGhhbmRsZUxheWVyUHJvcGVydHlDaGFuZ2UsXG4gIGluaXRMYXllclN5bmNGcm9tUm9vdFBhcmVudExheWVyc1xufSBmcm9tICcuL2xpbmtlZExheWVycy51dGlscyc7XG5pbXBvcnQgdHlwZSB7IE1hcEJhc2UgfSBmcm9tICcuL21hcC5hYnN0cmFjdCc7XG5pbXBvcnQge1xuICBNYXBBdHRyaWJ1dGlvbk9wdGlvbnMsXG4gIE1hcENvbnRyb2xzT3B0aW9ucyxcbiAgTWFwRXh0ZW50LFxuICBNYXBPcHRpb25zLFxuICBNYXBTY2FsZUxpbmVPcHRpb25zLFxuICBNYXBWaWV3T3B0aW9uc1xufSBmcm9tICcuL21hcC5pbnRlcmZhY2UnO1xuXG4vLyBUT0RPOiBUaGlzIGNsYXNzIGlzIG1lc3N5LiBDbGVhcmx5IGRlZmluZSBpdCdzIHNjb3BlIGFuZCB0aGUgbWFwIGJyb3dzZXIncy5cbi8vIE1vdmUgc29tZSBzdHVmZiBpbnRvIGNvbnRyb2xsZXJzLlxuZXhwb3J0IGNsYXNzIElnb01hcCBpbXBsZW1lbnRzIE1hcEJhc2Uge1xuICBwdWJsaWMgb2w6IG9sTWFwO1xuICBwdWJsaWMgZm9yY2VkT2ZmbGluZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIGxheWVycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PExheWVyW10+KFtdKTtcbiAgcHVibGljIGxheWVyc0FkZGVkQnlDbGljayQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PExheWVyW10+KHVuZGVmaW5lZCk7XG4gIHB1YmxpYyBzdGF0dXMkOiBTdWJqZWN0PFN1YmplY3RTdGF0dXM+O1xuICBwdWJsaWMgcHJvcGVydHlDaGFuZ2UkOiBTdWJqZWN0PHsgZXZlbnQ6IE9iamVjdEV2ZW50OyBsYXllcjogTGF5ZXIgfT47XG4gIHB1YmxpYyBvdmVybGF5OiBPdmVybGF5O1xuICBwdWJsaWMgcXVlcnlSZXN1bHRzT3ZlcmxheTogT3ZlcmxheTtcbiAgcHVibGljIHNlYXJjaFJlc3VsdHNPdmVybGF5OiBPdmVybGF5O1xuICBwdWJsaWMgdmlld0NvbnRyb2xsZXI6IE1hcFZpZXdDb250cm9sbGVyO1xuICBwdWJsaWMgZ2VvbG9jYXRpb25Db250cm9sbGVyOiBNYXBHZW9sb2NhdGlvbkNvbnRyb2xsZXI7XG4gIHB1YmxpYyBzd2lwZUVuYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyBtYXBDZW50ZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyBzZWxlY3RlZEZlYXR1cmVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TGF5ZXJbXT4obnVsbCk7XG5cbiAgcHVibGljIGJ1ZmZlckRhdGFTb3VyY2U6IEZlYXR1cmVEYXRhU291cmNlO1xuXG4gIHByaXZhdGUgbGF5ZXJXYXRjaGVyOiBMYXllcldhdGNoZXI7XG4gIHByaXZhdGUgb3B0aW9uczogTWFwT3B0aW9ucztcbiAgcHJpdmF0ZSBtYXBWaWV3T3B0aW9uczogTWFwVmlld09wdGlvbnM7XG4gIHByaXZhdGUgZGVmYXVsdE9wdGlvbnM6IFBhcnRpYWw8TWFwT3B0aW9ucz4gPSB7XG4gICAgY29udHJvbHM6IHsgYXR0cmlidXRpb246IGZhbHNlIH1cbiAgfTtcblxuICBnZXQgbGF5ZXJzKCk6IExheWVyW10ge1xuICAgIHJldHVybiB0aGlzLmxheWVycyQudmFsdWU7XG4gIH1cblxuICAvKiogQGRlcHJlY2F0ZWQgdXNlIHByb2plY3Rpb25Db2RlICovXG4gIGdldCBwcm9qZWN0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvamVjdGlvbkNvZGU7XG4gIH1cblxuICBnZXQgdmlld1Byb2plY3Rpb24oKTogb2xwcm9qLlByb2plY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLnZpZXdDb250cm9sbGVyLmdldE9sUHJvamVjdGlvbigpO1xuICB9XG5cbiAgZ2V0IHByb2plY3Rpb25Db2RlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudmlld1Byb2plY3Rpb24uZ2V0Q29kZSgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgb3B0aW9ucz86IE1hcE9wdGlvbnMsXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZT86IFN0b3JhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZT86IENvbmZpZ1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5kZWZhdWx0T3B0aW9ucywgb3B0aW9ucyk7XG4gICAgdGhpcy5sYXllcldhdGNoZXIgPSBuZXcgTGF5ZXJXYXRjaGVyKCk7XG4gICAgdGhpcy5zdGF0dXMkID0gdGhpcy5sYXllcldhdGNoZXIuc3RhdHVzJDtcbiAgICB0aGlzLnByb3BlcnR5Q2hhbmdlJCA9IHRoaXMubGF5ZXJXYXRjaGVyLnByb3BlcnR5Q2hhbmdlJDtcbiAgICBvbHByb2o0LnJlZ2lzdGVyKHByb2o0KTtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIGluaXQoKSB7XG4gICAgY29uc3QgY29udHJvbHMgPSBbXTtcbiAgICBpZiAodGhpcy5vcHRpb25zLmNvbnRyb2xzKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmNvbnRyb2xzLmF0dHJpYnV0aW9uKSB7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0aW9uT3B0ID0gKFxuICAgICAgICAgIHRoaXMub3B0aW9ucy5jb250cm9scy5hdHRyaWJ1dGlvbiA9PT0gdHJ1ZVxuICAgICAgICAgICAgPyB7fVxuICAgICAgICAgICAgOiB0aGlzLm9wdGlvbnMuY29udHJvbHMuYXR0cmlidXRpb25cbiAgICAgICAgKSBhcyBNYXBBdHRyaWJ1dGlvbk9wdGlvbnM7XG4gICAgICAgIGNvbnRyb2xzLnB1c2gobmV3IG9sQ29udHJvbEF0dHJpYnV0aW9uKGF0dHJpYnV0aW9uT3B0KSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmNvbnRyb2xzLnNjYWxlTGluZSkge1xuICAgICAgICBjb25zdCBzY2FsZUxpbmVPcHQgPSAoXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmNvbnRyb2xzLnNjYWxlTGluZSA9PT0gdHJ1ZVxuICAgICAgICAgICAgPyB7fVxuICAgICAgICAgICAgOiB0aGlzLm9wdGlvbnMuY29udHJvbHMuc2NhbGVMaW5lXG4gICAgICAgICkgYXMgTWFwU2NhbGVMaW5lT3B0aW9ucztcbiAgICAgICAgY29udHJvbHMucHVzaChuZXcgb2xDb250cm9sU2NhbGVMaW5lKHNjYWxlTGluZU9wdCkpO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgaW50ZXJhY3Rpb25zID0ge307XG4gICAgaWYgKHRoaXMub3B0aW9ucy5pbnRlcmFjdGlvbnMgPT09IGZhbHNlKSB7XG4gICAgICBpbnRlcmFjdGlvbnMgPSB7XG4gICAgICAgIGFsdFNoaWZ0RHJhZ1JvdGF0ZTogZmFsc2UsXG4gICAgICAgIGRvdWJsZUNsaWNrWm9vbTogZmFsc2UsXG4gICAgICAgIGtleWJvYXJkOiBmYWxzZSxcbiAgICAgICAgbW91c2VXaGVlbFpvb206IGZhbHNlLFxuICAgICAgICBzaGlmdERyYWdab29tOiBmYWxzZSxcbiAgICAgICAgZHJhZ1BhbjogZmFsc2UsXG4gICAgICAgIHBpbmNoUm90YXRlOiBmYWxzZSxcbiAgICAgICAgcGluY2hab29tOiBmYWxzZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLm9sID0gbmV3IG9sTWFwKHtcbiAgICAgIGludGVyYWN0aW9uczogb2xpbnRlcmFjdGlvbi5kZWZhdWx0cyhpbnRlcmFjdGlvbnMpLFxuICAgICAgY29udHJvbHNcbiAgICB9KTtcblxuICAgIHRoaXMuc2V0Vmlldyh0aGlzLm9wdGlvbnMudmlldyB8fCB7fSk7XG4gICAgdGhpcy52aWV3Q29udHJvbGxlciA9IG5ldyBNYXBWaWV3Q29udHJvbGxlcih7XG4gICAgICBzdGF0ZUhpc3Rvcnk6IHRydWVcbiAgICB9KTtcbiAgICB0aGlzLnZpZXdDb250cm9sbGVyLnNldE9sTWFwKHRoaXMub2wpO1xuICAgIHRoaXMub3ZlcmxheSA9IG5ldyBPdmVybGF5KHRoaXMpO1xuICAgIHRoaXMucXVlcnlSZXN1bHRzT3ZlcmxheSA9IG5ldyBPdmVybGF5KHRoaXMpO1xuICAgIHRoaXMuc2VhcmNoUmVzdWx0c092ZXJsYXkgPSBuZXcgT3ZlcmxheSh0aGlzKTtcbiAgICB0aGlzLm9sLm9uY2UoJ3JlbmRlcmNvbXBsZXRlJywgKCkgPT4ge1xuICAgICAgdGhpcy5nZW9sb2NhdGlvbkNvbnRyb2xsZXIgPSBuZXcgTWFwR2VvbG9jYXRpb25Db250cm9sbGVyKFxuICAgICAgICB0aGlzLFxuICAgICAgICB7XG4gICAgICAgICAgcHJvamVjdGlvbjogdGhpcy52aWV3Q29udHJvbGxlci5nZXRPbFByb2plY3Rpb24oKVxuICAgICAgICB9LFxuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLFxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2VcbiAgICAgICk7XG4gICAgICB0aGlzLmdlb2xvY2F0aW9uQ29udHJvbGxlci5zZXRPbE1hcCh0aGlzLm9sKTtcbiAgICAgIGlmICh0aGlzLmdlb2xvY2F0aW9uQ29udHJvbGxlcikge1xuICAgICAgICB0aGlzLmdlb2xvY2F0aW9uQ29udHJvbGxlci51cGRhdGVHZW9sb2NhdGlvbk9wdGlvbnMoXG4gICAgICAgICAgdGhpcy5tYXBWaWV3T3B0aW9uc1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy5sYXllcnMkLnBpcGUocGFpcndpc2UoKSkuc3Vic2NyaWJlKChbcHJldkxheWVycywgY3VycmVudExheWVyc10pID0+IHtcbiAgICAgICAgbGV0IHByZXZMYXllcnNJZDtcbiAgICAgICAgaWYgKHByZXZMYXllcnMpIHtcbiAgICAgICAgICBwcmV2TGF5ZXJzSWQgPSBwcmV2TGF5ZXJzLm1hcCgobCkgPT4gbC5pZCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGF5ZXJzID0gY3VycmVudExheWVycy5maWx0ZXIoXG4gICAgICAgICAgKGwpID0+ICFwcmV2TGF5ZXJzSWQuaW5jbHVkZXMobC5pZClcbiAgICAgICAgKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGxheWVyIG9mIGxheWVycykge1xuICAgICAgICAgIGlmIChsYXllci5vcHRpb25zLmxpbmtlZExheWVycykge1xuICAgICAgICAgICAgbGF5ZXIub2wub25jZSgncG9zdHJlbmRlcicsICgpID0+IHtcbiAgICAgICAgICAgICAgaW5pdExheWVyU3luY0Zyb21Sb290UGFyZW50TGF5ZXJzKHRoaXMsIGxheWVycyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy52aWV3Q29udHJvbGxlci5tb25pdG9yUm90YXRpb24oKTtcbiAgICB9KTtcbiAgICB0aGlzLnByb3BlcnR5Q2hhbmdlJFxuICAgICAgLnBpcGUoc2tpcFdoaWxlKChwYykgPT4gIXBjKSlcbiAgICAgIC5zdWJzY3JpYmUoKHApID0+IGhhbmRsZUxheWVyUHJvcGVydHlDaGFuZ2UodGhpcywgcC5ldmVudCwgcC5sYXllcikpO1xuICB9XG5cbiAgc2V0VGFyZ2V0KGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9sLnNldFRhcmdldChpZCk7XG4gICAgaWYgKGlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubGF5ZXJXYXRjaGVyLnN1YnNjcmliZSgoKSA9PiB7fSwgbnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGF5ZXJXYXRjaGVyLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlVmlldyhvcHRpb25zOiBNYXBWaWV3T3B0aW9ucykge1xuICAgIGNvbnN0IGN1cnJlbnRWaWV3ID0gdGhpcy5vbC5nZXRWaWV3KCk7XG4gICAgY29uc3Qgdmlld09wdGlvbnM6IE1hcFZpZXdPcHRpb25zID0ge1xuICAgICAgLi4uY3VycmVudFZpZXcuZ2V0UHJvcGVydGllcygpLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH07XG5cbiAgICBpZiAob3B0aW9ucy56b29tICYmIG9wdGlvbnMucmVzb2x1dGlvbiA9PSBudWxsKSB7XG4gICAgICB2aWV3T3B0aW9ucy5yZXNvbHV0aW9uID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHRoaXMuc2V0Vmlldyh2aWV3T3B0aW9ucyk7XG4gICAgaWYgKG9wdGlvbnMubWF4Wm9vbU9uRXh0ZW50KSB7XG4gICAgICB0aGlzLnZpZXdDb250cm9sbGVyLm1heFpvb21PbkV4dGVudCA9IG9wdGlvbnMubWF4Wm9vbU9uRXh0ZW50O1xuICAgIH1cbiAgICB0aGlzLm1hcFZpZXdPcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIG1hcCB2aWV3XG4gICAqIEBwYXJhbSBvcHRpb25zIE1hcCB2aWV3IG9wdGlvbnNcbiAgICovXG4gIHNldFZpZXcob3B0aW9uczogTWFwVmlld09wdGlvbnMpIHtcbiAgICBpZiAodGhpcy52aWV3Q29udHJvbGxlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnZpZXdDb250cm9sbGVyLmNsZWFyU3RhdGVIaXN0b3J5KCk7XG4gICAgfVxuXG4gICAgY29uc3Qgdmlld09wdGlvbnM6IFZpZXdPcHRpb25zID0geyBjb25zdHJhaW5SZXNvbHV0aW9uOiB0cnVlLCAuLi5vcHRpb25zIH07XG4gICAgaWYgKG9wdGlvbnMuY2VudGVyKSB7XG4gICAgICB2aWV3T3B0aW9ucy5jZW50ZXIgPSBvbHByb2ouZnJvbUxvbkxhdChcbiAgICAgICAgb3B0aW9ucy5jZW50ZXIsXG4gICAgICAgIG9wdGlvbnMucHJvamVjdGlvblxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLm9sLnNldFZpZXcobmV3IG9sVmlldyh2aWV3T3B0aW9ucykpO1xuXG4gICAgaWYgKG9wdGlvbnMubWF4TGF5ZXJab29tRXh0ZW50KSB7XG4gICAgICB0aGlzLnZpZXdDb250cm9sbGVyLm1heExheWVyWm9vbUV4dGVudCA9IG9wdGlvbnMubWF4TGF5ZXJab29tRXh0ZW50O1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUNvbnRyb2xzKHZhbHVlOiBNYXBDb250cm9sc09wdGlvbnMpIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRyb2xzID0gW107XG4gICAgaWYgKHZhbHVlLmF0dHJpYnV0aW9uKSB7XG4gICAgICBjb25zdCBhdHRyaWJ1dGlvbk9wdCA9IChcbiAgICAgICAgdmFsdWUuYXR0cmlidXRpb24gPT09IHRydWUgPyB7fSA6IHZhbHVlLmF0dHJpYnV0aW9uXG4gICAgICApIGFzIE1hcEF0dHJpYnV0aW9uT3B0aW9ucztcbiAgICAgIGNvbnRyb2xzLnB1c2gobmV3IG9sQ29udHJvbEF0dHJpYnV0aW9uKGF0dHJpYnV0aW9uT3B0KSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5zY2FsZUxpbmUpIHtcbiAgICAgIGNvbnN0IHNjYWxlTGluZU9wdCA9IChcbiAgICAgICAgdmFsdWUuc2NhbGVMaW5lID09PSB0cnVlID8ge30gOiB2YWx1ZS5zY2FsZUxpbmVcbiAgICAgICkgYXMgTWFwU2NhbGVMaW5lT3B0aW9ucztcbiAgICAgIGNvbnRyb2xzLnB1c2gobmV3IG9sQ29udHJvbFNjYWxlTGluZShzY2FsZUxpbmVPcHQpKTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50Q29udHJvbHMgPSBPYmplY3QuYXNzaWduKFtdLCB0aGlzLm9sLmdldENvbnRyb2xzKCkuZ2V0QXJyYXkoKSk7XG4gICAgY3VycmVudENvbnRyb2xzLmZvckVhY2goKGNvbnRyb2wpID0+IHtcbiAgICAgIHRoaXMub2wucmVtb3ZlQ29udHJvbChjb250cm9sKTtcbiAgICB9KTtcbiAgICBjb250cm9scy5mb3JFYWNoKChjb250cm9sKSA9PiB7XG4gICAgICB0aGlzLm9sLmFkZENvbnRyb2woY29udHJvbCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogVE9ETzogTW92ZSB0byBWaWV3Q29udHJvbGxlciBhbmQgdXBkYXRlIGV2ZXJ5IHBsYWNlIGl0J3MgdXNlZFxuICAgKi9cbiAgZ2V0Q2VudGVyKHByb2plY3Rpb24/OiBzdHJpbmcgfCBPbFByb2plY3Rpb24pOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgICByZXR1cm4gdGhpcy52aWV3Q29udHJvbGxlci5nZXRDZW50ZXIocHJvamVjdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogVE9ETzogTW92ZSB0byBWaWV3Q29udHJvbGxlciBhbmQgdXBkYXRlIGV2ZXJ5IHBsYWNlIGl0J3MgdXNlZFxuICAgKi9cbiAgZ2V0RXh0ZW50KHByb2plY3Rpb24/OiBzdHJpbmcgfCBPbFByb2plY3Rpb24pOiBNYXBFeHRlbnQge1xuICAgIHJldHVybiB0aGlzLnZpZXdDb250cm9sbGVyLmdldEV4dGVudChwcm9qZWN0aW9uKTtcbiAgfVxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogVE9ETzogTW92ZSB0byBWaWV3Q29udHJvbGxlciBhbmQgdXBkYXRlIGV2ZXJ5IHBsYWNlIGl0J3MgdXNlZFxuICAgKi9cbiAgZ2V0Wm9vbSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnZpZXdDb250cm9sbGVyLmdldFpvb20oKTtcbiAgfVxuXG4gIGNoYW5nZUJhc2VMYXllcihiYXNlTGF5ZXI6IExheWVyKSB7XG4gICAgaWYgKCFiYXNlTGF5ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGJsIG9mIHRoaXMuZ2V0QmFzZUxheWVycygpKSB7XG4gICAgICBibC52aXNpYmxlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgYmFzZUxheWVyLnZpc2libGUgPSB0cnVlO1xuXG4gICAgdGhpcy52aWV3Q29udHJvbGxlci5vbFZpZXcuc2V0TWluWm9vbShcbiAgICAgIGJhc2VMYXllci5kYXRhU291cmNlLm9wdGlvbnMubWluWm9vbSB8fCAodGhpcy5vcHRpb25zLnZpZXcgfHwge30pLm1pblpvb21cbiAgICApO1xuICAgIHRoaXMudmlld0NvbnRyb2xsZXIub2xWaWV3LnNldE1heFpvb20oXG4gICAgICBiYXNlTGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLm1heFpvb20gfHwgKHRoaXMub3B0aW9ucy52aWV3IHx8IHt9KS5tYXhab29tXG4gICAgKTtcbiAgfVxuXG4gIGdldEJhc2VMYXllcnMoKTogTGF5ZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMubGF5ZXJzLmZpbHRlcigobGF5ZXI6IExheWVyKSA9PiBsYXllci5iYXNlTGF5ZXIgPT09IHRydWUpO1xuICB9XG5cbiAgZ2V0TGF5ZXJCeUlkKGlkOiBzdHJpbmcpOiBMYXllciB7XG4gICAgcmV0dXJuIHRoaXMubGF5ZXJzLmZpbmQoKGxheWVyOiBMYXllcikgPT4gbGF5ZXIuaWQgJiYgbGF5ZXIuaWQgPT09IGlkKTtcbiAgfVxuXG4gIGdldExheWVyQnlBbGlhcyhhbGlhczogc3RyaW5nKTogTGF5ZXIge1xuICAgIHJldHVybiB0aGlzLmxheWVycy5maW5kKFxuICAgICAgKGxheWVyOiBMYXllcikgPT4gbGF5ZXIuYWxpYXMgJiYgbGF5ZXIuYWxpYXMgPT09IGFsaWFzXG4gICAgKTtcbiAgfVxuXG4gIGdldExheWVyQnlPbFVJZChvbFVJZDogc3RyaW5nKTogTGF5ZXIge1xuICAgIHJldHVybiB0aGlzLmxheWVycy5maW5kKFxuICAgICAgKGxheWVyOiBMYXllcikgPT4gZ2V0VWlkKGxheWVyLm9sKSAmJiBnZXRVaWQobGF5ZXIub2wpID09PSBvbFVJZFxuICAgICk7XG4gIH1cblxuICBnZXRMYXllckJ5T2xMYXllcihvbExheWVyOiBvbExheWVyPG9sU291cmNlPik6IExheWVyIHtcbiAgICBjb25zdCBvbFVJZCA9IGdldFVpZChvbExheWVyKTtcbiAgICByZXR1cm4gdGhpcy5nZXRMYXllckJ5T2xVSWQob2xVSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHNpbmdsZSBsYXllclxuICAgKiBAcGFyYW0gbGF5ZXIgTGF5ZXIgdG8gYWRkXG4gICAqIEBwYXJhbSBwdXNoIERFUFJFQ0FURURcbiAgICovXG4gIGFkZExheWVyKGxheWVyOiBMYXllciwgcHVzaCA9IHRydWUpIHtcbiAgICB0aGlzLmFkZExheWVycyhbbGF5ZXJdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgbWFueSBsYXllcnNcbiAgICogQHBhcmFtIGxheWVycyBMYXllcnMgdG8gYWRkXG4gICAqIEBwYXJhbSBwdXNoIERFUFJFQ0FURURcbiAgICovXG4gIGFkZExheWVycyhsYXllcnM6IExheWVyW10sIHB1c2ggPSB0cnVlKSB7XG4gICAgbGV0IG9mZnNldFpJbmRleCA9IDA7XG4gICAgbGV0IG9mZnNldEJhc2VMYXllclpJbmRleCA9IDA7XG4gICAgY29uc3QgYWRkZWRMYXllcnMgPSBsYXllcnNcbiAgICAgIC5tYXAoKGxheWVyOiBMYXllcikgPT4ge1xuICAgICAgICBpZiAoIWxheWVyKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IGxheWVyLnpJbmRleFxuICAgICAgICAgID8gMFxuICAgICAgICAgIDogbGF5ZXIuYmFzZUxheWVyXG4gICAgICAgICAgICA/IG9mZnNldEJhc2VMYXllclpJbmRleCsrXG4gICAgICAgICAgICA6IG9mZnNldFpJbmRleCsrO1xuICAgICAgICByZXR1cm4gdGhpcy5kb0FkZExheWVyKGxheWVyLCBvZmZzZXQpO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKGxheWVyOiBMYXllciB8IHVuZGVmaW5lZCkgPT4gbGF5ZXIgIT09IHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZXRMYXllcnMoW10uY29uY2F0KHRoaXMubGF5ZXJzLCBhZGRlZExheWVycykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIHNpbmdsZSBsYXllclxuICAgKiBAcGFyYW0gbGF5ZXIgTGF5ZXIgdG8gcmVtb3ZlXG4gICAqL1xuICByZW1vdmVMYXllcihsYXllcjogTGF5ZXIpIHtcbiAgICB0aGlzLnJlbW92ZUxheWVycyhbbGF5ZXJdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgbWFueSBsYXllcnNcbiAgICogQHBhcmFtIGxheWVycyBMYXllcnMgdG8gcmVtb3ZlXG4gICAqL1xuICByZW1vdmVMYXllcnMobGF5ZXJzOiBMYXllcltdKSB7XG4gICAgY29uc3QgbmV3TGF5ZXJzID0gdGhpcy5sYXllcnMkLnZhbHVlLnNsaWNlKDApO1xuICAgIGNvbnN0IGxheWVyc1RvUmVtb3ZlID0gW107XG4gICAgbGF5ZXJzLmZvckVhY2goKGxheWVyOiBMYXllcikgPT4ge1xuICAgICAgaWYgKGxheWVyIGluc3RhbmNlb2YgVmVjdG9yTGF5ZXIpIHtcbiAgICAgICAgbGF5ZXIucmVtb3ZlTGF5ZXJGcm9tSURCKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBpbmRleCA9IG5ld0xheWVycy5pbmRleE9mKGxheWVyKTtcbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgIGxheWVyc1RvUmVtb3ZlLnB1c2gobGF5ZXIpO1xuICAgICAgICBuZXdMYXllcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5oYW5kbGVMaW5rZWRMYXllcnNEZWxldGlvbihsYXllciwgbGF5ZXJzVG9SZW1vdmUpO1xuICAgICAgICBsYXllcnNUb1JlbW92ZS5tYXAoKGxpbmtlZExheWVyKSA9PiB7XG4gICAgICAgICAgY29uc3QgbGlua2VkSW5kZXggPSBuZXdMYXllcnMuaW5kZXhPZihsaW5rZWRMYXllcik7XG4gICAgICAgICAgaWYgKGxpbmtlZEluZGV4ID49IDApIHtcbiAgICAgICAgICAgIG5ld0xheWVycy5zcGxpY2UobGlua2VkSW5kZXgsIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsYXllcnNUb1JlbW92ZS5mb3JFYWNoKChsYXllcjogTGF5ZXIpID0+IHRoaXMuZG9SZW1vdmVMYXllcihsYXllcikpO1xuICAgIHRoaXMuc2V0TGF5ZXJzKG5ld0xheWVycyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSBsaXN0IG9mIGxpbmtlZCBsYXllcnMgdG8gZGVsZXRlXG4gICAqIEBwYXJhbSBzcmNMYXllciBMYXllciB0aGF0IGhhcyB0cmlnZ2VyZWQgdGhlIGRlbGV0aW9uXG4gICAqIEBwYXJhbSBsYXllcnNUb1JlbW92ZSBsaXN0IHRvIGFwcGVuZCB0aGUgbGF5ZXIgdG8gZGVsZXRlIGludG9cbiAgICovXG4gIGhhbmRsZUxpbmtlZExheWVyc0RlbGV0aW9uKHNyY0xheWVyOiBMYXllciwgbGF5ZXJzVG9SZW1vdmU6IExheWVyW10pIHtcbiAgICBsZXQgcm9vdFBhcmVudEJ5RGVsZXRpb24gPSBnZXRSb290UGFyZW50QnlEZWxldGlvbih0aGlzLCBzcmNMYXllcik7XG4gICAgaWYgKCFyb290UGFyZW50QnlEZWxldGlvbikge1xuICAgICAgcm9vdFBhcmVudEJ5RGVsZXRpb24gPSBzcmNMYXllcjtcbiAgICB9XG4gICAgY29uc3QgY2xiZCA9IGdldEFsbENoaWxkTGF5ZXJzQnlEZWxldGlvbih0aGlzLCByb290UGFyZW50QnlEZWxldGlvbiwgW1xuICAgICAgcm9vdFBhcmVudEJ5RGVsZXRpb25cbiAgICBdKTtcbiAgICBmb3IgKGNvbnN0IGxheWVyIG9mIGNsYmQpIHtcbiAgICAgIGxheWVyc1RvUmVtb3ZlLnB1c2gobGF5ZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYWxsIGxheWVyc1xuICAgKi9cbiAgcmVtb3ZlQWxsTGF5ZXJzKCkge1xuICAgIHRoaXMubGF5ZXJzLmZvckVhY2goKGxheWVyOiBMYXllcikgPT4gdGhpcy5kb1JlbW92ZUxheWVyKGxheWVyKSk7XG4gICAgdGhpcy5sYXllcnMkLm5leHQoW10pO1xuICB9XG5cbiAgcmFpc2VMYXllcihsYXllcjogTGF5ZXIpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0TGF5ZXJJbmRleChsYXllcik7XG4gICAgaWYgKGluZGV4ID4gMSkge1xuICAgICAgdGhpcy5tb3ZlTGF5ZXIobGF5ZXIsIGluZGV4LCBpbmRleCAtIDEpO1xuICAgIH1cbiAgfVxuXG4gIHJhaXNlTGF5ZXJzKGxheWVyczogTGF5ZXJbXSkge1xuICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgbGF5ZXJzKSB7XG4gICAgICB0aGlzLnJhaXNlTGF5ZXIobGF5ZXIpO1xuICAgIH1cbiAgfVxuXG4gIGxvd2VyTGF5ZXIobGF5ZXI6IExheWVyKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldExheWVySW5kZXgobGF5ZXIpO1xuICAgIGlmIChpbmRleCA8IHRoaXMubGF5ZXJzLmxlbmd0aCAtIDEpIHtcbiAgICAgIHRoaXMubW92ZUxheWVyKGxheWVyLCBpbmRleCwgaW5kZXggKyAxKTtcbiAgICB9XG4gIH1cblxuICBsb3dlckxheWVycyhsYXllcnM6IExheWVyW10pIHtcbiAgICBjb25zdCByZXZlcnNlTGF5ZXJzID0gbGF5ZXJzLnJldmVyc2UoKTtcbiAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHJldmVyc2VMYXllcnMpIHtcbiAgICAgIHRoaXMubG93ZXJMYXllcihsYXllcik7XG4gICAgfVxuICB9XG5cbiAgbW92ZUxheWVyKGxheWVyOiBMYXllciwgZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKSB7XG4gICAgY29uc3QgbGF5ZXJUbyA9IHRoaXMubGF5ZXJzW3RvXTtcbiAgICBjb25zdCB6SW5kZXhUbyA9IGxheWVyVG8uekluZGV4O1xuICAgIGNvbnN0IHpJbmRleEZyb20gPSBsYXllci56SW5kZXg7XG5cbiAgICBpZiAobGF5ZXJUby5iYXNlTGF5ZXIgfHwgbGF5ZXIuYmFzZUxheWVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGF5ZXIuekluZGV4ID0gekluZGV4VG87XG4gICAgbGF5ZXJUby56SW5kZXggPSB6SW5kZXhGcm9tO1xuXG4gICAgdGhpcy5sYXllcnNbdG9dID0gbGF5ZXI7XG4gICAgdGhpcy5sYXllcnNbZnJvbV0gPSBsYXllclRvO1xuICAgIHRoaXMubGF5ZXJzJC5uZXh0KHRoaXMubGF5ZXJzLnNsaWNlKDApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBsYXllciB0byB0aGUgT0wgbWFwIGFuZCBzdGFydCB3YXRjaGluZy4gSWYgdGhlIGxheWVyIGlzIGFscmVhZHlcbiAgICogYWRkZWQgdG8gdGhpcyBtYXAsIG1ha2UgaXQgdmlzaWJsZSBidXQgZG9uJ3QgYWRkIGl0IG9uZSBhZ2Fpbi5cbiAgICogQHBhcmFtIGxheWVyIExheWVyXG4gICAqIEByZXR1cm5zIFRoZSBsYXllciBhZGRlZCwgaWYgYW55XG4gICAqL1xuICBwcml2YXRlIGRvQWRkTGF5ZXIobGF5ZXI6IExheWVyLCBvZmZzZXRaSW5kZXg6IG51bWJlcikge1xuICAgIGlmIChsYXllci5iYXNlTGF5ZXIgJiYgbGF5ZXIudmlzaWJsZSkge1xuICAgICAgdGhpcy5jaGFuZ2VCYXNlTGF5ZXIobGF5ZXIpO1xuICAgIH1cblxuICAgIGNvbnN0IGV4aXN0aW5nTGF5ZXIgPSB0aGlzLmdldExheWVyQnlJZChsYXllci5pZCk7XG4gICAgaWYgKGV4aXN0aW5nTGF5ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZXhpc3RpbmdMYXllci52aXNpYmxlID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWxheWVyLmJhc2VMYXllciAmJiBsYXllci56SW5kZXgpIHtcbiAgICAgIGxheWVyLnpJbmRleCArPSAxMDtcbiAgICB9XG5cbiAgICBpZiAobGF5ZXIuekluZGV4ID09PSB1bmRlZmluZWQgfHwgbGF5ZXIuekluZGV4ID09PSAwKSB7XG4gICAgICBjb25zdCBtYXhaSW5kZXggPSBNYXRoLm1heChcbiAgICAgICAgbGF5ZXIuYmFzZUxheWVyID8gMCA6IDEwLFxuICAgICAgICAuLi50aGlzLmxheWVyc1xuICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAobCkgPT4gbC5iYXNlTGF5ZXIgPT09IGxheWVyLmJhc2VMYXllciAmJiBsLnpJbmRleCA8IDIwMCAvLyB6SW5kZXggPiAyMDAgPSBzeXN0ZW0gbGF5ZXJcbiAgICAgICAgICApXG4gICAgICAgICAgLm1hcCgobCkgPT4gbC56SW5kZXgpXG4gICAgICApO1xuICAgICAgbGF5ZXIuekluZGV4ID0gbWF4WkluZGV4ICsgMSArIG9mZnNldFpJbmRleDtcbiAgICB9XG5cbiAgICBpZiAobGF5ZXIuYmFzZUxheWVyICYmIGxheWVyLnpJbmRleCA+IDkpIHtcbiAgICAgIGxheWVyLnpJbmRleCA9IDEwOyAvLyBiYXNlbGF5ZXIgbXVzdCBoYXZlIHpJbmRleCA8IDEwXG4gICAgfVxuXG4gICAgbGF5ZXIuc2V0TWFwKHRoaXMpO1xuICAgIHRoaXMubGF5ZXJXYXRjaGVyLndhdGNoTGF5ZXIobGF5ZXIpO1xuICAgIHRoaXMub2wuYWRkTGF5ZXIobGF5ZXIub2wpO1xuXG4gICAgcmV0dXJuIGxheWVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIGxheWVyIGZyb20gdGhlIE9MIG1hcCBhbmQgc3RvcCB3YXRjaGluZ1xuICAgKiBAcGFyYW0gbGF5ZXIgTGF5ZXJcbiAgICovXG4gIHByaXZhdGUgZG9SZW1vdmVMYXllcihsYXllcjogTGF5ZXIpIHtcbiAgICB0aGlzLmxheWVyV2F0Y2hlci51bndhdGNoTGF5ZXIobGF5ZXIpO1xuICAgIHRoaXMub2wucmVtb3ZlTGF5ZXIobGF5ZXIub2wpO1xuICAgIGxheWVyLnNldE1hcCh1bmRlZmluZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgbGF5ZXJzIG9ic2VydmFibGVcbiAgICogQHBhcmFtIGxheWVycyBMYXllcnNcbiAgICovXG4gIHByaXZhdGUgc2V0TGF5ZXJzKGxheWVyczogTGF5ZXJbXSkge1xuICAgIHRoaXMubGF5ZXJzJC5uZXh0KHRoaXMuc29ydExheWVyc0J5WkluZGV4KGxheWVycykuc2xpY2UoMCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNvcnQgbGF5ZXJzIGJ5IGRlc2NlbmRpbmcgekluZGV4XG4gICAqIEBwYXJhbSBsYXllcnMgQXJyYXkgb2YgbGF5ZXJzXG4gICAqIEByZXR1cm5zIFRoZSBvcmlnaW5hbCBhcnJheSwgc29ydGVkIGJ5IHpJbmRleFxuICAgKi9cbiAgcHJpdmF0ZSBzb3J0TGF5ZXJzQnlaSW5kZXgobGF5ZXJzOiBMYXllcltdKSB7XG4gICAgLy8gU29ydCBieSBkZXNjZW5kaW5nIHpJbmRleFxuICAgIHJldHVybiBsYXllcnMuc29ydChcbiAgICAgIChsYXllcjE6IExheWVyLCBsYXllcjI6IExheWVyKSA9PiBsYXllcjIuekluZGV4IC0gbGF5ZXIxLnpJbmRleFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGxheWVyIGluZGV4IGluIHRoZSBtYXAncyBpbmVuciBhcnJheSBvZiBsYXllcnNcbiAgICogQHBhcmFtIGxheWVyIExheWVyXG4gICAqIEByZXR1cm5zIFRoZSBsYXllciBpbmRleFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRMYXllckluZGV4KGxheWVyOiBMYXllcikge1xuICAgIHJldHVybiB0aGlzLmxheWVycy5maW5kSW5kZXgoKF9sYXllcjogTGF5ZXIpID0+IF9sYXllciA9PT0gbGF5ZXIpO1xuICB9XG59XG4iXX0=
@@ -18,10 +18,10 @@ export class MapService {
18
18
  setMap(map) {
19
19
  this.map = map;
20
20
  }
21
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: MapService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
22
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: MapService, providedIn: 'root' });
21
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: MapService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
22
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: MapService, providedIn: 'root' });
23
23
  }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: MapService, decorators: [{
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: MapService, decorators: [{
25
25
  type: Injectable,
26
26
  args: [{
27
27
  providedIn: 'root'
@@ -1,10 +1,12 @@
1
1
  import { Directive } from '@angular/core';
2
- import { MessageService, NetworkService } from '@igo2/core';
2
+ import { MessageService } from '@igo2/core/message';
3
+ import { NetworkService } from '@igo2/core/network';
3
4
  import { combineLatest } from 'rxjs';
4
5
  import { MapBrowserComponent } from '../map-browser/map-browser.component';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "../map-browser/map-browser.component";
7
- import * as i2 from "@igo2/core";
8
+ import * as i2 from "@igo2/core/network";
9
+ import * as i3 from "@igo2/core/message";
8
10
  export class MapOfflineDirective {
9
11
  networkService;
10
12
  messageService;
@@ -95,14 +97,14 @@ export class MapOfflineDirective {
95
97
  }
96
98
  });
97
99
  }
98
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: MapOfflineDirective, deps: [{ token: i1.MapBrowserComponent }, { token: i2.NetworkService }, { token: i2.MessageService }], target: i0.ɵɵFactoryTarget.Directive });
99
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.1", type: MapOfflineDirective, isStandalone: true, selector: "[igoMapOffline]", ngImport: i0 });
100
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: MapOfflineDirective, deps: [{ token: i1.MapBrowserComponent }, { token: i2.NetworkService }, { token: i3.MessageService }], target: i0.ɵɵFactoryTarget.Directive });
101
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.9", type: MapOfflineDirective, isStandalone: true, selector: "[igoMapOffline]", ngImport: i0 });
100
102
  }
101
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: MapOfflineDirective, decorators: [{
103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: MapOfflineDirective, decorators: [{
102
104
  type: Directive,
103
105
  args: [{
104
106
  selector: '[igoMapOffline]',
105
107
  standalone: true
106
108
  }]
107
- }], ctorParameters: () => [{ type: i1.MapBrowserComponent }, { type: i2.NetworkService }, { type: i2.MessageService }] });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwT2ZmbGluZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL21hcE9mZmxpbmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBbUIsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUU3RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSXJDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7O0FBVzNFLE1BQU0sT0FBTyxtQkFBbUI7SUFXcEI7SUFDQTtJQVhGLFNBQVMsQ0FBc0I7SUFFdkMsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztJQUM1QixDQUFDO0lBRU8saUJBQWlCLENBQUM7SUFFMUIsWUFDRSxTQUE4QixFQUN0QixjQUE4QixFQUM5QixjQUE4QjtRQUQ5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBRXRDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDOUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBc0IsRUFBRSxFQUFFO1lBQzNELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO1lBQ3ZDLG1EQUFtRDtZQUNuRCxJQUFJLGFBQWEsSUFBSSxhQUFhLEtBQUssTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ2hFLE9BQU87WUFD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VSxDQUFDLE1BQU0sQ0FDbEMsNEJBQTRCLENBQUMsV0FBVyxDQUN6QyxDQUFDO2dCQUNKLENBQUM7cUJBQU0sSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUNyQyxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO3dCQUN6QyxPQUFPO29CQUNULENBQUM7b0JBQ0EsS0FBSyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQVUsQ0FBQyxNQUFNLENBQ2xDLDRCQUE0QixDQUFDLEdBQUcsQ0FDakMsQ0FBQztnQkFDSixDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLGtDQUFrQyxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3hFLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sd0RBQXdEO2dCQUN4RCxJQUFJLENBQUMsa0NBQWtDLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDdEUsT0FBTztZQUNULENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7dUdBL0dVLG1CQUFtQjsyRkFBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUovQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQ29ubmVjdGlvblN0YXRlLCBNZXNzYWdlU2VydmljZSwgTmV0d29ya1NlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcclxuXHJcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IERhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvZGF0YXNvdXJjZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBMYXllciB9IGZyb20gJy4uLy4uL2xheWVyL3NoYXJlZC9sYXllcnMvbGF5ZXInO1xyXG5pbXBvcnQgeyBNYXBCcm93c2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vbWFwLWJyb3dzZXIvbWFwLWJyb3dzZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi9tYXAnO1xyXG5cclxuaW50ZXJmYWNlIE9mZmxpbmFibGVTb3VyY2VPcHRpb25zIGV4dGVuZHMgRGF0YVNvdXJjZU9wdGlvbnMge1xyXG4gIHBhdGhPZmZsaW5lPzogc3RyaW5nO1xyXG59XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tpZ29NYXBPZmZsaW5lXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFwT2ZmbGluZURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIHByaXZhdGUgY29tcG9uZW50OiBNYXBCcm93c2VyQ29tcG9uZW50O1xyXG5cclxuICBnZXQgbWFwKCk6IElnb01hcCB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnQubWFwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcmV2aW91c01lc3NhZ2VJZDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBjb21wb25lbnQ6IE1hcEJyb3dzZXJDb21wb25lbnQsXHJcbiAgICBwcml2YXRlIG5ldHdvcmtTZXJ2aWNlOiBOZXR3b3JrU2VydmljZSxcclxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGNvbnN0IGluaXRpYWxPbmxpbmUgPSB3aW5kb3cubmF2aWdhdG9yLm9uTGluZTtcclxuICAgIHRoaXMubWFwLmZvcmNlZE9mZmxpbmUkLnN1YnNjcmliZSgoZm9yY2VkT2ZmbGluZTogYm9vbGVhbikgPT4ge1xyXG4gICAgICBjb25zdCBvbmxpbmUgPSB3aW5kb3cubmF2aWdhdG9yLm9uTGluZTtcclxuICAgICAgLy8gcHJldmVudCBmaXJzdCBvbmxpbmUgbWVzc2FnZSBpZiBubyBzdGF0ZSBjaGFuZ2UuXHJcbiAgICAgIGlmIChpbml0aWFsT25saW5lICYmIGluaXRpYWxPbmxpbmUgPT09IG9ubGluZSAmJiAhZm9yY2VkT2ZmbGluZSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5wcmV2aW91c01lc3NhZ2VJZCkge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UucmVtb3ZlKHRoaXMucHJldmlvdXNNZXNzYWdlSWQpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghZm9yY2VkT2ZmbGluZSAmJiBvbmxpbmUpIHtcclxuICAgICAgICBjb25zdCBtZXNzYWdlT2JqID0gdGhpcy5tZXNzYWdlU2VydmljZS5pbmZvKFxyXG4gICAgICAgICAgJ2lnby5nZW8ubmV0d29yay5vbmxpbmUubWVzc2FnZScsXHJcbiAgICAgICAgICAnaWdvLmdlby5uZXR3b3JrLm9ubGluZS50aXRsZSdcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucHJldmlvdXNNZXNzYWdlSWQgPSBtZXNzYWdlT2JqLnRvYXN0SWQ7XHJcbiAgICAgIH0gZWxzZSBpZiAoZm9yY2VkT2ZmbGluZSkge1xyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2VPYmogPSB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmluZm8oXHJcbiAgICAgICAgICAnaWdvLmdlby5uZXR3b3JrLm9mZmxpbmUubWVzc2FnZScsXHJcbiAgICAgICAgICAnaWdvLmdlby5uZXR3b3JrLm9mZmxpbmUudGl0bGUnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnByZXZpb3VzTWVzc2FnZUlkID0gbWVzc2FnZU9iai50b2FzdElkO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb21iaW5lTGF0ZXN0KFtcclxuICAgICAgdGhpcy5uZXR3b3JrU2VydmljZS5jdXJyZW50U3RhdGUoKSxcclxuICAgICAgdGhpcy5tYXAuZm9yY2VkT2ZmbGluZSQsXHJcbiAgICAgIHRoaXMubWFwLmxheWVycyRcclxuICAgIF0pLnN1YnNjcmliZSgoYnVuY2g6IFtDb25uZWN0aW9uU3RhdGUsIGJvb2xlYW4sIExheWVyW11dKSA9PiB7XHJcbiAgICAgIGNvbnN0IG9ubGluZSA9IGJ1bmNoWzBdLmNvbm5lY3Rpb247XHJcbiAgICAgIGNvbnN0IGZvcmNlZE9mZmxpbmUgPSBidW5jaFsxXTtcclxuICAgICAgY29uc3QgbGF5ZXJzID0gYnVuY2hbMl07XHJcbiAgICAgIHRoaXMuaGFuZGxlTGF5ZXJzT25saW5lU3RhdGUob25saW5lLCBmb3JjZWRPZmZsaW5lLCBsYXllcnMpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZU5vbk9mZmxpbmFibGVMYXllclJlc29sdXRpb24oXHJcbiAgICBvbmxpbmU6IGJvb2xlYW4sXHJcbiAgICBmb3JjZWRPZmZsaW5lOiBib29sZWFuLFxyXG4gICAgbGF5ZXI6IExheWVyXHJcbiAgKSB7XHJcbiAgICBpZiAoIW9ubGluZSB8fCBmb3JjZWRPZmZsaW5lKSB7XHJcbiAgICAgIGxheWVyLm1heFJlc29sdXRpb24gPSAwO1xyXG4gICAgfSBlbHNlIGlmIChvbmxpbmUgfHwgIWZvcmNlZE9mZmxpbmUpIHtcclxuICAgICAgbGF5ZXIubWF4UmVzb2x1dGlvbiA9IGxheWVyLm9wdGlvbnMubWF4UmVzb2x1dGlvbiB8fCBJbmZpbml0eTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlTGF5ZXJzT25saW5lU3RhdGUoXHJcbiAgICBvbmxpbmU6IGJvb2xlYW4sXHJcbiAgICBmb3JjZWRPZmZsaW5lOiBib29sZWFuLFxyXG4gICAgbGF5ZXJzOiBMYXllcltdXHJcbiAgKSB7XHJcbiAgICBsYXllcnMuZm9yRWFjaCgobGF5ZXIpID0+IHtcclxuICAgICAgbGV0IG9mZmxpbmFibGVCeVVybFNvdXJjZU9wdGlvbnM7XHJcbiAgICAgIGlmIChsYXllci5pc0lnb0ludGVybmFsTGF5ZXIpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgLy8gZGV0ZWN0IGlmIGxheWVyL3NvdXJjZSBhcmUgb2ZmbGluYWJsZSBieSB1cmwvcGF0aE9mZmxpbmUgcHJvcGVydGllc1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgKGxheWVyLm9wdGlvbnMuc291cmNlT3B0aW9ucyBhcyBPZmZsaW5hYmxlU291cmNlT3B0aW9ucyk/LnBhdGhPZmZsaW5lXHJcbiAgICAgICkge1xyXG4gICAgICAgIG9mZmxpbmFibGVCeVVybFNvdXJjZU9wdGlvbnMgPSBsYXllci5vcHRpb25zLnNvdXJjZU9wdGlvbnM7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG9mZmxpbmFibGVCeVVybFNvdXJjZU9wdGlvbnMpIHtcclxuICAgICAgICBjb25zdCB0eXBlID0gb2ZmbGluYWJsZUJ5VXJsU291cmNlT3B0aW9ucy50eXBlO1xyXG4gICAgICAgIGlmICh0eXBlID09PSAnbXZ0Jykge1xyXG4gICAgICAgICAgbGF5ZXIub2wuZ2V0U291cmNlKCkucmVmcmVzaCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIW9ubGluZSB8fCBmb3JjZWRPZmZsaW5lKSB7XHJcbiAgICAgICAgICBpZiAoWyd2ZWN0b3InLCAnY2x1c3RlciddLmluY2x1ZGVzKHR5cGUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIChsYXllci5vbC5nZXRTb3VyY2UoKSBhcyBhbnkpLnNldFVybChcclxuICAgICAgICAgICAgb2ZmbGluYWJsZUJ5VXJsU291cmNlT3B0aW9ucy5wYXRoT2ZmbGluZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKCFvbmxpbmUgfHwgIWZvcmNlZE9mZmxpbmUpIHtcclxuICAgICAgICAgIGlmIChbJ3ZlY3RvcicsICdjbHVzdGVyJ10uaW5jbHVkZXModHlwZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgKGxheWVyLm9sLmdldFNvdXJjZSgpIGFzIGFueSkuc2V0VXJsKFxyXG4gICAgICAgICAgICBvZmZsaW5hYmxlQnlVcmxTb3VyY2VPcHRpb25zLnVybFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVOb25PZmZsaW5hYmxlTGF5ZXJSZXNvbHV0aW9uKG9ubGluZSwgZm9yY2VkT2ZmbGluZSwgbGF5ZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBGT1IgQUxMIE5PTiBPRkZMSU5BQkxFIFNPVVJDRSAoaS5lLiBFWENFUFQgUFJFVklPVVMpO1xyXG4gICAgICAgIHRoaXMuaGFuZGxlTm9uT2ZmbGluYWJsZUxheWVyUmVzb2x1dGlvbihvbmxpbmUsIGZvcmNlZE9mZmxpbmUsIGxheWVyKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
109
+ }], ctorParameters: () => [{ type: i1.MapBrowserComponent }, { type: i2.NetworkService }, { type: i3.MessageService }] });
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwT2ZmbGluZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL21hcE9mZmxpbmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQW1CLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJckMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7O0FBVzNFLE1BQU0sT0FBTyxtQkFBbUI7SUFXcEI7SUFDQTtJQVhGLFNBQVMsQ0FBc0I7SUFFdkMsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztJQUM1QixDQUFDO0lBRU8saUJBQWlCLENBQUM7SUFFMUIsWUFDRSxTQUE4QixFQUN0QixjQUE4QixFQUM5QixjQUE4QjtRQUQ5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBRXRDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDOUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBc0IsRUFBRSxFQUFFO1lBQzNELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO1lBQ3ZDLG1EQUFtRDtZQUNuRCxJQUFJLGFBQWEsSUFBSSxhQUFhLEtBQUssTUFBTSxJQUFJ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QztvQkFDQSxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBVSxDQUFDLE1BQU0sQ0FDbEMsNEJBQTRCLENBQUMsV0FBVyxDQUN6QyxDQUFDO2dCQUNKLENBQUM7cUJBQU0sSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUNyQyxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO3dCQUN6QyxPQUFPO29CQUNULENBQUM7b0JBQ0EsS0FBSyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQVUsQ0FBQyxNQUFNLENBQ2xDLDRCQUE0QixDQUFDLEdBQUcsQ0FDakMsQ0FBQztnQkFDSixDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLGtDQUFrQyxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3hFLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sd0RBQXdEO2dCQUN4RCxJQUFJLENBQUMsa0NBQWtDLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDdEUsT0FBTztZQUNULENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7dUdBL0dVLG1CQUFtQjsyRkFBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUovQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvbWVzc2FnZSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU3RhdGUsIE5ldHdvcmtTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9uZXR3b3JrJztcblxuaW1wb3J0IHsgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBEYXRhU291cmNlT3B0aW9ucyB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzL2RhdGFzb3VyY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IExheWVyIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycy9sYXllcic7XG5pbXBvcnQgeyBNYXBCcm93c2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vbWFwLWJyb3dzZXIvbWFwLWJyb3dzZXIuY29tcG9uZW50JztcbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4vbWFwJztcblxuaW50ZXJmYWNlIE9mZmxpbmFibGVTb3VyY2VPcHRpb25zIGV4dGVuZHMgRGF0YVNvdXJjZU9wdGlvbnMge1xuICBwYXRoT2ZmbGluZT86IHN0cmluZztcbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2lnb01hcE9mZmxpbmVdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNYXBPZmZsaW5lRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByaXZhdGUgY29tcG9uZW50OiBNYXBCcm93c2VyQ29tcG9uZW50O1xuXG4gIGdldCBtYXAoKTogSWdvTWFwIHtcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnQubWFwO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmV2aW91c01lc3NhZ2VJZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjb21wb25lbnQ6IE1hcEJyb3dzZXJDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBuZXR3b3JrU2VydmljZTogTmV0d29ya1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgY29uc3QgaW5pdGlhbE9ubGluZSA9IHdpbmRvdy5uYXZpZ2F0b3Iub25MaW5lO1xuICAgIHRoaXMubWFwLmZvcmNlZE9mZmxpbmUkLnN1YnNjcmliZSgoZm9yY2VkT2ZmbGluZTogYm9vbGVhbikgPT4ge1xuICAgICAgY29uc3Qgb25saW5lID0gd2luZG93Lm5hdmlnYXRvci5vbkxpbmU7XG4gICAgICAvLyBwcmV2ZW50IGZpcnN0IG9ubGluZSBtZXNzYWdlIGlmIG5vIHN0YXRlIGNoYW5nZS5cbiAgICAgIGlmIChpbml0aWFsT25saW5lICYmIGluaXRpYWxPbmxpbmUgPT09IG9ubGluZSAmJiAhZm9yY2VkT2ZmbGluZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5wcmV2aW91c01lc3NhZ2VJZCkge1xuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnJlbW92ZSh0aGlzLnByZXZpb3VzTWVzc2FnZUlkKTtcbiAgICAgIH1cbiAgICAgIGlmICghZm9yY2VkT2ZmbGluZSAmJiBvbmxpbmUpIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZU9iaiA9IHRoaXMubWVzc2FnZVNlcnZpY2UuaW5mbyhcbiAgICAgICAgICAnaWdvLmdlby5uZXR3b3JrLm9ubGluZS5tZXNzYWdlJyxcbiAgICAgICAgICAnaWdvLmdlby5uZXR3b3JrLm9ubGluZS50aXRsZSdcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wcmV2aW91c01lc3NhZ2VJZCA9IG1lc3NhZ2VPYmoudG9hc3RJZDtcbiAgICAgIH0gZWxzZSBpZiAoZm9yY2VkT2ZmbGluZSkge1xuICAgICAgICBjb25zdCBtZXNzYWdlT2JqID0gdGhpcy5tZXNzYWdlU2VydmljZS5pbmZvKFxuICAgICAgICAgICdpZ28uZ2VvLm5ldHdvcmsub2ZmbGluZS5tZXNzYWdlJyxcbiAgICAgICAgICAnaWdvLmdlby5uZXR3b3JrLm9mZmxpbmUudGl0bGUnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucHJldmlvdXNNZXNzYWdlSWQgPSBtZXNzYWdlT2JqLnRvYXN0SWQ7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMubmV0d29ya1NlcnZpY2UuY3VycmVudFN0YXRlKCksXG4gICAgICB0aGlzLm1hcC5mb3JjZWRPZmZsaW5lJCxcbiAgICAgIHRoaXMubWFwLmxheWVycyRcbiAgICBdKS5zdWJzY3JpYmUoKGJ1bmNoOiBbQ29ubmVjdGlvblN0YXRlLCBib29sZWFuLCBMYXllcltdXSkgPT4ge1xuICAgICAgY29uc3Qgb25saW5lID0gYnVuY2hbMF0uY29ubmVjdGlvbjtcbiAgICAgIGNvbnN0IGZvcmNlZE9mZmxpbmUgPSBidW5jaFsxXTtcbiAgICAgIGNvbnN0IGxheWVycyA9IGJ1bmNoWzJdO1xuICAgICAgdGhpcy5oYW5kbGVMYXllcnNPbmxpbmVTdGF0ZShvbmxpbmUsIGZvcmNlZE9mZmxpbmUsIGxheWVycyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZU5vbk9mZmxpbmFibGVMYXllclJlc29sdXRpb24oXG4gICAgb25saW5lOiBib29sZWFuLFxuICAgIGZvcmNlZE9mZmxpbmU6IGJvb2xlYW4sXG4gICAgbGF5ZXI6IExheWVyXG4gICkge1xuICAgIGlmICghb25saW5lIHx8IGZvcmNlZE9mZmxpbmUpIHtcbiAgICAgIGxheWVyLm1heFJlc29sdXRpb24gPSAwO1xuICAgIH0gZWxzZSBpZiAob25saW5lIHx8ICFmb3JjZWRPZmZsaW5lKSB7XG4gICAgICBsYXllci5tYXhSZXNvbHV0aW9uID0gbGF5ZXIub3B0aW9ucy5tYXhSZXNvbHV0aW9uIHx8IEluZmluaXR5O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTGF5ZXJzT25saW5lU3RhdGUoXG4gICAgb25saW5lOiBib29sZWFuLFxuICAgIGZvcmNlZE9mZmxpbmU6IGJvb2xlYW4sXG4gICAgbGF5ZXJzOiBMYXllcltdXG4gICkge1xuICAgIGxheWVycy5mb3JFYWNoKChsYXllcikgPT4ge1xuICAgICAgbGV0IG9mZmxpbmFibGVCeVVybFNvdXJjZU9wdGlvbnM7XG4gICAgICBpZiAobGF5ZXIuaXNJZ29JbnRlcm5hbExheWVyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIGRldGVjdCBpZiBsYXllci9zb3VyY2UgYXJlIG9mZmxpbmFibGUgYnkgdXJsL3BhdGhPZmZsaW5lIHByb3BlcnRpZXNcbiAgICAgIGlmIChcbiAgICAgICAgKGxheWVyLm9wdGlvbnMuc291cmNlT3B0aW9ucyBhcyBPZmZsaW5hYmxlU291cmNlT3B0aW9ucyk/LnBhdGhPZmZsaW5lXG4gICAgICApIHtcbiAgICAgICAgb2ZmbGluYWJsZUJ5VXJsU291cmNlT3B0aW9ucyA9IGxheWVyLm9wdGlvbnMuc291cmNlT3B0aW9ucztcbiAgICAgIH1cbiAgICAgIGlmIChvZmZsaW5hYmxlQnlVcmxTb3VyY2VPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBvZmZsaW5hYmxlQnlVcmxTb3VyY2VPcHRpb25zLnR5cGU7XG4gICAgICAgIGlmICh0eXBlID09PSAnbXZ0Jykge1xuICAgICAgICAgIGxheWVyLm9sLmdldFNvdXJjZSgpLnJlZnJlc2goKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW9ubGluZSB8fCBmb3JjZWRPZmZsaW5lKSB7XG4gICAgICAgICAgaWYgKFsndmVjdG9yJywgJ2NsdXN0ZXInXS5pbmNsdWRlcyh0eXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICAobGF5ZXIub2wuZ2V0U291cmNlKCkgYXMgYW55KS5zZXRVcmwoXG4gICAgICAgICAgICBvZmZsaW5hYmxlQnlVcmxTb3VyY2VPcHRpb25zLnBhdGhPZmZsaW5lXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmICghb25saW5lIHx8ICFmb3JjZWRPZmZsaW5lKSB7XG4gICAgICAgICAgaWYgKFsndmVjdG9yJywgJ2NsdXN0ZXInXS5pbmNsdWRlcyh0eXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICAobGF5ZXIub2wuZ2V0U291cmNlKCkgYXMgYW55KS5zZXRVcmwoXG4gICAgICAgICAgICBvZmZsaW5hYmxlQnlVcmxTb3VyY2VPcHRpb25zLnVybFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVOb25PZmZsaW5hYmxlTGF5ZXJSZXNvbHV0aW9uKG9ubGluZSwgZm9yY2VkT2ZmbGluZSwgbGF5ZXIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBGT1IgQUxMIE5PTiBPRkZMSU5BQkxFIFNPVVJDRSAoaS5lLiBFWENFUFQgUFJFVklPVVMpO1xuICAgICAgICB0aGlzLmhhbmRsZU5vbk9mZmxpbmFibGVMYXllclJlc29sdXRpb24ob25saW5lLCBmb3JjZWRPZmZsaW5lLCBsYXllcik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19