@kontur.candy/tools 2.153.0 → 2.155.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 +6 -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 +18 -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 +22 -71
  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 +13 -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,50 +1,34 @@
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.CacheAssetsPlugin = exports.BuildCache = void 0;
9
-
10
8
  var path = _interopRequireWildcard(require("path"));
11
-
12
9
  var _fsExtra = require("fs-extra");
13
-
14
10
  var _md = _interopRequireDefault(require("md5"));
15
-
16
11
  var _pLimit = _interopRequireDefault(require("p-limit"));
17
-
18
12
  var _nodeFetch = _interopRequireDefault(require("node-fetch"));
19
-
20
13
  var _BuildCacheMode = require("../CLICommands/BuildForms/BuildCacheMode");
21
-
22
14
  var _TypingUtils = require("../../../Common/TypingUtils");
23
-
24
15
  var _StaticLogger = require("../Commons/Logging/StaticLogger");
25
-
26
16
  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); }
27
-
28
17
  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; }
29
-
30
18
  const singleLimit = (0, _pLimit.default)(1);
31
-
32
19
  class CacheAssetsPlugin {
33
20
  constructor(options) {
34
21
  this.options = void 0;
35
22
  this.options = options;
36
23
  }
37
-
38
24
  async apply(compiler) {
39
25
  compiler.hooks.emit.tapPromise("CacheAssetsPlugin", compilation => singleLimit(async () => {
40
- const cacheItems = {}; // tslint:disable-next-line no-unsafe-any
41
-
26
+ const cacheItems = {};
27
+ // tslint:disable-next-line no-unsafe-any
42
28
  for (const assetName of Object.keys(compilation.assets)) {
43
29
  var _compilation$assets$a, _compilation$assets$a2;
44
-
45
30
  // tslint:disable-next-line no-unsafe-any
46
31
  const source = (_compilation$assets$a = (_compilation$assets$a2 = compilation.assets[assetName]) === null || _compilation$assets$a2 === void 0 ? void 0 : _compilation$assets$a2.source()) !== null && _compilation$assets$a !== void 0 ? _compilation$assets$a : (0, _TypingUtils.reject)();
47
-
48
32
  if (source instanceof Buffer) {
49
33
  cacheItems[assetName] = {
50
34
  type: "Buffer",
@@ -54,26 +38,23 @@ class CacheAssetsPlugin {
54
38
  cacheItems[assetName] = source;
55
39
  }
56
40
  }
57
-
58
41
  await this.updateFile(cacheItems);
59
42
  }));
60
43
  }
61
-
62
44
  async updateFile(cacheItems) {
63
45
  const filePath = path.resolve(this.options.cacheFile);
64
- let content = (await (0, _fsExtra.pathExists)(filePath)) ? // tslint:disable-next-line no-unsafe-any
46
+ let content = (await (0, _fsExtra.pathExists)(filePath)) ?
47
+ // tslint:disable-next-line no-unsafe-any
65
48
  JSON.parse(await (0, _fsExtra.readFile)(filePath, "utf-8")) : {};
66
- content = { ...content,
49
+ content = {
50
+ ...content,
67
51
  ...cacheItems
68
52
  };
69
53
  await (0, _fsExtra.ensureDir)(path.dirname(filePath));
70
54
  await (0, _fsExtra.writeFile)(filePath, JSON.stringify(content), "utf-8");
71
55
  }
72
-
73
56
  }
74
-
75
57
  exports.CacheAssetsPlugin = CacheAssetsPlugin;
76
-
77
58
  class BuildCache {
78
59
  constructor(farmDirectory, mode) {
79
60
  this.farmDirectory = void 0;
@@ -83,22 +64,17 @@ class BuildCache {
83
64
  this.mode = mode;
84
65
  this.logger = (0, _StaticLogger.getLogger)().withPrefix("BUILD_CACHE");
85
66
  }
86
-
87
67
  async extract(generatorSource, gfv, depsHash, resourcesDirectory) {
88
68
  if (generatorSource.type === "GeneratorSources") {
89
69
  throw new Error("Local generator does not supports caching");
90
- } // tslint:disable-next-line no-unsafe-any
91
-
92
-
70
+ }
71
+ // tslint:disable-next-line no-unsafe-any
93
72
  const content = JSON.parse(await (0, _fsExtra.readFile)(this.getCacheFilePath(gfv, generatorSource.version, depsHash), "utf-8"));
94
-
95
73
  for (const assetPath of Object.keys(content)) {
96
74
  var _content$assetPath;
97
-
98
75
  const contentElement = (_content$assetPath = content[assetPath]) !== null && _content$assetPath !== void 0 ? _content$assetPath : (0, _TypingUtils.reject)();
99
76
  const filePath = path.join(resourcesDirectory, assetPath);
100
77
  await (0, _fsExtra.ensureDir)(path.dirname(filePath));
101
-
102
78
  if (typeof contentElement === "string") {
103
79
  await (0, _fsExtra.writeFile)(filePath, contentElement, "utf8");
104
80
  } else {
@@ -106,58 +82,48 @@ class BuildCache {
106
82
  }
107
83
  }
108
84
  }
109
-
110
85
  async exists(generatorSource, gfv, depsHash) {
111
86
  if (generatorSource.type === "GeneratorSources") {
112
87
  throw new Error("Local generator does not supports caching");
113
88
  }
114
-
115
89
  if (this.mode === _BuildCacheMode.BuildCacheMode.Disabled || this.mode === _BuildCacheMode.BuildCacheMode.ForceUpdate) {
116
90
  return false;
117
91
  }
118
-
119
92
  const cachedFilePath = await this.existsFileCacheOrDownload(gfv, generatorSource.version, depsHash);
120
93
  return cachedFilePath != undefined;
121
94
  }
122
-
123
95
  async setContent(generatorSource, gfv, depsHash, resourcesDirectory, fileName, fileContent) {
124
96
  const cacheFilePath = this.getCacheFilePath(gfv, generatorSource, depsHash);
125
-
126
97
  if (!(await (0, _fsExtra.pathExists)(cacheFilePath))) {
127
98
  return;
128
- } // tslint:disable-next-line no-unsafe-any
129
-
130
-
99
+ }
100
+ // tslint:disable-next-line no-unsafe-any
131
101
  let content = JSON.parse(await (0, _fsExtra.readFile)(cacheFilePath, "utf-8"));
132
- content = { ...content,
102
+ content = {
103
+ ...content,
133
104
  [fileName]: fileContent
134
105
  };
135
106
  await (0, _fsExtra.ensureDir)(path.dirname(cacheFilePath));
136
107
  await (0, _fsExtra.writeFile)(cacheFilePath, JSON.stringify(content), "utf-8");
137
108
  }
138
-
139
109
  async createWebpackPlugin(options) {
140
110
  if (options.mode === _BuildCacheMode.BuildCacheMode.Disabled || options.mode === _BuildCacheMode.BuildCacheMode.ReadOnly) {
141
111
  return undefined;
142
112
  }
143
-
144
113
  const cachedFilePath = this.getCacheFilePath(options.gfv, options.generatorVersion, options.depsHash);
145
114
  return new CacheAssetsPlugin({
146
115
  cacheFile: cachedFilePath
147
116
  });
148
117
  }
149
-
150
118
  getCacheFilePath(gfv, generatorVersion, depsHash) {
151
119
  const fileName = `${(0, _md.default)(gfv)}-${(0, _md.default)(generatorVersion)}-${depsHash}.zip`;
152
120
  return path.join(this.farmDirectory, ".build-cache", "compile", fileName);
153
121
  }
154
-
155
122
  async existsFileCacheOrDownload(gfv, generatorVersion, depsHash) {
156
123
  const filePath = this.getCacheFilePath(gfv, generatorVersion, depsHash);
157
124
  this.logger.log(`Start search file locally: ${filePath}`);
158
125
  const filename = path.basename(filePath);
159
126
  await (0, _fsExtra.ensureDir)(path.dirname(filePath));
160
-
161
127
  if (await (0, _fsExtra.pathExists)(filePath)) {
162
128
  this.logger.log("Found file in local directory");
163
129
  return filePath;
@@ -167,7 +133,6 @@ class BuildCache {
167
133
  this.logger.log(`Looking for cache in drive storage: ${filename}`);
168
134
  const response = await (0, _nodeFetch.default)(`https://api.kontur.ru/drive/v1/public/${filename}`);
169
135
  this.logger.log(`Drive response status code: ${response.status.toString()}`);
170
-
171
136
  if (response.status === 200) {
172
137
  await (0, _fsExtra.writeFile)(filePath, await response.buffer(), "utf-8");
173
138
  return filePath;
@@ -177,7 +142,6 @@ class BuildCache {
177
142
  } else {
178
143
  this.logger.error(`Drive storage sent ${response.status} status code, I don't process it in any way`);
179
144
  }
180
-
181
145
  return undefined;
182
146
  }
183
147
  } catch (e) {
@@ -188,8 +152,6 @@ class BuildCache {
188
152
  }
189
153
  }
190
154
  }
191
-
192
155
  }
193
-
194
156
  exports.BuildCache = BuildCache;
195
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9Gb3JtV2VicGFja0NvbmZpZ3VyYXRpb24vQ2FjaGVBc3NldHNQbHVnaW4udHMiXSwibmFtZXMiOlsic2luZ2xlTGltaXQiLCJDYWNoZUFzc2V0c1BsdWdpbiIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImFwcGx5IiwiY29tcGlsZXIiLCJob29rcyIsImVtaXQiLCJ0YXBQcm9taXNlIiwiY29tcGlsYXRpb24iLCJjYWNoZUl0ZW1zIiwiYXNzZXROYW1lIiwiT2JqZWN0Iiwia2V5cyIsImFzc2V0cyIsInNvdXJjZSIsIkJ1ZmZlciIsInR5cGUiLCJiYXNlNjRjb250ZW50IiwidG9TdHJpbmciLCJ1cGRhdGVGaWxlIiwiZmlsZVBhdGgiLCJwYXRoIiwicmVzb2x2ZSIsImNhY2hlRmlsZSIsImNvbnRlbnQiLCJKU09OIiwicGFyc2UiLCJkaXJuYW1lIiwic3RyaW5naWZ5IiwiQnVpbGRDYWNoZSIsImZhcm1EaXJlY3RvcnkiLCJtb2RlIiwibG9nZ2VyIiwid2l0aFByZWZpeCIsImV4dHJhY3QiLCJnZW5lcmF0b3JTb3VyY2UiLCJnZnYiLCJkZXBzSGFzaCIsInJlc291cmNlc0RpcmVjdG9yeSIsIkVycm9yIiwiZ2V0Q2FjaGVGaWxlUGF0aCIsInZlcnNpb24iLCJhc3NldFBhdGgiLCJjb250ZW50RWxlbWVudCIsImpvaW4iLCJmcm9tIiwiZXhpc3RzIiwiQnVpbGRDYWNoZU1vZGUiLCJEaXNhYmxlZCIsIkZvcmNlVXBkYXRlIiwiY2FjaGVkRmlsZVBhdGgiLCJleGlzdHNGaWxlQ2FjaGVPckRvd25sb2FkIiwidW5kZWZpbmVkIiwic2V0Q29udGVudCIsImZpbGVOYW1lIiwiZmlsZUNvbnRlbnQiLCJjYWNoZUZpbGVQYXRoIiwiY3JlYXRlV2VicGFja1BsdWdpbiIsIlJlYWRPbmx5IiwiZ2VuZXJhdG9yVmVyc2lvbiIsImxvZyIsImZpbGVuYW1lIiwiYmFzZW5hbWUiLCJyZXNwb25zZSIsInN0YXR1cyIsImJ1ZmZlciIsImVycm9y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Q0EsY0FBTUUsUUFBUSxHQUFHLE1BQU0sd0JBQU8seUNBQXdDRixRQUFTLEVBQXhELENBQXZCO0FBQ0EsYUFBSzdCLE1BQUwsQ0FBWTRCLEdBQVosQ0FBaUIsK0JBQThCRyxRQUFRLENBQUNDLE1BQVQsQ0FBZ0I5QyxRQUFoQixFQUEyQixFQUExRTs7QUFDQSxZQUFJNkMsUUFBUSxDQUFDQyxNQUFULEtBQW9CLEdBQXhCLEVBQTZCO0FBQ3pCLGdCQUFNLHdCQUFVNUMsUUFBVixFQUFvQixNQUFNMkMsUUFBUSxDQUFDRSxNQUFULEVBQTFCLEVBQTZDLE9BQTdDLENBQU47QUFDQSxpQkFBTzdDLFFBQVA7QUFDSCxTQUhELE1BR087QUFDSCxjQUFJMkMsUUFBUSxDQUFDQyxNQUFULEtBQW9CLEdBQXhCLEVBQTZCO0FBQ3pCLGlCQUFLaEMsTUFBTCxDQUFZa0MsS0FBWixDQUNLLDBDQUF5Q0wsUUFBUyxVQUFTekIsR0FBSSx1QkFBc0J1QixnQkFBaUIsdUJBQXNCdEIsUUFBUyxFQUQxSTtBQUdILFdBSkQsTUFJTztBQUNILGlCQUFLTCxNQUFMLENBQVlrQyxLQUFaLENBQ0ssc0JBQXFCSCxRQUFRLENBQUNDLE1BQU8sNkNBRDFDO0FBR0g7O0FBQ0QsaUJBQU9aLFNBQVA7QUFDSDtBQUNKLE9BcEJELENBb0JFLE9BQU9lLENBQVAsRUFBVTtBQUNSLGFBQUtuQyxNQUFMLENBQVlrQyxLQUFaLENBQWtCLHVDQUFsQjtBQUNBLGFBQUtsQyxNQUFMLENBQVlrQyxLQUFaLENBQWtCLHlDQUFsQjtBQUNBLGFBQUtsQyxNQUFMLENBQVlrQyxLQUFaLENBQWtCQyxDQUFsQjtBQUNBLGVBQU9mLFNBQVA7QUFDSDtBQUNKO0FBQ0o7O0FBNUhtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgZW5zdXJlRGlyLCBwYXRoRXhpc3RzLCByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgbWQ1IGZyb20gXCJtZDVcIjtcbmltcG9ydCBwTGltaXQgZnJvbSBcInAtbGltaXRcIjtcbmltcG9ydCB3ZWJwYWNrIGZyb20gXCJ3ZWJwYWNrXCI7XG5pbXBvcnQgZmV0Y2ggZnJvbSBcIm5vZGUtZmV0Y2hcIjtcblxuaW1wb3J0IHsgR2VuZXJhdG9yU291cmNlIH0gZnJvbSBcIi4uL0J1aWxkVGFza3MvR2VuZXJhdG9yL0FjcXVpcmVGb3JtR2VuZXJhdG9yXCI7XG5pbXBvcnQgeyBCdWlsZENhY2hlTW9kZSB9IGZyb20gXCIuLi9DTElDb21tYW5kcy9CdWlsZEZvcm1zL0J1aWxkQ2FjaGVNb2RlXCI7XG5pbXBvcnQgeyByZWplY3QgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9uL1R5cGluZ1V0aWxzXCI7XG5pbXBvcnQgeyBJTG9nZ2VyIH0gZnJvbSBcIi4uL0NvbW1vbnMvTG9nZ2luZy9JTG9nZ2VyXCI7XG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiLi4vQ29tbW9ucy9Mb2dnaW5nL1N0YXRpY0xvZ2dlclwiO1xuXG5pbnRlcmZhY2UgQ2FjaGVBc3NldHNQbHVnaW5PcHRpb25zIHtcbiAgICBjYWNoZUZpbGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtQnVpbGRDYWNoZU9wdGlvbnMge1xuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZztcbiAgICBtb2RlOiBCdWlsZENhY2hlTW9kZTtcbiAgICBnZW5lcmF0b3JWZXJzaW9uOiBzdHJpbmc7XG4gICAgZ2Z2OiBzdHJpbmc7XG4gICAgZGVwc0hhc2g6IHN0cmluZztcbn1cblxuY29uc3Qgc2luZ2xlTGltaXQgPSBwTGltaXQoMSk7XG5cbmludGVyZmFjZSBCdWlsZFJlc3VsdHNTZXJpYWxpemVkIHtcbiAgICBbcGF0aDogc3RyaW5nXTogc3RyaW5nIHwgeyB0eXBlOiBcIkJ1ZmZlclwiOyBiYXNlNjRjb250ZW50OiBzdHJpbmcgfTtcbn1cblxuZXhwb3J0IGNsYXNzIENhY2hlQXNzZXRzUGx1Z2luIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IENhY2hlQXNzZXRzUGx1Z2luT3B0aW9ucztcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zOiBDYWNoZUFzc2V0c1BsdWdpbk9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgYXBwbHkoY29tcGlsZXI6IHdlYnBhY2suQ29tcGlsZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29tcGlsZXIuaG9va3MuZW1pdC50YXBQcm9taXNlKFwiQ2FjaGVBc3NldHNQbHVnaW5cIiwgY29tcGlsYXRpb24gPT5cbiAgICAgICAgICAgIHNpbmdsZUxpbWl0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjYWNoZUl0ZW1zOiBCdWlsZFJlc3VsdHNTZXJpYWxpemVkID0ge307XG4gICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLXVuc2FmZS1hbnlcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGFzc2V0TmFtZSBvZiBPYmplY3Qua2V5cyhjb21waWxhdGlvbi5hc3NldHMpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby11bnNhZmUtYW55XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZTogc3RyaW5nIHwgQnVmZmVyID0gY29tcGlsYXRpb24uYXNzZXRzW2Fzc2V0TmFtZV0/LnNvdXJjZSgpID8/IHJlamVjdCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZUl0ZW1zW2Fzc2V0TmFtZV0gPSB7IHR5cGU6IFwiQnVmZmVyXCIsIGJhc2U2NGNvbnRlbnQ6IHNvdXJjZS50b1N0cmluZyhcImJhc2U2NFwiKSB9O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVJdGVtc1thc3NldE5hbWVdID0gc291cmNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMudXBkYXRlRmlsZShjYWNoZUl0ZW1zKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyB1cGRhdGVGaWxlKGNhY2hlSXRlbXM6IEJ1aWxkUmVzdWx0c1NlcmlhbGl6ZWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLnJlc29sdmUodGhpcy5vcHRpb25zLmNhY2hlRmlsZSk7XG4gICAgICAgIGxldCBjb250ZW50OiBCdWlsZFJlc3VsdHNTZXJpYWxpemVkID0gKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKVxuICAgICAgICAgICAgPyAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5zYWZlLWFueVxuICAgICAgICAgICAgICBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlKGZpbGVQYXRoLCBcInV0Zi04XCIpKVxuICAgICAgICAgICAgOiB7fTtcbiAgICAgICAgY29udGVudCA9IHtcbiAgICAgICAgICAgIC4uLmNvbnRlbnQsXG4gICAgICAgICAgICAuLi5jYWNoZUl0ZW1zLFxuICAgICAgICB9O1xuICAgICAgICBhd2FpdCBlbnN1cmVEaXIocGF0aC5kaXJuYW1lKGZpbGVQYXRoKSk7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZShmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoY29udGVudCksIFwidXRmLThcIik7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQnVpbGRDYWNoZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmYXJtRGlyZWN0b3J5OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtb2RlOiBCdWlsZENhY2hlTW9kZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogSUxvZ2dlcjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihmYXJtRGlyZWN0b3J5OiBzdHJpbmcsIG1vZGU6IEJ1aWxkQ2FjaGVNb2RlKSB7XG4gICAgICAgIHRoaXMuZmFybURpcmVjdG9yeSA9IGZhcm1EaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMubW9kZSA9IG1vZGU7XG4gICAgICAgIHRoaXMubG9nZ2VyID0gZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkJVSUxEX0NBQ0hFXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleHRyYWN0KFxuICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IEdlbmVyYXRvclNvdXJjZSxcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGRlcHNIYXNoOiBzdHJpbmcsXG4gICAgICAgIHJlc291cmNlc0RpcmVjdG9yeTogc3RyaW5nXG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmIChnZW5lcmF0b3JTb3VyY2UudHlwZSA9PT0gXCJHZW5lcmF0b3JTb3VyY2VzXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxvY2FsIGdlbmVyYXRvciBkb2VzIG5vdCBzdXBwb3J0cyBjYWNoaW5nXCIpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby11bnNhZmUtYW55XG4gICAgICAgIGNvbnN0IGNvbnRlbnQ6IEJ1aWxkUmVzdWx0c1NlcmlhbGl6ZWQgPSBKU09OLnBhcnNlKFxuICAgICAgICAgICAgYXdhaXQgcmVhZEZpbGUodGhpcy5nZXRDYWNoZUZpbGVQYXRoKGdmdiwgZ2VuZXJhdG9yU291cmNlLnZlcnNpb24sIGRlcHNIYXNoKSwgXCJ1dGYtOFwiKVxuICAgICAgICApO1xuICAgICAgICBmb3IgKGNvbnN0IGFzc2V0UGF0aCBvZiBPYmplY3Qua2V5cyhjb250ZW50KSkge1xuICAgICAgICAgICAgY29uc3QgY29udGVudEVsZW1lbnQgPSBjb250ZW50W2Fzc2V0UGF0aF0gPz8gcmVqZWN0KCk7XG4gICAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIGFzc2V0UGF0aCk7XG4gICAgICAgICAgICBhd2FpdCBlbnN1cmVEaXIocGF0aC5kaXJuYW1lKGZpbGVQYXRoKSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnRFbGVtZW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGaWxlKGZpbGVQYXRoLCBjb250ZW50RWxlbWVudCwgXCJ1dGY4XCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUZpbGUoZmlsZVBhdGgsIEJ1ZmZlci5mcm9tKGNvbnRlbnRFbGVtZW50LmJhc2U2NGNvbnRlbnQsIFwiYmFzZTY0XCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGlzdHMoZ2VuZXJhdG9yU291cmNlOiBHZW5lcmF0b3JTb3VyY2UsIGdmdjogc3RyaW5nLCBkZXBzSGFzaDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGlmIChnZW5lcmF0b3JTb3VyY2UudHlwZSA9PT0gXCJHZW5lcmF0b3JTb3VyY2VzXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxvY2FsIGdlbmVyYXRvciBkb2VzIG5vdCBzdXBwb3J0cyBjYWNoaW5nXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm1vZGUgPT09IEJ1aWxkQ2FjaGVNb2RlLkRpc2FibGVkIHx8IHRoaXMubW9kZSA9PT0gQnVpbGRDYWNoZU1vZGUuRm9yY2VVcGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjYWNoZWRGaWxlUGF0aCA9IGF3YWl0IHRoaXMuZXhpc3RzRmlsZUNhY2hlT3JEb3dubG9hZChnZnYsIGdlbmVyYXRvclNvdXJjZS52ZXJzaW9uLCBkZXBzSGFzaCk7XG4gICAgICAgIHJldHVybiBjYWNoZWRGaWxlUGF0aCAhPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldENvbnRlbnQoXG4gICAgICAgIGdlbmVyYXRvclNvdXJjZTogc3RyaW5nLFxuICAgICAgICBnZnY6IHN0cmluZyxcbiAgICAgICAgZGVwc0hhc2g6IHN0cmluZyxcbiAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIGZpbGVOYW1lOiBzdHJpbmcsXG4gICAgICAgIGZpbGVDb250ZW50OiBzdHJpbmdcbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgY2FjaGVGaWxlUGF0aCA9IHRoaXMuZ2V0Q2FjaGVGaWxlUGF0aChnZnYsIGdlbmVyYXRvclNvdXJjZSwgZGVwc0hhc2gpO1xuICAgICAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKGNhY2hlRmlsZVBhdGgpKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby11bnNhZmUtYW55XG4gICAgICAgIGxldCBjb250ZW50OiBCdWlsZFJlc3VsdHNTZXJpYWxpemVkID0gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShjYWNoZUZpbGVQYXRoLCBcInV0Zi04XCIpKTtcbiAgICAgICAgY29udGVudCA9IHtcbiAgICAgICAgICAgIC4uLmNvbnRlbnQsXG4gICAgICAgICAgICBbZmlsZU5hbWVdOiBmaWxlQ29udGVudCxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgZW5zdXJlRGlyKHBhdGguZGlybmFtZShjYWNoZUZpbGVQYXRoKSk7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZShjYWNoZUZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShjb250ZW50KSwgXCJ1dGYtOFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlV2VicGFja1BsdWdpbihvcHRpb25zOiBGb3JtQnVpbGRDYWNoZU9wdGlvbnMpOiBQcm9taXNlPENhY2hlQXNzZXRzUGx1Z2luIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChvcHRpb25zLm1vZGUgPT09IEJ1aWxkQ2FjaGVNb2RlLkRpc2FibGVkIHx8IG9wdGlvbnMubW9kZSA9PT0gQnVpbGRDYWNoZU1vZGUuUmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2FjaGVkRmlsZVBhdGggPSB0aGlzLmdldENhY2hlRmlsZVBhdGgob3B0aW9ucy5nZnYsIG9wdGlvbnMuZ2VuZXJhdG9yVmVyc2lvbiwgb3B0aW9ucy5kZXBzSGFzaCk7XG4gICAgICAgIHJldHVybiBuZXcgQ2FjaGVBc3NldHNQbHVnaW4oe1xuICAgICAgICAgICAgY2FjaGVGaWxlOiBjYWNoZWRGaWxlUGF0aCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDYWNoZUZpbGVQYXRoKGdmdjogc3RyaW5nLCBnZW5lcmF0b3JWZXJzaW9uOiBzdHJpbmcsIGRlcHNIYXNoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IGAke21kNShnZnYpfS0ke21kNShnZW5lcmF0b3JWZXJzaW9uKX0tJHtkZXBzSGFzaH0uemlwYDtcbiAgICAgICAgcmV0dXJuIHBhdGguam9pbih0aGlzLmZhcm1EaXJlY3RvcnksIFwiLmJ1aWxkLWNhY2hlXCIsIFwiY29tcGlsZVwiLCBmaWxlTmFtZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBleGlzdHNGaWxlQ2FjaGVPckRvd25sb2FkKFxuICAgICAgICBnZnY6IHN0cmluZyxcbiAgICAgICAgZ2VuZXJhdG9yVmVyc2lvbjogc3RyaW5nLFxuICAgICAgICBkZXBzSGFzaDogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldENhY2hlRmlsZVBhdGgoZ2Z2LCBnZW5lcmF0b3JWZXJzaW9uLCBkZXBzSGFzaCk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmxvZyhgU3RhcnQgc2VhcmNoIGZpbGUgbG9jYWxseTogJHtmaWxlUGF0aH1gKTtcbiAgICAgICAgY29uc3QgZmlsZW5hbWUgPSBwYXRoLmJhc2VuYW1lKGZpbGVQYXRoKTtcbiAgICAgICAgYXdhaXQgZW5zdXJlRGlyKHBhdGguZGlybmFtZShmaWxlUGF0aCkpO1xuICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlUGF0aCkpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhcIkZvdW5kIGZpbGUgaW4gbG9jYWwgZGlyZWN0b3J5XCIpO1xuICAgICAgICAgICAgcmV0dXJuIGZpbGVQYXRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coYENhY2hlIGZpbGUgd2FzIG5vdCBmb3VuZCBsb2NhbGx5OiAke2ZpbGVQYXRofWApO1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhgTG9va2luZyBmb3IgY2FjaGUgaW4gZHJpdmUgc3RvcmFnZTogJHtmaWxlbmFtZX1gKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGBodHRwczovL2FwaS5rb250dXIucnUvZHJpdmUvdjEvcHVibGljLyR7ZmlsZW5hbWV9YCk7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKGBEcml2ZSByZXNwb25zZSBzdGF0dXMgY29kZTogJHtyZXNwb25zZS5zdGF0dXMudG9TdHJpbmcoKX1gKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGaWxlKGZpbGVQYXRoLCBhd2FpdCByZXNwb25zZS5idWZmZXIoKSwgXCJ1dGYtOFwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGVQYXRoO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYENhY2hlIGZpbGUgbm90IGZvdW5kIGluIGRyaXZlIHN0b3JhZ2U6ICR7ZmlsZW5hbWV9LiBHRlY6ICR7Z2Z2fSwgR2VuZXJhdG9yVmVyc2lvbjogJHtnZW5lcmF0b3JWZXJzaW9ufSwgRGVwZW5kZW5jaWVzSGFzaDogJHtkZXBzSGFzaH1gXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYERyaXZlIHN0b3JhZ2Ugc2VudCAke3Jlc3BvbnNlLnN0YXR1c30gc3RhdHVzIGNvZGUsIEkgZG9uJ3QgcHJvY2VzcyBpdCBpbiBhbnkgd2F5YFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihcIkRyaXZlIHN0b3JhZ2UgcmVzcG9uZGVkIHdpdGggYW4gZXJyb3JcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXCJUaGUgYnVpbGQgd2lsbCBjb250aW51ZSB3aXRob3V0IGEgY2FjaGVcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
157
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX2ZzRXh0cmEiLCJfbWQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3BMaW1pdCIsIl9ub2RlRmV0Y2giLCJfQnVpbGRDYWNoZU1vZGUiLCJfVHlwaW5nVXRpbHMiLCJfU3RhdGljTG9nZ2VyIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsInNpbmdsZUxpbWl0IiwicExpbWl0IiwiQ2FjaGVBc3NldHNQbHVnaW4iLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJhcHBseSIsImNvbXBpbGVyIiwiaG9va3MiLCJlbWl0IiwidGFwUHJvbWlzZSIsImNvbXBpbGF0aW9uIiwiY2FjaGVJdGVtcyIsImFzc2V0TmFtZSIsImtleXMiLCJhc3NldHMiLCJfY29tcGlsYXRpb24kYXNzZXRzJGEiLCJfY29tcGlsYXRpb24kYXNzZXRzJGEyIiwic291cmNlIiwicmVqZWN0IiwiQnVmZmVyIiwidHlwZSIsImJhc2U2NGNvbnRlbnQiLCJ0b1N0cmluZyIsInVwZGF0ZUZpbGUiLCJmaWxlUGF0aCIsInJlc29sdmUiLCJjYWNoZUZpbGUiLCJjb250ZW50IiwicGF0aEV4aXN0cyIsIkpTT04iLCJwYXJzZSIsInJlYWRGaWxlIiwiZW5zdXJlRGlyIiwiZGlybmFtZSIsIndyaXRlRmlsZSIsInN0cmluZ2lmeSIsImV4cG9ydHMiLCJCdWlsZENhY2hlIiwiZmFybURpcmVjdG9yeSIsIm1vZGUiLCJsb2dnZXIiLCJnZXRMb2dnZXIiLCJ3aXRoUHJlZml4IiwiZXh0cmFjdCIsImdlbmVyYXRvclNvdXJjZSIsImdmdiIsImRlcHNIYXNoIiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiRXJyb3IiLCJnZXRDYWNoZUZpbGVQYXRoIiwidmVyc2lvbiIsImFzc2V0UGF0aCIsIl9jb250ZW50JGFzc2V0UGF0aCIsImNvbnRlbnRFbGVtZW50Iiwiam9pbiIsImZyb20iLCJleGlzdHMiLCJCdWlsZENhY2hlTW9kZSIsIkRpc2FibGVkIiwiRm9yY2VVcGRhdGUiLCJjYWNoZWRGaWxlUGF0aCIsImV4aXN0c0ZpbGVDYWNoZU9yRG93bmxvYWQiLCJ1bmRlZmluZWQiLCJzZXRDb250ZW50IiwiZmlsZU5hbWUiLCJmaWxlQ29udGVudCIsImNhY2hlRmlsZVBhdGgiLCJjcmVhdGVXZWJwYWNrUGx1Z2luIiwiUmVhZE9ubHkiLCJnZW5lcmF0b3JWZXJzaW9uIiwibWQ1IiwibG9nIiwiZmlsZW5hbWUiLCJiYXNlbmFtZSIsInJlc3BvbnNlIiwiZmV0Y2giLCJzdGF0dXMiLCJidWZmZXIiLCJlcnJvciIsImUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvRm9ybVdlYnBhY2tDb25maWd1cmF0aW9uL0NhY2hlQXNzZXRzUGx1Z2luLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgZW5zdXJlRGlyLCBwYXRoRXhpc3RzLCByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgbWQ1IGZyb20gXCJtZDVcIjtcbmltcG9ydCBwTGltaXQgZnJvbSBcInAtbGltaXRcIjtcbmltcG9ydCB3ZWJwYWNrIGZyb20gXCJ3ZWJwYWNrXCI7XG5pbXBvcnQgZmV0Y2ggZnJvbSBcIm5vZGUtZmV0Y2hcIjtcblxuaW1wb3J0IHsgR2VuZXJhdG9yU291cmNlIH0gZnJvbSBcIi4uL0J1aWxkVGFza3MvR2VuZXJhdG9yL0FjcXVpcmVGb3JtR2VuZXJhdG9yXCI7XG5pbXBvcnQgeyBCdWlsZENhY2hlTW9kZSB9IGZyb20gXCIuLi9DTElDb21tYW5kcy9CdWlsZEZvcm1zL0J1aWxkQ2FjaGVNb2RlXCI7XG5pbXBvcnQgeyByZWplY3QgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9uL1R5cGluZ1V0aWxzXCI7XG5pbXBvcnQgeyBJTG9nZ2VyIH0gZnJvbSBcIi4uL0NvbW1vbnMvTG9nZ2luZy9JTG9nZ2VyXCI7XG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiLi4vQ29tbW9ucy9Mb2dnaW5nL1N0YXRpY0xvZ2dlclwiO1xuXG5pbnRlcmZhY2UgQ2FjaGVBc3NldHNQbHVnaW5PcHRpb25zIHtcbiAgICBjYWNoZUZpbGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtQnVpbGRDYWNoZU9wdGlvbnMge1xuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZztcbiAgICBtb2RlOiBCdWlsZENhY2hlTW9kZTtcbiAgICBnZW5lcmF0b3JWZXJzaW9uOiBzdHJpbmc7XG4gICAgZ2Z2OiBzdHJpbmc7XG4gICAgZGVwc0hhc2g6IHN0cmluZztcbn1cblxuY29uc3Qgc2luZ2xlTGltaXQgPSBwTGltaXQoMSk7XG5cbmludGVyZmFjZSBCdWlsZFJlc3VsdHNTZXJpYWxpemVkIHtcbiAgICBbcGF0aDogc3RyaW5nXTogc3RyaW5nIHwgeyB0eXBlOiBcIkJ1ZmZlclwiOyBiYXNlNjRjb250ZW50OiBzdHJpbmcgfTtcbn1cblxuZXhwb3J0IGNsYXNzIENhY2hlQXNzZXRzUGx1Z2luIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IENhY2hlQXNzZXRzUGx1Z2luT3B0aW9ucztcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zOiBDYWNoZUFzc2V0c1BsdWdpbk9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgYXBwbHkoY29tcGlsZXI6IHdlYnBhY2suQ29tcGlsZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29tcGlsZXIuaG9va3MuZW1pdC50YXBQcm9taXNlKFwiQ2FjaGVBc3NldHNQbHVnaW5cIiwgY29tcGlsYXRpb24gPT5cbiAgICAgICAgICAgIHNpbmdsZUxpbWl0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjYWNoZUl0ZW1zOiBCdWlsZFJlc3VsdHNTZXJpYWxpemVkID0ge307XG4gICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLXVuc2FmZS1hbnlcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGFzc2V0TmFtZSBvZiBPYmplY3Qua2V5cyhjb21waWxhdGlvbi5hc3NldHMpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby11bnNhZmUtYW55XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZTogc3RyaW5nIHwgQnVmZmVyID0gY29tcGlsYXRpb24uYXNzZXRzW2Fzc2V0TmFtZV0/LnNvdXJjZSgpID8/IHJlamVjdCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZUl0ZW1zW2Fzc2V0TmFtZV0gPSB7IHR5cGU6IFwiQnVmZmVyXCIsIGJhc2U2NGNvbnRlbnQ6IHNvdXJjZS50b1N0cmluZyhcImJhc2U2NFwiKSB9O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVJdGVtc1thc3NldE5hbWVdID0gc291cmNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMudXBkYXRlRmlsZShjYWNoZUl0ZW1zKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyB1cGRhdGVGaWxlKGNhY2hlSXRlbXM6IEJ1aWxkUmVzdWx0c1NlcmlhbGl6ZWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLnJlc29sdmUodGhpcy5vcHRpb25zLmNhY2hlRmlsZSk7XG4gICAgICAgIGxldCBjb250ZW50OiBCdWlsZFJlc3VsdHNTZXJpYWxpemVkID0gKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKVxuICAgICAgICAgICAgPyAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5zYWZlLWFueVxuICAgICAgICAgICAgICBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlKGZpbGVQYXRoLCBcInV0Zi04XCIpKVxuICAgICAgICAgICAgOiB7fTtcbiAgICAgICAgY29udGVudCA9IHtcbiAgICAgICAgICAgIC4uLmNvbnRlbnQsXG4gICAgICAgICAgICAuLi5jYWNoZUl0ZW1zLFxuICAgICAgICB9O1xuICAgICAgICBhd2FpdCBlbnN1cmVEaXIocGF0aC5kaXJuYW1lKGZpbGVQYXRoKSk7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZShmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoY29udGVudCksIFwidXRmLThcIik7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQnVpbGRDYWNoZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmYXJtRGlyZWN0b3J5OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtb2RlOiBCdWlsZENhY2hlTW9kZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogSUxvZ2dlcjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihmYXJtRGlyZWN0b3J5OiBzdHJpbmcsIG1vZGU6IEJ1aWxkQ2FjaGVNb2RlKSB7XG4gICAgICAgIHRoaXMuZmFybURpcmVjdG9yeSA9IGZhcm1EaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMubW9kZSA9IG1vZGU7XG4gICAgICAgIHRoaXMubG9nZ2VyID0gZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkJVSUxEX0NBQ0hFXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleHRyYWN0KFxuICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IEdlbmVyYXRvclNvdXJjZSxcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGRlcHNIYXNoOiBzdHJpbmcsXG4gICAgICAgIHJlc291cmNlc0RpcmVjdG9yeTogc3RyaW5nXG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmIChnZW5lcmF0b3JTb3VyY2UudHlwZSA9PT0gXCJHZW5lcmF0b3JTb3VyY2VzXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxvY2FsIGdlbmVyYXRvciBkb2VzIG5vdCBzdXBwb3J0cyBjYWNoaW5nXCIpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby11bnNhZmUtYW55XG4gICAgICAgIGNvbnN0IGNvbnRlbnQ6IEJ1aWxkUmVzdWx0c1NlcmlhbGl6ZWQgPSBKU09OLnBhcnNlKFxuICAgICAgICAgICAgYXdhaXQgcmVhZEZpbGUodGhpcy5nZXRDYWNoZUZpbGVQYXRoKGdmdiwgZ2VuZXJhdG9yU291cmNlLnZlcnNpb24sIGRlcHNIYXNoKSwgXCJ1dGYtOFwiKVxuICAgICAgICApO1xuICAgICAgICBmb3IgKGNvbnN0IGFzc2V0UGF0aCBvZiBPYmplY3Qua2V5cyhjb250ZW50KSkge1xuICAgICAgICAgICAgY29uc3QgY29udGVudEVsZW1lbnQgPSBjb250ZW50W2Fzc2V0UGF0aF0gPz8gcmVqZWN0KCk7XG4gICAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIGFzc2V0UGF0aCk7XG4gICAgICAgICAgICBhd2FpdCBlbnN1cmVEaXIocGF0aC5kaXJuYW1lKGZpbGVQYXRoKSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnRFbGVtZW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGaWxlKGZpbGVQYXRoLCBjb250ZW50RWxlbWVudCwgXCJ1dGY4XCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUZpbGUoZmlsZVBhdGgsIEJ1ZmZlci5mcm9tKGNvbnRlbnRFbGVtZW50LmJhc2U2NGNvbnRlbnQsIFwiYmFzZTY0XCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGlzdHMoZ2VuZXJhdG9yU291cmNlOiBHZW5lcmF0b3JTb3VyY2UsIGdmdjogc3RyaW5nLCBkZXBzSGFzaDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGlmIChnZW5lcmF0b3JTb3VyY2UudHlwZSA9PT0gXCJHZW5lcmF0b3JTb3VyY2VzXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxvY2FsIGdlbmVyYXRvciBkb2VzIG5vdCBzdXBwb3J0cyBjYWNoaW5nXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm1vZGUgPT09IEJ1aWxkQ2FjaGVNb2RlLkRpc2FibGVkIHx8IHRoaXMubW9kZSA9PT0gQnVpbGRDYWNoZU1vZGUuRm9yY2VVcGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjYWNoZWRGaWxlUGF0aCA9IGF3YWl0IHRoaXMuZXhpc3RzRmlsZUNhY2hlT3JEb3dubG9hZChnZnYsIGdlbmVyYXRvclNvdXJjZS52ZXJzaW9uLCBkZXBzSGFzaCk7XG4gICAgICAgIHJldHVybiBjYWNoZWRGaWxlUGF0aCAhPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldENvbnRlbnQoXG4gICAgICAgIGdlbmVyYXRvclNvdXJjZTogc3RyaW5nLFxuICAgICAgICBnZnY6IHN0cmluZyxcbiAgICAgICAgZGVwc0hhc2g6IHN0cmluZyxcbiAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIGZpbGVOYW1lOiBzdHJpbmcsXG4gICAgICAgIGZpbGVDb250ZW50OiBzdHJpbmdcbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgY2FjaGVGaWxlUGF0aCA9IHRoaXMuZ2V0Q2FjaGVGaWxlUGF0aChnZnYsIGdlbmVyYXRvclNvdXJjZSwgZGVwc0hhc2gpO1xuICAgICAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKGNhY2hlRmlsZVBhdGgpKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby11bnNhZmUtYW55XG4gICAgICAgIGxldCBjb250ZW50OiBCdWlsZFJlc3VsdHNTZXJpYWxpemVkID0gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShjYWNoZUZpbGVQYXRoLCBcInV0Zi04XCIpKTtcbiAgICAgICAgY29udGVudCA9IHtcbiAgICAgICAgICAgIC4uLmNvbnRlbnQsXG4gICAgICAgICAgICBbZmlsZU5hbWVdOiBmaWxlQ29udGVudCxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgZW5zdXJlRGlyKHBhdGguZGlybmFtZShjYWNoZUZpbGVQYXRoKSk7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZShjYWNoZUZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShjb250ZW50KSwgXCJ1dGYtOFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlV2VicGFja1BsdWdpbihvcHRpb25zOiBGb3JtQnVpbGRDYWNoZU9wdGlvbnMpOiBQcm9taXNlPENhY2hlQXNzZXRzUGx1Z2luIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChvcHRpb25zLm1vZGUgPT09IEJ1aWxkQ2FjaGVNb2RlLkRpc2FibGVkIHx8IG9wdGlvbnMubW9kZSA9PT0gQnVpbGRDYWNoZU1vZGUuUmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2FjaGVkRmlsZVBhdGggPSB0aGlzLmdldENhY2hlRmlsZVBhdGgob3B0aW9ucy5nZnYsIG9wdGlvbnMuZ2VuZXJhdG9yVmVyc2lvbiwgb3B0aW9ucy5kZXBzSGFzaCk7XG4gICAgICAgIHJldHVybiBuZXcgQ2FjaGVBc3NldHNQbHVnaW4oe1xuICAgICAgICAgICAgY2FjaGVGaWxlOiBjYWNoZWRGaWxlUGF0aCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDYWNoZUZpbGVQYXRoKGdmdjogc3RyaW5nLCBnZW5lcmF0b3JWZXJzaW9uOiBzdHJpbmcsIGRlcHNIYXNoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IGAke21kNShnZnYpfS0ke21kNShnZW5lcmF0b3JWZXJzaW9uKX0tJHtkZXBzSGFzaH0uemlwYDtcbiAgICAgICAgcmV0dXJuIHBhdGguam9pbih0aGlzLmZhcm1EaXJlY3RvcnksIFwiLmJ1aWxkLWNhY2hlXCIsIFwiY29tcGlsZVwiLCBmaWxlTmFtZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBleGlzdHNGaWxlQ2FjaGVPckRvd25sb2FkKFxuICAgICAgICBnZnY6IHN0cmluZyxcbiAgICAgICAgZ2VuZXJhdG9yVmVyc2lvbjogc3RyaW5nLFxuICAgICAgICBkZXBzSGFzaDogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldENhY2hlRmlsZVBhdGgoZ2Z2LCBnZW5lcmF0b3JWZXJzaW9uLCBkZXBzSGFzaCk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmxvZyhgU3RhcnQgc2VhcmNoIGZpbGUgbG9jYWxseTogJHtmaWxlUGF0aH1gKTtcbiAgICAgICAgY29uc3QgZmlsZW5hbWUgPSBwYXRoLmJhc2VuYW1lKGZpbGVQYXRoKTtcbiAgICAgICAgYXdhaXQgZW5zdXJlRGlyKHBhdGguZGlybmFtZShmaWxlUGF0aCkpO1xuICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlUGF0aCkpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhcIkZvdW5kIGZpbGUgaW4gbG9jYWwgZGlyZWN0b3J5XCIpO1xuICAgICAgICAgICAgcmV0dXJuIGZpbGVQYXRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coYENhY2hlIGZpbGUgd2FzIG5vdCBmb3VuZCBsb2NhbGx5OiAke2ZpbGVQYXRofWApO1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhgTG9va2luZyBmb3IgY2FjaGUgaW4gZHJpdmUgc3RvcmFnZTogJHtmaWxlbmFtZX1gKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGBodHRwczovL2FwaS5rb250dXIucnUvZHJpdmUvdjEvcHVibGljLyR7ZmlsZW5hbWV9YCk7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKGBEcml2ZSByZXNwb25zZSBzdGF0dXMgY29kZTogJHtyZXNwb25zZS5zdGF0dXMudG9TdHJpbmcoKX1gKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGaWxlKGZpbGVQYXRoLCBhd2FpdCByZXNwb25zZS5idWZmZXIoKSwgXCJ1dGYtOFwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGVQYXRoO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYENhY2hlIGZpbGUgbm90IGZvdW5kIGluIGRyaXZlIHN0b3JhZ2U6ICR7ZmlsZW5hbWV9LiBHRlY6ICR7Z2Z2fSwgR2VuZXJhdG9yVmVyc2lvbjogJHtnZW5lcmF0b3JWZXJzaW9ufSwgRGVwZW5kZW5jaWVzSGFzaDogJHtkZXBzSGFzaH1gXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYERyaXZlIHN0b3JhZ2Ugc2VudCAke3Jlc3BvbnNlLnN0YXR1c30gc3RhdHVzIGNvZGUsIEkgZG9uJ3QgcHJvY2VzcyBpdCBpbiBhbnkgd2F5YFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihcIkRyaXZlIHN0b3JhZ2UgcmVzcG9uZGVkIHdpdGggYW4gZXJyb3JcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXCJUaGUgYnVpbGQgd2lsbCBjb250aW51ZSB3aXRob3V0IGEgY2FjaGVcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLElBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLEdBQUEs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
@@ -1,29 +1,22 @@
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.createConfig = createConfig;
9
-
10
8
  var _path = _interopRequireDefault(require("path"));
11
-
12
9
  var _miniCssExtractPlugin = _interopRequireDefault(require("mini-css-extract-plugin"));
13
-
14
10
  var _webpack = _interopRequireDefault(require("webpack"));
15
-
16
11
  var _CacheAssetsPlugin = require("./CacheAssetsPlugin");
17
-
18
12
  // tslint:disable no-any no-unsafe-any no-invalid-this
13
+
19
14
  async function createConfigVariant(options) {
20
15
  const {
21
16
  gfv
22
17
  } = options;
23
18
  const fileNameSuffix = options.mode === "production" ? ".min" : "";
24
-
25
19
  const formPath = _path.default.join(options.formsDirectoryPath, gfv);
26
-
27
20
  const buildCache = options.buildCacheOptions != undefined ? new _CacheAssetsPlugin.BuildCache(options.buildCacheOptions.farmDirectory, options.buildCacheOptions.mode) : undefined;
28
21
  const buildCacheWebpackPlugin = buildCache != undefined && options.buildCacheOptions != undefined ? await buildCache.createWebpackPlugin(options.buildCacheOptions) : undefined;
29
22
  return {
@@ -67,7 +60,8 @@ async function createConfigVariant(options) {
67
60
  postcssOptions: {
68
61
  ident: "postcss",
69
62
  // tslint:disable no-require-imports
70
- plugins: [// eslint-disable-next-line @typescript-eslint/no-var-requires
63
+ plugins: [
64
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
71
65
  require("autoprefixer")({
72
66
  // Просто дефолтные значение из текущего (1.7.7) browserslist
73
67
  overrideBrowserslist: "> 1%, last 2 versions, Firefox ESR"
@@ -124,14 +118,11 @@ async function createConfigVariant(options) {
124
118
  }), buildCacheWebpackPlugin].filter(isNotNullOrUndefined)
125
119
  };
126
120
  }
127
-
128
121
  function isNotNullOrUndefined(input) {
129
122
  return input != undefined;
130
123
  }
131
-
132
124
  function createConfig(options) {
133
125
  const result = [];
134
-
135
126
  for (const mode of options.modes) {
136
127
  result.push(createConfigVariant({
137
128
  gfv: options.gfv,
@@ -142,7 +133,6 @@ function createConfig(options) {
142
133
  buildCacheOptions: options.buildCacheOptions
143
134
  }));
144
135
  }
145
-
146
136
  return Promise.all(result);
147
137
  }
148
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9Gb3JtV2VicGFja0NvbmZpZ3VyYXRpb24vY3JlYXRlRm9ybVdlYnBhY2tDb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbImNyZWF0ZUNvbmZpZ1ZhcmlhbnQiLCJvcHRpb25zIiwiZ2Z2IiwiZmlsZU5hbWVTdWZmaXgiLCJtb2RlIiwiZm9ybVBhdGgiLCJwYXRoIiwiam9pbiIsImZvcm1zRGlyZWN0b3J5UGF0aCIsImJ1aWxkQ2FjaGUiLCJidWlsZENhY2hlT3B0aW9ucyIsInVuZGVmaW5lZCIsIkJ1aWxkQ2FjaGUiLCJmYXJtRGlyZWN0b3J5IiwiYnVpbGRDYWNoZVdlYnBhY2tQbHVnaW4iLCJjcmVhdGVXZWJwYWNrUGx1Z2luIiwidGFyZ2V0IiwiY29udGV4dCIsInJlc29sdmUiLCJvdXRwdXQiLCJmaWxlbmFtZSIsInJlc291cmNlc0RpcmVjdG9yeVBhdGgiLCJwdWJsaWNQYXRoIiwiYWxpYXMiLCJfX2Rpcm5hbWUiLCJ2YXJpYWJsZXMiLCJSZXNvdXJjZXMiLCJleHRlbnNpb25zIiwiZW50cnkiLCJkZXZ0b29sIiwibW9kdWxlIiwicnVsZXMiLCJ0ZXN0IiwidXNlIiwibG9hZGVyIiwiTWluaUNzc0V4dHJhY3RQbHVnaW4iLCJyZXF1aXJlIiwibW9kdWxlcyIsImxvY2FsSWRlbnROYW1lIiwicG9zdGNzc09wdGlvbnMiLCJpZGVudCIsInBsdWdpbnMiLCJvdmVycmlkZUJyb3dzZXJzbGlzdCIsImJhYmVscmMiLCJjb25maWdGaWxlIiwicHJlc2V0cyIsInRhcmdldHMiLCJicm93c2VycyIsImxvb3NlIiwibGVnYWN5IiwiZXhjbHVkZSIsIm5hbWUiLCJ3ZWJwYWNrIiwiRGVmaW5lUGx1Z2luIiwiR0ZWIiwiSlNPTiIsInN0cmluZ2lmeSIsIk5PREVfRU5WIiwiUkVTT1VSQ0VTX0hBU0giLCJyZXNvdXJjZXNIYXNoIiwiZmlsdGVyIiwiaXNOb3ROdWxsT3JVbmRlZmluZWQiLCJpbnB1dCIsImNyZWF0ZUNvbmZpZyIsInJlc3VsdCIsIm1vZGVzIiwicHVzaCIsIlByb21pc2UiLCJhbGwiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBOztBQUVBOztBQUNBOztBQUVBOztBQU5BO0FBaUJBLGVBQWVBLG1CQUFmLENBQW1DQyxPQUFuQyxFQUE4RztBQUMxRyxRQUFNO0FBQUVDLElBQUFBO0FBQUYsTUFBVUQsT0FBaEI7QUFFQSxRQUFNRSxjQUFjLEdBQUdGLE9BQU8sQ0FBQ0csSUFBUixLQUFpQixZQUFqQixHQUFnQyxNQUFoQyxHQUF5QyxFQUFoRTs7QUFFQSxRQUFNQyxRQUFRLEdBQUdDLGNBQUtDLElBQUwsQ0FBVU4sT0FBTyxDQUFDTyxrQkFBbEIsRUFBc0NOLEdBQXRDLENBQWpCOztBQUNBLFFBQU1PLFVBQVUsR0FDWlIsT0FBTyxDQUFDUyxpQkFBUixJQUE2QkMsU0FBN0IsR0FDTSxJQUFJQyw2QkFBSixDQUFlWCxPQUFPLENBQUNTLGlCQUFSLENBQTBCRyxhQUF6QyxFQUF3RFosT0FBTyxDQUFDUyxpQkFBUixDQUEwQk4sSUFBbEYsQ0FETixHQUVNTyxTQUhWO0FBS0EsUUFBTUcsdUJBQXVCLEdBQ3pCTCxVQUFVLElBQUlFLFNBQWQsSUFBMkJWLE9BQU8sQ0FBQ1MsaUJBQVIsSUFBNkJDLFNBQXhELEdBQ00sTUFBTUYsVUFBVSxDQUFDTSxtQkFBWCxDQUErQmQsT0FBTyxDQUFDUyxpQkFBdkMsQ0FEWixHQUVNQyxTQUhWO0FBS0EsU0FBTztBQUNIUCxJQUFBQSxJQUFJLEVBQUVILE9BQU8sQ0FBQ0csSUFEWDtBQUVIWSxJQUFBQSxNQUFNLEVBQUUsQ0FBQyxLQUFELEVBQVEsS0FBUixDQUZMO0FBR0hDLElBQUFBLE9BQU8sRUFBRVgsY0FBS1ksT0FBTCxDQUFhakIsT0FBTyxDQUFDTyxrQkFBckIsRUFBeUMsSUFBekMsQ0FITjtBQUlIVyxJQUFBQSxNQUFNLEVBQUU7QUFDSkMsTUFBQUEsUUFBUSxFQUFHLGtCQUFpQmxCLEdBQUksR0FBRUMsY0FBZSxLQUQ3QztBQUVKRyxNQUFBQSxJQUFJLEVBQUVMLE9BQU8sQ0FBQ29CLHNCQUZWO0FBR0pDLE1BQUFBLFVBQVUsRUFBRTtBQUhSLEtBSkw7QUFTSEosSUFBQUEsT0FBTyxFQUFFO0FBQ0xLLE1BQUFBLEtBQUssRUFBRTtBQUNILDBCQUFrQmpCLGNBQUtZLE9BQUwsQ0FBYVosY0FBS0MsSUFBTCxDQUFVaUIsU0FBVixFQUFxQixnQkFBckIsQ0FBYixDQURmO0FBRUhDLFFBQUFBLFNBQVMsRUFBRW5CLGNBQUtZLE9BQUwsQ0FBYVosY0FBS0MsSUFBTCxDQUFVaUIsU0FBVixFQUFxQixnQkFBckIsQ0FBYixDQUZSO0FBR0hFLFFBQUFBLFNBQVMsRUFBRXBCLGNBQUtDLElBQUwsQ0FBVUYsUUFBVixFQUFvQixNQUFwQixFQUE0QixXQUE1QjtBQUhSLE9BREY7QUFNTHNCLE1BQUFBLFVBQVUsRUFBRSxDQUFDLEtBQUQsRUFBUSxNQUFSO0FBTlAsS0FUTjtBQWlCSEMsSUFBQUEsS0FBSyxFQUFFLENBQUN0QixjQUFLQyxJQUFMLENBQVVGLFFBQVYsRUFBb0IsTUFBcEIsRUFBNEIsT0FBNUIsQ0FBRCxDQWpCSjtBQWtCSHdCLElBQUFBLE9BQU8sRUFBRTVCLE9BQU8sQ0FBQ0csSUFBUixLQUFpQixZQUFqQixHQUFnQ08sU0FBaEMsR0FBNEMsbUJBbEJsRDtBQW1CSG1CLElBQUFBLE1BQU0sRUFBRTtBQUNKQyxNQUFBQSxLQUFLLEVBQUUsQ0FDSDtBQUNJQyxRQUFBQSxJQUFJLEVBQUUsU0FEVjtBQUVJQyxRQUFBQSxHQUFHLEVBQUUsQ0FDRDtBQUNJO0FBQ0FDLFVBQUFBLE1BQU0sRUFBRUMsOEJBQXFCRCxNQUZqQztBQUdJakMsVUFBQUEsT0FBTyxFQUFFO0FBQUVxQixZQUFBQSxVQUFVLEVBQUU7QUFBZDtBQUhiLFNBREMsRUFNRDtBQUNJWSxVQUFBQSxNQUFNLEVBQUVFLE9BQU8sQ0FBQ2xCLE9BQVIsQ0FBZ0IsWUFBaEIsQ0FEWjtBQUVJakIsVUFBQUEsT0FBTyxFQUFFO0FBQ0xvQyxZQUFBQSxPQUFPLEVBQUU7QUFDTEMsY0FBQUEsY0FBYyxFQUFFO0FBRFg7QUFESjtBQUZiLFNBTkMsRUFjRDtBQUNJSixVQUFBQSxNQUFNLEVBQUVFLE9BQU8sQ0FBQ2xCLE9BQVIsQ0FBZ0IsZ0JBQWhCLENBRFo7QUFFSWpCLFVBQUFBLE9BQU8sRUFBRTtBQUNMc0MsWUFBQUEsY0FBYyxFQUFFO0FBQ1pDLGNBQUFBLEtBQUssRUFBRSxTQURLO0FBRVo7QUFDQUMsY0FBQUEsT0FBTyxFQUFFLENBQ0w7QUFDQUwsY0FBQUEsT0FBTyxDQUFDLGNBQUQsQ0FBUCxDQUF3QjtBQUNwQjtBQUNBTSxnQkFBQUEsb0JBQW9CLEVBQUU7QUFGRixlQUF4QixDQUZLO0FBSEc7QUFEWDtBQUZiLFNBZEMsRUE4QkQ7QUFDSVIsVUFBQUEsTUFBTSxFQUFFRSxPQUFPLENBQUNsQixPQUFSLENBQWdCLGFBQWhCO0FBRFosU0E5QkM7QUFGVCxPQURHLEVBc0NIO0FBQ0ljLFFBQUFBLElBQUksRUFBRSxTQURWO0FBRUlDLFFBQUFBLEdBQUcsRUFBRSxDQUNEO0FBQ0lDLFVBQUFBLE1BQU0sRUFBRUUsT0FBTyxDQUFDbEIsT0FBUixDQUFnQixjQUFoQixDQURaO0FBRUlqQixVQUFBQSxPQUFPLEVBQUU7QUFDTDBDLFlBQUFBLE9BQU8sRUFBRSxLQURKO0FBRUxDLFlBQUFBLFVBQVUsRUFBRSxLQUZQO0FBR0xDLFlBQUFBLE9BQU8sRUFBRSxDQUNMVCxPQUFPLENBQUNsQixPQUFSLENBQWdCLHFCQUFoQixDQURLLEVBRUwsQ0FDSWtCLE9BQU8sQ0FBQ2xCLE9BQVIsQ0FBZ0IsbUJBQWhCLENBREosRUFFSTtBQUNJNEIsY0FBQUEsT0FBTyxFQUFFO0FBQUVDLGdCQUFBQSxRQUFRLEVBQUU7QUFBWixlQURiO0FBRUlDLGNBQUFBLEtBQUssRUFBRTtBQUZYLGFBRkosQ0FGSyxDQUhKO0FBYUxQLFlBQUFBLE9BQU8sRUFBRSxDQUNMLENBQUNMLE9BQU8sQ0FBQ2xCLE9BQVIsQ0FBZ0IsbUNBQWhCLENBQUQsRUFBdUQ7QUFBRStCLGNBQUFBLE1BQU0sRUFBRTtBQUFWLGFBQXZELENBREssRUFFTCxDQUFDYixPQUFPLENBQUNsQixPQUFSLENBQWdCLHlDQUFoQixDQUFELEVBQTZEO0FBQUU4QixjQUFBQSxLQUFLLEVBQUU7QUFBVCxhQUE3RCxDQUZLLEVBR0xaLE9BQU8sQ0FBQ2xCLE9BQVIsQ0FBZ0IsNENBQWhCLENBSEs7QUFiSjtBQUZiLFNBREMsQ0FGVDtBQTBCSWdDLFFBQUFBLE9BQU8sRUFBRSxDQUFDLGNBQUQ7QUExQmIsT0F0Q0csRUFrRUg7QUFDSWxCLFFBQUFBLElBQUksRUFBRSxjQURWO0FBRUlFLFFBQUFBLE1BQU0sRUFBRUUsT0FBTyxDQUFDbEIsT0FBUixDQUFnQixhQUFoQixDQUZaO0FBR0lqQixRQUFBQSxPQUFPLEVBQUU7QUFBRWtELFVBQUFBLElBQUksRUFBRTtBQUFSO0FBSGIsT0FsRUcsRUF1RUg7QUFDSW5CLFFBQUFBLElBQUksRUFBRSxxQkFEVjtBQUVJRSxRQUFBQSxNQUFNLEVBQUVFLE9BQU8sQ0FBQ2xCLE9BQVIsQ0FBZ0IsYUFBaEIsQ0FGWjtBQUdJakIsUUFBQUEsT0FBTyxFQUFFO0FBQUVrRCxVQUFBQSxJQUFJLEVBQUU7QUFBUjtBQUhiLE9BdkVHO0FBREgsS0FuQkw7QUFrR0g7QUFDQVYsSUFBQUEsT0FBTyxFQUFFLENBQ0wsSUFBSU4sNkJBQUosQ0FBeUI7QUFDckJmLE1BQUFBLFFBQVEsRUFBRyxpQkFBZ0JsQixHQUFJLEdBQUVDLGNBQWU7QUFEM0IsS0FBekIsQ0FESyxFQUlMLElBQUlpRCxpQkFBUUMsWUFBWixDQUF5QjtBQUNyQixxQkFBZTtBQUNYQyxRQUFBQSxHQUFHLEVBQUVDLElBQUksQ0FBQ0MsU0FBTCxDQUFldEQsR0FBZixDQURNO0FBRVh1RCxRQUFBQSxRQUFRLEVBQUVGLElBQUksQ0FBQ0MsU0FBTCxDQUFldkQsT0FBTyxDQUFDRyxJQUF2QixDQUZDO0FBR1hzRCxRQUFBQSxjQUFjLEVBQUVILElBQUksQ0FBQ0MsU0FBTCxDQUFldkQsT0FBTyxDQUFDMEQsYUFBdkI7QUFITDtBQURNLEtBQXpCLENBSkssRUFXTDdDLHVCQVhLLEVBWVA4QyxNQVpPLENBWUFDLG9CQVpBO0FBbkdOLEdBQVA7QUFpSEg7O0FBRUQsU0FBU0Esb0JBQVQsQ0FBaUNDLEtBQWpDLEVBQTBFO0FBQ3RFLFNBQU9BLEtBQUssSUFBSW5ELFNBQWhCO0FBQ0g7O0FBYU0sU0FBU29ELFlBQVQsQ0FBc0I5RCxPQUF0QixFQUE0RjtBQUMvRixRQUFNK0QsTUFBcUMsR0FBRyxFQUE5Qzs7QUFFQSxPQUFLLE1BQU01RCxJQUFYLElBQW1CSCxPQUFPLENBQUNnRSxLQUEzQixFQUFrQztBQUM5QkQsSUFBQUEsTUFBTSxDQUFDRSxJQUFQLENBQ0lsRSxtQkFBbUIsQ0FBQztBQUNoQkUsTUFBQUEsR0FBRyxFQUFFRCxPQUFPLENBQUNDLEdBREc7QUFFaEJ5RCxNQUFBQSxhQUFhLEVBQUUxRCxPQUFPLENBQUMwRCxhQUZQO0FBR2hCbkQsTUFBQUEsa0JBQWtCLEVBQUVQLE9BQU8sQ0FBQ08sa0JBSFo7QUFJaEJhLE1BQUFBLHNCQUFzQixFQUFFcEIsT0FBTyxDQUFDb0Isc0JBSmhCO0FBS2hCakIsTUFBQUEsSUFBSSxFQUFFQSxJQUxVO0FBTWhCTSxNQUFBQSxpQkFBaUIsRUFBRVQsT0FBTyxDQUFDUztBQU5YLEtBQUQsQ0FEdkI7QUFVSDs7QUFDRCxTQUFPeUQsT0FBTyxDQUFDQyxHQUFSLENBQVlKLE1BQVosQ0FBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGUgbm8tYW55IG5vLXVuc2FmZS1hbnkgbm8taW52YWxpZC10aGlzXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgTWluaUNzc0V4dHJhY3RQbHVnaW4gZnJvbSBcIm1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXCI7XG5pbXBvcnQgd2VicGFjaywgeyBDb25maWd1cmF0aW9uIH0gZnJvbSBcIndlYnBhY2tcIjtcblxuaW1wb3J0IHsgQnVpbGRDYWNoZSwgRm9ybUJ1aWxkQ2FjaGVPcHRpb25zIH0gZnJvbSBcIi4vQ2FjaGVBc3NldHNQbHVnaW5cIjtcblxuaW50ZXJmYWNlIENyZWF0ZVdlYnBhY2tDb25maWd1cmF0aW9uVmFyaWFudE9wdGlvbnMge1xuICAgIGdmdjogc3RyaW5nO1xuICAgIHJlc291cmNlc0hhc2g6IHN0cmluZztcbiAgICBmb3Jtc0RpcmVjdG9yeVBhdGg6IHN0cmluZztcbiAgICBtb2RlPzogXCJwcm9kdWN0aW9uXCIgfCBcImRldmVsb3BtZW50XCI7XG4gICAgcmVzb3VyY2VzRGlyZWN0b3J5UGF0aDogc3RyaW5nO1xuICAgIGJ1aWxkQ2FjaGVPcHRpb25zPzogRm9ybUJ1aWxkQ2FjaGVPcHRpb25zO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVDb25maWdWYXJpYW50KG9wdGlvbnM6IENyZWF0ZVdlYnBhY2tDb25maWd1cmF0aW9uVmFyaWFudE9wdGlvbnMpOiBQcm9taXNlPENvbmZpZ3VyYXRpb24+IHtcbiAgICBjb25zdCB7IGdmdiB9ID0gb3B0aW9ucztcblxuICAgIGNvbnN0IGZpbGVOYW1lU3VmZml4ID0gb3B0aW9ucy5tb2RlID09PSBcInByb2R1Y3Rpb25cIiA/IFwiLm1pblwiIDogXCJcIjtcblxuICAgIGNvbnN0IGZvcm1QYXRoID0gcGF0aC5qb2luKG9wdGlvbnMuZm9ybXNEaXJlY3RvcnlQYXRoLCBnZnYpO1xuICAgIGNvbnN0IGJ1aWxkQ2FjaGUgPVxuICAgICAgICBvcHRpb25zLmJ1aWxkQ2FjaGVPcHRpb25zICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBuZXcgQnVpbGRDYWNoZShvcHRpb25zLmJ1aWxkQ2FjaGVPcHRpb25zLmZhcm1EaXJlY3RvcnksIG9wdGlvbnMuYnVpbGRDYWNoZU9wdGlvbnMubW9kZSlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgYnVpbGRDYWNoZVdlYnBhY2tQbHVnaW4gPVxuICAgICAgICBidWlsZENhY2hlICE9IHVuZGVmaW5lZCAmJiBvcHRpb25zLmJ1aWxkQ2FjaGVPcHRpb25zICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBhd2FpdCBidWlsZENhY2hlLmNyZWF0ZVdlYnBhY2tQbHVnaW4ob3B0aW9ucy5idWlsZENhY2hlT3B0aW9ucylcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgbW9kZTogb3B0aW9ucy5tb2RlLFxuICAgICAgICB0YXJnZXQ6IFtcIndlYlwiLCBcImVzNVwiXSxcbiAgICAgICAgY29udGV4dDogcGF0aC5yZXNvbHZlKG9wdGlvbnMuZm9ybXNEaXJlY3RvcnlQYXRoLCBcIi4uXCIpLFxuICAgICAgICBvdXRwdXQ6IHtcbiAgICAgICAgICAgIGZpbGVuYW1lOiBgcHVibGljL3NjcmlwdHMvJHtnZnZ9JHtmaWxlTmFtZVN1ZmZpeH0uanNgLFxuICAgICAgICAgICAgcGF0aDogb3B0aW9ucy5yZXNvdXJjZXNEaXJlY3RvcnlQYXRoLFxuICAgICAgICAgICAgcHVibGljUGF0aDogXCIvc3RhdGljL1wiLFxuICAgICAgICB9LFxuICAgICAgICByZXNvbHZlOiB7XG4gICAgICAgICAgICBhbGlhczoge1xuICAgICAgICAgICAgICAgIFwidmFyaWFibGVzLmxlc3NcIjogcGF0aC5yZXNvbHZlKHBhdGguam9pbihfX2Rpcm5hbWUsIFwidmFyaWFibGVzLmxlc3NcIikpLFxuICAgICAgICAgICAgICAgIHZhcmlhYmxlczogcGF0aC5yZXNvbHZlKHBhdGguam9pbihfX2Rpcm5hbWUsIFwidmFyaWFibGVzLmxlc3NcIikpLFxuICAgICAgICAgICAgICAgIFJlc291cmNlczogcGF0aC5qb2luKGZvcm1QYXRoLCBcImZvcm1cIiwgXCJyZXNvdXJjZXNcIiksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXh0ZW5zaW9uczogW1wiLmpzXCIsIFwiLmpzeFwiXSxcbiAgICAgICAgfSxcbiAgICAgICAgZW50cnk6IFtwYXRoLmpvaW4oZm9ybVBhdGgsIFwiZm9ybVwiLCBcIi4vd2ViXCIpXSxcbiAgICAgICAgZGV2dG9vbDogb3B0aW9ucy5tb2RlID09PSBcInByb2R1Y3Rpb25cIiA/IHVuZGVmaW5lZCA6IFwiaW5saW5lLXNvdXJjZS1tYXBcIixcbiAgICAgICAgbW9kdWxlOiB7XG4gICAgICAgICAgICBydWxlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGVzdDogL1xcLmxlc3MkLyxcbiAgICAgICAgICAgICAgICAgICAgdXNlOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXI6IE1pbmlDc3NFeHRyYWN0UGx1Z2luLmxvYWRlciBhcyBhbnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogeyBwdWJsaWNQYXRoOiBcIi4uLy4uL1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlcjogcmVxdWlyZS5yZXNvbHZlKFwiY3NzLWxvYWRlclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsSWRlbnROYW1lOiBcIltoYXNoOmJhc2U2NDo1XVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlcjogcmVxdWlyZS5yZXNvbHZlKFwicG9zdGNzcy1sb2FkZXJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0Y3NzT3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnQ6IFwicG9zdGNzc1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUgbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW5zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlKFwiYXV0b3ByZWZpeGVyXCIpKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g0J/RgNC+0YHRgtC+INC00LXRhNC+0LvRgtC90YvQtSDQt9C90LDRh9C10L3QuNC1INC40Lcg0YLQtdC60YPRidC10LPQviAoMS43LjcpIGJyb3dzZXJzbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZUJyb3dzZXJzbGlzdDogXCI+IDElLCBsYXN0IDIgdmVyc2lvbnMsIEZpcmVmb3ggRVNSXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlcjogcmVxdWlyZS5yZXNvbHZlKFwibGVzcy1sb2FkZXJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0ZXN0OiAvXFwuanN4PyQvLFxuICAgICAgICAgICAgICAgICAgICB1c2U6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXI6IHJlcXVpcmUucmVzb2x2ZShcImJhYmVsLWxvYWRlclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhYmVscmM6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdGaWxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2V0czogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZS5yZXNvbHZlKFwiQGJhYmVsL3ByZXNldC1yZWFjdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlLnJlc29sdmUoXCJAYmFiZWwvcHJlc2V0LWVudlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldHM6IHsgYnJvd3NlcnM6IFwiPiAwJVwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3NlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW5zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZS5yZXNvbHZlKFwiQGJhYmVsL3BsdWdpbi1wcm9wb3NhbC1kZWNvcmF0b3JzXCIpLCB7IGxlZ2FjeTogdHJ1ZSB9XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlLnJlc29sdmUoXCJAYmFiZWwvcGx1Z2luLXByb3Bvc2FsLWNsYXNzLXByb3BlcnRpZXNcIiksIHsgbG9vc2U6IHRydWUgfV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlLnJlc29sdmUoXCJAYmFiZWwvcGx1Z2luLXByb3Bvc2FsLWV4cG9ydC1kZWZhdWx0LWZyb21cIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGU6IFsvbm9kZV9tb2R1bGVzL10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRlc3Q6IC9cXC4ocG5nfHN2ZykkLyxcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyOiByZXF1aXJlLnJlc29sdmUoXCJmaWxlLWxvYWRlclwiKSxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogeyBuYW1lOiBcInB1YmxpYy9pbWFnZXMvW2hhc2hdLltleHRdXCIgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGVzdDogL1xcLih0dGZ8ZW90fHdvZmYyPykkLyxcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyOiByZXF1aXJlLnJlc29sdmUoXCJmaWxlLWxvYWRlclwiKSxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogeyBuYW1lOiBcInB1YmxpYy9mb250cy9baGFzaF0uW2V4dF1cIiB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yINCf0L7Rh9C40L3QuNGC0YHRjywg0LrQvtCz0LTQsCDQstGB0LUg0LvQuNCx0Ysg0L7QsdC90L7QstGP0YLRgdGPXG4gICAgICAgIHBsdWdpbnM6IFtcbiAgICAgICAgICAgIG5ldyBNaW5pQ3NzRXh0cmFjdFBsdWdpbih7XG4gICAgICAgICAgICAgICAgZmlsZW5hbWU6IGBwdWJsaWMvc3R5bGVzLyR7Z2Z2fSR7ZmlsZU5hbWVTdWZmaXh9LmNzc2AsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyB3ZWJwYWNrLkRlZmluZVBsdWdpbih7XG4gICAgICAgICAgICAgICAgXCJwcm9jZXNzLmVudlwiOiB7XG4gICAgICAgICAgICAgICAgICAgIEdGVjogSlNPTi5zdHJpbmdpZnkoZ2Z2KSxcbiAgICAgICAgICAgICAgICAgICAgTk9ERV9FTlY6IEpTT04uc3RyaW5naWZ5KG9wdGlvbnMubW9kZSksXG4gICAgICAgICAgICAgICAgICAgIFJFU09VUkNFU19IQVNIOiBKU09OLnN0cmluZ2lmeShvcHRpb25zLnJlc291cmNlc0hhc2gpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGJ1aWxkQ2FjaGVXZWJwYWNrUGx1Z2luLFxuICAgICAgICBdLmZpbHRlcihpc05vdE51bGxPclVuZGVmaW5lZCksXG4gICAgfTtcbn1cblxuZnVuY3Rpb24gaXNOb3ROdWxsT3JVbmRlZmluZWQ8VD4oaW5wdXQ6IFQgfCB1bmRlZmluZWQgfCBudWxsKTogaW5wdXQgaXMgVCB7XG4gICAgcmV0dXJuIGlucHV0ICE9IHVuZGVmaW5lZDtcbn1cblxudHlwZSBCdWlsZE1vZGUgPSBcInByb2R1Y3Rpb25cIiB8IFwiZGV2ZWxvcG1lbnRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVXZWJwYWNrQ29uZmlndXJhdGlvbk9wdGlvbnMge1xuICAgIGdmdjogc3RyaW5nO1xuICAgIHJlc291cmNlc0hhc2g6IHN0cmluZztcbiAgICBmb3Jtc0RpcmVjdG9yeVBhdGg6IHN0cmluZztcbiAgICByZXNvdXJjZXNEaXJlY3RvcnlQYXRoOiBzdHJpbmc7XG4gICAgbW9kZXM6IEJ1aWxkTW9kZVtdO1xuICAgIGJ1aWxkQ2FjaGVPcHRpb25zPzogRm9ybUJ1aWxkQ2FjaGVPcHRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29uZmlnKG9wdGlvbnM6IENyZWF0ZVdlYnBhY2tDb25maWd1cmF0aW9uT3B0aW9ucyk6IFByb21pc2U8Q29uZmlndXJhdGlvbltdPiB7XG4gICAgY29uc3QgcmVzdWx0OiBBcnJheTxQcm9taXNlPENvbmZpZ3VyYXRpb24+PiA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBtb2RlIG9mIG9wdGlvbnMubW9kZXMpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goXG4gICAgICAgICAgICBjcmVhdGVDb25maWdWYXJpYW50KHtcbiAgICAgICAgICAgICAgICBnZnY6IG9wdGlvbnMuZ2Z2LFxuICAgICAgICAgICAgICAgIHJlc291cmNlc0hhc2g6IG9wdGlvbnMucmVzb3VyY2VzSGFzaCxcbiAgICAgICAgICAgICAgICBmb3Jtc0RpcmVjdG9yeVBhdGg6IG9wdGlvbnMuZm9ybXNEaXJlY3RvcnlQYXRoLFxuICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeVBhdGg6IG9wdGlvbnMucmVzb3VyY2VzRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgICAgICAgICBtb2RlOiBtb2RlLFxuICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zOiBvcHRpb25zLmJ1aWxkQ2FjaGVPcHRpb25zLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKHJlc3VsdCk7XG59XG4iXX0=
138
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX21pbmlDc3NFeHRyYWN0UGx1Z2luIiwiX3dlYnBhY2siLCJfQ2FjaGVBc3NldHNQbHVnaW4iLCJjcmVhdGVDb25maWdWYXJpYW50Iiwib3B0aW9ucyIsImdmdiIsImZpbGVOYW1lU3VmZml4IiwibW9kZSIsImZvcm1QYXRoIiwicGF0aCIsImpvaW4iLCJmb3Jtc0RpcmVjdG9yeVBhdGgiLCJidWlsZENhY2hlIiwiYnVpbGRDYWNoZU9wdGlvbnMiLCJ1bmRlZmluZWQiLCJCdWlsZENhY2hlIiwiZmFybURpcmVjdG9yeSIsImJ1aWxkQ2FjaGVXZWJwYWNrUGx1Z2luIiwiY3JlYXRlV2VicGFja1BsdWdpbiIsInRhcmdldCIsImNvbnRleHQiLCJyZXNvbHZlIiwib3V0cHV0IiwiZmlsZW5hbWUiLCJyZXNvdXJjZXNEaXJlY3RvcnlQYXRoIiwicHVibGljUGF0aCIsImFsaWFzIiwiX19kaXJuYW1lIiwidmFyaWFibGVzIiwiUmVzb3VyY2VzIiwiZXh0ZW5zaW9ucyIsImVudHJ5IiwiZGV2dG9vbCIsIm1vZHVsZSIsInJ1bGVzIiwidGVzdCIsInVzZSIsImxvYWRlciIsIk1pbmlDc3NFeHRyYWN0UGx1Z2luIiwibW9kdWxlcyIsImxvY2FsSWRlbnROYW1lIiwicG9zdGNzc09wdGlvbnMiLCJpZGVudCIsInBsdWdpbnMiLCJvdmVycmlkZUJyb3dzZXJzbGlzdCIsImJhYmVscmMiLCJjb25maWdGaWxlIiwicHJlc2V0cyIsInRhcmdldHMiLCJicm93c2VycyIsImxvb3NlIiwibGVnYWN5IiwiZXhjbHVkZSIsIm5hbWUiLCJ3ZWJwYWNrIiwiRGVmaW5lUGx1Z2luIiwiR0ZWIiwiSlNPTiIsInN0cmluZ2lmeSIsIk5PREVfRU5WIiwiUkVTT1VSQ0VTX0hBU0giLCJyZXNvdXJjZXNIYXNoIiwiZmlsdGVyIiwiaXNOb3ROdWxsT3JVbmRlZmluZWQiLCJpbnB1dCIsImNyZWF0ZUNvbmZpZyIsInJlc3VsdCIsIm1vZGVzIiwicHVzaCIsIlByb21pc2UiLCJhbGwiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvRm9ybVdlYnBhY2tDb25maWd1cmF0aW9uL2NyZWF0ZUZvcm1XZWJwYWNrQ29uZmlndXJhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0c2xpbnQ6ZGlzYWJsZSBuby1hbnkgbm8tdW5zYWZlLWFueSBuby1pbnZhbGlkLXRoaXNcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCBNaW5pQ3NzRXh0cmFjdFBsdWdpbiBmcm9tIFwibWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cIjtcbmltcG9ydCB3ZWJwYWNrLCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tIFwid2VicGFja1wiO1xuXG5pbXBvcnQgeyBCdWlsZENhY2hlLCBGb3JtQnVpbGRDYWNoZU9wdGlvbnMgfSBmcm9tIFwiLi9DYWNoZUFzc2V0c1BsdWdpblwiO1xuXG5pbnRlcmZhY2UgQ3JlYXRlV2VicGFja0NvbmZpZ3VyYXRpb25WYXJpYW50T3B0aW9ucyB7XG4gICAgZ2Z2OiBzdHJpbmc7XG4gICAgcmVzb3VyY2VzSGFzaDogc3RyaW5nO1xuICAgIGZvcm1zRGlyZWN0b3J5UGF0aDogc3RyaW5nO1xuICAgIG1vZGU/OiBcInByb2R1Y3Rpb25cIiB8IFwiZGV2ZWxvcG1lbnRcIjtcbiAgICByZXNvdXJjZXNEaXJlY3RvcnlQYXRoOiBzdHJpbmc7XG4gICAgYnVpbGRDYWNoZU9wdGlvbnM/OiBGb3JtQnVpbGRDYWNoZU9wdGlvbnM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNvbmZpZ1ZhcmlhbnQob3B0aW9uczogQ3JlYXRlV2VicGFja0NvbmZpZ3VyYXRpb25WYXJpYW50T3B0aW9ucyk6IFByb21pc2U8Q29uZmlndXJhdGlvbj4ge1xuICAgIGNvbnN0IHsgZ2Z2IH0gPSBvcHRpb25zO1xuXG4gICAgY29uc3QgZmlsZU5hbWVTdWZmaXggPSBvcHRpb25zLm1vZGUgPT09IFwicHJvZHVjdGlvblwiID8gXCIubWluXCIgOiBcIlwiO1xuXG4gICAgY29uc3QgZm9ybVBhdGggPSBwYXRoLmpvaW4ob3B0aW9ucy5mb3Jtc0RpcmVjdG9yeVBhdGgsIGdmdik7XG4gICAgY29uc3QgYnVpbGRDYWNoZSA9XG4gICAgICAgIG9wdGlvbnMuYnVpbGRDYWNoZU9wdGlvbnMgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IG5ldyBCdWlsZENhY2hlKG9wdGlvbnMuYnVpbGRDYWNoZU9wdGlvbnMuZmFybURpcmVjdG9yeSwgb3B0aW9ucy5idWlsZENhY2hlT3B0aW9ucy5tb2RlKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBidWlsZENhY2hlV2VicGFja1BsdWdpbiA9XG4gICAgICAgIGJ1aWxkQ2FjaGUgIT0gdW5kZWZpbmVkICYmIG9wdGlvbnMuYnVpbGRDYWNoZU9wdGlvbnMgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IGF3YWl0IGJ1aWxkQ2FjaGUuY3JlYXRlV2VicGFja1BsdWdpbihvcHRpb25zLmJ1aWxkQ2FjaGVPcHRpb25zKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBtb2RlOiBvcHRpb25zLm1vZGUsXG4gICAgICAgIHRhcmdldDogW1wid2ViXCIsIFwiZXM1XCJdLFxuICAgICAgICBjb250ZXh0OiBwYXRoLnJlc29sdmUob3B0aW9ucy5mb3Jtc0RpcmVjdG9yeVBhdGgsIFwiLi5cIiksXG4gICAgICAgIG91dHB1dDoge1xuICAgICAgICAgICAgZmlsZW5hbWU6IGBwdWJsaWMvc2NyaXB0cy8ke2dmdn0ke2ZpbGVOYW1lU3VmZml4fS5qc2AsXG4gICAgICAgICAgICBwYXRoOiBvcHRpb25zLnJlc291cmNlc0RpcmVjdG9yeVBhdGgsXG4gICAgICAgICAgICBwdWJsaWNQYXRoOiBcIi9zdGF0aWMvXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHJlc29sdmU6IHtcbiAgICAgICAgICAgIGFsaWFzOiB7XG4gICAgICAgICAgICAgICAgXCJ2YXJpYWJsZXMubGVzc1wiOiBwYXRoLnJlc29sdmUocGF0aC5qb2luKF9fZGlybmFtZSwgXCJ2YXJpYWJsZXMubGVzc1wiKSksXG4gICAgICAgICAgICAgICAgdmFyaWFibGVzOiBwYXRoLnJlc29sdmUocGF0aC5qb2luKF9fZGlybmFtZSwgXCJ2YXJpYWJsZXMubGVzc1wiKSksXG4gICAgICAgICAgICAgICAgUmVzb3VyY2VzOiBwYXRoLmpvaW4oZm9ybVBhdGgsIFwiZm9ybVwiLCBcInJlc291cmNlc1wiKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBleHRlbnNpb25zOiBbXCIuanNcIiwgXCIuanN4XCJdLFxuICAgICAgICB9LFxuICAgICAgICBlbnRyeTogW3BhdGguam9pbihmb3JtUGF0aCwgXCJmb3JtXCIsIFwiLi93ZWJcIildLFxuICAgICAgICBkZXZ0b29sOiBvcHRpb25zLm1vZGUgPT09IFwicHJvZHVjdGlvblwiID8gdW5kZWZpbmVkIDogXCJpbmxpbmUtc291cmNlLW1hcFwiLFxuICAgICAgICBtb2R1bGU6IHtcbiAgICAgICAgICAgIHJ1bGVzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0ZXN0OiAvXFwubGVzcyQvLFxuICAgICAgICAgICAgICAgICAgICB1c2U6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlcjogTWluaUNzc0V4dHJhY3RQbHVnaW4ubG9hZGVyIGFzIGFueSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7IHB1YmxpY1BhdGg6IFwiLi4vLi4vXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVyOiByZXF1aXJlLnJlc29sdmUoXCJjc3MtbG9hZGVyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxJZGVudE5hbWU6IFwiW2hhc2g6YmFzZTY0OjVdXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVyOiByZXF1aXJlLnJlc29sdmUoXCJwb3N0Y3NzLWxvYWRlclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3Rjc3NPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudDogXCJwb3N0Y3NzXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZSBuby1yZXF1aXJlLWltcG9ydHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdWdpbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmUoXCJhdXRvcHJlZml4ZXJcIikoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDQn9GA0L7RgdGC0L4g0LTQtdGE0L7Qu9GC0L3Ri9C1INC30L3QsNGH0LXQvdC40LUg0LjQtyDRgtC10LrRg9GJ0LXQs9C+ICgxLjcuNykgYnJvd3NlcnNsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlQnJvd3NlcnNsaXN0OiBcIj4gMSUsIGxhc3QgMiB2ZXJzaW9ucywgRmlyZWZveCBFU1JcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVyOiByZXF1aXJlLnJlc29sdmUoXCJsZXNzLWxvYWRlclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRlc3Q6IC9cXC5qc3g/JC8sXG4gICAgICAgICAgICAgICAgICAgIHVzZTogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlcjogcmVxdWlyZS5yZXNvbHZlKFwiYmFiZWwtbG9hZGVyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFiZWxyYzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0ZpbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZXRzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlLnJlc29sdmUoXCJAYmFiZWwvcHJlc2V0LXJlYWN0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmUucmVzb2x2ZShcIkBiYWJlbC9wcmVzZXQtZW52XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0czogeyBicm93c2VyczogXCI+IDAlXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vc2U6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdWdpbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlLnJlc29sdmUoXCJAYmFiZWwvcGx1Z2luLXByb3Bvc2FsLWRlY29yYXRvcnNcIiksIHsgbGVnYWN5OiB0cnVlIH1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmUucmVzb2x2ZShcIkBiYWJlbC9wbHVnaW4tcHJvcG9zYWwtY2xhc3MtcHJvcGVydGllc1wiKSwgeyBsb29zZTogdHJ1ZSB9XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmUucmVzb2x2ZShcIkBiYWJlbC9wbHVnaW4tcHJvcG9zYWwtZXhwb3J0LWRlZmF1bHQtZnJvbVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgZXhjbHVkZTogWy9ub2RlX21vZHVsZXMvXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGVzdDogL1xcLihwbmd8c3ZnKSQvLFxuICAgICAgICAgICAgICAgICAgICBsb2FkZXI6IHJlcXVpcmUucmVzb2x2ZShcImZpbGUtbG9hZGVyXCIpLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7IG5hbWU6IFwicHVibGljL2ltYWdlcy9baGFzaF0uW2V4dF1cIiB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0ZXN0OiAvXFwuKHR0Znxlb3R8d29mZjI/KSQvLFxuICAgICAgICAgICAgICAgICAgICBsb2FkZXI6IHJlcXVpcmUucmVzb2x2ZShcImZpbGUtbG9hZGVyXCIpLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7IG5hbWU6IFwicHVibGljL2ZvbnRzL1toYXNoXS5bZXh0XVwiIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3Ig0J/QvtGH0LjQvdC40YLRgdGPLCDQutC+0LPQtNCwINCy0YHQtSDQu9C40LHRiyDQvtCx0L3QvtCy0Y/RgtGB0Y9cbiAgICAgICAgcGx1Z2luczogW1xuICAgICAgICAgICAgbmV3IE1pbmlDc3NFeHRyYWN0UGx1Z2luKHtcbiAgICAgICAgICAgICAgICBmaWxlbmFtZTogYHB1YmxpYy9zdHlsZXMvJHtnZnZ9JHtmaWxlTmFtZVN1ZmZpeH0uY3NzYCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IHdlYnBhY2suRGVmaW5lUGx1Z2luKHtcbiAgICAgICAgICAgICAgICBcInByb2Nlc3MuZW52XCI6IHtcbiAgICAgICAgICAgICAgICAgICAgR0ZWOiBKU09OLnN0cmluZ2lmeShnZnYpLFxuICAgICAgICAgICAgICAgICAgICBOT0RFX0VOVjogSlNPTi5zdHJpbmdpZnkob3B0aW9ucy5tb2RlKSxcbiAgICAgICAgICAgICAgICAgICAgUkVTT1VSQ0VTX0hBU0g6IEpTT04uc3RyaW5naWZ5KG9wdGlvbnMucmVzb3VyY2VzSGFzaCksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgYnVpbGRDYWNoZVdlYnBhY2tQbHVnaW4sXG4gICAgICAgIF0uZmlsdGVyKGlzTm90TnVsbE9yVW5kZWZpbmVkKSxcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBpc05vdE51bGxPclVuZGVmaW5lZDxUPihpbnB1dDogVCB8IHVuZGVmaW5lZCB8IG51bGwpOiBpbnB1dCBpcyBUIHtcbiAgICByZXR1cm4gaW5wdXQgIT0gdW5kZWZpbmVkO1xufVxuXG50eXBlIEJ1aWxkTW9kZSA9IFwicHJvZHVjdGlvblwiIHwgXCJkZXZlbG9wbWVudFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVdlYnBhY2tDb25maWd1cmF0aW9uT3B0aW9ucyB7XG4gICAgZ2Z2OiBzdHJpbmc7XG4gICAgcmVzb3VyY2VzSGFzaDogc3RyaW5nO1xuICAgIGZvcm1zRGlyZWN0b3J5UGF0aDogc3RyaW5nO1xuICAgIHJlc291cmNlc0RpcmVjdG9yeVBhdGg6IHN0cmluZztcbiAgICBtb2RlczogQnVpbGRNb2RlW107XG4gICAgYnVpbGRDYWNoZU9wdGlvbnM/OiBGb3JtQnVpbGRDYWNoZU9wdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb25maWcob3B0aW9uczogQ3JlYXRlV2VicGFja0NvbmZpZ3VyYXRpb25PcHRpb25zKTogUHJvbWlzZTxDb25maWd1cmF0aW9uW10+IHtcbiAgICBjb25zdCByZXN1bHQ6IEFycmF5PFByb21pc2U8Q29uZmlndXJhdGlvbj4+ID0gW107XG5cbiAgICBmb3IgKGNvbnN0IG1vZGUgb2Ygb3B0aW9ucy5tb2Rlcykge1xuICAgICAgICByZXN1bHQucHVzaChcbiAgICAgICAgICAgIGNyZWF0ZUNvbmZpZ1ZhcmlhbnQoe1xuICAgICAgICAgICAgICAgIGdmdjogb3B0aW9ucy5nZnYsXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzSGFzaDogb3B0aW9ucy5yZXNvdXJjZXNIYXNoLFxuICAgICAgICAgICAgICAgIGZvcm1zRGlyZWN0b3J5UGF0aDogb3B0aW9ucy5mb3Jtc0RpcmVjdG9yeVBhdGgsXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5UGF0aDogb3B0aW9ucy5yZXNvdXJjZXNEaXJlY3RvcnlQYXRoLFxuICAgICAgICAgICAgICAgIG1vZGU6IG1vZGUsXG4gICAgICAgICAgICAgICAgYnVpbGRDYWNoZU9wdGlvbnM6IG9wdGlvbnMuYnVpbGRDYWNoZU9wdGlvbnMsXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocmVzdWx0KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLHFCQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRyxrQkFBQSxHQUFBSCxPQUFBO0FBTkE7O0FBaUJBLGVBQWVJLG1CQUFtQkEsQ0FBQ0MsT0FBaUQsRUFBMEI7RUFDMUcsTUFBTTtJQUFFQztFQUFJLENBQUMsR0FBR0QsT0FBTztFQUV2QixNQUFNRSxjQUFjLEdBQUdGLE9BQU8sQ0FBQ0csSUFBSSxLQUFLLFlBQVksR0FBRyxNQUFNLEdBQUcsRUFBRTtFQUVsRSxNQUFNQyxR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
@@ -1,23 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  var _fs = require("fs");
4
-
5
4
  var _BuildFormsOptions = require("./CLICommands/BuildForms/BuildFormsOptions");
6
-
7
5
  var _DevBuildOptions = require("./CLICommands/DevBuild/DevBuildOptions");
8
-
9
6
  var _FormStatsOptions = require("./CLICommands/FormStats/FormStatsOptions");
10
-
11
7
  var _LocalizationOptions = require("./CLICommands/Localization/LocalizationOptions");
12
-
13
8
  var _UpgradeFormOptions = require("./CLICommands/UpgradeForm/UpgradeFormOptions");
14
-
15
9
  var _InitFormOptions = require("./CLICommands/InitForm/InitFormOptions");
16
-
17
10
  var _BuildServerServerOptions = require("./CLICommands/BuildServer/BuildServerServerOptions");
18
-
19
11
  const commandDefs = [_BuildFormsOptions.buildFormsOptionsDefinition, _UpgradeFormOptions.upgradeFormCommandDefinition, _DevBuildOptions.devBuildCommandDefinition, _BuildServerServerOptions.devBuildServerCommandDefinition, _BuildServerServerOptions.buildServerCommandDefinition, _LocalizationOptions.localizationCommandDefinition, _InitFormOptions.initFormCommandDefinition, _FormStatsOptions.formStatsCommandDefinition];
20
-
21
12
  function createOptionReadMe(x) {
22
13
  return `
23
14
  * \`--${x.name}${x.alias ? ` (-${x.alias})` : ""}\`
@@ -25,7 +16,6 @@ function createOptionReadMe(x) {
25
16
  ${x.description}
26
17
  `.trim();
27
18
  }
28
-
29
19
  function createCommandReadMe(x) {
30
20
  return `
31
21
  ## \`candy ${x.name}\`
@@ -42,7 +32,6 @@ ${x.examples ? x.examples : ""}
42
32
  ${x.extendedDetails ? x.extendedDetails : ""}
43
33
  `;
44
34
  }
45
-
46
35
  function createReadMe() {
47
36
  return `
48
37
  # Candy Tools
@@ -61,6 +50,5 @@ ${commandDefs.map(x => `* \`${x.name}\``).join("\n")}
61
50
  ${commandDefs.map(createCommandReadMe).join("\n")}
62
51
  `.trim();
63
52
  }
64
-
65
53
  (0, _fs.writeFileSync)("README.md", createReadMe());
66
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9HZW5lcmF0ZVJlYWRNZS50cyJdLCJuYW1lcyI6WyJjb21tYW5kRGVmcyIsImJ1aWxkRm9ybXNPcHRpb25zRGVmaW5pdGlvbiIsInVwZ3JhZGVGb3JtQ29tbWFuZERlZmluaXRpb24iLCJkZXZCdWlsZENvbW1hbmREZWZpbml0aW9uIiwiZGV2QnVpbGRTZXJ2ZXJDb21tYW5kRGVmaW5pdGlvbiIsImJ1aWxkU2VydmVyQ29tbWFuZERlZmluaXRpb24iLCJsb2NhbGl6YXRpb25Db21tYW5kRGVmaW5pdGlvbiIsImluaXRGb3JtQ29tbWFuZERlZmluaXRpb24iLCJmb3JtU3RhdHNDb21tYW5kRGVmaW5pdGlvbiIsImNyZWF0ZU9wdGlvblJlYWRNZSIsIngiLCJuYW1lIiwiYWxpYXMiLCJkZXNjcmlwdGlvbiIsInRyaW0iLCJjcmVhdGVDb21tYW5kUmVhZE1lIiwiZGV0YWlsZWREZXNjcmlwdGlvbiIsIm9wdGlvbnMiLCJtYXAiLCJqb2luIiwiZXhhbXBsZXMiLCJleHRlbmRlZERldGFpbHMiLCJjcmVhdGVSZWFkTWUiXSwibWFwcGluZ3MiOiI7O0FBQUE7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBS0EsTUFBTUEsV0FBVyxHQUFHLENBQ2hCQyw4Q0FEZ0IsRUFFaEJDLGdEQUZnQixFQUdoQkMsMENBSGdCLEVBSWhCQyx5REFKZ0IsRUFLaEJDLHNEQUxnQixFQU1oQkMsa0RBTmdCLEVBT2hCQywwQ0FQZ0IsRUFRaEJDLDRDQVJnQixDQUFwQjs7QUFXQSxTQUFTQyxrQkFBVCxDQUE0QkMsQ0FBNUIsRUFBa0U7QUFDOUQsU0FBUTtBQUNaLFFBQVFBLENBQUMsQ0FBQ0MsSUFBSyxHQUFFRCxDQUFDLENBQUNFLEtBQUYsR0FBVyxNQUFLRixDQUFDLENBQUNFLEtBQU0sR0FBeEIsR0FBNkIsRUFBRztBQUNqRDtBQUNBLElBQUlGLENBQUMsQ0FBQ0csV0FBWTtBQUNsQixDQUpXLENBSVRDLElBSlMsRUFBUDtBQUtIOztBQUVELFNBQVNDLG1CQUFULENBQTZCTCxDQUE3QixFQUE0RTtBQUN4RSxTQUFRO0FBQ1osYUFBYUEsQ0FBQyxDQUFDQyxJQUFLO0FBQ3BCO0FBQ0EsRUFBRUQsQ0FBQyxDQUFDTSxtQkFBRixHQUF3Qk4sQ0FBQyxDQUFDTSxtQkFBMUIsR0FBZ0ROLENBQUMsQ0FBQ0csV0FBWTtBQUNoRTtBQUNBO0FBQ0E7QUFDQSxFQUFFSCxDQUFDLENBQUNPLE9BQUYsQ0FBVUMsR0FBVixDQUFjVCxrQkFBZCxFQUFrQ1UsSUFBbEMsQ0FBdUMsTUFBdkMsQ0FBK0M7QUFDakQ7QUFDQSxFQUFFVCxDQUFDLENBQUNVLFFBQUYsR0FBYSwyQkFBYixHQUEyQyxFQUFHO0FBQ2hELEVBQUVWLENBQUMsQ0FBQ1UsUUFBRixHQUFhVixDQUFDLENBQUNVLFFBQWYsR0FBMEIsRUFBRztBQUMvQjtBQUNBLEVBQUVWLENBQUMsQ0FBQ1csZUFBRixHQUFvQlgsQ0FBQyxDQUFDVyxlQUF0QixHQUF3QyxFQUFHO0FBQzdDLENBYkk7QUFjSDs7QUFFRCxTQUFTQyxZQUFULEdBQWdDO0FBQzVCLFNBQVE7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRXRCLFdBQVcsQ0FBQ2tCLEdBQVosQ0FBZ0JSLENBQUMsSUFBSyxPQUFNQSxDQUFDLENBQUNDLElBQUssSUFBbkMsRUFBd0NRLElBQXhDLENBQTZDLElBQTdDLENBQW1EO0FBQ3JEO0FBQ0EsRUFBRW5CLFdBQVcsQ0FBQ2tCLEdBQVosQ0FBZ0JILG1CQUFoQixFQUFxQ0ksSUFBckMsQ0FBMEMsSUFBMUMsQ0FBZ0Q7QUFDbEQsS0FmVyxDQWVMTCxJQWZLLEVBQVA7QUFnQkg7O0FBRUQsdUJBQWMsV0FBZCxFQUEyQlEsWUFBWSxFQUF2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHdyaXRlRmlsZVN5bmMgfSBmcm9tIFwiZnNcIjtcblxuaW1wb3J0IHsgQ29tbWFuZERlZmluaXRpb24sIE9wdGlvbkRlZmluaXRpb24gfSBmcm9tIFwiLi9Db21tb25zL09wdGlvbnMvQ29tbWFuZEJhc2VkT3B0aW9uc1BhcnNlclwiO1xuaW1wb3J0IHsgYnVpbGRGb3Jtc09wdGlvbnNEZWZpbml0aW9uIH0gZnJvbSBcIi4vQ0xJQ29tbWFuZHMvQnVpbGRGb3Jtcy9CdWlsZEZvcm1zT3B0aW9uc1wiO1xuaW1wb3J0IHsgZGV2QnVpbGRDb21tYW5kRGVmaW5pdGlvbiB9IGZyb20gXCIuL0NMSUNvbW1hbmRzL0RldkJ1aWxkL0RldkJ1aWxkT3B0aW9uc1wiO1xuaW1wb3J0IHsgZm9ybVN0YXRzQ29tbWFuZERlZmluaXRpb24gfSBmcm9tIFwiLi9DTElDb21tYW5kcy9Gb3JtU3RhdHMvRm9ybVN0YXRzT3B0aW9uc1wiO1xuaW1wb3J0IHsgbG9jYWxpemF0aW9uQ29tbWFuZERlZmluaXRpb24gfSBmcm9tIFwiLi9DTElDb21tYW5kcy9Mb2NhbGl6YXRpb24vTG9jYWxpemF0aW9uT3B0aW9uc1wiO1xuaW1wb3J0IHsgdXBncmFkZUZvcm1Db21tYW5kRGVmaW5pdGlvbiB9IGZyb20gXCIuL0NMSUNvbW1hbmRzL1VwZ3JhZGVGb3JtL1VwZ3JhZGVGb3JtT3B0aW9uc1wiO1xuaW1wb3J0IHsgaW5pdEZvcm1Db21tYW5kRGVmaW5pdGlvbiB9IGZyb20gXCIuL0NMSUNvbW1hbmRzL0luaXRGb3JtL0luaXRGb3JtT3B0aW9uc1wiO1xuaW1wb3J0IHtcbiAgICBidWlsZFNlcnZlckNvbW1hbmREZWZpbml0aW9uLFxuICAgIGRldkJ1aWxkU2VydmVyQ29tbWFuZERlZmluaXRpb24sXG59IGZyb20gXCIuL0NMSUNvbW1hbmRzL0J1aWxkU2VydmVyL0J1aWxkU2VydmVyU2VydmVyT3B0aW9uc1wiO1xuXG5jb25zdCBjb21tYW5kRGVmcyA9IFtcbiAgICBidWlsZEZvcm1zT3B0aW9uc0RlZmluaXRpb24sXG4gICAgdXBncmFkZUZvcm1Db21tYW5kRGVmaW5pdGlvbixcbiAgICBkZXZCdWlsZENvbW1hbmREZWZpbml0aW9uLFxuICAgIGRldkJ1aWxkU2VydmVyQ29tbWFuZERlZmluaXRpb24sXG4gICAgYnVpbGRTZXJ2ZXJDb21tYW5kRGVmaW5pdGlvbixcbiAgICBsb2NhbGl6YXRpb25Db21tYW5kRGVmaW5pdGlvbixcbiAgICBpbml0Rm9ybUNvbW1hbmREZWZpbml0aW9uLFxuICAgIGZvcm1TdGF0c0NvbW1hbmREZWZpbml0aW9uLFxuXTtcblxuZnVuY3Rpb24gY3JlYXRlT3B0aW9uUmVhZE1lKHg6IE9wdGlvbkRlZmluaXRpb248dW5rbm93bj4pOiBzdHJpbmcge1xuICAgIHJldHVybiBgXG4qIFxcYC0tJHt4Lm5hbWV9JHt4LmFsaWFzID8gYCAoLSR7eC5hbGlhc30pYCA6IFwiXCJ9XFxgXG5cbiAgJHt4LmRlc2NyaXB0aW9ufVxuYC50cmltKCk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbW1hbmRSZWFkTWUoeDogQ29tbWFuZERlZmluaXRpb248dW5rbm93biwgc3RyaW5nPik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBcbiMjIFxcYGNhbmR5ICR7eC5uYW1lfVxcYFxuXG4ke3guZGV0YWlsZWREZXNjcmlwdGlvbiA/IHguZGV0YWlsZWREZXNjcmlwdGlvbiA6IHguZGVzY3JpcHRpb259XG5cbiMjIyDQntC/0YbQuNC4XG5cbiR7eC5vcHRpb25zLm1hcChjcmVhdGVPcHRpb25SZWFkTWUpLmpvaW4oXCJcXG5cXG5cIil9XG5cbiR7eC5leGFtcGxlcyA/IFwiIyMjINCf0YDQuNC80LXRgNGLINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPXCIgOiBcIlwifVxuJHt4LmV4YW1wbGVzID8geC5leGFtcGxlcyA6IFwiXCJ9XG5cbiR7eC5leHRlbmRlZERldGFpbHMgPyB4LmV4dGVuZGVkRGV0YWlscyA6IFwiXCJ9XG5gO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVSZWFkTWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYFxuIyBDYW5keSBUb29sc1xuXG4jIyDQn9C10YDQtdC0INC90LDRh9Cw0LvQvtC8INGA0LDQsdC+0YLRi1xuXG7QktGB0LUg0L7Qv9C10YDQsNGG0LjQuCDQstGL0L/QvtC70L3Rj9GO0YLRgdGPINGH0LXRgNC10Lcg0LfQsNC/0YPRgdC6XG5cblxcYFxcYFxcYFxuY2FuZHkgW9C40LzRjy3QutC+0LzQsNC90LTRi10gWy4uLtC+0L/RhtC40LhdXG5cXGBcXGBcXGBcblxuIyMg0JjQvNC10L3QsCDQvtGB0L3QvtCy0L3Ri9GFINC60L7QvNCw0L3QtDpcbiR7Y29tbWFuZERlZnMubWFwKHggPT4gYCogXFxgJHt4Lm5hbWV9XFxgYCkuam9pbihcIlxcblwiKX1cblxuJHtjb21tYW5kRGVmcy5tYXAoY3JlYXRlQ29tbWFuZFJlYWRNZSkuam9pbihcIlxcblwiKX1cbiAgICBgLnRyaW0oKTtcbn1cblxud3JpdGVGaWxlU3luYyhcIlJFQURNRS5tZFwiLCBjcmVhdGVSZWFkTWUoKSk7XG4iXX0=
54
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnMiLCJyZXF1aXJlIiwiX0J1aWxkRm9ybXNPcHRpb25zIiwiX0RldkJ1aWxkT3B0aW9ucyIsIl9Gb3JtU3RhdHNPcHRpb25zIiwiX0xvY2FsaXphdGlvbk9wdGlvbnMiLCJfVXBncmFkZUZvcm1PcHRpb25zIiwiX0luaXRGb3JtT3B0aW9ucyIsIl9CdWlsZFNlcnZlclNlcnZlck9wdGlvbnMiLCJjb21tYW5kRGVmcyIsImJ1aWxkRm9ybXNPcHRpb25zRGVmaW5pdGlvbiIsInVwZ3JhZGVGb3JtQ29tbWFuZERlZmluaXRpb24iLCJkZXZCdWlsZENvbW1hbmREZWZpbml0aW9uIiwiZGV2QnVpbGRTZXJ2ZXJDb21tYW5kRGVmaW5pdGlvbiIsImJ1aWxkU2VydmVyQ29tbWFuZERlZmluaXRpb24iLCJsb2NhbGl6YXRpb25Db21tYW5kRGVmaW5pdGlvbiIsImluaXRGb3JtQ29tbWFuZERlZmluaXRpb24iLCJmb3JtU3RhdHNDb21tYW5kRGVmaW5pdGlvbiIsImNyZWF0ZU9wdGlvblJlYWRNZSIsIngiLCJuYW1lIiwiYWxpYXMiLCJkZXNjcmlwdGlvbiIsInRyaW0iLCJjcmVhdGVDb21tYW5kUmVhZE1lIiwiZGV0YWlsZWREZXNjcmlwdGlvbiIsIm9wdGlvbnMiLCJtYXAiLCJqb2luIiwiZXhhbXBsZXMiLCJleHRlbmRlZERldGFpbHMiLCJjcmVhdGVSZWFkTWUiLCJ3cml0ZUZpbGVTeW5jIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0dlbmVyYXRlUmVhZE1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHdyaXRlRmlsZVN5bmMgfSBmcm9tIFwiZnNcIjtcblxuaW1wb3J0IHsgQ29tbWFuZERlZmluaXRpb24sIE9wdGlvbkRlZmluaXRpb24gfSBmcm9tIFwiLi9Db21tb25zL09wdGlvbnMvQ29tbWFuZEJhc2VkT3B0aW9uc1BhcnNlclwiO1xuaW1wb3J0IHsgYnVpbGRGb3Jtc09wdGlvbnNEZWZpbml0aW9uIH0gZnJvbSBcIi4vQ0xJQ29tbWFuZHMvQnVpbGRGb3Jtcy9CdWlsZEZvcm1zT3B0aW9uc1wiO1xuaW1wb3J0IHsgZGV2QnVpbGRDb21tYW5kRGVmaW5pdGlvbiB9IGZyb20gXCIuL0NMSUNvbW1hbmRzL0RldkJ1aWxkL0RldkJ1aWxkT3B0aW9uc1wiO1xuaW1wb3J0IHsgZm9ybVN0YXRzQ29tbWFuZERlZmluaXRpb24gfSBmcm9tIFwiLi9DTElDb21tYW5kcy9Gb3JtU3RhdHMvRm9ybVN0YXRzT3B0aW9uc1wiO1xuaW1wb3J0IHsgbG9jYWxpemF0aW9uQ29tbWFuZERlZmluaXRpb24gfSBmcm9tIFwiLi9DTElDb21tYW5kcy9Mb2NhbGl6YXRpb24vTG9jYWxpemF0aW9uT3B0aW9uc1wiO1xuaW1wb3J0IHsgdXBncmFkZUZvcm1Db21tYW5kRGVmaW5pdGlvbiB9IGZyb20gXCIuL0NMSUNvbW1hbmRzL1VwZ3JhZGVGb3JtL1VwZ3JhZGVGb3JtT3B0aW9uc1wiO1xuaW1wb3J0IHsgaW5pdEZvcm1Db21tYW5kRGVmaW5pdGlvbiB9IGZyb20gXCIuL0NMSUNvbW1hbmRzL0luaXRGb3JtL0luaXRGb3JtT3B0aW9uc1wiO1xuaW1wb3J0IHtcbiAgICBidWlsZFNlcnZlckNvbW1hbmREZWZpbml0aW9uLFxuICAgIGRldkJ1aWxkU2VydmVyQ29tbWFuZERlZmluaXRpb24sXG59IGZyb20gXCIuL0NMSUNvbW1hbmRzL0J1aWxkU2VydmVyL0J1aWxkU2VydmVyU2VydmVyT3B0aW9uc1wiO1xuXG5jb25zdCBjb21tYW5kRGVmcyA9IFtcbiAgICBidWlsZEZvcm1zT3B0aW9uc0RlZmluaXRpb24sXG4gICAgdXBncmFkZUZvcm1Db21tYW5kRGVmaW5pdGlvbixcbiAgICBkZXZCdWlsZENvbW1hbmREZWZpbml0aW9uLFxuICAgIGRldkJ1aWxkU2VydmVyQ29tbWFuZERlZmluaXRpb24sXG4gICAgYnVpbGRTZXJ2ZXJDb21tYW5kRGVmaW5pdGlvbixcbiAgICBsb2NhbGl6YXRpb25Db21tYW5kRGVmaW5pdGlvbixcbiAgICBpbml0Rm9ybUNvbW1hbmREZWZpbml0aW9uLFxuICAgIGZvcm1TdGF0c0NvbW1hbmREZWZpbml0aW9uLFxuXTtcblxuZnVuY3Rpb24gY3JlYXRlT3B0aW9uUmVhZE1lKHg6IE9wdGlvbkRlZmluaXRpb248dW5rbm93bj4pOiBzdHJpbmcge1xuICAgIHJldHVybiBgXG4qIFxcYC0tJHt4Lm5hbWV9JHt4LmFsaWFzID8gYCAoLSR7eC5hbGlhc30pYCA6IFwiXCJ9XFxgXG5cbiAgJHt4LmRlc2NyaXB0aW9ufVxuYC50cmltKCk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbW1hbmRSZWFkTWUoeDogQ29tbWFuZERlZmluaXRpb248dW5rbm93biwgc3RyaW5nPik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBcbiMjIFxcYGNhbmR5ICR7eC5uYW1lfVxcYFxuXG4ke3guZGV0YWlsZWREZXNjcmlwdGlvbiA/IHguZGV0YWlsZWREZXNjcmlwdGlvbiA6IHguZGVzY3JpcHRpb259XG5cbiMjIyDQntC/0YbQuNC4XG5cbiR7eC5vcHRpb25zLm1hcChjcmVhdGVPcHRpb25SZWFkTWUpLmpvaW4oXCJcXG5cXG5cIil9XG5cbiR7eC5leGFtcGxlcyA/IFwiIyMjINCf0YDQuNC80LXRgNGLINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPXCIgOiBcIlwifVxuJHt4LmV4YW1wbGVzID8geC5leGFtcGxlcyA6IFwiXCJ9XG5cbiR7eC5leHRlbmRlZERldGFpbHMgPyB4LmV4dGVuZGVkRGV0YWlscyA6IFwiXCJ9XG5gO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVSZWFkTWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYFxuIyBDYW5keSBUb29sc1xuXG4jIyDQn9C10YDQtdC0INC90LDRh9Cw0LvQvtC8INGA0LDQsdC+0YLRi1xuXG7QktGB0LUg0L7Qv9C10YDQsNGG0LjQuCDQstGL0L/QvtC70L3Rj9GO0YLRgdGPINGH0LXRgNC10Lcg0LfQsNC/0YPRgdC6XG5cblxcYFxcYFxcYFxuY2FuZHkgW9C40LzRjy3QutC+0LzQsNC90LTRi10gWy4uLtC+0L/RhtC40LhdXG5cXGBcXGBcXGBcblxuIyMg0JjQvNC10L3QsCDQvtGB0L3QvtCy0L3Ri9GFINC60L7QvNCw0L3QtDpcbiR7Y29tbWFuZERlZnMubWFwKHggPT4gYCogXFxgJHt4Lm5hbWV9XFxgYCkuam9pbihcIlxcblwiKX1cblxuJHtjb21tYW5kRGVmcy5tYXAoY3JlYXRlQ29tbWFuZFJlYWRNZSkuam9pbihcIlxcblwiKX1cbiAgICBgLnRyaW0oKTtcbn1cblxud3JpdGVGaWxlU3luYyhcIlJFQURNRS5tZFwiLCBjcmVhdGVSZWFkTWUoKSk7XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBQUEsR0FBQSxHQUFBQyxPQUFBO0FBR0EsSUFBQUMsa0JBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGdCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxpQkFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksb0JBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLG1CQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxnQkFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8seUJBQUEsR0FBQVAsT0FBQTtBQUtBLE1BQU1RLFdBQVcsR0FBRyxDQUNoQkMsOENBQTJCLEVBQzNCQyxnREFBNEIsRUFDNUJDLDBDQUF5QixFQUN6QkMseURBQStCLEVBQy9CQyxzREFBNEIsRUFDNUJDLGtEQUE2QixFQUM3QkMsMENBQXlCLEVBQ3pCQyw0Q0FBMEIsQ0FDN0I7QUFFRCxTQUFTQyxrQkFBa0JBLENBQUNDLENBQTRCLEVBQVU7RUFDOUQsT0FBUTtBQUNaLFFBQVFBLENBQUMsQ0FBQ0MsSUFBSyxHQUFFRCxDQUFDLENBQUNFLEtBQUssR0FBSSxNQUFLRixDQUFDLENBQUNFLEtBQU0sR0FBRSxHQUFHLEVBQUc7QUFDakQ7QUFDQSxJQUFJRixDQUFDLENBQUNHLFdBQVk7QUFDbEIsQ0FBQyxDQUFDQyxJQUFJLENBQUMsQ0FBQztBQUNSO0FBRUEsU0FBU0MsbUJBQW1CQSxDQUFDTCxDQUFxQyxFQUFVO0VBQ3hFLE9BQVE7QUFDWixhQUFhQSxDQUFDLENBQUNDLElBQUs7QUFDcEI7QUFDQSxFQUFFRCxDQUFDLENBQUNNLG1CQUFtQixHQUFHTixDQUFDLENBQUNNLG1CQUFtQixHQUFHTixDQUFDLENBQUNHLFdBQVk7QUFDaEU7QUFDQTtBQUNBO0FBQ0EsRUFBRUgsQ0FBQyxDQUFDTyxPQUFPLENBQUNDLEdBQUcsQ0FBQ1Qsa0JBQWtCLENBQUMsQ0FBQ1UsSUFBSSxDQUFDLE1BQU0sQ0FBRTtBQUNqRDtBQUNBLEVBQUVULENBQUMsQ0FBQ1UsUUFBUSxHQUFHLDJCQUEyQixHQUFHLEVBQUc7QUFDaEQsRUFBRVYsQ0FBQyxDQUFDVSxRQUFRLEdBQUdWLENBQUMsQ0FBQ1UsUUFBUSxHQUFHLEVBQUc7QUFDL0I7QUFDQSxFQUFFVixDQUFDLENBQUNXLGVBQWUsR0FBR1gsQ0FBQyxDQUFDVyxlQUFlLEdBQUcsRUFBRztBQUM3QyxDQUFDO0FBQ0Q7QUFFQSxTQUFTQyxZQUFZQSxDQUFBLEVBQVc7RUFDNUIsT0FBUTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFdEIsV0FBVyxDQUFDa0IsR0FBRyxDQUFDUixDQUFDLElBQUssT0FBTUEsQ0FBQyxDQUFDQyxJQUFLLElBQUcsQ0FBQyxDQUFDUSxJQUFJLENBQUMsSUFBSSxDQUFFO0FBQ3JEO0FBQ0EsRUFBRW5CLFdBQVcsQ0FBQ2tCLEdBQUcsQ0FBQ0gsbUJBQW1CLENBQUMsQ0FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBRTtBQUNsRCxLQUFLLENBQUNMLElBQUksQ0FBQyxDQUFDO0FBQ1o7QUFFQSxJQUFBUyxpQkFBYSxFQUFDLFdBQVcsRUFBRUQsWUFBWSxDQUFDLENBQUMsQ0FBQyJ9