@jigx/core-sdk 1.0.0

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 (902) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/README.md +87 -0
  3. package/dist/PACKAGE.d.ts +4 -0
  4. package/dist/PACKAGE.d.ts.map +1 -0
  5. package/dist/PACKAGE.js +5 -0
  6. package/dist/abstract/app-info.d.ts +8 -0
  7. package/dist/abstract/app-info.d.ts.map +1 -0
  8. package/dist/abstract/app-info.js +8 -0
  9. package/dist/abstract/app-name.d.ts +15 -0
  10. package/dist/abstract/app-name.d.ts.map +1 -0
  11. package/dist/abstract/app-name.js +28 -0
  12. package/dist/abstract/base-builder.d.ts +4 -0
  13. package/dist/abstract/base-builder.d.ts.map +1 -0
  14. package/dist/abstract/base-builder.js +3 -0
  15. package/dist/abstract/element-base-builder.d.ts +7 -0
  16. package/dist/abstract/element-base-builder.d.ts.map +1 -0
  17. package/dist/abstract/element-base-builder.js +11 -0
  18. package/dist/abstract/generic.d.ts +31 -0
  19. package/dist/abstract/generic.d.ts.map +1 -0
  20. package/dist/abstract/generic.js +2 -0
  21. package/dist/abstract/index.d.ts +12 -0
  22. package/dist/abstract/index.d.ts.map +1 -0
  23. package/dist/abstract/index.js +11 -0
  24. package/dist/abstract/register.d.ts +31 -0
  25. package/dist/abstract/register.d.ts.map +1 -0
  26. package/dist/abstract/register.js +48 -0
  27. package/dist/abstract/sdk.expression.d.ts +43 -0
  28. package/dist/abstract/sdk.expression.d.ts.map +1 -0
  29. package/dist/abstract/sdk.expression.js +175 -0
  30. package/dist/abstract/sdk.text.d.ts +23 -0
  31. package/dist/abstract/sdk.text.d.ts.map +1 -0
  32. package/dist/abstract/sdk.text.js +110 -0
  33. package/dist/abstract/sdk.types.d.ts +16 -0
  34. package/dist/abstract/sdk.types.d.ts.map +1 -0
  35. package/dist/abstract/sdk.types.js +88 -0
  36. package/dist/abstract/zod.strata.d.ts +17 -0
  37. package/dist/abstract/zod.strata.d.ts.map +1 -0
  38. package/dist/abstract/zod.strata.js +11 -0
  39. package/dist/abstract/zod.types.d.ts +1937 -0
  40. package/dist/abstract/zod.types.d.ts.map +1 -0
  41. package/dist/abstract/zod.types.js +848 -0
  42. package/dist/action/action-definition.builder.d.ts +16 -0
  43. package/dist/action/action-definition.builder.d.ts.map +1 -0
  44. package/dist/action/action-definition.builder.js +35 -0
  45. package/dist/action/action.descriptor.d.ts +8 -0
  46. package/dist/action/action.descriptor.d.ts.map +1 -0
  47. package/dist/action/action.descriptor.js +2 -0
  48. package/dist/action/index.d.ts +57 -0
  49. package/dist/action/index.d.ts.map +1 -0
  50. package/dist/action/index.js +48 -0
  51. package/dist/action/ja.abstract.d.ts +33 -0
  52. package/dist/action/ja.abstract.d.ts.map +1 -0
  53. package/dist/action/ja.abstract.js +58 -0
  54. package/dist/action/ja.action-definition.d.ts +11 -0
  55. package/dist/action/ja.action-definition.d.ts.map +1 -0
  56. package/dist/action/ja.action-definition.js +12 -0
  57. package/dist/action/ja.action-list.d.ts +9 -0
  58. package/dist/action/ja.action-list.d.ts.map +1 -0
  59. package/dist/action/ja.action-list.js +15 -0
  60. package/dist/action/ja.clear-queue.d.ts +9 -0
  61. package/dist/action/ja.clear-queue.d.ts.map +1 -0
  62. package/dist/action/ja.clear-queue.js +9 -0
  63. package/dist/action/ja.color.d.ts +3 -0
  64. package/dist/action/ja.color.d.ts.map +1 -0
  65. package/dist/action/ja.color.js +2 -0
  66. package/dist/action/ja.confirm.abstract.d.ts +16 -0
  67. package/dist/action/ja.confirm.abstract.d.ts.map +1 -0
  68. package/dist/action/ja.confirm.abstract.js +25 -0
  69. package/dist/action/ja.confirm.d.ts +23 -0
  70. package/dist/action/ja.confirm.d.ts.map +1 -0
  71. package/dist/action/ja.confirm.js +28 -0
  72. package/dist/action/ja.delete-queue-command.d.ts +9 -0
  73. package/dist/action/ja.delete-queue-command.d.ts.map +1 -0
  74. package/dist/action/ja.delete-queue-command.js +9 -0
  75. package/dist/action/ja.delete-sync-scope.d.ts +10 -0
  76. package/dist/action/ja.delete-sync-scope.d.ts.map +1 -0
  77. package/dist/action/ja.delete-sync-scope.js +14 -0
  78. package/dist/action/ja.delete-sync-status.d.ts +9 -0
  79. package/dist/action/ja.delete-sync-status.d.ts.map +1 -0
  80. package/dist/action/ja.delete-sync-status.js +9 -0
  81. package/dist/action/ja.evaluate.d.ts +12 -0
  82. package/dist/action/ja.evaluate.d.ts.map +1 -0
  83. package/dist/action/ja.evaluate.js +9 -0
  84. package/dist/action/ja.execute-action.d.ts +11 -0
  85. package/dist/action/ja.execute-action.d.ts.map +1 -0
  86. package/dist/action/ja.execute-action.js +15 -0
  87. package/dist/action/ja.execute-entities.d.ts +7 -0
  88. package/dist/action/ja.execute-entities.d.ts.map +1 -0
  89. package/dist/action/ja.execute-entities.js +8 -0
  90. package/dist/action/ja.execute-entity.abstract.d.ts +41 -0
  91. package/dist/action/ja.execute-entity.abstract.d.ts.map +1 -0
  92. package/dist/action/ja.execute-entity.abstract.js +104 -0
  93. package/dist/action/ja.execute-entity.d.ts +6 -0
  94. package/dist/action/ja.execute-entity.d.ts.map +1 -0
  95. package/dist/action/ja.execute-entity.dynamic-data.d.ts +6 -0
  96. package/dist/action/ja.execute-entity.dynamic-data.d.ts.map +1 -0
  97. package/dist/action/ja.execute-entity.dynamic-data.js +2 -0
  98. package/dist/action/ja.execute-entity.generic.d.ts +11 -0
  99. package/dist/action/ja.execute-entity.generic.d.ts.map +1 -0
  100. package/dist/action/ja.execute-entity.generic.js +2 -0
  101. package/dist/action/ja.execute-entity.js +8 -0
  102. package/dist/action/ja.execute-entity.sql.d.ts +12 -0
  103. package/dist/action/ja.execute-entity.sql.d.ts.map +1 -0
  104. package/dist/action/ja.execute-entity.sql.js +2 -0
  105. package/dist/action/ja.execute-sql.abstract.d.ts +6 -0
  106. package/dist/action/ja.execute-sql.abstract.d.ts.map +1 -0
  107. package/dist/action/ja.execute-sql.abstract.js +2 -0
  108. package/dist/action/ja.execute-sql.d.ts +16 -0
  109. package/dist/action/ja.execute-sql.d.ts.map +1 -0
  110. package/dist/action/ja.execute-sql.js +64 -0
  111. package/dist/action/ja.find-replace.d.ts +12 -0
  112. package/dist/action/ja.find-replace.d.ts.map +1 -0
  113. package/dist/action/ja.find-replace.js +22 -0
  114. package/dist/action/ja.generate-file.d.ts +11 -0
  115. package/dist/action/ja.generate-file.d.ts.map +1 -0
  116. package/dist/action/ja.generate-file.js +19 -0
  117. package/dist/action/ja.generate-pdf.d.ts +10 -0
  118. package/dist/action/ja.generate-pdf.d.ts.map +1 -0
  119. package/dist/action/ja.generate-pdf.js +10 -0
  120. package/dist/action/ja.go-back.d.ts +9 -0
  121. package/dist/action/ja.go-back.d.ts.map +1 -0
  122. package/dist/action/ja.go-back.js +11 -0
  123. package/dist/action/ja.go-to.d.ts +18 -0
  124. package/dist/action/ja.go-to.d.ts.map +1 -0
  125. package/dist/action/ja.go-to.js +41 -0
  126. package/dist/action/ja.in-background.d.ts +95 -0
  127. package/dist/action/ja.in-background.d.ts.map +1 -0
  128. package/dist/action/ja.in-background.factory.d.ts +88 -0
  129. package/dist/action/ja.in-background.factory.d.ts.map +1 -0
  130. package/dist/action/ja.in-background.factory.js +98 -0
  131. package/dist/action/ja.in-background.js +247 -0
  132. package/dist/action/ja.info-modal.d.ts +37 -0
  133. package/dist/action/ja.info-modal.d.ts.map +1 -0
  134. package/dist/action/ja.info-modal.js +61 -0
  135. package/dist/action/ja.jig-actions.d.ts +16 -0
  136. package/dist/action/ja.jig-actions.d.ts.map +1 -0
  137. package/dist/action/ja.jig-actions.js +35 -0
  138. package/dist/action/ja.on-button.factory.d.ts +89 -0
  139. package/dist/action/ja.on-button.factory.d.ts.map +1 -0
  140. package/dist/action/ja.on-button.factory.js +86 -0
  141. package/dist/action/ja.open-app-settings.d.ts +6 -0
  142. package/dist/action/ja.open-app-settings.d.ts.map +1 -0
  143. package/dist/action/ja.open-app-settings.js +8 -0
  144. package/dist/action/ja.open-map.abstract.d.ts +6 -0
  145. package/dist/action/ja.open-map.abstract.d.ts.map +1 -0
  146. package/dist/action/ja.open-map.abstract.js +2 -0
  147. package/dist/action/ja.open-map.d.ts +11 -0
  148. package/dist/action/ja.open-map.d.ts.map +1 -0
  149. package/dist/action/ja.open-map.js +25 -0
  150. package/dist/action/ja.open-media-picker.abstract.d.ts +8 -0
  151. package/dist/action/ja.open-media-picker.abstract.d.ts.map +1 -0
  152. package/dist/action/ja.open-media-picker.abstract.js +2 -0
  153. package/dist/action/ja.open-media-picker.d.ts +18 -0
  154. package/dist/action/ja.open-media-picker.d.ts.map +1 -0
  155. package/dist/action/ja.open-media-picker.js +46 -0
  156. package/dist/action/ja.open-scanner.d.ts +14 -0
  157. package/dist/action/ja.open-scanner.d.ts.map +1 -0
  158. package/dist/action/ja.open-scanner.js +23 -0
  159. package/dist/action/ja.open-url.d.ts +10 -0
  160. package/dist/action/ja.open-url.d.ts.map +1 -0
  161. package/dist/action/ja.open-url.js +13 -0
  162. package/dist/action/ja.print.d.ts +10 -0
  163. package/dist/action/ja.print.d.ts.map +1 -0
  164. package/dist/action/ja.print.js +17 -0
  165. package/dist/action/ja.reset-application-state.d.ts +9 -0
  166. package/dist/action/ja.reset-application-state.d.ts.map +1 -0
  167. package/dist/action/ja.reset-application-state.js +12 -0
  168. package/dist/action/ja.reset-component-state.d.ts +9 -0
  169. package/dist/action/ja.reset-component-state.d.ts.map +1 -0
  170. package/dist/action/ja.reset-component-state.js +13 -0
  171. package/dist/action/ja.reset-screen-state.d.ts +9 -0
  172. package/dist/action/ja.reset-screen-state.d.ts.map +1 -0
  173. package/dist/action/ja.reset-screen-state.js +12 -0
  174. package/dist/action/ja.reset-state.d.ts +9 -0
  175. package/dist/action/ja.reset-state.d.ts.map +1 -0
  176. package/dist/action/ja.reset-state.js +13 -0
  177. package/dist/action/ja.retry-queue-command.d.ts +9 -0
  178. package/dist/action/ja.retry-queue-command.d.ts.map +1 -0
  179. package/dist/action/ja.retry-queue-command.js +9 -0
  180. package/dist/action/ja.sdk.d.ts +4 -0
  181. package/dist/action/ja.sdk.d.ts.map +1 -0
  182. package/dist/action/ja.sdk.js +2 -0
  183. package/dist/action/ja.set-active-tab.d.ts +13 -0
  184. package/dist/action/ja.set-active-tab.d.ts.map +1 -0
  185. package/dist/action/ja.set-active-tab.js +29 -0
  186. package/dist/action/ja.set-application-state.d.ts +9 -0
  187. package/dist/action/ja.set-application-state.d.ts.map +1 -0
  188. package/dist/action/ja.set-application-state.js +17 -0
  189. package/dist/action/ja.set-screen-state.d.ts +9 -0
  190. package/dist/action/ja.set-screen-state.d.ts.map +1 -0
  191. package/dist/action/ja.set-screen-state.js +12 -0
  192. package/dist/action/ja.share.d.ts +12 -0
  193. package/dist/action/ja.share.d.ts.map +1 -0
  194. package/dist/action/ja.share.js +23 -0
  195. package/dist/action/ja.show-alert.d.ts +33 -0
  196. package/dist/action/ja.show-alert.d.ts.map +1 -0
  197. package/dist/action/ja.show-alert.js +61 -0
  198. package/dist/action/ja.start-location-sharing.abstract.d.ts +6 -0
  199. package/dist/action/ja.start-location-sharing.abstract.d.ts.map +1 -0
  200. package/dist/action/ja.start-location-sharing.abstract.js +2 -0
  201. package/dist/action/ja.start-location-sharing.d.ts +18 -0
  202. package/dist/action/ja.start-location-sharing.d.ts.map +1 -0
  203. package/dist/action/ja.start-location-sharing.js +33 -0
  204. package/dist/action/ja.start-sync-scope.d.ts +9 -0
  205. package/dist/action/ja.start-sync-scope.d.ts.map +1 -0
  206. package/dist/action/ja.start-sync-scope.js +18 -0
  207. package/dist/action/ja.stop-location-sharing.d.ts +6 -0
  208. package/dist/action/ja.stop-location-sharing.d.ts.map +1 -0
  209. package/dist/action/ja.stop-location-sharing.js +8 -0
  210. package/dist/action/ja.submit-form.abstract.d.ts +11 -0
  211. package/dist/action/ja.submit-form.abstract.d.ts.map +1 -0
  212. package/dist/action/ja.submit-form.abstract.js +2 -0
  213. package/dist/action/ja.submit-form.d.ts +31 -0
  214. package/dist/action/ja.submit-form.d.ts.map +1 -0
  215. package/dist/action/ja.submit-form.js +124 -0
  216. package/dist/action/ja.swipeable-action.d.ts +19 -0
  217. package/dist/action/ja.swipeable-action.d.ts.map +1 -0
  218. package/dist/action/ja.swipeable-action.js +25 -0
  219. package/dist/action/ja.sync-entities.abstract.d.ts +25 -0
  220. package/dist/action/ja.sync-entities.abstract.d.ts.map +1 -0
  221. package/dist/action/ja.sync-entities.abstract.js +2 -0
  222. package/dist/action/ja.sync-entities.d.ts +32 -0
  223. package/dist/action/ja.sync-entities.d.ts.map +1 -0
  224. package/dist/action/ja.sync-entities.js +142 -0
  225. package/dist/action/ja.update-profile.d.ts +12 -0
  226. package/dist/action/ja.update-profile.d.ts.map +1 -0
  227. package/dist/action/ja.update-profile.js +20 -0
  228. package/dist/application/application.sdk.d.ts +84 -0
  229. package/dist/application/application.sdk.d.ts.map +1 -0
  230. package/dist/application/application.sdk.js +217 -0
  231. package/dist/application/application.tab.d.ts +20 -0
  232. package/dist/application/application.tab.d.ts.map +1 -0
  233. package/dist/application/application.tab.js +45 -0
  234. package/dist/application/context.sdk.d.ts +48 -0
  235. package/dist/application/context.sdk.d.ts.map +1 -0
  236. package/dist/application/context.sdk.js +116 -0
  237. package/dist/application/index.d.ts +4 -0
  238. package/dist/application/index.d.ts.map +1 -0
  239. package/dist/application/index.js +4 -0
  240. package/dist/assets/example-extraction-cache.json +9 -0
  241. package/dist/assets/extracted-core-sdk-examples.yaml +44440 -0
  242. package/dist/assets/extracted-core-sdk-types.yaml +12100 -0
  243. package/dist/assets/stream-line-icons.csv +19281 -0
  244. package/dist/assets/type-extraction-cache.json +9 -0
  245. package/dist/builder/application-analyzer/application-analyzer.d.ts +42 -0
  246. package/dist/builder/application-analyzer/application-analyzer.d.ts.map +1 -0
  247. package/dist/builder/application-analyzer/application-analyzer.js +150 -0
  248. package/dist/builder/application-analyzer/create-application-analyzer.d.ts +17 -0
  249. package/dist/builder/application-analyzer/create-application-analyzer.d.ts.map +1 -0
  250. package/dist/builder/application-analyzer/create-application-analyzer.js +121 -0
  251. package/dist/builder/application-analyzer/index.d.ts +5 -0
  252. package/dist/builder/application-analyzer/index.d.ts.map +1 -0
  253. package/dist/builder/application-analyzer/index.js +5 -0
  254. package/dist/builder/application-analyzer/select-component-nodes.d.ts +7 -0
  255. package/dist/builder/application-analyzer/select-component-nodes.d.ts.map +1 -0
  256. package/dist/builder/application-analyzer/select-component-nodes.js +15 -0
  257. package/dist/builder/application-analyzer/select-datasource-node-by-id.d.ts +8 -0
  258. package/dist/builder/application-analyzer/select-datasource-node-by-id.d.ts.map +1 -0
  259. package/dist/builder/application-analyzer/select-datasource-node-by-id.js +20 -0
  260. package/dist/builder/application-analyzer/types.d.ts +60 -0
  261. package/dist/builder/application-analyzer/types.d.ts.map +1 -0
  262. package/dist/builder/application-analyzer/types.js +16 -0
  263. package/dist/builder/application-analyzer/utils.d.ts +3 -0
  264. package/dist/builder/application-analyzer/utils.d.ts.map +1 -0
  265. package/dist/builder/application-analyzer/utils.js +8 -0
  266. package/dist/builder/builder.d.ts +8 -0
  267. package/dist/builder/builder.d.ts.map +1 -0
  268. package/dist/builder/builder.js +54 -0
  269. package/dist/builder/index.d.ts +5 -0
  270. package/dist/builder/index.d.ts.map +1 -0
  271. package/dist/builder/index.js +4 -0
  272. package/dist/builder/transform-summary.d.ts +3 -0
  273. package/dist/builder/transform-summary.d.ts.map +1 -0
  274. package/dist/builder/transform-summary.js +39 -0
  275. package/dist/builder/types.d.ts +8 -0
  276. package/dist/builder/types.d.ts.map +1 -0
  277. package/dist/builder/types.js +2 -0
  278. package/dist/builder/validate-datasource-ids.d.ts +17 -0
  279. package/dist/builder/validate-datasource-ids.d.ts.map +1 -0
  280. package/dist/builder/validate-datasource-ids.js +51 -0
  281. package/dist/component/common/index.d.ts +22 -0
  282. package/dist/component/common/index.d.ts.map +1 -0
  283. package/dist/component/common/index.js +16 -0
  284. package/dist/component/common/jc.avatar-field.types.d.ts +9 -0
  285. package/dist/component/common/jc.avatar-field.types.d.ts.map +1 -0
  286. package/dist/component/common/jc.avatar-field.types.js +11 -0
  287. package/dist/component/common/jc.chart.common.abstract.d.ts +85 -0
  288. package/dist/component/common/jc.chart.common.abstract.d.ts.map +1 -0
  289. package/dist/component/common/jc.chart.common.abstract.js +2 -0
  290. package/dist/component/common/jc.chart.common.builders.d.ts +37 -0
  291. package/dist/component/common/jc.chart.common.builders.d.ts.map +1 -0
  292. package/dist/component/common/jc.chart.common.builders.js +81 -0
  293. package/dist/component/common/jc.component.types.d.ts +101 -0
  294. package/dist/component/common/jc.component.types.d.ts.map +1 -0
  295. package/dist/component/common/jc.component.types.js +144 -0
  296. package/dist/component/common/jc.context.d.ts +7 -0
  297. package/dist/component/common/jc.context.d.ts.map +1 -0
  298. package/dist/component/common/jc.context.js +2 -0
  299. package/dist/component/common/jc.element.types.d.ts +14 -0
  300. package/dist/component/common/jc.element.types.d.ts.map +1 -0
  301. package/dist/component/common/jc.element.types.js +13 -0
  302. package/dist/component/common/jc.field-base.builder.d.ts +21 -0
  303. package/dist/component/common/jc.field-base.builder.d.ts.map +1 -0
  304. package/dist/component/common/jc.field-base.builder.js +101 -0
  305. package/dist/component/common/jc.field-base.types.d.ts +28 -0
  306. package/dist/component/common/jc.field-base.types.d.ts.map +1 -0
  307. package/dist/component/common/jc.field-base.types.js +2 -0
  308. package/dist/component/common/jc.left-right.element.avatar.d.ts +11 -0
  309. package/dist/component/common/jc.left-right.element.avatar.d.ts.map +1 -0
  310. package/dist/component/common/jc.left-right.element.avatar.js +18 -0
  311. package/dist/component/common/jc.left-right.element.badge.d.ts +11 -0
  312. package/dist/component/common/jc.left-right.element.badge.d.ts.map +1 -0
  313. package/dist/component/common/jc.left-right.element.badge.js +17 -0
  314. package/dist/component/common/jc.left-right.element.button.d.ts +11 -0
  315. package/dist/component/common/jc.left-right.element.button.d.ts.map +1 -0
  316. package/dist/component/common/jc.left-right.element.button.js +14 -0
  317. package/dist/component/common/jc.left-right.element.checkbox.d.ts +13 -0
  318. package/dist/component/common/jc.left-right.element.checkbox.d.ts.map +1 -0
  319. package/dist/component/common/jc.left-right.element.checkbox.js +21 -0
  320. package/dist/component/common/jc.left-right.element.d.ts +31 -0
  321. package/dist/component/common/jc.left-right.element.d.ts.map +1 -0
  322. package/dist/component/common/jc.left-right.element.icon.d.ts +18 -0
  323. package/dist/component/common/jc.left-right.element.icon.d.ts.map +1 -0
  324. package/dist/component/common/jc.left-right.element.icon.js +32 -0
  325. package/dist/component/common/jc.left-right.element.image.d.ts +16 -0
  326. package/dist/component/common/jc.left-right.element.image.d.ts.map +1 -0
  327. package/dist/component/common/jc.left-right.element.image.js +29 -0
  328. package/dist/component/common/jc.left-right.element.js +2 -0
  329. package/dist/component/common/jc.left-right.element.progress.d.ts +11 -0
  330. package/dist/component/common/jc.left-right.element.progress.d.ts.map +1 -0
  331. package/dist/component/common/jc.left-right.element.progress.js +17 -0
  332. package/dist/component/common/jc.left-right.element.switch.d.ts +13 -0
  333. package/dist/component/common/jc.left-right.element.switch.d.ts.map +1 -0
  334. package/dist/component/common/jc.left-right.element.switch.js +21 -0
  335. package/dist/component/common/jc.left-right.element.value.d.ts +10 -0
  336. package/dist/component/common/jc.left-right.element.value.d.ts.map +1 -0
  337. package/dist/component/common/jc.left-right.element.value.js +12 -0
  338. package/dist/component/common/jc.picker-field-options.types.d.ts +13 -0
  339. package/dist/component/common/jc.picker-field-options.types.d.ts.map +1 -0
  340. package/dist/component/common/jc.picker-field-options.types.js +2 -0
  341. package/dist/component/common/jc.text.types.d.ts +6 -0
  342. package/dist/component/common/jc.text.types.d.ts.map +1 -0
  343. package/dist/component/common/jc.text.types.js +2 -0
  344. package/dist/component/common/jc.validation.d.ts +9 -0
  345. package/dist/component/common/jc.validation.d.ts.map +1 -0
  346. package/dist/component/common/jc.validation.js +48 -0
  347. package/dist/component/index.d.ts +86 -0
  348. package/dist/component/index.d.ts.map +1 -0
  349. package/dist/component/index.js +83 -0
  350. package/dist/component/jc.abstract.d.ts +32 -0
  351. package/dist/component/jc.abstract.d.ts.map +1 -0
  352. package/dist/component/jc.abstract.factory.d.ts +488 -0
  353. package/dist/component/jc.abstract.factory.d.ts.map +1 -0
  354. package/dist/component/jc.abstract.factory.js +757 -0
  355. package/dist/component/jc.abstract.js +53 -0
  356. package/dist/component/jc.abstract.utils.d.ts +3 -0
  357. package/dist/component/jc.abstract.utils.d.ts.map +1 -0
  358. package/dist/component/jc.abstract.utils.js +26 -0
  359. package/dist/component/jc.amount-control.d.ts +16 -0
  360. package/dist/component/jc.amount-control.d.ts.map +1 -0
  361. package/dist/component/jc.amount-control.js +36 -0
  362. package/dist/component/jc.avatar-field.d.ts +11 -0
  363. package/dist/component/jc.avatar-field.d.ts.map +1 -0
  364. package/dist/component/jc.avatar-field.js +27 -0
  365. package/dist/component/jc.avatar.d.ts +14 -0
  366. package/dist/component/jc.avatar.d.ts.map +1 -0
  367. package/dist/component/jc.avatar.js +26 -0
  368. package/dist/component/jc.banner.d.ts +81 -0
  369. package/dist/component/jc.banner.d.ts.map +1 -0
  370. package/dist/component/jc.banner.js +49 -0
  371. package/dist/component/jc.bar-chart.d.ts +23 -0
  372. package/dist/component/jc.bar-chart.d.ts.map +1 -0
  373. package/dist/component/jc.bar-chart.js +45 -0
  374. package/dist/component/jc.button.d.ts +20 -0
  375. package/dist/component/jc.button.d.ts.map +1 -0
  376. package/dist/component/jc.button.js +39 -0
  377. package/dist/component/jc.card.abstract.d.ts +14 -0
  378. package/dist/component/jc.card.abstract.d.ts.map +1 -0
  379. package/dist/component/jc.card.abstract.js +31 -0
  380. package/dist/component/jc.card.on-default.d.ts +91 -0
  381. package/dist/component/jc.card.on-default.d.ts.map +1 -0
  382. package/dist/component/jc.card.on-default.js +96 -0
  383. package/dist/component/jc.carousel.d.ts +31 -0
  384. package/dist/component/jc.carousel.d.ts.map +1 -0
  385. package/dist/component/jc.carousel.js +58 -0
  386. package/dist/component/jc.chat-message.d.ts +17 -0
  387. package/dist/component/jc.chat-message.d.ts.map +1 -0
  388. package/dist/component/jc.chat-message.js +32 -0
  389. package/dist/component/jc.chat.d.ts +23 -0
  390. package/dist/component/jc.chat.d.ts.map +1 -0
  391. package/dist/component/jc.chat.js +68 -0
  392. package/dist/component/jc.checkbox.d.ts +15 -0
  393. package/dist/component/jc.checkbox.d.ts.map +1 -0
  394. package/dist/component/jc.checkbox.js +38 -0
  395. package/dist/component/jc.choice-field-item.d.ts +15 -0
  396. package/dist/component/jc.choice-field-item.d.ts.map +1 -0
  397. package/dist/component/jc.choice-field-item.js +41 -0
  398. package/dist/component/jc.choice-field.d.ts +21 -0
  399. package/dist/component/jc.choice-field.d.ts.map +1 -0
  400. package/dist/component/jc.choice-field.js +34 -0
  401. package/dist/component/jc.count-down.d.ts +18 -0
  402. package/dist/component/jc.count-down.d.ts.map +1 -0
  403. package/dist/component/jc.count-down.js +55 -0
  404. package/dist/component/jc.count-up.d.ts +15 -0
  405. package/dist/component/jc.count-up.d.ts.map +1 -0
  406. package/dist/component/jc.count-up.js +42 -0
  407. package/dist/component/jc.custom-component.interop.d.ts +58 -0
  408. package/dist/component/jc.custom-component.interop.d.ts.map +1 -0
  409. package/dist/component/jc.custom-component.interop.js +115 -0
  410. package/dist/component/jc.date-picker.d.ts +15 -0
  411. package/dist/component/jc.date-picker.d.ts.map +1 -0
  412. package/dist/component/jc.date-picker.js +31 -0
  413. package/dist/component/jc.divider.d.ts +7 -0
  414. package/dist/component/jc.divider.d.ts.map +1 -0
  415. package/dist/component/jc.divider.js +8 -0
  416. package/dist/component/jc.dropdown.d.ts +20 -0
  417. package/dist/component/jc.dropdown.d.ts.map +1 -0
  418. package/dist/component/jc.dropdown.item.d.ts +22 -0
  419. package/dist/component/jc.dropdown.item.d.ts.map +1 -0
  420. package/dist/component/jc.dropdown.item.js +85 -0
  421. package/dist/component/jc.dropdown.js +33 -0
  422. package/dist/component/jc.duration-picker.d.ts +18 -0
  423. package/dist/component/jc.duration-picker.d.ts.map +1 -0
  424. package/dist/component/jc.duration-picker.js +35 -0
  425. package/dist/component/jc.email-field.d.ts +11 -0
  426. package/dist/component/jc.email-field.d.ts.map +1 -0
  427. package/dist/component/jc.email-field.js +19 -0
  428. package/dist/component/jc.entity-field.d.ts +23 -0
  429. package/dist/component/jc.entity-field.d.ts.map +1 -0
  430. package/dist/component/jc.entity-field.js +71 -0
  431. package/dist/component/jc.entity.d.ts +15 -0
  432. package/dist/component/jc.entity.d.ts.map +1 -0
  433. package/dist/component/jc.entity.js +27 -0
  434. package/dist/component/jc.event.d.ts +22 -0
  435. package/dist/component/jc.event.d.ts.map +1 -0
  436. package/dist/component/jc.event.js +68 -0
  437. package/dist/component/jc.expander.d.ts +49 -0
  438. package/dist/component/jc.expander.d.ts.map +1 -0
  439. package/dist/component/jc.expander.header.d.ts +25 -0
  440. package/dist/component/jc.expander.header.d.ts.map +1 -0
  441. package/dist/component/jc.expander.header.js +39 -0
  442. package/dist/component/jc.expander.js +53 -0
  443. package/dist/component/jc.field-row.d.ts +34 -0
  444. package/dist/component/jc.field-row.d.ts.map +1 -0
  445. package/dist/component/jc.field-row.entity.d.ts +12 -0
  446. package/dist/component/jc.field-row.entity.d.ts.map +1 -0
  447. package/dist/component/jc.field-row.entity.js +35 -0
  448. package/dist/component/jc.field-row.js +37 -0
  449. package/dist/component/jc.form.d.ts +98 -0
  450. package/dist/component/jc.form.d.ts.map +1 -0
  451. package/dist/component/jc.form.js +127 -0
  452. package/dist/component/jc.gallery-item.d.ts +12 -0
  453. package/dist/component/jc.gallery-item.d.ts.map +1 -0
  454. package/dist/component/jc.gallery-item.js +24 -0
  455. package/dist/component/jc.grid-item.d.ts +15 -0
  456. package/dist/component/jc.grid-item.d.ts.map +1 -0
  457. package/dist/component/jc.grid-item.js +31 -0
  458. package/dist/component/jc.grid.d.ts +16 -0
  459. package/dist/component/jc.grid.d.ts.map +1 -0
  460. package/dist/component/jc.grid.js +64 -0
  461. package/dist/component/jc.guards.d.ts +17 -0
  462. package/dist/component/jc.guards.d.ts.map +1 -0
  463. package/dist/component/jc.guards.js +14 -0
  464. package/dist/component/jc.icon.d.ts +19 -0
  465. package/dist/component/jc.icon.d.ts.map +1 -0
  466. package/dist/component/jc.icon.js +41 -0
  467. package/dist/component/jc.image.abstract.d.ts +28 -0
  468. package/dist/component/jc.image.abstract.d.ts.map +1 -0
  469. package/dist/component/jc.image.abstract.js +52 -0
  470. package/dist/component/jc.image.d.ts +5 -0
  471. package/dist/component/jc.image.d.ts.map +1 -0
  472. package/dist/component/jc.image.js +2 -0
  473. package/dist/component/jc.image.on-carousel.d.ts +23 -0
  474. package/dist/component/jc.image.on-carousel.d.ts.map +1 -0
  475. package/dist/component/jc.image.on-carousel.js +19 -0
  476. package/dist/component/jc.image.on-default.d.ts +25 -0
  477. package/dist/component/jc.image.on-default.d.ts.map +1 -0
  478. package/dist/component/jc.image.on-default.js +22 -0
  479. package/dist/component/jc.interactive-image.d.ts +41 -0
  480. package/dist/component/jc.interactive-image.d.ts.map +1 -0
  481. package/dist/component/jc.interactive-image.item.d.ts +24 -0
  482. package/dist/component/jc.interactive-image.item.d.ts.map +1 -0
  483. package/dist/component/jc.interactive-image.item.js +78 -0
  484. package/dist/component/jc.interactive-image.js +78 -0
  485. package/dist/component/jc.jig-header.d.ts +19 -0
  486. package/dist/component/jc.jig-header.d.ts.map +1 -0
  487. package/dist/component/jc.jig-header.js +42 -0
  488. package/dist/component/jc.jig-widget.d.ts +15 -0
  489. package/dist/component/jc.jig-widget.d.ts.map +1 -0
  490. package/dist/component/jc.jig-widget.js +41 -0
  491. package/dist/component/jc.jig.d.ts +11 -0
  492. package/dist/component/jc.jig.d.ts.map +1 -0
  493. package/dist/component/jc.jig.js +24 -0
  494. package/dist/component/jc.line-chart.d.ts +28 -0
  495. package/dist/component/jc.line-chart.d.ts.map +1 -0
  496. package/dist/component/jc.line-chart.js +45 -0
  497. package/dist/component/jc.list-item.d.ts +106 -0
  498. package/dist/component/jc.list-item.d.ts.map +1 -0
  499. package/dist/component/jc.list-item.js +274 -0
  500. package/dist/component/jc.list-item.standalone.d.ts +13 -0
  501. package/dist/component/jc.list-item.standalone.d.ts.map +1 -0
  502. package/dist/component/jc.list-item.standalone.js +10 -0
  503. package/dist/component/jc.list.abstract.d.ts +36 -0
  504. package/dist/component/jc.list.abstract.d.ts.map +1 -0
  505. package/dist/component/jc.list.abstract.js +2 -0
  506. package/dist/component/jc.list.d.ts +39 -0
  507. package/dist/component/jc.list.d.ts.map +1 -0
  508. package/dist/component/jc.list.js +95 -0
  509. package/dist/component/jc.location.d.ts +41 -0
  510. package/dist/component/jc.location.d.ts.map +1 -0
  511. package/dist/component/jc.location.js +63 -0
  512. package/dist/component/jc.marker-item.d.ts +29 -0
  513. package/dist/component/jc.marker-item.d.ts.map +1 -0
  514. package/dist/component/jc.marker-item.js +48 -0
  515. package/dist/component/jc.media-field.d.ts +13 -0
  516. package/dist/component/jc.media-field.d.ts.map +1 -0
  517. package/dist/component/jc.media-field.js +37 -0
  518. package/dist/component/jc.menu-item.d.ts +89 -0
  519. package/dist/component/jc.menu-item.d.ts.map +1 -0
  520. package/dist/component/jc.menu-item.js +65 -0
  521. package/dist/component/jc.number-field.d.ts +21 -0
  522. package/dist/component/jc.number-field.d.ts.map +1 -0
  523. package/dist/component/jc.number-field.js +33 -0
  524. package/dist/component/jc.pie-chart.d.ts +26 -0
  525. package/dist/component/jc.pie-chart.d.ts.map +1 -0
  526. package/dist/component/jc.pie-chart.js +45 -0
  527. package/dist/component/jc.product-item.amount.d.ts +17 -0
  528. package/dist/component/jc.product-item.amount.d.ts.map +1 -0
  529. package/dist/component/jc.product-item.amount.js +31 -0
  530. package/dist/component/jc.product-item.d.ts +30 -0
  531. package/dist/component/jc.product-item.d.ts.map +1 -0
  532. package/dist/component/jc.product-item.js +68 -0
  533. package/dist/component/jc.progress-bar.d.ts +45 -0
  534. package/dist/component/jc.progress-bar.d.ts.map +1 -0
  535. package/dist/component/jc.progress-bar.js +58 -0
  536. package/dist/component/jc.rating.d.ts +17 -0
  537. package/dist/component/jc.rating.d.ts.map +1 -0
  538. package/dist/component/jc.rating.js +38 -0
  539. package/dist/component/jc.section.abstract.d.ts +87 -0
  540. package/dist/component/jc.section.abstract.d.ts.map +1 -0
  541. package/dist/component/jc.section.abstract.js +33 -0
  542. package/dist/component/jc.section.on-default.d.ts +85 -0
  543. package/dist/component/jc.section.on-default.d.ts.map +1 -0
  544. package/dist/component/jc.section.on-default.js +85 -0
  545. package/dist/component/jc.section.on-entity.d.ts +11 -0
  546. package/dist/component/jc.section.on-entity.d.ts.map +1 -0
  547. package/dist/component/jc.section.on-entity.js +11 -0
  548. package/dist/component/jc.segmented-control.d.ts +23 -0
  549. package/dist/component/jc.segmented-control.d.ts.map +1 -0
  550. package/dist/component/jc.segmented-control.js +66 -0
  551. package/dist/component/jc.signature-field.d.ts +11 -0
  552. package/dist/component/jc.signature-field.d.ts.map +1 -0
  553. package/dist/component/jc.signature-field.js +18 -0
  554. package/dist/component/jc.slider.d.ts +36 -0
  555. package/dist/component/jc.slider.d.ts.map +1 -0
  556. package/dist/component/jc.slider.js +53 -0
  557. package/dist/component/jc.stage.d.ts +23 -0
  558. package/dist/component/jc.stage.d.ts.map +1 -0
  559. package/dist/component/jc.stage.js +31 -0
  560. package/dist/component/jc.step.d.ts +30 -0
  561. package/dist/component/jc.step.d.ts.map +1 -0
  562. package/dist/component/jc.step.js +35 -0
  563. package/dist/component/jc.stepper.d.ts +34 -0
  564. package/dist/component/jc.stepper.d.ts.map +1 -0
  565. package/dist/component/jc.stepper.js +59 -0
  566. package/dist/component/jc.story-group.d.ts +18 -0
  567. package/dist/component/jc.story-group.d.ts.map +1 -0
  568. package/dist/component/jc.story-group.js +27 -0
  569. package/dist/component/jc.summary.abstract.d.ts +15 -0
  570. package/dist/component/jc.summary.abstract.d.ts.map +1 -0
  571. package/dist/component/jc.summary.abstract.js +29 -0
  572. package/dist/component/jc.summary.card.d.ts +14 -0
  573. package/dist/component/jc.summary.card.d.ts.map +1 -0
  574. package/dist/component/jc.summary.card.js +36 -0
  575. package/dist/component/jc.summary.counter.d.ts +12 -0
  576. package/dist/component/jc.summary.counter.d.ts.map +1 -0
  577. package/dist/component/jc.summary.counter.js +28 -0
  578. package/dist/component/jc.summary.default.d.ts +16 -0
  579. package/dist/component/jc.summary.default.d.ts.map +1 -0
  580. package/dist/component/jc.summary.default.js +34 -0
  581. package/dist/component/jc.summary.progress.d.ts +46 -0
  582. package/dist/component/jc.summary.progress.d.ts.map +1 -0
  583. package/dist/component/jc.summary.progress.js +35 -0
  584. package/dist/component/jc.tab-button.d.ts +18 -0
  585. package/dist/component/jc.tab-button.d.ts.map +1 -0
  586. package/dist/component/jc.tab-button.js +43 -0
  587. package/dist/component/jc.text-field.d.ts +20 -0
  588. package/dist/component/jc.text-field.d.ts.map +1 -0
  589. package/dist/component/jc.text-field.js +49 -0
  590. package/dist/component/jc.text.d.ts +24 -0
  591. package/dist/component/jc.text.d.ts.map +1 -0
  592. package/dist/component/jc.text.js +44 -0
  593. package/dist/component/jc.titles.d.ts +19 -0
  594. package/dist/component/jc.titles.d.ts.map +1 -0
  595. package/dist/component/jc.titles.js +34 -0
  596. package/dist/component/jc.trend.d.ts +18 -0
  597. package/dist/component/jc.trend.d.ts.map +1 -0
  598. package/dist/component/jc.trend.js +31 -0
  599. package/dist/component/jc.types.d.ts +75 -0
  600. package/dist/component/jc.types.d.ts.map +1 -0
  601. package/dist/component/jc.types.js +74 -0
  602. package/dist/component/jc.video-player.abstract.d.ts +28 -0
  603. package/dist/component/jc.video-player.abstract.d.ts.map +1 -0
  604. package/dist/component/jc.video-player.abstract.js +38 -0
  605. package/dist/component/jc.video-player.d.ts +4 -0
  606. package/dist/component/jc.video-player.d.ts.map +1 -0
  607. package/dist/component/jc.video-player.js +2 -0
  608. package/dist/component/jc.video-player.on-jig.d.ts +25 -0
  609. package/dist/component/jc.video-player.on-jig.d.ts.map +1 -0
  610. package/dist/component/jc.video-player.on-jig.js +31 -0
  611. package/dist/component/jc.view.d.ts +158 -0
  612. package/dist/component/jc.view.d.ts.map +1 -0
  613. package/dist/component/jc.view.js +85 -0
  614. package/dist/component/jc.web-view.abstract.d.ts +15 -0
  615. package/dist/component/jc.web-view.abstract.d.ts.map +1 -0
  616. package/dist/component/jc.web-view.abstract.js +33 -0
  617. package/dist/component/jc.web-view.on-default.d.ts +5 -0
  618. package/dist/component/jc.web-view.on-default.d.ts.map +1 -0
  619. package/dist/component/jc.web-view.on-default.js +4 -0
  620. package/dist/component/jc.web-view.on-full.d.ts +10 -0
  621. package/dist/component/jc.web-view.on-full.d.ts.map +1 -0
  622. package/dist/component/jc.web-view.on-full.js +14 -0
  623. package/dist/database/database.abstract.d.ts +39 -0
  624. package/dist/database/database.abstract.d.ts.map +1 -0
  625. package/dist/database/database.abstract.js +42 -0
  626. package/dist/database/index.d.ts +2 -0
  627. package/dist/database/index.d.ts.map +1 -0
  628. package/dist/database/index.js +2 -0
  629. package/dist/datasource/datasource.abstract.d.ts +39 -0
  630. package/dist/datasource/datasource.abstract.d.ts.map +1 -0
  631. package/dist/datasource/datasource.abstract.js +47 -0
  632. package/dist/datasource/datasource.descriptor.d.ts +11 -0
  633. package/dist/datasource/datasource.descriptor.d.ts.map +1 -0
  634. package/dist/datasource/datasource.descriptor.js +2 -0
  635. package/dist/datasource/datasource.reference.d.ts +33 -0
  636. package/dist/datasource/datasource.reference.d.ts.map +1 -0
  637. package/dist/datasource/datasource.reference.js +66 -0
  638. package/dist/datasource/datasource.sdk.d.ts +7 -0
  639. package/dist/datasource/datasource.sdk.d.ts.map +1 -0
  640. package/dist/datasource/datasource.sdk.js +5 -0
  641. package/dist/datasource/datasource.sqlite.d.ts +88 -0
  642. package/dist/datasource/datasource.sqlite.d.ts.map +1 -0
  643. package/dist/datasource/datasource.sqlite.js +286 -0
  644. package/dist/datasource/datasource.static.d.ts +21 -0
  645. package/dist/datasource/datasource.static.d.ts.map +1 -0
  646. package/dist/datasource/datasource.static.js +30 -0
  647. package/dist/datasource/datasource.system.d.ts +18 -0
  648. package/dist/datasource/datasource.system.d.ts.map +1 -0
  649. package/dist/datasource/datasource.system.js +10 -0
  650. package/dist/datasource/entity.descriptor.d.ts +9 -0
  651. package/dist/datasource/entity.descriptor.d.ts.map +1 -0
  652. package/dist/datasource/entity.descriptor.js +2 -0
  653. package/dist/datasource/index.d.ts +11 -0
  654. package/dist/datasource/index.d.ts.map +1 -0
  655. package/dist/datasource/index.js +9 -0
  656. package/dist/datasource/sqlite-normalizer.d.ts +3 -0
  657. package/dist/datasource/sqlite-normalizer.d.ts.map +1 -0
  658. package/dist/datasource/sqlite-normalizer.js +194 -0
  659. package/dist/datasource/sqlite-validator.d.ts +28 -0
  660. package/dist/datasource/sqlite-validator.d.ts.map +1 -0
  661. package/dist/datasource/sqlite-validator.js +218 -0
  662. package/dist/function/function.abstract.d.ts +538 -0
  663. package/dist/function/function.abstract.d.ts.map +1 -0
  664. package/dist/function/function.abstract.js +271 -0
  665. package/dist/function/function.guard.d.ts +17 -0
  666. package/dist/function/function.guard.d.ts.map +1 -0
  667. package/dist/function/function.guard.js +62 -0
  668. package/dist/function/function.operation.d.ts +26 -0
  669. package/dist/function/function.operation.d.ts.map +1 -0
  670. package/dist/function/function.operation.js +118 -0
  671. package/dist/function/function.rest.continuation.d.ts +12 -0
  672. package/dist/function/function.rest.continuation.d.ts.map +1 -0
  673. package/dist/function/function.rest.continuation.js +24 -0
  674. package/dist/function/function.rest.d.ts +31 -0
  675. package/dist/function/function.rest.d.ts.map +1 -0
  676. package/dist/function/function.rest.error-builder.d.ts +38 -0
  677. package/dist/function/function.rest.error-builder.d.ts.map +1 -0
  678. package/dist/function/function.rest.error-builder.js +161 -0
  679. package/dist/function/function.rest.js +72 -0
  680. package/dist/function/function.rest.parameter-builder.d.ts +33 -0
  681. package/dist/function/function.rest.parameter-builder.d.ts.map +1 -0
  682. package/dist/function/function.rest.parameter-builder.js +81 -0
  683. package/dist/function/function.rest.types.d.ts +28 -0
  684. package/dist/function/function.rest.types.d.ts.map +1 -0
  685. package/dist/function/function.rest.types.js +2 -0
  686. package/dist/function/function.sdk.d.ts +10 -0
  687. package/dist/function/function.sdk.d.ts.map +1 -0
  688. package/dist/function/function.sdk.js +12 -0
  689. package/dist/function/function.soap.d.ts +19 -0
  690. package/dist/function/function.soap.d.ts.map +1 -0
  691. package/dist/function/function.soap.js +36 -0
  692. package/dist/function/function.soap.parameter-builder.d.ts +25 -0
  693. package/dist/function/function.soap.parameter-builder.d.ts.map +1 -0
  694. package/dist/function/function.soap.parameter-builder.js +41 -0
  695. package/dist/function/function.soap.types.d.ts +17 -0
  696. package/dist/function/function.soap.types.d.ts.map +1 -0
  697. package/dist/function/function.soap.types.js +2 -0
  698. package/dist/function/function.sql.d.ts +20 -0
  699. package/dist/function/function.sql.d.ts.map +1 -0
  700. package/dist/function/function.sql.js +53 -0
  701. package/dist/function/function.sql.parameter-builder.d.ts +24 -0
  702. package/dist/function/function.sql.parameter-builder.d.ts.map +1 -0
  703. package/dist/function/function.sql.parameter-builder.js +44 -0
  704. package/dist/function/function.sql.types.d.ts +20 -0
  705. package/dist/function/function.sql.types.d.ts.map +1 -0
  706. package/dist/function/function.sql.types.js +2 -0
  707. package/dist/function/function.types.d.ts +7 -0
  708. package/dist/function/function.types.d.ts.map +1 -0
  709. package/dist/function/function.types.js +2 -0
  710. package/dist/function/index.d.ts +17 -0
  711. package/dist/function/index.d.ts.map +1 -0
  712. package/dist/function/index.js +13 -0
  713. package/dist/icon/index.d.ts +3 -0
  714. package/dist/icon/index.d.ts.map +1 -0
  715. package/dist/icon/index.js +3 -0
  716. package/dist/icon/sdk.icon.d.ts +10 -0
  717. package/dist/icon/sdk.icon.d.ts.map +1 -0
  718. package/dist/icon/sdk.icon.data.d.ts +7 -0
  719. package/dist/icon/sdk.icon.data.d.ts.map +1 -0
  720. package/dist/icon/sdk.icon.data.js +19283 -0
  721. package/dist/icon/sdk.icon.js +27 -0
  722. package/dist/icon/sdk.icon.loader.d.ts +7 -0
  723. package/dist/icon/sdk.icon.loader.d.ts.map +1 -0
  724. package/dist/icon/sdk.icon.loader.js +15 -0
  725. package/dist/icon/sdk.icon.name.d.ts +7 -0
  726. package/dist/icon/sdk.icon.name.d.ts.map +1 -0
  727. package/dist/icon/sdk.icon.name.js +19305 -0
  728. package/dist/index.d.ts +14 -0
  729. package/dist/index.d.ts.map +1 -0
  730. package/dist/index.js +14 -0
  731. package/dist/jsonata/ast.d.ts +15 -0
  732. package/dist/jsonata/ast.d.ts.map +1 -0
  733. package/dist/jsonata/ast.js +118 -0
  734. package/dist/jsonata/base.d.ts +7 -0
  735. package/dist/jsonata/base.d.ts.map +1 -0
  736. package/dist/jsonata/base.js +43 -0
  737. package/dist/jsonata/builder.d.ts +28 -0
  738. package/dist/jsonata/builder.d.ts.map +1 -0
  739. package/dist/jsonata/builder.js +140 -0
  740. package/dist/jsonata/context.d.ts +10 -0
  741. package/dist/jsonata/context.d.ts.map +1 -0
  742. package/dist/jsonata/context.js +349 -0
  743. package/dist/jsonata/expression.d.ts +35 -0
  744. package/dist/jsonata/expression.d.ts.map +1 -0
  745. package/dist/jsonata/expression.js +498 -0
  746. package/dist/jsonata/index.d.ts +6 -0
  747. package/dist/jsonata/index.d.ts.map +1 -0
  748. package/dist/jsonata/index.js +6 -0
  749. package/dist/logger/index.d.ts +2 -0
  750. package/dist/logger/index.d.ts.map +1 -0
  751. package/dist/logger/index.js +2 -0
  752. package/dist/logger/logger.d.ts +14 -0
  753. package/dist/logger/logger.d.ts.map +1 -0
  754. package/dist/logger/logger.js +40 -0
  755. package/dist/runtime/auth.d.ts +19 -0
  756. package/dist/runtime/auth.d.ts.map +1 -0
  757. package/dist/runtime/auth.js +11 -0
  758. package/dist/runtime/index.d.ts +5 -0
  759. package/dist/runtime/index.d.ts.map +1 -0
  760. package/dist/runtime/index.js +3 -0
  761. package/dist/runtime/system.d.ts +27 -0
  762. package/dist/runtime/system.d.ts.map +1 -0
  763. package/dist/runtime/system.js +26 -0
  764. package/dist/screen/common/index.d.ts +9 -0
  765. package/dist/screen/common/index.d.ts.map +1 -0
  766. package/dist/screen/common/index.js +7 -0
  767. package/dist/screen/common/screen.badge.d.ts +8 -0
  768. package/dist/screen/common/screen.badge.d.ts.map +1 -0
  769. package/dist/screen/common/screen.badge.js +2 -0
  770. package/dist/screen/common/screen.bottom-sheet.d.ts +62 -0
  771. package/dist/screen/common/screen.bottom-sheet.d.ts.map +1 -0
  772. package/dist/screen/common/screen.bottom-sheet.js +31 -0
  773. package/dist/screen/common/screen.callback-actions.d.ts +7 -0
  774. package/dist/screen/common/screen.callback-actions.d.ts.map +1 -0
  775. package/dist/screen/common/screen.callback-actions.js +19 -0
  776. package/dist/screen/common/screen.input-definition.d.ts +108 -0
  777. package/dist/screen/common/screen.input-definition.d.ts.map +1 -0
  778. package/dist/screen/common/screen.input-definition.js +109 -0
  779. package/dist/screen/common/screen.placeholder.d.ts +20 -0
  780. package/dist/screen/common/screen.placeholder.d.ts.map +1 -0
  781. package/dist/screen/common/screen.placeholder.js +54 -0
  782. package/dist/screen/common/screen.preview.actions.d.ts +47 -0
  783. package/dist/screen/common/screen.preview.actions.d.ts.map +1 -0
  784. package/dist/screen/common/screen.preview.actions.js +122 -0
  785. package/dist/screen/common/screen.preview.d.ts +40 -0
  786. package/dist/screen/common/screen.preview.d.ts.map +1 -0
  787. package/dist/screen/common/screen.preview.js +87 -0
  788. package/dist/screen/common/screen.state.d.ts +7 -0
  789. package/dist/screen/common/screen.state.d.ts.map +1 -0
  790. package/dist/screen/common/screen.state.js +2 -0
  791. package/dist/screen/common/screen.summary.d.ts +14 -0
  792. package/dist/screen/common/screen.summary.d.ts.map +1 -0
  793. package/dist/screen/common/screen.summary.js +22 -0
  794. package/dist/screen/index.d.ts +16 -0
  795. package/dist/screen/index.d.ts.map +1 -0
  796. package/dist/screen/index.js +16 -0
  797. package/dist/screen/screen.abstract.d.ts +105 -0
  798. package/dist/screen/screen.abstract.d.ts.map +1 -0
  799. package/dist/screen/screen.abstract.js +175 -0
  800. package/dist/screen/screen.calendar.d.ts +22 -0
  801. package/dist/screen/screen.calendar.d.ts.map +1 -0
  802. package/dist/screen/screen.calendar.js +32 -0
  803. package/dist/screen/screen.default.d.ts +65 -0
  804. package/dist/screen/screen.default.d.ts.map +1 -0
  805. package/dist/screen/screen.default.js +68 -0
  806. package/dist/screen/screen.document.d.ts +58 -0
  807. package/dist/screen/screen.document.d.ts.map +1 -0
  808. package/dist/screen/screen.document.js +72 -0
  809. package/dist/screen/screen.full-screen.d.ts +23 -0
  810. package/dist/screen/screen.full-screen.d.ts.map +1 -0
  811. package/dist/screen/screen.full-screen.js +18 -0
  812. package/dist/screen/screen.gallery.d.ts +15 -0
  813. package/dist/screen/screen.gallery.d.ts.map +1 -0
  814. package/dist/screen/screen.gallery.js +14 -0
  815. package/dist/screen/screen.grid.base.d.ts +18 -0
  816. package/dist/screen/screen.grid.base.d.ts.map +1 -0
  817. package/dist/screen/screen.grid.base.js +17 -0
  818. package/dist/screen/screen.grid.dynamic.d.ts +18 -0
  819. package/dist/screen/screen.grid.dynamic.d.ts.map +1 -0
  820. package/dist/screen/screen.grid.dynamic.js +26 -0
  821. package/dist/screen/screen.grid.static.d.ts +14 -0
  822. package/dist/screen/screen.grid.static.d.ts.map +1 -0
  823. package/dist/screen/screen.grid.static.js +12 -0
  824. package/dist/screen/screen.guards.d.ts +41 -0
  825. package/dist/screen/screen.guards.d.ts.map +1 -0
  826. package/dist/screen/screen.guards.js +35 -0
  827. package/dist/screen/screen.list.d.ts +79 -0
  828. package/dist/screen/screen.list.d.ts.map +1 -0
  829. package/dist/screen/screen.list.js +123 -0
  830. package/dist/screen/screen.sdk.d.ts +13 -0
  831. package/dist/screen/screen.sdk.d.ts.map +1 -0
  832. package/dist/screen/screen.sdk.js +9 -0
  833. package/dist/screen/screen.tabs.d.ts +27 -0
  834. package/dist/screen/screen.tabs.d.ts.map +1 -0
  835. package/dist/screen/screen.tabs.instance.d.ts +34 -0
  836. package/dist/screen/screen.tabs.instance.d.ts.map +1 -0
  837. package/dist/screen/screen.tabs.instance.js +79 -0
  838. package/dist/screen/screen.tabs.js +35 -0
  839. package/dist/screen/screen.wizard.d.ts +12 -0
  840. package/dist/screen/screen.wizard.d.ts.map +1 -0
  841. package/dist/screen/screen.wizard.instance.d.ts +20 -0
  842. package/dist/screen/screen.wizard.instance.d.ts.map +1 -0
  843. package/dist/screen/screen.wizard.instance.js +40 -0
  844. package/dist/screen/screen.wizard.js +23 -0
  845. package/dist/utils/check.d.ts +3 -0
  846. package/dist/utils/check.d.ts.map +1 -0
  847. package/dist/utils/check.js +7 -0
  848. package/dist/utils/convert.d.ts +2 -0
  849. package/dist/utils/convert.d.ts.map +1 -0
  850. package/dist/utils/convert.js +8 -0
  851. package/dist/utils/dedent.d.ts +2 -0
  852. package/dist/utils/dedent.d.ts.map +1 -0
  853. package/dist/utils/dedent.js +28 -0
  854. package/dist/utils/index.d.ts +6 -0
  855. package/dist/utils/index.d.ts.map +1 -0
  856. package/dist/utils/index.js +5 -0
  857. package/dist/utils/types.d.ts +2 -0
  858. package/dist/utils/types.d.ts.map +1 -0
  859. package/dist/utils/types.js +2 -0
  860. package/dist/utils/utils.d.ts +9 -0
  861. package/dist/utils/utils.d.ts.map +1 -0
  862. package/dist/utils/utils.js +49 -0
  863. package/dist/widget/index.d.ts +12 -0
  864. package/dist/widget/index.d.ts.map +1 -0
  865. package/dist/widget/index.js +12 -0
  866. package/dist/widget/jw.abstract.d.ts +27 -0
  867. package/dist/widget/jw.abstract.d.ts.map +1 -0
  868. package/dist/widget/jw.abstract.js +36 -0
  869. package/dist/widget/jw.actions.d.ts +17 -0
  870. package/dist/widget/jw.actions.d.ts.map +1 -0
  871. package/dist/widget/jw.actions.js +30 -0
  872. package/dist/widget/jw.avatar.d.ts +19 -0
  873. package/dist/widget/jw.avatar.d.ts.map +1 -0
  874. package/dist/widget/jw.avatar.js +23 -0
  875. package/dist/widget/jw.chart.d.ts +18 -0
  876. package/dist/widget/jw.chart.d.ts.map +1 -0
  877. package/dist/widget/jw.chart.js +23 -0
  878. package/dist/widget/jw.group.d.ts +28 -0
  879. package/dist/widget/jw.group.d.ts.map +1 -0
  880. package/dist/widget/jw.group.js +35 -0
  881. package/dist/widget/jw.image.d.ts +27 -0
  882. package/dist/widget/jw.image.d.ts.map +1 -0
  883. package/dist/widget/jw.image.js +54 -0
  884. package/dist/widget/jw.list.d.ts +44 -0
  885. package/dist/widget/jw.list.d.ts.map +1 -0
  886. package/dist/widget/jw.list.js +44 -0
  887. package/dist/widget/jw.location.d.ts +41 -0
  888. package/dist/widget/jw.location.d.ts.map +1 -0
  889. package/dist/widget/jw.location.js +54 -0
  890. package/dist/widget/jw.sdk.d.ts +2 -0
  891. package/dist/widget/jw.sdk.d.ts.map +1 -0
  892. package/dist/widget/jw.sdk.js +2 -0
  893. package/dist/widget/jw.status.condition.d.ts +20 -0
  894. package/dist/widget/jw.status.condition.d.ts.map +1 -0
  895. package/dist/widget/jw.status.condition.js +27 -0
  896. package/dist/widget/jw.status.d.ts +8 -0
  897. package/dist/widget/jw.status.d.ts.map +1 -0
  898. package/dist/widget/jw.status.js +11 -0
  899. package/dist/widget/jw.value.d.ts +24 -0
  900. package/dist/widget/jw.value.d.ts.map +1 -0
  901. package/dist/widget/jw.value.js +51 -0
  902. package/package.json +94 -0
