@igo2/geo 1.14.0 → 1.14.2

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 (464) 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/esm2020/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +7 -5
  7. package/esm2020/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +59 -21
  8. package/esm2020/lib/catalog/catalog-browser/catalog-browser.component.mjs +7 -7
  9. package/esm2020/lib/catalog/catalog-browser/catalog-browser.module.mjs +1 -1
  10. package/esm2020/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +2 -2
  11. package/esm2020/lib/catalog/catalog-library/catalog-library-item.component.mjs +2 -2
  12. package/esm2020/lib/catalog/catalog-library/catalog-library.component.mjs +2 -2
  13. package/esm2020/lib/catalog/catalog-library/catalog-library.module.mjs +1 -1
  14. package/esm2020/lib/catalog/catalog.module.mjs +1 -1
  15. package/esm2020/lib/catalog/index.mjs +1 -1
  16. package/esm2020/lib/catalog/shared/catalog.abstract.mjs +1 -1
  17. package/esm2020/lib/catalog/shared/catalog.enum.mjs +1 -1
  18. package/esm2020/lib/catalog/shared/catalog.interface.mjs +1 -1
  19. package/esm2020/lib/catalog/shared/catalog.service.mjs +1 -1
  20. package/esm2020/lib/catalog/shared/index.mjs +1 -1
  21. package/esm2020/lib/datasource/datasource.module.mjs +1 -1
  22. package/esm2020/lib/datasource/index.mjs +1 -1
  23. package/esm2020/lib/datasource/shared/capabilities.service.mjs +1 -1
  24. package/esm2020/lib/datasource/shared/datasource.service.mjs +1 -1
  25. package/esm2020/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
  26. package/esm2020/lib/datasource/shared/datasources/any-datasource.mjs +1 -1
  27. package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.interface.mjs +1 -1
  28. package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +1 -1
  29. package/esm2020/lib/datasource/shared/datasources/carto-datasource.interface.mjs +1 -1
  30. package/esm2020/lib/datasource/shared/datasources/carto-datasource.mjs +1 -1
  31. package/esm2020/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
  32. package/esm2020/lib/datasource/shared/datasources/cluster-datasource.mjs +1 -1
  33. package/esm2020/lib/datasource/shared/datasources/data.service.mjs +1 -1
  34. package/esm2020/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
  35. package/esm2020/lib/datasource/shared/datasources/datasource.mjs +1 -1
  36. package/esm2020/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
  37. package/esm2020/lib/datasource/shared/datasources/feature-datasource.mjs +1 -1
  38. package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
  39. package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +1 -1
  40. package/esm2020/lib/datasource/shared/datasources/index.mjs +1 -1
  41. package/esm2020/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +1 -1
  42. package/esm2020/lib/datasource/shared/datasources/mvt-datasource.mjs +1 -1
  43. package/esm2020/lib/datasource/shared/datasources/osm-datasource.interface.mjs +1 -1
  44. package/esm2020/lib/datasource/shared/datasources/osm-datasource.mjs +1 -1
  45. package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +1 -1
  46. package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +1 -1
  47. package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
  48. package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.mjs +1 -1
  49. package/esm2020/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +1 -1
  50. package/esm2020/lib/datasource/shared/datasources/websocket-datasource.mjs +1 -1
  51. package/esm2020/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
  52. package/esm2020/lib/datasource/shared/datasources/wfs-datasource.mjs +1 -1
  53. package/esm2020/lib/datasource/shared/datasources/wfs.service.mjs +1 -1
  54. package/esm2020/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
  55. package/esm2020/lib/datasource/shared/datasources/wms-datasource.mjs +1 -1
  56. package/esm2020/lib/datasource/shared/datasources/wms-wfs.utils.mjs +1 -1
  57. package/esm2020/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
  58. package/esm2020/lib/datasource/shared/datasources/wmts-datasource.mjs +1 -1
  59. package/esm2020/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
  60. package/esm2020/lib/datasource/shared/datasources/xyz-datasource.mjs +1 -1
  61. package/esm2020/lib/datasource/shared/index.mjs +1 -1
  62. package/esm2020/lib/datasource/shared/options/index.mjs +1 -1
  63. package/esm2020/lib/datasource/shared/options/options-api.interface.mjs +1 -1
  64. package/esm2020/lib/datasource/shared/options/options-api.providers.mjs +1 -1
  65. package/esm2020/lib/datasource/shared/options/options-api.service.mjs +1 -1
  66. package/esm2020/lib/datasource/shared/options/options.service.mjs +1 -1
  67. package/esm2020/lib/datasource/utils/esri-style-generator.mjs +1 -1
  68. package/esm2020/lib/datasource/utils/index.mjs +1 -1
  69. package/esm2020/lib/datasource/utils/tilegrid.mjs +1 -1
  70. package/esm2020/lib/directions/directions-buttons/directions-buttons.component.mjs +2 -2
  71. package/esm2020/lib/directions/directions-buttons/index.mjs +1 -1
  72. package/esm2020/lib/directions/directions-inputs/directions-inputs.component.mjs +2 -2
  73. package/esm2020/lib/directions/directions-inputs/index.mjs +1 -1
  74. package/esm2020/lib/directions/directions-results/directions-results.component.mjs +2 -2
  75. package/esm2020/lib/directions/directions-results/index.mjs +1 -1
  76. package/esm2020/lib/directions/directions-sources/directions-source.interface.mjs +1 -1
  77. package/esm2020/lib/directions/directions-sources/directions-source.mjs +1 -1
  78. package/esm2020/lib/directions/directions-sources/directions-source.provider.mjs +1 -1
  79. package/esm2020/lib/directions/directions-sources/index.mjs +1 -1
  80. package/esm2020/lib/directions/directions-sources/osrm-directions-source.mjs +1 -1
  81. package/esm2020/lib/directions/directions.component.mjs +2 -2
  82. package/esm2020/lib/directions/directions.module.mjs +1 -1
  83. package/esm2020/lib/directions/index.mjs +1 -1
  84. package/esm2020/lib/directions/shared/directions-source.service.mjs +1 -1
  85. package/esm2020/lib/directions/shared/directions.enum.mjs +1 -1
  86. package/esm2020/lib/directions/shared/directions.interface.mjs +1 -1
  87. package/esm2020/lib/directions/shared/directions.service.mjs +1 -1
  88. package/esm2020/lib/directions/shared/directions.utils.mjs +1 -1
  89. package/esm2020/lib/directions/shared/index.mjs +1 -1
  90. package/esm2020/lib/directions/shared/store.mjs +1 -1
  91. package/esm2020/lib/download/download-button/download-button.component.mjs +2 -2
  92. package/esm2020/lib/download/download-button/index.mjs +1 -1
  93. package/esm2020/lib/download/download.module.mjs +1 -1
  94. package/esm2020/lib/download/index.mjs +1 -1
  95. package/esm2020/lib/download/shared/download.interface.mjs +1 -1
  96. package/esm2020/lib/download/shared/download.service.mjs +1 -1
  97. package/esm2020/lib/download/shared/index.mjs +1 -1
  98. package/esm2020/lib/draw/draw/draw-layer-popup.component.mjs +2 -2
  99. package/esm2020/lib/draw/draw/draw-popup.component.mjs +2 -2
  100. package/esm2020/lib/draw/draw/draw-shorcuts.component.mjs +2 -2
  101. package/esm2020/lib/draw/draw/draw.component.mjs +4 -2
  102. package/esm2020/lib/draw/draw/draw.module.mjs +1 -1
  103. package/esm2020/lib/draw/drawingTool.module.mjs +1 -1
  104. package/esm2020/lib/draw/index.mjs +1 -1
  105. package/esm2020/lib/draw/shared/draw-icon.service.mjs +1 -1
  106. package/esm2020/lib/draw/shared/draw-style.service.mjs +1 -1
  107. package/esm2020/lib/draw/shared/draw.enum.mjs +1 -1
  108. package/esm2020/lib/draw/shared/draw.interface.mjs +1 -1
  109. package/esm2020/lib/draw/shared/draw.utils.mjs +1 -1
  110. package/esm2020/lib/draw/shared/index.mjs +1 -1
  111. package/esm2020/lib/feature/feature-details/feature-details.component.mjs +2 -2
  112. package/esm2020/lib/feature/feature-details/feature-details.directive.mjs +1 -1
  113. package/esm2020/lib/feature/feature-details/feature-details.module.mjs +1 -1
  114. package/esm2020/lib/feature/feature-form/feature-form.component.mjs +2 -2
  115. package/esm2020/lib/feature/feature-form/feature-form.module.mjs +1 -1
  116. package/esm2020/lib/feature/feature.module.mjs +1 -1
  117. package/esm2020/lib/feature/index.mjs +1 -1
  118. package/esm2020/lib/feature/shared/feature.enums.mjs +1 -1
  119. package/esm2020/lib/feature/shared/feature.interfaces.mjs +1 -1
  120. package/esm2020/lib/feature/shared/feature.utils.mjs +1 -1
  121. package/esm2020/lib/feature/shared/index.mjs +1 -1
  122. package/esm2020/lib/feature/shared/store.mjs +1 -1
  123. package/esm2020/lib/feature/shared/strategies/in-map-extent.mjs +1 -1
  124. package/esm2020/lib/feature/shared/strategies/in-map-resolution.mjs +1 -1
  125. package/esm2020/lib/feature/shared/strategies/index.mjs +1 -1
  126. package/esm2020/lib/feature/shared/strategies/loading-layer.mjs +1 -1
  127. package/esm2020/lib/feature/shared/strategies/loading.mjs +1 -1
  128. package/esm2020/lib/feature/shared/strategies/selection.mjs +1 -1
  129. package/esm2020/lib/feature/shared/strategies.utils.mjs +1 -1
  130. package/esm2020/lib/filter/filter.module.mjs +1 -1
  131. package/esm2020/lib/filter/index.mjs +1 -1
  132. package/esm2020/lib/filter/ogc-filter-button/index.mjs +1 -1
  133. package/esm2020/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +2 -2
  134. package/esm2020/lib/filter/ogc-filter-form/index.mjs +1 -1
  135. package/esm2020/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +2 -2
  136. package/esm2020/lib/filter/ogc-filter-selection/index.mjs +1 -1
  137. package/esm2020/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +2 -2
  138. package/esm2020/lib/filter/ogc-filter-time/index.mjs +1 -1
  139. package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +2 -2
  140. package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +43 -16
  141. package/esm2020/lib/filter/ogc-filterable-form/index.mjs +1 -1
  142. package/esm2020/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +2 -2
  143. package/esm2020/lib/filter/ogc-filterable-item/index.mjs +1 -1
  144. package/esm2020/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +2 -2
  145. package/esm2020/lib/filter/ogc-filterable-list/index.mjs +1 -1
  146. package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +1 -1
  147. package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +2 -2
  148. package/esm2020/lib/filter/shared/filterable-datasource.pipe.mjs +1 -1
  149. package/esm2020/lib/filter/shared/index.mjs +1 -1
  150. package/esm2020/lib/filter/shared/ogc-filter-time.service.mjs +1 -1
  151. package/esm2020/lib/filter/shared/ogc-filter.enum.mjs +1 -1
  152. package/esm2020/lib/filter/shared/ogc-filter.interface.mjs +1 -1
  153. package/esm2020/lib/filter/shared/ogc-filter.mjs +1 -1
  154. package/esm2020/lib/filter/shared/ogc-filter.service.mjs +1 -1
  155. package/esm2020/lib/filter/shared/spatial-filter.enum.mjs +1 -1
  156. package/esm2020/lib/filter/shared/spatial-filter.interface.mjs +1 -1
  157. package/esm2020/lib/filter/shared/spatial-filter.service.mjs +1 -1
  158. package/esm2020/lib/filter/shared/time-filter.enum.mjs +1 -1
  159. package/esm2020/lib/filter/shared/time-filter.interface.mjs +1 -1
  160. package/esm2020/lib/filter/shared/time-filter.service.mjs +1 -1
  161. package/esm2020/lib/filter/spatial-filter/spatial-filter-item/index.mjs +1 -1
  162. package/esm2020/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +2 -2
  163. package/esm2020/lib/filter/spatial-filter/spatial-filter-list/index.mjs +1 -1
  164. package/esm2020/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +2 -2
  165. package/esm2020/lib/filter/spatial-filter/spatial-filter-type/index.mjs +1 -1
  166. package/esm2020/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +2 -2
  167. package/esm2020/lib/filter/time-filter-button/index.mjs +1 -1
  168. package/esm2020/lib/filter/time-filter-button/time-filter-button.component.mjs +2 -2
  169. package/esm2020/lib/filter/time-filter-form/index.mjs +1 -1
  170. package/esm2020/lib/filter/time-filter-form/time-filter-form.component.mjs +2 -2
  171. package/esm2020/lib/filter/time-filter-item/index.mjs +1 -1
  172. package/esm2020/lib/filter/time-filter-item/time-filter-item.component.mjs +2 -2
  173. package/esm2020/lib/filter/time-filter-list/index.mjs +1 -1
  174. package/esm2020/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +1 -1
  175. package/esm2020/lib/filter/time-filter-list/time-filter-list.component.mjs +2 -2
  176. package/esm2020/lib/geo.module.mjs +1 -1
  177. package/esm2020/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +1 -1
  178. package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +2 -2
  179. package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +1 -1
  180. package/esm2020/lib/geometry/geometry.module.mjs +1 -1
  181. package/esm2020/lib/geometry/index.mjs +1 -1
  182. package/esm2020/lib/geometry/shared/controls/draw.mjs +1 -1
  183. package/esm2020/lib/geometry/shared/controls/index.mjs +1 -1
  184. package/esm2020/lib/geometry/shared/controls/modify.mjs +1 -1
  185. package/esm2020/lib/geometry/shared/controls/slice.mjs +1 -1
  186. package/esm2020/lib/geometry/shared/geometry.errors.mjs +1 -1
  187. package/esm2020/lib/geometry/shared/geometry.interfaces.mjs +1 -1
  188. package/esm2020/lib/geometry/shared/geometry.utils.mjs +1 -1
  189. package/esm2020/lib/geometry/shared/index.mjs +1 -1
  190. package/esm2020/lib/import-export/export-button/export-button.component.mjs +2 -2
  191. package/esm2020/lib/import-export/export-button/index.mjs +1 -1
  192. package/esm2020/lib/import-export/import-export/import-export.component.mjs +2 -2
  193. package/esm2020/lib/import-export/import-export/index.mjs +1 -1
  194. package/esm2020/lib/import-export/import-export.module.mjs +1 -1
  195. package/esm2020/lib/import-export/index.mjs +1 -1
  196. package/esm2020/lib/import-export/shared/drop-geo-file.directive.mjs +1 -1
  197. package/esm2020/lib/import-export/shared/export.errors.mjs +1 -1
  198. package/esm2020/lib/import-export/shared/export.interface.mjs +1 -1
  199. package/esm2020/lib/import-export/shared/export.service.mjs +3 -3
  200. package/esm2020/lib/import-export/shared/export.type.mjs +1 -1
  201. package/esm2020/lib/import-export/shared/export.utils.mjs +1 -1
  202. package/esm2020/lib/import-export/shared/import.errors.mjs +1 -1
  203. package/esm2020/lib/import-export/shared/import.interface.mjs +1 -1
  204. package/esm2020/lib/import-export/shared/import.service.mjs +1 -1
  205. package/esm2020/lib/import-export/shared/import.utils.mjs +1 -1
  206. package/esm2020/lib/import-export/shared/index.mjs +1 -1
  207. package/esm2020/lib/import-export/style-list/index.mjs +1 -1
  208. package/esm2020/lib/import-export/style-list/style-list.interface.mjs +1 -1
  209. package/esm2020/lib/import-export/style-list/style-list.module.mjs +1 -1
  210. package/esm2020/lib/import-export/style-list/style-list.provider.mjs +1 -1
  211. package/esm2020/lib/import-export/style-list/style-list.service.mjs +1 -1
  212. package/esm2020/lib/layer/index.mjs +1 -1
  213. package/esm2020/lib/layer/layer-item/index.mjs +1 -1
  214. package/esm2020/lib/layer/layer-item/layer-item.component.mjs +2 -2
  215. package/esm2020/lib/layer/layer-legend/index.mjs +1 -1
  216. package/esm2020/lib/layer/layer-legend/layer-legend.component.mjs +2 -2
  217. package/esm2020/lib/layer/layer-legend-item/index.mjs +1 -1
  218. package/esm2020/lib/layer/layer-legend-item/layer-legend-item.component.mjs +2 -2
  219. package/esm2020/lib/layer/layer-legend-list/index.mjs +1 -1
  220. package/esm2020/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +1 -1
  221. package/esm2020/lib/layer/layer-legend-list/layer-legend-list.component.mjs +2 -2
  222. package/esm2020/lib/layer/layer-list/index.mjs +1 -1
  223. package/esm2020/lib/layer/layer-list/layer-list-binding.directive.mjs +1 -1
  224. package/esm2020/lib/layer/layer-list/layer-list.component.mjs +2 -2
  225. package/esm2020/lib/layer/layer-list/layer-list.enum.mjs +1 -1
  226. package/esm2020/lib/layer/layer-list-tool/index.mjs +1 -1
  227. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.component.mjs +2 -2
  228. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.enum.mjs +1 -1
  229. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +1 -1
  230. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.service.mjs +1 -1
  231. package/esm2020/lib/layer/layer.module.mjs +1 -1
  232. package/esm2020/lib/layer/shared/clusterParam.mjs +1 -1
  233. package/esm2020/lib/layer/shared/index.mjs +1 -1
  234. package/esm2020/lib/layer/shared/layer.enums.mjs +1 -1
  235. package/esm2020/lib/layer/shared/layer.service.mjs +1 -1
  236. package/esm2020/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
  237. package/esm2020/lib/layer/shared/layers/any-layer.mjs +1 -1
  238. package/esm2020/lib/layer/shared/layers/image-layer.interface.mjs +1 -1
  239. package/esm2020/lib/layer/shared/layers/image-layer.mjs +1 -1
  240. package/esm2020/lib/layer/shared/layers/index.mjs +1 -1
  241. package/esm2020/lib/layer/shared/layers/layer.interface.mjs +1 -1
  242. package/esm2020/lib/layer/shared/layers/layer.mjs +1 -1
  243. package/esm2020/lib/layer/shared/layers/tile-layer.interface.mjs +1 -1
  244. package/esm2020/lib/layer/shared/layers/tile-layer.mjs +1 -1
  245. package/esm2020/lib/layer/shared/layers/vector-layer.interface.mjs +1 -1
  246. package/esm2020/lib/layer/shared/layers/vector-layer.mjs +1 -1
  247. package/esm2020/lib/layer/shared/layers/vectortile-layer.interface.mjs +1 -1
  248. package/esm2020/lib/layer/shared/layers/vectortile-layer.mjs +1 -1
  249. package/esm2020/lib/layer/shared/style.service.mjs +1 -1
  250. package/esm2020/lib/layer/shared/vector-style.interface.mjs +1 -1
  251. package/esm2020/lib/layer/style-modal/index.mjs +1 -1
  252. package/esm2020/lib/layer/style-modal/style-modal.component.mjs +2 -2
  253. package/esm2020/lib/layer/track-feature-button/index.mjs +1 -1
  254. package/esm2020/lib/layer/track-feature-button/track-feature-button.component.mjs +2 -2
  255. package/esm2020/lib/layer/utils/image-watcher.mjs +1 -1
  256. package/esm2020/lib/layer/utils/index.mjs +1 -1
  257. package/esm2020/lib/layer/utils/layer.utils.mjs +1 -1
  258. package/esm2020/lib/layer/utils/outputLegend.mjs +1 -1
  259. package/esm2020/lib/layer/utils/tile-watcher.mjs +1 -1
  260. package/esm2020/lib/layer/utils/vector-watcher.mjs +1 -1
  261. package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +1 -1
  262. package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +2 -2
  263. package/esm2020/lib/map/baselayers-switcher/index.mjs +1 -1
  264. package/esm2020/lib/map/baselayers-switcher/mini-basemap.component.mjs +17 -8
  265. package/esm2020/lib/map/geolocate-button/geolocate-button.component.mjs +2 -2
  266. package/esm2020/lib/map/geolocate-button/index.mjs +1 -1
  267. package/esm2020/lib/map/index.mjs +1 -1
  268. package/esm2020/lib/map/info-section/index.mjs +1 -1
  269. package/esm2020/lib/map/info-section/info-section.component.mjs +2 -2
  270. package/esm2020/lib/map/map-browser/index.mjs +1 -1
  271. package/esm2020/lib/map/map-browser/map-browser.component.mjs +2 -2
  272. package/esm2020/lib/map/map-center/index.mjs +1 -1
  273. package/esm2020/lib/map/map-center/map-center.component.mjs +2 -2
  274. package/esm2020/lib/map/map.module.mjs +1 -1
  275. package/esm2020/lib/map/menu-button/index.mjs +1 -1
  276. package/esm2020/lib/map/menu-button/menu-button.component.mjs +2 -2
  277. package/esm2020/lib/map/offline-button/index.mjs +1 -1
  278. package/esm2020/lib/map/offline-button/offline-button.component.mjs +2 -2
  279. package/esm2020/lib/map/rotation-button/index.mjs +1 -1
  280. package/esm2020/lib/map/rotation-button/rotation-button.component.mjs +2 -2
  281. package/esm2020/lib/map/shared/controllers/controller.mjs +1 -1
  282. package/esm2020/lib/map/shared/controllers/geolocation.mjs +1 -1
  283. package/esm2020/lib/map/shared/controllers/index.mjs +1 -1
  284. package/esm2020/lib/map/shared/controllers/view.mjs +1 -1
  285. package/esm2020/lib/map/shared/hover-feature.directive.mjs +1 -1
  286. package/esm2020/lib/map/shared/index.mjs +1 -1
  287. package/esm2020/lib/map/shared/linkedLayers.utils.mjs +3 -3
  288. package/esm2020/lib/map/shared/map-pointer-position.directive.mjs +1 -1
  289. package/esm2020/lib/map/shared/map.enums.mjs +1 -1
  290. package/esm2020/lib/map/shared/map.interface.mjs +1 -1
  291. package/esm2020/lib/map/shared/map.mjs +1 -1
  292. package/esm2020/lib/map/shared/map.service.mjs +1 -1
  293. package/esm2020/lib/map/shared/map.utils.mjs +2 -1
  294. package/esm2020/lib/map/shared/mapOffline.directive.mjs +7 -7
  295. package/esm2020/lib/map/shared/projection.interfaces.mjs +1 -1
  296. package/esm2020/lib/map/shared/projection.service.mjs +1 -1
  297. package/esm2020/lib/map/shared/projection.utils.mjs +1 -1
  298. package/esm2020/lib/map/swipe-control/index.mjs +1 -1
  299. package/esm2020/lib/map/swipe-control/swipe-control.component.mjs +2 -2
  300. package/esm2020/lib/map/utils/layer-watcher.mjs +1 -1
  301. package/esm2020/lib/map/wake-lock-button/index.mjs +1 -1
  302. package/esm2020/lib/map/wake-lock-button/wake-lock-button.component.mjs +2 -2
  303. package/esm2020/lib/map/zoom-button/index.mjs +1 -1
  304. package/esm2020/lib/map/zoom-button/zoom-button.component.mjs +2 -2
  305. package/esm2020/lib/measure/index.mjs +1 -1
  306. package/esm2020/lib/measure/measure.module.mjs +1 -1
  307. package/esm2020/lib/measure/measurer/measure-format.pipe.mjs +1 -1
  308. package/esm2020/lib/measure/measurer/measurer-dialog.component.mjs +2 -2
  309. package/esm2020/lib/measure/measurer/measurer-item.component.mjs +2 -2
  310. package/esm2020/lib/measure/measurer/measurer.component.mjs +2 -2
  311. package/esm2020/lib/measure/measurer/measurer.module.mjs +1 -1
  312. package/esm2020/lib/measure/shared/index.mjs +1 -1
  313. package/esm2020/lib/measure/shared/measure.enum.mjs +1 -1
  314. package/esm2020/lib/measure/shared/measure.interfaces.mjs +1 -1
  315. package/esm2020/lib/measure/shared/measure.utils.mjs +1 -1
  316. package/esm2020/lib/metadata/index.mjs +1 -1
  317. package/esm2020/lib/metadata/metadata-button/index.mjs +1 -1
  318. package/esm2020/lib/metadata/metadata-button/metadata-button.component.mjs +3 -3
  319. package/esm2020/lib/metadata/metadata.module.mjs +1 -1
  320. package/esm2020/lib/metadata/shared/index.mjs +1 -1
  321. package/esm2020/lib/metadata/shared/metadata.interface.mjs +1 -1
  322. package/esm2020/lib/metadata/shared/metadata.service.mjs +1 -1
  323. package/esm2020/lib/offline/geoDB/configFileToGeoDB.service.mjs +1 -1
  324. package/esm2020/lib/offline/geoDB/geoDB.enums.mjs +1 -1
  325. package/esm2020/lib/offline/geoDB/geoDB.interface.mjs +1 -1
  326. package/esm2020/lib/offline/geoDB/geoDB.service.mjs +1 -1
  327. package/esm2020/lib/offline/geoDB/index.mjs +1 -1
  328. package/esm2020/lib/offline/index.mjs +1 -1
  329. package/esm2020/lib/offline/shared/geo-network.service.mjs +1 -1
  330. package/esm2020/lib/offline/shared/index.mjs +1 -1
  331. package/esm2020/lib/overlay/index.mjs +1 -1
  332. package/esm2020/lib/overlay/overlay.module.mjs +1 -1
  333. package/esm2020/lib/overlay/shared/index.mjs +1 -1
  334. package/esm2020/lib/overlay/shared/overlay-marker-style.utils.mjs +1 -1
  335. package/esm2020/lib/overlay/shared/overlay.directive.mjs +1 -1
  336. package/esm2020/lib/overlay/shared/overlay.enum.mjs +1 -1
  337. package/esm2020/lib/overlay/shared/overlay.mjs +1 -1
  338. package/esm2020/lib/overlay/shared/overlay.service.mjs +1 -1
  339. package/esm2020/lib/overlay/shared/overlay.utils.mjs +1 -1
  340. package/esm2020/lib/print/index.mjs +1 -1
  341. package/esm2020/lib/print/print/print.component.mjs +16 -13
  342. package/esm2020/lib/print/print-form/index.mjs +1 -1
  343. package/esm2020/lib/print/print-form/print-form.component.mjs +46 -23
  344. package/esm2020/lib/print/print.module.mjs +1 -1
  345. package/esm2020/lib/print/shared/geopdf.mjs +3 -3
  346. package/esm2020/lib/print/shared/index.mjs +1 -1
  347. package/esm2020/lib/print/shared/print.interface.mjs +1 -1
  348. package/esm2020/lib/print/shared/print.service.mjs +96 -23
  349. package/esm2020/lib/print/shared/print.type.mjs +1 -1
  350. package/esm2020/lib/query/index.mjs +1 -1
  351. package/esm2020/lib/query/query.module.mjs +1 -1
  352. package/esm2020/lib/query/shared/index.mjs +1 -1
  353. package/esm2020/lib/query/shared/query-search-source.mjs +1 -1
  354. package/esm2020/lib/query/shared/query-search-source.providers.mjs +1 -1
  355. package/esm2020/lib/query/shared/query.directive.mjs +1 -1
  356. package/esm2020/lib/query/shared/query.enums.mjs +1 -1
  357. package/esm2020/lib/query/shared/query.interfaces.mjs +1 -1
  358. package/esm2020/lib/query/shared/query.service.mjs +144 -27
  359. package/esm2020/lib/query/shared/query.utils.mjs +1 -1
  360. package/esm2020/lib/search/index.mjs +1 -1
  361. package/esm2020/lib/search/search-bar/search-bar.component.mjs +54 -33
  362. package/esm2020/lib/search/search-bar/search-bar.module.mjs +1 -1
  363. package/esm2020/lib/search/search-bar/search-url-param.directive.mjs +1 -1
  364. package/esm2020/lib/search/search-results/save-feature-dialog.component.mjs +118 -0
  365. package/esm2020/lib/search/search-results/search-results-add-button.component.mjs +207 -29
  366. package/esm2020/lib/search/search-results/search-results-item.component.mjs +3 -3
  367. package/esm2020/lib/search/search-results/search-results.component.mjs +23 -14
  368. package/esm2020/lib/search/search-results/search-results.module.mjs +32 -5
  369. package/esm2020/lib/search/search-selector/search-selector.component.mjs +2 -2
  370. package/esm2020/lib/search/search-selector/search-selector.module.mjs +1 -1
  371. package/esm2020/lib/search/search-settings/search-settings.component.mjs +33 -9
  372. package/esm2020/lib/search/search-settings/search-settings.module.mjs +1 -1
  373. package/esm2020/lib/search/search.module.mjs +1 -1
  374. package/esm2020/lib/search/shared/index.mjs +1 -1
  375. package/esm2020/lib/search/shared/search-pointer-summary.directive.mjs +1 -1
  376. package/esm2020/lib/search/shared/search-source-service.providers.mjs +1 -1
  377. package/esm2020/lib/search/shared/search-source.service.mjs +1 -1
  378. package/esm2020/lib/search/shared/search.enums.mjs +1 -1
  379. package/esm2020/lib/search/shared/search.interfaces.mjs +1 -1
  380. package/esm2020/lib/search/shared/search.service.mjs +10 -7
  381. package/esm2020/lib/search/shared/search.utils.mjs +2 -1
  382. package/esm2020/lib/search/shared/sources/coordinates.interfaces.mjs +1 -1
  383. package/esm2020/lib/search/shared/sources/coordinates.mjs +17 -11
  384. package/esm2020/lib/search/shared/sources/coordinates.providers.mjs +1 -1
  385. package/esm2020/lib/search/shared/sources/icherche.interfaces.mjs +1 -1
  386. package/esm2020/lib/search/shared/sources/icherche.mjs +76 -64
  387. package/esm2020/lib/search/shared/sources/icherche.providers.mjs +1 -1
  388. package/esm2020/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
  389. package/esm2020/lib/search/shared/sources/ilayer.mjs +4 -4
  390. package/esm2020/lib/search/shared/sources/ilayer.providers.mjs +1 -1
  391. package/esm2020/lib/search/shared/sources/index.mjs +1 -1
  392. package/esm2020/lib/search/shared/sources/nominatim.interfaces.mjs +1 -1
  393. package/esm2020/lib/search/shared/sources/nominatim.mjs +2 -2
  394. package/esm2020/lib/search/shared/sources/nominatim.providers.mjs +1 -1
  395. package/esm2020/lib/search/shared/sources/source.interfaces.mjs +1 -1
  396. package/esm2020/lib/search/shared/sources/source.mjs +1 -1
  397. package/esm2020/lib/search/shared/sources/storedqueries.interfaces.mjs +1 -1
  398. package/esm2020/lib/search/shared/sources/storedqueries.mjs +1 -1
  399. package/esm2020/lib/search/shared/sources/storedqueries.providers.mjs +1 -1
  400. package/esm2020/lib/toast/index.mjs +1 -1
  401. package/esm2020/lib/toast/toast.component.mjs +2 -2
  402. package/esm2020/lib/toast/toast.module.mjs +1 -1
  403. package/esm2020/lib/utils/commonVectorStyle.interface.mjs +1 -1
  404. package/esm2020/lib/utils/commonVectorStyle.mjs +1 -1
  405. package/esm2020/lib/utils/googleLinks.mjs +1 -1
  406. package/esm2020/lib/utils/id-generator.mjs +1 -1
  407. package/esm2020/lib/utils/index.mjs +1 -1
  408. package/esm2020/lib/utils/osmLinks.mjs +1 -1
  409. package/esm2020/lib/wkt/index.mjs +1 -1
  410. package/esm2020/lib/wkt/shared/index.mjs +1 -1
  411. package/esm2020/lib/wkt/shared/wkt.service.mjs +15 -15
  412. package/esm2020/lib/wkt/wkt.module.mjs +1 -1
  413. package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +2 -2
  414. package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +1 -1
  415. package/esm2020/lib/workspace/confirmation-popup/index.mjs +1 -1
  416. package/esm2020/lib/workspace/index.mjs +1 -1
  417. package/esm2020/lib/workspace/shared/edition-workspace.mjs +1 -1
  418. package/esm2020/lib/workspace/shared/edition-workspace.service.mjs +20 -9
  419. package/esm2020/lib/workspace/shared/feature-workspace.mjs +1 -1
  420. package/esm2020/lib/workspace/shared/feature-workspace.service.mjs +1 -1
  421. package/esm2020/lib/workspace/shared/index.mjs +1 -1
  422. package/esm2020/lib/workspace/shared/wfs-workspace.mjs +1 -1
  423. package/esm2020/lib/workspace/shared/wfs-workspace.service.mjs +1 -1
  424. package/esm2020/lib/workspace/shared/wms-workspace.service.mjs +1 -1
  425. package/esm2020/lib/workspace/shared/workspace.utils.mjs +1 -1
  426. package/esm2020/lib/workspace/widgets/index.mjs +1 -1
  427. package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +2 -2
  428. package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +1 -1
  429. package/esm2020/lib/workspace/widgets/widgets.mjs +1 -1
  430. package/esm2020/lib/workspace/workspace-selector/workspace-selector.directive.mjs +1 -1
  431. package/esm2020/lib/workspace/workspace-selector/workspace-selector.module.mjs +1 -1
  432. package/esm2020/lib/workspace/workspace-updator/workspace-updator.directive.mjs +1 -1
  433. package/esm2020/lib/workspace/workspace-updator/workspace-updator.module.mjs +1 -1
  434. package/esm2020/lib/workspace/workspace.module.mjs +1 -1
  435. package/esm2020/public_api.mjs +1 -1
  436. package/fesm2015/igo2-geo.mjs +1253 -559
  437. package/fesm2015/igo2-geo.mjs.map +1 -1
  438. package/fesm2020/igo2-geo.mjs +1228 -558
  439. package/fesm2020/igo2-geo.mjs.map +1 -1
  440. package/lib/catalog/catalog-browser/catalog-browser-group.component.d.ts +3 -1
  441. package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +9 -2
  442. package/lib/datasource/shared/datasources/datasource.interface.d.ts +1 -0
  443. package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +1 -0
  444. package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +3 -1
  445. package/lib/import-export/shared/export.service.d.ts +1 -1
  446. package/lib/map/baselayers-switcher/mini-basemap.component.d.ts +7 -4
  447. package/lib/map/shared/map.utils.d.ts +1 -0
  448. package/lib/print/shared/print.service.d.ts +10 -1
  449. package/lib/query/shared/query.interfaces.d.ts +8 -1
  450. package/lib/query/shared/query.service.d.ts +5 -3
  451. package/lib/search/search-bar/search-bar.component.d.ts +19 -9
  452. package/lib/search/search-results/save-feature-dialog.component.d.ts +32 -0
  453. package/lib/search/search-results/search-results-add-button.component.d.ts +20 -2
  454. package/lib/search/search-results/search-results-item.component.d.ts +0 -1
  455. package/lib/search/search-results/search-results.component.d.ts +4 -1
  456. package/lib/search/search-results/search-results.module.d.ts +17 -10
  457. package/lib/search/search-settings/search-settings.component.d.ts +7 -1
  458. package/lib/search/shared/search.service.d.ts +3 -1
  459. package/lib/search/shared/sources/coordinates.d.ts +1 -1
  460. package/lib/search/shared/sources/source.d.ts +1 -1
  461. package/lib/workspace/shared/edition-workspace.service.d.ts +4 -0
  462. package/ngcc.config.js +3 -3
  463. package/package.json +4 -4
  464. package/style/geo.theming.scss +12 -12
