aril 1.2.24 → 1.2.25

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 (444) hide show
  1. package/esm2022/boot/base/index.mjs +1 -1
  2. package/esm2022/boot/base/src/create-base-app-config.mjs +1 -1
  3. package/esm2022/boot/bridge/index.mjs +1 -1
  4. package/esm2022/boot/bridge/src/mfe-bridge.mjs +1 -1
  5. package/esm2022/boot/bridge/src/provide-mfe-bridge.mjs +1 -1
  6. package/esm2022/boot/config/api/index.mjs +1 -1
  7. package/esm2022/boot/config/api/src/api.service.mjs +1 -1
  8. package/esm2022/boot/config/api/src/interfaces.mjs +1 -1
  9. package/esm2022/boot/config/apps/src/apps.service.mjs +4 -4
  10. package/esm2022/boot/config/apps/src/auth.guard.mjs +4 -4
  11. package/esm2022/boot/config/apps/src/interfaces.mjs +1 -1
  12. package/esm2022/boot/config/apps/src/route-permissions.mjs +1 -1
  13. package/esm2022/boot/config/apps/src/showdowDOMWrapper.mjs +4 -4
  14. package/esm2022/boot/config/plugins/src/getNgZone.mjs +1 -1
  15. package/esm2022/boot/config/plugins/src/interfaces.mjs +1 -1
  16. package/esm2022/boot/config/plugins/src/plugins.service.mjs +1 -1
  17. package/esm2022/boot/config/translate/primeng/i18n/tr.mjs +1 -1
  18. package/esm2022/boot/host/src/app.component.mjs +4 -4
  19. package/esm2022/boot/host/src/bootstrap.mjs +1 -1
  20. package/esm2022/boot/mfe/src/app.component.mjs +15 -15
  21. package/esm2022/boot/mfe/src/bootstrap.mjs +1 -1
  22. package/esm2022/boot/pages/index.mjs +1 -1
  23. package/esm2022/boot/pages/src/forbidden.component.mjs +53 -53
  24. package/esm2022/boot/pages/src/notFound.component.mjs +49 -49
  25. package/esm2022/http/lib/enums.mjs +1 -1
  26. package/esm2022/http/src/httpBackend.mjs +4 -4
  27. package/esm2022/http/src/serviceBase.mjs +1 -1
  28. package/esm2022/http/src/serviceStateMethods.mjs +1 -1
  29. package/esm2022/i18n/src/i18n.module.mjs +5 -5
  30. package/esm2022/i18n/src/loader.mjs +4 -4
  31. package/esm2022/keycloak/src/auth.interceptor.mjs +1 -1
  32. package/esm2022/provider/src/prodiveHost.mjs +1 -1
  33. package/esm2022/provider/src/prodiveHostRouter.mjs +1 -1
  34. package/esm2022/provider/src/provideHostKeycloak.mjs +1 -1
  35. package/esm2022/superset/index.mjs +1 -1
  36. package/esm2022/theme/layout/app/breadcrumb/app.breadcrumb.component.mjs +4 -4
  37. package/esm2022/theme/layout/app/expandableMenu/expandable-menu.component.mjs +5 -5
  38. package/esm2022/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.mjs +4 -4
  39. package/esm2022/theme/layout/app/favorite-pages/favorite-pages.service.mjs +4 -4
  40. package/esm2022/theme/layout/app/favorite-pages/modals/add-edit-favorite-modal/add-edit-favorite-modal.component.mjs +4 -4
  41. package/esm2022/theme/layout/app/general-search/general-search.component.mjs +4 -4
  42. package/esm2022/theme/layout/app/history/history-sidebar.component.mjs +4 -4
  43. package/esm2022/theme/layout/app/history/history.service.mjs +4 -4
  44. package/esm2022/theme/layout/app/layout/app.layout.component.mjs +4 -4
  45. package/esm2022/theme/layout/app/layout/mfe.layout.component.mjs +4 -4
  46. package/esm2022/theme/layout/app/notifications/notifications-sidebar.component.mjs +4 -4
  47. package/esm2022/theme/layout/app/profileSidebar/app.profilesidebar.component.mjs +4 -4
  48. package/esm2022/theme/layout/app/profileSidebar/modals/change-password-modal/change-password-modal.component.mjs +4 -4
  49. package/esm2022/theme/layout/app/profileSidebar/modals/edit-profile-modal/edit-profile-modal.component.mjs +4 -4
  50. package/esm2022/theme/layout/app/profileSidebar/profile.service.mjs +4 -4
  51. package/esm2022/theme/layout/app/site-map/site-map-sidebar.component.mjs +4 -4
  52. package/esm2022/theme/layout/app/static-sidebar/static-sidebar.component.mjs +5 -5
  53. package/esm2022/theme/layout/app/topbar/app.topbar.component.mjs +10 -5
  54. package/esm2022/theme/layout/index.mjs +1 -1
  55. package/esm2022/theme/layout/service/app.layout.service.mjs +4 -4
  56. package/esm2022/theme/layout/service/app.menu.service.mjs +4 -4
  57. package/esm2022/theme/layout/service/breadcrumb.service.mjs +4 -4
  58. package/esm2022/theme/layout/service/interfaces/enum.mjs +1 -1
  59. package/esm2022/theme/layout/service/notifications.service.mjs +4 -4
  60. package/esm2022/theme/layout/service/search.service.mjs +4 -4
  61. package/esm2022/theme/layout/service/selection-group.service.mjs +4 -4
  62. package/esm2022/ui/autoComplete/src/auto-complete.component.mjs +4 -4
  63. package/esm2022/ui/badge/src/badge.component.mjs +4 -4
  64. package/esm2022/ui/button/src/button.component.mjs +4 -4
  65. package/esm2022/ui/button/src/split-button.component.mjs +4 -4
  66. package/esm2022/ui/calendar/src/calendar.component.mjs +4 -4
  67. package/esm2022/ui/charts/src/amCharts/column/column-chart.component.mjs +4 -4
  68. package/esm2022/ui/charts/src/amCharts/line/line-chart.component.mjs +4 -4
  69. package/esm2022/ui/charts/src/amCharts/pie/pie-chart.component.mjs +4 -4
  70. package/esm2022/ui/charts/src/highCharts/area/area-chart.component.mjs +4 -4
  71. package/esm2022/ui/charts/src/highCharts/bar/bar-chart.component.mjs +4 -4
  72. package/esm2022/ui/charts/src/highCharts/column/column-chart.component.mjs +4 -4
  73. package/esm2022/ui/charts/src/highCharts/gauge/solid-gauge.component.mjs +4 -4
  74. package/esm2022/ui/charts/src/highCharts/heatmap/heatMap-chart.component.mjs +4 -4
  75. package/esm2022/ui/charts/src/highCharts/line/line-chart-datetime-axis.component.mjs +4 -4
  76. package/esm2022/ui/charts/src/highCharts/line/line-chart-series.component.mjs +4 -4
  77. package/esm2022/ui/charts/src/highCharts/line/line-chart.component.mjs +4 -4
  78. package/esm2022/ui/charts/src/highCharts/pie/pie-chart.component.mjs +4 -4
  79. package/esm2022/ui/checkbox/src/check-box.component.mjs +4 -4
  80. package/esm2022/ui/checkbox/src/tri-state-checkbox.component.mjs +4 -4
  81. package/esm2022/ui/chip/src/chip.component.mjs +4 -4
  82. package/esm2022/ui/collapse-reorder-list/src/collapse-reorder-list.component.mjs +4 -4
  83. package/esm2022/ui/dxEditor/src/dx-editor.component.mjs +4 -4
  84. package/esm2022/ui/dxField/src/dx-field.component.mjs +4 -4
  85. package/esm2022/ui/editor/src/aril-editor.component.mjs +4 -4
  86. package/esm2022/ui/field/src/field.component.mjs +4 -4
  87. package/esm2022/ui/fileUpload/src/file-upload.component.mjs +4 -4
  88. package/esm2022/ui/form/index.mjs +5 -5
  89. package/esm2022/ui/form/src/form-submit-button.component.mjs +5 -5
  90. package/esm2022/ui/form/src/form.component.mjs +4 -4
  91. package/esm2022/ui/img-viewer/src/img-viewer.component.mjs +4 -4
  92. package/esm2022/ui/json-diff-comparison/src/json-diff.component.mjs +4 -4
  93. package/esm2022/ui/lib/src/form/form-error-message.component.mjs +4 -4
  94. package/esm2022/ui/lib/src/form/form-error-message.directive.mjs +4 -4
  95. package/esm2022/ui/lib/src/grid/enum-color-picker.pipe.mjs +4 -4
  96. package/esm2022/ui/lib/src/grid/flex-grid.directive.mjs +4 -4
  97. package/esm2022/ui/lib/src/input/common-input-validators.service.mjs +4 -4
  98. package/esm2022/ui/lib/src/input/dx-input-error-message.pipe.mjs +4 -4
  99. package/esm2022/ui/lib/src/input/input-disabled.directive.mjs +4 -4
  100. package/esm2022/ui/lib/src/input/input-error-message.pipe.mjs +4 -4
  101. package/esm2022/ui/lib/src/input/value-accessor.directive.mjs +4 -4
  102. package/esm2022/ui/loader/src/loader.component.mjs +4 -4
  103. package/esm2022/ui/mask/src/mask.component.mjs +4 -4
  104. package/esm2022/ui/multiSelect/src/multi-select.component.mjs +4 -4
  105. package/esm2022/ui/number/src/number.component.mjs +4 -4
  106. package/esm2022/ui/operation-types-dialog/src/operation-types-dialog.component.mjs +13 -13
  107. package/esm2022/ui/overlayPanel/src/overlay-panel.component.mjs +4 -4
  108. package/esm2022/ui/panel/src/panel.component.mjs +4 -4
  109. package/esm2022/ui/password/src/password.component.mjs +4 -4
  110. package/esm2022/ui/pdf-viewer/src/pdf-viewer.component.mjs +4 -4
  111. package/esm2022/ui/progressbar/src/progressbar.component.mjs +4 -4
  112. package/esm2022/ui/radioButton/src/radio-button.component.mjs +4 -4
  113. package/esm2022/ui/relativeDateSelector/src/relative-date-selector.component.mjs +4 -4
  114. package/esm2022/ui/selectBox/src/select-box.component.mjs +4 -4
  115. package/esm2022/ui/switch/src/switch.component.mjs +4 -4
  116. package/esm2022/ui/table/index.mjs +5 -5
  117. package/esm2022/ui/table/src/export-overlay-panel.component.mjs +129 -129
  118. package/esm2022/ui/table/src/interfaces.mjs +1 -1
  119. package/esm2022/ui/table/src/table-column.component.mjs +4 -4
  120. package/esm2022/ui/table/src/table.component.mjs +5 -5
  121. package/esm2022/ui/table-expand/index.mjs +5 -5
  122. package/esm2022/ui/table-expand/src/table-column.component.mjs +4 -4
  123. package/esm2022/ui/table-expand/src/table-expand-area.component.mjs +4 -4
  124. package/esm2022/ui/table-expand/src/table.component.mjs +4 -4
  125. package/esm2022/ui/tag/src/tag.component.mjs +4 -4
  126. package/esm2022/ui/tagBox/src/tag-box.component.mjs +4 -4
  127. package/esm2022/ui/text/src/text.component.mjs +4 -4
  128. package/esm2022/ui/textArea/src/text-area.component.mjs +4 -4
  129. package/esm2022/ui/toggle-button/src/toggle-button.component.mjs +4 -4
  130. package/esm2022/ui/tooltip/src/tooltip-component.mjs +4 -4
  131. package/esm2022/ui/translate-input/src/aril-lang-modal/aril-lang-modal.component.mjs +4 -4
  132. package/esm2022/ui/translate-input/src/aril-translate-input.component.mjs +4 -4
  133. package/esm2022/ui/tree/src/tree.component.mjs +4 -4
  134. package/esm2022/ui/treeSelect/src/treeSelect.component.mjs +4 -4
  135. package/esm2022/ui/treeTable/src/tree-table.component.mjs +4 -4
  136. package/esm2022/ui/value/src/value.component.mjs +4 -4
  137. package/esm2022/ui-business/assetPicker/index.mjs +1 -1
  138. package/esm2022/ui-business/assetPicker/src/asset-picker.component.mjs +5 -5
  139. package/esm2022/ui-business/detailed-overlay-panel/src/detailed-overlay-panel.component.mjs +5 -5
  140. package/esm2022/ui-business/enumPicker/src/enum-picker.component.mjs +5 -5
  141. package/esm2022/ui-business/enumPicker/src/interface.mjs +1 -1
  142. package/esm2022/ui-business/image-viewer/src/aril-image-viewer.component.mjs +4 -4
  143. package/esm2022/ui-business/multiAssetPicker/index.mjs +1 -1
  144. package/esm2022/ui-business/multiAssetPicker/src/multi-asset-picker.component.mjs +5 -5
  145. package/esm2022/ui-business/multiple-ref-value/src/multiple-ref-value.component.mjs +4 -4
  146. package/esm2022/ui-business/notification-templates-dialog/src/notification-templates-dialog.component.mjs +4 -4
  147. package/esm2022/ui-business/operation-types-dialog/src/operation-types-dialog.component.mjs +4 -4
  148. package/esm2022/ui-business/pdf-preview-modal/index.mjs +1 -1
  149. package/esm2022/ui-business/pdf-preview-modal/src/open-pdf-preview.mjs +1 -1
  150. package/esm2022/ui-business/pdf-preview-modal/src/pdf-preview-modal.component.mjs +29 -29
  151. package/esm2022/ui-business/ref-value/src/ref-value.component.mjs +5 -5
  152. package/esm2022/ui-business/rolePicker/src/role-picker.component.mjs +4 -4
  153. package/esm2022/ui-business/trace-drawer/index.mjs +1 -1
  154. package/esm2022/ui-business/trace-drawer/src/app-log.service.mjs +4 -4
  155. package/esm2022/ui-business/trace-drawer/src/interfaces.mjs +1 -1
  156. package/esm2022/ui-business/trace-drawer/src/trace-drawer.component.mjs +5 -5
  157. package/esm2022/ui-business/trace-drawer/src/trace-log.service.mjs +4 -4
  158. package/esm2022/ui-business/trace-id/index.mjs +1 -1
  159. package/esm2022/ui-business/trace-id/src/trace-id.component.mjs +5 -5
  160. package/esm2022/ui-business/userPicker/src/user-picker.component.mjs +4 -4
  161. package/esm2022/util/activity/index.mjs +1 -1
  162. package/esm2022/util/activity/src/activity.constants.mjs +1 -1
  163. package/esm2022/util/activity/src/activity.service.mjs +4 -4
  164. package/esm2022/util/activity/src/activity.types.mjs +1 -1
  165. package/esm2022/util/block/src/block.mjs +7 -7
  166. package/esm2022/util/directives/src/detail-page-customization/detail-page-customization.directive.mjs +4 -4
  167. package/esm2022/util/directives/src/dialog-component/plugin-dialog.component.mjs +4 -4
  168. package/esm2022/util/directives/src/dialog-service/plugin-dialog.service.mjs +4 -4
  169. package/esm2022/util/lib/src/module-router.mjs +4 -4
  170. package/esm2022/util/pipes/src/distance-to-now.pipe.mjs +4 -4
  171. package/esm2022/util/pipes/src/get-column-by-field.pipe.mjs +4 -4
  172. package/esm2022/util/pipes/src/parse.pipe.mjs +4 -4
  173. package/esm2022/util/pipes/src/round-number.pipe.mjs +4 -4
  174. package/esm2022/util/pipes/src/safe.pipe.mjs +4 -4
  175. package/esm2022/util/pipes/src/translate-json/translate-json.pipe.mjs +4 -4
  176. package/esm2022/util/pub-sub/src/pub-sub.service.mjs +4 -4
  177. package/esm2022/util/sync-active-tab-route/src/sync-active-tab-route.directive.mjs +4 -4
  178. package/esm2022/util/unwrap/src/unwrap-tag.directive.mjs +4 -4
  179. package/fesm2022/{aril-app.component-CwZZhJcO.mjs → aril-app.component-Pj4R9eG9.mjs} +15 -15
  180. package/fesm2022/aril-app.component-Pj4R9eG9.mjs.map +1 -0
  181. package/fesm2022/aril-boot-base.mjs +1 -1
  182. package/fesm2022/aril-boot-base.mjs.map +1 -1
  183. package/fesm2022/aril-boot-bridge.mjs.map +1 -1
  184. package/fesm2022/aril-boot-config-api.mjs +1 -1
  185. package/fesm2022/aril-boot-config-api.mjs.map +1 -1
  186. package/fesm2022/aril-boot-config-apps.mjs +10 -10
  187. package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
  188. package/fesm2022/aril-boot-config-plugins.mjs +1 -1
  189. package/fesm2022/aril-boot-config-plugins.mjs.map +1 -1
  190. package/fesm2022/aril-boot-config-translate.mjs.map +1 -1
  191. package/fesm2022/aril-boot-host.mjs +4 -4
  192. package/fesm2022/aril-boot-host.mjs.map +1 -1
  193. package/fesm2022/{aril-boot-mfe-app.component-DwYgUUdL.mjs → aril-boot-mfe-app.component-GbZAGlTf.mjs} +16 -16
  194. package/fesm2022/aril-boot-mfe-app.component-GbZAGlTf.mjs.map +1 -0
  195. package/fesm2022/{aril-boot-mfe-aril-boot-mfe-hJkkFa_a.mjs → aril-boot-mfe-aril-boot-mfe-I5xT2fQx.mjs} +4 -4
  196. package/fesm2022/aril-boot-mfe-aril-boot-mfe-I5xT2fQx.mjs.map +1 -0
  197. package/fesm2022/aril-boot-mfe.mjs +1 -1
  198. package/fesm2022/aril-boot-pages.mjs +100 -100
  199. package/fesm2022/aril-boot-pages.mjs.map +1 -1
  200. package/fesm2022/aril-http.mjs +3 -3
  201. package/fesm2022/aril-http.mjs.map +1 -1
  202. package/fesm2022/aril-i18n.mjs +7 -7
  203. package/fesm2022/aril-i18n.mjs.map +1 -1
  204. package/fesm2022/aril-keycloak.mjs.map +1 -1
  205. package/fesm2022/aril-provider.mjs +1 -1
  206. package/fesm2022/aril-provider.mjs.map +1 -1
  207. package/fesm2022/aril-theme-layout.mjs +79 -75
  208. package/fesm2022/aril-theme-layout.mjs.map +1 -1
  209. package/fesm2022/aril-ui-autoComplete.mjs +6 -6
  210. package/fesm2022/aril-ui-autoComplete.mjs.map +1 -1
  211. package/fesm2022/aril-ui-badge.mjs +4 -4
  212. package/fesm2022/aril-ui-badge.mjs.map +1 -1
  213. package/fesm2022/aril-ui-business-assetPicker.mjs +6 -6
  214. package/fesm2022/aril-ui-business-assetPicker.mjs.map +1 -1
  215. package/fesm2022/aril-ui-business-detailed-overlay-panel.mjs +6 -6
  216. package/fesm2022/aril-ui-business-detailed-overlay-panel.mjs.map +1 -1
  217. package/fesm2022/aril-ui-business-enumPicker.mjs +6 -6
  218. package/fesm2022/aril-ui-business-enumPicker.mjs.map +1 -1
  219. package/fesm2022/aril-ui-business-image-viewer.mjs +3 -3
  220. package/fesm2022/aril-ui-business-image-viewer.mjs.map +1 -1
  221. package/fesm2022/aril-ui-business-multiAssetPicker.mjs +5 -5
  222. package/fesm2022/aril-ui-business-multiAssetPicker.mjs.map +1 -1
  223. package/fesm2022/aril-ui-business-multiple-ref-value.mjs +4 -4
  224. package/fesm2022/aril-ui-business-multiple-ref-value.mjs.map +1 -1
  225. package/fesm2022/aril-ui-business-notification-templates-dialog.mjs +3 -3
  226. package/fesm2022/aril-ui-business-notification-templates-dialog.mjs.map +1 -1
  227. package/fesm2022/aril-ui-business-operation-types-dialog.mjs +3 -3
  228. package/fesm2022/aril-ui-business-operation-types-dialog.mjs.map +1 -1
  229. package/fesm2022/aril-ui-business-pdf-preview-modal.mjs +28 -28
  230. package/fesm2022/aril-ui-business-pdf-preview-modal.mjs.map +1 -1
  231. package/fesm2022/aril-ui-business-ref-value.mjs +5 -5
  232. package/fesm2022/aril-ui-business-ref-value.mjs.map +1 -1
  233. package/fesm2022/aril-ui-business-rolePicker.mjs +4 -4
  234. package/fesm2022/aril-ui-business-rolePicker.mjs.map +1 -1
  235. package/fesm2022/aril-ui-business-trace-drawer.mjs +11 -11
  236. package/fesm2022/aril-ui-business-trace-drawer.mjs.map +1 -1
  237. package/fesm2022/aril-ui-business-trace-id.mjs +5 -5
  238. package/fesm2022/aril-ui-business-trace-id.mjs.map +1 -1
  239. package/fesm2022/aril-ui-business-userPicker.mjs +3 -3
  240. package/fesm2022/aril-ui-business-userPicker.mjs.map +1 -1
  241. package/fesm2022/aril-ui-button.mjs +7 -7
  242. package/fesm2022/aril-ui-button.mjs.map +1 -1
  243. package/fesm2022/aril-ui-calendar.mjs +3 -3
  244. package/fesm2022/aril-ui-calendar.mjs.map +1 -1
  245. package/fesm2022/aril-ui-charts.mjs +37 -37
  246. package/fesm2022/aril-ui-charts.mjs.map +1 -1
  247. package/fesm2022/aril-ui-checkbox.mjs +6 -6
  248. package/fesm2022/aril-ui-checkbox.mjs.map +1 -1
  249. package/fesm2022/aril-ui-chip.mjs +4 -4
  250. package/fesm2022/aril-ui-chip.mjs.map +1 -1
  251. package/fesm2022/aril-ui-collapse-reorder-list.mjs +4 -4
  252. package/fesm2022/aril-ui-collapse-reorder-list.mjs.map +1 -1
  253. package/fesm2022/aril-ui-dxEditor.mjs +4 -4
  254. package/fesm2022/aril-ui-dxEditor.mjs.map +1 -1
  255. package/fesm2022/aril-ui-dxField.mjs +4 -4
  256. package/fesm2022/aril-ui-dxField.mjs.map +1 -1
  257. package/fesm2022/aril-ui-editor.mjs +4 -4
  258. package/fesm2022/aril-ui-editor.mjs.map +1 -1
  259. package/fesm2022/aril-ui-field.mjs +4 -4
  260. package/fesm2022/aril-ui-field.mjs.map +1 -1
  261. package/fesm2022/aril-ui-fileUpload.mjs +4 -4
  262. package/fesm2022/aril-ui-fileUpload.mjs.map +1 -1
  263. package/fesm2022/aril-ui-form.mjs +12 -12
  264. package/fesm2022/aril-ui-form.mjs.map +1 -1
  265. package/fesm2022/aril-ui-img-viewer.mjs +3 -3
  266. package/fesm2022/aril-ui-img-viewer.mjs.map +1 -1
  267. package/fesm2022/aril-ui-json-diff-comparison.mjs +4 -4
  268. package/fesm2022/aril-ui-json-diff-comparison.mjs.map +1 -1
  269. package/fesm2022/aril-ui-lib.mjs +28 -28
  270. package/fesm2022/aril-ui-lib.mjs.map +1 -1
  271. package/fesm2022/aril-ui-loader.mjs +3 -3
  272. package/fesm2022/aril-ui-loader.mjs.map +1 -1
  273. package/fesm2022/aril-ui-mask.mjs +3 -3
  274. package/fesm2022/aril-ui-mask.mjs.map +1 -1
  275. package/fesm2022/aril-ui-multiSelect.mjs +3 -3
  276. package/fesm2022/aril-ui-multiSelect.mjs.map +1 -1
  277. package/fesm2022/aril-ui-number.mjs +3 -3
  278. package/fesm2022/aril-ui-number.mjs.map +1 -1
  279. package/fesm2022/aril-ui-operation-types-dialog.mjs +12 -12
  280. package/fesm2022/aril-ui-operation-types-dialog.mjs.map +1 -1
  281. package/fesm2022/aril-ui-overlayPanel.mjs +4 -4
  282. package/fesm2022/aril-ui-overlayPanel.mjs.map +1 -1
  283. package/fesm2022/aril-ui-panel.mjs +4 -4
  284. package/fesm2022/aril-ui-panel.mjs.map +1 -1
  285. package/fesm2022/aril-ui-password.mjs +3 -3
  286. package/fesm2022/aril-ui-password.mjs.map +1 -1
  287. package/fesm2022/aril-ui-pdf-viewer.mjs +3 -3
  288. package/fesm2022/aril-ui-pdf-viewer.mjs.map +1 -1
  289. package/fesm2022/aril-ui-progressbar.mjs +3 -3
  290. package/fesm2022/aril-ui-progressbar.mjs.map +1 -1
  291. package/fesm2022/aril-ui-radioButton.mjs +3 -3
  292. package/fesm2022/aril-ui-radioButton.mjs.map +1 -1
  293. package/fesm2022/aril-ui-relativeDateSelector.mjs +4 -4
  294. package/fesm2022/aril-ui-relativeDateSelector.mjs.map +1 -1
  295. package/fesm2022/aril-ui-selectBox.mjs +5 -5
  296. package/fesm2022/aril-ui-selectBox.mjs.map +1 -1
  297. package/fesm2022/aril-ui-switch.mjs +3 -3
  298. package/fesm2022/aril-ui-switch.mjs.map +1 -1
  299. package/fesm2022/aril-ui-table-expand.mjs +14 -14
  300. package/fesm2022/aril-ui-table-expand.mjs.map +1 -1
  301. package/fesm2022/aril-ui-table.mjs +141 -141
  302. package/fesm2022/aril-ui-table.mjs.map +1 -1
  303. package/fesm2022/aril-ui-tag.mjs +3 -3
  304. package/fesm2022/aril-ui-tag.mjs.map +1 -1
  305. package/fesm2022/aril-ui-tagBox.mjs +5 -5
  306. package/fesm2022/aril-ui-tagBox.mjs.map +1 -1
  307. package/fesm2022/aril-ui-text.mjs +3 -3
  308. package/fesm2022/aril-ui-text.mjs.map +1 -1
  309. package/fesm2022/aril-ui-textArea.mjs +3 -3
  310. package/fesm2022/aril-ui-textArea.mjs.map +1 -1
  311. package/fesm2022/aril-ui-toggle-button.mjs +4 -4
  312. package/fesm2022/aril-ui-toggle-button.mjs.map +1 -1
  313. package/fesm2022/aril-ui-tooltip.mjs +3 -3
  314. package/fesm2022/aril-ui-tooltip.mjs.map +1 -1
  315. package/fesm2022/aril-ui-translate-input.mjs +6 -6
  316. package/fesm2022/aril-ui-translate-input.mjs.map +1 -1
  317. package/fesm2022/aril-ui-tree.mjs +4 -4
  318. package/fesm2022/aril-ui-tree.mjs.map +1 -1
  319. package/fesm2022/aril-ui-treeSelect.mjs +4 -4
  320. package/fesm2022/aril-ui-treeSelect.mjs.map +1 -1
  321. package/fesm2022/aril-ui-treeTable.mjs +4 -4
  322. package/fesm2022/aril-ui-treeTable.mjs.map +1 -1
  323. package/fesm2022/aril-ui-value.mjs +5 -5
  324. package/fesm2022/aril-ui-value.mjs.map +1 -1
  325. package/fesm2022/aril-util-activity.mjs +3 -3
  326. package/fesm2022/aril-util-activity.mjs.map +1 -1
  327. package/fesm2022/aril-util-block.mjs +6 -6
  328. package/fesm2022/aril-util-block.mjs.map +1 -1
  329. package/fesm2022/aril-util-directives.mjs +10 -10
  330. package/fesm2022/aril-util-directives.mjs.map +1 -1
  331. package/fesm2022/aril-util-lib.mjs +3 -3
  332. package/fesm2022/aril-util-lib.mjs.map +1 -1
  333. package/fesm2022/aril-util-pipes.mjs +18 -18
  334. package/fesm2022/aril-util-pipes.mjs.map +1 -1
  335. package/fesm2022/aril-util-primitive-extensions.mjs.map +1 -1
  336. package/fesm2022/aril-util-pub-sub.mjs +3 -3
  337. package/fesm2022/aril-util-pub-sub.mjs.map +1 -1
  338. package/fesm2022/aril-util-sync-active-tab-route.mjs +4 -4
  339. package/fesm2022/aril-util-sync-active-tab-route.mjs.map +1 -1
  340. package/fesm2022/aril-util-unwrap.mjs +3 -3
  341. package/fesm2022/aril-util-unwrap.mjs.map +1 -1
  342. package/fesm2022/aril.mjs +6 -6
  343. package/fesm2022/aril.mjs.map +1 -1
  344. package/package.json +72 -72
  345. package/theme/layout/app/breadcrumb/app.breadcrumb.component.ts +127 -127
  346. package/theme/layout/app/expandableMenu/expandable-menu.component.html +137 -137
  347. package/theme/layout/app/expandableMenu/expandable-menu.component.ts +373 -373
  348. package/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.d.ts +0 -16
  349. package/theme/layout/app/general-search/general-search.component.ts +93 -93
  350. package/theme/layout/app/history/history-sidebar.component.d.ts +0 -16
  351. package/theme/layout/app/history/history.service.ts +158 -158
  352. package/theme/layout/app/layout/app.layout.component.ts +168 -168
  353. package/theme/layout/app/notifications/notifications-sidebar.component.d.ts +0 -16
  354. package/theme/layout/app/site-map/site-map-sidebar.component.d.ts +0 -16
  355. package/theme/layout/app/site-map/site-map-sidebar.component.ts +195 -195
  356. package/theme/layout/app/static-sidebar/static-sidebar.component.html +162 -162
  357. package/theme/layout/app/static-sidebar/static-sidebar.component.scss +420 -420
  358. package/theme/layout/app/static-sidebar/static-sidebar.component.ts +343 -343
  359. package/theme/layout/app/topbar/app.topbar.component.d.ts +2 -0
  360. package/theme/layout/app/topbar/app.topbar.component.html +1 -1
  361. package/theme/layout/app/topbar/app.topbar.component.scss +1 -0
  362. package/theme/layout/app/topbar/app.topbar.component.ts +6 -0
  363. package/theme/layout/index.ts +9 -9
  364. package/theme/layout/service/interfaces/enum.ts +19 -19
  365. package/theme/styles/layout/_expanded_sidebar.scss +511 -511
  366. package/theme/styles/layout/_fonts.scss +81 -81
  367. package/theme/styles/theme/base/components/input/_inputtext.scss +104 -104
  368. package/theme/styles/theme/base/components/overlay/_sidebar.scss +27 -27
  369. package/theme/styles/theme/base/components/panel/_stepper.scss +205 -205
  370. package/theme/styles/theme/dark/_variables.scss +933 -933
  371. package/theme/styles/theme/light/_variables.scss +940 -940
  372. package/ui/autoComplete/src/auto-complete.component.d.ts +8 -8
  373. package/ui/badge/src/badge.component.d.ts +9 -9
  374. package/ui/button/src/button.component.d.ts +12 -12
  375. package/ui/button/src/split-button.component.d.ts +1 -1
  376. package/ui/calendar/src/calendar.component.d.ts +22 -22
  377. package/ui/charts/src/amCharts/column/column-chart.component.d.ts +4 -4
  378. package/ui/charts/src/amCharts/line/line-chart.component.d.ts +5 -5
  379. package/ui/charts/src/amCharts/pie/pie-chart.component.d.ts +4 -4
  380. package/ui/charts/src/highCharts/area/area-chart.component.d.ts +3 -3
  381. package/ui/charts/src/highCharts/bar/bar-chart.component.d.ts +7 -7
  382. package/ui/charts/src/highCharts/column/column-chart.component.d.ts +9 -9
  383. package/ui/charts/src/highCharts/gauge/solid-gauge.component.d.ts +3 -3
  384. package/ui/charts/src/highCharts/heatmap/heatMap-chart.component.d.ts +4 -4
  385. package/ui/charts/src/highCharts/line/line-chart-datetime-axis.component.d.ts +5 -5
  386. package/ui/charts/src/highCharts/line/line-chart-series.component.d.ts +4 -4
  387. package/ui/charts/src/highCharts/line/line-chart.component.d.ts +4 -4
  388. package/ui/charts/src/highCharts/pie/pie-chart.component.d.ts +7 -7
  389. package/ui/checkbox/src/check-box.component.d.ts +3 -3
  390. package/ui/checkbox/src/tri-state-checkbox.component.d.ts +2 -2
  391. package/ui/chip/src/chip.component.d.ts +7 -7
  392. package/ui/collapse-reorder-list/src/collapse-reorder-list.component.d.ts +4 -4
  393. package/ui/dxEditor/src/dx-editor.component.d.ts +5 -5
  394. package/ui/dxField/src/dx-field.component.d.ts +5 -5
  395. package/ui/editor/src/aril-editor.component.d.ts +3 -3
  396. package/ui/field/src/field.component.d.ts +9 -9
  397. package/ui/fileUpload/src/file-upload.component.d.ts +14 -14
  398. package/ui/form/src/form-submit-button.component.d.ts +1 -1
  399. package/ui/form/src/form.component.d.ts +1 -1
  400. package/ui/img-viewer/src/img-viewer.component.d.ts +1 -1
  401. package/ui/lib/src/form/form-error-message.directive.d.ts +1 -1
  402. package/ui/mask/src/mask.component.d.ts +6 -6
  403. package/ui/multiSelect/src/multi-select.component.d.ts +13 -13
  404. package/ui/number/src/number.component.d.ts +15 -15
  405. package/ui/overlayPanel/src/overlay-panel.component.d.ts +1 -1
  406. package/ui/panel/src/panel.component.d.ts +6 -6
  407. package/ui/password/src/password.component.d.ts +4 -4
  408. package/ui/pdf-viewer/src/pdf-viewer.component.d.ts +12 -12
  409. package/ui/progressbar/src/progressbar.component.d.ts +3 -3
  410. package/ui/radioButton/src/radio-button.component.d.ts +3 -3
  411. package/ui/selectBox/src/select-box.component.d.ts +10 -10
  412. package/ui/switch/src/switch.component.d.ts +1 -1
  413. package/ui/table/src/export-overlay-panel.component.d.ts +2 -2
  414. package/ui/table/src/table-column.component.d.ts +11 -11
  415. package/ui/table/src/table.component.d.ts +35 -35
  416. package/ui/table-expand/src/table-column.component.d.ts +6 -6
  417. package/ui/table-expand/src/table.component.d.ts +20 -20
  418. package/ui/tag/src/tag.component.d.ts +6 -4
  419. package/ui/tagBox/src/tag-box.component.d.ts +7 -7
  420. package/ui/text/src/text.component.d.ts +5 -5
  421. package/ui/textArea/src/text-area.component.d.ts +5 -5
  422. package/ui/toggle-button/src/toggle-button.component.d.ts +1 -1
  423. package/ui/tooltip/src/tooltip-component.d.ts +8 -8
  424. package/ui/translate-input/src/aril-translate-input.component.d.ts +2 -2
  425. package/ui/tree/src/tree.component.d.ts +8 -8
  426. package/ui/treeSelect/src/treeSelect.component.d.ts +12 -12
  427. package/ui/treeTable/src/tree-table.component.d.ts +5 -5
  428. package/ui/value/src/value.component.d.ts +15 -15
  429. package/ui-business/assetPicker/src/asset-picker.component.d.ts +11 -11
  430. package/ui-business/detailed-overlay-panel/src/detailed-overlay-panel.component.d.ts +6 -3
  431. package/ui-business/enumPicker/src/enum-picker.component.d.ts +24 -24
  432. package/ui-business/image-viewer/src/aril-image-viewer.component.d.ts +8 -8
  433. package/ui-business/multiAssetPicker/src/multi-asset-picker.component.d.ts +15 -15
  434. package/ui-business/multiple-ref-value/src/multiple-ref-value.component.d.ts +5 -2
  435. package/ui-business/ref-value/src/ref-value.component.d.ts +5 -5
  436. package/ui-business/rolePicker/src/role-picker.component.d.ts +6 -6
  437. package/ui-business/trace-drawer/src/trace-drawer.component.d.ts +8 -8
  438. package/ui-business/trace-id/src/trace-id.component.d.ts +6 -6
  439. package/ui-business/userPicker/src/user-picker.component.d.ts +3 -3
  440. package/util/block/src/block.d.ts +4 -4
  441. package/util/lib/src/types.d.ts +0 -16
  442. package/fesm2022/aril-app.component-CwZZhJcO.mjs.map +0 -1
  443. package/fesm2022/aril-boot-mfe-app.component-DwYgUUdL.mjs.map +0 -1
  444. package/fesm2022/aril-boot-mfe-aril-boot-mfe-hJkkFa_a.mjs.map +0 -1
