@kontur.candy/tools 2.154.0 → 2.156.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 (272) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/distr/Common/AsyncUtils.js +1 -3
  3. package/distr/Common/CandyApiClient/CandyApiClient.js +25 -138
  4. package/distr/Common/CandyApiClient/CandyApiClientContext.js +1 -8
  5. package/distr/Common/CandyApiClient/ClientDraftInfo/ClientDraftInfoResponse.js +1 -1
  6. package/distr/Common/CandyApiClient/ClientDraftInfo/FnsFormInfo.js +1 -1
  7. package/distr/Common/CandyApiClient/ClientDraftInfo/GetClientDraftInfoUrl.js +1 -2
  8. package/distr/Common/CandyApiClient/ClientDraftInfo/PrintInfo.js +1 -1
  9. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithCache.js +1 -16
  10. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithDebouncedBatching.js +1 -12
  11. package/distr/Common/CandyApiClient/DigestApiClient/DigestApiClient.js +1 -12
  12. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/Data/TaxRebate1152026.js +1 -1
  13. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakeDigestApiClient.js +1 -13
  14. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakePicklists.js +1 -3
  15. package/distr/Common/CandyApiClient/DigestApiClient/IDigestApiClient.js +1 -1
  16. package/distr/Common/CandyApiClient/DigestApiClient/React/DigestApiClientContext.js +1 -8
  17. package/distr/Common/CandyApiClient/DigestApiClient/TestDigestApiClient.js +1 -7
  18. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestQueryFilter.js +9 -12
  19. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestRequest.js +1 -1
  20. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestResponse.js +1 -1
  21. package/distr/Common/CandyApiClient/FakeCandyApiClient.js +4 -72
  22. package/distr/Common/CandyApiClient/ICandyApiClient.js +1 -1
  23. package/distr/Common/CandyApiClient/IsBuffer.js +1 -2
  24. package/distr/Common/CandyApiClient/Types/Attachments/Attacments.js +1 -1
  25. package/distr/Common/CandyApiClient/Types/Attachments/GetAttachmentsResponse.js +1 -1
  26. package/distr/Common/CandyApiClient/Types/ChangeSet/ServerChangeSet.js +1 -1
  27. package/distr/Common/CandyApiClient/Types/CreateDraft/CreateDraftResponse.js +1 -1
  28. package/distr/Common/CandyApiClient/Types/DiagResourcesResponse.js +1 -1
  29. package/distr/Common/CandyApiClient/Types/DraftActions/CombineFufResult.js +12 -7
  30. package/distr/Common/CandyApiClient/Types/DraftActions/ConvertDraftRequest.js +1 -1
  31. package/distr/Common/CandyApiClient/Types/DraftActions/FileProperties.js +1 -1
  32. package/distr/Common/CandyApiClient/Types/DraftActions/FufSizeTooLargeError.js +1 -3
  33. package/distr/Common/CandyApiClient/Types/DraftFullId.js +1 -1
  34. package/distr/Common/CandyApiClient/Types/ErrorLog/CandyPopdProtocol.js +5 -6
  35. package/distr/Common/CandyApiClient/Types/ErrorLog/ServerErrorLog.js +9 -12
  36. package/distr/Common/CandyApiClient/Types/ExplanatoryNote/CreateExplanatoryNoteResponse.js +5 -6
  37. package/distr/Common/CandyApiClient/Types/FeatureFlags/FeatureFlagsResponse.js +1 -1
  38. package/distr/Common/CandyApiClient/Types/Focus/FocusServerResponse.js +1 -1
  39. package/distr/Common/CandyApiClient/Types/Focus/FocusTypes.js +5 -6
  40. package/distr/Common/CandyApiClient/Types/GetInner/ServerInnerResponse.js +1 -1
  41. package/distr/Common/CandyApiClient/Types/GetInner/ServerRawResponse.js +1 -3
  42. package/distr/Common/CandyApiClient/Types/GetInner/ServerRequisitesResponse.js +1 -1
  43. package/distr/Common/CandyApiClient/Types/Guid.js +1 -1
  44. package/distr/Common/CandyApiClient/Types/InstancesDeleting/InstancesDeletingRule.js +1 -1
  45. package/distr/Common/CandyApiClient/Types/MassActions/MassActionParameters.js +1 -1
  46. package/distr/Common/CandyApiClient/Types/MassActions/ValueForInstancesSettingRule.js +6 -0
  47. package/distr/Common/CandyApiClient/Types/Presentations/DraftPresentationType.js +5 -6
  48. package/distr/Common/CandyApiClient/Types/Presentations/PresentationContent.js +1 -1
  49. package/distr/Common/CandyApiClient/Types/Print/PrintResponse.js +1 -1
  50. package/distr/Common/CandyApiClient/Types/Print/PrintType.js +5 -6
  51. package/distr/Common/CandyApiClient/Types/Staff/EmployeeInfo.js +1 -1
  52. package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesOptions.js +1 -1
  53. package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesRequest.js +1 -1
  54. package/distr/Common/CandyApiClient/Types/Staff/StaffInfo.js +1 -1
  55. package/distr/Common/CandyApiClient/Types/Tasks/GetTasksServerResponse.js +1 -1
  56. package/distr/Common/CandyApiClient/Types/Tasks/Tasks.js +5 -6
  57. package/distr/Common/CandyApiClient/Types/TestClassification.js +1 -1
  58. package/distr/Common/CollectionUtils.js +1 -3
  59. package/distr/Common/CommonConstants/SectionNames.js +1 -3
  60. package/distr/Common/Comparers.js +2 -16
  61. package/distr/Common/EmotionStorybookWorkaroundViaAliases.js +1 -5
  62. package/distr/Common/EndPoints.js +1 -2
  63. package/distr/Common/Enums/ButtonSettingsTypeEnum.js +5 -6
  64. package/distr/Common/Errors.js +1 -19
  65. package/distr/Common/FormActionHandlers/ContextualActionNames.js +1 -3
  66. package/distr/Common/FormActionHandlers/ControlNamedContextualAction.js +1 -1
  67. package/distr/Common/Funcs.js +1 -5
  68. package/distr/Common/GFV.js +1 -1
  69. package/distr/Common/Hooks/UseLocalStorage.js +3 -10
  70. package/distr/Common/HttpClient/AuthenticationMode.js +3 -7
  71. package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithOptionalPolyfill.js +1 -3
  72. package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithPolyfill.js +1 -3
  73. package/distr/Common/HttpClient/FetchImplementation/Fetch.js +1 -1
  74. package/distr/Common/HttpClient/FetchImplementation/NativeBrowserFetch.js +1 -1
  75. package/distr/Common/HttpClient/FetchImplementation/NodeFetch.js +6 -11
  76. package/distr/Common/HttpClient/HttpClient.js +9 -80
  77. package/distr/Common/HttpClient/HttpClientAuthenticationProvider.js +1 -1
  78. package/distr/Common/HttpClient/IHttpClient.js +1 -1
  79. package/distr/Common/IndentString.js +1 -3
  80. package/distr/Common/IntRangeUtils.js +3 -10
  81. package/distr/Common/IterableUtils.js +3 -76
  82. package/distr/Common/KCLangRuntimeUtils.js +1 -87
  83. package/distr/Common/ModelPath/BuildIterationSequence.js +1 -5
  84. package/distr/Common/ModelPath/EachCurrentCollision.js +5 -6
  85. package/distr/Common/ModelPath/IEquatable.js +1 -1
  86. package/distr/Common/ModelPath/Map/AbsoluteModelPathMap.js +1 -8
  87. package/distr/Common/ModelPath/Map/Map2.js +2 -24
  88. package/distr/Common/ModelPath/Map/ModelPathMap.js +1 -8
  89. package/distr/Common/ModelPath/ModelPath.js +16 -140
  90. package/distr/Common/ModelPath/ModelPathBuilder.js +1 -14
  91. package/distr/Common/ModelPath/ModelPathHelper.js +1 -2
  92. package/distr/Common/ModelPath/PathMatcher.js +5 -24
  93. package/distr/Common/ModelPath/PathSplitHelper.js +1 -6
  94. package/distr/Common/ModelPath/Set/AbsoluteModelPathSet.js +1 -10
  95. package/distr/Common/ModelPath/Set/AbsoluteResolvedModelPathSet.js +1 -10
  96. package/distr/Common/ModelPath/Set/ModelPathSet.js +1 -10
  97. package/distr/Common/ModelPath/Set/Set2.js +1 -16
  98. package/distr/Common/NidusClient/ContextualNidusClient/ContextualNidusClient.js +1 -9
  99. package/distr/Common/NidusClient/ContextualNidusClient/IContextualNidusClient.js +1 -1
  100. package/distr/Common/NidusClient/Fakes/CreateUniqueNidusEntryId.js +1 -3
  101. package/distr/Common/NidusClient/Fakes/FakeNidusClient.js +1 -17
  102. package/distr/Common/NidusClient/Fakes/LocalStorageBasedNidusClient.js +1 -30
  103. package/distr/Common/NidusClient/INidusClient.js +1 -3
  104. package/distr/Common/NidusClient/NidusClientContext.js +1 -14
  105. package/distr/Common/NidusClient/NidusClientImpl.js +1 -18
  106. package/distr/Common/PathConstants.js +1 -3
  107. package/distr/Common/StringArrayKey.js +1 -8
  108. package/distr/Common/TypingUtils.js +7 -26
  109. package/distr/Common/UUID.js +1 -4
  110. package/distr/Common/UseAsyncEffect.js +3 -7
  111. package/distr/Common/UseShowOnce.js +1 -17
  112. package/distr/Common/UseTypedSelector.js +1 -3
  113. package/distr/Common/getRngSchemaFilename.js +21 -0
  114. package/distr/Common/hashUtils.js +1 -4
  115. package/distr/Tools/src/BuildTasks/ClientJS/BuildClientJsTask.js +1 -23
  116. package/distr/Tools/src/BuildTasks/ClientJS/IsWebpack5.js +3 -10
  117. package/distr/Tools/src/BuildTasks/Engine/AcquireFormEngine.js +1 -10
  118. package/distr/Tools/src/BuildTasks/Engine/AcquirePublishedEngineTask.js +5 -23
  119. package/distr/Tools/src/BuildTasks/Engine/BuildLocalEngineTask.js +1 -27
  120. package/distr/Tools/src/BuildTasks/Engine/EngineSource.js +1 -2
  121. package/distr/Tools/src/BuildTasks/EngineStructureUtils.js +3 -10
  122. package/distr/Tools/src/BuildTasks/EngineVersionUtils.js +1 -9
  123. package/distr/Tools/src/BuildTasks/FSTask.js +1 -19
  124. package/distr/Tools/src/BuildTasks/Form/CompileForm.js +1 -19
  125. package/distr/Tools/src/BuildTasks/Form/GenerateForm.js +1 -16
  126. package/distr/Tools/src/BuildTasks/Form/NullFormGenerator.js +1 -11
  127. package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathFiles.js +1 -10
  128. package/distr/Tools/src/BuildTasks/Form/WriteFLangNormalizationFiles.js +1 -10
  129. package/distr/Tools/src/BuildTasks/Generator/AcquireFormGenerator.js +1 -10
  130. package/distr/Tools/src/BuildTasks/Generator/AcquirePublishedGeneratorTask.js +5 -26
  131. package/distr/Tools/src/BuildTasks/Generator/BuildGeneratorFromSourcesTask.js +1 -38
  132. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/CreateAsyncGenerator.js +2 -42
  133. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.js +4 -39
  134. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ProcessSugarWorker.js +4 -7
  135. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js +4 -10
  136. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/RequireUncached.js +9 -17
  137. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/TypedProcessWorker.js +3 -5
  138. package/distr/Tools/src/BuildTasks/ProcessUtils/ProcessUtils.js +1 -13
  139. package/distr/Tools/src/BuildTasks/ProcessUtils/ShellProcessHandle.js +1 -20
  140. package/distr/Tools/src/BuildTasks/PublishedVersionUtils.js +3 -48
  141. package/distr/Tools/src/BuildTasks/ReadFormSource.js +7 -32
  142. package/distr/Tools/src/BuildTasks/ResolveFormInfo.js +5 -32
  143. package/distr/Tools/src/BuildTasks/Version.js +1 -10
  144. package/distr/Tools/src/BuildTasks/WriteFormMeta.js +1 -10
  145. package/distr/Tools/src/CLICommands/BuildForms/BuildCacheMode.js +5 -9
  146. package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js +1 -5
  147. package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +34 -70
  148. package/distr/Tools/src/CLICommands/BuildServer/BuildLogsWebsocketController.js +1 -12
  149. package/distr/Tools/src/CLICommands/BuildServer/BuildServerServerOptions.js +1 -5
  150. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js +1 -67
  151. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js +3 -28
  152. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js +3 -41
  153. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsController.js +3 -23
  154. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsFromResourcesController.js +3 -20
  155. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js +1 -23
  156. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerLocalSourcesEngineController.js +1 -37
  157. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPrebuiltResourcesController.js +1 -13
  158. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPublishedEngineController.js +1 -40
  159. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js +8 -49
  160. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ClientJsDevServer.js +1 -13
  161. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/EngineDevServer.js +1 -17
  162. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ReportGeneratorErrorToPageBody.js +1 -4
  163. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js +10 -19
  164. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorker.js +12 -26
  165. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorkerFactory.js +1 -5
  166. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IInputFileSystem.js +1 -1
  167. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IWatchFileSystem.js +1 -1
  168. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/WebpackHybridFileSystem.js +10 -44
  169. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js +1 -17
  170. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/GlobToRegexp.js +1 -5
  171. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/IGeneratedServerSideSourcesProvider.js +1 -1
  172. package/distr/Tools/src/CLICommands/BuildServer/RunBuildServer.js +1 -27
  173. package/distr/Tools/src/CLICommands/BuildServer/StdStreamsIntercepter.js +11 -16
  174. package/distr/Tools/src/CLICommands/CommonOptions/BuildDebugOnlyOption.js +1 -1
  175. package/distr/Tools/src/CLICommands/CommonOptions/CommonOptionDefintions.js +1 -1
  176. package/distr/Tools/src/CLICommands/CommonOptions/CommonOptions.js +1 -1
  177. package/distr/Tools/src/CLICommands/DevBuild/DevBuildOptions.js +1 -4
  178. package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +23 -34
  179. package/distr/Tools/src/CLICommands/FormStats/FormStatsOptions.js +1 -4
  180. package/distr/Tools/src/CLICommands/FormStats/RunFormStats.js +1 -15
  181. package/distr/Tools/src/CLICommands/FormsHelper/FormsHelperController.js +3 -19
  182. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/autocalc/{gfv}.calc.js +1 -2
  183. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/helpers/setKppValue.js +1 -2
  184. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/browser/Smoke.test.js +1 -6
  185. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/ui/DemoTest.test.js +1 -11
  186. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/validations/kppValue.js +3 -4
  187. package/distr/Tools/src/CLICommands/InitForm/InitFormOptions.js +1 -4
  188. package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js +1 -23
  189. package/distr/Tools/src/CLICommands/Localization/LocalizationOptions.js +1 -4
  190. package/distr/Tools/src/CLICommands/Localization/RunLocalization.js +7 -23
  191. package/distr/Tools/src/CLICommands/RenameFiles/RenameFilesOptions.js +26 -0
  192. package/distr/Tools/src/CLICommands/RenameFiles/RunRenameFiles.js +48 -0
  193. package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js +1 -37
  194. package/distr/Tools/src/CLICommands/UpgradeForm/UpgradeFormOptions.js +1 -4
  195. package/distr/Tools/src/CandyCLI.js +7 -56
  196. package/distr/Tools/src/CheckNodeJsVersion.js +3 -10
  197. package/distr/Tools/src/Commons/ApiClient/ToolsApiClient.js +1 -10
  198. package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplication.js +4 -29
  199. package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplicationContext.js +1 -6
  200. package/distr/Tools/src/Commons/ErrorUntyped.js +1 -1
  201. package/distr/Tools/src/Commons/EventObject.js +10 -20
  202. package/distr/Tools/src/Commons/ExecUtils.js +3 -9
  203. package/distr/Tools/src/Commons/ExtractGfvsFromFileName.js +1 -7
  204. package/distr/Tools/src/Commons/FormGlobsUtils.js +1 -33
  205. package/distr/Tools/src/Commons/FsUtils.js +1 -12
  206. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Actions.js +1 -8
  207. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Methods.js +4 -15
  208. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/NotFoundWebError.js +1 -4
  209. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/CookieParamParamBinder.js +1 -5
  210. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/IParamBinder.js +1 -1
  211. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/JsonBodyParamBinder.js +1 -4
  212. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/StringBodyParamBinder.js +1 -5
  213. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlParamBinder.js +2 -5
  214. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlQueryParamBinder.js +1 -5
  215. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Params.js +1 -14
  216. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomActionResultHandler.js +1 -4
  217. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomContentResultHandler.js +1 -5
  218. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/EmptyResultHandler.js +1 -4
  219. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/HtmlResultHandler.js +1 -4
  220. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/IResultHandler.js +1 -1
  221. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/JsonResultHandler.js +1 -4
  222. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/PlainTextResultHandler.js +1 -4
  223. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/StreamResultHandler.js +1 -36
  224. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results.js +1 -9
  225. package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/ExpressServerWrapper.js +5 -35
  226. package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/SingletonController.js +9 -11
  227. package/distr/Tools/src/Commons/Locks/Lock.js +1 -8
  228. package/distr/Tools/src/Commons/Locks/LockHandle.js +1 -5
  229. package/distr/Tools/src/Commons/Locks/ReadWriteLockCollection.js +1 -9
  230. package/distr/Tools/src/Commons/Logging/ELKLogger.js +17 -22
  231. package/distr/Tools/src/Commons/Logging/ILogger.js +1 -5
  232. package/distr/Tools/src/Commons/Logging/InMemoryLogger.js +3 -21
  233. package/distr/Tools/src/Commons/Logging/Logger.js +9 -29
  234. package/distr/Tools/src/Commons/Logging/StaticLogger.js +11 -15
  235. package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.d.js +1 -1
  236. package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.js +3 -37
  237. package/distr/Tools/src/Commons/PathPattern.js +1 -13
  238. package/distr/Tools/src/Commons/TasksCore/AggregatedError.js +1 -4
  239. package/distr/Tools/src/Commons/TasksCore/BuildTask.js +1 -1
  240. package/distr/Tools/src/Commons/TasksCore/ChainableValueProducer.js +13 -200
  241. package/distr/Tools/src/Commons/TasksCore/DirectoryEntriesProducer.js +1 -20
  242. package/distr/Tools/src/Commons/TasksCore/EmptyProducer.js +7 -10
  243. package/distr/Tools/src/Commons/TasksCore/FileSystemEntriesProducer.js +1 -15
  244. package/distr/Tools/src/Commons/TasksCore/FileValueProducer.js +1 -15
  245. package/distr/Tools/src/Commons/TasksCore/Observe.js +1 -13
  246. package/distr/Tools/src/Commons/TasksCore/SingleValueProducer.js +5 -11
  247. package/distr/Tools/src/Commons/TimingUtils.js +1 -2
  248. package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js +13 -51
  249. package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js +4 -14
  250. package/distr/Tools/src/GenerateReadMe.js +1 -13
  251. package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js +1 -1
  252. package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js.LICENSE.txt +10 -1
  253. package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
  254. package/distr/Tools/src/LocalServerFrontEndDist/index.js.LICENSE.txt +10 -1
  255. package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
  256. package/distr/Tools/src/Options/CandyToolOptions.js +3 -11
  257. package/distr/Tools/src/ReadFarmConfig.js +1 -5
  258. package/distr/Tools/src/SelfUpdate.js +4 -28
  259. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +1506 -1257
  260. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.LICENSE.txt +1 -0
  261. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
  262. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +843 -623
  263. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.LICENSE.txt +1 -0
  264. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
  265. package/distr/Tools/src/StaticFilesForProductionResourcesDir/jquery-1.11.3.min.js +777 -1117
  266. package/distr/Tools/src/StaticFilesForProductionResourcesDir/polyfill.min.js +1665 -2015
  267. package/distr/Tools/src/StaticFilesForProductionResourcesDir/testing.min.js +9 -55
  268. package/distr/Tools/src/StaticFilesForResourcesDir/jquery-1.11.3.min.js +777 -1117
  269. package/distr/Tools/src/StaticFilesForResourcesDir/polyfill.min.js +1665 -2015
  270. package/distr/Tools/src/StaticFilesForResourcesDir/testing.min.js +9 -55
  271. package/package.json +10 -10
  272. /package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/schemas/{{gfv}.rng.xml → {gfv}.0.rng.xml} +0 -0