@@ -500,4 +500,4 @@ export function hoverFeatureMarker(feature, resolution) {
500
500
  }
501
501
  return olStyle;
502
502
  }
503
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG92ZXItZmVhdHVyZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL2hvdmVyLWZlYXR1cmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUVMLElBQUksRUFFSixZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQ25CO0FBQ0gsT0FBTyxpQkFBaUIsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLGFBQWEsTUFBTSxpQkFBaUIsQ0FBQztBQUc1QyxPQUFPLGtCQUFrQixNQUFNLHNCQUFzQixDQUFDO0FBU3RELE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLEtBQUssT0FBTyxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUVsQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxXQUFXLEVBQTBCLE1BQU0sMkJBQTJCLENBQUM7QUFDaEYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFHbkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLGFBQWEsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7QUFHOUM7Ozs7O0dBS0c7QUFJSCxNQUFNLE9BQU8scUJBQXFCO0lBZ0RoQyxZQUNrQixTQUE4QixFQUN0QyxZ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QUFPLENBQUMsTUFBTSxDQUFDO3dCQUN6QixLQUFLLEVBQUUsTUFBTTt3QkFDYixLQUFLLEVBQUUsQ0FBQztxQkFDVCxDQUFDO2lCQUNILENBQUM7YUFDSCxDQUFDLENBQUMsQ0FBQztZQUNKLE1BQU07UUFDUjtZQUNFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUM3QixNQUFNLEVBQUUsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDO29CQUN6QixLQUFLLEVBQUUsT0FBTztvQkFDZCxLQUFLLEVBQUUsQ0FBQztpQkFDVCxDQUFDO2FBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDN0IsTUFBTSxFQUFFLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQztvQkFDekIsS0FBSyxFQUFFLE1BQU07b0JBQ2IsS0FBSyxFQUFFLENBQUM7aUJBQ1QsQ0FBQzthQUNILENBQUMsQ0FBQyxDQUFDO0tBQ1A7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUVqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBEaXJlY3RpdmUsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIFNlbGYsXHJcbiAgT25Jbml0LFxyXG4gIEhvc3RMaXN0ZW5lclxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbiAgO1xyXG5pbXBvcnQgb2xMYXllclZlY3RvclRpbGUgZnJvbSAnb2wvbGF5ZXIvVmVjdG9yVGlsZSc7XHJcbmltcG9ydCBvbExheWVyVmVjdG9yIGZyb20gJ29sL2xheWVyL1ZlY3Rvcic7XHJcblxyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IG9sVmVjdG9yVGlsZVNvdXJjZSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yVGlsZSc7XHJcblxyXG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT2xNYXBCcm93c2VyRXZlbnQgfSBmcm9tICdvbC9NYXBCcm93c2VyRXZlbnQnO1xyXG5cclxuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9tYXAnO1xyXG5pbXBvcnQgeyBNYXBCcm93c2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbWFwL21hcC1icm93c2VyL21hcC1icm93c2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tICcuLi8uLi9mZWF0dXJlL3NoYXJlZC9mZWF0dXJlLmludGVyZmFjZXMnO1xyXG5cclxuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE9sR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcclxuaW1wb3J0IE9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcclxuaW1wb3J0ICogYXMgT2xTdHlsZSBmcm9tICdvbC9zdHlsZSc7XHJcbmltcG9ydCAqIGFzIE9sR2VvbSBmcm9tICdvbC9nZW9tJztcclxuXHJcbmltcG9ydCB7IEVudGl0eVN0b3JlIH0gZnJvbSAnQGlnbzIvY29tbW9uJztcclxuaW1wb3J0IHsgRmVhdHVyZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy9mZWF0dXJlLWRhdGFzb3VyY2UnO1xyXG5pbXBvcnQgeyBWZWN0b3JMYXllciwgTGF5ZXIsIFZlY3RvclRpbGVMYXllciB9IGZyb20gJy4uLy4uL2xheWVyL3NoYXJlZC9sYXllcnMnO1xyXG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyB0cnlCaW5kU3RvcmVMYXllciB9IGZyb20gJy4uLy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUudXRpbHMnO1xyXG5pbXBvcnQgeyBGZWF0dXJlU3RvcmUgfSBmcm9tICcuLi8uLi9mZWF0dXJlL3NoYXJlZC9zdG9yZSc7XHJcbmltcG9ydCB7IEZlYXR1cmVNb3Rpb24gfSBmcm9tICcuLi8uLi9mZWF0dXJlL3NoYXJlZC9mZWF0dXJlLmVudW1zJztcclxuaW1wb3J0IHsgTWVkaWFTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcbmltcG9ydCB7IFN0eWxlU2VydmljZSB9IGZyb20gJy4uLy4uL2xheWVyL3NoYXJlZC9zdHlsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgdW5CeUtleSB9IGZyb20gJ29sL09ic2VydmFibGUnO1xyXG5pbXBvcnQgUmVuZGVyRmVhdHVyZSBmcm9tICdvbC9yZW5kZXIvRmVhdHVyZSc7XHJcbmltcG9ydCB7IFN0eWxlQnlBdHRyaWJ1dGUgfSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQvdmVjdG9yLXN0eWxlLmludGVyZmFjZSc7XHJcblxyXG4vKipcclxuICogVGhpcyBkaXJlY3RpdmUgbWFrZXMgdGhlIG1vdXNlIGNvb3JkaW5hdGUgdHJpZ2dlciBhIHJldmVyc2Ugc2VhcmNoIG9uIGF2YWlsYWJsZSBzZWFyY2ggc291cmNlcy5cclxuICogVGhlIHNlYXJjaCByZXN1bHRzIGFyZSBwbGFjZWQgaW50byBhIGxhYmVsLCBvbiBhIGNyb3NzIGljb24sIHJlcHJlc2VudGluZyB0aGUgbW91c2UgY29vcmRpbmF0ZS5cclxuICogQnkgZGVmYXVsdCwgbm8gc2VhcmNoIHNvdXJjZXMuIENvbmZpZyBpbiBjb25maWcgZmlsZSBtdXN0IGJlIGRlZmluZWQuXHJcbiAqIHRoZSBsYXllciBsZXZlbC5cclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2lnb0hvdmVyRmVhdHVyZV0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIb3ZlckZlYXR1cmVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIHB1YmxpYyBzdG9yZTogRmVhdHVyZVN0b3JlPEZlYXR1cmU+O1xyXG4gIHByaXZhdGUgcG9pbnRlckhvdmVyRmVhdHVyZVN0b3JlOiBFbnRpdHlTdG9yZTxPbEZlYXR1cmU8T2xHZW9tZXRyeT4+ID0gbmV3IEVudGl0eVN0b3JlPE9sRmVhdHVyZTxPbEdlb21ldHJ5Pj4oW10pO1xyXG4gIHByaXZhdGUgbGFzdFRpbWVvdXRSZXF1ZXN0O1xyXG4gIHByaXZhdGUgc3RvcmUkJDogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgbGF5ZXJzJCQ6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgcHJpdmF0ZSBzZWxlY3Rpb25MYXllcjogb2xMYXllclZlY3RvclRpbGU7XHJcbiAgcHJpdmF0ZSBzZWxlY3Rpb25NVlQgPSB7fTtcclxuICBwcml2YXRlIG12dFN0eWxlT3B0aW9uczogU3R5bGVCeUF0dHJpYnV0ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogTGlzdGVuZXIgdG8gdGhlIHBvaW50ZXIgbW92ZSBldmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgcG9pbnRlck1vdmVMaXN0ZW5lcjtcclxuXHJcbiAgcHJpdmF0ZSBzaW5nbGVDbGlja01hcExpc3RlbmVyO1xyXG5cclxuICBwcml2YXRlIGhvdmVyRmVhdHVyZUlkOiBzdHJpbmcgPSAnaG92ZXJGZWF0dXJlSWQnO1xyXG4gIC8qKlxyXG4gICAqIFRoZSBkZWxheSB3aGVyZSB0aGUgbW91c2UgbXVzdCBiZSBtb3Rpb25sZXNzIGJlZm9yZSB0cmlnZ2VyIHRoZSByZXZlcnNlIHNlYXJjaFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGlnb0hvdmVyRmVhdHVyZURlbGF5OiBudW1iZXIgPSAxMDAwO1xyXG5cclxuICAvKipcclxuICAgKiBJZiB0aGUgdXNlciBoYXMgZW5hYmxlZCBvciBub3QgdGhlIGRpcmVjdGl2ZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGlnb0hvdmVyRmVhdHVyZUVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2VvdXQnKVxyXG4gIG1vdXNlb3V0KCkge1xyXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMubGFzdFRpbWVvdXRSZXF1ZXN0KTtcclxuICAgIHRoaXMuY2xlYXJMYXllcigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSUdPIG1hcFxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIGdldCBtYXAoKTogSWdvTWFwIHtcclxuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudC5tYXA7XHJcbiAgfVxyXG5cclxuICBnZXQgbWFwUHJvamVjdGlvbigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICh0aGlzLmNvbXBvbmVudC5tYXAgYXMgSWdvTWFwKS5wcm9qZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBAU2VsZigpIHByaXZhdGUgY29tcG9uZW50OiBNYXBCcm93c2VyQ29tcG9uZW50LFxyXG4gICAgcHJpdmF0ZSBtZWRpYVNlcnZpY2U6IE1lZGlhU2VydmljZSxcclxuICAgIHByaXZhdGUgc3R5bGVTZXJ2aWNlOiBTdHlsZVNlcnZpY2UsXHJcbiAgKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RhcnQgbGlzdGVuaW5nIHRvIHBvaW50ZXJtb3ZlIGFuZCByZXZlcnNlIHNlYXJjaCByZXN1bHRzLlxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5saXN0ZW5Ub01hcFBvaW50ZXJNb3ZlKCk7XHJcbiAgICB0aGlzLnN1YnNjcmliZVRvUG9pbnRlclN0b3JlKCk7XHJcbiAgICB0aGlzLmxpc3RlblRvTWFwQ2xpY2soKTtcclxuXHJcbiAgICB0aGlzLm1hcC5zdGF0dXMkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5zdG9yZSA9IG5ldyBGZWF0dXJlU3RvcmU8RmVhdHVyZT4oW10sIHsgbWFwOiB0aGlzLm1hcCB9KTtcclxuICAgICAgdGhpcy5pbml0U3RvcmUoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFRvIGhhbmRsZSBjb250ZXh0IGNoYW5nZSB3aXRob3V0IHVzaW5nIHRoZSBjb250ZXh0U2VydmljZS5cclxuICAgIHRoaXMubGF5ZXJzJCQgPSB0aGlzLm1hcC5sYXllcnMkLnN1YnNjcmliZSgobGF5ZXJzOiBMYXllcltdKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnN0b3JlICYmICFsYXllcnMuZmluZChsID0+IGwuaWQgPT09ICdob3ZlckZlYXR1cmVJZCcpKSB7XHJcbiAgICAgICAgdGhpcy5pbml0U3RvcmUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSB0aGUgcG9pbnRlciBwb3NpdGlvbiBzdG9yZVxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgaW5pdFN0b3JlKCkge1xyXG4gICAgY29uc3Qgc3RvcmUgPSB0aGlzLnN0b3JlO1xyXG5cclxuICAgIGNvbnN0IGxheWVyID0gbmV3IFZlY3RvckxheWVyKHtcclxuICAgICAgaXNJZ29JbnRlcm5hbExheWVyOiB0cnVlLFxyXG4gICAgICBpZDogJ2hvdmVyRmVhdHVyZUlkJyxcclxuICAgICAgdGl0bGU6ICdob3ZlckZlYXR1cmUnLFxyXG4gICAgICB6SW5kZXg6IDkwMCxcclxuICAgICAgc291cmNlOiBuZXcgRmVhdHVyZURhdGFTb3VyY2UoKSxcclxuICAgICAgc2hvd0luTGF5ZXJMaXN0OiBmYWxzZSxcclxuICAgICAgZXhwb3J0YWJsZTogZmFsc2UsXHJcbiAgICAgIGJyb3dzYWJsZTogZmFsc2UsXHJcbiAgICAgIHN0eWxlOiBob3ZlckZlYXR1cmVNYXJrZXJcclxuICAgIH0pO1xyXG4gICAgdHJ5QmluZFN0b3JlTGF5ZXIoc3RvcmUsIGxheWVyKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGlvbkxheWVyID0gbmV3IG9sTGF5ZXJWZWN0b3JUaWxlKHtcclxuICAgICAgbWFwOiB0aGlzLm1hcC5vbCxcclxuICAgICAgekluZGV4OiA5MDEsXHJcbiAgICAgIHJlbmRlck1vZGU6IFwidmVjdG9yXCIsXHJcbiAgICAgIGRlY2x1dHRlcjogdHJ1ZSxcclxuICAgICAgc291cmNlOiBuZXcgb2xWZWN0b3JUaWxlU291cmNlKHtwcm9qZWN0aW9uOiB0aGlzLm1hcC5wcm9qZWN0aW9ufSksXHJcbiAgICAgIHN0eWxlOiAoZmVhdHVyZSwgcmVzb2x1dGlvbikgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLm12dFN0eWxlT3B0aW9ucyAmJiBmZWF0dXJlLmdldElkKCkgaW4gdGhpcy5zZWxlY3Rpb25NVlQpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUhvdmVyU3R5bGUoZmVhdHVyZSwgdGhpcy5tdnRTdHlsZU9wdGlvbnMsIHJlc29sdXRpb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVIb3ZlclN0eWxlKGZlYXR1cmU6IFJlbmRlckZlYXR1cmUgfCBPbEZlYXR1cmU8T2xHZW9tZXRyeT4sIGhvdmVyU3R5bGU6IFN0eWxlQnlBdHRyaWJ1dGUsIHJlc29sdXRpb246IG51bWJlcikge1xyXG4gICAgY29uc3QgbG9jYWxIb3ZlclN0eWxlID0geyAuLi5ob3ZlclN0eWxlIH07XHJcbiAgICBsZXQgbGFiZWwgPSBob3ZlclN0eWxlLmxhYmVsID8gaG92ZXJTdHlsZS5sYWJlbC5hdHRyaWJ1dGUgOiB1bmRlZmluZWQ7XHJcbiAgICBsZXQgaGFzTGFiZWxTdHlsZSA9IGhvdmVyU3R5bGUubGFiZWw/LnN0eWxlID8gdHJ1ZSA6IGZhbHNlO1xyXG5cclxuICAgIGlmICghZmVhdHVyZS5nZXQoJ19pc0xhYmVsJykpIHtcclxuICAgICAgbG9jYWxIb3ZlclN0eWxlLmxhYmVsID0gdW5kZWZpbmVkO1xyXG4gICAgICBoYXNMYWJlbFN0eWxlID0gZmFsc2U7XHJcbiAgICAgIGxhYmVsID0gdW5kZWZpbmVkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gY2xlYXIgdGhlIHN0eWxlIGZvciBsYWJlbC4uLi5cclxuICAgICAgY29uc3Qgc2l6ZSA9IGxvY2FsSG92ZXJTdHlsZS5kYXRhID8gbG9jYWxIb3ZlclN0eWxlLmRhdGEubGVuZ3RoIDogMDtcclxuICAgICAgY29uc3QgcmFkaXVzID0gW107XHJcbiAgICAgIGNvbnN0IHN0cm9rZSA9IFtdO1xyXG4gICAgICBjb25zdCB3aWR0aCA9IFtdO1xyXG4gICAgICBjb25zdCBmaWxsID0gW107XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XHJcbiAgICAgICAgcmFkaXVzLnB1c2goMCk7XHJcbiAgICAgICAgc3Ryb2tlLnB1c2goJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMCknKTtcclxuICAgICAgICB3aWR0aC5wdXNoKDApO1xyXG4gICAgICAgIGZpbGwucHVzaCgncmdiYSgyNTUsIDI1NSwgMjU1LCAwKScpO1xyXG4gICAgICB9XHJcbiAgICAgIGxvY2FsSG92ZXJTdHlsZS5yYWRpdXMgPSByYWRpdXM7XHJcbiAgICAgIGxvY2FsSG92ZXJTdHlsZS5zdHJva2UgPSBzdHJva2U7XHJcbiAgICAgIGxvY2FsSG92ZXJTdHlsZS53aWR0aCA9IHdpZHRoO1xyXG4gICAgICBsb2NhbEhvdmVyU3R5bGUuZmlsbCA9IGZpbGw7XHJcbiAgICB9XHJcbiAgICBpZiAoIWhhc0xhYmVsU3R5bGUgJiYgbGFiZWwpIHtcclxuICAgICAgbG9jYWxIb3ZlclN0eWxlLmxhYmVsLnN0eWxlID1cclxuICAgICAge1xyXG4gICAgICAgIHRleHRBbGlnbjogJ2xlZnQnLFxyXG4gICAgICAgIHRleHRCYXNlbGluZTogJ3RvcCcsXHJcbiAgICAgICAgZm9udDogJzEycHggQ2FsaWJyaSxzYW5zLXNlcmlmJyxcclxuICAgICAgICBmaWxsOiB7IGNvbG9yOiAnIzAwMCcgfSxcclxuICAgICAgICBiYWNrZ3JvdW5kRmlsbDogeyBjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC41KScgfSxcclxuICAgICAgICBiYWNrZ3JvdW5kU3Ryb2tlOiB7IGNvbG9yOiAncmdiYSgyMDAsIDIwMCwgMjAwLCAwLjc1KScsIHdpZHRoOiAyIH0sXHJcbiAgICAgICAgc3Ryb2tlOiB7IGNvbG9yOiAnI2ZmZicsIHdpZHRoOiAzIH0sXHJcbiAgICAgICAgb3ZlcmZsb3c6IHRydWUsXHJcbiAgICAgICAgb2Zmc2V0WDogMTAsXHJcbiAgICAgICAgb2Zmc2V0WTogMjAsXHJcbiAgICAgICAgcGFkZGluZzogWzIuNSwgMi41LCAyLjUsIDIuNV1cclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnN0eWxlU2VydmljZS5jcmVhdGVTdHlsZUJ5QXR0cmlidXRlKGZlYXR1cmUsIGxvY2FsSG92ZXJTdHlsZSwgcmVzb2x1dGlvbik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdG9wIGxpc3RlbmluZyB0byBwb2ludGVybW92ZSBhbmQgcmV2ZXJzZSBzZWFyY2ggcmVzdWx0cy5cclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMudW5saXN0ZW5Ub01hcFBvaW50ZXJNb3ZlKCk7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlVG9Qb2ludGVyU3RvcmUoKTtcclxuICAgIHRoaXMudW5saXN0ZW5Ub01hcFNpbmdsZUNsaWNrKCk7XHJcbiAgICB0aGlzLmxheWVycyQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdWJzY3JpYmUgdG8gcG9pbnRlcm1vdmUgcmVzdWx0IHN0b3JlXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgc3Vic2NyaWJlVG9Qb2ludGVyU3RvcmUoKSB7XHJcbiAgICB0aGlzLnN0b3JlJCQgPSB0aGlzLnBvaW50ZXJIb3ZlckZlYXR1cmVTdG9yZS5lbnRpdGllcyQuc3Vic2NyaWJlKHJlc3VsdHNVbmRlclBvaW50ZXJQb3NpdGlvbiA9PiB7XHJcbiAgICAgIHRoaXMuYWRkRmVhdHVyZU92ZXJsYXkocmVzdWx0c1VuZGVyUG9pbnRlclBvc2l0aW9uKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT24gbWFwIHBvaW50ZXJtb3ZlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsaXN0ZW5Ub01hcFBvaW50ZXJNb3ZlKCkge1xyXG4gICAgdGhpcy5wb2ludGVyTW92ZUxpc3RlbmVyID0gdGhpcy5tYXAub2wub24oXHJcbiAgICAgICdwb2ludGVybW92ZScsXHJcbiAgICAgIChldmVudDogT2xNYXBCcm93c2VyRXZlbnQ8YW55PikgPT4gdGhpcy5vbk1hcEV2ZW50KGV2ZW50KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIG1hcCBzaW5nbGVjbGlja1xyXG4gICAqL1xyXG4gIHByaXZhdGUgbGlzdGVuVG9NYXBDbGljaygpIHtcclxuICAgIHRoaXMuc2luZ2xlQ2xpY2tNYXBMaXN0ZW5lciA9IHRoaXMubWFwLm9sLm9uKFxyXG4gICAgICAnc2luZ2xlY2xpY2snLFxyXG4gICAgICAoZXZlbnQ6IE9sTWFwQnJvd3NlckV2ZW50PGFueT4pID0+IHRoaXMub25NYXBTaW5nbGVDbGlja0V2ZW50KGV2ZW50KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVuc3Vic2NyaWJlIHRvIHBvaW50ZXIgc3RvcmUuXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgdW5zdWJzY3JpYmVUb1BvaW50ZXJTdG9yZSgpIHtcclxuICAgIHRoaXMuc3RvcmUkJC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RvcCBsaXN0ZW5pbmcgZm9yIG1hcCBwb2ludGVybW92ZVxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdW5saXN0ZW5Ub01hcFBvaW50ZXJNb3ZlKCkge1xyXG4gICAgdW5CeUtleSh0aGlzLnBvaW50ZXJNb3ZlTGlzdGVuZXIpO1xyXG4gICAgdGhpcy5wb2ludGVyTW92ZUxpc3RlbmVyID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RvcCBsaXN0ZW5pbmcgZm9yIG1hcCBzaW5nbGVjbGlja1xyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdW5saXN0ZW5Ub01hcFNpbmdsZUNsaWNrKCkge1xyXG4gICAgdW5CeUtleSh0aGlzLnNpbmdsZUNsaWNrTWFwTGlzdGVuZXIpO1xyXG4gICAgdGhpcy5zaW5nbGVDbGlja01hcExpc3RlbmVyID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJpZ2dlciBjbGVhciBsYXllciBvbiBzaW5nbGVjbGljay5cclxuICAgKiBAcGFyYW0gZXZlbnQgT0wgbWFwIGJyb3dzZXIgc2luZ2xlY2xpY2sgZXZlbnRcclxuICAgKi9cclxuICBwcml2YXRlIG9uTWFwU2luZ2xlQ2xpY2tFdmVudChldmVudDogT2xNYXBCcm93c2VyRXZlbnQ8YW55Pikge1xyXG4gICAgdGhpcy5jbGVhckxheWVyKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcmlnZ2VyIGhvdmVyIHdoZW4gdGhlIG1vdXNlIGlzIG1vdGlvbmxlc3MgZHVyaW5nIHRoZSBkZWZpbmVkIGRlbGF5IChwb2ludGVyTW92ZURlbGF5KS5cclxuICAgKiBAcGFyYW0gZXZlbnQgT0wgbWFwIGJyb3dzZXIgcG9pbnRlciBldmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgb25NYXBFdmVudChldmVudDogT2xNYXBCcm93c2VyRXZlbnQ8YW55Pikge1xyXG4gICAgaWYgKFxyXG4gICAgICBldmVudC5kcmFnZ2luZyB8fCAhdGhpcy5pZ29Ib3ZlckZlYXR1cmVFbmFibGVkIHx8XHJcbiAgICAgIHRoaXMubWVkaWFTZXJ2aWNlLmlzVG91Y2hTY3JlZW4oKSkge1xyXG4gICAgICB0aGlzLmNsZWFyTGF5ZXIoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiB0aGlzLmxhc3RUaW1lb3V0UmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcpIHsgLy8gY2FuY2VsIHRpbWVvdXQgd2hlbiB0aGUgbW91c2UgbW92ZXNcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMubGFzdFRpbWVvdXRSZXF1ZXN0KTtcclxuICAgIH1cclxuICAgIGxldCBtYXhpbXVtWmluZGV4ID0gLUluZmluaXR5O1xyXG4gICAgbGV0IHRvcE1vc3RPbExheWVyO1xyXG4gICAgY29uc3QgcGl4ZWwgPSB0aGlzLm1hcC5vbC5nZXRQaXhlbEZyb21Db29yZGluYXRlKGV2ZW50LmNvb3JkaW5hdGUpO1xyXG4gICAgdGhpcy5sYXN0VGltZW91dFJlcXVlc3QgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIC8vIHJldHJpZXZlIHRoZSB0b3Btb3N0IGxheWVyIHdpdGggZmVhdHVyZSB0byBvbmx5IGFwcGx5IHRoZSBob3ZlciBvbiB0aGlzIGxheWVyLlxyXG4gICAgICB0aGlzLm1hcC5vbC5mb3JFYWNoRmVhdHVyZUF0UGl4ZWwocGl4ZWwsIChtYXBGZWF0dXJlOiBSZW5kZXJGZWF0dXJlIHwgT2xGZWF0dXJlPE9sR2VvbWV0cnk+LCBsYXllck9MOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoIWxheWVyT0wpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaWdvTGF5ZXIgPSB0aGlzLm1hcC5nZXRMYXllckJ5T2xVSWQoKGxheWVyT0wgYXMgYW55KS5vbF91aWQpO1xyXG4gICAgICAgIGlmICghdGhpcy5jYW5Qcm9jZXNzSG92ZXIoaWdvTGF5ZXIgYXMgYW55KSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaWdvTGF5ZXIuekluZGV4IDw9IG1heGltdW1aaW5kZXgpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbWF4aW11bVppbmRleCA9IGlnb0xheWVyLnpJbmRleDtcclxuICAgICAgICB0b3BNb3N0T2xMYXllciA9IGxheWVyT0w7XHJcblxyXG4gICAgICB9LCB7XHJcbiAgICAgICAgaGl0VG9sZXJhbmNlOiAxMCwgbGF5ZXJGaWx0ZXI6IG9sTGF5ZXIgPT4gb2xMYXllciBpbnN0YW5jZW9mIG9sTGF5ZXJWZWN0b3IgfHwgb2xMYXllciBpbnN0YW5jZW9mIG9sTGF5ZXJWZWN0b3JUaWxlXHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoIXRvcE1vc3RPbExheWVyKSB7XHJcbiAgICAgICAgLy8gVG8gY2xlYXIgbGFiZWxcclxuICAgICAgICB0aGlzLmNsZWFyTGF5ZXIoKTtcclxuICAgICAgICB0aGlzLnBvaW50ZXJIb3ZlckZlYXR1cmVTdG9yZS5jbGVhcigpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5tYXAub2wuZm9yRWFjaEZlYXR1cmVBdFBpeGVsKHBpeGVsLCAobWFwRmVhdHVyZTogUmVuZGVyRmVhdHVyZSB8IE9sRmVhdHVyZTxPbEdlb21ldHJ5PiwgbGF5ZXJPTDogYW55KSA9PiB7XHJcbiAgICAgICAgLy8gVG8gYXZvaWQgZmxhc2hpbmcgZmVhdHVyZVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIG1hcEZlYXR1cmUuZ2V0KCdob3ZlclN1bW1hcnknKSA9PT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgICBtYXBGZWF0dXJlLmdldFByb3BlcnRpZXMoKSAhPT0gdGhpcy5wb2ludGVySG92ZXJGZWF0dXJlU3RvcmUuYWxsKClbMF0/LmdldFByb3BlcnRpZXMoKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5jbGVhckxheWVyKCk7XHJcbiAgICAgICAgICBsZXQgaWdvTGF5ZXI7XHJcbiAgICAgICAgICBpZiAobGF5ZXJPTCBpbnN0YW5jZW9mIG9sTGF5ZXJWZWN0b3IpIHtcclxuICAgICAgICAgICAgaWdvTGF5ZXIgPSB0aGlzLm1hcC5nZXRMYXllckJ5T2xVSWQoKGxheWVyT0wgYXMgYW55KS5vbF91aWQpIGFzIFZlY3RvckxheWVyO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY2FuUHJvY2Vzc0hvdmVyKGlnb0xheWVyKSkge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgbG9jYWxPbEZlYXR1cmUgPSB0aGlzLmhhbmRsZVJlbmRlckZlYXR1cmUobWFwRmVhdHVyZSk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TGF5ZXJTdHlsZUZyb21PcHRpb25zKGlnb0xheWVyLCBsb2NhbE9sRmVhdHVyZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGZlYXR1cmVzVG9Mb2FkID0gW2xvY2FsT2xGZWF0dXJlXTtcclxuICAgICAgICAgICAgbG9jYWxPbEZlYXR1cmUuc2V0KFwiX2lzTGFiZWxcIiwgZmFsc2UpO1xyXG4gICAgICAgICAgICBjb25zdCBteUxhYmVsT2xGZWF0dXJlID0gbmV3IE9sRmVhdHVyZSgpO1xyXG4gICAgICAgICAgICBteUxhYmVsT2xGZWF0dXJlLnNldFByb3BlcnRpZXMobG9jYWxPbEZlYXR1cmUuZ2V0UHJvcGVydGllcygpKTtcclxuICAgICAgICAgICAgY29uc3QgbGFiZWxHZW9tID1cclxuICAgICAgICAgICAgICBsb2NhbE9sRmVhdHVyZS5nZXRHZW9tZXRyeSgpLmdldFR5cGUoKSA9PT0gJ1BvaW50JyA/IGxvY2FsT2xGZWF0dXJlLmdldEdlb21ldHJ5KCkgOiBuZXcgT2xHZW9tLlBvaW50KGV2ZW50LmNvb3JkaW5hdGUpO1xyXG4gICAgICAgICAgICBteUxhYmVsT2xGZWF0dXJlLnNldEdlb21ldHJ5KGxhYmVsR2VvbSk7XHJcbiAgICAgICAgICAgIG15TGFiZWxPbEZlYXR1cmUuc2V0SWQobG9jYWxPbEZlYXR1cmUuZ2V0SWQoKSk7XHJcbiAgICAgICAgICAgIG15TGFiZWxPbEZlYXR1cmUuc2V0KFwiX2lzTGFiZWxcIiwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TGF5ZXJTdHlsZUZyb21PcHRpb25zKGlnb0xheWVyLCBteUxhYmVsT2xGZWF0dXJlKTtcclxuICAgICAgICAgICAgZmVhdHVyZXNUb0xvYWQucHVzaChteUxhYmVsT2xGZWF0dXJlKTtcclxuICAgICAgICAgICAgdGhpcy5wb2ludGVySG92ZXJGZWF0dXJlU3RvcmUubG9hZChmZWF0dXJlc1RvTG9hZCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGxheWVyT0wgaW5zdGFuY2VvZiBvbExheWVyVmVjdG9yVGlsZSkge1xyXG4gICAgICAgICAgICBpZ29MYXllciA9IHRoaXMubWFwLmdldExheWVyQnlPbFVJZCgobGF5ZXJPTCBhcyBhbnkpLm9sX3VpZCkgYXMgVmVjdG9yVGlsZUxheWVyO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY2FuUHJvY2Vzc0hvdmVyKGlnb0xheWVyKSkge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaWdvTGF5ZXI/Lm9wdGlvbnM/LnN0eWxlQnlBdHRyaWJ1dGU/LmhvdmVyU3R5bGUpIHtcclxuICAgICAgICAgICAgICB0aGlzLm12dFN0eWxlT3B0aW9ucyA9IGlnb0xheWVyLm9wdGlvbnMuc3R5bGVCeUF0dHJpYnV0ZS5ob3ZlclN0eWxlO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlnb0xheWVyPy5vcHRpb25zPy5ob3ZlclN0eWxlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5tdnRTdHlsZU9wdGlvbnMgPSBpZ29MYXllci5vcHRpb25zLmhvdmVyU3R5bGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25MYXllci5zZXRTb3VyY2UobGF5ZXJPTC5nZXRTb3VyY2UoKSk7XHJcbiAgICAgICAgICAgIGxheWVyT0wuZ2V0RmVhdHVyZXMoZXZlbnQucGl4ZWwpLnRoZW4oKG12dEZlYXR1cmVzOiAoUmVuZGVyRmVhdHVyZSB8IE9sRmVhdHVyZTxPbEdlb21ldHJ5PilbXSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICghbXZ0RmVhdHVyZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1WVCA9IHt9O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25MYXllci5jaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyTGF5ZXIoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgY29uc3QgZmVhdHVyZSA9IG12dEZlYXR1cmVzWzBdO1xyXG4gICAgICAgICAgICAgIGlmICghZmVhdHVyZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhckxheWVyKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGxldCBsb2NhbE9sRmVhdHVyZSA9IHRoaXMuaGFuZGxlUmVuZGVyRmVhdHVyZShmZWF0dXJlKTtcclxuICAgICAgICAgICAgICBsb2NhbE9sRmVhdHVyZS5zZXQoXCJfaXNMYWJlbFwiLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgY29uc3QgbXlMYWJlbE9sRmVhdHVyZSA9IG5ldyBPbEZlYXR1cmUoKTtcclxuICAgICAgICAgICAgICBteUxhYmVsT2xGZWF0dXJlLnNldFByb3BlcnRpZXMobG9jYWxPbEZlYXR1cmUuZ2V0UHJvcGVydGllcygpKTtcclxuICAgICAgICAgICAgICBjb25zdCBsYWJlbEdlb20gPVxyXG4gICAgICAgICAgICAgIGxvY2FsT2xGZWF0dXJlLmdldEdlb21ldHJ5KCkuZ2V0VHlwZSgpID09PSAnUG9pbnQnID8gbG9jYWxPbEZlYXR1cmUuZ2V0R2VvbWV0cnkoKSA6IG5ldyBPbEdlb20uUG9pbnQoZXZlbnQuY29vcmRpbmF0ZSk7XHJcbiAgICAgICAgICAgICAgbXlMYWJlbE9sRmVhdHVyZS5zZXRHZW9tZXRyeShsYWJlbEdlb20pO1xyXG4gICAgICAgICAgICAgIG15TGFiZWxPbEZlYXR1cmUuc2V0SWQobG9jYWxPbEZlYXR1cmUuZ2V0SWQoKSk7XHJcbiAgICAgICAgICAgICAgbXlMYWJlbE9sRmVhdHVyZS5zZXQoXCJfaXNMYWJlbFwiLCB0cnVlKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldExheWVyU3R5bGVGcm9tT3B0aW9ucyhpZ29MYXllciwgbXlMYWJlbE9sRmVhdHVyZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5wb2ludGVySG92ZXJGZWF0dXJlU3RvcmUubG9hZChbbXlMYWJlbE9sRmVhdHVyZV0pO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTVZUW2ZlYXR1cmUuZ2V0SWQoKV0gPSBsb2NhbE9sRmVhdHVyZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkxheWVyLmNoYW5nZWQoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCB7XHJcbiAgICAgICAgaGl0VG9sZXJhbmNlOiAxMCwgbGF5ZXJGaWx0ZXI6IG9sTGF5ZXIgPT4gb2xMYXllciA9PT0gdG9wTW9zdE9sTGF5ZXJcclxuICAgICAgfSk7XHJcbiAgICB9LCB0aGlzLmlnb0hvdmVyRmVhdHVyZURlbGF5KTtcclxuICB9XHJcblxyXG4gIGNhblByb2Nlc3NIb3ZlcihpZ29MYXllcjogVmVjdG9yTGF5ZXIgfCBWZWN0b3JUaWxlTGF5ZXIpOiBib29sZWFuIHtcclxuICAgIGlmICghaWdvTGF5ZXIpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpZ29MYXllci52aXNpYmxlKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmICghaWdvTGF5ZXIub3B0aW9ucykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFpZ29MYXllci5vcHRpb25zLnN0eWxlQnlBdHRyaWJ1dGUgJiYgIWlnb0xheWVyLm9wdGlvbnMuaG92ZXJTdHlsZSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICAoaWdvTGF5ZXIub3B0aW9ucy5zdHlsZUJ5QXR0cmlidXRlICYmICFpZ29MYXllci5vcHRpb25zLnN0eWxlQnlBdHRyaWJ1dGUuaG92ZXJTdHlsZSkgJiZcclxuICAgICAgIWlnb0xheWVyLm9wdGlvbnMuaG92ZXJTdHlsZSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGhhbmRsZVJlbmRlckZlYXR1cmUoZmVhdHVyZTogUmVuZGVyRmVhdHVyZSB8IE9sRmVhdHVyZTxPbEdlb21ldHJ5Pik6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PiB7XHJcbiAgICBsZXQgbG9jYWxGZWF0dXJlOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT47XHJcbiAgICBpZiAoZmVhdHVyZSBpbnN0YW5jZW9mIFJlbmRlckZlYXR1cmUpIHtcclxuICAgICAgbG9jYWxGZWF0dXJlID0gbmV3IE9sRmVhdHVyZSh7XHJcbiAgICAgICAgZ2VvbWV0cnk6IHRoaXMuZ2V0R2VvbWV0cnkoZmVhdHVyZSlcclxuICAgICAgfSk7XHJcbiAgICAgIGxvY2FsRmVhdHVyZS5zZXRJZChmZWF0dXJlLmdldElkKCkpO1xyXG4gICAgfSBlbHNlIGlmIChmZWF0dXJlIGluc3RhbmNlb2YgT2xGZWF0dXJlKSB7XHJcbiAgICAgIGxvY2FsRmVhdHVyZSA9IGZlYXR1cmU7XHJcbiAgICB9XHJcbiAgICBsb2NhbEZlYXR1cmUuc2V0UHJvcGVydGllcyhmZWF0dXJlLmdldFByb3BlcnRpZXMoKSk7XHJcbiAgICByZXR1cm4gbG9jYWxGZWF0dXJlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGEgZmVhdHVyZSB0byB0aGUgcG9pbnRlciBzdG9yZVxyXG4gICAqIEBwYXJhbSB0ZXh0IHN0cmluZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgYWRkRmVhdHVyZU92ZXJsYXkoaG92ZXJFbnRpdHk6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PltdKSB7XHJcblxyXG4gICAgaWYgKGhvdmVyRW50aXR5Lmxlbmd0aCA+IDApIHtcclxuXHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGhvdmVyRW50aXR5WzBdO1xyXG4gICAgICB0aGlzLmNsZWFyTGF5ZXIoKTtcclxuICAgICAgY29uc3QgZmVhdHVyZSA9IG5ldyBPbEZlYXR1cmUoe1xyXG4gICAgICAgIGdlb21ldHJ5OiByZXN1bHQuZ2V0R2VvbWV0cnkoKSxcclxuICAgICAgICBtZXRhOiB7IGlkOiB0aGlzLmhvdmVyRmVhdHVyZUlkIH0sXHJcbiAgICAgICAgaG92ZXJTdW1tYXJ5OiB0aGlzLmdldEhvdmVyU3VtbWFyeShyZXN1bHQuZ2V0UHJvcGVydGllcygpKVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuc3RvcmUuc2V0TGF5ZXJPbEZlYXR1cmVzKFtmZWF0dXJlXSwgRmVhdHVyZU1vdGlvbi5Ob25lKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0TGF5ZXJTdHlsZUZyb21PcHRpb25zKGlnb0xheWVyOiBWZWN0b3JMYXllciB8IFZlY3RvclRpbGVMYXllciwgZmVhdHVyZTogT2xGZWF0dXJlPE9sR2VvbWV0cnk+KSB7XHJcbiAgICBjb25zdCByZXNvbHV0aW9uID0gdGhpcy5zdG9yZS5sYXllci5tYXAudmlld0NvbnRyb2xsZXIuZ2V0UmVzb2x1dGlvbigpO1xyXG4gICAgaWYgKGlnb0xheWVyPy5vcHRpb25zPy5zdHlsZUJ5QXR0cmlidXRlPy5ob3ZlclN0eWxlKSB7XHJcbiAgICAgIHRoaXMuc3RvcmUubGF5ZXIub2wuc2V0U3R5bGUodGhpcy5jcmVhdGVIb3ZlclN0eWxlKGZlYXR1cmUsIGlnb0xheWVyLm9wdGlvbnMuc3R5bGVCeUF0dHJpYnV0ZS5ob3ZlclN0eWxlLCByZXNvbHV0aW9uKSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChpZ29MYXllcj8ub3B0aW9ucz8uaG92ZXJTdHlsZSkge1xyXG4gICAgICB0aGlzLnN0b3JlLmxheWVyLm9sLnNldFN0eWxlKHRoaXMuY3JlYXRlSG92ZXJTdHlsZShmZWF0dXJlLCBpZ29MYXllci5vcHRpb25zLmhvdmVyU3R5bGUsIHJlc29sdXRpb24pKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0SG92ZXJTdW1tYXJ5KHByb3BlcnRpZXMpOiBzdHJpbmcge1xyXG4gICAgbGV0IHN1bW1hcnkgPSAnJztcclxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHByb3BlcnRpZXMpKSB7XHJcbiAgICAgIGlmICgha2V5LnN0YXJ0c1dpdGgoJ18nKSAmJiBrZXkgIT09ICdnZW9tZXRyeScpIHtcclxuICAgICAgICBzdW1tYXJ5ICs9IGAke2tleX06ICR7dmFsdWV9YCArICdcXG4nO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3VtbWFyeS5sZW5ndGggPj0gMiA/IHN1bW1hcnkuc2xpY2UoMCwgLTIpIDogc3VtbWFyeTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0R2VvbWV0cnkoZmVhdHVyZSk6IE9sR2VvbS5HZW9tZXRyeSB7XHJcbiAgICBsZXQgZ2VvbTtcclxuICAgIGlmICghZmVhdHVyZS5nZXRPcmllbnRlZEZsYXRDb29yZGluYXRlcykge1xyXG4gICAgICBnZW9tID0gZmVhdHVyZS5nZXRHZW9tZXRyeSgpO1xyXG4gICAgfSBlbHNlIHtcclxuXHJcbiAgICAgIGNvbnN0IGNvb3JkcyA9IGZlYXR1cmUuZ2V0T3JpZW50ZWRGbGF0Q29vcmRpbmF0ZXMoKTtcclxuICAgICAgY29uc3QgZmxhdENvb3JkcyA9IFtdO1xyXG5cclxuICAgICAgY29vcmRzLmZvckVhY2goKGMsIGlkeCkgPT4ge1xyXG4gICAgICAgIGlmIChpZHggJSAyID09PSAwKSB7XHJcbiAgICAgICAgICBmbGF0Q29vcmRzLnB1c2goW3BhcnNlRmxvYXQoY29vcmRzW2lkeF0pLCBwYXJzZUZsb2F0KGNvb3Jkc1tpZHggKyAxXSldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gVE9ETzogdGVzdCBNdWx0aVhcclxuICAgICAgc3dpdGNoIChmZWF0dXJlLmdldFR5cGUoKSkge1xyXG4gICAgICAgIGNhc2UgJ1BvaW50JzpcclxuICAgICAgICAgIGdlb20gPSBuZXcgT2xHZW9tLlBvaW50KGZsYXRDb29yZHMpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnUG9seWdvbic6XHJcbiAgICAgICAgICBnZW9tID0gbmV3IE9sR2VvbS5Qb2x5Z29uKFtmbGF0Q29vcmRzXSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdMaW5lU3RyaW5nJzpcclxuICAgICAgICAgIGdlb20gPSBuZXcgT2xHZW9tLkxpbmVTdHJpbmcoW2ZsYXRDb29yZHNdKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGdlb207XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgdGhlIHBvaW50ZXIgc3RvcmUgZmVhdHVyZXNcclxuICAgKi9cclxuICBwcml2YXRlIGNsZWFyTGF5ZXIoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGlvbk1WVCA9IHt9O1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTGF5ZXIpIHtcclxuICAgICAgdGhpcy5zZWxlY3Rpb25MYXllci5jaGFuZ2VkKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zdG9yZSkge1xyXG4gICAgICB0aGlzLnN0b3JlLmNsZWFyTGF5ZXIoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDcmVhdGUgYSBkZWZhdWx0IHN0eWxlIGZvciB0aGUgcG9pbnRlciBwb3NpdGlvbiBhbmQgaXQncyBsYWJlbCBzdW1tYXJ5LlxyXG4gKiBAcGFyYW0gZmVhdHVyZSBPbEZlYXR1cmVcclxuICogQHJldHVybnMgT0wgc3R5bGUgZnVuY3Rpb25cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBob3ZlckZlYXR1cmVNYXJrZXIoZmVhdHVyZTogT2xGZWF0dXJlPE9sR2VvbS5HZW9tZXRyeT4sIHJlc29sdXRpb246IG51bWJlcik6IE9sU3R5bGUuU3R5bGVbXSB7XHJcblxyXG4gIGNvbnN0IG9sU3R5bGVUZXh0ID0gbmV3IE9sU3R5bGUuU3R5bGUoe1xyXG4gICAgdGV4dDogbmV3IE9sU3R5bGUuVGV4dCh7XHJcbiAgICAgIHRleHQ6IGZlYXR1cmUuZ2V0KCdob3ZlclN1bW1hcnknKSxcclxuICAgICAgdGV4dEFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHRleHRCYXNlbGluZTogJ3RvcCcsXHJcbiAgICAgIGZvbnQ6ICcxMnB4IENhbGlicmksc2Fucy1zZXJpZicsXHJcbiAgICAgIGZpbGw6IG5ldyBPbFN0eWxlLkZpbGwoeyBjb2xvcjogJyMwMDAnIH0pLFxyXG4gICAgICBiYWNrZ3JvdW5kRmlsbDogbmV3IE9sU3R5bGUuRmlsbCh7IGNvbG9yOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpJyB9KSxcclxuICAgICAgYmFja2dyb3VuZFN0cm9rZTogbmV3IE9sU3R5bGUuU3Ryb2tlKHsgY29sb3I6ICdyZ2JhKDIwMCwgMjAwLCAyMDAsIDAuNzUpJywgd2lkdGg6IDIgfSksXHJcbiAgICAgIHN0cm9rZTogbmV3IE9sU3R5bGUuU3Ryb2tlKHsgY29sb3I6ICcjZmZmJywgd2lkdGg6IDMgfSksXHJcbiAgICAgIG92ZXJmbG93OiB0cnVlLFxyXG4gICAgICBvZmZzZXRYOiAxMCxcclxuICAgICAgb2Zmc2V0WTogMjAsXHJcbiAgICAgIHBhZGRpbmc6IFsyLjUsIDIuNSwgMi41LCAyLjVdXHJcbiAgICB9KVxyXG4gIH0pO1xyXG5cclxuICBjb25zdCBvbFN0eWxlID0gW29sU3R5bGVUZXh0XTtcclxuICBzd2l0Y2ggKGZlYXR1cmUuZ2V0R2VvbWV0cnkoKS5nZXRUeXBlKCkpIHtcclxuICAgIGNhc2UgJ1BvaW50JzpcclxuICAgICAgb2xTdHlsZS5wdXNoKG5ldyBPbFN0eWxlLlN0eWxlKHtcclxuICAgICAgICBpbWFnZTogbmV3IE9sU3R5bGUuQ2lyY2xlKHtcclxuICAgICAgICAgIHJhZGl1czogMTAsXHJcbiAgICAgICAgICBzdHJva2U6IG5ldyBPbFN0eWxlLlN0cm9rZSh7XHJcbiAgICAgICAgICAgIGNvbG9yOiAnYmx1ZScsXHJcbiAgICAgICAgICAgIHdpZHRoOiAzXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBkZWZhdWx0OlxyXG4gICAgICBvbFN0eWxlLnB1c2gobmV3IE9sU3R5bGUuU3R5bGUoe1xyXG4gICAgICAgIHN0cm9rZTogbmV3IE9sU3R5bGUuU3Ryb2tlKHtcclxuICAgICAgICAgIGNvbG9yOiAnd2hpdGUnLFxyXG4gICAgICAgICAgd2lkdGg6IDVcclxuICAgICAgICB9KVxyXG4gICAgICB9KSk7XHJcbiAgICAgIG9sU3R5bGUucHVzaChuZXcgT2xTdHlsZS5TdHlsZSh7XHJcbiAgICAgICAgc3Ryb2tlOiBuZXcgT2xTdHlsZS5TdHJva2Uoe1xyXG4gICAgICAgICAgY29sb3I6ICdibHVlJyxcclxuICAgICAgICAgIHdpZHRoOiAzXHJcbiAgICAgICAgfSlcclxuICAgICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIG9sU3R5bGU7XHJcblxyXG59XHJcbiJdfQ==
503
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG92ZXItZmVhdHVyZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL2hvdmVyLWZlYXR1cmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUVMLElBQUksRUFFSixZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQ25CO0FBQ0gsT0FBTyxpQkFBaUIsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLGFBQWEsTUFBTSxpQkFBaUIsQ0FBQztBQUc1QyxPQUFPLGtCQUFrQixNQUFNLHNCQUFzQixDQUFDO0FBU3RELE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLEtBQUssT0FBTyxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUVsQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxXQUFXLEVBQTBCLE1BQU0sMkJBQTJCLENBQUM7QUFDaEYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFHbkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLGFBQWEsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7QUFHOUM7Ozs7O0dBS0c7QUFJSCxNQUFNLE9BQU8scUJBQXFCO0lBZ0RoQyxZQUNrQixTQUE4QixFQUN0QyxZ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QUFPLENBQUMsTUFBTSxDQUFDO3dCQUN6QixLQUFLLEVBQUUsTUFBTTt3QkFDYixLQUFLLEVBQUUsQ0FBQztxQkFDVCxDQUFDO2lCQUNILENBQUM7YUFDSCxDQUFDLENBQUMsQ0FBQztZQUNKLE1BQU07UUFDUjtZQUNFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUM3QixNQUFNLEVBQUUsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDO29CQUN6QixLQUFLLEVBQUUsT0FBTztvQkFDZCxLQUFLLEVBQUUsQ0FBQztpQkFDVCxDQUFDO2FBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDN0IsTUFBTSxFQUFFLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQztvQkFDekIsS0FBSyxFQUFFLE1BQU07b0JBQ2IsS0FBSyxFQUFFLENBQUM7aUJBQ1QsQ0FBQzthQUNILENBQUMsQ0FBQyxDQUFDO0tBQ1A7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUVqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBTZWxmLFxuICBPbkluaXQsXG4gIEhvc3RMaXN0ZW5lclxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuICA7XG5pbXBvcnQgb2xMYXllclZlY3RvclRpbGUgZnJvbSAnb2wvbGF5ZXIvVmVjdG9yVGlsZSc7XG5pbXBvcnQgb2xMYXllclZlY3RvciBmcm9tICdvbC9sYXllci9WZWN0b3InO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCBvbFZlY3RvclRpbGVTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3RvclRpbGUnO1xuXG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT2xNYXBCcm93c2VyRXZlbnQgfSBmcm9tICdvbC9NYXBCcm93c2VyRXZlbnQnO1xuXG5pbXBvcnQgeyBJZ29NYXAgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkL21hcCc7XG5pbXBvcnQgeyBNYXBCcm93c2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbWFwL21hcC1icm93c2VyL21hcC1icm93c2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5pbnRlcmZhY2VzJztcblxuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE9sR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcbmltcG9ydCBPbEZlYXR1cmUgZnJvbSAnb2wvRmVhdHVyZSc7XG5pbXBvcnQgKiBhcyBPbFN0eWxlIGZyb20gJ29sL3N0eWxlJztcbmltcG9ydCAqIGFzIE9sR2VvbSBmcm9tICdvbC9nZW9tJztcblxuaW1wb3J0IHsgRW50aXR5U3RvcmUgfSBmcm9tICdAaWdvMi9jb21tb24nO1xuaW1wb3J0IHsgRmVhdHVyZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy9mZWF0dXJlLWRhdGFzb3VyY2UnO1xuaW1wb3J0IHsgVmVjdG9yTGF5ZXIsIExheWVyLCBWZWN0b3JUaWxlTGF5ZXIgfSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQvbGF5ZXJzJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyB0cnlCaW5kU3RvcmVMYXllciB9IGZyb20gJy4uLy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUudXRpbHMnO1xuaW1wb3J0IHsgRmVhdHVyZVN0b3JlIH0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQvc3RvcmUnO1xuaW1wb3J0IHsgRmVhdHVyZU1vdGlvbiB9IGZyb20gJy4uLy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUuZW51bXMnO1xuaW1wb3J0IHsgTWVkaWFTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XG5pbXBvcnQgeyBTdHlsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQvc3R5bGUuc2VydmljZSc7XG5pbXBvcnQgeyB1bkJ5S2V5IH0gZnJvbSAnb2wvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgUmVuZGVyRmVhdHVyZSBmcm9tICdvbC9yZW5kZXIvRmVhdHVyZSc7XG5pbXBvcnQgeyBTdHlsZUJ5QXR0cmlidXRlIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL3ZlY3Rvci1zdHlsZS5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIFRoaXMgZGlyZWN0aXZlIG1ha2VzIHRoZSBtb3VzZSBjb29yZGluYXRlIHRyaWdnZXIgYSByZXZlcnNlIHNlYXJjaCBvbiBhdmFpbGFibGUgc2VhcmNoIHNvdXJjZXMuXG4gKiBUaGUgc2VhcmNoIHJlc3VsdHMgYXJlIHBsYWNlZCBpbnRvIGEgbGFiZWwsIG9uIGEgY3Jvc3MgaWNvbiwgcmVwcmVzZW50aW5nIHRoZSBtb3VzZSBjb29yZGluYXRlLlxuICogQnkgZGVmYXVsdCwgbm8gc2VhcmNoIHNvdXJjZXMuIENvbmZpZyBpbiBjb25maWcgZmlsZSBtdXN0IGJlIGRlZmluZWQuXG4gKiB0aGUgbGF5ZXIgbGV2ZWwuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tpZ29Ib3ZlckZlYXR1cmVdJ1xufSlcbmV4cG9ydCBjbGFzcyBIb3ZlckZlYXR1cmVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgcHVibGljIHN0b3JlOiBGZWF0dXJlU3RvcmU8RmVhdHVyZT47XG4gIHByaXZhdGUgcG9pbnRlckhvdmVyRmVhdHVyZVN0b3JlOiBFbnRpdHlTdG9yZTxPbEZlYXR1cmU8T2xHZW9tZXRyeT4+ID0gbmV3IEVudGl0eVN0b3JlPE9sRmVhdHVyZTxPbEdlb21ldHJ5Pj4oW10pO1xuICBwcml2YXRlIGxhc3RUaW1lb3V0UmVxdWVzdDtcbiAgcHJpdmF0ZSBzdG9yZSQkOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgbGF5ZXJzJCQ6IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIHNlbGVjdGlvbkxheWVyOiBvbExheWVyVmVjdG9yVGlsZTtcbiAgcHJpdmF0ZSBzZWxlY3Rpb25NVlQgPSB7fTtcbiAgcHJpdmF0ZSBtdnRTdHlsZU9wdGlvbnM6IFN0eWxlQnlBdHRyaWJ1dGU7XG5cbiAgLyoqXG4gICAqIExpc3RlbmVyIHRvIHRoZSBwb2ludGVyIG1vdmUgZXZlbnRcbiAgICovXG4gIHByaXZhdGUgcG9pbnRlck1vdmVMaXN0ZW5lcjtcblxuICBwcml2YXRlIHNpbmdsZUNsaWNrTWFwTGlzdGVuZXI7XG5cbiAgcHJpdmF0ZSBob3ZlckZlYXR1cmVJZDogc3RyaW5nID0gJ2hvdmVyRmVhdHVyZUlkJztcbiAgLyoqXG4gICAqIFRoZSBkZWxheSB3aGVyZSB0aGUgbW91c2UgbXVzdCBiZSBtb3Rpb25sZXNzIGJlZm9yZSB0cmlnZ2VyIHRoZSByZXZlcnNlIHNlYXJjaFxuICAgKi9cbiAgQElucHV0KCkgaWdvSG92ZXJGZWF0dXJlRGVsYXk6IG51bWJlciA9IDEwMDA7XG5cbiAgLyoqXG4gICAqIElmIHRoZSB1c2VyIGhhcyBlbmFibGVkIG9yIG5vdCB0aGUgZGlyZWN0aXZlXG4gICAqL1xuICBASW5wdXQoKSBpZ29Ib3ZlckZlYXR1cmVFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VvdXQnKVxuICBtb3VzZW91dCgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5sYXN0VGltZW91dFJlcXVlc3QpO1xuICAgIHRoaXMuY2xlYXJMYXllcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIElHTyBtYXBcbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXQgbWFwKCk6IElnb01hcCB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50Lm1hcDtcbiAgfVxuXG4gIGdldCBtYXBQcm9qZWN0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLmNvbXBvbmVudC5tYXAgYXMgSWdvTWFwKS5wcm9qZWN0aW9uO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQFNlbGYoKSBwcml2YXRlIGNvbXBvbmVudDogTWFwQnJvd3NlckNvbXBvbmVudCxcbiAgICBwcml2YXRlIG1lZGlhU2VydmljZTogTWVkaWFTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3R5bGVTZXJ2aWNlOiBTdHlsZVNlcnZpY2UsXG4gICkgeyB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IGxpc3RlbmluZyB0byBwb2ludGVybW92ZSBhbmQgcmV2ZXJzZSBzZWFyY2ggcmVzdWx0cy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxpc3RlblRvTWFwUG9pbnRlck1vdmUoKTtcbiAgICB0aGlzLnN1YnNjcmliZVRvUG9pbnRlclN0b3JlKCk7XG4gICAgdGhpcy5saXN0ZW5Ub01hcENsaWNrKCk7XG5cbiAgICB0aGlzLm1hcC5zdGF0dXMkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuc3RvcmUgPSBuZXcgRmVhdHVyZVN0b3JlPEZlYXR1cmU+KFtdLCB7IG1hcDogdGhpcy5tYXAgfSk7XG4gICAgICB0aGlzLmluaXRTdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgLy8gVG8gaGFuZGxlIGNvbnRleHQgY2hhbmdlIHdpdGhvdXQgdXNpbmcgdGhlIGNvbnRleHRTZXJ2aWNlLlxuICAgIHRoaXMubGF5ZXJzJCQgPSB0aGlzLm1hcC5sYXllcnMkLnN1YnNjcmliZSgobGF5ZXJzOiBMYXllcltdKSA9PiB7XG4gICAgICBpZiAodGhpcy5zdG9yZSAmJiAhbGF5ZXJzLmZpbmQobCA9PiBsLmlkID09PSAnaG92ZXJGZWF0dXJlSWQnKSkge1xuICAgICAgICB0aGlzLmluaXRTdG9yZSgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgcG9pbnRlciBwb3NpdGlvbiBzdG9yZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgaW5pdFN0b3JlKCkge1xuICAgIGNvbnN0IHN0b3JlID0gdGhpcy5zdG9yZTtcblxuICAgIGNvbnN0IGxheWVyID0gbmV3IFZlY3RvckxheWVyKHtcbiAgICAgIGlzSWdvSW50ZXJuYWxMYXllcjogdHJ1ZSxcbiAgICAgIGlkOiAnaG92ZXJGZWF0dXJlSWQnLFxuICAgICAgdGl0bGU6ICdob3ZlckZlYXR1cmUnLFxuICAgICAgekluZGV4OiA5MDAsXG4gICAgICBzb3VyY2U6IG5ldyBGZWF0dXJlRGF0YVNvdXJjZSgpLFxuICAgICAgc2hvd0luTGF5ZXJMaXN0OiBmYWxzZSxcbiAgICAgIGV4cG9ydGFibGU6IGZhbHNlLFxuICAgICAgYnJvd3NhYmxlOiBmYWxzZSxcbiAgICAgIHN0eWxlOiBob3ZlckZlYXR1cmVNYXJrZXJcbiAgICB9KTtcbiAgICB0cnlCaW5kU3RvcmVMYXllcihzdG9yZSwgbGF5ZXIpO1xuXG4gICAgdGhpcy5zZWxlY3Rpb25MYXllciA9IG5ldyBvbExheWVyVmVjdG9yVGlsZSh7XG4gICAgICBtYXA6IHRoaXMubWFwLm9sLFxuICAgICAgekluZGV4OiA5MDEsXG4gICAgICByZW5kZXJNb2RlOiBcInZlY3RvclwiLFxuICAgICAgZGVjbHV0dGVyOiB0cnVlLFxuICAgICAgc291cmNlOiBuZXcgb2xWZWN0b3JUaWxlU291cmNlKHtwcm9qZWN0aW9uOiB0aGlzLm1hcC5wcm9qZWN0aW9ufSksXG4gICAgICBzdHlsZTogKGZlYXR1cmUsIHJlc29sdXRpb24pID0+IHtcbiAgICAgICAgaWYgKHRoaXMubXZ0U3R5bGVPcHRpb25zICYmIGZlYXR1cmUuZ2V0SWQoKSBpbiB0aGlzLnNlbGVjdGlvbk1WVCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUhvdmVyU3R5bGUoZmVhdHVyZSwgdGhpcy5tdnRTdHlsZU9wdGlvbnMsIHJlc29sdXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjcmVhdGVIb3ZlclN0eWxlKGZlYXR1cmU6IFJlbmRlckZlYXR1cmUgfCBPbEZlYXR1cmU8T2xHZW9tZXRyeT4sIGhvdmVyU3R5bGU6IFN0eWxlQnlBdHRyaWJ1dGUsIHJlc29sdXRpb246IG51bWJlcikge1xuICAgIGNvbnN0IGxvY2FsSG92ZXJTdHlsZSA9IHsgLi4uaG92ZXJTdHlsZSB9O1xuICAgIGxldCBsYWJlbCA9IGhvdmVyU3R5bGUubGFiZWwgPyBob3ZlclN0eWxlLmxhYmVsLmF0dHJpYnV0ZSA6IHVuZGVmaW5lZDtcbiAgICBsZXQgaGFzTGFiZWxTdHlsZSA9IGhvdmVyU3R5bGUubGFiZWw/LnN0eWxlID8gdHJ1ZSA6IGZhbHNlO1xuXG4gICAgaWYgKCFmZWF0dXJlLmdldCgnX2lzTGFiZWwnKSkge1xuICAgICAgbG9jYWxIb3ZlclN0eWxlLmxhYmVsID0gdW5kZWZpbmVkO1xuICAgICAgaGFzTGFiZWxTdHlsZSA9IGZhbHNlO1xuICAgICAgbGFiZWwgPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNsZWFyIHRoZSBzdHlsZSBmb3IgbGFiZWwuLi4uXG4gICAgICBjb25zdCBzaXplID0gbG9jYWxIb3ZlclN0eWxlLmRhdGEgPyBsb2NhbEhvdmVyU3R5bGUuZGF0YS5sZW5ndGggOiAwO1xuICAgICAgY29uc3QgcmFkaXVzID0gW107XG4gICAgICBjb25zdCBzdHJva2UgPSBbXTtcbiAgICAgIGNvbnN0IHdpZHRoID0gW107XG4gICAgICBjb25zdCBmaWxsID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICByYWRpdXMucHVzaCgwKTtcbiAgICAgICAgc3Ryb2tlLnB1c2goJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMCknKTtcbiAgICAgICAgd2lkdGgucHVzaCgwKTtcbiAgICAgICAgZmlsbC5wdXNoKCdyZ2JhKDI1NSwgMjU1LCAyNTUsIDApJyk7XG4gICAgICB9XG4gICAgICBsb2NhbEhvdmVyU3R5bGUucmFkaXVzID0gcmFkaXVzO1xuICAgICAgbG9jYWxIb3ZlclN0eWxlLnN0cm9rZSA9IHN0cm9rZTtcbiAgICAgIGxvY2FsSG92ZXJTdHlsZS53aWR0aCA9IHdpZHRoO1xuICAgICAgbG9jYWxIb3ZlclN0eWxlLmZpbGwgPSBmaWxsO1xuICAgIH1cbiAgICBpZiAoIWhhc0xhYmVsU3R5bGUgJiYgbGFiZWwpIHtcbiAgICAgIGxvY2FsSG92ZXJTdHlsZS5sYWJlbC5zdHlsZSA9XG4gICAgICB7XG4gICAgICAgIHRleHRBbGlnbjogJ2xlZnQnLFxuICAgICAgICB0ZXh0QmFzZWxpbmU6ICd0b3AnLFxuICAgICAgICBmb250OiAnMTJweCBDYWxpYnJpLHNhbnMtc2VyaWYnLFxuICAgICAgICBmaWxsOiB7IGNvbG9yOiAnIzAwMCcgfSxcbiAgICAgICAgYmFja2dyb3VuZEZpbGw6IHsgY29sb3I6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSknIH0sXG4gICAgICAgIGJhY2tncm91bmRTdHJva2U6IHsgY29sb3I6ICdyZ2JhKDIwMCwgMjAwLCAyMDAsIDAuNzUpJywgd2lkdGg6IDIgfSxcbiAgICAgICAgc3Ryb2tlOiB7IGNvbG9yOiAnI2ZmZicsIHdpZHRoOiAzIH0sXG4gICAgICAgIG92ZXJmbG93OiB0cnVlLFxuICAgICAgICBvZmZzZXRYOiAxMCxcbiAgICAgICAgb2Zmc2V0WTogMjAsXG4gICAgICAgIHBhZGRpbmc6IFsyLjUsIDIuNSwgMi41LCAyLjVdXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdHlsZVNlcnZpY2UuY3JlYXRlU3R5bGVCeUF0dHJpYnV0ZShmZWF0dXJlLCBsb2NhbEhvdmVyU3R5bGUsIHJlc29sdXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3AgbGlzdGVuaW5nIHRvIHBvaW50ZXJtb3ZlIGFuZCByZXZlcnNlIHNlYXJjaCByZXN1bHRzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudW5saXN0ZW5Ub01hcFBvaW50ZXJNb3ZlKCk7XG4gICAgdGhpcy51bnN1YnNjcmliZVRvUG9pbnRlclN0b3JlKCk7XG4gICAgdGhpcy51bmxpc3RlblRvTWFwU2luZ2xlQ2xpY2soKTtcbiAgICB0aGlzLmxheWVycyQkLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIHBvaW50ZXJtb3ZlIHJlc3VsdCBzdG9yZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHN1YnNjcmliZVRvUG9pbnRlclN0b3JlKCkge1xuICAgIHRoaXMuc3RvcmUkJCA9IHRoaXMucG9pbnRlckhvdmVyRmVhdHVyZVN0b3JlLmVudGl0aWVzJC5zdWJzY3JpYmUocmVzdWx0c1VuZGVyUG9pbnRlclBvc2l0aW9uID0+IHtcbiAgICAgIHRoaXMuYWRkRmVhdHVyZU92ZXJsYXkocmVzdWx0c1VuZGVyUG9pbnRlclBvc2l0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPbiBtYXAgcG9pbnRlcm1vdmVcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuVG9NYXBQb2ludGVyTW92ZSgpIHtcbiAgICB0aGlzLnBvaW50ZXJNb3ZlTGlzdGVuZXIgPSB0aGlzLm1hcC5vbC5vbihcbiAgICAgICdwb2ludGVybW92ZScsXG4gICAgICAoZXZlbnQ6IE9sTWFwQnJvd3NlckV2ZW50PGFueT4pID0+IHRoaXMub25NYXBFdmVudChldmVudClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uIG1hcCBzaW5nbGVjbGlja1xuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5Ub01hcENsaWNrKCkge1xuICAgIHRoaXMuc2luZ2xlQ2xpY2tNYXBMaXN0ZW5lciA9IHRoaXMubWFwLm9sLm9uKFxuICAgICAgJ3NpbmdsZWNsaWNrJyxcbiAgICAgIChldmVudDogT2xNYXBCcm93c2VyRXZlbnQ8YW55PikgPT4gdGhpcy5vbk1hcFNpbmdsZUNsaWNrRXZlbnQoZXZlbnQpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbnN1YnNjcmliZSB0byBwb2ludGVyIHN0b3JlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHVuc3Vic2NyaWJlVG9Qb2ludGVyU3RvcmUoKSB7XG4gICAgdGhpcy5zdG9yZSQkLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCBsaXN0ZW5pbmcgZm9yIG1hcCBwb2ludGVybW92ZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgdW5saXN0ZW5Ub01hcFBvaW50ZXJNb3ZlKCkge1xuICAgIHVuQnlLZXkodGhpcy5wb2ludGVyTW92ZUxpc3RlbmVyKTtcbiAgICB0aGlzLnBvaW50ZXJNb3ZlTGlzdGVuZXIgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCBsaXN0ZW5pbmcgZm9yIG1hcCBzaW5nbGVjbGlja1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgdW5saXN0ZW5Ub01hcFNpbmdsZUNsaWNrKCkge1xuICAgIHVuQnlLZXkodGhpcy5zaW5nbGVDbGlja01hcExpc3RlbmVyKTtcbiAgICB0aGlzLnNpbmdsZUNsaWNrTWFwTGlzdGVuZXIgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlciBjbGVhciBsYXllciBvbiBzaW5nbGVjbGljay5cbiAgICogQHBhcmFtIGV2ZW50IE9MIG1hcCBicm93c2VyIHNpbmdsZWNsaWNrIGV2ZW50XG4gICAqL1xuICBwcml2YXRlIG9uTWFwU2luZ2xlQ2xpY2tFdmVudChldmVudDogT2xNYXBCcm93c2VyRXZlbnQ8YW55Pikge1xuICAgIHRoaXMuY2xlYXJMYXllcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXIgaG92ZXIgd2hlbiB0aGUgbW91c2UgaXMgbW90aW9ubGVzcyBkdXJpbmcgdGhlIGRlZmluZWQgZGVsYXkgKHBvaW50ZXJNb3ZlRGVsYXkpLlxuICAgKiBAcGFyYW0gZXZlbnQgT0wgbWFwIGJyb3dzZXIgcG9pbnRlciBldmVudFxuICAgKi9cbiAgcHJpdmF0ZSBvbk1hcEV2ZW50KGV2ZW50OiBPbE1hcEJyb3dzZXJFdmVudDxhbnk+KSB7XG4gICAgaWYgKFxuICAgICAgZXZlbnQuZHJhZ2dpbmcgfHwgIXRoaXMuaWdvSG92ZXJGZWF0dXJlRW5hYmxlZCB8fFxuICAgICAgdGhpcy5tZWRpYVNlcnZpY2UuaXNUb3VjaFNjcmVlbigpKSB7XG4gICAgICB0aGlzLmNsZWFyTGF5ZXIoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB0aGlzLmxhc3RUaW1lb3V0UmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcpIHsgLy8gY2FuY2VsIHRpbWVvdXQgd2hlbiB0aGUgbW91c2UgbW92ZXNcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmxhc3RUaW1lb3V0UmVxdWVzdCk7XG4gICAgfVxuICAgIGxldCBtYXhpbXVtWmluZGV4ID0gLUluZmluaXR5O1xuICAgIGxldCB0b3BNb3N0T2xMYXllcjtcbiAgICBjb25zdCBwaXhlbCA9IHRoaXMubWFwLm9sLmdldFBpeGVsRnJvbUNvb3JkaW5hdGUoZXZlbnQuY29vcmRpbmF0ZSk7XG4gICAgdGhpcy5sYXN0VGltZW91dFJlcXVlc3QgPSBzZXRUaW1lb3V0KCgpID0+IHtcblxuICAgICAgLy8gcmV0cmlldmUgdGhlIHRvcG1vc3QgbGF5ZXIgd2l0aCBmZWF0dXJlIHRvIG9ubHkgYXBwbHkgdGhlIGhvdmVyIG9uIHRoaXMgbGF5ZXIuXG4gICAgICB0aGlzLm1hcC5vbC5mb3JFYWNoRmVhdHVyZUF0UGl4ZWwocGl4ZWwsIChtYXBGZWF0dXJlOiBSZW5kZXJGZWF0dXJlIHwgT2xGZWF0dXJlPE9sR2VvbWV0cnk+LCBsYXllck9MOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKCFsYXllck9MKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlnb0xheWVyID0gdGhpcy5tYXAuZ2V0TGF5ZXJCeU9sVUlkKChsYXllck9MIGFzIGFueSkub2xfdWlkKTtcbiAgICAgICAgaWYgKCF0aGlzLmNhblByb2Nlc3NIb3ZlcihpZ29MYXllciBhcyBhbnkpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpZ29MYXllci56SW5kZXggPD0gbWF4aW11bVppbmRleCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBtYXhpbXVtWmluZGV4ID0gaWdvTGF5ZXIuekluZGV4O1xuICAgICAgICB0b3BNb3N0T2xMYXllciA9IGxheWVyT0w7XG5cbiAgICAgIH0sIHtcbiAgICAgICAgaGl0VG9sZXJhbmNlOiAxMCwgbGF5ZXJGaWx0ZXI6IG9sTGF5ZXIgPT4gb2xMYXllciBpbnN0YW5jZW9mIG9sTGF5ZXJWZWN0b3IgfHwgb2xMYXllciBpbnN0YW5jZW9mIG9sTGF5ZXJWZWN0b3JUaWxlXG4gICAgICB9KTtcbiAgICAgIGlmICghdG9wTW9zdE9sTGF5ZXIpIHtcbiAgICAgICAgLy8gVG8gY2xlYXIgbGFiZWxcbiAgICAgICAgdGhpcy5jbGVhckxheWVyKCk7XG4gICAgICAgIHRoaXMucG9pbnRlckhvdmVyRmVhdHVyZVN0b3JlLmNsZWFyKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5tYXAub2wuZm9yRWFjaEZlYXR1cmVBdFBpeGVsKHBpeGVsLCAobWFwRmVhdHVyZTogUmVuZGVyRmVhdHVyZSB8IE9sRmVhdHVyZTxPbEdlb21ldHJ5PiwgbGF5ZXJPTDogYW55KSA9PiB7XG4gICAgICAgIC8vIFRvIGF2b2lkIGZsYXNoaW5nIGZlYXR1cmVcbiAgICAgICAgaWYgKFxuICAgICAgICAgIG1hcEZlYXR1cmUuZ2V0KCdob3ZlclN1bW1hcnknKSA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgbWFwRmVhdHVyZS5nZXRQcm9wZXJ0aWVzKCkgIT09IHRoaXMucG9pbnRlckhvdmVyRmVhdHVyZVN0b3JlLmFsbCgpWzBdPy5nZXRQcm9wZXJ0aWVzKClcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5jbGVhckxheWVyKCk7XG4gICAgICAgICAgbGV0IGlnb0xheWVyO1xuICAgICAgICAgIGlmIChsYXllck9MIGluc3RhbmNlb2Ygb2xMYXllclZlY3Rvcikge1xuICAgICAgICAgICAgaWdvTGF5ZXIgPSB0aGlzLm1hcC5nZXRMYXllckJ5T2xVSWQoKGxheWVyT0wgYXMgYW55KS5vbF91aWQpIGFzIFZlY3RvckxheWVyO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNhblByb2Nlc3NIb3ZlcihpZ29MYXllcikpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGxvY2FsT2xGZWF0dXJlID0gdGhpcy5oYW5kbGVSZW5kZXJGZWF0dXJlKG1hcEZlYXR1cmUpO1xuICAgICAgICAgICAgdGhpcy5zZXRMYXllclN0eWxlRnJvbU9wdGlvbnMoaWdvTGF5ZXIsIGxvY2FsT2xGZWF0dXJlKTtcbiAgICAgICAgICAgIGNvbnN0IGZlYXR1cmVzVG9Mb2FkID0gW2xvY2FsT2xGZWF0dXJlXTtcbiAgICAgICAgICAgIGxvY2FsT2xGZWF0dXJlLnNldChcIl9pc0xhYmVsXCIsIGZhbHNlKTtcbiAgICAgICAgICAgIGNvbnN0IG15TGFiZWxPbEZlYXR1cmUgPSBuZXcgT2xGZWF0dXJlKCk7XG4gICAgICAgICAgICBteUxhYmVsT2xGZWF0dXJlLnNldFByb3BlcnRpZXMobG9jYWxPbEZlYXR1cmUuZ2V0UHJvcGVydGllcygpKTtcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsR2VvbSA9XG4gICAgICAgICAgICAgIGxvY2FsT2xGZWF0dXJlLmdldEdlb21ldHJ5KCkuZ2V0VHlwZSgpID09PSAnUG9pbnQnID8gbG9jYWxPbEZlYXR1cmUuZ2V0R2VvbWV0cnkoKSA6IG5ldyBPbEdlb20uUG9pbnQoZXZlbnQuY29vcmRpbmF0ZSk7XG4gICAgICAgICAgICBteUxhYmVsT2xGZWF0dXJlLnNldEdlb21ldHJ5KGxhYmVsR2VvbSk7XG4gICAgICAgICAgICBteUxhYmVsT2xGZWF0dXJlLnNldElkKGxvY2FsT2xGZWF0dXJlLmdldElkKCkpO1xuICAgICAgICAgICAgbXlMYWJlbE9sRmVhdHVyZS5zZXQoXCJfaXNMYWJlbFwiLCB0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuc2V0TGF5ZXJTdHlsZUZyb21PcHRpb25zKGlnb0xheWVyLCBteUxhYmVsT2xGZWF0dXJlKTtcbiAgICAgICAgICAgIGZlYXR1cmVzVG9Mb2FkLnB1c2gobXlMYWJlbE9sRmVhdHVyZSk7XG4gICAgICAgICAgICB0aGlzLnBvaW50ZXJIb3ZlckZlYXR1cmVTdG9yZS5sb2FkKGZlYXR1cmVzVG9Mb2FkKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobGF5ZXJPTCBpbnN0YW5jZW9mIG9sTGF5ZXJWZWN0b3JUaWxlKSB7XG4gICAgICAgICAgICBpZ29MYXllciA9IHRoaXMubWFwLmdldExheWVyQnlPbFVJZCgobGF5ZXJPTCBhcyBhbnkpLm9sX3VpZCkgYXMgVmVjdG9yVGlsZUxheWVyO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNhblByb2Nlc3NIb3ZlcihpZ29MYXllcikpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlnb0xheWVyPy5vcHRpb25zPy5zdHlsZUJ5QXR0cmlidXRlPy5ob3ZlclN0eWxlKSB7XG4gICAgICAgICAgICAgIHRoaXMubXZ0U3R5bGVPcHRpb25zID0gaWdvTGF5ZXIub3B0aW9ucy5zdHlsZUJ5QXR0cmlidXRlLmhvdmVyU3R5bGU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlnb0xheWVyPy5vcHRpb25zPy5ob3ZlclN0eWxlKSB7XG4gICAgICAgICAgICAgIHRoaXMubXZ0U3R5bGVPcHRpb25zID0gaWdvTGF5ZXIub3B0aW9ucy5ob3ZlclN0eWxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25MYXllci5zZXRTb3VyY2UobGF5ZXJPTC5nZXRTb3VyY2UoKSk7XG4gICAgICAgICAgICBsYXllck9MLmdldEZlYXR1cmVzKGV2ZW50LnBpeGVsKS50aGVuKChtdnRGZWF0dXJlczogKFJlbmRlckZlYXR1cmUgfCBPbEZlYXR1cmU8T2xHZW9tZXRyeT4pW10pID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFtdnRGZWF0dXJlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1WVCA9IHt9O1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTGF5ZXIuY2hhbmdlZCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJMYXllcigpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBmZWF0dXJlID0gbXZ0RmVhdHVyZXNbMF07XG4gICAgICAgICAgICAgIGlmICghZmVhdHVyZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJMYXllcigpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsZXQgbG9jYWxPbEZlYXR1cmUgPSB0aGlzLmhhbmRsZVJlbmRlckZlYXR1cmUoZmVhdHVyZSk7XG4gICAgICAgICAgICAgIGxvY2FsT2xGZWF0dXJlLnNldChcIl9pc0xhYmVsXCIsIGZhbHNlKTtcbiAgICAgICAgICAgICAgY29uc3QgbXlMYWJlbE9sRmVhdHVyZSA9IG5ldyBPbEZlYXR1cmUoKTtcbiAgICAgICAgICAgICAgbXlMYWJlbE9sRmVhdHVyZS5zZXRQcm9wZXJ0aWVzKGxvY2FsT2xGZWF0dXJlLmdldFByb3BlcnRpZXMoKSk7XG4gICAgICAgICAgICAgIGNvbnN0IGxhYmVsR2VvbSA9XG4gICAgICAgICAgICAgIGxvY2FsT2xGZWF0dXJlLmdldEdlb21ldHJ5KCkuZ2V0VHlwZSgpID09PSAnUG9pbnQnID8gbG9jYWxPbEZlYXR1cmUuZ2V0R2VvbWV0cnkoKSA6IG5ldyBPbEdlb20uUG9pbnQoZXZlbnQuY29vcmRpbmF0ZSk7XG4gICAgICAgICAgICAgIG15TGFiZWxPbEZlYXR1cmUuc2V0R2VvbWV0cnkobGFiZWxHZW9tKTtcbiAgICAgICAgICAgICAgbXlMYWJlbE9sRmVhdHVyZS5zZXRJZChsb2NhbE9sRmVhdHVyZS5nZXRJZCgpKTtcbiAgICAgICAgICAgICAgbXlMYWJlbE9sRmVhdHVyZS5zZXQoXCJfaXNMYWJlbFwiLCB0cnVlKTtcbiAgICAgICAgICAgICAgdGhpcy5zZXRMYXllclN0eWxlRnJvbU9wdGlvbnMoaWdvTGF5ZXIsIG15TGFiZWxPbEZlYXR1cmUpO1xuICAgICAgICAgICAgICB0aGlzLnBvaW50ZXJIb3ZlckZlYXR1cmVTdG9yZS5sb2FkKFtteUxhYmVsT2xGZWF0dXJlXSk7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTVZUW2ZlYXR1cmUuZ2V0SWQoKV0gPSBsb2NhbE9sRmVhdHVyZTtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25MYXllci5jaGFuZ2VkKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAgaGl0VG9sZXJhbmNlOiAxMCwgbGF5ZXJGaWx0ZXI6IG9sTGF5ZXIgPT4gb2xMYXllciA9PT0gdG9wTW9zdE9sTGF5ZXJcbiAgICAgIH0pO1xuICAgIH0sIHRoaXMuaWdvSG92ZXJGZWF0dXJlRGVsYXkpO1xuICB9XG5cbiAgY2FuUHJvY2Vzc0hvdmVyKGlnb0xheWVyOiBWZWN0b3JMYXllciB8IFZlY3RvclRpbGVMYXllcik6IGJvb2xlYW4ge1xuICAgIGlmICghaWdvTGF5ZXIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFpZ29MYXllci52aXNpYmxlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghaWdvTGF5ZXIub3B0aW9ucykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghaWdvTGF5ZXIub3B0aW9ucy5zdHlsZUJ5QXR0cmlidXRlICYmICFpZ29MYXllci5vcHRpb25zLmhvdmVyU3R5bGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAoaWdvTGF5ZXIub3B0aW9ucy5zdHlsZUJ5QXR0cmlidXRlICYmICFpZ29MYXllci5vcHRpb25zLnN0eWxlQnlBdHRyaWJ1dGUuaG92ZXJTdHlsZSkgJiZcbiAgICAgICFpZ29MYXllci5vcHRpb25zLmhvdmVyU3R5bGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBoYW5kbGVSZW5kZXJGZWF0dXJlKGZlYXR1cmU6IFJlbmRlckZlYXR1cmUgfCBPbEZlYXR1cmU8T2xHZW9tZXRyeT4pOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT4ge1xuICAgIGxldCBsb2NhbEZlYXR1cmU6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PjtcbiAgICBpZiAoZmVhdHVyZSBpbnN0YW5jZW9mIFJlbmRlckZlYXR1cmUpIHtcbiAgICAgIGxvY2FsRmVhdHVyZSA9IG5ldyBPbEZlYXR1cmUoe1xuICAgICAgICBnZW9tZXRyeTogdGhpcy5nZXRHZW9tZXRyeShmZWF0dXJlKVxuICAgICAgfSk7XG4gICAgICBsb2NhbEZlYXR1cmUuc2V0SWQoZmVhdHVyZS5nZXRJZCgpKTtcbiAgICB9IGVsc2UgaWYgKGZlYXR1cmUgaW5zdGFuY2VvZiBPbEZlYXR1cmUpIHtcbiAgICAgIGxvY2FsRmVhdHVyZSA9IGZlYXR1cmU7XG4gICAgfVxuICAgIGxvY2FsRmVhdHVyZS5zZXRQcm9wZXJ0aWVzKGZlYXR1cmUuZ2V0UHJvcGVydGllcygpKTtcbiAgICByZXR1cm4gbG9jYWxGZWF0dXJlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGZlYXR1cmUgdG8gdGhlIHBvaW50ZXIgc3RvcmVcbiAgICogQHBhcmFtIHRleHQgc3RyaW5nXG4gICAqL1xuICBwcml2YXRlIGFkZEZlYXR1cmVPdmVybGF5KGhvdmVyRW50aXR5OiBPbEZlYXR1cmU8T2xHZW9tZXRyeT5bXSkge1xuXG4gICAgaWYgKGhvdmVyRW50aXR5Lmxlbmd0aCA+IDApIHtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gaG92ZXJFbnRpdHlbMF07XG4gICAgICB0aGlzLmNsZWFyTGF5ZXIoKTtcbiAgICAgIGNvbnN0IGZlYXR1cmUgPSBuZXcgT2xGZWF0dXJlKHtcbiAgICAgICAgZ2VvbWV0cnk6IHJlc3VsdC5nZXRHZW9tZXRyeSgpLFxuICAgICAgICBtZXRhOiB7IGlkOiB0aGlzLmhvdmVyRmVhdHVyZUlkIH0sXG4gICAgICAgIGhvdmVyU3VtbWFyeTogdGhpcy5nZXRIb3ZlclN1bW1hcnkocmVzdWx0LmdldFByb3BlcnRpZXMoKSlcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnN0b3JlLnNldExheWVyT2xGZWF0dXJlcyhbZmVhdHVyZV0sIEZlYXR1cmVNb3Rpb24uTm9uZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRMYXllclN0eWxlRnJvbU9wdGlvbnMoaWdvTGF5ZXI6IFZlY3RvckxheWVyIHwgVmVjdG9yVGlsZUxheWVyLCBmZWF0dXJlOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT4pIHtcbiAgICBjb25zdCByZXNvbHV0aW9uID0gdGhpcy5zdG9yZS5sYXllci5tYXAudmlld0NvbnRyb2xsZXIuZ2V0UmVzb2x1dGlvbigpO1xuICAgIGlmIChpZ29MYXllcj8ub3B0aW9ucz8uc3R5bGVCeUF0dHJpYnV0ZT8uaG92ZXJTdHlsZSkge1xuICAgICAgdGhpcy5zdG9yZS5sYXllci5vbC5zZXRTdHlsZSh0aGlzLmNyZWF0ZUhvdmVyU3R5bGUoZmVhdHVyZSwgaWdvTGF5ZXIub3B0aW9ucy5zdHlsZUJ5QXR0cmlidXRlLmhvdmVyU3R5bGUsIHJlc29sdXRpb24pKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGlnb0xheWVyPy5vcHRpb25zPy5ob3ZlclN0eWxlKSB7XG4gICAgICB0aGlzLnN0b3JlLmxheWVyLm9sLnNldFN0eWxlKHRoaXMuY3JlYXRlSG92ZXJTdHlsZShmZWF0dXJlLCBpZ29MYXllci5vcHRpb25zLmhvdmVyU3R5bGUsIHJlc29sdXRpb24pKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEhvdmVyU3VtbWFyeShwcm9wZXJ0aWVzKTogc3RyaW5nIHtcbiAgICBsZXQgc3VtbWFyeSA9ICcnO1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHByb3BlcnRpZXMpKSB7XG4gICAgICBpZiAoIWtleS5zdGFydHNXaXRoKCdfJykgJiYga2V5ICE9PSAnZ2VvbWV0cnknKSB7XG4gICAgICAgIHN1bW1hcnkgKz0gYCR7a2V5fTogJHt2YWx1ZX1gICsgJ1xcbic7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdW1tYXJ5Lmxlbmd0aCA+PSAyID8gc3VtbWFyeS5zbGljZSgwLCAtMikgOiBzdW1tYXJ5O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHZW9tZXRyeShmZWF0dXJlKTogT2xHZW9tLkdlb21ldHJ5IHtcbiAgICBsZXQgZ2VvbTtcbiAgICBpZiAoIWZlYXR1cmUuZ2V0T3JpZW50ZWRGbGF0Q29vcmRpbmF0ZXMpIHtcbiAgICAgIGdlb20gPSBmZWF0dXJlLmdldEdlb21ldHJ5KCk7XG4gICAgfSBlbHNlIHtcblxuICAgICAgY29uc3QgY29vcmRzID0gZmVhdHVyZS5nZXRPcmllbnRlZEZsYXRDb29yZGluYXRlcygpO1xuICAgICAgY29uc3QgZmxhdENvb3JkcyA9IFtdO1xuXG4gICAgICBjb29yZHMuZm9yRWFjaCgoYywgaWR4KSA9PiB7XG4gICAgICAgIGlmIChpZHggJSAyID09PSAwKSB7XG4gICAgICAgICAgZmxhdENvb3Jkcy5wdXNoKFtwYXJzZUZsb2F0KGNvb3Jkc1tpZHhdKSwgcGFyc2VGbG9hdChjb29yZHNbaWR4ICsgMV0pXSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBUT0RPOiB0ZXN0IE11bHRpWFxuICAgICAgc3dpdGNoIChmZWF0dXJlLmdldFR5cGUoKSkge1xuICAgICAgICBjYXNlICdQb2ludCc6XG4gICAgICAgICAgZ2VvbSA9IG5ldyBPbEdlb20uUG9pbnQoZmxhdENvb3Jkcyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1BvbHlnb24nOlxuICAgICAgICAgIGdlb20gPSBuZXcgT2xHZW9tLlBvbHlnb24oW2ZsYXRDb29yZHNdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnTGluZVN0cmluZyc6XG4gICAgICAgICAgZ2VvbSA9IG5ldyBPbEdlb20uTGluZVN0cmluZyhbZmxhdENvb3Jkc10pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBnZW9tO1xuICB9XG5cblxuICAvKipcbiAgICogQ2xlYXIgdGhlIHBvaW50ZXIgc3RvcmUgZmVhdHVyZXNcbiAgICovXG4gIHByaXZhdGUgY2xlYXJMYXllcigpIHtcbiAgICB0aGlzLnNlbGVjdGlvbk1WVCA9IHt9O1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbkxheWVyKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbkxheWVyLmNoYW5nZWQoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3RvcmUpIHtcbiAgICAgIHRoaXMuc3RvcmUuY2xlYXJMYXllcigpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIGRlZmF1bHQgc3R5bGUgZm9yIHRoZSBwb2ludGVyIHBvc2l0aW9uIGFuZCBpdCdzIGxhYmVsIHN1bW1hcnkuXG4gKiBAcGFyYW0gZmVhdHVyZSBPbEZlYXR1cmVcbiAqIEByZXR1cm5zIE9MIHN0eWxlIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBob3ZlckZlYXR1cmVNYXJrZXIoZmVhdHVyZTogT2xGZWF0dXJlPE9sR2VvbS5HZW9tZXRyeT4sIHJlc29sdXRpb246IG51bWJlcik6IE9sU3R5bGUuU3R5bGVbXSB7XG5cbiAgY29uc3Qgb2xTdHlsZVRleHQgPSBuZXcgT2xTdHlsZS5TdHlsZSh7XG4gICAgdGV4dDogbmV3IE9sU3R5bGUuVGV4dCh7XG4gICAgICB0ZXh0OiBmZWF0dXJlLmdldCgnaG92ZXJTdW1tYXJ5JyksXG4gICAgICB0ZXh0QWxpZ246ICdsZWZ0JyxcbiAgICAgIHRleHRCYXNlbGluZTogJ3RvcCcsXG4gICAgICBmb250OiAnMTJweCBDYWxpYnJpLHNhbnMtc2VyaWYnLFxuICAgICAgZmlsbDogbmV3IE9sU3R5bGUuRmlsbCh7IGNvbG9yOiAnIzAwMCcgfSksXG4gICAgICBiYWNrZ3JvdW5kRmlsbDogbmV3IE9sU3R5bGUuRmlsbCh7IGNvbG9yOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpJyB9KSxcbiAgICAgIGJhY2tncm91bmRTdHJva2U6IG5ldyBPbFN0eWxlLlN0cm9rZSh7IGNvbG9yOiAncmdiYSgyMDAsIDIwMCwgMjAwLCAwLjc1KScsIHdpZHRoOiAyIH0pLFxuICAgICAgc3Ryb2tlOiBuZXcgT2xTdHlsZS5TdHJva2UoeyBjb2xvcjogJyNmZmYnLCB3aWR0aDogMyB9KSxcbiAgICAgIG92ZXJmbG93OiB0cnVlLFxuICAgICAgb2Zmc2V0WDogMTAsXG4gICAgICBvZmZzZXRZOiAyMCxcbiAgICAgIHBhZGRpbmc6IFsyLjUsIDIuNSwgMi41LCAyLjVdXG4gICAgfSlcbiAgfSk7XG5cbiAgY29uc3Qgb2xTdHlsZSA9IFtvbFN0eWxlVGV4dF07XG4gIHN3aXRjaCAoZmVhdHVyZS5nZXRHZW9tZXRyeSgpLmdldFR5cGUoKSkge1xuICAgIGNhc2UgJ1BvaW50JzpcbiAgICAgIG9sU3R5bGUucHVzaChuZXcgT2xTdHlsZS5TdHlsZSh7XG4gICAgICAgIGltYWdlOiBuZXcgT2xTdHlsZS5DaXJjbGUoe1xuICAgICAgICAgIHJhZGl1czogMTAsXG4gICAgICAgICAgc3Ryb2tlOiBuZXcgT2xTdHlsZS5TdHJva2Uoe1xuICAgICAgICAgICAgY29sb3I6ICdibHVlJyxcbiAgICAgICAgICAgIHdpZHRoOiAzXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgIH0pKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBvbFN0eWxlLnB1c2gobmV3IE9sU3R5bGUuU3R5bGUoe1xuICAgICAgICBzdHJva2U6IG5ldyBPbFN0eWxlLlN0cm9rZSh7XG4gICAgICAgICAgY29sb3I6ICd3aGl0ZScsXG4gICAgICAgICAgd2lkdGg6IDVcbiAgICAgICAgfSlcbiAgICAgIH0pKTtcbiAgICAgIG9sU3R5bGUucHVzaChuZXcgT2xTdHlsZS5TdHlsZSh7XG4gICAgICAgIHN0cm9rZTogbmV3IE9sU3R5bGUuU3Ryb2tlKHtcbiAgICAgICAgICBjb2xvcjogJ2JsdWUnLFxuICAgICAgICAgIHdpZHRoOiAzXG4gICAgICAgIH0pXG4gICAgICB9KSk7XG4gIH1cblxuICByZXR1cm4gb2xTdHlsZTtcblxufVxuIl19
@@ -11,4 +11,4 @@ export * from './projection.service';
11
11
  export * from './controllers';