@@ -282,13 +282,13 @@ export class TraceDrawerComponent {
282
282
  return null;
283
283
  }
284
284
  }
285
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraceDrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
286
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: TraceDrawerComponent, isStandalone: true, selector: "aril-trace-drawer", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, traceId: { classPropertyName: "traceId", publicName: "traceId", isSignal: true, isRequired: true, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, modal: { classPropertyName: "modal", publicName: "modal", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, startTime: { classPropertyName: "startTime", publicName: "startTime", isSignal: true, isRequired: false, transformFunction: null }, endTime: { classPropertyName: "endTime", publicName: "endTime", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibleChange: "visibleChange" }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n\t<p-sidebar\r\n\t\t[visible]=\"visible()\"\r\n\t\t(visibleChange)=\"onVisibleChange($event)\"\r\n\t\t[position]=\"position()\"\r\n\t\t[style]=\"{ width: width() }\"\r\n\t\t[modal]=\"modal()\"\r\n\t\t[dismissible]=\"true\"\r\n\t\t[showCloseIcon]=\"true\"\r\n\t\tstyleClass=\"aril-trace-drawer\">\r\n\t\t<ng-template pTemplate=\"header\">\r\n\t\t\t<div class=\"aril-trace-drawer__header\">\r\n\t\t\t\t<i class=\"pi pi-sitemap\"></i>\r\n\t\t\t\t<span class=\"aril-trace-drawer__title\">{{ t('traceDrawer.title') }}</span>\r\n\t\t\t\t<code class=\"aril-trace-drawer__chip\">{{ traceId() }}</code>\r\n\t\t\t\t<i\r\n\t\t\t\t\trole=\"button\"\r\n\t\t\t\t\tclass=\"pi pi-refresh aril-trace-drawer__refresh\"\r\n\t\t\t\t\t[class.pi-spin]=\"loading()\"\r\n\t\t\t\t\t[pTooltip]=\"t('traceDrawer.refresh')\"\r\n\t\t\t\t\ttooltipPosition=\"bottom\"\r\n\t\t\t\t\t(click)=\"refresh()\"></i>\r\n\t\t\t\t<i\r\n\t\t\t\t\trole=\"button\"\r\n\t\t\t\t\tclass=\"pi pi-share-alt aril-trace-drawer__share\"\r\n\t\t\t\t\t[pTooltip]=\"t('traceDrawer.shareLink')\"\r\n\t\t\t\t\ttooltipPosition=\"bottom\"\r\n\t\t\t\t\t(click)=\"shareLink()\"></i>\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\r\n\t\t<div class=\"aril-trace-drawer__body\">\r\n\t\t\t@if (loading()) {\r\n\t\t\t\t<div class=\"aril-trace-drawer__state\">\r\n\t\t\t\t\t<p-progressSpinner strokeWidth=\"3\" styleClass=\"w-3rem h-3rem\"></p-progressSpinner>\r\n\t\t\t\t\t<span>{{ t('traceDrawer.loading') }}</span>\r\n\t\t\t\t</div>\r\n\t\t\t} @else if (errorMessage()) {\r\n\t\t\t\t<div class=\"aril-trace-drawer__state aril-trace-drawer__state--error\">\r\n\t\t\t\t\t<i class=\"pi pi-exclamation-triangle\"></i>\r\n\t\t\t\t\t<p>{{ errorMessage() }}</p>\r\n\t\t\t\t\t<aril-button [label]=\"t('traceDrawer.retry')\" icon=\"REFRESH\" color=\"primary\" (clickEvent)=\"retry()\" />\r\n\t\t\t\t</div>\r\n\t\t\t} @else {\r\n\t\t\t\t@if (refValueEntries().length) {\r\n\t\t\t\t\t<section class=\"aril-trace-drawer__section\">\r\n\t\t\t\t\t\t<h3 class=\"aril-trace-drawer__section-title\">\r\n\t\t\t\t\t\t\t<i class=\"pi pi-tags\"></i>\r\n\t\t\t\t\t\t\t{{ t('traceDrawer.refValuesHeader') }}\r\n\t\t\t\t\t\t\t<aril-badge [value]=\"refValueEntries().length.toString()\" [rounded]=\"true\" />\r\n\t\t\t\t\t\t</h3>\r\n\t\t\t\t\t\t<div class=\"ref-values\">\r\n\t\t\t\t\t\t\t@for (entry of refValueEntries(); track entry[0]) {\r\n\t\t\t\t\t\t\t\t<div class=\"ref-values__row\">\r\n\t\t\t\t\t\t\t\t\t<span class=\"ref-values__key\">{{ entry[0] }}</span>\r\n\t\t\t\t\t\t\t\t\t<div class=\"ref-values__chips\">\r\n\t\t\t\t\t\t\t\t\t\t@for (val of entry[1]; track val) {\r\n\t\t\t\t\t\t\t\t\t\t\t<code class=\"ref-values__chip\">{{ val }}</code>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</section>\r\n\t\t\t\t}\r\n\t\t\t\t@if (apisixHits().length) {\r\n\t\t\t\t\t<section class=\"aril-trace-drawer__section\">\r\n\t\t\t\t\t\t<h3 class=\"aril-trace-drawer__section-title\">\r\n\t\t\t\t\t\t\t<i class=\"pi pi-globe\"></i>\r\n\t\t\t\t\t\t\t{{ t('traceDrawer.apisixHeader') }}\r\n\t\t\t\t\t\t\t<aril-badge [value]=\"apisixHits().length + ' / ' + totalItem()\" [rounded]=\"true\" />\r\n\t\t\t\t\t\t</h3>\r\n\t\t\t\t\t\t@for (hit of apisixHits(); track hit.id) {\r\n\t\t\t\t\t\t\t<details class=\"trace-row trace-row--{{ statusSeverity(hit.status) }}\">\r\n\t\t\t\t\t\t\t\t<summary class=\"trace-row__summary\">\r\n\t\t\t\t\t\t\t\t\t<i class=\"pi pi-chevron-right trace-row__chevron\"></i>\r\n\t\t\t\t\t\t\t\t\t<aril-badge [value]=\"hit.status.toString()\" [severity]=\"statusSeverity(hit.status)\" />\r\n\t\t\t\t\t\t\t\t\t<span class=\"trace-row__tag\">{{ hit.requestMethod }}</span>\r\n\t\t\t\t\t\t\t\t\t<span class=\"trace-row__main\">{{ hit.requestUri }}</span>\r\n\t\t\t\t\t\t\t\t\t<aril-badge\r\n\t\t\t\t\t\t\t\t\t\t[value]=\"formatDuration(hit.responseTime)\"\r\n\t\t\t\t\t\t\t\t\t\t[severity]=\"durationSeverity(hit.responseTime)\" />\r\n\t\t\t\t\t\t\t\t\t@if (hit.timestamp) {\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"trace-row__time\">{{ formatTimestamp(hit.timestamp) }}</span>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\trole=\"button\"\r\n\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-code trace-row__action\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('traceDrawer.copyCurl')\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t(click)=\"$event.preventDefault(); $event.stopPropagation(); copyAsCurl(hit)\"></i>\r\n\t\t\t\t\t\t\t\t</summary>\r\n\t\t\t\t\t\t\t\t<div class=\"trace-row__body\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"trace-row__meta\">\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.routeName) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.route') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ hit.routeName }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.sourceApp || hit.sourceModule) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.source') }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span>{{ hit.sourceApp }}{{ hit.sourceModule ? ' / ' + hit.sourceModule : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.targetApp || hit.targetModule) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.target') }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span>{{ hit.targetApp }}{{ hit.targetModule ? ' / ' + hit.targetModule : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.upstreamHost) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.upstream') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ hit.upstreamHost }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.username) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.user') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ hit.username }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.requestSize !== undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.requestSize') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ formatBytes(hit.requestSize) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.responseSize !== undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.responseSize') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ formatBytes(hit.responseSize) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t@if (hit.requestBody) {\r\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\">\r\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.requestBody') }}</summary>\r\n\t\t\t\t\t\t\t\t\t\t\t@if (tryParseJson(hit.requestBody); as parsed) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ parsed | json }}</pre>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ hit.requestBody }}</pre>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (hit.responseBody) {\r\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\">\r\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.responseBody') }}</summary>\r\n\t\t\t\t\t\t\t\t\t\t\t@if (tryParseJson(hit.responseBody); as parsed) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ parsed | json }}</pre>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ hit.responseBody }}</pre>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@if (hasMore()) {\r\n\t\t\t\t\t\t\t<div class=\"aril-trace-drawer__load-more\">\r\n\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t[label]=\"t('traceDrawer.loadMore')\"\r\n\t\t\t\t\t\t\t\t\ticon=\"CHEVRON_DOWN\"\r\n\t\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\t\t\t[loading]=\"loadingMore()\"\r\n\t\t\t\t\t\t\t\t\t[disabled]=\"loadingMore()\"\r\n\t\t\t\t\t\t\t\t\t(clickEvent)=\"loadMore()\" />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</section>\r\n\t\t\t\t}\r\n\t\t\t\t@if (appLogs().length) {\r\n\t\t\t\t\t<section class=\"aril-trace-drawer__section\">\r\n\t\t\t\t\t\t<h3 class=\"aril-trace-drawer__section-title\">\r\n\t\t\t\t\t\t\t<i class=\"pi pi-list\"></i>\r\n\t\t\t\t\t\t\t{{ t('traceDrawer.appLogsHeader') }}\r\n\t\t\t\t\t\t\t<aril-badge [value]=\"appLogs().length + ' / ' + appLogsTotal()\" [rounded]=\"true\" />\r\n\t\t\t\t\t\t</h3>\r\n\t\t\t\t\t\t@for (log of appLogs(); track log.id) {\r\n\t\t\t\t\t\t\t<details class=\"trace-row trace-row--{{ levelSeverity(log.level) }}\">\r\n\t\t\t\t\t\t\t\t<summary class=\"trace-row__summary\">\r\n\t\t\t\t\t\t\t\t\t<i class=\"pi pi-chevron-right trace-row__chevron\"></i>\r\n\t\t\t\t\t\t\t\t\t@if (log.level) {\r\n\t\t\t\t\t\t\t\t\t\t<aril-badge [value]=\"log.level\" [severity]=\"levelSeverity(log.level)\" />\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (log.module) {\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"trace-row__tag\">{{ log.module }}</span>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t<span class=\"trace-row__main\">{{ log.message }}</span>\r\n\t\t\t\t\t\t\t\t\t@if (log.timestamp) {\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"trace-row__time\">{{ formatTimestamp(log.timestamp) }}</span>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</summary>\r\n\t\t\t\t\t\t\t\t<div class=\"trace-row__body\">\r\n\t\t\t\t\t\t\t\t\t@if (log.message) {\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"trace-row__message\">{{ log.message }}</div>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (log.username || log.app) {\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"trace-row__meta\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if (log.app) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.target') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ log.app }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t@if (log.username) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.user') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ log.username }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (log.errorDetail) {\r\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\" open>\r\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.appLogErrorDetail') }}</summary>\r\n\t\t\t\t\t\t\t\t\t\t\t<pre>{{ log.errorDetail }}</pre>\r\n\t\t\t\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (log.referenceFields?.length) {\r\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\">\r\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.appLogRefFields') }}</summary>\r\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"trace-row__meta\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t@for (rf of log.referenceFields; track rf.field) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ rf.field }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ rf.value }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@if (appLogsHasMore()) {\r\n\t\t\t\t\t\t\t<div class=\"aril-trace-drawer__load-more\">\r\n\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t[label]=\"t('traceDrawer.loadMore')\"\r\n\t\t\t\t\t\t\t\t\ticon=\"CHEVRON_DOWN\"\r\n\t\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\t\t\t[loading]=\"appLogsLoadingMore()\"\r\n\t\t\t\t\t\t\t\t\t[disabled]=\"appLogsLoadingMore()\"\r\n\t\t\t\t\t\t\t\t\t(clickEvent)=\"loadMoreAppLogs()\" />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</section>\r\n\t\t\t\t}\r\n\t\t\t\t@if (!apisixHits().length && !appLogs().length && !refValueEntries().length) {\r\n\t\t\t\t\t<div class=\"aril-trace-drawer__state\">\r\n\t\t\t\t\t\t<i class=\"pi pi-inbox\"></i>\r\n\t\t\t\t\t\t<p>{{ t('traceDrawer.empty') }}</p>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t</div>\r\n\t</p-sidebar>\r\n</ng-container>\r\n", styles: [":host ::ng-deep .aril-trace-drawer{display:flex;flex-direction:column;height:100%}:host ::ng-deep .aril-trace-drawer .p-sidebar-header{padding:1rem 1.25rem;border-bottom:1px solid var(--surface-border, #e5e7eb);flex:0 0 auto}:host ::ng-deep .aril-trace-drawer .p-sidebar-content{padding:0;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden}.aril-trace-drawer__header{display:flex;align-items:center;gap:.5rem;flex:1;min-width:0}.aril-trace-drawer__header .pi-sitemap{font-size:1.25rem;color:var(--primary-color, #1890ff)}.aril-trace-drawer__title{font-weight:600;font-size:1.1rem}.aril-trace-drawer__chip{font-size:.875rem;padding:.2rem .55rem;border-radius:4px;background:var(--surface-100, #f3f4f6);color:var(--text-color-secondary, #6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.aril-trace-drawer__refresh,.aril-trace-drawer__share{cursor:pointer;font-size:1rem;padding:.4rem;border-radius:4px;color:var(--primary-color, #1890ff);transition:background .15s ease}.aril-trace-drawer__refresh:hover,.aril-trace-drawer__share:hover{background:var(--surface-100, #f3f4f6)}.aril-trace-drawer__body{padding:1rem 1.25rem;display:flex;flex-direction:column;gap:1.5rem;min-height:min-content}.aril-trace-drawer__state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:3rem 1rem;color:var(--text-color-secondary, #6b7280);text-align:center;font-size:.95rem}.aril-trace-drawer__state .pi{font-size:2rem}.aril-trace-drawer__state--error .pi{color:var(--red-500, #ef4444)}.aril-trace-drawer__section-title{display:flex;align-items:center;gap:.5rem;margin:0 0 .5rem;font-size:1rem;font-weight:600}.aril-trace-drawer__section-title .pi{color:var(--primary-color, #1890ff)}.trace-row{display:block;border:1px solid var(--surface-border, #e5e7eb);border-left:3px solid var(--surface-border, #e5e7eb);background:var(--surface-card, #ffffff);border-radius:4px;overflow:hidden;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease}.trace-row+.trace-row{margin-top:.4rem}.trace-row:hover{border-top-color:var(--surface-300, #d1d5db);border-right-color:var(--surface-300, #d1d5db);border-bottom-color:var(--surface-300, #d1d5db);box-shadow:0 1px 3px #0000000a}.trace-row[open]{background:var(--surface-50, #fafafa);border-top-color:var(--surface-300, #d1d5db);border-right-color:var(--surface-300, #d1d5db);border-bottom-color:var(--surface-300, #d1d5db);box-shadow:0 1px 4px #0000000d}.trace-row--success{border-left-color:var(--green-500, #22c55e)}.trace-row--info{border-left-color:var(--blue-500, #3b82f6)}.trace-row--warning{border-left-color:var(--orange-500, #f97316)}.trace-row--danger{border-left-color:var(--red-500, #ef4444)}.trace-row--secondary{border-left-color:var(--gray-400, #9ca3af)}.trace-row__summary{cursor:pointer;-webkit-user-select:none;user-select:none;list-style:none;display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem}.trace-row__summary::-webkit-details-marker{display:none}.trace-row__summary:hover{background:var(--surface-50, #fafafa)}.trace-row[open] .trace-row__summary:hover{background:var(--surface-100, #f3f4f6)}.trace-row__chevron{color:var(--text-color-secondary, #6b7280);font-size:.7rem;transition:transform .15s ease;flex-shrink:0}.trace-row[open] .trace-row__chevron{transform:rotate(90deg)}.trace-row__tag{font-weight:600;color:var(--primary-color, #1890ff);font-size:.8rem;white-space:nowrap;flex-shrink:0;letter-spacing:.02em}.trace-row__main{font-size:.85rem;color:var(--text-color, #111827);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.trace-row__time{font-size:.75rem;color:var(--text-color-secondary, #6b7280);font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0}.trace-row__action{cursor:pointer;padding:.25rem;border-radius:4px;color:var(--text-color-secondary, #6b7280);flex-shrink:0;transition:background .15s ease,color .15s ease}.trace-row__action:hover{background:var(--surface-100, #f3f4f6);color:var(--primary-color, #1890ff)}.trace-row__body{padding:.5rem .75rem .75rem;border-top:1px solid var(--surface-border, #e5e7eb);display:flex;flex-direction:column;gap:.5rem;background:var(--surface-0, #ffffff)}.trace-row__message{font-size:.85rem;color:var(--text-color, #111827);line-height:1.5;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;background:var(--surface-100, #f3f4f6);border-radius:4px;padding:.5rem .65rem}.trace-row__meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.25rem .75rem;font-size:.8rem}.trace-row__meta>div{display:grid;grid-template-columns:max-content 1fr;column-gap:.4rem;align-items:baseline;min-width:0}.trace-row__meta .meta-label{color:var(--text-color-secondary, #6b7280);font-weight:500}.trace-row__meta .meta-label:after{content:\":\"}.trace-row__meta span:not(.meta-label){color:var(--text-color, #111827);word-break:break-word}.trace-row__sub{margin:0}.trace-row__sub summary{cursor:pointer;font-size:.8rem;color:var(--primary-color, #1890ff);padding:.15rem 0;-webkit-user-select:none;user-select:none}.trace-row__sub summary:hover{text-decoration:underline}.trace-row__sub pre{margin:.25rem 0 0;padding:.5rem .75rem;background:var(--surface-100, #f3f4f6);border-radius:4px;font-size:.78rem;line-height:1.45;max-height:320px;overflow:auto;white-space:pre-wrap;word-break:break-word}.aril-trace-drawer__load-more{display:flex;justify-content:center;margin-top:.5rem}.ref-values{display:flex;flex-direction:column;gap:.4rem;border:1px solid var(--surface-border, #e5e7eb);border-radius:4px;background:var(--surface-card, #ffffff);padding:.6rem .75rem}.ref-values__row{display:grid;grid-template-columns:minmax(120px,max-content) 1fr;column-gap:.75rem;row-gap:.25rem;align-items:baseline}.ref-values__key{font-size:.8rem;font-weight:600;color:var(--text-color-secondary, #6b7280);letter-spacing:.02em;overflow-wrap:anywhere}.ref-values__key:after{content:\":\"}.ref-values__chips{display:flex;flex-wrap:wrap;gap:.3rem;min-width:0}.ref-values__chip{font-size:.78rem;padding:.15rem .5rem;border-radius:4px;background:var(--surface-100, #f3f4f6);color:var(--text-color, #111827);border:1px solid var(--surface-border, #e5e7eb);white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}\n"], dependencies: [{ kind: "pipe", type: JsonPipe, name: "json" }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i1.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i2.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ProgressSpinnerModule }, { kind: "component", type: i4.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: BadgeComponent, selector: "aril-badge", inputs: ["icon", "value", "severity", "rounded", "background", "styleClass", "textColor", "borderColor", "textClampCharacters"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
285
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TraceDrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
286
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: TraceDrawerComponent, isStandalone: true, selector: "aril-trace-drawer", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, traceId: { classPropertyName: "traceId", publicName: "traceId", isSignal: true, isRequired: true, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, modal: { classPropertyName: "modal", publicName: "modal", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, startTime: { classPropertyName: "startTime", publicName: "startTime", isSignal: true, isRequired: false, transformFunction: null }, endTime: { classPropertyName: "endTime", publicName: "endTime", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibleChange: "visibleChange" }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n\t<p-sidebar\n\t\t[visible]=\"visible()\"\n\t\t(visibleChange)=\"onVisibleChange($event)\"\n\t\t[position]=\"position()\"\n\t\t[style]=\"{ width: width() }\"\n\t\t[modal]=\"modal()\"\n\t\t[dismissible]=\"true\"\n\t\t[showCloseIcon]=\"true\"\n\t\tstyleClass=\"aril-trace-drawer\">\n\t\t<ng-template pTemplate=\"header\">\n\t\t\t<div class=\"aril-trace-drawer__header\">\n\t\t\t\t<i class=\"pi pi-sitemap\"></i>\n\t\t\t\t<span class=\"aril-trace-drawer__title\">{{ t('traceDrawer.title') }}</span>\n\t\t\t\t<code class=\"aril-trace-drawer__chip\">{{ traceId() }}</code>\n\t\t\t\t<i\n\t\t\t\t\trole=\"button\"\n\t\t\t\t\tclass=\"pi pi-refresh aril-trace-drawer__refresh\"\n\t\t\t\t\t[class.pi-spin]=\"loading()\"\n\t\t\t\t\t[pTooltip]=\"t('traceDrawer.refresh')\"\n\t\t\t\t\ttooltipPosition=\"bottom\"\n\t\t\t\t\t(click)=\"refresh()\"></i>\n\t\t\t\t<i\n\t\t\t\t\trole=\"button\"\n\t\t\t\t\tclass=\"pi pi-share-alt aril-trace-drawer__share\"\n\t\t\t\t\t[pTooltip]=\"t('traceDrawer.shareLink')\"\n\t\t\t\t\ttooltipPosition=\"bottom\"\n\t\t\t\t\t(click)=\"shareLink()\"></i>\n\t\t\t</div>\n\t\t</ng-template>\n\n\t\t<div class=\"aril-trace-drawer__body\">\n\t\t\t@if (loading()) {\n\t\t\t\t<div class=\"aril-trace-drawer__state\">\n\t\t\t\t\t<p-progressSpinner strokeWidth=\"3\" styleClass=\"w-3rem h-3rem\"></p-progressSpinner>\n\t\t\t\t\t<span>{{ t('traceDrawer.loading') }}</span>\n\t\t\t\t</div>\n\t\t\t} @else if (errorMessage()) {\n\t\t\t\t<div class=\"aril-trace-drawer__state aril-trace-drawer__state--error\">\n\t\t\t\t\t<i class=\"pi pi-exclamation-triangle\"></i>\n\t\t\t\t\t<p>{{ errorMessage() }}</p>\n\t\t\t\t\t<aril-button [label]=\"t('traceDrawer.retry')\" icon=\"REFRESH\" color=\"primary\" (clickEvent)=\"retry()\" />\n\t\t\t\t</div>\n\t\t\t} @else {\n\t\t\t\t@if (refValueEntries().length) {\n\t\t\t\t\t<section class=\"aril-trace-drawer__section\">\n\t\t\t\t\t\t<h3 class=\"aril-trace-drawer__section-title\">\n\t\t\t\t\t\t\t<i class=\"pi pi-tags\"></i>\n\t\t\t\t\t\t\t{{ t('traceDrawer.refValuesHeader') }}\n\t\t\t\t\t\t\t<aril-badge [value]=\"refValueEntries().length.toString()\" [rounded]=\"true\" />\n\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t<div class=\"ref-values\">\n\t\t\t\t\t\t\t@for (entry of refValueEntries(); track entry[0]) {\n\t\t\t\t\t\t\t\t<div class=\"ref-values__row\">\n\t\t\t\t\t\t\t\t\t<span class=\"ref-values__key\">{{ entry[0] }}</span>\n\t\t\t\t\t\t\t\t\t<div class=\"ref-values__chips\">\n\t\t\t\t\t\t\t\t\t\t@for (val of entry[1]; track val) {\n\t\t\t\t\t\t\t\t\t\t\t<code class=\"ref-values__chip\">{{ val }}</code>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</section>\n\t\t\t\t}\n\t\t\t\t@if (apisixHits().length) {\n\t\t\t\t\t<section class=\"aril-trace-drawer__section\">\n\t\t\t\t\t\t<h3 class=\"aril-trace-drawer__section-title\">\n\t\t\t\t\t\t\t<i class=\"pi pi-globe\"></i>\n\t\t\t\t\t\t\t{{ t('traceDrawer.apisixHeader') }}\n\t\t\t\t\t\t\t<aril-badge [value]=\"apisixHits().length + ' / ' + totalItem()\" [rounded]=\"true\" />\n\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t@for (hit of apisixHits(); track hit.id) {\n\t\t\t\t\t\t\t<details class=\"trace-row trace-row--{{ statusSeverity(hit.status) }}\">\n\t\t\t\t\t\t\t\t<summary class=\"trace-row__summary\">\n\t\t\t\t\t\t\t\t\t<i class=\"pi pi-chevron-right trace-row__chevron\"></i>\n\t\t\t\t\t\t\t\t\t<aril-badge [value]=\"hit.status.toString()\" [severity]=\"statusSeverity(hit.status)\" />\n\t\t\t\t\t\t\t\t\t<span class=\"trace-row__tag\">{{ hit.requestMethod }}</span>\n\t\t\t\t\t\t\t\t\t<span class=\"trace-row__main\">{{ hit.requestUri }}</span>\n\t\t\t\t\t\t\t\t\t<aril-badge\n\t\t\t\t\t\t\t\t\t\t[value]=\"formatDuration(hit.responseTime)\"\n\t\t\t\t\t\t\t\t\t\t[severity]=\"durationSeverity(hit.responseTime)\" />\n\t\t\t\t\t\t\t\t\t@if (hit.timestamp) {\n\t\t\t\t\t\t\t\t\t\t<span class=\"trace-row__time\">{{ formatTimestamp(hit.timestamp) }}</span>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t<i\n\t\t\t\t\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-code trace-row__action\"\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('traceDrawer.copyCurl')\"\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\n\t\t\t\t\t\t\t\t\t\t(click)=\"$event.preventDefault(); $event.stopPropagation(); copyAsCurl(hit)\"></i>\n\t\t\t\t\t\t\t\t</summary>\n\t\t\t\t\t\t\t\t<div class=\"trace-row__body\">\n\t\t\t\t\t\t\t\t\t<div class=\"trace-row__meta\">\n\t\t\t\t\t\t\t\t\t\t@if (hit.routeName) {\n\t\t\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.route') }}</span\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ hit.routeName }}</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t@if (hit.sourceApp || hit.sourceModule) {\n\t\t\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.source') }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span>{{ hit.sourceApp }}{{ hit.sourceModule ? ' / ' + hit.sourceModule : '' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t@if (hit.targetApp || hit.targetModule) {\n\t\t\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.target') }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span>{{ hit.targetApp }}{{ hit.targetModule ? ' / ' + hit.targetModule : '' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t@if (hit.upstreamHost) {\n\t\t\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.upstream') }}</span\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ hit.upstreamHost }}</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t@if (hit.username) {\n\t\t\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.user') }}</span\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ hit.username }}</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t@if (hit.requestSize !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.requestSize') }}</span\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ formatBytes(hit.requestSize) }}</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t@if (hit.responseSize !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.responseSize') }}</span\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ formatBytes(hit.responseSize) }}</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t@if (hit.requestBody) {\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\">\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.requestBody') }}</summary>\n\t\t\t\t\t\t\t\t\t\t\t@if (tryParseJson(hit.requestBody); as parsed) {\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ parsed | json }}</pre>\n\t\t\t\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ hit.requestBody }}</pre>\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t</details>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t@if (hit.responseBody) {\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\">\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.responseBody') }}</summary>\n\t\t\t\t\t\t\t\t\t\t\t@if (tryParseJson(hit.responseBody); as parsed) {\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ parsed | json }}</pre>\n\t\t\t\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ hit.responseBody }}</pre>\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t</details>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</details>\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (hasMore()) {\n\t\t\t\t\t\t\t<div class=\"aril-trace-drawer__load-more\">\n\t\t\t\t\t\t\t\t<aril-button\n\t\t\t\t\t\t\t\t\t[label]=\"t('traceDrawer.loadMore')\"\n\t\t\t\t\t\t\t\t\ticon=\"CHEVRON_DOWN\"\n\t\t\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\t\t\t[outlined]=\"true\"\n\t\t\t\t\t\t\t\t\t[loading]=\"loadingMore()\"\n\t\t\t\t\t\t\t\t\t[disabled]=\"loadingMore()\"\n\t\t\t\t\t\t\t\t\t(clickEvent)=\"loadMore()\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\t\t\t\t\t</section>\n\t\t\t\t}\n\t\t\t\t@if (appLogs().length) {\n\t\t\t\t\t<section class=\"aril-trace-drawer__section\">\n\t\t\t\t\t\t<h3 class=\"aril-trace-drawer__section-title\">\n\t\t\t\t\t\t\t<i class=\"pi pi-list\"></i>\n\t\t\t\t\t\t\t{{ t('traceDrawer.appLogsHeader') }}\n\t\t\t\t\t\t\t<aril-badge [value]=\"appLogs().length + ' / ' + appLogsTotal()\" [rounded]=\"true\" />\n\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t@for (log of appLogs(); track log.id) {\n\t\t\t\t\t\t\t<details class=\"trace-row trace-row--{{ levelSeverity(log.level) }}\">\n\t\t\t\t\t\t\t\t<summary class=\"trace-row__summary\">\n\t\t\t\t\t\t\t\t\t<i class=\"pi pi-chevron-right trace-row__chevron\"></i>\n\t\t\t\t\t\t\t\t\t@if (log.level) {\n\t\t\t\t\t\t\t\t\t\t<aril-badge [value]=\"log.level\" [severity]=\"levelSeverity(log.level)\" />\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t@if (log.module) {\n\t\t\t\t\t\t\t\t\t\t<span class=\"trace-row__tag\">{{ log.module }}</span>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t<span class=\"trace-row__main\">{{ log.message }}</span>\n\t\t\t\t\t\t\t\t\t@if (log.timestamp) {\n\t\t\t\t\t\t\t\t\t\t<span class=\"trace-row__time\">{{ formatTimestamp(log.timestamp) }}</span>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</summary>\n\t\t\t\t\t\t\t\t<div class=\"trace-row__body\">\n\t\t\t\t\t\t\t\t\t@if (log.message) {\n\t\t\t\t\t\t\t\t\t\t<div class=\"trace-row__message\">{{ log.message }}</div>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t@if (log.username || log.app) {\n\t\t\t\t\t\t\t\t\t\t<div class=\"trace-row__meta\">\n\t\t\t\t\t\t\t\t\t\t\t@if (log.app) {\n\t\t\t\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.target') }}</span\n\t\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ log.app }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t@if (log.username) {\n\t\t\t\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.user') }}</span\n\t\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ log.username }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t@if (log.errorDetail) {\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\" open>\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.appLogErrorDetail') }}</summary>\n\t\t\t\t\t\t\t\t\t\t\t<pre>{{ log.errorDetail }}</pre>\n\t\t\t\t\t\t\t\t\t\t</details>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t@if (log.referenceFields?.length) {\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\">\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.appLogRefFields') }}</summary>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"trace-row__meta\">\n\t\t\t\t\t\t\t\t\t\t\t\t@for (rf of log.referenceFields; track rf.field) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ rf.field }}</span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ rf.value }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</details>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</details>\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (appLogsHasMore()) {\n\t\t\t\t\t\t\t<div class=\"aril-trace-drawer__load-more\">\n\t\t\t\t\t\t\t\t<aril-button\n\t\t\t\t\t\t\t\t\t[label]=\"t('traceDrawer.loadMore')\"\n\t\t\t\t\t\t\t\t\ticon=\"CHEVRON_DOWN\"\n\t\t\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\t\t\t[outlined]=\"true\"\n\t\t\t\t\t\t\t\t\t[loading]=\"appLogsLoadingMore()\"\n\t\t\t\t\t\t\t\t\t[disabled]=\"appLogsLoadingMore()\"\n\t\t\t\t\t\t\t\t\t(clickEvent)=\"loadMoreAppLogs()\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\t\t\t\t\t</section>\n\t\t\t\t}\n\t\t\t\t@if (!apisixHits().length && !appLogs().length && !refValueEntries().length) {\n\t\t\t\t\t<div class=\"aril-trace-drawer__state\">\n\t\t\t\t\t\t<i class=\"pi pi-inbox\"></i>\n\t\t\t\t\t\t<p>{{ t('traceDrawer.empty') }}</p>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t}\n\t\t</div>\n\t</p-sidebar>\n</ng-container>\n", styles: [":host ::ng-deep .aril-trace-drawer{display:flex;flex-direction:column;height:100%}:host ::ng-deep .aril-trace-drawer .p-sidebar-header{padding:1rem 1.25rem;border-bottom:1px solid var(--surface-border, #e5e7eb);flex:0 0 auto}:host ::ng-deep .aril-trace-drawer .p-sidebar-content{padding:0;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden}.aril-trace-drawer__header{display:flex;align-items:center;gap:.5rem;flex:1;min-width:0}.aril-trace-drawer__header .pi-sitemap{font-size:1.25rem;color:var(--primary-color, #1890ff)}.aril-trace-drawer__title{font-weight:600;font-size:1.1rem}.aril-trace-drawer__chip{font-size:.875rem;padding:.2rem .55rem;border-radius:4px;background:var(--surface-100, #f3f4f6);color:var(--text-color-secondary, #6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.aril-trace-drawer__refresh,.aril-trace-drawer__share{cursor:pointer;font-size:1rem;padding:.4rem;border-radius:4px;color:var(--primary-color, #1890ff);transition:background .15s ease}.aril-trace-drawer__refresh:hover,.aril-trace-drawer__share:hover{background:var(--surface-100, #f3f4f6)}.aril-trace-drawer__body{padding:1rem 1.25rem;display:flex;flex-direction:column;gap:1.5rem;min-height:min-content}.aril-trace-drawer__state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:3rem 1rem;color:var(--text-color-secondary, #6b7280);text-align:center;font-size:.95rem}.aril-trace-drawer__state .pi{font-size:2rem}.aril-trace-drawer__state--error .pi{color:var(--red-500, #ef4444)}.aril-trace-drawer__section-title{display:flex;align-items:center;gap:.5rem;margin:0 0 .5rem;font-size:1rem;font-weight:600}.aril-trace-drawer__section-title .pi{color:var(--primary-color, #1890ff)}.trace-row{display:block;border:1px solid var(--surface-border, #e5e7eb);border-left:3px solid var(--surface-border, #e5e7eb);background:var(--surface-card, #ffffff);border-radius:4px;overflow:hidden;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease}.trace-row+.trace-row{margin-top:.4rem}.trace-row:hover{border-top-color:var(--surface-300, #d1d5db);border-right-color:var(--surface-300, #d1d5db);border-bottom-color:var(--surface-300, #d1d5db);box-shadow:0 1px 3px #0000000a}.trace-row[open]{background:var(--surface-50, #fafafa);border-top-color:var(--surface-300, #d1d5db);border-right-color:var(--surface-300, #d1d5db);border-bottom-color:var(--surface-300, #d1d5db);box-shadow:0 1px 4px #0000000d}.trace-row--success{border-left-color:var(--green-500, #22c55e)}.trace-row--info{border-left-color:var(--blue-500, #3b82f6)}.trace-row--warning{border-left-color:var(--orange-500, #f97316)}.trace-row--danger{border-left-color:var(--red-500, #ef4444)}.trace-row--secondary{border-left-color:var(--gray-400, #9ca3af)}.trace-row__summary{cursor:pointer;-webkit-user-select:none;user-select:none;list-style:none;display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem}.trace-row__summary::-webkit-details-marker{display:none}.trace-row__summary:hover{background:var(--surface-50, #fafafa)}.trace-row[open] .trace-row__summary:hover{background:var(--surface-100, #f3f4f6)}.trace-row__chevron{color:var(--text-color-secondary, #6b7280);font-size:.7rem;transition:transform .15s ease;flex-shrink:0}.trace-row[open] .trace-row__chevron{transform:rotate(90deg)}.trace-row__tag{font-weight:600;color:var(--primary-color, #1890ff);font-size:.8rem;white-space:nowrap;flex-shrink:0;letter-spacing:.02em}.trace-row__main{font-size:.85rem;color:var(--text-color, #111827);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.trace-row__time{font-size:.75rem;color:var(--text-color-secondary, #6b7280);font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0}.trace-row__action{cursor:pointer;padding:.25rem;border-radius:4px;color:var(--text-color-secondary, #6b7280);flex-shrink:0;transition:background .15s ease,color .15s ease}.trace-row__action:hover{background:var(--surface-100, #f3f4f6);color:var(--primary-color, #1890ff)}.trace-row__body{padding:.5rem .75rem .75rem;border-top:1px solid var(--surface-border, #e5e7eb);display:flex;flex-direction:column;gap:.5rem;background:var(--surface-0, #ffffff)}.trace-row__message{font-size:.85rem;color:var(--text-color, #111827);line-height:1.5;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;background:var(--surface-100, #f3f4f6);border-radius:4px;padding:.5rem .65rem}.trace-row__meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.25rem .75rem;font-size:.8rem}.trace-row__meta>div{display:grid;grid-template-columns:max-content 1fr;column-gap:.4rem;align-items:baseline;min-width:0}.trace-row__meta .meta-label{color:var(--text-color-secondary, #6b7280);font-weight:500}.trace-row__meta .meta-label:after{content:\":\"}.trace-row__meta span:not(.meta-label){color:var(--text-color, #111827);word-break:break-word}.trace-row__sub{margin:0}.trace-row__sub summary{cursor:pointer;font-size:.8rem;color:var(--primary-color, #1890ff);padding:.15rem 0;-webkit-user-select:none;user-select:none}.trace-row__sub summary:hover{text-decoration:underline}.trace-row__sub pre{margin:.25rem 0 0;padding:.5rem .75rem;background:var(--surface-100, #f3f4f6);border-radius:4px;font-size:.78rem;line-height:1.45;max-height:320px;overflow:auto;white-space:pre-wrap;word-break:break-word}.aril-trace-drawer__load-more{display:flex;justify-content:center;margin-top:.5rem}.ref-values{display:flex;flex-direction:column;gap:.4rem;border:1px solid var(--surface-border, #e5e7eb);border-radius:4px;background:var(--surface-card, #ffffff);padding:.6rem .75rem}.ref-values__row{display:grid;grid-template-columns:minmax(120px,max-content) 1fr;column-gap:.75rem;row-gap:.25rem;align-items:baseline}.ref-values__key{font-size:.8rem;font-weight:600;color:var(--text-color-secondary, #6b7280);letter-spacing:.02em;overflow-wrap:anywhere}.ref-values__key:after{content:\":\"}.ref-values__chips{display:flex;flex-wrap:wrap;gap:.3rem;min-width:0}.ref-values__chip{font-size:.78rem;padding:.15rem .5rem;border-radius:4px;background:var(--surface-100, #f3f4f6);color:var(--text-color, #111827);border:1px solid var(--surface-border, #e5e7eb);white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}\n"], dependencies: [{ kind: "pipe", type: JsonPipe, name: "json" }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i1.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i2.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ProgressSpinnerModule }, { kind: "component", type: i4.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: BadgeComponent, selector: "aril-badge", inputs: ["icon", "value", "severity", "rounded", "background", "styleClass", "textColor", "borderColor", "textClampCharacters"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
287
287
  }
288
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraceDrawerComponent, decorators: [{
288
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TraceDrawerComponent, decorators: [{
289
289
  type: Component,
290
- args: [{ standalone: true, selector: 'aril-trace-drawer', imports: [JsonPipe, TranslocoModule, SidebarModule, ProgressSpinnerModule, TooltipModule, BadgeComponent, ButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *transloco=\"let t\">\r\n\t<p-sidebar\r\n\t\t[visible]=\"visible()\"\r\n\t\t(visibleChange)=\"onVisibleChange($event)\"\r\n\t\t[position]=\"position()\"\r\n\t\t[style]=\"{ width: width() }\"\r\n\t\t[modal]=\"modal()\"\r\n\t\t[dismissible]=\"true\"\r\n\t\t[showCloseIcon]=\"true\"\r\n\t\tstyleClass=\"aril-trace-drawer\">\r\n\t\t<ng-template pTemplate=\"header\">\r\n\t\t\t<div class=\"aril-trace-drawer__header\">\r\n\t\t\t\t<i class=\"pi pi-sitemap\"></i>\r\n\t\t\t\t<span class=\"aril-trace-drawer__title\">{{ t('traceDrawer.title') }}</span>\r\n\t\t\t\t<code class=\"aril-trace-drawer__chip\">{{ traceId() }}</code>\r\n\t\t\t\t<i\r\n\t\t\t\t\trole=\"button\"\r\n\t\t\t\t\tclass=\"pi pi-refresh aril-trace-drawer__refresh\"\r\n\t\t\t\t\t[class.pi-spin]=\"loading()\"\r\n\t\t\t\t\t[pTooltip]=\"t('traceDrawer.refresh')\"\r\n\t\t\t\t\ttooltipPosition=\"bottom\"\r\n\t\t\t\t\t(click)=\"refresh()\"></i>\r\n\t\t\t\t<i\r\n\t\t\t\t\trole=\"button\"\r\n\t\t\t\t\tclass=\"pi pi-share-alt aril-trace-drawer__share\"\r\n\t\t\t\t\t[pTooltip]=\"t('traceDrawer.shareLink')\"\r\n\t\t\t\t\ttooltipPosition=\"bottom\"\r\n\t\t\t\t\t(click)=\"shareLink()\"></i>\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\r\n\t\t<div class=\"aril-trace-drawer__body\">\r\n\t\t\t@if (loading()) {\r\n\t\t\t\t<div class=\"aril-trace-drawer__state\">\r\n\t\t\t\t\t<p-progressSpinner strokeWidth=\"3\" styleClass=\"w-3rem h-3rem\"></p-progressSpinner>\r\n\t\t\t\t\t<span>{{ t('traceDrawer.loading') }}</span>\r\n\t\t\t\t</div>\r\n\t\t\t} @else if (errorMessage()) {\r\n\t\t\t\t<div class=\"aril-trace-drawer__state aril-trace-drawer__state--error\">\r\n\t\t\t\t\t<i class=\"pi pi-exclamation-triangle\"></i>\r\n\t\t\t\t\t<p>{{ errorMessage() }}</p>\r\n\t\t\t\t\t<aril-button [label]=\"t('traceDrawer.retry')\" icon=\"REFRESH\" color=\"primary\" (clickEvent)=\"retry()\" />\r\n\t\t\t\t</div>\r\n\t\t\t} @else {\r\n\t\t\t\t@if (refValueEntries().length) {\r\n\t\t\t\t\t<section class=\"aril-trace-drawer__section\">\r\n\t\t\t\t\t\t<h3 class=\"aril-trace-drawer__section-title\">\r\n\t\t\t\t\t\t\t<i class=\"pi pi-tags\"></i>\r\n\t\t\t\t\t\t\t{{ t('traceDrawer.refValuesHeader') }}\r\n\t\t\t\t\t\t\t<aril-badge [value]=\"refValueEntries().length.toString()\" [rounded]=\"true\" />\r\n\t\t\t\t\t\t</h3>\r\n\t\t\t\t\t\t<div class=\"ref-values\">\r\n\t\t\t\t\t\t\t@for (entry of refValueEntries(); track entry[0]) {\r\n\t\t\t\t\t\t\t\t<div class=\"ref-values__row\">\r\n\t\t\t\t\t\t\t\t\t<span class=\"ref-values__key\">{{ entry[0] }}</span>\r\n\t\t\t\t\t\t\t\t\t<div class=\"ref-values__chips\">\r\n\t\t\t\t\t\t\t\t\t\t@for (val of entry[1]; track val) {\r\n\t\t\t\t\t\t\t\t\t\t\t<code class=\"ref-values__chip\">{{ val }}</code>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</section>\r\n\t\t\t\t}\r\n\t\t\t\t@if (apisixHits().length) {\r\n\t\t\t\t\t<section class=\"aril-trace-drawer__section\">\r\n\t\t\t\t\t\t<h3 class=\"aril-trace-drawer__section-title\">\r\n\t\t\t\t\t\t\t<i class=\"pi pi-globe\"></i>\r\n\t\t\t\t\t\t\t{{ t('traceDrawer.apisixHeader') }}\r\n\t\t\t\t\t\t\t<aril-badge [value]=\"apisixHits().length + ' / ' + totalItem()\" [rounded]=\"true\" />\r\n\t\t\t\t\t\t</h3>\r\n\t\t\t\t\t\t@for (hit of apisixHits(); track hit.id) {\r\n\t\t\t\t\t\t\t<details class=\"trace-row trace-row--{{ statusSeverity(hit.status) }}\">\r\n\t\t\t\t\t\t\t\t<summary class=\"trace-row__summary\">\r\n\t\t\t\t\t\t\t\t\t<i class=\"pi pi-chevron-right trace-row__chevron\"></i>\r\n\t\t\t\t\t\t\t\t\t<aril-badge [value]=\"hit.status.toString()\" [severity]=\"statusSeverity(hit.status)\" />\r\n\t\t\t\t\t\t\t\t\t<span class=\"trace-row__tag\">{{ hit.requestMethod }}</span>\r\n\t\t\t\t\t\t\t\t\t<span class=\"trace-row__main\">{{ hit.requestUri }}</span>\r\n\t\t\t\t\t\t\t\t\t<aril-badge\r\n\t\t\t\t\t\t\t\t\t\t[value]=\"formatDuration(hit.responseTime)\"\r\n\t\t\t\t\t\t\t\t\t\t[severity]=\"durationSeverity(hit.responseTime)\" />\r\n\t\t\t\t\t\t\t\t\t@if (hit.timestamp) {\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"trace-row__time\">{{ formatTimestamp(hit.timestamp) }}</span>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\trole=\"button\"\r\n\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-code trace-row__action\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('traceDrawer.copyCurl')\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t(click)=\"$event.preventDefault(); $event.stopPropagation(); copyAsCurl(hit)\"></i>\r\n\t\t\t\t\t\t\t\t</summary>\r\n\t\t\t\t\t\t\t\t<div class=\"trace-row__body\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"trace-row__meta\">\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.routeName) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.route') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ hit.routeName }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.sourceApp || hit.sourceModule) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.source') }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span>{{ hit.sourceApp }}{{ hit.sourceModule ? ' / ' + hit.sourceModule : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.targetApp || hit.targetModule) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.target') }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span>{{ hit.targetApp }}{{ hit.targetModule ? ' / ' + hit.targetModule : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.upstreamHost) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.upstream') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ hit.upstreamHost }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.username) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.user') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ hit.username }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.requestSize !== undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.requestSize') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ formatBytes(hit.requestSize) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.responseSize !== undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.responseSize') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ formatBytes(hit.responseSize) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t@if (hit.requestBody) {\r\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\">\r\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.requestBody') }}</summary>\r\n\t\t\t\t\t\t\t\t\t\t\t@if (tryParseJson(hit.requestBody); as parsed) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ parsed | json }}</pre>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ hit.requestBody }}</pre>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (hit.responseBody) {\r\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\">\r\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.responseBody') }}</summary>\r\n\t\t\t\t\t\t\t\t\t\t\t@if (tryParseJson(hit.responseBody); as parsed) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ parsed | json }}</pre>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ hit.responseBody }}</pre>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@if (hasMore()) {\r\n\t\t\t\t\t\t\t<div class=\"aril-trace-drawer__load-more\">\r\n\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t[label]=\"t('traceDrawer.loadMore')\"\r\n\t\t\t\t\t\t\t\t\ticon=\"CHEVRON_DOWN\"\r\n\t\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\t\t\t[loading]=\"loadingMore()\"\r\n\t\t\t\t\t\t\t\t\t[disabled]=\"loadingMore()\"\r\n\t\t\t\t\t\t\t\t\t(clickEvent)=\"loadMore()\" />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</section>\r\n\t\t\t\t}\r\n\t\t\t\t@if (appLogs().length) {\r\n\t\t\t\t\t<section class=\"aril-trace-drawer__section\">\r\n\t\t\t\t\t\t<h3 class=\"aril-trace-drawer__section-title\">\r\n\t\t\t\t\t\t\t<i class=\"pi pi-list\"></i>\r\n\t\t\t\t\t\t\t{{ t('traceDrawer.appLogsHeader') }}\r\n\t\t\t\t\t\t\t<aril-badge [value]=\"appLogs().length + ' / ' + appLogsTotal()\" [rounded]=\"true\" />\r\n\t\t\t\t\t\t</h3>\r\n\t\t\t\t\t\t@for (log of appLogs(); track log.id) {\r\n\t\t\t\t\t\t\t<details class=\"trace-row trace-row--{{ levelSeverity(log.level) }}\">\r\n\t\t\t\t\t\t\t\t<summary class=\"trace-row__summary\">\r\n\t\t\t\t\t\t\t\t\t<i class=\"pi pi-chevron-right trace-row__chevron\"></i>\r\n\t\t\t\t\t\t\t\t\t@if (log.level) {\r\n\t\t\t\t\t\t\t\t\t\t<aril-badge [value]=\"log.level\" [severity]=\"levelSeverity(log.level)\" />\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (log.module) {\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"trace-row__tag\">{{ log.module }}</span>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t<span class=\"trace-row__main\">{{ log.message }}</span>\r\n\t\t\t\t\t\t\t\t\t@if (log.timestamp) {\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"trace-row__time\">{{ formatTimestamp(log.timestamp) }}</span>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</summary>\r\n\t\t\t\t\t\t\t\t<div class=\"trace-row__body\">\r\n\t\t\t\t\t\t\t\t\t@if (log.message) {\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"trace-row__message\">{{ log.message }}</div>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (log.username || log.app) {\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"trace-row__meta\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if (log.app) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.target') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ log.app }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t@if (log.username) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.user') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ log.username }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (log.errorDetail) {\r\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\" open>\r\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.appLogErrorDetail') }}</summary>\r\n\t\t\t\t\t\t\t\t\t\t\t<pre>{{ log.errorDetail }}</pre>\r\n\t\t\t\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (log.referenceFields?.length) {\r\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\">\r\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.appLogRefFields') }}</summary>\r\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"trace-row__meta\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t@for (rf of log.referenceFields; track rf.field) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ rf.field }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ rf.value }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@if (appLogsHasMore()) {\r\n\t\t\t\t\t\t\t<div class=\"aril-trace-drawer__load-more\">\r\n\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t[label]=\"t('traceDrawer.loadMore')\"\r\n\t\t\t\t\t\t\t\t\ticon=\"CHEVRON_DOWN\"\r\n\t\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\t\t\t[loading]=\"appLogsLoadingMore()\"\r\n\t\t\t\t\t\t\t\t\t[disabled]=\"appLogsLoadingMore()\"\r\n\t\t\t\t\t\t\t\t\t(clickEvent)=\"loadMoreAppLogs()\" />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</section>\r\n\t\t\t\t}\r\n\t\t\t\t@if (!apisixHits().length && !appLogs().length && !refValueEntries().length) {\r\n\t\t\t\t\t<div class=\"aril-trace-drawer__state\">\r\n\t\t\t\t\t\t<i class=\"pi pi-inbox\"></i>\r\n\t\t\t\t\t\t<p>{{ t('traceDrawer.empty') }}</p>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t</div>\r\n\t</p-sidebar>\r\n</ng-container>\r\n", styles: [":host ::ng-deep .aril-trace-drawer{display:flex;flex-direction:column;height:100%}:host ::ng-deep .aril-trace-drawer .p-sidebar-header{padding:1rem 1.25rem;border-bottom:1px solid var(--surface-border, #e5e7eb);flex:0 0 auto}:host ::ng-deep .aril-trace-drawer .p-sidebar-content{padding:0;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden}.aril-trace-drawer__header{display:flex;align-items:center;gap:.5rem;flex:1;min-width:0}.aril-trace-drawer__header .pi-sitemap{font-size:1.25rem;color:var(--primary-color, #1890ff)}.aril-trace-drawer__title{font-weight:600;font-size:1.1rem}.aril-trace-drawer__chip{font-size:.875rem;padding:.2rem .55rem;border-radius:4px;background:var(--surface-100, #f3f4f6);color:var(--text-color-secondary, #6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.aril-trace-drawer__refresh,.aril-trace-drawer__share{cursor:pointer;font-size:1rem;padding:.4rem;border-radius:4px;color:var(--primary-color, #1890ff);transition:background .15s ease}.aril-trace-drawer__refresh:hover,.aril-trace-drawer__share:hover{background:var(--surface-100, #f3f4f6)}.aril-trace-drawer__body{padding:1rem 1.25rem;display:flex;flex-direction:column;gap:1.5rem;min-height:min-content}.aril-trace-drawer__state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:3rem 1rem;color:var(--text-color-secondary, #6b7280);text-align:center;font-size:.95rem}.aril-trace-drawer__state .pi{font-size:2rem}.aril-trace-drawer__state--error .pi{color:var(--red-500, #ef4444)}.aril-trace-drawer__section-title{display:flex;align-items:center;gap:.5rem;margin:0 0 .5rem;font-size:1rem;font-weight:600}.aril-trace-drawer__section-title .pi{color:var(--primary-color, #1890ff)}.trace-row{display:block;border:1px solid var(--surface-border, #e5e7eb);border-left:3px solid var(--surface-border, #e5e7eb);background:var(--surface-card, #ffffff);border-radius:4px;overflow:hidden;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease}.trace-row+.trace-row{margin-top:.4rem}.trace-row:hover{border-top-color:var(--surface-300, #d1d5db);border-right-color:var(--surface-300, #d1d5db);border-bottom-color:var(--surface-300, #d1d5db);box-shadow:0 1px 3px #0000000a}.trace-row[open]{background:var(--surface-50, #fafafa);border-top-color:var(--surface-300, #d1d5db);border-right-color:var(--surface-300, #d1d5db);border-bottom-color:var(--surface-300, #d1d5db);box-shadow:0 1px 4px #0000000d}.trace-row--success{border-left-color:var(--green-500, #22c55e)}.trace-row--info{border-left-color:var(--blue-500, #3b82f6)}.trace-row--warning{border-left-color:var(--orange-500, #f97316)}.trace-row--danger{border-left-color:var(--red-500, #ef4444)}.trace-row--secondary{border-left-color:var(--gray-400, #9ca3af)}.trace-row__summary{cursor:pointer;-webkit-user-select:none;user-select:none;list-style:none;display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem}.trace-row__summary::-webkit-details-marker{display:none}.trace-row__summary:hover{background:var(--surface-50, #fafafa)}.trace-row[open] .trace-row__summary:hover{background:var(--surface-100, #f3f4f6)}.trace-row__chevron{color:var(--text-color-secondary, #6b7280);font-size:.7rem;transition:transform .15s ease;flex-shrink:0}.trace-row[open] .trace-row__chevron{transform:rotate(90deg)}.trace-row__tag{font-weight:600;color:var(--primary-color, #1890ff);font-size:.8rem;white-space:nowrap;flex-shrink:0;letter-spacing:.02em}.trace-row__main{font-size:.85rem;color:var(--text-color, #111827);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.trace-row__time{font-size:.75rem;color:var(--text-color-secondary, #6b7280);font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0}.trace-row__action{cursor:pointer;padding:.25rem;border-radius:4px;color:var(--text-color-secondary, #6b7280);flex-shrink:0;transition:background .15s ease,color .15s ease}.trace-row__action:hover{background:var(--surface-100, #f3f4f6);color:var(--primary-color, #1890ff)}.trace-row__body{padding:.5rem .75rem .75rem;border-top:1px solid var(--surface-border, #e5e7eb);display:flex;flex-direction:column;gap:.5rem;background:var(--surface-0, #ffffff)}.trace-row__message{font-size:.85rem;color:var(--text-color, #111827);line-height:1.5;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;background:var(--surface-100, #f3f4f6);border-radius:4px;padding:.5rem .65rem}.trace-row__meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.25rem .75rem;font-size:.8rem}.trace-row__meta>div{display:grid;grid-template-columns:max-content 1fr;column-gap:.4rem;align-items:baseline;min-width:0}.trace-row__meta .meta-label{color:var(--text-color-secondary, #6b7280);font-weight:500}.trace-row__meta .meta-label:after{content:\":\"}.trace-row__meta span:not(.meta-label){color:var(--text-color, #111827);word-break:break-word}.trace-row__sub{margin:0}.trace-row__sub summary{cursor:pointer;font-size:.8rem;color:var(--primary-color, #1890ff);padding:.15rem 0;-webkit-user-select:none;user-select:none}.trace-row__sub summary:hover{text-decoration:underline}.trace-row__sub pre{margin:.25rem 0 0;padding:.5rem .75rem;background:var(--surface-100, #f3f4f6);border-radius:4px;font-size:.78rem;line-height:1.45;max-height:320px;overflow:auto;white-space:pre-wrap;word-break:break-word}.aril-trace-drawer__load-more{display:flex;justify-content:center;margin-top:.5rem}.ref-values{display:flex;flex-direction:column;gap:.4rem;border:1px solid var(--surface-border, #e5e7eb);border-radius:4px;background:var(--surface-card, #ffffff);padding:.6rem .75rem}.ref-values__row{display:grid;grid-template-columns:minmax(120px,max-content) 1fr;column-gap:.75rem;row-gap:.25rem;align-items:baseline}.ref-values__key{font-size:.8rem;font-weight:600;color:var(--text-color-secondary, #6b7280);letter-spacing:.02em;overflow-wrap:anywhere}.ref-values__key:after{content:\":\"}.ref-values__chips{display:flex;flex-wrap:wrap;gap:.3rem;min-width:0}.ref-values__chip{font-size:.78rem;padding:.15rem .5rem;border-radius:4px;background:var(--surface-100, #f3f4f6);color:var(--text-color, #111827);border:1px solid var(--surface-border, #e5e7eb);white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}\n"] }]
290
+ args: [{ standalone: true, selector: 'aril-trace-drawer', imports: [JsonPipe, TranslocoModule, SidebarModule, ProgressSpinnerModule, TooltipModule, BadgeComponent, ButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *transloco=\"let t\">\n\t<p-sidebar\n\t\t[visible]=\"visible()\"\n\t\t(visibleChange)=\"onVisibleChange($event)\"\n\t\t[position]=\"position()\"\n\t\t[style]=\"{ width: width() }\"\n\t\t[modal]=\"modal()\"\n\t\t[dismissible]=\"true\"\n\t\t[showCloseIcon]=\"true\"\n\t\tstyleClass=\"aril-trace-drawer\">\n\t\t<ng-template pTemplate=\"header\">\n\t\t\t<div class=\"aril-trace-drawer__header\">\n\t\t\t\t<i class=\"pi pi-sitemap\"></i>\n\t\t\t\t<span class=\"aril-trace-drawer__title\">{{ t('traceDrawer.title') }}</span>\n\t\t\t\t<code class=\"aril-trace-drawer__chip\">{{ traceId() }}</code>\n\t\t\t\t<i\n\t\t\t\t\trole=\"button\"\n\t\t\t\t\tclass=\"pi pi-refresh aril-trace-drawer__refresh\"\n\t\t\t\t\t[class.pi-spin]=\"loading()\"\n\t\t\t\t\t[pTooltip]=\"t('traceDrawer.refresh')\"\n\t\t\t\t\ttooltipPosition=\"bottom\"\n\t\t\t\t\t(click)=\"refresh()\"></i>\n\t\t\t\t<i\n\t\t\t\t\trole=\"button\"\n\t\t\t\t\tclass=\"pi pi-share-alt aril-trace-drawer__share\"\n\t\t\t\t\t[pTooltip]=\"t('traceDrawer.shareLink')\"\n\t\t\t\t\ttooltipPosition=\"bottom\"\n\t\t\t\t\t(click)=\"shareLink()\"></i>\n\t\t\t</div>\n\t\t</ng-template>\n\n\t\t<div class=\"aril-trace-drawer__body\">\n\t\t\t@if (loading()) {\n\t\t\t\t<div class=\"aril-trace-drawer__state\">\n\t\t\t\t\t<p-progressSpinner strokeWidth=\"3\" styleClass=\"w-3rem h-3rem\"></p-progressSpinner>\n\t\t\t\t\t<span>{{ t('traceDrawer.loading') }}</span>\n\t\t\t\t</div>\n\t\t\t} @else if (errorMessage()) {\n\t\t\t\t<div class=\"aril-trace-drawer__state aril-trace-drawer__state--error\">\n\t\t\t\t\t<i class=\"pi pi-exclamation-triangle\"></i>\n\t\t\t\t\t<p>{{ errorMessage() }}</p>\n\t\t\t\t\t<aril-button [label]=\"t('traceDrawer.retry')\" icon=\"REFRESH\" color=\"primary\" (clickEvent)=\"retry()\" />\n\t\t\t\t</div>\n\t\t\t} @else {\n\t\t\t\t@if (refValueEntries().length) {\n\t\t\t\t\t<section class=\"aril-trace-drawer__section\">\n\t\t\t\t\t\t<h3 class=\"aril-trace-drawer__section-title\">\n\t\t\t\t\t\t\t<i class=\"pi pi-tags\"></i>\n\t\t\t\t\t\t\t{{ t('traceDrawer.refValuesHeader') }}\n\t\t\t\t\t\t\t<aril-badge [value]=\"refValueEntries().length.toString()\" [rounded]=\"true\" />\n\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t<div class=\"ref-values\">\n\t\t\t\t\t\t\t@for (entry of refValueEntries(); track entry[0]) {\n\t\t\t\t\t\t\t\t<div class=\"ref-values__row\">\n\t\t\t\t\t\t\t\t\t<span class=\"ref-values__key\">{{ entry[0] }}</span>\n\t\t\t\t\t\t\t\t\t<div class=\"ref-values__chips\">\n\t\t\t\t\t\t\t\t\t\t@for (val of entry[1]; track val) {\n\t\t\t\t\t\t\t\t\t\t\t<code class=\"ref-values__chip\">{{ val }}</code>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</section>\n\t\t\t\t}\n\t\t\t\t@if (apisixHits().length) {\n\t\t\t\t\t<section class=\"aril-trace-drawer__section\">\n\t\t\t\t\t\t<h3 class=\"aril-trace-drawer__section-title\">\n\t\t\t\t\t\t\t<i class=\"pi pi-globe\"></i>\n\t\t\t\t\t\t\t{{ t('traceDrawer.apisixHeader') }}\n\t\t\t\t\t\t\t<aril-badge [value]=\"apisixHits().length + ' / ' + totalItem()\" [rounded]=\"true\" />\n\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t@for (hit of apisixHits(); track hit.id) {\n\t\t\t\t\t\t\t<details class=\"trace-row trace-row--{{ statusSeverity(hit.status) }}\">\n\t\t\t\t\t\t\t\t<summary class=\"trace-row__summary\">\n\t\t\t\t\t\t\t\t\t<i class=\"pi pi-chevron-right trace-row__chevron\"></i>\n\t\t\t\t\t\t\t\t\t<aril-badge [value]=\"hit.status.toString()\" [severity]=\"statusSeverity(hit.status)\" />\n\t\t\t\t\t\t\t\t\t<span class=\"trace-row__tag\">{{ hit.requestMethod }}</span>\n\t\t\t\t\t\t\t\t\t<span class=\"trace-row__main\">{{ hit.requestUri }}</span>\n\t\t\t\t\t\t\t\t\t<aril-badge\n\t\t\t\t\t\t\t\t\t\t[value]=\"formatDuration(hit.responseTime)\"\n\t\t\t\t\t\t\t\t\t\t[severity]=\"durationSeverity(hit.responseTime)\" />\n\t\t\t\t\t\t\t\t\t@if (hit.timestamp) {\n\t\t\t\t\t\t\t\t\t\t<span class=\"trace-row__time\">{{ formatTimestamp(hit.timestamp) }}</span>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t<i\n\t\t\t\t\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-code trace-row__action\"\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('traceDrawer.copyCurl')\"\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\n\t\t\t\t\t\t\t\t\t\t(click)=\"$event.preventDefault(); $event.stopPropagation(); copyAsCurl(hit)\"></i>\n\t\t\t\t\t\t\t\t</summary>\n\t\t\t\t\t\t\t\t<div class=\"trace-row__body\">\n\t\t\t\t\t\t\t\t\t<div class=\"trace-row__meta\">\n\t\t\t\t\t\t\t\t\t\t@if (hit.routeName) {\n\t\t\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.route') }}</span\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ hit.routeName }}</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t@if (hit.sourceApp || hit.sourceModule) {\n\t\t\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.source') }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span>{{ hit.sourceApp }}{{ hit.sourceModule ? ' / ' + hit.sourceModule : '' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t@if (hit.targetApp || hit.targetModule) {\n\t\t\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.target') }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span>{{ hit.targetApp }}{{ hit.targetModule ? ' / ' + hit.targetModule : '' }}</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t@if (hit.upstreamHost) {\n\t\t\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.upstream') }}</span\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ hit.upstreamHost }}</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t@if (hit.username) {\n\t\t\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.user') }}</span\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ hit.username }}</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t@if (hit.requestSize !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.requestSize') }}</span\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ formatBytes(hit.requestSize) }}</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t@if (hit.responseSize !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.responseSize') }}</span\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ formatBytes(hit.responseSize) }}</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t@if (hit.requestBody) {\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\">\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.requestBody') }}</summary>\n\t\t\t\t\t\t\t\t\t\t\t@if (tryParseJson(hit.requestBody); as parsed) {\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ parsed | json }}</pre>\n\t\t\t\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ hit.requestBody }}</pre>\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t</details>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t@if (hit.responseBody) {\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\">\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.responseBody') }}</summary>\n\t\t\t\t\t\t\t\t\t\t\t@if (tryParseJson(hit.responseBody); as parsed) {\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ parsed | json }}</pre>\n\t\t\t\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ hit.responseBody }}</pre>\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t</details>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</details>\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (hasMore()) {\n\t\t\t\t\t\t\t<div class=\"aril-trace-drawer__load-more\">\n\t\t\t\t\t\t\t\t<aril-button\n\t\t\t\t\t\t\t\t\t[label]=\"t('traceDrawer.loadMore')\"\n\t\t\t\t\t\t\t\t\ticon=\"CHEVRON_DOWN\"\n\t\t\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\t\t\t[outlined]=\"true\"\n\t\t\t\t\t\t\t\t\t[loading]=\"loadingMore()\"\n\t\t\t\t\t\t\t\t\t[disabled]=\"loadingMore()\"\n\t\t\t\t\t\t\t\t\t(clickEvent)=\"loadMore()\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\t\t\t\t\t</section>\n\t\t\t\t}\n\t\t\t\t@if (appLogs().length) {\n\t\t\t\t\t<section class=\"aril-trace-drawer__section\">\n\t\t\t\t\t\t<h3 class=\"aril-trace-drawer__section-title\">\n\t\t\t\t\t\t\t<i class=\"pi pi-list\"></i>\n\t\t\t\t\t\t\t{{ t('traceDrawer.appLogsHeader') }}\n\t\t\t\t\t\t\t<aril-badge [value]=\"appLogs().length + ' / ' + appLogsTotal()\" [rounded]=\"true\" />\n\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t@for (log of appLogs(); track log.id) {\n\t\t\t\t\t\t\t<details class=\"trace-row trace-row--{{ levelSeverity(log.level) }}\">\n\t\t\t\t\t\t\t\t<summary class=\"trace-row__summary\">\n\t\t\t\t\t\t\t\t\t<i class=\"pi pi-chevron-right trace-row__chevron\"></i>\n\t\t\t\t\t\t\t\t\t@if (log.level) {\n\t\t\t\t\t\t\t\t\t\t<aril-badge [value]=\"log.level\" [severity]=\"levelSeverity(log.level)\" />\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t@if (log.module) {\n\t\t\t\t\t\t\t\t\t\t<span class=\"trace-row__tag\">{{ log.module }}</span>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t<span class=\"trace-row__main\">{{ log.message }}</span>\n\t\t\t\t\t\t\t\t\t@if (log.timestamp) {\n\t\t\t\t\t\t\t\t\t\t<span class=\"trace-row__time\">{{ formatTimestamp(log.timestamp) }}</span>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</summary>\n\t\t\t\t\t\t\t\t<div class=\"trace-row__body\">\n\t\t\t\t\t\t\t\t\t@if (log.message) {\n\t\t\t\t\t\t\t\t\t\t<div class=\"trace-row__message\">{{ log.message }}</div>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t@if (log.username || log.app) {\n\t\t\t\t\t\t\t\t\t\t<div class=\"trace-row__meta\">\n\t\t\t\t\t\t\t\t\t\t\t@if (log.app) {\n\t\t\t\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.target') }}</span\n\t\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ log.app }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t@if (log.username) {\n\t\t\t\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.user') }}</span\n\t\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ log.username }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t@if (log.errorDetail) {\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\" open>\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.appLogErrorDetail') }}</summary>\n\t\t\t\t\t\t\t\t\t\t\t<pre>{{ log.errorDetail }}</pre>\n\t\t\t\t\t\t\t\t\t\t</details>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t@if (log.referenceFields?.length) {\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\">\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.appLogRefFields') }}</summary>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"trace-row__meta\">\n\t\t\t\t\t\t\t\t\t\t\t\t@for (rf of log.referenceFields; track rf.field) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ rf.field }}</span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ rf.value }}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</details>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</details>\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (appLogsHasMore()) {\n\t\t\t\t\t\t\t<div class=\"aril-trace-drawer__load-more\">\n\t\t\t\t\t\t\t\t<aril-button\n\t\t\t\t\t\t\t\t\t[label]=\"t('traceDrawer.loadMore')\"\n\t\t\t\t\t\t\t\t\ticon=\"CHEVRON_DOWN\"\n\t\t\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\t\t\t[outlined]=\"true\"\n\t\t\t\t\t\t\t\t\t[loading]=\"appLogsLoadingMore()\"\n\t\t\t\t\t\t\t\t\t[disabled]=\"appLogsLoadingMore()\"\n\t\t\t\t\t\t\t\t\t(clickEvent)=\"loadMoreAppLogs()\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\t\t\t\t\t</section>\n\t\t\t\t}\n\t\t\t\t@if (!apisixHits().length && !appLogs().length && !refValueEntries().length) {\n\t\t\t\t\t<div class=\"aril-trace-drawer__state\">\n\t\t\t\t\t\t<i class=\"pi pi-inbox\"></i>\n\t\t\t\t\t\t<p>{{ t('traceDrawer.empty') }}</p>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t}\n\t\t</div>\n\t</p-sidebar>\n</ng-container>\n", styles: [":host ::ng-deep .aril-trace-drawer{display:flex;flex-direction:column;height:100%}:host ::ng-deep .aril-trace-drawer .p-sidebar-header{padding:1rem 1.25rem;border-bottom:1px solid var(--surface-border, #e5e7eb);flex:0 0 auto}:host ::ng-deep .aril-trace-drawer .p-sidebar-content{padding:0;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden}.aril-trace-drawer__header{display:flex;align-items:center;gap:.5rem;flex:1;min-width:0}.aril-trace-drawer__header .pi-sitemap{font-size:1.25rem;color:var(--primary-color, #1890ff)}.aril-trace-drawer__title{font-weight:600;font-size:1.1rem}.aril-trace-drawer__chip{font-size:.875rem;padding:.2rem .55rem;border-radius:4px;background:var(--surface-100, #f3f4f6);color:var(--text-color-secondary, #6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.aril-trace-drawer__refresh,.aril-trace-drawer__share{cursor:pointer;font-size:1rem;padding:.4rem;border-radius:4px;color:var(--primary-color, #1890ff);transition:background .15s ease}.aril-trace-drawer__refresh:hover,.aril-trace-drawer__share:hover{background:var(--surface-100, #f3f4f6)}.aril-trace-drawer__body{padding:1rem 1.25rem;display:flex;flex-direction:column;gap:1.5rem;min-height:min-content}.aril-trace-drawer__state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:3rem 1rem;color:var(--text-color-secondary, #6b7280);text-align:center;font-size:.95rem}.aril-trace-drawer__state .pi{font-size:2rem}.aril-trace-drawer__state--error .pi{color:var(--red-500, #ef4444)}.aril-trace-drawer__section-title{display:flex;align-items:center;gap:.5rem;margin:0 0 .5rem;font-size:1rem;font-weight:600}.aril-trace-drawer__section-title .pi{color:var(--primary-color, #1890ff)}.trace-row{display:block;border:1px solid var(--surface-border, #e5e7eb);border-left:3px solid var(--surface-border, #e5e7eb);background:var(--surface-card, #ffffff);border-radius:4px;overflow:hidden;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease}.trace-row+.trace-row{margin-top:.4rem}.trace-row:hover{border-top-color:var(--surface-300, #d1d5db);border-right-color:var(--surface-300, #d1d5db);border-bottom-color:var(--surface-300, #d1d5db);box-shadow:0 1px 3px #0000000a}.trace-row[open]{background:var(--surface-50, #fafafa);border-top-color:var(--surface-300, #d1d5db);border-right-color:var(--surface-300, #d1d5db);border-bottom-color:var(--surface-300, #d1d5db);box-shadow:0 1px 4px #0000000d}.trace-row--success{border-left-color:var(--green-500, #22c55e)}.trace-row--info{border-left-color:var(--blue-500, #3b82f6)}.trace-row--warning{border-left-color:var(--orange-500, #f97316)}.trace-row--danger{border-left-color:var(--red-500, #ef4444)}.trace-row--secondary{border-left-color:var(--gray-400, #9ca3af)}.trace-row__summary{cursor:pointer;-webkit-user-select:none;user-select:none;list-style:none;display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem}.trace-row__summary::-webkit-details-marker{display:none}.trace-row__summary:hover{background:var(--surface-50, #fafafa)}.trace-row[open] .trace-row__summary:hover{background:var(--surface-100, #f3f4f6)}.trace-row__chevron{color:var(--text-color-secondary, #6b7280);font-size:.7rem;transition:transform .15s ease;flex-shrink:0}.trace-row[open] .trace-row__chevron{transform:rotate(90deg)}.trace-row__tag{font-weight:600;color:var(--primary-color, #1890ff);font-size:.8rem;white-space:nowrap;flex-shrink:0;letter-spacing:.02em}.trace-row__main{font-size:.85rem;color:var(--text-color, #111827);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.trace-row__time{font-size:.75rem;color:var(--text-color-secondary, #6b7280);font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0}.trace-row__action{cursor:pointer;padding:.25rem;border-radius:4px;color:var(--text-color-secondary, #6b7280);flex-shrink:0;transition:background .15s ease,color .15s ease}.trace-row__action:hover{background:var(--surface-100, #f3f4f6);color:var(--primary-color, #1890ff)}.trace-row__body{padding:.5rem .75rem .75rem;border-top:1px solid var(--surface-border, #e5e7eb);display:flex;flex-direction:column;gap:.5rem;background:var(--surface-0, #ffffff)}.trace-row__message{font-size:.85rem;color:var(--text-color, #111827);line-height:1.5;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;background:var(--surface-100, #f3f4f6);border-radius:4px;padding:.5rem .65rem}.trace-row__meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.25rem .75rem;font-size:.8rem}.trace-row__meta>div{display:grid;grid-template-columns:max-content 1fr;column-gap:.4rem;align-items:baseline;min-width:0}.trace-row__meta .meta-label{color:var(--text-color-secondary, #6b7280);font-weight:500}.trace-row__meta .meta-label:after{content:\":\"}.trace-row__meta span:not(.meta-label){color:var(--text-color, #111827);word-break:break-word}.trace-row__sub{margin:0}.trace-row__sub summary{cursor:pointer;font-size:.8rem;color:var(--primary-color, #1890ff);padding:.15rem 0;-webkit-user-select:none;user-select:none}.trace-row__sub summary:hover{text-decoration:underline}.trace-row__sub pre{margin:.25rem 0 0;padding:.5rem .75rem;background:var(--surface-100, #f3f4f6);border-radius:4px;font-size:.78rem;line-height:1.45;max-height:320px;overflow:auto;white-space:pre-wrap;word-break:break-word}.aril-trace-drawer__load-more{display:flex;justify-content:center;margin-top:.5rem}.ref-values{display:flex;flex-direction:column;gap:.4rem;border:1px solid var(--surface-border, #e5e7eb);border-radius:4px;background:var(--surface-card, #ffffff);padding:.6rem .75rem}.ref-values__row{display:grid;grid-template-columns:minmax(120px,max-content) 1fr;column-gap:.75rem;row-gap:.25rem;align-items:baseline}.ref-values__key{font-size:.8rem;font-weight:600;color:var(--text-color-secondary, #6b7280);letter-spacing:.02em;overflow-wrap:anywhere}.ref-values__key:after{content:\":\"}.ref-values__chips{display:flex;flex-wrap:wrap;gap:.3rem;min-width:0}.ref-values__chip{font-size:.78rem;padding:.15rem .5rem;border-radius:4px;background:var(--surface-100, #f3f4f6);color:var(--text-color, #111827);border:1px solid var(--surface-border, #e5e7eb);white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}\n"] }]
291
291
  }], ctorParameters: () => [], propDecorators: { visibleChange: [{
292
292
  type: Output
293
293
  }] } });
294
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2UtZHJhd2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWktYnVzaW5lc3MvdHJhY2UtZHJhd2VyL3NyYy90cmFjZS1kcmF3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS1idXNpbmVzcy90cmFjZS1kcmF3ZXIvc3JjL3RyYWNlLWRyYXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEksT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXRELE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWxFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxN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QyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM1RyxJQUFJLE1BQU07Z0JBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1lBQzlELEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVPLEtBQUssQ0FBQyxPQUFlO1FBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMs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Q0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1IsT0FBTyxJQUFJLENBQUM7UUFDYixDQUFDO0lBQ0YsQ0FBQzsrR0FqVFcsb0JBQW9CO21HQUFwQixvQkFBb0IscW5DQ2pDakMsNHlZQXNRQSx5dU1EeE9XLFFBQVEsNENBQUUsZUFBZSxnT0FBRSxhQUFhLG1kQUFFLHFCQUFxQix3TUFBRSxhQUFhLHNYQUFFLGNBQWMsd0xBQUUsZUFBZTs7NEZBRzdHLG9CQUFvQjtrQkFSaEMsU0FBUztpQ0FDRyxJQUFJLFlBQ04sbUJBQW1CLFdBR3BCLENBQUMsUUFBUSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxlQUFlLENBQUMsbUJBQ3pHLHVCQUF1QixDQUFDLE1BQU07d0RBa0JyQyxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSnNvblBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuaW1wb3J0IHsgRU1QVFksIFN1YmplY3QsIGNhdGNoRXJyb3IsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Byb2dyZXNzc3Bpbm5lcic7XHJcbmltcG9ydCB7IFNpZGViYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL3NpZGViYXInO1xyXG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb01vZHVsZSwgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuaW1wb3J0IHsgS2V5Y2xvYWtTZXJ2aWNlIH0gZnJvbSAna2V5Y2xvYWstYW5ndWxhcic7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5cclxuaW1wb3J0IHsgQmFkZ2VDb21wb25lbnQgfSBmcm9tICdhcmlsL3VpL2JhZGdlJztcclxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnYXJpbC91aS9idXR0b24nO1xyXG5pbXBvcnQgJ2FyaWwvdXRpbC9wcmltaXRpdmUtZXh0ZW5zaW9ucyc7XHJcblxyXG5pbXBvcnQgeyBBcHBMb2dTZXJ2aWNlIH0gZnJvbSAnLi9hcHAtbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcGlzaXhIaXQsIEFwcExvZ0l0ZW0sIEFwcExvZ1JlZlZhbHVlcyB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFRyYWNlTG9nU2VydmljZSB9IGZyb20gJy4vdHJhY2UtbG9nLnNlcnZpY2UnO1xyXG5cclxudHlwZSBQb3NpdGlvbiA9ICdyaWdodCcgfCAnbGVmdCc7XHJcbnR5cGUgU2V2ZXJpdHkgPSAnc3VjY2VzcycgfCAnc2Vjb25kYXJ5JyB8ICdpbmZvJyB8ICd3YXJuaW5nJyB8ICdkYW5nZXInIHwgJ2NvbnRyYXN0JyB8IHVuZGVmaW5lZDtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0c2VsZWN0b3I6ICdhcmlsLXRyYWNlLWRyYXdlcicsXHJcblx0dGVtcGxhdGVVcmw6ICcuL3RyYWNlLWRyYXdlci5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vdHJhY2UtZHJhd2VyLmNvbXBvbmVudC5zY3NzJ10sXHJcblx0aW1wb3J0czogW0pzb25QaXBlLCBUcmFuc2xvY29Nb2R1bGUsIFNpZGViYXJNb2R1bGUsIFByb2dyZXNzU3Bpbm5lck1vZHVsZSwgVG9vbHRpcE1vZHVsZSwgQmFkZ2VDb21wb25lbnQsIEJ1dHRvbkNvbXBvbmVudF0sXHJcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYWNlRHJhd2VyQ29tcG9uZW50IHtcclxuXHRwcml2YXRlIHJlYWRvbmx5IHRyYWNlTG9nU2VydmljZSA9IGluamVjdChUcmFjZUxvZ1NlcnZpY2UpO1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgYXBwTG9nU2VydmljZSA9IGluamVjdChBcHBMb2dTZXJ2aWNlKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VTZXJ2aWNlID0gaW5qZWN0KE1lc3NhZ2VTZXJ2aWNlKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IHRyYW5zbG9jb1NlcnZpY2UgPSBpbmplY3QoVHJhbnNsb2NvU2VydmljZSk7XHJcblx0cHJpdmF0ZSByZWFkb25seSBrZXljbG9ha1NlcnZpY2UgPSBpbmplY3QoS2V5Y2xvYWtTZXJ2aWNlKTtcclxuXHJcblx0dmlzaWJsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHR0cmFjZUlkID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xyXG5cdHBvc2l0aW9uID0gaW5wdXQ8UG9zaXRpb24+KCdyaWdodCcpO1xyXG5cdHdpZHRoID0gaW5wdXQ8c3RyaW5nPignbWluKDY4MHB4LCA5MHZ3KScpO1xyXG5cdG1vZGFsID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdHBhZ2VTaXplID0gaW5wdXQ8bnVtYmVyPigxMCk7XHJcblx0c3RhcnRUaW1lID0gaW5wdXQ8bnVtYmVyIHwgdW5kZWZpbmVkPigpO1xyXG5cdGVuZFRpbWUgPSBpbnB1dDxudW1iZXIgfCB1bmRlZmluZWQ+KCk7XHJcblxyXG5cdEBPdXRwdXQoKSB2aXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgbG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XHJcblx0cHJvdGVjdGVkIHJlYWRvbmx5IGxvYWRpbmdNb3JlID0gc2lnbmFsKGZhbHNlKTtcclxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgZXJyb3JNZXNzYWdlID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgYXBpc2l4SGl0cyA9IHNpZ25hbDxBcGlzaXhIaXRbXT4oW10pO1xyXG5cdHByb3RlY3RlZCByZWFkb25seSB0b3RhbEl0ZW0gPSBzaWduYWwoMCk7XHJcblx0cHJvdGVjdGVkIHJlYWRvbmx5IHBhZ2VOdW1iZXIgPSBzaWduYWwoMSk7XHJcblxyXG5cdHByb3RlY3RlZCByZWFkb25seSBhcHBMb2dzID0gc2lnbmFsPEFwcExvZ0l0ZW1bXT4oW10pO1xyXG5cdHByb3RlY3RlZCByZWFkb25seSBhcHBMb2dzTG9hZGluZ01vcmUgPSBzaWduYWwoZmFsc2UpO1xyXG5cdHByb3RlY3RlZCByZWFkb25seSBhcHBMb2dzVG90YWwgPSBzaWduYWwoMCk7XHJcblx0cHJvdGVjdGVkIHJlYWRvbmx5IGFwcExvZ3NQYWdlID0gc2lnbmFsKDEpO1xyXG5cclxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgcmVmVmFsdWVzID0gc2lnbmFsPEFwcExvZ1JlZlZhbHVlcz4oe30pO1xyXG5cdHByb3RlY3RlZCByZWFkb25seSByZWZWYWx1ZUVudHJpZXMgPSBjb21wdXRlZCgoKSA9PlxyXG5cdFx0T2JqZWN0LmVudHJpZXModGhpcy5yZWZWYWx1ZXMoKSkuZmlsdGVyKChbLCB2YWx1ZXNdKSA9PiB2YWx1ZXM/Lmxlbmd0aClcclxuXHQpO1xyXG5cclxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgaGFzTW9yZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYXBpc2l4SGl0cygpLmxlbmd0aCA8IHRoaXMudG90YWxJdGVtKCkpO1xyXG5cdHByb3RlY3RlZCByZWFkb25seSBhcHBMb2dzSGFzTW9yZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYXBwTG9ncygpLmxlbmd0aCA8IHRoaXMuYXBwTG9nc1RvdGFsKCkpO1xyXG5cclxuXHRwcml2YXRlIHJlYWRvbmx5IHJlcXVlc3QgPSBuZXcgU3ViamVjdDx7IHRyYWNlSWQ6IHN0cmluZzsgcGFnZU51bWJlcjogbnVtYmVyOyBhcHBlbmQ6IGJvb2xlYW4gfT4oKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IGFwcExvZ3NSZXF1ZXN0ID0gbmV3IFN1YmplY3Q8eyB0cmFjZUlkOiBzdHJpbmc7IHBhZ2VOdW1iZXI6IG51bWJlcjsgYXBwZW5kOiBib29sZWFuIH0+KCk7XHJcblx0cHJpdmF0ZSByZWFkb25seSByZWZWYWx1ZXNSZXF1ZXN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgcmVzcG9uc2UgPSB0b1NpZ25hbChcclxuXHRcdHRoaXMucmVxdWVzdC5waXBlKFxyXG5cdFx0XHRzd2l0Y2hNYXAoKHJlcSkgPT5cclxuXHRcdFx0XHR0aGlzLnRyYWNlTG9nU2VydmljZVxyXG5cdFx0XHRcdFx0LnNlYXJjaEJ5VHJhY2VJZCh7XHJcblx0XHRcdFx0XHRcdHRyYWNlSWQ6IHJlcS50cmFjZUlkLFxyXG5cdFx0XHRcdFx0XHRzdGFydFRpbWU6IHRoaXMuc3RhcnRUaW1lKCkgPz8gMjAwMDAxMDEwMDAwMDAsXHJcblx0XHRcdFx0XHRcdGVuZFRpbWU6IHRoaXMuZW5kVGltZSgpID8/IChuZXcgRGF0ZSgpLmRhdGVUb0xvbmcoJ3RpbWUnKSA/PyA5OTk5MTIzMTIzNTk1OSksXHJcblx0XHRcdFx0XHRcdHBhZ2VyOiB7IHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplKCksIHBhZ2VOdW1iZXI6IHJlcS5wYWdlTnVtYmVyIH1cclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHQucGlwZShcclxuXHRcdFx0XHRcdFx0bWFwKChyZXNwKSA9PiAoeyByZXNwLCBhcHBlbmQ6IHJlcS5hcHBlbmQgfSkpLFxyXG5cdFx0XHRcdFx0XHRjYXRjaEVycm9yKChlcnIpID0+IHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmVycm9yTWVzc2FnZS5zZXQoZXJyPy5lcnJvcj8ubWVzc2FnZSA/PyBlcnI/Lm1lc3NhZ2UgPz8gJ8Swc3RlayBiYcWfYXLEsXPEsXogb2xkdScpO1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMubG9hZGluZ01vcmUuc2V0KGZhbHNlKTtcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gRU1QVFk7XHJcblx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHQpXHJcblx0XHRcdClcclxuXHRcdClcclxuXHQpO1xyXG5cclxuXHRwcml2YXRlIHJlYWRvbmx5IGFwcExvZ3NSZXNwb25zZSA9IHRvU2lnbmFsKFxyXG5cdFx0dGhpcy5hcHBMb2dzUmVxdWVzdC5waXBlKFxyXG5cdFx0XHRzd2l0Y2hNYXAoKHJlcSkgPT5cclxuXHRcdFx0XHR0aGlzLmFwcExvZ1NlcnZpY2VcclxuXHRcdFx0XHRcdC5zZWFyY2hCeVRyYWNlSWQoe1xyXG5cdFx0XHRcdFx0XHR0cmFjZUlkOiByZXEudHJhY2VJZCxcclxuXHRcdFx0XHRcdFx0c3RhcnRUaW1lOiB0aGlzLnN0YXJ0VGltZSgpID8/IDIwMDAwMTAxMDAwMDAwLFxyXG5cdFx0XHRcdFx0XHRlbmRUaW1lOiB0aGlzLmVuZFRpbWUoKSA/PyAobmV3IERhdGUoKS5kYXRlVG9Mb25nKCd0aW1lJykgPz8gOTk5OTEyMzEyMzU5NTkpLFxyXG5cdFx0XHRcdFx0XHRwYWdlcjogeyBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSgpLCBwYWdlTnVtYmVyOiByZXEucGFnZU51bWJlciB9XHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0XHRcdG1hcCgocmVzcCkgPT4gKHsgcmVzcCwgYXBwZW5kOiByZXEuYXBwZW5kIH0pKSxcclxuXHRcdFx0XHRcdFx0Y2F0Y2hFcnJvcigoKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5hcHBMb2dzTG9hZGluZ01vcmUuc2V0KGZhbHNlKTtcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gRU1QVFk7XHJcblx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHQpXHJcblx0XHRcdClcclxuXHRcdClcclxuXHQpO1xyXG5cclxuXHRwcml2YXRlIHJlYWRvbmx5IHJlZlZhbHVlc1Jlc3BvbnNlID0gdG9TaWduYWwoXHJcblx0XHR0aGlzLnJlZlZhbHVlc1JlcXVlc3QucGlwZShcclxuXHRcdFx0c3dpdGNoTWFwKCh0cmFjZUlkKSA9PlxyXG5cdFx0XHRcdHRoaXMuYXBwTG9nU2VydmljZS5nZXRSZWZWYWx1ZXMoeyB0cmFjZUlkIH0pLnBpcGUoXHJcblx0XHRcdFx0XHRjYXRjaEVycm9yKCgpID0+IEVNUFRZKVxyXG5cdFx0XHRcdClcclxuXHRcdFx0KVxyXG5cdFx0KVxyXG5cdCk7XHJcblxyXG5cdGNvbnN0cnVjdG9yKCkge1xyXG5cdFx0ZWZmZWN0KFxyXG5cdFx0XHQoKSA9PiB7XHJcblx0XHRcdFx0aWYgKHRoaXMudmlzaWJsZSgpICYmIHRoaXMudHJhY2VJZCgpKSB7XHJcblx0XHRcdFx0XHR0aGlzLmZldGNoKHRoaXMudHJhY2VJZCgpKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxyXG5cdFx0KTtcclxuXHJcblx0XHRlZmZlY3QoXHJcblx0XHRcdCgpID0+IHtcclxuXHRcdFx0XHRjb25zdCB3cmFwcGVkID0gdGhpcy5yZXNwb25zZSgpO1xyXG5cdFx0XHRcdGlmICghd3JhcHBlZCkgcmV0dXJuO1xyXG5cdFx0XHRcdGNvbnN0IHJlc3VsdCA9IHdyYXBwZWQucmVzcC5yZXNwb25zZT8ucmVzdWx0ID8/IFtdO1xyXG5cdFx0XHRcdGNvbnN0IHRvdGFsID0gd3JhcHBlZC5yZXNwLnJlc3BvbnNlPy5yZXN1bHRJbmZvPy50b3RhbEl0ZW0gPz8gMDtcclxuXHRcdFx0XHR0aGlzLmFwaXNpeEhpdHMudXBkYXRlKChwcmV2KSA9PiAod3JhcHBlZC5hcHBlbmQgPyBbLi4ucHJldiwgLi4ucmVzdWx0XSA6IHJlc3VsdCkpO1xyXG5cdFx0XHRcdHRoaXMudG90YWxJdGVtLnNldCh0b3RhbCk7XHJcblx0XHRcdFx0dGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XHJcblx0XHRcdFx0dGhpcy5sb2FkaW5nTW9yZS5zZXQoZmFsc2UpO1xyXG5cdFx0XHRcdHRoaXMuZXJyb3JNZXNzYWdlLnNldCh1bmRlZmluZWQpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cclxuXHRcdCk7XHJcblxyXG5cdFx0ZWZmZWN0KFxyXG5cdFx0XHQoKSA9PiB7XHJcblx0XHRcdFx0Y29uc3Qgd3JhcHBlZCA9IHRoaXMuYXBwTG9nc1Jlc3BvbnNlKCk7XHJcblx0XHRcdFx0aWYgKCF3cmFwcGVkKSByZXR1cm47XHJcblx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gd3JhcHBlZC5yZXNwLnJlc3BvbnNlPy5yZXN1bHQgPz8gW107XHJcblx0XHRcdFx0Y29uc3QgdG90YWwgPSB3cmFwcGVkLnJlc3AucmVzcG9uc2U/LnJlc3VsdEluZm8/LnRvdGFsSXRlbSA/PyAwO1xyXG5cdFx0XHRcdHRoaXMuYXBwTG9ncy51cGRhdGUoKHByZXYpID0+ICh3cmFwcGVkLmFwcGVuZCA/IFsuLi5wcmV2LCAuLi5yZXN1bHRdIDogcmVzdWx0KSk7XHJcblx0XHRcdFx0dGhpcy5hcHBMb2dzVG90YWwuc2V0KHRvdGFsKTtcclxuXHRcdFx0XHR0aGlzLmFwcExvZ3NMb2FkaW5nTW9yZS5zZXQoZmFsc2UpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cclxuXHRcdCk7XHJcblxyXG5cdFx0ZWZmZWN0KFxyXG5cdFx0XHQoKSA9PiB7XHJcblx0XHRcdFx0Y29uc3Qgd3JhcHBlZCA9IHRoaXMucmVmVmFsdWVzUmVzcG9uc2UoKTtcclxuXHRcdFx0XHRpZiAoIXdyYXBwZWQpIHJldHVybjtcclxuXHRcdFx0XHR0aGlzLnJlZlZhbHVlcy5zZXQod3JhcHBlZC5yZXNwb25zZSA/PyB7fSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHByb3RlY3RlZCBsb2FkTW9yZSgpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGlkID0gdGhpcy50cmFjZUlkKCk7XHJcblx0XHRpZiAoIWlkIHx8IHRoaXMubG9hZGluZ01vcmUoKSB8fCAhdGhpcy5oYXNNb3JlKCkpIHJldHVybjtcclxuXHRcdGNvbnN0IG5leHQgPSB0aGlzLnBhZ2VOdW1iZXIoKSArIDE7XHJcblx0XHR0aGlzLnBhZ2VOdW1iZXIuc2V0KG5leHQpO1xyXG5cdFx0dGhpcy5sb2FkaW5nTW9yZS5zZXQodHJ1ZSk7XHJcblx0XHR0aGlzLnJlcXVlc3QubmV4dCh7IHRyYWNlSWQ6IGlkLCBwYWdlTnVtYmVyOiBuZXh0LCBhcHBlbmQ6IHRydWUgfSk7XHJcblx0fVxyXG5cclxuXHRwcm90ZWN0ZWQgbG9hZE1vcmVBcHBMb2dzKCk6IHZvaWQge1xyXG5cdFx0Y29uc3QgaWQgPSB0aGlzLnRyYWNlSWQoKTtcclxuXHRcdGlmICghaWQgfHwgdGhpcy5hcHBMb2dzTG9hZGluZ01vcmUoKSB8fCAhdGhpcy5hcHBMb2dzSGFzTW9yZSgpKSByZXR1cm47XHJcblx0XHRjb25zdCBuZXh0ID0gdGhpcy5hcHBMb2dzUGFnZSgpICsgMTtcclxuXHRcdHRoaXMuYXBwTG9nc1BhZ2Uuc2V0KG5leHQpO1xyXG5cdFx0dGhpcy5hcHBMb2dzTG9hZGluZ01vcmUuc2V0KHRydWUpO1xyXG5cdFx0dGhpcy5hcHBMb2dzUmVxdWVzdC5uZXh0KHsgdHJhY2VJZDogaWQsIHBhZ2VOdW1iZXI6IG5leHQsIGFwcGVuZDogdHJ1ZSB9KTtcclxuXHR9XHJcblxyXG5cdHByb3RlY3RlZCBvblZpc2libGVDaGFuZ2UodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcclxuXHRcdHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KHZhbHVlKTtcclxuXHR9XHJcblxyXG5cdHByb3RlY3RlZCByZXRyeSgpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGlkID0gdGhpcy50cmFjZUlkKCk7XHJcblx0XHRpZiAoaWQpIHRoaXMuZmV0Y2goaWQpO1xyXG5cdH1cclxuXHJcblx0cHJvdGVjdGVkIHJlZnJlc2goKTogdm9pZCB7XHJcblx0XHRjb25zdCBpZCA9IHRoaXMudHJhY2VJZCgpO1xyXG5cdFx0aWYgKCFpZCB8fCB0aGlzLmxvYWRpbmcoKSkgcmV0dXJuO1xyXG5cdFx0dGhpcy5mZXRjaChpZCk7XHJcblx0fVxyXG5cclxuXHRwcm90ZWN0ZWQgc2hhcmVMaW5rKCk6IHZvaWQge1xyXG5cdFx0Y29uc3QgaWQgPSB0aGlzLnRyYWNlSWQoKTtcclxuXHRcdGlmICghaWQpIHJldHVybjtcclxuXHRcdGNvbnN0IGJhc2UgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5zcGxpdCgnPycpWzBdO1xyXG5cdFx0Y29uc3QgdXJsID0gYCR7YmFzZX0/dHJhY2VJZD0ke2VuY29kZVVSSUNvbXBvbmVudChpZCl9YDtcclxuXHRcdG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHVybCkudGhlbigoKSA9PiB7XHJcblx0XHRcdHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuXHRcdFx0XHRzZXZlcml0eTogJ3N1Y2Nlc3MnLFxyXG5cdFx0XHRcdHN1bW1hcnk6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ3RyYWNlRHJhd2VyLmxpbmtDb3BpZWQnKSxcclxuXHRcdFx0XHRrZXk6ICd0b2FzdC1yb290J1xyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cHJvdGVjdGVkIGFzeW5jIGNvcHlBc0N1cmwoaGl0OiBBcGlzaXhIaXQpOiBQcm9taXNlPHZvaWQ+IHtcclxuXHRcdGNvbnN0IHRva2VuID0gYXdhaXQgdGhpcy5rZXljbG9ha1NlcnZpY2UuZ2V0VG9rZW4oKS5jYXRjaCgoKSA9PiAnJyk7XHJcblx0XHRjb25zdCBjbWQgPSB0aGlzLmJ1aWxkQ3VybChoaXQsIHRva2VuKTtcclxuXHRcdGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNtZCk7XHJcblx0XHR0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcblx0XHRcdHNldmVyaXR5OiAnc3VjY2VzcycsXHJcblx0XHRcdHN1bW1hcnk6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ3RyYWNlRHJhd2VyLmN1cmxDb3BpZWQnKSxcclxuXHRcdFx0a2V5OiAndG9hc3Qtcm9vdCdcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBidWlsZEN1cmwoaGl0OiBBcGlzaXhIaXQsIHRva2VuOiBzdHJpbmcpOiBzdHJpbmcge1xyXG5cdFx0Y29uc3QgbWV0aG9kID0gKGhpdC5yZXF1ZXN0TWV0aG9kID8/ICdHRVQnKS50b1VwcGVyQ2FzZSgpO1xyXG5cdFx0Y29uc3QgaG9zdCA9IGhpdC51cHN0cmVhbUhvc3QgPyBoaXQudXBzdHJlYW1Ib3N0LnJlcGxhY2UoL1xcLyskLywgJycpIDogJyc7XHJcblx0XHRjb25zdCB1cmkgPSBoaXQucmVxdWVzdFVyaSA/PyAnJztcclxuXHRcdGNvbnN0IHVybCA9IGhvc3QgPyAoaG9zdC5zdGFydHNXaXRoKCdodHRwJykgPyBgJHtob3N0fSR7dXJpfWAgOiBgaHR0cHM6Ly8ke2hvc3R9JHt1cml9YCkgOiB1cmk7XHJcblx0XHRjb25zdCBlc2NhcGUgPSAoczogc3RyaW5nKSA9PiBzLnJlcGxhY2UoLycvZywgYCdcXFxcJydgKTtcclxuXHRcdGNvbnN0IGxpbmVzID0gW2BjdXJsIC1YICR7bWV0aG9kfSAnJHtlc2NhcGUodXJsKX0nYF07XHJcblx0XHRpZiAodG9rZW4pIGxpbmVzLnB1c2goYC1IICdBdXRob3JpemF0aW9uOiBCZWFyZXIgJHtlc2NhcGUodG9rZW4pfSdgKTtcclxuXHRcdGNvbnN0IGJvZHkgPSBoaXQucmVxdWVzdEJvZHk/LnRyaW0oKTtcclxuXHRcdGlmIChib2R5KSB7XHJcblx0XHRcdGNvbnN0IGlzSnNvbiA9IChib2R5LnN0YXJ0c1dpdGgoJ3snKSAmJiBib2R5LmVuZHNXaXRoKCd9JykpIHx8IChib2R5LnN0YXJ0c1dpdGgoJ1snKSAmJiBib2R5LmVuZHNXaXRoKCddJykpO1xyXG5cdFx0XHRpZiAoaXNKc29uKSBsaW5lcy5wdXNoKGAtSCAnQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uJ2ApO1xyXG5cdFx0XHRsaW5lcy5wdXNoKGAtZCAnJHtlc2NhcGUoYm9keSl9J2ApO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGxpbmVzLmpvaW4oJyBcXFxcXFxuICAnKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZmV0Y2godHJhY2VJZDogc3RyaW5nKTogdm9pZCB7XHJcblx0XHR0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xyXG5cdFx0dGhpcy5lcnJvck1lc3NhZ2Uuc2V0KHVuZGVmaW5lZCk7XHJcblx0XHR0aGlzLmFwaXNpeEhpdHMuc2V0KFtdKTtcclxuXHRcdHRoaXMudG90YWxJdGVtLnNldCgwKTtcclxuXHRcdHRoaXMucGFnZU51bWJlci5zZXQoMSk7XHJcblx0XHR0aGlzLmFwcExvZ3Muc2V0KFtdKTtcclxuXHRcdHRoaXMuYXBwTG9nc1RvdGFsLnNldCgwKTtcclxuXHRcdHRoaXMuYXBwTG9nc1BhZ2Uuc2V0KDEpO1xyXG5cdFx0dGhpcy5yZWZWYWx1ZXMuc2V0KHt9KTtcclxuXHRcdHRoaXMucmVxdWVzdC5uZXh0KHsgdHJhY2VJZCwgcGFnZU51bWJlcjogMSwgYXBwZW5kOiBmYWxzZSB9KTtcclxuXHRcdHRoaXMuYXBwTG9nc1JlcXVlc3QubmV4dCh7IHRyYWNlSWQsIHBhZ2VOdW1iZXI6IDEsIGFwcGVuZDogZmFsc2UgfSk7XHJcblx0XHR0aGlzLnJlZlZhbHVlc1JlcXVlc3QubmV4dCh0cmFjZUlkKTtcclxuXHR9XHJcblxyXG5cdHByb3RlY3RlZCBzdGF0dXNTZXZlcml0eShzdGF0dXM6IG51bWJlcik6IFNldmVyaXR5IHtcclxuXHRcdGlmIChzdGF0dXMgPj0gNTAwKSByZXR1cm4gJ2Rhbmdlcic7XHJcblx0XHRpZiAoc3RhdHVzID49IDQwMCkgcmV0dXJuICd3YXJuaW5nJztcclxuXHRcdGlmIChzdGF0dXMgPj0gMzAwKSByZXR1cm4gJ2luZm8nO1xyXG5cdFx0aWYgKHN0YXR1cyA+PSAyMDApIHJldHVybiAnc3VjY2Vzcyc7XHJcblx0XHRyZXR1cm4gJ3NlY29uZGFyeSc7XHJcblx0fVxyXG5cclxuXHRwcm90ZWN0ZWQgbGV2ZWxTZXZlcml0eShsZXZlbDogc3RyaW5nIHwgdW5kZWZpbmVkKTogU2V2ZXJpdHkge1xyXG5cdFx0c3dpdGNoICgobGV2ZWwgPz8gJycpLnRvVXBwZXJDYXNlKCkpIHtcclxuXHRcdFx0Y2FzZSAnRVJST1InOlxyXG5cdFx0XHRjYXNlICdGQVRBTCc6XHJcblx0XHRcdFx0cmV0dXJuICdkYW5nZXInO1xyXG5cdFx0XHRjYXNlICdXQVJOJzpcclxuXHRcdFx0Y2FzZSAnV0FSTklORyc6XHJcblx0XHRcdFx0cmV0dXJuICd3YXJuaW5nJztcclxuXHRcdFx0Y2FzZSAnSU5GTyc6XHJcblx0XHRcdFx0cmV0dXJuICdpbmZvJztcclxuXHRcdFx0Y2FzZSAnREVCVUcnOlxyXG5cdFx0XHRjYXNlICdUUkFDRSc6XHJcblx0XHRcdFx0cmV0dXJuICdzZWNvbmRhcnknO1xyXG5cdFx0XHRkZWZhdWx0OlxyXG5cdFx0XHRcdHJldHVybiAnc2Vjb25kYXJ5JztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByb3RlY3RlZCBkdXJhdGlvblNldmVyaXR5KHNlY29uZHM6IG51bWJlcik6IFNldmVyaXR5IHtcclxuXHRcdGNvbnN0IG1zID0gKHNlY29uZHMgPz8gMCkgKiAxMDAwO1xyXG5cdFx0aWYgKG1zID49IDEwMDApIHJldHVybiAnZGFuZ2VyJztcclxuXHRcdGlmIChtcyA+PSAyMDApIHJldHVybiAnd2FybmluZyc7XHJcblx0XHRyZXR1cm4gJ3N1Y2Nlc3MnO1xyXG5cdH1cclxuXHJcblx0cHJvdGVjdGVkIGZvcm1hdER1cmF0aW9uKHNlY29uZHM6IG51bWJlciB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XHJcblx0XHRpZiAoc2Vjb25kcyA9PT0gdW5kZWZpbmVkIHx8IHNlY29uZHMgPT09IG51bGwpIHJldHVybiAnJztcclxuXHRcdGNvbnN0IG1zID0gc2Vjb25kcyAqIDEwMDA7XHJcblx0XHRpZiAobXMgPCAxKSByZXR1cm4gYCR7bXMudG9GaXhlZCgyKX0gbXNgO1xyXG5cdFx0aWYgKG1zIDwgMTAwMCkgcmV0dXJuIGAke01hdGgucm91bmQobXMpfSBtc2A7XHJcblx0XHRyZXR1cm4gYCR7KG1zIC8gMTAwMCkudG9GaXhlZCgyKX0gc2A7XHJcblx0fVxyXG5cclxuXHRwcm90ZWN0ZWQgZm9ybWF0Qnl0ZXMoYnl0ZXM6IG51bWJlciB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XHJcblx0XHRpZiAoYnl0ZXMgPT09IHVuZGVmaW5lZCB8fCBieXRlcyA9PT0gbnVsbCkgcmV0dXJuICctJztcclxuXHRcdGlmIChieXRlcyA8IDEwMjQpIHJldHVybiBgJHtieXRlc30gQmA7XHJcblx0XHRpZiAoYnl0ZXMgPCAxMDI0ICogMTAyNCkgcmV0dXJuIGAkeyhieXRlcyAvIDEwMjQpLnRvRml4ZWQoMSl9IEtCYDtcclxuXHRcdHJldHVybiBgJHsoYnl0ZXMgLyAoMTAyNCAqIDEwMjQpKS50b0ZpeGVkKDEpfSBNQmA7XHJcblx0fVxyXG5cclxuXHRwcm90ZWN0ZWQgZm9ybWF0VGltZXN0YW1wKHRzOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xyXG5cdFx0aWYgKHRzID09PSB1bmRlZmluZWQgfHwgdHMgPT09IG51bGwgfHwgdHMgPT09ICcnKSByZXR1cm4gJyc7XHJcblx0XHRpZiAodHlwZW9mIHRzID09PSAnc3RyaW5nJykgcmV0dXJuIHRzO1xyXG5cdFx0Y29uc3QgcyA9IFN0cmluZyh0cyk7XHJcblx0XHRpZiAocy5sZW5ndGggPT09IDE0KSB7XHJcblx0XHRcdHJldHVybiBgJHtzLnNsaWNlKDgsIDEwKX06JHtzLnNsaWNlKDEwLCAxMil9OiR7cy5zbGljZSgxMiwgMTQpfSAke3Muc2xpY2UoNiwgOCl9LiR7cy5zbGljZSg0LCA2KX0uJHtzLnNsaWNlKDAsIDQpfWA7XHJcblx0XHR9XHJcblx0XHRpZiAodHMgPiAxZTExKSB7XHJcblx0XHRcdHJldHVybiBuZXcgRGF0ZSh0cykudG9Mb2NhbGVTdHJpbmcoKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBzO1xyXG5cdH1cclxuXHJcblx0cHJvdGVjdGVkIHRyeVBhcnNlSnNvbihjb250ZW50OiBzdHJpbmcgfCB1bmRlZmluZWQpOiB1bmtub3duIHtcclxuXHRcdGlmICghY29udGVudCkgcmV0dXJuIG51bGw7XHJcblx0XHRjb25zdCB0cmltbWVkID0gY29udGVudC50cmltKCk7XHJcblx0XHRpZiAoISgodHJpbW1lZC5zdGFydHNXaXRoKCd7JykgJiYgdHJpbW1lZC5lbmRzV2l0aCgnfScpKSB8fCAodHJpbW1lZC5zdGFydHNXaXRoKCdbJykgJiYgdHJpbW1lZC5lbmRzV2l0aCgnXScpKSkpIHtcclxuXHRcdFx0cmV0dXJuIG51bGw7XHJcblx0XHR9XHJcblx0XHR0cnkge1xyXG5cdFx0XHRyZXR1cm4gSlNPTi5wYXJzZSh0cmltbWVkKTtcclxuXHRcdH0gY2F0Y2gge1xyXG5cdFx0XHRyZXR1cm4gbnVsbDtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqdHJhbnNsb2NvPVwibGV0IHRcIj5cclxuXHQ8cC1zaWRlYmFyXHJcblx0XHRbdmlzaWJsZV09XCJ2aXNpYmxlKClcIlxyXG5cdFx0KHZpc2libGVDaGFuZ2UpPVwib25WaXNpYmxlQ2hhbmdlKCRldmVudClcIlxyXG5cdFx0W3Bvc2l0aW9uXT1cInBvc2l0aW9uKClcIlxyXG5cdFx0W3N0eWxlXT1cInsgd2lkdGg6IHdpZHRoKCkgfVwiXHJcblx0XHRbbW9kYWxdPVwibW9kYWwoKVwiXHJcblx0XHRbZGlzbWlzc2libGVdPVwidHJ1ZVwiXHJcblx0XHRbc2hvd0Nsb3NlSWNvbl09XCJ0cnVlXCJcclxuXHRcdHN0eWxlQ2xhc3M9XCJhcmlsLXRyYWNlLWRyYXdlclwiPlxyXG5cdFx0PG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiYXJpbC10cmFjZS1kcmF3ZXJfX2hlYWRlclwiPlxyXG5cdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktc2l0ZW1hcFwiPjwvaT5cclxuXHRcdFx0XHQ8c3BhbiBjbGFzcz1cImFyaWwtdHJhY2UtZHJhd2VyX190aXRsZVwiPnt7IHQoJ3RyYWNlRHJhd2VyLnRpdGxlJykgfX08L3NwYW4+XHJcblx0XHRcdFx0PGNvZGUgY2xhc3M9XCJhcmlsLXRyYWNlLWRyYXdlcl9fY2hpcFwiPnt7IHRyYWNlSWQoKSB9fTwvY29kZT5cclxuXHRcdFx0XHQ8aVxyXG5cdFx0XHRcdFx0cm9sZT1cImJ1dHRvblwiXHJcblx0XHRcdFx0XHRjbGFzcz1cInBpIHBpLXJlZnJlc2ggYXJpbC10cmFjZS1kcmF3ZXJfX3JlZnJlc2hcIlxyXG5cdFx0XHRcdFx0W2NsYXNzLnBpLXNwaW5dPVwibG9hZGluZygpXCJcclxuXHRcdFx0XHRcdFtwVG9vbHRpcF09XCJ0KCd0cmFjZURyYXdlci5yZWZyZXNoJylcIlxyXG5cdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCJcclxuXHRcdFx0XHRcdChjbGljayk9XCJyZWZyZXNoKClcIj48L2k+XHJcblx0XHRcdFx0PGlcclxuXHRcdFx0XHRcdHJvbGU9XCJidXR0b25cIlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJwaSBwaS1zaGFyZS1hbHQgYXJpbC10cmFjZS1kcmF3ZXJfX3NoYXJlXCJcclxuXHRcdFx0XHRcdFtwVG9vbHRpcF09XCJ0KCd0cmFjZURyYXdlci5zaGFyZUxpbmsnKVwiXHJcblx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJib3R0b21cIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cInNoYXJlTGluaygpXCI+PC9pPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvbmctdGVtcGxhdGU+XHJcblxyXG5cdFx0PGRpdiBjbGFzcz1cImFyaWwtdHJhY2UtZHJhd2VyX19ib2R5XCI+XHJcblx0XHRcdEBpZiAobG9hZGluZygpKSB7XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImFyaWwtdHJhY2UtZHJhd2VyX19zdGF0ZVwiPlxyXG5cdFx0XHRcdFx0PHAtcHJvZ3Jlc3NTcGlubmVyIHN0cm9rZVdpZHRoPVwiM1wiIHN0eWxlQ2xhc3M9XCJ3LTNyZW0gaC0zcmVtXCI+PC9wLXByb2dyZXNzU3Bpbm5lcj5cclxuXHRcdFx0XHRcdDxzcGFuPnt7IHQoJ3RyYWNlRHJhd2VyLmxvYWRpbmcnKSB9fTwvc3Bhbj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0fSBAZWxzZSBpZiAoZXJyb3JNZXNzYWdlKCkpIHtcclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiYXJpbC10cmFjZS1kcmF3ZXJfX3N0YXRlIGFyaWwtdHJhY2UtZHJhd2VyX19zdGF0ZS0tZXJyb3JcIj5cclxuXHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktZXhjbGFtYXRpb24tdHJpYW5nbGVcIj48L2k+XHJcblx0XHRcdFx0XHQ8cD57eyBlcnJvck1lc3NhZ2UoKSB9fTwvcD5cclxuXHRcdFx0XHRcdDxhcmlsLWJ1dHRvbiBbbGFiZWxdPVwidCgndHJhY2VEcmF3ZXIucmV0cnknKVwiIGljb249XCJSRUZSRVNIXCIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrRXZlbnQpPVwicmV0cnkoKVwiIC8+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdEBpZiAocmVmVmFsdWVFbnRyaWVzKCkubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHQ8c2VjdGlvbiBjbGFzcz1cImFyaWwtdHJhY2UtZHJhd2VyX19zZWN0aW9uXCI+XHJcblx0XHRcdFx0XHRcdDxoMyBjbGFzcz1cImFyaWwtdHJhY2UtZHJhd2VyX19zZWN0aW9uLXRpdGxlXCI+XHJcblx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJwaSBwaS10YWdzXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdHt7IHQoJ3RyYWNlRHJhd2VyLnJlZlZhbHVlc0hlYWRlcicpIH19XHJcblx0XHRcdFx0XHRcdFx0PGFyaWwtYmFkZ2UgW3ZhbHVlXT1cInJlZlZhbHVlRW50cmllcygpLmxlbmd0aC50b1N0cmluZygpXCIgW3JvdW5kZWRdPVwidHJ1ZVwiIC8+XHJcblx0XHRcdFx0XHRcdDwvaDM+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJyZWYtdmFsdWVzXCI+XHJcblx0XHRcdFx0XHRcdFx0QGZvciAoZW50cnkgb2YgcmVmVmFsdWVFbnRyaWVzKCk7IHRyYWNrIGVudHJ5WzBdKSB7XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicmVmLXZhbHVlc19fcm93XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwicmVmLXZhbHVlc19fa2V5XCI+e3sgZW50cnlbMF0gfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJyZWYtdmFsdWVzX19jaGlwc1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEBmb3IgKHZhbCBvZiBlbnRyeVsxXTsgdHJhY2sgdmFsKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8Y29kZSBjbGFzcz1cInJlZi12YWx1ZXNfX2NoaXBcIj57eyB2YWwgfX08L2NvZGU+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8L3NlY3Rpb24+XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdEBpZiAoYXBpc2l4SGl0cygpLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0PHNlY3Rpb24gY2xhc3M9XCJhcmlsLXRyYWNlLWRyYXdlcl9fc2VjdGlvblwiPlxyXG5cdFx0XHRcdFx0XHQ8aDMgY2xhc3M9XCJhcmlsLXRyYWNlLWRyYXdlcl9fc2VjdGlvbi10aXRsZVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktZ2xvYmVcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0e3sgdCgndHJhY2VEcmF3ZXIuYXBpc2l4SGVhZGVyJykgfX1cclxuXHRcdFx0XHRcdFx0XHQ8YXJpbC1iYWRnZSBbdmFsdWVdPVwiYXBpc2l4SGl0cygpLmxlbmd0aCArICcgLyAnICsgdG90YWxJdGVtKClcIiBbcm91bmRlZF09XCJ0cnVlXCIgLz5cclxuXHRcdFx0XHRcdFx0PC9oMz5cclxuXHRcdFx0XHRcdFx0QGZvciAoaGl0IG9mIGFwaXNpeEhpdHMoKTsgdHJhY2sgaGl0LmlkKSB7XHJcblx0XHRcdFx0XHRcdFx0PGRldGFpbHMgY2xhc3M9XCJ0cmFjZS1yb3cgdHJhY2Utcm93LS17eyBzdGF0dXNTZXZlcml0eShoaXQuc3RhdHVzKSB9fVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHN1bW1hcnkgY2xhc3M9XCJ0cmFjZS1yb3dfX3N1bW1hcnlcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJwaSBwaS1jaGV2cm9uLXJpZ2h0IHRyYWNlLXJvd19fY2hldnJvblwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGFyaWwtYmFkZ2UgW3ZhbHVlXT1cImhpdC5zdGF0dXMudG9TdHJpbmcoKVwiIFtzZXZlcml0eV09XCJzdGF0dXNTZXZlcml0eShoaXQuc3RhdHVzKVwiIC8+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidHJhY2Utcm93X190YWdcIj57eyBoaXQucmVxdWVzdE1ldGhvZCB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJ0cmFjZS1yb3dfX21haW5cIj57eyBoaXQucmVxdWVzdFVyaSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGFyaWwtYmFkZ2VcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRbdmFsdWVdPVwiZm9ybWF0RHVyYXRpb24oaGl0LnJlc3BvbnNlVGltZSlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFtzZXZlcml0eV09XCJkdXJhdGlvblNldmVyaXR5KGhpdC5yZXNwb25zZVRpbWUpXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0QGlmIChoaXQudGltZXN0YW1wKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJ0cmFjZS1yb3dfX3RpbWVcIj57eyBmb3JtYXRUaW1lc3RhbXAoaGl0LnRpbWVzdGFtcCkgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGlcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyb2xlPVwiYnV0dG9uXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInBpIHBpLWNvZGUgdHJhY2Utcm93X19hY3Rpb25cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCJ0KCd0cmFjZURyYXdlci5jb3B5Q3VybCcpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJsZWZ0XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2spPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgY29weUFzQ3VybChoaXQpXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9zdW1tYXJ5PlxyXG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRyYWNlLXJvd19fYm9keVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidHJhY2Utcm93X19tZXRhXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmIChoaXQucm91dGVOYW1lKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm1ldGEtbGFiZWxcIj57eyB0KCd0cmFjZURyYXdlci5yb3V0ZScpIH19PC9zcGFuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD48c3Bhbj57eyBoaXQucm91dGVOYW1lIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEBpZiAoaGl0LnNvdXJjZUFwcCB8fCBoaXQuc291cmNlTW9kdWxlKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm1ldGEtbGFiZWxcIj57eyB0KCd0cmFjZURyYXdlci5zb3VyY2UnKSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4+e3sgaGl0LnNvdXJjZUFwcCB9fXt7IGhpdC5zb3VyY2VNb2R1bGUgPyAnIC8gJyArIGhpdC5zb3VyY2VNb2R1bGUgOiAnJyB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGhpdC50YXJnZXRBcHAgfHwgaGl0LnRhcmdldE1vZHVsZSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJtZXRhLWxhYmVsXCI+e3sgdCgndHJhY2VEcmF3ZXIudGFyZ2V0JykgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuPnt7IGhpdC50YXJnZXRBcHAgfX17eyBoaXQudGFyZ2V0TW9kdWxlID8gJyAvICcgKyBoaXQudGFyZ2V0TW9kdWxlIDogJycgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmIChoaXQudXBzdHJlYW1Ib3N0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm1ldGEtbGFiZWxcIj57eyB0KCd0cmFjZURyYXdlci51cHN0cmVhbScpIH19PC9zcGFuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD48c3Bhbj57eyBoaXQudXBzdHJlYW1Ib3N0IH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEBpZiAoaGl0LnVzZXJuYW1lKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm1ldGEtbGFiZWxcIj57eyB0KCd0cmFjZURyYXdlci51c2VyJykgfX08L3NwYW5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PjxzcGFuPnt7IGhpdC51c2VybmFtZSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGhpdC5yZXF1ZXN0U2l6ZSAhPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm1ldGEtbGFiZWxcIj57eyB0KCd0cmFjZURyYXdlci5yZXF1ZXN0U2l6ZScpIH19PC9zcGFuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD48c3Bhbj57eyBmb3JtYXRCeXRlcyhoaXQucmVxdWVzdFNpemUpIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEBpZiAoaGl0LnJlc3BvbnNlU2l6ZSAhPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm1ldGEtbGFiZWxcIj57eyB0KCd0cmFjZURyYXdlci5yZXNwb25zZVNpemUnKSB9fTwvc3BhblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+PHNwYW4+e3sgZm9ybWF0Qnl0ZXMoaGl0LnJlc3BvbnNlU2l6ZSkgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGhpdC5yZXF1ZXN0Qm9keSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxkZXRhaWxzIGNsYXNzPVwidHJhY2Utcm93X19zdWJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzdW1tYXJ5Pnt7IHQoJ3RyYWNlRHJhd2VyLnJlcXVlc3RCb2R5JykgfX08L3N1bW1hcnk+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYgKHRyeVBhcnNlSnNvbihoaXQucmVxdWVzdEJvZHkpOyBhcyBwYXJzZWQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHByZT57eyBwYXJzZWQgfCBqc29uIH19PC9wcmU+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHByZT57eyBoaXQucmVxdWVzdEJvZHkgfX08L3ByZT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2RldGFpbHM+XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0QGlmIChoaXQucmVzcG9uc2VCb2R5KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRldGFpbHMgY2xhc3M9XCJ0cmFjZS1yb3dfX3N1YlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHN1bW1hcnk+e3sgdCgndHJhY2VEcmF3ZXIucmVzcG9uc2VCb2R5JykgfX08L3N1bW1hcnk+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYgKHRyeVBhcnNlSnNvbihoaXQucmVzcG9uc2VCb2R5KTsgYXMgcGFyc2VkKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxwcmU+e3sgcGFyc2VkIHwganNvbiB9fTwvcHJlPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxwcmU+e3sgaGl0LnJlc3BvbnNlQm9keSB9fTwvcHJlPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGV0YWlscz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9kZXRhaWxzPlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdEBpZiAoaGFzTW9yZSgpKSB7XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImFyaWwtdHJhY2UtZHJhd2VyX19sb2FkLW1vcmVcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxhcmlsLWJ1dHRvblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRbbGFiZWxdPVwidCgndHJhY2VEcmF3ZXIubG9hZE1vcmUnKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdGljb249XCJDSEVWUk9OX0RPV05cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRjb2xvcj1cInByaW1hcnlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRbb3V0bGluZWRdPVwidHJ1ZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFtsb2FkaW5nXT1cImxvYWRpbmdNb3JlKClcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRbZGlzYWJsZWRdPVwibG9hZGluZ01vcmUoKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdChjbGlja0V2ZW50KT1cImxvYWRNb3JlKClcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQ8L3NlY3Rpb24+XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdEBpZiAoYXBwTG9ncygpLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0PHNlY3Rpb24gY2xhc3M9XCJhcmlsLXRyYWNlLWRyYXdlcl9fc2VjdGlvblwiPlxyXG5cdFx0XHRcdFx0XHQ8aDMgY2xhc3M9XCJhcmlsLXRyYWNlLWRyYXdlcl9fc2VjdGlvbi10aXRsZVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktbGlzdFwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHR7eyB0KCd0cmFjZURyYXdlci5hcHBMb2dzSGVhZGVyJykgfX1cclxuXHRcdFx0XHRcdFx0XHQ8YXJpbC1iYWRnZSBbdmFsdWVdPVwiYXBwTG9ncygpLmxlbmd0aCArICcgLyAnICsgYXBwTG9nc1RvdGFsKClcIiBbcm91bmRlZF09XCJ0cnVlXCIgLz5cclxuXHRcdFx0XHRcdFx0PC9oMz5cclxuXHRcdFx0XHRcdFx0QGZvciAobG9nIG9mIGFwcExvZ3MoKTsgdHJhY2sgbG9nLmlkKSB7XHJcblx0XHRcdFx0XHRcdFx0PGRldGFpbHMgY2xhc3M9XCJ0cmFjZS1yb3cgdHJhY2Utcm93LS17eyBsZXZlbFNldmVyaXR5KGxvZy5sZXZlbCkgfX1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxzdW1tYXJ5IGNsYXNzPVwidHJhY2Utcm93X19zdW1tYXJ5XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktY2hldnJvbi1yaWdodCB0cmFjZS1yb3dfX2NoZXZyb25cIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHRcdEBpZiAobG9nLmxldmVsKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGFyaWwtYmFkZ2UgW3ZhbHVlXT1cImxvZy5sZXZlbFwiIFtzZXZlcml0eV09XCJsZXZlbFNldmVyaXR5KGxvZy5sZXZlbClcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdEBpZiAobG9nLm1vZHVsZSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidHJhY2Utcm93X190YWdcIj57eyBsb2cubW9kdWxlIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidHJhY2Utcm93X19tYWluXCI+e3sgbG9nLm1lc3NhZ2UgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdEBpZiAobG9nLnRpbWVzdGFtcCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidHJhY2Utcm93X190aW1lXCI+e3sgZm9ybWF0VGltZXN0YW1wKGxvZy50aW1lc3RhbXApIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3N1bW1hcnk+XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidHJhY2Utcm93X19ib2R5XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdEBpZiAobG9nLm1lc3NhZ2UpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidHJhY2Utcm93X19tZXNzYWdlXCI+e3sgbG9nLm1lc3NhZ2UgfX08L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGxvZy51c2VybmFtZSB8fCBsb2cuYXBwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRyYWNlLXJvd19fbWV0YVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmIChsb2cuYXBwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJtZXRhLWxhYmVsXCI+e3sgdCgndHJhY2VEcmF3ZXIudGFyZ2V0JykgfX08L3NwYW5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+PHNwYW4+e3sgbG9nLmFwcCB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGxvZy51c2VybmFtZSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibWV0YS1sYWJlbFwiPnt7IHQoJ3RyYWNlRHJhd2VyLnVzZXInKSB9fTwvc3BhblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD48c3Bhbj57eyBsb2cudXNlcm5hbWUgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdEBpZiAobG9nLmVycm9yRGV0YWlsKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRldGFpbHMgY2xhc3M9XCJ0cmFjZS1yb3dfX3N1YlwiIG9wZW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3VtbWFyeT57eyB0KCd0cmFjZURyYXdlci5hcHBMb2dFcnJvckRldGFpbCcpIH19PC9zdW1tYXJ5PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHByZT57eyBsb2cuZXJyb3JEZXRhaWwgfX08L3ByZT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2RldGFpbHM+XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0QGlmIChsb2cucmVmZXJlbmNlRmllbGRzPy5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGV0YWlscyBjbGFzcz1cInRyYWNlLXJvd19fc3ViXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3VtbWFyeT57eyB0KCd0cmFjZURyYXdlci5hcHBMb2dSZWZGaWVsZHMnKSB9fTwvc3VtbWFyeT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0cmFjZS1yb3dfX21ldGFcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGZvciAocmYgb2YgbG9nLnJlZmVyZW5jZUZpZWxkczsgdHJhY2sgcmYuZmllbGQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJtZXRhLWxhYmVsXCI+e3sgcmYuZmllbGQgfX08L3NwYW5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD48c3Bhbj57eyByZi52YWx1ZSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kZXRhaWxzPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8L2RldGFpbHM+XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0QGlmIChhcHBMb2dzSGFzTW9yZSgpKSB7XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImFyaWwtdHJhY2UtZHJhd2VyX19sb2FkLW1vcmVcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxhcmlsLWJ1dHRvblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRbbGFiZWxdPVwidCgndHJhY2VEcmF3ZXIubG9hZE1vcmUnKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdGljb249XCJDSEVWUk9OX0RPV05cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRjb2xvcj1cInByaW1hcnlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRbb3V0bGluZWRdPVwidHJ1ZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFtsb2FkaW5nXT1cImFwcExvZ3NMb2FkaW5nTW9yZSgpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0W2Rpc2FibGVkXT1cImFwcExvZ3NMb2FkaW5nTW9yZSgpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrRXZlbnQpPVwibG9hZE1vcmVBcHBMb2dzKClcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQ8L3NlY3Rpb24+XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdEBpZiAoIWFwaXNpeEhpdHMoKS5sZW5ndGggJiYgIWFwcExvZ3MoKS5sZW5ndGggJiYgIXJlZlZhbHVlRW50cmllcygpLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImFyaWwtdHJhY2UtZHJhd2VyX19zdGF0ZVwiPlxyXG5cdFx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWluYm94XCI+PC9pPlxyXG5cdFx0XHRcdFx0XHQ8cD57eyB0KCd0cmFjZURyYXdlci5lbXB0eScpIH19PC9wPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L3Atc2lkZWJhcj5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
294
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2UtZHJhd2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWktYnVzaW5lc3MvdHJhY2UtZHJhd2VyL3NyYy90cmFjZS1kcmF3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS1idXNpbmVzcy90cmFjZS1kcmF3ZXIvc3JjL3RyYWNlLWRyYXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEksT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXRELE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWxFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxN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QyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM1RyxJQUFJLE1BQU07Z0JBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1lBQzlELEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVPLEtBQUssQ0FBQyxPQUFlO1FBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMs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Q0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1IsT0FBTyxJQUFJLENBQUM7UUFDYixDQUFDO0lBQ0YsQ0FBQzs4R0FqVFcsb0JBQW9CO2tHQUFwQixvQkFBb0IscW5DQ2pDakMsZ3lYQXNRQSx5dU1EeE9XLFFBQVEsNENBQUUsZUFBZSxnT0FBRSxhQUFhLG1kQUFFLHFCQUFxQix3TUFBRSxhQUFhLHNYQUFFLGNBQWMsd0xBQUUsZUFBZTs7MkZBRzdHLG9CQUFvQjtrQkFSaEMsU0FBUztpQ0FDRyxJQUFJLFlBQ04sbUJBQW1CLFdBR3BCLENBQUMsUUFBUSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxlQUFlLENBQUMsbUJBQ3pHLHVCQUF1QixDQUFDLE1BQU07d0RBa0JyQyxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSnNvblBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmltcG9ydCB7IEVNUFRZLCBTdWJqZWN0LCBjYXRjaEVycm9yLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Byb2dyZXNzc3Bpbm5lcic7XG5pbXBvcnQgeyBTaWRlYmFyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9zaWRlYmFyJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xuXG5pbXBvcnQgeyBUcmFuc2xvY29Nb2R1bGUsIFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XG5pbXBvcnQgeyBLZXljbG9ha1NlcnZpY2UgfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG5pbXBvcnQgeyBCYWRnZUNvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvYmFkZ2UnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnYXJpbC91aS9idXR0b24nO1xuaW1wb3J0ICdhcmlsL3V0aWwvcHJpbWl0aXZlLWV4dGVuc2lvbnMnO1xuXG5pbXBvcnQgeyBBcHBMb2dTZXJ2aWNlIH0gZnJvbSAnLi9hcHAtbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBpc2l4SGl0LCBBcHBMb2dJdGVtLCBBcHBMb2dSZWZWYWx1ZXMgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVHJhY2VMb2dTZXJ2aWNlIH0gZnJvbSAnLi90cmFjZS1sb2cuc2VydmljZSc7XG5cbnR5cGUgUG9zaXRpb24gPSAncmlnaHQnIHwgJ2xlZnQnO1xudHlwZSBTZXZlcml0eSA9ICdzdWNjZXNzJyB8ICdzZWNvbmRhcnknIHwgJ2luZm8nIHwgJ3dhcm5pbmcnIHwgJ2RhbmdlcicgfCAnY29udHJhc3QnIHwgdW5kZWZpbmVkO1xuXG5AQ29tcG9uZW50KHtcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0c2VsZWN0b3I6ICdhcmlsLXRyYWNlLWRyYXdlcicsXG5cdHRlbXBsYXRlVXJsOiAnLi90cmFjZS1kcmF3ZXIuY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybHM6IFsnLi90cmFjZS1kcmF3ZXIuY29tcG9uZW50LnNjc3MnXSxcblx0aW1wb3J0czogW0pzb25QaXBlLCBUcmFuc2xvY29Nb2R1bGUsIFNpZGViYXJNb2R1bGUsIFByb2dyZXNzU3Bpbm5lck1vZHVsZSwgVG9vbHRpcE1vZHVsZSwgQmFkZ2VDb21wb25lbnQsIEJ1dHRvbkNvbXBvbmVudF0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRyYWNlRHJhd2VyQ29tcG9uZW50IHtcblx0cHJpdmF0ZSByZWFkb25seSB0cmFjZUxvZ1NlcnZpY2UgPSBpbmplY3QoVHJhY2VMb2dTZXJ2aWNlKTtcblx0cHJpdmF0ZSByZWFkb25seSBhcHBMb2dTZXJ2aWNlID0gaW5qZWN0KEFwcExvZ1NlcnZpY2UpO1xuXHRwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VTZXJ2aWNlID0gaW5qZWN0KE1lc3NhZ2VTZXJ2aWNlKTtcblx0cHJpdmF0ZSByZWFkb25seSB0cmFuc2xvY29TZXJ2aWNlID0gaW5qZWN0KFRyYW5zbG9jb1NlcnZpY2UpO1xuXHRwcml2YXRlIHJlYWRvbmx5IGtleWNsb2FrU2VydmljZSA9IGluamVjdChLZXljbG9ha1NlcnZpY2UpO1xuXG5cdHZpc2libGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cdHRyYWNlSWQgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG5cdHBvc2l0aW9uID0gaW5wdXQ8UG9zaXRpb24+KCdyaWdodCcpO1xuXHR3aWR0aCA9IGlucHV0PHN0cmluZz4oJ21pbig2ODBweCwgOTB2dyknKTtcblx0bW9kYWwgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cdHBhZ2VTaXplID0gaW5wdXQ8bnVtYmVyPigxMCk7XG5cdHN0YXJ0VGltZSA9IGlucHV0PG51bWJlciB8IHVuZGVmaW5lZD4oKTtcblx0ZW5kVGltZSA9IGlucHV0PG51bWJlciB8IHVuZGVmaW5lZD4oKTtcblxuXHRAT3V0cHV0KCkgdmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgbG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG5cdHByb3RlY3RlZCByZWFkb25seSBsb2FkaW5nTW9yZSA9IHNpZ25hbChmYWxzZSk7XG5cdHByb3RlY3RlZCByZWFkb25seSBlcnJvck1lc3NhZ2UgPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgYXBpc2l4SGl0cyA9IHNpZ25hbDxBcGlzaXhIaXRbXT4oW10pO1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgdG90YWxJdGVtID0gc2lnbmFsKDApO1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgcGFnZU51bWJlciA9IHNpZ25hbCgxKTtcblxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwTG9ncyA9IHNpZ25hbDxBcHBMb2dJdGVtW10+KFtdKTtcblx0cHJvdGVjdGVkIHJlYWRvbmx5IGFwcExvZ3NMb2FkaW5nTW9yZSA9IHNpZ25hbChmYWxzZSk7XG5cdHByb3RlY3RlZCByZWFkb25seSBhcHBMb2dzVG90YWwgPSBzaWduYWwoMCk7XG5cdHByb3RlY3RlZCByZWFkb25seSBhcHBMb2dzUGFnZSA9IHNpZ25hbCgxKTtcblxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgcmVmVmFsdWVzID0gc2lnbmFsPEFwcExvZ1JlZlZhbHVlcz4oe30pO1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgcmVmVmFsdWVFbnRyaWVzID0gY29tcHV0ZWQoKCkgPT5cblx0XHRPYmplY3QuZW50cmllcyh0aGlzLnJlZlZhbHVlcygpKS5maWx0ZXIoKFssIHZhbHVlc10pID0+IHZhbHVlcz8ubGVuZ3RoKVxuXHQpO1xuXG5cdHByb3RlY3RlZCByZWFkb25seSBoYXNNb3JlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hcGlzaXhIaXRzKCkubGVuZ3RoIDwgdGhpcy50b3RhbEl0ZW0oKSk7XG5cdHByb3RlY3RlZCByZWFkb25seSBhcHBMb2dzSGFzTW9yZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYXBwTG9ncygpLmxlbmd0aCA8IHRoaXMuYXBwTG9nc1RvdGFsKCkpO1xuXG5cdHByaXZhdGUgcmVhZG9ubHkgcmVxdWVzdCA9IG5ldyBTdWJqZWN0PHsgdHJhY2VJZDogc3RyaW5nOyBwYWdlTnVtYmVyOiBudW1iZXI7IGFwcGVuZDogYm9vbGVhbiB9PigpO1xuXHRwcml2YXRlIHJlYWRvbmx5IGFwcExvZ3NSZXF1ZXN0ID0gbmV3IFN1YmplY3Q8eyB0cmFjZUlkOiBzdHJpbmc7IHBhZ2VOdW1iZXI6IG51bWJlcjsgYXBwZW5kOiBib29sZWFuIH0+KCk7XG5cdHByaXZhdGUgcmVhZG9ubHkgcmVmVmFsdWVzUmVxdWVzdCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblx0cHJpdmF0ZSByZWFkb25seSByZXNwb25zZSA9IHRvU2lnbmFsKFxuXHRcdHRoaXMucmVxdWVzdC5waXBlKFxuXHRcdFx0c3dpdGNoTWFwKChyZXEpID0+XG5cdFx0XHRcdHRoaXMudHJhY2VMb2dTZXJ2aWNlXG5cdFx0XHRcdFx0LnNlYXJjaEJ5VHJhY2VJZCh7XG5cdFx0XHRcdFx0XHR0cmFjZUlkOiByZXEudHJhY2VJZCxcblx0XHRcdFx0XHRcdHN0YXJ0VGltZTogdGhpcy5zdGFydFRpbWUoKSA/PyAyMDAwMDEwMTAwMDAwMCxcblx0XHRcdFx0XHRcdGVuZFRpbWU6IHRoaXMuZW5kVGltZSgpID8/IChuZXcgRGF0ZSgpLmRhdGVUb0xvbmcoJ3RpbWUnKSA/PyA5OTk5MTIzMTIzNTk1OSksXG5cdFx0XHRcdFx0XHRwYWdlcjogeyBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSgpLCBwYWdlTnVtYmVyOiByZXEucGFnZU51bWJlciB9XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQucGlwZShcblx0XHRcdFx0XHRcdG1hcCgocmVzcCkgPT4gKHsgcmVzcCwgYXBwZW5kOiByZXEuYXBwZW5kIH0pKSxcblx0XHRcdFx0XHRcdGNhdGNoRXJyb3IoKGVycikgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmVycm9yTWVzc2FnZS5zZXQoZXJyPy5lcnJvcj8ubWVzc2FnZSA/PyBlcnI/Lm1lc3NhZ2UgPz8gJ8Swc3RlayBiYcWfYXLEsXPEsXogb2xkdScpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5sb2FkaW5nTW9yZS5zZXQoZmFsc2UpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gRU1QVFk7XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdClcblx0XHRcdClcblx0XHQpXG5cdCk7XG5cblx0cHJpdmF0ZSByZWFkb25seSBhcHBMb2dzUmVzcG9uc2UgPSB0b1NpZ25hbChcblx0XHR0aGlzLmFwcExvZ3NSZXF1ZXN0LnBpcGUoXG5cdFx0XHRzd2l0Y2hNYXAoKHJlcSkgPT5cblx0XHRcdFx0dGhpcy5hcHBMb2dTZXJ2aWNlXG5cdFx0XHRcdFx0LnNlYXJjaEJ5VHJhY2VJZCh7XG5cdFx0XHRcdFx0XHR0cmFjZUlkOiByZXEudHJhY2VJZCxcblx0XHRcdFx0XHRcdHN0YXJ0VGltZTogdGhpcy5zdGFydFRpbWUoKSA/PyAyMDAwMDEwMTAwMDAwMCxcblx0XHRcdFx0XHRcdGVuZFRpbWU6IHRoaXMuZW5kVGltZSgpID8/IChuZXcgRGF0ZSgpLmRhdGVUb0xvbmcoJ3RpbWUnKSA/PyA5OTk5MTIzMTIzNTk1OSksXG5cdFx0XHRcdFx0XHRwYWdlcjogeyBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSgpLCBwYWdlTnVtYmVyOiByZXEucGFnZU51bWJlciB9XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQucGlwZShcblx0XHRcdFx0XHRcdG1hcCgocmVzcCkgPT4gKHsgcmVzcCwgYXBwZW5kOiByZXEuYXBwZW5kIH0pKSxcblx0XHRcdFx0XHRcdGNhdGNoRXJyb3IoKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmFwcExvZ3NMb2FkaW5nTW9yZS5zZXQoZmFsc2UpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gRU1QVFk7XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdClcblx0XHRcdClcblx0XHQpXG5cdCk7XG5cblx0cHJpdmF0ZSByZWFkb25seSByZWZWYWx1ZXNSZXNwb25zZSA9IHRvU2lnbmFsKFxuXHRcdHRoaXMucmVmVmFsdWVzUmVxdWVzdC5waXBlKFxuXHRcdFx0c3dpdGNoTWFwKCh0cmFjZUlkKSA9PlxuXHRcdFx0XHR0aGlzLmFwcExvZ1NlcnZpY2UuZ2V0UmVmVmFsdWVzKHsgdHJhY2VJZCB9KS5waXBlKFxuXHRcdFx0XHRcdGNhdGNoRXJyb3IoKCkgPT4gRU1QVFkpXG5cdFx0XHRcdClcblx0XHRcdClcblx0XHQpXG5cdCk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZWZmZWN0KFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRpZiAodGhpcy52aXNpYmxlKCkgJiYgdGhpcy50cmFjZUlkKCkpIHtcblx0XHRcdFx0XHR0aGlzLmZldGNoKHRoaXMudHJhY2VJZCgpKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuXHRcdCk7XG5cblx0XHRlZmZlY3QoXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHdyYXBwZWQgPSB0aGlzLnJlc3BvbnNlKCk7XG5cdFx0XHRcdGlmICghd3JhcHBlZCkgcmV0dXJuO1xuXHRcdFx0XHRjb25zdCByZXN1bHQgPSB3cmFwcGVkLnJlc3AucmVzcG9uc2U/LnJlc3VsdCA/PyBbXTtcblx0XHRcdFx0Y29uc3QgdG90YWwgPSB3cmFwcGVkLnJlc3AucmVzcG9uc2U/LnJlc3VsdEluZm8/LnRvdGFsSXRlbSA/PyAwO1xuXHRcdFx0XHR0aGlzLmFwaXNpeEhpdHMudXBkYXRlKChwcmV2KSA9PiAod3JhcHBlZC5hcHBlbmQgPyBbLi4ucHJldiwgLi4ucmVzdWx0XSA6IHJlc3VsdCkpO1xuXHRcdFx0XHR0aGlzLnRvdGFsSXRlbS5zZXQodG90YWwpO1xuXHRcdFx0XHR0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcblx0XHRcdFx0dGhpcy5sb2FkaW5nTW9yZS5zZXQoZmFsc2UpO1xuXHRcdFx0XHR0aGlzLmVycm9yTWVzc2FnZS5zZXQodW5kZWZpbmVkKTtcblx0XHRcdH0sXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cblx0XHQpO1xuXG5cdFx0ZWZmZWN0KFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRjb25zdCB3cmFwcGVkID0gdGhpcy5hcHBMb2dzUmVzcG9uc2UoKTtcblx0XHRcdFx0aWYgKCF3cmFwcGVkKSByZXR1cm47XG5cdFx0XHRcdGNvbnN0IHJlc3VsdCA9IHdyYXBwZWQucmVzcC5yZXNwb25zZT8ucmVzdWx0ID8/IFtdO1xuXHRcdFx0XHRjb25zdCB0b3RhbCA9IHdyYXBwZWQucmVzcC5yZXNwb25zZT8ucmVzdWx0SW5mbz8udG90YWxJdGVtID8/IDA7XG5cdFx0XHRcdHRoaXMuYXBwTG9ncy51cGRhdGUoKHByZXYpID0+ICh3cmFwcGVkLmFwcGVuZCA/IFsuLi5wcmV2LCAuLi5yZXN1bHRdIDogcmVzdWx0KSk7XG5cdFx0XHRcdHRoaXMuYXBwTG9nc1RvdGFsLnNldCh0b3RhbCk7XG5cdFx0XHRcdHRoaXMuYXBwTG9nc0xvYWRpbmdNb3JlLnNldChmYWxzZSk7XG5cdFx0XHR9LFxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG5cdFx0KTtcblxuXHRcdGVmZmVjdChcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0Y29uc3Qgd3JhcHBlZCA9IHRoaXMucmVmVmFsdWVzUmVzcG9uc2UoKTtcblx0XHRcdFx0aWYgKCF3cmFwcGVkKSByZXR1cm47XG5cdFx0XHRcdHRoaXMucmVmVmFsdWVzLnNldCh3cmFwcGVkLnJlc3BvbnNlID8/IHt9KTtcblx0XHRcdH0sXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cblx0XHQpO1xuXHR9XG5cblx0cHJvdGVjdGVkIGxvYWRNb3JlKCk6IHZvaWQge1xuXHRcdGNvbnN0IGlkID0gdGhpcy50cmFjZUlkKCk7XG5cdFx0aWYgKCFpZCB8fCB0aGlzLmxvYWRpbmdNb3JlKCkgfHwgIXRoaXMuaGFzTW9yZSgpKSByZXR1cm47XG5cdFx0Y29uc3QgbmV4dCA9IHRoaXMucGFnZU51bWJlcigpICsgMTtcblx0XHR0aGlzLnBhZ2VOdW1iZXIuc2V0KG5leHQpO1xuXHRcdHRoaXMubG9hZGluZ01vcmUuc2V0KHRydWUpO1xuXHRcdHRoaXMucmVxdWVzdC5uZXh0KHsgdHJhY2VJZDogaWQsIHBhZ2VOdW1iZXI6IG5leHQsIGFwcGVuZDogdHJ1ZSB9KTtcblx0fVxuXG5cdHByb3RlY3RlZCBsb2FkTW9yZUFwcExvZ3MoKTogdm9pZCB7XG5cdFx0Y29uc3QgaWQgPSB0aGlzLnRyYWNlSWQoKTtcblx0XHRpZiAoIWlkIHx8IHRoaXMuYXBwTG9nc0xvYWRpbmdNb3JlKCkgfHwgIXRoaXMuYXBwTG9nc0hhc01vcmUoKSkgcmV0dXJuO1xuXHRcdGNvbnN0IG5leHQgPSB0aGlzLmFwcExvZ3NQYWdlKCkgKyAxO1xuXHRcdHRoaXMuYXBwTG9nc1BhZ2Uuc2V0KG5leHQpO1xuXHRcdHRoaXMuYXBwTG9nc0xvYWRpbmdNb3JlLnNldCh0cnVlKTtcblx0XHR0aGlzLmFwcExvZ3NSZXF1ZXN0Lm5leHQoeyB0cmFjZUlkOiBpZCwgcGFnZU51bWJlcjogbmV4dCwgYXBwZW5kOiB0cnVlIH0pO1xuXHR9XG5cblx0cHJvdGVjdGVkIG9uVmlzaWJsZUNoYW5nZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuXHRcdHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KHZhbHVlKTtcblx0fVxuXG5cdHByb3RlY3RlZCByZXRyeSgpOiB2b2lkIHtcblx0XHRjb25zdCBpZCA9IHRoaXMudHJhY2VJZCgpO1xuXHRcdGlmIChpZCkgdGhpcy5mZXRjaChpZCk7XG5cdH1cblxuXHRwcm90ZWN0ZWQgcmVmcmVzaCgpOiB2b2lkIHtcblx0XHRjb25zdCBpZCA9IHRoaXMudHJhY2VJZCgpO1xuXHRcdGlmICghaWQgfHwgdGhpcy5sb2FkaW5nKCkpIHJldHVybjtcblx0XHR0aGlzLmZldGNoKGlkKTtcblx0fVxuXG5cdHByb3RlY3RlZCBzaGFyZUxpbmsoKTogdm9pZCB7XG5cdFx0Y29uc3QgaWQgPSB0aGlzLnRyYWNlSWQoKTtcblx0XHRpZiAoIWlkKSByZXR1cm47XG5cdFx0Y29uc3QgYmFzZSA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCc/JylbMF07XG5cdFx0Y29uc3QgdXJsID0gYCR7YmFzZX0/dHJhY2VJZD0ke2VuY29kZVVSSUNvbXBvbmVudChpZCl9YDtcblx0XHRuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh1cmwpLnRoZW4oKCkgPT4ge1xuXHRcdFx0dGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xuXHRcdFx0XHRzZXZlcml0eTogJ3N1Y2Nlc3MnLFxuXHRcdFx0XHRzdW1tYXJ5OiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCd0cmFjZURyYXdlci5saW5rQ29waWVkJyksXG5cdFx0XHRcdGtleTogJ3RvYXN0LXJvb3QnXG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cdHByb3RlY3RlZCBhc3luYyBjb3B5QXNDdXJsKGhpdDogQXBpc2l4SGl0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgdG9rZW4gPSBhd2FpdCB0aGlzLmtleWNsb2FrU2VydmljZS5nZXRUb2tlbigpLmNhdGNoKCgpID0+ICcnKTtcblx0XHRjb25zdCBjbWQgPSB0aGlzLmJ1aWxkQ3VybChoaXQsIHRva2VuKTtcblx0XHRhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChjbWQpO1xuXHRcdHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcblx0XHRcdHNldmVyaXR5OiAnc3VjY2VzcycsXG5cdFx0XHRzdW1tYXJ5OiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCd0cmFjZURyYXdlci5jdXJsQ29waWVkJyksXG5cdFx0XHRrZXk6ICd0b2FzdC1yb290J1xuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBidWlsZEN1cmwoaGl0OiBBcGlzaXhIaXQsIHRva2VuOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdGNvbnN0IG1ldGhvZCA9IChoaXQucmVxdWVzdE1ldGhvZCA/PyAnR0VUJykudG9VcHBlckNhc2UoKTtcblx0XHRjb25zdCBob3N0ID0gaGl0LnVwc3RyZWFtSG9zdCA/IGhpdC51cHN0cmVhbUhvc3QucmVwbGFjZSgvXFwvKyQvLCAnJykgOiAnJztcblx0XHRjb25zdCB1cmkgPSBoaXQucmVxdWVzdFVyaSA/PyAnJztcblx0XHRjb25zdCB1cmwgPSBob3N0ID8gKGhvc3Quc3RhcnRzV2l0aCgnaHR0cCcpID8gYCR7aG9zdH0ke3VyaX1gIDogYGh0dHBzOi8vJHtob3N0fSR7dXJpfWApIDogdXJpO1xuXHRcdGNvbnN0IGVzY2FwZSA9IChzOiBzdHJpbmcpID0+IHMucmVwbGFjZSgvJy9nLCBgJ1xcXFwnJ2ApO1xuXHRcdGNvbnN0IGxpbmVzID0gW2BjdXJsIC1YICR7bWV0aG9kfSAnJHtlc2NhcGUodXJsKX0nYF07XG5cdFx0aWYgKHRva2VuKSBsaW5lcy5wdXNoKGAtSCAnQXV0aG9yaXphdGlvbjogQmVhcmVyICR7ZXNjYXBlKHRva2VuKX0nYCk7XG5cdFx0Y29uc3QgYm9keSA9IGhpdC5yZXF1ZXN0Qm9keT8udHJpbSgpO1xuXHRcdGlmIChib2R5KSB7XG5cdFx0XHRjb25zdCBpc0pzb24gPSAoYm9keS5zdGFydHNXaXRoKCd7JykgJiYgYm9keS5lbmRzV2l0aCgnfScpKSB8fCAoYm9keS5zdGFydHNXaXRoKCdbJykgJiYgYm9keS5lbmRzV2l0aCgnXScpKTtcblx0XHRcdGlmIChpc0pzb24pIGxpbmVzLnB1c2goYC1IICdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24nYCk7XG5cdFx0XHRsaW5lcy5wdXNoKGAtZCAnJHtlc2NhcGUoYm9keSl9J2ApO1xuXHRcdH1cblx0XHRyZXR1cm4gbGluZXMuam9pbignIFxcXFxcXG4gICcpO1xuXHR9XG5cblx0cHJpdmF0ZSBmZXRjaCh0cmFjZUlkOiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuXHRcdHRoaXMuZXJyb3JNZXNzYWdlLnNldCh1bmRlZmluZWQpO1xuXHRcdHRoaXMuYXBpc2l4SGl0cy5zZXQoW10pO1xuXHRcdHRoaXMudG90YWxJdGVtLnNldCgwKTtcblx0XHR0aGlzLnBhZ2VOdW1iZXIuc2V0KDEpO1xuXHRcdHRoaXMuYXBwTG9ncy5zZXQoW10pO1xuXHRcdHRoaXMuYXBwTG9nc1RvdGFsLnNldCgwKTtcblx0XHR0aGlzLmFwcExvZ3NQYWdlLnNldCgxKTtcblx0XHR0aGlzLnJlZlZhbHVlcy5zZXQoe30pO1xuXHRcdHRoaXMucmVxdWVzdC5uZXh0KHsgdHJhY2VJZCwgcGFnZU51bWJlcjogMSwgYXBwZW5kOiBmYWxzZSB9KTtcblx0XHR0aGlzLmFwcExvZ3NSZXF1ZXN0Lm5leHQoeyB0cmFjZUlkLCBwYWdlTnVtYmVyOiAxLCBhcHBlbmQ6IGZhbHNlIH0pO1xuXHRcdHRoaXMucmVmVmFsdWVzUmVxdWVzdC5uZXh0KHRyYWNlSWQpO1xuXHR9XG5cblx0cHJvdGVjdGVkIHN0YXR1c1NldmVyaXR5KHN0YXR1czogbnVtYmVyKTogU2V2ZXJpdHkge1xuXHRcdGlmIChzdGF0dXMgPj0gNTAwKSByZXR1cm4gJ2Rhbmdlcic7XG5cdFx0aWYgKHN0YXR1cyA+PSA0MDApIHJldHVybiAnd2FybmluZyc7XG5cdFx0aWYgKHN0YXR1cyA+PSAzMDApIHJldHVybiAnaW5mbyc7XG5cdFx0aWYgKHN0YXR1cyA+PSAyMDApIHJldHVybiAnc3VjY2Vzcyc7XG5cdFx0cmV0dXJuICdzZWNvbmRhcnknO1xuXHR9XG5cblx0cHJvdGVjdGVkIGxldmVsU2V2ZXJpdHkobGV2ZWw6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFNldmVyaXR5IHtcblx0XHRzd2l0Y2ggKChsZXZlbCA/PyAnJykudG9VcHBlckNhc2UoKSkge1xuXHRcdFx0Y2FzZSAnRVJST1InOlxuXHRcdFx0Y2FzZSAnRkFUQUwnOlxuXHRcdFx0XHRyZXR1cm4gJ2Rhbmdlcic7XG5cdFx0XHRjYXNlICdXQVJOJzpcblx0XHRcdGNhc2UgJ1dBUk5JTkcnOlxuXHRcdFx0XHRyZXR1cm4gJ3dhcm5pbmcnO1xuXHRcdFx0Y2FzZSAnSU5GTyc6XG5cdFx0XHRcdHJldHVybiAnaW5mbyc7XG5cdFx0XHRjYXNlICdERUJVRyc6XG5cdFx0XHRjYXNlICdUUkFDRSc6XG5cdFx0XHRcdHJldHVybiAnc2Vjb25kYXJ5Jztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHJldHVybiAnc2Vjb25kYXJ5Jztcblx0XHR9XG5cdH1cblxuXHRwcm90ZWN0ZWQgZHVyYXRpb25TZXZlcml0eShzZWNvbmRzOiBudW1iZXIpOiBTZXZlcml0eSB7XG5cdFx0Y29uc3QgbXMgPSAoc2Vjb25kcyA/PyAwKSAqIDEwMDA7XG5cdFx0aWYgKG1zID49IDEwMDApIHJldHVybiAnZGFuZ2VyJztcblx0XHRpZiAobXMgPj0gMjAwKSByZXR1cm4gJ3dhcm5pbmcnO1xuXHRcdHJldHVybiAnc3VjY2Vzcyc7XG5cdH1cblxuXHRwcm90ZWN0ZWQgZm9ybWF0RHVyYXRpb24oc2Vjb25kczogbnVtYmVyIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcblx0XHRpZiAoc2Vjb25kcyA9PT0gdW5kZWZpbmVkIHx8IHNlY29uZHMgPT09IG51bGwpIHJldHVybiAnJztcblx0XHRjb25zdCBtcyA9IHNlY29uZHMgKiAxMDAwO1xuXHRcdGlmIChtcyA8IDEpIHJldHVybiBgJHttcy50b0ZpeGVkKDIpfSBtc2A7XG5cdFx0aWYgKG1zIDwgMTAwMCkgcmV0dXJuIGAke01hdGgucm91bmQobXMpfSBtc2A7XG5cdFx0cmV0dXJuIGAkeyhtcyAvIDEwMDApLnRvRml4ZWQoMil9IHNgO1xuXHR9XG5cblx0cHJvdGVjdGVkIGZvcm1hdEJ5dGVzKGJ5dGVzOiBudW1iZXIgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuXHRcdGlmIChieXRlcyA9PT0gdW5kZWZpbmVkIHx8IGJ5dGVzID09PSBudWxsKSByZXR1cm4gJy0nO1xuXHRcdGlmIChieXRlcyA8IDEwMjQpIHJldHVybiBgJHtieXRlc30gQmA7XG5cdFx0aWYgKGJ5dGVzIDwgMTAyNCAqIDEwMjQpIHJldHVybiBgJHsoYnl0ZXMgLyAxMDI0KS50b0ZpeGVkKDEpfSBLQmA7XG5cdFx0cmV0dXJuIGAkeyhieXRlcyAvICgxMDI0ICogMTAyNCkpLnRvRml4ZWQoMSl9IE1CYDtcblx0fVxuXG5cdHByb3RlY3RlZCBmb3JtYXRUaW1lc3RhbXAodHM6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG5cdFx0aWYgKHRzID09PSB1bmRlZmluZWQgfHwgdHMgPT09IG51bGwgfHwgdHMgPT09ICcnKSByZXR1cm4gJyc7XG5cdFx0aWYgKHR5cGVvZiB0cyA9PT0gJ3N0cmluZycpIHJldHVybiB0cztcblx0XHRjb25zdCBzID0gU3RyaW5nKHRzKTtcblx0XHRpZiAocy5sZW5ndGggPT09IDE0KSB7XG5cdFx0XHRyZXR1cm4gYCR7cy5zbGljZSg4LCAxMCl9OiR7cy5zbGljZSgxMCwgMTIpfToke3Muc2xpY2UoMTIsIDE0KX0gJHtzLnNsaWNlKDYsIDgpfS4ke3Muc2xpY2UoNCwgNil9LiR7cy5zbGljZSgwLCA0KX1gO1xuXHRcdH1cblx0XHRpZiAodHMgPiAxZTExKSB7XG5cdFx0XHRyZXR1cm4gbmV3IERhdGUodHMpLnRvTG9jYWxlU3RyaW5nKCk7XG5cdFx0fVxuXHRcdHJldHVybiBzO1xuXHR9XG5cblx0cHJvdGVjdGVkIHRyeVBhcnNlSnNvbihjb250ZW50OiBzdHJpbmcgfCB1bmRlZmluZWQpOiB1bmtub3duIHtcblx0XHRpZiAoIWNvbnRlbnQpIHJldHVybiBudWxsO1xuXHRcdGNvbnN0IHRyaW1tZWQgPSBjb250ZW50LnRyaW0oKTtcblx0XHRpZiAoISgodHJpbW1lZC5zdGFydHNXaXRoKCd7JykgJiYgdHJpbW1lZC5lbmRzV2l0aCgnfScpKSB8fCAodHJpbW1lZC5zdGFydHNXaXRoKCdbJykgJiYgdHJpbW1lZC5lbmRzV2l0aCgnXScpKSkpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHR0cnkge1xuXHRcdFx0cmV0dXJuIEpTT04ucGFyc2UodHJpbW1lZCk7XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdH1cbn1cbiIsIjxuZy1jb250YWluZXIgKnRyYW5zbG9jbz1cImxldCB0XCI+XG5cdDxwLXNpZGViYXJcblx0XHRbdmlzaWJsZV09XCJ2aXNpYmxlKClcIlxuXHRcdCh2aXNpYmxlQ2hhbmdlKT1cIm9uVmlzaWJsZUNoYW5nZSgkZXZlbnQpXCJcblx0XHRbcG9zaXRpb25dPVwicG9zaXRpb24oKVwiXG5cdFx0W3N0eWxlXT1cInsgd2lkdGg6IHdpZHRoKCkgfVwiXG5cdFx0W21vZGFsXT1cIm1vZGFsKClcIlxuXHRcdFtkaXNtaXNzaWJsZV09XCJ0cnVlXCJcblx0XHRbc2hvd0Nsb3NlSWNvbl09XCJ0cnVlXCJcblx0XHRzdHlsZUNsYXNzPVwiYXJpbC10cmFjZS1kcmF3ZXJcIj5cblx0XHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiYXJpbC10cmFjZS1kcmF3ZXJfX2hlYWRlclwiPlxuXHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLXNpdGVtYXBcIj48L2k+XG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwiYXJpbC10cmFjZS1kcmF3ZXJfX3RpdGxlXCI+e3sgdCgndHJhY2VEcmF3ZXIudGl0bGUnKSB9fTwvc3Bhbj5cblx0XHRcdFx0PGNvZGUgY2xhc3M9XCJhcmlsLXRyYWNlLWRyYXdlcl9fY2hpcFwiPnt7IHRyYWNlSWQoKSB9fTwvY29kZT5cblx0XHRcdFx0PGlcblx0XHRcdFx0XHRyb2xlPVwiYnV0dG9uXCJcblx0XHRcdFx0XHRjbGFzcz1cInBpIHBpLXJlZnJlc2ggYXJpbC10cmFjZS1kcmF3ZXJfX3JlZnJlc2hcIlxuXHRcdFx0XHRcdFtjbGFzcy5waS1zcGluXT1cImxvYWRpbmcoKVwiXG5cdFx0XHRcdFx0W3BUb29sdGlwXT1cInQoJ3RyYWNlRHJhd2VyLnJlZnJlc2gnKVwiXG5cdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCJcblx0XHRcdFx0XHQoY2xpY2spPVwicmVmcmVzaCgpXCI+PC9pPlxuXHRcdFx0XHQ8aVxuXHRcdFx0XHRcdHJvbGU9XCJidXR0b25cIlxuXHRcdFx0XHRcdGNsYXNzPVwicGkgcGktc2hhcmUtYWx0IGFyaWwtdHJhY2UtZHJhd2VyX19zaGFyZVwiXG5cdFx0XHRcdFx0W3BUb29sdGlwXT1cInQoJ3RyYWNlRHJhd2VyLnNoYXJlTGluaycpXCJcblx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJib3R0b21cIlxuXHRcdFx0XHRcdChjbGljayk9XCJzaGFyZUxpbmsoKVwiPjwvaT5cblx0XHRcdDwvZGl2PlxuXHRcdDwvbmctdGVtcGxhdGU+XG5cblx0XHQ8ZGl2IGNsYXNzPVwiYXJpbC10cmFjZS1kcmF3ZXJfX2JvZHlcIj5cblx0XHRcdEBpZiAobG9hZGluZygpKSB7XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJhcmlsLXRyYWNlLWRyYXdlcl9fc3RhdGVcIj5cblx0XHRcdFx0XHQ8cC1wcm9ncmVzc1NwaW5uZXIgc3Ryb2tlV2lkdGg9XCIzXCIgc3R5bGVDbGFzcz1cInctM3JlbSBoLTNyZW1cIj48L3AtcHJvZ3Jlc3NTcGlubmVyPlxuXHRcdFx0XHRcdDxzcGFuPnt7IHQoJ3RyYWNlRHJhd2VyLmxvYWRpbmcnKSB9fTwvc3Bhbj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHR9IEBlbHNlIGlmIChlcnJvck1lc3NhZ2UoKSkge1xuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiYXJpbC10cmFjZS1kcmF3ZXJfX3N0YXRlIGFyaWwtdHJhY2UtZHJhd2VyX19zdGF0ZS0tZXJyb3JcIj5cblx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCI+PC9pPlxuXHRcdFx0XHRcdDxwPnt7IGVycm9yTWVzc2FnZSgpIH19PC9wPlxuXHRcdFx0XHRcdDxhcmlsLWJ1dHRvbiBbbGFiZWxdPVwidCgndHJhY2VEcmF3ZXIucmV0cnknKVwiIGljb249XCJSRUZSRVNIXCIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrRXZlbnQpPVwicmV0cnkoKVwiIC8+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0fSBAZWxzZSB7XG5cdFx0XHRcdEBpZiAocmVmVmFsdWVFbnRyaWVzKCkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0PHNlY3Rpb24gY2xhc3M9XCJhcmlsLXRyYWNlLWRyYXdlcl9fc2VjdGlvblwiPlxuXHRcdFx0XHRcdFx0PGgzIGNsYXNzPVwiYXJpbC10cmFjZS1kcmF3ZXJfX3NlY3Rpb24tdGl0bGVcIj5cblx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJwaSBwaS10YWdzXCI+PC9pPlxuXHRcdFx0XHRcdFx0XHR7eyB0KCd0cmFjZURyYXdlci5yZWZWYWx1ZXNIZWFkZXInKSB9fVxuXHRcdFx0XHRcdFx0XHQ8YXJpbC1iYWRnZSBbdmFsdWVdPVwicmVmVmFsdWVFbnRyaWVzKCkubGVuZ3RoLnRvU3RyaW5nKClcIiBbcm91bmRlZF09XCJ0cnVlXCIgLz5cblx0XHRcdFx0XHRcdDwvaDM+XG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicmVmLXZhbHVlc1wiPlxuXHRcdFx0XHRcdFx0XHRAZm9yIChlbnRyeSBvZiByZWZWYWx1ZUVudHJpZXMoKTsgdHJhY2sgZW50cnlbMF0pIHtcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicmVmLXZhbHVlc19fcm93XCI+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInJlZi12YWx1ZXNfX2tleVwiPnt7IGVudHJ5WzBdIH19PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInJlZi12YWx1ZXNfX2NoaXBzXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdEBmb3IgKHZhbCBvZiBlbnRyeVsxXTsgdHJhY2sgdmFsKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGNvZGUgY2xhc3M9XCJyZWYtdmFsdWVzX19jaGlwXCI+e3sgdmFsIH19PC9jb2RlPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PC9zZWN0aW9uPlxuXHRcdFx0XHR9XG5cdFx0XHRcdEBpZiAoYXBpc2l4SGl0cygpLmxlbmd0aCkge1xuXHRcdFx0XHRcdDxzZWN0aW9uIGNsYXNzPVwiYXJpbC10cmFjZS1kcmF3ZXJfX3NlY3Rpb25cIj5cblx0XHRcdFx0XHRcdDxoMyBjbGFzcz1cImFyaWwtdHJhY2UtZHJhd2VyX19zZWN0aW9uLXRpdGxlXCI+XG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktZ2xvYmVcIj48L2k+XG5cdFx0XHRcdFx0XHRcdHt7IHQoJ3RyYWNlRHJhd2VyLmFwaXNpeEhlYWRlcicpIH19XG5cdFx0XHRcdFx0XHRcdDxhcmlsLWJhZGdlIFt2YWx1ZV09XCJhcGlzaXhIaXRzKCkubGVuZ3RoICsgJyAvICcgKyB0b3RhbEl0ZW0oKVwiIFtyb3VuZGVkXT1cInRydWVcIiAvPlxuXHRcdFx0XHRcdFx0PC9oMz5cblx0XHRcdFx0XHRcdEBmb3IgKGhpdCBvZiBhcGlzaXhIaXRzKCk7IHRyYWNrIGhpdC5pZCkge1xuXHRcdFx0XHRcdFx0XHQ8ZGV0YWlscyBjbGFzcz1cInRyYWNlLXJvdyB0cmFjZS1yb3ctLXt7IHN0YXR1c1NldmVyaXR5KGhpdC5zdGF0dXMpIH19XCI+XG5cdFx0XHRcdFx0XHRcdFx0PHN1bW1hcnkgY2xhc3M9XCJ0cmFjZS1yb3dfX3N1bW1hcnlcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktY2hldnJvbi1yaWdodCB0cmFjZS1yb3dfX2NoZXZyb25cIj48L2k+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8YXJpbC1iYWRnZSBbdmFsdWVdPVwiaGl0LnN0YXR1cy50b1N0cmluZygpXCIgW3NldmVyaXR5XT1cInN0YXR1c1NldmVyaXR5KGhpdC5zdGF0dXMpXCIgLz5cblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidHJhY2Utcm93X190YWdcIj57eyBoaXQucmVxdWVzdE1ldGhvZCB9fTwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidHJhY2Utcm93X19tYWluXCI+e3sgaGl0LnJlcXVlc3RVcmkgfX08L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8YXJpbC1iYWRnZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRbdmFsdWVdPVwiZm9ybWF0RHVyYXRpb24oaGl0LnJlc3BvbnNlVGltZSlcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRbc2V2ZXJpdHldPVwiZHVyYXRpb25TZXZlcml0eShoaXQucmVzcG9uc2VUaW1lKVwiIC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGhpdC50aW1lc3RhbXApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJ0cmFjZS1yb3dfX3RpbWVcIj57eyBmb3JtYXRUaW1lc3RhbXAoaGl0LnRpbWVzdGFtcCkgfX08L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHQ8aVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyb2xlPVwiYnV0dG9uXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJwaSBwaS1jb2RlIHRyYWNlLXJvd19fYWN0aW9uXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cInQoJ3RyYWNlRHJhd2VyLmNvcHlDdXJsJylcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJsZWZ0XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGNvcHlBc0N1cmwoaGl0KVwiPjwvaT5cblx0XHRcdFx0XHRcdFx0XHQ8L3N1bW1hcnk+XG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRyYWNlLXJvd19fYm9keVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRyYWNlLXJvd19fbWV0YVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGhpdC5yb3V0ZU5hbWUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJtZXRhLWxhYmVsXCI+e3sgdCgndHJhY2VEcmF3ZXIucm91dGUnKSB9fTwvc3BhblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PjxzcGFuPnt7IGhpdC5yb3V0ZU5hbWUgfX08L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmIChoaXQuc291cmNlQXBwIHx8IGhpdC5zb3VyY2VNb2R1bGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJtZXRhLWxhYmVsXCI+e3sgdCgndHJhY2VEcmF3ZXIuc291cmNlJykgfX08L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3Bhbj57eyBoaXQuc291cmNlQXBwIH19e3sgaGl0LnNvdXJjZU1vZHVsZSA/ICcgLyAnICsgaGl0LnNvdXJjZU1vZHVsZSA6ICcnIH19PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdEBpZiAoaGl0LnRhcmdldEFwcCB8fCBoaXQudGFyZ2V0TW9kdWxlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibWV0YS1sYWJlbFwiPnt7IHQoJ3RyYWNlRHJhd2VyLnRhcmdldCcpIH19PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4+e3sgaGl0LnRhcmdldEFwcCB9fXt7IGhpdC50YXJnZXRNb2R1bGUgPyAnIC8gJyArIGhpdC50YXJnZXRNb2R1bGUgOiAnJyB9fTwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGhpdC51cHN0cmVhbUhvc3QpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJtZXRhLWxhYmVsXCI+e3sgdCgndHJhY2VEcmF3ZXIudXBzdHJlYW0nKSB9fTwvc3BhblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PjxzcGFuPnt7IGhpdC51cHN0cmVhbUhvc3QgfX08L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmIChoaXQudXNlcm5hbWUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJtZXRhLWxhYmVsXCI+e3sgdCgndHJhY2VEcmF3ZXIudXNlcicpIH19PC9zcGFuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+PHNwYW4+e3sgaGl0LnVzZXJuYW1lIH19PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdEBpZiAoaGl0LnJlcXVlc3RTaXplICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJtZXRhLWxhYmVsXCI+e3sgdCgndHJhY2VEcmF3ZXIucmVxdWVzdFNpemUnKSB9fTwvc3BhblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PjxzcGFuPnt7IGZvcm1hdEJ5dGVzKGhpdC5yZXF1ZXN0U2l6ZSkgfX08L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmIChoaXQucmVzcG9uc2VTaXplICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJtZXRhLWxhYmVsXCI+e3sgdCgndHJhY2VEcmF3ZXIucmVzcG9uc2VTaXplJykgfX08L3NwYW5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD48c3Bhbj57eyBmb3JtYXRCeXRlcyhoaXQucmVzcG9uc2VTaXplKSB9fTwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGhpdC5yZXF1ZXN0Qm9keSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGV0YWlscyBjbGFzcz1cInRyYWNlLXJvd19fc3ViXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHN1bW1hcnk+e3sgdCgndHJhY2VEcmF3ZXIucmVxdWVzdEJvZHknKSB9fTwvc3VtbWFyeT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYgKHRyeVBhcnNlSnNvbihoaXQucmVxdWVzdEJvZHkpOyBhcyBwYXJzZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxwcmU+e3sgcGFyc2VkIHwganNvbiB9fTwvcHJlPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHByZT57eyBoaXQucmVxdWVzdEJvZHkgfX08L3ByZT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGV0YWlscz5cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdEBpZiAoaGl0LnJlc3BvbnNlQm9keSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGV0YWlscyBjbGFzcz1cInRyYWNlLXJvd19fc3ViXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHN1bW1hcnk+e3sgdCgndHJhY2VEcmF3ZXIucmVzcG9uc2VCb2R5JykgfX08L3N1bW1hcnk+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmICh0cnlQYXJzZUpzb24oaGl0LnJlc3BvbnNlQm9keSk7IGFzIHBhcnNlZCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHByZT57eyBwYXJzZWQgfCBqc29uIH19PC9wcmU+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8cHJlPnt7IGhpdC5yZXNwb25zZUJvZHkgfX08L3ByZT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGV0YWlscz5cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdFx0PC9kZXRhaWxzPlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0QGlmIChoYXNNb3JlKCkpIHtcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImFyaWwtdHJhY2UtZHJhd2VyX19sb2FkLW1vcmVcIj5cblx0XHRcdFx0XHRcdFx0XHQ8YXJpbC1idXR0b25cblx0XHRcdFx0XHRcdFx0XHRcdFtsYWJlbF09XCJ0KCd0cmFjZURyYXdlci5sb2FkTW9yZScpXCJcblx0XHRcdFx0XHRcdFx0XHRcdGljb249XCJDSEVWUk9OX0RPV05cIlxuXHRcdFx0XHRcdFx0XHRcdFx0Y29sb3I9XCJwcmltYXJ5XCJcblx0XHRcdFx0XHRcdFx0XHRcdFtvdXRsaW5lZF09XCJ0cnVlXCJcblx0XHRcdFx0XHRcdFx0XHRcdFtsb2FkaW5nXT1cImxvYWRpbmdNb3JlKClcIlxuXHRcdFx0XHRcdFx0XHRcdFx0W2Rpc2FibGVkXT1cImxvYWRpbmdNb3JlKClcIlxuXHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrRXZlbnQpPVwibG9hZE1vcmUoKVwiIC8+XG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdDwvc2VjdGlvbj5cblx0XHRcdFx0fVxuXHRcdFx0XHRAaWYgKGFwcExvZ3MoKS5sZW5ndGgpIHtcblx0XHRcdFx0XHQ8c2VjdGlvbiBjbGFzcz1cImFyaWwtdHJhY2UtZHJhd2VyX19zZWN0aW9uXCI+XG5cdFx0XHRcdFx0XHQ8aDMgY2xhc3M9XCJhcmlsLXRyYWNlLWRyYXdlcl9fc2VjdGlvbi10aXRsZVwiPlxuXHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWxpc3RcIj48L2k+XG5cdFx0XHRcdFx0XHRcdHt7IHQoJ3RyYWNlRHJhd2VyLmFwcExvZ3NIZWFkZXInKSB9fVxuXHRcdFx0XHRcdFx0XHQ8YXJpbC1iYWRnZSBbdmFsdWVdPVwiYXBwTG9ncygpLmxlbmd0aCArICcgLyAnICsgYXBwTG9nc1RvdGFsKClcIiBbcm91bmRlZF09XCJ0cnVlXCIgLz5cblx0XHRcdFx0XHRcdDwvaDM+XG5cdFx0XHRcdFx0XHRAZm9yIChsb2cgb2YgYXBwTG9ncygpOyB0cmFjayBsb2cuaWQpIHtcblx0XHRcdFx0XHRcdFx0PGRldGFpbHMgY2xhc3M9XCJ0cmFjZS1yb3cgdHJhY2Utcm93LS17eyBsZXZlbFNldmVyaXR5KGxvZy5sZXZlbCkgfX1cIj5cblx0XHRcdFx0XHRcdFx0XHQ8c3VtbWFyeSBjbGFzcz1cInRyYWNlLXJvd19fc3VtbWFyeVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJwaSBwaS1jaGV2cm9uLXJpZ2h0IHRyYWNlLXJvd19fY2hldnJvblwiPjwvaT5cblx0XHRcdFx0XHRcdFx0XHRcdEBpZiAobG9nLmxldmVsKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxhcmlsLWJhZGdlIFt2YWx1ZV09XCJsb2cubGV2ZWxcIiBbc2V2ZXJpdHldPVwibGV2ZWxTZXZlcml0eShsb2cubGV2ZWwpXCIgLz5cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdEBpZiAobG9nLm1vZHVsZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInRyYWNlLXJvd19fdGFnXCI+e3sgbG9nLm1vZHVsZSB9fTwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidHJhY2Utcm93X19tYWluXCI+e3sgbG9nLm1lc3NhZ2UgfX08L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGxvZy50aW1lc3RhbXApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJ0cmFjZS1yb3dfX3RpbWVcIj57eyBmb3JtYXRUaW1lc3RhbXAobG9nLnRpbWVzdGFtcCkgfX08L3NwYW4+XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0PC9zdW1tYXJ5PlxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0cmFjZS1yb3dfX2JvZHlcIj5cblx0XHRcdFx0XHRcdFx0XHRcdEBpZiAobG9nLm1lc3NhZ2UpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRyYWNlLXJvd19fbWVzc2FnZVwiPnt7IGxvZy5tZXNzYWdlIH19PC9kaXY+XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGxvZy51c2VybmFtZSB8fCBsb2cuYXBwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0cmFjZS1yb3dfX21ldGFcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGxvZy5hcHApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXY+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibWV0YS1sYWJlbFwiPnt7IHQoJ3RyYWNlRHJhd2VyLnRhcmdldCcpIH19PC9zcGFuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD48c3Bhbj57eyBsb2cuYXBwIH19PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBpZiAobG9nLnVzZXJuYW1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm1ldGEtbGFiZWxcIj57eyB0KCd0cmFjZURyYXdlci51c2VyJykgfX08L3NwYW5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PjxzcGFuPnt7IGxvZy51c2VybmFtZSB9fTwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGxvZy5lcnJvckRldGFpbCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGV0YWlscyBjbGFzcz1cInRyYWNlLXJvd19fc3ViXCIgb3Blbj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3VtbWFyeT57eyB0KCd0cmFjZURyYXdlci5hcHBMb2dFcnJvckRldGFpbCcpIH19PC9zdW1tYXJ5PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxwcmU+e3sgbG9nLmVycm9yRGV0YWlsIH19PC9wcmU+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGV0YWlscz5cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdEBpZiAobG9nLnJlZmVyZW5jZUZpZWxkcz8ubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxkZXRhaWxzIGNsYXNzPVwidHJhY2Utcm93X19zdWJcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3VtbWFyeT57eyB0KCd0cmFjZURyYXdlci5hcHBMb2dSZWZGaWVsZHMnKSB9fTwvc3VtbWFyeT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidHJhY2Utcm93X19tZXRhXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAZm9yIChyZiBvZiBsb2cucmVmZXJlbmNlRmllbGRzOyB0cmFjayByZi5maWVsZCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibWV0YS1sYWJlbFwiPnt7IHJmLmZpZWxkIH19PC9zcGFuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PjxzcGFuPnt7IHJmLnZhbHVlIH19PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kZXRhaWxzPlxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0XHQ8L2RldGFpbHM+XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRAaWYgKGFwcExvZ3NIYXNNb3JlKCkpIHtcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImFyaWwtdHJhY2UtZHJhd2VyX19sb2FkLW1vcmVcIj5cblx0XHRcdFx0XHRcdFx0XHQ8YXJpbC1idXR0b25cblx0XHRcdFx0XHRcdFx0XHRcdFtsYWJlbF09XCJ0KCd0cmFjZURyYXdlci5sb2FkTW9yZScpXCJcblx0XHRcdFx0XHRcdFx0XHRcdGljb249XCJDSEVWUk9OX0RPV05cIlxuXHRcdFx0XHRcdFx0XHRcdFx0Y29sb3I9XCJwcmltYXJ5XCJcblx0XHRcdFx0XHRcdFx0XHRcdFtvdXRsaW5lZF09XCJ0cnVlXCJcblx0XHRcdFx0XHRcdFx0XHRcdFtsb2FkaW5nXT1cImFwcExvZ3NMb2FkaW5nTW9yZSgpXCJcblx0XHRcdFx0XHRcdFx0XHRcdFtkaXNhYmxlZF09XCJhcHBMb2dzTG9hZGluZ01vcmUoKVwiXG5cdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2tFdmVudCk9XCJsb2FkTW9yZUFwcExvZ3MoKVwiIC8+XG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdDwvc2VjdGlvbj5cblx0XHRcdFx0fVxuXHRcdFx0XHRAaWYgKCFhcGlzaXhIaXRzKCkubGVuZ3RoICYmICFhcHBMb2dzKCkubGVuZ3RoICYmICFyZWZWYWx1ZUVudHJpZXMoKS5sZW5ndGgpIHtcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiYXJpbC10cmFjZS1kcmF3ZXJfX3N0YXRlXCI+XG5cdFx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWluYm94XCI+PC9pPlxuXHRcdFx0XHRcdFx0PHA+e3sgdCgndHJhY2VEcmF3ZXIuZW1wdHknKSB9fTwvcD5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdDwvZGl2PlxuXHQ8L3Atc2lkZWJhcj5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -12,14 +12,14 @@ export class TraceLogService extends RestClient {
12
12
  searchByTraceId(req) {
13
13
  return new Observable();
14
14
  }
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraceLogService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
16
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraceLogService, providedIn: 'root' }); }
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TraceLogService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
16
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TraceLogService, providedIn: 'root' }); }
17
17
  }