@@ -1,42 +1,25 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.BuildServerPublishedEngineController = void 0;
9
-
10
8
  var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime/helpers/applyDecoratedDescriptor"));
11
-
12
9
  var path = _interopRequireWildcard(require("path"));
13
-
14
10
  var _fsExtra = require("fs-extra");
15
-
16
11
  var _mimeTypes = _interopRequireDefault(require("mime-types"));
17
-
18
12
  var _AcquireFormEngine = require("../../../BuildTasks/Engine/AcquireFormEngine");
19
-
20
13
  var _EngineVersionUtils = require("../../../BuildTasks/EngineVersionUtils");
21
-
22
14
  var _Methods = require("../../../Commons/HttpServer/AttributeRouting/Methods");
23
-
24
15
  var _NotFoundWebError = require("../../../Commons/HttpServer/AttributeRouting/NotFoundWebError");
25
-
26
16
  var _Params = require("../../../Commons/HttpServer/AttributeRouting/Params");
27
-
28
17
  var _Results = require("../../../Commons/HttpServer/AttributeRouting/Results");
29
-
30
18
  var _StreamResultHandler = require("../../../Commons/HttpServer/AttributeRouting/Results/StreamResultHandler");
31
-
32
19
  var _SingletonController = require("../../../Commons/HttpServer/ExpressWrapper/SingletonController");
33
-
34
20
  var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class;