12
12
  export * from './projection.utils';
13
13
  export * from './linkedLayers.utils';
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsT0FBTyxDQUFDO0FBQ3RCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbWFwJztcclxuZXhwb3J0ICogZnJvbSAnLi9tYXAuZW51bXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL21hcC5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL21hcC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9tYXAudXRpbHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL21hcE9mZmxpbmUuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9tYXAtcG9pbnRlci1wb3NpdGlvbi5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2hvdmVyLWZlYXR1cmUuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9wcm9qZWN0aW9uLmludGVyZmFjZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL3Byb2plY3Rpb24uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbGxlcnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL3Byb2plY3Rpb24udXRpbHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpbmtlZExheWVycy51dGlscyc7XHJcbiJdfQ==
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsT0FBTyxDQUFDO0FBQ3RCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbWFwJztcbmV4cG9ydCAqIGZyb20gJy4vbWFwLmVudW1zJztcbmV4cG9ydCAqIGZyb20gJy4vbWFwLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL21hcC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbWFwLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbWFwT2ZmbGluZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9tYXAtcG9pbnRlci1wb3NpdGlvbi5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9ob3Zlci1mZWF0dXJlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3Byb2plY3Rpb24uaW50ZXJmYWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL3Byb2plY3Rpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRyb2xsZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvamVjdGlvbi51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2xpbmtlZExheWVycy51dGlscyc7XG4iXX0=
@@ -53,7 +53,7 @@ export function getDirectParentLayerByProperty(map, layer, property) {
53
53
  }