18
18
  __decorate([
19
19
  ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, 'request-logs/filter', {}, Apps.MNG)
20
20
  ], TraceLogService.prototype, "searchByTraceId", null);
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraceLogService, decorators: [{
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TraceLogService, decorators: [{
22
22
  type: Injectable,
23
23
  args: [{ providedIn: 'root' }]
24
24
  }], propDecorators: { searchByTraceId: [] } });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2UtbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3VpLWJ1c2luZXNzL3RyYWNlLWRyYXdlci9zcmMvdHJhY2UtbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBd0MsTUFBTSxXQUFXLENBQUM7O0FBaUJuSCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxVQUFVO0lBRC9DOztRQUVVLFdBQU0sR0FBeUMsRUFBRSxDQUFDO0tBTTNEO0lBSEEsZUFBZSxDQUFDLEdBQXVCO1FBQ3RDLE9BQU8sSUFBSSxVQUFVLEVBQXdDLENBQUM7SUFDL0QsQ0FBQzsrR0FOVyxlQUFlO21IQUFmLGVBQWUsY0FERixNQUFNOztBQUsvQjtJQURDLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxVQUFVLEVBQUUscUJBQXFCLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUM7c0RBR3pGOzRGQU5XLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzhCQUtqQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgQXBwcyB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvYXBwcyc7XHJcbmltcG9ydCB7IEhUVFBNZXRob2RzLCBQcm94eVR5cGVzLCBSZXN0Q2xpZW50LCBTZXJ2aWNlQ2FsbCwgU2VydmljZUNhbGxTdGF0ZU1hcCwgU2VydmljZVJlc3BvbnNlIH0gZnJvbSAnYXJpbC9odHRwJztcclxuXHJcbmltcG9ydCB7IEFwaXNpeEhpdCB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRyYWNlU2VhcmNoUmVxdWVzdCB7XHJcblx0dHJhY2VJZDogc3RyaW5nO1xyXG5cdHN0YXJ0VGltZT86IG51bWJlcjtcclxuXHRlbmRUaW1lPzogbnVtYmVyO1xyXG5cdHBhZ2VyOiB7IHBhZ2VTaXplOiBudW1iZXI7IHBhZ2VOdW1iZXI6IG51bWJlciB9O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRyYWNlU2VhcmNoUmVzcG9uc2Uge1xyXG5cdHJlc3VsdEluZm8/OiB7IHRvdGFsSXRlbT86IG51bWJlcjsgdG90YWxQYWdlPzogbnVtYmVyIH07XHJcblx0cmVzdWx0OiBBcGlzaXhIaXRbXTtcclxufVxyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFRyYWNlTG9nU2VydmljZSBleHRlbmRzIFJlc3RDbGllbnQge1xyXG5cdG92ZXJyaWRlIHN0YXRlczogU2VydmljZUNhbGxTdGF0ZU1hcDxUcmFjZUxvZ1NlcnZpY2U+ID0ge307XHJcblxyXG5cdEBTZXJ2aWNlQ2FsbChIVFRQTWV0aG9kcy5QT1NULCBQcm94eVR5cGVzLkNsaWVudFNpZGUsICdyZXF1ZXN0LWxvZ3MvZmlsdGVyJywge30sIEFwcHMuTU5HKVxyXG5cdHNlYXJjaEJ5VHJhY2VJZChyZXE6IFRyYWNlU2VhcmNoUmVxdWVzdCk6IE9ic2VydmFibGU8U2VydmljZVJlc3BvbnNlPFRyYWNlU2VhcmNoUmVzcG9uc2U+PiB7XHJcblx0XHRyZXR1cm4gbmV3IE9ic2VydmFibGU8U2VydmljZVJlc3BvbnNlPFRyYWNlU2VhcmNoUmVzcG9uc2U+PigpO1xyXG5cdH1cclxufVxyXG4iXX0=
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2UtbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3VpLWJ1c2luZXNzL3RyYWNlLWRyYXdlci9zcmMvdHJhY2UtbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBd0MsTUFBTSxXQUFXLENBQUM7O0FBaUJuSCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxVQUFVO0lBRC9DOztRQUVVLFdBQU0sR0FBeUMsRUFBRSxDQUFDO0tBTTNEO0lBSEEsZUFBZSxDQUFDLEdBQXVCO1FBQ3RDLE9BQU8sSUFBSSxVQUFVLEVBQXdDLENBQUM7SUFDL0QsQ0FBQzs4R0FOVyxlQUFlO2tIQUFmLGVBQWUsY0FERixNQUFNOztBQUsvQjtJQURDLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxVQUFVLEVBQUUscUJBQXFCLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUM7c0RBR3pGOzJGQU5XLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzhCQUtqQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFwcHMgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xuaW1wb3J0IHsgSFRUUE1ldGhvZHMsIFByb3h5VHlwZXMsIFJlc3RDbGllbnQsIFNlcnZpY2VDYWxsLCBTZXJ2aWNlQ2FsbFN0YXRlTWFwLCBTZXJ2aWNlUmVzcG9uc2UgfSBmcm9tICdhcmlsL2h0dHAnO1xuXG5pbXBvcnQgeyBBcGlzaXhIaXQgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYWNlU2VhcmNoUmVxdWVzdCB7XG5cdHRyYWNlSWQ6IHN0cmluZztcblx0c3RhcnRUaW1lPzogbnVtYmVyO1xuXHRlbmRUaW1lPzogbnVtYmVyO1xuXHRwYWdlcjogeyBwYWdlU2l6ZTogbnVtYmVyOyBwYWdlTnVtYmVyOiBudW1iZXIgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFjZVNlYXJjaFJlc3BvbnNlIHtcblx0cmVzdWx0SW5mbz86IHsgdG90YWxJdGVtPzogbnVtYmVyOyB0b3RhbFBhZ2U/OiBudW1iZXIgfTtcblx0cmVzdWx0OiBBcGlzaXhIaXRbXTtcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBUcmFjZUxvZ1NlcnZpY2UgZXh0ZW5kcyBSZXN0Q2xpZW50IHtcblx0b3ZlcnJpZGUgc3RhdGVzOiBTZXJ2aWNlQ2FsbFN0YXRlTWFwPFRyYWNlTG9nU2VydmljZT4gPSB7fTtcblxuXHRAU2VydmljZUNhbGwoSFRUUE1ldGhvZHMuUE9TVCwgUHJveHlUeXBlcy5DbGllbnRTaWRlLCAncmVxdWVzdC1sb2dzL2ZpbHRlcicsIHt9LCBBcHBzLk1ORylcblx0c2VhcmNoQnlUcmFjZUlkKHJlcTogVHJhY2VTZWFyY2hSZXF1ZXN0KTogT2JzZXJ2YWJsZTxTZXJ2aWNlUmVzcG9uc2U8VHJhY2VTZWFyY2hSZXNwb25zZT4+IHtcblx0XHRyZXR1cm4gbmV3IE9ic2VydmFibGU8U2VydmljZVJlc3BvbnNlPFRyYWNlU2VhcmNoUmVzcG9uc2U+PigpO1xuXHR9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export * from './src/trace-id.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3VpLWJ1c2luZXNzL3RyYWNlLWlkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NyYy90cmFjZS1pZC5jb21wb25lbnQnO1xyXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3VpLWJ1c2luZXNzL3RyYWNlLWlkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NyYy90cmFjZS1pZC5jb21wb25lbnQnO1xuIl19
@@ -23,13 +23,13 @@ export class TraceIdComponent {
23
23
  return;
24
24
  this.clickEvent.emit(this.traceId());
25
25
  }
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraceIdComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: TraceIdComponent, isStandalone: true, selector: "aril-trace-id", inputs: { traceId: { classPropertyName: "traceId", publicName: "traceId", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, iconLeft: { classPropertyName: "iconLeft", publicName: "iconLeft", isSignal: true, isRequired: false, transformFunction: null }, iconRight: { classPropertyName: "iconRight", publicName: "iconRight", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clickEvent: "clickEvent" }, ngImport: i0, template: "<button\r\n\ttype=\"button\"\r\n\tclass=\"aril-trace-id\"\r\n\t[class.aril-trace-id--md]=\"size() === 'md'\"\r\n\t[class.aril-trace-id--disabled]=\"disabled()\"\r\n\t[attr.aria-label]=\"traceId()\"\r\n\t[title]=\"traceId()\"\r\n\t(click)=\"onClick($event)\">\r\n\t<i class=\"pi {{ iconLeft() }}\"></i>\r\n\t<span class=\"aril-trace-id__text\">{{ displayText() }}</span>\r\n\t<i class=\"pi {{ iconRight() }}\"></i>\r\n</button>\r\n", styles: [".aril-trace-id{display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .55rem;font-size:.9rem;line-height:1.2;color:var(--primary-color, #1890ff);background:var(--primary-50, rgba(24, 144, 255, .08));border:1px solid transparent;border-radius:4px;cursor:pointer;transition:background .15s ease,border-color .15s ease}.aril-trace-id:hover{background:var(--primary-100, rgba(24, 144, 255, .15));border-color:var(--primary-200, rgba(24, 144, 255, .3))}.aril-trace-id:focus-visible{outline:2px solid var(--primary-color, #1890ff);outline-offset:1px}.aril-trace-id--md{padding:.35rem .75rem;font-size:1rem}.aril-trace-id--disabled{cursor:not-allowed;opacity:.6;pointer-events:none}.aril-trace-id .pi{font-size:.85rem}.aril-trace-id__text{white-space:nowrap}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TraceIdComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.1.2", type: TraceIdComponent, isStandalone: true, selector: "aril-trace-id", inputs: { traceId: { classPropertyName: "traceId", publicName: "traceId", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, iconLeft: { classPropertyName: "iconLeft", publicName: "iconLeft", isSignal: true, isRequired: false, transformFunction: null }, iconRight: { classPropertyName: "iconRight", publicName: "iconRight", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clickEvent: "clickEvent" }, ngImport: i0, template: "<button\n\ttype=\"button\"\n\tclass=\"aril-trace-id\"\n\t[class.aril-trace-id--md]=\"size() === 'md'\"\n\t[class.aril-trace-id--disabled]=\"disabled()\"\n\t[attr.aria-label]=\"traceId()\"\n\t[title]=\"traceId()\"\n\t(click)=\"onClick($event)\">\n\t<i class=\"pi {{ iconLeft() }}\"></i>\n\t<span class=\"aril-trace-id__text\">{{ displayText() }}</span>\n\t<i class=\"pi {{ iconRight() }}\"></i>\n</button>\n", styles: [".aril-trace-id{display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .55rem;font-size:.9rem;line-height:1.2;color:var(--primary-color, #1890ff);background:var(--primary-50, rgba(24, 144, 255, .08));border:1px solid transparent;border-radius:4px;cursor:pointer;transition:background .15s ease,border-color .15s ease}.aril-trace-id:hover{background:var(--primary-100, rgba(24, 144, 255, .15));border-color:var(--primary-200, rgba(24, 144, 255, .3))}.aril-trace-id:focus-visible{outline:2px solid var(--primary-color, #1890ff);outline-offset:1px}.aril-trace-id--md{padding:.35rem .75rem;font-size:1rem}.aril-trace-id--disabled{cursor:not-allowed;opacity:.6;pointer-events:none}.aril-trace-id .pi{font-size:.85rem}.aril-trace-id__text{white-space:nowrap}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
28
28
  }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraceIdComponent, decorators: [{
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TraceIdComponent, decorators: [{
30
30
  type: Component,
31
- args: [{ standalone: true, selector: 'aril-trace-id', imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\r\n\ttype=\"button\"\r\n\tclass=\"aril-trace-id\"\r\n\t[class.aril-trace-id--md]=\"size() === 'md'\"\r\n\t[class.aril-trace-id--disabled]=\"disabled()\"\r\n\t[attr.aria-label]=\"traceId()\"\r\n\t[title]=\"traceId()\"\r\n\t(click)=\"onClick($event)\">\r\n\t<i class=\"pi {{ iconLeft() }}\"></i>\r\n\t<span class=\"aril-trace-id__text\">{{ displayText() }}</span>\r\n\t<i class=\"pi {{ iconRight() }}\"></i>\r\n</button>\r\n", styles: [".aril-trace-id{display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .55rem;font-size:.9rem;line-height:1.2;color:var(--primary-color, #1890ff);background:var(--primary-50, rgba(24, 144, 255, .08));border:1px solid transparent;border-radius:4px;cursor:pointer;transition:background .15s ease,border-color .15s ease}.aril-trace-id:hover{background:var(--primary-100, rgba(24, 144, 255, .15));border-color:var(--primary-200, rgba(24, 144, 255, .3))}.aril-trace-id:focus-visible{outline:2px solid var(--primary-color, #1890ff);outline-offset:1px}.aril-trace-id--md{padding:.35rem .75rem;font-size:1rem}.aril-trace-id--disabled{cursor:not-allowed;opacity:.6;pointer-events:none}.aril-trace-id .pi{font-size:.85rem}.aril-trace-id__text{white-space:nowrap}\n"] }]
31
+ args: [{ standalone: true, selector: 'aril-trace-id', imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n\ttype=\"button\"\n\tclass=\"aril-trace-id\"\n\t[class.aril-trace-id--md]=\"size() === 'md'\"\n\t[class.aril-trace-id--disabled]=\"disabled()\"\n\t[attr.aria-label]=\"traceId()\"\n\t[title]=\"traceId()\"\n\t(click)=\"onClick($event)\">\n\t<i class=\"pi {{ iconLeft() }}\"></i>\n\t<span class=\"aril-trace-id__text\">{{ displayText() }}</span>\n\t<i class=\"pi {{ iconRight() }}\"></i>\n</button>\n", styles: [".aril-trace-id{display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .55rem;font-size:.9rem;line-height:1.2;color:var(--primary-color, #1890ff);background:var(--primary-50, rgba(24, 144, 255, .08));border:1px solid transparent;border-radius:4px;cursor:pointer;transition:background .15s ease,border-color .15s ease}.aril-trace-id:hover{background:var(--primary-100, rgba(24, 144, 255, .15));border-color:var(--primary-200, rgba(24, 144, 255, .3))}.aril-trace-id:focus-visible{outline:2px solid var(--primary-color, #1890ff);outline-offset:1px}.aril-trace-id--md{padding:.35rem .75rem;font-size:1rem}.aril-trace-id--disabled{cursor:not-allowed;opacity:.6;pointer-events:none}.aril-trace-id .pi{font-size:.85rem}.aril-trace-id__text{white-space:nowrap}\n"] }]
32
32
  }], propDecorators: { clickEvent: [{
33
33
  type: Output
34
34
  }] } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2UtaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS1idXNpbmVzcy90cmFjZS1pZC9zcmMvdHJhY2UtaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS1idXNpbmVzcy90cmFjZS1pZC9zcmMvdHJhY2UtaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBWTFHLE1BQU0sT0FBTyxnQkFBZ0I7SUFSN0I7UUFTQyxZQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ25DLFVBQUssR0FBRyxLQUFLLEVBQXNCLENBQUM7UUFDcEMsYUFBUSxHQUFHLEtBQUssQ0FBUyxZQUFZLENBQUMsQ0FBQztRQUN2QyxjQUFTLEdBQUcsS0FBSyxDQUFTLGtCQUFrQixDQUFDLENBQUM7UUFDOUMsU0FBSSxHQUFHLEtBQUssQ0FBTyxJQUFJLENBQUMsQ0FBQztRQUN6QixhQUFRLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRXZCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRS9CLGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM5QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDNUIsSUFBSSxNQUFNO2dCQUFFLE9BQU8sTUFBTSxDQUFDO1lBQzFCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDaEMsT0FBTyxFQUFFLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7S0FPSDtJQUxVLE9BQU8sQ0FBQyxLQUFpQjtRQUNsQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQUUsT0FBTztRQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDOytHQXJCVyxnQkFBZ0I7bUdBQWhCLGdCQUFnQiw0MkJDWjdCLGdiQVlBOzs0RkRBYSxnQkFBZ0I7a0JBUjVCLFNBQVM7aUNBQ0csSUFBSSxZQUNOLGVBQWUsV0FHaEIsRUFBRSxtQkFDTSx1QkFBdUIsQ0FBQyxNQUFNOzhCQVVyQyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxudHlwZSBTaXplID0gJ3NtJyB8ICdtZCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHNlbGVjdG9yOiAnYXJpbC10cmFjZS1pZCcsXHJcblx0dGVtcGxhdGVVcmw6ICcuL3RyYWNlLWlkLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi90cmFjZS1pZC5jb21wb25lbnQuc2NzcyddLFxyXG5cdGltcG9ydHM6IFtdLFxyXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmFjZUlkQ29tcG9uZW50IHtcclxuXHR0cmFjZUlkID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xyXG5cdGxhYmVsID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xyXG5cdGljb25MZWZ0ID0gaW5wdXQ8c3RyaW5nPigncGktc2l0ZW1hcCcpO1xyXG5cdGljb25SaWdodCA9IGlucHV0PHN0cmluZz4oJ3BpLWNoZXZyb24tcmlnaHQnKTtcclxuXHRzaXplID0gaW5wdXQ8U2l6ZT4oJ3NtJyk7XHJcblx0ZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblxyXG5cdEBPdXRwdXQoKSBjbGlja0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG5cdHByb3RlY3RlZCByZWFkb25seSBkaXNwbGF5VGV4dCA9IGNvbXB1dGVkKCgpID0+IHtcclxuXHRcdGNvbnN0IGN1c3RvbSA9IHRoaXMubGFiZWwoKTtcclxuXHRcdGlmIChjdXN0b20pIHJldHVybiBjdXN0b207XHJcblx0XHRjb25zdCBpZCA9IHRoaXMudHJhY2VJZCgpID8/ICcnO1xyXG5cdFx0cmV0dXJuIGlkLmxlbmd0aCA+IDEwID8gaWQuc2xpY2UoMCwgOCkgKyAn4oCmJyA6IGlkO1xyXG5cdH0pO1xyXG5cclxuXHRwcm90ZWN0ZWQgb25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblx0XHRpZiAodGhpcy5kaXNhYmxlZCgpKSByZXR1cm47XHJcblx0XHR0aGlzLmNsaWNrRXZlbnQuZW1pdCh0aGlzLnRyYWNlSWQoKSk7XHJcblx0fVxyXG59XHJcbiIsIjxidXR0b25cclxuXHR0eXBlPVwiYnV0dG9uXCJcclxuXHRjbGFzcz1cImFyaWwtdHJhY2UtaWRcIlxyXG5cdFtjbGFzcy5hcmlsLXRyYWNlLWlkLS1tZF09XCJzaXplKCkgPT09ICdtZCdcIlxyXG5cdFtjbGFzcy5hcmlsLXRyYWNlLWlkLS1kaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcclxuXHRbYXR0ci5hcmlhLWxhYmVsXT1cInRyYWNlSWQoKVwiXHJcblx0W3RpdGxlXT1cInRyYWNlSWQoKVwiXHJcblx0KGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiPlxyXG5cdDxpIGNsYXNzPVwicGkge3sgaWNvbkxlZnQoKSB9fVwiPjwvaT5cclxuXHQ8c3BhbiBjbGFzcz1cImFyaWwtdHJhY2UtaWRfX3RleHRcIj57eyBkaXNwbGF5VGV4dCgpIH19PC9zcGFuPlxyXG5cdDxpIGNsYXNzPVwicGkge3sgaWNvblJpZ2h0KCkgfX1cIj48L2k+XHJcbjwvYnV0dG9uPlxyXG4iXX0=
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2UtaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS1idXNpbmVzcy90cmFjZS1pZC9zcmMvdHJhY2UtaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS1idXNpbmVzcy90cmFjZS1pZC9zcmMvdHJhY2UtaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBWTFHLE1BQU0sT0FBTyxnQkFBZ0I7SUFSN0I7UUFTQyxZQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ25DLFVBQUssR0FBRyxLQUFLLEVBQXNCLENBQUM7UUFDcEMsYUFBUSxHQUFHLEtBQUssQ0FBUyxZQUFZLENBQUMsQ0FBQztRQUN2QyxjQUFTLEdBQUcsS0FBSyxDQUFTLGtCQUFrQixDQUFDLENBQUM7UUFDOUMsU0FBSSxHQUFHLEtBQUssQ0FBTyxJQUFJLENBQUMsQ0FBQztRQUN6QixhQUFRLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRXZCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRS9CLGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM5QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDNUIsSUFBSSxNQUFNO2dCQUFFLE9BQU8sTUFBTSxDQUFDO1lBQzFCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDaEMsT0FBTyxFQUFFLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7S0FPSDtJQUxVLE9BQU8sQ0FBQyxLQUFpQjtRQUNsQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQUUsT0FBTztRQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDOzhHQXJCVyxnQkFBZ0I7a0dBQWhCLGdCQUFnQiw0MkJDWjdCLHdaQVlBOzsyRkRBYSxnQkFBZ0I7a0JBUjVCLFNBQVM7aUNBQ0csSUFBSSxZQUNOLGVBQWUsV0FHaEIsRUFBRSxtQkFDTSx1QkFBdUIsQ0FBQyxNQUFNOzhCQVVyQyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG50eXBlIFNpemUgPSAnc20nIHwgJ21kJztcblxuQENvbXBvbmVudCh7XG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHNlbGVjdG9yOiAnYXJpbC10cmFjZS1pZCcsXG5cdHRlbXBsYXRlVXJsOiAnLi90cmFjZS1pZC5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL3RyYWNlLWlkLmNvbXBvbmVudC5zY3NzJ10sXG5cdGltcG9ydHM6IFtdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBUcmFjZUlkQ29tcG9uZW50IHtcblx0dHJhY2VJZCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcblx0bGFiZWwgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cdGljb25MZWZ0ID0gaW5wdXQ8c3RyaW5nPigncGktc2l0ZW1hcCcpO1xuXHRpY29uUmlnaHQgPSBpbnB1dDxzdHJpbmc+KCdwaS1jaGV2cm9uLXJpZ2h0Jyk7XG5cdHNpemUgPSBpbnB1dDxTaXplPignc20nKTtcblx0ZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cblx0QE91dHB1dCgpIGNsaWNrRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgZGlzcGxheVRleHQgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgY3VzdG9tID0gdGhpcy5sYWJlbCgpO1xuXHRcdGlmIChjdXN0b20pIHJldHVybiBjdXN0b207XG5cdFx0Y29uc3QgaWQgPSB0aGlzLnRyYWNlSWQoKSA/PyAnJztcblx0XHRyZXR1cm4gaWQubGVuZ3RoID4gMTAgPyBpZC5zbGljZSgwLCA4KSArICfigKYnIDogaWQ7XG5cdH0pO1xuXG5cdHByb3RlY3RlZCBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0aWYgKHRoaXMuZGlzYWJsZWQoKSkgcmV0dXJuO1xuXHRcdHRoaXMuY2xpY2tFdmVudC5lbWl0KHRoaXMudHJhY2VJZCgpKTtcblx0fVxufVxuIiwiPGJ1dHRvblxuXHR0eXBlPVwiYnV0dG9uXCJcblx0Y2xhc3M9XCJhcmlsLXRyYWNlLWlkXCJcblx0W2NsYXNzLmFyaWwtdHJhY2UtaWQtLW1kXT1cInNpemUoKSA9PT0gJ21kJ1wiXG5cdFtjbGFzcy5hcmlsLXRyYWNlLWlkLS1kaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcblx0W2F0dHIuYXJpYS1sYWJlbF09XCJ0cmFjZUlkKClcIlxuXHRbdGl0bGVdPVwidHJhY2VJZCgpXCJcblx0KGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiPlxuXHQ8aSBjbGFzcz1cInBpIHt7IGljb25MZWZ0KCkgfX1cIj48L2k+XG5cdDxzcGFuIGNsYXNzPVwiYXJpbC10cmFjZS1pZF9fdGV4dFwiPnt7IGRpc3BsYXlUZXh0KCkgfX08L3NwYW4+XG5cdDxpIGNsYXNzPVwicGkge3sgaWNvblJpZ2h0KCkgfX1cIj48L2k+XG48L2J1dHRvbj5cbiJdfQ==