35
-
36
21
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
37
-
38
22
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
39
-
40
23
  let BuildServerPublishedEngineController = (_dec = (0, _Methods.httpGet)("/public/scripts/candy_v:engineName.js", _Results.httpReturn.StreamWithMime("application/javascript"), (0, _Params.httpUrlParam)("engineName", _Params.httpType.String)), _dec2 = (0, _Methods.httpGet)("/public/styles/candy_v:engineName.css", _Results.httpReturn.StreamWithMime("text/css"), (0, _Params.httpUrlParam)("engineName", _Params.httpType.String)), _dec3 = (0, _Methods.httpGet)("/public/scripts/candy_v:engineName.js.map", _Results.httpReturn.StreamWithMime("application/javascript"), (0, _Params.httpUrlParam)("engineName", _Params.httpType.String)), _dec4 = (0, _Methods.httpGet)("/public/styles/candy_v:engineName.css.map", _Results.httpReturn.StreamWithMime("text/css"), (0, _Params.httpUrlParam)("engineName", _Params.httpType.String)), _dec5 = (0, _Methods.httpGet)("/public/fonts/:filename", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("filename", _Params.httpType.String)), _dec6 = (0, _Methods.httpGet)("/public/images/:filename", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("filename", _Params.httpType.String)), (_class = class BuildServerPublishedEngineController extends _SingletonController.SingletonController {
41
24
  constructor(candyModulesDirectory) {
42
25
  super();
@@ -44,81 +27,59 @@ let BuildServerPublishedEngineController = (_dec = (0, _Methods.httpGet)("/publi
44
27
  this.usedEngines = [];
45
28
  this.candyModulesDirectory = candyModulesDirectory;
46
29
  }
47
-
48
30
  async getEngineScript(engineName) {
49
31
  const fileName = `candy_v${engineName}.js`;
50
-
51
32
  const engineVersion = _EngineVersionUtils.EngineVersionUtils.extractVersionFromEngineFileName(fileName);
52
-
53
33
  const pathToPublishedEngine = await this.getPathToPublishedEngine(engineVersion);
54
34
  return new _StreamResultHandler.FileStreamResult(`${pathToPublishedEngine}/scripts/${fileName}`);
55
35
  }
56
-
57
36
  async getEngineStyles(engineName) {
58
37
  const fileName = `candy_v${engineName}.css`;
59
-
60
38
  const engineVersion = _EngineVersionUtils.EngineVersionUtils.extractVersionFromEngineFileName(fileName);
61
-
62
39
  const pathToPublishedEngine = await this.getPathToPublishedEngine(engineVersion);
63
40
  return new _StreamResultHandler.FileStreamResult(`${pathToPublishedEngine}/styles/${fileName}`);
64
41
  }
65
-
66
42
  async getEngineScriptSourceMap(engineName) {
67
43
  const fileName = `candy_v${engineName}.js.map`;
68
-
69
44
  const engineVersion = _EngineVersionUtils.EngineVersionUtils.extractVersionFromEngineFileName(fileName);
70
-
71
45
  const pathToPublishedEngine = await this.getPathToPublishedEngine(engineVersion);
72
46
  return new _StreamResultHandler.FileStreamResult(`${pathToPublishedEngine}/scripts/${fileName}`);
73
47
  }
74
-
75
48
  async getEngineStylesSourceMap(engineName) {
76
49
  const fileName = `candy_v${engineName}.css.map`;
77
-
78
50
  const engineVersion = _EngineVersionUtils.EngineVersionUtils.extractVersionFromEngineFileName(fileName);
79
-
80
51
  const pathToPublishedEngine = await this.getPathToPublishedEngine(engineVersion);
81
52
  return new _StreamResultHandler.FileStreamResult(`${pathToPublishedEngine}/styles/${fileName}`);
82
53
  }
83
-
84
54
  async getFormFont(fileName) {
85
55
  for (const pathToEngine of this.usedEngines) {
86
56
  const fileNamePath = path.join(pathToEngine, `fonts/${fileName}`);
87
-
88
57
  if (await (0, _fsExtra.pathExists)(fileNamePath)) {
89
58
  return new _StreamResultHandler.FileStreamResult(fileNamePath, _mimeTypes.default.lookup(fileName));
90
59
  }
91
60
  }
92
-
93
61
  throw new _NotFoundWebError.NotFoundWebError("File not found");
94
62
  }
95
-
96
63
  async getFormImages(fileName) {
97
64
  for (const pathToEngine of this.usedEngines) {
98
65
  const fileNamePath = path.join(pathToEngine, `images/${fileName}`);
99
-
100
66
  if (await (0, _fsExtra.pathExists)(fileNamePath)) {
101
67
  return new _StreamResultHandler.FileStreamResult(fileNamePath, _mimeTypes.default.lookup(fileName));
102
68
  }
103
69
  }
104
-
105
70
  throw new _NotFoundWebError.NotFoundWebError("File not found", true);
106
71
  }
107
-
108
72
  async getPathToPublishedEngine(engineVersion) {
109
73
  const engine = (0, _AcquireFormEngine.engineFactory)({
110
74
  type: "PublishedEngine",
111
75
  version: engineVersion
112
76
  }, this.candyModulesDirectory, false);
113
77
  const result = await engine.currentValue;
114
-
115
78
  if (!this.usedEngines.includes(result)) {
116
79
  this.usedEngines.push(result);
117
80
  }
118
-
119
81
  return result;
120
82
  }
121
-
122
83
  }, ((0, _applyDecoratedDescriptor2.default)(_class.prototype, "getEngineScript", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "getEngineScript"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getEngineStyles", [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, "getEngineStyles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getEngineScriptSourceMap", [_dec3], Object.getOwnPropertyDescriptor(_class.prototype, "getEngineScriptSourceMap"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getEngineStylesSourceMap", [_dec4], Object.getOwnPropertyDescriptor(_class.prototype, "getEngineStylesSourceMap"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormFont", [_dec5], Object.getOwnPropertyDescriptor(_class.prototype, "getFormFont"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormImages", [_dec6], Object.getOwnPropertyDescriptor(_class.prototype, "getFormImages"), _class.prototype)), _class));
123
84
  exports.BuildServerPublishedEngineController = BuildServerPublishedEngineController;
124
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9CdWlsZFNlcnZlclB1Ymxpc2hlZEVuZ2luZUNvbnRyb2xsZXIudHMiXSwibmFtZXMiOlsiQnVpbGRTZXJ2ZXJQdWJsaXNoZWRFbmdpbmVDb250cm9sbGVyIiwiaHR0cFJldHVybiIsIlN0cmVhbVdpdGhNaW1lIiwiaHR0cFR5cGUiLCJTdHJpbmciLCJTdHJlYW0iLCJTaW5nbGV0b25Db250cm9sbGVyIiwiY29uc3RydWN0b3IiLCJjYW5keU1vZHVsZXNEaXJlY3RvcnkiLCJ1c2VkRW5naW5lcyIsImdldEVuZ2luZVNjcmlwdCIsImVuZ2luZU5hbWUiLCJmaWxlTmFtZSIsImVuZ2luZVZlcnNpb24iLCJFbmdpbmVWZXJzaW9uVXRpbHMiLCJleHRyYWN0VmVyc2lvbkZyb21FbmdpbmVGaWxlTmFtZSIsInBhdGhUb1B1Ymxpc2hlZEVuZ2luZSIsImdldFBhdGhUb1B1Ymxpc2hlZEVuZ2luZSIsIkZpbGVTdHJlYW1SZXN1bHQiLCJnZXRFbmdpbmVTdHlsZXMiLCJnZXRFbmdpbmVTY3JpcHRTb3VyY2VNYXAiLCJnZXRFbmdpbmVTdHlsZXNTb3VyY2VNYXAiLCJnZXRGb3JtRm9udCIsInBhdGhUb0VuZ2luZSIsImZpbGVOYW1lUGF0aCIsInBhdGgiLCJqb2luIiwibWltZSIsImxvb2t1cCIsIk5vdEZvdW5kV2ViRXJyb3IiLCJnZXRGb3JtSW1hZ2VzIiwiZW5naW5lIiwidHlwZSIsInZlcnNpb24iLCJyZXN1bHQiLCJjdXJyZW50VmFsdWUiLCJpbmNsdWRlcyIsInB1c2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBSUE7Ozs7Ozs7O0lBRWFBLG9DLFdBU1Isc0JBQ0csdUNBREgsRUFFR0Msb0JBQVdDLGNBQVgsQ0FBMEIsd0JBQTFC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TUFBdEI7QUFDSDs7QUFDRCxXQUFPQSxNQUFQO0FBQ0g7O0FBMUZ5RSxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgbWltZSBmcm9tIFwibWltZS10eXBlc1wiO1xuXG5pbXBvcnQgeyBlbmdpbmVGYWN0b3J5IH0gZnJvbSBcIi4uLy4uLy4uL0J1aWxkVGFza3MvRW5naW5lL0FjcXVpcmVGb3JtRW5naW5lXCI7XG5pbXBvcnQgeyBFbmdpbmVWZXJzaW9uVXRpbHMgfSBmcm9tIFwiLi4vLi4vLi4vQnVpbGRUYXNrcy9FbmdpbmVWZXJzaW9uVXRpbHNcIjtcbmltcG9ydCB7IGh0dHBHZXQgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvTWV0aG9kc1wiO1xuaW1wb3J0IHsgTm90Rm91bmRXZWJFcnJvciB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9Ob3RGb3VuZFdlYkVycm9yXCI7XG5pbXBvcnQgeyBodHRwVHlwZSwgaHR0cFVybFBhcmFtIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1BhcmFtc1wiO1xuaW1wb3J0IHsgaHR0cFJldHVybiB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9SZXN1bHRzXCI7XG5pbXBvcnQge1xuICAgIEZpbGVTdHJlYW1SZXN1bHQsXG4gICAgU3RyZWFtUmV0dXJuUmVzdWx0LFxufSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUmVzdWx0cy9TdHJlYW1SZXN1bHRIYW5kbGVyXCI7XG5pbXBvcnQgeyBTaW5nbGV0b25Db250cm9sbGVyIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9FeHByZXNzV3JhcHBlci9TaW5nbGV0b25Db250cm9sbGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBCdWlsZFNlcnZlclB1Ymxpc2hlZEVuZ2luZUNvbnRyb2xsZXIgZXh0ZW5kcyBTaW5nbGV0b25Db250cm9sbGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlZEVuZ2luZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoY2FuZHlNb2R1bGVzRGlyZWN0b3J5OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jYW5keU1vZHVsZXNEaXJlY3RvcnkgPSBjYW5keU1vZHVsZXNEaXJlY3Rvcnk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIFwiL3B1YmxpYy9zY3JpcHRzL2NhbmR5X3Y6ZW5naW5lTmFtZS5qc1wiLFxuICAgICAgICBodHRwUmV0dXJuLlN0cmVhbVdpdGhNaW1lKFwiYXBwbGljYXRpb24vamF2YXNjcmlwdFwiKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiZW5naW5lTmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpXG4gICAgKVxuICAgIHB1YmxpYyBhc3luYyBnZXRFbmdpbmVTY3JpcHQoZW5naW5lTmFtZTogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXR1cm5SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBgY2FuZHlfdiR7ZW5naW5lTmFtZX0uanNgO1xuICAgICAgICBjb25zdCBlbmdpbmVWZXJzaW9uID0gRW5naW5lVmVyc2lvblV0aWxzLmV4dHJhY3RWZXJzaW9uRnJvbUVuZ2luZUZpbGVOYW1lKGZpbGVOYW1lKTtcbiAgICAgICAgY29uc3QgcGF0aFRvUHVibGlzaGVkRW5naW5lID0gYXdhaXQgdGhpcy5nZXRQYXRoVG9QdWJsaXNoZWRFbmdpbmUoZW5naW5lVmVyc2lvbik7XG4gICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChgJHtwYXRoVG9QdWJsaXNoZWRFbmdpbmV9L3NjcmlwdHMvJHtmaWxlTmFtZX1gKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcbiAgICAgICAgXCIvcHVibGljL3N0eWxlcy9jYW5keV92OmVuZ2luZU5hbWUuY3NzXCIsXG4gICAgICAgIGh0dHBSZXR1cm4uU3RyZWFtV2l0aE1pbWUoXCJ0ZXh0L2Nzc1wiKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiZW5naW5lTmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpXG4gICAgKVxuICAgIHB1YmxpYyBhc3luYyBnZXRFbmdpbmVTdHlsZXMoZW5naW5lTmFtZTogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXR1cm5SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBgY2FuZHlfdiR7ZW5naW5lTmFtZX0uY3NzYDtcbiAgICAgICAgY29uc3QgZW5naW5lVmVyc2lvbiA9IEVuZ2luZVZlcnNpb25VdGlscy5leHRyYWN0VmVyc2lvbkZyb21FbmdpbmVGaWxlTmFtZShmaWxlTmFtZSk7XG4gICAgICAgIGNvbnN0IHBhdGhUb1B1Ymxpc2hlZEVuZ2luZSA9IGF3YWl0IHRoaXMuZ2V0UGF0aFRvUHVibGlzaGVkRW5naW5lKGVuZ2luZVZlcnNpb24pO1xuICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoYCR7cGF0aFRvUHVibGlzaGVkRW5naW5lfS9zdHlsZXMvJHtmaWxlTmFtZX1gKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcbiAgICAgICAgXCIvcHVibGljL3NjcmlwdHMvY2FuZHlfdjplbmdpbmVOYW1lLmpzLm1hcFwiLFxuICAgICAgICBodHRwUmV0dXJuLlN0cmVhbVdpdGhNaW1lKFwiYXBwbGljYXRpb24vamF2YXNjcmlwdFwiKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiZW5naW5lTmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpXG4gICAgKVxuICAgIHB1YmxpYyBhc3luYyBnZXRFbmdpbmVTY3JpcHRTb3VyY2VNYXAoZW5naW5lTmFtZTogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXR1cm5SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBgY2FuZHlfdiR7ZW5naW5lTmFtZX0uanMubWFwYDtcbiAgICAgICAgY29uc3QgZW5naW5lVmVyc2lvbiA9IEVuZ2luZVZlcnNpb25VdGlscy5leHRyYWN0VmVyc2lvbkZyb21FbmdpbmVGaWxlTmFtZShmaWxlTmFtZSk7XG4gICAgICAgIGNvbnN0IHBhdGhUb1B1Ymxpc2hlZEVuZ2luZSA9IGF3YWl0IHRoaXMuZ2V0UGF0aFRvUHVibGlzaGVkRW5naW5lKGVuZ2luZVZlcnNpb24pO1xuICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoYCR7cGF0aFRvUHVibGlzaGVkRW5naW5lfS9zY3JpcHRzLyR7ZmlsZU5hbWV9YCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIFwiL3B1YmxpYy9zdHlsZXMvY2FuZHlfdjplbmdpbmVOYW1lLmNzcy5tYXBcIixcbiAgICAgICAgaHR0cFJldHVybi5TdHJlYW1XaXRoTWltZShcInRleHQvY3NzXCIpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCJlbmdpbmVOYW1lXCIsIGh0dHBUeXBlLlN0cmluZylcbiAgICApXG4gICAgcHVibGljIGFzeW5jIGdldEVuZ2luZVN0eWxlc1NvdXJjZU1hcChlbmdpbmVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJldHVyblJlc3VsdD4ge1xuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IGBjYW5keV92JHtlbmdpbmVOYW1lfS5jc3MubWFwYDtcbiAgICAgICAgY29uc3QgZW5naW5lVmVyc2lvbiA9IEVuZ2luZVZlcnNpb25VdGlscy5leHRyYWN0VmVyc2lvbkZyb21FbmdpbmVGaWxlTmFtZShmaWxlTmFtZSk7XG4gICAgICAgIGNvbnN0IHBhdGhUb1B1Ymxpc2hlZEVuZ2luZSA9IGF3YWl0IHRoaXMuZ2V0UGF0aFRvUHVibGlzaGVkRW5naW5lKGVuZ2luZVZlcnNpb24pO1xuICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoYCR7cGF0aFRvUHVibGlzaGVkRW5naW5lfS9zdHlsZXMvJHtmaWxlTmFtZX1gKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9wdWJsaWMvZm9udHMvOmZpbGVuYW1lXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJmaWxlbmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtRm9udChmaWxlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXR1cm5SZXN1bHQ+IHtcbiAgICAgICAgZm9yIChjb25zdCBwYXRoVG9FbmdpbmUgb2YgdGhpcy51c2VkRW5naW5lcykge1xuICAgICAgICAgICAgY29uc3QgZmlsZU5hbWVQYXRoID0gcGF0aC5qb2luKHBhdGhUb0VuZ2luZSwgYGZvbnRzLyR7ZmlsZU5hbWV9YCk7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlTmFtZVBhdGgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KGZpbGVOYW1lUGF0aCwgbWltZS5sb29rdXAoZmlsZU5hbWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRXZWJFcnJvcihcIkZpbGUgbm90IGZvdW5kXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3B1YmxpYy9pbWFnZXMvOmZpbGVuYW1lXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJmaWxlbmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtSW1hZ2VzKGZpbGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJldHVyblJlc3VsdD4ge1xuICAgICAgICBmb3IgKGNvbnN0IHBhdGhUb0VuZ2luZSBvZiB0aGlzLnVzZWRFbmdpbmVzKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlTmFtZVBhdGggPSBwYXRoLmpvaW4ocGF0aFRvRW5naW5lLCBgaW1hZ2VzLyR7ZmlsZU5hbWV9YCk7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlTmFtZVBhdGgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KGZpbGVOYW1lUGF0aCwgbWltZS5sb29rdXAoZmlsZU5hbWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRXZWJFcnJvcihcIkZpbGUgbm90IGZvdW5kXCIsIHRydWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZ2V0UGF0aFRvUHVibGlzaGVkRW5naW5lKGVuZ2luZVZlcnNpb246IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IGVuZ2luZSA9IGVuZ2luZUZhY3RvcnkoXG4gICAgICAgICAgICB7IHR5cGU6IFwiUHVibGlzaGVkRW5naW5lXCIsIHZlcnNpb246IGVuZ2luZVZlcnNpb24gfSxcbiAgICAgICAgICAgIHRoaXMuY2FuZHlNb2R1bGVzRGlyZWN0b3J5LFxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZW5naW5lLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgaWYgKCF0aGlzLnVzZWRFbmdpbmVzLmluY2x1ZGVzKHJlc3VsdCkpIHtcbiAgICAgICAgICAgIHRoaXMudXNlZEVuZ2luZXMucHVzaChyZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxufVxuIl19
85
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX2ZzRXh0cmEiLCJfbWltZVR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9BY3F1aXJlRm9ybUVuZ2luZSIsIl9FbmdpbmVWZXJzaW9uVXRpbHMiLCJfTWV0aG9kcyIsIl9Ob3RGb3VuZFdlYkVycm9yIiwiX1BhcmFtcyIsIl9SZXN1bHRzIiwiX1N0cmVhbVJlc3VsdEhhbmRsZXIiLCJfU2luZ2xldG9uQ29udHJvbGxlciIsIl9kZWMiLCJfZGVjMiIsIl9kZWMzIiwiX2RlYzQiLCJfZGVjNSIsIl9kZWM2IiwiX2NsYXNzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIkJ1aWxkU2VydmVyUHVibGlzaGVkRW5naW5lQ29udHJvbGxlciIsImh0dHBHZXQiLCJodHRwUmV0dXJuIiwiU3RyZWFtV2l0aE1pbWUiLCJodHRwVXJsUGFyYW0iLCJodHRwVHlwZSIsIlN0cmluZyIsIlN0cmVhbSIsIlNpbmdsZXRvbkNvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImNhbmR5TW9kdWxlc0RpcmVjdG9yeSIsInVzZWRFbmdpbmVzIiwiZ2V0RW5naW5lU2NyaXB0IiwiZW5naW5lTmFtZSIsImZpbGVOYW1lIiwiZW5naW5lVmVyc2lvbiIsIkVuZ2luZVZlcnNpb25VdGlscyIsImV4dHJhY3RWZXJzaW9uRnJvbUVuZ2luZUZpbGVOYW1lIiwicGF0aFRvUHVibGlzaGVkRW5naW5lIiwiZ2V0UGF0aFRvUHVibGlzaGVkRW5naW5lIiwiRmlsZVN0cmVhbVJlc3VsdCIsImdldEVuZ2luZVN0eWxlcyIsImdldEVuZ2luZVNjcmlwdFNvdXJjZU1hcCIsImdldEVuZ2luZVN0eWxlc1NvdXJjZU1hcCIsImdldEZvcm1Gb250IiwicGF0aFRvRW5naW5lIiwiZmlsZU5hbWVQYXRoIiwiam9pbiIsInBhdGhFeGlzdHMiLCJtaW1lIiwibG9va3VwIiwiTm90Rm91bmRXZWJFcnJvciIsImdldEZvcm1JbWFnZXMiLCJlbmdpbmUiLCJlbmdpbmVGYWN0b3J5IiwidHlwZSIsInZlcnNpb24iLCJyZXN1bHQiLCJjdXJyZW50VmFsdWUiLCJpbmNsdWRlcyIsInB1c2giLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yMiIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvQ0xJQ29tbWFuZHMvQnVpbGRTZXJ2ZXIvUmVzb3VyY2VzQ29udHJvbGxlcnMvQnVpbGRTZXJ2ZXJQdWJsaXNoZWRFbmdpbmVDb250cm9sbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgcGF0aEV4aXN0cyB9IGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IG1pbWUgZnJvbSBcIm1pbWUtdHlwZXNcIjtcblxuaW1wb3J0IHsgZW5naW5lRmFjdG9yeSB9IGZyb20gXCIuLi8uLi8uLi9CdWlsZFRhc2tzL0VuZ2luZS9BY3F1aXJlRm9ybUVuZ2luZVwiO1xuaW1wb3J0IHsgRW5naW5lVmVyc2lvblV0aWxzIH0gZnJvbSBcIi4uLy4uLy4uL0J1aWxkVGFza3MvRW5naW5lVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyBodHRwR2V0IH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL01ldGhvZHNcIjtcbmltcG9ydCB7IE5vdEZvdW5kV2ViRXJyb3IgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvTm90Rm91bmRXZWJFcnJvclwiO1xuaW1wb3J0IHsgaHR0cFR5cGUsIGh0dHBVcmxQYXJhbSB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9QYXJhbXNcIjtcbmltcG9ydCB7IGh0dHBSZXR1cm4gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUmVzdWx0c1wiO1xuaW1wb3J0IHtcbiAgICBGaWxlU3RyZWFtUmVzdWx0LFxuICAgIFN0cmVhbVJldHVyblJlc3VsdCxcbn0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1Jlc3VsdHMvU3RyZWFtUmVzdWx0SGFuZGxlclwiO1xuaW1wb3J0IHsgU2luZ2xldG9uQ29udHJvbGxlciB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvRXhwcmVzc1dyYXBwZXIvU2luZ2xldG9uQ29udHJvbGxlclwiO1xuXG5leHBvcnQgY2xhc3MgQnVpbGRTZXJ2ZXJQdWJsaXNoZWRFbmdpbmVDb250cm9sbGVyIGV4dGVuZHMgU2luZ2xldG9uQ29udHJvbGxlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZWRFbmdpbmVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuY2FuZHlNb2R1bGVzRGlyZWN0b3J5ID0gY2FuZHlNb2R1bGVzRGlyZWN0b3J5O1xuICAgIH1cblxuICAgIEBodHRwR2V0KFxuICAgICAgICBcIi9wdWJsaWMvc2NyaXB0cy9jYW5keV92OmVuZ2luZU5hbWUuanNcIixcbiAgICAgICAgaHR0cFJldHVybi5TdHJlYW1XaXRoTWltZShcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcImVuZ2luZU5hbWVcIiwgaHR0cFR5cGUuU3RyaW5nKVxuICAgIClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RW5naW5lU2NyaXB0KGVuZ2luZU5hbWU6IHN0cmluZyk6IFByb21pc2U8U3RyZWFtUmV0dXJuUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gYGNhbmR5X3Yke2VuZ2luZU5hbWV9LmpzYDtcbiAgICAgICAgY29uc3QgZW5naW5lVmVyc2lvbiA9IEVuZ2luZVZlcnNpb25VdGlscy5leHRyYWN0VmVyc2lvbkZyb21FbmdpbmVGaWxlTmFtZShmaWxlTmFtZSk7XG4gICAgICAgIGNvbnN0IHBhdGhUb1B1Ymxpc2hlZEVuZ2luZSA9IGF3YWl0IHRoaXMuZ2V0UGF0aFRvUHVibGlzaGVkRW5naW5lKGVuZ2luZVZlcnNpb24pO1xuICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoYCR7cGF0aFRvUHVibGlzaGVkRW5naW5lfS9zY3JpcHRzLyR7ZmlsZU5hbWV9YCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIFwiL3B1YmxpYy9zdHlsZXMvY2FuZHlfdjplbmdpbmVOYW1lLmNzc1wiLFxuICAgICAgICBodHRwUmV0dXJuLlN0cmVhbVdpdGhNaW1lKFwidGV4dC9jc3NcIiksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcImVuZ2luZU5hbWVcIiwgaHR0cFR5cGUuU3RyaW5nKVxuICAgIClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RW5naW5lU3R5bGVzKGVuZ2luZU5hbWU6IHN0cmluZyk6IFByb21pc2U8U3RyZWFtUmV0dXJuUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gYGNhbmR5X3Yke2VuZ2luZU5hbWV9LmNzc2A7XG4gICAgICAgIGNvbnN0IGVuZ2luZVZlcnNpb24gPSBFbmdpbmVWZXJzaW9uVXRpbHMuZXh0cmFjdFZlcnNpb25Gcm9tRW5naW5lRmlsZU5hbWUoZmlsZU5hbWUpO1xuICAgICAgICBjb25zdCBwYXRoVG9QdWJsaXNoZWRFbmdpbmUgPSBhd2FpdCB0aGlzLmdldFBhdGhUb1B1Ymxpc2hlZEVuZ2luZShlbmdpbmVWZXJzaW9uKTtcbiAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KGAke3BhdGhUb1B1Ymxpc2hlZEVuZ2luZX0vc3R5bGVzLyR7ZmlsZU5hbWV9YCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIFwiL3B1YmxpYy9zY3JpcHRzL2NhbmR5X3Y6ZW5naW5lTmFtZS5qcy5tYXBcIixcbiAgICAgICAgaHR0cFJldHVybi5TdHJlYW1XaXRoTWltZShcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcImVuZ2luZU5hbWVcIiwgaHR0cFR5cGUuU3RyaW5nKVxuICAgIClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RW5naW5lU2NyaXB0U291cmNlTWFwKGVuZ2luZU5hbWU6IHN0cmluZyk6IFByb21pc2U8U3RyZWFtUmV0dXJuUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gYGNhbmR5X3Yke2VuZ2luZU5hbWV9LmpzLm1hcGA7XG4gICAgICAgIGNvbnN0IGVuZ2luZVZlcnNpb24gPSBFbmdpbmVWZXJzaW9uVXRpbHMuZXh0cmFjdFZlcnNpb25Gcm9tRW5naW5lRmlsZU5hbWUoZmlsZU5hbWUpO1xuICAgICAgICBjb25zdCBwYXRoVG9QdWJsaXNoZWRFbmdpbmUgPSBhd2FpdCB0aGlzLmdldFBhdGhUb1B1Ymxpc2hlZEVuZ2luZShlbmdpbmVWZXJzaW9uKTtcbiAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KGAke3BhdGhUb1B1Ymxpc2hlZEVuZ2luZX0vc2NyaXB0cy8ke2ZpbGVOYW1lfWApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFxuICAgICAgICBcIi9wdWJsaWMvc3R5bGVzL2NhbmR5X3Y6ZW5naW5lTmFtZS5jc3MubWFwXCIsXG4gICAgICAgIGh0dHBSZXR1cm4uU3RyZWFtV2l0aE1pbWUoXCJ0ZXh0L2Nzc1wiKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiZW5naW5lTmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpXG4gICAgKVxuICAgIHB1YmxpYyBhc3luYyBnZXRFbmdpbmVTdHlsZXNTb3VyY2VNYXAoZW5naW5lTmFtZTogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXR1cm5SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBgY2FuZHlfdiR7ZW5naW5lTmFtZX0uY3NzLm1hcGA7XG4gICAgICAgIGNvbnN0IGVuZ2luZVZlcnNpb24gPSBFbmdpbmVWZXJzaW9uVXRpbHMuZXh0cmFjdFZlcnNpb25Gcm9tRW5naW5lRmlsZU5hbWUoZmlsZU5hbWUpO1xuICAgICAgICBjb25zdCBwYXRoVG9QdWJsaXNoZWRFbmdpbmUgPSBhd2FpdCB0aGlzLmdldFBhdGhUb1B1Ymxpc2hlZEVuZ2luZShlbmdpbmVWZXJzaW9uKTtcbiAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KGAke3BhdGhUb1B1Ymxpc2hlZEVuZ2luZX0vc3R5bGVzLyR7ZmlsZU5hbWV9YCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcHVibGljL2ZvbnRzLzpmaWxlbmFtZVwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZmlsZW5hbWVcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Rm9ybUZvbnQoZmlsZU5hbWU6IHN0cmluZyk6IFByb21pc2U8U3RyZWFtUmV0dXJuUmVzdWx0PiB7XG4gICAgICAgIGZvciAoY29uc3QgcGF0aFRvRW5naW5lIG9mIHRoaXMudXNlZEVuZ2luZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVOYW1lUGF0aCA9IHBhdGguam9pbihwYXRoVG9FbmdpbmUsIGBmb250cy8ke2ZpbGVOYW1lfWApO1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZmlsZU5hbWVQYXRoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChmaWxlTmFtZVBhdGgsIG1pbWUubG9va3VwKGZpbGVOYW1lKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kV2ViRXJyb3IoXCJGaWxlIG5vdCBmb3VuZFwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9wdWJsaWMvaW1hZ2VzLzpmaWxlbmFtZVwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZmlsZW5hbWVcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Rm9ybUltYWdlcyhmaWxlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXR1cm5SZXN1bHQ+IHtcbiAgICAgICAgZm9yIChjb25zdCBwYXRoVG9FbmdpbmUgb2YgdGhpcy51c2VkRW5naW5lcykge1xuICAgICAgICAgICAgY29uc3QgZmlsZU5hbWVQYXRoID0gcGF0aC5qb2luKHBhdGhUb0VuZ2luZSwgYGltYWdlcy8ke2ZpbGVOYW1lfWApO1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZmlsZU5hbWVQYXRoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChmaWxlTmFtZVBhdGgsIG1pbWUubG9va3VwKGZpbGVOYW1lKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kV2ViRXJyb3IoXCJGaWxlIG5vdCBmb3VuZFwiLCB0cnVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGdldFBhdGhUb1B1Ymxpc2hlZEVuZ2luZShlbmdpbmVWZXJzaW9uOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBlbmdpbmUgPSBlbmdpbmVGYWN0b3J5KFxuICAgICAgICAgICAgeyB0eXBlOiBcIlB1Ymxpc2hlZEVuZ2luZVwiLCB2ZXJzaW9uOiBlbmdpbmVWZXJzaW9uIH0sXG4gICAgICAgICAgICB0aGlzLmNhbmR5TW9kdWxlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVuZ2luZS5jdXJyZW50VmFsdWU7XG4gICAgICAgIGlmICghdGhpcy51c2VkRW5naW5lcy5pbmNsdWRlcyhyZXN1bHQpKSB7XG4gICAgICAgICAgICB0aGlzLnVzZWRFbmdpbmVzLnB1c2gocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxJQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxVQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFFQSxJQUFBSSxrQkFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssbUJBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFFBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLGlCQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxPQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxRQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxvQkFBQSxHQUFBVixPQUFBO0FBSUEsSUFBQVcsb0JBQUEsR0FBQVgsT0FBQTtBQUFxRyxJQUFBWSxJQUFBLEVBQUFDLEtBQUEsRUFBQUMsS0FBQSxFQUFBQyxLQUFBLEVBQUFDLEtBQUEsRUFBQUMsS0FBQSxFQUFBQyxNQUFBO0FBQUEsU0FBQUMseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLENBQUFDLFdBQUEs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
@@ -1,44 +1,26 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.BuildFormDevServer = void 0;
9
-
10
8
  var _path = _interopRequireDefault(require("path"));
11
-
12
9
  var _stream = require("stream");
13
-
14
10
  var _https = require("https");
15
-
16
11
  var _nodeFetch = _interopRequireDefault(require("node-fetch"));
17
-
18
12
  var _pLimit = _interopRequireDefault(require("p-limit"));
19
-
20
13
  var _fsExtra = require("fs-extra");
21
-
22
14
  var _GenerateForm = require("../../../../BuildTasks/Form/GenerateForm");
23
-
24
15
  var _AcquireFormGenerator = require("../../../../BuildTasks/Generator/AcquireFormGenerator");
25
-
26
16
  var _PublishedVersionUtils = require("../../../../BuildTasks/PublishedVersionUtils");
27
-
28
17
  var _ResolveFormInfo = require("../../../../BuildTasks/ResolveFormInfo");
29
-
30
18
  var _AsyncUtils = require("../../../../../../Common/AsyncUtils");
31
-
32
19
  var _Observe = require("../../../../Commons/TasksCore/Observe");
33
-
34
20
  var _ReportGeneratorErrorToPageBody = require("./ReportGeneratorErrorToPageBody");
35
-
36
21
  var _RunFormCompilationViaWebpackDevServer = require("./RunFormCompilationViaWebpackDevServer");
37
-
38
22
  var _WebpackHybridFileSystem = require("./WebpackInMemoryUtils/WebpackHybridFileSystem");
39
-
40
23
  class BuildFormDevServer {
41
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
42
24
  constructor(port, allFarmConfig, gfv, candyModulesDirectory, farmConfigArray, useGeneratorFromLocalSources, engineDirectory, buildDebugOnly, skipCodeReformatting, nightly) {
43
25
  this.port = void 0;
44
26
  this.allFarmConfig = void 0;
@@ -47,6 +29,7 @@ class BuildFormDevServer {
47
29
  this.farmDirectory = void 0;
48
30
  this.farmConfigArray = void 0;
49
31
  this.startParallelLimit = void 0;
32
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
33
  this.generateChain = void 0;
51
34
  this.webpackDevServerStarted = false;
52
35
  this.useGeneratorFromLocalSources = void 0;
@@ -68,16 +51,13 @@ class BuildFormDevServer {
68
51
  this.nightly = nightly;
69
52
  this.farmDirectory = "";
70
53
  }
71
-
72
54
  start() {
73
55
  return this.startParallelLimit(async () => {
74
56
  if (this.generateChain != undefined) {
75
57
  return;
76
58
  }
77
-
78
59
  const allPossibleFilePath = this.allFarmConfig.map(i => _path.default.join(i, "forms", this.gfv));
79
60
  let formDirPath = "";
80
-
81
61
  for (const pth of allPossibleFilePath) {
82
62
  if (await (0, _fsExtra.pathExists)(pth)) {
83
63
  formDirPath = pth;
@@ -85,19 +65,17 @@ class BuildFormDevServer {
85
65
  break;
86
66
  }
87
67
  }
88
-
89
68
  if (formDirPath === "") {
90
69
  throw Error("formDirPath not found");
91
70
  }
92
-
93
71
  if (!(await (0, _fsExtra.pathExists)(this.farmDirectory))) {
94
72
  throw Error(`FarmDirectory = ${this.farmDirectory} not exist`);
95
73
  }
96
-
97
74
  this.webpackHybridFileSystem = new _WebpackHybridFileSystem.WebpackHybridFileSystem(_path.default.join(formDirPath, "form"));
98
75
  this.generateChain = _Observe.Observe.file(_path.default.join(formDirPath, "form.json")).transform(formJsonFile => (0, _ResolveFormInfo.resolveFormInfo)(formJsonFile, formDirPath, undefined, undefined, undefined, undefined, undefined, this.nightly)).transform(async x => {
99
76
  if (this.useGeneratorFromLocalSources) {
100
- return { ...x,
77
+ return {
78
+ ...x,
101
79
  generatorSource: (0, _PublishedVersionUtils.resolveLocalGeneratorSource)(this.engineDirectory),
102
80
  engineSource: (0, _PublishedVersionUtils.resolveLocalEngineSource)(this.engineDirectory)
103
81
  };
@@ -105,35 +83,31 @@ class BuildFormDevServer {
105
83
  if (x.generatorVersion == undefined) {
106
84
  throw new Error("generatorVersion is no defined");
107
85
  }
108
-
109
86
  if (x.engineVersion == undefined) {
110
87
  throw new Error("engineVersion is no defined");
111
88
  }
112
-
113
- return { ...x,
89
+ return {
90
+ ...x,
114
91
  generatorSource: await (0, _PublishedVersionUtils.resolveGeneratorVersion)(x.generatorVersion),
115
92
  engineSource: await (0, _PublishedVersionUtils.resolveEngineVersion)(x.engineVersion)
116
93
  };
117
94
  }
118
- }).attach(async fi => (0, _AcquireFormGenerator.generatorFactory)(fi.generatorSource, this.candyModulesDirectory, false, undefined), async (fi, y) => ({ ...fi,
95
+ }).attach(async fi => (0, _AcquireFormGenerator.generatorFactory)(fi.generatorSource, this.candyModulesDirectory, false, undefined), async (fi, y) => ({
96
+ ...fi,
119
97
  generator: y
120
98
  }), async fi => (0, _AcquireFormGenerator.getGeneratorSourceKey)(fi.generatorSource)).attach(async fi => _Observe.Observe.files(fi.formSourcesPath, "../../controls/**/generator/*", "schemas/**/*", "sugar/**/*", "controls/**/*", "autocalc/**/*", "helpers/**/*", "validations/**/*", "localization/**/*")).do(async fi => {
121
99
  try {
122
100
  const FormsDirWithHlPath = this.farmConfigArray.find(i => formDirPath.startsWith(i.farmDirectory));
123
-
124
101
  if (FormsDirWithHlPath == undefined) {
125
102
  throw Error("FormsDirWithHlPath === undefined");
126
103
  }
127
-
128
104
  await (0, _GenerateForm.generateForm)(fi.formSourcesPath, this.farmDirectory, FormsDirWithHlPath.hlFarmDirectoryPath, fi.generator, undefined, {
129
105
  skipCodeReformatting: this.skipCodeReformatting,
130
106
  resourcesHash: "local-hash"
131
107
  }, this.webpackHybridFileSystem);
132
108
  } catch (e) {
133
109
  var _this$webpackHybridFi;
134
-
135
110
  const formEntryPointPath = _path.default.join(this.farmDirectory, "forms", this.gfv, "form", "web.js");
136
-
137
111
  await ((_this$webpackHybridFi = this.webpackHybridFileSystem) === null || _this$webpackHybridFi === void 0 ? void 0 : _this$webpackHybridFi.writeBatch({
138
112
  [formEntryPointPath]: (0, _ReportGeneratorErrorToPageBody.getReportGeneratorErrorToPageBodyScript)(this.formatError(e))
139
113
  }));
@@ -144,19 +118,15 @@ class BuildFormDevServer {
144
118
  this.webpackDevServerStarted = true;
145
119
  });
146
120
  }
147
-
148
121
  async getGeneratedFileAsStream(filename) {
149
122
  while (!this.webpackDevServerStarted) {
150
123
  await (0, _AsyncUtils.delay)(500);
151
124
  }
152
-
153
125
  let fileName = "";
154
126
  const allPossibleFilePath = this.allFarmConfig.map(i => _path.default.join(i, "forms", this.gfv, "form", filename));
155
-
156
127
  for (const pth of allPossibleFilePath) {
157
128
  try {
158
129
  var _this$webpackHybridFi2;
159
-
160
130
  if ((_this$webpackHybridFi2 = this.webpackHybridFileSystem) !== null && _this$webpackHybridFi2 !== void 0 && _this$webpackHybridFi2.statSync(pth)) {
161
131
  fileName = pth;
162
132
  break;
@@ -165,14 +135,11 @@ class BuildFormDevServer {
165
135
  continue;
166
136
  }
167
137
  }
168
-
169
138
  if (fileName === "") {
170
139
  throw Error("getGeneratedFileAsStream filename not found");
171
140
  }
172
-
173
141
  return new Promise((resolve, reject) => {
174
142
  var _this$webpackHybridFi3;
175
-
176
143
  (_this$webpackHybridFi3 = this.webpackHybridFileSystem) === null || _this$webpackHybridFi3 === void 0 ? void 0 : _this$webpackHybridFi3.readFile(fileName, "utf-8", (error, data) => {
177
144
  if (error) {
178
145
  reject(error);
@@ -182,36 +149,28 @@ class BuildFormDevServer {
182
149
  });
183
150
  });
184
151
  }
185
-
186
152
  async getFileAsStream(filename) {
187
153
  while (!this.webpackDevServerStarted) {
188
154
  await (0, _AsyncUtils.delay)(500);
189
155
  }
190
-
191
156
  const response = await (0, _nodeFetch.default)(`https://localhost:${this.port}/${filename}`, {
192
157
  method: "GET",
193
158
  agent: new _https.Agent({
194
159
  rejectUnauthorized: false
195
160
  })
196
161
  });
197
-
198
162
  if (response.status != 200) {
199
163
  const textResponse = await response.text();
200
164
  throw new Error(textResponse);
201
165
  }
202
-
203
166
  return response.body;
204
167
  }
205
-
206
168
  formatError(e) {
207
169
  if (e instanceof Error) {
208
170
  return `${e}\n${e.stack}`;
209
171
  }
210
-
211
172
  return `${e}`;
212
173
  }
213
-
214
174
  }
215
-
216
175
  exports.BuildFormDevServer = BuildFormDevServer;
217
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9EZXZTZXJ2ZXJzL0J1aWxkRm9ybURldlNlcnZlci50cyJdLCJuYW1lcyI6WyJCdWlsZEZvcm1EZXZTZXJ2ZXIiLCJjb25zdHJ1Y3RvciIsInBvcnQiLCJhbGxGYXJtQ29uZmlnIiwiZ2Z2IiwiY2FuZHlNb2R1bGVzRGlyZWN0b3J5IiwiZmFybUNvbmZpZ0FycmF5IiwidXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcyIsImVuZ2luZURpcmVjdG9yeSIsImJ1aWxkRGVidWdPbmx5Iiwic2tpcENvZGVSZWZvcm1hdHRpbmciLCJuaWdodGx5IiwiZmFybURpcmVjdG9yeSIsInN0YXJ0UGFyYWxsZWxMaW1pdCIsImdlbmVyYXRlQ2hhaW4iLCJ3ZWJwYWNrRGV2U2VydmVyU3RhcnRlZCIsIndlYnBhY2tIeWJyaWRGaWxlU3lzdGVtIiwic3RhcnQiLCJ1bmRlZmluZWQiLCJhbGxQb3NzaWJsZUZpbGVQYXRoIiwibWFwIiwiaSIsInBhdGgiLCJqb2luIiwiZm9ybURpclBhdGgiLCJwdGgiLCJFcnJvciIsIldlYnBhY2tIeWJyaWRGaWxlU3lzdGVtIiwiT2JzZXJ2ZSIsImZpbGUiLCJ0cmFuc2Zvcm0iLCJmb3JtSnNvbkZpbGUiLCJ4IiwiZ2VuZXJhdG9yU291cmNlIiwiZW5naW5lU291cmNlIiwiZ2VuZXJhdG9yVmVyc2lvbiIsImVuZ2luZVZlcnNpb24iLCJhdHRhY2giLCJmaSIsInkiLCJnZW5lcmF0b3IiLCJmaWxlcyIsImZvcm1Tb3VyY2VzUGF0aCIsImRvIiwiRm9ybXNEaXJXaXRoSGxQYXRoIiwiZmluZCIsInN0YXJ0c1dpdGgiLCJobEZhcm1EaXJlY3RvcnlQYXRoIiwicmVzb3VyY2VzSGFzaCIsImUiLCJmb3JtRW50cnlQb2ludFBhdGgiLCJ3cml0ZUJhdGNoIiwiZm9ybWF0RXJyb3IiLCJvYnNlcnZlIiwiZ2V0R2VuZXJhdGVkRmlsZUFzU3RyZWFtIiwiZmlsZW5hbWUiLCJmaWxlTmFtZSIsInN0YXRTeW5jIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJyZWFkRmlsZSIsImVycm9yIiwiZGF0YSIsIlJlYWRhYmxlIiwiZnJvbSIsImdldEZpbGVBc1N0cmVhbSIsInJlc3BvbnNlIiwibWV0aG9kIiwiYWdlbnQiLCJBZ2VudCIsInJlamVjdFVuYXV0aG9yaXplZCIsInN0YXR1cyIsInRleHRSZXNwb25zZSIsInRleHQiLCJib2R5Iiwic3RhY2siXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUVBOztBQUVBOztBQUNBOztBQUNBOztBQU1BOztBQUNBOztBQUdBOztBQUVBOztBQUNBOztBQUNBOztBQUVPLE1BQU1BLGtCQUFOLENBQXlCO0FBUTVCO0FBVU9DLEVBQUFBLFdBQVcsQ0FDZEMsSUFEYyxFQUVkQyxhQUZjLEVBR2RDLEdBSGMsRUFJZEMscUJBSmMsRUFLZEMsZUFMYyxFQU1kQyw0QkFOYyxFQU9kQyxlQVBjLEVBUWRDLGNBUmMsRUFTZEMsb0JBVGMsRUFVZEMsT0FWYyxFQVdoQjtBQUFBLFNBNUJlVCxJQTRCZjtBQUFBLFNBM0JlQyxhQTJCZjtBQUFBLFNBMUJlQyxHQTBCZjtBQUFBLFNBekJlQyxxQkF5QmY7QUFBQSxTQXhCTU8sYUF3Qk47QUFBQSxTQXZCZU4sZUF1QmY7QUFBQSxTQXRCZU8sa0JBc0JmO0FBQUEsU0FwQk1DLGFBb0JOO0FBQUEsU0FuQk1DLHVCQW1CTixHQW5CZ0MsS0FtQmhDO0FBQUEsU0FsQmVSLDRCQWtCZjtBQUFBLFNBakJlQyxlQWlCZjtBQUFBLFNBaEJlRyxPQWdCZjtBQUFBLFNBZmVGLGNBZWY7QUFBQSxTQWRlQyxvQkFjZjtBQUFBLFNBYk1NLHVCQWFOO0FBQ0UsU0FBS2QsSUFBTCxHQUFZQSxJQUFaO0FBQ0EsU0FBS0MsYUFBTCxHQUFxQkEsYUFBckI7QUFDQSxTQUFLQyxHQUFMLEdBQVdBLEdBQVg7QUFDQSxTQUFLQyxxQkFB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Q08sSUFBVCxFQUEzQjtBQUNBLFlBQU0sSUFBSWhELEtBQUosQ0FBVStDLFlBQVYsQ0FBTjtBQUNIOztBQUNELFdBQU9OLFFBQVEsQ0FBQ1EsSUFBaEI7QUFDSDs7QUFFT3ZCLEVBQUFBLFdBQVcsQ0FBQ0gsQ0FBRCxFQUEyQjtBQUMxQyxRQUFJQSxDQUFDLFlBQVl2QixLQUFqQixFQUF3QjtBQUNwQixhQUFRLEdBQUV1QixDQUFFLEtBQUlBLENBQUMsQ0FBQzJCLEtBQU0sRUFBeEI7QUFDSDs7QUFDRCxXQUFRLEdBQUUzQixDQUFFLEVBQVo7QUFDSDs7QUFyTjJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IFJlYWRhYmxlIH0gZnJvbSBcInN0cmVhbVwiO1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tIFwiaHR0cHNcIjtcblxuaW1wb3J0IGZldGNoIGZyb20gXCJub2RlLWZldGNoXCI7XG5pbXBvcnQgcExpbWl0LCB7IExpbWl0IH0gZnJvbSBcInAtbGltaXRcIjtcbmltcG9ydCB7IEZhcm1Db25maWcgfSBmcm9tIFwiVG9vbHMvc3JjL0NhbmR5Q0xJXCI7XG5pbXBvcnQgeyBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5cbmltcG9ydCB7IGdlbmVyYXRlRm9ybSB9IGZyb20gXCIuLi8uLi8uLi8uLi9CdWlsZFRhc2tzL0Zvcm0vR2VuZXJhdGVGb3JtXCI7XG5pbXBvcnQgeyBnZW5lcmF0b3JGYWN0b3J5LCBnZXRHZW5lcmF0b3JTb3VyY2VLZXkgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQnVpbGRUYXNrcy9HZW5lcmF0b3IvQWNxdWlyZUZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7XG4gICAgcmVzb2x2ZUVuZ2luZVZlcnNpb24sXG4gICAgcmVzb2x2ZUdlbmVyYXRvclZlcnNpb24sXG4gICAgcmVzb2x2ZUxvY2FsRW5naW5lU291cmNlLFxuICAgIHJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZSxcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL0J1aWxkVGFza3MvUHVibGlzaGVkVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyByZXNvbHZlRm9ybUluZm8gfSBmcm9tIFwiLi4vLi4vLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL0NvbW1vbi9Bc3luY1V0aWxzXCI7XG5pbXBvcnQgeyBSZWFzb25PckVycm9yIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbnMvRXJyb3JVbnR5cGVkXCI7XG5pbXBvcnQgeyBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL0NoYWluYWJsZVZhbHVlUHJvZHVjZXJcIjtcbmltcG9ydCB7IE9ic2VydmUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvT2JzZXJ2ZVwiO1xuXG5pbXBvcnQgeyBnZXRSZXBvcnRHZW5lcmF0b3JFcnJvclRvUGFnZUJvZHlTY3JpcHQgfSBmcm9tIFwiLi9SZXBvcnRHZW5lcmF0b3JFcnJvclRvUGFnZUJvZHlcIjtcbmltcG9ydCB7IHJ1bkZvcm1Db21waWxhdGlvblZpYVdlYnBhY2tEZXZTZXJ2ZXIgfSBmcm9tIFwiLi9SdW5Gb3JtQ29tcGlsYXRpb25WaWFXZWJwYWNrRGV2U2VydmVyXCI7XG5pbXBvcnQgeyBXZWJwYWNrSHlicmlkRmlsZVN5c3RlbSB9IGZyb20gXCIuL1dlYnBhY2tJbk1lbW9yeVV0aWxzL1dlYnBhY2tIeWJyaWRGaWxlU3lzdGVtXCI7XG5cbmV4cG9ydCBjbGFzcyBCdWlsZEZvcm1EZXZTZXJ2ZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsRmFybUNvbmZpZzogc3RyaW5nW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBnZnY6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgZmFybURpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmFybUNvbmZpZ0FycmF5OiBGYXJtQ29uZmlnW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGFydFBhcmFsbGVsTGltaXQ6IExpbWl0O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUNoYWluPzogQ2hhaW5hYmxlVmFsdWVQcm9kdWNlcjxhbnk+O1xuICAgIHByaXZhdGUgd2VicGFja0RldlNlcnZlclN0YXJ0ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXM6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5pZ2h0bHk6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBidWlsZERlYnVnT25seTogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNraXBDb2RlUmVmb3JtYXR0aW5nOiBib29sZWFuO1xuICAgIHByaXZhdGUgd2VicGFja0h5YnJpZEZpbGVTeXN0ZW0/OiBXZWJwYWNrSHlicmlkRmlsZVN5c3RlbTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcG9ydDogbnVtYmVyLFxuICAgICAgICBhbGxGYXJtQ29uZmlnOiBzdHJpbmdbXSxcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nLFxuICAgICAgICBmYXJtQ29uZmlnQXJyYXk6IEZhcm1Db25maWdbXSxcbiAgICAgICAgdXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlczogYm9vbGVhbixcbiAgICAgICAgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIGJ1aWxkRGVidWdPbmx5OiBib29sZWFuLFxuICAgICAgICBza2lwQ29kZVJlZm9ybWF0dGluZzogYm9vbGVhbixcbiAgICAgICAgbmlnaHRseTogYm9vbGVhblxuICAgICkge1xuICAgICAgICB0aGlzLnBvcnQgPSBwb3J0O1xuICAgICAgICB0aGlzLmFsbEZhcm1Db25maWcgPSBhbGxGYXJtQ29uZmlnO1xuICAgICAgICB0aGlzLmdmdiA9IGdmdjtcbiAgICAgICAgdGhpcy5jYW5keU1vZHVsZXNEaXJlY3RvcnkgPSBjYW5keU1vZHVsZXNEaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMuZmFybUNvbmZpZ0FycmF5ID0gZmFybUNvbmZpZ0FycmF5O1xuICAgICAgICB0aGlzLnN0YXJ0UGFyYWxsZWxMaW1pdCA9IHBMaW1pdCgxKTtcbiAgICAgICAgdGhpcy51c2VHZW5lcmF0b3JGcm9tTG9jYWxTb3VyY2VzID0gdXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcztcbiAgICAgICAgdGhpcy5lbmdpbmVEaXJlY3RvcnkgPSBlbmdpbmVEaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMuYnVpbGREZWJ1Z09ubHkgPSBidWlsZERlYnVnT25seTtcbiAgICAgICAgdGhpcy5za2lwQ29kZVJlZm9ybWF0dGluZyA9IHNraXBDb2RlUmVmb3JtYXR0aW5nO1xuICAgICAgICB0aGlzLm5pZ2h0bHkgPSBuaWdodGx5O1xuICAgICAgICB0aGlzLmZhcm1EaXJlY3RvcnkgPSBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRQYXJhbGxlbExpbWl0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdlbmVyYXRlQ2hhaW4gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYWxsUG9zc2libGVGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBwYXRoLmpvaW4oaSwgXCJmb3Jtc1wiLCB0aGlzLmdmdikpO1xuICAgICAgICAgICAgbGV0IGZvcm1EaXJQYXRoID0gXCJcIjtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcHRoIG9mIGFsbFBvc3NpYmxlRmlsZVBhdGgpIHtcbiAgICAgICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwdGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoID0gcHRoO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZhcm1EaXJlY3RvcnkgPSBwYXRoLmpvaW4ocHRoLCBcIi4uXCIsIFwiLi5cIik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZvcm1EaXJQYXRoID09PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJmb3JtRGlyUGF0aCBub3QgZm91bmRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKHRoaXMuZmFybURpcmVjdG9yeSkpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYEZhcm1EaXJlY3RvcnkgPSAke3RoaXMuZmFybURpcmVjdG9yeX0gbm90IGV4aXN0YCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMud2VicGFja0h5YnJpZEZpbGVTeXN0ZW0gPSBuZXcgV2VicGFja0h5YnJpZEZpbGVTeXN0ZW0ocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm1cIikpO1xuXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlQ2hhaW4gPSBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm0uanNvblwiKSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGZvcm1Kc29uRmlsZSA9PlxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlRm9ybUluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtSnNvbkZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmlnaHRseVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgeCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ueCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IHJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZSh0aGlzLmVuZ2luZURpcmVjdG9yeSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiByZXNvbHZlTG9jYWxFbmdpbmVTb3VyY2UodGhpcy5lbmdpbmVEaXJlY3RvcnkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4LmdlbmVyYXRvclZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZ2VuZXJhdG9yVmVyc2lvbiBpcyBubyBkZWZpbmVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHguZW5naW5lVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJlbmdpbmVWZXJzaW9uIGlzIG5vIGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLngsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiBhd2FpdCByZXNvbHZlR2VuZXJhdG9yVmVyc2lvbih4LmdlbmVyYXRvclZlcnNpb24pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZVNvdXJjZTogYXdhaXQgcmVzb2x2ZUVuZ2luZVZlcnNpb24oeC5lbmdpbmVWZXJzaW9uKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGdlbmVyYXRvckZhY3RvcnkoZmkuZ2VuZXJhdG9yU291cmNlLCB0aGlzLmNhbmR5TW9kdWxlc0RpcmVjdG9yeSwgZmFsc2UsIHVuZGVmaW5lZCksXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIChmaSwgeSkgPT4gKHsgLi4uZmksIGdlbmVyYXRvcjogeSB9KSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4gZ2V0R2VuZXJhdG9yU291cmNlS2V5KGZpLmdlbmVyYXRvclNvdXJjZSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIuLi8uLi9jb250cm9scy8qKi9nZW5lcmF0b3IvKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzY2hlbWFzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3VnYXIvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjb250cm9scy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImF1dG9jYWxjLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaGVscGVycy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInZhbGlkYXRpb25zLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibG9jYWxpemF0aW9uLyoqLypcIlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGb3Jtc0RpcldpdGhIbFBhdGggPSB0aGlzLmZhcm1Db25maWdBcnJheS5maW5kKGkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aC5zdGFydHNXaXRoKGkuZmFybURpcmVjdG9yeSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoRm9ybXNEaXJXaXRoSGxQYXRoID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiRm9ybXNEaXJXaXRoSGxQYXRoID09PSB1bmRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBnZW5lcmF0ZUZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3Jtc0RpcldpdGhIbFBhdGguaGxGYXJtRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcENvZGVSZWZvcm1hdHRpbmc6IHRoaXMuc2tpcENvZGVSZWZvcm1hdHRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0hhc2g6IFwibG9jYWwtaGFzaFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53ZWJwYWNrSHlicmlkRmlsZVN5c3RlbVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybUVudHJ5UG9pbnRQYXRoID0gcGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCB0aGlzLmdmdiwgXCJmb3JtXCIsIFwid2ViLmpzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy53ZWJwYWNrSHlicmlkRmlsZVN5c3RlbT8ud3JpdGVCYXRjaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1FbnRyeVBvaW50UGF0aF06IGdldFJlcG9ydEdlbmVyYXRvckVycm9yVG9QYWdlQm9keVNjcmlwdCh0aGlzLmZvcm1hdEVycm9yKGUpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2VuZXJhdGVDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgICAgICBhd2FpdCBydW5Gb3JtQ29tcGlsYXRpb25WaWFXZWJwYWNrRGV2U2VydmVyKFxuICAgICAgICAgICAgICAgIHRoaXMuZ2Z2LFxuICAgICAgICAgICAgICAgIHRoaXMuZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5LCBcInJlc1wiKSxcbiAgICAgICAgICAgICAgICBcImxvY2FsLWhhc2hcIixcbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkRGVidWdPbmx5LFxuICAgICAgICAgICAgICAgIHRoaXMud2VicGFja0h5YnJpZEZpbGVTeXN0ZW0sXG4gICAgICAgICAgICAgICAgdGhpcy5wb3J0XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy53ZWJwYWNrRGV2U2VydmVyU3RhcnRlZCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRHZW5lcmF0ZWRGaWxlQXNTdHJlYW0oZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8Tm9kZUpTLlJlYWRhYmxlU3RyZWFtPiB7XG4gICAgICAgIHdoaWxlICghdGhpcy53ZWJwYWNrRGV2U2VydmVyU3RhcnRlZCkge1xuICAgICAgICAgICAgYXdhaXQgZGVsYXkoNTAwKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZmlsZU5hbWUgPSBcIlwiO1xuICAgICAgICBjb25zdCBhbGxQb3NzaWJsZUZpbGVQYXRoID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+IHBhdGguam9pbihpLCBcImZvcm1zXCIsIHRoaXMuZ2Z2LCBcImZvcm1cIiwgZmlsZW5hbWUpKTtcbiAgICAgICAgZm9yIChjb25zdCBwdGggb2YgYWxsUG9zc2libGVGaWxlUGF0aCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy53ZWJwYWNrSHlicmlkRmlsZVN5c3RlbT8uc3RhdFN5bmMocHRoKSkge1xuICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZSA9IHB0aDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChmaWxlTmFtZSA9PT0gXCJcIikge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJnZXRHZW5lcmF0ZWRGaWxlQXNTdHJlYW0gZmlsZW5hbWUgbm90IGZvdW5kXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMud2VicGFja0h5YnJpZEZpbGVTeXN0ZW0/LnJlYWRGaWxlKGZpbGVOYW1lLCBcInV0Zi04XCIsIChlcnJvciwgZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoUmVhZGFibGUuZnJvbShbZGF0YV0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEZpbGVBc1N0cmVhbShmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxOb2RlSlMuUmVhZGFibGVTdHJlYW0+IHtcbiAgICAgICAgd2hpbGUgKCF0aGlzLndlYnBhY2tEZXZTZXJ2ZXJTdGFydGVkKSB7XG4gICAgICAgICAgICBhd2FpdCBkZWxheSg1MDApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYGh0dHBzOi8vbG9jYWxob3N0OiR7dGhpcy5wb3J0fS8ke2ZpbGVuYW1lfWAsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgICAgIGFnZW50OiBuZXcgQWdlbnQoeyByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlIH0pLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPSAyMDApIHtcbiAgICAgICAgICAgIGNvbnN0IHRleHRSZXNwb25zZSA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0ZXh0UmVzcG9uc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNwb25zZS5ib2R5O1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0RXJyb3IoZTogUmVhc29uT3JFcnJvcik6IHN0cmluZyB7XG4gICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtlfVxcbiR7ZS5zdGFja31gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHtlfWA7XG4gICAgfVxufVxuIl19
176
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3N0cmVhbSIsIl9odHRwcyIsIl9ub2RlRmV0Y2giLCJfcExpbWl0IiwiX2ZzRXh0cmEiLCJfR2VuZXJhdGVGb3JtIiwiX0FjcXVpcmVGb3JtR2VuZXJhdG9yIiwiX1B1Ymxpc2hlZFZlcnNpb25VdGlscyIsIl9SZXNvbHZlRm9ybUluZm8iLCJfQXN5bmNVdGlscyIsIl9PYnNlcnZlIiwiX1JlcG9ydEdlbmVyYXRvckVycm9yVG9QYWdlQm9keSIsIl9SdW5Gb3JtQ29tcGlsYXRpb25WaWFXZWJwYWNrRGV2U2VydmVyIiwiX1dlYnBhY2tIeWJyaWRGaWxlU3lzdGVtIiwiQnVpbGRGb3JtRGV2U2VydmVyIiwiY29uc3RydWN0b3IiLCJwb3J0IiwiYWxsRmFybUNvbmZpZyIsImdmdiIsImNhbmR5TW9kdWxlc0RpcmVjdG9yeSIsImZhcm1Db25maWdBcnJheSIsInVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXMiLCJlbmdpbmVEaXJlY3RvcnkiLCJidWlsZERlYnVnT25seSIsInNraXBDb2RlUmVmb3JtYXR0aW5nIiwibmlnaHRseSIsImZhcm1EaXJlY3RvcnkiLCJzdGFydFBhcmFsbGVsTGltaXQiLCJnZW5lcmF0ZUNoYWluIiwid2VicGFja0RldlNlcnZlclN0YXJ0ZWQiLCJ3ZWJwYWNrSHlicmlkRmlsZVN5c3RlbSIsInBMaW1pdCIsInN0YXJ0IiwidW5kZWZpbmVkIiwiYWxsUG9zc2libGVGaWxlUGF0aCIsIm1hcCIsImkiLCJwYXRoIiwiam9pbiIsImZvcm1EaXJQYXRoIiwicHRoIiwicGF0aEV4aXN0cyIsIkVycm9yIiwiV2VicGFja0h5YnJpZEZpbGVTeXN0ZW0iLCJPYnNlcnZlIiwiZmlsZSIsInRyYW5zZm9ybSIsImZvcm1Kc29uRmlsZSIsInJlc29sdmVGb3JtSW5mbyIsIngiLCJnZW5lcmF0b3JTb3VyY2UiLCJyZXNvbHZlTG9jYWxHZW5lcmF0b3JTb3VyY2UiLCJlbmdpbmVTb3VyY2UiLCJyZXNvbHZlTG9jYWxFbmdpbmVTb3VyY2UiLCJnZW5lcmF0b3JWZXJzaW9uIiwiZW5naW5lVmVyc2lvbiIsInJlc29sdmVHZW5lcmF0b3JWZXJzaW9uIiwicmVzb2x2ZUVuZ2luZVZlcnNpb24iLCJhdHRhY2giLCJmaSIsImdlbmVyYXRvckZhY3RvcnkiLCJ5IiwiZ2VuZXJhdG9yIiwiZ2V0R2VuZXJhdG9yU291cmNlS2V5IiwiZmlsZXMiLCJmb3JtU291cmNlc1BhdGgiLCJkbyIsIkZvcm1zRGlyV2l0aEhsUGF0aCIsImZpbmQiLCJzdGFydHNXaXRoIiwiZ2VuZXJhdGVGb3JtIiwiaGxGYXJtRGlyZWN0b3J5UGF0aCIsInJlc291cmNlc0hhc2giLCJlIiwiX3RoaXMkd2VicGFja0h5YnJpZEZpIiwiZm9ybUVudHJ5UG9pbnRQYXRoIiwid3JpdGVCYXRjaCIsImdldFJlcG9ydEdlbmVyYXRvckVycm9yVG9QYWdlQm9keVNjcmlwdCIsImZvcm1hdEVycm9yIiwib2JzZXJ2ZSIsInJ1bkZvcm1Db21waWxhdGlvblZpYVdlYnBhY2tEZXZTZXJ2ZXIiLCJnZXRHZW5lcmF0ZWRGaWxlQXNTdHJlYW0iLCJmaWxlbmFtZSIsImRlbGF5IiwiZmlsZU5hbWUiLCJfdGhpcyR3ZWJwYWNrSHlicmlkRmkyIiwic3RhdFN5bmMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsIl90aGlzJHdlYnBhY2tIeWJyaWRGaTMiLCJyZWFkRmlsZSIsImVycm9yIiwiZGF0YSIsIlJlYWRhYmxlIiwiZnJvbSIsImdldEZpbGVBc1N0cmVhbSIsInJlc3BvbnNlIiwiZmV0Y2giLCJtZXRob2QiLCJhZ2VudCIsIkFnZW50IiwicmVqZWN0VW5hdXRob3JpemVkIiwic3RhdHVzIiwidGV4dFJlc3BvbnNlIiwidGV4dCIsImJvZHkiLCJzdGFjayIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvQ0xJQ29tbWFuZHMvQnVpbGRTZXJ2ZXIvUmVzb3VyY2VzQ29udHJvbGxlcnMvRGV2U2VydmVycy9CdWlsZEZvcm1EZXZTZXJ2ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IFJlYWRhYmxlIH0gZnJvbSBcInN0cmVhbVwiO1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tIFwiaHR0cHNcIjtcblxuaW1wb3J0IGZldGNoIGZyb20gXCJub2RlLWZldGNoXCI7XG5pbXBvcnQgcExpbWl0LCB7IExpbWl0IH0gZnJvbSBcInAtbGltaXRcIjtcbmltcG9ydCB7IEZhcm1Db25maWcgfSBmcm9tIFwiVG9vbHMvc3JjL0NhbmR5Q0xJXCI7XG5pbXBvcnQgeyBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5cbmltcG9ydCB7IGdlbmVyYXRlRm9ybSB9IGZyb20gXCIuLi8uLi8uLi8uLi9CdWlsZFRhc2tzL0Zvcm0vR2VuZXJhdGVGb3JtXCI7XG5pbXBvcnQgeyBnZW5lcmF0b3JGYWN0b3J5LCBnZXRHZW5lcmF0b3JTb3VyY2VLZXkgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQnVpbGRUYXNrcy9HZW5lcmF0b3IvQWNxdWlyZUZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7XG4gICAgcmVzb2x2ZUVuZ2luZVZlcnNpb24sXG4gICAgcmVzb2x2ZUdlbmVyYXRvclZlcnNpb24sXG4gICAgcmVzb2x2ZUxvY2FsRW5naW5lU291cmNlLFxuICAgIHJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZSxcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL0J1aWxkVGFza3MvUHVibGlzaGVkVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyByZXNvbHZlRm9ybUluZm8gfSBmcm9tIFwiLi4vLi4vLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL0NvbW1vbi9Bc3luY1V0aWxzXCI7XG5pbXBvcnQgeyBSZWFzb25PckVycm9yIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbnMvRXJyb3JVbnR5cGVkXCI7XG5pbXBvcnQgeyBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL0NoYWluYWJsZVZhbHVlUHJvZHVjZXJcIjtcbmltcG9ydCB7IE9ic2VydmUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvT2JzZXJ2ZVwiO1xuXG5pbXBvcnQgeyBnZXRSZXBvcnRHZW5lcmF0b3JFcnJvclRvUGFnZUJvZHlTY3JpcHQgfSBmcm9tIFwiLi9SZXBvcnRHZW5lcmF0b3JFcnJvclRvUGFnZUJvZHlcIjtcbmltcG9ydCB7IHJ1bkZvcm1Db21waWxhdGlvblZpYVdlYnBhY2tEZXZTZXJ2ZXIgfSBmcm9tIFwiLi9SdW5Gb3JtQ29tcGlsYXRpb25WaWFXZWJwYWNrRGV2U2VydmVyXCI7XG5pbXBvcnQgeyBXZWJwYWNrSHlicmlkRmlsZVN5c3RlbSB9IGZyb20gXCIuL1dlYnBhY2tJbk1lbW9yeVV0aWxzL1dlYnBhY2tIeWJyaWRGaWxlU3lzdGVtXCI7XG5cbmV4cG9ydCBjbGFzcyBCdWlsZEZvcm1EZXZTZXJ2ZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsRmFybUNvbmZpZzogc3RyaW5nW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBnZnY6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgZmFybURpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmFybUNvbmZpZ0FycmF5OiBGYXJtQ29uZmlnW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGFydFBhcmFsbGVsTGltaXQ6IExpbWl0O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUNoYWluPzogQ2hhaW5hYmxlVmFsdWVQcm9kdWNlcjxhbnk+O1xuICAgIHByaXZhdGUgd2VicGFja0RldlNlcnZlclN0YXJ0ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXM6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5pZ2h0bHk6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBidWlsZERlYnVnT25seTogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNraXBDb2RlUmVmb3JtYXR0aW5nOiBib29sZWFuO1xuICAgIHByaXZhdGUgd2VicGFja0h5YnJpZEZpbGVTeXN0ZW0/OiBXZWJwYWNrSHlicmlkRmlsZVN5c3RlbTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcG9ydDogbnVtYmVyLFxuICAgICAgICBhbGxGYXJtQ29uZmlnOiBzdHJpbmdbXSxcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nLFxuICAgICAgICBmYXJtQ29uZmlnQXJyYXk6IEZhcm1Db25maWdbXSxcbiAgICAgICAgdXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlczogYm9vbGVhbixcbiAgICAgICAgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIGJ1aWxkRGVidWdPbmx5OiBib29sZWFuLFxuICAgICAgICBza2lwQ29kZVJlZm9ybWF0dGluZzogYm9vbGVhbixcbiAgICAgICAgbmlnaHRseTogYm9vbGVhblxuICAgICkge1xuICAgICAgICB0aGlzLnBvcnQgPSBwb3J0O1xuICAgICAgICB0aGlzLmFsbEZhcm1Db25maWcgPSBhbGxGYXJtQ29uZmlnO1xuICAgICAgICB0aGlzLmdmdiA9IGdmdjtcbiAgICAgICAgdGhpcy5jYW5keU1vZHVsZXNEaXJlY3RvcnkgPSBjYW5keU1vZHVsZXNEaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMuZmFybUNvbmZpZ0FycmF5ID0gZmFybUNvbmZpZ0FycmF5O1xuICAgICAgICB0aGlzLnN0YXJ0UGFyYWxsZWxMaW1pdCA9IHBMaW1pdCgxKTtcbiAgICAgICAgdGhpcy51c2VHZW5lcmF0b3JGcm9tTG9jYWxTb3VyY2VzID0gdXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcztcbiAgICAgICAgdGhpcy5lbmdpbmVEaXJlY3RvcnkgPSBlbmdpbmVEaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMuYnVpbGREZWJ1Z09ubHkgPSBidWlsZERlYnVnT25seTtcbiAgICAgICAgdGhpcy5za2lwQ29kZVJlZm9ybWF0dGluZyA9IHNraXBDb2RlUmVmb3JtYXR0aW5nO1xuICAgICAgICB0aGlzLm5pZ2h0bHkgPSBuaWdodGx5O1xuICAgICAgICB0aGlzLmZhcm1EaXJlY3RvcnkgPSBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRQYXJhbGxlbExpbWl0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdlbmVyYXRlQ2hhaW4gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYWxsUG9zc2libGVGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBwYXRoLmpvaW4oaSwgXCJmb3Jtc1wiLCB0aGlzLmdmdikpO1xuICAgICAgICAgICAgbGV0IGZvcm1EaXJQYXRoID0gXCJcIjtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcHRoIG9mIGFsbFBvc3NpYmxlRmlsZVBhdGgpIHtcbiAgICAgICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwdGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoID0gcHRoO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZhcm1EaXJlY3RvcnkgPSBwYXRoLmpvaW4ocHRoLCBcIi4uXCIsIFwiLi5cIik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZvcm1EaXJQYXRoID09PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJmb3JtRGlyUGF0aCBub3QgZm91bmRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKHRoaXMuZmFybURpcmVjdG9yeSkpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYEZhcm1EaXJlY3RvcnkgPSAke3RoaXMuZmFybURpcmVjdG9yeX0gbm90IGV4aXN0YCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMud2VicGFja0h5YnJpZEZpbGVTeXN0ZW0gPSBuZXcgV2VicGFja0h5YnJpZEZpbGVTeXN0ZW0ocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm1cIikpO1xuXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlQ2hhaW4gPSBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm0uanNvblwiKSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGZvcm1Kc29uRmlsZSA9PlxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlRm9ybUluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtSnNvbkZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmlnaHRseVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgeCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ueCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IHJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZSh0aGlzLmVuZ2luZURpcmVjdG9yeSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiByZXNvbHZlTG9jYWxFbmdpbmVTb3VyY2UodGhpcy5lbmdpbmVEaXJlY3RvcnkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4LmdlbmVyYXRvclZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZ2VuZXJhdG9yVmVyc2lvbiBpcyBubyBkZWZpbmVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHguZW5naW5lVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJlbmdpbmVWZXJzaW9uIGlzIG5vIGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLngsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiBhd2FpdCByZXNvbHZlR2VuZXJhdG9yVmVyc2lvbih4LmdlbmVyYXRvclZlcnNpb24pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZVNvdXJjZTogYXdhaXQgcmVzb2x2ZUVuZ2luZVZlcnNpb24oeC5lbmdpbmVWZXJzaW9uKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGdlbmVyYXRvckZhY3RvcnkoZmkuZ2VuZXJhdG9yU291cmNlLCB0aGlzLmNhbmR5TW9kdWxlc0RpcmVjdG9yeSwgZmFsc2UsIHVuZGVmaW5lZCksXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIChmaSwgeSkgPT4gKHsgLi4uZmksIGdlbmVyYXRvcjogeSB9KSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4gZ2V0R2VuZXJhdG9yU291cmNlS2V5KGZpLmdlbmVyYXRvclNvdXJjZSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIuLi8uLi9jb250cm9scy8qKi9nZW5lcmF0b3IvKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzY2hlbWFzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3VnYXIvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjb250cm9scy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImF1dG9jYWxjLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaGVscGVycy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInZhbGlkYXRpb25zLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibG9jYWxpemF0aW9uLyoqLypcIlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGb3Jtc0RpcldpdGhIbFBhdGggPSB0aGlzLmZhcm1Db25maWdBcnJheS5maW5kKGkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aC5zdGFydHNXaXRoKGkuZmFybURpcmVjdG9yeSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoRm9ybXNEaXJXaXRoSGxQYXRoID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiRm9ybXNEaXJXaXRoSGxQYXRoID09PSB1bmRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBnZW5lcmF0ZUZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3Jtc0RpcldpdGhIbFBhdGguaGxGYXJtRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcENvZGVSZWZvcm1hdHRpbmc6IHRoaXMuc2tpcENvZGVSZWZvcm1hdHRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0hhc2g6IFwibG9jYWwtaGFzaFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53ZWJwYWNrSHlicmlkRmlsZVN5c3RlbVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybUVudHJ5UG9pbnRQYXRoID0gcGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCB0aGlzLmdmdiwgXCJmb3JtXCIsIFwid2ViLmpzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy53ZWJwYWNrSHlicmlkRmlsZVN5c3RlbT8ud3JpdGVCYXRjaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1FbnRyeVBvaW50UGF0aF06IGdldFJlcG9ydEdlbmVyYXRvckVycm9yVG9QYWdlQm9keVNjcmlwdCh0aGlzLmZvcm1hdEVycm9yKGUpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2VuZXJhdGVDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgICAgICBhd2FpdCBydW5Gb3JtQ29tcGlsYXRpb25WaWFXZWJwYWNrRGV2U2VydmVyKFxuICAgICAgICAgICAgICAgIHRoaXMuZ2Z2LFxuICAgICAgICAgICAgICAgIHRoaXMuZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5LCBcInJlc1wiKSxcbiAgICAgICAgICAgICAgICBcImxvY2FsLWhhc2hcIixcbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkRGVidWdPbmx5LFxuICAgICAgICAgICAgICAgIHRoaXMud2VicGFja0h5YnJpZEZpbGVTeXN0ZW0sXG4gICAgICAgICAgICAgICAgdGhpcy5wb3J0XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy53ZWJwYWNrRGV2U2VydmVyU3RhcnRlZCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRHZW5lcmF0ZWRGaWxlQXNTdHJlYW0oZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8Tm9kZUpTLlJlYWRhYmxlU3RyZWFtPiB7XG4gICAgICAgIHdoaWxlICghdGhpcy53ZWJwYWNrRGV2U2VydmVyU3RhcnRlZCkge1xuICAgICAgICAgICAgYXdhaXQgZGVsYXkoNTAwKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZmlsZU5hbWUgPSBcIlwiO1xuICAgICAgICBjb25zdCBhbGxQb3NzaWJsZUZpbGVQYXRoID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+IHBhdGguam9pbihpLCBcImZvcm1zXCIsIHRoaXMuZ2Z2LCBcImZvcm1cIiwgZmlsZW5hbWUpKTtcbiAgICAgICAgZm9yIChjb25zdCBwdGggb2YgYWxsUG9zc2libGVGaWxlUGF0aCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy53ZWJwYWNrSHlicmlkRmlsZVN5c3RlbT8uc3RhdFN5bmMocHRoKSkge1xuICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZSA9IHB0aDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChmaWxlTmFtZSA9PT0gXCJcIikge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJnZXRHZW5lcmF0ZWRGaWxlQXNTdHJlYW0gZmlsZW5hbWUgbm90IGZvdW5kXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMud2VicGFja0h5YnJpZEZpbGVTeXN0ZW0/LnJlYWRGaWxlKGZpbGVOYW1lLCBcInV0Zi04XCIsIChlcnJvciwgZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoUmVhZGFibGUuZnJvbShbZGF0YV0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEZpbGVBc1N0cmVhbShmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxOb2RlSlMuUmVhZGFibGVTdHJlYW0+IHtcbiAgICAgICAgd2hpbGUgKCF0aGlzLndlYnBhY2tEZXZTZXJ2ZXJTdGFydGVkKSB7XG4gICAgICAgICAgICBhd2FpdCBkZWxheSg1MDApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYGh0dHBzOi8vbG9jYWxob3N0OiR7dGhpcy5wb3J0fS8ke2ZpbGVuYW1lfWAsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgICAgIGFnZW50OiBuZXcgQWdlbnQoeyByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlIH0pLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPSAyMDApIHtcbiAgICAgICAgICAgIGNvbnN0IHRleHRSZXNwb25zZSA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0ZXh0UmVzcG9uc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNwb25zZS5ib2R5O1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0RXJyb3IoZTogUmVhc29uT3JFcnJvcik6IHN0cmluZyB7XG4gICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtlfVxcbiR7ZS5zdGFja31gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHtlfWA7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBRixPQUFBO0FBRUEsSUFBQUcsVUFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksT0FBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUssUUFBQSxHQUFBTCxPQUFBO0FBRUEsSUFBQU0sYUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8scUJBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLHNCQUFBLEdBQUFSLE9BQUE7QUFNQSxJQUFBUyxnQkFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsV0FBQSxHQUFBVixPQUFBO0FBR0EsSUFBQVcsUUFBQSxHQUFBWCxPQUFBO0FBRUEsSUFBQVksK0JBQUEsR0FBQVosT0FBQTtBQUNBLElBQUFhLHNDQUFBLEdBQUFiLE9BQUE7QUFDQSxJQUFBYyx3QkFBQSxHQUFBZCxPQUFBO0FBRU8sTUFBTWUsa0JBQWtCLENBQUM7RUFrQnJCQyxXQUFXQSxDQUNkQyxJQUFZLEVBQ1pDLGFB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
@@ -1,20 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.ClientJsDevServer = void 0;
9
-
10
8
  var _https = require("https");
11
-
12
9
  var _nodeFetch = _interopRequireDefault(require("node-fetch"));
13
-
14
10
  var _pLimit = _interopRequireDefault(require("p-limit"));
15
-
16
11
  var _WebpackDevServerWorkerFactory = require("./WebpackDevServerWorker/WebpackDevServerWorkerFactory");
17
-
18
12
  class ClientJsDevServer {
19
13
  constructor(port, engineDirectory, buildDebugOnly) {
20
14
  this.port = void 0;
@@ -27,13 +21,11 @@ class ClientJsDevServer {
27
21
  this.startParallelLimit = (0, _pLimit.default)(1);
28
22
  this.buildDebugOnly = buildDebugOnly;
29
23
  }
30
-
31
24
  async start() {
32
25
  return this.startParallelLimit(async () => {
33
26
  if (this.started) {
34
27
  return;
35
28
  }
36
-
37
29
  await (0, _WebpackDevServerWorkerFactory.createWebPackDevServerWorker)(this.engineDirectory, "clientjs.webpack.config.js", this.port, {
38
30
  resourcesPath: "dist",
39
31
  outputFilename: "client",
@@ -44,12 +36,10 @@ class ClientJsDevServer {
44
36
  this.started = true;
45
37
  });
46
38
  }
47
-
48
39
  async getClientJsContentAsStream(minified) {
49
40
  const fileName = minified ? "client.min.js" : "client.js";
50
41
  return this.getFileStream(`static/public/scripts/${fileName}`);
51
42
  }
52
-
53
43
  async getFileStream(filePathUrl) {
54
44
  return (await (0, _nodeFetch.default)(`https://localhost:${this.port}/${filePathUrl}`, {
55
45
  method: "GET",
@@ -58,8 +48,6 @@ class ClientJsDevServer {
58
48
  })
59
49
  })).body;
60
50
  }
61
-
62
51
  }
63
-
64
52
  exports.ClientJsDevServer = ClientJsDevServer;
65
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9EZXZTZXJ2ZXJzL0NsaWVudEpzRGV2U2VydmVyLnRzIl0sIm5hbWVzIjpbIkNsaWVudEpzRGV2U2VydmVyIiwiY29uc3RydWN0b3IiLCJwb3J0IiwiZW5naW5lRGlyZWN0b3J5IiwiYnVpbGREZWJ1Z09ubHkiLCJzdGFydFBhcmFsbGVsTGltaXQiLCJzdGFydGVkIiwic3RhcnQiLCJyZXNvdXJjZXNQYXRoIiwib3V0cHV0RmlsZW5hbWUiLCJkZXZlbG9wbWVudCIsInByb2R1Y3Rpb24iLCJzb3VyY2VNYXBQcmVmaXgiLCJnZXRDbGllbnRKc0NvbnRlbnRBc1N0cmVhbSIsIm1pbmlmaWVkIiwiZmlsZU5hbWUiLCJnZXRGaWxlU3RyZWFtIiwiZmlsZVBhdGhVcmwiLCJtZXRob2QiLCJhZ2VudCIsIkFnZW50IiwicmVqZWN0VW5hdXRob3JpemVkIiwiYm9keSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FBQ0E7O0FBRUE7O0FBRU8sTUFBTUEsaUJBQU4sQ0FBd0I7QUFPcEJDLEVBQUFBLFdBQVcsQ0FBQ0MsSUFBRCxFQUFlQyxlQUFmLEVBQXdDQyxjQUF4QyxFQUFpRTtBQUFBLFNBTmxFRixJQU1rRTtBQUFBLFNBTGxFQyxlQUtrRTtBQUFBLFNBSmxFRSxrQkFJa0U7QUFBQSxTQUgzRUMsT0FHMkUsR0FIakUsS0FHaUU7QUFBQSxTQUZsRUYsY0FFa0U7QUFDL0UsU0FBS0YsSUFBTCxHQUFZQSxJQUFaO0FBQ0EsU0FBS0MsZUFBTCxHQUF1QkEsZUFBdkI7QUFDQSxTQUFLRSxrQkFBTCxHQUEwQixxQkFBTyxDQUFQLENBQTFCO0FBQ0EsU0FBS0QsY0FBTCxHQUFzQkEsY0FBdEI7QUFDSDs7QUFFaUIsUUFBTEcsS0FBSyxHQUFrQjtBQUNoQyxXQUFPLEtBQUtGLGtCQUFMLENBQXdCLFlBQVk7QUFDdkMsVUFBSSxLQUFLQyxPQUFULEVBQWtCO0FBQ2Q7QUFDSDs7QUFDRCxZQUFNLGlFQUE2QixLQUFLSCxlQUFsQyxFQUFtRCw0QkFBbkQsRUFBaUYsS0FBS0QsSUFBdEYsRUFBNEY7QUFDOUZNLFFBQUFBLGFBQWEsRUFBRSxNQUQrRTtBQUU5RkMsUUFBQUEsY0FBYyxFQUFFLFFBRjhFO0FBRzlGQyxRQUFBQSxXQUFXLEVBQUUsTUFIaUY7QUFJOUZDLFFBQUFBLFVBQVUsRUFBRSxLQUFLUCxjQUFMLEdBQXNCLE9BQXRCLEdBQWdDLE1BSmtEO0FBSzlGUSxRQUFBQSxlQUFlLEVBQUU7QUFMNkUsT0FBNUYsQ0FBTjtBQU9BLFdBQUtOLE9BQUwsR0FBZSxJQUFmO0FBQ0gsS0FaTSxDQUFQO0FBYUg7O0FBRXNDLFFBQTFCTywwQkFBMEIsQ0FBQ0MsUUFBRCxFQUFvRDtBQUN2RixVQUFNQyxRQUFRLEdBQUdELFFBQVEsR0FBRyxlQUFILEdBQXFCLFdBQTlDO0FBQ0EsV0FBTyxLQUFLRSxhQUFMLENBQW9CLHlCQUF3QkQsUUFBUyxFQUFyRCxDQUFQO0FBQ0g7O0FBRXlCLFFBQWJDLGFBQWEsQ0FBQ0MsV0FBRCxFQUFzRDtBQUM1RSxXQUFPLENBQ0gsTUFBTSx3QkFBTyxxQkFBb0IsS0FBS2YsSUFBSyxJQUFHZSxXQUFZLEVBQXBELEVBQXVEO0FBQ3pEQyxNQUFBQSxNQUFNLEVBQUUsS0FEaUQ7QUFFekRDLE1BQUFBLEtBQUssRUFBRSxJQUFJQyxZQUFKLENBQVU7QUFBRUMsUUFBQUEsa0JBQWtCLEVBQUU7QUFBdEIsT0FBVjtBQUZrRCxLQUF2RCxDQURILEVBS0xDLElBTEY7QUFNSDs7QUExQzBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWdlbnQgfSBmcm9tIFwiaHR0cHNcIjtcblxuaW1wb3J0IGZldGNoIGZyb20gXCJub2RlLWZldGNoXCI7XG5pbXBvcnQgcExpbWl0LCB7IExpbWl0IH0gZnJvbSBcInAtbGltaXRcIjtcblxuaW1wb3J0IHsgY3JlYXRlV2ViUGFja0RldlNlcnZlcldvcmtlciB9IGZyb20gXCIuL1dlYnBhY2tEZXZTZXJ2ZXJXb3JrZXIvV2VicGFja0RldlNlcnZlcldvcmtlckZhY3RvcnlcIjtcblxuZXhwb3J0IGNsYXNzIENsaWVudEpzRGV2U2VydmVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvcnQ6IG51bWJlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVuZ2luZURpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RhcnRQYXJhbGxlbExpbWl0OiBMaW1pdDtcbiAgICBwcml2YXRlIHN0YXJ0ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJ1aWxkRGVidWdPbmx5OiBib29sZWFuO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHBvcnQ6IG51bWJlciwgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsIGJ1aWxkRGVidWdPbmx5OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMucG9ydCA9IHBvcnQ7XG4gICAgICAgIHRoaXMuZW5naW5lRGlyZWN0b3J5ID0gZW5naW5lRGlyZWN0b3J5O1xuICAgICAgICB0aGlzLnN0YXJ0UGFyYWxsZWxMaW1pdCA9IHBMaW1pdCgxKTtcbiAgICAgICAgdGhpcy5idWlsZERlYnVnT25seSA9IGJ1aWxkRGVidWdPbmx5O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRQYXJhbGxlbExpbWl0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXJ0ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBjcmVhdGVXZWJQYWNrRGV2U2VydmVyV29ya2VyKHRoaXMuZW5naW5lRGlyZWN0b3J5LCBcImNsaWVudGpzLndlYnBhY2suY29uZmlnLmpzXCIsIHRoaXMucG9ydCwge1xuICAgICAgICAgICAgICAgIHJlc291cmNlc1BhdGg6IFwiZGlzdFwiLFxuICAgICAgICAgICAgICAgIG91dHB1dEZpbGVuYW1lOiBcImNsaWVudFwiLFxuICAgICAgICAgICAgICAgIGRldmVsb3BtZW50OiBcInRydWVcIixcbiAgICAgICAgICAgICAgICBwcm9kdWN0aW9uOiB0aGlzLmJ1aWxkRGVidWdPbmx5ID8gXCJmYWxzZVwiIDogXCJ0cnVlXCIsXG4gICAgICAgICAgICAgICAgc291cmNlTWFwUHJlZml4OiBcInN0YXRpYy9cIixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5zdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldENsaWVudEpzQ29udGVudEFzU3RyZWFtKG1pbmlmaWVkOiBib29sZWFuKTogUHJvbWlzZTxOb2RlSlMuUmVhZGFibGVTdHJlYW0+IHtcbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBtaW5pZmllZCA/IFwiY2xpZW50Lm1pbi5qc1wiIDogXCJjbGllbnQuanNcIjtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RmlsZVN0cmVhbShgc3RhdGljL3B1YmxpYy9zY3JpcHRzLyR7ZmlsZU5hbWV9YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEZpbGVTdHJlYW0oZmlsZVBhdGhVcmw6IHN0cmluZyk6IFByb21pc2U8Tm9kZUpTLlJlYWRhYmxlU3RyZWFtPiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBhd2FpdCBmZXRjaChgaHR0cHM6Ly9sb2NhbGhvc3Q6JHt0aGlzLnBvcnR9LyR7ZmlsZVBhdGhVcmx9YCwge1xuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgICAgICAgICBhZ2VudDogbmV3IEFnZW50KHsgcmVqZWN0VW5hdXRob3JpemVkOiBmYWxzZSB9KSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICkuYm9keTtcbiAgICB9XG59XG4iXX0=
53
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaHR0cHMiLCJyZXF1aXJlIiwiX25vZGVGZXRjaCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcExpbWl0IiwiX1dlYnBhY2tEZXZTZXJ2ZXJXb3JrZXJGYWN0b3J5IiwiQ2xpZW50SnNEZXZTZXJ2ZXIiLCJjb25zdHJ1Y3RvciIsInBvcnQiLCJlbmdpbmVEaXJlY3RvcnkiLCJidWlsZERlYnVnT25seSIsInN0YXJ0UGFyYWxsZWxMaW1pdCIsInN0YXJ0ZWQiLCJwTGltaXQiLCJzdGFydCIsImNyZWF0ZVdlYlBhY2tEZXZTZXJ2ZXJXb3JrZXIiLCJyZXNvdXJjZXNQYXRoIiwib3V0cHV0RmlsZW5hbWUiLCJkZXZlbG9wbWVudCIsInByb2R1Y3Rpb24iLCJzb3VyY2VNYXBQcmVmaXgiLCJnZXRDbGllbnRKc0NvbnRlbnRBc1N0cmVhbSIsIm1pbmlmaWVkIiwiZmlsZU5hbWUiLCJnZXRGaWxlU3RyZWFtIiwiZmlsZVBhdGhVcmwiLCJmZXRjaCIsIm1ldGhvZCIsImFnZW50IiwiQWdlbnQiLCJyZWplY3RVbmF1dGhvcml6ZWQiLCJib2R5IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9EZXZTZXJ2ZXJzL0NsaWVudEpzRGV2U2VydmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFnZW50IH0gZnJvbSBcImh0dHBzXCI7XG5cbmltcG9ydCBmZXRjaCBmcm9tIFwibm9kZS1mZXRjaFwiO1xuaW1wb3J0IHBMaW1pdCwgeyBMaW1pdCB9IGZyb20gXCJwLWxpbWl0XCI7XG5cbmltcG9ydCB7IGNyZWF0ZVdlYlBhY2tEZXZTZXJ2ZXJXb3JrZXIgfSBmcm9tIFwiLi9XZWJwYWNrRGV2U2VydmVyV29ya2VyL1dlYnBhY2tEZXZTZXJ2ZXJXb3JrZXJGYWN0b3J5XCI7XG5cbmV4cG9ydCBjbGFzcyBDbGllbnRKc0RldlNlcnZlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwb3J0OiBudW1iZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0YXJ0UGFyYWxsZWxMaW1pdDogTGltaXQ7XG4gICAgcHJpdmF0ZSBzdGFydGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZWFkb25seSBidWlsZERlYnVnT25seTogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwb3J0OiBudW1iZXIsIGVuZ2luZURpcmVjdG9yeTogc3RyaW5nLCBidWlsZERlYnVnT25seTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnBvcnQgPSBwb3J0O1xuICAgICAgICB0aGlzLmVuZ2luZURpcmVjdG9yeSA9IGVuZ2luZURpcmVjdG9yeTtcbiAgICAgICAgdGhpcy5zdGFydFBhcmFsbGVsTGltaXQgPSBwTGltaXQoMSk7XG4gICAgICAgIHRoaXMuYnVpbGREZWJ1Z09ubHkgPSBidWlsZERlYnVnT25seTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXJ0UGFyYWxsZWxMaW1pdChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5zdGFydGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgY3JlYXRlV2ViUGFja0RldlNlcnZlcldvcmtlcih0aGlzLmVuZ2luZURpcmVjdG9yeSwgXCJjbGllbnRqcy53ZWJwYWNrLmNvbmZpZy5qc1wiLCB0aGlzLnBvcnQsIHtcbiAgICAgICAgICAgICAgICByZXNvdXJjZXNQYXRoOiBcImRpc3RcIixcbiAgICAgICAgICAgICAgICBvdXRwdXRGaWxlbmFtZTogXCJjbGllbnRcIixcbiAgICAgICAgICAgICAgICBkZXZlbG9wbWVudDogXCJ0cnVlXCIsXG4gICAgICAgICAgICAgICAgcHJvZHVjdGlvbjogdGhpcy5idWlsZERlYnVnT25seSA/IFwiZmFsc2VcIiA6IFwidHJ1ZVwiLFxuICAgICAgICAgICAgICAgIHNvdXJjZU1hcFByZWZpeDogXCJzdGF0aWMvXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRlZCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRDbGllbnRKc0NvbnRlbnRBc1N0cmVhbShtaW5pZmllZDogYm9vbGVhbik6IFByb21pc2U8Tm9kZUpTLlJlYWRhYmxlU3RyZWFtPiB7XG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gbWluaWZpZWQgPyBcImNsaWVudC5taW4uanNcIiA6IFwiY2xpZW50LmpzXCI7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEZpbGVTdHJlYW0oYHN0YXRpYy9wdWJsaWMvc2NyaXB0cy8ke2ZpbGVOYW1lfWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRGaWxlU3RyZWFtKGZpbGVQYXRoVXJsOiBzdHJpbmcpOiBQcm9taXNlPE5vZGVKUy5SZWFkYWJsZVN0cmVhbT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgYXdhaXQgZmV0Y2goYGh0dHBzOi8vbG9jYWxob3N0OiR7dGhpcy5wb3J0fS8ke2ZpbGVQYXRoVXJsfWAsIHtcbiAgICAgICAgICAgICAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgICAgICAgICAgICAgYWdlbnQ6IG5ldyBBZ2VudCh7IHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2UgfSksXG4gICAgICAgICAgICB9KVxuICAgICAgICApLmJvZHk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsVUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUksOEJBQUEsR0FBQUosT0FBQTtBQUVPLE1BQU1LLGlCQUFpQixDQUFDO0VBT3BCQyxXQUFXQSxDQUFDQyxJQUFZLEVBQUVDLGVBQXVCLEVBQUVDLGNBQXVCLEVBQUU7SUFBQSxLQU5sRUYsSUFBSTtJQUFBLEtBQ0pDLGVBQWU7SUFBQSxLQUNmRSxrQkFBa0I7SUFBQSxLQUMzQkMsT0FBTyxHQUFHLEtBQUs7SUFBQSxLQUNORixjQUFjO0lBRzNCLElBQUksQ0FBQ0YsSUFBSSxHQUFHQSxJQUFJO0lBQ2hCLElBQUksQ0FBQ0MsZUFBZSxHQUFHQSxlQUFlO0lBQ3RDLElBQUksQ0FBQ0Usa0JBQWtCLEdBQUcsSUFBQUUsZUFBTSxFQUFDLENBQUMsQ0FBQztJQUNuQyxJQUFJLENBQUNILGNBQWMsR0FBR0EsY0FBYztFQUN4QztFQUVBLE1BQWFJLEtBQUtBLENBQUEsRUFBa0I7SUFDaEMsT0FBTyxJQUFJLENBQUNILGtCQUFrQixDQUFDLFlBQVk7TUFDdkMsSUFBSSxJQUFJLENBQUNDLE9BQU8sRUFBRTtRQUNkO01BQ0o7TUFDQSxNQUFNLElBQUFHLDJEQUE0QixFQUFDLElBQUksQ0FBQ04sZUFBZSxFQUFFLDRCQUE0QixFQUFFLElBQUksQ0FBQ0QsSUFBSSxFQUFFO1FBQzlGUSxhQUFhLEVBQUUsTUFBTTtRQUNyQkMsY0FBYyxFQUFFLFFBQVE7UUFDeEJDLFdBQVcsRUFBRSxNQUFNO1FBQ25CQyxVQUFVLEVBQUUsSUFBSSxDQUFDVCxjQUFjLEdBQUcsT0FBTyxHQUFHLE1BQU07UUFDbERVLGVBQWUsRUFBRTtNQUNyQixDQUFDLENBQUM7TUFDRixJQUFJLENBQUNSLE9BQU8sR0FBRyxJQUFJO0lBQ3ZCLENBQUMsQ0FBQztFQUNOO0VBRUEsTUFBYVMsMEJBQTBCQSxDQUFDQyxRQUFpQixFQUFrQztJQUN2RixNQUFNQyxRQUFRLEdBQUdELFFBQVEsR0FBRyxlQUFlLEdBQUcsV0FBVztJQUN6RCxPQUFPLElBQUksQ0FBQ0UsYUFBYSxDQUFFLHlCQUF3QkQsUUFBUyxFQUFDLENBQUM7RUFDbEU7RUFFQSxNQUFhQyxhQUFhQSxDQUFDQyxXQUFtQixFQUFrQztJQUM1RSxPQUFPLENBQ0gsTUFBTSxJQUFBQyxrQkFBSyxFQUFFLHFCQUFvQixJQUFJLENBQUNsQixJQUFLLElBQUdpQixXQUFZLEVBQUMsRUFBRTtNQUN6REUsTUFBTSxFQUFFLEtBQUs7TUFDYkMsS0FBSyxFQUFFLElBQUlDLFlBQUssQ0FBQztRQUFFQyxrQkFBa0IsRUFBRTtNQUFNLENBQUM7SUFDbEQsQ0FBQyxDQUFDLEVBQ0pDLElBQUk7RUFDVjtBQUNKO0FBQUNDLE9BQUEsQ0FBQTFCLGlCQUFBLEdBQUFBLGlCQUFBIn0=