54
54
  });
55
55
  if (parents.length > 1) {
56
- console.warn(`Your layer ${layer.title || layer.id} must only have 1 parent (${parents.map(p => p.title || p.id)})
56
+ console.warn(`Your layer ${layer.title || layer.id} must only have 1 parent (${parents.map(p => p.title || p.id)})
57
57
  , The first parent (${parents[0].title || parents[0].id}) will be use to sync properties`);
58
58
  }
59
59
  return parents[0];
@@ -108,7 +108,7 @@ export function getDirectParentLayerByDeletion(map, layer) {
108
108
  }
109
109
  });
110
110
  if (parents.length > 1) {
111
- console.warn(`Your layer ${layer.title || layer.id} must only have 1 parent (${parents.map(p => p.title || p.id)})
111
+ console.warn(`Your layer ${layer.title || layer.id} must only have 1 parent (${parents.map(p => p.title || p.id)})
112
112
  , The first parent (${parents[0].title || parents[0].id}) will be use to sync properties`);
113
113
  }
114
114
  return parents[0];
@@ -237,4 +237,4 @@ export function handleLayerPropertyChange(map, propertyChange, initiatorIgoLayer
237
237
  }
238
238
  }
239
239
  }
240
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VkTGF5ZXJzLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9saW5rZWRMYXllcnMudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNqQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFHbkYsT0FBTyxFQUFTLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWpFLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxLQUFZO0lBQy9DLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFDdEMsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxHQUFXLEVBQUUsRUFBVTtJQUN2RCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsTUFBTSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZFLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsS0FBWSxFQUFFLFFBQTBCO0lBQzdFLElBQUksbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLE1BQU0sY0FBYyxHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JELElBQUksY0FBYyxFQUFFLEtBQUssRUFBRTtRQUN2QixNQUFNLElBQUksR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDN0UsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLENB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QUFNLElBQUksMkJBQTJCLEtBQUssS0FBSyxFQUFFO2dDQUNoRCxnQkFBZ0IsR0FBSSxpQkFBaUIsQ0FBQyxVQUE0QixDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLENBQUM7NkJBQzFGOzRCQUNBLENBQUMsQ0FBQyxVQUE0QixDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO3lCQUMvRTtxQkFDRjt5QkFBTSxJQUFJLENBQUMsQ0FBQyxVQUFVLFlBQVksYUFBYSxJQUFJLEdBQUcsS0FBSyxZQUFZLEVBQUU7d0JBQ3ZFLENBQUMsQ0FBQyxVQUF1QyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7d0JBQzFFLE1BQU0saUJBQWlCLEdBQUksaUJBQWlCLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBdUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUM7d0JBQ2xHLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7cUJBQzNEO2lCQUNGO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksNEJBQTRCLEVBQUU7WUFDaEMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzNFO0tBR0Y7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JqZWN0RXZlbnQgfSBmcm9tIFwib2wvT2JqZWN0XCI7XHJcbmltcG9ydCB7IGdldFVpZCB9IGZyb20gXCJvbC91dGlsXCI7XHJcbmltcG9ydCB7IFdNU0RhdGFTb3VyY2UgfSBmcm9tIFwiLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvd21zLWRhdGFzb3VyY2VcIjtcclxuaW1wb3J0IHsgT2djRmlsdGVyYWJsZURhdGFTb3VyY2UsIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyB9IGZyb20gXCIuLi8uLi9maWx0ZXIvc2hhcmVkL29nYy1maWx0ZXIuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7IFRpbWVGaWx0ZXJhYmxlRGF0YVNvdXJjZSwgVGltZUZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyB9IGZyb20gXCIuLi8uLi9maWx0ZXIvc2hhcmVkL3RpbWUtZmlsdGVyLmludGVyZmFjZVwiO1xyXG5pbXBvcnQgeyBMYXllciwgTGlua2VkUHJvcGVydGllcyB9IGZyb20gXCIuLi8uLi9sYXllci9zaGFyZWQvbGF5ZXJzXCI7XHJcbmltcG9ydCB7IElnb01hcCB9IGZyb20gXCIuL21hcFwiO1xyXG5pbXBvcnQgb2xTb3VyY2VJbWFnZVdNUyBmcm9tICdvbC9zb3VyY2UvSW1hZ2VXTVMnO1xyXG5pbXBvcnQgeyBPZ2NGaWx0ZXJXcml0ZXIgfSBmcm9tICcuLi8uLi9maWx0ZXIvc2hhcmVkL29nYy1maWx0ZXInO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldExpbmtlZExheWVyc09wdGlvbnMobGF5ZXI6IExheWVyKSB7XHJcbiAgICByZXR1cm4gbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRJZ29MYXllckJ5TGlua0lkKG1hcDogSWdvTWFwLCBpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gbWFwLmxheWVycy5maW5kKGwgPT4gbC5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua0lkID09PSBpZCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBsYXllckhhc0xpbmtXaXRoUHJvcGVydHkobGF5ZXI6IExheWVyLCBwcm9wZXJ0eTogTGlua2VkUHJvcGVydGllcyk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGhhc0xpbmtXaXRoUHJvcGVydHkgPSBmYWxzZTtcclxuICAgIGNvbnN0IGxheWVyTExPcHRpb25zID0gZ2V0TGlua2VkTGF5ZXJzT3B0aW9ucyhsYXllcik7XHJcbiAgICBpZiAobGF5ZXJMTE9wdGlvbnM/LmxpbmtzKSB7XHJcbiAgICAgICAgY29uc3QgbGluayA9IGxheWVyTExPcHRpb25zLmxpbmtzLmZpbmQobCA9PiBsLnByb3BlcnRpZXMuaW5jbHVkZXMocHJvcGVydHkpKTtcclxuICAgICAgICBoYXNMaW5rV2l0aFByb3BlcnR5ID0gbGluayA/IHRydWUgOiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBoYXNMaW5rV2l0aFByb3BlcnR5O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbGF5ZXJIYXNMaW5rRGVsZXRpb24obGF5ZXI6IExheWVyKTogYm9vbGVhbiB7XHJcbiAgbGV0IGhhc0xpbmtXaXRoU3luY2VkRGVsZXRlID0gZmFsc2U7XHJcbiAgY29uc3QgbGF5ZXJMTE9wdGlvbnMgPSBnZXRMaW5rZWRMYXllcnNPcHRpb25zKGxheWVyKTtcclxuICBpZiAobGF5ZXJMTE9wdGlvbnM/LmxpbmtzKSB7XHJcbiAgICAgIGNvbnN0IGxpbmsgPSBsYXllckxMT3B0aW9ucy5saW5rcy5maW5kKGwgPT4gbC5zeW5jZWREZWxldGUpO1xyXG4gICAgICBoYXNMaW5rV2l0aFN5bmNlZERlbGV0ZSA9IGxpbmsgPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG4gIHJldHVybiBoYXNMaW5rV2l0aFN5bmNlZERlbGV0ZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFJvb3RQYXJlbnRCeVByb3BlcnR5KG1hcDogSWdvTWFwLCBsYXllcjogTGF5ZXIsIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzKTogTGF5ZXIge1xyXG4gICAgbGV0IGxheWVyVG9Vc2UgPSBsYXllcjtcclxuICAgIGxldCBwYXJlbnRMYXllciA9IGxheWVyVG9Vc2U7XHJcbiAgICBsZXQgaGFzUGFyZW50TGF5ZXIgPSB0cnVlO1xyXG4gICAgd2hpbGUgKGhhc1BhcmVudExheWVyKSB7XHJcbiAgICAgICAgbGF5ZXJUb1VzZSA9IHBhcmVudExheWVyO1xyXG4gICAgICAgIHBhcmVudExheWVyID0gZ2V0RGlyZWN0UGFyZW50TGF5ZXJCeVByb3BlcnR5KG1hcCwgbGF5ZXJUb1VzZSwgcHJvcGVydHkpO1xyXG4gICAgICAgIGhhc1BhcmVudExheWVyID0gcGFyZW50TGF5ZXIgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAoIWhhc1BhcmVudExheWVyKSB7XHJcbiAgICAgICAgaWYgKCFsYXllckhhc0xpbmtXaXRoUHJvcGVydHkobGF5ZXJUb1VzZSxwcm9wZXJ0eSkpIHtcclxuICAgICAgICAgICAgbGF5ZXJUb1VzZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaGFzUGFyZW50TGF5ZXIgPyBwYXJlbnRMYXllciA6IGxheWVyVG9Vc2U7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXREaXJlY3RQYXJlbnRMYXllckJ5UHJvcGVydHkobWFwOiBJZ29NYXAsIGxheWVyOiBMYXllciwgcHJvcGVydHk6IExpbmtlZFByb3BlcnRpZXMpOiBMYXllciB7XHJcbiAgICBpZiAobGF5ZXI/Lm9wdGlvbnMubGlua2VkTGF5ZXJzPy5saW5rSWQpIHtcclxuICAgICAgICBjb25zdCBjdXJyZW50TGlua0lkID0gbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua0lkO1xyXG4gICAgICAgIGxldCBwYXJlbnRzID0gbWFwLmxheWVycy5maWx0ZXIocGwgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBsaW5rZWRMYXllcnMgPSBwbC5vcHRpb25zLmxpbmtlZExheWVycztcclxuICAgICAgICAgICAgaWYgKGxpbmtlZExheWVycyAmJiBsaW5rZWRMYXllcnMubGlua3MpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBsaW5rZWRMYXllcnMubGlua3MuZmluZChsID0+IGwubGlua2VkSWRzLmluY2x1ZGVzKGN1cnJlbnRMaW5rSWQpICYmIGwucHJvcGVydGllcy5pbmNsdWRlcyhwcm9wZXJ0eSkpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAocGFyZW50cy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgWW91ciBsYXllciAke2xheWVyLnRpdGxlIHx8IGxheWVyLmlkfSBtdXN0IG9ubHkgaGF2ZSAxIHBhcmVudCAoJHtwYXJlbnRzLm1hcChwID0+IHAudGl0bGUgfHwgcC5pZCl9KVxyXG4gICAgICAgICAgICAsIFRoZSBmaXJzdCBwYXJlbnQgKCR7cGFyZW50c1swXS50aXRsZSB8fCBwYXJlbnRzWzBdLmlkfSkgd2lsbCBiZSB1c2UgdG8gc3luYyBwcm9wZXJ0aWVzYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwYXJlbnRzWzBdO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGlyZWN0Q2hpbGRMYXllcnNCeVByb3BlcnR5KG1hcDogSWdvTWFwLCBsYXllcjogTGF5ZXIsIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzKTogTGF5ZXJbXSB7XHJcbiAgICBsZXQgbGlua2VkSWRzID0gW107XHJcbiAgICBpZiAobGF5ZXI/Lm9wdGlvbnMubGlua2VkTGF5ZXJzPy5saW5rcykge1xyXG4gICAgICAgIGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtzXHJcbiAgICAgICAgLmZpbHRlcihsID0+IGwucHJvcGVydGllcy5pbmNsdWRlcyhwcm9wZXJ0eSkpXHJcbiAgICAgICAgLm1hcChsaW5rID0+IHtcclxuICAgICAgICAgICAgbGlua2VkSWRzID0gbGlua2VkSWRzLmNvbmNhdChsaW5rLmxpbmtlZElkcyk7fSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbGlua2VkSWRzLm1hcChsaWQgPT4gZ2V0SWdvTGF5ZXJCeUxpbmtJZChtYXAsIGxpZCkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsQ2hpbGRMYXllcnNCeVByb3BlcnR5KG1hcDogSWdvTWFwLCBsYXllcjogTGF5ZXIsIGtub3duQ2hpbGRMYXllcnM6IExheWVyW10sIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzKTogTGF5ZXJbXSB7XHJcbiAgICBsZXQgY2hpbGRMYXllcnMgPSBnZXREaXJlY3RDaGlsZExheWVyc0J5UHJvcGVydHkobWFwLCBsYXllcixwcm9wZXJ0eSk7XHJcbiAgICBjaGlsZExheWVycy5tYXAoY2wgPT4ge1xyXG4gICAgICAgIGtub3duQ2hpbGRMYXllcnMucHVzaChjbCk7XHJcbiAgICAgICAgY29uc3QgZGlyZWN0Q2hpbGRMYXllcnMgPSBnZXREaXJlY3RDaGlsZExheWVyc0J5UHJvcGVydHkobWFwLCBjbCwgcHJvcGVydHkpO1xyXG4gICAgICAgIGlmIChkaXJlY3RDaGlsZExheWVycykge1xyXG4gICAgICAgICAgICBnZXRBbGxDaGlsZExheWVyc0J5UHJvcGVydHkobWFwLCBjbCwga25vd25DaGlsZExheWVycywgcHJvcGVydHkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBrbm93bkNoaWxkTGF5ZXJzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um9vdFBhcmVudEJ5RGVsZXRpb24obWFwOiBJZ29NYXAsIGxheWVyOiBMYXllcik6IExheWVyIHtcclxuICBsZXQgbGF5ZXJUb1VzZSA9IGxheWVyO1xyXG4gIGxldCBwYXJlbnRMYXllciA9IGxheWVyVG9Vc2U7XHJcbiAgbGV0IGhhc1BhcmVudExheWVyID0gdHJ1ZTtcclxuICB3aGlsZSAoaGFzUGFyZW50TGF5ZXIpIHtcclxuICAgICAgbGF5ZXJUb1VzZSA9IHBhcmVudExheWVyO1xyXG4gICAgICBwYXJlbnRMYXllciA9IGdldERpcmVjdFBhcmVudExheWVyQnlEZWxldGlvbihtYXAsIGxheWVyVG9Vc2UpO1xyXG4gICAgICBoYXNQYXJlbnRMYXllciA9IHBhcmVudExheWVyID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuICBpZiAoIWhhc1BhcmVudExheWVyKSB7XHJcbiAgICBpZiAoIWxheWVySGFzTGlua0RlbGV0aW9uKGxheWVyVG9Vc2UpKSB7XHJcbiAgICAgIGxheWVyVG9Vc2UgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBoYXNQYXJlbnRMYXllciA/IHBhcmVudExheWVyIDogbGF5ZXJUb1VzZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldERpcmVjdFBhcmVudExheWVyQnlEZWxldGlvbihtYXA6IElnb01hcCwgbGF5ZXI6IExheWVyKTogTGF5ZXIge1xyXG4gIGlmIChsYXllci5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua0lkKSB7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRMaW5rSWQgPSBsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rSWQ7XHJcbiAgICAgIGxldCBwYXJlbnRzID0gbWFwLmxheWVycy5maWx0ZXIocGwgPT4ge1xyXG4gICAgICAgICAgY29uc3QgbGlua2VkTGF5ZXJzID0gcGwub3B0aW9ucy5saW5rZWRMYXllcnM7XHJcbiAgICAgICAgICBpZiAobGlua2VkTGF5ZXJzICYmIGxpbmtlZExheWVycy5saW5rcykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGEgPSBsaW5rZWRMYXllcnMubGlua3MuZmluZChsID0+IChsLmxpbmtlZElkcy5pbmNsdWRlcyhjdXJyZW50TGlua0lkKSAmJiBsLnN5bmNlZERlbGV0ZSkpO1xyXG4gICAgICAgICAgICAgIHJldHVybiBhO1xyXG4gICAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHBhcmVudHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgY29uc29sZS53YXJuKGBZb3VyIGxheWVyICR7bGF5ZXIudGl0bGUgfHwgbGF5ZXIuaWR9IG11c3Qgb25seSBoYXZlIDEgcGFyZW50ICgke3BhcmVudHMubWFwKHAgPT4gcC50aXRsZSB8fCBwLmlkKX0pXHJcbiAgICAgICAgICAsIFRoZSBmaXJzdCBwYXJlbnQgKCR7cGFyZW50c1swXS50aXRsZSB8fCBwYXJlbnRzWzBdLmlkfSkgd2lsbCBiZSB1c2UgdG8gc3luYyBwcm9wZXJ0aWVzYCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHBhcmVudHNbMF07XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGlyZWN0Q2hpbGRMYXllcnNCeURlbGV0aW9uKG1hcDogSWdvTWFwLCBsYXllcjogTGF5ZXIpOiBMYXllcltdIHtcclxuICBsZXQgbGlua2VkSWRzID0gW107XHJcbiAgaWYgKGxheWVyPy5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua3MpIHtcclxuICAgICAgbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua3NcclxuICAgICAgLmZpbHRlcihsID0+IGwuc3luY2VkRGVsZXRlKVxyXG4gICAgICAubWFwKGxpbmsgPT4ge1xyXG4gICAgICAgICAgbGlua2VkSWRzID0gbGlua2VkSWRzLmNvbmNhdChsaW5rLmxpbmtlZElkcyk7fSk7XHJcbiAgfVxyXG4gIHJldHVybiBsaW5rZWRJZHMubWFwKGxpZCA9PiBnZXRJZ29MYXllckJ5TGlua0lkKG1hcCwgbGlkKSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxDaGlsZExheWVyc0J5RGVsZXRpb24obWFwOiBJZ29NYXAsIGxheWVyOiBMYXllciwga25vd25DaGlsZExheWVyczogTGF5ZXJbXSk6IExheWVyW10ge1xyXG4gIGxldCBjaGlsZExheWVycyA9IGdldERpcmVjdENoaWxkTGF5ZXJzQnlEZWxldGlvbihtYXAsIGxheWVyKTtcclxuICBjaGlsZExheWVycy5tYXAoY2wgPT4ge1xyXG4gICAgICBrbm93bkNoaWxkTGF5ZXJzLnB1c2goY2wpO1xyXG4gICAgICBjb25zdCBkaXJlY3RDaGlsZExheWVycyA9IGdldERpcmVjdENoaWxkTGF5ZXJzQnlEZWxldGlvbihtYXAsIGNsKTtcclxuICAgICAgaWYgKGRpcmVjdENoaWxkTGF5ZXJzKSB7XHJcbiAgICAgICAgZ2V0QWxsQ2hpbGRMYXllcnNCeURlbGV0aW9uKG1hcCwgY2wsIGtub3duQ2hpbGRMYXllcnMpO1xyXG4gICAgICB9XHJcblxyXG4gIH0pO1xyXG4gIHJldHVybiBrbm93bkNoaWxkTGF5ZXJzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaW5pdExheWVyU3luY0Zyb21Sb290UGFyZW50TGF5ZXJzKG1hcDogSWdvTWFwLCBsYXllcnM6IExheWVyW10pIHtcclxuICAgIGNvbnN0IHJvb3RMYXllcnNCeVByb3BlcnR5ID0ge307XHJcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoTGlua2VkUHJvcGVydGllcyk7XHJcbiAgICBrZXlzLm1hcChrID0+IHtcclxuICAgICAgcm9vdExheWVyc0J5UHJvcGVydHlbTGlua2VkUHJvcGVydGllc1trXV0gPSBbXTtcclxuICAgIH0pO1xyXG4gICAgbGF5ZXJzXHJcbiAgICAgIC5maWx0ZXIobCA9PiBnZXRMaW5rZWRMYXllcnNPcHRpb25zKGwpKVxyXG4gICAgICAubWFwKGwgPT4ge1xyXG4gICAgICAgIGtleXMubWFwKGtleSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBrID0gTGlua2VkUHJvcGVydGllc1trZXldO1xyXG4gICAgICAgICAgY29uc3QgcGxicCA9IGdldFJvb3RQYXJlbnRCeVByb3BlcnR5KG1hcCwgbCwgayBhcyBMaW5rZWRQcm9wZXJ0aWVzKTtcclxuICAgICAgICAgIGNvbnN0IGxheWVycyA9IHJvb3RMYXllcnNCeVByb3BlcnR5W2tdO1xyXG4gICAgICAgICAgY29uc3QgbGF5ZXJzSWQgPSBsYXllcnMubWFwKGwgPT4gbC5pZCk7XHJcbiAgICAgICAgICBpZiAocGxicCAmJiAhbGF5ZXJzSWQuaW5jbHVkZXMocGxicC5pZCkpIHtcclxuICAgICAgICAgICAgcm9vdExheWVyc0J5UHJvcGVydHlba10ucHVzaChwbGJwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICBPYmplY3Qua2V5cyhyb290TGF5ZXJzQnlQcm9wZXJ0eSkubWFwKGsgPT4ge1xyXG4gICAgICBjb25zdCBsYXllcnMgPSByb290TGF5ZXJzQnlQcm9wZXJ0eVtrXTtcclxuICAgICAgbGF5ZXJzLm1hcCgobDogTGF5ZXIpID0+IGwub2wubm90aWZ5KGssIHVuZGVmaW5lZCkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBleHBvcnQgZnVuY3Rpb24gaGFuZGxlTGF5ZXJQcm9wZXJ0eUNoYW5nZShtYXA6IElnb01hcCwgcHJvcGVydHlDaGFuZ2U6IE9iamVjdEV2ZW50LCBpbml0aWF0b3JJZ29MYXllcjogTGF5ZXIpIHtcclxuICAgIGlmICghcHJvcGVydHlDaGFuZ2UpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb2djRmlsdGVyV3JpdGVyID0gbmV3IE9nY0ZpbHRlcldyaXRlcigpO1xyXG4gICAgbGV0IGlzTGF5ZXJQcm9wZXJ0eSA9IHRydWU7XHJcbiAgICBsZXQgaXNEYXRhc291cmNlUHJvcGVydHkgPSB0cnVlO1xyXG4gICAgY29uc3Qga2V5ID0gcHJvcGVydHlDaGFuZ2Uua2V5O1xyXG4gICAgbGV0IG5ld1ZhbHVlO1xyXG4gICAgaWYgKGtleSA9PT0gJ29nY0ZpbHRlcnMnKSB7XHJcbiAgICAgIGlzTGF5ZXJQcm9wZXJ0eSA9IGZhbHNlO1xyXG4gICAgICBpc0RhdGFzb3VyY2VQcm9wZXJ0eSA9IHRydWU7XHJcbiAgICAgIG5ld1ZhbHVlID0gKGluaXRpYXRvcklnb0xheWVyLmRhdGFTb3VyY2Uub3B0aW9ucyBhcyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMpLm9nY0ZpbHRlcnM7XHJcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ3RpbWVGaWx0ZXInKSB7XHJcbiAgICAgIGlzTGF5ZXJQcm9wZXJ0eSA9IGZhbHNlO1xyXG4gICAgICBpc0RhdGFzb3VyY2VQcm9wZXJ0eSA9IHRydWU7XHJcbiAgICAgIG5ld1ZhbHVlID0gKGluaXRpYXRvcklnb0xheWVyLmRhdGFTb3VyY2Uub3B0aW9ucyBhcyBUaW1lRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zKS50aW1lRmlsdGVyO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaXNMYXllclByb3BlcnR5ID0gdHJ1ZTtcclxuICAgICAgaXNEYXRhc291cmNlUHJvcGVydHkgPSBmYWxzZTtcclxuICAgICAgbmV3VmFsdWUgPSBpbml0aWF0b3JJZ29MYXllci5vbC5nZXQoa2V5KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpbml0aWF0b3JMaW5rZWRMYXllcnNPcHRpb25zID0gZ2V0TGlua2VkTGF5ZXJzT3B0aW9ucyhpbml0aWF0b3JJZ29MYXllcik7XHJcbiAgICBpZiAoaW5pdGlhdG9yTGlua2VkTGF5ZXJzT3B0aW9ucykge1xyXG4gICAgICBsZXQgcm9vdFBhcmVudEJ5UHJvcGVydHkgPSBnZXRSb290UGFyZW50QnlQcm9wZXJ0eShtYXAsaW5pdGlhdG9ySWdvTGF5ZXIsIGtleSBhcyBMaW5rZWRQcm9wZXJ0aWVzKTtcclxuICAgICAgaWYgKCFyb290UGFyZW50QnlQcm9wZXJ0eSkge1xyXG4gICAgICAgIHJvb3RQYXJlbnRCeVByb3BlcnR5ID0gaW5pdGlhdG9ySWdvTGF5ZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGNsYnAgPSBbcm9vdFBhcmVudEJ5UHJvcGVydHldO1xyXG4gICAgICBnZXRBbGxDaGlsZExheWVyc0J5UHJvcGVydHkobWFwLCByb290UGFyZW50QnlQcm9wZXJ0eSwgY2xicCwga2V5IGFzIExpbmtlZFByb3BlcnRpZXMpO1xyXG5cclxuICAgICAgbGV0IHJlc29sdXRpb25Qcm9wZXJ0eUhhc0NoYW5nZWQgPSBmYWxzZTtcclxuICAgICAgY29uc3QgaW5pdGlhdG9ySWdvTGF5ZXJTb3VyY2VUeXBlID0gaW5pdGlhdG9ySWdvTGF5ZXIub3B0aW9ucy5zb3VyY2Uub3B0aW9ucy50eXBlO1xyXG4gICAgICBjb25zdCBpbml0aWF0b3JJZ29MYXllck9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyA9IGluaXRpYXRvcklnb0xheWVyLmRhdGFTb3VyY2Uub3B0aW9ucyBhcyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnM7XHJcbiAgICAgIGNsYnAubWFwKGwgPT4ge1xyXG4gICAgICAgIGlmIChpbml0aWF0b3JJZ29MYXllciAmJiBsICYmIGdldFVpZChpbml0aWF0b3JJZ29MYXllci5vbCkgIT09IGdldFVpZChsPy5vbCkpIHtcclxuICAgICAgICAgIGNvbnN0IGxMYXllclR5cGUgPSBsLm9wdGlvbnMuc291cmNlLm9wdGlvbnMudHlwZTtcclxuICAgICAgICAgIGlmIChpc0xheWVyUHJvcGVydHkpIHtcclxuICAgICAgICAgIGwub2wuc2V0KGtleSwgbmV3VmFsdWUsIHRydWUpO1xyXG4gICAgICAgICAgaWYgKGtleSA9PT0gJ3Zpc2libGUnKSB7XHJcbiAgICAgICAgICAgIGwudmlzaWJsZSQubmV4dChuZXdWYWx1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoa2V5ID09PSAnbWluUmVzb2x1dGlvbicgfHwga2V5ID09PSAnbWF4UmVzb2x1dGlvbicpIHtcclxuICAgICAgICAgICAgcmVzb2x1dGlvblByb3BlcnR5SGFzQ2hhbmdlZCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzRGF0YXNvdXJjZVByb3BlcnR5KSB7XHJcbiAgICAgICAgICAgIGlmIChrZXkgPT09ICdvZ2NGaWx0ZXJzJykge1xyXG4gICAgICAgICAgICAgIChsLmRhdGFTb3VyY2UgYXMgT2djRmlsdGVyYWJsZURhdGFTb3VyY2UpLnNldE9nY0ZpbHRlcnMobmV3VmFsdWUsIGZhbHNlKTtcclxuICAgICAgICAgICAgICBpZiAobExheWVyVHlwZSA9PT0gJ3dmcycpIHtcclxuICAgICAgICAgICAgICAgIGwub2wuZ2V0U291cmNlKCkucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAobExheWVyVHlwZSA9PT0gJ3dtcycpIHtcclxuICAgICAgICAgICAgICAgIGxldCBhcHBsaWVkT2djRmlsdGVyO1xyXG4gICAgICAgICAgICAgICAgaWYgKGluaXRpYXRvcklnb0xheWVyU291cmNlVHlwZSA9PT0gJ3dmcycpIHtcclxuICAgICAgICAgICAgICAgICAgYXBwbGllZE9nY0ZpbHRlciA9IG9nY0ZpbHRlcldyaXRlci5oYW5kbGVPZ2NGaWx0ZXJzQXBwbGllZFZhbHVlKFxyXG4gICAgICAgICAgICAgICAgICAgIGluaXRpYXRvcklnb0xheWVyT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zLFxyXG4gICAgICAgICAgICAgICAgICAgIChpbml0aWF0b3JJZ29MYXllci5kYXRhU291cmNlLm9wdGlvbnMgYXMgYW55KS5maWVsZE5hbWVHZW9tZXRyeSxcclxuICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgbWFwLnZpZXdDb250cm9sbGVyLmdldE9sUHJvamVjdGlvbigpXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGluaXRpYXRvcklnb0xheWVyU291cmNlVHlwZSA9PT0gJ3dtcycpIHtcclxuICAgICAgICAgICAgICAgICAgYXBwbGllZE9nY0ZpbHRlciA9IChpbml0aWF0b3JJZ29MYXllci5kYXRhU291cmNlIGFzIFdNU0RhdGFTb3VyY2UpLm9sLmdldFBhcmFtcygpLkZJTFRFUjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIChsLmRhdGFTb3VyY2UgYXMgV01TRGF0YVNvdXJjZSkub2wudXBkYXRlUGFyYW1zKHsgRklMVEVSOiBhcHBsaWVkT2djRmlsdGVyIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChsLmRhdGFTb3VyY2UgaW5zdGFuY2VvZiBXTVNEYXRhU291cmNlICYmIGtleSA9PT0gJ3RpbWVGaWx0ZXInKSB7XHJcbiAgICAgICAgICAgICAgKGwuZGF0YVNvdXJjZSBhcyBUaW1lRmlsdGVyYWJsZURhdGFTb3VyY2UpLnNldFRpbWVGaWx0ZXIobmV3VmFsdWUsIGZhbHNlKTtcclxuICAgICAgICAgICAgICBjb25zdCBhcHBsaWVkVGltZUZpbHRlciA9IChpbml0aWF0b3JJZ29MYXllci5vbC5nZXRTb3VyY2UoKSBhcyBvbFNvdXJjZUltYWdlV01TKS5nZXRQYXJhbXMoKS5USU1FO1xyXG4gICAgICAgICAgICAgIGwuZGF0YVNvdXJjZS5vbC51cGRhdGVQYXJhbXMoeyBUSU1FOiBhcHBsaWVkVGltZUZpbHRlciB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChyZXNvbHV0aW9uUHJvcGVydHlIYXNDaGFuZ2VkKSB7XHJcbiAgICAgICAgbWFwLnZpZXdDb250cm9sbGVyLnJlc29sdXRpb24kLm5leHQobWFwLnZpZXdDb250cm9sbGVyLnJlc29sdXRpb24kLnZhbHVlKTtcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICB9XHJcbiAgfVxyXG4iXX0=
240
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VkTGF5ZXJzLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9saW5rZWRMYXllcnMudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNqQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFHbkYsT0FBTyxFQUFTLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWpFLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxLQUFZO0lBQy9DLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFDdEMsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxHQUFXLEVBQUUsRUFBVTtJQUN2RCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsTUFBTSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZFLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsS0FBWSxFQUFFLFFBQTBCO0lBQzdFLElBQUksbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLE1BQU0sY0FBYyxHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JELElBQUksY0FBYyxFQUFFLEtBQUssRUFBRTtRQUN2QixNQUFNLElBQUksR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDN0UsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLENB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QUFNLElBQUksMkJBQTJCLEtBQUssS0FBSyxFQUFFO2dDQUNoRCxnQkFBZ0IsR0FBSSxpQkFBaUIsQ0FBQyxVQUE0QixDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLENBQUM7NkJBQzFGOzRCQUNBLENBQUMsQ0FBQyxVQUE0QixDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO3lCQUMvRTtxQkFDRjt5QkFBTSxJQUFJLENBQUMsQ0FBQyxVQUFVLFlBQVksYUFBYSxJQUFJLEdBQUcsS0FBSyxZQUFZLEVBQUU7d0JBQ3ZFLENBQUMsQ0FBQyxVQUF1QyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7d0JBQzFFLE1BQU0saUJBQWlCLEdBQUksaUJBQWlCLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBdUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUM7d0JBQ2xHLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7cUJBQzNEO2lCQUNGO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksNEJBQTRCLEVBQUU7WUFDaEMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzNFO0tBR0Y7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JqZWN0RXZlbnQgfSBmcm9tIFwib2wvT2JqZWN0XCI7XG5pbXBvcnQgeyBnZXRVaWQgfSBmcm9tIFwib2wvdXRpbFwiO1xuaW1wb3J0IHsgV01TRGF0YVNvdXJjZSB9IGZyb20gXCIuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy93bXMtZGF0YXNvdXJjZVwiO1xuaW1wb3J0IHsgT2djRmlsdGVyYWJsZURhdGFTb3VyY2UsIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyB9IGZyb20gXCIuLi8uLi9maWx0ZXIvc2hhcmVkL29nYy1maWx0ZXIuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBUaW1lRmlsdGVyYWJsZURhdGFTb3VyY2UsIFRpbWVGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vZmlsdGVyL3NoYXJlZC90aW1lLWZpbHRlci5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IExheWVyLCBMaW5rZWRQcm9wZXJ0aWVzIH0gZnJvbSBcIi4uLy4uL2xheWVyL3NoYXJlZC9sYXllcnNcIjtcbmltcG9ydCB7IElnb01hcCB9IGZyb20gXCIuL21hcFwiO1xuaW1wb3J0IG9sU291cmNlSW1hZ2VXTVMgZnJvbSAnb2wvc291cmNlL0ltYWdlV01TJztcbmltcG9ydCB7IE9nY0ZpbHRlcldyaXRlciB9IGZyb20gJy4uLy4uL2ZpbHRlci9zaGFyZWQvb2djLWZpbHRlcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW5rZWRMYXllcnNPcHRpb25zKGxheWVyOiBMYXllcikge1xuICAgIHJldHVybiBsYXllci5vcHRpb25zLmxpbmtlZExheWVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldElnb0xheWVyQnlMaW5rSWQobWFwOiBJZ29NYXAsIGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbWFwLmxheWVycy5maW5kKGwgPT4gbC5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua0lkID09PSBpZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYXllckhhc0xpbmtXaXRoUHJvcGVydHkobGF5ZXI6IExheWVyLCBwcm9wZXJ0eTogTGlua2VkUHJvcGVydGllcyk6IGJvb2xlYW4ge1xuICAgIGxldCBoYXNMaW5rV2l0aFByb3BlcnR5ID0gZmFsc2U7XG4gICAgY29uc3QgbGF5ZXJMTE9wdGlvbnMgPSBnZXRMaW5rZWRMYXllcnNPcHRpb25zKGxheWVyKTtcbiAgICBpZiAobGF5ZXJMTE9wdGlvbnM/LmxpbmtzKSB7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBsYXllckxMT3B0aW9ucy5saW5rcy5maW5kKGwgPT4gbC5wcm9wZXJ0aWVzLmluY2x1ZGVzKHByb3BlcnR5KSk7XG4gICAgICAgIGhhc0xpbmtXaXRoUHJvcGVydHkgPSBsaW5rID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gaGFzTGlua1dpdGhQcm9wZXJ0eTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxheWVySGFzTGlua0RlbGV0aW9uKGxheWVyOiBMYXllcik6IGJvb2xlYW4ge1xuICBsZXQgaGFzTGlua1dpdGhTeW5jZWREZWxldGUgPSBmYWxzZTtcbiAgY29uc3QgbGF5ZXJMTE9wdGlvbnMgPSBnZXRMaW5rZWRMYXllcnNPcHRpb25zKGxheWVyKTtcbiAgaWYgKGxheWVyTExPcHRpb25zPy5saW5rcykge1xuICAgICAgY29uc3QgbGluayA9IGxheWVyTExPcHRpb25zLmxpbmtzLmZpbmQobCA9PiBsLnN5bmNlZERlbGV0ZSk7XG4gICAgICBoYXNMaW5rV2l0aFN5bmNlZERlbGV0ZSA9IGxpbmsgPyB0cnVlIDogZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGhhc0xpbmtXaXRoU3luY2VkRGVsZXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um9vdFBhcmVudEJ5UHJvcGVydHkobWFwOiBJZ29NYXAsIGxheWVyOiBMYXllciwgcHJvcGVydHk6IExpbmtlZFByb3BlcnRpZXMpOiBMYXllciB7XG4gICAgbGV0IGxheWVyVG9Vc2UgPSBsYXllcjtcbiAgICBsZXQgcGFyZW50TGF5ZXIgPSBsYXllclRvVXNlO1xuICAgIGxldCBoYXNQYXJlbnRMYXllciA9IHRydWU7XG4gICAgd2hpbGUgKGhhc1BhcmVudExheWVyKSB7XG4gICAgICAgIGxheWVyVG9Vc2UgPSBwYXJlbnRMYXllcjtcbiAgICAgICAgcGFyZW50TGF5ZXIgPSBnZXREaXJlY3RQYXJlbnRMYXllckJ5UHJvcGVydHkobWFwLCBsYXllclRvVXNlLCBwcm9wZXJ0eSk7XG4gICAgICAgIGhhc1BhcmVudExheWVyID0gcGFyZW50TGF5ZXIgPyB0cnVlIDogZmFsc2U7XG4gICAgfVxuICAgIGlmICghaGFzUGFyZW50TGF5ZXIpIHtcbiAgICAgICAgaWYgKCFsYXllckhhc0xpbmtXaXRoUHJvcGVydHkobGF5ZXJUb1VzZSxwcm9wZXJ0eSkpIHtcbiAgICAgICAgICAgIGxheWVyVG9Vc2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGhhc1BhcmVudExheWVyID8gcGFyZW50TGF5ZXIgOiBsYXllclRvVXNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGlyZWN0UGFyZW50TGF5ZXJCeVByb3BlcnR5KG1hcDogSWdvTWFwLCBsYXllcjogTGF5ZXIsIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzKTogTGF5ZXIge1xuICAgIGlmIChsYXllcj8ub3B0aW9ucy5saW5rZWRMYXllcnM/LmxpbmtJZCkge1xuICAgICAgICBjb25zdCBjdXJyZW50TGlua0lkID0gbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua0lkO1xuICAgICAgICBsZXQgcGFyZW50cyA9IG1hcC5sYXllcnMuZmlsdGVyKHBsID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmtlZExheWVycyA9IHBsLm9wdGlvbnMubGlua2VkTGF5ZXJzO1xuICAgICAgICAgICAgaWYgKGxpbmtlZExheWVycyAmJiBsaW5rZWRMYXllcnMubGlua3MpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhID0gbGlua2VkTGF5ZXJzLmxpbmtzLmZpbmQobCA9PiBsLmxpbmtlZElkcy5pbmNsdWRlcyhjdXJyZW50TGlua0lkKSAmJiBsLnByb3BlcnRpZXMuaW5jbHVkZXMocHJvcGVydHkpKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChwYXJlbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgWW91ciBsYXllciAke2xheWVyLnRpdGxlIHx8IGxheWVyLmlkfSBtdXN0IG9ubHkgaGF2ZSAxIHBhcmVudCAoJHtwYXJlbnRzLm1hcChwID0+IHAudGl0bGUgfHwgcC5pZCl9KVxuICAgICAgICAgICAgLCBUaGUgZmlyc3QgcGFyZW50ICgke3BhcmVudHNbMF0udGl0bGUgfHwgcGFyZW50c1swXS5pZH0pIHdpbGwgYmUgdXNlIHRvIHN5bmMgcHJvcGVydGllc2ApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXJlbnRzWzBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpcmVjdENoaWxkTGF5ZXJzQnlQcm9wZXJ0eShtYXA6IElnb01hcCwgbGF5ZXI6IExheWVyLCBwcm9wZXJ0eTogTGlua2VkUHJvcGVydGllcyk6IExheWVyW10ge1xuICAgIGxldCBsaW5rZWRJZHMgPSBbXTtcbiAgICBpZiAobGF5ZXI/Lm9wdGlvbnMubGlua2VkTGF5ZXJzPy5saW5rcykge1xuICAgICAgICBsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rc1xuICAgICAgICAuZmlsdGVyKGwgPT4gbC5wcm9wZXJ0aWVzLmluY2x1ZGVzKHByb3BlcnR5KSlcbiAgICAgICAgLm1hcChsaW5rID0+IHtcbiAgICAgICAgICAgIGxpbmtlZElkcyA9IGxpbmtlZElkcy5jb25jYXQobGluay5saW5rZWRJZHMpO30pO1xuICAgIH1cbiAgICByZXR1cm4gbGlua2VkSWRzLm1hcChsaWQgPT4gZ2V0SWdvTGF5ZXJCeUxpbmtJZChtYXAsIGxpZCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsQ2hpbGRMYXllcnNCeVByb3BlcnR5KG1hcDogSWdvTWFwLCBsYXllcjogTGF5ZXIsIGtub3duQ2hpbGRMYXllcnM6IExheWVyW10sIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzKTogTGF5ZXJbXSB7XG4gICAgbGV0IGNoaWxkTGF5ZXJzID0gZ2V0RGlyZWN0Q2hpbGRMYXllcnNCeVByb3BlcnR5KG1hcCwgbGF5ZXIscHJvcGVydHkpO1xuICAgIGNoaWxkTGF5ZXJzLm1hcChjbCA9PiB7XG4gICAgICAgIGtub3duQ2hpbGRMYXllcnMucHVzaChjbCk7XG4gICAgICAgIGNvbnN0IGRpcmVjdENoaWxkTGF5ZXJzID0gZ2V0RGlyZWN0Q2hpbGRMYXllcnNCeVByb3BlcnR5KG1hcCwgY2wsIHByb3BlcnR5KTtcbiAgICAgICAgaWYgKGRpcmVjdENoaWxkTGF5ZXJzKSB7XG4gICAgICAgICAgICBnZXRBbGxDaGlsZExheWVyc0J5UHJvcGVydHkobWFwLCBjbCwga25vd25DaGlsZExheWVycywgcHJvcGVydHkpO1xuICAgICAgICB9XG5cbiAgICB9KTtcbiAgICByZXR1cm4ga25vd25DaGlsZExheWVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJvb3RQYXJlbnRCeURlbGV0aW9uKG1hcDogSWdvTWFwLCBsYXllcjogTGF5ZXIpOiBMYXllciB7XG4gIGxldCBsYXllclRvVXNlID0gbGF5ZXI7XG4gIGxldCBwYXJlbnRMYXllciA9IGxheWVyVG9Vc2U7XG4gIGxldCBoYXNQYXJlbnRMYXllciA9IHRydWU7XG4gIHdoaWxlIChoYXNQYXJlbnRMYXllcikge1xuICAgICAgbGF5ZXJUb1VzZSA9IHBhcmVudExheWVyO1xuICAgICAgcGFyZW50TGF5ZXIgPSBnZXREaXJlY3RQYXJlbnRMYXllckJ5RGVsZXRpb24obWFwLCBsYXllclRvVXNlKTtcbiAgICAgIGhhc1BhcmVudExheWVyID0gcGFyZW50TGF5ZXIgPyB0cnVlIDogZmFsc2U7XG4gIH1cbiAgaWYgKCFoYXNQYXJlbnRMYXllcikge1xuICAgIGlmICghbGF5ZXJIYXNMaW5rRGVsZXRpb24obGF5ZXJUb1VzZSkpIHtcbiAgICAgIGxheWVyVG9Vc2UgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBoYXNQYXJlbnRMYXllciA/IHBhcmVudExheWVyIDogbGF5ZXJUb1VzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpcmVjdFBhcmVudExheWVyQnlEZWxldGlvbihtYXA6IElnb01hcCwgbGF5ZXI6IExheWVyKTogTGF5ZXIge1xuICBpZiAobGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnM/LmxpbmtJZCkge1xuICAgICAgY29uc3QgY3VycmVudExpbmtJZCA9IGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtJZDtcbiAgICAgIGxldCBwYXJlbnRzID0gbWFwLmxheWVycy5maWx0ZXIocGwgPT4ge1xuICAgICAgICAgIGNvbnN0IGxpbmtlZExheWVycyA9IHBsLm9wdGlvbnMubGlua2VkTGF5ZXJzO1xuICAgICAgICAgIGlmIChsaW5rZWRMYXllcnMgJiYgbGlua2VkTGF5ZXJzLmxpbmtzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGEgPSBsaW5rZWRMYXllcnMubGlua3MuZmluZChsID0+IChsLmxpbmtlZElkcy5pbmNsdWRlcyhjdXJyZW50TGlua0lkKSAmJiBsLnN5bmNlZERlbGV0ZSkpO1xuICAgICAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGlmIChwYXJlbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oYFlvdXIgbGF5ZXIgJHtsYXllci50aXRsZSB8fCBsYXllci5pZH0gbXVzdCBvbmx5IGhhdmUgMSBwYXJlbnQgKCR7cGFyZW50cy5tYXAocCA9PiBwLnRpdGxlIHx8IHAuaWQpfSlcbiAgICAgICAgICAsIFRoZSBmaXJzdCBwYXJlbnQgKCR7cGFyZW50c1swXS50aXRsZSB8fCBwYXJlbnRzWzBdLmlkfSkgd2lsbCBiZSB1c2UgdG8gc3luYyBwcm9wZXJ0aWVzYCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFyZW50c1swXTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGlyZWN0Q2hpbGRMYXllcnNCeURlbGV0aW9uKG1hcDogSWdvTWFwLCBsYXllcjogTGF5ZXIpOiBMYXllcltdIHtcbiAgbGV0IGxpbmtlZElkcyA9IFtdO1xuICBpZiAobGF5ZXI/Lm9wdGlvbnMubGlua2VkTGF5ZXJzPy5saW5rcykge1xuICAgICAgbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua3NcbiAgICAgIC5maWx0ZXIobCA9PiBsLnN5bmNlZERlbGV0ZSlcbiAgICAgIC5tYXAobGluayA9PiB7XG4gICAgICAgICAgbGlua2VkSWRzID0gbGlua2VkSWRzLmNvbmNhdChsaW5rLmxpbmtlZElkcyk7fSk7XG4gIH1cbiAgcmV0dXJuIGxpbmtlZElkcy5tYXAobGlkID0+IGdldElnb0xheWVyQnlMaW5rSWQobWFwLCBsaWQpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbENoaWxkTGF5ZXJzQnlEZWxldGlvbihtYXA6IElnb01hcCwgbGF5ZXI6IExheWVyLCBrbm93bkNoaWxkTGF5ZXJzOiBMYXllcltdKTogTGF5ZXJbXSB7XG4gIGxldCBjaGlsZExheWVycyA9IGdldERpcmVjdENoaWxkTGF5ZXJzQnlEZWxldGlvbihtYXAsIGxheWVyKTtcbiAgY2hpbGRMYXllcnMubWFwKGNsID0+IHtcbiAgICAgIGtub3duQ2hpbGRMYXllcnMucHVzaChjbCk7XG4gICAgICBjb25zdCBkaXJlY3RDaGlsZExheWVycyA9IGdldERpcmVjdENoaWxkTGF5ZXJzQnlEZWxldGlvbihtYXAsIGNsKTtcbiAgICAgIGlmIChkaXJlY3RDaGlsZExheWVycykge1xuICAgICAgICBnZXRBbGxDaGlsZExheWVyc0J5RGVsZXRpb24obWFwLCBjbCwga25vd25DaGlsZExheWVycyk7XG4gICAgICB9XG5cbiAgfSk7XG4gIHJldHVybiBrbm93bkNoaWxkTGF5ZXJzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdExheWVyU3luY0Zyb21Sb290UGFyZW50TGF5ZXJzKG1hcDogSWdvTWFwLCBsYXllcnM6IExheWVyW10pIHtcbiAgICBjb25zdCByb290TGF5ZXJzQnlQcm9wZXJ0eSA9IHt9O1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhMaW5rZWRQcm9wZXJ0aWVzKTtcbiAgICBrZXlzLm1hcChrID0+IHtcbiAgICAgIHJvb3RMYXllcnNCeVByb3BlcnR5W0xpbmtlZFByb3BlcnRpZXNba11dID0gW107XG4gICAgfSk7XG4gICAgbGF5ZXJzXG4gICAgICAuZmlsdGVyKGwgPT4gZ2V0TGlua2VkTGF5ZXJzT3B0aW9ucyhsKSlcbiAgICAgIC5tYXAobCA9PiB7XG4gICAgICAgIGtleXMubWFwKGtleSA9PiB7XG4gICAgICAgICAgY29uc3QgayA9IExpbmtlZFByb3BlcnRpZXNba2V5XTtcbiAgICAgICAgICBjb25zdCBwbGJwID0gZ2V0Um9vdFBhcmVudEJ5UHJvcGVydHkobWFwLCBsLCBrIGFzIExpbmtlZFByb3BlcnRpZXMpO1xuICAgICAgICAgIGNvbnN0IGxheWVycyA9IHJvb3RMYXllcnNCeVByb3BlcnR5W2tdO1xuICAgICAgICAgIGNvbnN0IGxheWVyc0lkID0gbGF5ZXJzLm1hcChsID0+IGwuaWQpO1xuICAgICAgICAgIGlmIChwbGJwICYmICFsYXllcnNJZC5pbmNsdWRlcyhwbGJwLmlkKSkge1xuICAgICAgICAgICAgcm9vdExheWVyc0J5UHJvcGVydHlba10ucHVzaChwbGJwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgT2JqZWN0LmtleXMocm9vdExheWVyc0J5UHJvcGVydHkpLm1hcChrID0+IHtcbiAgICAgIGNvbnN0IGxheWVycyA9IHJvb3RMYXllcnNCeVByb3BlcnR5W2tdO1xuICAgICAgbGF5ZXJzLm1hcCgobDogTGF5ZXIpID0+IGwub2wubm90aWZ5KGssIHVuZGVmaW5lZCkpO1xuICAgIH0pO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZUxheWVyUHJvcGVydHlDaGFuZ2UobWFwOiBJZ29NYXAsIHByb3BlcnR5Q2hhbmdlOiBPYmplY3RFdmVudCwgaW5pdGlhdG9ySWdvTGF5ZXI6IExheWVyKSB7XG4gICAgaWYgKCFwcm9wZXJ0eUNoYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBvZ2NGaWx0ZXJXcml0ZXIgPSBuZXcgT2djRmlsdGVyV3JpdGVyKCk7XG4gICAgbGV0IGlzTGF5ZXJQcm9wZXJ0eSA9IHRydWU7XG4gICAgbGV0IGlzRGF0YXNvdXJjZVByb3BlcnR5ID0gdHJ1ZTtcbiAgICBjb25zdCBrZXkgPSBwcm9wZXJ0eUNoYW5nZS5rZXk7XG4gICAgbGV0IG5ld1ZhbHVlO1xuICAgIGlmIChrZXkgPT09ICdvZ2NGaWx0ZXJzJykge1xuICAgICAgaXNMYXllclByb3BlcnR5ID0gZmFsc2U7XG4gICAgICBpc0RhdGFzb3VyY2VQcm9wZXJ0eSA9IHRydWU7XG4gICAgICBuZXdWYWx1ZSA9IChpbml0aWF0b3JJZ29MYXllci5kYXRhU291cmNlLm9wdGlvbnMgYXMgT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zKS5vZ2NGaWx0ZXJzO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAndGltZUZpbHRlcicpIHtcbiAgICAgIGlzTGF5ZXJQcm9wZXJ0eSA9IGZhbHNlO1xuICAgICAgaXNEYXRhc291cmNlUHJvcGVydHkgPSB0cnVlO1xuICAgICAgbmV3VmFsdWUgPSAoaW5pdGlhdG9ySWdvTGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zIGFzIFRpbWVGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMpLnRpbWVGaWx0ZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlzTGF5ZXJQcm9wZXJ0eSA9IHRydWU7XG4gICAgICBpc0RhdGFzb3VyY2VQcm9wZXJ0eSA9IGZhbHNlO1xuICAgICAgbmV3VmFsdWUgPSBpbml0aWF0b3JJZ29MYXllci5vbC5nZXQoa2V5KTtcbiAgICB9XG5cbiAgICBjb25zdCBpbml0aWF0b3JMaW5rZWRMYXllcnNPcHRpb25zID0gZ2V0TGlua2VkTGF5ZXJzT3B0aW9ucyhpbml0aWF0b3JJZ29MYXllcik7XG4gICAgaWYgKGluaXRpYXRvckxpbmtlZExheWVyc09wdGlvbnMpIHtcbiAgICAgIGxldCByb290UGFyZW50QnlQcm9wZXJ0eSA9IGdldFJvb3RQYXJlbnRCeVByb3BlcnR5KG1hcCxpbml0aWF0b3JJZ29MYXllciwga2V5IGFzIExpbmtlZFByb3BlcnRpZXMpO1xuICAgICAgaWYgKCFyb290UGFyZW50QnlQcm9wZXJ0eSkge1xuICAgICAgICByb290UGFyZW50QnlQcm9wZXJ0eSA9IGluaXRpYXRvcklnb0xheWVyO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjbGJwID0gW3Jvb3RQYXJlbnRCeVByb3BlcnR5XTtcbiAgICAgIGdldEFsbENoaWxkTGF5ZXJzQnlQcm9wZXJ0eShtYXAsIHJvb3RQYXJlbnRCeVByb3BlcnR5LCBjbGJwLCBrZXkgYXMgTGlua2VkUHJvcGVydGllcyk7XG5cbiAgICAgIGxldCByZXNvbHV0aW9uUHJvcGVydHlIYXNDaGFuZ2VkID0gZmFsc2U7XG4gICAgICBjb25zdCBpbml0aWF0b3JJZ29MYXllclNvdXJjZVR5cGUgPSBpbml0aWF0b3JJZ29MYXllci5vcHRpb25zLnNvdXJjZS5vcHRpb25zLnR5cGU7XG4gICAgICBjb25zdCBpbml0aWF0b3JJZ29MYXllck9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyA9IGluaXRpYXRvcklnb0xheWVyLmRhdGFTb3VyY2Uub3B0aW9ucyBhcyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnM7XG4gICAgICBjbGJwLm1hcChsID0+IHtcbiAgICAgICAgaWYgKGluaXRpYXRvcklnb0xheWVyICYmIGwgJiYgZ2V0VWlkKGluaXRpYXRvcklnb0xheWVyLm9sKSAhPT0gZ2V0VWlkKGw/Lm9sKSkge1xuICAgICAgICAgIGNvbnN0IGxMYXllclR5cGUgPSBsLm9wdGlvbnMuc291cmNlLm9wdGlvbnMudHlwZTtcbiAgICAgICAgICBpZiAoaXNMYXllclByb3BlcnR5KSB7XG4gICAgICAgICAgbC5vbC5zZXQoa2V5LCBuZXdWYWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgaWYgKGtleSA9PT0gJ3Zpc2libGUnKSB7XG4gICAgICAgICAgICBsLnZpc2libGUkLm5leHQobmV3VmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoa2V5ID09PSAnbWluUmVzb2x1dGlvbicgfHwga2V5ID09PSAnbWF4UmVzb2x1dGlvbicpIHtcbiAgICAgICAgICAgIHJlc29sdXRpb25Qcm9wZXJ0eUhhc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGlzRGF0YXNvdXJjZVByb3BlcnR5KSB7XG4gICAgICAgICAgICBpZiAoa2V5ID09PSAnb2djRmlsdGVycycpIHtcbiAgICAgICAgICAgICAgKGwuZGF0YVNvdXJjZSBhcyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZSkuc2V0T2djRmlsdGVycyhuZXdWYWx1ZSwgZmFsc2UpO1xuICAgICAgICAgICAgICBpZiAobExheWVyVHlwZSA9PT0gJ3dmcycpIHtcbiAgICAgICAgICAgICAgICBsLm9sLmdldFNvdXJjZSgpLnJlZnJlc2goKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAobExheWVyVHlwZSA9PT0gJ3dtcycpIHtcbiAgICAgICAgICAgICAgICBsZXQgYXBwbGllZE9nY0ZpbHRlcjtcbiAgICAgICAgICAgICAgICBpZiAoaW5pdGlhdG9ySWdvTGF5ZXJTb3VyY2VUeXBlID09PSAnd2ZzJykge1xuICAgICAgICAgICAgICAgICAgYXBwbGllZE9nY0ZpbHRlciA9IG9nY0ZpbHRlcldyaXRlci5oYW5kbGVPZ2NGaWx0ZXJzQXBwbGllZFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICBpbml0aWF0b3JJZ29MYXllck9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgKGluaXRpYXRvcklnb0xheWVyLmRhdGFTb3VyY2Uub3B0aW9ucyBhcyBhbnkpLmZpZWxkTmFtZUdlb21ldHJ5LFxuICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIG1hcC52aWV3Q29udHJvbGxlci5nZXRPbFByb2plY3Rpb24oKVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGluaXRpYXRvcklnb0xheWVyU291cmNlVHlwZSA9PT0gJ3dtcycpIHtcbiAgICAgICAgICAgICAgICAgIGFwcGxpZWRPZ2NGaWx0ZXIgPSAoaW5pdGlhdG9ySWdvTGF5ZXIuZGF0YVNvdXJjZSBhcyBXTVNEYXRhU291cmNlKS5vbC5nZXRQYXJhbXMoKS5GSUxURVI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIChsLmRhdGFTb3VyY2UgYXMgV01TRGF0YVNvdXJjZSkub2wudXBkYXRlUGFyYW1zKHsgRklMVEVSOiBhcHBsaWVkT2djRmlsdGVyIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGwuZGF0YVNvdXJjZSBpbnN0YW5jZW9mIFdNU0RhdGFTb3VyY2UgJiYga2V5ID09PSAndGltZUZpbHRlcicpIHtcbiAgICAgICAgICAgICAgKGwuZGF0YVNvdXJjZSBhcyBUaW1lRmlsdGVyYWJsZURhdGFTb3VyY2UpLnNldFRpbWVGaWx0ZXIobmV3VmFsdWUsIGZhbHNlKTtcbiAgICAgICAgICAgICAgY29uc3QgYXBwbGllZFRpbWVGaWx0ZXIgPSAoaW5pdGlhdG9ySWdvTGF5ZXIub2wuZ2V0U291cmNlKCkgYXMgb2xTb3VyY2VJbWFnZVdNUykuZ2V0UGFyYW1zKCkuVElNRTtcbiAgICAgICAgICAgICAgbC5kYXRhU291cmNlLm9sLnVwZGF0ZVBhcmFtcyh7IFRJTUU6IGFwcGxpZWRUaW1lRmlsdGVyIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAocmVzb2x1dGlvblByb3BlcnR5SGFzQ2hhbmdlZCkge1xuICAgICAgICBtYXAudmlld0NvbnRyb2xsZXIucmVzb2x1dGlvbiQubmV4dChtYXAudmlld0NvbnRyb2xsZXIucmVzb2x1dGlvbiQudmFsdWUpO1xuICAgICAgfVxuXG5cbiAgICB9XG4gIH1cbiJdfQ==
@@ -104,4 +104,4 @@ PointerPositionDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: Po
104
104
  }], pointerPositionCoord: [{
105
105
  type: Output
106
106
  }] }); })();
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXBvaW50ZXItcG9zaXRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9tYXAtcG9pbnRlci1wb3NpdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWixJQUFJLEVBRUwsTUFBTSxlQUFlLENBQUM7QUFPdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVwQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBQ3hDOzs7O0dBSUc7QUFJSCxNQUFNLE9BQU8sd0JBQXdCO0lBb0NuQyxZQUNrQixTQUE4QixFQUN0QyxZQUEwQjtRQURsQixjQUFTLEdBQVQsU0FBUyxDQUFxQjtRQUN0QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQXhCcEM7O1dBRUc7UUFDTSx5QkFBb0IsR0FBVyxJQUFJLENBQUM7UUFFN0M7O1dBRUc7UUFDTyx5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztJQWlCbEUsQ0FBQztJQWZMOzs7T0FHRztJQUNILElBQUksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFjLENBQUMsVUFBVSxDQUFDO0lBQ25ELENBQUM7SUFPRDs7O09BR0c7SUFDSCxRQUFRO1FBQ04sSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSyxzQkFBc0I7UUFDNUIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FDdkMsYUFBYSxFQUNiLENBQUMsS0FBa0MsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQzlGLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSyxnQkFBZ0I7UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FDcEMsYUFBYSxFQUNiLENBQUMsS0FBa0MsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQ3RFLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSyx3QkFBd0I7UUFDOUIsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGNBQWMsQ0FBQyxLQUFrQyxFQUFFLEtBQWE7UUFDdEUsSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFBQyxPQUFPO1NBQUU7UUFDbkUsSUFBSSxPQUFPLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxXQUFXLEVBQUUsRUFBRSxzQ0FBc0M7WUFDMUYsWUFBWSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1NBQ3ZDO1FBRUQsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQXFCLENBQUM7UUFDaEcsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDeEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDWixDQUFDOztnR0E1R1Usd0JBQXdCOzJFQUF4Qix3QkFBd0I7dUZBQXhCLHdCQUF3QjtjQUhwQyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjthQUNqQzs7c0JBc0NJLElBQUk7bURBcEJFLG9CQUFvQjtrQkFBNUIsS0FBSztZQUtJLG9CQUFvQjtrQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRGlyZWN0aXZlLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgT25EZXN0cm95LFxyXG4gIFNlbGYsXHJcbiAgT25Jbml0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgTWFwQnJvd3NlclBvaW50ZXJFdmVudCBmcm9tICdvbC9NYXBCcm93c2VyRXZlbnQnO1xyXG5cclxuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9tYXAnO1xyXG5pbXBvcnQgeyBNYXBCcm93c2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbWFwL21hcC1icm93c2VyL21hcC1icm93c2VyLmNvbXBvbmVudCc7XHJcblxyXG5pbXBvcnQgeyB0cmFuc2Zvcm0gfSBmcm9tICdvbC9wcm9qJztcclxuaW1wb3J0IHsgTWVkaWFTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcbmltcG9ydCB7IHVuQnlLZXkgfSBmcm9tICdvbC9PYnNlcnZhYmxlJztcclxuLyoqXHJcbiAqIFRoaXMgZGlyZWN0aXZlIHJldHVybiB0aGUgcG9pbnRlciBjb29yZGluYXRlIChvbiBjbGljayBvciBwb2ludGVybW92ZSlcclxuICogaW4gW2xvbmdpdHVkZSwgbGF0aXR1ZGVdLCBkZWxheWVkIGJ5IGluIGlucHV0IChwb2ludGVyTW92ZURlbGF5KVxyXG4gKiB0byBhdm9pZCB0b28gbWFueSBlbWl0dGVkIHZhbHVlcy5cclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2lnb1BvaW50ZXJQb3NpdGlvbl0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQb2ludGVyUG9zaXRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIHByaXZhdGUgbGFzdFRpbWVvdXRSZXF1ZXN0O1xyXG5cclxuICAvKipcclxuICAgKiBMaXN0ZW5lciB0byB0aGUgcG9pbnRlciBtb3ZlIGV2ZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBwb2ludGVyTW92ZUxpc3RlbmVyO1xyXG5cclxuICAvKipcclxuICAgKiBMaXN0ZW5lciB0byB0aGUgbWFwIGNsaWNrIGV2ZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBtYXBDbGlja0xpc3RlbmVyO1xyXG5cclxuICAvKipcclxuICAgKiBEZWxheSBiZWZvcmUgZW1pdHRpbmcgYW4gZXZlbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBwb2ludGVyUG9zaXRpb25EZWxheTogbnVtYmVyID0gMTAwMDtcclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBwb2ludGVyIG1vdmUsIGRlbGF5ZWQgYnkgcG9pbnRlck1vdmVEZWxheVxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBwb2ludGVyUG9zaXRpb25Db29yZCA9IG5ldyBFdmVudEVtaXR0ZXI8W251bWJlciwgbnVtYmVyXT4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogSUdPIG1hcFxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIGdldCBtYXAoKTogSWdvTWFwIHtcclxuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudC5tYXA7XHJcbiAgfVxyXG5cclxuICBnZXQgbWFwUHJvamVjdGlvbigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICh0aGlzLmNvbXBvbmVudC5tYXAgYXMgSWdvTWFwKS5wcm9qZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBAU2VsZigpIHByaXZhdGUgY29tcG9uZW50OiBNYXBCcm93c2VyQ29tcG9uZW50LFxyXG4gICAgcHJpdmF0ZSBtZWRpYVNlcnZpY2U6IE1lZGlhU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0YXJ0IGxpc3RlbmluZyB0byBwb2ludGVybW92ZVxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5saXN0ZW5Ub01hcFBvaW50ZXJNb3ZlKCk7XHJcbiAgICB0aGlzLmxpc3RlblRvTWFwQ2xpY2soKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0b3AgbGlzdGVuaW5nIHRvIHBvaW50ZXJtb3ZlXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnVubGlzdGVuVG9NYXBQb2ludGVyTW92ZSgpO1xyXG4gICAgdGhpcy51bmxpc3RlblRvTWFwQ2xpY2soKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIG1hcCBwb2ludGVybW92ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgbGlzdGVuVG9NYXBQb2ludGVyTW92ZSgpIHtcclxuICAgIHRoaXMucG9pbnRlck1vdmVMaXN0ZW5lciA9IHRoaXMubWFwLm9sLm9uKFxyXG4gICAgICAncG9pbnRlcm1vdmUnLFxyXG4gICAgICAoZXZlbnQ6IE1hcEJyb3dzZXJQb2ludGVyRXZlbnQ8YW55PikgPT4gdGhpcy5vblBvaW50ZXJFdmVudChldmVudCwgdGhpcy5wb2ludGVyUG9zaXRpb25EZWxheSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPbiBtYXAgY2xpY2tcclxuICAgKi9cclxuICBwcml2YXRlIGxpc3RlblRvTWFwQ2xpY2soKSB7XHJcbiAgICB0aGlzLm1hcENsaWNrTGlzdGVuZXIgPSB0aGlzLm1hcC5vbC5vbihcclxuICAgICAgJ3NpbmdsZWNsaWNrJyxcclxuICAgICAgKGV2ZW50OiBNYXBCcm93c2VyUG9pbnRlckV2ZW50PGFueT4pID0+IHRoaXMub25Qb2ludGVyRXZlbnQoZXZlbnQsIDApXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RvcCBsaXN0ZW5pbmcgZm9yIG1hcCBwb2ludGVybW92ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgdW5saXN0ZW5Ub01hcFBvaW50ZXJNb3ZlKCkge1xyXG4gICAgdW5CeUtleSh0aGlzLnBvaW50ZXJNb3ZlTGlzdGVuZXIpO1xyXG4gICAgdGhpcy5wb2ludGVyTW92ZUxpc3RlbmVyID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RvcCBsaXN0ZW5pbmcgZm9yIG1hcCBjbGlja3NcclxuICAgKi9cclxuICBwcml2YXRlIHVubGlzdGVuVG9NYXBDbGljaygpIHtcclxuICAgIHRoaXMubWFwQ2xpY2tMaXN0ZW5lciA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGVtaXQgZGVsYXllZCBjb29yZGluYXRlIChsb25naXR1ZGUsIGxhdGl0dWRlIGFycmF5KSBiYXNlZCBvbiBwb2ludGVyTW92ZURlbGF5IG9yIG9uIGNsaWNrXHJcbiAgICogQHBhcmFtIGV2ZW50IE9MIG1hcCBicm93c2VyIHBvaW50ZXIgZXZlbnRcclxuICAgKi9cclxuICBwcml2YXRlIG9uUG9pbnRlckV2ZW50KGV2ZW50OiBNYXBCcm93c2VyUG9pbnRlckV2ZW50PGFueT4sIGRlbGF5OiBudW1iZXIpIHtcclxuICAgIGlmIChldmVudC5kcmFnZ2luZyB8fCB0aGlzLm1lZGlhU2VydmljZS5pc1RvdWNoU2NyZWVuKCkpIHtyZXR1cm47IH1cclxuICAgIGlmICh0eXBlb2YgdGhpcy5sYXN0VGltZW91dFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7IC8vIGNhbmNlbCB0aW1lb3V0IHdoZW4gdGhlIG1vdXNlIG1vdmVzXHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmxhc3RUaW1lb3V0UmVxdWVzdCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbG9ubGF0ID0gdHJhbnNmb3JtKGV2ZW50LmNvb3JkaW5hdGUsIHRoaXMubWFwUHJvamVjdGlvbiwgJ0VQU0c6NDMyNicpIGFzIFtudW1iZXIsIG51bWJlcl07XHJcbiAgICB0aGlzLmxhc3RUaW1lb3V0UmVxdWVzdCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnBvaW50ZXJQb3NpdGlvbkNvb3JkLmVtaXQobG9ubGF0KTtcclxuICAgIH0sIGRlbGF5KTtcclxuICB9XHJcbn1cclxuIl19
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXBvaW50ZXItcG9zaXRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9tYXAtcG9pbnRlci1wb3NpdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWixJQUFJLEVBRUwsTUFBTSxlQUFlLENBQUM7QUFPdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVwQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBQ3hDOzs7O0dBSUc7QUFJSCxNQUFNLE9BQU8sd0JBQXdCO0lBb0NuQyxZQUNrQixTQUE4QixFQUN0QyxZQUEwQjtRQURsQixjQUFTLEdBQVQsU0FBUyxDQUFxQjtRQUN0QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQXhCcEM7O1dBRUc7UUFDTSx5QkFBb0IsR0FBVyxJQUFJLENBQUM7UUFFN0M7O1dBRUc7UUFDTyx5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztJQWlCbEUsQ0FBQztJQWZMOzs7T0FHRztJQUNILElBQUksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFjLENBQUMsVUFBVSxDQUFDO0lBQ25ELENBQUM7SUFPRDs7O09BR0c7SUFDSCxRQUFRO1FBQ04sSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSyxzQkFBc0I7UUFDNUIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FDdkMsYUFBYSxFQUNiLENBQUMsS0FBa0MsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQzlGLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSyxnQkFBZ0I7UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FDcEMsYUFBYSxFQUNiLENBQUMsS0FBa0MsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQ3RFLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSyx3QkFBd0I7UUFDOUIsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGNBQWMsQ0FBQyxLQUFrQyxFQUFFLEtBQWE7UUFDdEUsSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFBQyxPQUFPO1NBQUU7UUFDbkUsSUFBSSxPQUFPLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxXQUFXLEVBQUUsRUFBRSxzQ0FBc0M7WUFDMUYsWUFBWSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1NBQ3ZDO1FBRUQsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQXFCLENBQUM7UUFDaEcsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDeEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDWixDQUFDOztnR0E1R1Usd0JBQXdCOzJFQUF4Qix3QkFBd0I7dUZBQXhCLHdCQUF3QjtjQUhwQyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjthQUNqQzs7c0JBc0NJLElBQUk7bURBcEJFLG9CQUFvQjtrQkFBNUIsS0FBSztZQUtJLG9CQUFvQjtrQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkRlc3Ryb3ksXG4gIFNlbGYsXG4gIE9uSW5pdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IE1hcEJyb3dzZXJQb2ludGVyRXZlbnQgZnJvbSAnb2wvTWFwQnJvd3NlckV2ZW50JztcblxuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9tYXAnO1xuaW1wb3J0IHsgTWFwQnJvd3NlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21hcC9tYXAtYnJvd3Nlci9tYXAtYnJvd3Nlci5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyB0cmFuc2Zvcm0gfSBmcm9tICdvbC9wcm9qJztcbmltcG9ydCB7IE1lZGlhU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xuaW1wb3J0IHsgdW5CeUtleSB9IGZyb20gJ29sL09ic2VydmFibGUnO1xuLyoqXG4gKiBUaGlzIGRpcmVjdGl2ZSByZXR1cm4gdGhlIHBvaW50ZXIgY29vcmRpbmF0ZSAob24gY2xpY2sgb3IgcG9pbnRlcm1vdmUpXG4gKiBpbiBbbG9uZ2l0dWRlLCBsYXRpdHVkZV0sIGRlbGF5ZWQgYnkgaW4gaW5wdXQgKHBvaW50ZXJNb3ZlRGVsYXkpXG4gKiB0byBhdm9pZCB0b28gbWFueSBlbWl0dGVkIHZhbHVlcy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2lnb1BvaW50ZXJQb3NpdGlvbl0nXG59KVxuZXhwb3J0IGNsYXNzIFBvaW50ZXJQb3NpdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBwcml2YXRlIGxhc3RUaW1lb3V0UmVxdWVzdDtcblxuICAvKipcbiAgICogTGlzdGVuZXIgdG8gdGhlIHBvaW50ZXIgbW92ZSBldmVudFxuICAgKi9cbiAgcHJpdmF0ZSBwb2ludGVyTW92ZUxpc3RlbmVyO1xuXG4gIC8qKlxuICAgKiBMaXN0ZW5lciB0byB0aGUgbWFwIGNsaWNrIGV2ZW50XG4gICAqL1xuICBwcml2YXRlIG1hcENsaWNrTGlzdGVuZXI7XG5cbiAgLyoqXG4gICAqIERlbGF5IGJlZm9yZSBlbWl0dGluZyBhbiBldmVudFxuICAgKi9cbiAgQElucHV0KCkgcG9pbnRlclBvc2l0aW9uRGVsYXk6IG51bWJlciA9IDEwMDA7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgcG9pbnRlciBtb3ZlLCBkZWxheWVkIGJ5IHBvaW50ZXJNb3ZlRGVsYXlcbiAgICovXG4gIEBPdXRwdXQoKSBwb2ludGVyUG9zaXRpb25Db29yZCA9IG5ldyBFdmVudEVtaXR0ZXI8W251bWJlciwgbnVtYmVyXT4oKTtcblxuICAvKipcbiAgICogSUdPIG1hcFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCBtYXAoKTogSWdvTWFwIHtcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnQubWFwO1xuICB9XG5cbiAgZ2V0IG1hcFByb2plY3Rpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMuY29tcG9uZW50Lm1hcCBhcyBJZ29NYXApLnByb2plY3Rpb247XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBAU2VsZigpIHByaXZhdGUgY29tcG9uZW50OiBNYXBCcm93c2VyQ29tcG9uZW50LFxuICAgIHByaXZhdGUgbWVkaWFTZXJ2aWNlOiBNZWRpYVNlcnZpY2VcbiAgKSB7IH1cblxuICAvKipcbiAgICogU3RhcnQgbGlzdGVuaW5nIHRvIHBvaW50ZXJtb3ZlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0ZW5Ub01hcFBvaW50ZXJNb3ZlKCk7XG4gICAgdGhpcy5saXN0ZW5Ub01hcENsaWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCBsaXN0ZW5pbmcgdG8gcG9pbnRlcm1vdmVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnVubGlzdGVuVG9NYXBQb2ludGVyTW92ZSgpO1xuICAgIHRoaXMudW5saXN0ZW5Ub01hcENsaWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogT24gbWFwIHBvaW50ZXJtb3ZlXG4gICAqL1xuICBwcml2YXRlIGxpc3RlblRvTWFwUG9pbnRlck1vdmUoKSB7XG4gICAgdGhpcy5wb2ludGVyTW92ZUxpc3RlbmVyID0gdGhpcy5tYXAub2wub24oXG4gICAgICAncG9pbnRlcm1vdmUnLFxuICAgICAgKGV2ZW50OiBNYXBCcm93c2VyUG9pbnRlckV2ZW50PGFueT4pID0+IHRoaXMub25Qb2ludGVyRXZlbnQoZXZlbnQsIHRoaXMucG9pbnRlclBvc2l0aW9uRGVsYXkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPbiBtYXAgY2xpY2tcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuVG9NYXBDbGljaygpIHtcbiAgICB0aGlzLm1hcENsaWNrTGlzdGVuZXIgPSB0aGlzLm1hcC5vbC5vbihcbiAgICAgICdzaW5nbGVjbGljaycsXG4gICAgICAoZXZlbnQ6IE1hcEJyb3dzZXJQb2ludGVyRXZlbnQ8YW55PikgPT4gdGhpcy5vblBvaW50ZXJFdmVudChldmVudCwgMClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3AgbGlzdGVuaW5nIGZvciBtYXAgcG9pbnRlcm1vdmVcbiAgICovXG4gIHByaXZhdGUgdW5saXN0ZW5Ub01hcFBvaW50ZXJNb3ZlKCkge1xuICAgIHVuQnlLZXkodGhpcy5wb2ludGVyTW92ZUxpc3RlbmVyKTtcbiAgICB0aGlzLnBvaW50ZXJNb3ZlTGlzdGVuZXIgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCBsaXN0ZW5pbmcgZm9yIG1hcCBjbGlja3NcbiAgICovXG4gIHByaXZhdGUgdW5saXN0ZW5Ub01hcENsaWNrKCkge1xuICAgIHRoaXMubWFwQ2xpY2tMaXN0ZW5lciA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBlbWl0IGRlbGF5ZWQgY29vcmRpbmF0ZSAobG9uZ2l0dWRlLCBsYXRpdHVkZSBhcnJheSkgYmFzZWQgb24gcG9pbnRlck1vdmVEZWxheSBvciBvbiBjbGlja1xuICAgKiBAcGFyYW0gZXZlbnQgT0wgbWFwIGJyb3dzZXIgcG9pbnRlciBldmVudFxuICAgKi9cbiAgcHJpdmF0ZSBvblBvaW50ZXJFdmVudChldmVudDogTWFwQnJvd3NlclBvaW50ZXJFdmVudDxhbnk+LCBkZWxheTogbnVtYmVyKSB7XG4gICAgaWYgKGV2ZW50LmRyYWdnaW5nIHx8IHRoaXMubWVkaWFTZXJ2aWNlLmlzVG91Y2hTY3JlZW4oKSkge3JldHVybjsgfVxuICAgIGlmICh0eXBlb2YgdGhpcy5sYXN0VGltZW91dFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7IC8vIGNhbmNlbCB0aW1lb3V0IHdoZW4gdGhlIG1vdXNlIG1vdmVzXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5sYXN0VGltZW91dFJlcXVlc3QpO1xuICAgIH1cblxuICAgIGNvbnN0IGxvbmxhdCA9IHRyYW5zZm9ybShldmVudC5jb29yZGluYXRlLCB0aGlzLm1hcFByb2plY3Rpb24sICdFUFNHOjQzMjYnKSBhcyBbbnVtYmVyLCBudW1iZXJdO1xuICAgIHRoaXMubGFzdFRpbWVvdXRSZXF1ZXN0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnBvaW50ZXJQb3NpdGlvbkNvb3JkLmVtaXQobG9ubGF0KTtcbiAgICB9LCBkZWxheSk7XG4gIH1cbn1cbiJdfQ==
@@ -3,4 +3,4 @@ export var MapViewAction;
3
3
  MapViewAction[MapViewAction["Move"] = 0] = "Move";