@@ -0,0 +1,488 @@
1
+ import { type InstanceId } from '../abstract/index.js';
2
+ import { JcAmountControlBuilder, type JcAmountControlInput } from './jc.amount-control.js';
3
+ import { JcAvatarBuilder, type JcAvatarInput } from './jc.avatar.js';
4
+ import { JcAvatarFieldBuilder, type JcAvatarFieldInput } from './jc.avatar-field.js';
5
+ import { JcBannerBuilder, type JcBannerInput } from './jc.banner.js';
6
+ import { JcBarChartBuilder, type JcBarChartInput } from './jc.bar-chart.js';
7
+ import { JcButtonBuilder, type JcButtonInput } from './jc.button.js';
8
+ import { JcCardOnDefaultBuilder, type JcCardOnDefaultInput } from './jc.card.on-default.js';
9
+ import { JcCarouselBuilder, type JcCarouselInput } from './jc.carousel.js';
10
+ import { JcChatBuilder, type JcChatInput } from './jc.chat.js';
11
+ import { JcChatMessageBuilder, type JcChatMessageInput } from './jc.chat-message.js';
12
+ import { JcCheckboxBuilder, type JcCheckboxInput } from './jc.checkbox.js';
13
+ import { JcChoiceFieldBuilder, type JcChoiceFieldInput } from './jc.choice-field.js';
14
+ import { JcChoiceFieldItemBuilder, type JcChoiceFieldItemInput } from './jc.choice-field-item.js';
15
+ import { JcCountDownBuilder, type JcCountDownInput } from './jc.count-down.js';
16
+ import { JcCountUpBuilder, type JcCountUpInput } from './jc.count-up.js';
17
+ import { JcCustomComponentInteropBuilder, type JcCustomComponentInteropInput } from './jc.custom-component.interop.js';
18
+ import { JcDatePickerBuilder, type JcDatePickerInput } from './jc.date-picker.js';
19
+ import { JcDividerBuilder, type JcDividerInput } from './jc.divider.js';
20
+ import { JcDropdownBuilder, type JcDropdownInput } from './jc.dropdown.js';
21
+ import { JcDurationPickerBuilder, type JcDurationPickerInput } from './jc.duration-picker.js';
22
+ import { JcEmailFieldBuilder, type JcEmailFieldInput } from './jc.email-field.js';
23
+ import { JcEntityBuilder, type JcEntityInput } from './jc.entity.js';
24
+ import { JcEntityFieldBuilder, type JcEntityFieldInput } from './jc.entity-field.js';
25
+ import { JcEventBuilder, type JcEventInput } from './jc.event.js';
26
+ import { JcExpanderBuilder, type JcExpanderInput } from './jc.expander.js';
27
+ import { JcFieldRowBuilder, type JcFieldRowInput } from './jc.field-row.js';
28
+ import { JcEntityFieldRowBuilder } from './jc.field-row.entity.js';
29
+ import { JcFormBuilder, type JcFormInput } from './jc.form.js';
30
+ import { JcGalleryItemBuilder, type JcGalleryItemInput } from './jc.gallery-item.js';
31
+ import { JcGridBuilder, type JcGridInput } from './jc.grid.js';
32
+ import { JcGridItemBuilder, type JcGridItemInput } from './jc.grid-item.js';
33
+ import { JcIconBuilder, type JcIconInput } from './jc.icon.js';
34
+ import { JcImageOnCarouselBuilder, type JcImageOnCarouselInput } from './jc.image.on-carousel.js';
35
+ import { JcJigBuilder, type JcJigInput } from './jc.jig.js';
36
+ import { JcImageOnDefaultBuilder, type JcImageOnDefaultInput } from './jc.image.on-default.js';
37
+ import { JcInteractiveImageBuilder, type JcInteractiveImageInput } from './jc.interactive-image.js';
38
+ import { JcInteractiveImageItemBuilder, type JcInteractiveImageItemInput } from './jc.interactive-image.item.js';
39
+ import { JcJigHeaderBuilder, type JcJigHeaderInput } from './jc.jig-header.js';
40
+ import { JcJigWidgetBuilder, type JcJigWidgetInput } from './jc.jig-widget.js';
41
+ import { JcLineChartBuilder, type JcLineChartInput } from './jc.line-chart.js';
42
+ import { JcListBuilder, type JcListInput } from './jc.list.js';
43
+ import { JcListItemBuilder, type JcListItemOptions } from './jc.list-item.js';
44
+ import { JcListItemStandaloneBuilder, type JcListItemStandaloneOptions } from './jc.list-item.standalone.js';
45
+ import { JcLocationBuilder, type JcLocationInput } from './jc.location.js';
46
+ import { JcMarkerItemBuilder, type JcMarkerItemInput } from './jc.marker-item.js';
47
+ import { JcMediaFieldBuilder, type JcMediaFieldInput } from './jc.media-field.js';
48
+ import { JcMenuItemBuilder, type JcMenuItemInput } from './jc.menu-item.js';
49
+ import { JcNumberFieldBuilder, type JcNumberFieldInput } from './jc.number-field.js';
50
+ import { JcPieChartBuilder, type JcPieChartInput } from './jc.pie-chart.js';
51
+ import { JcProgressBarBuilder, type JcProgressBarInput } from './jc.progress-bar.js';
52
+ import { JcRatingBuilder, type JcRatingInput } from './jc.rating.js';
53
+ import { JcSectionOnDefaultBuilder, type JcSectionOnDefaultInput } from './jc.section.on-default.js';
54
+ import { JcSegmentedControlBuilder, type JcSegmentedControlInput } from './jc.segmented-control.js';
55
+ import { JcSignatureFieldBuilder, type JcSignatureFieldInput } from './jc.signature-field.js';
56
+ import { JcSliderBuilder, type JcSliderInput } from './jc.slider.js';
57
+ import { JcStageBuilder, type JcStageInput } from './jc.stage.js';
58
+ import { JcStepperBuilder, type JcStepperInput } from './jc.stepper.js';
59
+ import { JcStoryGroupBuilder, type JcStoryGroupInput } from './jc.story-group.js';
60
+ import { JcSummaryCardBuilder, type JcSummaryCardInputOptions } from './jc.summary.card.js';
61
+ import { JcSummaryCounterBuilder, type JcSummaryCounterInputOptions } from './jc.summary.counter.js';
62
+ import { JcSummaryDefaultBuilder, type JcSummaryDefaultInputOptions } from './jc.summary.default.js';
63
+ import { JcSummaryProgressBuilder, type JcSummaryProgressInputOptions } from './jc.summary.progress.js';
64
+ import { JcTextBuilder, type JcTextInput } from './jc.text.js';
65
+ import { JcTextFieldBuilder, type JcTextFieldInput } from './jc.text-field.js';
66
+ import { JcTitlesBuilder, type JcTitlesInput } from './jc.titles.js';
67
+ import { JcTrendBuilder, type JcTrendInput } from './jc.trend.js';
68
+ import { type ComponentType } from './jc.types.js';
69
+ import { JcViewBuilder, type JcViewInput } from './jc.view.js';
70
+ import { JcVideoPlayerOnJigBuilder, type JcVideoPlayerOnJigInput } from './jc.video-player.on-jig.js';
71
+ import { JcWebViewOnDefaultBuilder, type JcWebViewOnDefaultInput } from './jc.web-view.on-default.js';
72
+ import { JcWebViewOnFullBuilder, type JcWebViewOnFullInput } from './jc.web-view.on-full.js';
73
+ export declare const COMPONENT_TO_FACTORY_METHOD: {
74
+ readonly "component.amount-control": "amountControl";
75
+ readonly "component.avatar": "avatar";
76
+ readonly "component.avatar-field": "avatarField";
77
+ readonly "component.banner": "banner";
78
+ readonly "component.bar-chart": "barChart";
79
+ readonly "component.button": "button";
80
+ readonly "component.card": "cardOnDefault";
81
+ readonly "component.carousel": "carousel";
82
+ readonly "component.chat": "chat";
83
+ readonly "component.chat-message": "chatMessage";
84
+ readonly "component.checkbox": "checkbox";
85
+ readonly "component.choice-field": "choiceField";
86
+ readonly "component.choice-field-item": "choiceFieldItem";
87
+ readonly "component.countdown": "countDown";
88
+ readonly "component.count-up": "countUp";
89
+ readonly "component.custom-component": "customComponent";
90
+ readonly "component.date-picker": "datePicker";
91
+ readonly "component.divider": "divider";
92
+ readonly "component.dropdown": "dropdown";
93
+ readonly "component.duration-picker": "durationPicker";
94
+ readonly "component.email-field": "emailField";
95
+ readonly "component.entity": "entity";
96
+ readonly "component.entity-field": "entityField";
97
+ readonly "component.event": "event";
98
+ readonly "component.expander": "expander";
99
+ readonly "component.field-row": "fieldRow";
100
+ readonly "component.form": "form";
101
+ readonly "component.gallery-item": "galleryItem";
102
+ readonly "component.grid": "grid";
103
+ readonly "component.grid-item": "gridItem";
104
+ readonly "component.icon": "icon";
105
+ readonly "component.image": "imageOnDefault";
106
+ readonly "component.interactive-image": "interactiveImage";
107
+ readonly "component.interactive-image-item": "interactiveImageItem";
108
+ readonly "component.jig": "jig";
109
+ readonly "component.jig-header": "jigHeader";
110
+ readonly "component.jig-widget": "widget";
111
+ readonly "component.line-chart": "lineChart";
112
+ readonly "component.list": "list";
113
+ readonly "component.list-item": "listItem";
114
+ readonly "component.location": "location";
115
+ readonly "component.marker-item": "markerItem";
116
+ readonly "component.media-field": "mediaField";
117
+ readonly "component.menu-item": "menuItem";
118
+ readonly "component.number-field": "numberField";
119
+ readonly "component.pie-chart": "pieChart";
120
+ readonly "component.progress-bar": "progressBar";
121
+ readonly "component.rating": "rating";
122
+ readonly "component.section": "sectionOnDefault";
123
+ readonly "component.segmented-control": "segmentedControl";
124
+ readonly "component.signature-field": "signatureField";
125
+ readonly "component.slider": "slider";
126
+ readonly "component.stage": "stage";
127
+ readonly "component.stepper": "stepper";
128
+ readonly "component.story-group": "storyGroup";
129
+ readonly "component.summary": "summaryDefault";
130
+ readonly "component.summary-default": "summaryDefault";
131
+ readonly "component.summary-card": "summaryCard";
132
+ readonly "component.summary-counter": "summaryCounter";
133
+ readonly "component.summary-progress": "summaryProgress";
134
+ readonly "component.text": "text";
135
+ readonly "component.text-field": "textField";
136
+ readonly "component.titles": "titles";
137
+ readonly "component.trend": "trend";
138
+ readonly "component.video-player": "videoPlayerOnJig";
139
+ readonly "component.view": "view";
140
+ readonly "component.web-view": "webViewOnDefault";
141
+ readonly "component.dropdown-item": "choiceFieldItem";
142
+ readonly "component.product-item": "gridItem";
143
+ readonly "component.step": "stage";
144
+ readonly "component.tab-button": "segmentedControl";
145
+ };
146
+ export type FactoryMethodsFor<T extends readonly ComponentType[]> = T[number] extends keyof typeof COMPONENT_TO_FACTORY_METHOD ? Pick<JcBuilderFactory, (typeof COMPONENT_TO_FACTORY_METHOD)[T[number]]> : never;
147
+ export type BaseBuilderUnionFromAllowedTypes<T extends readonly ComponentType[]> = FactoryMethodsFor<T>[keyof FactoryMethodsFor<T>] extends (...args: any[]) => infer R ? R : never;
148
+ export declare class JcBuilderFactory<T extends readonly ComponentType[] = readonly ComponentType[]> {
149
+ protected readonly _allowed: T;
150
+ protected readonly _onComponentCreated: (component: unknown) => void;
151
+ constructor(allowed: T, onComponentCreated: (component: BaseBuilderUnionFromAllowedTypes<T>) => void);
152
+ amountControl(options?: JcAmountControlInput): JcAmountControlBuilder;
153
+ avatar(options?: JcAvatarInput): JcAvatarBuilder;
154
+ banner(options: JcBannerInput): JcBannerBuilder;
155
+ button(options: JcButtonInput): JcButtonBuilder;
156
+ barChart(options?: JcBarChartInput): JcBarChartBuilder;
157
+ cardOnDefault(options?: JcCardOnDefaultInput): JcCardOnDefaultBuilder;
158
+ carousel(options?: JcCarouselInput): JcCarouselBuilder;
159
+ chat(options?: JcChatInput): JcChatBuilder;
160
+ choiceFieldItem(options?: JcChoiceFieldItemInput): JcChoiceFieldItemBuilder;
161
+ countDown(options?: JcCountDownInput): JcCountDownBuilder;
162
+ countUp(options?: JcCountUpInput): JcCountUpBuilder;
163
+ customComponent(options: JcCustomComponentInteropInput): JcCustomComponentInteropBuilder;
164
+ entity(options?: JcEntityInput): JcEntityBuilder;
165
+ entityField(options?: JcEntityFieldInput): JcEntityFieldBuilder;
166
+ entityFieldRow(options?: {
167
+ instanceId?: InstanceId;
168
+ }): JcEntityFieldRowBuilder;
169
+ event(options?: JcEventInput): JcEventBuilder;
170
+ expander(options?: JcExpanderInput): JcExpanderBuilder;
171
+ form(options?: JcFormInput): JcFormBuilder;
172
+ galleryItem(options: JcGalleryItemInput): JcGalleryItemBuilder;
173
+ grid(options?: JcGridInput): JcGridBuilder;
174
+ gridItem(options?: JcGridItemInput): JcGridItemBuilder;
175
+ icon(options?: JcIconInput): JcIconBuilder;
176
+ imageOnCarousel(options?: JcImageOnCarouselInput): JcImageOnCarouselBuilder;
177
+ imageOnDefault(options?: JcImageOnDefaultInput): JcImageOnDefaultBuilder;
178
+ interactiveImage(options?: JcInteractiveImageInput): JcInteractiveImageBuilder;
179
+ jig(options: JcJigInput): JcJigBuilder;
180
+ jigHeader(options?: JcJigHeaderInput): JcJigHeaderBuilder;
181
+ lineChart(options?: JcLineChartInput): JcLineChartBuilder;
182
+ list(options?: JcListInput & {
183
+ instanceId?: InstanceId;
184
+ }): JcListBuilder;
185
+ listItemStandalone(options?: JcListItemStandaloneOptions & {
186
+ instanceId?: InstanceId;
187
+ }): JcListItemStandaloneBuilder;
188
+ location(options?: JcLocationInput): JcLocationBuilder;
189
+ markerItem(options?: JcMarkerItemInput): JcMarkerItemBuilder;
190
+ pieChart(options?: JcPieChartInput): JcPieChartBuilder;
191
+ progressBar(options?: JcProgressBarInput): JcProgressBarBuilder;
192
+ rating(options: JcRatingInput): JcRatingBuilder;
193
+ stage(options?: JcStageInput): JcStageBuilder;
194
+ stepper(options?: JcStepperInput): JcStepperBuilder;
195
+ storyGroup(options: JcStoryGroupInput): JcStoryGroupBuilder;
196
+ summaryDefault(options?: JcSummaryDefaultInputOptions): JcSummaryDefaultBuilder;
197
+ summaryCard(options?: JcSummaryCardInputOptions): JcSummaryCardBuilder;
198
+ summaryCounter(options?: JcSummaryCounterInputOptions): JcSummaryCounterBuilder;
199
+ summaryProgress(options: JcSummaryProgressInputOptions): JcSummaryProgressBuilder;
200
+ text(options?: JcTextInput): JcTextBuilder;
201
+ titles(options?: JcTitlesInput): JcTitlesBuilder;
202
+ trend(options?: JcTrendInput): JcTrendBuilder;
203
+ videoPlayerOnJig(options?: JcVideoPlayerOnJigInput): JcVideoPlayerOnJigBuilder;
204
+ view(options?: JcViewInput): JcViewBuilder;
205
+ webViewOnDefault(options?: JcWebViewOnDefaultInput): JcWebViewOnDefaultBuilder;
206
+ webViewOnFull(options?: JcWebViewOnFullInput): JcWebViewOnFullBuilder;
207
+ widget(options?: JcJigWidgetInput): JcJigWidgetBuilder;
208
+ avatarField(options: JcAvatarFieldInput): JcAvatarFieldBuilder;
209
+ checkbox(options: JcCheckboxInput): JcCheckboxBuilder;
210
+ choiceField(options: JcChoiceFieldInput): JcChoiceFieldBuilder;
211
+ datePicker(options: JcDatePickerInput): JcDatePickerBuilder;
212
+ divider(options?: JcDividerInput): JcDividerBuilder;
213
+ dropdown(options: JcDropdownInput): JcDropdownBuilder;
214
+ durationPicker(options: JcDurationPickerInput): JcDurationPickerBuilder;
215
+ emailField(options: JcEmailFieldInput): JcEmailFieldBuilder;
216
+ fieldRow(options?: JcFieldRowInput): JcFieldRowBuilder;
217
+ mediaField(options: JcMediaFieldInput): JcMediaFieldBuilder;
218
+ menuItem(options: JcMenuItemInput): JcMenuItemBuilder;
219
+ numberField(options: JcNumberFieldInput): JcNumberFieldBuilder;
220
+ sectionOnDefault(options?: JcSectionOnDefaultInput): JcSectionOnDefaultBuilder;
221
+ segmentedControl(options?: JcSegmentedControlInput): JcSegmentedControlBuilder;
222
+ signatureField(options: JcSignatureFieldInput): JcSignatureFieldBuilder;
223
+ slider(options: JcSliderInput): JcSliderBuilder;
224
+ textField(options: JcTextFieldInput): JcTextFieldBuilder;
225
+ chatMessage(options?: JcChatMessageInput): JcChatMessageBuilder;
226
+ interactiveImageItem(options?: JcInteractiveImageItemInput): JcInteractiveImageItemBuilder;
227
+ listItem(options?: JcListItemOptions & {
228
+ instanceId?: InstanceId;
229
+ }): JcListItemBuilder;
230
+ }
231
+ export declare const CAROUSEL_FACTORY_METHODS: {
232
+ readonly "component.amount-control": "amountControl";
233
+ readonly "component.avatar": "avatar";
234
+ readonly "component.avatar-field": "avatarField";
235
+ readonly "component.banner": "banner";
236
+ readonly "component.bar-chart": "barChart";
237
+ readonly "component.button": "button";
238
+ readonly "component.carousel": "carousel";
239
+ readonly "component.chat": "chat";
240
+ readonly "component.chat-message": "chatMessage";
241
+ readonly "component.checkbox": "checkbox";
242
+ readonly "component.choice-field": "choiceField";
243
+ readonly "component.choice-field-item": "choiceFieldItem";
244
+ readonly "component.countdown": "countDown";
245
+ readonly "component.count-up": "countUp";
246
+ readonly "component.custom-component": "customComponent";
247
+ readonly "component.date-picker": "datePicker";
248
+ readonly "component.divider": "divider";
249
+ readonly "component.dropdown": "dropdown";
250
+ readonly "component.duration-picker": "durationPicker";
251
+ readonly "component.email-field": "emailField";
252
+ readonly "component.entity": "entity";
253
+ readonly "component.entity-field": "entityField";
254
+ readonly "component.event": "event";
255
+ readonly "component.expander": "expander";
256
+ readonly "component.field-row": "fieldRow";
257
+ readonly "component.form": "form";
258
+ readonly "component.gallery-item": "galleryItem";
259
+ readonly "component.grid": "grid";
260
+ readonly "component.grid-item": "gridItem";
261
+ readonly "component.icon": "icon";
262
+ readonly "component.interactive-image": "interactiveImage";
263
+ readonly "component.interactive-image-item": "interactiveImageItem";
264
+ readonly "component.jig": "jig";
265
+ readonly "component.jig-header": "jigHeader";
266
+ readonly "component.jig-widget": "widget";
267
+ readonly "component.line-chart": "lineChart";
268
+ readonly "component.list": "list";
269
+ readonly "component.list-item": "listItem";
270
+ readonly "component.location": "location";
271
+ readonly "component.marker-item": "markerItem";
272
+ readonly "component.media-field": "mediaField";
273
+ readonly "component.menu-item": "menuItem";
274
+ readonly "component.number-field": "numberField";
275
+ readonly "component.pie-chart": "pieChart";
276
+ readonly "component.progress-bar": "progressBar";
277
+ readonly "component.rating": "rating";
278
+ readonly "component.section": "sectionOnDefault";
279
+ readonly "component.segmented-control": "segmentedControl";
280
+ readonly "component.signature-field": "signatureField";
281
+ readonly "component.slider": "slider";
282
+ readonly "component.stage": "stage";
283
+ readonly "component.stepper": "stepper";
284
+ readonly "component.story-group": "storyGroup";
285
+ readonly "component.summary": "summaryDefault";
286
+ readonly "component.summary-default": "summaryDefault";
287
+ readonly "component.summary-card": "summaryCard";
288
+ readonly "component.summary-counter": "summaryCounter";
289
+ readonly "component.summary-progress": "summaryProgress";
290
+ readonly "component.text": "text";
291
+ readonly "component.text-field": "textField";
292
+ readonly "component.titles": "titles";
293
+ readonly "component.trend": "trend";
294
+ readonly "component.video-player": "videoPlayerOnJig";
295
+ readonly "component.view": "view";
296
+ readonly "component.web-view": "webViewOnDefault";
297
+ readonly "component.dropdown-item": "choiceFieldItem";
298
+ readonly "component.product-item": "gridItem";
299
+ readonly "component.step": "stage";
300
+ readonly "component.tab-button": "segmentedControl";
301
+ readonly "component.card": "card";
302
+ readonly "component.image": "image";
303
+ };
304
+ export type CarouselFactoryMethodsFor<T extends readonly ComponentType[]> = T[number] extends keyof typeof CAROUSEL_FACTORY_METHODS ? Pick<JcCarouselFactory, (typeof CAROUSEL_FACTORY_METHODS)[T[number]]> : never;
305
+ export type CarouselBuilderUnionFromAllowedTypes<T extends readonly ComponentType[]> = CarouselFactoryMethodsFor<T>[keyof CarouselFactoryMethodsFor<T>] extends (...args: any[]) => infer R ? R : never;
306
+ export declare class JcCarouselFactory<T extends readonly ComponentType[] = readonly ComponentType[]> extends JcBuilderFactory<T> {
307
+ constructor(allowed: T, onComponentCreated: (component: CarouselBuilderUnionFromAllowedTypes<T>) => void);
308
+ card(options?: Parameters<JcBuilderFactory['cardOnDefault']>[0]): ReturnType<JcBuilderFactory['cardOnDefault']>;
309
+ image(options?: Parameters<JcBuilderFactory['imageOnCarousel']>[0]): ReturnType<JcBuilderFactory['imageOnCarousel']>;
310
+ }
311
+ export declare const FULL_SCREEN_FACTORY_METHODS: {
312
+ readonly "component.amount-control": "amountControl";
313
+ readonly "component.avatar": "avatar";
314
+ readonly "component.avatar-field": "avatarField";
315
+ readonly "component.banner": "banner";
316
+ readonly "component.bar-chart": "barChart";
317
+ readonly "component.button": "button";
318
+ readonly "component.card": "cardOnDefault";
319
+ readonly "component.carousel": "carousel";
320
+ readonly "component.chat": "chat";
321
+ readonly "component.chat-message": "chatMessage";
322
+ readonly "component.checkbox": "checkbox";
323
+ readonly "component.choice-field": "choiceField";
324
+ readonly "component.choice-field-item": "choiceFieldItem";
325
+ readonly "component.countdown": "countDown";
326
+ readonly "component.count-up": "countUp";
327
+ readonly "component.custom-component": "customComponent";
328
+ readonly "component.date-picker": "datePicker";
329
+ readonly "component.divider": "divider";
330
+ readonly "component.dropdown": "dropdown";
331
+ readonly "component.duration-picker": "durationPicker";
332
+ readonly "component.email-field": "emailField";
333
+ readonly "component.entity": "entity";
334
+ readonly "component.entity-field": "entityField";
335
+ readonly "component.event": "event";
336
+ readonly "component.expander": "expander";
337
+ readonly "component.field-row": "fieldRow";
338
+ readonly "component.form": "form";
339
+ readonly "component.gallery-item": "galleryItem";
340
+ readonly "component.grid": "grid";
341
+ readonly "component.grid-item": "gridItem";
342
+ readonly "component.icon": "icon";
343
+ readonly "component.image": "imageOnDefault";
344
+ readonly "component.interactive-image": "interactiveImage";
345
+ readonly "component.interactive-image-item": "interactiveImageItem";
346
+ readonly "component.jig": "jig";
347
+ readonly "component.jig-header": "jigHeader";
348
+ readonly "component.jig-widget": "widget";
349
+ readonly "component.line-chart": "lineChart";
350
+ readonly "component.list": "list";
351
+ readonly "component.list-item": "listItem";
352
+ readonly "component.location": "location";
353
+ readonly "component.marker-item": "markerItem";
354
+ readonly "component.media-field": "mediaField";
355
+ readonly "component.menu-item": "menuItem";
356
+ readonly "component.number-field": "numberField";
357
+ readonly "component.pie-chart": "pieChart";
358
+ readonly "component.progress-bar": "progressBar";
359
+ readonly "component.rating": "rating";
360
+ readonly "component.section": "sectionOnDefault";
361
+ readonly "component.segmented-control": "segmentedControl";
362
+ readonly "component.signature-field": "signatureField";
363
+ readonly "component.slider": "slider";
364
+ readonly "component.stage": "stage";
365
+ readonly "component.stepper": "stepper";
366
+ readonly "component.story-group": "storyGroup";
367
+ readonly "component.summary": "summaryDefault";
368
+ readonly "component.summary-default": "summaryDefault";
369
+ readonly "component.summary-card": "summaryCard";
370
+ readonly "component.summary-counter": "summaryCounter";
371
+ readonly "component.summary-progress": "summaryProgress";
372
+ readonly "component.text": "text";
373
+ readonly "component.text-field": "textField";
374
+ readonly "component.titles": "titles";
375
+ readonly "component.trend": "trend";
376
+ readonly "component.video-player": "videoPlayerOnJig";
377
+ readonly "component.view": "view";
378
+ readonly "component.dropdown-item": "choiceFieldItem";
379
+ readonly "component.product-item": "gridItem";
380
+ readonly "component.step": "stage";
381
+ readonly "component.tab-button": "segmentedControl";
382
+ readonly "component.web-view": "webView";
383
+ };
384
+ export type FullScreenFactoryMethodsFor<T extends readonly ComponentType[]> = T[number] extends keyof typeof FULL_SCREEN_FACTORY_METHODS ? Pick<JcFullScreenFactory, (typeof FULL_SCREEN_FACTORY_METHODS)[T[number]]> : never;
385
+ export type FullScreenBuilderUnionFromAllowedTypes<T extends readonly ComponentType[]> = FullScreenFactoryMethodsFor<T>[keyof FullScreenFactoryMethodsFor<T>] extends (...args: any[]) => infer R ? R : never;
386
+ export declare class JcFullScreenFactory<T extends readonly ComponentType[] = readonly ComponentType[]> extends JcBuilderFactory<T> {
387
+ constructor(allowed: T, onComponentCreated: (component: FullScreenBuilderUnionFromAllowedTypes<T>) => void);
388
+ webView(options?: Parameters<JcBuilderFactory['webViewOnFull']>[0]): ReturnType<JcBuilderFactory['webViewOnFull']>;
389
+ }
390
+ export declare const DEFAULT_SCREEN_FACTORY_METHODS: {
391
+ readonly "component.amount-control": "amountControl";
392
+ readonly "component.avatar": "avatar";
393
+ readonly "component.avatar-field": "avatarField";
394
+ readonly "component.banner": "banner";
395
+ readonly "component.bar-chart": "barChart";
396
+ readonly "component.button": "button";
397
+ readonly "component.carousel": "carousel";
398
+ readonly "component.chat": "chat";
399
+ readonly "component.chat-message": "chatMessage";
400
+ readonly "component.checkbox": "checkbox";
401
+ readonly "component.choice-field": "choiceField";
402
+ readonly "component.choice-field-item": "choiceFieldItem";
403
+ readonly "component.countdown": "countDown";
404
+ readonly "component.count-up": "countUp";
405
+ readonly "component.custom-component": "customComponent";
406
+ readonly "component.date-picker": "datePicker";
407
+ readonly "component.divider": "divider";
408
+ readonly "component.dropdown": "dropdown";
409
+ readonly "component.duration-picker": "durationPicker";
410
+ readonly "component.email-field": "emailField";
411
+ readonly "component.entity": "entity";
412
+ readonly "component.entity-field": "entityField";
413
+ readonly "component.event": "event";
414
+ readonly "component.expander": "expander";
415
+ readonly "component.field-row": "fieldRow";
416
+ readonly "component.form": "form";
417
+ readonly "component.gallery-item": "galleryItem";
418
+ readonly "component.grid": "grid";
419
+ readonly "component.grid-item": "gridItem";
420
+ readonly "component.icon": "icon";
421
+ readonly "component.interactive-image": "interactiveImage";
422
+ readonly "component.interactive-image-item": "interactiveImageItem";
423
+ readonly "component.jig": "jig";
424
+ readonly "component.jig-header": "jigHeader";
425
+ readonly "component.jig-widget": "widget";
426
+ readonly "component.line-chart": "lineChart";
427
+ readonly "component.list": "list";
428
+ readonly "component.location": "location";
429
+ readonly "component.marker-item": "markerItem";
430
+ readonly "component.media-field": "mediaField";
431
+ readonly "component.menu-item": "menuItem";
432
+ readonly "component.number-field": "numberField";
433
+ readonly "component.pie-chart": "pieChart";
434
+ readonly "component.progress-bar": "progressBar";
435
+ readonly "component.rating": "rating";
436
+ readonly "component.signature-field": "signatureField";
437
+ readonly "component.slider": "slider";
438
+ readonly "component.stage": "stage";
439
+ readonly "component.stepper": "stepper";
440
+ readonly "component.story-group": "storyGroup";
441
+ readonly "component.summary": "summaryDefault";
442
+ readonly "component.summary-default": "summaryDefault";
443
+ readonly "component.summary-card": "summaryCard";
444
+ readonly "component.summary-counter": "summaryCounter";
445
+ readonly "component.summary-progress": "summaryProgress";
446
+ readonly "component.text": "text";
447
+ readonly "component.text-field": "textField";
448
+ readonly "component.titles": "titles";
449
+ readonly "component.trend": "trend";
450
+ readonly "component.view": "view";
451
+ readonly "component.dropdown-item": "choiceFieldItem";
452
+ readonly "component.product-item": "gridItem";
453
+ readonly "component.step": "stage";
454
+ readonly "component.tab-button": "segmentedControl";
455
+ readonly "component.card": "card";
456
+ readonly "component.image": "image";
457
+ readonly "component.list-item": "listItem";
458
+ readonly "component.section": "section";
459
+ readonly "component.segmented-control": "segmented";
460
+ readonly "component.video-player": "videoPlayer";
461
+ readonly "component.web-view": "webView";
462
+ };
463
+ export type DefaultScreenFactoryMethodsFor<T extends readonly ComponentType[]> = T[number] extends keyof typeof DEFAULT_SCREEN_FACTORY_METHODS ? Pick<JcDefaultScreenFactory, (typeof DEFAULT_SCREEN_FACTORY_METHODS)[T[number]]> : never;
464
+ export type DefaultScreenBuilderUnionFromAllowedTypes<T extends readonly ComponentType[]> = DefaultScreenFactoryMethodsFor<T>[keyof DefaultScreenFactoryMethodsFor<T>] extends (...args: any[]) => infer R ? R : never;
465
+ export declare class JcDefaultScreenFactory<T extends readonly ComponentType[] = readonly ComponentType[]> extends JcBuilderFactory<T> {
466
+ constructor(allowed: T, onComponentCreated: (component: DefaultScreenBuilderUnionFromAllowedTypes<T>) => void);
467
+ card(options?: Parameters<JcBuilderFactory['cardOnDefault']>[0]): ReturnType<JcBuilderFactory['cardOnDefault']>;
468
+ image(options?: Parameters<JcBuilderFactory['imageOnDefault']>[0]): ReturnType<JcBuilderFactory['imageOnDefault']>;
469
+ webView(options?: Parameters<JcBuilderFactory['webViewOnDefault']>[0]): ReturnType<JcBuilderFactory['webViewOnDefault']>;
470
+ videoPlayer(options?: Parameters<JcBuilderFactory['videoPlayerOnJig']>[0]): ReturnType<JcBuilderFactory['videoPlayerOnJig']>;
471
+ section(options?: Parameters<JcBuilderFactory['sectionOnDefault']>[0]): ReturnType<JcBuilderFactory['sectionOnDefault']>;
472
+ listItem(options?: Parameters<JcBuilderFactory['listItemStandalone']>[0]): ReturnType<JcBuilderFactory['listItemStandalone']>;
473
+ segmented(options?: Parameters<JcBuilderFactory['segmentedControl']>[0]): ReturnType<JcBuilderFactory['segmentedControl']>;
474
+ }
475
+ export declare const SUMMARY_FACTORY_METHODS: {
476
+ readonly "component.summary-default": "default";
477
+ readonly "component.summary-card": "card";
478
+ readonly "component.summary-counter": "counter";
479
+ };
480
+ export type SummaryFactoryMethodsFor<T extends readonly ComponentType[]> = T[number] extends keyof typeof SUMMARY_FACTORY_METHODS ? Pick<JcSummaryFactory, (typeof SUMMARY_FACTORY_METHODS)[T[number]]> : never;
481
+ export type SummaryBuilderUnionFromAllowedTypes<T extends readonly ComponentType[]> = SummaryFactoryMethodsFor<T>[keyof SummaryFactoryMethodsFor<T>] extends (...args: any[]) => infer R ? R : never;
482
+ export declare class JcSummaryFactory<T extends readonly ComponentType[] = readonly ComponentType[]> extends JcBuilderFactory<T> {
483
+ constructor(allowed: T, onComponentCreated: (component: SummaryBuilderUnionFromAllowedTypes<T>) => void);
484
+ default(options?: JcSummaryDefaultInputOptions): JcSummaryDefaultBuilder;
485
+ card(options?: JcSummaryCardInputOptions): JcSummaryCardBuilder;
486
+ counter(options?: JcSummaryCounterInputOptions): JcSummaryCounterBuilder;
487
+ }
488
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamMuYWJzdHJhY3QuZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudC9qYy5hYnN0cmFjdC5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxLQUFLLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDMUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3BFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxLQUFLLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3BFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxLQUFLLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQzNGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxLQUFLLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDOUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEtBQUssa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNwRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUMxRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxrQkFBa0IsRUFBRSxNQUFNLHNC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LENBQUMsT0FBTyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQ25FLEtBQUssQ0FBQTtBQUtYLE1BQU0sTUFBTSxtQ0FBbUMsQ0FBQyxDQUFDLFNBQVMsU0FBUyxhQUFhLEVBQUUsSUFDaEYsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssTUFBTSxDQUFDLEdBQzlGLENBQUMsR0FDRCxLQUFLLENBQUE7QUFNWCxxQkFBYSxnQkFBZ0IsQ0FDM0IsQ0FBQyxTQUFTLFNBQVMsYUFBYSxFQUFFLEdBQUcsU0FBUyxhQUFhLEVBQUUsQ0FDN0QsU0FBUSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7SUFDM0IsWUFDRSxPQUFPLEVBQUUsQ0FBQyxFQUNWLGtCQUFrQixFQUFFLENBQUMsU0FBUyxFQUFFLG1DQUFtQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFJaEY7SUFNRCxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsNEJBQTRCLEdBQUcsdUJBQXVCLENBRXZFO0lBTUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLHlCQUF5QixHQUFHLG9CQUFvQixDQUU5RDtJQU1ELE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSw0QkFBNEIsR0FBRyx1QkFBdUIsQ0FFdkU7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgSW5zdGFuY2VJZCB9IGZyb20gJy4uL2Fic3RyYWN0L2luZGV4LmpzJ1xuaW1wb3J0IHsgSmNBbW91bnRDb250cm9sQnVpbGRlciwgdHlwZSBKY0Ftb3VudENvbnRyb2xJbnB1dCB9IGZyb20gJy4vamMuYW1vdW50LWNvbnRyb2wuanMnXG5pbXBvcnQgeyBKY0F2YXRhckJ1aWxkZXIsIHR5cGUgSmNBdmF0YXJJbnB1dCB9IGZyb20gJy4vamMuYXZhdGFyLmpzJ1xuaW1wb3J0IHsgSmNBdmF0YXJGaWVsZEJ1aWxkZXIsIHR5cGUgSmNBdmF0YXJGaWVsZElucHV0IH0gZnJvbSAnLi9qYy5hdmF0YXItZmllbGQuanMnXG5pbXBvcnQgeyBKY0Jhbm5lckJ1aWxkZXIsIHR5cGUgSmNCYW5uZXJJbnB1dCB9IGZyb20gJy4vamMuYmFubmVyLmpzJ1xuaW1wb3J0IHsgSmNCYXJDaGFydEJ1aWxkZXIsIHR5cGUgSmNCYXJDaGFydElucHV0IH0gZnJvbSAnLi9qYy5iYXItY2hhcnQuanMnXG5pbXBvcnQgeyBKY0J1dHRvbkJ1aWxkZXIsIHR5cGUgSmNCdXR0b25JbnB1dCB9IGZyb20gJy4vamMuYnV0dG9uLmpzJ1xuaW1wb3J0IHsgSmNDYXJkT25EZWZhdWx0QnVpbGRlciwgdHlwZSBKY0NhcmRPbkRlZmF1bHRJbnB1dCB9IGZyb20gJy4vamMuY2FyZC5vbi1kZWZhdWx0LmpzJ1xuaW1wb3J0IHsgSmNDYXJvdXNlbEJ1aWxkZXIsIHR5cGUgSmNDYXJvdXNlbElucHV0IH0gZnJvbSAnLi9qYy5jYXJvdXNlbC5qcydcbmltcG9ydCB7IEpjQ2hhdEJ1aWxkZXIsIHR5cGUgSmNDaGF0SW5wdXQgfSBmcm9tICcuL2pjLmNoYXQuanMnXG5pbXBvcnQgeyBKY0NoYXRNZXNzYWdlQnVpbGRlciwgdHlwZSBKY0NoYXRNZXNzYWdlSW5wdXQgfSBmcm9tICcuL2pjLmNoYXQtbWVzc2FnZS5qcydcbmltcG9ydCB7IEpjQ2hlY2tib3hCdWlsZGVyLCB0eXBlIEpjQ2hlY2tib3hJbnB1dCB9IGZyb20gJy4vamMuY2hlY2tib3guanMnXG5pbXBvcnQgeyBKY0Nob2ljZUZpZWxkQnVpbGRlciwgdHlwZSBKY0Nob2ljZUZpZWxkSW5wdXQgfSBmcm9tICcuL2pjLmNob2ljZS1maWVsZC5qcydcbmltcG9ydCB7IEpjQ2hvaWNlRmllbGRJdGVtQnVpbGRlciwgdHlwZSBKY0Nob2ljZUZpZWxkSXRlbUlucHV0IH0gZnJvbSAnLi9qYy5jaG9pY2UtZmllbGQtaXRlbS5qcydcbmltcG9ydCB7IEpjQ291bnREb3duQnVpbGRlciwgdHlwZSBKY0NvdW50RG93bklucHV0IH0gZnJvbSAnLi9qYy5jb3VudC1kb3duLmpzJ1xuaW1wb3J0IHsgSmNDb3VudFVwQnVpbGRlciwgdHlwZSBKY0NvdW50VXBJbnB1dCB9IGZyb20gJy4vamMuY291bnQtdXAuanMnXG5pbXBvcnQge1xuICBKY0N1c3RvbUNvbXBvbmVudEludGVyb3BCdWlsZGVyLFxuICB0eXBlIEpjQ3VzdG9tQ29tcG9uZW50SW50ZXJvcElucHV0LFxufSBmcm9tICcuL2pjLmN1c3RvbS1jb21wb25lbnQuaW50ZXJvcC5qcydcbmltcG9ydCB7IEpjRGF0ZVBpY2tlckJ1aWxkZXIsIHR5cGUgSmNEYXRlUGlja2VySW5wdXQgfSBmcm9tICcuL2pjLmRhdGUtcGlja2VyLmpzJ1xuaW1wb3J0IHsgSmNEaXZpZGVyQnVpbGRlciwgdHlwZSBKY0RpdmlkZXJJbnB1dCB9IGZyb20gJy4vamMuZGl2aWRlci5qcydcbmltcG9ydCB7IEpjRHJvcGRvd25CdWlsZGVyLCB0eXBlIEpjRHJvcGRvd25JbnB1dCB9IGZyb20gJy4vamMuZHJvcGRvd24uanMnXG5pbXBvcnQgeyBKY0R1cmF0aW9uUGlja2VyQnVpbGRlciwgdHlwZSBKY0R1cmF0aW9uUGlja2VySW5wdXQgfSBmcm9tICcuL2pjLmR1cmF0aW9uLXBpY2tlci5qcydcbmltcG9ydCB7IEpjRW1haWxGaWVsZEJ1aWxkZXIsIHR5cGUgSmNFbWFpbEZpZWxkSW5wdXQgfSBmcm9tICcuL2pjLmVtYWlsLWZpZWxkLmpzJ1xuaW1wb3J0IHsgSmNFbnRpdHlCdWlsZGVyLCB0eXBlIEpjRW50aXR5SW5wdXQgfSBmcm9tICcuL2pjLmVudGl0eS5qcydcbmltcG9ydCB7IEpjRW50aXR5RmllbGRCdWlsZGVyLCB0eXBlIEpjRW50aXR5RmllbGRJbnB1dCB9IGZyb20gJy4vamMuZW50aXR5LWZpZWxkLmpzJ1xuaW1wb3J0IHsgSmNFdmVudEJ1aWxkZXIsIHR5cGUgSmNFdmVudElucHV0IH0gZnJvbSAnLi9qYy5ldmVudC5qcydcbmltcG9ydCB7IEpjRXhwYW5kZXJCdWlsZGVyLCB0eXBlIEpjRXhwYW5kZXJJbnB1dCB9IGZyb20gJy4vamMuZXhwYW5kZXIuanMnXG5pbXBvcnQgeyBKY0ZpZWxkUm93QnVpbGRlciwgdHlwZSBKY0ZpZWxkUm93SW5wdXQgfSBmcm9tICcuL2pjLmZpZWxkLXJvdy5qcydcbmltcG9ydCB7IEpjRW50aXR5RmllbGRSb3dCdWlsZGVyIH0gZnJvbSAnLi9qYy5maWVsZC1yb3cuZW50aXR5LmpzJ1xuaW1wb3J0IHsgSmNGb3JtQnVpbGRlciwgdHlwZSBKY0Zvcm1JbnB1dCB9IGZyb20gJy4vamMuZm9ybS5qcydcbmltcG9ydCB7IEpjR2FsbGVyeUl0ZW1CdWlsZGVyLCB0eXBlIEpjR2FsbGVyeUl0ZW1JbnB1dCB9IGZyb20gJy4vamMuZ2FsbGVyeS1pdGVtLmpzJ1xuaW1wb3J0IHsgSmNHcmlkQnVpbGRlciwgdHlwZSBKY0dyaWRJbnB1dCB9IGZyb20gJy4vamMuZ3JpZC5qcydcbmltcG9ydCB7IEpjR3JpZEl0ZW1CdWlsZGVyLCB0eXBlIEpjR3JpZEl0ZW1JbnB1dCB9IGZyb20gJy4vamMuZ3JpZC1pdGVtLmpzJ1xuaW1wb3J0IHsgSmNJY29uQnVpbGRlciwgdHlwZSBKY0ljb25JbnB1dCB9IGZyb20gJy4vamMuaWNvbi5qcydcbmltcG9ydCB7IEpjSW1hZ2VPbkNhcm91c2VsQnVpbGRlciwgdHlwZSBKY0ltYWdlT25DYXJvdXNlbElucHV0IH0gZnJvbSAnLi9qYy5pbWFnZS5vbi1jYXJvdXNlbC5qcydcbmltcG9ydCB7IEpjSmlnQnVpbGRlciwgdHlwZSBKY0ppZ0lucHV0IH0gZnJvbSAnLi9qYy5qaWcuanMnXG5pbXBvcnQgeyBKY0ltYWdlT25EZWZhdWx0QnVpbGRlciwgdHlwZSBKY0ltYWdlT25EZWZhdWx0SW5wdXQgfSBmcm9tICcuL2pjLmltYWdlLm9uLWRlZmF1bHQuanMnXG5pbXBvcnQgeyBKY0ludGVyYWN0aXZlSW1hZ2VCdWlsZGVyLCB0eXBlIEpjSW50ZXJhY3RpdmVJbWFnZUlucHV0IH0gZnJvbSAnLi9qYy5pbnRlcmFjdGl2ZS1pbWFnZS5qcydcbmltcG9ydCB7XG4gIEpjSW50ZXJhY3RpdmVJbWFnZUl0ZW1CdWlsZGVyLFxuICB0eXBlIEpjSW50ZXJhY3RpdmVJbWFnZUl0ZW1JbnB1dCxcbn0gZnJvbSAnLi9qYy5pbnRlcmFjdGl2ZS1pbWFnZS5pdGVtLmpzJ1xuaW1wb3J0IHsgSmNKaWdIZWFkZXJCdWlsZGVyLCB0eXBlIEpjSmlnSGVhZGVySW5wdXQgfSBmcm9tICcuL2pjLmppZy1oZWFkZXIuanMnXG5pbXBvcnQgeyBKY0ppZ1dpZGdldEJ1aWxkZXIsIHR5cGUgSmNKaWdXaWRnZXRJbnB1dCB9IGZyb20gJy4vamMuamlnLXdpZGdldC5qcydcbmltcG9ydCB7IEpjTGluZUNoYXJ0QnVpbGRlciwgdHlwZSBKY0xpbmVDaGFydElucHV0IH0gZnJvbSAnLi9qYy5saW5lLWNoYXJ0LmpzJ1xuaW1wb3J0IHsgSmNMaXN0QnVpbGRlciwgdHlwZSBKY0xpc3RJbnB1dCB9IGZyb20gJy4vamMubGlzdC5qcydcbmltcG9ydCB7IEpjTGlzdEl0ZW1CdWlsZGVyLCB0eXBlIEpjTGlzdEl0ZW1PcHRpb25zIH0gZnJvbSAnLi9qYy5saXN0LWl0ZW0uanMnXG5pbXBvcnQge1xuICBKY0xpc3RJdGVtU3RhbmRhbG9uZUJ1aWxkZXIsXG4gIHR5cGUgSmNMaXN0SXRlbVN0YW5kYWxvbmVPcHRpb25zLFxufSBmcm9tICcuL2pjLmxpc3QtaXRlbS5zdGFuZGFsb25lLmpzJ1xuaW1wb3J0IHsgSmNMb2NhdGlvbkJ1aWxkZXIsIHR5cGUgSmNMb2NhdGlvbklucHV0IH0gZnJvbSAnLi9qYy5sb2NhdGlvbi5qcydcbmltcG9ydCB7IEpjTWFya2VySXRlbUJ1aWxkZXIsIHR5cGUgSmNNYXJrZXJJdGVtSW5wdXQgfSBmcm9tICcuL2pjLm1hcmtlci1pdGVtLmpzJ1xuaW1wb3J0IHsgSmNNZWRpYUZpZWxkQnVpbGRlciwgdHlwZSBKY01lZGlhRmllbGRJbnB1dCB9IGZyb20gJy4vamMubWVkaWEtZmllbGQuanMnXG5pbXBvcnQgeyBKY01lbnVJdGVtQnVpbGRlciwgdHlwZSBKY01lbnVJdGVtSW5wdXQgfSBmcm9tICcuL2pjLm1lbnUtaXRlbS5qcydcbmltcG9ydCB7IEpjTnVtYmVyRmllbGRCdWlsZGVyLCB0eXBlIEpjTnVtYmVyRmllbGRJbnB1dCB9IGZyb20gJy4vamMubnVtYmVyLWZpZWxkLmpzJ1xuaW1wb3J0IHsgSmNQaWVDaGFydEJ1aWxkZXIsIHR5cGUgSmNQaWVDaGFydElucHV0IH0gZnJvbSAnLi9qYy5waWUtY2hhcnQuanMnXG5pbXBvcnQgeyBKY1Byb2dyZXNzQmFyQnVpbGRlciwgdHlwZSBKY1Byb2dyZXNzQmFySW5wdXQgfSBmcm9tICcuL2pjLnByb2dyZXNzLWJhci5qcydcbmltcG9ydCB7IEpjUmF0aW5nQnVpbGRlciwgdHlwZSBKY1JhdGluZ0lucHV0IH0gZnJvbSAnLi9qYy5yYXRpbmcuanMnXG5pbXBvcnQgeyBKY1NlY3Rpb25PbkRlZmF1bHRCdWlsZGVyLCB0eXBlIEpjU2VjdGlvbk9uRGVmYXVsdElucHV0IH0gZnJvbSAnLi9qYy5zZWN0aW9uLm9uLWRlZmF1bHQuanMnXG5pbXBvcnQgeyBKY1NlZ21lbnRlZENvbnRyb2xCdWlsZGVyLCB0eXBlIEpjU2VnbWVudGVkQ29udHJvbElucHV0IH0gZnJvbSAnLi9qYy5zZWdtZW50ZWQtY29udHJvbC5qcydcbmltcG9ydCB7IEpjU2lnbmF0dXJlRmllbGRCdWlsZGVyLCB0eXBlIEpjU2lnbmF0dXJlRmllbGRJbnB1dCB9IGZyb20gJy4vamMuc2lnbmF0dXJlLWZpZWxkLmpzJ1xuaW1wb3J0IHsgSmNTbGlkZXJCdWlsZGVyLCB0eXBlIEpjU2xpZGVySW5wdXQgfSBmcm9tICcuL2pjLnNsaWRlci5qcydcbmltcG9ydCB7IEpjU3RhZ2VCdWlsZGVyLCB0eXBlIEpjU3RhZ2VJbnB1dCB9IGZyb20gJy4vamMuc3RhZ2UuanMnXG5pbXBvcnQgeyBKY1N0ZXBwZXJCdWlsZGVyLCB0eXBlIEpjU3RlcHBlcklucHV0IH0gZnJvbSAnLi9qYy5zdGVwcGVyLmpzJ1xuaW1wb3J0IHsgSmNTdG9yeUdyb3VwQnVpbGRlciwgdHlwZSBKY1N0b3J5R3JvdXBJbnB1dCB9IGZyb20gJy4vamMuc3RvcnktZ3JvdXAuanMnXG5pbXBvcnQgeyBKY1N1bW1hcnlDYXJkQnVpbGRlciwgdHlwZSBKY1N1bW1hcnlDYXJkSW5wdXRPcHRpb25zIH0gZnJvbSAnLi9qYy5zdW1tYXJ5LmNhcmQuanMnXG5pbXBvcnQgeyBKY1N1bW1hcnlDb3VudGVyQnVpbGRlciwgdHlwZSBKY1N1bW1hcnlDb3VudGVySW5wdXRPcHRpb25zIH0gZnJvbSAnLi9qYy5zdW1tYXJ5LmNvdW50ZXIuanMnXG5pbXBvcnQgeyBKY1N1bW1hcnlEZWZhdWx0QnVpbGRlciwgdHlwZSBKY1N1bW1hcnlEZWZhdWx0SW5wdXRPcHRpb25zIH0gZnJvbSAnLi9qYy5zdW1tYXJ5LmRlZmF1bHQuanMnXG5pbXBvcnQge1xuICBKY1N1bW1hcnlQcm9ncmVzc0J1aWxkZXIsXG4gIHR5cGUgSmNTdW1tYXJ5UHJvZ3Jlc3NJbnB1dE9wdGlvbnMsXG59IGZyb20gJy4vamMuc3VtbWFyeS5wcm9ncmVzcy5qcydcbmltcG9ydCB7IEpjVGV4dEJ1aWxkZXIsIHR5cGUgSmNUZXh0SW5wdXQgfSBmcm9tICcuL2pjLnRleHQuanMnXG5pbXBvcnQgeyBKY1RleHRGaWVsZEJ1aWxkZXIsIHR5cGUgSmNUZXh0RmllbGRJbnB1dCB9IGZyb20gJy4vamMudGV4dC1maWVsZC5qcydcbmltcG9ydCB7IEpjVGl0bGVzQnVpbGRlciwgdHlwZSBKY1RpdGxlc0lucHV0IH0gZnJvbSAnLi9qYy50aXRsZXMuanMnXG5pbXBvcnQgeyBKY1RyZW5kQnVpbGRlciwgdHlwZSBKY1RyZW5kSW5wdXQgfSBmcm9tICcuL2pjLnRyZW5kLmpzJ1xuaW1wb3J0IHsgQ09NUE9ORU5UX1RZUEUsIHR5cGUgQ29tcG9uZW50VHlwZSB9IGZyb20gJy4vamMudHlwZXMuanMnXG5pbXBvcnQgeyBKY1ZpZXdCdWlsZGVyLCB0eXBlIEpjVmlld0lucHV0IH0gZnJvbSAnLi9qYy52aWV3LmpzJ1xuaW1wb3J0IHtcbiAgSmNWaWRlb1BsYXllck9uSmlnQnVpbGRlcixcbiAgdHlwZSBKY1ZpZGVvUGxheWVyT25KaWdJbnB1dCxcbn0gZnJvbSAnLi9qYy52aWRlby1wbGF5ZXIub24tamlnLmpzJ1xuaW1wb3J0IHtcbiAgSmNXZWJWaWV3T25EZWZhdWx0QnVpbGRlcixcbiAgdHlwZSBKY1dlYlZpZXdPbkRlZmF1bHRJbnB1dCxcbn0gZnJvbSAnLi9qYy53ZWItdmlldy5vbi1kZWZhdWx0LmpzJ1xuaW1wb3J0IHsgSmNXZWJWaWV3T25GdWxsQnVpbGRlciwgdHlwZSBKY1dlYlZpZXdPbkZ1bGxJbnB1dCB9IGZyb20gJy4vamMud2ViLXZpZXcub24tZnVsbC5qcydcblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBCQVNFIEZBQ1RPUlkgLSBDb3JlIGNvbXBvbmVudCBmYWN0b3J5IHdpdGggYWxsIGNyZWF0aW9uIG1ldGhvZHNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIE1hcHMgY29tcG9uZW50IHR5cGVzIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgYmFzZSBmYWN0b3J5IG1ldGhvZCBuYW1lcy5cbiAqIFVzZWQgdG8gZGVyaXZlIFBpY2sgdHlwZXMgZnJvbSBBTExPV0VEX1RZUEVTIGFycmF5cy5cbiAqL1xuZXhwb3J0IGNvbnN0IENPTVBPTkVOVF9UT19GQUNUT1JZX01FVEhPRCA9IHtcbiAgW0NPTVBPTkVOVF9UWVBFLkFNT1VOVF9DT05UUk9MXTogJ2Ftb3VudENvbnRyb2wnLFxuICBbQ09NUE9ORU5UX1RZUEUuQVZBVEFSXTogJ2F2YXRhcicsXG4gIFtDT01QT05FTlRfVFlQRS5BVkFUQVJfRklFTERdOiAnYXZhdGFyRmllbGQnLFxuICBbQ09NUE9ORU5UX1RZUEUuQkFOTkVSXTogJ2Jhbm5lcicsXG4gIFtDT01QT05FTlRfVFlQRS5CQVJfQ0hBUlRdOiAnYmFyQ2hhcnQnLFxuICBbQ09NUE9ORU5UX1RZUEUuQlVUVE9OXTogJ2J1dHRvbicsXG4gIFtDT01QT05FTlRfVFlQRS5DQVJEXTogJ2NhcmRPbkRlZmF1bHQnLFxuICBbQ09NUE9ORU5UX1RZUEUuQ0FST1VTRUxdOiAnY2Fyb3VzZWwnLFxuICBbQ09NUE9ORU5UX1RZUEUuQ0hBVF06ICdjaGF0JyxcbiAgW0NPTVBPTkVOVF9UWVBFLkNIQVRfTUVTU0FHRV06ICdjaGF0TWVzc2FnZScsXG4gIFtDT01QT05FTlRfVFlQRS5DSEVDS0JPWF06ICdjaGVja2JveCcsXG4gIFtDT01QT05FTlRfVFlQRS5DSE9JQ0VfRklFTERdOiAnY2hvaWNlRmllbGQnLFxuICBbQ09NUE9ORU5UX1RZUEUuQ0hPSUNFX0ZJRUxEX0lURU1dOiAnY2hvaWNlRmllbGRJdGVtJyxcbiAgW0NPTVBPTkVOVF9UWVBFLkNPVU5URE9XTl06ICdjb3VudERvd24nLFxuICBbQ09NUE9ORU5UX1RZUEUuQ09VTlRfVVBdOiAnY291bnRVcCcsXG4gIFtDT01QT05FTlRfVFlQRS5DVVNUT01fQ09NUE9ORU5UXTogJ2N1c3RvbUNvbXBvbmVudCcsXG4gIFtDT01QT05FTlRfVFlQRS5EQVRFX1BJQ0tFUl06ICdkYXRlUGlja2VyJyxcbiAgW0NPTVBPTkVOVF9UWVBFLkRJVklERVJdOiAnZGl2aWRlcicsXG4gIFtDT01QT05FTlRfVFlQRS5EUk9QRE9XTl06ICdkcm9wZG93bicsXG4gIFtDT01QT05FTlRfVFlQRS5EVVJBVElPTl9QSUNLRVJdOiAnZHVyYXRpb25QaWNrZXInLFxuICBbQ09NUE9ORU5UX1RZUEUuRU1BSUxfRklFTERdOiAnZW1haWxGaWVsZCcsXG4gIFtDT01QT05FTlRfVFlQRS5FTlRJVFldOiAnZW50aXR5JyxcbiAgW0NPTVBPTkVOVF9UWVBFLkVOVElUWV9GSUVMRF06ICdlbnRpdHlGaWVsZCcsXG4gIFtDT01QT05FTlRfVFlQRS5FVkVOVF06ICdldmVudCcsXG4gIFtDT01QT05FTlRfVFlQRS5FWFBBTkRFUl06ICdleHBhbmRlcicsXG4gIFtDT01QT05FTlRfVFlQRS5GSUVMRF9ST1ddOiAnZmllbGRSb3cnLFxuICBbQ09NUE9ORU5UX1RZUEUuRk9STV06ICdmb3JtJyxcbiAgW0NPTVBPTkVOVF9UWVBFLkdBTExFUllfSVRFTV06ICdnYWxsZXJ5SXRlbScsXG4gIFtDT01QT05FTlRfVFlQRS5HUklEXTogJ2dyaWQnLFxuICBbQ09NUE9ORU5UX1RZUEUuR1JJRF9JVEVNXTogJ2dyaWRJdGVtJyxcbiAgW0NPTVBPTkVOVF9UWVBFLklDT05dOiAnaWNvbicsXG4gIFtDT01QT05FTlRfVFlQRS5JTUFHRV06ICdpbWFnZU9uRGVmYXVsdCcsXG4gIFtDT01QT05FTlRfVFlQRS5JTlRFUkFDVElWRV9JTUFHRV06ICdpbnRlcmFjdGl2ZUltYWdlJyxcbiAgW0NPTVBPTkVOVF9UWVBFLklOVEVSQUNUSVZFX0lNQUdFX0lURU1dOiAnaW50ZXJhY3RpdmVJbWFnZUl0ZW0nLFxuICBbQ09NUE9ORU5UX1RZUEUuSklHXTogJ2ppZycsXG4gIFtDT01QT05FTlRfVFlQRS5KSUdfSEVBREVSXTogJ2ppZ0hlYWRlcicsXG4gIFtDT01QT05FTlRfVFlQRS5KSUdfV0lER0VUXTogJ3dpZGdldCcsXG4gIFtDT01QT05FTlRfVFlQRS5MSU5FX0NIQVJUXTogJ2xpbmVDaGFydCcsXG4gIFtDT01QT05FTlRfVFlQRS5MSVNUXTogJ2xpc3QnLFxuICBbQ09NUE9ORU5UX1RZUEUuTElTVF9JVEVNXTogJ2xpc3RJdGVtJyxcbiAgW0NPTVBPTkVOVF9UWVBFLkxPQ0FUSU9OXTogJ2xvY2F0aW9uJyxcbiAgW0NPTVBPTkVOVF9UWVBFLk1BUktFUl9JVEVNXTogJ21hcmtlckl0ZW0nLFxuICBbQ09NUE9ORU5UX1RZUEUuTUVESUFfRklFTERdOiAnbWVkaWFGaWVsZCcsXG4gIFtDT01QT05FTlRfVFlQRS5NRU5VX0lURU1dOiAnbWVudUl0ZW0nLFxuICBbQ09NUE9ORU5UX1RZUEUuTlVNQkVSX0ZJRUxEXTogJ251bWJlckZpZWxkJyxcbiAgW0NPTVBPTkVOVF9UWVBFLlBJRV9DSEFSVF06ICdwaWVDaGFydCcsXG4gIFtDT01QT05FTlRfVFlQRS5QUk9HUkVTU19CQVJdOiAncHJvZ3Jlc3NCYXInLFxuICBbQ09NUE9ORU5UX1RZUEUuUkFUSU5HXTogJ3JhdGluZycsXG4gIFtDT01QT05FTlRfVFlQRS5TRUNUSU9OXTogJ3NlY3Rpb25PbkRlZmF1bHQnLFxuICBbQ09NUE9ORU5UX1RZUEUuU0VHTUVOVEVEX0NPTlRST0xdOiAnc2VnbWVudGVkQ29udHJvbCcsXG4gIFtDT01QT05FTlRfVFlQRS5TSUdOQVRVUkVfRklFTERdOiAnc2lnbmF0dXJlRmllbGQnLFxuICBbQ09NUE9ORU5UX1RZUEUuU0xJREVSXTogJ3NsaWRlcicsXG4gIFtDT01QT05FTlRfVFlQRS5TVEFHRV06ICdzdGFnZScsXG4gIFtDT01QT05FTlRfVFlQRS5TVEVQUEVSXTogJ3N0ZXBwZXInLFxuICBbQ09NUE9ORU5UX1RZUEUuU1RPUllfR1JPVVBdOiAnc3RvcnlHcm91cCcsXG4gIFtDT01QT05FTlRfVFlQRS5TVU1NQVJZXTogJ3N1bW1hcnlEZWZhdWx0JywgLy8gT3V0cHV0LW9ubHkgdHlwZTsgbm90IGRpcmVjdGx5IGNvbnN0cnVjdGFibGVcbiAgW0NPTVBPTkVOVF9UWVBFLlNVTU1BUllfREVGQVVMVF06ICdzdW1tYXJ5RGVmYXVsdCcsXG4gIFtDT01QT05FTlRfVFlQRS5TVU1NQVJZX0NBUkRdOiAnc3VtbWFyeUNhcmQnLFxuICBbQ09NUE9ORU5UX1RZUEUuU1VNTUFSWV9DT1VOVEVSXTogJ3N1bW1hcnlDb3VudGVyJyxcbiAgW0NPTVBPTkVOVF9UWVBFLlNVTU1BUllfUFJPR1JFU1NdOiAnc3VtbWFyeVByb2dyZXNzJyxcbiAgW0NPTVBPTkVOVF9UWVBFLlRFWFRdOiAndGV4dCcsXG4gIFtDT01QT05FTlRfVFlQRS5URVhUX0ZJRUxEXTogJ3RleHRGaWVsZCcsXG4gIFtDT01QT05FTlRfVFlQRS5USVRMRVNdOiAndGl0bGVzJyxcbiAgW0NPTVBPTkVOVF9UWVBFLlRSRU5EXTogJ3RyZW5kJyxcbiAgW0NPTVBPTkVOVF9UWVBFLlZJREVPX1BMQVlFUl06ICd2aWRlb1BsYXllck9uSmlnJyxcbiAgW0NPTVBPTkVOVF9UWVBFLlZJRVddOiAndmlldycsXG4gIFtDT01QT05FTlRfVFlQRS5XRUJfVklFV106ICd3ZWJWaWV3T25EZWZhdWx0JyxcbiAgW0NPTVBPTkVOVF9UWVBFLkRST1BET1dOX0lURU1dOiAnY2hvaWNlRmllbGRJdGVtJyxcbiAgW0NPTVBPTkVOVF9UWVBFLlBST0RVQ1RfSVRFTV06ICdncmlkSXRlbScsXG4gIFtDT01QT05FTlRfVFlQRS5TVEVQXTogJ3N0YWdlJyxcbiAgW0NPTVBPTkVOVF9UWVBFLlRBQl9CVVRUT05dOiAnc2VnbWVudGVkQ29udHJvbCcsXG59IGFzIGNvbnN0IHNhdGlzZmllcyBSZWNvcmQ8Q29tcG9uZW50VHlwZSwga2V5b2YgSmNCdWlsZGVyRmFjdG9yeT5cblxuLyoqXG4gKiBEZXJpdmVzIGZhY3RvcnkgbWV0aG9kcyBmcm9tIGNvbXBvbmVudCB0eXBlcyBhcnJheS5cbiAqIFVzYWdlOiBGYWN0b3J5TWV0aG9kc0Zvcjx0eXBlb2YgQUxMT1dFRF9UWVBFUz5cbiAqL1xuZXhwb3J0IHR5cGUgRmFjdG9yeU1ldGhvZHNGb3I8VCBleHRlbmRzIHJlYWRvbmx5IENvbXBvbmVudFR5cGVbXT4gPVxuICBUW251bWJlcl0gZXh0ZW5kcyBrZXlvZiB0eXBlb2YgQ09NUE9ORU5UX1RPX0ZBQ1RPUllfTUVUSE9EXG4gICAgPyBQaWNrPEpjQnVpbGRlckZhY3RvcnksICh0eXBlb2YgQ09NUE9ORU5UX1RPX0ZBQ1RPUllfTUVUSE9EKVtUW251bWJlcl1dPlxuICAgIDogbmV2ZXJcblxuLyoqXG4gKiBEZXJpdmVzIHVuaW9uIG9mIGJ1aWxkZXIgdHlwZXMgZnJvbSBhbGxvd2VkIGNvbXBvbmVudCB0eXBlcyBmb3IgYmFzZSBmYWN0b3J5IGNvbnRleHQuXG4gKiBVc2VkIGJ5IGNvbXBvbmVudHMgdGhhdCB1c2UgSmNCdWlsZGVyRmFjdG9yeSBkaXJlY3RseSB3aXRob3V0IGEgc3BlY2lhbGl6ZWQgZmFjdG9yeS5cbiAqXG4gKiBUaGlzIHR5cGUgaGVscGVyIGVsaW1pbmF0ZXMgbWFudWFsIG1haW50ZW5hbmNlIG9mIGJ1aWxkZXIgdW5pb24gdHlwZXNcbiAqIGJ5IGF1dG9tYXRpY2FsbHkgZXh0cmFjdGluZyByZXR1cm4gdHlwZXMgZnJvbSBmYWN0b3J5IG1ldGhvZHMuXG4gKlxuICogV2h5IHdlIG5lZWQgdGhpczpcbiAqIC0gQ29tcG9uZW50cyBuZWVkIHRvIHN0b3JlIGNoaWxkIGJ1aWxkZXJzIHdpdGggY29ycmVjdCB0eXBlc1xuICogLSBNYW51YWxseSBtYWludGFpbmluZyB1bmlvbnMgKGUuZy4sIEpjSW1hZ2VCdWlsZGVyIHwgSmNUZXh0QnVpbGRlcilcbiAqICAgaXMgZXJyb3ItcHJvbmUgYW5kIHZpb2xhdGVzIERSWSBwcmluY2lwbGVcbiAqIC0gV2hlbiBBTExPV0VEX1RZUEVTIGNoYW5nZXMsIHRoZSB1bmlvbiB0eXBlIHVwZGF0ZXMgYXV0b21hdGljYWxseVxuICpcbiAqIEhvdyBpdCB3b3JrczpcbiAqIDEuIFRha2VzIEFMTE9XRURfVFlQRVMgYXJyYXkgKGUuZy4sIFtDT01QT05FTlRfVFlQRS5JTUFHRSwgQ09NUE9ORU5UX1RZUEUuVEVYVCwgLi4uXSlcbiAqIDIuIEZhY3RvcnlNZXRob2RzRm9yPFQ+IG1hcHMgdG8gZmFjdG9yeSBtZXRob2RzIChlLmcuLCB7IGltYWdlT25EZWZhdWx0OiAuLi4sIHdpZGdldDogLi4uIH0pXG4gKiAzLiBba2V5b2YgLi4uXSBhY2Nlc3NlcyBhbGwgbWV0aG9kIHNpZ25hdHVyZXMgaW4gdGhlIFBpY2sgdHlwZVxuICogNC4gQ29uZGl0aW9uYWwgdHlwZSB3aXRoICdpbmZlciBSJyBleHRyYWN0cyB0aGUgcmV0dXJuIHR5cGUgb2YgZWFjaCBtZXRob2RcbiAqIDUuIFJlc3VsdCBpcyBhIHVuaW9uIG9mIGFsbCBidWlsZGVyIHR5cGVzIHRoYXQgY2FuIGJlIGNyZWF0ZWRcbiAqL1xuZXhwb3J0IHR5cGUgQmFzZUJ1aWxkZXJVbmlvbkZyb21BbGxvd2VkVHlwZXM8VCBleHRlbmRzIHJlYWRvbmx5IENvbXBvbmVudFR5cGVbXT4gPVxuICBGYWN0b3J5TWV0aG9kc0ZvcjxUPltrZXlvZiBGYWN0b3J5TWV0aG9kc0ZvcjxUPl0gZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGluZmVyIFIgPyBSIDogbmV2ZXJcblxuLyoqXG4gKiBJbnRlcm5hbCBmYWN0b3J5IGNsYXNzIGNvbnRhaW5pbmcgYWxsIEpDIGNvbXBvbmVudCBjcmVhdGlvbiBtZXRob2RzLlxuICogQ29tcG9uZW50cyBzaG91bGQgdXNlIFBpY2s8SkNGYWN0b3J5Q2xhc3MsIC4uLj4gdG8gc2VsZWN0IG9ubHkgdGhlIG1ldGhvZHMgdGhleSBuZWVkLlxuICogVGhpcyBhdm9pZHMgY2lyY3VsYXIgZGVwZW5kZW5jaWVzIHdoaWxlIG1haW50YWluaW5nIGZ1bGwgdHlwZSBzYWZldHkuXG4gKlxuICogV2hlbiBpbnN0YW50aWF0ZWQgd2l0aCBvbkNvbXBvbmVudENyZWF0ZWQgY2FsbGJhY2ssIG5vdGlmaWVzIHBhcmVudCBvZiBjcmVhdGVkIGNvbXBvbmVudHMuXG4gKiBHZW5lcmljIHR5cGUgVCBhbGxvd3MgYXV0b21hdGljIGluZmVyZW5jZSBvZiBjb21wb25lbnQgdHlwZXMgZnJvbSBBTExPV0VEX1RZUEVTLlxuICovXG5leHBvcnQgY2xhc3MgSmNCdWlsZGVyRmFjdG9yeTxUIGV4dGVuZHMgcmVhZG9ubHkgQ29tcG9uZW50VHlwZVtdID0gcmVhZG9ubHkgQ29tcG9uZW50VHlwZVtdPiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfYWxsb3dlZDogVFxuICAvKipcbiAgICogSW50ZXJuYWwgY2FsbGJhY2sgZm9yIGNvbXBvbmVudCBjcmVhdGlvbiBub3RpZmljYXRpb24uXG4gICAqXG4gICAqIFdoeSB3ZSB1c2UgJ3Vua25vd24nIGhlcmUgaW5zdGVhZCBvZiBCYXNlQnVpbGRlclVuaW9uRnJvbUFsbG93ZWRUeXBlczxUPjpcbiAgICogRWFjaCBmYWN0b3J5IG1ldGhvZCAoYXZhdGFyKCksIGJ1dHRvbigpLCBldGMuKSBjcmVhdGVzIGEgc3BlY2lmaWMgYnVpbGRlciB0eXBlLFxuICAgKiBidXQgVHlwZVNjcmlwdCBjYW5ub3QgcHJvdmUgYXQgY29tcGlsZS10aW1lIHRoYXQgdGhlc2UgY29uY3JldGUgdHlwZXMgYXJlIHBhcnRcbiAgICogb2YgdGhlIGdlbmVyaWMgdW5pb24gQmFzZUJ1aWxkZXJVbmlvbkZyb21BbGxvd2VkVHlwZXM8VD4uIEV2ZW4gdGhvdWdoIHdlIGhhdmUgcnVudGltZVxuICAgKiBndWFyZHMgY2hlY2tpbmcgX2FsbG93ZWQuaW5jbHVkZXMoKSwgVHlwZVNjcmlwdCdzIGNvbnRyb2wgZmxvdyBhbmFseXNpcyBkb2Vzbid0XG4gICAqIG5hcnJvdyBnZW5lcmljIHR5cGUgcGFyYW1ldGVycy4gVXNpbmcgJ3Vua25vd24nIGhlcmUgaXMgYSBwcmFnbWF0aWMgdHJhZGUtb2ZmOlxuICAgKiAtIFR5cGUgc2FmZXR5IGlzIGVuZm9yY2VkIGF0IHRoZSBjb25zdHJ1Y3RvciBib3VuZGFyeSAocHVibGljIEFQSSlcbiAgICogLSBSdW50aW1lIGNoZWNrcyBlbnN1cmUgb25seSBhbGxvd2VkIGNvbXBvbmVudHMgYXJlIGNyZWF0ZWRcbiAgICogLSBJbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBieXBhc3NlcyB0eXBlIGNoZWNraW5nIGZvciBzaW1wbGljaXR5XG4gICAqIFRoaXMgaXMgYSBjb21tb24gcGF0dGVybiB3aGVuIGJyaWRnaW5nIGdlbmVyaWMgY29uc3RyYWludHMgd2l0aCBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbnMuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX29uQ29tcG9uZW50Q3JlYXRlZDogKGNvbXBvbmVudDogdW5rbm93bikgPT4gdm9pZFxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGFsbG93ZWQ6IFQsXG4gICAgb25Db21wb25lbnRDcmVhdGVkOiAoY29tcG9uZW50OiBCYXNlQnVpbGRlclVuaW9uRnJvbUFsbG93ZWRUeXBlczxUPikgPT4gdm9pZCxcbiAgKSB7XG4gICAgdGhpcy5fYWxsb3dlZCA9IGFsbG93ZWRcbiAgICAvLyBUeXBlLWVyYXNlIGZvciBpbnRlcm5hbCB1c2Ugd2hpbGUgbWFpbnRhaW5pbmcgdHlwZSBzYWZldHkgYXQgdGhlIGJvdW5kYXJ5XG4gICAgdGhpcy5fb25Db21wb25lbnRDcmVhdGVkID0gb25Db21wb25lbnRDcmVhdGVkIGFzIChjb21wb25lbnQ6IHVua25vd24pID0+IHZvaWRcbiAgfVxuXG4gIC8qKlxuICAgKiBOdW1lcmljIGluY3JlbWVudC9kZWNyZW1lbnQgY29udHJvbC5cbiAgICovXG4gIGFtb3VudENvbnRyb2wob3B0aW9ucz86IEpjQW1vdW50Q29udHJvbElucHV0KTogSmNBbW91bnRDb250cm9sQnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLl9hbGxvd2VkLmluY2x1ZGVzKCdjb21wb25lbnQuYW1vdW50LWNvbnRyb2wnKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgdHlwZSAnYW1vdW50LWNvbnRyb2wnIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC5gKVxuICAgIH1cbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjQW1vdW50Q29udHJvbEJ1aWxkZXIob3B0aW9ucylcbiAgICB0aGlzLl9vbkNvbXBvbmVudENyZWF0ZWQoYnVpbGRlcilcbiAgICByZXR1cm4gYnVpbGRlclxuICB9XG5cbiAgLyoqXG4gICAqIENpcmN1bGFyIHVzZXIgaW1hZ2Ugd2l0aCBpbml0aWFscyBmYWxsYmFjay5cbiAgICovXG4gIGF2YXRhcihvcHRpb25zPzogSmNBdmF0YXJJbnB1dCk6IEpjQXZhdGFyQnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLl9hbGxvd2VkLmluY2x1ZGVzKCdjb21wb25lbnQuYXZhdGFyJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcG9uZW50IHR5cGUgJ2F2YXRhcicgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0LmApXG4gICAgfVxuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSmNBdmF0YXJCdWlsZGVyKG9wdGlvbnMpXG4gICAgdGhpcy5fb25Db21wb25lbnRDcmVhdGVkKGJ1aWxkZXIpXG4gICAgcmV0dXJuIGJ1aWxkZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9taW5lbnQgaW5mb3JtYXRpb25hbCBtZXNzYWdlIHdpdGggaWNvbiwgYWN0aW9ucywgYW5kIHN0YXR1cyBzdHlsaW5nLlxuICAgKi9cbiAgYmFubmVyKG9wdGlvbnM6IEpjQmFubmVySW5wdXQpOiBKY0Jhbm5lckJ1aWxkZXIge1xuICAgIGlmICghdGhpcy5fYWxsb3dlZC5pbmNsdWRlcygnY29tcG9uZW50LmJhbm5lcicpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBvbmVudCB0eXBlICdiYW5uZXInIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC5gKVxuICAgIH1cbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjQmFubmVyQnVpbGRlcihvcHRpb25zKVxuICAgIHRoaXMuX29uQ29tcG9uZW50Q3JlYXRlZChidWlsZGVyKVxuICAgIHJldHVybiBidWlsZGVyXG4gIH1cblxuICAvKipcbiAgICogU3RhbmRhbG9uZSBwcmVzc2FibGUgYnV0dG9uIHdpdGggaWNvbiBhbmQgc3R5bGluZy5cbiAgICovXG4gIGJ1dHRvbihvcHRpb25zOiBKY0J1dHRvbklucHV0KTogSmNCdXR0b25CdWlsZGVyIHtcbiAgICBpZiAoIXRoaXMuX2FsbG93ZWQuaW5jbHVkZXMoJ2NvbXBvbmVudC5idXR0b24nKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgdHlwZSAnYnV0dG9uJyBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNvbnRleHQuYClcbiAgICB9XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBKY0J1dHRvbkJ1aWxkZXIob3B0aW9ucylcbiAgICB0aGlzLl9vbkNvbXBvbmVudENyZWF0ZWQoYnVpbGRlcilcbiAgICByZXR1cm4gYnVpbGRlclxuICB9XG5cbiAgLyoqXG4gICAqIERpc3BsYXlzIGNhdGVnb3JpY2FsIGRhdGEgYXMgdmVydGljYWwvaG9yaXpvbnRhbCBiYXJzIHdpdGggbXVsdGlwbGUgc2VyaWVzIHN1cHBvcnQuXG4gICAqL1xuICBiYXJDaGFydChvcHRpb25zPzogSmNCYXJDaGFydElucHV0KTogSmNCYXJDaGFydEJ1aWxkZXIge1xuICAgIGlmICghdGhpcy5fYWxsb3dlZC5pbmNsdWRlcygnY29tcG9uZW50LmJhci1jaGFydCcpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBvbmVudCB0eXBlICdiYXItY2hhcnQnIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC5gKVxuICAgIH1cbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjQmFyQ2hhcnRCdWlsZGVyKG9wdGlvbnMpXG4gICAgdGhpcy5fb25Db21wb25lbnRDcmVhdGVkKGJ1aWxkZXIpXG4gICAgcmV0dXJuIGJ1aWxkZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBHcm91cHMgY29udGVudCBpbiBmbGV4aWJsZSBsYXlvdXRzIHdpdGggc3R5bGluZy5cbiAgICovXG4gIGNhcmRPbkRlZmF1bHQob3B0aW9uczogSmNDYXJkT25EZWZhdWx0SW5wdXQgPSB7fSk6IEpjQ2FyZE9uRGVmYXVsdEJ1aWxkZXIge1xuICAgIGlmICghdGhpcy5fYWxsb3dlZC5pbmNsdWRlcygnY29tcG9uZW50LmNhcmQnKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgdHlwZSAnY2FyZE9uRGVmYXVsdCcgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0LmApXG4gICAgfVxuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSmNDYXJkT25EZWZhdWx0QnVpbGRlcihvcHRpb25zKVxuICAgIHRoaXMuX29uQ29tcG9uZW50Q3JlYXRlZChidWlsZGVyKVxuICAgIHJldHVybiBidWlsZGVyXG4gIH1cblxuICAvKipcbiAgICogSG9yaXpvbnRhbCBzd2lwZWFibGUgZ2FsbGVyeSB3aXRoIHBhZ2luYXRpb24uXG4gICAqL1xuICBjYXJvdXNlbChvcHRpb25zOiBKY0Nhcm91c2VsSW5wdXQgPSB7fSk6IEpjQ2Fyb3VzZWxCdWlsZGVyIHtcbiAgICBpZiAoIXRoaXMuX2FsbG93ZWQuaW5jbHVkZXMoJ2NvbXBvbmVudC5jYXJvdXNlbCcpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBvbmVudCB0eXBlICdjYXJvdXNlbCcgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0LmApXG4gICAgfVxuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSmNDYXJvdXNlbEJ1aWxkZXIob3B0aW9ucylcbiAgICB0aGlzLl9vbkNvbXBvbmVudENyZWF0ZWQoYnVpbGRlcilcbiAgICByZXR1cm4gYnVpbGRlclxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBjaGF0IGNvbXBvbmVudHMgd2l0aCBtZXNzYWdlIHRlbXBsYXRlcywgc2VuZCBhY3Rpb25zLCBkYXRhIGJpbmRpbmcuXG4gICAqL1xuICBjaGF0KG9wdGlvbnM/OiBKY0NoYXRJbnB1dCk6IEpjQ2hhdEJ1aWxkZXIge1xuICAgIGlmICghdGhpcy5fYWxsb3dlZC5pbmNsdWRlcygnY29tcG9uZW50LmNoYXQnKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgdHlwZSAnY2hhdCcgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0LmApXG4gICAgfVxuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSmNDaGF0QnVpbGRlcihvcHRpb25zKVxuICAgIHRoaXMuX29uQ29tcG9uZW50Q3JlYXRlZChidWlsZGVyKVxuICAgIHJldHVybiBidWlsZGVyXG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGNob2ljZSBmaWVsZCBpdGVtcyB3aXRoIHRpdGxlIGRpc3BsYXkgYW5kIHVuaXF1ZSB2YWx1ZXMuXG4gICAqL1xuICBjaG9pY2VGaWVsZEl0ZW0ob3B0aW9ucz86IEpjQ2hvaWNlRmllbGRJdGVtSW5wdXQpOiBKY0Nob2ljZUZpZWxkSXRlbUJ1aWxkZXIge1xuICAgIGlmICghdGhpcy5fYWxsb3dlZC5pbmNsdWRlcygnY29tcG9uZW50LmNob2ljZS1maWVsZC1pdGVtJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcG9uZW50IHR5cGUgJ2Nob2ljZUZpZWxkSXRlbScgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0LmApXG4gICAgfVxuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSmNDaG9pY2VGaWVsZEl0ZW1CdWlsZGVyKG9wdGlvbnMpXG4gICAgdGhpcy5fb25Db21wb25lbnRDcmVhdGVkKGJ1aWxkZXIpXG4gICAgcmV0dXJuIGJ1aWxkZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBDb3VudGRvd24gdGltZXIgdG8gdGFyZ2V0IGRhdGUvdGltZS5cbiAgICovXG4gIGNvdW50RG93bihvcHRpb25zPzogSmNDb3VudERvd25JbnB1dCk6IEpjQ291bnREb3duQnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLl9hbGxvd2VkLmluY2x1ZGVzKCdjb21wb25lbnQuY291bnRkb3duJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcG9uZW50IHR5cGUgJ2NvdW50RG93bicgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0LmApXG4gICAgfVxuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSmNDb3VudERvd25CdWlsZGVyKG9wdGlvbnMpXG4gICAgdGhpcy5fb25Db21wb25lbnRDcmVhdGVkKGJ1aWxkZXIpXG4gICAgcmV0dXJuIGJ1aWxkZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBBbmltYXRlZCBudW1iZXIgY291bnRlciBmcm9tIHN0YXJ0IHRvIGVuZC5cbiAgICovXG4gIGNvdW50VXAob3B0aW9ucz86IEpjQ291bnRVcElucHV0KTogSmNDb3VudFVwQnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLl9hbGxvd2VkLmluY2x1ZGVzKCdjb21wb25lbnQuY291bnQtdXAnKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgdHlwZSAnY291bnRVcCcgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0LmApXG4gICAgfVxuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSmNDb3VudFVwQnVpbGRlcihvcHRpb25zKVxuICAgIHRoaXMuX29uQ29tcG9uZW50Q3JlYXRlZChidWlsZGVyKVxuICAgIHJldHVybiBidWlsZGVyXG4gIH1cblxuICAvKipcbiAgICogTG9hZCBkZXByZWNhdGVkIGN1c3RvbSBjb21wb25lbnRzIGZyb20gWUFNTC9KU09OLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBDdXN0b20gY29tcG9uZW50cyBhcmUgZGVwcmVjYXRlZC4gUHJlZmVyIG5hdGl2ZSBTREsgY29tcG9uZW50cy5cbiAgICovXG4gIGN1c3RvbUNvbXBvbmVudChvcHRpb25zOiBKY0N1c3RvbUNvbXBvbmVudEludGVyb3BJbnB1dCk6IEpjQ3VzdG9tQ29tcG9uZW50SW50ZXJvcEJ1aWxkZXIge1xuICAgIGlmICghdGhpcy5fYWxsb3dlZC5pbmNsdWRlcygnY29tcG9uZW50LmN1c3RvbS1jb21wb25lbnQnKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgdHlwZSAnY3VzdG9tQ29tcG9uZW50JyBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNvbnRleHQuYClcbiAgICB9XG4gICAgY29uc3QgYnVpbGRlciA9IEpjQ3VzdG9tQ29tcG9uZW50SW50ZXJvcEJ1aWxkZXIuZnJvbShvcHRpb25zKVxuICAgIHRoaXMuX29uQ29tcG9uZW50Q3JlYXRlZChidWlsZGVyKVxuICAgIHJldHVybiBidWlsZGVyXG4gIH1cblxuICBlbnRpdHkob3B0aW9uczogSmNFbnRpdHlJbnB1dCA9IHt9KTogSmNFbnRpdHlCdWlsZGVyIHtcbiAgICBpZiAoIXRoaXMuX2FsbG93ZWQuaW5jbHVkZXMoJ2NvbXBvbmVudC5lbnRpdHknKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgdHlwZSAnZW50aXR5JyBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNvbnRleHQuYClcbiAgICB9XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBKY0VudGl0eUJ1aWxkZXIob3B0aW9ucylcbiAgICB0aGlzLl9vbkNvbXBvbmVudENyZWF0ZWQoYnVpbGRlcilcbiAgICByZXR1cm4gYnVpbGRlclxuICB9XG5cbiAgZW50aXR5RmllbGQob3B0aW9ucz86IEpjRW50aXR5RmllbGRJbnB1dCk6IEpjRW50aXR5RmllbGRCdWlsZGVyIHtcbiAgICBpZiAoIXRoaXMuX2FsbG93ZWQuaW5jbHVkZXMoJ2NvbXBvbmVudC5lbnRpdHktZmllbGQnKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgdHlwZSAnZW50aXR5RmllbGQnIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC5gKVxuICAgIH1cbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjRW50aXR5RmllbGRCdWlsZGVyKG9wdGlvbnMpXG4gICAgdGhpcy5fb25Db21wb25lbnRDcmVhdGVkKGJ1aWxkZXIpXG4gICAgcmV0dXJuIGJ1aWxkZXJcbiAgfVxuXG4gIGVudGl0eUZpZWxkUm93KG9wdGlvbnM/OiB7IGluc3RhbmNlSWQ/OiBJbnN0YW5jZUlkIH0pOiBKY0VudGl0eUZpZWxkUm93QnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLl9hbGxvd2VkLmluY2x1ZGVzKCdjb21wb25lbnQuZmllbGQtcm93JykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcG9uZW50IHR5cGUgJ2VudGl0eUZpZWxkUm93JyBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNvbnRleHQuYClcbiAgICB9XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBKY0VudGl0eUZpZWxkUm93QnVpbGRlcihvcHRpb25zKVxuICAgIHRoaXMuX29uQ29tcG9uZW50Q3JlYXRlZChidWlsZGVyKVxuICAgIHJldHVybiBidWlsZGVyXG4gIH1cblxuICBldmVudChvcHRpb25zOiBKY0V2ZW50SW5wdXQgPSB7fSk6IEpjRXZlbnRCdWlsZGVyIHtcbiAgICBpZiAoIXRoaXMuX2FsbG93ZWQuaW5jbHVkZXMoJ2NvbXBvbmVudC5ldmVudCcpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBvbmVudCB0eXBlICdldmVudCcgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0LmApXG4gICAgfVxuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSmNFdmVudEJ1aWxkZXIob3B0aW9ucylcbiAgICB0aGlzLl9vbkNvbXBvbmVudENyZWF0ZWQoYnVpbGRlcilcbiAgICByZXR1cm4gYnVpbGRlclxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBjb2xsYXBzaWJsZSBjb250ZW50IHNlY3Rpb25zIHdpdGggaGVhZGVycyBhbmQgYW5pbWF0aW9ucy5cbiAgICogQGFsaWFzIGNvbXBvbmVudC5leHBhbmRlclxuICAgKi9cbiAgZXhwYW5kZXIob3B0aW9uczogSmNFeHBhbmRlcklucHV0ID0ge30pOiBKY0V4cGFuZGVyQnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLl9hbGxvd2VkLmluY2x1ZGVzKCdjb21wb25lbnQuZXhwYW5kZXInKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgdHlwZSAnZXhwYW5kZXInIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC5gKVxuICAgIH1cbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjRXhwYW5kZXJCdWlsZGVyKG9wdGlvbnMpXG4gICAgdGhpcy5fb25Db21wb25lbnRDcmVhdGVkKGJ1aWxkZXIpXG4gICAgcmV0dXJuIGJ1aWxkZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgaW5wdXQgZmllbGQgZ3JvdXBzIHdpdGggc3RhdGUgbWFuYWdlbWVudC5cbiAgICovXG4gIGZvcm0ob3B0aW9uczogSmNGb3JtSW5wdXQgPSB7fSk6IEpjRm9ybUJ1aWxkZXIge1xuICAgIGlmICghdGhpcy5fYWxsb3dlZC5pbmNsdWRlcygnY29tcG9uZW50LmZvcm0nKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgdHlwZSAnZm9ybScgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0LmApXG4gICAgfVxuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSmNGb3JtQnVpbGRlcihvcHRpb25zKVxuICAgIHRoaXMuX29uQ29tcG9uZW50Q3JlYXRlZChidWlsZGVyKVxuICAgIHJldHVybiBidWlsZGVyXG4gIH1cblxuICAvKipcbiAgICogSW1hZ2UgaXRlbSBmb3IgZ2FsbGVyeSBzY3JlZW5zLlxuICAgKi9cbiAgZ2FsbGVyeUl0ZW0ob3B0aW9uczogSmNHYWxsZXJ5SXRlbUlucHV0KTogSmNHYWxsZXJ5SXRlbUJ1aWxkZXIge1xuICAgIGlmICghdGhpcy5fYWxsb3dlZC5pbmNsdWRlcygnY29tcG9uZW50LmdhbGxlcnktaXRlbScpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBvbmVudCB0eXBlICdjb21wb25lbnQuZ2FsbGVyeS1pdGVtJyBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNvbnRleHQuYClcbiAgICB9XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBKY0dhbGxlcnlJdGVtQnVpbGRlcihvcHRpb25zKVxuICAgIHRoaXMuX29uQ29tcG9uZW50Q3JlYXRlZChidWlsZGVyKVxuICAgIHJldHVybiBidWlsZGVyXG4gIH1cblxuICAvKipcbiAgICogTXVsdGktY29sdW1uIGxheW91dCB3aXRoIGZsZXhpYmxlIGl0ZW0gc2l6aW5nLlxuICAgKi9cbiAgZ3JpZChvcHRpb25zPzogSmNHcmlkSW5wdXQpOiBKY0dyaWRCdWlsZGVyIHtcbiAgICBpZiAoIXRoaXMuX2FsbG93ZWQuaW5jbHVkZXMoJ2NvbXBvbmVudC5ncmlkJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcG9uZW50IHR5cGUgJ2dyaWQnIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC5gKVxuICAgIH1cbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjR3JpZEJ1aWxkZXIob3B0aW9ucylcbiAgICB0aGlzLl9vbkNvbXBvbmVudENyZWF0ZWQoYnVpbGRlcilcbiAgICByZXR1cm4gYnVpbGRlclxuICB9XG5cbiAgZ3JpZEl0ZW0ob3B0aW9ucz86IEpjR3JpZEl0ZW1JbnB1dCk6IEpjR3JpZEl0ZW1CdWlsZGVyIHtcbiAgICBpZiAoIXRoaXMuX2FsbG93ZWQuaW5jbHVkZXMoJ2NvbXBvbmVudC5ncmlkLWl0ZW0nKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgdHlwZSAnZ3JpZEl0ZW0nIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC5gKVxuICAgIH1cbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjR3JpZEl0ZW1CdWlsZGVyKG9wdGlvbnMpXG4gICAgdGhpcy5fb25Db21wb25lbnRDcmVhdGVkKGJ1aWxkZXIpXG4gICAgcmV0dXJuIGJ1aWxkZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHN5c3RlbSBpY29ucyB3aXRoIGNvbG9yIGFuZCBzaXplLlxuICAgKi9cbiAgaWNvbihvcHRpb25zPzogSmNJY29uSW5wdXQpOiBKY0ljb25CdWlsZGVyIHtcbiAgICBpZiAoIXRoaXMuX2FsbG93ZWQuaW5jbHVkZXMoJ2NvbXBvbmVudC5pY29uJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcG9uZW50IHR5cGUgJ2ljb24nIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC5gKVxuICAgIH1cbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjSWNvbkJ1aWxkZXIob3B0aW9ucylcbiAgICB0aGlzLl9vbkNvbXBvbmVudENyZWF0ZWQoYnVpbGRlcilcbiAgICByZXR1cm4gYnVpbGRlclxuICB9XG5cbiAgaW1hZ2VPbkNhcm91c2VsKG9wdGlvbnM/OiBKY0ltYWdlT25DYXJvdXNlbElucHV0KTogSmNJbWFnZU9uQ2Fyb3VzZWxCdWlsZGVyIHtcbiAgICBpZiAoIXRoaXMuX2FsbG93ZWQuaW5jbHVkZXMoJ2NvbXBvbmVudC5pbWFnZScpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBvbmVudCB0eXBlICdpbWFnZU9uQ2Fyb3VzZWwnIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC5gKVxuICAgIH1cbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjSW1hZ2VPbkNhcm91c2VsQnVpbGRlcihvcHRpb25zKVxuICAgIHRoaXMuX29uQ29tcG9uZW50Q3JlYXRlZChidWlsZGVyKVxuICAgIHJldHVybiBidWlsZGVyXG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGltYWdlIGNvbXBvbmVudHMgd2l0aCBzaXppbmcuXG4gICAqL1xuICBpbWFnZU9uRGVmYXVsdChvcHRpb25zPzogSmNJbWFnZU9uRGVmYXVsdElucHV0KTogSmNJbWFnZU9uRGVmYXVsdEJ1aWxkZXIge1xuICAgIGlmICghdGhpcy5fYWxsb3dlZC5pbmNsdWRlcygnY29tcG9uZW50LmltYWdlJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcG9uZW50IHR5cGUgJ2ltYWdlT25EZWZhdWx0JyBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNvbnRleHQuYClcbiAgICB9XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBKY0ltYWdlT25EZWZhdWx0QnVpbGRlcihvcHRpb25zKVxuICAgIHRoaXMuX29uQ29tcG9uZW50Q3JlYXRlZChidWlsZGVyKVxuICAgIHJldHVybiBidWlsZGVyXG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheXMgaW1hZ2VzIHdpdGggY2xpY2thYmxlIGhvdHNwb3RzLlxuICAgKi9cbiAgaW50ZXJhY3RpdmVJbWFnZShvcHRpb25zPzogSmNJbnRlcmFjdGl2ZUltYWdlSW5wdXQpOiBKY0ludGVyYWN0aXZlSW1hZ2VCdWlsZGVyIHtcbiAgICBpZiAoIXRoaXMuX2FsbG93ZWQuaW5jbHVkZXMoJ2NvbXBvbmVudC5pbnRlcmFjdGl2ZS1pbWFnZScpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBvbmVudCB0eXBlICdpbnRlcmFjdGl2ZUltYWdlJyBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNvbnRleHQuYClcbiAgICB9XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBKY0ludGVyYWN0aXZlSW1hZ2VCdWlsZGVyKG9wdGlvbnMpXG4gICAgdGhpcy5fb25Db21wb25lbnRDcmVhdGVkKGJ1aWxkZXIpXG4gICAgcmV0dXJuIGJ1aWxkZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWJlZHMgYSBqaWcgYXMgYSBjb21wb25lbnQgd2l0aGluIGFub3RoZXIgc2NyZWVuLlxuICAgKi9cbiAgamlnKG9wdGlvbnM6IEpjSmlnSW5wdXQpOiBKY0ppZ0J1aWxkZXIge1xuICAgIGlmICghdGhpcy5fYWxsb3dlZC5pbmNsdWRlcygnY29tcG9uZW50LmppZycpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBvbmVudCB0eXBlICdqaWcnIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC5gKVxuICAgIH1cbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjSmlnQnVpbGRlcihvcHRpb25zKVxuICAgIHRoaXMuX29uQ29tcG9uZW50Q3JlYXRlZChidWlsZGVyKVxuICAgIHJldHVybiBidWlsZGVyXG4gIH1cblxuICBqaWdIZWFkZXIob3B0aW9uczogSmNKaWdIZWFkZXJJbnB1dCA9IHt9KTogSmNKaWdIZWFkZXJCdWlsZGVyIHtcbiAgICBpZiAoIXRoaXMuX2FsbG93ZWQuaW5jbHVkZXMoJ2NvbXBvbmVudC5qaWctaGVhZGVyJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcG9uZW50IHR5cGUgJ2ppZ0hlYWRlcicgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0LmApXG4gICAgfVxuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSmNKaWdIZWFkZXJCdWlsZGVyKG9wdGlvbnMpXG4gICAgdGhpcy5fb25Db21wb25lbnRDcmVhdGVkKGJ1aWxkZXIpXG4gICAgcmV0dXJuIGJ1aWxkZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwbGF5cyB0aW1lLXNlcmllcyBkYXRhIGFzIGxpbmVzLlxuICAgKi9cbiAgbGluZUNoYXJ0KG9wdGlvbnM/OiBKY0xpbmVDaGFydElucHV0KTogSmNMaW5lQ2hhcnRCdWlsZGVyIHtcbiAgICBpZiAoIXRoaXMuX2FsbG93ZWQuaW5jbHVkZXMoJ2NvbXBvbmVudC5saW5lLWNoYXJ0JykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcG9uZW50IHR5cGUgJ2xpbmVDaGFydCcgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0LmApXG4gICAgfVxuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSmNMaW5lQ2hhcnRCdWlsZGVyKG9wdGlvbnMpXG4gICAgdGhpcy5fb25Db21wb25lbnRDcmVhdGVkKGJ1aWxkZXIpXG4gICAgcmV0dXJuIGJ1aWxkZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJ0aWNhbC9ob3Jpem9udGFsIHNjcm9sbGFibGUgZGF0YSBsaXN0LlxuICAgKi9cbiAgbGlzdChvcHRpb25zPzogSmNMaXN0SW5wdXQgJiB7IGluc3RhbmNlSWQ/OiBJbnN0YW5jZUlkIH0pOiBKY0xpc3RCdWlsZGVyIHtcbiAgICBpZiAoIXRoaXMuX2FsbG93ZWQuaW5jbHVkZXMoJ2NvbXBvbmVudC5saXN0JykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcG9uZW50IHR5cGUgJ2xpc3QnIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC5gKVxuICAgIH1cbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjTGlzdEJ1aWxkZXIob3B0aW9ucylcbiAgICB0aGlzLl9vbkNvbXBvbmVudENyZWF0ZWQoYnVpbGRlcilcbiAgICByZXR1cm4gYnVpbGRlclxuICB9XG5cbiAgbGlzdEl0ZW1TdGFuZGFsb25lKFxuICAgIG9wdGlvbnM/OiBKY0xpc3RJdGVtU3RhbmRhbG9uZU9wdGlvbnMgJiB7IGluc3RhbmNlSWQ/OiBJbnN0YW5jZUlkIH0sXG4gICk6IEpjTGlzdEl0ZW1TdGFuZGFsb25lQnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLl9hbGxvd2VkLmluY2x1ZGVzKCdjb21wb25lbnQubGlzdC1pdGVtJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcG9uZW50IHR5cGUgJ2xpc3RJdGVtU3RhbmRhbG9uZScgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0LmApXG4gICAgfVxuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSmNMaXN0SXRlbVN0YW5kYWxvbmVCdWlsZGVyKG9wdGlvbnMpXG4gICAgdGhpcy5fb25Db21wb25lbnRDcmVhdGVkKGJ1aWxkZXIpXG4gICAgcmV0dXJuIGJ1aWxkZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRlcmFjdGl2ZSBtYXAgd2l0aCBtYXJrZXJzLCBwYXRocywgdXNlciBsb2NhdGlvbi5cbiAgICovXG4gIGxvY2F0aW9uKG9wdGlvbnM/OiBKY0xvY2F0aW9uSW5wdXQpOiBKY0xvY2F0aW9uQnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLl9hbGxvd2VkLmluY2x1ZGVzKCdjb21wb25lbnQubG9jYXRpb24nKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgdHlwZSAnbG9jYXRpb24nIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC5gKVxuICAgIH1cbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjTG9jYXRpb25CdWlsZGVyKG9wdGlvbnMpXG4gICAgdGhpcy5fb25Db21wb25lbnRDcmVhdGVkKGJ1aWxkZXIpXG4gICAgcmV0dXJuIGJ1aWxkZXJcbiAgfVxuXG4gIG1hcmtlckl0ZW0ob3B0aW9ucz86IEpjTWFya2VySXRlbUlucHV0KTogSmNNYXJrZXJJdGVtQnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLl9hbGxvd2VkLmluY2x1ZGVzKCdjb21wb25lbnQubWFya2VyLWl0ZW0nKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgdHlwZSAnbWFya2VySXRlbScgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0LmApXG4gICAgfVxuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSmNNYXJrZXJJdGVtQnVpbGRlcihvcHRpb25zKVxuICAgIHRoaXMuX29uQ29tcG9uZW50Q3JlYXRlZChidWlsZGVyKVxuICAgIHJldHVybiBidWlsZGVyXG4gIH1cblxuICAvKipcbiAgICogU2hvd3MgcHJvcG9ydGlvbmFsIGRhdGEgYXMgcGllIHNsaWNlcy5cbiAgICovXG4gIHBpZUNoYXJ0KG9wdGlvbnM/OiBKY1BpZUNoYXJ0SW5wdXQpOiBKY1BpZUNoYXJ0QnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLl9hbGxvd2VkLmluY2x1ZGVzKCdjb21wb25lbnQucGllLWNoYXJ0JykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcG9uZW50IHR5cGUgJ3BpZUNoYXJ0JyBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNvbnRleHQuYClcbiAgICB9XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBKY1BpZUNoYXJ0QnVpbGRlcihvcHRpb25zKVxuICAgIHRoaXMuX29uQ29tcG9uZW50Q3JlYXRlZChidWlsZGVyKVxuICAgIHJldHVybiBidWlsZGVyXG4gIH1cblxuICAvKipcbiAgICogVmlzdWFsIHByb2dyZXNzIGluZGljYXRvciB3aXRoIHBlcmNlbnRhZ2UuXG4gICAqL1xuICBwcm9ncmVzc0JhcihvcHRpb25zPzogSmNQcm9ncmVzc0JhcklucHV0KTogSmNQcm9ncmVzc0JhckJ1aWxkZXIge1xuICAgIGlmICghdGhpcy5fYWxsb3dlZC5pbmNsdWRlcygnY29tcG9uZW50LnByb2dyZXNzLWJhcicpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBvbmVudCB0eXBlICdwcm9ncmVzc0JhcicgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0LmApXG4gICAgfVxuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSmNQcm9ncmVzc0JhckJ1aWxkZXIob3B0aW9ucylcbiAgICB0aGlzLl9vbkNvbXBvbmVudENyZWF0ZWQoYnVpbGRlcilcbiAgICByZXR1cm4gYnVpbGRlclxuICB9XG5cbiAgLyoqXG4gICAqIFJhdGluZyBpbnB1dCB3aXRoIGN1c3RvbWl6YWJsZSBpY29ucyBhbmQgbWF4aW11bSB2YWx1ZXMuXG4gICAqL1xuICByYXRpbmcob3B0aW9uczogSmNSYXRpbmdJbnB1dCk6IEpjUmF0aW5nQnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLl9hbGxvd2VkLmluY2x1ZGVzKCdjb21wb25lbnQucmF0aW5nJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcG9uZW50IHR5cGUgJ3JhdGluZycgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0LmApXG4gICAgfVxuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSmNSYXRpbmdCdWlsZGVyKG9wdGlvbnMpXG4gICAgdGhpcy5fb25Db21wb25lbnRDcmVhdGVkKGJ1aWxkZXIpXG4gICAgcmV0dXJuIGJ1aWxkZXJcbiAgfVxuXG4gIHN0YWdlKG9wdGlvbnM/OiBKY1N0YWdlSW5wdXQpOiBKY1N0YWdlQnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLl9hbGxvd2VkLmluY2x1ZGVzKCdjb21wb25lbnQuc3RhZ2UnKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgdHlwZSAnc3RhZ2UnIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC5gKVxuICAgIH1cbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjU3RhZ2VCdWlsZGVyKG9wdGlvbnMpXG4gICAgdGhpcy5fb25Db21wb25lbnRDcmVhdGVkKGJ1aWxkZXIpXG4gICAgcmV0dXJuIGJ1aWxkZXJcbiAgfVxuXG4gIHN0ZXBwZXIob3B0aW9uczogSmNTdGVwcGVySW5wdXQgPSB7fSk6IEpjU3RlcHBlckJ1aWxkZXIge1xuICAgIGlmICghdGhpcy5fYWxsb3dlZC5pbmNsdWRlcygnY29tcG9uZW50LnN0ZXBwZXInKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgdHlwZSAnc3RlcHBlcicgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0LmApXG4gICAgfVxuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSmNTdGVwcGVyQnVpbGRlcihvcHRpb25zKVxuICAgIHRoaXMuX29uQ29tcG9uZW50Q3JlYXRlZChidWlsZGVyKVxuICAgIHJldHVybiBidWlsZGVyXG4gIH1cblxuICAvKipcbiAgICogU3dpcGVhYmxlIHN0b3J5IGNhcm91c2VsIHdpdGggY29uZGl0aW9uYWwgaXRlbSByZW5kZXJpbmcuXG4gICAqL1xuICBzdG9yeUdyb3VwKG9wdGlvbnM6IEpjU3RvcnlHcm91cElucHV0KTogSmNTdG9yeUdyb3VwQnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLl9hbGxvd2VkLmluY2x1ZGVzKCdjb21wb25lbnQuc3RvcnktZ3JvdXAnKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgdHlwZSAnc3RvcnktZ3JvdXAnIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC5gKVxuICAgIH1cbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjU3RvcnlHcm91cEJ1aWxkZXIob3B0aW9ucylcbiAgICB0aGlzLl9vbkNvbXBvbmVudENyZWF0ZWQoYnVpbGRlcilcbiAgICByZXR1cm4gYnVpbGRlclxuICB9XG5cbiAgc3VtbWFyeURlZmF1bHQob3B0aW9ucz86IEpjU3VtbWFyeURlZmF1bHRJbnB1dE9wdGlvbnMpOiBKY1N1bW1hcnlEZWZhdWx0QnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLl9hbGxvd2VkLmluY2x1ZGVzKCdjb21wb25lbnQuc3VtbWFyeS1kZWZhdWx0JykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcG9uZW50IHR5cGUgJ3N1bW1hcnktZGVmYXVsdCcgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0LmApXG4gICAgfVxuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSmNTdW1tYXJ5RGVmYXVsdEJ1aWxkZXIob3B0aW9ucylcbiAgICB0aGlzLl9vbkNvbXBvbmVudENyZWF0ZWQoYnVpbGRlcilcbiAgICByZXR1cm4gYnVpbGRlclxuICB9XG5cbiAgc3VtbWFyeUNhcmQob3B0aW9ucz86IEpjU3VtbWFyeUNhcmRJbnB1dE9wdGlvbnMpOiBKY1N1bW1hcnlDYXJkQnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLl9hbGxvd2VkLmluY2x1ZGVzKCdjb21wb25lbnQuc3VtbWFyeS1jYXJkJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcG9uZW50IHR5cGUgJ3N1bW1hcnktY2FyZCcgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0LmApXG4gICAgfVxuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSmNTdW1tYXJ5Q2FyZEJ1aWxkZXIob3B0aW9ucylcbiAgICB0aGlzLl9vbkNvbXBvbmVudENyZWF0ZWQoYnVpbGRlcilcbiAgICByZXR1cm4gYnVpbGRlclxuICB9XG5cbiAgc3VtbWFyeUNvdW50ZXIob3B0aW9ucz86IEpjU3VtbWFyeUNvdW50ZXJJbnB1dE9wdGlvbnMpOiBKY1N1bW1hcnlDb3VudGVyQnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLl9hbGxvd2VkLmluY2x1ZGVzKCdjb21wb25lbnQuc3VtbWFyeS1jb3VudGVyJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcG9uZW50IHR5cGUgJ3N1bW1hcnktY291bnRlcicgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0LmApXG4gICAgfVxuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSmNTdW1tYXJ5Q291bnRlckJ1aWxkZXIob3B0aW9ucylcbiAgICB0aGlzLl9vbkNvbXBvbmVudENyZWF0ZWQoYnVpbGRlcilcbiAgICByZXR1cm4gYnVpbGRlclxuICB9XG5cbiAgc3VtbWFyeVByb2dyZXNzKG9wdGlvbnM6IEpjU3VtbWFyeVByb2dyZXNzSW5wdXRPcHRpb25zKTogSmNTdW1tYXJ5UHJvZ3Jlc3NCdWlsZGVyIHtcbiAgICBpZiAoIXRoaXMuX2FsbG93ZWQuaW5jbHVkZXMoJ2NvbXBvbmVudC5zdW1tYXJ5LXByb2dyZXNzJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcG9uZW50IHR5cGUgJ3N1bW1hcnktcHJvZ3Jlc3MnIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC5gKVxuICAgIH1cbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjU3VtbWFyeVByb2dyZXNzQnVpbGRlcihvcHRpb25zKVxuICAgIHRoaXMuX29uQ29tcG9uZW50Q3JlYXRlZChidWlsZGVyKVxuICAgIHJldHVybiBidWlsZGVyXG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheXMgZm9ybWF0dGVkIHRleHQgd2l0aCBtYXJrZG93biBzdXBwb3J0LlxuICAgKi9cbiAgdGV4dChvcHRpb25zPzogSmNUZXh0SW5wdXQpOiBKY1RleHRCdWlsZGVyIHtcbiAgICBpZiAoIXRoaXMuX2FsbG93ZWQuaW5jbHVkZXMoJ2NvbXBvbmVudC50ZXh0JykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcG9uZW50IHR5cGUgJ3RleHQnIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC5gKVxuICAgIH1cbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjVGV4dEJ1aWxkZXIob3B0aW9ucylcbiAgICB0aGlzLl9vbkNvbXBvbmVudENyZWF0ZWQoYnVpbGRlcilcbiAgICByZXR1cm4gYnVpbGRlclxuICB9XG5cbiAgdGl0bGVzKG9wdGlvbnM/OiBKY1RpdGxlc0lucHV0KTogSmNUaXRsZXNCdWlsZGVyIHtcbiAgICBpZiAoIXRoaXMuX2FsbG93ZWQuaW5jbHVkZXMoJ2NvbXBvbmVudC50aXRsZXMnKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgdHlwZSAndGl0bGVzJyBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNvbnRleHQuYClcbiAgICB9XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBKY1RpdGxlc0J1aWxkZXIob3B0aW9ucylcbiAgICB0aGlzLl9vbkNvbXBvbmVudENyZWF0ZWQoYnVpbGRlcilcbiAgICByZXR1cm4gYnVpbGRlclxuICB9XG5cbiAgdHJlbmQob3B0aW9uczogSmNUcmVuZElucHV0ID0ge30pOiBKY1RyZW5kQnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLl9hbGxvd2VkLmluY2x1ZGVzKCdjb21wb25lbnQudHJlbmQnKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgdHlwZSAndHJlbmQnIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC5gKVxuICAgIH1cbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjVHJlbmRCdWlsZGVyKG9wdGlvbnMpXG4gICAgdGhpcy5fb25Db21wb25lbnRDcmVhdGVkKGJ1aWxkZXIpXG4gICAgcmV0dXJuIGJ1aWxkZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgdmlkZW8gcGxheWVycyB3aXRoIHBsYXliYWNrIGNvbnRyb2xzLlxuICAgKi9cbiAgdmlkZW9QbGF5ZXJPbkppZyhvcHRpb25zPzogSmNWaWRlb1BsYXllck9uSmlnSW5wdXQpOiBKY1ZpZGVvUGxheWVyT25KaWdCdWlsZGVyIHtcbiAgICBpZiAoIXRoaXMuX2FsbG93ZWQuaW5jbHVkZXMoJ2NvbXBvbmVudC52aWRlby1wbGF5ZXInKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgdHlwZSAndmlkZW9QbGF5ZXJPbkppZycgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0LmApXG4gICAgfVxuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSmNWaWRlb1BsYXllck9uSmlnQnVpbGRlcihvcHRpb25zKVxuICAgIHRoaXMuX29uQ29tcG9uZW50Q3JlYXRlZChidWlsZGVyKVxuICAgIHJldHVybiBidWlsZGVyXG4gIH1cblxuICAvKipcbiAgICogQ29udGFpbmVyIGZvciBjdXN0b20gbGF5b3V0IHdpdGggZmxleCwgc3BhY2luZywgYm9yZGVycywgYW5kIGNoaWxkcmVuLlxuICAgKi9cbiAgdmlldyhvcHRpb25zPzogSmNWaWV3SW5wdXQpOiBKY1ZpZXdCdWlsZGVyIHtcbiAgICBpZiAoIXRoaXMuX2FsbG93ZWQuaW5jbHVkZXMoJ2NvbXBvbmVudC52aWV3JykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcG9uZW50IHR5cGUgJ3ZpZXcnIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC5gKVxuICAgIH1cbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjVmlld0J1aWxkZXIob3B0aW9ucylcbiAgICB0aGlzLl9vbkNvbXBvbmVudENyZWF0ZWQoYnVpbGRlcilcbiAgICByZXR1cm4gYnVpbGRlclxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyB3ZWIgdmlldyBjb21wb25lbnRzIGZvciBkaXNwbGF5aW5nIHdlYiBjb250ZW50LlxuICAgKi9cbiAgd2ViVmlld09uRGVmYXVsdChvcHRpb25zOiBKY1dlYlZpZXdPbkRlZmF1bHRJbnB1dCA9IHt9KTogSmNXZWJWaWV3T25EZWZhdWx0QnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLl9hbGxvd2VkLmluY2x1ZGVzKCdjb21wb25lbnQud2ViLXZpZXcnKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgdHlwZSAnd2ViVmlld09uRGVmYXVsdCcgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0LmApXG4gICAgfVxuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSmNXZWJWaWV3T25EZWZhdWx0QnVpbGRlcihvcHRpb25zKVxuICAgIHRoaXMuX29uQ29tcG9uZW50Q3JlYXRlZChidWlsZGVyKVxuICAgIHJldHVybiBidWlsZGVyXG4gIH1cblxuICAvKipcbiAgICogRnVsbC1zY3JlZW4gd2ViIGJyb3dzZXIgZXhwZXJpZW5jZS5cbiAgICovXG4gIHdlYlZpZXdPbkZ1bGwob3B0aW9uczogSmNXZWJWaWV3T25GdWxsSW5wdXQgPSB7fSk6IEpjV2ViVmlld09uRnVsbEJ1aWxkZXIge1xuICAgIGlmICghdGhpcy5fYWxsb3dlZC5pbmNsdWRlcygnY29tcG9uZW50LndlYi12aWV3JykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcG9uZW50IHR5cGUgJ3dlYlZpZXdPbkZ1bGwnIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC5gKVxuICAgIH1cbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjV2ViVmlld09uRnVsbEJ1aWxkZXIob3B0aW9ucylcbiAgICB0aGlzLl9vbkNvbXBvbmVudENyZWF0ZWQoYnVpbGRlcilcbiAgICByZXR1cm4gYnVpbGRlclxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBzY3JlZW4gd2lkZ2V0cyB3aXRoIHRhcmdldCBqaWcsIGlucHV0cywgcHJlc3MgYWN0aW9ucy5cbiAgICovXG4gIHdpZGdldChvcHRpb25zPzogSmNKaWdXaWRnZXRJbnB1dCk6IEpjSmlnV2lkZ2V0QnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLl9hbGxvd2VkLmluY2x1ZGVzKCdjb21wb25lbnQuamlnLXdpZGdldCcpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBvbmVudCB0eXBlICd3aWRnZXQnIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC5gKVxuICAgIH1cbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjSmlnV2lkZ2V0QnVpbGRlcihvcHRpb25zKVxuICAgIHRoaXMuX29uQ29tcG9uZW50Q3JlYXRlZChidWlsZGVyKVxuICAgIHJldHVybiBidWlsZGVyXG4gIH1cblxuICAvLyBGaWVsZCBjb21wb25lbnRzXG4gIGF2YXRhckZpZWxkKG9wdGlvbnM6IEpjQXZhdGFyRmllbGRJbnB1dCk6IEpjQXZhdGFyRmllbGRCdWlsZGVyIHtcbiAgICBpZiAoIXRoaXMuX2FsbG93ZWQuaW5jbHVkZXMoJ2NvbXBvbmVudC5hdmF0YXItZmllbGQnKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgdHlwZSAnYXZhdGFyRmllbGQnIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC5gKVxuICAgIH1cbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjQXZhdGFyRmllbGRCdWlsZGVyKG9wdGlvbnMpXG4gICAgdGhpcy5fb25Db21wb25lbnRDcmVhdGVkKGJ1aWxkZXIpXG4gICAgcmV0dXJuIGJ1aWxkZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5hcnkgdG9nZ2xlIGZvciB0cnVlL2ZhbHNlIHNlbGVjdGlvbnMuXG4gICAqL1xuICBjaGVja2JveChvcHRpb25zOiBKY0NoZWNrYm94SW5wdXQpOiBKY0NoZWNrYm94QnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLl9hbGxvd2VkLmluY2x1ZGVzKCdjb21wb25lbnQuY2hlY2tib3gnKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgdHlwZSAnY2hlY2tib3gnIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC5gKVxuICAgIH1cbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjQ2hlY2tib3hCdWlsZGVyKG9wdGlvbnMpXG4gICAgdGhpcy5fb25Db21wb25lbnRDcmVhdGVkKGJ1aWxkZXIpXG4gICAgcmV0dXJuIGJ1aWxkZXJcbiAgfVxuXG4gIGNob2ljZUZpZWxkKG9wdGlvbnM6IEpjQ2hvaWNlRmllbGRJbnB1dCk6IEpjQ2hvaWNlRmllbGRCdWlsZGVyIHtcbiAgICBpZiAoIXRoaXMuX2FsbG93ZWQuaW5jbHVkZXMoJ2NvbXBvbmVudC5jaG9pY2UtZmllbGQnKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgdHlwZSAnY2hvaWNlRmllbGQnIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC5gKVxuICAgIH1cbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjQ2hvaWNlRmllbGRCdWlsZGVyKG9wdGlvbnMpXG4gICAgdGhpcy5fb25Db21wb25lbnRDcmVhdGVkKGJ1aWxkZXIpXG4gICAgcmV0dXJuIGJ1aWxkZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3RzIGRhdGVzIGFuZCB0aW1lcyB3aXRoIGNhbGVuZGFyIGludGVyZmFjZS5cbiAgICovXG4gIGRhdGVQaWNrZXIob3B0aW9uczogSmNEYXRlUGlja2VySW5wdXQpOiBKY0RhdGVQaWNrZXJCdWlsZGVyIHtcbiAgICBpZiAoIXRoaXMuX2FsbG93ZWQuaW5jbHVkZXMoJ2NvbXBvbmVudC5kYXRlLXBpY2tlcicpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBvbmVudCB0eXBlICdkYXRlUGlja2VyJyBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNvbnRleHQuYClcbiAgICB9XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBKY0RhdGVQaWNrZXJCdWlsZGVyKG9wdGlvbnMpXG4gICAgdGhpcy5fb25Db21wb25lbnRDcmVhdGVkKGJ1aWxkZXIpXG4gICAgcmV0dXJuIGJ1aWxkZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBWaXN1YWwgc2VwYXJhdG9yIGJldHdlZW4gY29udGVudCBzZWN0aW9ucy5cbiAgICovXG4gIGRpdmlkZXIob3B0aW9ucz86IEpjRGl2aWRlcklucHV0KTogSmNEaXZpZGVyQnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLl9hbGxvd2VkLmluY2x1ZGVzKCdjb21wb25lbnQuZGl2aWRlcicpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBvbmVudCB0eXBlICdkaXZpZGVyJyBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNvbnRleHQuYClcbiAgICB9XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBKY0RpdmlkZXJCdWlsZGVyKG9wdGlvbnMpXG4gICAgdGhpcy5fb25Db21wb25lbnRDcmVhdGVkKGJ1aWxkZXIpXG4gICAgcmV0dXJuIGJ1aWxkZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgZHJvcGRvd24gZmllbGRzIGZvciBmb3Jtcywgd2l0aCBvcHRpb25zLCBzZWFyY2gsIGFuZCB2YWxpZGF0aW9uLlxuICAgKiBAYWxpYXMgY29tcG9uZW50LmRyb3Bkb3duXG4gICAqL1xuICBkcm9wZG93bihvcHRpb25zOiBKY0Ryb3Bkb3duSW5wdXQpOiBKY0Ryb3Bkb3duQnVpbGRlciB7XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBKY0Ryb3Bkb3duQnVpbGRlcihvcHRpb25zKVxuICAgIHRoaXMuX29uQ29tcG9uZW50Q3JlYXRlZChidWlsZGVyKVxuICAgIHJldHVybiBidWlsZGVyXG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0cyB0aW1lIGR1cmF0aW9ucyAoaG91cnMvbWludXRlcykuXG4gICAqL1xuICBkdXJhdGlvblBpY2tlcihvcHRpb25zOiBKY0R1cmF0aW9uUGlja2VySW5wdXQpOiBKY0R1cmF0aW9uUGlja2VyQnVpbGRlciB7XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBKY0R1cmF0aW9uUGlja2VyQnVpbGRlcihvcHRpb25zKVxuICAgIHRoaXMuX29uQ29tcG9uZW50Q3JlYXRlZChidWlsZGVyKVxuICAgIHJldHVybiBidWlsZGVyXG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGVtYWlsIGFkZHJlc3NlcyB3aXRoIGtleWJvYXJkIG9wdGltaXphdGlvbi5cbiAgICovXG4gIGVtYWlsRmllbGQob3B0aW9uczogSmNFbWFpbEZpZWxkSW5wdXQpOiBKY0VtYWlsRmllbGRCdWlsZGVyIHtcbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjRW1haWxGaWVsZEJ1aWxkZXIob3B0aW9ucylcbiAgICB0aGlzLl9vbkNvbXBvbmVudENyZWF0ZWQoYnVpbGRlcilcbiAgICByZXR1cm4gYnVpbGRlclxuICB9XG5cbiAgZmllbGRSb3cob3B0aW9uczogSmNGaWVsZFJvd0lucHV0ID0ge30pOiBKY0ZpZWxkUm93QnVpbGRlciB7XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBKY0ZpZWxkUm93QnVpbGRlcihvcHRpb25zKVxuICAgIHRoaXMuX29uQ29tcG9uZW50Q3JlYXRlZChidWlsZGVyKVxuICAgIHJldHVybiBidWlsZGVyXG4gIH1cblxuICAvKipcbiAgICogQ2FwdHVyZXMgcGhvdG9zL3ZpZGVvcyBmcm9tIGRldmljZS5cbiAgICovXG4gIG1lZGlhRmllbGQob3B0aW9uczogSmNNZWRpYUZpZWxkSW5wdXQpOiBKY01lZGlhRmllbGRCdWlsZGVyIHtcbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjTWVkaWFGaWVsZEJ1aWxkZXIob3B0aW9ucylcbiAgICB0aGlzLl9vbkNvbXBvbmVudENyZWF0ZWQoYnVpbGRlcilcbiAgICByZXR1cm4gYnVpbGRlclxuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRpb24gbWVudSBlbnRyeSB3aXRoIHRpdGxlLCBzdWJ0aXRsZSwgbGVmdCBlbGVtZW50LCBhbmQgcHJlc3MgYWN0aW9uLlxuICAgKi9cbiAgbWVudUl0ZW0ob3B0aW9uczogSmNNZW51SXRlbUlucHV0KTogSmNNZW51SXRlbUJ1aWxkZXIge1xuICAgIGlmICghdGhpcy5fYWxsb3dlZC5pbmNsdWRlcygnY29tcG9uZW50Lm1lbnUtaXRlbScpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBvbmVudCB0eXBlICdtZW51LWl0ZW0nIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC5gKVxuICAgIH1cbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjTWVudUl0ZW1CdWlsZGVyKG9wdGlvbnMpXG4gICAgdGhpcy5fb25Db21wb25lbnRDcmVhdGVkKGJ1aWxkZXIpXG4gICAgcmV0dXJuIGJ1aWxkZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBDb2xsZWN0cyBudW1lcmljIGlucHV0IHdpdGggZm9ybWF0dGluZyBhbmQgdmFsaWRhdGlvbi5cbiAgICovXG4gIG51bWJlckZpZWxkKG9wdGlvbnM6IEpjTnVtYmVyRmllbGRJbnB1dCk6IEpjTnVtYmVyRmllbGRCdWlsZGVyIHtcbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjTnVtYmVyRmllbGRCdWlsZGVyKG9wdGlvbnMpXG4gICAgdGhpcy5fb25Db21wb25lbnRDcmVhdGVkKGJ1aWxkZXIpXG4gICAgcmV0dXJuIGJ1aWxkZXJcbiAgfVxuXG4gIHNlY3Rpb25PbkRlZmF1bHQob3B0aW9uczogSmNTZWN0aW9uT25EZWZhdWx0SW5wdXQgPSB7fSk6IEpjU2VjdGlvbk9uRGVmYXVsdEJ1aWxkZXIge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSmNTZWN0aW9uT25EZWZhdWx0QnVpbGRlcihvcHRpb25zKVxuICAgIHRoaXMuX29uQ29tcG9uZW50Q3JlYXRlZChidWlsZGVyKVxuICAgIHJldHVybiBidWlsZGVyXG4gIH1cblxuICBzZWdtZW50ZWRDb250cm9sKG9wdGlvbnM/OiBKY1NlZ21lbnRlZENvbnRyb2xJbnB1dCk6IEpjU2VnbWVudGVkQ29udHJvbEJ1aWxkZXIge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSmNTZWdtZW50ZWRDb250cm9sQnVpbGRlcihvcHRpb25zKVxuICAgIHRoaXMuX29uQ29tcG9uZW50Q3JlYXRlZChidWlsZGVyKVxuICAgIHJldHVybiBidWlsZGVyXG4gIH1cblxuICAvKipcbiAgICogQ2FwdHVyZXMgaGFuZC1kcmF3biBzaWduYXR1cmVzLlxuICAgKi9cbiAgc2lnbmF0dXJlRmllbGQob3B0aW9uczogSmNTaWduYXR1cmVGaWVsZElucHV0KTogSmNTaWduYXR1cmVGaWVsZEJ1aWxkZXIge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSmNTaWduYXR1cmVGaWVsZEJ1aWxkZXIob3B0aW9ucylcbiAgICB0aGlzLl9vbkNvbXBvbmVudENyZWF0ZWQoYnVpbGRlcilcbiAgICByZXR1cm4gYnVpbGRlclxuICB9XG5cbiAgc2xpZGVyKG9wdGlvbnM6IEpjU2xpZGVySW5wdXQpOiBKY1NsaWRlckJ1aWxkZXIge1xuICAgIGlmICghdGhpcy5fYWxsb3dlZC5pbmNsdWRlcygnY29tcG9uZW50LnNsaWRlcicpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBvbmVudCB0eXBlICdzbGlkZXInIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC5gKVxuICAgIH1cbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEpjU2xpZGVyQnVpbGRlcihvcHRpb25zKVxuICAgIHRoaXMuX29uQ29tcG9uZW50Q3JlYXRlZChidWlsZGVyKVxuICAgIHJldHVybiBidWlsZGVyXG4gIH1cblxuICAvKipcbiAgICogQ29sbGVjdHMgdGV4dCBpbnB1dCB3aXRoIHZhbGlkYXRpb24gYW5kIGZvcm1hdHRpbmcuXG4gICAqL1xuICB0ZXh0RmllbGQob3B0aW9uczogSmNUZXh0RmllbGRJbnB1dCk6IEpjVGV4dEZpZWxkQnVpbGRlciB7XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBKY1RleHRGaWVsZEJ1aWxkZXIob3B0aW9ucylcbiAgICB0aGlzLl9vbkNvbXBvbmVudENyZWF0ZWQoYnVpbGRlcilcbiAgICByZXR1cm4gYnVpbGRlclxuICB9XG5cbiAgLy8gQWRkaXRpb25hbCBjb21wb25lbnRzXG4gIGNoYXRNZXNzYWdlKG9wdGlvbnM/OiBKY0NoYXRNZXNzYWdlSW5wdXQpOiBKY0NoYXRNZXNzYWdlQnVpbGRlciB7XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBKY0NoYXRNZXNzYWdlQnVpbGRlcihvcHRpb25zKVxuICAgIHRoaXMuX29uQ29tcG9uZW50Q3JlYXRlZChidWlsZGVyKVxuICAgIHJldHVybiBidWlsZGVyXG4gIH1cblxuICBpbnRlcmFjdGl2ZUltYWdlSXRlbShvcHRpb25zPzogSmNJbnRlcmFjdGl2ZUltYWdlSXRlbUlucHV0KTogSmNJbnRlcmFjdGl2ZUltYWdlSXRlbUJ1aWxkZXIge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSmNJbnRlcmFjdGl2ZUltYWdlSXRlbUJ1aWxkZXIob3B0aW9ucylcbiAgICB0aGlzLl9vbkNvbXBvbmVudENyZWF0ZWQoYnVpbGRlcilcbiAgICByZXR1cm4gYnVpbGRlclxuICB9XG5cbiAgLyoqXG4gICAqIFRlbXBsYXRlIGZvciBsaXN0IGRhdGEgaXRlbXMgd2l0aCB0aXRsZSwgc3VidGl0bGUsIGVsZW1lbnRzLlxuICAgKi9cbiAgbGlzdEl0ZW0ob3B0aW9ucz86IEpjTGlzdEl0ZW1PcHRpb25zICYgeyBpbnN0YW5jZUlkPzogSW5zdGFuY2VJZCB9KTogSmNMaXN0SXRlbUJ1aWxkZXIge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgSmNMaXN0SXRlbUJ1aWxkZXIob3B0aW9ucylcbiAgICB0aGlzLl9vbkNvbXBvbmVudENyZWF0ZWQoYnVpbGRlcilcbiAgICByZXR1cm4gYnVpbGRlclxuICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ0FST1VTRUwgRkFDVE9SWSAtIENvbnRleHQtc3BlY2lmaWMgZmFjdG9yeSBmb3IgY2Fyb3VzZWwgY29tcG9uZW50c1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogTWFwcyBjb21wb25lbnQgdHlwZXMgdG8gSmNDYXJvdXNlbEZhY3RvcnkgbWV0aG9kcy5cbiAqL1xuZXhwb3J0IGNvbnN0IENBUk9VU0VMX0ZBQ1RPUllfTUVUSE9EUyA9IHtcbiAgLi4uQ09NUE9ORU5UX1RPX0ZBQ1RPUllfTUVUSE9ELFxuICAvLyBPdmVycmlkZSB3aXRoIGNhcm91c2VsLXNwZWNpZmljIGFsaWFzZXNcbiAgW0NPTVBPTkVOVF9UWVBFLkNBUkRdOiAnY2FyZCcsXG4gIFtDT01QT05FTlRfVFlQRS5JTUFHRV06ICdpbWFnZScsXG59IGFzIGNvbnN0XG5cbi8qKlxuICogRGVyaXZlcyBmYWN0b3J5IG1ldGhvZHMgZm9yIEpjQ2Fyb3VzZWxGYWN0b3J5LlxuICovXG5leHBvcnQgdHlwZSBDYXJvdXNlbEZhY3RvcnlNZXRob2RzRm9yPFQgZXh0ZW5kcyByZWFkb25seSBDb21wb25lbnRUeXBlW10+ID1cbiAgVFtudW1iZXJdIGV4dGVuZHMga2V5b2YgdHlwZW9mIENBUk9VU0VMX0ZBQ1RPUllfTUVUSE9EU1xuICAgID8gUGljazxKY0Nhcm91c2VsRmFjdG9yeSwgKHR5cGVvZiBDQVJPVVNFTF9GQUNUT1JZX01FVEhPRFMpW1RbbnVtYmVyXV0+XG4gICAgOiBuZXZlclxuXG4vKipcbiAqIERlcml2ZXMgdW5pb24gb2YgYnVpbGRlciB0eXBlcyBmcm9tIGFsbG93ZWQgY29tcG9uZW50IHR5cGVzIGZvciBjYXJvdXNlbCBjb250ZXh0LlxuICovXG5leHBvcnQgdHlwZSBDYXJvdXNlbEJ1aWxkZXJVbmlvbkZyb21BbGxvd2VkVHlwZXM8VCBleHRlbmRzIHJlYWRvbmx5IENvbXBvbmVudFR5cGVbXT4gPVxuICBDYXJvdXNlbEZhY3RvcnlNZXRob2RzRm9yPFQ+W2tleW9mIENhcm91c2VsRmFjdG9yeU1ldGhvZHNGb3I8VD5dIGV4dGVuZHMgKFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4gaW5mZXIgUlxuICAgID8gUlxuICAgIDogbmV2ZXJcblxuLyoqXG4gKiBDb250ZXh0LXNwZWNpZmljIGZhY3RvcnkgZm9yIGNhcm91c2VsIGNvbXBvbmVudHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBKY0Nhcm91c2VsRmFjdG9yeTxcbiAgVCBleHRlbmRzIHJlYWRvbmx5IENvbXBvbmVudFR5cGVbXSA9IHJlYWRvbmx5IENvbXBvbmVudFR5cGVbXSxcbj4gZXh0ZW5kcyBKY0J1aWxkZXJGYWN0b3J5PFQ+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgYWxsb3dlZDogVCxcbiAgICBvbkNvbXBvbmVudENyZWF0ZWQ6IChjb21wb25lbnQ6IENhcm91c2VsQnVpbGRlclVuaW9uRnJvbUFsbG93ZWRUeXBlczxUPikgPT4gdm9pZCxcbiAgKSB7XG4gICAgLy8gT3ZlcnJpZGUgdG8gdXNlIGNhcm91c2VsLXNwZWNpZmljIGJ1aWxkZXIgdW5pb24gdHlwZVxuICAgIHN1cGVyKGFsbG93ZWQsIG9uQ29tcG9uZW50Q3JlYXRlZCBhcyAoY29tcG9uZW50OiBCYXNlQnVpbGRlclVuaW9uRnJvbUFsbG93ZWRUeXBlczxUPikgPT4gdm9pZClcbiAgfVxuICAvKipcbiAgICogR3JvdXBzIGNvbnRlbnQgaW4gZmxleGlibGUgbGF5b3V0cyB3aXRoIHN0eWxpbmcuXG4gICAqIEBzZWUgY2FyZE9uRGVmYXVsdFxuICAgKi9cbiAgY2FyZChcbiAgICBvcHRpb25zPzogUGFyYW1ldGVyczxKY0J1aWxkZXJGYWN0b3J5WydjYXJkT25EZWZhdWx0J10+WzBdLFxuICApOiBSZXR1cm5UeXBlPEpjQnVpbGRlckZhY3RvcnlbJ2NhcmRPbkRlZmF1bHQnXT4ge1xuICAgIHJldHVybiBzdXBlci5jYXJkT25EZWZhdWx0KG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheXMgaW1hZ2VzIGluIGNhcm91c2VsIHNsaWRlcy5cbiAgICogQHNlZSBpbWFnZU9uQ2Fyb3VzZWxcbiAgICovXG4gIGltYWdlKFxuICAgIG9wdGlvbnM/OiBQYXJhbWV0ZXJzPEpjQnVpbGRlckZhY3RvcnlbJ2ltYWdlT25DYXJvdXNlbCddPlswXSxcbiAgKTogUmV0dXJuVHlwZTxKY0J1aWxkZXJGYWN0b3J5WydpbWFnZU9uQ2Fyb3VzZWwnXT4ge1xuICAgIHJldHVybiBzdXBlci5pbWFnZU9uQ2Fyb3VzZWwob3B0aW9ucylcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEZVTEwgU0NSRUVOIEZBQ1RPUlkgLSBDb250ZXh0LXNwZWNpZmljIGZhY3RvcnkgZm9yIGZ1bGwgc2NyZWVuIGNvbXBvbmVudHNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIE1hcHMgY29tcG9uZW50IHR5cGVzIHRvIEpjRnVsbFNjcmVlbkZhY3RvcnkgbWV0aG9kcy5cbiAqL1xuZXhwb3J0IGNvbnN0IEZVTExfU0NSRUVOX0ZBQ1RPUllfTUVUSE9EUyA9IHtcbiAgLi4uQ09NUE9ORU5UX1RPX0ZBQ1RPUllfTUVUSE9ELFxuICAvLyBPdmVycmlkZSB3aXRoIGZ1bGwgc2NyZWVuLXNwZWNpZmljIGFsaWFzZXNcbiAgW0NPTVBPTkVOVF9UWVBFLldFQl9WSUVXXTogJ3dlYlZpZXcnLFxufSBhcyBjb25zdFxuXG4vKipcbiAqIERlcml2ZXMgZmFjdG9yeSBtZXRob2RzIGZvciBKY0Z1bGxTY3JlZW5GYWN0b3J5LlxuICovXG5leHBvcnQgdHlwZSBGdWxsU2NyZWVuRmFjdG9yeU1ldGhvZHNGb3I8VCBleHRlbmRzIHJlYWRvbmx5IENvbXBvbmVudFR5cGVbXT4gPVxuICBUW251bWJlcl0gZXh0ZW5kcyBrZXlvZiB0eXBlb2YgRlVMTF9TQ1JFRU5fRkFDVE9SWV9NRVRIT0RTXG4gICAgPyBQaWNrPEpjRnVsbFNjcmVlbkZhY3RvcnksICh0eXBlb2YgRlVMTF9TQ1JFRU5fRkFDVE9SWV9NRVRIT0RTKVtUW251bWJlcl1dPlxuICAgIDogbmV2ZXJcblxuLyoqXG4gKiBEZXJpdmVzIHVuaW9uIG9mIGJ1aWxkZXIgdHlwZXMgZnJvbSBhbGxvd2VkIGNvbXBvbmVudCB0eXBlcyBmb3IgZnVsbC1zY3JlZW4gY29udGV4dC5cbiAqL1xuZXhwb3J0IHR5cGUgRnVsbFNjcmVlbkJ1aWxkZXJVbmlvbkZyb21BbGxvd2VkVHlwZXM8VCBleHRlbmRzIHJlYWRvbmx5IENvbXBvbmVudFR5cGVbXT4gPVxuICBGdWxsU2NyZWVuRmFjdG9yeU1ldGhvZHNGb3I8VD5ba2V5b2YgRnVsbFNjcmVlbkZhY3RvcnlNZXRob2RzRm9yPFQ+XSBleHRlbmRzIChcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApID0+IGluZmVyIFJcbiAgICA/IFJcbiAgICA6IG5ldmVyXG5cbi8qKlxuICogQ29udGV4dC1zcGVjaWZpYyBmYWN0b3J5IGZvciBmdWxsIHNjcmVlbiBjb21wb25lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgSmNGdWxsU2NyZWVuRmFjdG9yeTxcbiAgVCBleHRlbmRzIHJlYWRvbmx5IENvbXBvbmVudFR5cGVbXSA9IHJlYWRvbmx5IENvbXBvbmVudFR5cGVbXSxcbj4gZXh0ZW5kcyBKY0J1aWxkZXJGYWN0b3J5PFQ+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgYWxsb3dlZDogVCxcbiAgICBvbkNvbXBvbmVudENyZWF0ZWQ6IChjb21wb25lbnQ6IEZ1bGxTY3JlZW5CdWlsZGVyVW5pb25Gcm9tQWxsb3dlZFR5cGVzPFQ+KSA9PiB2b2lkLFxuICApIHtcbiAgICAvLyBPdmVycmlkZSB0byB1c2UgZnVsbC1zY3JlZW4tc3BlY2lmaWMgYnVpbGRlciB1bmlvbiB0eXBlXG4gICAgc3VwZXIoYWxsb3dlZCwgb25Db21wb25lbnRDcmVhdGVkIGFzIChjb21wb25lbnQ6IEJhc2VCdWlsZGVyVW5pb25Gcm9tQWxsb3dlZFR5cGVzPFQ+KSA9PiB2b2lkKVxuICB9XG4gIC8qKlxuICAgKiBFbWJlZHMgd2ViIGNvbnRlbnQgaW4gZnVsbCBzY3JlZW4gbW9kZS5cbiAgICogQHNlZSB3ZWJWaWV3T25GdWxsXG4gICAqL1xuICB3ZWJWaWV3KFxuICAgIG9wdGlvbnM/OiBQYXJhbWV0ZXJzPEpjQnVpbGRlckZhY3RvcnlbJ3dlYlZpZXdPbkZ1bGwnXT5bMF0sXG4gICk6IFJldHVyblR5cGU8SmNCdWlsZGVyRmFjdG9yeVsnd2ViVmlld09uRnVsbCddPiB7XG4gICAgcmV0dXJuIHN1cGVyLndlYlZpZXdPbkZ1bGwob3B0aW9ucylcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIERFRkFVTFQgU0NSRUVOIEZBQ1RPUlkgLSBDb250ZXh0LXNwZWNpZmljIGZhY3RvcnkgZm9yIGRlZmF1bHQgc2NyZWVuIGNvbXBvbmVudHNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIE1hcHMgY29tcG9uZW50IHR5cGVzIHRvIEpjRGVmYXVsdFNjcmVlbkZhY3RvcnkgbWV0aG9kcy5cbiAqIEV4dGVuZHMgdGhlIGJhc2UgZmFjdG9yeSBtZXRob2RzIHdpdGggY29udGV4dC1zcGVjaWZpYyBhbGlhc2VzLlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9TQ1JFRU5fRkFDVE9SWV9NRVRIT0RTID0ge1xuICAuLi5DT01QT05FTlRfVE9fRkFDVE9SWV9NRVRIT0QsXG4gIC8vIE92ZXJyaWRlIHdpdGggYWxpYXMgbWV0aG9kcyBmb3IgY2xlYW5lciBuYW1lc1xuICBbQ09NUE9ORU5UX1RZUEUuQ0FSRF06ICdjYXJkJyxcbiAgW0NPTVBPTkVOVF9UWVBFLklNQUdFXTogJ2ltYWdlJyxcbiAgW0NPTVBPTkVOVF9UWVBFLkxJU1RfSVRFTV06ICdsaXN0SXRlbScsXG4gIFtDT01QT05FTlRfVFlQRS5TRUNUSU9OXTogJ3NlY3Rpb24nLFxuICBbQ09NUE9ORU5UX1RZUEUuU0VHTUVOVEVEX0NPTlRST0xdOiAnc2VnbWVudGVkJyxcbiAgW0NPTVBPTkVOVF9UWVBFLlZJREVPX1BMQVlFUl06ICd2aWRlb1BsYXllcicsXG4gIFtDT01QT05FTlRfVFlQRS5XRUJfVklFV106ICd3ZWJWaWV3Jyxcbn0gYXMgY29uc3RcblxuLyoqXG4gKiBEZXJpdmVzIGZhY3RvcnkgbWV0aG9kcyBmb3IgSmNEZWZhdWx0U2NyZWVuRmFjdG9yeSB3aGljaCBpbmNsdWRlcyBhbGlhc2VzLlxuICogVXNhZ2U6IERlZmF1bHRTY3JlZW5GYWN0b3J5TWV0aG9kc0Zvcjx0eXBlb2YgQUxMT1dFRF9UWVBFUz5cbiAqL1xuZXhwb3J0IHR5cGUgRGVmYXVsdFNjcmVlbkZhY3RvcnlNZXRob2RzRm9yPFQgZXh0ZW5kcyByZWFkb25seSBDb21wb25lbnRUeXBlW10+ID1cbiAgVFtudW1iZXJdIGV4dGVuZHMga2V5b2YgdHlwZW9mIERFRkFVTFRfU0NSRUVOX0ZBQ1RPUllfTUVUSE9EU1xuICAgID8gUGljazxKY0RlZmF1bHRTY3JlZW5GYWN0b3J5LCAodHlwZW9mIERFRkFVTFRfU0NSRUVOX0ZBQ1RPUllfTUVUSE9EUylbVFtudW1iZXJdXT5cbiAgICA6IG5ldmVyXG5cbi8qKlxuICogRGVyaXZlcyB1bmlvbiBvZiBidWlsZGVyIHR5cGVzIGZyb20gYWxsb3dlZCBjb21wb25lbnQgdHlwZXMgZm9yIGRlZmF1bHQgc2NyZWVuIGNvbnRleHQuXG4gKiBNYXBzIHRvIERlZmF1bHRTY3JlZW5GYWN0b3J5IGFsaWFzIG1ldGhvZHMgKGUuZy4sIGltYWdlKCksIGNhcmQoKSwgd2ViVmlldygpKS5cbiAqL1xuZXhwb3J0IHR5cGUgRGVmYXVsdFNjcmVlbkJ1aWxkZXJVbmlvbkZyb21BbGxvd2VkVHlwZXM8VCBleHRlbmRzIHJlYWRvbmx5IENvbXBvbmVudFR5cGVbXT4gPVxuICBEZWZhdWx0U2NyZWVuRmFjdG9yeU1ldGhvZHNGb3I8VD5ba2V5b2YgRGVmYXVsdFNjcmVlbkZhY3RvcnlNZXRob2RzRm9yPFQ+XSBleHRlbmRzIChcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApID0+IGluZmVyIFJcbiAgICA/IFJcbiAgICA6IG5ldmVyXG5cbi8qKlxuICogQ29udGV4dC1zcGVjaWZpYyBmYWN0b3J5IGZvciBkZWZhdWx0IHNjcmVlbiBjb21wb25lbnRzLlxuICogR2VuZXJpYyB0eXBlIFQgYXV0b21hdGljYWxseSBpbmZlcnMgY29tcG9uZW50IHR5cGVzIGZyb20gQUxMT1dFRF9UWVBFUy5cbiAqL1xuZXhwb3J0IGNsYXNzIEpjRGVmYXVsdFNjcmVlbkZhY3Rvcnk8XG4gIFQgZXh0ZW5kcyByZWFkb25seSBDb21wb25lbnRUeXBlW10gPSByZWFkb25seSBDb21wb25lbnRUeXBlW10sXG4+IGV4dGVuZHMgSmNCdWlsZGVyRmFjdG9yeTxUPiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIGFsbG93ZWQ6IFQsXG4gICAgb25Db21wb25lbnRDcmVhdGVkOiAoY29tcG9uZW50OiBEZWZhdWx0U2NyZWVuQnVpbGRlclVuaW9uRnJvbUFsbG93ZWRUeXBlczxUPikgPT4gdm9pZCxcbiAgKSB7XG4gICAgLy8gT3ZlcnJpZGUgdG8gdXNlIGRlZmF1bHQtc2NyZWVuLXNwZWNpZmljIGJ1aWxkZXIgdW5pb24gdHlwZVxuICAgIHN1cGVyKGFsbG93ZWQsIG9uQ29tcG9uZW50Q3JlYXRlZCBhcyAoY29tcG9uZW50OiBCYXNlQnVpbGRlclVuaW9uRnJvbUFsbG93ZWRUeXBlczxUPikgPT4gdm9pZClcbiAgfVxuICAvKipcbiAgICogR3JvdXBzIGNvbnRlbnQgaW4gZmxleGlibGUgbGF5b3V0cyB3aXRoIHN0eWxpbmcuXG4gICAqIEBzZWUgY2FyZE9uRGVmYXVsdFxuICAgKi9cbiAgY2FyZChcbiAgICBvcHRpb25zPzogUGFyYW1ldGVyczxKY0J1aWxkZXJGYWN0b3J5WydjYXJkT25EZWZhdWx0J10+WzBdLFxuICApOiBSZXR1cm5UeXBlPEpjQnVpbGRlckZhY3RvcnlbJ2NhcmRPbkRlZmF1bHQnXT4ge1xuICAgIHJldHVybiBzdXBlci5jYXJkT25EZWZhdWx0KG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheXMgaW1hZ2VzIHdpdGggc2l6aW5nIGFuZCBhY3Rpb25zLlxuICAgKiBAc2VlIGltYWdlT25EZWZhdWx0XG4gICAqL1xuICBpbWFnZShcbiAgICBvcHRpb25zPzogUGFyYW1ldGVyczxKY0J1aWxkZXJGYWN0b3J5WydpbWFnZU9uRGVmYXVsdCddPlswXSxcbiAgKTogUmV0dXJuVHlwZTxKY0J1aWxkZXJGYWN0b3J5WydpbWFnZU9uRGVmYXVsdCddPiB7XG4gICAgcmV0dXJuIHN1cGVyLmltYWdlT25EZWZhdWx0KG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogRW1iZWRzIHdlYiBjb250ZW50IGlubGluZS5cbiAgICogQHNlZSB3ZWJWaWV3T25EZWZhdWx0XG4gICAqL1xuICB3ZWJWaWV3KFxuICAgIG9wdGlvbnM/OiBQYXJhbWV0ZXJzPEpjQnVpbGRlckZhY3RvcnlbJ3dlYlZpZXdPbkRlZmF1bHQnXT5bMF0sXG4gICk6IFJldHVyblR5cGU8SmNCdWlsZGVyRmFjdG9yeVsnd2ViVmlld09uRGVmYXVsdCddPiB7XG4gICAgcmV0dXJuIHN1cGVyLndlYlZpZXdPbkRlZmF1bHQob3B0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBQbGF5cyB2aWRlbyBjb250ZW50LlxuICAgKiBAc2VlIHZpZGVvUGxheWVyT25KaWdcbiAgICovXG4gIHZpZGVvUGxheWVyKFxuICAgIG9wdGlvbnM/OiBQYXJhbWV0ZXJzPEpjQnVpbGRlckZhY3RvcnlbJ3ZpZGVvUGxheWVyT25KaWcnXT5bMF0sXG4gICk6IFJldHVyblR5cGU8SmNCdWlsZGVyRmFjdG9yeVsndmlkZW9QbGF5ZXJPbkppZyddPiB7XG4gICAgcmV0dXJuIHN1cGVyLnZpZGVvUGxheWVyT25KaWcob3B0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBHcm91cHMgcmVsYXRlZCBmb3JtIGZpZWxkcy5cbiAgICogQHNlZSBzZWN0aW9uT25EZWZhdWx0XG4gICAqL1xuICBzZWN0aW9uKFxuICAgIG9wdGlvbnM/OiBQYXJhbWV0ZXJzPEpjQnVpbGRlckZhY3RvcnlbJ3NlY3Rpb25PbkRlZmF1bHQnXT5bMF0sXG4gICk6IFJldHVyblR5cGU8SmNCdWlsZGVyRmFjdG9yeVsnc2VjdGlvbk9uRGVmYXVsdCddPiB7XG4gICAgcmV0dXJuIHN1cGVyLnNlY3Rpb25PbkRlZmF1bHQob3B0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFuZGFsb25lIGxpc3QgaXRlbSBvdXRzaWRlIGxpc3RzLlxuICAgKiBAc2VlIGxpc3RJdGVtU3RhbmRhbG9uZVxuICAgKi9cbiAgb3ZlcnJpZGUgbGlzdEl0ZW0oXG4gICAgb3B0aW9ucz86IFBhcmFtZXRlcnM8SmNCdWlsZGVyRmFjdG9yeVsnbGlzdEl0ZW1TdGFuZGFsb25lJ10+WzBdLFxuICApOiBSZXR1cm5UeXBlPEpjQnVpbGRlckZhY3RvcnlbJ2xpc3RJdGVtU3RhbmRhbG9uZSddPiB7XG4gICAgcmV0dXJuIHN1cGVyLmxpc3RJdGVtU3RhbmRhbG9uZShvcHRpb25zKVxuICB9XG5cbiAgLyoqXG4gICAqIFRhYi1saWtlIGNvbnRyb2wgZm9yIG9wdGlvbiBzZWxlY3Rpb24uXG4gICAqIEBzZWUgc2VnbWVudGVkQ29udHJvbFxuICAgKi9cbiAgc2VnbWVudGVkKFxuICAgIG9wdGlvbnM/OiBQYXJhbWV0ZXJzPEpjQnVpbGRlckZhY3RvcnlbJ3NlZ21lbnRlZENvbnRyb2wnXT5bMF0sXG4gICk6IFJldHVyblR5cGU8SmNCdWlsZGVyRmFjdG9yeVsnc2VnbWVudGVkQ29udHJvbCddPiB7XG4gICAgcmV0dXJuIHN1cGVyLnNlZ21lbnRlZENvbnRyb2wob3B0aW9ucylcbiAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFNVTU1BUlkgRkFDVE9SWSAtIENvbnRleHQtc3BlY2lmaWMgZmFjdG9yeSBmb3Igc3VtbWFyeSBjb21wb25lbnRzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBNYXBzIGNvbXBvbmVudCB0eXBlcyB0byBKY1N1bW1hcnlGYWN0b3J5IG1ldGhvZHMuXG4gKiBQcm92aWRlcyBhbGlhc2VzIGZvciBzdW1tYXJ5LXNwZWNpZmljIGNvbXBvbmVudHMuXG4gKi9cbmV4cG9ydCBjb25zdCBTVU1NQVJZX0ZBQ1RPUllfTUVUSE9EUyA9IHtcbiAgLy8gLi4uQ09NUE9ORU5UX1RPX0ZBQ1RPUllfTUVUSE9ELFxuICAvLyBTdW1tYXJ5LXNwZWNpZmljIGFsaWFzZXNcbiAgW0NPTVBPTkVOVF9UWVBFLlNVTU1BUllfREVGQVVMVF06ICdkZWZhdWx0JyxcbiAgW0NPTVBPTkVOVF9UWVBFLlNVTU1BUllfQ0FSRF06ICdjYXJkJyxcbiAgW0NPTVBPTkVOVF9UWVBFLlNVTU1BUllfQ09VTlRFUl06ICdjb3VudGVyJyxcbn0gYXMgY29uc3RcblxuLyoqXG4gKiBEZXJpdmVzIGZhY3RvcnkgbWV0aG9kcyBmb3IgSmNTdW1tYXJ5RmFjdG9yeS5cbiAqL1xuZXhwb3J0IHR5cGUgU3VtbWFyeUZhY3RvcnlNZXRob2RzRm9yPFQgZXh0ZW5kcyByZWFkb25seSBDb21wb25lbnRUeXBlW10+ID1cbiAgVFtudW1iZXJdIGV4dGVuZHMga2V5b2YgdHlwZW9mIFNVTU1BUllfRkFDVE9SWV9NRVRIT0RTXG4gICAgPyBQaWNrPEpjU3VtbWFyeUZhY3RvcnksICh0eXBlb2YgU1VNTUFSWV9GQUNUT1JZX01FVEhPRFMpW1RbbnVtYmVyXV0+XG4gICAgOiBuZXZlclxuXG4vKipcbiAqIERlcml2ZXMgdW5pb24gb2YgYnVpbGRlciB0eXBlcyBmcm9tIGFsbG93ZWQgY29tcG9uZW50IHR5cGVzIGZvciBzdW1tYXJ5IGNvbnRleHQuXG4gKi9cbmV4cG9ydCB0eXBlIFN1bW1hcnlCdWlsZGVyVW5pb25Gcm9tQWxsb3dlZFR5cGVzPFQgZXh0ZW5kcyByZWFkb25seSBDb21wb25lbnRUeXBlW10+ID1cbiAgU3VtbWFyeUZhY3RvcnlNZXRob2RzRm9yPFQ+W2tleW9mIFN1bW1hcnlGYWN0b3J5TWV0aG9kc0ZvcjxUPl0gZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGluZmVyIFJcbiAgICA/IFJcbiAgICA6IG5ldmVyXG5cbi8qKlxuICogQ29udGV4dC1zcGVjaWZpYyBmYWN0b3J5IGZvciBzdW1tYXJ5IGNvbXBvbmVudHMuXG4gKiBQcm92aWRlcyBjbGVhbmVyIEFQSSB3aXRoIGNvbnRleHQtYXBwcm9wcmlhdGUgbWV0aG9kIG5hbWVzLlxuICovXG5leHBvcnQgY2xhc3MgSmNTdW1tYXJ5RmFjdG9yeTxcbiAgVCBleHRlbmRzIHJlYWRvbmx5IENvbXBvbmVudFR5cGVbXSA9IHJlYWRvbmx5IENvbXBvbmVudFR5cGVbXSxcbj4gZXh0ZW5kcyBKY0J1aWxkZXJGYWN0b3J5PFQ+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgYWxsb3dlZDogVCxcbiAgICBvbkNvbXBvbmVudENyZWF0ZWQ6IChjb21wb25lbnQ6IFN1bW1hcnlCdWlsZGVyVW5pb25Gcm9tQWxsb3dlZFR5cGVzPFQ+KSA9PiB2b2lkLFxuICApIHtcbiAgICAvLyBPdmVycmlkZSB0byB1c2Ugc3VtbWFyeS1zcGVjaWZpYyBidWlsZGVyIHVuaW9uIHR5cGVcbiAgICBzdXBlcihhbGxvd2VkLCBvbkNvbXBvbmVudENyZWF0ZWQgYXMgKGNvbXBvbmVudDogQmFzZUJ1aWxkZXJVbmlvbkZyb21BbGxvd2VkVHlwZXM8VD4pID0+IHZvaWQpXG4gIH1cblxuICAvKipcbiAgICogRGVmYXVsdCBzdW1tYXJ5IHdpdGggb3B0aW9uYWwgaWNvbi5cbiAgICogQHNlZSBzdW1tYXJ5RGVmYXVsdFxuICAgKi9cbiAgZGVmYXVsdChvcHRpb25zPzogSmNTdW1tYXJ5RGVmYXVsdElucHV0T3B0aW9ucyk6IEpjU3VtbWFyeURlZmF1bHRCdWlsZGVyIHtcbiAgICByZXR1cm4gc3VwZXIuc3VtbWFyeURlZmF1bHQob3B0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBDYXJ0IHN1bW1hcnkgd2l0aCB2YWx1ZSBhbmQgZGVzY3JpcHRpb24uXG4gICAqIEBzZWUgc3VtbWFyeUNhcmRcbiAgICovXG4gIGNhcmQob3B0aW9ucz86IEpjU3VtbWFyeUNhcmRJbnB1dE9wdGlvbnMpOiBKY1N1bW1hcnlDYXJkQnVpbGRlciB7XG4gICAgcmV0dXJuIHN1cGVyLnN1bW1hcnlDYXJkKG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogQ291bnRlciBzdW1tYXJ5IHdpdGggbnVtZXJpYyB2YWx1ZS5cbiAgICogQHNlZSBzdW1tYXJ5Q291bnRlclxuICAgKi9cbiAgY291bnRlcihvcHRpb25zPzogSmNTdW1tYXJ5Q291bnRlcklucHV0T3B0aW9ucyk6IEpjU3VtbWFyeUNvdW50ZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gc3VwZXIuc3VtbWFyeUNvdW50ZXIob3B0aW9ucylcbiAgfVxufVxuIl19