@kontur.candy/tools 2.185.0 → 2.185.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/candy.js +0 -0
- package/distr/Common/AsyncUtils.js +1 -1
- package/distr/Common/AsyncUtils.js.map +1 -0
- package/distr/Common/AutoValidationUtils.js +2 -3
- package/distr/Common/AutoValidationUtils.js.map +1 -0
- package/distr/Common/CandyApiClient/CandyApiClient.js +2 -3
- package/distr/Common/CandyApiClient/CandyApiClient.js.map +1 -0
- package/distr/Common/CandyApiClient/CandyApiClientContext.js +4 -5
- package/distr/Common/CandyApiClient/CandyApiClientContext.js.map +1 -0
- package/distr/Common/CandyApiClient/ClientDraftInfo/ClientDraftInfoResponse.js +1 -1
- package/distr/Common/CandyApiClient/ClientDraftInfo/ClientDraftInfoResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/ClientDraftInfo/FnsFormInfo.js +1 -1
- package/distr/Common/CandyApiClient/ClientDraftInfo/FnsFormInfo.js.map +1 -0
- package/distr/Common/CandyApiClient/ClientDraftInfo/GetClientDraftInfoUrl.js +1 -1
- package/distr/Common/CandyApiClient/ClientDraftInfo/GetClientDraftInfoUrl.js.map +1 -0
- package/distr/Common/CandyApiClient/ClientDraftInfo/PrintInfo.js +1 -1
- package/distr/Common/CandyApiClient/ClientDraftInfo/PrintInfo.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithCache.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithCache.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithDebouncedBatching.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithDebouncedBatching.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/DigestApiClient.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/DigestApiClient.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/Data/TaxRebate1152026.js +2 -3
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/Data/TaxRebate1152026.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakeDigestApiClient.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakeDigestApiClient.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakePicklists.js +2 -3
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakePicklists.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/IDigestApiClient.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/IDigestApiClient.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/React/DigestApiClientContext.js +4 -5
- package/distr/Common/CandyApiClient/DigestApiClient/React/DigestApiClientContext.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/TestDigestApiClient.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/TestDigestApiClient.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestQueryFilter.js +3 -5
- package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestQueryFilter.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestRequest.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestRequest.js.map +1 -0
- package/distr/Common/CandyApiClient/FakeCandyApiClient.js +1 -1
- package/distr/Common/CandyApiClient/FakeCandyApiClient.js.map +1 -0
- package/distr/Common/CandyApiClient/ICandyApiClient.js +1 -1
- package/distr/Common/CandyApiClient/ICandyApiClient.js.map +1 -0
- package/distr/Common/CandyApiClient/IsBuffer.js +1 -1
- package/distr/Common/CandyApiClient/IsBuffer.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Attachments/Attacments.js +1 -1
- package/distr/Common/CandyApiClient/Types/Attachments/Attacments.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Attachments/GetAttachmentsResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/Attachments/GetAttachmentsResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/ChangeSet/ServerChangeSet.js +1 -1
- package/distr/Common/CandyApiClient/Types/ChangeSet/ServerChangeSet.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/CreateDraft/CreateDraftResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/CreateDraft/CreateDraftResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/DiagResourcesResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/DiagResourcesResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/DraftActions/CombineFufResult.js +3 -5
- package/distr/Common/CandyApiClient/Types/DraftActions/CombineFufResult.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/DraftActions/ConvertDraftRequest.js +1 -1
- package/distr/Common/CandyApiClient/Types/DraftActions/ConvertDraftRequest.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/DraftActions/FileProperties.js +1 -1
- package/distr/Common/CandyApiClient/Types/DraftActions/FileProperties.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/DraftActions/FufSizeTooLargeError.js +1 -1
- package/distr/Common/CandyApiClient/Types/DraftActions/FufSizeTooLargeError.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/DraftFullId.js +1 -1
- package/distr/Common/CandyApiClient/Types/DraftFullId.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/ErrorLog/CandyPopdProtocol.js +2 -3
- package/distr/Common/CandyApiClient/Types/ErrorLog/CandyPopdProtocol.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/ErrorLog/ServerErrorLog.js +3 -5
- package/distr/Common/CandyApiClient/Types/ErrorLog/ServerErrorLog.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/ExplanatoryNote/CreateExplanatoryNoteResponse.js +2 -3
- package/distr/Common/CandyApiClient/Types/ExplanatoryNote/CreateExplanatoryNoteResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/FeatureFlags/FeatureFlagsResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/FeatureFlags/FeatureFlagsResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Focus/FocusServerResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/Focus/FocusServerResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Focus/FocusTypes.js +2 -3
- package/distr/Common/CandyApiClient/Types/Focus/FocusTypes.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/GetInner/ServerInnerResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/GetInner/ServerInnerResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/GetInner/ServerRawResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/GetInner/ServerRawResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/GetInner/ServerRequisitesResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/GetInner/ServerRequisitesResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Guid.js +1 -1
- package/distr/Common/CandyApiClient/Types/Guid.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/InstancesDeleting/InstancesDeletingRule.js +1 -1
- package/distr/Common/CandyApiClient/Types/InstancesDeleting/InstancesDeletingRule.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/MassActions/MassActionParameters.js +1 -1
- package/distr/Common/CandyApiClient/Types/MassActions/MassActionParameters.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/MassActions/ValueForInstancesSettingRule.js +1 -1
- package/distr/Common/CandyApiClient/Types/MassActions/ValueForInstancesSettingRule.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Presentations/DraftPresentationType.js +2 -3
- package/distr/Common/CandyApiClient/Types/Presentations/DraftPresentationType.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Presentations/PresentationContent.js +1 -1
- package/distr/Common/CandyApiClient/Types/Presentations/PresentationContent.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Print/PrintResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/Print/PrintResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Print/PrintType.js +2 -3
- package/distr/Common/CandyApiClient/Types/Print/PrintType.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/AndExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/AndExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CompareExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CompareExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CountCallExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CountCallExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/DecimalConstantExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/DecimalConstantExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/InstanceIdCallExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/InstanceIdCallExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/NotExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/NotExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/OrExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/OrExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringConstantExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringConstantExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringMatchExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringMatchExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/SumCallExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/SumCallExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/TernaryExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/TernaryExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/ValueReferenceExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/ValueReferenceExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryRequest.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryRequest.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/SelectClause.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/SelectClause.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/SortingRule.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/SortingRule.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Staff/EmployeeInfo.js +1 -1
- package/distr/Common/CandyApiClient/Types/Staff/EmployeeInfo.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesOptions.js +1 -1
- package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesOptions.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesRequest.js +1 -1
- package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesRequest.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Staff/StaffInfo.js +1 -1
- package/distr/Common/CandyApiClient/Types/Staff/StaffInfo.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Tasks/GetTasksServerResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/Tasks/GetTasksServerResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Tasks/Tasks.js +2 -3
- package/distr/Common/CandyApiClient/Types/Tasks/Tasks.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/TestClassification.js +1 -1
- package/distr/Common/CandyApiClient/Types/TestClassification.js.map +1 -0
- package/distr/Common/CollectionUtils.js +1 -1
- package/distr/Common/CollectionUtils.js.map +1 -0
- package/distr/Common/CommonConstants/SectionNames.js +1 -1
- package/distr/Common/CommonConstants/SectionNames.js.map +1 -0
- package/distr/Common/Comparers.js +1 -1
- package/distr/Common/Comparers.js.map +1 -0
- package/distr/Common/EmotionStorybookWorkaroundViaAliases.js +3 -3
- package/distr/Common/EmotionStorybookWorkaroundViaAliases.js.map +1 -0
- package/distr/Common/EndPoints.js +6 -11
- package/distr/Common/EndPoints.js.map +1 -0
- package/distr/Common/Enums/ButtonSettingsTypeEnum.js +2 -3
- package/distr/Common/Enums/ButtonSettingsTypeEnum.js.map +1 -0
- package/distr/Common/Errors.js +1 -1
- package/distr/Common/Errors.js.map +1 -0
- package/distr/Common/ExtractGFVPath/ExtractGFVPath.js +1 -1
- package/distr/Common/ExtractGFVPath/ExtractGFVPath.js.map +1 -0
- package/distr/Common/FSPrinterClient/FSPrinterClient.js +2 -2
- package/distr/Common/FSPrinterClient/FSPrinterClient.js.map +1 -0
- package/distr/Common/FSPrinterClient/FakeFSPrinterClient.js +1 -1
- package/distr/Common/FSPrinterClient/FakeFSPrinterClient.js.map +1 -0
- package/distr/Common/FSPrinterClient/IFSPrinterClient.js +6 -11
- package/distr/Common/FSPrinterClient/IFSPrinterClient.js.map +1 -0
- package/distr/Common/FormActionHandlers/ContextualActionNames.js +1 -1
- package/distr/Common/FormActionHandlers/ContextualActionNames.js.map +1 -0
- package/distr/Common/FormActionHandlers/ControlNamedContextualAction.js +1 -1
- package/distr/Common/FormActionHandlers/ControlNamedContextualAction.js.map +1 -0
- package/distr/Common/FormPathUtils.js +2 -2
- package/distr/Common/FormPathUtils.js.map +1 -0
- package/distr/Common/Funcs.js +1 -1
- package/distr/Common/Funcs.js.map +1 -0
- package/distr/Common/GFV.js +1 -1
- package/distr/Common/GFV.js.map +1 -0
- package/distr/Common/Hooks/UseLocalStorage.js +3 -3
- package/distr/Common/Hooks/UseLocalStorage.js.map +1 -0
- package/distr/Common/HttpClient/AuthenticationMode.js +1 -1
- package/distr/Common/HttpClient/AuthenticationMode.js.map +1 -0
- package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithOptionalPolyfill.js +2 -3
- package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithOptionalPolyfill.js.map +1 -0
- package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithPolyfill.js +2 -3
- package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithPolyfill.js.map +1 -0
- package/distr/Common/HttpClient/FetchImplementation/Fetch.js +1 -1
- package/distr/Common/HttpClient/FetchImplementation/Fetch.js.map +1 -0
- package/distr/Common/HttpClient/FetchImplementation/NativeBrowserFetch.js +2 -3
- package/distr/Common/HttpClient/FetchImplementation/NativeBrowserFetch.js.map +1 -0
- package/distr/Common/HttpClient/FetchImplementation/NodeFetch.js +1 -1
- package/distr/Common/HttpClient/FetchImplementation/NodeFetch.js.map +1 -0
- package/distr/Common/HttpClient/HttpClient.js +2 -2
- package/distr/Common/HttpClient/HttpClient.js.map +1 -0
- package/distr/Common/HttpClient/HttpClientAuthenticationProvider.js +1 -1
- package/distr/Common/HttpClient/HttpClientAuthenticationProvider.js.map +1 -0
- package/distr/Common/HttpClient/IHttpClient.js +1 -1
- package/distr/Common/HttpClient/IHttpClient.js.map +1 -0
- package/distr/Common/IndentString.js +1 -1
- package/distr/Common/IndentString.js.map +1 -0
- package/distr/Common/IntRangeUtils.js +1 -1
- package/distr/Common/IntRangeUtils.js.map +1 -0
- package/distr/Common/IterableUtils.js +1 -1
- package/distr/Common/IterableUtils.js.map +1 -0
- package/distr/Common/KCLangRuntimeUtils.js +1 -1
- package/distr/Common/KCLangRuntimeUtils.js.map +1 -0
- package/distr/Common/ModelPath/AbsoluteModelFieldPath.js +4 -2
- package/distr/Common/ModelPath/AbsoluteModelFieldPath.js.map +1 -0
- package/distr/Common/ModelPath/BuildIterationSequence.js +1 -1
- package/distr/Common/ModelPath/BuildIterationSequence.js.map +1 -0
- package/distr/Common/ModelPath/EachCurrentCollision.js +2 -3
- package/distr/Common/ModelPath/EachCurrentCollision.js.map +1 -0
- package/distr/Common/ModelPath/IEquatable.js +1 -1
- package/distr/Common/ModelPath/IEquatable.js.map +1 -0
- package/distr/Common/ModelPath/Map/AbsoluteModelPathMap.js +1 -1
- package/distr/Common/ModelPath/Map/AbsoluteModelPathMap.js.map +1 -0
- package/distr/Common/ModelPath/Map/Map2.js +1 -1
- package/distr/Common/ModelPath/Map/Map2.js.map +1 -0
- package/distr/Common/ModelPath/Map/ModelPathMap.js +1 -1
- package/distr/Common/ModelPath/Map/ModelPathMap.js.map +1 -0
- package/distr/Common/ModelPath/ModelPath.js +1 -1
- package/distr/Common/ModelPath/ModelPath.js.map +1 -0
- package/distr/Common/ModelPath/ModelPathBuilder.js +1 -1
- package/distr/Common/ModelPath/ModelPathBuilder.js.map +1 -0
- package/distr/Common/ModelPath/ModelPathHelper.js +1 -1
- package/distr/Common/ModelPath/ModelPathHelper.js.map +1 -0
- package/distr/Common/ModelPath/PathMatcher.js +2 -3
- package/distr/Common/ModelPath/PathMatcher.js.map +1 -0
- package/distr/Common/ModelPath/PathSplitHelper.js +1 -1
- package/distr/Common/ModelPath/PathSplitHelper.js.map +1 -0
- package/distr/Common/ModelPath/Set/AbsoluteModelPathSet.js +1 -1
- package/distr/Common/ModelPath/Set/AbsoluteModelPathSet.js.map +1 -0
- package/distr/Common/ModelPath/Set/AbsoluteResolvedModelPathSet.js +1 -1
- package/distr/Common/ModelPath/Set/AbsoluteResolvedModelPathSet.js.map +1 -0
- package/distr/Common/ModelPath/Set/ModelPathSet.js +1 -1
- package/distr/Common/ModelPath/Set/ModelPathSet.js.map +1 -0
- package/distr/Common/ModelPath/Set/Set2.js +1 -1
- package/distr/Common/ModelPath/Set/Set2.js.map +1 -0
- package/distr/Common/NidusClient/ContextualNidusClient/ContextualNidusClient.js +1 -1
- package/distr/Common/NidusClient/ContextualNidusClient/ContextualNidusClient.js.map +1 -0
- package/distr/Common/NidusClient/ContextualNidusClient/IContextualNidusClient.js +1 -1
- package/distr/Common/NidusClient/ContextualNidusClient/IContextualNidusClient.js.map +1 -0
- package/distr/Common/NidusClient/Fakes/CreateUniqueNidusEntryId.js +1 -1
- package/distr/Common/NidusClient/Fakes/CreateUniqueNidusEntryId.js.map +1 -0
- package/distr/Common/NidusClient/Fakes/FakeNidusClient.js +1 -1
- package/distr/Common/NidusClient/Fakes/FakeNidusClient.js.map +1 -0
- package/distr/Common/NidusClient/Fakes/LocalStorageBasedNidusClient.js +1 -1
- package/distr/Common/NidusClient/Fakes/LocalStorageBasedNidusClient.js.map +1 -0
- package/distr/Common/NidusClient/INidusClient.js +1 -1
- package/distr/Common/NidusClient/INidusClient.js.map +1 -0
- package/distr/Common/NidusClient/NidusClientContext.js +3 -3
- package/distr/Common/NidusClient/NidusClientContext.js.map +1 -0
- package/distr/Common/NidusClient/NidusClientImpl.js +3 -3
- package/distr/Common/NidusClient/NidusClientImpl.js.map +1 -0
- package/distr/Common/PathConstants.js +4 -7
- package/distr/Common/PathConstants.js.map +1 -0
- package/distr/Common/PicklistApiClient/IPicklistApiClient.js +1 -1
- package/distr/Common/PicklistApiClient/IPicklistApiClient.js.map +1 -0
- package/distr/Common/PicklistApiClient/PicklistApiClient.js +1 -1
- package/distr/Common/PicklistApiClient/PicklistApiClient.js.map +1 -0
- package/distr/Common/PicklistApiClient/PicklistRequestV2Builder.js +1 -1
- package/distr/Common/PicklistApiClient/PicklistRequestV2Builder.js.map +1 -0
- package/distr/Common/PicklistApiClient/Serializers/DigestFilterColumnSerializer.js +1 -1
- package/distr/Common/PicklistApiClient/Serializers/DigestFilterColumnSerializer.js.map +1 -0
- package/distr/Common/PicklistApiClient/Serializers/DigestLogicalFilterSerializer.js +1 -1
- package/distr/Common/PicklistApiClient/Serializers/DigestLogicalFilterSerializer.js.map +1 -0
- package/distr/Common/PicklistApiClient/Types/PicklistRequestV2.js +1 -1
- package/distr/Common/PicklistApiClient/Types/PicklistRequestV2.js.map +1 -0
- package/distr/Common/PicklistApiClient/Types/PicklistResultV2.js +1 -1
- package/distr/Common/PicklistApiClient/Types/PicklistResultV2.js.map +1 -0
- package/distr/Common/RngSchemeTypes/types.js +1 -1
- package/distr/Common/RngSchemeTypes/types.js.map +1 -0
- package/distr/Common/StringArrayKey.js +1 -1
- package/distr/Common/StringArrayKey.js.map +1 -0
- package/distr/Common/TextExtractor/TextExtractorTypes.js +1 -1
- package/distr/Common/TextExtractor/TextExtractorTypes.js.map +1 -0
- package/distr/Common/TypingUtils.js +1 -1
- package/distr/Common/TypingUtils.js.map +1 -0
- package/distr/Common/UUID.js +1 -1
- package/distr/Common/UUID.js.map +1 -0
- package/distr/Common/UseAsyncEffect.js +3 -3
- package/distr/Common/UseAsyncEffect.js.map +1 -0
- package/distr/Common/UseShowOnce.js +1 -1
- package/distr/Common/UseShowOnce.js.map +1 -0
- package/distr/Common/UseTypedSelector.js +2 -3
- package/distr/Common/UseTypedSelector.js.map +1 -0
- package/distr/Common/WellKnownDirectories.js +1 -1
- package/distr/Common/WellKnownDirectories.js.map +1 -0
- package/distr/Common/getRngSchemaFilename.js +1 -1
- package/distr/Common/getRngSchemaFilename.js.map +1 -0
- package/distr/Common/hashUtils.js +1 -1
- package/distr/Common/hashUtils.js.map +1 -0
- package/distr/Tools/src/BuildTasks/ClientJS/BuildClientJsTask.js +9 -4
- package/distr/Tools/src/BuildTasks/ClientJS/BuildClientJsTask.js.map +1 -0
- package/distr/Tools/src/BuildTasks/ClientJS/IsWebpack5.js +6 -12
- package/distr/Tools/src/BuildTasks/ClientJS/IsWebpack5.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Engine/AcquireFormEngine.js +1 -1
- package/distr/Tools/src/BuildTasks/Engine/AcquireFormEngine.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Engine/AcquirePublishedEngineTask.js +3 -3
- package/distr/Tools/src/BuildTasks/Engine/AcquirePublishedEngineTask.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Engine/BuildLocalEngineTask.js +4 -3
- package/distr/Tools/src/BuildTasks/Engine/BuildLocalEngineTask.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Engine/EngineSource.js +1 -1
- package/distr/Tools/src/BuildTasks/Engine/EngineSource.js.map +1 -0
- package/distr/Tools/src/BuildTasks/EngineStructureUtils.js +1 -1
- package/distr/Tools/src/BuildTasks/EngineStructureUtils.js.map +1 -0
- package/distr/Tools/src/BuildTasks/EngineVersionUtils.js +1 -1
- package/distr/Tools/src/BuildTasks/EngineVersionUtils.js.map +1 -0
- package/distr/Tools/src/BuildTasks/FSTask.js +1 -1
- package/distr/Tools/src/BuildTasks/FSTask.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Form/CompileForm.js +3 -3
- package/distr/Tools/src/BuildTasks/Form/CompileForm.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Form/GenerateForm.js +3 -3
- package/distr/Tools/src/BuildTasks/Form/GenerateForm.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Form/NullFormGenerator.js +1 -1
- package/distr/Tools/src/BuildTasks/Form/NullFormGenerator.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathFiles.js +1 -1
- package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathFiles.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Form/WriteFLangNormalizationFiles.js +3 -3
- package/distr/Tools/src/BuildTasks/Form/WriteFLangNormalizationFiles.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/AcquireFormGenerator.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/AcquireFormGenerator.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/AcquirePublishedGeneratorTask.js +3 -3
- package/distr/Tools/src/BuildTasks/Generator/AcquirePublishedGeneratorTask.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/BuildGeneratorFromSourcesTask.js +4 -3
- package/distr/Tools/src/BuildTasks/Generator/BuildGeneratorFromSourcesTask.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/CreateAsyncGenerator.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/CreateAsyncGenerator.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.js +4 -4
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ProcessSugarWorker.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ProcessSugarWorker.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/RequireUncached.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/RequireUncached.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/TypedProcessWorker.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/TypedProcessWorker.js.map +1 -0
- package/distr/Tools/src/BuildTasks/ProcessUtils/ProcessUtils.js +1 -1
- package/distr/Tools/src/BuildTasks/ProcessUtils/ProcessUtils.js.map +1 -0
- package/distr/Tools/src/BuildTasks/ProcessUtils/ShellProcessHandle.js +5 -5
- package/distr/Tools/src/BuildTasks/ProcessUtils/ShellProcessHandle.js.map +1 -0
- package/distr/Tools/src/BuildTasks/PublishedVersionUtils.js +3 -3
- package/distr/Tools/src/BuildTasks/PublishedVersionUtils.js.map +1 -0
- package/distr/Tools/src/BuildTasks/ReadFormSource.js +1 -1
- package/distr/Tools/src/BuildTasks/ReadFormSource.js.map +1 -0
- package/distr/Tools/src/BuildTasks/ResolveFormInfo.js +2 -3
- package/distr/Tools/src/BuildTasks/ResolveFormInfo.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Version.js +3 -3
- package/distr/Tools/src/BuildTasks/Version.js.map +1 -0
- package/distr/Tools/src/BuildTasks/WriteFormMeta.js +1 -1
- package/distr/Tools/src/BuildTasks/WriteFormMeta.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildForms/BuildCacheMode.js +2 -3
- package/distr/Tools/src/CLICommands/BuildForms/BuildCacheMode.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js +2 -3
- package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +1 -1
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/BuildLogsWebsocketController.js +3 -3
- package/distr/Tools/src/CLICommands/BuildServer/BuildLogsWebsocketController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/BuildServerServerOptions.js +3 -5
- package/distr/Tools/src/CLICommands/BuildServer/BuildServerServerOptions.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js +4 -5
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js +5 -6
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js +4 -5
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsController.js +2 -3
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsFromResourcesController.js +4 -5
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsFromResourcesController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js +4 -5
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerLocalSourcesEngineController.js +2 -3
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerLocalSourcesEngineController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPrebuiltResourcesController.js +4 -5
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPrebuiltResourcesController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPublishedEngineController.js +4 -5
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPublishedEngineController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js +4 -4
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ClientJsDevServer.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ClientJsDevServer.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/EngineDevServer.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/EngineDevServer.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ReportGeneratorErrorToPageBody.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ReportGeneratorErrorToPageBody.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorker.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorker.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorkerFactory.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorkerFactory.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IInputFileSystem.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IInputFileSystem.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IWatchFileSystem.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IWatchFileSystem.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/WebpackHybridFileSystem.js +3 -3
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/WebpackHybridFileSystem.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/GlobToRegexp.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/GlobToRegexp.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/IGeneratedServerSideSourcesProvider.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/IGeneratedServerSideSourcesProvider.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/RunBuildServer.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/RunBuildServer.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/StdStreamsIntercepter.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/StdStreamsIntercepter.js.map +1 -0
- package/distr/Tools/src/CLICommands/CommonOptions/BuildDebugOnlyOption.js +2 -3
- package/distr/Tools/src/CLICommands/CommonOptions/BuildDebugOnlyOption.js.map +1 -0
- package/distr/Tools/src/CLICommands/CommonOptions/CommonOptionDefintions.js +3 -5
- package/distr/Tools/src/CLICommands/CommonOptions/CommonOptionDefintions.js.map +1 -0
- package/distr/Tools/src/CLICommands/CommonOptions/CommonOptions.js +1 -1
- package/distr/Tools/src/CLICommands/CommonOptions/CommonOptions.js.map +1 -0
- package/distr/Tools/src/CLICommands/DevBuild/DevBuildOptions.js +2 -3
- package/distr/Tools/src/CLICommands/DevBuild/DevBuildOptions.js.map +1 -0
- package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +1 -1
- package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js.map +1 -0
- package/distr/Tools/src/CLICommands/FormStats/FormStatsOptions.js +2 -3
- package/distr/Tools/src/CLICommands/FormStats/FormStatsOptions.js.map +1 -0
- package/distr/Tools/src/CLICommands/FormStats/RunFormStats.js +2 -2
- package/distr/Tools/src/CLICommands/FormStats/RunFormStats.js.map +1 -0
- package/distr/Tools/src/CLICommands/FormsHelper/FormsHelperController.js +4 -5
- package/distr/Tools/src/CLICommands/FormsHelper/FormsHelperController.js.map +1 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/fetchfunctions/{gfv}.fetchfunctions.js +1 -1
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/fetchfunctions/{gfv}.fetchfunctions.js.map +1 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/browser/Smoke.test.js +2 -3
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/browser/Smoke.test.js.map +1 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/ui/DemoTest.test.js +2 -3
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/ui/DemoTest.test.js.map +1 -0
- package/distr/Tools/src/CLICommands/InitForm/InitFormOptions.js +2 -3
- package/distr/Tools/src/CLICommands/InitForm/InitFormOptions.js.map +1 -0
- package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js +3 -3
- package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js.map +1 -0
- package/distr/Tools/src/CLICommands/Localization/LocalizationOptions.js +2 -3
- package/distr/Tools/src/CLICommands/Localization/LocalizationOptions.js.map +1 -0
- package/distr/Tools/src/CLICommands/Localization/RunLocalization.js +1 -1
- package/distr/Tools/src/CLICommands/Localization/RunLocalization.js.map +1 -0
- package/distr/Tools/src/CLICommands/RenameFiles/RenameFilesOptions.js +2 -3
- package/distr/Tools/src/CLICommands/RenameFiles/RenameFilesOptions.js.map +1 -0
- package/distr/Tools/src/CLICommands/RenameFiles/RunRenameFiles.js +3 -3
- package/distr/Tools/src/CLICommands/RenameFiles/RunRenameFiles.js.map +1 -0
- package/distr/Tools/src/CLICommands/SugarExtractor/ExtractTextsFromSugarController.js +2 -3
- package/distr/Tools/src/CLICommands/SugarExtractor/ExtractTextsFromSugarController.js.map +1 -0
- package/distr/Tools/src/CLICommands/SugarExtractor/Utils.js +1 -1
- package/distr/Tools/src/CLICommands/SugarExtractor/Utils.js.map +1 -0
- package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js +3 -3
- package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js.map +1 -0
- package/distr/Tools/src/CLICommands/UpgradeForm/UpgradeFormOptions.js +2 -3
- package/distr/Tools/src/CLICommands/UpgradeForm/UpgradeFormOptions.js.map +1 -0
- package/distr/Tools/src/CandyCLI.js +1 -1
- package/distr/Tools/src/CandyCLI.js.map +1 -0
- package/distr/Tools/src/CheckNodeJsVersion.js +2 -3
- package/distr/Tools/src/CheckNodeJsVersion.js.map +1 -0
- package/distr/Tools/src/Commons/ApiClient/ToolsApiClient.js +1 -1
- package/distr/Tools/src/Commons/ApiClient/ToolsApiClient.js.map +1 -0
- package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplication.js +3 -3
- package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplication.js.map +1 -0
- package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplicationContext.js +1 -1
- package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplicationContext.js.map +1 -0
- package/distr/Tools/src/Commons/ErrorUntyped.js +1 -1
- package/distr/Tools/src/Commons/ErrorUntyped.js.map +1 -0
- package/distr/Tools/src/Commons/EventObject.js +1 -1
- package/distr/Tools/src/Commons/EventObject.js.map +1 -0
- package/distr/Tools/src/Commons/ExecUtils.js +1 -1
- package/distr/Tools/src/Commons/ExecUtils.js.map +1 -0
- package/distr/Tools/src/Commons/ExtractGfvsFromFileName.js +1 -1
- package/distr/Tools/src/Commons/ExtractGfvsFromFileName.js.map +1 -0
- package/distr/Tools/src/Commons/FormGlobsUtils.js +1 -1
- package/distr/Tools/src/Commons/FormGlobsUtils.js.map +1 -0
- package/distr/Tools/src/Commons/FormLocationInfo.js +1 -1
- package/distr/Tools/src/Commons/FormLocationInfo.js.map +1 -0
- package/distr/Tools/src/Commons/FsUtils.js +5 -7
- package/distr/Tools/src/Commons/FsUtils.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Actions.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Actions.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Methods.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Methods.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/NotFoundWebError.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/NotFoundWebError.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/CookieParamParamBinder.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/CookieParamParamBinder.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/IParamBinder.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/IParamBinder.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/JsonBodyParamBinder.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/JsonBodyParamBinder.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/StringBodyParamBinder.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/StringBodyParamBinder.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlParamBinder.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlParamBinder.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlQueryParamBinder.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlQueryParamBinder.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Params.js +2 -3
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Params.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomActionResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomActionResultHandler.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomContentResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomContentResultHandler.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/EmptyResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/EmptyResultHandler.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/HtmlResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/HtmlResultHandler.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/IResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/IResultHandler.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/JsonResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/JsonResultHandler.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/PlainTextResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/PlainTextResultHandler.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/StreamResultHandler.js +3 -3
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/StreamResultHandler.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results.js +2 -3
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/ExpressServerWrapper.js +6 -6
- package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/ExpressServerWrapper.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/SingletonController.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/SingletonController.js.map +1 -0
- package/distr/Tools/src/Commons/Locks/Lock.js +1 -1
- package/distr/Tools/src/Commons/Locks/Lock.js.map +1 -0
- package/distr/Tools/src/Commons/Locks/LockHandle.js +1 -1
- package/distr/Tools/src/Commons/Locks/LockHandle.js.map +1 -0
- package/distr/Tools/src/Commons/Locks/ReadWriteLockCollection.js +1 -1
- package/distr/Tools/src/Commons/Locks/ReadWriteLockCollection.js.map +1 -0
- package/distr/Tools/src/Commons/Logging/ELKLogger.js +2 -3
- package/distr/Tools/src/Commons/Logging/ELKLogger.js.map +1 -0
- package/distr/Tools/src/Commons/Logging/ILogger.js +1 -1
- package/distr/Tools/src/Commons/Logging/ILogger.js.map +1 -0
- package/distr/Tools/src/Commons/Logging/InMemoryLogger.js +1 -1
- package/distr/Tools/src/Commons/Logging/InMemoryLogger.js.map +1 -0
- package/distr/Tools/src/Commons/Logging/Logger.js +1 -1
- package/distr/Tools/src/Commons/Logging/Logger.js.map +1 -0
- package/distr/Tools/src/Commons/Logging/StaticLogger.js +1 -1
- package/distr/Tools/src/Commons/Logging/StaticLogger.js.map +1 -0
- package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.d.js +1 -1
- package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.d.js.map +1 -0
- package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.js +3 -3
- package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.js.map +1 -0
- package/distr/Tools/src/Commons/PathPattern.js +1 -1
- package/distr/Tools/src/Commons/PathPattern.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/AggregatedError.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/AggregatedError.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/BuildTask.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/BuildTask.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/ChainableValueProducer.js +5 -5
- package/distr/Tools/src/Commons/TasksCore/ChainableValueProducer.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/DirectoryEntriesProducer.js +3 -3
- package/distr/Tools/src/Commons/TasksCore/DirectoryEntriesProducer.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/EmptyProducer.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/EmptyProducer.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/FileSystemEntriesProducer.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/FileSystemEntriesProducer.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/FileValueProducer.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/FileValueProducer.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/FixedDirectoryEntriesProducer.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/FixedDirectoryEntriesProducer.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/Observe.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/Observe.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/SingleValueProducer.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/SingleValueProducer.js.map +1 -0
- package/distr/Tools/src/Commons/TimingUtils.js +1 -1
- package/distr/Tools/src/Commons/TimingUtils.js.map +1 -0
- package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js +3 -3
- package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js.map +1 -0
- package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js +2 -2
- package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js.map +1 -0
- package/distr/Tools/src/GenerateReadMe.js +1 -1
- package/distr/Tools/src/GenerateReadMe.js.map +1 -0
- package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js.LICENSE.txt +5 -3
- package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js.LICENSE.txt +5 -3
- package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
- package/distr/Tools/src/Options/CandyToolOptions.js +2 -3
- package/distr/Tools/src/Options/CandyToolOptions.js.map +1 -0
- package/distr/Tools/src/ReadFarmConfig.js +1 -1
- package/distr/Tools/src/ReadFarmConfig.js.map +1 -0
- package/distr/Tools/src/SelfUpdate.js +3 -3
- package/distr/Tools/src/SelfUpdate.js.map +1 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +681 -686
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +581 -866
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.LICENSE.txt +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/jquery-1.11.3.min.js +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/jquery-1.11.3.min.js.map +1 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/polyfill.min.js +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/polyfill.min.js.map +1 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/testing.min.js +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/testing.min.js.map +1 -0
- package/distr/Tools/src/StaticFilesForResourcesDir/jquery-1.11.3.min.js +1 -1
- package/distr/Tools/src/StaticFilesForResourcesDir/jquery-1.11.3.min.js.map +1 -0
- package/distr/Tools/src/StaticFilesForResourcesDir/polyfill.min.js +1 -1
- package/distr/Tools/src/StaticFilesForResourcesDir/polyfill.min.js.map +1 -0
- package/distr/Tools/src/StaticFilesForResourcesDir/testing.min.js +1 -1
- package/distr/Tools/src/StaticFilesForResourcesDir/testing.min.js.map +1 -0
- package/package.json +24 -24
- package/CHANGELOG.md +0 -1659
|
@@ -5,18 +5,18 @@
|
|
|
5
5
|
"use strict";
|
|
6
6
|
|
|
7
7
|
var __webpack_modules__ = {
|
|
8
|
-
|
|
8
|
+
750: function (e, t, r) {
|
|
9
9
|
var o, n, i;
|
|
10
10
|
function a(e) {
|
|
11
11
|
return "v1/ns/".concat(e.ns, "/drafts/").concat(e.draftId, "/client-draft-info");
|
|
12
12
|
}
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
r.d(t, {
|
|
14
|
+
I: function () {
|
|
15
15
|
return a;
|
|
16
16
|
}
|
|
17
|
-
}), e =
|
|
17
|
+
}), e = r.hmd(e), (o = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && o(e), "undefined" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature, (n = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && n.register(a, "getClientDraftInfoUrl", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\CandyApiClient\\ClientDraftInfo\\GetClientDraftInfoUrl.ts"), (i = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && i(e);
|
|
18
18
|
},
|
|
19
|
-
|
|
19
|
+
336: function (module, __webpack_exports__, __webpack_require__) {
|
|
20
20
|
function _typeof(e) {
|
|
21
21
|
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
|
|
22
22
|
return typeof e;
|
|
@@ -25,37 +25,49 @@
|
|
|
25
25
|
}, _typeof(e);
|
|
26
26
|
}
|
|
27
27
|
var enterModule;
|
|
28
|
-
function _classCallCheck(e,
|
|
29
|
-
if (!(e instanceof
|
|
28
|
+
function _classCallCheck(e, t) {
|
|
29
|
+
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
|
|
30
30
|
}
|
|
31
|
-
function _defineProperties(e,
|
|
32
|
-
for (var
|
|
33
|
-
var o = r
|
|
31
|
+
function _defineProperties(e, t) {
|
|
32
|
+
for (var r = 0; r < t.length; r++) {
|
|
33
|
+
var o = t[r];
|
|
34
34
|
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o);
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
function _createClass(e,
|
|
38
|
-
return
|
|
37
|
+
function _createClass(e, t, r) {
|
|
38
|
+
return t && _defineProperties(e.prototype, t), r && _defineProperties(e, r), Object.defineProperty(e, "prototype", {
|
|
39
39
|
writable: !1
|
|
40
40
|
}), e;
|
|
41
41
|
}
|
|
42
42
|
function _toPropertyKey(e) {
|
|
43
|
-
var
|
|
44
|
-
return "symbol"
|
|
45
|
-
}
|
|
46
|
-
function _toPrimitive(e,
|
|
47
|
-
if ("object"
|
|
48
|
-
var
|
|
49
|
-
if (void 0 !==
|
|
50
|
-
var o =
|
|
51
|
-
if ("object"
|
|
43
|
+
var t = _toPrimitive(e, "string");
|
|
44
|
+
return "symbol" == _typeof(t) ? t : t + "";
|
|
45
|
+
}
|
|
46
|
+
function _toPrimitive(e, t) {
|
|
47
|
+
if ("object" != _typeof(e) || !e) return e;
|
|
48
|
+
var r = e[Symbol.toPrimitive];
|
|
49
|
+
if (void 0 !== r) {
|
|
50
|
+
var o = r.call(e, t || "default");
|
|
51
|
+
if ("object" != _typeof(o)) return o;
|
|
52
52
|
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
53
53
|
}
|
|
54
|
-
return ("string" ===
|
|
54
|
+
return ("string" === t ? String : Number)(e);
|
|
55
55
|
}
|
|
56
|
-
function
|
|
57
|
-
|
|
58
|
-
|
|
56
|
+
function _callSuper(e, t, r) {
|
|
57
|
+
return t = _getPrototypeOf(t), _possibleConstructorReturn(e, _isNativeReflectConstruct() ? Reflect.construct(t, r || [], _getPrototypeOf(e).constructor) : t.apply(e, r));
|
|
58
|
+
}
|
|
59
|
+
function _possibleConstructorReturn(e, t) {
|
|
60
|
+
if (t && ("object" == _typeof(t) || "function" == typeof t)) return t;
|
|
61
|
+
if (void 0 !== t) throw new TypeError("Derived constructors may only return object or undefined");
|
|
62
|
+
return _assertThisInitialized(e);
|
|
63
|
+
}
|
|
64
|
+
function _assertThisInitialized(e) {
|
|
65
|
+
if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
66
|
+
return e;
|
|
67
|
+
}
|
|
68
|
+
function _inherits(e, t) {
|
|
69
|
+
if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
|
|
70
|
+
e.prototype = Object.create(t && t.prototype, {
|
|
59
71
|
constructor: {
|
|
60
72
|
value: e,
|
|
61
73
|
writable: !0,
|
|
@@ -63,76 +75,56 @@
|
|
|
63
75
|
}
|
|
64
76
|
}), Object.defineProperty(e, "prototype", {
|
|
65
77
|
writable: !1
|
|
66
|
-
}),
|
|
67
|
-
}
|
|
68
|
-
function _createSuper(e) {
|
|
69
|
-
var r = _isNativeReflectConstruct();
|
|
70
|
-
return function () {
|
|
71
|
-
var t,
|
|
72
|
-
o = _getPrototypeOf(e);
|
|
73
|
-
if (r) {
|
|
74
|
-
var n = _getPrototypeOf(this).constructor;
|
|
75
|
-
t = Reflect.construct(o, arguments, n);
|
|
76
|
-
} else t = o.apply(this, arguments);
|
|
77
|
-
return _possibleConstructorReturn(this, t);
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
function _possibleConstructorReturn(e, r) {
|
|
81
|
-
if (r && ("object" === _typeof(r) || "function" == typeof r)) return r;
|
|
82
|
-
if (void 0 !== r) throw new TypeError("Derived constructors may only return object or undefined");
|
|
83
|
-
return _assertThisInitialized(e);
|
|
84
|
-
}
|
|
85
|
-
function _assertThisInitialized(e) {
|
|
86
|
-
if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
87
|
-
return e;
|
|
78
|
+
}), t && _setPrototypeOf(e, t);
|
|
88
79
|
}
|
|
89
80
|
function _wrapNativeSuper(e) {
|
|
90
|
-
var
|
|
81
|
+
var t = "function" == typeof Map ? new Map() : void 0;
|
|
91
82
|
return _wrapNativeSuper = function (e) {
|
|
92
83
|
if (null === e || !_isNativeFunction(e)) return e;
|
|
93
84
|
if ("function" != typeof e) throw new TypeError("Super expression must either be null or a function");
|
|
94
|
-
if (void 0 !==
|
|
95
|
-
if (
|
|
96
|
-
|
|
85
|
+
if (void 0 !== t) {
|
|
86
|
+
if (t.has(e)) return t.get(e);
|
|
87
|
+
t.set(e, r);
|
|
97
88
|
}
|
|
98
|
-
function
|
|
89
|
+
function r() {
|
|
99
90
|
return _construct(e, arguments, _getPrototypeOf(this).constructor);
|
|
100
91
|
}
|
|
101
|
-
return
|
|
92
|
+
return r.prototype = Object.create(e.prototype, {
|
|
102
93
|
constructor: {
|
|
103
|
-
value:
|
|
94
|
+
value: r,
|
|
104
95
|
enumerable: !1,
|
|
105
96
|
writable: !0,
|
|
106
97
|
configurable: !0
|
|
107
98
|
}
|
|
108
|
-
}), _setPrototypeOf(
|
|
99
|
+
}), _setPrototypeOf(r, e);
|
|
109
100
|
}, _wrapNativeSuper(e);
|
|
110
101
|
}
|
|
111
|
-
function _construct(e,
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}, _construct.apply(null, arguments);
|
|
102
|
+
function _construct(e, t, r) {
|
|
103
|
+
if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);
|
|
104
|
+
var o = [null];
|
|
105
|
+
o.push.apply(o, t);
|
|
106
|
+
var n = new (e.bind.apply(e, o))();
|
|
107
|
+
return r && _setPrototypeOf(n, r.prototype), n;
|
|
118
108
|
}
|
|
119
109
|
function _isNativeReflectConstruct() {
|
|
120
|
-
if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
|
|
121
|
-
if (Reflect.construct.sham) return !1;
|
|
122
|
-
if ("function" == typeof Proxy) return !0;
|
|
123
110
|
try {
|
|
124
|
-
|
|
125
|
-
} catch (e) {
|
|
126
|
-
|
|
127
|
-
|
|
111
|
+
var e = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
|
|
112
|
+
} catch (e) {}
|
|
113
|
+
return (_isNativeReflectConstruct = function () {
|
|
114
|
+
return !!e;
|
|
115
|
+
})();
|
|
128
116
|
}
|
|
129
117
|
function _isNativeFunction(e) {
|
|
130
|
-
|
|
118
|
+
try {
|
|
119
|
+
return -1 !== Function.toString.call(e).indexOf("[native code]");
|
|
120
|
+
} catch (t) {
|
|
121
|
+
return "function" == typeof e;
|
|
122
|
+
}
|
|
131
123
|
}
|
|
132
|
-
function _setPrototypeOf(e,
|
|
133
|
-
return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (e,
|
|
134
|
-
return e.__proto__ =
|
|
135
|
-
}, _setPrototypeOf(e,
|
|
124
|
+
function _setPrototypeOf(e, t) {
|
|
125
|
+
return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (e, t) {
|
|
126
|
+
return e.__proto__ = t, e;
|
|
127
|
+
}, _setPrototypeOf(e, t);
|
|
136
128
|
}
|
|
137
129
|
function _getPrototypeOf(e) {
|
|
138
130
|
return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (e) {
|
|
@@ -140,7 +132,7 @@
|
|
|
140
132
|
}, _getPrototypeOf(e);
|
|
141
133
|
}
|
|
142
134
|
__webpack_require__.d(__webpack_exports__, {
|
|
143
|
-
|
|
135
|
+
EH: function () {
|
|
144
136
|
return NotImplementedError;
|
|
145
137
|
}
|
|
146
138
|
}), module = __webpack_require__.hmd(module), enterModule = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0, enterModule && enterModule(module);
|
|
@@ -148,89 +140,77 @@
|
|
|
148
140
|
return e;
|
|
149
141
|
},
|
|
150
142
|
ApplicationError = function (_Error) {
|
|
151
|
-
_inherits(ApplicationError, _Error);
|
|
152
|
-
var _super = _createSuper(ApplicationError);
|
|
153
143
|
function ApplicationError(e) {
|
|
154
|
-
var
|
|
155
|
-
return _classCallCheck(this, ApplicationError), (
|
|
144
|
+
var t;
|
|
145
|
+
return _classCallCheck(this, ApplicationError), (t = _callSuper(this, ApplicationError, [e])).name = t.constructor.name, t;
|
|
156
146
|
}
|
|
157
|
-
return _createClass(ApplicationError, [{
|
|
147
|
+
return _inherits(ApplicationError, _Error), _createClass(ApplicationError, [{
|
|
158
148
|
key: "__reactstandin__regenerateByEval",
|
|
159
149
|
value: function __reactstandin__regenerateByEval(key, code) {
|
|
160
150
|
this[key] = eval(code);
|
|
161
151
|
}
|
|
162
|
-
}])
|
|
152
|
+
}]);
|
|
163
153
|
}(_wrapNativeSuper(Error)),
|
|
164
154
|
NotImplementedError = function (_ApplicationError) {
|
|
165
|
-
_inherits(NotImplementedError, _ApplicationError);
|
|
166
|
-
var _super2 = _createSuper(NotImplementedError);
|
|
167
155
|
function NotImplementedError() {
|
|
168
|
-
return _classCallCheck(this, NotImplementedError),
|
|
156
|
+
return _classCallCheck(this, NotImplementedError), _callSuper(this, NotImplementedError, ["Operation not implemented"]);
|
|
169
157
|
}
|
|
170
|
-
return _createClass(NotImplementedError, [{
|
|
158
|
+
return _inherits(NotImplementedError, _ApplicationError), _createClass(NotImplementedError, [{
|
|
171
159
|
key: "__reactstandin__regenerateByEval",
|
|
172
160
|
value: function __reactstandin__regenerateByEval(key, code) {
|
|
173
161
|
this[key] = eval(code);
|
|
174
162
|
}
|
|
175
|
-
}])
|
|
163
|
+
}]);
|
|
176
164
|
}(ApplicationError),
|
|
177
165
|
NotSupportedError = function (_ApplicationError2) {
|
|
178
|
-
_inherits(NotSupportedError, _ApplicationError2);
|
|
179
|
-
var _super3 = _createSuper(NotSupportedError);
|
|
180
166
|
function NotSupportedError(e) {
|
|
181
|
-
return _classCallCheck(this, NotSupportedError),
|
|
167
|
+
return _classCallCheck(this, NotSupportedError), _callSuper(this, NotSupportedError, [null != e ? e : "Operation not supported"]);
|
|
182
168
|
}
|
|
183
|
-
return _createClass(NotSupportedError, [{
|
|
169
|
+
return _inherits(NotSupportedError, _ApplicationError2), _createClass(NotSupportedError, [{
|
|
184
170
|
key: "__reactstandin__regenerateByEval",
|
|
185
171
|
value: function __reactstandin__regenerateByEval(key, code) {
|
|
186
172
|
this[key] = eval(code);
|
|
187
173
|
}
|
|
188
|
-
}])
|
|
174
|
+
}]);
|
|
189
175
|
}(ApplicationError),
|
|
190
176
|
InvalidProgramStateError = function (_ApplicationError3) {
|
|
191
|
-
_inherits(InvalidProgramStateError, _ApplicationError3);
|
|
192
|
-
var _super4 = _createSuper(InvalidProgramStateError);
|
|
193
177
|
function InvalidProgramStateError(e) {
|
|
194
|
-
return _classCallCheck(this, InvalidProgramStateError),
|
|
178
|
+
return _classCallCheck(this, InvalidProgramStateError), _callSuper(this, InvalidProgramStateError, ["Invalid program state" + (null != e ? ": " + e : "")]);
|
|
195
179
|
}
|
|
196
|
-
return _createClass(InvalidProgramStateError, [{
|
|
180
|
+
return _inherits(InvalidProgramStateError, _ApplicationError3), _createClass(InvalidProgramStateError, [{
|
|
197
181
|
key: "__reactstandin__regenerateByEval",
|
|
198
182
|
value: function __reactstandin__regenerateByEval(key, code) {
|
|
199
183
|
this[key] = eval(code);
|
|
200
184
|
}
|
|
201
|
-
}])
|
|
185
|
+
}]);
|
|
202
186
|
}(ApplicationError),
|
|
203
187
|
InvalidArgumentError = function (_ApplicationError4) {
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
function InvalidArgumentError(e, r) {
|
|
207
|
-
return _classCallCheck(this, InvalidArgumentError), _super5.call(this, null != r ? "".concat(r, " (argument: ").concat(e, ")") : "Invalid argument value: ".concat(e));
|
|
188
|
+
function InvalidArgumentError(e, t) {
|
|
189
|
+
return _classCallCheck(this, InvalidArgumentError), _callSuper(this, InvalidArgumentError, [null != t ? "".concat(t, " (argument: ").concat(e, ")") : "Invalid argument value: ".concat(e)]);
|
|
208
190
|
}
|
|
209
|
-
return _createClass(InvalidArgumentError, [{
|
|
191
|
+
return _inherits(InvalidArgumentError, _ApplicationError4), _createClass(InvalidArgumentError, [{
|
|
210
192
|
key: "__reactstandin__regenerateByEval",
|
|
211
193
|
value: function __reactstandin__regenerateByEval(key, code) {
|
|
212
194
|
this[key] = eval(code);
|
|
213
195
|
}
|
|
214
|
-
}])
|
|
196
|
+
}]);
|
|
215
197
|
}(ApplicationError),
|
|
216
198
|
TypingError = function (_ApplicationError5) {
|
|
217
|
-
_inherits(TypingError, _ApplicationError5);
|
|
218
|
-
var _super6 = _createSuper(TypingError);
|
|
219
199
|
function TypingError() {
|
|
220
|
-
return _classCallCheck(this, TypingError),
|
|
200
|
+
return _classCallCheck(this, TypingError), _callSuper(this, TypingError, ["Invalid typing"]);
|
|
221
201
|
}
|
|
222
|
-
return _createClass(TypingError, [{
|
|
202
|
+
return _inherits(TypingError, _ApplicationError5), _createClass(TypingError, [{
|
|
223
203
|
key: "__reactstandin__regenerateByEval",
|
|
224
204
|
value: function __reactstandin__regenerateByEval(key, code) {
|
|
225
205
|
this[key] = eval(code);
|
|
226
206
|
}
|
|
227
|
-
}])
|
|
207
|
+
}]);
|
|
228
208
|
}(ApplicationError),
|
|
229
209
|
reactHotLoader,
|
|
230
210
|
leaveModule;
|
|
231
211
|
reactHotLoader = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0, reactHotLoader && (reactHotLoader.register(ApplicationError, "ApplicationError", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\Errors.ts"), reactHotLoader.register(NotImplementedError, "NotImplementedError", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\Errors.ts"), reactHotLoader.register(NotSupportedError, "NotSupportedError", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\Errors.ts"), reactHotLoader.register(InvalidProgramStateError, "InvalidProgramStateError", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\Errors.ts"), reactHotLoader.register(InvalidArgumentError, "InvalidArgumentError", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\Errors.ts"), reactHotLoader.register(TypingError, "TypingError", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\Errors.ts")), leaveModule = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0, leaveModule && leaveModule(module);
|
|
232
212
|
},
|
|
233
|
-
|
|
213
|
+
163: function (e, t, r) {
|
|
234
214
|
var o, n, i;
|
|
235
215
|
function a(e) {
|
|
236
216
|
return a = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
|
|
@@ -245,11 +225,11 @@
|
|
|
245
225
|
function s(e) {
|
|
246
226
|
throw "string" == typeof e || null == e ? new Error(null != e ? e : "Undefined is not allowed") : e;
|
|
247
227
|
}
|
|
248
|
-
function l(e,
|
|
249
|
-
return e.length >=
|
|
228
|
+
function l(e, t) {
|
|
229
|
+
return e.length >= t;
|
|
250
230
|
}
|
|
251
|
-
function c(e,
|
|
252
|
-
return e.length ===
|
|
231
|
+
function c(e, t) {
|
|
232
|
+
return e.length === t;
|
|
253
233
|
}
|
|
254
234
|
function f(e) {
|
|
255
235
|
return e.length > 0;
|
|
@@ -257,24 +237,24 @@
|
|
|
257
237
|
function d(e) {
|
|
258
238
|
return null == e || "" === e;
|
|
259
239
|
}
|
|
260
|
-
|
|
261
|
-
|
|
240
|
+
r.d(t, {
|
|
241
|
+
ku: function () {
|
|
262
242
|
return s;
|
|
263
243
|
}
|
|
264
|
-
}), e =
|
|
244
|
+
}), e = r.hmd(e), (o = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && o(e), "undefined" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature, (n = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && (n.register(u, "isNotNullOrUndefined", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {
|
|
265
245
|
return "object" === a(e) && (null == e ? void 0 : e.message);
|
|
266
246
|
}, "stringifyUnknownError", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {
|
|
267
247
|
if (!u(e)) throw new Error("Value must be defined");
|
|
268
|
-
}, "ensureNotNullOrUndefined", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function () {}, "noop", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(s, "reject", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(l, "isLengthGreaterThenOrEqual", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e,
|
|
269
|
-
if (l(e,
|
|
248
|
+
}, "ensureNotNullOrUndefined", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function () {}, "noop", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(s, "reject", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(l, "isLengthGreaterThenOrEqual", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e, t) {
|
|
249
|
+
if (l(e, t)) return e;
|
|
270
250
|
}, "minLengthOrUndefined", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(c, "arrayHasLength", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(f, "arrayIsNotEmpty", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {
|
|
271
251
|
return e.length > 0;
|
|
272
252
|
}, "arrayHasAtLeastOneItem", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {
|
|
273
253
|
if (!f(e)) throw new Error("Array must be not empty");
|
|
274
|
-
}, "ensureArrayIsNotEmpty", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e,
|
|
275
|
-
if (!c(e,
|
|
276
|
-
}, "ensureArrayHasLength", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e,
|
|
277
|
-
if (!l(e,
|
|
254
|
+
}, "ensureArrayIsNotEmpty", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e, t) {
|
|
255
|
+
if (!c(e, t)) throw new Error("Array should has length ".concat(t));
|
|
256
|
+
}, "ensureArrayHasLength", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e, t) {
|
|
257
|
+
if (!l(e, t)) throw new Error("Array must have minimal length ".concat(t));
|
|
278
258
|
}, "ensureArrayLengthGreaterThenOrEqual", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {}, "ensureNever", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {
|
|
279
259
|
return "".concat(e);
|
|
280
260
|
}, "ensureAndGetString", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {
|
|
@@ -287,8 +267,8 @@
|
|
|
287
267
|
return "/" === e.slice(-1) ? e.slice(0, -1) : e;
|
|
288
268
|
}, "trimLastSlash", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {}, "assertIs", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts")), (i = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && i(e);
|
|
289
269
|
},
|
|
290
|
-
|
|
291
|
-
var o = "undefined" != typeof globalThis && globalThis || "undefined" != typeof self && self || void 0 !==
|
|
270
|
+
591: function (e, t, r) {
|
|
271
|
+
var o = "undefined" != typeof globalThis && globalThis || "undefined" != typeof self && self || void 0 !== r.g && r.g || {},
|
|
292
272
|
n = {
|
|
293
273
|
searchParams: "URLSearchParams" in o,
|
|
294
274
|
iterable: "Symbol" in o && "iterator" in Symbol,
|
|
@@ -314,55 +294,55 @@
|
|
|
314
294
|
return "string" != typeof e && (e = String(e)), e;
|
|
315
295
|
}
|
|
316
296
|
function l(e) {
|
|
317
|
-
var
|
|
297
|
+
var t = {
|
|
318
298
|
next: function () {
|
|
319
|
-
var
|
|
299
|
+
var t = e.shift();
|
|
320
300
|
return {
|
|
321
|
-
done: void 0 ===
|
|
322
|
-
value:
|
|
301
|
+
done: void 0 === t,
|
|
302
|
+
value: t
|
|
323
303
|
};
|
|
324
304
|
}
|
|
325
305
|
};
|
|
326
|
-
return n.iterable && (
|
|
327
|
-
return
|
|
328
|
-
}),
|
|
306
|
+
return n.iterable && (t[Symbol.iterator] = function () {
|
|
307
|
+
return t;
|
|
308
|
+
}), t;
|
|
329
309
|
}
|
|
330
310
|
function c(e) {
|
|
331
|
-
this.map = {}, e instanceof c ? e.forEach(function (e,
|
|
332
|
-
this.append(
|
|
311
|
+
this.map = {}, e instanceof c ? e.forEach(function (e, t) {
|
|
312
|
+
this.append(t, e);
|
|
333
313
|
}, this) : Array.isArray(e) ? e.forEach(function (e) {
|
|
314
|
+
if (2 != e.length) throw new TypeError("Headers constructor: expected name/value pair to be length 2, found" + e.length);
|
|
334
315
|
this.append(e[0], e[1]);
|
|
335
|
-
}, this) : e && Object.getOwnPropertyNames(e).forEach(function (
|
|
336
|
-
this.append(
|
|
316
|
+
}, this) : e && Object.getOwnPropertyNames(e).forEach(function (t) {
|
|
317
|
+
this.append(t, e[t]);
|
|
337
318
|
}, this);
|
|
338
319
|
}
|
|
339
320
|
function f(e) {
|
|
340
|
-
if (e.
|
|
341
|
-
e.bodyUsed = !0;
|
|
321
|
+
if (!e._noBody) return e.bodyUsed ? Promise.reject(new TypeError("Already read")) : void (e.bodyUsed = !0);
|
|
342
322
|
}
|
|
343
323
|
function d(e) {
|
|
344
|
-
return new Promise(function (
|
|
324
|
+
return new Promise(function (t, r) {
|
|
345
325
|
e.onload = function () {
|
|
346
|
-
|
|
326
|
+
t(e.result);
|
|
347
327
|
}, e.onerror = function () {
|
|
348
|
-
|
|
328
|
+
r(e.error);
|
|
349
329
|
};
|
|
350
330
|
});
|
|
351
331
|
}
|
|
352
332
|
function p(e) {
|
|
353
|
-
var
|
|
354
|
-
|
|
355
|
-
return
|
|
333
|
+
var t = new FileReader(),
|
|
334
|
+
r = d(t);
|
|
335
|
+
return t.readAsArrayBuffer(e), r;
|
|
356
336
|
}
|
|
357
337
|
function y(e) {
|
|
358
338
|
if (e.slice) return e.slice(0);
|
|
359
|
-
var
|
|
360
|
-
return
|
|
339
|
+
var t = new Uint8Array(e.byteLength);
|
|
340
|
+
return t.set(new Uint8Array(e)), t.buffer;
|
|
361
341
|
}
|
|
362
342
|
function m() {
|
|
363
343
|
return this.bodyUsed = !1, this._initBody = function (e) {
|
|
364
|
-
var
|
|
365
|
-
this.bodyUsed = this.bodyUsed, this._bodyInit = e, e ? "string" == typeof e ? this._bodyText = e : n.blob && Blob.prototype.isPrototypeOf(e) ? this._bodyBlob = e : n.formData && FormData.prototype.isPrototypeOf(e) ? this._bodyFormData = e : n.searchParams && URLSearchParams.prototype.isPrototypeOf(e) ? this._bodyText = e.toString() : n.arrayBuffer && n.blob && (
|
|
344
|
+
var t;
|
|
345
|
+
this.bodyUsed = this.bodyUsed, this._bodyInit = e, e ? "string" == typeof e ? this._bodyText = e : n.blob && Blob.prototype.isPrototypeOf(e) ? this._bodyBlob = e : n.formData && FormData.prototype.isPrototypeOf(e) ? this._bodyFormData = e : n.searchParams && URLSearchParams.prototype.isPrototypeOf(e) ? this._bodyText = e.toString() : n.arrayBuffer && n.blob && (t = e) && DataView.prototype.isPrototypeOf(t) ? (this._bodyArrayBuffer = y(e.buffer), this._bodyInit = new Blob([this._bodyArrayBuffer])) : n.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(e) || a(e)) ? this._bodyArrayBuffer = y(e) : this._bodyText = e = Object.prototype.toString.call(e) : (this._noBody = !0, this._bodyText = ""), this.headers.get("content-type") || ("string" == typeof e ? this.headers.set("content-type", "text/plain;charset=UTF-8") : this._bodyBlob && this._bodyBlob.type ? this.headers.set("content-type", this._bodyBlob.type) : n.searchParams && URLSearchParams.prototype.isPrototypeOf(e) && this.headers.set("content-type", "application/x-www-form-urlencoded;charset=UTF-8"));
|
|
366
346
|
}, n.blob && (this.blob = function () {
|
|
367
347
|
var e = f(this);
|
|
368
348
|
if (e) return e;
|
|
@@ -370,18 +350,22 @@
|
|
|
370
350
|
if (this._bodyArrayBuffer) return Promise.resolve(new Blob([this._bodyArrayBuffer]));
|
|
371
351
|
if (this._bodyFormData) throw new Error("could not read FormData body as blob");
|
|
372
352
|
return Promise.resolve(new Blob([this._bodyText]));
|
|
373
|
-
}, this.arrayBuffer = function () {
|
|
374
|
-
|
|
375
|
-
|
|
353
|
+
}), this.arrayBuffer = function () {
|
|
354
|
+
if (this._bodyArrayBuffer) return f(this) || (ArrayBuffer.isView(this._bodyArrayBuffer) ? Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset, this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength)) : Promise.resolve(this._bodyArrayBuffer));
|
|
355
|
+
if (n.blob) return this.blob().then(p);
|
|
356
|
+
throw new Error("could not read as ArrayBuffer");
|
|
357
|
+
}, this.text = function () {
|
|
376
358
|
var e,
|
|
377
|
-
r,
|
|
378
359
|
t,
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
360
|
+
r,
|
|
361
|
+
o,
|
|
362
|
+
n,
|
|
363
|
+
i = f(this);
|
|
364
|
+
if (i) return i;
|
|
365
|
+
if (this._bodyBlob) return e = this._bodyBlob, r = d(t = new FileReader()), n = (o = /charset=([A-Za-z0-9_-]+)/.exec(e.type)) ? o[1] : "utf-8", t.readAsText(e, n), r;
|
|
382
366
|
if (this._bodyArrayBuffer) return Promise.resolve(function (e) {
|
|
383
|
-
for (var
|
|
384
|
-
return
|
|
367
|
+
for (var t = new Uint8Array(e), r = new Array(t.length), o = 0; o < t.length; o++) r[o] = String.fromCharCode(t[o]);
|
|
368
|
+
return r.join("");
|
|
385
369
|
}(this._bodyArrayBuffer));
|
|
386
370
|
if (this._bodyFormData) throw new Error("could not read FormData body as text");
|
|
387
371
|
return Promise.resolve(this._bodyText);
|
|
@@ -391,66 +375,69 @@
|
|
|
391
375
|
return this.text().then(JSON.parse);
|
|
392
376
|
}, this;
|
|
393
377
|
}
|
|
394
|
-
c.prototype.append = function (e,
|
|
395
|
-
e = u(e),
|
|
396
|
-
var
|
|
397
|
-
this.map[e] =
|
|
378
|
+
c.prototype.append = function (e, t) {
|
|
379
|
+
e = u(e), t = s(t);
|
|
380
|
+
var r = this.map[e];
|
|
381
|
+
this.map[e] = r ? r + ", " + t : t;
|
|
398
382
|
}, c.prototype.delete = function (e) {
|
|
399
383
|
delete this.map[u(e)];
|
|
400
384
|
}, c.prototype.get = function (e) {
|
|
401
385
|
return e = u(e), this.has(e) ? this.map[e] : null;
|
|
402
386
|
}, c.prototype.has = function (e) {
|
|
403
387
|
return this.map.hasOwnProperty(u(e));
|
|
404
|
-
}, c.prototype.set = function (e,
|
|
405
|
-
this.map[u(e)] = s(
|
|
406
|
-
}, c.prototype.forEach = function (e,
|
|
407
|
-
for (var
|
|
388
|
+
}, c.prototype.set = function (e, t) {
|
|
389
|
+
this.map[u(e)] = s(t);
|
|
390
|
+
}, c.prototype.forEach = function (e, t) {
|
|
391
|
+
for (var r in this.map) this.map.hasOwnProperty(r) && e.call(t, this.map[r], r, this);
|
|
408
392
|
}, c.prototype.keys = function () {
|
|
409
393
|
var e = [];
|
|
410
|
-
return this.forEach(function (
|
|
411
|
-
e.push(
|
|
394
|
+
return this.forEach(function (t, r) {
|
|
395
|
+
e.push(r);
|
|
412
396
|
}), l(e);
|
|
413
397
|
}, c.prototype.values = function () {
|
|
414
398
|
var e = [];
|
|
415
|
-
return this.forEach(function (
|
|
416
|
-
e.push(
|
|
399
|
+
return this.forEach(function (t) {
|
|
400
|
+
e.push(t);
|
|
417
401
|
}), l(e);
|
|
418
402
|
}, c.prototype.entries = function () {
|
|
419
403
|
var e = [];
|
|
420
|
-
return this.forEach(function (
|
|
421
|
-
e.push([
|
|
404
|
+
return this.forEach(function (t, r) {
|
|
405
|
+
e.push([r, t]);
|
|
422
406
|
}), l(e);
|
|
423
407
|
}, n.iterable && (c.prototype[Symbol.iterator] = c.prototype.entries);
|
|
424
|
-
var h = ["DELETE", "GET", "HEAD", "OPTIONS", "POST", "PUT"];
|
|
425
|
-
function g(e,
|
|
408
|
+
var h = ["CONNECT", "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT", "TRACE"];
|
|
409
|
+
function g(e, t) {
|
|
426
410
|
if (!(this instanceof g)) throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');
|
|
427
|
-
var
|
|
428
|
-
|
|
429
|
-
|
|
411
|
+
var r,
|
|
412
|
+
n,
|
|
413
|
+
i = (t = t || {}).body;
|
|
430
414
|
if (e instanceof g) {
|
|
431
415
|
if (e.bodyUsed) throw new TypeError("Already read");
|
|
432
|
-
this.url = e.url, this.credentials = e.credentials,
|
|
416
|
+
this.url = e.url, this.credentials = e.credentials, t.headers || (this.headers = new c(e.headers)), this.method = e.method, this.mode = e.mode, this.signal = e.signal, i || null == e._bodyInit || (i = e._bodyInit, e.bodyUsed = !0);
|
|
433
417
|
} else this.url = String(e);
|
|
434
|
-
if (this.credentials =
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
418
|
+
if (this.credentials = t.credentials || this.credentials || "same-origin", !t.headers && this.headers || (this.headers = new c(t.headers)), this.method = (n = (r = t.method || this.method || "GET").toUpperCase(), h.indexOf(n) > -1 ? n : r), this.mode = t.mode || this.mode || null, this.signal = t.signal || this.signal || function () {
|
|
419
|
+
if ("AbortController" in o) return new AbortController().signal;
|
|
420
|
+
}(), this.referrer = null, ("GET" === this.method || "HEAD" === this.method) && i) throw new TypeError("Body not allowed for GET or HEAD requests");
|
|
421
|
+
if (this._initBody(i), !("GET" !== this.method && "HEAD" !== this.method || "no-store" !== t.cache && "no-cache" !== t.cache)) {
|
|
422
|
+
var a = /([?&])_=[^&]*/;
|
|
423
|
+
a.test(this.url) ? this.url = this.url.replace(a, "$1_=" + new Date().getTime()) : this.url += (/\?/.test(this.url) ? "&" : "?") + "_=" + new Date().getTime();
|
|
438
424
|
}
|
|
439
425
|
}
|
|
440
426
|
function _(e) {
|
|
441
|
-
var
|
|
427
|
+
var t = new FormData();
|
|
442
428
|
return e.trim().split("&").forEach(function (e) {
|
|
443
429
|
if (e) {
|
|
444
|
-
var
|
|
445
|
-
o =
|
|
446
|
-
n =
|
|
447
|
-
|
|
430
|
+
var r = e.split("="),
|
|
431
|
+
o = r.shift().replace(/\+/g, " "),
|
|
432
|
+
n = r.join("=").replace(/\+/g, " ");
|
|
433
|
+
t.append(decodeURIComponent(o), decodeURIComponent(n));
|
|
448
434
|
}
|
|
449
|
-
}),
|
|
435
|
+
}), t;
|
|
450
436
|
}
|
|
451
|
-
function v(e,
|
|
437
|
+
function v(e, t) {
|
|
452
438
|
if (!(this instanceof v)) throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');
|
|
453
|
-
|
|
439
|
+
if (t || (t = {}), this.type = "default", this.status = void 0 === t.status ? 200 : t.status, this.status < 200 || this.status > 599) throw new RangeError("Failed to construct 'Response': The status provided (0) is outside the range [200, 599].");
|
|
440
|
+
this.ok = this.status >= 200 && this.status < 300, this.statusText = void 0 === t.statusText ? "" : "" + t.statusText, this.headers = new c(t.headers), this.url = t.url || "", this._initBody(e);
|
|
454
441
|
}
|
|
455
442
|
g.prototype.clone = function () {
|
|
456
443
|
return new g(this, {
|
|
@@ -465,95 +452,104 @@
|
|
|
465
452
|
});
|
|
466
453
|
}, v.error = function () {
|
|
467
454
|
var e = new v(null, {
|
|
468
|
-
status:
|
|
455
|
+
status: 200,
|
|
469
456
|
statusText: ""
|
|
470
457
|
});
|
|
471
|
-
return e.type = "error", e;
|
|
458
|
+
return e.ok = !1, e.status = 0, e.type = "error", e;
|
|
472
459
|
};
|
|
473
460
|
var b = [301, 302, 303, 307, 308];
|
|
474
|
-
v.redirect = function (e,
|
|
475
|
-
if (-1 === b.indexOf(
|
|
461
|
+
v.redirect = function (e, t) {
|
|
462
|
+
if (-1 === b.indexOf(t)) throw new RangeError("Invalid status code");
|
|
476
463
|
return new v(null, {
|
|
477
|
-
status:
|
|
464
|
+
status: t,
|
|
478
465
|
headers: {
|
|
479
466
|
location: e
|
|
480
467
|
}
|
|
481
468
|
});
|
|
482
469
|
};
|
|
483
|
-
var
|
|
470
|
+
var E = o.DOMException;
|
|
484
471
|
try {
|
|
485
|
-
new
|
|
472
|
+
new E();
|
|
486
473
|
} catch (e) {
|
|
487
|
-
(
|
|
488
|
-
this.message = e, this.name =
|
|
489
|
-
var
|
|
490
|
-
this.stack =
|
|
491
|
-
}).prototype = Object.create(Error.prototype),
|
|
492
|
-
}
|
|
493
|
-
function
|
|
494
|
-
return new Promise(function (
|
|
495
|
-
var a = new g(e,
|
|
496
|
-
if (a.signal && a.signal.aborted) return i(new
|
|
497
|
-
var
|
|
498
|
-
function
|
|
499
|
-
|
|
474
|
+
(E = function (e, t) {
|
|
475
|
+
this.message = e, this.name = t;
|
|
476
|
+
var r = Error(e);
|
|
477
|
+
this.stack = r.stack;
|
|
478
|
+
}).prototype = Object.create(Error.prototype), E.prototype.constructor = E;
|
|
479
|
+
}
|
|
480
|
+
function w(e, t) {
|
|
481
|
+
return new Promise(function (r, i) {
|
|
482
|
+
var a = new g(e, t);
|
|
483
|
+
if (a.signal && a.signal.aborted) return i(new E("Aborted", "AbortError"));
|
|
484
|
+
var l = new XMLHttpRequest();
|
|
485
|
+
function f() {
|
|
486
|
+
l.abort();
|
|
500
487
|
}
|
|
501
|
-
|
|
488
|
+
if (l.onload = function () {
|
|
502
489
|
var e,
|
|
503
|
-
|
|
490
|
+
t,
|
|
504
491
|
o = {
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
headers: (e = u.getAllResponseHeaders() || "", r = new c(), e.replace(/\r?\n[\t ]+/g, " ").split("\r").map(function (e) {
|
|
492
|
+
statusText: l.statusText,
|
|
493
|
+
headers: (e = l.getAllResponseHeaders() || "", t = new c(), e.replace(/\r?\n[\t ]+/g, " ").split("\r").map(function (e) {
|
|
508
494
|
return 0 === e.indexOf("\n") ? e.substr(1, e.length) : e;
|
|
509
495
|
}).forEach(function (e) {
|
|
510
|
-
var
|
|
511
|
-
o =
|
|
496
|
+
var r = e.split(":"),
|
|
497
|
+
o = r.shift().trim();
|
|
512
498
|
if (o) {
|
|
513
|
-
var n =
|
|
514
|
-
|
|
499
|
+
var n = r.join(":").trim();
|
|
500
|
+
try {
|
|
501
|
+
t.append(o, n);
|
|
502
|
+
} catch (e) {
|
|
503
|
+
console.warn("Response " + e.message);
|
|
504
|
+
}
|
|
515
505
|
}
|
|
516
|
-
}),
|
|
506
|
+
}), t)
|
|
517
507
|
};
|
|
518
|
-
o.url = "responseURL" in
|
|
519
|
-
var n = "response" in
|
|
508
|
+
0 === a.url.indexOf("file://") && (l.status < 200 || l.status > 599) ? o.status = 200 : o.status = l.status, o.url = "responseURL" in l ? l.responseURL : o.headers.get("X-Request-URL");
|
|
509
|
+
var n = "response" in l ? l.response : l.responseText;
|
|
520
510
|
setTimeout(function () {
|
|
521
|
-
|
|
511
|
+
r(new v(n, o));
|
|
522
512
|
}, 0);
|
|
523
|
-
},
|
|
513
|
+
}, l.onerror = function () {
|
|
524
514
|
setTimeout(function () {
|
|
525
515
|
i(new TypeError("Network request failed"));
|
|
526
516
|
}, 0);
|
|
527
|
-
},
|
|
517
|
+
}, l.ontimeout = function () {
|
|
528
518
|
setTimeout(function () {
|
|
529
|
-
i(new TypeError("Network request
|
|
519
|
+
i(new TypeError("Network request timed out"));
|
|
530
520
|
}, 0);
|
|
531
|
-
},
|
|
521
|
+
}, l.onabort = function () {
|
|
532
522
|
setTimeout(function () {
|
|
533
|
-
i(new
|
|
523
|
+
i(new E("Aborted", "AbortError"));
|
|
534
524
|
}, 0);
|
|
535
|
-
},
|
|
525
|
+
}, l.open(a.method, function (e) {
|
|
536
526
|
try {
|
|
537
527
|
return "" === e && o.location.href ? o.location.href : e;
|
|
538
|
-
} catch (
|
|
528
|
+
} catch (t) {
|
|
539
529
|
return e;
|
|
540
530
|
}
|
|
541
|
-
}(a.url), !0), "include" === a.credentials ?
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
531
|
+
}(a.url), !0), "include" === a.credentials ? l.withCredentials = !0 : "omit" === a.credentials && (l.withCredentials = !1), "responseType" in l && (n.blob ? l.responseType = "blob" : n.arrayBuffer && (l.responseType = "arraybuffer")), t && "object" == typeof t.headers && !(t.headers instanceof c || o.Headers && t.headers instanceof o.Headers)) {
|
|
532
|
+
var d = [];
|
|
533
|
+
Object.getOwnPropertyNames(t.headers).forEach(function (e) {
|
|
534
|
+
d.push(u(e)), l.setRequestHeader(e, s(t.headers[e]));
|
|
535
|
+
}), a.headers.forEach(function (e, t) {
|
|
536
|
+
-1 === d.indexOf(t) && l.setRequestHeader(t, e);
|
|
537
|
+
});
|
|
538
|
+
} else a.headers.forEach(function (e, t) {
|
|
539
|
+
l.setRequestHeader(t, e);
|
|
540
|
+
});
|
|
541
|
+
a.signal && (a.signal.addEventListener("abort", f), l.onreadystatechange = function () {
|
|
542
|
+
4 === l.readyState && a.signal.removeEventListener("abort", f);
|
|
543
|
+
}), l.send(void 0 === a._bodyInit ? null : a._bodyInit);
|
|
548
544
|
});
|
|
549
545
|
}
|
|
550
|
-
|
|
546
|
+
w.polyfill = !0, o.fetch || (o.fetch = w, o.Headers = c, o.Request = g, o.Response = v);
|
|
551
547
|
var k,
|
|
552
|
-
C =
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
O =
|
|
556
|
-
L =
|
|
548
|
+
C = r(163),
|
|
549
|
+
A = r(500),
|
|
550
|
+
P = r(750),
|
|
551
|
+
O = r(171),
|
|
552
|
+
L = r(768);
|
|
557
553
|
function S(e) {
|
|
558
554
|
return S = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
|
|
559
555
|
return typeof e;
|
|
@@ -561,82 +557,82 @@
|
|
|
561
557
|
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
|
|
562
558
|
}, S(e);
|
|
563
559
|
}
|
|
564
|
-
function B(e,
|
|
565
|
-
var
|
|
560
|
+
function B(e, t) {
|
|
561
|
+
var r = Object.keys(e);
|
|
566
562
|
if (Object.getOwnPropertySymbols) {
|
|
567
563
|
var o = Object.getOwnPropertySymbols(e);
|
|
568
|
-
|
|
569
|
-
return Object.getOwnPropertyDescriptor(e,
|
|
570
|
-
})),
|
|
564
|
+
t && (o = o.filter(function (t) {
|
|
565
|
+
return Object.getOwnPropertyDescriptor(e, t).enumerable;
|
|
566
|
+
})), r.push.apply(r, o);
|
|
571
567
|
}
|
|
572
|
-
return
|
|
568
|
+
return r;
|
|
573
569
|
}
|
|
574
570
|
function T(e) {
|
|
575
|
-
for (var
|
|
576
|
-
var
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(
|
|
580
|
-
Object.defineProperty(e,
|
|
571
|
+
for (var t = 1; t < arguments.length; t++) {
|
|
572
|
+
var r = null != arguments[t] ? arguments[t] : {};
|
|
573
|
+
t % 2 ? B(Object(r), !0).forEach(function (t) {
|
|
574
|
+
I(e, t, r[t]);
|
|
575
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(r)) : B(Object(r)).forEach(function (t) {
|
|
576
|
+
Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(r, t));
|
|
581
577
|
});
|
|
582
578
|
}
|
|
583
579
|
return e;
|
|
584
580
|
}
|
|
585
|
-
function
|
|
586
|
-
return (
|
|
587
|
-
var
|
|
588
|
-
if ("object"
|
|
589
|
-
var
|
|
590
|
-
if (void 0 !==
|
|
591
|
-
var o =
|
|
592
|
-
if ("object"
|
|
581
|
+
function I(e, t, r) {
|
|
582
|
+
return (t = function (e) {
|
|
583
|
+
var t = function (e, t) {
|
|
584
|
+
if ("object" != S(e) || !e) return e;
|
|
585
|
+
var r = e[Symbol.toPrimitive];
|
|
586
|
+
if (void 0 !== r) {
|
|
587
|
+
var o = r.call(e, "string");
|
|
588
|
+
if ("object" != S(o)) return o;
|
|
593
589
|
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
594
590
|
}
|
|
595
591
|
return String(e);
|
|
596
592
|
}(e);
|
|
597
|
-
return "symbol"
|
|
598
|
-
}(
|
|
599
|
-
value:
|
|
593
|
+
return "symbol" == S(t) ? t : t + "";
|
|
594
|
+
}(t)) in e ? Object.defineProperty(e, t, {
|
|
595
|
+
value: r,
|
|
600
596
|
enumerable: !0,
|
|
601
597
|
configurable: !0,
|
|
602
598
|
writable: !0
|
|
603
|
-
}) : e[
|
|
599
|
+
}) : e[t] = r, e;
|
|
604
600
|
}
|
|
605
|
-
function
|
|
606
|
-
(null ==
|
|
607
|
-
for (var
|
|
601
|
+
function j(e, t) {
|
|
602
|
+
(null == t || t > e.length) && (t = e.length);
|
|
603
|
+
for (var r = 0, o = Array(t); r < t; r++) o[r] = e[r];
|
|
608
604
|
return o;
|
|
609
605
|
}
|
|
610
|
-
function
|
|
611
|
-
function
|
|
606
|
+
function H() {}
|
|
607
|
+
function F(e) {
|
|
612
608
|
return "string" == typeof e ? "false" !== e && "true" === e : Boolean(e);
|
|
613
609
|
}
|
|
614
|
-
function
|
|
610
|
+
function M() {
|
|
615
611
|
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "",
|
|
616
|
-
|
|
617
|
-
return "".concat(
|
|
612
|
+
t = r.g.CF.keformsUrl || "";
|
|
613
|
+
return "".concat(t, "/").concat(e).replace(/([^:])\/{2,}/g, "$1/");
|
|
618
614
|
}
|
|
619
|
-
function
|
|
620
|
-
if (void 0 ===
|
|
621
|
-
for (var
|
|
615
|
+
function U(e, t) {
|
|
616
|
+
if (void 0 === t) return e;
|
|
617
|
+
for (var r = [], o = 0, n = Object.keys(t); o < n.length; o++) {
|
|
622
618
|
var i = n[o],
|
|
623
|
-
a =
|
|
624
|
-
null != a &&
|
|
619
|
+
a = t[i];
|
|
620
|
+
null != a && r.push("".concat(i, "=").concat(encodeURIComponent(a)));
|
|
625
621
|
}
|
|
626
|
-
return 0 ===
|
|
622
|
+
return 0 === r.length ? e : e + "?" + r.join("&");
|
|
627
623
|
}
|
|
628
|
-
function
|
|
629
|
-
return new RegExp("^(?:".concat(e.replace(/\./g, "\\.").replace(/\*/g, "[a-z0-9-._]+"), ")$")).test(
|
|
624
|
+
function D(e) {
|
|
625
|
+
return new RegExp("^(?:".concat(e.replace(/\./g, "\\.").replace(/\*/g, "[a-z0-9-._]+"), ")$")).test(r.g.location.host);
|
|
630
626
|
}
|
|
631
627
|
function G(e) {
|
|
632
|
-
return (
|
|
628
|
+
return (r.g.location.search.trim().replace(/^(\?|#|&)/, "").split("&").map(function (e) {
|
|
633
629
|
return e.replace(/\+/g, " ").split("=").map(decodeURIComponent);
|
|
634
|
-
}).find(function (
|
|
635
|
-
return (
|
|
630
|
+
}).find(function (t) {
|
|
631
|
+
return (r = t, o = 1, function (e) {
|
|
636
632
|
if (Array.isArray(e)) return e;
|
|
637
|
-
}(
|
|
638
|
-
var
|
|
639
|
-
if (null !=
|
|
633
|
+
}(r) || function (e, t) {
|
|
634
|
+
var r = null == e ? null : "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
|
|
635
|
+
if (null != r) {
|
|
640
636
|
var o,
|
|
641
637
|
n,
|
|
642
638
|
i,
|
|
@@ -645,50 +641,50 @@
|
|
|
645
641
|
s = !0,
|
|
646
642
|
l = !1;
|
|
647
643
|
try {
|
|
648
|
-
if (i = (
|
|
649
|
-
if (Object(
|
|
644
|
+
if (i = (r = r.call(e)).next, 0 === t) {
|
|
645
|
+
if (Object(r) !== r) return;
|
|
650
646
|
s = !1;
|
|
651
|
-
} else for (; !(s = (o = i.call(
|
|
647
|
+
} else for (; !(s = (o = i.call(r)).done) && (u.push(o.value), u.length !== t); s = !0);
|
|
652
648
|
} catch (e) {
|
|
653
649
|
l = !0, n = e;
|
|
654
650
|
} finally {
|
|
655
651
|
try {
|
|
656
|
-
if (!s && null !=
|
|
652
|
+
if (!s && null != r.return && (a = r.return(), Object(a) !== a)) return;
|
|
657
653
|
} finally {
|
|
658
654
|
if (l) throw n;
|
|
659
655
|
}
|
|
660
656
|
}
|
|
661
657
|
return u;
|
|
662
658
|
}
|
|
663
|
-
}(
|
|
659
|
+
}(r, o) || function (e, t) {
|
|
664
660
|
if (e) {
|
|
665
|
-
if ("string" == typeof e) return
|
|
666
|
-
var
|
|
667
|
-
return "Object" ===
|
|
661
|
+
if ("string" == typeof e) return j(e, t);
|
|
662
|
+
var r = {}.toString.call(e).slice(8, -1);
|
|
663
|
+
return "Object" === r && e.constructor && (r = e.constructor.name), "Map" === r || "Set" === r ? Array.from(e) : "Arguments" === r || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r) ? j(e, t) : void 0;
|
|
668
664
|
}
|
|
669
|
-
}(
|
|
665
|
+
}(r, o) || function () {
|
|
670
666
|
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
671
667
|
}())[0] == e;
|
|
672
|
-
var
|
|
668
|
+
var r, o;
|
|
673
669
|
}) || [])[1];
|
|
674
670
|
}
|
|
675
|
-
function x(e,
|
|
676
|
-
var
|
|
671
|
+
function x(e, t) {
|
|
672
|
+
var r = 0;
|
|
677
673
|
e.forEach(function (o) {
|
|
678
674
|
o(function (o) {
|
|
679
|
-
if (
|
|
680
|
-
if (o) return
|
|
681
|
-
(
|
|
675
|
+
if (r !== e.length) {
|
|
676
|
+
if (o) return r = e.length, void t(o);
|
|
677
|
+
(r += 1) === e.length && t();
|
|
682
678
|
}
|
|
683
679
|
});
|
|
684
680
|
});
|
|
685
681
|
}
|
|
686
|
-
function
|
|
682
|
+
function R(e, t) {
|
|
687
683
|
var o = e.gfv,
|
|
688
684
|
n = e.engineVersion,
|
|
689
685
|
i = e.resourcesVersion;
|
|
690
|
-
if (
|
|
691
|
-
var a = n && !
|
|
686
|
+
if (r.g.CF.entryPoint[o]) t();else {
|
|
687
|
+
var a = n && !r.g[n],
|
|
692
688
|
u = "true" === G("debug") ? "" : ".min",
|
|
693
689
|
s = [],
|
|
694
690
|
l = {
|
|
@@ -696,36 +692,36 @@
|
|
|
696
692
|
resourceZone: e.resourceZone
|
|
697
693
|
};
|
|
698
694
|
s.push(function (e) {
|
|
699
|
-
return
|
|
695
|
+
return A.q.styleSheet(M(U("static/public/styles/".concat(o).concat(u, ".css"), l)), !0, e);
|
|
700
696
|
}), s.push(function (e) {
|
|
701
|
-
return
|
|
697
|
+
return A.q.script(M(U("static/public/scripts/".concat(o).concat(u, ".js"), l)), e);
|
|
702
698
|
}), a && s.push(function (e) {
|
|
703
|
-
return
|
|
699
|
+
return A.q.styleSheet(M(U("static/public/styles/candy_".concat(n).concat(u, ".css"), l)), !1, e);
|
|
704
700
|
}, function (e) {
|
|
705
|
-
return
|
|
706
|
-
}), x(s,
|
|
701
|
+
return A.q.script(M(U("static/public/scripts/candy_".concat(n).concat(u, ".js"), l)), e);
|
|
702
|
+
}), x(s, t);
|
|
707
703
|
}
|
|
708
704
|
}
|
|
709
|
-
function
|
|
705
|
+
function N(e, t, o) {
|
|
710
706
|
var n;
|
|
711
|
-
(null !== (n =
|
|
712
|
-
var
|
|
713
|
-
o(null,
|
|
707
|
+
(null !== (n = r.g.CF.entryPoint[t.gfv]) && void 0 !== n ? n : (0, C.ku)("Form entry point ".concat(t.gfv, " not found.")))(e, t).then(function (e) {
|
|
708
|
+
var t = e.publicForm || (0, L.v)(e);
|
|
709
|
+
o(null, t);
|
|
714
710
|
}).catch(o);
|
|
715
711
|
}
|
|
716
|
-
function
|
|
717
|
-
if (null != e) return
|
|
712
|
+
function q(e) {
|
|
713
|
+
if (null != e) return r.g[e] && r.g[e].default;
|
|
718
714
|
}
|
|
719
|
-
function
|
|
715
|
+
function V(e, t) {
|
|
720
716
|
var o,
|
|
721
717
|
n,
|
|
722
|
-
i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] :
|
|
718
|
+
i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : H,
|
|
723
719
|
a = null,
|
|
724
|
-
u =
|
|
725
|
-
s =
|
|
726
|
-
if (
|
|
727
|
-
var l = null !== (o =
|
|
728
|
-
c =
|
|
720
|
+
u = t.ns,
|
|
721
|
+
s = t.draftId;
|
|
722
|
+
if (D(O.r.konturDomains) ? O.r.authorized ? s ? u || (a = new Error("options.ns is required")) : a = new Error("options.draftId is required") : a = new Error("user.unauthenticated") : a = new Error("domain.untrusted"), a) i(a);else {
|
|
723
|
+
var l = null !== (o = t.resourceZone) && void 0 !== o ? o : G("resourceZone"),
|
|
724
|
+
c = U(M((0, P.I)({
|
|
729
725
|
ns: u,
|
|
730
726
|
draftId: s
|
|
731
727
|
})), {
|
|
@@ -734,11 +730,11 @@
|
|
|
734
730
|
f = {
|
|
735
731
|
method: "GET"
|
|
736
732
|
};
|
|
737
|
-
if (null ==
|
|
733
|
+
if (null == t.authentication || "browser-credentials-include" === t.authentication) f.credentials = "include";else if ("authSid" in t.authentication && null != t.authentication.authSid) {
|
|
738
734
|
var d;
|
|
739
|
-
f.credentials = "omit", f.headers = null !== (d = f.headers) && void 0 !== d ? d : {}, f.headers.Authorization = "AUTH.SID ".concat(
|
|
735
|
+
f.credentials = "omit", f.headers = null !== (d = f.headers) && void 0 !== d ? d : {}, f.headers.Authorization = "AUTH.SID ".concat(t.authentication.authSid);
|
|
740
736
|
} else f.credentials = "omit";
|
|
741
|
-
(null !== (n =
|
|
737
|
+
(null !== (n = t.fetch) && void 0 !== n ? n : w)(c, f).then(function (e) {
|
|
742
738
|
return e.json();
|
|
743
739
|
}).then(function (o) {
|
|
744
740
|
var n,
|
|
@@ -749,36 +745,36 @@
|
|
|
749
745
|
f = o.gfv,
|
|
750
746
|
d = o.engineVersion,
|
|
751
747
|
p = T(T(T({
|
|
752
|
-
authorized: O.
|
|
753
|
-
cauldronApiUrl: O.
|
|
754
|
-
isTestServer: O.
|
|
755
|
-
renderCachingForIE8: O.
|
|
756
|
-
normalizationOnServer: O.
|
|
757
|
-
normativeUrl: O.
|
|
758
|
-
resourcesVersion: O.
|
|
759
|
-
konturDomains: O.
|
|
760
|
-
showNavigationSidebar: null === (n =
|
|
761
|
-
onRemoveAttachment:
|
|
762
|
-
},
|
|
748
|
+
authorized: O.r.authorized,
|
|
749
|
+
cauldronApiUrl: O.r.cauldronApiUrl,
|
|
750
|
+
isTestServer: O.r.isTestServer,
|
|
751
|
+
renderCachingForIE8: O.r.renderCachingForIE8,
|
|
752
|
+
normalizationOnServer: O.r.normalizationOnServer,
|
|
753
|
+
normativeUrl: O.r.normativeUrl,
|
|
754
|
+
resourcesVersion: O.r.resourcesVersion,
|
|
755
|
+
konturDomains: O.r.konturDomains,
|
|
756
|
+
showNavigationSidebar: null === (n = t.showNavigationSidebar) || void 0 === n || n,
|
|
757
|
+
onRemoveAttachment: t.onRemoveAttachment
|
|
758
|
+
}, t), o), {}, {
|
|
763
759
|
gfv: f,
|
|
764
760
|
engineVersion: d,
|
|
765
|
-
feedbackEnabled: null !== (a =
|
|
766
|
-
isDisabledCleanForm: null !== (u =
|
|
767
|
-
isDisabledCloseButton: null !== (s =
|
|
768
|
-
isDisabledCloseAndSaveButton: null !== (c =
|
|
761
|
+
feedbackEnabled: null !== (a = t.feedbackEnabled) && void 0 !== a ? a : o.feedbackEnabled,
|
|
762
|
+
isDisabledCleanForm: null !== (u = t.isDisabledCleanForm) && void 0 !== u && u,
|
|
763
|
+
isDisabledCloseButton: null !== (s = t.isDisabledCloseButton) && void 0 !== s && s,
|
|
764
|
+
isDisabledCloseAndSaveButton: null !== (c = t.isDisabledCloseAndSaveButton) && void 0 !== c && c,
|
|
769
765
|
resourceZone: l
|
|
770
766
|
});
|
|
771
|
-
|
|
767
|
+
R({
|
|
772
768
|
gfv: p.gfv,
|
|
773
769
|
engineVersion: p.engineVersion,
|
|
774
770
|
resourceZone: p.resourceZone,
|
|
775
771
|
resourcesVersion: p.resourcesVersion,
|
|
776
772
|
theme: p.theme
|
|
777
773
|
}, function (o) {
|
|
778
|
-
if (!o &&
|
|
779
|
-
var n =
|
|
780
|
-
|
|
781
|
-
templatesApi:
|
|
774
|
+
if (!o && r.g.CF.entryPoint[f]) {
|
|
775
|
+
var n = q(d);
|
|
776
|
+
N(e, T(T({}, p), {}, {
|
|
777
|
+
templatesApi: t.templatesApi,
|
|
782
778
|
renderForm: n
|
|
783
779
|
}), i);
|
|
784
780
|
} else i(new Error("dynamic loading is not supported for gfv ".concat(f)));
|
|
@@ -786,18 +782,18 @@
|
|
|
786
782
|
}).catch(i);
|
|
787
783
|
}
|
|
788
784
|
}
|
|
789
|
-
e =
|
|
785
|
+
e = r.hmd(e), (k = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && k(e), "undefined" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature;
|
|
790
786
|
var K,
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
start:
|
|
787
|
+
W,
|
|
788
|
+
z = {
|
|
789
|
+
start: V,
|
|
794
790
|
entryPoint: {},
|
|
795
|
-
partialRenderingForIE8:
|
|
791
|
+
partialRenderingForIE8: F("{partialRenderingForIE8}"),
|
|
796
792
|
keformsUrl: "{keformsUrl}"
|
|
797
793
|
};
|
|
798
|
-
|
|
794
|
+
r.g.CF = z, (K = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && (K.register(H, "defaultCallback", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(F, "parseBool", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(M, "url", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(U, "buildUrl", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(D, "isAllowed", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(G, "getParameterByName", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(x, "runParallel", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(function (e, t) {
|
|
799
795
|
try {
|
|
800
|
-
var
|
|
796
|
+
var r,
|
|
801
797
|
o,
|
|
802
798
|
n,
|
|
803
799
|
i,
|
|
@@ -810,25 +806,25 @@
|
|
|
810
806
|
d = e.split(".").slice(0, 3).map(function (e) {
|
|
811
807
|
return parseInt(e, 10);
|
|
812
808
|
}),
|
|
813
|
-
p =
|
|
809
|
+
p = t.split(".").slice(0, 3).map(function (e) {
|
|
814
810
|
return parseInt(e, 10);
|
|
815
811
|
});
|
|
816
|
-
return (null !== (
|
|
812
|
+
return (null !== (r = d[0]) && void 0 !== r ? r : 0) > (null !== (o = p[0]) && void 0 !== o ? o : 0) || (null !== (n = d[0]) && void 0 !== n ? n : 0) === (null !== (i = p[0]) && void 0 !== i ? i : 0) && ((null !== (a = d[1]) && void 0 !== a ? a : 0) > (null !== (u = p[1]) && void 0 !== u ? u : 0) || (null !== (s = d[1]) && void 0 !== s ? s : 0) === (null !== (l = p[1]) && void 0 !== l ? l : 0) && (null !== (c = d[2]) && void 0 !== c ? c : 0) >= (null !== (f = p[2]) && void 0 !== f ? f : 0));
|
|
817
813
|
} catch (e) {
|
|
818
814
|
return !1;
|
|
819
815
|
}
|
|
820
|
-
}, "isEngineVersionGreaterThanOrEqual", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(
|
|
816
|
+
}, "isEngineVersionGreaterThanOrEqual", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(R, "loadForm", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(N, "renderForm", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(q, "getEngineEntryPoint", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(V, "start", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(z, "CandyClientExports", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts")), (W = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && W(e);
|
|
821
817
|
},
|
|
822
|
-
|
|
818
|
+
171: function (e, t, r) {
|
|
823
819
|
var o;
|
|
824
820
|
function n(e) {
|
|
825
821
|
return "string" == typeof e ? "false" !== e && "true" === e : Boolean(e);
|
|
826
822
|
}
|
|
827
|
-
|
|
828
|
-
|
|
823
|
+
r.d(t, {
|
|
824
|
+
r: function () {
|
|
829
825
|
return u;
|
|
830
826
|
}
|
|
831
|
-
}), e =
|
|
827
|
+
}), e = r.hmd(e), (o = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && o(e), "undefined" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature;
|
|
832
828
|
var i,
|
|
833
829
|
a,
|
|
834
830
|
u = {
|
|
@@ -843,13 +839,13 @@
|
|
|
843
839
|
};
|
|
844
840
|
(i = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && (i.register(n, "parseBool", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\ClientSettings.ts"), i.register(u, "clientSettings", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\ClientSettings.ts")), (a = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && a(e);
|
|
845
841
|
},
|
|
846
|
-
|
|
842
|
+
768: function (module, __webpack_exports__, __webpack_require__) {
|
|
847
843
|
__webpack_require__.d(__webpack_exports__, {
|
|
848
|
-
|
|
844
|
+
v: function () {
|
|
849
845
|
return createLegacyPublicForm;
|
|
850
846
|
}
|
|
851
847
|
});
|
|
852
|
-
var _Common_Errors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
|
|
848
|
+
var _Common_Errors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(336),
|
|
853
849
|
enterModule;
|
|
854
850
|
function _typeof(e) {
|
|
855
851
|
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
|
|
@@ -860,46 +856,47 @@
|
|
|
860
856
|
}
|
|
861
857
|
function _regeneratorRuntime() {
|
|
862
858
|
_regeneratorRuntime = function () {
|
|
863
|
-
return
|
|
859
|
+
return t;
|
|
864
860
|
};
|
|
865
|
-
var e
|
|
861
|
+
var e,
|
|
862
|
+
t = {},
|
|
866
863
|
r = Object.prototype,
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
e[
|
|
864
|
+
o = r.hasOwnProperty,
|
|
865
|
+
n = Object.defineProperty || function (e, t, r) {
|
|
866
|
+
e[t] = r.value;
|
|
870
867
|
},
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
function
|
|
876
|
-
return Object.defineProperty(e,
|
|
877
|
-
value:
|
|
868
|
+
i = "function" == typeof Symbol ? Symbol : {},
|
|
869
|
+
a = i.iterator || "@@iterator",
|
|
870
|
+
u = i.asyncIterator || "@@asyncIterator",
|
|
871
|
+
s = i.toStringTag || "@@toStringTag";
|
|
872
|
+
function l(e, t, r) {
|
|
873
|
+
return Object.defineProperty(e, t, {
|
|
874
|
+
value: r,
|
|
878
875
|
enumerable: !0,
|
|
879
876
|
configurable: !0,
|
|
880
877
|
writable: !0
|
|
881
|
-
}), e[
|
|
878
|
+
}), e[t];
|
|
882
879
|
}
|
|
883
880
|
try {
|
|
884
|
-
|
|
881
|
+
l({}, "");
|
|
885
882
|
} catch (e) {
|
|
886
|
-
|
|
887
|
-
return e[
|
|
883
|
+
l = function (e, t, r) {
|
|
884
|
+
return e[t] = r;
|
|
888
885
|
};
|
|
889
886
|
}
|
|
890
|
-
function
|
|
891
|
-
var i =
|
|
887
|
+
function c(e, t, r, o) {
|
|
888
|
+
var i = t && t.prototype instanceof g ? t : g,
|
|
892
889
|
a = Object.create(i.prototype),
|
|
893
|
-
u = new
|
|
894
|
-
return
|
|
895
|
-
value:
|
|
890
|
+
u = new B(o || []);
|
|
891
|
+
return n(a, "_invoke", {
|
|
892
|
+
value: P(e, r, u)
|
|
896
893
|
}), a;
|
|
897
894
|
}
|
|
898
|
-
function
|
|
895
|
+
function f(e, t, r) {
|
|
899
896
|
try {
|
|
900
897
|
return {
|
|
901
898
|
type: "normal",
|
|
902
|
-
arg: e.call(
|
|
899
|
+
arg: e.call(t, r)
|
|
903
900
|
};
|
|
904
901
|
} catch (e) {
|
|
905
902
|
return {
|
|
@@ -908,183 +905,179 @@
|
|
|
908
905
|
};
|
|
909
906
|
}
|
|
910
907
|
}
|
|
911
|
-
|
|
912
|
-
var
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
908
|
+
t.wrap = c;
|
|
909
|
+
var d = "suspendedStart",
|
|
910
|
+
p = "suspendedYield",
|
|
911
|
+
y = "executing",
|
|
912
|
+
m = "completed",
|
|
913
|
+
h = {};
|
|
914
|
+
function g() {}
|
|
915
|
+
function _() {}
|
|
916
|
+
function v() {}
|
|
917
|
+
var b = {};
|
|
918
|
+
l(b, a, function () {
|
|
918
919
|
return this;
|
|
919
920
|
});
|
|
920
|
-
var
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
var
|
|
924
|
-
function
|
|
925
|
-
["next", "throw", "return"].forEach(function (
|
|
926
|
-
|
|
927
|
-
return this._invoke(
|
|
921
|
+
var E = Object.getPrototypeOf,
|
|
922
|
+
w = E && E(E(T([])));
|
|
923
|
+
w && w !== r && o.call(w, a) && (b = w);
|
|
924
|
+
var k = v.prototype = g.prototype = Object.create(b);
|
|
925
|
+
function C(e) {
|
|
926
|
+
["next", "throw", "return"].forEach(function (t) {
|
|
927
|
+
l(e, t, function (e) {
|
|
928
|
+
return this._invoke(t, e);
|
|
928
929
|
});
|
|
929
930
|
});
|
|
930
931
|
}
|
|
931
|
-
function
|
|
932
|
-
function n
|
|
933
|
-
var s =
|
|
932
|
+
function A(e, t) {
|
|
933
|
+
function r(n, i, a, u) {
|
|
934
|
+
var s = f(e[n], e, i);
|
|
934
935
|
if ("throw" !== s.type) {
|
|
935
936
|
var l = s.arg,
|
|
936
|
-
|
|
937
|
-
return
|
|
938
|
-
|
|
937
|
+
c = l.value;
|
|
938
|
+
return c && "object" == _typeof(c) && o.call(c, "__await") ? t.resolve(c.__await).then(function (e) {
|
|
939
|
+
r("next", e, a, u);
|
|
939
940
|
}, function (e) {
|
|
940
|
-
|
|
941
|
-
}) :
|
|
941
|
+
r("throw", e, a, u);
|
|
942
|
+
}) : t.resolve(c).then(function (e) {
|
|
942
943
|
l.value = e, a(l);
|
|
943
944
|
}, function (e) {
|
|
944
|
-
return
|
|
945
|
+
return r("throw", e, a, u);
|
|
945
946
|
});
|
|
946
947
|
}
|
|
947
948
|
u(s.arg);
|
|
948
949
|
}
|
|
949
950
|
var i;
|
|
950
|
-
|
|
951
|
-
value: function (e,
|
|
952
|
-
function
|
|
953
|
-
return new
|
|
954
|
-
|
|
951
|
+
n(this, "_invoke", {
|
|
952
|
+
value: function (e, o) {
|
|
953
|
+
function n() {
|
|
954
|
+
return new t(function (t, n) {
|
|
955
|
+
r(e, o, t, n);
|
|
955
956
|
});
|
|
956
957
|
}
|
|
957
|
-
return i = i ? i.then(
|
|
958
|
+
return i = i ? i.then(n, n) : n();
|
|
958
959
|
}
|
|
959
960
|
});
|
|
960
961
|
}
|
|
961
|
-
function
|
|
962
|
-
var
|
|
963
|
-
return function (
|
|
964
|
-
if (
|
|
965
|
-
if (
|
|
966
|
-
if ("throw" ===
|
|
962
|
+
function P(t, r, o) {
|
|
963
|
+
var n = d;
|
|
964
|
+
return function (i, a) {
|
|
965
|
+
if (n === y) throw Error("Generator is already running");
|
|
966
|
+
if (n === m) {
|
|
967
|
+
if ("throw" === i) throw a;
|
|
967
968
|
return {
|
|
968
|
-
value:
|
|
969
|
+
value: e,
|
|
969
970
|
done: !0
|
|
970
971
|
};
|
|
971
972
|
}
|
|
972
|
-
for (
|
|
973
|
-
var
|
|
974
|
-
if (
|
|
975
|
-
var
|
|
976
|
-
if (
|
|
977
|
-
if (
|
|
978
|
-
return
|
|
973
|
+
for (o.method = i, o.arg = a;;) {
|
|
974
|
+
var u = o.delegate;
|
|
975
|
+
if (u) {
|
|
976
|
+
var s = O(u, o);
|
|
977
|
+
if (s) {
|
|
978
|
+
if (s === h) continue;
|
|
979
|
+
return s;
|
|
979
980
|
}
|
|
980
981
|
}
|
|
981
|
-
if ("next" ===
|
|
982
|
-
if (
|
|
983
|
-
|
|
984
|
-
} else "return" ===
|
|
985
|
-
|
|
986
|
-
var
|
|
987
|
-
if ("normal" ===
|
|
988
|
-
if (
|
|
982
|
+
if ("next" === o.method) o.sent = o._sent = o.arg;else if ("throw" === o.method) {
|
|
983
|
+
if (n === d) throw n = m, o.arg;
|
|
984
|
+
o.dispatchException(o.arg);
|
|
985
|
+
} else "return" === o.method && o.abrupt("return", o.arg);
|
|
986
|
+
n = y;
|
|
987
|
+
var l = f(t, r, o);
|
|
988
|
+
if ("normal" === l.type) {
|
|
989
|
+
if (n = o.done ? m : p, l.arg === h) continue;
|
|
989
990
|
return {
|
|
990
|
-
value:
|
|
991
|
-
done:
|
|
991
|
+
value: l.arg,
|
|
992
|
+
done: o.done
|
|
992
993
|
};
|
|
993
994
|
}
|
|
994
|
-
"throw" ===
|
|
995
|
+
"throw" === l.type && (n = m, o.method = "throw", o.arg = l.arg);
|
|
995
996
|
}
|
|
996
997
|
};
|
|
997
998
|
}
|
|
998
|
-
function
|
|
999
|
-
var
|
|
1000
|
-
|
|
1001
|
-
if (
|
|
1002
|
-
var
|
|
1003
|
-
if ("throw" ===
|
|
1004
|
-
var
|
|
1005
|
-
return
|
|
999
|
+
function O(t, r) {
|
|
1000
|
+
var o = r.method,
|
|
1001
|
+
n = t.iterator[o];
|
|
1002
|
+
if (n === e) return r.delegate = null, "throw" === o && t.iterator.return && (r.method = "return", r.arg = e, O(t, r), "throw" === r.method) || "return" !== o && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + o + "' method")), h;
|
|
1003
|
+
var i = f(n, t.iterator, r.arg);
|
|
1004
|
+
if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, h;
|
|
1005
|
+
var a = i.arg;
|
|
1006
|
+
return a ? a.done ? (r[t.resultName] = a.value, r.next = t.nextLoc, "return" !== r.method && (r.method = "next", r.arg = e), r.delegate = null, h) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, h);
|
|
1006
1007
|
}
|
|
1007
|
-
function
|
|
1008
|
-
var
|
|
1008
|
+
function L(e) {
|
|
1009
|
+
var t = {
|
|
1009
1010
|
tryLoc: e[0]
|
|
1010
1011
|
};
|
|
1011
|
-
1 in e && (
|
|
1012
|
+
1 in e && (t.catchLoc = e[1]), 2 in e && (t.finallyLoc = e[2], t.afterLoc = e[3]), this.tryEntries.push(t);
|
|
1012
1013
|
}
|
|
1013
|
-
function
|
|
1014
|
-
var
|
|
1015
|
-
|
|
1014
|
+
function S(e) {
|
|
1015
|
+
var t = e.completion || {};
|
|
1016
|
+
t.type = "normal", delete t.arg, e.completion = t;
|
|
1016
1017
|
}
|
|
1017
|
-
function
|
|
1018
|
+
function B(e) {
|
|
1018
1019
|
this.tryEntries = [{
|
|
1019
1020
|
tryLoc: "root"
|
|
1020
|
-
}], e.forEach(
|
|
1021
|
+
}], e.forEach(L, this), this.reset(!0);
|
|
1021
1022
|
}
|
|
1022
|
-
function
|
|
1023
|
-
if (
|
|
1024
|
-
var r =
|
|
1025
|
-
if (r) return r.call(
|
|
1026
|
-
if ("function" == typeof
|
|
1027
|
-
if (!isNaN(
|
|
1028
|
-
var
|
|
1029
|
-
|
|
1030
|
-
for (; ++
|
|
1031
|
-
return r.value =
|
|
1023
|
+
function T(t) {
|
|
1024
|
+
if (t || "" === t) {
|
|
1025
|
+
var r = t[a];
|
|
1026
|
+
if (r) return r.call(t);
|
|
1027
|
+
if ("function" == typeof t.next) return t;
|
|
1028
|
+
if (!isNaN(t.length)) {
|
|
1029
|
+
var n = -1,
|
|
1030
|
+
i = function r() {
|
|
1031
|
+
for (; ++n < t.length;) if (o.call(t, n)) return r.value = t[n], r.done = !1, r;
|
|
1032
|
+
return r.value = e, r.done = !0, r;
|
|
1032
1033
|
};
|
|
1033
|
-
return
|
|
1034
|
+
return i.next = i;
|
|
1034
1035
|
}
|
|
1035
1036
|
}
|
|
1036
|
-
|
|
1037
|
-
next: O
|
|
1038
|
-
};
|
|
1039
|
-
}
|
|
1040
|
-
function O() {
|
|
1041
|
-
return {
|
|
1042
|
-
value: void 0,
|
|
1043
|
-
done: !0
|
|
1044
|
-
};
|
|
1037
|
+
throw new TypeError(_typeof(t) + " is not iterable");
|
|
1045
1038
|
}
|
|
1046
|
-
return
|
|
1047
|
-
value:
|
|
1039
|
+
return _.prototype = v, n(k, "constructor", {
|
|
1040
|
+
value: v,
|
|
1048
1041
|
configurable: !0
|
|
1049
|
-
}),
|
|
1050
|
-
value:
|
|
1042
|
+
}), n(v, "constructor", {
|
|
1043
|
+
value: _,
|
|
1051
1044
|
configurable: !0
|
|
1052
|
-
}),
|
|
1053
|
-
var
|
|
1054
|
-
return !!
|
|
1055
|
-
},
|
|
1056
|
-
return Object.setPrototypeOf ? Object.setPrototypeOf(e,
|
|
1057
|
-
},
|
|
1045
|
+
}), _.displayName = l(v, s, "GeneratorFunction"), t.isGeneratorFunction = function (e) {
|
|
1046
|
+
var t = "function" == typeof e && e.constructor;
|
|
1047
|
+
return !!t && (t === _ || "GeneratorFunction" === (t.displayName || t.name));
|
|
1048
|
+
}, t.mark = function (e) {
|
|
1049
|
+
return Object.setPrototypeOf ? Object.setPrototypeOf(e, v) : (e.__proto__ = v, l(e, s, "GeneratorFunction")), e.prototype = Object.create(k), e;
|
|
1050
|
+
}, t.awrap = function (e) {
|
|
1058
1051
|
return {
|
|
1059
1052
|
__await: e
|
|
1060
1053
|
};
|
|
1061
|
-
},
|
|
1054
|
+
}, C(A.prototype), l(A.prototype, u, function () {
|
|
1062
1055
|
return this;
|
|
1063
|
-
}),
|
|
1056
|
+
}), t.AsyncIterator = A, t.async = function (e, r, o, n, i) {
|
|
1064
1057
|
void 0 === i && (i = Promise);
|
|
1065
|
-
var a = new
|
|
1066
|
-
return
|
|
1058
|
+
var a = new A(c(e, r, o, n), i);
|
|
1059
|
+
return t.isGeneratorFunction(r) ? a : a.next().then(function (e) {
|
|
1067
1060
|
return e.done ? e.value : a.next();
|
|
1068
1061
|
});
|
|
1069
|
-
},
|
|
1062
|
+
}, C(k), l(k, s, "Generator"), l(k, a, function () {
|
|
1070
1063
|
return this;
|
|
1071
|
-
}),
|
|
1064
|
+
}), l(k, "toString", function () {
|
|
1072
1065
|
return "[object Generator]";
|
|
1073
|
-
}),
|
|
1074
|
-
var
|
|
1075
|
-
|
|
1076
|
-
for (var o in
|
|
1077
|
-
return
|
|
1078
|
-
for (;
|
|
1079
|
-
var o =
|
|
1080
|
-
if (o in
|
|
1066
|
+
}), t.keys = function (e) {
|
|
1067
|
+
var t = Object(e),
|
|
1068
|
+
r = [];
|
|
1069
|
+
for (var o in t) r.push(o);
|
|
1070
|
+
return r.reverse(), function e() {
|
|
1071
|
+
for (; r.length;) {
|
|
1072
|
+
var o = r.pop();
|
|
1073
|
+
if (o in t) return e.value = o, e.done = !1, e;
|
|
1081
1074
|
}
|
|
1082
1075
|
return e.done = !0, e;
|
|
1083
1076
|
};
|
|
1084
|
-
},
|
|
1085
|
-
constructor:
|
|
1086
|
-
reset: function (
|
|
1087
|
-
if (this.prev = 0, this.next = 0, this.sent = this._sent =
|
|
1077
|
+
}, t.values = T, B.prototype = {
|
|
1078
|
+
constructor: B,
|
|
1079
|
+
reset: function (t) {
|
|
1080
|
+
if (this.prev = 0, this.next = 0, this.sent = this._sent = e, this.done = !1, this.delegate = null, this.method = "next", this.arg = e, this.tryEntries.forEach(S), !t) for (var r in this) "t" === r.charAt(0) && o.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = e);
|
|
1088
1081
|
},
|
|
1089
1082
|
stop: function () {
|
|
1090
1083
|
this.done = !0;
|
|
@@ -1092,91 +1085,91 @@
|
|
|
1092
1085
|
if ("throw" === e.type) throw e.arg;
|
|
1093
1086
|
return this.rval;
|
|
1094
1087
|
},
|
|
1095
|
-
dispatchException: function (
|
|
1096
|
-
if (this.done) throw
|
|
1088
|
+
dispatchException: function (t) {
|
|
1089
|
+
if (this.done) throw t;
|
|
1097
1090
|
var r = this;
|
|
1098
|
-
function o
|
|
1099
|
-
return
|
|
1100
|
-
}
|
|
1101
|
-
for (var
|
|
1102
|
-
var
|
|
1103
|
-
|
|
1104
|
-
if ("root" ===
|
|
1105
|
-
if (
|
|
1106
|
-
var
|
|
1107
|
-
|
|
1108
|
-
if (
|
|
1109
|
-
if (this.prev <
|
|
1110
|
-
if (this.prev <
|
|
1111
|
-
} else if (
|
|
1112
|
-
if (this.prev <
|
|
1091
|
+
function n(o, n) {
|
|
1092
|
+
return u.type = "throw", u.arg = t, r.next = o, n && (r.method = "next", r.arg = e), !!n;
|
|
1093
|
+
}
|
|
1094
|
+
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
|
|
1095
|
+
var a = this.tryEntries[i],
|
|
1096
|
+
u = a.completion;
|
|
1097
|
+
if ("root" === a.tryLoc) return n("end");
|
|
1098
|
+
if (a.tryLoc <= this.prev) {
|
|
1099
|
+
var s = o.call(a, "catchLoc"),
|
|
1100
|
+
l = o.call(a, "finallyLoc");
|
|
1101
|
+
if (s && l) {
|
|
1102
|
+
if (this.prev < a.catchLoc) return n(a.catchLoc, !0);
|
|
1103
|
+
if (this.prev < a.finallyLoc) return n(a.finallyLoc);
|
|
1104
|
+
} else if (s) {
|
|
1105
|
+
if (this.prev < a.catchLoc) return n(a.catchLoc, !0);
|
|
1113
1106
|
} else {
|
|
1114
|
-
if (!
|
|
1115
|
-
if (this.prev <
|
|
1107
|
+
if (!l) throw Error("try statement without catch or finally");
|
|
1108
|
+
if (this.prev < a.finallyLoc) return n(a.finallyLoc);
|
|
1116
1109
|
}
|
|
1117
1110
|
}
|
|
1118
1111
|
}
|
|
1119
1112
|
},
|
|
1120
|
-
abrupt: function (e,
|
|
1121
|
-
for (var
|
|
1122
|
-
var n = this.tryEntries[
|
|
1123
|
-
if (n.tryLoc <= this.prev &&
|
|
1113
|
+
abrupt: function (e, t) {
|
|
1114
|
+
for (var r = this.tryEntries.length - 1; r >= 0; --r) {
|
|
1115
|
+
var n = this.tryEntries[r];
|
|
1116
|
+
if (n.tryLoc <= this.prev && o.call(n, "finallyLoc") && this.prev < n.finallyLoc) {
|
|
1124
1117
|
var i = n;
|
|
1125
1118
|
break;
|
|
1126
1119
|
}
|
|
1127
1120
|
}
|
|
1128
|
-
i && ("break" === e || "continue" === e) && i.tryLoc <=
|
|
1121
|
+
i && ("break" === e || "continue" === e) && i.tryLoc <= t && t <= i.finallyLoc && (i = null);
|
|
1129
1122
|
var a = i ? i.completion : {};
|
|
1130
|
-
return a.type = e, a.arg =
|
|
1123
|
+
return a.type = e, a.arg = t, i ? (this.method = "next", this.next = i.finallyLoc, h) : this.complete(a);
|
|
1131
1124
|
},
|
|
1132
|
-
complete: function (e,
|
|
1125
|
+
complete: function (e, t) {
|
|
1133
1126
|
if ("throw" === e.type) throw e.arg;
|
|
1134
|
-
return "break" === e.type || "continue" === e.type ? this.next = e.arg : "return" === e.type ? (this.rval = this.arg = e.arg, this.method = "return", this.next = "end") : "normal" === e.type &&
|
|
1127
|
+
return "break" === e.type || "continue" === e.type ? this.next = e.arg : "return" === e.type ? (this.rval = this.arg = e.arg, this.method = "return", this.next = "end") : "normal" === e.type && t && (this.next = t), h;
|
|
1135
1128
|
},
|
|
1136
1129
|
finish: function (e) {
|
|
1137
|
-
for (var
|
|
1138
|
-
var
|
|
1139
|
-
if (
|
|
1130
|
+
for (var t = this.tryEntries.length - 1; t >= 0; --t) {
|
|
1131
|
+
var r = this.tryEntries[t];
|
|
1132
|
+
if (r.finallyLoc === e) return this.complete(r.completion, r.afterLoc), S(r), h;
|
|
1140
1133
|
}
|
|
1141
1134
|
},
|
|
1142
1135
|
catch: function (e) {
|
|
1143
|
-
for (var
|
|
1144
|
-
var
|
|
1145
|
-
if (
|
|
1146
|
-
var o =
|
|
1136
|
+
for (var t = this.tryEntries.length - 1; t >= 0; --t) {
|
|
1137
|
+
var r = this.tryEntries[t];
|
|
1138
|
+
if (r.tryLoc === e) {
|
|
1139
|
+
var o = r.completion;
|
|
1147
1140
|
if ("throw" === o.type) {
|
|
1148
1141
|
var n = o.arg;
|
|
1149
|
-
|
|
1142
|
+
S(r);
|
|
1150
1143
|
}
|
|
1151
1144
|
return n;
|
|
1152
1145
|
}
|
|
1153
1146
|
}
|
|
1154
|
-
throw
|
|
1147
|
+
throw Error("illegal catch attempt");
|
|
1155
1148
|
},
|
|
1156
|
-
delegateYield: function (
|
|
1149
|
+
delegateYield: function (t, r, o) {
|
|
1157
1150
|
return this.delegate = {
|
|
1158
|
-
iterator:
|
|
1151
|
+
iterator: T(t),
|
|
1159
1152
|
resultName: r,
|
|
1160
|
-
nextLoc:
|
|
1161
|
-
}, "next" === this.method && (this.arg =
|
|
1153
|
+
nextLoc: o
|
|
1154
|
+
}, "next" === this.method && (this.arg = e), h;
|
|
1162
1155
|
}
|
|
1163
|
-
},
|
|
1156
|
+
}, t;
|
|
1164
1157
|
}
|
|
1165
|
-
function asyncGeneratorStep(e,
|
|
1158
|
+
function asyncGeneratorStep(e, t, r, o, n, i, a) {
|
|
1166
1159
|
try {
|
|
1167
1160
|
var u = e[i](a),
|
|
1168
1161
|
s = u.value;
|
|
1169
1162
|
} catch (e) {
|
|
1170
|
-
return void
|
|
1163
|
+
return void r(e);
|
|
1171
1164
|
}
|
|
1172
|
-
u.done ?
|
|
1165
|
+
u.done ? t(s) : Promise.resolve(s).then(o, n);
|
|
1173
1166
|
}
|
|
1174
1167
|
function _asyncToGenerator(e) {
|
|
1175
1168
|
return function () {
|
|
1176
|
-
var
|
|
1177
|
-
|
|
1169
|
+
var t = this,
|
|
1170
|
+
r = arguments;
|
|
1178
1171
|
return new Promise(function (o, n) {
|
|
1179
|
-
var i = e.apply(
|
|
1172
|
+
var i = e.apply(t, r);
|
|
1180
1173
|
function a(e) {
|
|
1181
1174
|
asyncGeneratorStep(i, o, n, a, u, "next", e);
|
|
1182
1175
|
}
|
|
@@ -1187,92 +1180,91 @@
|
|
|
1187
1180
|
});
|
|
1188
1181
|
};
|
|
1189
1182
|
}
|
|
1190
|
-
function _classCallCheck(e,
|
|
1191
|
-
if (!(e instanceof
|
|
1183
|
+
function _classCallCheck(e, t) {
|
|
1184
|
+
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
|
|
1192
1185
|
}
|
|
1193
|
-
function _defineProperties(e,
|
|
1194
|
-
for (var
|
|
1195
|
-
var o = r
|
|
1186
|
+
function _defineProperties(e, t) {
|
|
1187
|
+
for (var r = 0; r < t.length; r++) {
|
|
1188
|
+
var o = t[r];
|
|
1196
1189
|
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o);
|
|
1197
1190
|
}
|
|
1198
1191
|
}
|
|
1199
|
-
function _createClass(e,
|
|
1200
|
-
return
|
|
1192
|
+
function _createClass(e, t, r) {
|
|
1193
|
+
return t && _defineProperties(e.prototype, t), r && _defineProperties(e, r), Object.defineProperty(e, "prototype", {
|
|
1201
1194
|
writable: !1
|
|
1202
1195
|
}), e;
|
|
1203
1196
|
}
|
|
1204
|
-
function ownKeys(e,
|
|
1205
|
-
var
|
|
1197
|
+
function ownKeys(e, t) {
|
|
1198
|
+
var r = Object.keys(e);
|
|
1206
1199
|
if (Object.getOwnPropertySymbols) {
|
|
1207
1200
|
var o = Object.getOwnPropertySymbols(e);
|
|
1208
|
-
|
|
1209
|
-
return Object.getOwnPropertyDescriptor(e,
|
|
1210
|
-
})),
|
|
1201
|
+
t && (o = o.filter(function (t) {
|
|
1202
|
+
return Object.getOwnPropertyDescriptor(e, t).enumerable;
|
|
1203
|
+
})), r.push.apply(r, o);
|
|
1211
1204
|
}
|
|
1212
|
-
return
|
|
1205
|
+
return r;
|
|
1213
1206
|
}
|
|
1214
1207
|
function _objectSpread(e) {
|
|
1215
|
-
for (var
|
|
1216
|
-
var
|
|
1217
|
-
|
|
1218
|
-
_defineProperty(e,
|
|
1219
|
-
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(
|
|
1220
|
-
Object.defineProperty(e,
|
|
1208
|
+
for (var t = 1; t < arguments.length; t++) {
|
|
1209
|
+
var r = null != arguments[t] ? arguments[t] : {};
|
|
1210
|
+
t % 2 ? ownKeys(Object(r), !0).forEach(function (t) {
|
|
1211
|
+
_defineProperty(e, t, r[t]);
|
|
1212
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(r)) : ownKeys(Object(r)).forEach(function (t) {
|
|
1213
|
+
Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(r, t));
|
|
1221
1214
|
});
|
|
1222
1215
|
}
|
|
1223
1216
|
return e;
|
|
1224
1217
|
}
|
|
1225
|
-
function _defineProperty(e,
|
|
1226
|
-
return (
|
|
1227
|
-
value:
|
|
1218
|
+
function _defineProperty(e, t, r) {
|
|
1219
|
+
return (t = _toPropertyKey(t)) in e ? Object.defineProperty(e, t, {
|
|
1220
|
+
value: r,
|
|
1228
1221
|
enumerable: !0,
|
|
1229
1222
|
configurable: !0,
|
|
1230
1223
|
writable: !0
|
|
1231
|
-
}) : e[
|
|
1224
|
+
}) : e[t] = r, e;
|
|
1232
1225
|
}
|
|
1233
1226
|
function _toPropertyKey(e) {
|
|
1234
|
-
var
|
|
1235
|
-
return "symbol"
|
|
1236
|
-
}
|
|
1237
|
-
function _toPrimitive(e,
|
|
1238
|
-
if ("object"
|
|
1239
|
-
var
|
|
1240
|
-
if (void 0 !==
|
|
1241
|
-
var o =
|
|
1242
|
-
if ("object"
|
|
1227
|
+
var t = _toPrimitive(e, "string");
|
|
1228
|
+
return "symbol" == _typeof(t) ? t : t + "";
|
|
1229
|
+
}
|
|
1230
|
+
function _toPrimitive(e, t) {
|
|
1231
|
+
if ("object" != _typeof(e) || !e) return e;
|
|
1232
|
+
var r = e[Symbol.toPrimitive];
|
|
1233
|
+
if (void 0 !== r) {
|
|
1234
|
+
var o = r.call(e, t || "default");
|
|
1235
|
+
if ("object" != _typeof(o)) return o;
|
|
1243
1236
|
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
1244
1237
|
}
|
|
1245
|
-
return ("string" ===
|
|
1238
|
+
return ("string" === t ? String : Number)(e);
|
|
1246
1239
|
}
|
|
1247
1240
|
module = __webpack_require__.hmd(module), enterModule = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0, enterModule && enterModule(module);
|
|
1248
1241
|
var __signature__ = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default.signature : function (e) {
|
|
1249
1242
|
return e;
|
|
1250
1243
|
};
|
|
1251
|
-
function modelChangeEventPath(e,
|
|
1252
|
-
if (null !=
|
|
1244
|
+
function modelChangeEventPath(e, t) {
|
|
1245
|
+
if (null != t) {
|
|
1253
1246
|
if (null == e) throw new Error("Path must be defined");
|
|
1254
|
-
return ["model", "change", e,
|
|
1247
|
+
return ["model", "change", e, t];
|
|
1255
1248
|
}
|
|
1256
1249
|
return null != e ? ["model", "change", e] : ["model", "change"];
|
|
1257
1250
|
}
|
|
1258
1251
|
function mapChunkValues(e) {
|
|
1259
|
-
return Object.keys(e).filter(function (
|
|
1260
|
-
return e[
|
|
1261
|
-
}).map(function (
|
|
1262
|
-
var
|
|
1263
|
-
return null ==
|
|
1252
|
+
return Object.keys(e).filter(function (t) {
|
|
1253
|
+
return e[t] && Object.prototype.hasOwnProperty.call(e[t], "value");
|
|
1254
|
+
}).map(function (t) {
|
|
1255
|
+
var r = e[t];
|
|
1256
|
+
return null == r ? {} : _defineProperty({}, t, r.value);
|
|
1264
1257
|
});
|
|
1265
1258
|
}
|
|
1266
1259
|
function reduceChunkValues(e) {
|
|
1267
|
-
return e.reduce(function (e,
|
|
1268
|
-
return _objectSpread(_objectSpread({}, e),
|
|
1260
|
+
return e.reduce(function (e, t) {
|
|
1261
|
+
return _objectSpread(_objectSpread({}, e), t);
|
|
1269
1262
|
}, {});
|
|
1270
1263
|
}
|
|
1271
1264
|
var LegacyPublicForm = function () {
|
|
1272
1265
|
function LegacyPublicForm(e) {
|
|
1273
1266
|
_classCallCheck(this, LegacyPublicForm), this.form = void 0, this.form = e;
|
|
1274
1267
|
}
|
|
1275
|
-
var _reloadInner, _INTERNAL__getSelectFunctionForDisableEmployeeInSS, _validateChildrenByPath;
|
|
1276
1268
|
return _createClass(LegacyPublicForm, [{
|
|
1277
1269
|
key: "navigateByHighlanderPaths",
|
|
1278
1270
|
value: function (e) {
|
|
@@ -1300,7 +1292,7 @@
|
|
|
1300
1292
|
}
|
|
1301
1293
|
}, {
|
|
1302
1294
|
key: "validateChildrenByPath",
|
|
1303
|
-
value: (_validateChildrenByPath = _asyncToGenerator(_regeneratorRuntime().mark(function e(
|
|
1295
|
+
value: (_validateChildrenByPath = _asyncToGenerator(_regeneratorRuntime().mark(function e(t) {
|
|
1304
1296
|
return _regeneratorRuntime().wrap(function (e) {
|
|
1305
1297
|
for (;;) switch (e.prev = e.next) {
|
|
1306
1298
|
case 0:
|
|
@@ -1320,7 +1312,7 @@
|
|
|
1320
1312
|
}
|
|
1321
1313
|
}, {
|
|
1322
1314
|
key: "__INTERNAL__getSelectFunctionForDisableEmployeeInSS",
|
|
1323
|
-
value: (_INTERNAL__getSelectFunctionForDisableEmployeeInSS = _asyncToGenerator(_regeneratorRuntime().mark(function e(
|
|
1315
|
+
value: (_INTERNAL__getSelectFunctionForDisableEmployeeInSS = _asyncToGenerator(_regeneratorRuntime().mark(function e(t) {
|
|
1324
1316
|
return _regeneratorRuntime().wrap(function (e) {
|
|
1325
1317
|
for (;;) switch (e.prev = e.next) {
|
|
1326
1318
|
case 0:
|
|
@@ -1355,37 +1347,37 @@
|
|
|
1355
1347
|
}
|
|
1356
1348
|
}, {
|
|
1357
1349
|
key: "importEmployees",
|
|
1358
|
-
value: function (e,
|
|
1350
|
+
value: function (e, t) {
|
|
1359
1351
|
throw new Error("Method not implemented.");
|
|
1360
1352
|
}
|
|
1361
1353
|
}, {
|
|
1362
1354
|
key: "print",
|
|
1363
|
-
value: function (e,
|
|
1355
|
+
value: function (e, t) {
|
|
1364
1356
|
throw new Error("Method not implemented.");
|
|
1365
1357
|
}
|
|
1366
1358
|
}, {
|
|
1367
1359
|
key: "runMassAction",
|
|
1368
|
-
value: function (e,
|
|
1360
|
+
value: function (e, t) {
|
|
1369
1361
|
throw new Error("Method not implemented.");
|
|
1370
1362
|
}
|
|
1371
1363
|
}, {
|
|
1372
1364
|
key: "getByGId",
|
|
1373
|
-
value: function (e,
|
|
1374
|
-
return this.form.picklistsProvider.getDigestApiPicklist(e).query(
|
|
1365
|
+
value: function (e, t) {
|
|
1366
|
+
return this.form.picklistsProvider.getDigestApiPicklist(e).query(t);
|
|
1375
1367
|
}
|
|
1376
1368
|
}, {
|
|
1377
1369
|
key: "on",
|
|
1378
|
-
value: function (e,
|
|
1379
|
-
this.form.eventManager.on(["form", e],
|
|
1370
|
+
value: function (e, t) {
|
|
1371
|
+
this.form.eventManager.on(["form", e], t);
|
|
1380
1372
|
}
|
|
1381
1373
|
}, {
|
|
1382
1374
|
key: "off",
|
|
1383
|
-
value: function (e,
|
|
1384
|
-
this.form.eventManager.off(["form", e],
|
|
1375
|
+
value: function (e, t) {
|
|
1376
|
+
this.form.eventManager.off(["form", e], t);
|
|
1385
1377
|
}
|
|
1386
1378
|
}, {
|
|
1387
1379
|
key: "onModelChange",
|
|
1388
|
-
value: function (e,
|
|
1380
|
+
value: function (e, t) {
|
|
1389
1381
|
throw Error("form.onModelChange() is not supported yet");
|
|
1390
1382
|
}
|
|
1391
1383
|
}, {
|
|
@@ -1452,27 +1444,27 @@
|
|
|
1452
1444
|
}
|
|
1453
1445
|
}, {
|
|
1454
1446
|
key: "set",
|
|
1455
|
-
value: function (e,
|
|
1447
|
+
value: function (e, t) {
|
|
1456
1448
|
if (null === e || "string" == typeof e || "object" !== _typeof(e) || Array.isArray(e)) {
|
|
1457
1449
|
if ("string" != typeof e) throw new Error("form.set() parameter should be string path or object with path-value pairs");
|
|
1458
|
-
this.form.model.set(e, "value",
|
|
1450
|
+
this.form.model.set(e, "value", t);
|
|
1459
1451
|
} else {
|
|
1460
|
-
var
|
|
1461
|
-
return _objectSpread(_defineProperty({},
|
|
1462
|
-
value: e[
|
|
1463
|
-
}),
|
|
1452
|
+
var r = Object.keys(e).reduce(function (t, r) {
|
|
1453
|
+
return _objectSpread(_defineProperty({}, r, {
|
|
1454
|
+
value: e[r]
|
|
1455
|
+
}), t);
|
|
1464
1456
|
}, {});
|
|
1465
|
-
this.form.model.fill(
|
|
1457
|
+
this.form.model.fill(r);
|
|
1466
1458
|
}
|
|
1467
1459
|
}
|
|
1468
1460
|
}, {
|
|
1469
1461
|
key: "get",
|
|
1470
1462
|
value: function (e) {
|
|
1471
|
-
var
|
|
1463
|
+
var t = this;
|
|
1472
1464
|
if (Array.isArray(e)) return reduceChunkValues(e.map(function (e) {
|
|
1473
|
-
return mapChunkValues(
|
|
1474
|
-
}).reduce(function (e,
|
|
1475
|
-
return e.concat(
|
|
1465
|
+
return mapChunkValues(t.form.model.getChunk(e));
|
|
1466
|
+
}).reduce(function (e, t) {
|
|
1467
|
+
return e.concat(t);
|
|
1476
1468
|
}, []));
|
|
1477
1469
|
if ("string" == typeof e) return reduceChunkValues(mapChunkValues(this.form.model.getChunk(e)));
|
|
1478
1470
|
if (void 0 === e) return reduceChunkValues(mapChunkValues(this.form.model.getChunk(this.form.settings.formRoot)));
|
|
@@ -1485,63 +1477,63 @@
|
|
|
1485
1477
|
}
|
|
1486
1478
|
}, {
|
|
1487
1479
|
key: "copySubtree",
|
|
1488
|
-
value: function (e,
|
|
1489
|
-
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.
|
|
1480
|
+
value: function (e, t, r) {
|
|
1481
|
+
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.EH();
|
|
1490
1482
|
}
|
|
1491
1483
|
}, {
|
|
1492
1484
|
key: "addInstance",
|
|
1493
1485
|
value: function (e) {
|
|
1494
|
-
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.
|
|
1486
|
+
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.EH();
|
|
1495
1487
|
}
|
|
1496
1488
|
}, {
|
|
1497
1489
|
key: "getChildren",
|
|
1498
1490
|
value: function (e) {
|
|
1499
|
-
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.
|
|
1491
|
+
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.EH();
|
|
1500
1492
|
}
|
|
1501
1493
|
}, {
|
|
1502
1494
|
key: "uuidGenerate",
|
|
1503
1495
|
value: function () {
|
|
1504
|
-
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.
|
|
1496
|
+
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.EH();
|
|
1505
1497
|
}
|
|
1506
1498
|
}, {
|
|
1507
1499
|
key: "showModal",
|
|
1508
1500
|
value: function (e) {
|
|
1509
|
-
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.
|
|
1501
|
+
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.EH();
|
|
1510
1502
|
}
|
|
1511
1503
|
}, {
|
|
1512
1504
|
key: "addSection",
|
|
1513
1505
|
value: function (e) {
|
|
1514
|
-
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.
|
|
1506
|
+
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.EH();
|
|
1515
1507
|
}
|
|
1516
1508
|
}, {
|
|
1517
1509
|
key: "callInitSection",
|
|
1518
1510
|
value: function (e) {
|
|
1519
|
-
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.
|
|
1511
|
+
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.EH();
|
|
1520
1512
|
}
|
|
1521
1513
|
}, {
|
|
1522
1514
|
key: "createFiasApiClient",
|
|
1523
1515
|
value: function (e) {
|
|
1524
|
-
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.
|
|
1516
|
+
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.EH();
|
|
1525
1517
|
}
|
|
1526
1518
|
}, {
|
|
1527
1519
|
key: "openEmployeeEditor",
|
|
1528
1520
|
value: function (e) {
|
|
1529
|
-
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.
|
|
1521
|
+
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.EH();
|
|
1530
1522
|
}
|
|
1531
1523
|
}, {
|
|
1532
1524
|
key: "removeInstance",
|
|
1533
|
-
value: function (e,
|
|
1534
|
-
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.
|
|
1525
|
+
value: function (e, t) {
|
|
1526
|
+
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.EH();
|
|
1535
1527
|
}
|
|
1536
1528
|
}, {
|
|
1537
1529
|
key: "removeInstances",
|
|
1538
|
-
value: function (e,
|
|
1539
|
-
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.
|
|
1530
|
+
value: function (e, t) {
|
|
1531
|
+
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.EH();
|
|
1540
1532
|
}
|
|
1541
1533
|
}, {
|
|
1542
1534
|
key: "focusOnControlIfExist",
|
|
1543
1535
|
value: function (e) {
|
|
1544
|
-
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.
|
|
1536
|
+
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.EH();
|
|
1545
1537
|
}
|
|
1546
1538
|
}, {
|
|
1547
1539
|
key: "setAutoFieldsToAutoValue",
|
|
@@ -1555,25 +1547,26 @@
|
|
|
1555
1547
|
}
|
|
1556
1548
|
}, {
|
|
1557
1549
|
key: "customNormalize",
|
|
1558
|
-
value: function (e,
|
|
1559
|
-
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.
|
|
1550
|
+
value: function (e, t) {
|
|
1551
|
+
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.EH();
|
|
1560
1552
|
}
|
|
1561
1553
|
}, {
|
|
1562
1554
|
key: "removeInstancesByRules",
|
|
1563
1555
|
value: function (e) {
|
|
1564
|
-
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.
|
|
1556
|
+
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.EH();
|
|
1565
1557
|
}
|
|
1566
1558
|
}, {
|
|
1567
1559
|
key: "createDnp",
|
|
1568
1560
|
value: function () {
|
|
1569
|
-
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.
|
|
1561
|
+
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.EH();
|
|
1570
1562
|
}
|
|
1571
1563
|
}, {
|
|
1572
1564
|
key: "__reactstandin__regenerateByEval",
|
|
1573
1565
|
value: function __reactstandin__regenerateByEval(key, code) {
|
|
1574
1566
|
this[key] = eval(code);
|
|
1575
1567
|
}
|
|
1576
|
-
}])
|
|
1568
|
+
}]);
|
|
1569
|
+
var _reloadInner, _INTERNAL__getSelectFunctionForDisableEmployeeInSS, _validateChildrenByPath;
|
|
1577
1570
|
}(),
|
|
1578
1571
|
reactHotLoader,
|
|
1579
1572
|
leaveModule;
|
|
@@ -1582,7 +1575,7 @@
|
|
|
1582
1575
|
}
|
|
1583
1576
|
reactHotLoader = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0, reactHotLoader && (reactHotLoader.register(modelChangeEventPath, "modelChangeEventPath", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\LegacyPublicForm\\CreateLegacyPublicForm.ts"), reactHotLoader.register(mapChunkValues, "mapChunkValues", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\LegacyPublicForm\\CreateLegacyPublicForm.ts"), reactHotLoader.register(reduceChunkValues, "reduceChunkValues", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\LegacyPublicForm\\CreateLegacyPublicForm.ts"), reactHotLoader.register(LegacyPublicForm, "LegacyPublicForm", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\LegacyPublicForm\\CreateLegacyPublicForm.ts"), reactHotLoader.register(createLegacyPublicForm, "createLegacyPublicForm", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\LegacyPublicForm\\CreateLegacyPublicForm.ts")), leaveModule = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0, leaveModule && leaveModule(module);
|
|
1584
1577
|
},
|
|
1585
|
-
|
|
1578
|
+
500: function (e, t, r) {
|
|
1586
1579
|
var o;
|
|
1587
1580
|
function n(e) {
|
|
1588
1581
|
return n = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
|
|
@@ -1591,83 +1584,85 @@
|
|
|
1591
1584
|
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
|
|
1592
1585
|
}, n(e);
|
|
1593
1586
|
}
|
|
1594
|
-
function i(e,
|
|
1595
|
-
for (var
|
|
1596
|
-
var o = r
|
|
1597
|
-
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, (
|
|
1598
|
-
if ("object" !== n(e) || null === e) return e;
|
|
1599
|
-
var t = e[Symbol.toPrimitive];
|
|
1600
|
-
if (void 0 !== t) {
|
|
1601
|
-
var o = t.call(e, "string");
|
|
1602
|
-
if ("object" !== n(o)) return o;
|
|
1603
|
-
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
1604
|
-
}
|
|
1605
|
-
return String(e);
|
|
1606
|
-
}(o.key), "symbol" === n(i) ? i : String(i)), o);
|
|
1587
|
+
function i(e, t) {
|
|
1588
|
+
for (var r = 0; r < t.length; r++) {
|
|
1589
|
+
var o = t[r];
|
|
1590
|
+
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, a(o.key), o);
|
|
1607
1591
|
}
|
|
1608
|
-
var i;
|
|
1609
1592
|
}
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
return
|
|
1593
|
+
function a(e) {
|
|
1594
|
+
var t = function (e, t) {
|
|
1595
|
+
if ("object" != n(e) || !e) return e;
|
|
1596
|
+
var r = e[Symbol.toPrimitive];
|
|
1597
|
+
if (void 0 !== r) {
|
|
1598
|
+
var o = r.call(e, "string");
|
|
1599
|
+
if ("object" != n(o)) return o;
|
|
1600
|
+
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
1601
|
+
}
|
|
1602
|
+
return String(e);
|
|
1603
|
+
}(e);
|
|
1604
|
+
return "symbol" == n(t) ? t : t + "";
|
|
1605
|
+
}
|
|
1606
|
+
r.d(t, {
|
|
1607
|
+
q: function () {
|
|
1608
|
+
return l;
|
|
1613
1609
|
}
|
|
1614
|
-
}), e =
|
|
1615
|
-
var
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
function e() {
|
|
1619
|
-
!function (e,
|
|
1620
|
-
if (!(e instanceof
|
|
1610
|
+
}), e = r.hmd(e), (o = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && o(e), "undefined" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature;
|
|
1611
|
+
var u,
|
|
1612
|
+
s,
|
|
1613
|
+
l = function () {
|
|
1614
|
+
return e = function e() {
|
|
1615
|
+
!function (e, t) {
|
|
1616
|
+
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
|
|
1621
1617
|
}(this, e);
|
|
1622
|
-
}
|
|
1623
|
-
var r, t;
|
|
1624
|
-
return r = e, t = [{
|
|
1618
|
+
}, t = [{
|
|
1625
1619
|
key: "script",
|
|
1626
|
-
value: function (e,
|
|
1627
|
-
var
|
|
1620
|
+
value: function (e, t) {
|
|
1621
|
+
var r = !1,
|
|
1628
1622
|
o = document.getElementsByTagName("head")[0] || document.documentElement,
|
|
1629
1623
|
n = document.createElement("script");
|
|
1630
1624
|
function i() {
|
|
1631
|
-
|
|
1625
|
+
r || n.readyState && "loaded" !== n.readyState && "complete" !== n.readyState || (r = !0, t());
|
|
1632
1626
|
}
|
|
1633
1627
|
n.onload = i, n.onreadystatechange = i, n.onerror = function () {
|
|
1634
|
-
n.parentNode && n.parentNode.removeChild(n),
|
|
1628
|
+
n.parentNode && n.parentNode.removeChild(n), t(new Error("Error while loading script."));
|
|
1635
1629
|
}, n.src = e, n.setAttribute("crossorigin", "use-credentials"), o.appendChild(n);
|
|
1636
1630
|
}
|
|
1637
1631
|
}, {
|
|
1638
1632
|
key: "styleSheet",
|
|
1639
|
-
value: function (e,
|
|
1633
|
+
value: function (e, t, r) {
|
|
1640
1634
|
var o,
|
|
1641
1635
|
n = null !== (o = document.getElementsByTagName("head")[0]) && void 0 !== o ? o : document.documentElement,
|
|
1642
1636
|
i = document.createElement("link");
|
|
1643
1637
|
i.setAttribute("rel", "stylesheet"), i.setAttribute("type", "text/css"), i.addEventListener("load", function () {
|
|
1644
|
-
return
|
|
1638
|
+
return r(void 0);
|
|
1645
1639
|
}), i.addEventListener("error", function () {
|
|
1646
|
-
t
|
|
1640
|
+
r(t ? void 0 : new Error("Error while loading stylesheet."));
|
|
1647
1641
|
}), n.appendChild(i), i.setAttribute("href", e);
|
|
1648
1642
|
}
|
|
1649
|
-
}], null && i(
|
|
1643
|
+
}], null && i(e.prototype, null), t && i(e, t), Object.defineProperty(e, "prototype", {
|
|
1650
1644
|
writable: !1
|
|
1651
1645
|
}), e;
|
|
1646
|
+
var e, t;
|
|
1652
1647
|
}();
|
|
1653
|
-
(
|
|
1648
|
+
(u = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && u.register(l, "LoadIntoDocument", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Helpers\\LoadIntoDocument.ts"), (s = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && s(e);
|
|
1654
1649
|
}
|
|
1655
1650
|
},
|
|
1656
1651
|
__webpack_module_cache__ = {};
|
|
1657
1652
|
function __webpack_require__(e) {
|
|
1658
|
-
var
|
|
1659
|
-
if (void 0 !==
|
|
1660
|
-
var
|
|
1653
|
+
var t = __webpack_module_cache__[e];
|
|
1654
|
+
if (void 0 !== t) return t.exports;
|
|
1655
|
+
var r = __webpack_module_cache__[e] = {
|
|
1661
1656
|
id: e,
|
|
1662
1657
|
loaded: !1,
|
|
1663
1658
|
exports: {}
|
|
1664
1659
|
};
|
|
1665
|
-
return __webpack_modules__[e](
|
|
1660
|
+
return __webpack_modules__[e](r, r.exports, __webpack_require__), r.loaded = !0, r.exports;
|
|
1666
1661
|
}
|
|
1667
|
-
__webpack_require__.d = function (e,
|
|
1668
|
-
for (var
|
|
1662
|
+
__webpack_require__.d = function (e, t) {
|
|
1663
|
+
for (var r in t) __webpack_require__.o(t, r) && !__webpack_require__.o(e, r) && Object.defineProperty(e, r, {
|
|
1669
1664
|
enumerable: !0,
|
|
1670
|
-
get: r
|
|
1665
|
+
get: t[r]
|
|
1671
1666
|
});
|
|
1672
1667
|
}, __webpack_require__.g = function () {
|
|
1673
1668
|
if ("object" == typeof globalThis) return globalThis;
|
|
@@ -1683,9 +1678,9 @@
|
|
|
1683
1678
|
throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: " + e.id);
|
|
1684
1679
|
}
|
|
1685
1680
|
}), e;
|
|
1686
|
-
}, __webpack_require__.o = function (e,
|
|
1687
|
-
return Object.prototype.hasOwnProperty.call(e,
|
|
1681
|
+
}, __webpack_require__.o = function (e, t) {
|
|
1682
|
+
return Object.prototype.hasOwnProperty.call(e, t);
|
|
1688
1683
|
};
|
|
1689
|
-
var __webpack_exports__ = __webpack_require__(
|
|
1684
|
+
var __webpack_exports__ = __webpack_require__(591);
|
|
1690
1685
|
})();
|
|
1691
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJuIiwiaSIsImEiLCJlIiwiY29uY2F0IiwibnMiLCJkcmFmdElkIiwidCIsImQiLCJyIiwibSIsImhtZCIsIm8iLCJyZWFjdEhvdExvYWRlckdsb2JhbCIsImVudGVyTW9kdWxlIiwiZGVmYXVsdCIsInNpZ25hdHVyZSIsInJlZ2lzdGVyIiwibGVhdmVNb2R1bGUiLCJtb2R1bGUiLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIl90eXBlb2YiLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2NsYXNzQ2FsbENoZWNrIiwiVHlwZUVycm9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJsZW5ndGgiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5Iiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiTnVtYmVyIiwiX2luaGVyaXRzIiwiY3JlYXRlIiwidmFsdWUiLCJfc2V0UHJvdG90eXBlT2YiLCJfY3JlYXRlU3VwZXIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiX2dldFByb3RvdHlwZU9mIiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImFyZ3VtZW50cyIsImFwcGx5IiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiUmVmZXJlbmNlRXJyb3IiLCJfd3JhcE5hdGl2ZVN1cGVyIiwiTWFwIiwiX2lzTmF0aXZlRnVuY3Rpb24iLCJoYXMiLCJnZXQiLCJzZXQiLCJfY29uc3RydWN0IiwiYmluZCIsInB1c2giLCJGdW5jdGlvbiIsInNoYW0iLCJQcm94eSIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwidG9TdHJpbmciLCJpbmRleE9mIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJnZXRQcm90b3R5cGVPZiIsIm5qIiwiTm90SW1wbGVtZW50ZWRFcnJvciIsIl9fc2lnbmF0dXJlX18iLCJBcHBsaWNhdGlvbkVycm9yIiwiX0Vycm9yIiwiX3N1cGVyIiwibmFtZSIsIl9fcmVhY3RzdGFuZGluX19yZWdlbmVyYXRlQnlFdmFsIiwiY29kZSIsImV2YWwiLCJFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yIiwiX3N1cGVyMiIsIk5vdFN1cHBvcnRlZEVycm9yIiwiX0FwcGxpY2F0aW9uRXJyb3IyIiwiX3N1cGVyMyIsIkludmFsaWRQcm9ncmFtU3RhdGVFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yMyIsIl9zdXBlcjQiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yNCIsIl9zdXBlcjUiLCJUeXBpbmdFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yNSIsIl9zdXBlcjYiLCJyZWFjdEhvdExvYWRlciIsInUiLCJzIiwibCIsImMiLCJmIiwiZDEiLCJtZXNzYWdlIiwidHJpbSIsInNsaWNlIiwiZ2xvYmFsVGhpcyIsInNlbGYiLCJzZWFyY2hQYXJhbXMiLCJpdGVyYWJsZSIsImJsb2IiLCJCbG9iIiwiZm9ybURhdGEiLCJhcnJheUJ1ZmZlciIsIkFycmF5QnVmZmVyIiwiaXNWaWV3IiwidGVzdCIsInRvTG93ZXJDYXNlIiwibmV4dCIsInNoaWZ0IiwiZG9uZSIsIm1hcCIsImZvckVhY2giLCJhcHBlbmQiLCJBcnJheSIsImlzQXJyYXkiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiYm9keVVzZWQiLCJQcm9taXNlIiwicmVqZWN0Iiwib25sb2FkIiwicmVzdWx0Iiwib25lcnJvciIsImVycm9yIiwicCIsIkZpbGVSZWFkZXIiLCJyZWFkQXNBcnJheUJ1ZmZlciIsInkiLCJVaW50OEFycmF5IiwiYnl0ZUxlbmd0aCIsImJ1ZmZlciIsIl9pbml0Qm9keSIsIl9ib2R5SW5pdCIsIl9ib2R5VGV4dCIsImlzUHJvdG90eXBlT2YiLCJfYm9keUJsb2IiLCJGb3JtRGF0YSIsIl9ib2R5Rm9ybURhdGEiLCJVUkxTZWFyY2hQYXJhbXMiLCJEYXRhVmlldyIsIl9ib2R5QXJyYXlCdWZmZXIiLCJoZWFkZXJzIiwidHlwZSIsInJlc29sdmUiLCJieXRlT2Zmc2V0IiwidGhlbiIsInRleHQiLCJyZWFkQXNUZXh0IiwiZnJvbUNoYXJDb2RlIiwiam9pbiIsIl8iLCJqc29uIiwiSlNPTiIsInBhcnNlIiwiZGVsZXRlIiwiaGFzT3duUHJvcGVydHkiLCJrZXlzIiwidmFsdWVzIiwiZW50cmllcyIsImgiLCJnIiwiYm9keSIsInVybCIsImNyZWRlbnRpYWxzIiwibWV0aG9kIiwibW9kZSIsInNpZ25hbCIsInRvVXBwZXJDYXNlIiwicmVmZXJyZXIiLCJjYWNoZSIsInJlcGxhY2UiLCJEYXRlIiwiZ2V0VGltZSIsInNwbGl0IiwiZGVjb2RlVVJJQ29tcG9uZW50IiwidiIsInN0YXR1cyIsIm9rIiwic3RhdHVzVGV4dCIsImNsb25lIiwiYiIsInJlZGlyZWN0IiwiUmFuZ2VFcnJvciIsImxvY2F0aW9uIiwidyIsIkRPTUV4Y2VwdGlvbiIsInN0YWNrIiwiRSIsImFib3J0ZWQiLCJYTUxIdHRwUmVxdWVzdCIsImFib3J0IiwiZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIiwic3Vic3RyIiwicmVzcG9uc2VVUkwiLCJyZXNwb25zZSIsInJlc3BvbnNlVGV4dCIsInNldFRpbWVvdXQiLCJvbnRpbWVvdXQiLCJvbmFib3J0Iiwib3BlbiIsImhyZWYiLCJ3aXRoQ3JlZGVudGlhbHMiLCJyZXNwb25zZVR5cGUiLCJzZXRSZXF1ZXN0SGVhZGVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlYWR5U3RhdGUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwic2VuZCIsInBvbHlmaWxsIiwiZmV0Y2giLCJIZWFkZXJzIiwiUmVxdWVzdCIsIlJlc3BvbnNlIiwiayIsIkMiLCJQIiwiQSIsIk8iLCJMIiwiUyIsIkIiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJUIiwiaiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiSSIsIkYiLCJNIiwiVSIsIkNGIiwia2Vmb3Jtc1VybCIsIkQiLCJlbmNvZGVVUklDb21wb25lbnQiLCJIIiwiUmVnRXhwIiwiaG9zdCIsIkciLCJzZWFyY2giLCJmaW5kIiwicmV0dXJuIiwiZnJvbSIsIngiLCJOIiwiZ2Z2IiwiZW5naW5lVmVyc2lvbiIsInJlc291cmNlc1ZlcnNpb24iLCJlbnRyeVBvaW50IiwicmVzb3VyY2Vab25lIiwic3R5bGVTaGVldCIsInNjcmlwdCIsIlIiLCJwdWJsaWNGb3JtIiwiY2F0Y2giLCJWIiwicSIsIloiLCJrb250dXJEb21haW5zIiwiYXV0aG9yaXplZCIsImF1dGhlbnRpY2F0aW9uIiwiYXV0aFNpZCIsIkF1dGhvcml6YXRpb24iLCJjYXVsZHJvbkFwaVVybCIsImlzVGVzdFNlcnZlciIsInJlbmRlckNhY2hpbmdGb3JJRTgiLCJub3JtYWxpemF0aW9uT25TZXJ2ZXIiLCJub3JtYXRpdmVVcmwiLCJzaG93TmF2aWdhdGlvblNpZGViYXIiLCJvblJlbW92ZUF0dGFjaG1lbnQiLCJmZWVkYmFja0VuYWJsZWQiLCJpc0Rpc2FibGVkQ2xlYW5Gb3JtIiwiaXNEaXNhYmxlZENsb3NlQnV0dG9uIiwiaXNEaXNhYmxlZENsb3NlQW5kU2F2ZUJ1dHRvbiIsInRoZW1lIiwidGVtcGxhdGVzQXBpIiwicmVuZGVyRm9ybSIsIksiLCJXIiwic3RhcnQiLCJwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4IiwicGFyc2VJbnQiLCJjcmVhdGVMZWdhY3lQdWJsaWNGb3JtIiwiX0NvbW1vbl9FcnJvcnNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJhc3luY0l0ZXJhdG9yIiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJhcmciLCJ3cmFwIiwiX2ludm9rZSIsIl9fYXdhaXQiLCJkZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwicmVzdWx0TmFtZSIsIm5leHRMb2MiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpc05hTiIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsIm1hcmsiLCJhd3JhcCIsIkFzeW5jSXRlcmF0b3IiLCJhc3luYyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic3RvcCIsInJ2YWwiLCJjb21wbGV0ZSIsImZpbmlzaCIsImRlbGVnYXRlWWllbGQiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJfYXN5bmNUb0dlbmVyYXRvciIsIm93bktleXMiLCJfb2JqZWN0U3ByZWFkIiwiX2RlZmluZVByb3BlcnR5IiwibW9kZWxDaGFuZ2VFdmVudFBhdGgiLCJtYXBDaHVua1ZhbHVlcyIsInJlZHVjZUNodW5rVmFsdWVzIiwicmVkdWNlIiwiTGVnYWN5UHVibGljRm9ybSIsImZvcm0iLCJfcmVsb2FkSW5uZXIiLCJfSU5URVJOQUxfX2dldFNlbGVjdEZ1bmN0aW9uRm9yRGlzYWJsZUVtcGxveWVlSW5TUyIsIl92YWxpZGF0ZUNoaWxkcmVuQnlQYXRoIiwicGlja2xpc3RzUHJvdmlkZXIiLCJnZXREaWdlc3RBcGlQaWNrbGlzdCIsInF1ZXJ5IiwiZXZlbnRNYW5hZ2VyIiwib24iLCJvZmYiLCJjaGFuZ2VTZXQiLCJzdG9wQXV0b3NlbmQiLCJ1bm1vdW50IiwibW9kZWwiLCJnZXRDaHVuayIsInNldHRpbmdzIiwiZm9ybVJvb3QiLCJ2YWxpZGF0b3IiLCJ2YWxpZGF0ZUFsbCIsImZpbGwiLCJkb2N1bWVudCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiZG9jdW1lbnRFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInNyYyIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiZXhwb3J0cyIsImlkIiwibG9hZGVkIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsIndpbmRvdyIsImNoaWxkcmVuIl0sInNvdXJjZXMiOlsid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DbGllbnREcmFmdEluZm8vR2V0Q2xpZW50RHJhZnRJbmZvVXJsLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9FcnJvcnMudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvQ29tbW9uL1R5cGluZ1V0aWxzLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL25vZGVfbW9kdWxlcy93aGF0d2ctZmV0Y2gvZmV0Y2guanMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvRW5naW5lL3NyYy9Gb3Jtcy9DbGllbnQvQ2xpZW50LnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0VuZ2luZS9zcmMvRm9ybXMvQ2xpZW50L0NsaWVudFNldHRpbmdzLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0VuZ2luZS9zcmMvRm9ybXMvQ2xpZW50L0xlZ2FjeVB1YmxpY0Zvcm0vQ3JlYXRlTGVnYWN5UHVibGljRm9ybS50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9FbmdpbmUvc3JjL0hlbHBlcnMvTG9hZEludG9Eb2N1bWVudC50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvaGFybW9ueSBtb2R1bGUgZGVjb3JhdG9yIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9zdGFydHVwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERyYWZ0RnVsbElkIH0gZnJvbSBcIi4uL1R5cGVzL0RyYWZ0RnVsbElkXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDbGllbnREcmFmdEluZm9VcmwoZHJhZnRJZDogRHJhZnRGdWxsSWQpIHtcbiAgICAvLyBOT1RFINCt0YLQsCDRhNGD0L3QutGG0LjRjyDQvtCx0YrRj9Cy0LvQtdC90LAg0L7RgtC00LXQu9GM0L3Qviwg0LjQsdC+INC+0L3QsCDQstGF0L7QtNC40YIg0LIg0YHQvtGB0YLQsNCyIGNsaWVudC5qcyDQuFxuICAgIC8vINC90LUg0LTQvtC70LbQvdC+INC/0YDQvtC40YHRhdC+0LTQuNGC0Ywg0YPRgtC10LbQtdC70LXQvdC40Y8gY2xpZW50LmpzLdCwXG4gICAgcmV0dXJuIGB2MS9ucy8ke2RyYWZ0SWQubnN9L2RyYWZ0cy8ke2RyYWZ0SWQuZHJhZnRJZH0vY2xpZW50LWRyYWZ0LWluZm9gO1xufVxuIiwiZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICBzdXBlcihtZXNzYWdlKTtcbiAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5vdEltcGxlbWVudGVkRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKFwiT3BlcmF0aW9uIG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb3RTdXBwb3J0ZWRFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UgPz8gXCJPcGVyYXRpb24gbm90IHN1cHBvcnRlZFwiKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkUHJvZ3JhbVN0YXRlRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihcIkludmFsaWQgcHJvZ3JhbSBzdGF0ZVwiICsgKG1lc3NhZ2UgIT0gdW5kZWZpbmVkID8gXCI6IFwiICsgbWVzc2FnZSA6IFwiXCIpKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkQXJndW1lbnRFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihhcmd1bWVudE5hbWU6IHN0cmluZywgbWVzc2FnZT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihcbiAgICAgICAgICAgIG1lc3NhZ2UgIT0gdW5kZWZpbmVkID8gYCR7bWVzc2FnZX0gKGFyZ3VtZW50OiAke2FyZ3VtZW50TmFtZX0pYCA6IGBJbnZhbGlkIGFyZ3VtZW50IHZhbHVlOiAke2FyZ3VtZW50TmFtZX1gXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHlwaW5nRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKFwiSW52YWxpZCB0eXBpbmdcIik7XG4gICAgfVxufVxuIiwiLyoqKlxuICog0KHRgtGA0L7Qs9C+0YLQuNC/0LjQt9C40YDQvtCy0LDQvdC90LDRjyDQt9Cw0LzQtdC90LAg0LTQu9GPIEJvb2xlYW4oLi4uKVxuICog0J7QsdGL0YfQvdC+INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNC70Y8gWy4uLl0uZmlsdGVyKGlzTm90TnVsbE9yVW5kZWZpbmVkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOb3ROdWxsT3JVbmRlZmluZWQ8VD4oaW5wdXQ6IFQpOiBpbnB1dCBpcyBOb25OdWxsYWJsZTxUPiB7XG4gICAgcmV0dXJuIGlucHV0ICE9IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeVVua25vd25FcnJvcihlcnJvcjogdW5rbm93bik6IHVuZGVmaW5lZCB8IHN0cmluZyB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgcmV0dXJuIHR5cGVvZiBlcnJvciA9PT0gXCJvYmplY3RcIiAmJiBlcnJvcj8uW1wibWVzc2FnZVwiXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5vdE51bGxPclVuZGVmaW5lZDxUPihpbnB1dDogVCk6IGFzc2VydHMgaW5wdXQgaXMgTm9uTnVsbGFibGU8VD4ge1xuICAgIGlmICghaXNOb3ROdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVmFsdWUgbXVzdCBiZSBkZWZpbmVkYCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9vcCgpOiB2b2lkIHtcbiAgICAvLyBub29wXG59XG5cbmV4cG9ydCB0eXBlIEVycm9yRmlyc3RDYWxsYmFjazxUPiA9ICguLi5hcmdzOiBbRXJyb3IsIG51bGwgfCB1bmRlZmluZWRdIHwgW251bGwgfCB1bmRlZmluZWQsIFRdIHwgW0Vycm9yXSkgPT4gdm9pZDtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlamVjdChtZXNzYWdlPzogc3RyaW5nIHwgRXJyb3IpOiBuZXZlciB7XG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSBcInN0cmluZ1wiIHx8IG1lc3NhZ2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlID8/IFwiVW5kZWZpbmVkIGlzIG5vdCBhbGxvd2VkXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG1lc3NhZ2U7XG4gICAgfVxufVxuXG50eXBlIEFycmF5T2ZMZW5ndGg8VEl0ZW0sIFRMZW5ndGggZXh0ZW5kcyBudW1iZXIsIFRSZXN0IGV4dGVuZHMgVEl0ZW1bXSA9IFtdPiA9IFRSZXN0IGV4dGVuZHMgeyBsZW5ndGg6IFRMZW5ndGggfVxuICAgID8gVFJlc3RcbiAgICA6IEFycmF5T2ZMZW5ndGg8VEl0ZW0sIFRMZW5ndGgsIFtUSXRlbSwgLi4uVFJlc3RdPjtcblxuZXhwb3J0IHR5cGUgTWluTGVuZ3RoQXJyYXk8VEl0ZW0sIFRMZW5ndGggZXh0ZW5kcyBudW1iZXIsIFRSZXN0IGV4dGVuZHMgVEl0ZW1bXSA9IFtdPiA9IFRSZXN0IGV4dGVuZHMge1xuICAgIGxlbmd0aDogVExlbmd0aDtcbn1cbiAgICA/IFsuLi5UUmVzdCwgLi4uVEl0ZW1bXV1cbiAgICA6IE1pbkxlbmd0aEFycmF5PFRJdGVtLCBUTGVuZ3RoLCBbLi4uVFJlc3QsIFRJdGVtXT47XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIG1pbkxlbmd0aDogVE51bVxuKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgVE51bT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPj0gbWluTGVuZ3RoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWluTGVuZ3RoT3JVbmRlZmluZWQ8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IFRbXSxcbiAgICBtaW5MZW5ndGg6IFROdW1cbik6IHVuZGVmaW5lZCB8IE1pbkxlbmd0aEFycmF5PFQsIFROdW0+IHtcbiAgICBpZiAoaXNMZW5ndGhHcmVhdGVyVGhlbk9yRXF1YWwoaXRlbXMsIG1pbkxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlIYXNMZW5ndGg8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IHJlYWRvbmx5IFRbXSxcbiAgICBsZW5ndGg6IFROdW1cbik6IGl0ZW1zIGlzIEFycmF5T2ZMZW5ndGg8VCwgVE51bT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPT09IGxlbmd0aDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5SXNOb3RFbXB0eTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgMT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlIYXNBdExlYXN0T25lSXRlbTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgMT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQXJyYXlJc05vdEVtcHR5PFQ+KGl0ZW1zOiByZWFkb25seSBUW10pOiBhc3NlcnRzIGl0ZW1zIGlzIE1pbkxlbmd0aEFycmF5PFQsIDE+IHtcbiAgICBpZiAoIWFycmF5SXNOb3RFbXB0eShpdGVtcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcnJheSBtdXN0IGJlIG5vdCBlbXB0eWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUFycmF5SGFzTGVuZ3RoPFQsIFROdW0gZXh0ZW5kcyBudW1iZXI+KFxuICAgIGl0ZW1zOiByZWFkb25seSBUW10sXG4gICAgbGVuZ3RoOiBUTnVtXG4pOiBhc3NlcnRzIGl0ZW1zIGlzIEFycmF5T2ZMZW5ndGg8VCwgVE51bT4ge1xuICAgIGlmICghYXJyYXlIYXNMZW5ndGgoaXRlbXMsIGxlbmd0aCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcnJheSBzaG91bGQgaGFzIGxlbmd0aCAke2xlbmd0aH1gKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVBcnJheUxlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIGxlbmd0aDogVE51bVxuKTogYXNzZXJ0cyBpdGVtcyBpcyBBcnJheU9mTGVuZ3RoPFQsIFROdW0+IHtcbiAgICBpZiAoIWlzTGVuZ3RoR3JlYXRlclRoZW5PckVxdWFsKGl0ZW1zLCBsZW5ndGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXJyYXkgbXVzdCBoYXZlIG1pbmltYWwgbGVuZ3RoICR7bGVuZ3RofWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5ldmVyKG5ldmVyQXJndW1lbnQ6IG5ldmVyKTogdm9pZCB7XG4gICAgLy8gbm9vcFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQW5kR2V0U3RyaW5nKG5ldmVyQXJndW1lbnQ6IG5ldmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7bmV2ZXJBcmd1bWVudH1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuQXN5bmNBY3Rpb24oYWN0aW9uOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogdm9pZCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlc1xuICAgIGFjdGlvbigpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JFbXB0eShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogaW5wdXQgaXMgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gaW5wdXQgPT0gdW5kZWZpbmVkIHx8IGlucHV0ID09PSBcIlwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb3ROdWxsT3JFbXB0eShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogaW5wdXQgaXMgc3RyaW5nIHtcbiAgICByZXR1cm4gIWlzTnVsbE9yRW1wdHkoaW5wdXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JXaGl0ZVNwYWNlKGlucHV0OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKTogaW5wdXQgaXMgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgcmV0dXJuIGlucHV0ID09IHVuZGVmaW5lZCB8fCBpbnB1dC50cmltKCkgPT09IFwiXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmltTGFzdFNsYXNoKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdXJsLnNsaWNlKC0xKSA9PT0gXCIvXCIgPyB1cmwuc2xpY2UoMCwgLTEpIDogdXJsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0SXM8VD4odmFsdWU6IFQpOiB2b2lkIHtcbiAgICAvLyBub29wXG59XG4iLCJ2YXIgZ2xvYmFsID1cbiAgKHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWxUaGlzKSB8fFxuICAodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnICYmIHNlbGYpIHx8XG4gICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWwpXG5cbnZhciBzdXBwb3J0ID0ge1xuICBzZWFyY2hQYXJhbXM6ICdVUkxTZWFyY2hQYXJhbXMnIGluIGdsb2JhbCxcbiAgaXRlcmFibGU6ICdTeW1ib2wnIGluIGdsb2JhbCAmJiAnaXRlcmF0b3InIGluIFN5bWJvbCxcbiAgYmxvYjpcbiAgICAnRmlsZVJlYWRlcicgaW4gZ2xvYmFsICYmXG4gICAgJ0Jsb2InIGluIGdsb2JhbCAmJlxuICAgIChmdW5jdGlvbigpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIG5ldyBCbG9iKClcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSkoKSxcbiAgZm9ybURhdGE6ICdGb3JtRGF0YScgaW4gZ2xvYmFsLFxuICBhcnJheUJ1ZmZlcjogJ0FycmF5QnVmZmVyJyBpbiBnbG9iYWxcbn1cblxuZnVuY3Rpb24gaXNEYXRhVmlldyhvYmopIHtcbiAgcmV0dXJuIG9iaiAmJiBEYXRhVmlldy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihvYmopXG59XG5cbmlmIChzdXBwb3J0LmFycmF5QnVmZmVyKSB7XG4gIHZhciB2aWV3Q2xhc3NlcyA9IFtcbiAgICAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBGbG9hdDY0QXJyYXldJ1xuICBdXG5cbiAgdmFyIGlzQXJyYXlCdWZmZXJWaWV3ID1cbiAgICBBcnJheUJ1ZmZlci5pc1ZpZXcgfHxcbiAgICBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgdmlld0NsYXNzZXMuaW5kZXhPZihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSkgPiAtMVxuICAgIH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplTmFtZShuYW1lKSB7XG4gIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICBuYW1lID0gU3RyaW5nKG5hbWUpXG4gIH1cbiAgaWYgKC9bXmEtejAtOVxcLSMkJSYnKisuXl9gfH4hXS9pLnRlc3QobmFtZSkgfHwgbmFtZSA9PT0gJycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGNoYXJhY3RlciBpbiBoZWFkZXIgZmllbGQgbmFtZTogXCInICsgbmFtZSArICdcIicpXG4gIH1cbiAgcmV0dXJuIG5hbWUudG9Mb3dlckNhc2UoKVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgIHZhbHVlID0gU3RyaW5nKHZhbHVlKVxuICB9XG4gIHJldHVybiB2YWx1ZVxufVxuXG4vLyBCdWlsZCBhIGRlc3RydWN0aXZlIGl0ZXJhdG9yIGZvciB0aGUgdmFsdWUgbGlzdFxuZnVuY3Rpb24gaXRlcmF0b3JGb3IoaXRlbXMpIHtcbiAgdmFyIGl0ZXJhdG9yID0ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHZhbHVlID0gaXRlbXMuc2hpZnQoKVxuICAgICAgcmV0dXJuIHtkb25lOiB2YWx1ZSA9PT0gdW5kZWZpbmVkLCB2YWx1ZTogdmFsdWV9XG4gICAgfVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcbiAgICBpdGVyYXRvcltTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gaXRlcmF0b3JcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaXRlcmF0b3Jcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEhlYWRlcnMoaGVhZGVycykge1xuICB0aGlzLm1hcCA9IHt9XG5cbiAgaWYgKGhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzKSB7XG4gICAgaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgICB0aGlzLmFwcGVuZChuYW1lLCB2YWx1ZSlcbiAgICB9LCB0aGlzKVxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaGVhZGVycykpIHtcbiAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICB0aGlzLmFwcGVuZChoZWFkZXJbMF0sIGhlYWRlclsxXSlcbiAgICB9LCB0aGlzKVxuICB9IGVsc2UgaWYgKGhlYWRlcnMpIHtcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhoZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIGhlYWRlcnNbbmFtZV0pXG4gICAgfSwgdGhpcylcbiAgfVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICBuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKVxuICB2YWx1ZSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxuICB2YXIgb2xkVmFsdWUgPSB0aGlzLm1hcFtuYW1lXVxuICB0aGlzLm1hcFtuYW1lXSA9IG9sZFZhbHVlID8gb2xkVmFsdWUgKyAnLCAnICsgdmFsdWUgOiB2YWx1ZVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBmdW5jdGlvbihuYW1lKSB7XG4gIGRlbGV0ZSB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihuYW1lKSB7XG4gIG5hbWUgPSBub3JtYWxpemVOYW1lKG5hbWUpXG4gIHJldHVybiB0aGlzLmhhcyhuYW1lKSA/IHRoaXMubWFwW25hbWVdIDogbnVsbFxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiB0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShub3JtYWxpemVOYW1lKG5hbWUpKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNBcmcpIHtcbiAgZm9yICh2YXIgbmFtZSBpbiB0aGlzLm1hcCkge1xuICAgIGlmICh0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB0aGlzLm1hcFtuYW1lXSwgbmFtZSwgdGhpcylcbiAgICB9XG4gIH1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUua2V5cyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICBpdGVtcy5wdXNoKG5hbWUpXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuSGVhZGVycy5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBpdGVtcyA9IFtdXG4gIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgIGl0ZW1zLnB1c2godmFsdWUpXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICBpdGVtcy5wdXNoKFtuYW1lLCB2YWx1ZV0pXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcbiAgSGVhZGVycy5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IEhlYWRlcnMucHJvdG90eXBlLmVudHJpZXNcbn1cblxuZnVuY3Rpb24gY29uc3VtZWQoYm9keSkge1xuICBpZiAoYm9keS5ib2R5VXNlZCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKSlcbiAgfVxuICBib2R5LmJvZHlVc2VkID0gdHJ1ZVxufVxuXG5mdW5jdGlvbiBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQpXG4gICAgfVxuICAgIHJlYWRlci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICByZWplY3QocmVhZGVyLmVycm9yKVxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2JBc0FycmF5QnVmZmVyKGJsb2IpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcbiAgdmFyIHByb21pc2UgPSBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKVxuICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoYmxvYilcbiAgcmV0dXJuIHByb21pc2Vcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2JBc1RleHQoYmxvYikge1xuICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxuICB2YXIgcHJvbWlzZSA9IGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpXG4gIHJlYWRlci5yZWFkQXNUZXh0KGJsb2IpXG4gIHJldHVybiBwcm9taXNlXG59XG5cbmZ1bmN0aW9uIHJlYWRBcnJheUJ1ZmZlckFzVGV4dChidWYpIHtcbiAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYpXG4gIHZhciBjaGFycyA9IG5ldyBBcnJheSh2aWV3Lmxlbmd0aClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHZpZXcubGVuZ3RoOyBpKyspIHtcbiAgICBjaGFyc1tpXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUodmlld1tpXSlcbiAgfVxuICByZXR1cm4gY2hhcnMuam9pbignJylcbn1cblxuZnVuY3Rpb24gYnVmZmVyQ2xvbmUoYnVmKSB7XG4gIGlmIChidWYuc2xpY2UpIHtcbiAgICByZXR1cm4gYnVmLnNsaWNlKDApXG4gIH0gZWxzZSB7XG4gICAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYuYnl0ZUxlbmd0aClcbiAgICB2aWV3LnNldChuZXcgVWludDhBcnJheShidWYpKVxuICAgIHJldHVybiB2aWV3LmJ1ZmZlclxuICB9XG59XG5cbmZ1bmN0aW9uIEJvZHkoKSB7XG4gIHRoaXMuYm9keVVzZWQgPSBmYWxzZVxuXG4gIHRoaXMuX2luaXRCb2R5ID0gZnVuY3Rpb24oYm9keSkge1xuICAgIC8qXG4gICAgICBmZXRjaC1tb2NrIHdyYXBzIHRoZSBSZXNwb25zZSBvYmplY3QgaW4gYW4gRVM2IFByb3h5IHRvXG4gICAgICBwcm92aWRlIHVzZWZ1bCB0ZXN0IGhhcm5lc3MgZmVhdHVyZXMgc3VjaCBhcyBmbHVzaC4gSG93ZXZlciwgb25cbiAgICAgIEVTNSBicm93c2VycyB3aXRob3V0IGZldGNoIG9yIFByb3h5IHN1cHBvcnQgcG9sbHlmaWxscyBtdXN0IGJlIHVzZWQ7XG4gICAgICB0aGUgcHJveHktcG9sbHlmaWxsIGlzIHVuYWJsZSB0byBwcm94eSBhbiBhdHRyaWJ1dGUgdW5sZXNzIGl0IGV4aXN0c1xuICAgICAgb24gdGhlIG9iamVjdCBiZWZvcmUgdGhlIFByb3h5IGlzIGNyZWF0ZWQuIFRoaXMgY2hhbmdlIGVuc3VyZXNcbiAgICAgIFJlc3BvbnNlLmJvZHlVc2VkIGV4aXN0cyBvbiB0aGUgaW5zdGFuY2UsIHdoaWxlIG1haW50YWluaW5nIHRoZVxuICAgICAgc2VtYW50aWMgb2Ygc2V0dGluZyBSZXF1ZXN0LmJvZHlVc2VkIGluIHRoZSBjb25zdHJ1Y3RvciBiZWZvcmVcbiAgICAgIF9pbml0Qm9keSBpcyBjYWxsZWQuXG4gICAgKi9cbiAgICB0aGlzLmJvZHlVc2VkID0gdGhpcy5ib2R5VXNlZFxuICAgIHRoaXMuX2JvZHlJbml0ID0gYm9keVxuICAgIGlmICghYm9keSkge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSAnJ1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYmxvYiAmJiBCbG9iLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5QmxvYiA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuZm9ybURhdGEgJiYgRm9ybURhdGEucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlGb3JtRGF0YSA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuc2VhcmNoUGFyYW1zICYmIFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5LnRvU3RyaW5nKClcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIgJiYgc3VwcG9ydC5ibG9iICYmIGlzRGF0YVZpZXcoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlciA9IGJ1ZmZlckNsb25lKGJvZHkuYnVmZmVyKVxuICAgICAgLy8gSUUgMTAtMTEgY2FuJ3QgaGFuZGxlIGEgRGF0YVZpZXcgYm9keS5cbiAgICAgIHRoaXMuX2JvZHlJbml0ID0gbmV3IEJsb2IoW3RoaXMuX2JvZHlBcnJheUJ1ZmZlcl0pXG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmFycmF5QnVmZmVyICYmIChBcnJheUJ1ZmZlci5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSB8fCBpc0FycmF5QnVmZmVyVmlldyhib2R5KSkpIHtcbiAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlciA9IGJ1ZmZlckNsb25lKGJvZHkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keSA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChib2R5KVxuICAgIH1cblxuICAgIGlmICghdGhpcy5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJykpIHtcbiAgICAgIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ3RleHQvcGxhaW47Y2hhcnNldD1VVEYtOCcpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlCbG9iICYmIHRoaXMuX2JvZHlCbG9iLnR5cGUpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgdGhpcy5fYm9keUJsb2IudHlwZSlcbiAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCcpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuYmxvYikge1xuICAgIHRoaXMuYmxvYiA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHJlamVjdGVkID0gY29uc3VtZWQodGhpcylcbiAgICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgICByZXR1cm4gcmVqZWN0ZWRcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX2JvZHlCbG9iKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUJsb2IpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0aGlzLl9ib2R5QXJyYXlCdWZmZXJdKSlcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyBibG9iJylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlUZXh0XSkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5hcnJheUJ1ZmZlciA9IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgICB2YXIgaXNDb25zdW1lZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgICAgIGlmIChpc0NvbnN1bWVkKSB7XG4gICAgICAgICAgcmV0dXJuIGlzQ29uc3VtZWRcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikpIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ1ZmZlci5zbGljZShcbiAgICAgICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVPZmZzZXQsXG4gICAgICAgICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlT2Zmc2V0ICsgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVMZW5ndGhcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJsb2IoKS50aGVuKHJlYWRCbG9iQXNBcnJheUJ1ZmZlcilcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0aGlzLnRleHQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgcmV0dXJuIHJlamVjdGVkXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2JvZHlCbG9iKSB7XG4gICAgICByZXR1cm4gcmVhZEJsb2JBc1RleHQodGhpcy5fYm9keUJsb2IpXG4gICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVhZEFycmF5QnVmZmVyQXNUZXh0KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikpXG4gICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5Rm9ybURhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyB0ZXh0JylcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5VGV4dClcbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydC5mb3JtRGF0YSkge1xuICAgIHRoaXMuZm9ybURhdGEgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRleHQoKS50aGVuKGRlY29kZSlcbiAgICB9XG4gIH1cblxuICB0aGlzLmpzb24gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50ZXh0KCkudGhlbihKU09OLnBhcnNlKVxuICB9XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuLy8gSFRUUCBtZXRob2RzIHdob3NlIGNhcGl0YWxpemF0aW9uIHNob3VsZCBiZSBub3JtYWxpemVkXG52YXIgbWV0aG9kcyA9IFsnREVMRVRFJywgJ0dFVCcsICdIRUFEJywgJ09QVElPTlMnLCAnUE9TVCcsICdQVVQnXVxuXG5mdW5jdGlvbiBub3JtYWxpemVNZXRob2QobWV0aG9kKSB7XG4gIHZhciB1cGNhc2VkID0gbWV0aG9kLnRvVXBwZXJDYXNlKClcbiAgcmV0dXJuIG1ldGhvZHMuaW5kZXhPZih1cGNhc2VkKSA+IC0xID8gdXBjYXNlZCA6IG1ldGhvZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVxdWVzdChpbnB1dCwgb3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVxdWVzdCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQbGVhc2UgdXNlIHRoZSBcIm5ld1wiIG9wZXJhdG9yLCB0aGlzIERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLicpXG4gIH1cblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fVxuICB2YXIgYm9keSA9IG9wdGlvbnMuYm9keVxuXG4gIGlmIChpbnB1dCBpbnN0YW5jZW9mIFJlcXVlc3QpIHtcbiAgICBpZiAoaW5wdXQuYm9keVVzZWQpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FscmVhZHkgcmVhZCcpXG4gICAgfVxuICAgIHRoaXMudXJsID0gaW5wdXQudXJsXG4gICAgdGhpcy5jcmVkZW50aWFscyA9IGlucHV0LmNyZWRlbnRpYWxzXG4gICAgaWYgKCFvcHRpb25zLmhlYWRlcnMpIHtcbiAgICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKGlucHV0LmhlYWRlcnMpXG4gICAgfVxuICAgIHRoaXMubWV0aG9kID0gaW5wdXQubWV0aG9kXG4gICAgdGhpcy5tb2RlID0gaW5wdXQubW9kZVxuICAgIHRoaXMuc2lnbmFsID0gaW5wdXQuc2lnbmFsXG4gICAgaWYgKCFib2R5ICYmIGlucHV0Ll9ib2R5SW5pdCAhPSBudWxsKSB7XG4gICAgICBib2R5ID0gaW5wdXQuX2JvZHlJbml0XG4gICAgICBpbnB1dC5ib2R5VXNlZCA9IHRydWVcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhpcy51cmwgPSBTdHJpbmcoaW5wdXQpXG4gIH1cblxuICB0aGlzLmNyZWRlbnRpYWxzID0gb3B0aW9ucy5jcmVkZW50aWFscyB8fCB0aGlzLmNyZWRlbnRpYWxzIHx8ICdzYW1lLW9yaWdpbidcbiAgaWYgKG9wdGlvbnMuaGVhZGVycyB8fCAhdGhpcy5oZWFkZXJzKSB7XG4gICAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICB9XG4gIHRoaXMubWV0aG9kID0gbm9ybWFsaXplTWV0aG9kKG9wdGlvbnMubWV0aG9kIHx8IHRoaXMubWV0aG9kIHx8ICdHRVQnKVxuICB0aGlzLm1vZGUgPSBvcHRpb25zLm1vZGUgfHwgdGhpcy5tb2RlIHx8IG51bGxcbiAgdGhpcy5zaWduYWwgPSBvcHRpb25zLnNpZ25hbCB8fCB0aGlzLnNpZ25hbFxuICB0aGlzLnJlZmVycmVyID0gbnVsbFxuXG4gIGlmICgodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpICYmIGJvZHkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCb2R5IG5vdCBhbGxvd2VkIGZvciBHRVQgb3IgSEVBRCByZXF1ZXN0cycpXG4gIH1cbiAgdGhpcy5faW5pdEJvZHkoYm9keSlcblxuICBpZiAodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpIHtcbiAgICBpZiAob3B0aW9ucy5jYWNoZSA9PT0gJ25vLXN0b3JlJyB8fCBvcHRpb25zLmNhY2hlID09PSAnbm8tY2FjaGUnKSB7XG4gICAgICAvLyBTZWFyY2ggZm9yIGEgJ18nIHBhcmFtZXRlciBpbiB0aGUgcXVlcnkgc3RyaW5nXG4gICAgICB2YXIgcmVQYXJhbVNlYXJjaCA9IC8oWz8mXSlfPVteJl0qL1xuICAgICAgaWYgKHJlUGFyYW1TZWFyY2gudGVzdCh0aGlzLnVybCkpIHtcbiAgICAgICAgLy8gSWYgaXQgYWxyZWFkeSBleGlzdHMgdGhlbiBzZXQgdGhlIHZhbHVlIHdpdGggdGhlIGN1cnJlbnQgdGltZVxuICAgICAgICB0aGlzLnVybCA9IHRoaXMudXJsLnJlcGxhY2UocmVQYXJhbVNlYXJjaCwgJyQxXz0nICsgbmV3IERhdGUoKS5nZXRUaW1lKCkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPdGhlcndpc2UgYWRkIGEgbmV3ICdfJyBwYXJhbWV0ZXIgdG8gdGhlIGVuZCB3aXRoIHRoZSBjdXJyZW50IHRpbWVcbiAgICAgICAgdmFyIHJlUXVlcnlTdHJpbmcgPSAvXFw/L1xuICAgICAgICB0aGlzLnVybCArPSAocmVRdWVyeVN0cmluZy50ZXN0KHRoaXMudXJsKSA/ICcmJyA6ICc/JykgKyAnXz0nICsgbmV3IERhdGUoKS5nZXRUaW1lKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBSZXF1ZXN0KHRoaXMsIHtib2R5OiB0aGlzLl9ib2R5SW5pdH0pXG59XG5cbmZ1bmN0aW9uIGRlY29kZShib2R5KSB7XG4gIHZhciBmb3JtID0gbmV3IEZvcm1EYXRhKClcbiAgYm9keVxuICAgIC50cmltKClcbiAgICAuc3BsaXQoJyYnKVxuICAgIC5mb3JFYWNoKGZ1bmN0aW9uKGJ5dGVzKSB7XG4gICAgICBpZiAoYnl0ZXMpIHtcbiAgICAgICAgdmFyIHNwbGl0ID0gYnl0ZXMuc3BsaXQoJz0nKVxuICAgICAgICB2YXIgbmFtZSA9IHNwbGl0LnNoaWZ0KCkucmVwbGFjZSgvXFwrL2csICcgJylcbiAgICAgICAgdmFyIHZhbHVlID0gc3BsaXQuam9pbignPScpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG4gICAgICAgIGZvcm0uYXBwZW5kKGRlY29kZVVSSUNvbXBvbmVudChuYW1lKSwgZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKSlcbiAgICAgIH1cbiAgICB9KVxuICByZXR1cm4gZm9ybVxufVxuXG5mdW5jdGlvbiBwYXJzZUhlYWRlcnMocmF3SGVhZGVycykge1xuICB2YXIgaGVhZGVycyA9IG5ldyBIZWFkZXJzKClcbiAgLy8gUmVwbGFjZSBpbnN0YW5jZXMgb2YgXFxyXFxuIGFuZCBcXG4gZm9sbG93ZWQgYnkgYXQgbGVhc3Qgb25lIHNwYWNlIG9yIGhvcml6b250YWwgdGFiIHdpdGggYSBzcGFjZVxuICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMlxuICB2YXIgcHJlUHJvY2Vzc2VkSGVhZGVycyA9IHJhd0hlYWRlcnMucmVwbGFjZSgvXFxyP1xcbltcXHQgXSsvZywgJyAnKVxuICAvLyBBdm9pZGluZyBzcGxpdCB2aWEgcmVnZXggdG8gd29yayBhcm91bmQgYSBjb21tb24gSUUxMSBidWcgd2l0aCB0aGUgY29yZS1qcyAzLjYuMCByZWdleCBwb2x5ZmlsbFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ2l0aHViL2ZldGNoL2lzc3Vlcy83NDhcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzc1MVxuICBwcmVQcm9jZXNzZWRIZWFkZXJzXG4gICAgLnNwbGl0KCdcXHInKVxuICAgIC5tYXAoZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICByZXR1cm4gaGVhZGVyLmluZGV4T2YoJ1xcbicpID09PSAwID8gaGVhZGVyLnN1YnN0cigxLCBoZWFkZXIubGVuZ3RoKSA6IGhlYWRlclxuICAgIH0pXG4gICAgLmZvckVhY2goZnVuY3Rpb24obGluZSkge1xuICAgICAgdmFyIHBhcnRzID0gbGluZS5zcGxpdCgnOicpXG4gICAgICB2YXIga2V5ID0gcGFydHMuc2hpZnQoKS50cmltKClcbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gcGFydHMuam9pbignOicpLnRyaW0oKVxuICAgICAgICBoZWFkZXJzLmFwcGVuZChrZXksIHZhbHVlKVxuICAgICAgfVxuICAgIH0pXG4gIHJldHVybiBoZWFkZXJzXG59XG5cbkJvZHkuY2FsbChSZXF1ZXN0LnByb3RvdHlwZSlcblxuZXhwb3J0IGZ1bmN0aW9uIFJlc3BvbnNlKGJvZHlJbml0LCBvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZXNwb25zZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQbGVhc2UgdXNlIHRoZSBcIm5ld1wiIG9wZXJhdG9yLCB0aGlzIERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLicpXG4gIH1cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9XG4gIH1cblxuICB0aGlzLnR5cGUgPSAnZGVmYXVsdCdcbiAgdGhpcy5zdGF0dXMgPSBvcHRpb25zLnN0YXR1cyA9PT0gdW5kZWZpbmVkID8gMjAwIDogb3B0aW9ucy5zdGF0dXNcbiAgdGhpcy5vayA9IHRoaXMuc3RhdHVzID49IDIwMCAmJiB0aGlzLnN0YXR1cyA8IDMwMFxuICB0aGlzLnN0YXR1c1RleHQgPSBvcHRpb25zLnN0YXR1c1RleHQgPT09IHVuZGVmaW5lZCA/ICcnIDogJycgKyBvcHRpb25zLnN0YXR1c1RleHRcbiAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICB0aGlzLnVybCA9IG9wdGlvbnMudXJsIHx8ICcnXG4gIHRoaXMuX2luaXRCb2R5KGJvZHlJbml0KVxufVxuXG5Cb2R5LmNhbGwoUmVzcG9uc2UucHJvdG90eXBlKVxuXG5SZXNwb25zZS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBSZXNwb25zZSh0aGlzLl9ib2R5SW5pdCwge1xuICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgc3RhdHVzVGV4dDogdGhpcy5zdGF0dXNUZXh0LFxuICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHRoaXMuaGVhZGVycyksXG4gICAgdXJsOiB0aGlzLnVybFxuICB9KVxufVxuXG5SZXNwb25zZS5lcnJvciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogMCwgc3RhdHVzVGV4dDogJyd9KVxuICByZXNwb25zZS50eXBlID0gJ2Vycm9yJ1xuICByZXR1cm4gcmVzcG9uc2Vcbn1cblxudmFyIHJlZGlyZWN0U3RhdHVzZXMgPSBbMzAxLCAzMDIsIDMwMywgMzA3LCAzMDhdXG5cblJlc3BvbnNlLnJlZGlyZWN0ID0gZnVuY3Rpb24odXJsLCBzdGF0dXMpIHtcbiAgaWYgKHJlZGlyZWN0U3RhdHVzZXMuaW5kZXhPZihzdGF0dXMpID09PSAtMSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHN0YXR1cyBjb2RlJylcbiAgfVxuXG4gIHJldHVybiBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogc3RhdHVzLCBoZWFkZXJzOiB7bG9jYXRpb246IHVybH19KVxufVxuXG5leHBvcnQgdmFyIERPTUV4Y2VwdGlvbiA9IGdsb2JhbC5ET01FeGNlcHRpb25cbnRyeSB7XG4gIG5ldyBET01FeGNlcHRpb24oKVxufSBjYXRjaCAoZXJyKSB7XG4gIERPTUV4Y2VwdGlvbiA9IGZ1bmN0aW9uKG1lc3NhZ2UsIG5hbWUpIHtcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlXG4gICAgdGhpcy5uYW1lID0gbmFtZVxuICAgIHZhciBlcnJvciA9IEVycm9yKG1lc3NhZ2UpXG4gICAgdGhpcy5zdGFjayA9IGVycm9yLnN0YWNrXG4gIH1cbiAgRE9NRXhjZXB0aW9uLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKVxuICBET01FeGNlcHRpb24ucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gRE9NRXhjZXB0aW9uXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmZXRjaChpbnB1dCwgaW5pdCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVxdWVzdChpbnB1dCwgaW5pdClcblxuICAgIGlmIChyZXF1ZXN0LnNpZ25hbCAmJiByZXF1ZXN0LnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm4gcmVqZWN0KG5ldyBET01FeGNlcHRpb24oJ0Fib3J0ZWQnLCAnQWJvcnRFcnJvcicpKVxuICAgIH1cblxuICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKVxuXG4gICAgZnVuY3Rpb24gYWJvcnRYaHIoKSB7XG4gICAgICB4aHIuYWJvcnQoKVxuICAgIH1cblxuICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBvcHRpb25zID0ge1xuICAgICAgICBzdGF0dXM6IHhoci5zdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQ6IHhoci5zdGF0dXNUZXh0LFxuICAgICAgICBoZWFkZXJzOiBwYXJzZUhlYWRlcnMoeGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpIHx8ICcnKVxuICAgICAgfVxuICAgICAgb3B0aW9ucy51cmwgPSAncmVzcG9uc2VVUkwnIGluIHhociA/IHhoci5yZXNwb25zZVVSTCA6IG9wdGlvbnMuaGVhZGVycy5nZXQoJ1gtUmVxdWVzdC1VUkwnKVxuICAgICAgdmFyIGJvZHkgPSAncmVzcG9uc2UnIGluIHhociA/IHhoci5yZXNwb25zZSA6IHhoci5yZXNwb25zZVRleHRcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlc29sdmUobmV3IFJlc3BvbnNlKGJvZHksIG9wdGlvbnMpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICB4aHIub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCBmYWlsZWQnKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9udGltZW91dCA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCBmYWlsZWQnKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9uYWJvcnQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgRE9NRXhjZXB0aW9uKCdBYm9ydGVkJywgJ0Fib3J0RXJyb3InKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZml4VXJsKHVybCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHVybCA9PT0gJycgJiYgZ2xvYmFsLmxvY2F0aW9uLmhyZWYgPyBnbG9iYWwubG9jYXRpb24uaHJlZiA6IHVybFxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9XG4gICAgfVxuXG4gICAgeGhyLm9wZW4ocmVxdWVzdC5tZXRob2QsIGZpeFVybChyZXF1ZXN0LnVybCksIHRydWUpXG5cbiAgICBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ2luY2x1ZGUnKSB7XG4gICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gdHJ1ZVxuICAgIH0gZWxzZSBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ29taXQnKSB7XG4gICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoJ3Jlc3BvbnNlVHlwZScgaW4geGhyKSB7XG4gICAgICBpZiAoc3VwcG9ydC5ibG9iKSB7XG4gICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYmxvYidcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHN1cHBvcnQuYXJyYXlCdWZmZXIgJiZcbiAgICAgICAgcmVxdWVzdC5oZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJykgJiZcbiAgICAgICAgcmVxdWVzdC5oZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJykuaW5kZXhPZignYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJykgIT09IC0xXG4gICAgICApIHtcbiAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdhcnJheWJ1ZmZlcidcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaW5pdCAmJiB0eXBlb2YgaW5pdC5oZWFkZXJzID09PSAnb2JqZWN0JyAmJiAhKGluaXQuaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMpKSB7XG4gICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhpbml0LmhlYWRlcnMpLmZvckVhY2goZnVuY3Rpb24obmFtZSkge1xuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihuYW1lLCBub3JtYWxpemVWYWx1ZShpbml0LmhlYWRlcnNbbmFtZV0pKVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxdWVzdC5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgdmFsdWUpXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChyZXF1ZXN0LnNpZ25hbCkge1xuICAgICAgcmVxdWVzdC5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydFhocilcblxuICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAvLyBET05FIChzdWNjZXNzIG9yIGZhaWx1cmUpXG4gICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gNCkge1xuICAgICAgICAgIHJlcXVlc3Quc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgYWJvcnRYaHIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB4aHIuc2VuZCh0eXBlb2YgcmVxdWVzdC5fYm9keUluaXQgPT09ICd1bmRlZmluZWQnID8gbnVsbCA6IHJlcXVlc3QuX2JvZHlJbml0KVxuICB9KVxufVxuXG5mZXRjaC5wb2x5ZmlsbCA9IHRydWVcblxuaWYgKCFnbG9iYWwuZmV0Y2gpIHtcbiAgZ2xvYmFsLmZldGNoID0gZmV0Y2hcbiAgZ2xvYmFsLkhlYWRlcnMgPSBIZWFkZXJzXG4gIGdsb2JhbC5SZXF1ZXN0ID0gUmVxdWVzdFxuICBnbG9iYWwuUmVzcG9uc2UgPSBSZXNwb25zZVxufVxuIiwiLyogdHNsaW50OmRpc2FibGU6bm8tbnVsbC1rZXl3b3JkIG5vLWFueSBuby11bnNhZmUtYW55ICovXG5pbXBvcnQgeyBmZXRjaCB9IGZyb20gXCJ3aGF0d2ctZmV0Y2hcIjtcbmltcG9ydCB7IEFsbEljb25OYW1lcyB9IGZyb20gXCJyZWFjdC11aVwiO1xuXG5pbXBvcnQgeyBFcnJvckZpcnN0Q2FsbGJhY2ssIHJlamVjdCB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vVHlwaW5nVXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgSUZvcm0gfSBmcm9tIFwiLi4vLi4vRW5naW5lL0Zvcm0vSUZvcm1cIjtcbmltcG9ydCB7IExvYWRJbnRvRG9jdW1lbnQgfSBmcm9tIFwiLi4vLi4vSGVscGVycy9Mb2FkSW50b0RvY3VtZW50XCI7XG5pbXBvcnQgdHlwZSB7IElQdWJsaWNGb3JtIH0gZnJvbSBcIi4uL1B1YmxpY0Zvcm0vSVB1YmxpY0Zvcm1cIjtcbmltcG9ydCB0eXBlIHsgSUtlV2ViVGVtcGxhdGVzQXBpQ2xpZW50IH0gZnJvbSBcIi4uL1R5cGVzL0lLZVdlYlRlbXBsYXRlc0FwaUNsaWVudFwiO1xuaW1wb3J0IHR5cGUgeyBDbGllbnREcmFmdEluZm9SZXNwb25zZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvQ2xpZW50RHJhZnRJbmZvL0NsaWVudERyYWZ0SW5mb1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBnZXRDbGllbnREcmFmdEluZm9VcmwgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L0NsaWVudERyYWZ0SW5mby9HZXRDbGllbnREcmFmdEluZm9VcmxcIjtcbmltcG9ydCB7IEFVT09wdGlvbnMgfSBmcm9tIFwiLi4vVHlwZXMvQVVPT3B0aW9uc1wiO1xuaW1wb3J0IHR5cGUgeyBMYXlvdXRFdmVudHNTdGF0aWMgfSBmcm9tIFwiLi4vLi4vQ29udHJvbHMvSW50ZXJuYWxzL0xheW91dEV2ZW50cy9MYXlvdXRFdmVudHNcIjtcblxuaW1wb3J0IHsgY2xpZW50U2V0dGluZ3MgfSBmcm9tIFwiLi9DbGllbnRTZXR0aW5nc1wiO1xuaW1wb3J0IHsgY3JlYXRlTGVnYWN5UHVibGljRm9ybSB9IGZyb20gXCIuL0xlZ2FjeVB1YmxpY0Zvcm0vQ3JlYXRlTGVnYWN5UHVibGljRm9ybVwiO1xuXG50eXBlIEZvcm1Db250YWluZXIgPSBzdHJpbmcgfCBIVE1MRWxlbWVudDtcblxudHlwZSBFbmdpbmVFbnRyeVBvaW50ID0gKCkgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25EZXNjcmlwdGlvbiB7XG4gICAgaWNvbjogQWxsSWNvbk5hbWVzO1xuICAgIHRleHQ/OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKTtcbiAgICBvbkNsaWNrOiAoKSA9PiB2b2lkO1xuICAgIGhpbnQ/OiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gICAgaWQ6IHN0cmluZztcbiAgICB0aWQ/OiBzdHJpbmc7XG4gICAgd2VpZ2h0OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBSZW5kZXJGb3JtU2V0dGluZ3Mge1xuICAgIGdmdjogc3RyaW5nO1xuICAgIGVuZ2luZVZlcnNpb24/OiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nO1xuICAgIHJlc291cmNlc1ZlcnNpb246IHN0cmluZztcbiAgICB0aGVtZT86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgcmVzb3VyY2Vab25lPzogc3RyaW5nO1xuICAgIHJlbmRlckZvcm06IHVuZGVmaW5lZCB8IEVuZ2luZUVudHJ5UG9pbnQ7XG4gICAgdGVtcGxhdGVzQXBpPzogSUtlV2ViVGVtcGxhdGVzQXBpQ2xpZW50O1xuICAgIHBhbmVsQWN0aW9ucz86IEFjdGlvbkRlc2NyaXB0aW9uW107XG59XG5cbnR5cGUgU3RhcnRGb3JtRnVuYyA9IChwYWdlQ29udGVudDogRm9ybUNvbnRhaW5lciwgZXh0ZW5kZWRTZXR0aW5nczogUmVuZGVyRm9ybVNldHRpbmdzKSA9PiBQcm9taXNlPElGb3JtPjtcblxuaW50ZXJmYWNlIENhbmR5R2xvYmFsSW5qZWN0ZWRWYXIge1xuICAgIHN0YXJ0OiAocGFnZUNvbnRlbnQ6IEZvcm1Db250YWluZXIsIG9wdGlvbnM6IFN0YXJ0Rm9ybU9wdGlvbnMsIGNhbGxiYWNrPzogRXJyb3JGaXJzdENhbGxiYWNrPElQdWJsaWNGb3JtPikgPT4gdm9pZDtcbiAgICBrZWZvcm1zVXJsPzogc3RyaW5nO1xuICAgIHBhcnRpYWxSZW5kZXJpbmdGb3JJRTg6IGJvb2xlYW47XG4gICAgZW50cnlQb2ludDogeyBba2V5OiBzdHJpbmddOiBTdGFydEZvcm1GdW5jIH07XG4gICAgbG9hZEVycm9yPzogdW5rbm93bjtcbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICAgIGludGVyZmFjZSBXaW5kb3cge1xuICAgICAgICBDRjogQ2FuZHlHbG9iYWxJbmplY3RlZFZhcjtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5hbWVzcGFjZVxuICAgIG5hbWVzcGFjZSBOb2RlSlMge1xuICAgICAgICBpbnRlcmZhY2UgR2xvYmFsIHtcbiAgICAgICAgICAgIENGOiBDYW5keUdsb2JhbEluamVjdGVkVmFyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5kZWNsYXJlIGNvbnN0IGdsb2JhbDogV2luZG93O1xuXG5mdW5jdGlvbiBkZWZhdWx0Q2FsbGJhY2soKTogdm9pZCB7XG4gICAgLyogZW1wdHkgKi9cbn1cblxuZnVuY3Rpb24gcGFyc2VCb29sKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBpZiAodmFsdWUgPT09IFwiZmFsc2VcIikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIEJvb2xlYW4odmFsdWUpO1xufVxuXG5mdW5jdGlvbiB1cmwocmVsYXRpdmVVcmw6IHN0cmluZyA9IFwiXCIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJhc2VVcmwgPSBnbG9iYWwuQ0Yua2Vmb3Jtc1VybCB8fCBcIlwiO1xuXG4gICAgcmV0dXJuIGAke2Jhc2VVcmx9LyR7cmVsYXRpdmVVcmx9YC5yZXBsYWNlKC8oW146XSlcXC97Mix9L2csIFwiJDEvXCIpO1xufVxuXG5mdW5jdGlvbiBidWlsZFVybChwYXRoOiBzdHJpbmcsIHBhcmFtczogeyBbcGFyYW1OYW1lOiBzdHJpbmddOiB1bmRlZmluZWQgfCBzdHJpbmcgfSk6IHN0cmluZyB7XG4gICAgaWYgKHBhcmFtcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cbiAgICBjb25zdCBxdWVyeVBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgcGFyYW1OYW1lIG9mIE9iamVjdC5rZXlzKHBhcmFtcykpIHtcbiAgICAgICAgY29uc3QgcGFyYW1WYWx1ZSA9IHBhcmFtc1twYXJhbU5hbWVdO1xuICAgICAgICBpZiAocGFyYW1WYWx1ZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFydHMucHVzaChgJHtwYXJhbU5hbWV9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtVmFsdWUpfWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChxdWVyeVBhcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICB9XG4gICAgcmV0dXJuIHBhdGggKyBcIj9cIiArIHF1ZXJ5UGFydHMuam9pbihcIiZcIik7XG59XG5cbmZ1bmN0aW9uIGlzQWxsb3dlZChkb21haW5zOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChgXig/OiR7ZG9tYWlucy5yZXBsYWNlKC9cXC4vZywgXCJcXFxcLlwiKS5yZXBsYWNlKC9cXCovZywgXCJbYS16MC05LS5fXStcIil9KSRgKS50ZXN0KFxuICAgICAgICBnbG9iYWwubG9jYXRpb24uaG9zdFxuICAgICk7XG59XG5cbmZ1bmN0aW9uIGdldFBhcmFtZXRlckJ5TmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAoXG4gICAgICAgIChnbG9iYWwubG9jYXRpb24uc2VhcmNoXG4gICAgICAgICAgICAudHJpbSgpXG4gICAgICAgICAgICAucmVwbGFjZSgvXihcXD98I3wmKS8sIFwiXCIpXG4gICAgICAgICAgICAuc3BsaXQoXCImXCIpXG4gICAgICAgICAgICAubWFwKHBhcmFtID0+IHBhcmFtLnJlcGxhY2UoL1xcKy9nLCBcIiBcIikuc3BsaXQoXCI9XCIpLm1hcChkZWNvZGVVUklDb21wb25lbnQpKVxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnRyaXBsZS1lcXVhbHNcbiAgICAgICAgICAgIC5maW5kKChba2V5XSkgPT4ga2V5ID09IG5hbWUpIHx8IFtdKVsxXVxuICAgICk7XG59XG5cbnR5cGUgVGFzayA9IChjYWxsYmFjazogKGVycm9yPzogRXJyb3IpID0+IHZvaWQpID0+IHZvaWQ7XG5cbmZ1bmN0aW9uIHJ1blBhcmFsbGVsKHRhc2tzOiBUYXNrW10sIGNhbGxiYWNrOiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCk6IHZvaWQge1xuICAgIGxldCBjb21wbGV0ZWQgPSAwO1xuXG4gICAgdGFza3MuZm9yRWFjaCh0YXNrID0+IHtcbiAgICAgICAgdGFzayhlcnJvciA9PiB7XG4gICAgICAgICAgICBpZiAoY29tcGxldGVkID09PSB0YXNrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb21wbGV0ZWQgPSB0YXNrcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29tcGxldGVkICs9IDE7XG4gICAgICAgICAgICBpZiAoY29tcGxldGVkID09PSB0YXNrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cblxuaW50ZXJmYWNlIFN0YXJ0Rm9ybVNldHRpbmcge1xuICAgIGdmdjogc3RyaW5nO1xuICAgIGVuZ2luZVZlcnNpb24/OiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nO1xuICAgIHJlc291cmNlWm9uZT86IHN0cmluZztcbiAgICByZXNvdXJjZXNWZXJzaW9uOiBzdHJpbmc7XG4gICAgdGhlbWU/OiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFbmdpbmVWZXJzaW9uR3JlYXRlclRoYW5PckVxdWFsKGxlZnQ6IHN0cmluZywgcmlnaHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGxlZnROdW1iZXJzID0gbGVmdFxuICAgICAgICAgICAgLnNwbGl0KFwiLlwiKVxuICAgICAgICAgICAgLnNsaWNlKDAsIDMpXG4gICAgICAgICAgICAubWFwKHggPT4gcGFyc2VJbnQoeCwgMTApKTtcbiAgICAgICAgY29uc3QgcmlnaHROdW1iZXJzID0gcmlnaHRcbiAgICAgICAgICAgIC5zcGxpdChcIi5cIilcbiAgICAgICAgICAgIC5zbGljZSgwLCAzKVxuICAgICAgICAgICAgLm1hcCh4ID0+IHBhcnNlSW50KHgsIDEwKSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAobGVmdE51bWJlcnNbMF0gPz8gMCkgPiAocmlnaHROdW1iZXJzWzBdID8/IDApIHx8XG4gICAgICAgICAgICAoKGxlZnROdW1iZXJzWzBdID8/IDApID09PSAocmlnaHROdW1iZXJzWzBdID8/IDApICYmXG4gICAgICAgICAgICAgICAgKChsZWZ0TnVtYmVyc1sxXSA/PyAwKSA+IChyaWdodE51bWJlcnNbMV0gPz8gMCkgfHxcbiAgICAgICAgICAgICAgICAgICAgKChsZWZ0TnVtYmVyc1sxXSA/PyAwKSA9PT0gKHJpZ2h0TnVtYmVyc1sxXSA/PyAwKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKGxlZnROdW1iZXJzWzJdID8/IDApID49IChyaWdodE51bWJlcnNbMl0gPz8gMCkpKSlcbiAgICAgICAgKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gbG9hZEZvcm0oc2V0dGluZ3M6IFN0YXJ0Rm9ybVNldHRpbmcsIGNhbGxiYWNrOiAoZXJyb3I/OiBudWxsIHwgdW5kZWZpbmVkIHwgRXJyb3IpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBjb25zdCB7IGdmdiwgZW5naW5lVmVyc2lvbiwgcmVzb3VyY2VzVmVyc2lvbiB9ID0gc2V0dGluZ3M7XG5cbiAgICBpZiAoZ2xvYmFsLkNGLmVudHJ5UG9pbnRbZ2Z2XSkge1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGlzTmVlZEVuZ2luZSA9IGVuZ2luZVZlcnNpb24gJiYgIWdsb2JhbFtlbmdpbmVWZXJzaW9uXTtcbiAgICBjb25zdCBub1N0eWxlc0ZvckdmdiA9IGZhbHNlOyAvLyBlbmdpbmVWZXJzaW9uICE9IHVuZGVmaW5lZCAmJiAoaXNFbmdpbmVWZXJzaW9uR3JlYXRlclRoYW5PckVxdWFsKGVuZ2luZVZlcnNpb24sIFwiNC4yMTQuMFwiKSB8fCBlbmdpbmVWZXJzaW9uID09PSBcImxvY2FsXCIpO1xuICAgIGNvbnN0IG5lZWRMb2FkU3R5bGVzRm9yR2Z2ID0gIW5vU3R5bGVzRm9yR2Z2O1xuICAgIGNvbnN0IG1pbiA9IGdldFBhcmFtZXRlckJ5TmFtZShcImRlYnVnXCIpID09PSBcInRydWVcIiA/IFwiXCIgOiBcIi5taW5cIjtcbiAgICBjb25zdCB0YXNrczogVGFza1tdID0gW107XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7IHY6IHJlc291cmNlc1ZlcnNpb24sIHJlc291cmNlWm9uZTogc2V0dGluZ3MucmVzb3VyY2Vab25lIH07XG4gICAgaWYgKG5lZWRMb2FkU3R5bGVzRm9yR2Z2KSB7XG4gICAgICAgIHRhc2tzLnB1c2goY2IgPT5cbiAgICAgICAgICAgIExvYWRJbnRvRG9jdW1lbnQuc3R5bGVTaGVldCh1cmwoYnVpbGRVcmwoYHN0YXRpYy9wdWJsaWMvc3R5bGVzLyR7Z2Z2fSR7bWlufS5jc3NgLCBwYXJhbXMpKSwgdHJ1ZSwgY2IpXG4gICAgICAgICk7XG4gICAgfVxuICAgIHRhc2tzLnB1c2goY2IgPT4gTG9hZEludG9Eb2N1bWVudC5zY3JpcHQodXJsKGJ1aWxkVXJsKGBzdGF0aWMvcHVibGljL3NjcmlwdHMvJHtnZnZ9JHttaW59LmpzYCwgcGFyYW1zKSksIGNiKSk7XG5cbiAgICBpZiAoaXNOZWVkRW5naW5lKSB7XG4gICAgICAgIHRhc2tzLnB1c2goXG4gICAgICAgICAgICBjYiA9PlxuICAgICAgICAgICAgICAgIExvYWRJbnRvRG9jdW1lbnQuc3R5bGVTaGVldChcbiAgICAgICAgICAgICAgICAgICAgdXJsKGJ1aWxkVXJsKGBzdGF0aWMvcHVibGljL3N0eWxlcy9jYW5keV8ke2VuZ2luZVZlcnNpb259JHttaW59LmNzc2AsIHBhcmFtcykpLFxuICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY2JcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgY2IgPT5cbiAgICAgICAgICAgICAgICBMb2FkSW50b0RvY3VtZW50LnNjcmlwdChcbiAgICAgICAgICAgICAgICAgICAgdXJsKGJ1aWxkVXJsKGBzdGF0aWMvcHVibGljL3NjcmlwdHMvY2FuZHlfJHtlbmdpbmVWZXJzaW9ufSR7bWlufS5qc2AsIHBhcmFtcykpLFxuICAgICAgICAgICAgICAgICAgICBjYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBydW5QYXJhbGxlbCh0YXNrcywgY2FsbGJhY2spO1xufVxuXG5mdW5jdGlvbiByZW5kZXJGb3JtKFxuICAgIHBhZ2VDb250ZW50OiBGb3JtQ29udGFpbmVyLFxuICAgIGV4dGVuZGVkU2V0dGluZ3M6IFJlbmRlckZvcm1TZXR0aW5ncyxcbiAgICBjYWxsYmFjazogRXJyb3JGaXJzdENhbGxiYWNrPElQdWJsaWNGb3JtPlxuKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUVudHJ5UG9pbnQgPVxuICAgICAgICBnbG9iYWwuQ0YuZW50cnlQb2ludFtleHRlbmRlZFNldHRpbmdzLmdmdl0gPz8gcmVqZWN0KGBGb3JtIGVudHJ5IHBvaW50ICR7ZXh0ZW5kZWRTZXR0aW5ncy5nZnZ9IG5vdCBmb3VuZC5gKTtcbiAgICBmb3JtRW50cnlQb2ludChwYWdlQ29udGVudCwgZXh0ZW5kZWRTZXR0aW5ncylcbiAgICAgICAgLnRoZW4oZm9ybSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwdWJsaWNGb3JtID0gZm9ybS5wdWJsaWNGb3JtIHx8IGNyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0oZm9ybSk7XG5cbiAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHB1YmxpY0Zvcm0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goY2FsbGJhY2spO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXJ0Rm9ybU9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPEFVT09wdGlvbnM+IHtcbiAgICBuczogc3RyaW5nO1xuICAgIGRyYWZ0SWQ6IHN0cmluZztcbiAgICBnZnY/OiBzdHJpbmc7XG4gICAgcmVzb3VyY2Vab25lPzogc3RyaW5nO1xuICAgIHRlbXBsYXRlc0FwaT86IElLZVdlYlRlbXBsYXRlc0FwaUNsaWVudDtcbiAgICBmZWVkYmFja0VuYWJsZWQ/OiBib29sZWFuO1xuICAgIGlzRGlzYWJsZWRDbG9zZUJ1dHRvbj86IGJvb2xlYW47XG4gICAgaXNEaXNhYmxlZENsb3NlQW5kU2F2ZUJ1dHRvbj86IGJvb2xlYW47XG4gICAgaXNEaXNhYmxlZENsZWFuRm9ybT86IGJvb2xlYW47XG4gICAgdGhlbWU/OiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nO1xuICAgIGF1dGhlbnRpY2F0aW9uPzogXCJicm93c2VyLWNyZWRlbnRpYWxzLWluY2x1ZGVcIiB8IHsgYXV0aFNpZDogc3RyaW5nIH07XG4gICAgZmV0Y2g/OiB0eXBlb2YgZmV0Y2g7XG4gICAgbW9kZWw/OiB7IFtwYXRoOiBzdHJpbmddOiB1bmtub3duIH07XG4gICAgcGFuZWxBY3Rpb25zPzogQWN0aW9uRGVzY3JpcHRpb25bXTtcbiAgICBldmVudEVtaXR0ZXI/OiBMYXlvdXRFdmVudHNTdGF0aWM7XG4gICAgZW1wbG95ZXJJZD86IHN0cmluZztcbiAgICBzaG93TmF2aWdhdGlvblNpZGViYXI/OiBib29sZWFuO1xuICAgIG9uUmVtb3ZlQXR0YWNobWVudD86ICgpID0+IHZvaWQ7XG59XG5cbmZ1bmN0aW9uIGdldEVuZ2luZUVudHJ5UG9pbnQoZW5naW5lVmVyc2lvbjogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZyk6IHVuZGVmaW5lZCB8IEVuZ2luZUVudHJ5UG9pbnQge1xuICAgIGlmIChlbmdpbmVWZXJzaW9uID09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICByZXR1cm4gZ2xvYmFsW2VuZ2luZVZlcnNpb25dICYmIGdsb2JhbFtlbmdpbmVWZXJzaW9uXS5kZWZhdWx0O1xufVxuXG5mdW5jdGlvbiBzdGFydChcbiAgICBwYWdlQ29udGVudDogRm9ybUNvbnRhaW5lcixcbiAgICBvcHRpb25zOiBTdGFydEZvcm1PcHRpb25zLFxuICAgIGNhbGxiYWNrOiBFcnJvckZpcnN0Q2FsbGJhY2s8SVB1YmxpY0Zvcm0+ID0gZGVmYXVsdENhbGxiYWNrXG4pOiB2b2lkIHtcbiAgICBsZXQgZXJyb3IgPSBudWxsO1xuICAgIGNvbnN0IHsgbnMsIGRyYWZ0SWQgfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAoIWlzQWxsb3dlZChjbGllbnRTZXR0aW5ncy5rb250dXJEb21haW5zKSkge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcImRvbWFpbi51bnRydXN0ZWRcIik7XG4gICAgfSBlbHNlIGlmICghY2xpZW50U2V0dGluZ3MuYXV0aG9yaXplZCkge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcInVzZXIudW5hdXRoZW50aWNhdGVkXCIpO1xuICAgIH0gZWxzZSBpZiAoIWRyYWZ0SWQpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXCJvcHRpb25zLmRyYWZ0SWQgaXMgcmVxdWlyZWRcIik7XG4gICAgfSBlbHNlIGlmICghbnMpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXCJvcHRpb25zLm5zIGlzIHJlcXVpcmVkXCIpO1xuICAgIH1cblxuICAgIGlmIChlcnJvcikge1xuICAgICAgICBjYWxsYmFjayhlcnJvcik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZXNvdXJjZVpvbmUgPSBvcHRpb25zLnJlc291cmNlWm9uZSA/PyBnZXRQYXJhbWV0ZXJCeU5hbWUoXCJyZXNvdXJjZVpvbmVcIik7XG4gICAgY29uc3QgY2xpZW50RHJhZnRVcmwgPSBidWlsZFVybCh1cmwoZ2V0Q2xpZW50RHJhZnRJbmZvVXJsKHsgbnM6IG5zLCBkcmFmdElkOiBkcmFmdElkIH0pKSwge1xuICAgICAgICByZXNvdXJjZVpvbmU6IHJlc291cmNlWm9uZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHsgbWV0aG9kOiBcIkdFVFwiIH07XG4gICAgaWYgKG9wdGlvbnMuYXV0aGVudGljYXRpb24gPT0gdW5kZWZpbmVkIHx8IG9wdGlvbnMuYXV0aGVudGljYXRpb24gPT09IFwiYnJvd3Nlci1jcmVkZW50aWFscy1pbmNsdWRlXCIpIHtcbiAgICAgICAgcmVxdWVzdE9wdGlvbnMuY3JlZGVudGlhbHMgPSBcImluY2x1ZGVcIjtcbiAgICB9IGVsc2UgaWYgKFwiYXV0aFNpZFwiIGluIG9wdGlvbnMuYXV0aGVudGljYXRpb24gJiYgb3B0aW9ucy5hdXRoZW50aWNhdGlvbi5hdXRoU2lkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5jcmVkZW50aWFscyA9IFwib21pdFwiO1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5oZWFkZXJzID0gcmVxdWVzdE9wdGlvbnMuaGVhZGVycyA/PyB7fTtcbiAgICAgICAgcmVxdWVzdE9wdGlvbnMuaGVhZGVyc1tcIkF1dGhvcml6YXRpb25cIl0gPSBgQVVUSC5TSUQgJHtvcHRpb25zLmF1dGhlbnRpY2F0aW9uLmF1dGhTaWR9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5jcmVkZW50aWFscyA9IFwib21pdFwiO1xuICAgIH1cbiAgICBjb25zdCBmZXRjaEltcGwgPSBvcHRpb25zLmZldGNoID8/IGZldGNoO1xuXG4gICAgZmV0Y2hJbXBsKGNsaWVudERyYWZ0VXJsLCByZXF1ZXN0T3B0aW9ucylcbiAgICAgICAgLnRoZW4oeCA9PiB4Lmpzb24oKSlcbiAgICAgICAgLnRoZW4oKGNsaWVudERyYWZ0SW5mbzogQ2xpZW50RHJhZnRJbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdmdiA9IGNsaWVudERyYWZ0SW5mby5nZnY7XG4gICAgICAgICAgICBjb25zdCBlbmdpbmVWZXJzaW9uID0gY2xpZW50RHJhZnRJbmZvLmVuZ2luZVZlcnNpb247XG4gICAgICAgICAgICBjb25zdCBleHRlbmRlZFNldHRpbmdzID0ge1xuICAgICAgICAgICAgICAgIGF1dGhvcml6ZWQ6IGNsaWVudFNldHRpbmdzLmF1dGhvcml6ZWQsXG4gICAgICAgICAgICAgICAgY2F1bGRyb25BcGlVcmw6IGNsaWVudFNldHRpbmdzLmNhdWxkcm9uQXBpVXJsLFxuICAgICAgICAgICAgICAgIGlzVGVzdFNlcnZlcjogY2xpZW50U2V0dGluZ3MuaXNUZXN0U2VydmVyLFxuICAgICAgICAgICAgICAgIHJlbmRlckNhY2hpbmdGb3JJRTg6IGNsaWVudFNldHRpbmdzLnJlbmRlckNhY2hpbmdGb3JJRTgsXG4gICAgICAgICAgICAgICAgbm9ybWFsaXphdGlvbk9uU2VydmVyOiBjbGllbnRTZXR0aW5ncy5ub3JtYWxpemF0aW9uT25TZXJ2ZXIsXG4gICAgICAgICAgICAgICAgbm9ybWF0aXZlVXJsOiBjbGllbnRTZXR0aW5ncy5ub3JtYXRpdmVVcmwsXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzVmVyc2lvbjogY2xpZW50U2V0dGluZ3MucmVzb3VyY2VzVmVyc2lvbixcbiAgICAgICAgICAgICAgICBrb250dXJEb21haW5zOiBjbGllbnRTZXR0aW5ncy5rb250dXJEb21haW5zLFxuICAgICAgICAgICAgICAgIHNob3dOYXZpZ2F0aW9uU2lkZWJhcjogb3B0aW9ucy5zaG93TmF2aWdhdGlvblNpZGViYXIgPz8gdHJ1ZSxcbiAgICAgICAgICAgICAgICBvblJlbW92ZUF0dGFjaG1lbnQ6IG9wdGlvbnMub25SZW1vdmVBdHRhY2htZW50LFxuICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgLi4uY2xpZW50RHJhZnRJbmZvLFxuICAgICAgICAgICAgICAgIGdmdjogZ2Z2LFxuICAgICAgICAgICAgICAgIGVuZ2luZVZlcnNpb246IGVuZ2luZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgZmVlZGJhY2tFbmFibGVkOiBvcHRpb25zLmZlZWRiYWNrRW5hYmxlZCA/PyBjbGllbnREcmFmdEluZm8uZmVlZGJhY2tFbmFibGVkLFxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWRDbGVhbkZvcm06IG9wdGlvbnMuaXNEaXNhYmxlZENsZWFuRm9ybSA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICBpc0Rpc2FibGVkQ2xvc2VCdXR0b246IG9wdGlvbnMuaXNEaXNhYmxlZENsb3NlQnV0dG9uID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWRDbG9zZUFuZFNhdmVCdXR0b246IG9wdGlvbnMuaXNEaXNhYmxlZENsb3NlQW5kU2F2ZUJ1dHRvbiA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZVpvbmU6IHJlc291cmNlWm9uZSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGxvYWRGb3JtKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBleHRlbmRlZFNldHRpbmdzLmdmdixcbiAgICAgICAgICAgICAgICAgICAgZW5naW5lVmVyc2lvbjogZXh0ZW5kZWRTZXR0aW5ncy5lbmdpbmVWZXJzaW9uLFxuICAgICAgICAgICAgICAgICAgICByZXNvdXJjZVpvbmU6IGV4dGVuZGVkU2V0dGluZ3MucmVzb3VyY2Vab25lLFxuICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNWZXJzaW9uOiBleHRlbmRlZFNldHRpbmdzLnJlc291cmNlc1ZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgIHRoZW1lOiBleHRlbmRlZFNldHRpbmdzLnRoZW1lLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbG9hZEVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvYWRFcnJvciB8fCAhZ2xvYmFsLkNGLmVudHJ5UG9pbnRbZ2Z2XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKGBkeW5hbWljIGxvYWRpbmcgaXMgbm90IHN1cHBvcnRlZCBmb3IgZ2Z2ICR7Z2Z2fWApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZW5kZXIgPSBnZXRFbmdpbmVFbnRyeVBvaW50KGVuZ2luZVZlcnNpb24pO1xuXG4gICAgICAgICAgICAgICAgICAgIHJlbmRlckZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlQ29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5leHRlbmRlZFNldHRpbmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlc0FwaTogb3B0aW9ucy50ZW1wbGF0ZXNBcGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyRm9ybTogcmVuZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGNhbGxiYWNrKTtcbn1cblxuY29uc3QgQ2FuZHlDbGllbnRFeHBvcnRzOiBDYW5keUdsb2JhbEluamVjdGVkVmFyID0ge1xuICAgIHN0YXJ0OiBzdGFydCxcbiAgICBlbnRyeVBvaW50OiB7fSxcbiAgICBwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4OiBwYXJzZUJvb2woXCJ7cGFydGlhbFJlbmRlcmluZ0ZvcklFOH1cIiksXG4gICAga2Vmb3Jtc1VybDogXCJ7a2Vmb3Jtc1VybH1cIixcbn07XG5cbmdsb2JhbC5DRiA9IENhbmR5Q2xpZW50RXhwb3J0cztcblxuZXhwb3J0IHsgQ2FuZHlDbGllbnRFeHBvcnRzIH07XG4iLCJmdW5jdGlvbiBwYXJzZUJvb2wodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCJmYWxzZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gQm9vbGVhbih2YWx1ZSk7XG59XG5cbmV4cG9ydCBjb25zdCBjbGllbnRTZXR0aW5ncyA9IHtcbiAgICBhdXRob3JpemVkOiBwYXJzZUJvb2woXCJ7YXV0aG9yaXplZH1cIiksXG4gICAgY2F1bGRyb25BcGlVcmw6IFwie2NhdWxkcm9uQXBpVXJsfVwiLFxuICAgIGlzVGVzdFNlcnZlcjogcGFyc2VCb29sKFwie2lzVGVzdFNlcnZlcn1cIiksXG4gICAgcmVuZGVyQ2FjaGluZ0ZvcklFODogcGFyc2VCb29sKFwie3JlbmRlckNhY2hpbmdGb3JJRTh9XCIpLFxuICAgIG5vcm1hbGl6YXRpb25PblNlcnZlcjogcGFyc2VCb29sKFwie25vcm1hbGl6YXRpb25PblNlcnZlcn1cIiksXG4gICAgbm9ybWF0aXZlVXJsOiBcIntub3JtYXRpdmVVcmx9XCIsXG4gICAgcmVzb3VyY2VzVmVyc2lvbjogXCJ7cmVzb3VyY2VzVmVyc2lvbn1cIixcbiAgICBrb250dXJEb21haW5zOiBcIntrb250dXJEb21haW5zfVwiLFxufTtcbiIsImltcG9ydCB7XG4gICAgRW1wbG95ZWUsXG4gICAgRW1wbG95ZWVMaXN0LFxuICAgIEdldEVtcGxveWVlTGlzdFJlcXVlc3QsXG4gICAgR2V0V29ya2luZ0V2ZW50TGlzdFJlcXVlc3QsXG4gICAgV29ya2luZ0V2ZW50TGlzdCxcbn0gZnJvbSBcIkBza2Jrb250dXIvc3RhZmYtc2VsZWN0b3Itd2lkZ2V0XCI7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwiRW5naW5lL3NyYy9FbmdpbmUvRm9ybS9Nb2RlbENoYW5nZUV2ZW50TGlzdGVuZXJcIjtcblxuaW1wb3J0IHsgTm90SW1wbGVtZW50ZWRFcnJvciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vRXJyb3JzXCI7XG5pbXBvcnQgdHlwZSB7IFN0ZXAgfSBmcm9tIFwiLi4vLi4vLi4vQ29udHJvbHMvRm9ybVBhcnRzL1RvdXIvVG91clR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFNlcnZlckVycm9yTG9nIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9UeXBlcy9FcnJvckxvZy9TZXJ2ZXJFcnJvckxvZ1wiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nUGF0aCwgTW9kZWxWYWx1ZSB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Db3JlVHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgRXh0ZXJuYWxIb29rRnVuY3Rpb24gfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvRXZlbnRNYW5hZ2VtZW50L0V4dGVybmFsRXZlbnRzL0V4dGVybmFsSG9va0Z1bmN0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IFJlYWRvbmx5TW9kZWxDaHVuayB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Nb2RlbFN0b3JpbmcvTW9kZWxDaHVua1wiO1xuaW1wb3J0IHR5cGUgeyBQaWNrbGlzdFF1ZXJ5UmVzcG9uc2UgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvUGlja2xpc3RzL1BpY2tsaXN0VHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgSUZvcm0gfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0Zvcm0vSUZvcm1cIjtcbmltcG9ydCB0eXBlIHsgSVB1YmxpY0Zvcm0gfSBmcm9tIFwiLi4vLi4vUHVibGljRm9ybS9JUHVibGljRm9ybVwiO1xuaW1wb3J0IHsgTW9kZWxFdmVudHNMaXN0ZW5lciB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9FdmVudE1hbmFnZW1lbnQvTW9kZWxFdmVudHMvTW9kZWxFdmVudFwiO1xuaW1wb3J0IHsgRGlnZXN0UXVlcnlGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L0RpZ2VzdEFwaUNsaWVudC9UeXBlcy9EaWdlc3RRdWVyeUZpbHRlclwiO1xuaW1wb3J0IHsgSVVwZGF0ZUZvcm1Nb2RlbEFjY2Vzc29yIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Gb3JtL0lGb3JtTW9kZWxBY2Nlc3NvclwiO1xuaW1wb3J0IHsgTW9kYWxPcHRpb25zIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL01vZGFsTWFuYWdlci9JTW9kYWxTdGF0ZVwiO1xuaW1wb3J0IHsgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vTW9kZWxQYXRoL01vZGVsUGF0aFwiO1xuaW1wb3J0IHsgQ2FsbEluaXRTZWN0aW9uTGlnaHRib3hQcm9wcywgSW5pdFNlY3Rpb25Gb3JtTGlnaHRib3hPcHRpb25zIH0gZnJvbSBcIi4uLy4uL1B1YmxpY0Zvcm0vSW5pdFNlY3Rpb25MaWdodGJveFwiO1xuaW1wb3J0IHsgTWFzc0FjdGlvblBhcmFtZXRlcnMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL01hc3NBY3Rpb25zL01hc3NBY3Rpb25QYXJhbWV0ZXJzXCI7XG5pbXBvcnQgeyBQcmludFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL1ByaW50L1ByaW50VHlwZVwiO1xuaW1wb3J0IHsgRmlhc0FwaSwgRmlhc0NsaWVudEluaXRPcHRpb25zIH0gZnJvbSBcIi4uLy4uLy4uL0NvbnRyb2xzL1ZhbHVlRWRpdG9ycy9GaWFzL0ZpYXNJbnB1dC9GaWFzQXBpXCI7XG5pbXBvcnQgeyBJbnN0YW5jZXNEZWxldGluZ1J1bGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL0luc3RhbmNlc0RlbGV0aW5nL0luc3RhbmNlc0RlbGV0aW5nUnVsZVwiO1xuaW1wb3J0IHsgQ29tYmluZUZ1ZlJlc3VsdCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvVHlwZXMvRHJhZnRBY3Rpb25zL0NvbWJpbmVGdWZSZXN1bHRcIjtcbmltcG9ydCB7IElDYW5keUNvbXBvbmVudEhhbmRsZSB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Db21wb25lbnRIYW5kbGVSZWdpc3RyeS9JQ2FuZHlDb21wb25lbnRIYW5kbGVcIjtcbmltcG9ydCB7IE5hdmlnYXRpb25QYXRoTWFwcGVyIH0gZnJvbSBcIi4uLy4uL0luamVjdGFibGVNb2R1bGVzL0luamVjdGFibGVFbmdpbmVNb2R1bGVzXCI7XG5pbXBvcnQgeyBJbXBvcnRFbXBsb3llckRvY3VtZW50c09wdGlvbnMgfSBmcm9tIFwiLi4vLi4vLi4vU3RhZmZTZXJ2aWNlSW50ZWdyYXRpb24vRW1wbG95ZWVTZXJ2aWNlVHlwZXNcIjtcbmltcG9ydCB7IFRhYkluZm9zU3RhdGUgfSBmcm9tIFwiLi4vLi4vLi4vQ29udHJvbHMvTXVsdGlDb250cm9scy9UYWJzL1N0b3JlL1RhYkluZm9zU3RhdGVcIjtcblxuaW1wb3J0IHsgSUxlZ2FjeUZvcm0gfSBmcm9tIFwiLi9JTGVnYWN5Rm9ybVwiO1xuXG5leHBvcnQgdHlwZSBNb2RlbEV2ZW50UGF0aCA9XG4gICAgfCBbXCJtb2RlbFwiLCBcImNoYW5nZVwiLCBzdHJpbmcsIHN0cmluZ11cbiAgICB8IFtcIm1vZGVsXCIsIFwicmVtb3ZlXCIsIHN0cmluZywgc3RyaW5nXVxuICAgIHwgW1wibW9kZWxcIiwgXCJjaGFuZ2VcIiwgc3RyaW5nXVxuICAgIHwgW1wibW9kZWxcIiwgXCJyZW1vdmVcIiwgc3RyaW5nXVxuICAgIHwgW1wibW9kZWxcIiwgXCJjaGFuZ2VcIl1cbiAgICB8IFtcIm1vZGVsXCIsIFwicmVtb3ZlXCJdO1xuXG5leHBvcnQgZnVuY3Rpb24gbW9kZWxDaGFuZ2VFdmVudFBhdGgocGF0aD86IHN0cmluZywgZmllbGROYW1lPzogc3RyaW5nKTogTW9kZWxFdmVudFBhdGgge1xuICAgIGlmIChmaWVsZE5hbWUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChwYXRoID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGF0aCBtdXN0IGJlIGRlZmluZWRcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtcIm1vZGVsXCIsIFwiY2hhbmdlXCIsIHBhdGgsIGZpZWxkTmFtZV07XG4gICAgfVxuICAgIGlmIChwYXRoICE9IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gW1wibW9kZWxcIiwgXCJjaGFuZ2VcIiwgcGF0aF07XG4gICAgfVxuICAgIHJldHVybiBbXCJtb2RlbFwiLCBcImNoYW5nZVwiXTtcbn1cblxuZnVuY3Rpb24gbWFwQ2h1bmtWYWx1ZXMoY2h1bms6IFJlYWRvbmx5TW9kZWxDaHVuayk6IEFycmF5PHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfT4ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhjaHVuaylcbiAgICAgICAgLmZpbHRlcihwYXRoID0+IGNodW5rW3BhdGhdICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjaHVua1twYXRoXSwgXCJ2YWx1ZVwiKSlcbiAgICAgICAgLm1hcChwYXRoID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGNodW5rW3BhdGhdO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geyBbcGF0aF06IHJlc3VsdC52YWx1ZSB9O1xuICAgICAgICB9KTtcbn1cblxuZnVuY3Rpb24gcmVkdWNlQ2h1bmtWYWx1ZXMoY2h1bmtzOiBBcnJheTx7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0+KTogeyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9IHtcbiAgICByZXR1cm4gY2h1bmtzLnJlZHVjZShcbiAgICAgICAgKHJlc3VsdCwgY2h1bmspID0+ICh7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICAuLi5jaHVuayxcbiAgICAgICAgfSksXG4gICAgICAgIHt9XG4gICAgKTtcbn1cblxuY2xhc3MgTGVnYWN5UHVibGljRm9ybSBpbXBsZW1lbnRzIElQdWJsaWNGb3JtIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm06IElMZWdhY3lGb3JtO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGZvcm06IElMZWdhY3lGb3JtKSB7XG4gICAgICAgIHRoaXMuZm9ybSA9IGZvcm07XG4gICAgfVxuXG4gICAgcHVibGljIG5hdmlnYXRlQnlIaWdobGFuZGVyUGF0aHMocGF0aHM6IHN0cmluZ1tdKTogUHJvbWlzZTxJQ2FuZHlDb21wb25lbnRIYW5kbGUgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE5hdmlnYXRpb25QYXRoTWFwcGVyKCk6IE5hdmlnYXRpb25QYXRoTWFwcGVyIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGJhdGNoVXBkYXRlKHVwZGF0ZVByb2M6ICh1cGRhdGVBY2Nlc3NvcjogSVVwZGF0ZUZvcm1Nb2RlbEFjY2Vzc29yKSA9PiB2b2lkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBydW5DaGVjaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEVycm9yTG9nKGVycm9yTG9nOiBQYXJ0aWFsPFNlcnZlckVycm9yTG9nPik6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgdmFsaWRhdGVDaGlsZHJlbkJ5UGF0aChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIF9fSU5URVJOQUxfX2ltcG9ydEZyb21FbXBsb3llZVNlcnZpY2UoKTogUHJvbWlzZTxFbXBsb3llZVtdIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBfX0lOVEVSTkFMX19nZXRTZWxlY3RGdW5jdGlvbkZvckRpc2FibGVFbXBsb3llZUluU1MoXG4gICAgICAgIHBhdGhTcGVjOiBzdHJpbmdcbiAgICApOiBQcm9taXNlPChlbXBsb3llZTogRW1wbG95ZWUpID0+IGJvb2xlYW4+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE1vZGFsVW5pdE9wZW5lZEluc3RhbmNlKHBhZ2VJZDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUYWJzU3RhdGUoKTogVGFiSW5mb3NTdGF0ZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuYXZpZ2F0ZShuYXZpZ2F0aW9uUGF0aDogc3RyaW5nKTogUHJvbWlzZTxJQ2FuZHlDb21wb25lbnRIYW5kbGUgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGltcG9ydEVtcGxveWVyRG9jdW1lbnRzKG9wdGlvbnM6IEltcG9ydEVtcGxveWVyRG9jdW1lbnRzT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW1wb3J0RW1wbG95ZWVzKGVtcGxveWVlczogRW1wbG95ZWVbXSwgb3B0aW9ucz86IHsgc2NlbmFyaW8/OiBzdHJpbmcgfSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcHJpbnQocHJpbnRUeXBlOiBQcmludFR5cGUsIGJvZHk/OiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG4gICAgcHVibGljIHJ1bk1hc3NBY3Rpb24oYWN0aW9uSWQ6IHN0cmluZywgcGFyYW1ldGVycz86IE1hc3NBY3Rpb25QYXJhbWV0ZXJzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRCeUdJZChnSWQ6IHN0cmluZywgZmlsdGVyPzogRGlnZXN0UXVlcnlGaWx0ZXIpOiBQcm9taXNlPFBpY2tsaXN0UXVlcnlSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLnBpY2tsaXN0c1Byb3ZpZGVyLmdldERpZ2VzdEFwaVBpY2tsaXN0KGdJZCkucXVlcnkoZmlsdGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb24oZXZlbnROYW1lOiBzdHJpbmcsIGxpc3RlbmVyOiBFeHRlcm5hbEhvb2tGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0uZXZlbnRNYW5hZ2VyLm9uKFtcImZvcm1cIiwgZXZlbnROYW1lXSwgbGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvZmYoZXZlbnROYW1lOiBzdHJpbmcsIGxpc3RlbmVyOiBFeHRlcm5hbEhvb2tGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0uZXZlbnRNYW5hZ2VyLm9mZihbXCJmb3JtXCIsIGV2ZW50TmFtZV0sIGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Nb2RlbENoYW5nZShwYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSwgbGlzdGVuZXI6IHVua25vd24pOiBTdWJzY3JpcHRpb24ge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICB0aHJvdyBFcnJvcihcImZvcm0ub25Nb2RlbENoYW5nZSgpIGlzIG5vdCBzdXBwb3J0ZWQgeWV0XCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzYXZlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNoYW5nZVNldC5zZW5kKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLmZvcm0uY2hhbmdlU2V0LnN0b3BBdXRvc2VuZCgpO1xuICAgICAgICBpZiAodGhpcy5mb3JtLnVubW91bnQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS51bm1vdW50KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNoYW5nZVNldC5zZW5kKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRvdXJTdGVwcygpOiBTdGVwW10ge1xuICAgICAgICAvLyBGb3Igb2xkIGtld2ViXG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmZvcm0ubW9kZWwuZ2V0Q2h1bmsodGhpcy5mb3JtLnNldHRpbmdzLmZvcm1Sb290KSk7XG4gICAgICAgIC8vIEB0cy1pZ25vcmUg0K3RgtC+INCyINGB0YLQsNGA0YvRhSDQtNCy0LjQttC60LDRhSDRgtGD0YIg0YLQsNC60L7QuSDQstGL0LfQvtCyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLnZhbGlkYXRvci52YWxpZGF0ZUFsbChrZXlzKTtcbiAgICB9XG4gICAgcHVibGljIGdldEFkZGl0aW9uYWxFbXBsb3llZUluZm8oZmlsdGVyczogR2V0RW1wbG95ZWVMaXN0UmVxdWVzdCk6IFByb21pc2U8RW1wbG95ZWVMaXN0IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVsb2FkSW5uZXIoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0V29ya2luZ0V2ZW50c0ZvckVtcGxveWVlKGZpbHRlcnM6IEdldFdvcmtpbmdFdmVudExpc3RSZXF1ZXN0KTogUHJvbWlzZTxXb3JraW5nRXZlbnRMaXN0IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzRXJyb3JzKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBlcnJvckNvdW50ID0gdGhpcy5mb3JtLm1vZGVsLmdldCh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QsIFwiZXJyb3JzQ291bnRcIik7XG4gICAgICAgIHJldHVybiBlcnJvckNvdW50ICE9IHVuZGVmaW5lZCAmJiBlcnJvckNvdW50ID4gMDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25FcnJvcnNDb3VudENoYW5nZWQobGlzdGVuZXI6IE1vZGVsRXZlbnRzTGlzdGVuZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLmV2ZW50TWFuYWdlci5vbihtb2RlbENoYW5nZUV2ZW50UGF0aCh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QsIFwiZXJyb3JzQ291bnRcIiksIGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb2ZmRXJyb3JzQ291bnRDaGFuZ2VkKGxpc3RlbmVyOiBNb2RlbEV2ZW50c0xpc3RlbmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5ldmVudE1hbmFnZXIub2ZmKG1vZGVsQ2hhbmdlRXZlbnRQYXRoKHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCwgXCJlcnJvcnNDb3VudFwiKSwgbGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQocGF0aE9yTW9kZWxDaHVuazogeyBbcGF0aDogc3RyaW5nXTogc3RyaW5nIHwgdW5kZWZpbmVkIH0pOiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgICBwdWJsaWMgc2V0KHBhdGhPck1vZGVsQ2h1bms6IHN0cmluZywgdmFsdWU6IE1vZGVsVmFsdWUpOiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgICBwdWJsaWMgc2V0KFxuICAgICAgICBwYXRoT3JNb2RlbENodW5rOiBzdHJpbmcgfCB7IFtwYXRoOiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfSxcbiAgICAgICAgdmFsdWU/OiBNb2RlbFZhbHVlXG4gICAgKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBwYXRoT3JNb2RlbENodW5rICE9PSBudWxsICYmXG4gICAgICAgICAgICB0eXBlb2YgcGF0aE9yTW9kZWxDaHVuayAhPT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgdHlwZW9mIHBhdGhPck1vZGVsQ2h1bmsgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgICFBcnJheS5pc0FycmF5KHBhdGhPck1vZGVsQ2h1bmspXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgaW5uZXJDaHVuayA9IE9iamVjdC5rZXlzKHBhdGhPck1vZGVsQ2h1bmspLnJlZHVjZTxSZWFkb25seU1vZGVsQ2h1bms+KFxuICAgICAgICAgICAgICAgIChyZXN1bHQsIHBhdGgpID0+ICh7IFtwYXRoXTogeyB2YWx1ZTogcGF0aE9yTW9kZWxDaHVua1twYXRoXSB9LCAuLi5yZXN1bHQgfSksXG4gICAgICAgICAgICAgICAge31cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuZm9ybS5tb2RlbC5maWxsKGlubmVyQ2h1bmspO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBwYXRoT3JNb2RlbENodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0ubW9kZWwuc2V0KHBhdGhPck1vZGVsQ2h1bmssIFwidmFsdWVcIiwgdmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZm9ybS5zZXQoKSBwYXJhbWV0ZXIgc2hvdWxkIGJlIHN0cmluZyBwYXRoIG9yIG9iamVjdCB3aXRoIHBhdGgtdmFsdWUgcGFpcnNcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldChwYXRoT3JBcnJheTogc3RyaW5nIHwgc3RyaW5nW10pOiB7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0ge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXRoT3JBcnJheSkpIHtcbiAgICAgICAgICAgIHJldHVybiByZWR1Y2VDaHVua1ZhbHVlcyhcbiAgICAgICAgICAgICAgICBwYXRoT3JBcnJheVxuICAgICAgICAgICAgICAgICAgICAubWFwKHBhdGggPT4gbWFwQ2h1bmtWYWx1ZXModGhpcy5mb3JtLm1vZGVsLmdldENodW5rKHBhdGgpKSlcbiAgICAgICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICAgICAgICAgICAgICAgICAgICAucmVkdWNlPEFycmF5PHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfT4+KChyZXN1bHQsIGFycmF5KSA9PiByZXN1bHQuY29uY2F0KGFycmF5KSwgW10pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBwYXRoT3JBcnJheSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIHJlZHVjZUNodW5rVmFsdWVzKG1hcENodW5rVmFsdWVzKHRoaXMuZm9ybS5tb2RlbC5nZXRDaHVuayhwYXRoT3JBcnJheSkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXRoT3JBcnJheSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVkdWNlQ2h1bmtWYWx1ZXMobWFwQ2h1bmtWYWx1ZXModGhpcy5mb3JtLm1vZGVsLmdldENodW5rKHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCkpKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmb3JtLmdldCgpIHBhcmFtZXRlciBzaG91bGQgYmUgc3RyaW5nIHBhdGggb3IgYXJyYXkgb2YgcGF0aHNcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFZhbHVlKHBhdGg6IHN0cmluZyk6IE1vZGVsVmFsdWUge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5tb2RlbC5nZXQocGF0aCwgXCJ2YWx1ZVwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weVN1YnRyZWUoXG4gICAgICAgIHNvdXJjZUJpbmRpbmdQYXRoOiBCaW5kaW5nUGF0aCB8IEFic29sdXRlUmVzb2x2ZWRNb2RlbFBhdGgsXG4gICAgICAgIHRhcmdldEJpbmRpbmdQYXRoOiBCaW5kaW5nUGF0aCB8IEFic29sdXRlUmVzb2x2ZWRNb2RlbFBhdGgsXG4gICAgICAgIGRvTm90Q29weVBhdGhzPzogc3RyaW5nW11cbiAgICApOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkSW5zdGFuY2UocGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q2hpbGRyZW4ocGF0aDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1dWlkR2VuZXJhdGUoKTogc3RyaW5nIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvd01vZGFsKG9wdGlvbnM6IE1vZGFsT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRTZWN0aW9uKG9wdGlvbnM6IEluaXRTZWN0aW9uRm9ybUxpZ2h0Ym94T3B0aW9ucyk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjYWxsSW5pdFNlY3Rpb24ob3B0aW9uczogQ2FsbEluaXRTZWN0aW9uTGlnaHRib3hQcm9wcyk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVGaWFzQXBpQ2xpZW50KG9wdGlvbnM6IEZpYXNDbGllbnRJbml0T3B0aW9ucyk6IEZpYXNBcGkge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvcGVuRW1wbG95ZWVFZGl0b3IoZW1wbG95ZWVJZDogc3RyaW5nKSB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUluc3RhbmNlKHBhdGg6IHN0cmluZywgaW5zdGFuY2U6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVJbnN0YW5jZXMocGF0aDogc3RyaW5nLCBpbnN0YW5jZXM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGZvY3VzT25Db250cm9sSWZFeGlzdChwYXRoOiBCaW5kaW5nUGF0aCk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBdXRvRmllbGRzVG9BdXRvVmFsdWUocGF0aFByZWZpeGVzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGVuc3VyZUluc3RhbmNlRnVsbHlMb2FkZWQoXG4gICAgICAgIGJpbmRpbmdQYXRoOiBzdHJpbmcgfCBBYnNvbHV0ZVJlc29sdmVkTW9kZWxQYXRoLFxuICAgICAgICAuLi5pbnN0YW5jZXM6IHN0cmluZ1tdXG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjdXN0b21Ob3JtYWxpemUobm9ybWFsaXplcklkOiBzdHJpbmcsIHBhdGhQcmVmaXhlczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG4gICAgcHVibGljIHJlbW92ZUluc3RhbmNlc0J5UnVsZXMocnVsZXM6IEluc3RhbmNlc0RlbGV0aW5nUnVsZVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZURucCgpOiBQcm9taXNlPENvbWJpbmVGdWZSZXN1bHQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMZWdhY3lQdWJsaWNGb3JtKGZvcm06IElGb3JtKTogSVB1YmxpY0Zvcm0ge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gbmV3IExlZ2FjeVB1YmxpY0Zvcm0oZm9ybSBhcyBJTGVnYWN5Rm9ybSk7XG59XG4iLCIvLyB0c2xpbnQ6ZGlzYWJsZSBuby11bnNhZmUtYW55XG5leHBvcnQgY2xhc3MgTG9hZEludG9Eb2N1bWVudCB7XG4gICAgcHVibGljIHN0YXRpYyBzY3JpcHQodXJpOiBzdHJpbmcsIGNhbGxiYWNrOiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICBsZXQgc2NyaXB0TG9hZGVkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF0gfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICBjb25zdCBzY3JpcHQ6IGFueSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7XG5cbiAgICAgICAgZnVuY3Rpb24gbG9hZEhhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgICAgICBpZiAoc2NyaXB0TG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXNjcmlwdC5yZWFkeVN0YXRlIHx8IHNjcmlwdC5yZWFkeVN0YXRlID09PSBcImxvYWRlZFwiIHx8IHNjcmlwdC5yZWFkeVN0YXRlID09PSBcImNvbXBsZXRlXCIpIHtcbiAgICAgICAgICAgICAgICBzY3JpcHRMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBIYW5nIHRoZSB1c2VyIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzY3JpcHQgY29tcGxldGVzIHRvIGxvYWQuXG4gICAgICAgIC8vIE5PVEUodXNlcik6IFRoaXMgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgaW4gSUUgZXZlbiB1cG9uIGVycm9yLiBJbiBhbnlcbiAgICAgICAgLy8gY2FzZSBpdCBpcyB0aGUgY2xpZW50J3MgcmVzcG9uc2liaWxpdHkgdG8gdmVyaWZ5IHRoYXQgdGhlIHNjcmlwdCByYW5cbiAgICAgICAgLy8gc3VjY2Vzc2Z1bGx5LlxuICAgICAgICBzY3JpcHQub25sb2FkID0gbG9hZEhhbmRsZXI7XG4gICAgICAgIHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBsb2FkSGFuZGxlcjtcblxuICAgICAgICAvLyBBZGQgYW4gZXJyb3IgY2FsbGJhY2suXG4gICAgICAgIC8vIE5PVEUodXNlcik6IE5vdCBzdXBwb3J0ZWQgaW4gSUUuXG4gICAgICAgIHNjcmlwdC5vbmVycm9yID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHNjcmlwdC5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgc2NyaXB0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc2NyaXB0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcihcIkVycm9yIHdoaWxlIGxvYWRpbmcgc2NyaXB0LlwiKSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gQWRkIHRoZSBzY3JpcHQgZWxlbWVudCB0byB0aGUgZG9jdW1lbnQuXG4gICAgICAgIC8vIE5PVEUodXNlcik6IFNhZmFyaSBuZXZlciBsb2FkcyB0aGUgc2NyaXB0IGlmIHdlIGRvbid0IHNldFxuICAgICAgICAvLyB0aGUgc3JjIGF0dHJpYnV0ZSBiZWZvcmUgYXBwZW5kaW5nLlxuICAgICAgICBzY3JpcHQuc3JjID0gdXJpO1xuICAgICAgICBzY3JpcHQuc2V0QXR0cmlidXRlKFwiY3Jvc3NvcmlnaW5cIiwgXCJ1c2UtY3JlZGVudGlhbHNcIik7XG4gICAgICAgIGhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHN0eWxlU2hlZXQodXJpOiBzdHJpbmcsIGlnbm9yZUVycm9yOiBib29sZWFuLCBjYWxsYmFjazogKGVycm9yPzogRXJyb3IpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZSA9ICgpID0+IGNhbGxiYWNrKHVuZGVmaW5lZCk7XG4gICAgICAgIGNvbnN0IHJlamVjdCA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChpZ25vcmVFcnJvcikge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcihcIkVycm9yIHdoaWxlIGxvYWRpbmcgc3R5bGVzaGVldC5cIikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF0gPz8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpbmtcIik7XG5cbiAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoXCJyZWxcIiwgXCJzdHlsZXNoZWV0XCIpO1xuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZShcInR5cGVcIiwgXCJ0ZXh0L2Nzc1wiKTtcbiAgICAgICAgbGluay5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLCByZXNvbHZlKTtcbiAgICAgICAgbGluay5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwgcmVqZWN0KTtcbiAgICAgICAgaGVhZC5hcHBlbmRDaGlsZChsaW5rKTtcbiAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIHVyaSk7XG4gICAgfVxufVxuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHRpZDogbW9kdWxlSWQsXG5cdFx0bG9hZGVkOiBmYWxzZSxcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG5cdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgZGVmaW5pdGlvbikge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18uaG1kID0gZnVuY3Rpb24obW9kdWxlKSB7XG5cdG1vZHVsZSA9IE9iamVjdC5jcmVhdGUobW9kdWxlKTtcblx0aWYgKCFtb2R1bGUuY2hpbGRyZW4pIG1vZHVsZS5jaGlsZHJlbiA9IFtdO1xuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCAnZXhwb3J0cycsIHtcblx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuXHRcdHNldDogZnVuY3Rpb24oKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0VTIE1vZHVsZXMgbWF5IG5vdCBhc3NpZ24gbW9kdWxlLmV4cG9ydHMgb3IgZXhwb3J0cy4qLCBVc2UgRVNNIGV4cG9ydCBzeW50YXgsIGluc3RlYWQ6ICcgKyBtb2R1bGUuaWQpO1xuXHRcdH1cblx0fSk7XG5cdHJldHVybiBtb2R1bGU7XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iaiwgcHJvcCkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7IH0iLCIvLyBzdGFydHVwXG4vLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8vIFRoaXMgZW50cnkgbW9kdWxlIGlzIHJlZmVyZW5jZWQgYnkgb3RoZXIgbW9kdWxlcyBzbyBpdCBjYW4ndCBiZSBpbmxpbmVkXG52YXIgX193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTMzKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7ZUFNQ0EsQ0FBQSxFQUpvQ0MsQ0FBQTtRQUE5QixTQUFTQyxFQUFzQkMsQ0FBQTtVQUdsQyxPQUFPLFNBQVBDLE1BQUEsQ0FBZ0JELENBQUEsQ0FBUUUsRUFBQSxFQUFFLFlBQUFELE1BQUEsQ0FBV0QsQ0FBQSxDQUFRRyxPQUFBLEVBQU8scUJBQ3hEO1FBQUE7UUFBQUMsQ0FBQSxDQUFBQyxDQUFBLENBQUFDLENBQUE7VUFBQUMsQ0FBQSxXQUFBQSxDQUFBO1lBQUEsT0FBQVIsQ0FBQTtVQUFBO1FBQUEsSUFBQUMsQ0FBQSxHQUFBSSxDQUFBLENBQUFJLEdBQUEsQ0FBQVIsQ0FBQSxJQUFBUyxDQUFBLHlCQUFBQyxvQkFBQSxHQUFBQSxvQkFBQSxDQUFBQyxXQUFBLGNBQUFGLENBQUEsQ0FBQVQsQ0FBQSx5QkFBQVUsb0JBQUEsSUFBQUEsb0JBQUEsQ0FBQUUsT0FBQSxDQUFBQyxTQUFBLEdBQUNoQixDQUFBLHlCQUFBYSxvQkFBQSxHQUFBQSxvQkFBQSxDQUFBRSxPQUFBLGNBQUFmLENBQUEsQ0FBQWlCLFFBQUEsQ0FKZWYsQ0FBQSxFQUFxQix3SkFB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
|
|
1686
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJuIiwiaSIsImEiLCJlIiwiY29uY2F0IiwibnMiLCJkcmFmdElkIiwiciIsImQiLCJ0IiwiSSIsImhtZCIsIm8iLCJyZWFjdEhvdExvYWRlckdsb2JhbCIsImVudGVyTW9kdWxlIiwiZGVmYXVsdCIsInNpZ25hdHVyZSIsInJlZ2lzdGVyIiwibGVhdmVNb2R1bGUiLCJtb2R1bGUiLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIl90eXBlb2YiLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2NsYXNzQ2FsbENoZWNrIiwiVHlwZUVycm9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJsZW5ndGgiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5Iiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiU3RyaW5nIiwiTnVtYmVyIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJhcHBseSIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsIl9pbmhlcml0cyIsImNyZWF0ZSIsInZhbHVlIiwiX3NldFByb3RvdHlwZU9mIiwiX3dyYXBOYXRpdmVTdXBlciIsIk1hcCIsIl9pc05hdGl2ZUZ1bmN0aW9uIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX2NvbnN0cnVjdCIsImFyZ3VtZW50cyIsInB1c2giLCJiaW5kIiwiQm9vbGVhbiIsInZhbHVlT2YiLCJGdW5jdGlvbiIsInRvU3RyaW5nIiwiaW5kZXhPZiIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiZ2V0UHJvdG90eXBlT2YiLCJFSCIsIk5vdEltcGxlbWVudGVkRXJyb3IiLCJfX3NpZ25hdHVyZV9fIiwiQXBwbGljYXRpb25FcnJvciIsIl9FcnJvciIsIm5hbWUiLCJfX3JlYWN0c3RhbmRpbl9fcmVnZW5lcmF0ZUJ5RXZhbCIsImNvZGUiLCJldmFsIiwiRXJyb3IiLCJfQXBwbGljYXRpb25FcnJvciIsIk5vdFN1cHBvcnRlZEVycm9yIiwiX0FwcGxpY2F0aW9uRXJyb3IyIiwiSW52YWxpZFByb2dyYW1TdGF0ZUVycm9yIiwiX0FwcGxpY2F0aW9uRXJyb3IzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJfQXBwbGljYXRpb25FcnJvcjQiLCJUeXBpbmdFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yNSIsInJlYWN0SG90TG9hZGVyIiwidSIsInMiLCJsIiwiYyIsImYiLCJrdSIsIm1lc3NhZ2UiLCJ0cmltIiwic2xpY2UiLCJnbG9iYWxUaGlzIiwic2VsZiIsImciLCJzZWFyY2hQYXJhbXMiLCJpdGVyYWJsZSIsImJsb2IiLCJCbG9iIiwiZm9ybURhdGEiLCJhcnJheUJ1ZmZlciIsIkFycmF5QnVmZmVyIiwiaXNWaWV3IiwidGVzdCIsInRvTG93ZXJDYXNlIiwibmV4dCIsInNoaWZ0IiwiZG9uZSIsIm1hcCIsImZvckVhY2giLCJhcHBlbmQiLCJBcnJheSIsImlzQXJyYXkiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiX25vQm9keSIsImJvZHlVc2VkIiwiUHJvbWlzZSIsInJlamVjdCIsIm9ubG9hZCIsInJlc3VsdCIsIm9uZXJyb3IiLCJlcnJvciIsInAiLCJGaWxlUmVhZGVyIiwicmVhZEFzQXJyYXlCdWZmZXIiLCJ5IiwiVWludDhBcnJheSIsImJ5dGVMZW5ndGgiLCJidWZmZXIiLCJtIiwiX2luaXRCb2R5IiwiX2JvZHlJbml0IiwiX2JvZHlUZXh0IiwiaXNQcm90b3R5cGVPZiIsIl9ib2R5QmxvYiIsIkZvcm1EYXRhIiwiX2JvZHlGb3JtRGF0YSIsIlVSTFNlYXJjaFBhcmFtcyIsIkRhdGFWaWV3IiwiX2JvZHlBcnJheUJ1ZmZlciIsImhlYWRlcnMiLCJ0eXBlIiwicmVzb2x2ZSIsImJ5dGVPZmZzZXQiLCJ0aGVuIiwidGV4dCIsImV4ZWMiLCJyZWFkQXNUZXh0IiwiZnJvbUNoYXJDb2RlIiwiam9pbiIsIl8iLCJqc29uIiwiSlNPTiIsInBhcnNlIiwiZGVsZXRlIiwiaGFzT3duUHJvcGVydHkiLCJrZXlzIiwidmFsdWVzIiwiZW50cmllcyIsImgiLCJib2R5IiwidXJsIiwiY3JlZGVudGlhbHMiLCJtZXRob2QiLCJtb2RlIiwic2lnbmFsIiwidG9VcHBlckNhc2UiLCJBYm9ydENvbnRyb2xsZXIiLCJyZWZlcnJlciIsImNhY2hlIiwicmVwbGFjZSIsIkRhdGUiLCJnZXRUaW1lIiwic3BsaXQiLCJkZWNvZGVVUklDb21wb25lbnQiLCJ2Iiwic3RhdHVzIiwiUmFuZ2VFcnJvciIsIm9rIiwic3RhdHVzVGV4dCIsImNsb25lIiwiYiIsInJlZGlyZWN0IiwibG9jYXRpb24iLCJFIiwiRE9NRXhjZXB0aW9uIiwic3RhY2siLCJ3IiwiYWJvcnRlZCIsIlhNTEh0dHBSZXF1ZXN0IiwiYWJvcnQiLCJnZXRBbGxSZXNwb25zZUhlYWRlcnMiLCJzdWJzdHIiLCJjb25zb2xlIiwid2FybiIsInJlc3BvbnNlVVJMIiwicmVzcG9uc2UiLCJyZXNwb25zZVRleHQiLCJzZXRUaW1lb3V0Iiwib250aW1lb3V0Iiwib25hYm9ydCIsIm9wZW4iLCJocmVmIiwid2l0aENyZWRlbnRpYWxzIiwicmVzcG9uc2VUeXBlIiwiSGVhZGVycyIsInNldFJlcXVlc3RIZWFkZXIiLCJhZGRFdmVudExpc3RlbmVyIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJzZW5kIiwicG9seWZpbGwiLCJmZXRjaCIsIlJlcXVlc3QiLCJSZXNwb25zZSIsImsiLCJDIiwiQSIsIlAiLCJPIiwiTCIsIlMiLCJCIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiVCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiaiIsIkgiLCJGIiwiTSIsIkNGIiwia2Vmb3Jtc1VybCIsIlUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJEIiwiUmVnRXhwIiwiaG9zdCIsIkciLCJzZWFyY2giLCJmaW5kIiwicmV0dXJuIiwiZnJvbSIsIngiLCJSIiwiZ2Z2IiwiZW5naW5lVmVyc2lvbiIsInJlc291cmNlc1ZlcnNpb24iLCJlbnRyeVBvaW50IiwicmVzb3VyY2Vab25lIiwicSIsInN0eWxlU2hlZXQiLCJzY3JpcHQiLCJOIiwicHVibGljRm9ybSIsImNhdGNoIiwiViIsImtvbnR1ckRvbWFpbnMiLCJhdXRob3JpemVkIiwiYXV0aGVudGljYXRpb24iLCJhdXRoU2lkIiwiQXV0aG9yaXphdGlvbiIsImNhdWxkcm9uQXBpVXJsIiwiaXNUZXN0U2VydmVyIiwicmVuZGVyQ2FjaGluZ0ZvcklFOCIsIm5vcm1hbGl6YXRpb25PblNlcnZlciIsIm5vcm1hdGl2ZVVybCIsInNob3dOYXZpZ2F0aW9uU2lkZWJhciIsIm9uUmVtb3ZlQXR0YWNobWVudCIsImZlZWRiYWNrRW5hYmxlZCIsImlzRGlzYWJsZWRDbGVhbkZvcm0iLCJpc0Rpc2FibGVkQ2xvc2VCdXR0b24iLCJpc0Rpc2FibGVkQ2xvc2VBbmRTYXZlQnV0dG9uIiwidGhlbWUiLCJ0ZW1wbGF0ZXNBcGkiLCJyZW5kZXJGb3JtIiwiSyIsIlciLCJ6Iiwic3RhcnQiLCJwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4IiwicGFyc2VJbnQiLCJjcmVhdGVMZWdhY3lQdWJsaWNGb3JtIiwiX0NvbW1vbl9FcnJvcnNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJhc3luY0l0ZXJhdG9yIiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJhcmciLCJ3cmFwIiwiX2ludm9rZSIsIl9fYXdhaXQiLCJkZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwicmVzdWx0TmFtZSIsIm5leHRMb2MiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpc05hTiIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsIm1hcmsiLCJhd3JhcCIsIkFzeW5jSXRlcmF0b3IiLCJhc3luYyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic3RvcCIsInJ2YWwiLCJjb21wbGV0ZSIsImZpbmlzaCIsImRlbGVnYXRlWWllbGQiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJfYXN5bmNUb0dlbmVyYXRvciIsIm93bktleXMiLCJfb2JqZWN0U3ByZWFkIiwiX2RlZmluZVByb3BlcnR5IiwibW9kZWxDaGFuZ2VFdmVudFBhdGgiLCJtYXBDaHVua1ZhbHVlcyIsInJlZHVjZUNodW5rVmFsdWVzIiwicmVkdWNlIiwiTGVnYWN5UHVibGljRm9ybSIsImZvcm0iLCJfdmFsaWRhdGVDaGlsZHJlbkJ5UGF0aCIsIl9JTlRFUk5BTF9fZ2V0U2VsZWN0RnVuY3Rpb25Gb3JEaXNhYmxlRW1wbG95ZWVJblNTIiwicGlja2xpc3RzUHJvdmlkZXIiLCJnZXREaWdlc3RBcGlQaWNrbGlzdCIsInF1ZXJ5IiwiZXZlbnRNYW5hZ2VyIiwib24iLCJvZmYiLCJjaGFuZ2VTZXQiLCJzdG9wQXV0b3NlbmQiLCJ1bm1vdW50IiwibW9kZWwiLCJnZXRDaHVuayIsInNldHRpbmdzIiwiZm9ybVJvb3QiLCJ2YWxpZGF0b3IiLCJ2YWxpZGF0ZUFsbCIsIl9yZWxvYWRJbm5lciIsImZpbGwiLCJkb2N1bWVudCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiZG9jdW1lbnRFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInNyYyIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiZXhwb3J0cyIsImlkIiwibG9hZGVkIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsIndpbmRvdyIsImNoaWxkcmVuIl0sInNvdXJjZXMiOlsid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DbGllbnREcmFmdEluZm8vR2V0Q2xpZW50RHJhZnRJbmZvVXJsLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9FcnJvcnMudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvQ29tbW9uL1R5cGluZ1V0aWxzLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL25vZGVfbW9kdWxlcy93aGF0d2ctZmV0Y2gvZmV0Y2guanMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvRW5naW5lL3NyYy9Gb3Jtcy9DbGllbnQvQ2xpZW50LnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0VuZ2luZS9zcmMvRm9ybXMvQ2xpZW50L0NsaWVudFNldHRpbmdzLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0VuZ2luZS9zcmMvRm9ybXMvQ2xpZW50L0xlZ2FjeVB1YmxpY0Zvcm0vQ3JlYXRlTGVnYWN5UHVibGljRm9ybS50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9FbmdpbmUvc3JjL0hlbHBlcnMvTG9hZEludG9Eb2N1bWVudC50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvaGFybW9ueSBtb2R1bGUgZGVjb3JhdG9yIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9zdGFydHVwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERyYWZ0RnVsbElkIH0gZnJvbSBcIi4uL1R5cGVzL0RyYWZ0RnVsbElkXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDbGllbnREcmFmdEluZm9VcmwoZHJhZnRJZDogRHJhZnRGdWxsSWQpIHtcbiAgICAvLyBOT1RFINCt0YLQsCDRhNGD0L3QutGG0LjRjyDQvtCx0YrRj9Cy0LvQtdC90LAg0L7RgtC00LXQu9GM0L3Qviwg0LjQsdC+INC+0L3QsCDQstGF0L7QtNC40YIg0LIg0YHQvtGB0YLQsNCyIGNsaWVudC5qcyDQuFxuICAgIC8vINC90LUg0LTQvtC70LbQvdC+INC/0YDQvtC40YHRhdC+0LTQuNGC0Ywg0YPRgtC10LbQtdC70LXQvdC40Y8gY2xpZW50LmpzLdCwXG4gICAgcmV0dXJuIGB2MS9ucy8ke2RyYWZ0SWQubnN9L2RyYWZ0cy8ke2RyYWZ0SWQuZHJhZnRJZH0vY2xpZW50LWRyYWZ0LWluZm9gO1xufVxuIiwiZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICBzdXBlcihtZXNzYWdlKTtcbiAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5vdEltcGxlbWVudGVkRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKFwiT3BlcmF0aW9uIG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb3RTdXBwb3J0ZWRFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UgPz8gXCJPcGVyYXRpb24gbm90IHN1cHBvcnRlZFwiKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkUHJvZ3JhbVN0YXRlRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihcIkludmFsaWQgcHJvZ3JhbSBzdGF0ZVwiICsgKG1lc3NhZ2UgIT0gdW5kZWZpbmVkID8gXCI6IFwiICsgbWVzc2FnZSA6IFwiXCIpKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkQXJndW1lbnRFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihhcmd1bWVudE5hbWU6IHN0cmluZywgbWVzc2FnZT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihcbiAgICAgICAgICAgIG1lc3NhZ2UgIT0gdW5kZWZpbmVkID8gYCR7bWVzc2FnZX0gKGFyZ3VtZW50OiAke2FyZ3VtZW50TmFtZX0pYCA6IGBJbnZhbGlkIGFyZ3VtZW50IHZhbHVlOiAke2FyZ3VtZW50TmFtZX1gXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHlwaW5nRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKFwiSW52YWxpZCB0eXBpbmdcIik7XG4gICAgfVxufVxuIiwiLyoqKlxuICog0KHRgtGA0L7Qs9C+0YLQuNC/0LjQt9C40YDQvtCy0LDQvdC90LDRjyDQt9Cw0LzQtdC90LAg0LTQu9GPIEJvb2xlYW4oLi4uKVxuICog0J7QsdGL0YfQvdC+INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNC70Y8gWy4uLl0uZmlsdGVyKGlzTm90TnVsbE9yVW5kZWZpbmVkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOb3ROdWxsT3JVbmRlZmluZWQ8VD4oaW5wdXQ6IFQpOiBpbnB1dCBpcyBOb25OdWxsYWJsZTxUPiB7XG4gICAgcmV0dXJuIGlucHV0ICE9IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeVVua25vd25FcnJvcihlcnJvcjogdW5rbm93bik6IHVuZGVmaW5lZCB8IHN0cmluZyB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgcmV0dXJuIHR5cGVvZiBlcnJvciA9PT0gXCJvYmplY3RcIiAmJiBlcnJvcj8uW1wibWVzc2FnZVwiXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5vdE51bGxPclVuZGVmaW5lZDxUPihpbnB1dDogVCk6IGFzc2VydHMgaW5wdXQgaXMgTm9uTnVsbGFibGU8VD4ge1xuICAgIGlmICghaXNOb3ROdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVmFsdWUgbXVzdCBiZSBkZWZpbmVkYCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9vcCgpOiB2b2lkIHtcbiAgICAvLyBub29wXG59XG5cbmV4cG9ydCB0eXBlIEVycm9yRmlyc3RDYWxsYmFjazxUPiA9ICguLi5hcmdzOiBbRXJyb3IsIG51bGwgfCB1bmRlZmluZWRdIHwgW251bGwgfCB1bmRlZmluZWQsIFRdIHwgW0Vycm9yXSkgPT4gdm9pZDtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlamVjdChtZXNzYWdlPzogc3RyaW5nIHwgRXJyb3IpOiBuZXZlciB7XG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSBcInN0cmluZ1wiIHx8IG1lc3NhZ2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlID8/IFwiVW5kZWZpbmVkIGlzIG5vdCBhbGxvd2VkXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG1lc3NhZ2U7XG4gICAgfVxufVxuXG50eXBlIEFycmF5T2ZMZW5ndGg8VEl0ZW0sIFRMZW5ndGggZXh0ZW5kcyBudW1iZXIsIFRSZXN0IGV4dGVuZHMgVEl0ZW1bXSA9IFtdPiA9IFRSZXN0IGV4dGVuZHMgeyBsZW5ndGg6IFRMZW5ndGggfVxuICAgID8gVFJlc3RcbiAgICA6IEFycmF5T2ZMZW5ndGg8VEl0ZW0sIFRMZW5ndGgsIFtUSXRlbSwgLi4uVFJlc3RdPjtcblxuZXhwb3J0IHR5cGUgTWluTGVuZ3RoQXJyYXk8VEl0ZW0sIFRMZW5ndGggZXh0ZW5kcyBudW1iZXIsIFRSZXN0IGV4dGVuZHMgVEl0ZW1bXSA9IFtdPiA9IFRSZXN0IGV4dGVuZHMge1xuICAgIGxlbmd0aDogVExlbmd0aDtcbn1cbiAgICA/IFsuLi5UUmVzdCwgLi4uVEl0ZW1bXV1cbiAgICA6IE1pbkxlbmd0aEFycmF5PFRJdGVtLCBUTGVuZ3RoLCBbLi4uVFJlc3QsIFRJdGVtXT47XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIG1pbkxlbmd0aDogVE51bVxuKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgVE51bT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPj0gbWluTGVuZ3RoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWluTGVuZ3RoT3JVbmRlZmluZWQ8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IFRbXSxcbiAgICBtaW5MZW5ndGg6IFROdW1cbik6IHVuZGVmaW5lZCB8IE1pbkxlbmd0aEFycmF5PFQsIFROdW0+IHtcbiAgICBpZiAoaXNMZW5ndGhHcmVhdGVyVGhlbk9yRXF1YWwoaXRlbXMsIG1pbkxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlIYXNMZW5ndGg8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IHJlYWRvbmx5IFRbXSxcbiAgICBsZW5ndGg6IFROdW1cbik6IGl0ZW1zIGlzIEFycmF5T2ZMZW5ndGg8VCwgVE51bT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPT09IGxlbmd0aDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5SXNOb3RFbXB0eTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgMT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlIYXNBdExlYXN0T25lSXRlbTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgMT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQXJyYXlJc05vdEVtcHR5PFQ+KGl0ZW1zOiByZWFkb25seSBUW10pOiBhc3NlcnRzIGl0ZW1zIGlzIE1pbkxlbmd0aEFycmF5PFQsIDE+IHtcbiAgICBpZiAoIWFycmF5SXNOb3RFbXB0eShpdGVtcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcnJheSBtdXN0IGJlIG5vdCBlbXB0eWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUFycmF5SGFzTGVuZ3RoPFQsIFROdW0gZXh0ZW5kcyBudW1iZXI+KFxuICAgIGl0ZW1zOiByZWFkb25seSBUW10sXG4gICAgbGVuZ3RoOiBUTnVtXG4pOiBhc3NlcnRzIGl0ZW1zIGlzIEFycmF5T2ZMZW5ndGg8VCwgVE51bT4ge1xuICAgIGlmICghYXJyYXlIYXNMZW5ndGgoaXRlbXMsIGxlbmd0aCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcnJheSBzaG91bGQgaGFzIGxlbmd0aCAke2xlbmd0aH1gKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVBcnJheUxlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIGxlbmd0aDogVE51bVxuKTogYXNzZXJ0cyBpdGVtcyBpcyBBcnJheU9mTGVuZ3RoPFQsIFROdW0+IHtcbiAgICBpZiAoIWlzTGVuZ3RoR3JlYXRlclRoZW5PckVxdWFsKGl0ZW1zLCBsZW5ndGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXJyYXkgbXVzdCBoYXZlIG1pbmltYWwgbGVuZ3RoICR7bGVuZ3RofWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5ldmVyKG5ldmVyQXJndW1lbnQ6IG5ldmVyKTogdm9pZCB7XG4gICAgLy8gbm9vcFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQW5kR2V0U3RyaW5nKG5ldmVyQXJndW1lbnQ6IG5ldmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7bmV2ZXJBcmd1bWVudH1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuQXN5bmNBY3Rpb24oYWN0aW9uOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogdm9pZCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlc1xuICAgIGFjdGlvbigpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JFbXB0eShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogaW5wdXQgaXMgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gaW5wdXQgPT0gdW5kZWZpbmVkIHx8IGlucHV0ID09PSBcIlwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb3ROdWxsT3JFbXB0eShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogaW5wdXQgaXMgc3RyaW5nIHtcbiAgICByZXR1cm4gIWlzTnVsbE9yRW1wdHkoaW5wdXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JXaGl0ZVNwYWNlKGlucHV0OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKTogaW5wdXQgaXMgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgcmV0dXJuIGlucHV0ID09IHVuZGVmaW5lZCB8fCBpbnB1dC50cmltKCkgPT09IFwiXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmltTGFzdFNsYXNoKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdXJsLnNsaWNlKC0xKSA9PT0gXCIvXCIgPyB1cmwuc2xpY2UoMCwgLTEpIDogdXJsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0SXM8VD4odmFsdWU6IFQpOiB2b2lkIHtcbiAgICAvLyBub29wXG59XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgKi9cbnZhciBnID1cbiAgKHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWxUaGlzKSB8fFxuICAodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnICYmIHNlbGYpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2xvYmFsKSB8fFxuICB7fVxuXG52YXIgc3VwcG9ydCA9IHtcbiAgc2VhcmNoUGFyYW1zOiAnVVJMU2VhcmNoUGFyYW1zJyBpbiBnLFxuICBpdGVyYWJsZTogJ1N5bWJvbCcgaW4gZyAmJiAnaXRlcmF0b3InIGluIFN5bWJvbCxcbiAgYmxvYjpcbiAgICAnRmlsZVJlYWRlcicgaW4gZyAmJlxuICAgICdCbG9iJyBpbiBnICYmXG4gICAgKGZ1bmN0aW9uKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbmV3IEJsb2IoKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9KSgpLFxuICBmb3JtRGF0YTogJ0Zvcm1EYXRhJyBpbiBnLFxuICBhcnJheUJ1ZmZlcjogJ0FycmF5QnVmZmVyJyBpbiBnXG59XG5cbmZ1bmN0aW9uIGlzRGF0YVZpZXcob2JqKSB7XG4gIHJldHVybiBvYmogJiYgRGF0YVZpZXcucHJvdG90eXBlLmlzUHJvdG90eXBlT2Yob2JqKVxufVxuXG5pZiAoc3VwcG9ydC5hcnJheUJ1ZmZlcikge1xuICB2YXIgdmlld0NsYXNzZXMgPSBbXG4gICAgJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQzMkFycmF5XScsXG4gICAgJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgJ1tvYmplY3QgRmxvYXQ2NEFycmF5XSdcbiAgXVxuXG4gIHZhciBpc0FycmF5QnVmZmVyVmlldyA9XG4gICAgQXJyYXlCdWZmZXIuaXNWaWV3IHx8XG4gICAgZnVuY3Rpb24ob2JqKSB7XG4gICAgICByZXR1cm4gb2JqICYmIHZpZXdDbGFzc2VzLmluZGV4T2YoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikpID4gLTFcbiAgICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU5hbWUobmFtZSkge1xuICBpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgbmFtZSA9IFN0cmluZyhuYW1lKVxuICB9XG4gIGlmICgvW15hLXowLTlcXC0jJCUmJyorLl5fYHx+IV0vaS50ZXN0KG5hbWUpIHx8IG5hbWUgPT09ICcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBjaGFyYWN0ZXIgaW4gaGVhZGVyIGZpZWxkIG5hbWU6IFwiJyArIG5hbWUgKyAnXCInKVxuICB9XG4gIHJldHVybiBuYW1lLnRvTG93ZXJDYXNlKClcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICB2YWx1ZSA9IFN0cmluZyh2YWx1ZSlcbiAgfVxuICByZXR1cm4gdmFsdWVcbn1cblxuLy8gQnVpbGQgYSBkZXN0cnVjdGl2ZSBpdGVyYXRvciBmb3IgdGhlIHZhbHVlIGxpc3RcbmZ1bmN0aW9uIGl0ZXJhdG9yRm9yKGl0ZW1zKSB7XG4gIHZhciBpdGVyYXRvciA9IHtcbiAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGl0ZW1zLnNoaWZ0KClcbiAgICAgIHJldHVybiB7ZG9uZTogdmFsdWUgPT09IHVuZGVmaW5lZCwgdmFsdWU6IHZhbHVlfVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG4gICAgaXRlcmF0b3JbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGl0ZXJhdG9yXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGl0ZXJhdG9yXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBIZWFkZXJzKGhlYWRlcnMpIHtcbiAgdGhpcy5tYXAgPSB7fVxuXG4gIGlmIChoZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycykge1xuICAgIGhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgICAgdGhpcy5hcHBlbmQobmFtZSwgdmFsdWUpXG4gICAgfSwgdGhpcylcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGhlYWRlcnMpKSB7XG4gICAgaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKGhlYWRlcikge1xuICAgICAgaWYgKGhlYWRlci5sZW5ndGggIT0gMikge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdIZWFkZXJzIGNvbnN0cnVjdG9yOiBleHBlY3RlZCBuYW1lL3ZhbHVlIHBhaXIgdG8gYmUgbGVuZ3RoIDIsIGZvdW5kJyArIGhlYWRlci5sZW5ndGgpXG4gICAgICB9XG4gICAgICB0aGlzLmFwcGVuZChoZWFkZXJbMF0sIGhlYWRlclsxXSlcbiAgICB9LCB0aGlzKVxuICB9IGVsc2UgaWYgKGhlYWRlcnMpIHtcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhoZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIGhlYWRlcnNbbmFtZV0pXG4gICAgfSwgdGhpcylcbiAgfVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICBuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKVxuICB2YWx1ZSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxuICB2YXIgb2xkVmFsdWUgPSB0aGlzLm1hcFtuYW1lXVxuICB0aGlzLm1hcFtuYW1lXSA9IG9sZFZhbHVlID8gb2xkVmFsdWUgKyAnLCAnICsgdmFsdWUgOiB2YWx1ZVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBmdW5jdGlvbihuYW1lKSB7XG4gIGRlbGV0ZSB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihuYW1lKSB7XG4gIG5hbWUgPSBub3JtYWxpemVOYW1lKG5hbWUpXG4gIHJldHVybiB0aGlzLmhhcyhuYW1lKSA/IHRoaXMubWFwW25hbWVdIDogbnVsbFxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiB0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShub3JtYWxpemVOYW1lKG5hbWUpKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNBcmcpIHtcbiAgZm9yICh2YXIgbmFtZSBpbiB0aGlzLm1hcCkge1xuICAgIGlmICh0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB0aGlzLm1hcFtuYW1lXSwgbmFtZSwgdGhpcylcbiAgICB9XG4gIH1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUua2V5cyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICBpdGVtcy5wdXNoKG5hbWUpXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuSGVhZGVycy5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBpdGVtcyA9IFtdXG4gIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgIGl0ZW1zLnB1c2godmFsdWUpXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICBpdGVtcy5wdXNoKFtuYW1lLCB2YWx1ZV0pXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcbiAgSGVhZGVycy5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IEhlYWRlcnMucHJvdG90eXBlLmVudHJpZXNcbn1cblxuZnVuY3Rpb24gY29uc3VtZWQoYm9keSkge1xuICBpZiAoYm9keS5fbm9Cb2R5KSByZXR1cm5cbiAgaWYgKGJvZHkuYm9keVVzZWQpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFR5cGVFcnJvcignQWxyZWFkeSByZWFkJykpXG4gIH1cbiAgYm9keS5ib2R5VXNlZCA9IHRydWVcbn1cblxuZnVuY3Rpb24gZmlsZVJlYWRlclJlYWR5KHJlYWRlcikge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0KVxuICAgIH1cbiAgICByZWFkZXIub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmVqZWN0KHJlYWRlci5lcnJvcilcbiAgICB9XG4gIH0pXG59XG5cbmZ1bmN0aW9uIHJlYWRCbG9iQXNBcnJheUJ1ZmZlcihibG9iKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpXG4gIHZhciBwcm9taXNlID0gZmlsZVJlYWRlclJlYWR5KHJlYWRlcilcbiAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGJsb2IpXG4gIHJldHVybiBwcm9taXNlXG59XG5cbmZ1bmN0aW9uIHJlYWRCbG9iQXNUZXh0KGJsb2IpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcbiAgdmFyIHByb21pc2UgPSBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKVxuICB2YXIgbWF0Y2ggPSAvY2hhcnNldD0oW0EtWmEtejAtOV8tXSspLy5leGVjKGJsb2IudHlwZSlcbiAgdmFyIGVuY29kaW5nID0gbWF0Y2ggPyBtYXRjaFsxXSA6ICd1dGYtOCdcbiAgcmVhZGVyLnJlYWRBc1RleHQoYmxvYiwgZW5jb2RpbmcpXG4gIHJldHVybiBwcm9taXNlXG59XG5cbmZ1bmN0aW9uIHJlYWRBcnJheUJ1ZmZlckFzVGV4dChidWYpIHtcbiAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYpXG4gIHZhciBjaGFycyA9IG5ldyBBcnJheSh2aWV3Lmxlbmd0aClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHZpZXcubGVuZ3RoOyBpKyspIHtcbiAgICBjaGFyc1tpXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUodmlld1tpXSlcbiAgfVxuICByZXR1cm4gY2hhcnMuam9pbignJylcbn1cblxuZnVuY3Rpb24gYnVmZmVyQ2xvbmUoYnVmKSB7XG4gIGlmIChidWYuc2xpY2UpIHtcbiAgICByZXR1cm4gYnVmLnNsaWNlKDApXG4gIH0gZWxzZSB7XG4gICAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYuYnl0ZUxlbmd0aClcbiAgICB2aWV3LnNldChuZXcgVWludDhBcnJheShidWYpKVxuICAgIHJldHVybiB2aWV3LmJ1ZmZlclxuICB9XG59XG5cbmZ1bmN0aW9uIEJvZHkoKSB7XG4gIHRoaXMuYm9keVVzZWQgPSBmYWxzZVxuXG4gIHRoaXMuX2luaXRCb2R5ID0gZnVuY3Rpb24oYm9keSkge1xuICAgIC8qXG4gICAgICBmZXRjaC1tb2NrIHdyYXBzIHRoZSBSZXNwb25zZSBvYmplY3QgaW4gYW4gRVM2IFByb3h5IHRvXG4gICAgICBwcm92aWRlIHVzZWZ1bCB0ZXN0IGhhcm5lc3MgZmVhdHVyZXMgc3VjaCBhcyBmbHVzaC4gSG93ZXZlciwgb25cbiAgICAgIEVTNSBicm93c2VycyB3aXRob3V0IGZldGNoIG9yIFByb3h5IHN1cHBvcnQgcG9sbHlmaWxscyBtdXN0IGJlIHVzZWQ7XG4gICAgICB0aGUgcHJveHktcG9sbHlmaWxsIGlzIHVuYWJsZSB0byBwcm94eSBhbiBhdHRyaWJ1dGUgdW5sZXNzIGl0IGV4aXN0c1xuICAgICAgb24gdGhlIG9iamVjdCBiZWZvcmUgdGhlIFByb3h5IGlzIGNyZWF0ZWQuIFRoaXMgY2hhbmdlIGVuc3VyZXNcbiAgICAgIFJlc3BvbnNlLmJvZHlVc2VkIGV4aXN0cyBvbiB0aGUgaW5zdGFuY2UsIHdoaWxlIG1haW50YWluaW5nIHRoZVxuICAgICAgc2VtYW50aWMgb2Ygc2V0dGluZyBSZXF1ZXN0LmJvZHlVc2VkIGluIHRoZSBjb25zdHJ1Y3RvciBiZWZvcmVcbiAgICAgIF9pbml0Qm9keSBpcyBjYWxsZWQuXG4gICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1hc3NpZ25cbiAgICB0aGlzLmJvZHlVc2VkID0gdGhpcy5ib2R5VXNlZFxuICAgIHRoaXMuX2JvZHlJbml0ID0gYm9keVxuICAgIGlmICghYm9keSkge1xuICAgICAgdGhpcy5fbm9Cb2R5ID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gJydcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmJsb2IgJiYgQmxvYi5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgdGhpcy5fYm9keUJsb2IgPSBib2R5XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmZvcm1EYXRhICYmIEZvcm1EYXRhLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5Rm9ybURhdGEgPSBib2R5XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LnNlYXJjaFBhcmFtcyAmJiBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keS50b1N0cmluZygpXG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmFycmF5QnVmZmVyICYmIHN1cHBvcnQuYmxvYiAmJiBpc0RhdGFWaWV3KGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIgPSBidWZmZXJDbG9uZShib2R5LmJ1ZmZlcilcbiAgICAgIC8vIElFIDEwLTExIGNhbid0IGhhbmRsZSBhIERhdGFWaWV3IGJvZHkuXG4gICAgICB0aGlzLl9ib2R5SW5pdCA9IG5ldyBCbG9iKFt0aGlzLl9ib2R5QXJyYXlCdWZmZXJdKVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5hcnJheUJ1ZmZlciAmJiAoQXJyYXlCdWZmZXIucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkgfHwgaXNBcnJheUJ1ZmZlclZpZXcoYm9keSkpKSB7XG4gICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIgPSBidWZmZXJDbG9uZShib2R5KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHkgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYm9keSlcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpKSB7XG4gICAgICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsICd0ZXh0L3BsYWluO2NoYXJzZXQ9VVRGLTgnKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QmxvYiAmJiB0aGlzLl9ib2R5QmxvYi50eXBlKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsIHRoaXMuX2JvZHlCbG9iLnR5cGUpXG4gICAgICB9IGVsc2UgaWYgKHN1cHBvcnQuc2VhcmNoUGFyYW1zICYmIFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9VVRGLTgnKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdXBwb3J0LmJsb2IpIHtcbiAgICB0aGlzLmJsb2IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgICBpZiAocmVqZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdGVkXG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlCbG9iKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9keUFycmF5QnVmZmVyXSkpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlGb3JtRGF0YSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgYmxvYicpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0aGlzLl9ib2R5VGV4dF0pKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRoaXMuYXJyYXlCdWZmZXIgPSBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5fYm9keUFycmF5QnVmZmVyKSB7XG4gICAgICB2YXIgaXNDb25zdW1lZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgICBpZiAoaXNDb25zdW1lZCkge1xuICAgICAgICByZXR1cm4gaXNDb25zdW1lZFxuICAgICAgfSBlbHNlIGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcodGhpcy5fYm9keUFycmF5QnVmZmVyKSkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5idWZmZXIuc2xpY2UoXG4gICAgICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnl0ZU9mZnNldCxcbiAgICAgICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlT2Zmc2V0ICsgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVMZW5ndGhcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUFycmF5QnVmZmVyKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5ibG9iKSB7XG4gICAgICByZXR1cm4gdGhpcy5ibG9iKCkudGhlbihyZWFkQmxvYkFzQXJyYXlCdWZmZXIpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgYXMgQXJyYXlCdWZmZXInKVxuICAgIH1cbiAgfVxuXG4gIHRoaXMudGV4dCA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgaWYgKHJlamVjdGVkKSB7XG4gICAgICByZXR1cm4gcmVqZWN0ZWRcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fYm9keUJsb2IpIHtcbiAgICAgIHJldHVybiByZWFkQmxvYkFzVGV4dCh0aGlzLl9ib2R5QmxvYilcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZWFkQXJyYXlCdWZmZXJBc1RleHQodGhpcy5fYm9keUFycmF5QnVmZmVyKSlcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlGb3JtRGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFzIHRleHQnKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlUZXh0KVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdXBwb3J0LmZvcm1EYXRhKSB7XG4gICAgdGhpcy5mb3JtRGF0YSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oZGVjb2RlKVxuICAgIH1cbiAgfVxuXG4gIHRoaXMuanNvbiA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnRleHQoKS50aGVuKEpTT04ucGFyc2UpXG4gIH1cblxuICByZXR1cm4gdGhpc1xufVxuXG4vLyBIVFRQIG1ldGhvZHMgd2hvc2UgY2FwaXRhbGl6YXRpb24gc2hvdWxkIGJlIG5vcm1hbGl6ZWRcbnZhciBtZXRob2RzID0gWydDT05ORUNUJywgJ0RFTEVURScsICdHRVQnLCAnSEVBRCcsICdPUFRJT05TJywgJ1BBVENIJywgJ1BPU1QnLCAnUFVUJywgJ1RSQUNFJ11cblxuZnVuY3Rpb24gbm9ybWFsaXplTWV0aG9kKG1ldGhvZCkge1xuICB2YXIgdXBjYXNlZCA9IG1ldGhvZC50b1VwcGVyQ2FzZSgpXG4gIHJldHVybiBtZXRob2RzLmluZGV4T2YodXBjYXNlZCkgPiAtMSA/IHVwY2FzZWQgOiBtZXRob2Rcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlcXVlc3QoaW5wdXQsIG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJlcXVlc3QpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUGxlYXNlIHVzZSB0aGUgXCJuZXdcIiBvcGVyYXRvciwgdGhpcyBET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4nKVxuICB9XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge31cbiAgdmFyIGJvZHkgPSBvcHRpb25zLmJvZHlcblxuICBpZiAoaW5wdXQgaW5zdGFuY2VvZiBSZXF1ZXN0KSB7XG4gICAgaWYgKGlucHV0LmJvZHlVc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKVxuICAgIH1cbiAgICB0aGlzLnVybCA9IGlucHV0LnVybFxuICAgIHRoaXMuY3JlZGVudGlhbHMgPSBpbnB1dC5jcmVkZW50aWFsc1xuICAgIGlmICghb3B0aW9ucy5oZWFkZXJzKSB7XG4gICAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhpbnB1dC5oZWFkZXJzKVxuICAgIH1cbiAgICB0aGlzLm1ldGhvZCA9IGlucHV0Lm1ldGhvZFxuICAgIHRoaXMubW9kZSA9IGlucHV0Lm1vZGVcbiAgICB0aGlzLnNpZ25hbCA9IGlucHV0LnNpZ25hbFxuICAgIGlmICghYm9keSAmJiBpbnB1dC5fYm9keUluaXQgIT0gbnVsbCkge1xuICAgICAgYm9keSA9IGlucHV0Ll9ib2R5SW5pdFxuICAgICAgaW5wdXQuYm9keVVzZWQgPSB0cnVlXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRoaXMudXJsID0gU3RyaW5nKGlucHV0KVxuICB9XG5cbiAgdGhpcy5jcmVkZW50aWFscyA9IG9wdGlvbnMuY3JlZGVudGlhbHMgfHwgdGhpcy5jcmVkZW50aWFscyB8fCAnc2FtZS1vcmlnaW4nXG4gIGlmIChvcHRpb25zLmhlYWRlcnMgfHwgIXRoaXMuaGVhZGVycykge1xuICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKG9wdGlvbnMuaGVhZGVycylcbiAgfVxuICB0aGlzLm1ldGhvZCA9IG5vcm1hbGl6ZU1ldGhvZChvcHRpb25zLm1ldGhvZCB8fCB0aGlzLm1ldGhvZCB8fCAnR0VUJylcbiAgdGhpcy5tb2RlID0gb3B0aW9ucy5tb2RlIHx8IHRoaXMubW9kZSB8fCBudWxsXG4gIHRoaXMuc2lnbmFsID0gb3B0aW9ucy5zaWduYWwgfHwgdGhpcy5zaWduYWwgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoJ0Fib3J0Q29udHJvbGxlcicgaW4gZykge1xuICAgICAgdmFyIGN0cmwgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgICByZXR1cm4gY3RybC5zaWduYWw7XG4gICAgfVxuICB9KCkpO1xuICB0aGlzLnJlZmVycmVyID0gbnVsbFxuXG4gIGlmICgodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpICYmIGJvZHkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCb2R5IG5vdCBhbGxvd2VkIGZvciBHRVQgb3IgSEVBRCByZXF1ZXN0cycpXG4gIH1cbiAgdGhpcy5faW5pdEJvZHkoYm9keSlcblxuICBpZiAodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpIHtcbiAgICBpZiAob3B0aW9ucy5jYWNoZSA9PT0gJ25vLXN0b3JlJyB8fCBvcHRpb25zLmNhY2hlID09PSAnbm8tY2FjaGUnKSB7XG4gICAgICAvLyBTZWFyY2ggZm9yIGEgJ18nIHBhcmFtZXRlciBpbiB0aGUgcXVlcnkgc3RyaW5nXG4gICAgICB2YXIgcmVQYXJhbVNlYXJjaCA9IC8oWz8mXSlfPVteJl0qL1xuICAgICAgaWYgKHJlUGFyYW1TZWFyY2gudGVzdCh0aGlzLnVybCkpIHtcbiAgICAgICAgLy8gSWYgaXQgYWxyZWFkeSBleGlzdHMgdGhlbiBzZXQgdGhlIHZhbHVlIHdpdGggdGhlIGN1cnJlbnQgdGltZVxuICAgICAgICB0aGlzLnVybCA9IHRoaXMudXJsLnJlcGxhY2UocmVQYXJhbVNlYXJjaCwgJyQxXz0nICsgbmV3IERhdGUoKS5nZXRUaW1lKCkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPdGhlcndpc2UgYWRkIGEgbmV3ICdfJyBwYXJhbWV0ZXIgdG8gdGhlIGVuZCB3aXRoIHRoZSBjdXJyZW50IHRpbWVcbiAgICAgICAgdmFyIHJlUXVlcnlTdHJpbmcgPSAvXFw/L1xuICAgICAgICB0aGlzLnVybCArPSAocmVRdWVyeVN0cmluZy50ZXN0KHRoaXMudXJsKSA/ICcmJyA6ICc/JykgKyAnXz0nICsgbmV3IERhdGUoKS5nZXRUaW1lKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBSZXF1ZXN0KHRoaXMsIHtib2R5OiB0aGlzLl9ib2R5SW5pdH0pXG59XG5cbmZ1bmN0aW9uIGRlY29kZShib2R5KSB7XG4gIHZhciBmb3JtID0gbmV3IEZvcm1EYXRhKClcbiAgYm9keVxuICAgIC50cmltKClcbiAgICAuc3BsaXQoJyYnKVxuICAgIC5mb3JFYWNoKGZ1bmN0aW9uKGJ5dGVzKSB7XG4gICAgICBpZiAoYnl0ZXMpIHtcbiAgICAgICAgdmFyIHNwbGl0ID0gYnl0ZXMuc3BsaXQoJz0nKVxuICAgICAgICB2YXIgbmFtZSA9IHNwbGl0LnNoaWZ0KCkucmVwbGFjZSgvXFwrL2csICcgJylcbiAgICAgICAgdmFyIHZhbHVlID0gc3BsaXQuam9pbignPScpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG4gICAgICAgIGZvcm0uYXBwZW5kKGRlY29kZVVSSUNvbXBvbmVudChuYW1lKSwgZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKSlcbiAgICAgIH1cbiAgICB9KVxuICByZXR1cm4gZm9ybVxufVxuXG5mdW5jdGlvbiBwYXJzZUhlYWRlcnMocmF3SGVhZGVycykge1xuICB2YXIgaGVhZGVycyA9IG5ldyBIZWFkZXJzKClcbiAgLy8gUmVwbGFjZSBpbnN0YW5jZXMgb2YgXFxyXFxuIGFuZCBcXG4gZm9sbG93ZWQgYnkgYXQgbGVhc3Qgb25lIHNwYWNlIG9yIGhvcml6b250YWwgdGFiIHdpdGggYSBzcGFjZVxuICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMlxuICB2YXIgcHJlUHJvY2Vzc2VkSGVhZGVycyA9IHJhd0hlYWRlcnMucmVwbGFjZSgvXFxyP1xcbltcXHQgXSsvZywgJyAnKVxuICAvLyBBdm9pZGluZyBzcGxpdCB2aWEgcmVnZXggdG8gd29yayBhcm91bmQgYSBjb21tb24gSUUxMSBidWcgd2l0aCB0aGUgY29yZS1qcyAzLjYuMCByZWdleCBwb2x5ZmlsbFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ2l0aHViL2ZldGNoL2lzc3Vlcy83NDhcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzc1MVxuICBwcmVQcm9jZXNzZWRIZWFkZXJzXG4gICAgLnNwbGl0KCdcXHInKVxuICAgIC5tYXAoZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICByZXR1cm4gaGVhZGVyLmluZGV4T2YoJ1xcbicpID09PSAwID8gaGVhZGVyLnN1YnN0cigxLCBoZWFkZXIubGVuZ3RoKSA6IGhlYWRlclxuICAgIH0pXG4gICAgLmZvckVhY2goZnVuY3Rpb24obGluZSkge1xuICAgICAgdmFyIHBhcnRzID0gbGluZS5zcGxpdCgnOicpXG4gICAgICB2YXIga2V5ID0gcGFydHMuc2hpZnQoKS50cmltKClcbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gcGFydHMuam9pbignOicpLnRyaW0oKVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGhlYWRlcnMuYXBwZW5kKGtleSwgdmFsdWUpXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdSZXNwb25zZSAnICsgZXJyb3IubWVzc2FnZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIHJldHVybiBoZWFkZXJzXG59XG5cbkJvZHkuY2FsbChSZXF1ZXN0LnByb3RvdHlwZSlcblxuZXhwb3J0IGZ1bmN0aW9uIFJlc3BvbnNlKGJvZHlJbml0LCBvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZXNwb25zZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQbGVhc2UgdXNlIHRoZSBcIm5ld1wiIG9wZXJhdG9yLCB0aGlzIERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLicpXG4gIH1cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9XG4gIH1cblxuICB0aGlzLnR5cGUgPSAnZGVmYXVsdCdcbiAgdGhpcy5zdGF0dXMgPSBvcHRpb25zLnN0YXR1cyA9PT0gdW5kZWZpbmVkID8gMjAwIDogb3B0aW9ucy5zdGF0dXNcbiAgaWYgKHRoaXMuc3RhdHVzIDwgMjAwIHx8IHRoaXMuc3RhdHVzID4gNTk5KSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJGYWlsZWQgdG8gY29uc3RydWN0ICdSZXNwb25zZSc6IFRoZSBzdGF0dXMgcHJvdmlkZWQgKDApIGlzIG91dHNpZGUgdGhlIHJhbmdlIFsyMDAsIDU5OV0uXCIpXG4gIH1cbiAgdGhpcy5vayA9IHRoaXMuc3RhdHVzID49IDIwMCAmJiB0aGlzLnN0YXR1cyA8IDMwMFxuICB0aGlzLnN0YXR1c1RleHQgPSBvcHRpb25zLnN0YXR1c1RleHQgPT09IHVuZGVmaW5lZCA/ICcnIDogJycgKyBvcHRpb25zLnN0YXR1c1RleHRcbiAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICB0aGlzLnVybCA9IG9wdGlvbnMudXJsIHx8ICcnXG4gIHRoaXMuX2luaXRCb2R5KGJvZHlJbml0KVxufVxuXG5Cb2R5LmNhbGwoUmVzcG9uc2UucHJvdG90eXBlKVxuXG5SZXNwb25zZS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBSZXNwb25zZSh0aGlzLl9ib2R5SW5pdCwge1xuICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgc3RhdHVzVGV4dDogdGhpcy5zdGF0dXNUZXh0LFxuICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHRoaXMuaGVhZGVycyksXG4gICAgdXJsOiB0aGlzLnVybFxuICB9KVxufVxuXG5SZXNwb25zZS5lcnJvciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogMjAwLCBzdGF0dXNUZXh0OiAnJ30pXG4gIHJlc3BvbnNlLm9rID0gZmFsc2VcbiAgcmVzcG9uc2Uuc3RhdHVzID0gMFxuICByZXNwb25zZS50eXBlID0gJ2Vycm9yJ1xuICByZXR1cm4gcmVzcG9uc2Vcbn1cblxudmFyIHJlZGlyZWN0U3RhdHVzZXMgPSBbMzAxLCAzMDIsIDMwMywgMzA3LCAzMDhdXG5cblJlc3BvbnNlLnJlZGlyZWN0ID0gZnVuY3Rpb24odXJsLCBzdGF0dXMpIHtcbiAgaWYgKHJlZGlyZWN0U3RhdHVzZXMuaW5kZXhPZihzdGF0dXMpID09PSAtMSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHN0YXR1cyBjb2RlJylcbiAgfVxuXG4gIHJldHVybiBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogc3RhdHVzLCBoZWFkZXJzOiB7bG9jYXRpb246IHVybH19KVxufVxuXG5leHBvcnQgdmFyIERPTUV4Y2VwdGlvbiA9IGcuRE9NRXhjZXB0aW9uXG50cnkge1xuICBuZXcgRE9NRXhjZXB0aW9uKClcbn0gY2F0Y2ggKGVycikge1xuICBET01FeGNlcHRpb24gPSBmdW5jdGlvbihtZXNzYWdlLCBuYW1lKSB7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZVxuICAgIHRoaXMubmFtZSA9IG5hbWVcbiAgICB2YXIgZXJyb3IgPSBFcnJvcihtZXNzYWdlKVxuICAgIHRoaXMuc3RhY2sgPSBlcnJvci5zdGFja1xuICB9XG4gIERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSlcbiAgRE9NRXhjZXB0aW9uLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IERPTUV4Y2VwdGlvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmV0Y2goaW5wdXQsIGluaXQpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoaW5wdXQsIGluaXQpXG5cbiAgICBpZiAocmVxdWVzdC5zaWduYWwgJiYgcmVxdWVzdC5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgcmV0dXJuIHJlamVjdChuZXcgRE9NRXhjZXB0aW9uKCdBYm9ydGVkJywgJ0Fib3J0RXJyb3InKSlcbiAgICB9XG5cbiAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KClcblxuICAgIGZ1bmN0aW9uIGFib3J0WGhyKCkge1xuICAgICAgeGhyLmFib3J0KClcbiAgICB9XG5cbiAgICB4aHIub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgb3B0aW9ucyA9IHtcbiAgICAgICAgc3RhdHVzVGV4dDogeGhyLnN0YXR1c1RleHQsXG4gICAgICAgIGhlYWRlcnM6IHBhcnNlSGVhZGVycyh4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgfHwgJycpXG4gICAgICB9XG4gICAgICAvLyBUaGlzIGNoZWNrIGlmIHNwZWNpZmljYWxseSBmb3Igd2hlbiBhIHVzZXIgZmV0Y2hlcyBhIGZpbGUgbG9jYWxseSBmcm9tIHRoZSBmaWxlIHN5c3RlbVxuICAgICAgLy8gT25seSBpZiB0aGUgc3RhdHVzIGlzIG91dCBvZiBhIG5vcm1hbCByYW5nZVxuICAgICAgaWYgKHJlcXVlc3QudXJsLmluZGV4T2YoJ2ZpbGU6Ly8nKSA9PT0gMCAmJiAoeGhyLnN0YXR1cyA8IDIwMCB8fCB4aHIuc3RhdHVzID4gNTk5KSkge1xuICAgICAgICBvcHRpb25zLnN0YXR1cyA9IDIwMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9wdGlvbnMuc3RhdHVzID0geGhyLnN0YXR1cztcbiAgICAgIH1cbiAgICAgIG9wdGlvbnMudXJsID0gJ3Jlc3BvbnNlVVJMJyBpbiB4aHIgPyB4aHIucmVzcG9uc2VVUkwgOiBvcHRpb25zLmhlYWRlcnMuZ2V0KCdYLVJlcXVlc3QtVVJMJylcbiAgICAgIHZhciBib2R5ID0gJ3Jlc3BvbnNlJyBpbiB4aHIgPyB4aHIucmVzcG9uc2UgOiB4aHIucmVzcG9uc2VUZXh0XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZXNvbHZlKG5ldyBSZXNwb25zZShib2R5LCBvcHRpb25zKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgVHlwZUVycm9yKCdOZXR3b3JrIHJlcXVlc3QgZmFpbGVkJykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIHhoci5vbnRpbWVvdXQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgVHlwZUVycm9yKCdOZXR3b3JrIHJlcXVlc3QgdGltZWQgb3V0JykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIHhoci5vbmFib3J0ID0gZnVuY3Rpb24oKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IERPTUV4Y2VwdGlvbignQWJvcnRlZCcsICdBYm9ydEVycm9yJykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZpeFVybCh1cmwpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB1cmwgPT09ICcnICYmIGcubG9jYXRpb24uaHJlZiA/IGcubG9jYXRpb24uaHJlZiA6IHVybFxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9XG4gICAgfVxuXG4gICAgeGhyLm9wZW4ocmVxdWVzdC5tZXRob2QsIGZpeFVybChyZXF1ZXN0LnVybCksIHRydWUpXG5cbiAgICBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ2luY2x1ZGUnKSB7XG4gICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gdHJ1ZVxuICAgIH0gZWxzZSBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ29taXQnKSB7XG4gICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoJ3Jlc3BvbnNlVHlwZScgaW4geGhyKSB7XG4gICAgICBpZiAoc3VwcG9ydC5ibG9iKSB7XG4gICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYmxvYidcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHN1cHBvcnQuYXJyYXlCdWZmZXJcbiAgICAgICkge1xuICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2FycmF5YnVmZmVyJ1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpbml0ICYmIHR5cGVvZiBpbml0LmhlYWRlcnMgPT09ICdvYmplY3QnICYmICEoaW5pdC5oZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycyB8fCAoZy5IZWFkZXJzICYmIGluaXQuaGVhZGVycyBpbnN0YW5jZW9mIGcuSGVhZGVycykpKSB7XG4gICAgICB2YXIgbmFtZXMgPSBbXTtcbiAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGluaXQuaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG4gICAgICAgIG5hbWVzLnB1c2gobm9ybWFsaXplTmFtZShuYW1lKSlcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgbm9ybWFsaXplVmFsdWUoaW5pdC5oZWFkZXJzW25hbWVdKSlcbiAgICAgIH0pXG4gICAgICByZXF1ZXN0LmhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgICAgICBpZiAobmFtZXMuaW5kZXhPZihuYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihuYW1lLCB2YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxdWVzdC5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgdmFsdWUpXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChyZXF1ZXN0LnNpZ25hbCkge1xuICAgICAgcmVxdWVzdC5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydFhocilcblxuICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAvLyBET05FIChzdWNjZXNzIG9yIGZhaWx1cmUpXG4gICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gNCkge1xuICAgICAgICAgIHJlcXVlc3Quc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgYWJvcnRYaHIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB4aHIuc2VuZCh0eXBlb2YgcmVxdWVzdC5fYm9keUluaXQgPT09ICd1bmRlZmluZWQnID8gbnVsbCA6IHJlcXVlc3QuX2JvZHlJbml0KVxuICB9KVxufVxuXG5mZXRjaC5wb2x5ZmlsbCA9IHRydWVcblxuaWYgKCFnLmZldGNoKSB7XG4gIGcuZmV0Y2ggPSBmZXRjaFxuICBnLkhlYWRlcnMgPSBIZWFkZXJzXG4gIGcuUmVxdWVzdCA9IFJlcXVlc3RcbiAgZy5SZXNwb25zZSA9IFJlc3BvbnNlXG59XG4iLCIvKiB0c2xpbnQ6ZGlzYWJsZTpuby1udWxsLWtleXdvcmQgbm8tYW55IG5vLXVuc2FmZS1hbnkgKi9cbmltcG9ydCB7IGZldGNoIH0gZnJvbSBcIndoYXR3Zy1mZXRjaFwiO1xuaW1wb3J0IHsgQWxsSWNvbk5hbWVzIH0gZnJvbSBcInJlYWN0LXVpXCI7XG5cbmltcG9ydCB7IEVycm9yRmlyc3RDYWxsYmFjaywgcmVqZWN0IH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9UeXBpbmdVdGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBJRm9ybSB9IGZyb20gXCIuLi8uLi9FbmdpbmUvRm9ybS9JRm9ybVwiO1xuaW1wb3J0IHsgTG9hZEludG9Eb2N1bWVudCB9IGZyb20gXCIuLi8uLi9IZWxwZXJzL0xvYWRJbnRvRG9jdW1lbnRcIjtcbmltcG9ydCB0eXBlIHsgSVB1YmxpY0Zvcm0gfSBmcm9tIFwiLi4vUHVibGljRm9ybS9JUHVibGljRm9ybVwiO1xuaW1wb3J0IHR5cGUgeyBJS2VXZWJUZW1wbGF0ZXNBcGlDbGllbnQgfSBmcm9tIFwiLi4vVHlwZXMvSUtlV2ViVGVtcGxhdGVzQXBpQ2xpZW50XCI7XG5pbXBvcnQgdHlwZSB7IENsaWVudERyYWZ0SW5mb1Jlc3BvbnNlIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DbGllbnREcmFmdEluZm8vQ2xpZW50RHJhZnRJbmZvUmVzcG9uc2VcIjtcbmltcG9ydCB7IGdldENsaWVudERyYWZ0SW5mb1VybCB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvQ2xpZW50RHJhZnRJbmZvL0dldENsaWVudERyYWZ0SW5mb1VybFwiO1xuaW1wb3J0IHsgQVVPT3B0aW9ucyB9IGZyb20gXCIuLi9UeXBlcy9BVU9PcHRpb25zXCI7XG5pbXBvcnQgdHlwZSB7IExheW91dEV2ZW50c1N0YXRpYyB9IGZyb20gXCIuLi8uLi9Db250cm9scy9JbnRlcm5hbHMvTGF5b3V0RXZlbnRzL0xheW91dEV2ZW50c1wiO1xuXG5pbXBvcnQgeyBjbGllbnRTZXR0aW5ncyB9IGZyb20gXCIuL0NsaWVudFNldHRpbmdzXCI7XG5pbXBvcnQgeyBjcmVhdGVMZWdhY3lQdWJsaWNGb3JtIH0gZnJvbSBcIi4vTGVnYWN5UHVibGljRm9ybS9DcmVhdGVMZWdhY3lQdWJsaWNGb3JtXCI7XG5cbnR5cGUgRm9ybUNvbnRhaW5lciA9IHN0cmluZyB8IEhUTUxFbGVtZW50O1xuXG50eXBlIEVuZ2luZUVudHJ5UG9pbnQgPSAoKSA9PiB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkRlc2NyaXB0aW9uIHtcbiAgICBpY29uOiBBbGxJY29uTmFtZXM7XG4gICAgdGV4dD86IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xuICAgIG9uQ2xpY2s6ICgpID0+IHZvaWQ7XG4gICAgaGludD86IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBpZDogc3RyaW5nO1xuICAgIHRpZD86IHN0cmluZztcbiAgICB3ZWlnaHQ6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFJlbmRlckZvcm1TZXR0aW5ncyB7XG4gICAgZ2Z2OiBzdHJpbmc7XG4gICAgZW5naW5lVmVyc2lvbj86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgcmVzb3VyY2VzVmVyc2lvbjogc3RyaW5nO1xuICAgIHRoZW1lPzogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZztcbiAgICByZXNvdXJjZVpvbmU/OiBzdHJpbmc7XG4gICAgcmVuZGVyRm9ybTogdW5kZWZpbmVkIHwgRW5naW5lRW50cnlQb2ludDtcbiAgICB0ZW1wbGF0ZXNBcGk/OiBJS2VXZWJUZW1wbGF0ZXNBcGlDbGllbnQ7XG4gICAgcGFuZWxBY3Rpb25zPzogQWN0aW9uRGVzY3JpcHRpb25bXTtcbn1cblxudHlwZSBTdGFydEZvcm1GdW5jID0gKHBhZ2VDb250ZW50OiBGb3JtQ29udGFpbmVyLCBleHRlbmRlZFNldHRpbmdzOiBSZW5kZXJGb3JtU2V0dGluZ3MpID0+IFByb21pc2U8SUZvcm0+O1xuXG5pbnRlcmZhY2UgQ2FuZHlHbG9iYWxJbmplY3RlZFZhciB7XG4gICAgc3RhcnQ6IChwYWdlQ29udGVudDogRm9ybUNvbnRhaW5lciwgb3B0aW9uczogU3RhcnRGb3JtT3B0aW9ucywgY2FsbGJhY2s/OiBFcnJvckZpcnN0Q2FsbGJhY2s8SVB1YmxpY0Zvcm0+KSA9PiB2b2lkO1xuICAgIGtlZm9ybXNVcmw/OiBzdHJpbmc7XG4gICAgcGFydGlhbFJlbmRlcmluZ0ZvcklFODogYm9vbGVhbjtcbiAgICBlbnRyeVBvaW50OiB7IFtrZXk6IHN0cmluZ106IFN0YXJ0Rm9ybUZ1bmMgfTtcbiAgICBsb2FkRXJyb3I/OiB1bmtub3duO1xufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gICAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgICAgIENGOiBDYW5keUdsb2JhbEluamVjdGVkVmFyO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbmFtZXNwYWNlXG4gICAgbmFtZXNwYWNlIE5vZGVKUyB7XG4gICAgICAgIGludGVyZmFjZSBHbG9iYWwge1xuICAgICAgICAgICAgQ0Y6IENhbmR5R2xvYmFsSW5qZWN0ZWRWYXI7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmRlY2xhcmUgY29uc3QgZ2xvYmFsOiBXaW5kb3c7XG5cbmZ1bmN0aW9uIGRlZmF1bHRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICAvKiBlbXB0eSAqL1xufVxuXG5mdW5jdGlvbiBwYXJzZUJvb2wodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCJmYWxzZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gQm9vbGVhbih2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIHVybChyZWxhdGl2ZVVybDogc3RyaW5nID0gXCJcIik6IHN0cmluZyB7XG4gICAgY29uc3QgYmFzZVVybCA9IGdsb2JhbC5DRi5rZWZvcm1zVXJsIHx8IFwiXCI7XG5cbiAgICByZXR1cm4gYCR7YmFzZVVybH0vJHtyZWxhdGl2ZVVybH1gLnJlcGxhY2UoLyhbXjpdKVxcL3syLH0vZywgXCIkMS9cIik7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkVXJsKHBhdGg6IHN0cmluZywgcGFyYW1zOiB7IFtwYXJhbU5hbWU6IHN0cmluZ106IHVuZGVmaW5lZCB8IHN0cmluZyB9KTogc3RyaW5nIHtcbiAgICBpZiAocGFyYW1zID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICAgIGNvbnN0IHF1ZXJ5UGFydHM6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChjb25zdCBwYXJhbU5hbWUgb2YgT2JqZWN0LmtleXMocGFyYW1zKSkge1xuICAgICAgICBjb25zdCBwYXJhbVZhbHVlID0gcGFyYW1zW3BhcmFtTmFtZV07XG4gICAgICAgIGlmIChwYXJhbVZhbHVlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcXVlcnlQYXJ0cy5wdXNoKGAke3BhcmFtTmFtZX09JHtlbmNvZGVVUklDb21wb25lbnQocGFyYW1WYWx1ZSl9YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHF1ZXJ5UGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aCArIFwiP1wiICsgcXVlcnlQYXJ0cy5qb2luKFwiJlwiKTtcbn1cblxuZnVuY3Rpb24gaXNBbGxvd2VkKGRvbWFpbnM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKGBeKD86JHtkb21haW5zLnJlcGxhY2UoL1xcLi9nLCBcIlxcXFwuXCIpLnJlcGxhY2UoL1xcKi9nLCBcIlthLXowLTktLl9dK1wiKX0pJGApLnRlc3QoXG4gICAgICAgIGdsb2JhbC5sb2NhdGlvbi5ob3N0XG4gICAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFyYW1ldGVyQnlOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgKGdsb2JhbC5sb2NhdGlvbi5zZWFyY2hcbiAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgIC5yZXBsYWNlKC9eKFxcP3wjfCYpLywgXCJcIilcbiAgICAgICAgICAgIC5zcGxpdChcIiZcIilcbiAgICAgICAgICAgIC5tYXAocGFyYW0gPT4gcGFyYW0ucmVwbGFjZSgvXFwrL2csIFwiIFwiKS5zcGxpdChcIj1cIikubWFwKGRlY29kZVVSSUNvbXBvbmVudCkpXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dHJpcGxlLWVxdWFsc1xuICAgICAgICAgICAgLmZpbmQoKFtrZXldKSA9PiBrZXkgPT0gbmFtZSkgfHwgW10pWzFdXG4gICAgKTtcbn1cblxudHlwZSBUYXNrID0gKGNhbGxiYWNrOiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCkgPT4gdm9pZDtcblxuZnVuY3Rpb24gcnVuUGFyYWxsZWwodGFza3M6IFRhc2tbXSwgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgbGV0IGNvbXBsZXRlZCA9IDA7XG5cbiAgICB0YXNrcy5mb3JFYWNoKHRhc2sgPT4ge1xuICAgICAgICB0YXNrKGVycm9yID0+IHtcbiAgICAgICAgICAgIGlmIChjb21wbGV0ZWQgPT09IHRhc2tzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbXBsZXRlZCA9IHRhc2tzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJvcik7XG5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb21wbGV0ZWQgKz0gMTtcbiAgICAgICAgICAgIGlmIChjb21wbGV0ZWQgPT09IHRhc2tzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuXG5pbnRlcmZhY2UgU3RhcnRGb3JtU2V0dGluZyB7XG4gICAgZ2Z2OiBzdHJpbmc7XG4gICAgZW5naW5lVmVyc2lvbj86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgcmVzb3VyY2Vab25lPzogc3RyaW5nO1xuICAgIHJlc291cmNlc1ZlcnNpb246IHN0cmluZztcbiAgICB0aGVtZT86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0VuZ2luZVZlcnNpb25HcmVhdGVyVGhhbk9yRXF1YWwobGVmdDogc3RyaW5nLCByaWdodDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbGVmdE51bWJlcnMgPSBsZWZ0XG4gICAgICAgICAgICAuc3BsaXQoXCIuXCIpXG4gICAgICAgICAgICAuc2xpY2UoMCwgMylcbiAgICAgICAgICAgIC5tYXAoeCA9PiBwYXJzZUludCh4LCAxMCkpO1xuICAgICAgICBjb25zdCByaWdodE51bWJlcnMgPSByaWdodFxuICAgICAgICAgICAgLnNwbGl0KFwiLlwiKVxuICAgICAgICAgICAgLnNsaWNlKDAsIDMpXG4gICAgICAgICAgICAubWFwKHggPT4gcGFyc2VJbnQoeCwgMTApKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChsZWZ0TnVtYmVyc1swXSA/PyAwKSA+IChyaWdodE51bWJlcnNbMF0gPz8gMCkgfHxcbiAgICAgICAgICAgICgobGVmdE51bWJlcnNbMF0gPz8gMCkgPT09IChyaWdodE51bWJlcnNbMF0gPz8gMCkgJiZcbiAgICAgICAgICAgICAgICAoKGxlZnROdW1iZXJzWzFdID8/IDApID4gKHJpZ2h0TnVtYmVyc1sxXSA/PyAwKSB8fFxuICAgICAgICAgICAgICAgICAgICAoKGxlZnROdW1iZXJzWzFdID8/IDApID09PSAocmlnaHROdW1iZXJzWzFdID8/IDApICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAobGVmdE51bWJlcnNbMl0gPz8gMCkgPj0gKHJpZ2h0TnVtYmVyc1syXSA/PyAwKSkpKVxuICAgICAgICApO1xuICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBsb2FkRm9ybShzZXR0aW5nczogU3RhcnRGb3JtU2V0dGluZywgY2FsbGJhY2s6IChlcnJvcj86IG51bGwgfCB1bmRlZmluZWQgfCBFcnJvcikgPT4gdm9pZCk6IHZvaWQge1xuICAgIGNvbnN0IHsgZ2Z2LCBlbmdpbmVWZXJzaW9uLCByZXNvdXJjZXNWZXJzaW9uIH0gPSBzZXR0aW5ncztcblxuICAgIGlmIChnbG9iYWwuQ0YuZW50cnlQb2ludFtnZnZdKSB7XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaXNOZWVkRW5naW5lID0gZW5naW5lVmVyc2lvbiAmJiAhZ2xvYmFsW2VuZ2luZVZlcnNpb25dO1xuICAgIGNvbnN0IG5vU3R5bGVzRm9yR2Z2ID0gZmFsc2U7IC8vIGVuZ2luZVZlcnNpb24gIT0gdW5kZWZpbmVkICYmIChpc0VuZ2luZVZlcnNpb25HcmVhdGVyVGhhbk9yRXF1YWwoZW5naW5lVmVyc2lvbiwgXCI0LjIxNC4wXCIpIHx8IGVuZ2luZVZlcnNpb24gPT09IFwibG9jYWxcIik7XG4gICAgY29uc3QgbmVlZExvYWRTdHlsZXNGb3JHZnYgPSAhbm9TdHlsZXNGb3JHZnY7XG4gICAgY29uc3QgbWluID0gZ2V0UGFyYW1ldGVyQnlOYW1lKFwiZGVidWdcIikgPT09IFwidHJ1ZVwiID8gXCJcIiA6IFwiLm1pblwiO1xuICAgIGNvbnN0IHRhc2tzOiBUYXNrW10gPSBbXTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHsgdjogcmVzb3VyY2VzVmVyc2lvbiwgcmVzb3VyY2Vab25lOiBzZXR0aW5ncy5yZXNvdXJjZVpvbmUgfTtcbiAgICBpZiAobmVlZExvYWRTdHlsZXNGb3JHZnYpIHtcbiAgICAgICAgdGFza3MucHVzaChjYiA9PlxuICAgICAgICAgICAgTG9hZEludG9Eb2N1bWVudC5zdHlsZVNoZWV0KHVybChidWlsZFVybChgc3RhdGljL3B1YmxpYy9zdHlsZXMvJHtnZnZ9JHttaW59LmNzc2AsIHBhcmFtcykpLCB0cnVlLCBjYilcbiAgICAgICAgKTtcbiAgICB9XG4gICAgdGFza3MucHVzaChjYiA9PiBMb2FkSW50b0RvY3VtZW50LnNjcmlwdCh1cmwoYnVpbGRVcmwoYHN0YXRpYy9wdWJsaWMvc2NyaXB0cy8ke2dmdn0ke21pbn0uanNgLCBwYXJhbXMpKSwgY2IpKTtcblxuICAgIGlmIChpc05lZWRFbmdpbmUpIHtcbiAgICAgICAgdGFza3MucHVzaChcbiAgICAgICAgICAgIGNiID0+XG4gICAgICAgICAgICAgICAgTG9hZEludG9Eb2N1bWVudC5zdHlsZVNoZWV0KFxuICAgICAgICAgICAgICAgICAgICB1cmwoYnVpbGRVcmwoYHN0YXRpYy9wdWJsaWMvc3R5bGVzL2NhbmR5XyR7ZW5naW5lVmVyc2lvbn0ke21pbn0uY3NzYCwgcGFyYW1zKSksXG4gICAgICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjYlxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBjYiA9PlxuICAgICAgICAgICAgICAgIExvYWRJbnRvRG9jdW1lbnQuc2NyaXB0KFxuICAgICAgICAgICAgICAgICAgICB1cmwoYnVpbGRVcmwoYHN0YXRpYy9wdWJsaWMvc2NyaXB0cy9jYW5keV8ke2VuZ2luZVZlcnNpb259JHttaW59LmpzYCwgcGFyYW1zKSksXG4gICAgICAgICAgICAgICAgICAgIGNiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJ1blBhcmFsbGVsKHRhc2tzLCBjYWxsYmFjayk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckZvcm0oXG4gICAgcGFnZUNvbnRlbnQ6IEZvcm1Db250YWluZXIsXG4gICAgZXh0ZW5kZWRTZXR0aW5nczogUmVuZGVyRm9ybVNldHRpbmdzLFxuICAgIGNhbGxiYWNrOiBFcnJvckZpcnN0Q2FsbGJhY2s8SVB1YmxpY0Zvcm0+XG4pOiB2b2lkIHtcbiAgICBjb25zdCBmb3JtRW50cnlQb2ludCA9XG4gICAgICAgIGdsb2JhbC5DRi5lbnRyeVBvaW50W2V4dGVuZGVkU2V0dGluZ3MuZ2Z2XSA/PyByZWplY3QoYEZvcm0gZW50cnkgcG9pbnQgJHtleHRlbmRlZFNldHRpbmdzLmdmdn0gbm90IGZvdW5kLmApO1xuICAgIGZvcm1FbnRyeVBvaW50KHBhZ2VDb250ZW50LCBleHRlbmRlZFNldHRpbmdzKVxuICAgICAgICAudGhlbihmb3JtID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHB1YmxpY0Zvcm0gPSBmb3JtLnB1YmxpY0Zvcm0gfHwgY3JlYXRlTGVnYWN5UHVibGljRm9ybShmb3JtKTtcblxuICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcHVibGljRm9ybSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChjYWxsYmFjayk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhcnRGb3JtT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8QVVPT3B0aW9ucz4ge1xuICAgIG5zOiBzdHJpbmc7XG4gICAgZHJhZnRJZDogc3RyaW5nO1xuICAgIGdmdj86IHN0cmluZztcbiAgICByZXNvdXJjZVpvbmU/OiBzdHJpbmc7XG4gICAgdGVtcGxhdGVzQXBpPzogSUtlV2ViVGVtcGxhdGVzQXBpQ2xpZW50O1xuICAgIGZlZWRiYWNrRW5hYmxlZD86IGJvb2xlYW47XG4gICAgaXNEaXNhYmxlZENsb3NlQnV0dG9uPzogYm9vbGVhbjtcbiAgICBpc0Rpc2FibGVkQ2xvc2VBbmRTYXZlQnV0dG9uPzogYm9vbGVhbjtcbiAgICBpc0Rpc2FibGVkQ2xlYW5Gb3JtPzogYm9vbGVhbjtcbiAgICB0aGVtZT86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgYXV0aGVudGljYXRpb24/OiBcImJyb3dzZXItY3JlZGVudGlhbHMtaW5jbHVkZVwiIHwgeyBhdXRoU2lkOiBzdHJpbmcgfTtcbiAgICBmZXRjaD86IHR5cGVvZiBmZXRjaDtcbiAgICBtb2RlbD86IHsgW3BhdGg6IHN0cmluZ106IHVua25vd24gfTtcbiAgICBwYW5lbEFjdGlvbnM/OiBBY3Rpb25EZXNjcmlwdGlvbltdO1xuICAgIGV2ZW50RW1pdHRlcj86IExheW91dEV2ZW50c1N0YXRpYztcbiAgICBlbXBsb3llcklkPzogc3RyaW5nO1xuICAgIHNob3dOYXZpZ2F0aW9uU2lkZWJhcj86IGJvb2xlYW47XG4gICAgb25SZW1vdmVBdHRhY2htZW50PzogKCkgPT4gdm9pZDtcbn1cblxuZnVuY3Rpb24gZ2V0RW5naW5lRW50cnlQb2ludChlbmdpbmVWZXJzaW9uOiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nKTogdW5kZWZpbmVkIHwgRW5naW5lRW50cnlQb2ludCB7XG4gICAgaWYgKGVuZ2luZVZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICAgIHJldHVybiBnbG9iYWxbZW5naW5lVmVyc2lvbl0gJiYgZ2xvYmFsW2VuZ2luZVZlcnNpb25dLmRlZmF1bHQ7XG59XG5cbmZ1bmN0aW9uIHN0YXJ0KFxuICAgIHBhZ2VDb250ZW50OiBGb3JtQ29udGFpbmVyLFxuICAgIG9wdGlvbnM6IFN0YXJ0Rm9ybU9wdGlvbnMsXG4gICAgY2FsbGJhY2s6IEVycm9yRmlyc3RDYWxsYmFjazxJUHVibGljRm9ybT4gPSBkZWZhdWx0Q2FsbGJhY2tcbik6IHZvaWQge1xuICAgIGxldCBlcnJvciA9IG51bGw7XG4gICAgY29uc3QgeyBucywgZHJhZnRJZCB9ID0gb3B0aW9ucztcblxuICAgIGlmICghaXNBbGxvd2VkKGNsaWVudFNldHRpbmdzLmtvbnR1ckRvbWFpbnMpKSB7XG4gICAgICAgIGVycm9yID0gbmV3IEVycm9yKFwiZG9tYWluLnVudHJ1c3RlZFwiKTtcbiAgICB9IGVsc2UgaWYgKCFjbGllbnRTZXR0aW5ncy5hdXRob3JpemVkKSB7XG4gICAgICAgIGVycm9yID0gbmV3IEVycm9yKFwidXNlci51bmF1dGhlbnRpY2F0ZWRcIik7XG4gICAgfSBlbHNlIGlmICghZHJhZnRJZCkge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcIm9wdGlvbnMuZHJhZnRJZCBpcyByZXF1aXJlZFwiKTtcbiAgICB9IGVsc2UgaWYgKCFucykge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcIm9wdGlvbnMubnMgaXMgcmVxdWlyZWRcIik7XG4gICAgfVxuXG4gICAgaWYgKGVycm9yKSB7XG4gICAgICAgIGNhbGxiYWNrKGVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc291cmNlWm9uZSA9IG9wdGlvbnMucmVzb3VyY2Vab25lID8/IGdldFBhcmFtZXRlckJ5TmFtZShcInJlc291cmNlWm9uZVwiKTtcbiAgICBjb25zdCBjbGllbnREcmFmdFVybCA9IGJ1aWxkVXJsKHVybChnZXRDbGllbnREcmFmdEluZm9VcmwoeyBuczogbnMsIGRyYWZ0SWQ6IGRyYWZ0SWQgfSkpLCB7XG4gICAgICAgIHJlc291cmNlWm9uZTogcmVzb3VyY2Vab25lLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0ID0geyBtZXRob2Q6IFwiR0VUXCIgfTtcbiAgICBpZiAob3B0aW9ucy5hdXRoZW50aWNhdGlvbiA9PSB1bmRlZmluZWQgfHwgb3B0aW9ucy5hdXRoZW50aWNhdGlvbiA9PT0gXCJicm93c2VyLWNyZWRlbnRpYWxzLWluY2x1ZGVcIikge1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5jcmVkZW50aWFscyA9IFwiaW5jbHVkZVwiO1xuICAgIH0gZWxzZSBpZiAoXCJhdXRoU2lkXCIgaW4gb3B0aW9ucy5hdXRoZW50aWNhdGlvbiAmJiBvcHRpb25zLmF1dGhlbnRpY2F0aW9uLmF1dGhTaWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJlcXVlc3RPcHRpb25zLmNyZWRlbnRpYWxzID0gXCJvbWl0XCI7XG4gICAgICAgIHJlcXVlc3RPcHRpb25zLmhlYWRlcnMgPSByZXF1ZXN0T3B0aW9ucy5oZWFkZXJzID8/IHt9O1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5oZWFkZXJzW1wiQXV0aG9yaXphdGlvblwiXSA9IGBBVVRILlNJRCAke29wdGlvbnMuYXV0aGVudGljYXRpb24uYXV0aFNpZH1gO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcXVlc3RPcHRpb25zLmNyZWRlbnRpYWxzID0gXCJvbWl0XCI7XG4gICAgfVxuICAgIGNvbnN0IGZldGNoSW1wbCA9IG9wdGlvbnMuZmV0Y2ggPz8gZmV0Y2g7XG5cbiAgICBmZXRjaEltcGwoY2xpZW50RHJhZnRVcmwsIHJlcXVlc3RPcHRpb25zKVxuICAgICAgICAudGhlbih4ID0+IHguanNvbigpKVxuICAgICAgICAudGhlbigoY2xpZW50RHJhZnRJbmZvOiBDbGllbnREcmFmdEluZm9SZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ2Z2ID0gY2xpZW50RHJhZnRJbmZvLmdmdjtcbiAgICAgICAgICAgIGNvbnN0IGVuZ2luZVZlcnNpb24gPSBjbGllbnREcmFmdEluZm8uZW5naW5lVmVyc2lvbjtcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuZGVkU2V0dGluZ3MgPSB7XG4gICAgICAgICAgICAgICAgYXV0aG9yaXplZDogY2xpZW50U2V0dGluZ3MuYXV0aG9yaXplZCxcbiAgICAgICAgICAgICAgICBjYXVsZHJvbkFwaVVybDogY2xpZW50U2V0dGluZ3MuY2F1bGRyb25BcGlVcmwsXG4gICAgICAgICAgICAgICAgaXNUZXN0U2VydmVyOiBjbGllbnRTZXR0aW5ncy5pc1Rlc3RTZXJ2ZXIsXG4gICAgICAgICAgICAgICAgcmVuZGVyQ2FjaGluZ0ZvcklFODogY2xpZW50U2V0dGluZ3MucmVuZGVyQ2FjaGluZ0ZvcklFOCxcbiAgICAgICAgICAgICAgICBub3JtYWxpemF0aW9uT25TZXJ2ZXI6IGNsaWVudFNldHRpbmdzLm5vcm1hbGl6YXRpb25PblNlcnZlcixcbiAgICAgICAgICAgICAgICBub3JtYXRpdmVVcmw6IGNsaWVudFNldHRpbmdzLm5vcm1hdGl2ZVVybCxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXNWZXJzaW9uOiBjbGllbnRTZXR0aW5ncy5yZXNvdXJjZXNWZXJzaW9uLFxuICAgICAgICAgICAgICAgIGtvbnR1ckRvbWFpbnM6IGNsaWVudFNldHRpbmdzLmtvbnR1ckRvbWFpbnMsXG4gICAgICAgICAgICAgICAgc2hvd05hdmlnYXRpb25TaWRlYmFyOiBvcHRpb25zLnNob3dOYXZpZ2F0aW9uU2lkZWJhciA/PyB0cnVlLFxuICAgICAgICAgICAgICAgIG9uUmVtb3ZlQXR0YWNobWVudDogb3B0aW9ucy5vblJlbW92ZUF0dGFjaG1lbnQsXG4gICAgICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgICAgICAuLi5jbGllbnREcmFmdEluZm8sXG4gICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgZW5naW5lVmVyc2lvbjogZW5naW5lVmVyc2lvbixcbiAgICAgICAgICAgICAgICBmZWVkYmFja0VuYWJsZWQ6IG9wdGlvbnMuZmVlZGJhY2tFbmFibGVkID8/IGNsaWVudERyYWZ0SW5mby5mZWVkYmFja0VuYWJsZWQsXG4gICAgICAgICAgICAgICAgaXNEaXNhYmxlZENsZWFuRm9ybTogb3B0aW9ucy5pc0Rpc2FibGVkQ2xlYW5Gb3JtID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWRDbG9zZUJ1dHRvbjogb3B0aW9ucy5pc0Rpc2FibGVkQ2xvc2VCdXR0b24gPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNEaXNhYmxlZENsb3NlQW5kU2F2ZUJ1dHRvbjogb3B0aW9ucy5pc0Rpc2FibGVkQ2xvc2VBbmRTYXZlQnV0dG9uID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIHJlc291cmNlWm9uZTogcmVzb3VyY2Vab25lLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgbG9hZEZvcm0oXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBnZnY6IGV4dGVuZGVkU2V0dGluZ3MuZ2Z2LFxuICAgICAgICAgICAgICAgICAgICBlbmdpbmVWZXJzaW9uOiBleHRlbmRlZFNldHRpbmdzLmVuZ2luZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlWm9uZTogZXh0ZW5kZWRTZXR0aW5ncy5yZXNvdXJjZVpvbmUsXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlc1ZlcnNpb246IGV4dGVuZGVkU2V0dGluZ3MucmVzb3VyY2VzVmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgdGhlbWU6IGV4dGVuZGVkU2V0dGluZ3MudGhlbWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBsb2FkRXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9hZEVycm9yIHx8ICFnbG9iYWwuQ0YuZW50cnlQb2ludFtnZnZdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoYGR5bmFtaWMgbG9hZGluZyBpcyBub3Qgc3VwcG9ydGVkIGZvciBnZnYgJHtnZnZ9YCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlbmRlciA9IGdldEVuZ2luZUVudHJ5UG9pbnQoZW5naW5lVmVyc2lvbik7XG5cbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VDb250ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmV4dGVuZGVkU2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVzQXBpOiBvcHRpb25zLnRlbXBsYXRlc0FwaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJGb3JtOiByZW5kZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goY2FsbGJhY2spO1xufVxuXG5jb25zdCBDYW5keUNsaWVudEV4cG9ydHM6IENhbmR5R2xvYmFsSW5qZWN0ZWRWYXIgPSB7XG4gICAgc3RhcnQ6IHN0YXJ0LFxuICAgIGVudHJ5UG9pbnQ6IHt9LFxuICAgIHBhcnRpYWxSZW5kZXJpbmdGb3JJRTg6IHBhcnNlQm9vbChcIntwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4fVwiKSxcbiAgICBrZWZvcm1zVXJsOiBcIntrZWZvcm1zVXJsfVwiLFxufTtcblxuZ2xvYmFsLkNGID0gQ2FuZHlDbGllbnRFeHBvcnRzO1xuXG5leHBvcnQgeyBDYW5keUNsaWVudEV4cG9ydHMgfTtcbiIsImZ1bmN0aW9uIHBhcnNlQm9vbCh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBcImZhbHNlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBCb29sZWFuKHZhbHVlKTtcbn1cblxuZXhwb3J0IGNvbnN0IGNsaWVudFNldHRpbmdzID0ge1xuICAgIGF1dGhvcml6ZWQ6IHBhcnNlQm9vbChcInthdXRob3JpemVkfVwiKSxcbiAgICBjYXVsZHJvbkFwaVVybDogXCJ7Y2F1bGRyb25BcGlVcmx9XCIsXG4gICAgaXNUZXN0U2VydmVyOiBwYXJzZUJvb2woXCJ7aXNUZXN0U2VydmVyfVwiKSxcbiAgICByZW5kZXJDYWNoaW5nRm9ySUU4OiBwYXJzZUJvb2woXCJ7cmVuZGVyQ2FjaGluZ0ZvcklFOH1cIiksXG4gICAgbm9ybWFsaXphdGlvbk9uU2VydmVyOiBwYXJzZUJvb2woXCJ7bm9ybWFsaXphdGlvbk9uU2VydmVyfVwiKSxcbiAgICBub3JtYXRpdmVVcmw6IFwie25vcm1hdGl2ZVVybH1cIixcbiAgICByZXNvdXJjZXNWZXJzaW9uOiBcIntyZXNvdXJjZXNWZXJzaW9ufVwiLFxuICAgIGtvbnR1ckRvbWFpbnM6IFwie2tvbnR1ckRvbWFpbnN9XCIsXG59O1xuIiwiaW1wb3J0IHtcbiAgICBFbXBsb3llZSxcbiAgICBFbXBsb3llZUxpc3QsXG4gICAgR2V0RW1wbG95ZWVMaXN0UmVxdWVzdCxcbiAgICBHZXRXb3JraW5nRXZlbnRMaXN0UmVxdWVzdCxcbiAgICBXb3JraW5nRXZlbnRMaXN0LFxufSBmcm9tIFwiQHNrYmtvbnR1ci9zdGFmZi1zZWxlY3Rvci13aWRnZXRcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJFbmdpbmUvc3JjL0VuZ2luZS9Gb3JtL01vZGVsQ2hhbmdlRXZlbnRMaXN0ZW5lclwiO1xuXG5pbXBvcnQgeyBOb3RJbXBsZW1lbnRlZEVycm9yIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9FcnJvcnNcIjtcbmltcG9ydCB0eXBlIHsgU3RlcCB9IGZyb20gXCIuLi8uLi8uLi9Db250cm9scy9Gb3JtUGFydHMvVG91ci9Ub3VyVHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgU2VydmVyRXJyb3JMb2cgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL0Vycm9yTG9nL1NlcnZlckVycm9yTG9nXCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdQYXRoLCBNb2RlbFZhbHVlIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL0NvcmVUeXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBFeHRlcm5hbEhvb2tGdW5jdGlvbiB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9FdmVudE1hbmFnZW1lbnQvRXh0ZXJuYWxFdmVudHMvRXh0ZXJuYWxIb29rRnVuY3Rpb25cIjtcbmltcG9ydCB0eXBlIHsgUmVhZG9ubHlNb2RlbENodW5rIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL01vZGVsU3RvcmluZy9Nb2RlbENodW5rXCI7XG5pbXBvcnQgdHlwZSB7IFBpY2tsaXN0UXVlcnlSZXNwb25zZSB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9QaWNrbGlzdHMvUGlja2xpc3RUeXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBJRm9ybSB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvRm9ybS9JRm9ybVwiO1xuaW1wb3J0IHR5cGUgeyBJUHVibGljRm9ybSB9IGZyb20gXCIuLi8uLi9QdWJsaWNGb3JtL0lQdWJsaWNGb3JtXCI7XG5pbXBvcnQgeyBNb2RlbEV2ZW50c0xpc3RlbmVyIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL0V2ZW50TWFuYWdlbWVudC9Nb2RlbEV2ZW50cy9Nb2RlbEV2ZW50XCI7XG5pbXBvcnQgeyBEaWdlc3RRdWVyeUZpbHRlciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvRGlnZXN0QXBpQ2xpZW50L1R5cGVzL0RpZ2VzdFF1ZXJ5RmlsdGVyXCI7XG5pbXBvcnQgeyBJVXBkYXRlRm9ybU1vZGVsQWNjZXNzb3IgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0Zvcm0vSUZvcm1Nb2RlbEFjY2Vzc29yXCI7XG5pbXBvcnQgeyBNb2RhbE9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvTW9kYWxNYW5hZ2VyL0lNb2RhbFN0YXRlXCI7XG5pbXBvcnQgeyBBYnNvbHV0ZVJlc29sdmVkTW9kZWxQYXRoIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9Nb2RlbFBhdGgvTW9kZWxQYXRoXCI7XG5pbXBvcnQgeyBDYWxsSW5pdFNlY3Rpb25MaWdodGJveFByb3BzLCBJbml0U2VjdGlvbkZvcm1MaWdodGJveE9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vUHVibGljRm9ybS9Jbml0U2VjdGlvbkxpZ2h0Ym94XCI7XG5pbXBvcnQgeyBNYXNzQWN0aW9uUGFyYW1ldGVycyB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvVHlwZXMvTWFzc0FjdGlvbnMvTWFzc0FjdGlvblBhcmFtZXRlcnNcIjtcbmltcG9ydCB7IFByaW50VHlwZSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvVHlwZXMvUHJpbnQvUHJpbnRUeXBlXCI7XG5pbXBvcnQgeyBGaWFzQXBpLCBGaWFzQ2xpZW50SW5pdE9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vLi4vQ29udHJvbHMvVmFsdWVFZGl0b3JzL0ZpYXMvRmlhc0lucHV0L0ZpYXNBcGlcIjtcbmltcG9ydCB7IEluc3RhbmNlc0RlbGV0aW5nUnVsZSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvVHlwZXMvSW5zdGFuY2VzRGVsZXRpbmcvSW5zdGFuY2VzRGVsZXRpbmdSdWxlXCI7XG5pbXBvcnQgeyBDb21iaW5lRnVmUmVzdWx0IH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9UeXBlcy9EcmFmdEFjdGlvbnMvQ29tYmluZUZ1ZlJlc3VsdFwiO1xuaW1wb3J0IHsgSUNhbmR5Q29tcG9uZW50SGFuZGxlIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL0NvbXBvbmVudEhhbmRsZVJlZ2lzdHJ5L0lDYW5keUNvbXBvbmVudEhhbmRsZVwiO1xuaW1wb3J0IHsgTmF2aWdhdGlvblBhdGhNYXBwZXIgfSBmcm9tIFwiLi4vLi4vSW5qZWN0YWJsZU1vZHVsZXMvSW5qZWN0YWJsZUVuZ2luZU1vZHVsZXNcIjtcbmltcG9ydCB7IEltcG9ydEVtcGxveWVyRG9jdW1lbnRzT3B0aW9ucyB9IGZyb20gXCIuLi8uLi8uLi9TdGFmZlNlcnZpY2VJbnRlZ3JhdGlvbi9FbXBsb3llZVNlcnZpY2VUeXBlc1wiO1xuaW1wb3J0IHsgVGFiSW5mb3NTdGF0ZSB9IGZyb20gXCIuLi8uLi8uLi9Db250cm9scy9NdWx0aUNvbnRyb2xzL1RhYnMvU3RvcmUvVGFiSW5mb3NTdGF0ZVwiO1xuXG5pbXBvcnQgeyBJTGVnYWN5Rm9ybSB9IGZyb20gXCIuL0lMZWdhY3lGb3JtXCI7XG5cbmV4cG9ydCB0eXBlIE1vZGVsRXZlbnRQYXRoID1cbiAgICB8IFtcIm1vZGVsXCIsIFwiY2hhbmdlXCIsIHN0cmluZywgc3RyaW5nXVxuICAgIHwgW1wibW9kZWxcIiwgXCJyZW1vdmVcIiwgc3RyaW5nLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcImNoYW5nZVwiLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcInJlbW92ZVwiLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcImNoYW5nZVwiXVxuICAgIHwgW1wibW9kZWxcIiwgXCJyZW1vdmVcIl07XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2RlbENoYW5nZUV2ZW50UGF0aChwYXRoPzogc3RyaW5nLCBmaWVsZE5hbWU/OiBzdHJpbmcpOiBNb2RlbEV2ZW50UGF0aCB7XG4gICAgaWYgKGZpZWxkTmFtZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHBhdGggPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXRoIG11c3QgYmUgZGVmaW5lZFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW1wibW9kZWxcIiwgXCJjaGFuZ2VcIiwgcGF0aCwgZmllbGROYW1lXTtcbiAgICB9XG4gICAgaWYgKHBhdGggIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBbXCJtb2RlbFwiLCBcImNoYW5nZVwiLCBwYXRoXTtcbiAgICB9XG4gICAgcmV0dXJuIFtcIm1vZGVsXCIsIFwiY2hhbmdlXCJdO1xufVxuXG5mdW5jdGlvbiBtYXBDaHVua1ZhbHVlcyhjaHVuazogUmVhZG9ubHlNb2RlbENodW5rKTogQXJyYXk8eyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGNodW5rKVxuICAgICAgICAuZmlsdGVyKHBhdGggPT4gY2h1bmtbcGF0aF0gJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNodW5rW3BhdGhdLCBcInZhbHVlXCIpKVxuICAgICAgICAubWFwKHBhdGggPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gY2h1bmtbcGF0aF07XG4gICAgICAgICAgICBpZiAocmVzdWx0ID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7IFtwYXRoXTogcmVzdWx0LnZhbHVlIH07XG4gICAgICAgIH0pO1xufVxuXG5mdW5jdGlvbiByZWR1Y2VDaHVua1ZhbHVlcyhjaHVua3M6IEFycmF5PHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfT4pOiB7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0ge1xuICAgIHJldHVybiBjaHVua3MucmVkdWNlKFxuICAgICAgICAocmVzdWx0LCBjaHVuaykgPT4gKHtcbiAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgIC4uLmNodW5rLFxuICAgICAgICB9KSxcbiAgICAgICAge31cbiAgICApO1xufVxuXG5jbGFzcyBMZWdhY3lQdWJsaWNGb3JtIGltcGxlbWVudHMgSVB1YmxpY0Zvcm0ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybTogSUxlZ2FjeUZvcm07XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZm9ybTogSUxlZ2FjeUZvcm0pIHtcbiAgICAgICAgdGhpcy5mb3JtID0gZm9ybTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmF2aWdhdGVCeUhpZ2hsYW5kZXJQYXRocyhwYXRoczogc3RyaW5nW10pOiBQcm9taXNlPElDYW5keUNvbXBvbmVudEhhbmRsZSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TmF2aWdhdGlvblBhdGhNYXBwZXIoKTogTmF2aWdhdGlvblBhdGhNYXBwZXIge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYmF0Y2hVcGRhdGUodXBkYXRlUHJvYzogKHVwZGF0ZUFjY2Vzc29yOiBJVXBkYXRlRm9ybU1vZGVsQWNjZXNzb3IpID0+IHZvaWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIHJ1bkNoZWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RXJyb3JMb2coZXJyb3JMb2c6IFBhcnRpYWw8U2VydmVyRXJyb3JMb2c+KTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyB2YWxpZGF0ZUNoaWxkcmVuQnlQYXRoKHBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgX19JTlRFUk5BTF9faW1wb3J0RnJvbUVtcGxveWVlU2VydmljZSgpOiBQcm9taXNlPEVtcGxveWVlW10gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIF9fSU5URVJOQUxfX2dldFNlbGVjdEZ1bmN0aW9uRm9yRGlzYWJsZUVtcGxveWVlSW5TUyhcbiAgICAgICAgcGF0aFNwZWM6IHN0cmluZ1xuICAgICk6IFByb21pc2U8KGVtcGxveWVlOiBFbXBsb3llZSkgPT4gYm9vbGVhbj4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TW9kYWxVbml0T3BlbmVkSW5zdGFuY2UocGFnZUlkOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRhYnNTdGF0ZSgpOiBUYWJJbmZvc1N0YXRlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIG5hdmlnYXRlKG5hdmlnYXRpb25QYXRoOiBzdHJpbmcpOiBQcm9taXNlPElDYW5keUNvbXBvbmVudEhhbmRsZSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW1wb3J0RW1wbG95ZXJEb2N1bWVudHMob3B0aW9uczogSW1wb3J0RW1wbG95ZXJEb2N1bWVudHNPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbXBvcnRFbXBsb3llZXMoZW1wbG95ZWVzOiBFbXBsb3llZVtdLCBvcHRpb25zPzogeyBzY2VuYXJpbz86IHN0cmluZyB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmludChwcmludFR5cGU6IFByaW50VHlwZSwgYm9keT86IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cbiAgICBwdWJsaWMgcnVuTWFzc0FjdGlvbihhY3Rpb25JZDogc3RyaW5nLCBwYXJhbWV0ZXJzPzogTWFzc0FjdGlvblBhcmFtZXRlcnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEJ5R0lkKGdJZDogc3RyaW5nLCBmaWx0ZXI/OiBEaWdlc3RRdWVyeUZpbHRlcik6IFByb21pc2U8UGlja2xpc3RRdWVyeVJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0ucGlja2xpc3RzUHJvdmlkZXIuZ2V0RGlnZXN0QXBpUGlja2xpc3QoZ0lkKS5xdWVyeShmaWx0ZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbihldmVudE5hbWU6IHN0cmluZywgbGlzdGVuZXI6IEV4dGVybmFsSG9va0Z1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5ldmVudE1hbmFnZXIub24oW1wiZm9ybVwiLCBldmVudE5hbWVdLCBsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIG9mZihldmVudE5hbWU6IHN0cmluZywgbGlzdGVuZXI6IEV4dGVybmFsSG9va0Z1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5ldmVudE1hbmFnZXIub2ZmKFtcImZvcm1cIiwgZXZlbnROYW1lXSwgbGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk1vZGVsQ2hhbmdlKHBhdGg6IHN0cmluZyB8IHN0cmluZ1tdLCBsaXN0ZW5lcjogdW5rbm93bik6IFN1YnNjcmlwdGlvbiB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIHRocm93IEVycm9yKFwiZm9ybS5vbk1vZGVsQ2hhbmdlKCkgaXMgbm90IHN1cHBvcnRlZCB5ZXRcIik7XG4gICAgfVxuXG4gICAgcHVibGljIHNhdmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uY2hhbmdlU2V0LnNlbmQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuZm9ybS5jaGFuZ2VTZXQuc3RvcEF1dG9zZW5kKCk7XG4gICAgICAgIGlmICh0aGlzLmZvcm0udW5tb3VudCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLnVubW91bnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uY2hhbmdlU2V0LnNlbmQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VG91clN0ZXBzKCk6IFN0ZXBbXSB7XG4gICAgICAgIC8vIEZvciBvbGQga2V3ZWJcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHB1YmxpYyB2YWxpZGF0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuZm9ybS5tb2RlbC5nZXRDaHVuayh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QpKTtcbiAgICAgICAgLy8gQHRzLWlnbm9yZSDQrdGC0L4g0LIg0YHRgtCw0YDRi9GFINC00LLQuNC20LrQsNGFINGC0YPRgiDRgtCw0LrQvtC5INCy0YvQt9C+0LJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0udmFsaWRhdG9yLnZhbGlkYXRlQWxsKGtleXMpO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0QWRkaXRpb25hbEVtcGxveWVlSW5mbyhmaWx0ZXJzOiBHZXRFbXBsb3llZUxpc3RSZXF1ZXN0KTogUHJvbWlzZTxFbXBsb3llZUxpc3QgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZWxvYWRJbm5lcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRXb3JraW5nRXZlbnRzRm9yRW1wbG95ZWUoZmlsdGVyczogR2V0V29ya2luZ0V2ZW50TGlzdFJlcXVlc3QpOiBQcm9taXNlPFdvcmtpbmdFdmVudExpc3QgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYXNFcnJvcnMoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGVycm9yQ291bnQgPSB0aGlzLmZvcm0ubW9kZWwuZ2V0KHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCwgXCJlcnJvcnNDb3VudFwiKTtcbiAgICAgICAgcmV0dXJuIGVycm9yQ291bnQgIT0gdW5kZWZpbmVkICYmIGVycm9yQ291bnQgPiAwO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkVycm9yc0NvdW50Q2hhbmdlZChsaXN0ZW5lcjogTW9kZWxFdmVudHNMaXN0ZW5lcik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0uZXZlbnRNYW5hZ2VyLm9uKG1vZGVsQ2hhbmdlRXZlbnRQYXRoKHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCwgXCJlcnJvcnNDb3VudFwiKSwgbGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvZmZFcnJvcnNDb3VudENoYW5nZWQobGlzdGVuZXI6IE1vZGVsRXZlbnRzTGlzdGVuZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLmV2ZW50TWFuYWdlci5vZmYobW9kZWxDaGFuZ2VFdmVudFBhdGgodGhpcy5mb3JtLnNldHRpbmdzLmZvcm1Sb290LCBcImVycm9yc0NvdW50XCIpLCBsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIHNldChwYXRoT3JNb2RlbENodW5rOiB7IFtwYXRoOiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfSk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICAgIHB1YmxpYyBzZXQocGF0aE9yTW9kZWxDaHVuazogc3RyaW5nLCB2YWx1ZTogTW9kZWxWYWx1ZSk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICAgIHB1YmxpYyBzZXQoXG4gICAgICAgIHBhdGhPck1vZGVsQ2h1bms6IHN0cmluZyB8IHsgW3BhdGg6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZCB9LFxuICAgICAgICB2YWx1ZT86IE1vZGVsVmFsdWVcbiAgICApOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHBhdGhPck1vZGVsQ2h1bmsgIT09IG51bGwgJiZcbiAgICAgICAgICAgIHR5cGVvZiBwYXRoT3JNb2RlbENodW5rICE9PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICB0eXBlb2YgcGF0aE9yTW9kZWxDaHVuayA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgICAgICAgIUFycmF5LmlzQXJyYXkocGF0aE9yTW9kZWxDaHVuaylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBpbm5lckNodW5rID0gT2JqZWN0LmtleXMocGF0aE9yTW9kZWxDaHVuaykucmVkdWNlPFJlYWRvbmx5TW9kZWxDaHVuaz4oXG4gICAgICAgICAgICAgICAgKHJlc3VsdCwgcGF0aCkgPT4gKHsgW3BhdGhdOiB7IHZhbHVlOiBwYXRoT3JNb2RlbENodW5rW3BhdGhdIH0sIC4uLnJlc3VsdCB9KSxcbiAgICAgICAgICAgICAgICB7fVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy5mb3JtLm1vZGVsLmZpbGwoaW5uZXJDaHVuayk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHBhdGhPck1vZGVsQ2h1bmsgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5tb2RlbC5zZXQocGF0aE9yTW9kZWxDaHVuaywgXCJ2YWx1ZVwiLCB2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmb3JtLnNldCgpIHBhcmFtZXRlciBzaG91bGQgYmUgc3RyaW5nIHBhdGggb3Igb2JqZWN0IHdpdGggcGF0aC12YWx1ZSBwYWlyc1wiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0KHBhdGhPckFycmF5OiBzdHJpbmcgfCBzdHJpbmdbXSk6IHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHBhdGhPckFycmF5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlZHVjZUNodW5rVmFsdWVzKFxuICAgICAgICAgICAgICAgIHBhdGhPckFycmF5XG4gICAgICAgICAgICAgICAgICAgIC5tYXAocGF0aCA9PiBtYXBDaHVua1ZhbHVlcyh0aGlzLmZvcm0ubW9kZWwuZ2V0Q2h1bmsocGF0aCkpKVxuICAgICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgICAgICAgICAgICAgICAgIC5yZWR1Y2U8QXJyYXk8eyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9Pj4oKHJlc3VsdCwgYXJyYXkpID0+IHJlc3VsdC5jb25jYXQoYXJyYXkpLCBbXSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHBhdGhPckFycmF5ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVkdWNlQ2h1bmtWYWx1ZXMobWFwQ2h1bmtWYWx1ZXModGhpcy5mb3JtLm1vZGVsLmdldENodW5rKHBhdGhPckFycmF5KSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhdGhPckFycmF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiByZWR1Y2VDaHVua1ZhbHVlcyhtYXBDaHVua1ZhbHVlcyh0aGlzLmZvcm0ubW9kZWwuZ2V0Q2h1bmsodGhpcy5mb3JtLnNldHRpbmdzLmZvcm1Sb290KSkpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImZvcm0uZ2V0KCkgcGFyYW1ldGVyIHNob3VsZCBiZSBzdHJpbmcgcGF0aCBvciBhcnJheSBvZiBwYXRoc1wiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VmFsdWUocGF0aDogc3RyaW5nKTogTW9kZWxWYWx1ZSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLm1vZGVsLmdldChwYXRoLCBcInZhbHVlXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5U3VidHJlZShcbiAgICAgICAgc291cmNlQmluZGluZ1BhdGg6IEJpbmRpbmdQYXRoIHwgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCxcbiAgICAgICAgdGFyZ2V0QmluZGluZ1BhdGg6IEJpbmRpbmdQYXRoIHwgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCxcbiAgICAgICAgZG9Ob3RDb3B5UGF0aHM/OiBzdHJpbmdbXVxuICAgICk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRJbnN0YW5jZShwYXRoOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDaGlsZHJlbihwYXRoOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHV1aWRHZW5lcmF0ZSgpOiBzdHJpbmcge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG93TW9kYWwob3B0aW9uczogTW9kYWxPcHRpb25zKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFNlY3Rpb24ob3B0aW9uczogSW5pdFNlY3Rpb25Gb3JtTGlnaHRib3hPcHRpb25zKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNhbGxJbml0U2VjdGlvbihvcHRpb25zOiBDYWxsSW5pdFNlY3Rpb25MaWdodGJveFByb3BzKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZUZpYXNBcGlDbGllbnQob3B0aW9uczogRmlhc0NsaWVudEluaXRPcHRpb25zKTogRmlhc0FwaSB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9wZW5FbXBsb3llZUVkaXRvcihlbXBsb3llZUlkOiBzdHJpbmcpIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlSW5zdGFuY2UocGF0aDogc3RyaW5nLCBpbnN0YW5jZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUluc3RhbmNlcyhwYXRoOiBzdHJpbmcsIGluc3RhbmNlczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9jdXNPbkNvbnRyb2xJZkV4aXN0KHBhdGg6IEJpbmRpbmdQYXRoKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEF1dG9GaWVsZHNUb0F1dG9WYWx1ZShwYXRoUHJlZml4ZXM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZW5zdXJlSW5zdGFuY2VGdWxseUxvYWRlZChcbiAgICAgICAgYmluZGluZ1BhdGg6IHN0cmluZyB8IEFic29sdXRlUmVzb2x2ZWRNb2RlbFBhdGgsXG4gICAgICAgIC4uLmluc3RhbmNlczogc3RyaW5nW11cbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGN1c3RvbU5vcm1hbGl6ZShub3JtYWxpemVySWQ6IHN0cmluZywgcGF0aFByZWZpeGVzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cbiAgICBwdWJsaWMgcmVtb3ZlSW5zdGFuY2VzQnlSdWxlcyhydWxlczogSW5zdGFuY2VzRGVsZXRpbmdSdWxlW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRG5wKCk6IFByb21pc2U8Q29tYmluZUZ1ZlJlc3VsdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0oZm9ybTogSUZvcm0pOiBJUHVibGljRm9ybSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBuZXcgTGVnYWN5UHVibGljRm9ybShmb3JtIGFzIElMZWdhY3lGb3JtKTtcbn1cbiIsIi8vIHRzbGludDpkaXNhYmxlIG5vLXVuc2FmZS1hbnlcbmV4cG9ydCBjbGFzcyBMb2FkSW50b0RvY3VtZW50IHtcbiAgICBwdWJsaWMgc3RhdGljIHNjcmlwdCh1cmk6IHN0cmluZywgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIGxldCBzY3JpcHRMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXSB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGNvbnN0IHNjcmlwdDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcblxuICAgICAgICBmdW5jdGlvbiBsb2FkSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgICAgIGlmIChzY3JpcHRMb2FkZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghc2NyaXB0LnJlYWR5U3RhdGUgfHwgc2NyaXB0LnJlYWR5U3RhdGUgPT09IFwibG9hZGVkXCIgfHwgc2NyaXB0LnJlYWR5U3RhdGUgPT09IFwiY29tcGxldGVcIikge1xuICAgICAgICAgICAgICAgIHNjcmlwdExvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhhbmcgdGhlIHVzZXIgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHNjcmlwdCBjb21wbGV0ZXMgdG8gbG9hZC5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogVGhpcyBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBpbiBJRSBldmVuIHVwb24gZXJyb3IuIEluIGFueVxuICAgICAgICAvLyBjYXNlIGl0IGlzIHRoZSBjbGllbnQncyByZXNwb25zaWJpbGl0eSB0byB2ZXJpZnkgdGhhdCB0aGUgc2NyaXB0IHJhblxuICAgICAgICAvLyBzdWNjZXNzZnVsbHkuXG4gICAgICAgIHNjcmlwdC5vbmxvYWQgPSBsb2FkSGFuZGxlcjtcbiAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGxvYWRIYW5kbGVyO1xuXG4gICAgICAgIC8vIEFkZCBhbiBlcnJvciBjYWxsYmFjay5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogTm90IHN1cHBvcnRlZCBpbiBJRS5cbiAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoc2NyaXB0LnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICBzY3JpcHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzY3JpcHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgbG9hZGluZyBzY3JpcHQuXCIpKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBBZGQgdGhlIHNjcmlwdCBlbGVtZW50IHRvIHRoZSBkb2N1bWVudC5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogU2FmYXJpIG5ldmVyIGxvYWRzIHRoZSBzY3JpcHQgaWYgd2UgZG9uJ3Qgc2V0XG4gICAgICAgIC8vIHRoZSBzcmMgYXR0cmlidXRlIGJlZm9yZSBhcHBlbmRpbmcuXG4gICAgICAgIHNjcmlwdC5zcmMgPSB1cmk7XG4gICAgICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoXCJjcm9zc29yaWdpblwiLCBcInVzZS1jcmVkZW50aWFsc1wiKTtcbiAgICAgICAgaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc3R5bGVTaGVldCh1cmk6IHN0cmluZywgaWdub3JlRXJyb3I6IGJvb2xlYW4sIGNhbGxiYWNrOiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICBjb25zdCByZXNvbHZlID0gKCkgPT4gY2FsbGJhY2sodW5kZWZpbmVkKTtcbiAgICAgICAgY29uc3QgcmVqZWN0ID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlnbm9yZUVycm9yKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sodW5kZWZpbmVkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgbG9hZGluZyBzdHlsZXNoZWV0LlwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXSA/PyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlua1wiKTtcblxuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZShcInJlbFwiLCBcInN0eWxlc2hlZXRcIik7XG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwidHlwZVwiLCBcInRleHQvY3NzXCIpO1xuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsIHJlc29sdmUpO1xuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCByZWplY3QpO1xuICAgICAgICBoZWFkLmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgdXJpKTtcbiAgICB9XG59XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdGlkOiBtb2R1bGVJZCxcblx0XHRsb2FkZWQ6IGZhbHNlLFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcblx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBkZWZpbml0aW9uKSB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5obWQgPSBmdW5jdGlvbihtb2R1bGUpIHtcblx0bW9kdWxlID0gT2JqZWN0LmNyZWF0ZShtb2R1bGUpO1xuXHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsICdleHBvcnRzJywge1xuXHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0c2V0OiBmdW5jdGlvbigpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignRVMgTW9kdWxlcyBtYXkgbm90IGFzc2lnbiBtb2R1bGUuZXhwb3J0cyBvciBleHBvcnRzLiosIFVzZSBFU00gZXhwb3J0IHN5bnRheCwgaW5zdGVhZDogJyArIG1vZHVsZS5pZCk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIG1vZHVsZTtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqLCBwcm9wKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTsgfSIsIi8vIHN0YXJ0dXBcbi8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLy8gVGhpcyBlbnRyeSBtb2R1bGUgaXMgcmVmZXJlbmNlZCBieSBvdGhlciBtb2R1bGVzIHNvIGl0IGNhbid0IGJlIGlubGluZWRcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1OTEpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztlQU1DQSxDQUFBLEVBSm9D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
|