4
4
  MapViewAction[MapViewAction["Zoom"] = 1] = "Zoom";
5
5
  })(MapViewAction || (MapViewAction = {}));
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmVudW1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9tYXAuZW51bXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksYUFHWDtBQUhELFdBQVksYUFBYTtJQUN2QixpREFBSSxDQUFBO0lBQ0osaURBQUksQ0FBQTtBQUNOLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIE1hcFZpZXdBY3Rpb24ge1xyXG4gIE1vdmUsXHJcbiAgWm9vbVxyXG59XHJcbiJdfQ==
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmVudW1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9tYXAuZW51bXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksYUFHWDtBQUhELFdBQVksYUFBYTtJQUN2QixpREFBSSxDQUFBO0lBQ0osaURBQUksQ0FBQTtBQUNOLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIE1hcFZpZXdBY3Rpb24ge1xuICBNb3ZlLFxuICBab29tXG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL21hcC9zaGFyZWQvbWFwLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVW5pdHMgfSBmcm9tIFwib2wvY29udHJvbC9TY2FsZUxpbmVcIjtcclxuXHJcbmV4cG9ydCB0eXBlIE1hcEV4dGVudCA9IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNYXBWaWV3T3B0aW9ucyB7XHJcbiAgcHJvamVjdGlvbj86IHN0cmluZztcclxuICBjZW50ZXI/OiBbbnVtYmVyLCBudW1iZXJdO1xyXG4gIG1heFpvb21PbkV4dGVudD86IG51bWJlcjtcclxuICBnZW9sb2NhdGU/OiBib29sZWFuO1xyXG4gIGJ1ZmZlcj86IEJ1ZmZlcjtcclxuICBhbHdheXNUcmFja2luZz86IGJvb2xlYW47XHJcbiAgY29uc3RyYWluUm90YXRpb24/OiBib29sZWFuIHwgbnVtYmVyO1xyXG4gIGVuYWJsZVJvdGF0aW9uPzogYm9vbGVhbjtcclxuICBleHRlbnQ/OiBNYXBFeHRlbnQ7XHJcbiAgbWF4TGF5ZXJab29tRXh0ZW50PzogTWFwRXh0ZW50O1xyXG4gIG1heFJlc29sdXRpb24/OiBudW1iZXI7XHJcbiAgbWluUmVzb2x1dGlvbj86IG51bWJlcjtcclxuICBtYXhab29tPzogbnVtYmVyO1xyXG4gIG1pblpvb20/OiBudW1iZXI7XHJcbiAgcmVzb2x1dGlvbj86IG51bWJlcjtcclxuICByZXNvbHV0aW9ucz86IG51bWJlcltdO1xyXG4gIHJvdGF0aW9uPzogbnVtYmVyO1xyXG4gIHpvb20/OiBudW1iZXI7XHJcbiAgem9vbUZhY3Rvcj86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNYXBWaWV3U3RhdGUge1xyXG4gIHJlc29sdXRpb246IG51bWJlcjtcclxuICBjZW50ZXI6IFtudW1iZXIsIG51bWJlcl07XHJcbiAgem9vbTogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1hcE9wdGlvbnMge1xyXG4gIHZpZXc/OiBNYXBWaWV3T3B0aW9ucztcclxuICBjb250cm9scz86IE1hcENvbnRyb2xzT3B0aW9ucztcclxuICBvdmVybGF5PzogYm9vbGVhbjtcclxuICBpbnRlcmFjdGlvbnM/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1hcENvbnRyb2xzT3B0aW9ucyB7XHJcbiAgYXR0cmlidXRpb24/OiBib29sZWFuIHwgTWFwQXR0cmlidXRpb25PcHRpb25zO1xyXG4gIHNjYWxlTGluZT86IGJvb2xlYW4gfCBNYXBTY2FsZUxpbmVPcHRpb25zO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1hcFNjYWxlTGluZU9wdGlvbnMge1xyXG4gIGNsYXNzTmFtZT86IHN0cmluZztcclxuICBtaW5XaWR0aD86IG51bWJlcjtcclxuICB0YXJnZXQ/OiBzdHJpbmcgfCBIVE1MRWxlbWVudDtcclxuICB1bml0cz86IFVuaXRzO1xyXG4gIGJhcj86IGJvb2xlYW47XHJcbiAgc3RlcHM/OiBudW1iZXI7XHJcbiAgdGV4dD86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWFwQXR0cmlidXRpb25PcHRpb25zIHtcclxuICBodG1sPzogc3RyaW5nO1xyXG4gIGNvbGxhcHNlZDogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBCdWZmZXIge1xyXG4gIGJ1ZmZlclJhZGl1cz86IG51bWJlcjtcclxuICBidWZmZXJTdHJva2U/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcclxuICBidWZmZXJGaWxsPzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XHJcbiAgc2hvd0J1ZmZlclJhZGl1cz86IGJvb2xlYW47XHJcbn1cclxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL21hcC9zaGFyZWQvbWFwLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVW5pdHMgfSBmcm9tIFwib2wvY29udHJvbC9TY2FsZUxpbmVcIjtcblxuZXhwb3J0IHR5cGUgTWFwRXh0ZW50ID0gW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwVmlld09wdGlvbnMge1xuICBwcm9qZWN0aW9uPzogc3RyaW5nO1xuICBjZW50ZXI/OiBbbnVtYmVyLCBudW1iZXJdO1xuICBtYXhab29tT25FeHRlbnQ/OiBudW1iZXI7XG4gIGdlb2xvY2F0ZT86IGJvb2xlYW47XG4gIGJ1ZmZlcj86IEJ1ZmZlcjtcbiAgYWx3YXlzVHJhY2tpbmc/OiBib29sZWFuO1xuICBjb25zdHJhaW5Sb3RhdGlvbj86IGJvb2xlYW4gfCBudW1iZXI7XG4gIGVuYWJsZVJvdGF0aW9uPzogYm9vbGVhbjtcbiAgZXh0ZW50PzogTWFwRXh0ZW50O1xuICBtYXhMYXllclpvb21FeHRlbnQ/OiBNYXBFeHRlbnQ7XG4gIG1heFJlc29sdXRpb24/OiBudW1iZXI7XG4gIG1pblJlc29sdXRpb24/OiBudW1iZXI7XG4gIG1heFpvb20/OiBudW1iZXI7XG4gIG1pblpvb20/OiBudW1iZXI7XG4gIHJlc29sdXRpb24/OiBudW1iZXI7XG4gIHJlc29sdXRpb25zPzogbnVtYmVyW107XG4gIHJvdGF0aW9uPzogbnVtYmVyO1xuICB6b29tPzogbnVtYmVyO1xuICB6b29tRmFjdG9yPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcFZpZXdTdGF0ZSB7XG4gIHJlc29sdXRpb246IG51bWJlcjtcbiAgY2VudGVyOiBbbnVtYmVyLCBudW1iZXJdO1xuICB6b29tOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwT3B0aW9ucyB7XG4gIHZpZXc/OiBNYXBWaWV3T3B0aW9ucztcbiAgY29udHJvbHM/OiBNYXBDb250cm9sc09wdGlvbnM7XG4gIG92ZXJsYXk/OiBib29sZWFuO1xuICBpbnRlcmFjdGlvbnM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcENvbnRyb2xzT3B0aW9ucyB7XG4gIGF0dHJpYnV0aW9uPzogYm9vbGVhbiB8IE1hcEF0dHJpYnV0aW9uT3B0aW9ucztcbiAgc2NhbGVMaW5lPzogYm9vbGVhbiB8IE1hcFNjYWxlTGluZU9wdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwU2NhbGVMaW5lT3B0aW9ucyB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgbWluV2lkdGg/OiBudW1iZXI7XG4gIHRhcmdldD86IHN0cmluZyB8IEhUTUxFbGVtZW50O1xuICB1bml0cz86IFVuaXRzO1xuICBiYXI/OiBib29sZWFuO1xuICBzdGVwcz86IG51bWJlcjtcbiAgdGV4dD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwQXR0cmlidXRpb25PcHRpb25zIHtcbiAgaHRtbD86IHN0cmluZztcbiAgY29sbGFwc2VkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1ZmZlciB7XG4gIGJ1ZmZlclJhZGl1cz86IG51bWJlcjtcbiAgYnVmZmVyU3Ryb2tlPzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIGJ1ZmZlckZpbGw/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgc2hvd0J1ZmZlclJhZGl1cz86IGJvb2xlYW47XG59XG4iXX0=