@kontur.candy/tools 2.210.1-cgroupv2.0 → 2.210.1-cgroupv2.1
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/distr/Common/AsyncUtils.js +18 -0
- package/distr/Common/AsyncUtils.js.map +1 -0
- package/distr/Common/AutoValidationUtils.js +8 -0
- package/distr/Common/AutoValidationUtils.js.map +1 -0
- package/distr/Common/CandyApiClient/CandyApiClient.js +578 -0
- package/distr/Common/CandyApiClient/CandyApiClient.js.map +1 -0
- package/distr/Common/CandyApiClient/CandyApiClientContext.js +18 -0
- package/distr/Common/CandyApiClient/CandyApiClientContext.js.map +1 -0
- package/distr/Common/CandyApiClient/ClientDraftInfo/ClientDraftInfoResponse.js +6 -0
- package/distr/Common/CandyApiClient/ClientDraftInfo/ClientDraftInfoResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/ClientDraftInfo/FnsFormInfo.js +6 -0
- package/distr/Common/CandyApiClient/ClientDraftInfo/FnsFormInfo.js.map +1 -0
- package/distr/Common/CandyApiClient/ClientDraftInfo/GetClientDraftInfoUrl.js +12 -0
- package/distr/Common/CandyApiClient/ClientDraftInfo/GetClientDraftInfoUrl.js.map +1 -0
- package/distr/Common/CandyApiClient/ClientDraftInfo/PrintInfo.js +6 -0
- package/distr/Common/CandyApiClient/ClientDraftInfo/PrintInfo.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithCache.js +33 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithCache.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithDebouncedBatching.js +35 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithDebouncedBatching.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/DigestApiClient.js +20 -0
- package/distr/Common/CandyApiClient/DigestApiClient/DigestApiClient.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/Data/TaxRebate1152026.js +89 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/Data/TaxRebate1152026.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakeDigestApiClient.js +42 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakeDigestApiClient.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakePicklists.js +9 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakePicklists.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/IDigestApiClient.js +6 -0
- package/distr/Common/CandyApiClient/DigestApiClient/IDigestApiClient.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/React/DigestApiClientContext.js +18 -0
- package/distr/Common/CandyApiClient/DigestApiClient/React/DigestApiClientContext.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/TestDigestApiClient.js +15 -0
- package/distr/Common/CandyApiClient/DigestApiClient/TestDigestApiClient.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestQueryFilter.js +19 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestQueryFilter.js.map +1 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestRequest.js +6 -0
- package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestRequest.js.map +1 -0
- package/distr/Common/CandyApiClient/FakeCandyApiClient.js +248 -0
- package/distr/Common/CandyApiClient/FakeCandyApiClient.js.map +1 -0
- package/distr/Common/CandyApiClient/ICandyApiClient.js +6 -0
- package/distr/Common/CandyApiClient/ICandyApiClient.js.map +1 -0
- package/distr/Common/CandyApiClient/IsBuffer.js +15 -0
- package/distr/Common/CandyApiClient/IsBuffer.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Attachments/Attacments.js +6 -0
- package/distr/Common/CandyApiClient/Types/Attachments/Attacments.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Attachments/GetAttachmentsResponse.js +6 -0
- package/distr/Common/CandyApiClient/Types/Attachments/GetAttachmentsResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/ChangeSet/ServerChangeSet.js +6 -0
- package/distr/Common/CandyApiClient/Types/ChangeSet/ServerChangeSet.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/CreateDraft/CreateDraftResponse.js +6 -0
- package/distr/Common/CandyApiClient/Types/CreateDraft/CreateDraftResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/DiagResourcesResponse.js +6 -0
- package/distr/Common/CandyApiClient/Types/DiagResourcesResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/DraftActions/CombineFufResult.js +24 -0
- package/distr/Common/CandyApiClient/Types/DraftActions/CombineFufResult.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/DraftActions/ConvertDraftRequest.js +6 -0
- package/distr/Common/CandyApiClient/Types/DraftActions/ConvertDraftRequest.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/DraftActions/FileProperties.js +6 -0
- package/distr/Common/CandyApiClient/Types/DraftActions/FileProperties.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/DraftActions/FufSizeTooLargeError.js +9 -0
- package/distr/Common/CandyApiClient/Types/DraftActions/FufSizeTooLargeError.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/DraftFullId.js +6 -0
- package/distr/Common/CandyApiClient/Types/DraftFullId.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/ErrorLog/CandyPopdProtocol.js +12 -0
- package/distr/Common/CandyApiClient/Types/ErrorLog/CandyPopdProtocol.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/ErrorLog/ResolveInnerPathRequest.js +6 -0
- package/distr/Common/CandyApiClient/Types/ErrorLog/ResolveInnerPathRequest.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/ErrorLog/ResolvePathResponse.js +6 -0
- package/distr/Common/CandyApiClient/Types/ErrorLog/ResolvePathResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/ErrorLog/ServerErrorLog.js +17 -0
- package/distr/Common/CandyApiClient/Types/ErrorLog/ServerErrorLog.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/ExplanatoryNote/CreateExplanatoryNoteResponse.js +13 -0
- package/distr/Common/CandyApiClient/Types/ExplanatoryNote/CreateExplanatoryNoteResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/FeatureFlags/FeatureFlagsResponse.js +6 -0
- package/distr/Common/CandyApiClient/Types/FeatureFlags/FeatureFlagsResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Focus/FocusServerResponse.js +6 -0
- package/distr/Common/CandyApiClient/Types/Focus/FocusServerResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Focus/FocusTypes.js +15 -0
- package/distr/Common/CandyApiClient/Types/Focus/FocusTypes.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/GetInner/ServerInnerResponse.js +6 -0
- package/distr/Common/CandyApiClient/Types/GetInner/ServerInnerResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/GetInner/ServerRawResponse.js +9 -0
- package/distr/Common/CandyApiClient/Types/GetInner/ServerRawResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/GetInner/ServerRequisitesResponse.js +6 -0
- package/distr/Common/CandyApiClient/Types/GetInner/ServerRequisitesResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Guid.js +6 -0
- package/distr/Common/CandyApiClient/Types/Guid.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/InstancesDeleting/InstancesDeletingRule.js +6 -0
- package/distr/Common/CandyApiClient/Types/InstancesDeleting/InstancesDeletingRule.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/MassActions/MassActionParameters.js +6 -0
- package/distr/Common/CandyApiClient/Types/MassActions/MassActionParameters.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/MassActions/ValueForInstancesSettingRule.js +6 -0
- package/distr/Common/CandyApiClient/Types/MassActions/ValueForInstancesSettingRule.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Presentations/DraftPresentationType.js +24 -0
- package/distr/Common/CandyApiClient/Types/Presentations/DraftPresentationType.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Presentations/PresentationContent.js +6 -0
- package/distr/Common/CandyApiClient/Types/Presentations/PresentationContent.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Print/PrintResponse.js +6 -0
- package/distr/Common/CandyApiClient/Types/Print/PrintResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Print/PrintType.js +12 -0
- package/distr/Common/CandyApiClient/Types/Print/PrintType.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/AndExpression.js +15 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/AndExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CompareExpression.js +19 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CompareExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CountCallExpression.js +15 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CountCallExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/DecimalConstantExpression.js +15 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/DecimalConstantExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/InstanceIdCallExpression.js +13 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/InstanceIdCallExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/NotExpression.js +15 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/NotExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/OrExpression.js +15 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/OrExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringConstantExpression.js +15 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringConstantExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringMatchExpression.js +21 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringMatchExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/SumCallExpression.js +15 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/SumCallExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/TernaryExpression.js +19 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/TernaryExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/ValueReferenceExpression.js +15 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/ValueReferenceExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryExpression.js +6 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryRequest.js +26 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryRequest.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryResponse.js +6 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/SelectClause.js +16 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/SelectClause.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/SortingRule.js +16 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/SortingRule.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Staff/EmployeeInfo.js +6 -0
- package/distr/Common/CandyApiClient/Types/Staff/EmployeeInfo.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesOptions.js +6 -0
- package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesOptions.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesRequest.js +6 -0
- package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesRequest.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Staff/StaffInfo.js +6 -0
- package/distr/Common/CandyApiClient/Types/Staff/StaffInfo.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Tasks/GetTasksServerResponse.js +6 -0
- package/distr/Common/CandyApiClient/Types/Tasks/GetTasksServerResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/Tasks/Tasks.js +14 -0
- package/distr/Common/CandyApiClient/Types/Tasks/Tasks.js.map +1 -0
- package/distr/Common/CollectionUtils.js +15 -0
- package/distr/Common/CollectionUtils.js.map +1 -0
- package/distr/Common/CommonConstants/SectionNames.js +11 -0
- package/distr/Common/CommonConstants/SectionNames.js.map +1 -0
- package/distr/Common/Comparers.js +63 -0
- package/distr/Common/Comparers.js.map +1 -0
- package/distr/Common/EmotionStorybookWorkaroundViaAliases.js +22 -0
- package/distr/Common/EmotionStorybookWorkaroundViaAliases.js.map +1 -0
- package/distr/Common/EndPoints.js +16 -0
- package/distr/Common/EndPoints.js.map +1 -0
- package/distr/Common/Enums/ButtonSettingsTypeEnum.js +12 -0
- package/distr/Common/Enums/ButtonSettingsTypeEnum.js.map +1 -0
- package/distr/Common/Errors.js +44 -0
- package/distr/Common/Errors.js.map +1 -0
- package/distr/Common/ExtractGFVPath/ExtractGFVPath.js +31 -0
- package/distr/Common/ExtractGFVPath/ExtractGFVPath.js.map +1 -0
- package/distr/Common/FSPrinterClient/FSPrinterClient.js +153 -0
- package/distr/Common/FSPrinterClient/FSPrinterClient.js.map +1 -0
- package/distr/Common/FSPrinterClient/FakeFSPrinterClient.js +19 -0
- package/distr/Common/FSPrinterClient/FakeFSPrinterClient.js.map +1 -0
- package/distr/Common/FSPrinterClient/IFSPrinterClient.js +39 -0
- package/distr/Common/FSPrinterClient/IFSPrinterClient.js.map +1 -0
- package/distr/Common/FormActionHandlers/ContextualActionNames.js +14 -0
- package/distr/Common/FormActionHandlers/ContextualActionNames.js.map +1 -0
- package/distr/Common/FormActionHandlers/ControlNamedContextualAction.js +6 -0
- package/distr/Common/FormActionHandlers/ControlNamedContextualAction.js.map +1 -0
- package/distr/Common/FormPathUtils.js +21 -0
- package/distr/Common/FormPathUtils.js.map +1 -0
- package/distr/Common/Funcs.js +11 -0
- package/distr/Common/Funcs.js.map +1 -0
- package/distr/Common/GFV.js +6 -0
- package/distr/Common/GFV.js.map +1 -0
- package/distr/Common/GetRngSchemaFileExtension.js +26 -0
- package/distr/Common/GetRngSchemaFileExtension.js.map +1 -0
- package/distr/Common/Hooks/UseLocalStorage.js +35 -0
- package/distr/Common/Hooks/UseLocalStorage.js.map +1 -0
- package/distr/Common/HttpClient/AuthenticationMode.js +31 -0
- package/distr/Common/HttpClient/AuthenticationMode.js.map +1 -0
- package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithOptionalPolyfill.js +9 -0
- package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithOptionalPolyfill.js.map +1 -0
- package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithPolyfill.js +9 -0
- package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithPolyfill.js.map +1 -0
- package/distr/Common/HttpClient/FetchImplementation/Fetch.js +6 -0
- package/distr/Common/HttpClient/FetchImplementation/Fetch.js.map +1 -0
- package/distr/Common/HttpClient/FetchImplementation/NativeBrowserFetch.js +8 -0
- package/distr/Common/HttpClient/FetchImplementation/NativeBrowserFetch.js.map +1 -0
- package/distr/Common/HttpClient/FetchImplementation/NodeFetch.js +36 -0
- package/distr/Common/HttpClient/FetchImplementation/NodeFetch.js.map +1 -0
- package/distr/Common/HttpClient/HttpClient.js +313 -0
- package/distr/Common/HttpClient/HttpClient.js.map +1 -0
- package/distr/Common/HttpClient/HttpClientAuthenticationProvider.js +6 -0
- package/distr/Common/HttpClient/HttpClientAuthenticationProvider.js.map +1 -0
- package/distr/Common/HttpClient/IHttpClient.js +6 -0
- package/distr/Common/HttpClient/IHttpClient.js.map +1 -0
- package/distr/Common/IndentString.js +16 -0
- package/distr/Common/IndentString.js.map +1 -0
- package/distr/Common/IntRangeUtils.js +32 -0
- package/distr/Common/IntRangeUtils.js.map +1 -0
- package/distr/Common/IterableUtils.js +288 -0
- package/distr/Common/IterableUtils.js.map +1 -0
- package/distr/Common/KCLangRuntimeUtils.js +266 -0
- package/distr/Common/KCLangRuntimeUtils.js.map +1 -0
- package/distr/Common/ModelPath/AbsoluteModelFieldPath.js +55 -0
- package/distr/Common/ModelPath/AbsoluteModelFieldPath.js.map +1 -0
- package/distr/Common/ModelPath/BuildIterationSequence.js +41 -0
- package/distr/Common/ModelPath/BuildIterationSequence.js.map +1 -0
- package/distr/Common/ModelPath/EachCurrentCollision.js +12 -0
- package/distr/Common/ModelPath/EachCurrentCollision.js.map +1 -0
- package/distr/Common/ModelPath/IEquatable.js +6 -0
- package/distr/Common/ModelPath/IEquatable.js.map +1 -0
- package/distr/Common/ModelPath/Map/AbsoluteModelPathMap.js +23 -0
- package/distr/Common/ModelPath/Map/AbsoluteModelPathMap.js.map +1 -0
- package/distr/Common/ModelPath/Map/Map2.js +99 -0
- package/distr/Common/ModelPath/Map/Map2.js.map +1 -0
- package/distr/Common/ModelPath/Map/ModelPathMap.js +23 -0
- package/distr/Common/ModelPath/Map/ModelPathMap.js.map +1 -0
- package/distr/Common/ModelPath/ModelPath.js +476 -0
- package/distr/Common/ModelPath/ModelPath.js.map +1 -0
- package/distr/Common/ModelPath/ModelPathBuilder.js +42 -0
- package/distr/Common/ModelPath/ModelPathBuilder.js.map +1 -0
- package/distr/Common/ModelPath/ModelPathHelper.js +34 -0
- package/distr/Common/ModelPath/ModelPathHelper.js.map +1 -0
- package/distr/Common/ModelPath/PathMatcher.js +95 -0
- package/distr/Common/ModelPath/PathMatcher.js.map +1 -0
- package/distr/Common/ModelPath/PathSplitHelper.js +21 -0
- package/distr/Common/ModelPath/PathSplitHelper.js.map +1 -0
- package/distr/Common/ModelPath/Set/AbsoluteModelPathSet.js +31 -0
- package/distr/Common/ModelPath/Set/AbsoluteModelPathSet.js.map +1 -0
- package/distr/Common/ModelPath/Set/AbsoluteResolvedModelPathSet.js +31 -0
- package/distr/Common/ModelPath/Set/AbsoluteResolvedModelPathSet.js.map +1 -0
- package/distr/Common/ModelPath/Set/ModelPathSet.js +31 -0
- package/distr/Common/ModelPath/Set/ModelPathSet.js.map +1 -0
- package/distr/Common/ModelPath/Set/Set2.js +59 -0
- package/distr/Common/ModelPath/Set/Set2.js.map +1 -0
- package/distr/Common/NidusClient/ContextualNidusClient/ContextualNidusClient.js +33 -0
- package/distr/Common/NidusClient/ContextualNidusClient/ContextualNidusClient.js.map +1 -0
- package/distr/Common/NidusClient/ContextualNidusClient/IContextualNidusClient.js +6 -0
- package/distr/Common/NidusClient/ContextualNidusClient/IContextualNidusClient.js.map +1 -0
- package/distr/Common/NidusClient/Fakes/CreateUniqueNidusEntryId.js +11 -0
- package/distr/Common/NidusClient/Fakes/CreateUniqueNidusEntryId.js.map +1 -0
- package/distr/Common/NidusClient/Fakes/FakeNidusClient.js +66 -0
- package/distr/Common/NidusClient/Fakes/FakeNidusClient.js.map +1 -0
- package/distr/Common/NidusClient/Fakes/LocalStorageBasedNidusClient.js +108 -0
- package/distr/Common/NidusClient/Fakes/LocalStorageBasedNidusClient.js.map +1 -0
- package/distr/Common/NidusClient/INidusClient.js +14 -0
- package/distr/Common/NidusClient/INidusClient.js.map +1 -0
- package/distr/Common/NidusClient/NidusClientContext.js +34 -0
- package/distr/Common/NidusClient/NidusClientContext.js.map +1 -0
- package/distr/Common/NidusClient/NidusClientImpl.js +55 -0
- package/distr/Common/NidusClient/NidusClientImpl.js.map +1 -0
- package/distr/Common/PathConstants.js +11 -0
- package/distr/Common/PathConstants.js.map +1 -0
- package/distr/Common/PicklistApiClient/IPicklistApiClient.js +6 -0
- package/distr/Common/PicklistApiClient/IPicklistApiClient.js.map +1 -0
- package/distr/Common/PicklistApiClient/PicklistApiClient.js +31 -0
- package/distr/Common/PicklistApiClient/PicklistApiClient.js.map +1 -0
- package/distr/Common/PicklistApiClient/PicklistRequestV2Builder.js +36 -0
- package/distr/Common/PicklistApiClient/PicklistRequestV2Builder.js.map +1 -0
- package/distr/Common/PicklistApiClient/Serializers/DigestFilterColumnSerializer.js +53 -0
- package/distr/Common/PicklistApiClient/Serializers/DigestFilterColumnSerializer.js.map +1 -0
- package/distr/Common/PicklistApiClient/Serializers/DigestLogicalFilterSerializer.js +37 -0
- package/distr/Common/PicklistApiClient/Serializers/DigestLogicalFilterSerializer.js.map +1 -0
- package/distr/Common/PicklistApiClient/Types/PicklistRequestV2.js +6 -0
- package/distr/Common/PicklistApiClient/Types/PicklistRequestV2.js.map +1 -0
- package/distr/Common/PicklistApiClient/Types/PicklistResultV2.js +6 -0
- package/distr/Common/PicklistApiClient/Types/PicklistResultV2.js.map +1 -0
- package/distr/Common/RngSchemeTypes/types.js +6 -0
- package/distr/Common/RngSchemeTypes/types.js.map +1 -0
- package/distr/Common/StringArrayKey.js +26 -0
- package/distr/Common/StringArrayKey.js.map +1 -0
- package/distr/Common/TextExtractor/TextExtractorTypes.js +6 -0
- package/distr/Common/TextExtractor/TextExtractorTypes.js.map +1 -0
- package/distr/Common/TypingUtils.js +118 -0
- package/distr/Common/TypingUtils.js.map +1 -0
- package/distr/Common/UUID.js +14 -0
- package/distr/Common/UUID.js.map +1 -0
- package/distr/Common/UseAsyncEffect.js +20 -0
- package/distr/Common/UseAsyncEffect.js.map +1 -0
- package/distr/Common/UseShowOnce.js +60 -0
- package/distr/Common/UseShowOnce.js.map +1 -0
- package/distr/Common/UseTypedSelector.js +10 -0
- package/distr/Common/UseTypedSelector.js.map +1 -0
- package/distr/Common/WellKnownDirectories.js +14 -0
- package/distr/Common/WellKnownDirectories.js.map +1 -0
- package/distr/Common/hashUtils.js +14 -0
- package/distr/Common/hashUtils.js.map +1 -0
- package/distr/Tools/src/BuildTasks/ClientJS/BuildClientJsTask.js +77 -0
- package/distr/Tools/src/BuildTasks/ClientJS/BuildClientJsTask.js.map +1 -0
- package/distr/Tools/src/BuildTasks/ClientJS/IsWebpack5.js +14 -0
- package/distr/Tools/src/BuildTasks/ClientJS/IsWebpack5.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Engine/AcquireFormEngine.js +22 -0
- package/distr/Tools/src/BuildTasks/Engine/AcquireFormEngine.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Engine/AcquirePublishedEngineTask.js +88 -0
- package/distr/Tools/src/BuildTasks/Engine/AcquirePublishedEngineTask.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Engine/BuildLocalEngineTask.js +82 -0
- package/distr/Tools/src/BuildTasks/Engine/BuildLocalEngineTask.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Engine/EngineSource.js +10 -0
- package/distr/Tools/src/BuildTasks/Engine/EngineSource.js.map +1 -0
- package/distr/Tools/src/BuildTasks/EngineStructureUtils.js +42 -0
- package/distr/Tools/src/BuildTasks/EngineStructureUtils.js.map +1 -0
- package/distr/Tools/src/BuildTasks/EngineVersionUtils.js +30 -0
- package/distr/Tools/src/BuildTasks/EngineVersionUtils.js.map +1 -0
- package/distr/Tools/src/BuildTasks/FSTask.js +67 -0
- package/distr/Tools/src/BuildTasks/FSTask.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Form/CompileForm.js +52 -0
- package/distr/Tools/src/BuildTasks/Form/CompileForm.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Form/GenerateForm.js +44 -0
- package/distr/Tools/src/BuildTasks/Form/GenerateForm.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Form/NullFormGenerator.js +37 -0
- package/distr/Tools/src/BuildTasks/Form/NullFormGenerator.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathFiles.js +25 -0
- package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathFiles.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Form/WriteFLangNormalizationFiles.js +31 -0
- package/distr/Tools/src/BuildTasks/Form/WriteFLangNormalizationFiles.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/AcquireFormGenerator.js +27 -0
- package/distr/Tools/src/BuildTasks/Generator/AcquireFormGenerator.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/AcquirePublishedGeneratorTask.js +95 -0
- package/distr/Tools/src/BuildTasks/Generator/AcquirePublishedGeneratorTask.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/BuildGeneratorFromSourcesTask.js +126 -0
- package/distr/Tools/src/BuildTasks/Generator/BuildGeneratorFromSourcesTask.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/CreateAsyncGenerator.js +174 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/CreateAsyncGenerator.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.js +121 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ProcessSugarWorker.js +45 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ProcessSugarWorker.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js +52 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/RequireUncached.js +49 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/RequireUncached.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/TypedProcessWorker.js +19 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/TypedProcessWorker.js.map +1 -0
- package/distr/Tools/src/BuildTasks/ProcessUtils/ProcessUtils.js +64 -0
- package/distr/Tools/src/BuildTasks/ProcessUtils/ProcessUtils.js.map +1 -0
- package/distr/Tools/src/BuildTasks/ProcessUtils/ShellProcessHandle.js +84 -0
- package/distr/Tools/src/BuildTasks/ProcessUtils/ShellProcessHandle.js.map +1 -0
- package/distr/Tools/src/BuildTasks/PublishedVersionUtils.js +174 -0
- package/distr/Tools/src/BuildTasks/PublishedVersionUtils.js.map +1 -0
- package/distr/Tools/src/BuildTasks/ReadFormSource.js +112 -0
- package/distr/Tools/src/BuildTasks/ReadFormSource.js.map +1 -0
- package/distr/Tools/src/BuildTasks/ResolveFormInfo.js +107 -0
- package/distr/Tools/src/BuildTasks/ResolveFormInfo.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Version.js +41 -0
- package/distr/Tools/src/BuildTasks/Version.js.map +1 -0
- package/distr/Tools/src/BuildTasks/WriteFormMeta.js +27 -0
- package/distr/Tools/src/BuildTasks/WriteFormMeta.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildForms/BuildCacheMode.js +28 -0
- package/distr/Tools/src/CLICommands/BuildForms/BuildCacheMode.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js +169 -0
- package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildForms/ClearSourceMapForProduction.js +24 -0
- package/distr/Tools/src/CLICommands/BuildForms/ClearSourceMapForProduction.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +234 -0
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/BuildLogsWebsocketController.js +36 -0
- package/distr/Tools/src/CLICommands/BuildServer/BuildLogsWebsocketController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/BuildServerServerOptions.js +112 -0
- package/distr/Tools/src/CLICommands/BuildServer/BuildServerServerOptions.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js +158 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js +94 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js +129 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerCandyWidgetController.js +45 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerCandyWidgetController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsController.js +76 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsFromResourcesController.js +67 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsFromResourcesController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js +65 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerLocalSourcesEngineController.js +117 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerLocalSourcesEngineController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPrebuiltResourcesController.js +22 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPrebuiltResourcesController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPublishedEngineController.js +96 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPublishedEngineController.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js +231 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/CandyWidgetDevServer.js +70 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/CandyWidgetDevServer.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ClientJsDevServer.js +57 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ClientJsDevServer.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/EngineDevServer.js +67 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/EngineDevServer.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ReportGeneratorErrorToPageBody.js +21 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ReportGeneratorErrorToPageBody.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js +52 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorker.js +80 -0
- 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 +31 -0
- 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 +6 -0
- 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 +6 -0
- 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 +184 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/WebpackHybridFileSystem.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js +213 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/GlobToRegexp.js +28 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/GlobToRegexp.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/IGeneratedServerSideSourcesProvider.js +6 -0
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/IGeneratedServerSideSourcesProvider.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/RunBuildServer.js +110 -0
- package/distr/Tools/src/CLICommands/BuildServer/RunBuildServer.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildServer/StdStreamsIntercepter.js +50 -0
- package/distr/Tools/src/CLICommands/BuildServer/StdStreamsIntercepter.js.map +1 -0
- package/distr/Tools/src/CLICommands/CommonOptions/BuildDebugOnlyOption.js +19 -0
- package/distr/Tools/src/CLICommands/CommonOptions/BuildDebugOnlyOption.js.map +1 -0
- package/distr/Tools/src/CLICommands/CommonOptions/CommonOptionDefintions.js +30 -0
- package/distr/Tools/src/CLICommands/CommonOptions/CommonOptionDefintions.js.map +1 -0
- package/distr/Tools/src/CLICommands/CommonOptions/CommonOptions.js +6 -0
- package/distr/Tools/src/CLICommands/CommonOptions/CommonOptions.js.map +1 -0
- package/distr/Tools/src/CLICommands/DevBuild/DevBuildOptions.js +163 -0
- package/distr/Tools/src/CLICommands/DevBuild/DevBuildOptions.js.map +1 -0
- package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +112 -0
- package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js.map +1 -0
- package/distr/Tools/src/CLICommands/FormStats/FormStatsOptions.js +34 -0
- package/distr/Tools/src/CLICommands/FormStats/FormStatsOptions.js.map +1 -0
- package/distr/Tools/src/CLICommands/FormStats/RunFormStats.js +50 -0
- package/distr/Tools/src/CLICommands/FormStats/RunFormStats.js.map +1 -0
- package/distr/Tools/src/CLICommands/FormsHelper/FormsHelperController.js +54 -0
- package/distr/Tools/src/CLICommands/FormsHelper/FormsHelperController.js.map +1 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/autocalc/{gfv}./320/232/320/241.candy.js.kclang +0 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/converters/{gfv}.AfterMerge.xslt +11 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/converters/{gfv}.BeforePreload.xslt +11 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/converters/{gfv}.fufPatcher.xslt +11 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/converters/{gfv}.outer.inner.json +1 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/fetchfunctions/{gfv}.fetchfunctions.js +2 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/fetchfunctions/{gfv}.fetchfunctions.js.map +1 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/form.json +12 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/helpers/addPril1.txt +6 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/presentations.json +8 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/schemas/{gfv}.0.rng.xml +20 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/sugar/index.sugar.xml +10 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/browser/Smoke.test.js +16 -0
- 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 +23 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/ui/DemoTest.test.js.map +1 -0
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/validations/validations.KC.kclang +0 -0
- package/distr/Tools/src/CLICommands/InitForm/InitFormOptions.js +34 -0
- package/distr/Tools/src/CLICommands/InitForm/InitFormOptions.js.map +1 -0
- package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js +117 -0
- package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js.map +1 -0
- package/distr/Tools/src/CLICommands/Localization/LocalizationOptions.js +44 -0
- package/distr/Tools/src/CLICommands/Localization/LocalizationOptions.js.map +1 -0
- package/distr/Tools/src/CLICommands/Localization/RunLocalization.js +73 -0
- package/distr/Tools/src/CLICommands/Localization/RunLocalization.js.map +1 -0
- package/distr/Tools/src/CLICommands/RenameFiles/RenameFilesOptions.js +25 -0
- package/distr/Tools/src/CLICommands/RenameFiles/RenameFilesOptions.js.map +1 -0
- package/distr/Tools/src/CLICommands/RenameFiles/RunRenameFiles.js +38 -0
- package/distr/Tools/src/CLICommands/RenameFiles/RunRenameFiles.js.map +1 -0
- package/distr/Tools/src/CLICommands/SugarExtractor/ExtractTextsFromSugarController.js +36 -0
- package/distr/Tools/src/CLICommands/SugarExtractor/ExtractTextsFromSugarController.js.map +1 -0
- package/distr/Tools/src/CLICommands/SugarExtractor/Utils.js +50 -0
- package/distr/Tools/src/CLICommands/SugarExtractor/Utils.js.map +1 -0
- package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js +144 -0
- package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js.map +1 -0
- package/distr/Tools/src/CLICommands/UpgradeForm/UpgradeFormOptions.js +78 -0
- package/distr/Tools/src/CLICommands/UpgradeForm/UpgradeFormOptions.js.map +1 -0
- package/distr/Tools/src/CandyCLI.js +144 -0
- package/distr/Tools/src/CandyCLI.js.map +1 -0
- package/distr/Tools/src/CheckNodeJsVersion.js +32 -0
- package/distr/Tools/src/CheckNodeJsVersion.js.map +1 -0
- package/distr/Tools/src/Commons/ApiClient/ToolsApiClient.js +28 -0
- package/distr/Tools/src/Commons/ApiClient/ToolsApiClient.js.map +1 -0
- package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplication.js +93 -0
- package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplication.js.map +1 -0
- package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplicationContext.js +24 -0
- package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplicationContext.js.map +1 -0
- package/distr/Tools/src/Commons/ErrorUntyped.js +6 -0
- package/distr/Tools/src/Commons/ErrorUntyped.js.map +1 -0
- package/distr/Tools/src/Commons/EventObject.js +74 -0
- package/distr/Tools/src/Commons/EventObject.js.map +1 -0
- package/distr/Tools/src/Commons/ExecUtils.js +38 -0
- package/distr/Tools/src/Commons/ExecUtils.js.map +1 -0
- package/distr/Tools/src/Commons/ExtractGfvsFromFileName.js +21 -0
- package/distr/Tools/src/Commons/ExtractGfvsFromFileName.js.map +1 -0
- package/distr/Tools/src/Commons/FormGlobsUtils.js +137 -0
- package/distr/Tools/src/Commons/FormGlobsUtils.js.map +1 -0
- package/distr/Tools/src/Commons/FormLocationInfo.js +6 -0
- package/distr/Tools/src/Commons/FormLocationInfo.js.map +1 -0
- package/distr/Tools/src/Commons/FsUtils.js +35 -0
- package/distr/Tools/src/Commons/FsUtils.js.map +1 -0
- package/distr/Tools/src/Commons/GetCpuLimits.js +64 -0
- package/distr/Tools/src/Commons/GetCpuLimits.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Actions.js +38 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Actions.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Methods.js +57 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Methods.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/NotFoundWebError.js +15 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/NotFoundWebError.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/CookieParamParamBinder.js +18 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/CookieParamParamBinder.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/IParamBinder.js +6 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/IParamBinder.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/JsonBodyParamBinder.js +14 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/JsonBodyParamBinder.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/StringBodyParamBinder.js +17 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/StringBodyParamBinder.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlParamBinder.js +22 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlParamBinder.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlQueryParamBinder.js +20 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlQueryParamBinder.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Params.js +46 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Params.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomActionResultHandler.js +13 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomActionResultHandler.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomContentResultHandler.js +18 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomContentResultHandler.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/EmptyResultHandler.js +13 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/EmptyResultHandler.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/HtmlResultHandler.js +13 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/HtmlResultHandler.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/IResultHandler.js +6 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/IResultHandler.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/JsonResultHandler.js +13 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/JsonResultHandler.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/PlainTextResultHandler.js +13 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/PlainTextResultHandler.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/StreamResultHandler.js +113 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/StreamResultHandler.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results.js +24 -0
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/ExpressServerWrapper.js +106 -0
- package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/ExpressServerWrapper.js.map +1 -0
- package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/SingletonController.js +22 -0
- package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/SingletonController.js.map +1 -0
- package/distr/Tools/src/Commons/Locks/Lock.js +24 -0
- package/distr/Tools/src/Commons/Locks/Lock.js.map +1 -0
- package/distr/Tools/src/Commons/Locks/LockHandle.js +17 -0
- package/distr/Tools/src/Commons/Locks/LockHandle.js.map +1 -0
- package/distr/Tools/src/Commons/Locks/ReadWriteLockCollection.js +31 -0
- package/distr/Tools/src/Commons/Locks/ReadWriteLockCollection.js.map +1 -0
- package/distr/Tools/src/Commons/Logging/ELKLogger.js +56 -0
- package/distr/Tools/src/Commons/Logging/ELKLogger.js.map +1 -0
- package/distr/Tools/src/Commons/Logging/ILogger.js +25 -0
- package/distr/Tools/src/Commons/Logging/ILogger.js.map +1 -0
- package/distr/Tools/src/Commons/Logging/InMemoryLogger.js +61 -0
- package/distr/Tools/src/Commons/Logging/InMemoryLogger.js.map +1 -0
- package/distr/Tools/src/Commons/Logging/Logger.js +78 -0
- package/distr/Tools/src/Commons/Logging/Logger.js.map +1 -0
- package/distr/Tools/src/Commons/Logging/StaticLogger.js +37 -0
- package/distr/Tools/src/Commons/Logging/StaticLogger.js.map +1 -0
- package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.d.js +2 -0
- package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.d.js.map +1 -0
- package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.js +152 -0
- package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.js.map +1 -0
- package/distr/Tools/src/Commons/PathPattern.js +42 -0
- package/distr/Tools/src/Commons/PathPattern.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/AggregatedError.js +16 -0
- package/distr/Tools/src/Commons/TasksCore/AggregatedError.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/BuildTask.js +6 -0
- package/distr/Tools/src/Commons/TasksCore/BuildTask.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/ChainableValueProducer.js +668 -0
- package/distr/Tools/src/Commons/TasksCore/ChainableValueProducer.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/DirectoryEntriesProducer.js +77 -0
- package/distr/Tools/src/Commons/TasksCore/DirectoryEntriesProducer.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/EmptyProducer.js +20 -0
- package/distr/Tools/src/Commons/TasksCore/EmptyProducer.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/FileSystemEntriesProducer.js +48 -0
- package/distr/Tools/src/Commons/TasksCore/FileSystemEntriesProducer.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/FileValueProducer.js +45 -0
- package/distr/Tools/src/Commons/TasksCore/FileValueProducer.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/FixedDirectoryEntriesProducer.js +25 -0
- package/distr/Tools/src/Commons/TasksCore/FixedDirectoryEntriesProducer.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/Observe.js +35 -0
- package/distr/Tools/src/Commons/TasksCore/Observe.js.map +1 -0
- package/distr/Tools/src/Commons/TasksCore/SingleValueProducer.js +29 -0
- package/distr/Tools/src/Commons/TasksCore/SingleValueProducer.js.map +1 -0
- package/distr/Tools/src/Commons/TimingUtils.js +13 -0
- package/distr/Tools/src/Commons/TimingUtils.js.map +1 -0
- package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js +180 -0
- package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js.map +1 -0
- package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js +145 -0
- package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js.map +1 -0
- package/distr/Tools/src/FormWebpackConfiguration/variables.less +132 -0
- package/distr/Tools/src/GenerateReadMe.js +54 -0
- package/distr/Tools/src/GenerateReadMe.js.map +1 -0
- package/distr/Tools/src/Keys/localhost-key.pem +116 -0
- package/distr/Tools/src/Keys/localhost.pem +35 -0
- package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js +2 -0
- package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js.LICENSE.txt +49 -0
- package/distr/Tools/src/LocalServerFrontEndDist/favicon-16x16.png +0 -0
- package/distr/Tools/src/LocalServerFrontEndDist/favicon-32x32.png +0 -0
- package/distr/Tools/src/LocalServerFrontEndDist/favicon.ico +0 -0
- package/distr/Tools/src/LocalServerFrontEndDist/index.html +1 -0
- package/distr/Tools/src/LocalServerFrontEndDist/index.js +3 -0
- package/distr/Tools/src/LocalServerFrontEndDist/index.js.LICENSE.txt +60 -0
- package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -0
- package/distr/Tools/src/Options/CandyToolOptions.js +20 -0
- package/distr/Tools/src/Options/CandyToolOptions.js.map +1 -0
- package/distr/Tools/src/ReadFarmConfig.js +18 -0
- package/distr/Tools/src/ReadFarmConfig.js.map +1 -0
- package/distr/Tools/src/SelfUpdate.js +121 -0
- package/distr/Tools/src/SelfUpdate.js.map +1 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +1722 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.LICENSE.txt +1 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +1076 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/jquery-1.11.3.min.js +3328 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/jquery-1.11.3.min.js.map +1 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/polyfill.min.js +6517 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/polyfill.min.js.map +1 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/testing.min.js +222 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/testing.min.js.map +1 -0
- package/distr/Tools/src/StaticFilesForResourcesDir/jquery-1.11.3.min.js +3328 -0
- package/distr/Tools/src/StaticFilesForResourcesDir/jquery-1.11.3.min.js.map +1 -0
- package/distr/Tools/src/StaticFilesForResourcesDir/polyfill.min.js +6517 -0
- package/distr/Tools/src/StaticFilesForResourcesDir/polyfill.min.js.map +1 -0
- package/distr/Tools/src/StaticFilesForResourcesDir/testing.min.js +222 -0
- package/distr/Tools/src/StaticFilesForResourcesDir/testing.min.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,3328 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
!function (global, factory) {
|
|
4
|
+
"object" == typeof module && "object" == typeof module.exports ? module.exports = global.document ? factory(global, !0) : function (w) {
|
|
5
|
+
if (!w.document) throw new Error("jQuery requires a window with a document");
|
|
6
|
+
return factory(w);
|
|
7
|
+
} : factory(global);
|
|
8
|
+
}("undefined" != typeof window ? window : void 0, function (window, noGlobal) {
|
|
9
|
+
function isArraylike(obj) {
|
|
10
|
+
var length = "length" in obj && obj.length,
|
|
11
|
+
type = jQuery.type(obj);
|
|
12
|
+
return "function" === type || jQuery.isWindow(obj) ? !1 : 1 === obj.nodeType && length ? !0 : "array" === type || 0 === length || "number" == typeof length && length > 0 && length - 1 in obj;
|
|
13
|
+
}
|
|
14
|
+
function winnow(elements, qualifier, not) {
|
|
15
|
+
if (jQuery.isFunction(qualifier)) return jQuery.grep(elements, function (elem, i) {
|
|
16
|
+
return !!qualifier.call(elem, i, elem) !== not;
|
|
17
|
+
});
|
|
18
|
+
if (qualifier.nodeType) return jQuery.grep(elements, function (elem) {
|
|
19
|
+
return elem === qualifier !== not;
|
|
20
|
+
});
|
|
21
|
+
if ("string" == typeof qualifier) {
|
|
22
|
+
if (risSimple.test(qualifier)) return jQuery.filter(qualifier, elements, not);
|
|
23
|
+
qualifier = jQuery.filter(qualifier, elements);
|
|
24
|
+
}
|
|
25
|
+
return jQuery.grep(elements, function (elem) {
|
|
26
|
+
return jQuery.inArray(elem, qualifier) >= 0 !== not;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
function sibling(cur, dir) {
|
|
30
|
+
do cur = cur[dir]; while (cur && 1 !== cur.nodeType);
|
|
31
|
+
return cur;
|
|
32
|
+
}
|
|
33
|
+
function createOptions(options) {
|
|
34
|
+
var object = optionsCache[options] = {};
|
|
35
|
+
return jQuery.each(options.match(rnotwhite) || [], function (_, flag) {
|
|
36
|
+
object[flag] = !0;
|
|
37
|
+
}), object;
|
|
38
|
+
}
|
|
39
|
+
function detach() {
|
|
40
|
+
document.addEventListener ? (document.removeEventListener("DOMContentLoaded", completed, !1), window.removeEventListener("load", completed, !1)) : (document.detachEvent("onreadystatechange", completed), window.detachEvent("onload", completed));
|
|
41
|
+
}
|
|
42
|
+
function completed() {
|
|
43
|
+
(document.addEventListener || "load" === event.type || "complete" === document.readyState) && (detach(), jQuery.ready());
|
|
44
|
+
}
|
|
45
|
+
function dataAttr(elem, key, data) {
|
|
46
|
+
if (void 0 === data && 1 === elem.nodeType) {
|
|
47
|
+
var name = "data-" + key.replace(rmultiDash, "-$1").toLowerCase();
|
|
48
|
+
if (data = elem.getAttribute(name), "string" == typeof data) {
|
|
49
|
+
try {
|
|
50
|
+
data = "true" === data ? !0 : "false" === data ? !1 : "null" === data ? null : +data + "" === data ? +data : rbrace.test(data) ? jQuery.parseJSON(data) : data;
|
|
51
|
+
} catch (e) {}
|
|
52
|
+
jQuery.data(elem, key, data);
|
|
53
|
+
} else data = void 0;
|
|
54
|
+
}
|
|
55
|
+
return data;
|
|
56
|
+
}
|
|
57
|
+
function isEmptyDataObject(obj) {
|
|
58
|
+
var name;
|
|
59
|
+
for (name in obj) if (("data" !== name || !jQuery.isEmptyObject(obj[name])) && "toJSON" !== name) return !1;
|
|
60
|
+
return !0;
|
|
61
|
+
}
|
|
62
|
+
function internalData(elem, name, data, pvt) {
|
|
63
|
+
if (jQuery.acceptData(elem)) {
|
|
64
|
+
var ret,
|
|
65
|
+
thisCache,
|
|
66
|
+
internalKey = jQuery.expando,
|
|
67
|
+
isNode = elem.nodeType,
|
|
68
|
+
cache = isNode ? jQuery.cache : elem,
|
|
69
|
+
id = isNode ? elem[internalKey] : elem[internalKey] && internalKey;
|
|
70
|
+
if (id && cache[id] && (pvt || cache[id].data) || void 0 !== data || "string" != typeof name) return id || (id = isNode ? elem[internalKey] = deletedIds.pop() || jQuery.guid++ : internalKey), cache[id] || (cache[id] = isNode ? {} : {
|
|
71
|
+
toJSON: jQuery.noop
|
|
72
|
+
}), ("object" == typeof name || "function" == typeof name) && (pvt ? cache[id] = jQuery.extend(cache[id], name) : cache[id].data = jQuery.extend(cache[id].data, name)), thisCache = cache[id], pvt || (thisCache.data || (thisCache.data = {}), thisCache = thisCache.data), void 0 !== data && (thisCache[jQuery.camelCase(name)] = data), "string" == typeof name ? (ret = thisCache[name], null == ret && (ret = thisCache[jQuery.camelCase(name)])) : ret = thisCache, ret;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function internalRemoveData(elem, name, pvt) {
|
|
76
|
+
if (jQuery.acceptData(elem)) {
|
|
77
|
+
var thisCache,
|
|
78
|
+
i,
|
|
79
|
+
isNode = elem.nodeType,
|
|
80
|
+
cache = isNode ? jQuery.cache : elem,
|
|
81
|
+
id = isNode ? elem[jQuery.expando] : jQuery.expando;
|
|
82
|
+
if (cache[id]) {
|
|
83
|
+
if (name && (thisCache = pvt ? cache[id] : cache[id].data)) {
|
|
84
|
+
jQuery.isArray(name) ? name = name.concat(jQuery.map(name, jQuery.camelCase)) : name in thisCache ? name = [name] : (name = jQuery.camelCase(name), name = name in thisCache ? [name] : name.split(" ")), i = name.length;
|
|
85
|
+
for (; i--;) delete thisCache[name[i]];
|
|
86
|
+
if (pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache)) return;
|
|
87
|
+
}
|
|
88
|
+
(pvt || (delete cache[id].data, isEmptyDataObject(cache[id]))) && (isNode ? jQuery.cleanData([elem], !0) : support.deleteExpando || cache != cache.window ? delete cache[id] : cache[id] = null);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
function returnTrue() {
|
|
93
|
+
return !0;
|
|
94
|
+
}
|
|
95
|
+
function returnFalse() {
|
|
96
|
+
return !1;
|
|
97
|
+
}
|
|
98
|
+
function safeActiveElement() {
|
|
99
|
+
try {
|
|
100
|
+
return document.activeElement;
|
|
101
|
+
} catch (err) {}
|
|
102
|
+
}
|
|
103
|
+
function createSafeFragment(document) {
|
|
104
|
+
var list = nodeNames.split("|"),
|
|
105
|
+
safeFrag = document.createDocumentFragment();
|
|
106
|
+
if (safeFrag.createElement) for (; list.length;) safeFrag.createElement(list.pop());
|
|
107
|
+
return safeFrag;
|
|
108
|
+
}
|
|
109
|
+
function getAll(context, tag) {
|
|
110
|
+
var elems,
|
|
111
|
+
elem,
|
|
112
|
+
i = 0,
|
|
113
|
+
found = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName(tag || "*") : typeof context.querySelectorAll !== strundefined ? context.querySelectorAll(tag || "*") : void 0;
|
|
114
|
+
if (!found) for (found = [], elems = context.childNodes || context; null != (elem = elems[i]); i++) !tag || jQuery.nodeName(elem, tag) ? found.push(elem) : jQuery.merge(found, getAll(elem, tag));
|
|
115
|
+
return void 0 === tag || tag && jQuery.nodeName(context, tag) ? jQuery.merge([context], found) : found;
|
|
116
|
+
}
|
|
117
|
+
function fixDefaultChecked(elem) {
|
|
118
|
+
rcheckableType.test(elem.type) && (elem.defaultChecked = elem.checked);
|
|
119
|
+
}
|
|
120
|
+
function manipulationTarget(elem, content) {
|
|
121
|
+
return jQuery.nodeName(elem, "table") && jQuery.nodeName(11 !== content.nodeType ? content : content.firstChild, "tr") ? elem.getElementsByTagName("tbody")[0] || elem.appendChild(elem.ownerDocument.createElement("tbody")) : elem;
|
|
122
|
+
}
|
|
123
|
+
function disableScript(elem) {
|
|
124
|
+
return elem.type = (null !== jQuery.find.attr(elem, "type")) + "/" + elem.type, elem;
|
|
125
|
+
}
|
|
126
|
+
function restoreScript(elem) {
|
|
127
|
+
var match = rscriptTypeMasked.exec(elem.type);
|
|
128
|
+
return match ? elem.type = match[1] : elem.removeAttribute("type"), elem;
|
|
129
|
+
}
|
|
130
|
+
function setGlobalEval(elems, refElements) {
|
|
131
|
+
for (var elem, i = 0; null != (elem = elems[i]); i++) jQuery._data(elem, "globalEval", !refElements || jQuery._data(refElements[i], "globalEval"));
|
|
132
|
+
}
|
|
133
|
+
function cloneCopyEvent(src, dest) {
|
|
134
|
+
if (1 === dest.nodeType && jQuery.hasData(src)) {
|
|
135
|
+
var type,
|
|
136
|
+
i,
|
|
137
|
+
l,
|
|
138
|
+
oldData = jQuery._data(src),
|
|
139
|
+
curData = jQuery._data(dest, oldData),
|
|
140
|
+
events = oldData.events;
|
|
141
|
+
if (events) {
|
|
142
|
+
delete curData.handle, curData.events = {};
|
|
143
|
+
for (type in events) for (i = 0, l = events[type].length; l > i; i++) jQuery.event.add(dest, type, events[type][i]);
|
|
144
|
+
}
|
|
145
|
+
curData.data && (curData.data = jQuery.extend({}, curData.data));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
function fixCloneNodeIssues(src, dest) {
|
|
149
|
+
var nodeName, e, data;
|
|
150
|
+
if (1 === dest.nodeType) {
|
|
151
|
+
if (nodeName = dest.nodeName.toLowerCase(), !support.noCloneEvent && dest[jQuery.expando]) {
|
|
152
|
+
data = jQuery._data(dest);
|
|
153
|
+
for (e in data.events) jQuery.removeEvent(dest, e, data.handle);
|
|
154
|
+
dest.removeAttribute(jQuery.expando);
|
|
155
|
+
}
|
|
156
|
+
"script" === nodeName && dest.text !== src.text ? (disableScript(dest).text = src.text, restoreScript(dest)) : "object" === nodeName ? (dest.parentNode && (dest.outerHTML = src.outerHTML), support.html5Clone && src.innerHTML && !jQuery.trim(dest.innerHTML) && (dest.innerHTML = src.innerHTML)) : "input" === nodeName && rcheckableType.test(src.type) ? (dest.defaultChecked = dest.checked = src.checked, dest.value !== src.value && (dest.value = src.value)) : "option" === nodeName ? dest.defaultSelected = dest.selected = src.defaultSelected : ("input" === nodeName || "textarea" === nodeName) && (dest.defaultValue = src.defaultValue);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
function actualDisplay(name, doc) {
|
|
160
|
+
var style,
|
|
161
|
+
elem = jQuery(doc.createElement(name)).appendTo(doc.body),
|
|
162
|
+
display = window.getDefaultComputedStyle && (style = window.getDefaultComputedStyle(elem[0])) ? style.display : jQuery.css(elem[0], "display");
|
|
163
|
+
return elem.detach(), display;
|
|
164
|
+
}
|
|
165
|
+
function defaultDisplay(nodeName) {
|
|
166
|
+
var doc = document,
|
|
167
|
+
display = elemdisplay[nodeName];
|
|
168
|
+
return display || (display = actualDisplay(nodeName, doc), "none" !== display && display || (iframe = (iframe || jQuery("<iframe frameborder='0' width='0' height='0'/>")).appendTo(doc.documentElement), doc = (iframe[0].contentWindow || iframe[0].contentDocument).document, doc.write(), doc.close(), display = actualDisplay(nodeName, doc), iframe.detach()), elemdisplay[nodeName] = display), display;
|
|
169
|
+
}
|
|
170
|
+
function addGetHookIf(conditionFn, hookFn) {
|
|
171
|
+
return {
|
|
172
|
+
get: function () {
|
|
173
|
+
var condition = conditionFn();
|
|
174
|
+
if (null != condition) return condition ? void delete this.get : (this.get = hookFn).apply(this, arguments);
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
function vendorPropName(style, name) {
|
|
179
|
+
if (name in style) return name;
|
|
180
|
+
for (var capName = name.charAt(0).toUpperCase() + name.slice(1), origName = name, i = cssPrefixes.length; i--;) if (name = cssPrefixes[i] + capName, name in style) return name;
|
|
181
|
+
return origName;
|
|
182
|
+
}
|
|
183
|
+
function showHide(elements, show) {
|
|
184
|
+
for (var display, elem, hidden, values = [], index = 0, length = elements.length; length > index; index++) elem = elements[index], elem.style && (values[index] = jQuery._data(elem, "olddisplay"), display = elem.style.display, show ? (values[index] || "none" !== display || (elem.style.display = ""), "" === elem.style.display && isHidden(elem) && (values[index] = jQuery._data(elem, "olddisplay", defaultDisplay(elem.nodeName)))) : (hidden = isHidden(elem), (display && "none" !== display || !hidden) && jQuery._data(elem, "olddisplay", hidden ? display : jQuery.css(elem, "display"))));
|
|
185
|
+
for (index = 0; length > index; index++) elem = elements[index], elem.style && (show && "none" !== elem.style.display && "" !== elem.style.display || (elem.style.display = show ? values[index] || "" : "none"));
|
|
186
|
+
return elements;
|
|
187
|
+
}
|
|
188
|
+
function setPositiveNumber(elem, value, subtract) {
|
|
189
|
+
var matches = rnumsplit.exec(value);
|
|
190
|
+
return matches ? Math.max(0, matches[1] - (subtract || 0)) + (matches[2] || "px") : value;
|
|
191
|
+
}
|
|
192
|
+
function augmentWidthOrHeight(elem, name, extra, isBorderBox, styles) {
|
|
193
|
+
for (var i = extra === (isBorderBox ? "border" : "content") ? 4 : "width" === name ? 1 : 0, val = 0; 4 > i; i += 2) "margin" === extra && (val += jQuery.css(elem, extra + cssExpand[i], !0, styles)), isBorderBox ? ("content" === extra && (val -= jQuery.css(elem, "padding" + cssExpand[i], !0, styles)), "margin" !== extra && (val -= jQuery.css(elem, "border" + cssExpand[i] + "Width", !0, styles))) : (val += jQuery.css(elem, "padding" + cssExpand[i], !0, styles), "padding" !== extra && (val += jQuery.css(elem, "border" + cssExpand[i] + "Width", !0, styles)));
|
|
194
|
+
return val;
|
|
195
|
+
}
|
|
196
|
+
function getWidthOrHeight(elem, name, extra) {
|
|
197
|
+
var valueIsBorderBox = !0,
|
|
198
|
+
val = "width" === name ? elem.offsetWidth : elem.offsetHeight,
|
|
199
|
+
styles = getStyles(elem),
|
|
200
|
+
isBorderBox = support.boxSizing && "border-box" === jQuery.css(elem, "boxSizing", !1, styles);
|
|
201
|
+
if (0 >= val || null == val) {
|
|
202
|
+
if (val = curCSS(elem, name, styles), (0 > val || null == val) && (val = elem.style[name]), rnumnonpx.test(val)) return val;
|
|
203
|
+
valueIsBorderBox = isBorderBox && (support.boxSizingReliable() || val === elem.style[name]), val = parseFloat(val) || 0;
|
|
204
|
+
}
|
|
205
|
+
return val + augmentWidthOrHeight(elem, name, extra || (isBorderBox ? "border" : "content"), valueIsBorderBox, styles) + "px";
|
|
206
|
+
}
|
|
207
|
+
function Tween(elem, options, prop, end, easing) {
|
|
208
|
+
return new Tween.prototype.init(elem, options, prop, end, easing);
|
|
209
|
+
}
|
|
210
|
+
function createFxNow() {
|
|
211
|
+
return setTimeout(function () {
|
|
212
|
+
fxNow = void 0;
|
|
213
|
+
}), fxNow = jQuery.now();
|
|
214
|
+
}
|
|
215
|
+
function genFx(type, includeWidth) {
|
|
216
|
+
var which,
|
|
217
|
+
attrs = {
|
|
218
|
+
height: type
|
|
219
|
+
},
|
|
220
|
+
i = 0;
|
|
221
|
+
for (includeWidth = includeWidth ? 1 : 0; 4 > i; i += 2 - includeWidth) which = cssExpand[i], attrs["margin" + which] = attrs["padding" + which] = type;
|
|
222
|
+
return includeWidth && (attrs.opacity = attrs.width = type), attrs;
|
|
223
|
+
}
|
|
224
|
+
function createTween(value, prop, animation) {
|
|
225
|
+
for (var tween, collection = (tweeners[prop] || []).concat(tweeners["*"]), index = 0, length = collection.length; length > index; index++) if (tween = collection[index].call(animation, prop, value)) return tween;
|
|
226
|
+
}
|
|
227
|
+
function defaultPrefilter(elem, props, opts) {
|
|
228
|
+
var prop,
|
|
229
|
+
value,
|
|
230
|
+
toggle,
|
|
231
|
+
tween,
|
|
232
|
+
hooks,
|
|
233
|
+
oldfire,
|
|
234
|
+
display,
|
|
235
|
+
checkDisplay,
|
|
236
|
+
anim = this,
|
|
237
|
+
orig = {},
|
|
238
|
+
style = elem.style,
|
|
239
|
+
hidden = elem.nodeType && isHidden(elem),
|
|
240
|
+
dataShow = jQuery._data(elem, "fxshow");
|
|
241
|
+
opts.queue || (hooks = jQuery._queueHooks(elem, "fx"), null == hooks.unqueued && (hooks.unqueued = 0, oldfire = hooks.empty.fire, hooks.empty.fire = function () {
|
|
242
|
+
hooks.unqueued || oldfire();
|
|
243
|
+
}), hooks.unqueued++, anim.always(function () {
|
|
244
|
+
anim.always(function () {
|
|
245
|
+
hooks.unqueued--, jQuery.queue(elem, "fx").length || hooks.empty.fire();
|
|
246
|
+
});
|
|
247
|
+
})), 1 === elem.nodeType && ("height" in props || "width" in props) && (opts.overflow = [style.overflow, style.overflowX, style.overflowY], display = jQuery.css(elem, "display"), checkDisplay = "none" === display ? jQuery._data(elem, "olddisplay") || defaultDisplay(elem.nodeName) : display, "inline" === checkDisplay && "none" === jQuery.css(elem, "float") && (support.inlineBlockNeedsLayout && "inline" !== defaultDisplay(elem.nodeName) ? style.zoom = 1 : style.display = "inline-block")), opts.overflow && (style.overflow = "hidden", support.shrinkWrapBlocks() || anim.always(function () {
|
|
248
|
+
style.overflow = opts.overflow[0], style.overflowX = opts.overflow[1], style.overflowY = opts.overflow[2];
|
|
249
|
+
}));
|
|
250
|
+
for (prop in props) if (value = props[prop], rfxtypes.exec(value)) {
|
|
251
|
+
if (delete props[prop], toggle = toggle || "toggle" === value, value === (hidden ? "hide" : "show")) {
|
|
252
|
+
if ("show" !== value || !dataShow || void 0 === dataShow[prop]) continue;
|
|
253
|
+
hidden = !0;
|
|
254
|
+
}
|
|
255
|
+
orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop);
|
|
256
|
+
} else display = void 0;
|
|
257
|
+
if (jQuery.isEmptyObject(orig)) "inline" === ("none" === display ? defaultDisplay(elem.nodeName) : display) && (style.display = display);else {
|
|
258
|
+
dataShow ? "hidden" in dataShow && (hidden = dataShow.hidden) : dataShow = jQuery._data(elem, "fxshow", {}), toggle && (dataShow.hidden = !hidden), hidden ? jQuery(elem).show() : anim.done(function () {
|
|
259
|
+
jQuery(elem).hide();
|
|
260
|
+
}), anim.done(function () {
|
|
261
|
+
var prop;
|
|
262
|
+
jQuery._removeData(elem, "fxshow");
|
|
263
|
+
for (prop in orig) jQuery.style(elem, prop, orig[prop]);
|
|
264
|
+
});
|
|
265
|
+
for (prop in orig) tween = createTween(hidden ? dataShow[prop] : 0, prop, anim), prop in dataShow || (dataShow[prop] = tween.start, hidden && (tween.end = tween.start, tween.start = "width" === prop || "height" === prop ? 1 : 0));
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
function propFilter(props, specialEasing) {
|
|
269
|
+
var index, name, easing, value, hooks;
|
|
270
|
+
for (index in props) if (name = jQuery.camelCase(index), easing = specialEasing[name], value = props[index], jQuery.isArray(value) && (easing = value[1], value = props[index] = value[0]), index !== name && (props[name] = value, delete props[index]), hooks = jQuery.cssHooks[name], hooks && "expand" in hooks) {
|
|
271
|
+
value = hooks.expand(value), delete props[name];
|
|
272
|
+
for (index in value) index in props || (props[index] = value[index], specialEasing[index] = easing);
|
|
273
|
+
} else specialEasing[name] = easing;
|
|
274
|
+
}
|
|
275
|
+
function Animation(elem, properties, options) {
|
|
276
|
+
var result,
|
|
277
|
+
stopped,
|
|
278
|
+
index = 0,
|
|
279
|
+
length = animationPrefilters.length,
|
|
280
|
+
deferred = jQuery.Deferred().always(function () {
|
|
281
|
+
delete tick.elem;
|
|
282
|
+
}),
|
|
283
|
+
tick = function () {
|
|
284
|
+
if (stopped) return !1;
|
|
285
|
+
for (var currentTime = fxNow || createFxNow(), remaining = Math.max(0, animation.startTime + animation.duration - currentTime), temp = remaining / animation.duration || 0, percent = 1 - temp, index = 0, length = animation.tweens.length; length > index; index++) animation.tweens[index].run(percent);
|
|
286
|
+
return deferred.notifyWith(elem, [animation, percent, remaining]), 1 > percent && length ? remaining : (deferred.resolveWith(elem, [animation]), !1);
|
|
287
|
+
},
|
|
288
|
+
animation = deferred.promise({
|
|
289
|
+
elem: elem,
|
|
290
|
+
props: jQuery.extend({}, properties),
|
|
291
|
+
opts: jQuery.extend(!0, {
|
|
292
|
+
specialEasing: {}
|
|
293
|
+
}, options),
|
|
294
|
+
originalProperties: properties,
|
|
295
|
+
originalOptions: options,
|
|
296
|
+
startTime: fxNow || createFxNow(),
|
|
297
|
+
duration: options.duration,
|
|
298
|
+
tweens: [],
|
|
299
|
+
createTween: function (prop, end) {
|
|
300
|
+
var tween = jQuery.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing);
|
|
301
|
+
return animation.tweens.push(tween), tween;
|
|
302
|
+
},
|
|
303
|
+
stop: function (gotoEnd) {
|
|
304
|
+
var index = 0,
|
|
305
|
+
length = gotoEnd ? animation.tweens.length : 0;
|
|
306
|
+
if (stopped) return this;
|
|
307
|
+
for (stopped = !0; length > index; index++) animation.tweens[index].run(1);
|
|
308
|
+
return gotoEnd ? deferred.resolveWith(elem, [animation, gotoEnd]) : deferred.rejectWith(elem, [animation, gotoEnd]), this;
|
|
309
|
+
}
|
|
310
|
+
}),
|
|
311
|
+
props = animation.props;
|
|
312
|
+
for (propFilter(props, animation.opts.specialEasing); length > index; index++) if (result = animationPrefilters[index].call(animation, elem, props, animation.opts)) return result;
|
|
313
|
+
return jQuery.map(props, createTween, animation), jQuery.isFunction(animation.opts.start) && animation.opts.start.call(elem, animation), jQuery.fx.timer(jQuery.extend(tick, {
|
|
314
|
+
elem: elem,
|
|
315
|
+
anim: animation,
|
|
316
|
+
queue: animation.opts.queue
|
|
317
|
+
})), animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);
|
|
318
|
+
}
|
|
319
|
+
function addToPrefiltersOrTransports(structure) {
|
|
320
|
+
return function (dataTypeExpression, func) {
|
|
321
|
+
"string" != typeof dataTypeExpression && (func = dataTypeExpression, dataTypeExpression = "*");
|
|
322
|
+
var dataType,
|
|
323
|
+
i = 0,
|
|
324
|
+
dataTypes = dataTypeExpression.toLowerCase().match(rnotwhite) || [];
|
|
325
|
+
if (jQuery.isFunction(func)) for (; dataType = dataTypes[i++];) "+" === dataType.charAt(0) ? (dataType = dataType.slice(1) || "*", (structure[dataType] = structure[dataType] || []).unshift(func)) : (structure[dataType] = structure[dataType] || []).push(func);
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {
|
|
329
|
+
function inspect(dataType) {
|
|
330
|
+
var selected;
|
|
331
|
+
return inspected[dataType] = !0, jQuery.each(structure[dataType] || [], function (_, prefilterOrFactory) {
|
|
332
|
+
var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);
|
|
333
|
+
return "string" != typeof dataTypeOrTransport || seekingTransport || inspected[dataTypeOrTransport] ? seekingTransport ? !(selected = dataTypeOrTransport) : void 0 : (options.dataTypes.unshift(dataTypeOrTransport), inspect(dataTypeOrTransport), !1);
|
|
334
|
+
}), selected;
|
|
335
|
+
}
|
|
336
|
+
var inspected = {},
|
|
337
|
+
seekingTransport = structure === transports;
|
|
338
|
+
return inspect(options.dataTypes[0]) || !inspected["*"] && inspect("*");
|
|
339
|
+
}
|
|
340
|
+
function ajaxExtend(target, src) {
|
|
341
|
+
var deep,
|
|
342
|
+
key,
|
|
343
|
+
flatOptions = jQuery.ajaxSettings.flatOptions || {};
|
|
344
|
+
for (key in src) void 0 !== src[key] && ((flatOptions[key] ? target : deep || (deep = {}))[key] = src[key]);
|
|
345
|
+
return deep && jQuery.extend(!0, target, deep), target;
|
|
346
|
+
}
|
|
347
|
+
function ajaxHandleResponses(s, jqXHR, responses) {
|
|
348
|
+
for (var firstDataType, ct, finalDataType, type, contents = s.contents, dataTypes = s.dataTypes; "*" === dataTypes[0];) dataTypes.shift(), void 0 === ct && (ct = s.mimeType || jqXHR.getResponseHeader("Content-Type"));
|
|
349
|
+
if (ct) for (type in contents) if (contents[type] && contents[type].test(ct)) {
|
|
350
|
+
dataTypes.unshift(type);
|
|
351
|
+
break;
|
|
352
|
+
}
|
|
353
|
+
if (dataTypes[0] in responses) finalDataType = dataTypes[0];else {
|
|
354
|
+
for (type in responses) {
|
|
355
|
+
if (!dataTypes[0] || s.converters[type + " " + dataTypes[0]]) {
|
|
356
|
+
finalDataType = type;
|
|
357
|
+
break;
|
|
358
|
+
}
|
|
359
|
+
firstDataType || (firstDataType = type);
|
|
360
|
+
}
|
|
361
|
+
finalDataType = finalDataType || firstDataType;
|
|
362
|
+
}
|
|
363
|
+
return finalDataType ? (finalDataType !== dataTypes[0] && dataTypes.unshift(finalDataType), responses[finalDataType]) : void 0;
|
|
364
|
+
}
|
|
365
|
+
function ajaxConvert(s, response, jqXHR, isSuccess) {
|
|
366
|
+
var conv2,
|
|
367
|
+
current,
|
|
368
|
+
conv,
|
|
369
|
+
tmp,
|
|
370
|
+
prev,
|
|
371
|
+
converters = {},
|
|
372
|
+
dataTypes = s.dataTypes.slice();
|
|
373
|
+
if (dataTypes[1]) for (conv in s.converters) converters[conv.toLowerCase()] = s.converters[conv];
|
|
374
|
+
for (current = dataTypes.shift(); current;) if (s.responseFields[current] && (jqXHR[s.responseFields[current]] = response), !prev && isSuccess && s.dataFilter && (response = s.dataFilter(response, s.dataType)), prev = current, current = dataTypes.shift()) if ("*" === current) current = prev;else if ("*" !== prev && prev !== current) {
|
|
375
|
+
if (conv = converters[prev + " " + current] || converters["* " + current], !conv) for (conv2 in converters) if (tmp = conv2.split(" "), tmp[1] === current && (conv = converters[prev + " " + tmp[0]] || converters["* " + tmp[0]])) {
|
|
376
|
+
conv === !0 ? conv = converters[conv2] : converters[conv2] !== !0 && (current = tmp[0], dataTypes.unshift(tmp[1]));
|
|
377
|
+
break;
|
|
378
|
+
}
|
|
379
|
+
if (conv !== !0) if (conv && s["throws"]) response = conv(response);else try {
|
|
380
|
+
response = conv(response);
|
|
381
|
+
} catch (e) {
|
|
382
|
+
return {
|
|
383
|
+
state: "parsererror",
|
|
384
|
+
error: conv ? e : "No conversion from " + prev + " to " + current
|
|
385
|
+
};
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
return {
|
|
389
|
+
state: "success",
|
|
390
|
+
data: response
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
function buildParams(prefix, obj, traditional, add) {
|
|
394
|
+
var name;
|
|
395
|
+
if (jQuery.isArray(obj)) jQuery.each(obj, function (i, v) {
|
|
396
|
+
traditional || rbracket.test(prefix) ? add(prefix, v) : buildParams(prefix + "[" + ("object" == typeof v ? i : "") + "]", v, traditional, add);
|
|
397
|
+
});else if (traditional || "object" !== jQuery.type(obj)) add(prefix, obj);else for (name in obj) buildParams(prefix + "[" + name + "]", obj[name], traditional, add);
|
|
398
|
+
}
|
|
399
|
+
function createStandardXHR() {
|
|
400
|
+
try {
|
|
401
|
+
return new window.XMLHttpRequest();
|
|
402
|
+
} catch (e) {}
|
|
403
|
+
}
|
|
404
|
+
function createActiveXHR() {
|
|
405
|
+
try {
|
|
406
|
+
return new window.ActiveXObject("Microsoft.XMLHTTP");
|
|
407
|
+
} catch (e) {}
|
|
408
|
+
}
|
|
409
|
+
function getWindow(elem) {
|
|
410
|
+
return jQuery.isWindow(elem) ? elem : 9 === elem.nodeType ? elem.defaultView || elem.parentWindow : !1;
|
|
411
|
+
}
|
|
412
|
+
var deletedIds = [],
|
|
413
|
+
slice = deletedIds.slice,
|
|
414
|
+
concat = deletedIds.concat,
|
|
415
|
+
push = deletedIds.push,
|
|
416
|
+
indexOf = deletedIds.indexOf,
|
|
417
|
+
class2type = {},
|
|
418
|
+
toString = class2type.toString,
|
|
419
|
+
hasOwn = class2type.hasOwnProperty,
|
|
420
|
+
support = {},
|
|
421
|
+
version = "1.11.3",
|
|
422
|
+
jQuery = function (selector, context) {
|
|
423
|
+
return new jQuery.fn.init(selector, context);
|
|
424
|
+
},
|
|
425
|
+
rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
|
|
426
|
+
rmsPrefix = /^-ms-/,
|
|
427
|
+
rdashAlpha = /-([\da-z])/gi,
|
|
428
|
+
fcamelCase = function (all, letter) {
|
|
429
|
+
return letter.toUpperCase();
|
|
430
|
+
};
|
|
431
|
+
jQuery.fn = jQuery.prototype = {
|
|
432
|
+
jquery: version,
|
|
433
|
+
constructor: jQuery,
|
|
434
|
+
selector: "",
|
|
435
|
+
length: 0,
|
|
436
|
+
toArray: function () {
|
|
437
|
+
return slice.call(this);
|
|
438
|
+
},
|
|
439
|
+
get: function (num) {
|
|
440
|
+
return null != num ? 0 > num ? this[num + this.length] : this[num] : slice.call(this);
|
|
441
|
+
},
|
|
442
|
+
pushStack: function (elems) {
|
|
443
|
+
var ret = jQuery.merge(this.constructor(), elems);
|
|
444
|
+
return ret.prevObject = this, ret.context = this.context, ret;
|
|
445
|
+
},
|
|
446
|
+
each: function (callback, args) {
|
|
447
|
+
return jQuery.each(this, callback, args);
|
|
448
|
+
},
|
|
449
|
+
map: function (callback) {
|
|
450
|
+
return this.pushStack(jQuery.map(this, function (elem, i) {
|
|
451
|
+
return callback.call(elem, i, elem);
|
|
452
|
+
}));
|
|
453
|
+
},
|
|
454
|
+
slice: function () {
|
|
455
|
+
return this.pushStack(slice.apply(this, arguments));
|
|
456
|
+
},
|
|
457
|
+
first: function () {
|
|
458
|
+
return this.eq(0);
|
|
459
|
+
},
|
|
460
|
+
last: function () {
|
|
461
|
+
return this.eq(-1);
|
|
462
|
+
},
|
|
463
|
+
eq: function (i) {
|
|
464
|
+
var len = this.length,
|
|
465
|
+
j = +i + (0 > i ? len : 0);
|
|
466
|
+
return this.pushStack(j >= 0 && len > j ? [this[j]] : []);
|
|
467
|
+
},
|
|
468
|
+
end: function () {
|
|
469
|
+
return this.prevObject || this.constructor(null);
|
|
470
|
+
},
|
|
471
|
+
push: push,
|
|
472
|
+
sort: deletedIds.sort,
|
|
473
|
+
splice: deletedIds.splice
|
|
474
|
+
}, jQuery.extend = jQuery.fn.extend = function () {
|
|
475
|
+
var src,
|
|
476
|
+
copyIsArray,
|
|
477
|
+
copy,
|
|
478
|
+
name,
|
|
479
|
+
options,
|
|
480
|
+
clone,
|
|
481
|
+
target = arguments[0] || {},
|
|
482
|
+
i = 1,
|
|
483
|
+
length = arguments.length,
|
|
484
|
+
deep = !1;
|
|
485
|
+
for ("boolean" == typeof target && (deep = target, target = arguments[i] || {}, i++), "object" == typeof target || jQuery.isFunction(target) || (target = {}), i === length && (target = this, i--); length > i; i++) if (null != (options = arguments[i])) for (name in options) src = target[name], copy = options[name], target !== copy && (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy))) ? (copyIsArray ? (copyIsArray = !1, clone = src && jQuery.isArray(src) ? src : []) : clone = src && jQuery.isPlainObject(src) ? src : {}, target[name] = jQuery.extend(deep, clone, copy)) : void 0 !== copy && (target[name] = copy));
|
|
486
|
+
return target;
|
|
487
|
+
}, jQuery.extend({
|
|
488
|
+
expando: "jQuery" + (version + Math.random()).replace(/\D/g, ""),
|
|
489
|
+
isReady: !0,
|
|
490
|
+
error: function (msg) {
|
|
491
|
+
throw new Error(msg);
|
|
492
|
+
},
|
|
493
|
+
noop: function () {},
|
|
494
|
+
isFunction: function (obj) {
|
|
495
|
+
return "function" === jQuery.type(obj);
|
|
496
|
+
},
|
|
497
|
+
isArray: Array.isArray || function (obj) {
|
|
498
|
+
return "array" === jQuery.type(obj);
|
|
499
|
+
},
|
|
500
|
+
isWindow: function (obj) {
|
|
501
|
+
return null != obj && obj == obj.window;
|
|
502
|
+
},
|
|
503
|
+
isNumeric: function (obj) {
|
|
504
|
+
return !jQuery.isArray(obj) && obj - parseFloat(obj) + 1 >= 0;
|
|
505
|
+
},
|
|
506
|
+
isEmptyObject: function (obj) {
|
|
507
|
+
var name;
|
|
508
|
+
for (name in obj) return !1;
|
|
509
|
+
return !0;
|
|
510
|
+
},
|
|
511
|
+
isPlainObject: function (obj) {
|
|
512
|
+
var key;
|
|
513
|
+
if (!obj || "object" !== jQuery.type(obj) || obj.nodeType || jQuery.isWindow(obj)) return !1;
|
|
514
|
+
try {
|
|
515
|
+
if (obj.constructor && !hasOwn.call(obj, "constructor") && !hasOwn.call(obj.constructor.prototype, "isPrototypeOf")) return !1;
|
|
516
|
+
} catch (e) {
|
|
517
|
+
return !1;
|
|
518
|
+
}
|
|
519
|
+
if (support.ownLast) for (key in obj) return hasOwn.call(obj, key);
|
|
520
|
+
for (key in obj);
|
|
521
|
+
return void 0 === key || hasOwn.call(obj, key);
|
|
522
|
+
},
|
|
523
|
+
type: function (obj) {
|
|
524
|
+
return null == obj ? obj + "" : "object" == typeof obj || "function" == typeof obj ? class2type[toString.call(obj)] || "object" : typeof obj;
|
|
525
|
+
},
|
|
526
|
+
globalEval: function (data) {
|
|
527
|
+
data && jQuery.trim(data) && (window.execScript || function (data) {
|
|
528
|
+
window.eval.call(window, data);
|
|
529
|
+
})(data);
|
|
530
|
+
},
|
|
531
|
+
camelCase: function (string) {
|
|
532
|
+
return string.replace(rmsPrefix, "ms-").replace(rdashAlpha, fcamelCase);
|
|
533
|
+
},
|
|
534
|
+
nodeName: function (elem, name) {
|
|
535
|
+
return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
|
|
536
|
+
},
|
|
537
|
+
each: function (obj, callback, args) {
|
|
538
|
+
var value,
|
|
539
|
+
i = 0,
|
|
540
|
+
length = obj.length,
|
|
541
|
+
isArray = isArraylike(obj);
|
|
542
|
+
if (args) {
|
|
543
|
+
if (isArray) for (; length > i && (value = callback.apply(obj[i], args), value !== !1); i++);else for (i in obj) if (value = callback.apply(obj[i], args), value === !1) break;
|
|
544
|
+
} else if (isArray) for (; length > i && (value = callback.call(obj[i], i, obj[i]), value !== !1); i++);else for (i in obj) if (value = callback.call(obj[i], i, obj[i]), value === !1) break;
|
|
545
|
+
return obj;
|
|
546
|
+
},
|
|
547
|
+
trim: function (text) {
|
|
548
|
+
return null == text ? "" : (text + "").replace(rtrim, "");
|
|
549
|
+
},
|
|
550
|
+
makeArray: function (arr, results) {
|
|
551
|
+
var ret = results || [];
|
|
552
|
+
return null != arr && (isArraylike(Object(arr)) ? jQuery.merge(ret, "string" == typeof arr ? [arr] : arr) : push.call(ret, arr)), ret;
|
|
553
|
+
},
|
|
554
|
+
inArray: function (elem, arr, i) {
|
|
555
|
+
var len;
|
|
556
|
+
if (arr) {
|
|
557
|
+
if (indexOf) return indexOf.call(arr, elem, i);
|
|
558
|
+
for (len = arr.length, i = i ? 0 > i ? Math.max(0, len + i) : i : 0; len > i; i++) if (i in arr && arr[i] === elem) return i;
|
|
559
|
+
}
|
|
560
|
+
return -1;
|
|
561
|
+
},
|
|
562
|
+
merge: function (first, second) {
|
|
563
|
+
for (var len = +second.length, j = 0, i = first.length; len > j;) first[i++] = second[j++];
|
|
564
|
+
if (len !== len) for (; void 0 !== second[j];) first[i++] = second[j++];
|
|
565
|
+
return first.length = i, first;
|
|
566
|
+
},
|
|
567
|
+
grep: function (elems, callback, invert) {
|
|
568
|
+
for (var callbackInverse, matches = [], i = 0, length = elems.length, callbackExpect = !invert; length > i; i++) callbackInverse = !callback(elems[i], i), callbackInverse !== callbackExpect && matches.push(elems[i]);
|
|
569
|
+
return matches;
|
|
570
|
+
},
|
|
571
|
+
map: function (elems, callback, arg) {
|
|
572
|
+
var value,
|
|
573
|
+
i = 0,
|
|
574
|
+
length = elems.length,
|
|
575
|
+
isArray = isArraylike(elems),
|
|
576
|
+
ret = [];
|
|
577
|
+
if (isArray) for (; length > i; i++) value = callback(elems[i], i, arg), null != value && ret.push(value);else for (i in elems) value = callback(elems[i], i, arg), null != value && ret.push(value);
|
|
578
|
+
return concat.apply([], ret);
|
|
579
|
+
},
|
|
580
|
+
guid: 1,
|
|
581
|
+
proxy: function (fn, context) {
|
|
582
|
+
var args, proxy, tmp;
|
|
583
|
+
return "string" == typeof context && (tmp = fn[context], context = fn, fn = tmp), jQuery.isFunction(fn) ? (args = slice.call(arguments, 2), proxy = function () {
|
|
584
|
+
return fn.apply(context || this, args.concat(slice.call(arguments)));
|
|
585
|
+
}, proxy.guid = fn.guid = fn.guid || jQuery.guid++, proxy) : void 0;
|
|
586
|
+
},
|
|
587
|
+
now: function () {
|
|
588
|
+
return +new Date();
|
|
589
|
+
},
|
|
590
|
+
support: support
|
|
591
|
+
}), jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function (i, name) {
|
|
592
|
+
class2type["[object " + name + "]"] = name.toLowerCase();
|
|
593
|
+
});
|
|
594
|
+
var Sizzle = function (window) {
|
|
595
|
+
function Sizzle(selector, context, results, seed) {
|
|
596
|
+
var match, elem, m, nodeType, i, groups, old, nid, newContext, newSelector;
|
|
597
|
+
if ((context ? context.ownerDocument || context : preferredDoc) !== document && setDocument(context), context = context || document, results = results || [], nodeType = context.nodeType, "string" != typeof selector || !selector || 1 !== nodeType && 9 !== nodeType && 11 !== nodeType) return results;
|
|
598
|
+
if (!seed && documentIsHTML) {
|
|
599
|
+
if (11 !== nodeType && (match = rquickExpr.exec(selector))) if (m = match[1]) {
|
|
600
|
+
if (9 === nodeType) {
|
|
601
|
+
if (elem = context.getElementById(m), !elem || !elem.parentNode) return results;
|
|
602
|
+
if (elem.id === m) return results.push(elem), results;
|
|
603
|
+
} else if (context.ownerDocument && (elem = context.ownerDocument.getElementById(m)) && contains(context, elem) && elem.id === m) return results.push(elem), results;
|
|
604
|
+
} else {
|
|
605
|
+
if (match[2]) return push.apply(results, context.getElementsByTagName(selector)), results;
|
|
606
|
+
if ((m = match[3]) && support.getElementsByClassName) return push.apply(results, context.getElementsByClassName(m)), results;
|
|
607
|
+
}
|
|
608
|
+
if (support.qsa && (!rbuggyQSA || !rbuggyQSA.test(selector))) {
|
|
609
|
+
if (nid = old = expando, newContext = context, newSelector = 1 !== nodeType && selector, 1 === nodeType && "object" !== context.nodeName.toLowerCase()) {
|
|
610
|
+
for (groups = tokenize(selector), (old = context.getAttribute("id")) ? nid = old.replace(rescape, "\\$&") : context.setAttribute("id", nid), nid = "[id='" + nid + "'] ", i = groups.length; i--;) groups[i] = nid + toSelector(groups[i]);
|
|
611
|
+
newContext = rsibling.test(selector) && testContext(context.parentNode) || context, newSelector = groups.join(",");
|
|
612
|
+
}
|
|
613
|
+
if (newSelector) try {
|
|
614
|
+
return push.apply(results, newContext.querySelectorAll(newSelector)), results;
|
|
615
|
+
} catch (qsaError) {} finally {
|
|
616
|
+
old || context.removeAttribute("id");
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
return select(selector.replace(rtrim, "$1"), context, results, seed);
|
|
621
|
+
}
|
|
622
|
+
function createCache() {
|
|
623
|
+
function cache(key, value) {
|
|
624
|
+
return keys.push(key + " ") > Expr.cacheLength && delete cache[keys.shift()], cache[key + " "] = value;
|
|
625
|
+
}
|
|
626
|
+
var keys = [];
|
|
627
|
+
return cache;
|
|
628
|
+
}
|
|
629
|
+
function markFunction(fn) {
|
|
630
|
+
return fn[expando] = !0, fn;
|
|
631
|
+
}
|
|
632
|
+
function assert(fn) {
|
|
633
|
+
var div = document.createElement("div");
|
|
634
|
+
try {
|
|
635
|
+
return !!fn(div);
|
|
636
|
+
} catch (e) {
|
|
637
|
+
return !1;
|
|
638
|
+
} finally {
|
|
639
|
+
div.parentNode && div.parentNode.removeChild(div), div = null;
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
function addHandle(attrs, handler) {
|
|
643
|
+
for (var arr = attrs.split("|"), i = attrs.length; i--;) Expr.attrHandle[arr[i]] = handler;
|
|
644
|
+
}
|
|
645
|
+
function siblingCheck(a, b) {
|
|
646
|
+
var cur = b && a,
|
|
647
|
+
diff = cur && 1 === a.nodeType && 1 === b.nodeType && (~b.sourceIndex || MAX_NEGATIVE) - (~a.sourceIndex || MAX_NEGATIVE);
|
|
648
|
+
if (diff) return diff;
|
|
649
|
+
if (cur) for (; cur = cur.nextSibling;) if (cur === b) return -1;
|
|
650
|
+
return a ? 1 : -1;
|
|
651
|
+
}
|
|
652
|
+
function createInputPseudo(type) {
|
|
653
|
+
return function (elem) {
|
|
654
|
+
var name = elem.nodeName.toLowerCase();
|
|
655
|
+
return "input" === name && elem.type === type;
|
|
656
|
+
};
|
|
657
|
+
}
|
|
658
|
+
function createButtonPseudo(type) {
|
|
659
|
+
return function (elem) {
|
|
660
|
+
var name = elem.nodeName.toLowerCase();
|
|
661
|
+
return ("input" === name || "button" === name) && elem.type === type;
|
|
662
|
+
};
|
|
663
|
+
}
|
|
664
|
+
function createPositionalPseudo(fn) {
|
|
665
|
+
return markFunction(function (argument) {
|
|
666
|
+
return argument = +argument, markFunction(function (seed, matches) {
|
|
667
|
+
for (var j, matchIndexes = fn([], seed.length, argument), i = matchIndexes.length; i--;) seed[j = matchIndexes[i]] && (seed[j] = !(matches[j] = seed[j]));
|
|
668
|
+
});
|
|
669
|
+
});
|
|
670
|
+
}
|
|
671
|
+
function testContext(context) {
|
|
672
|
+
return context && "undefined" != typeof context.getElementsByTagName && context;
|
|
673
|
+
}
|
|
674
|
+
function setFilters() {}
|
|
675
|
+
function toSelector(tokens) {
|
|
676
|
+
for (var i = 0, len = tokens.length, selector = ""; len > i; i++) selector += tokens[i].value;
|
|
677
|
+
return selector;
|
|
678
|
+
}
|
|
679
|
+
function addCombinator(matcher, combinator, base) {
|
|
680
|
+
var dir = combinator.dir,
|
|
681
|
+
checkNonElements = base && "parentNode" === dir,
|
|
682
|
+
doneName = done++;
|
|
683
|
+
return combinator.first ? function (elem, context, xml) {
|
|
684
|
+
for (; elem = elem[dir];) if (1 === elem.nodeType || checkNonElements) return matcher(elem, context, xml);
|
|
685
|
+
} : function (elem, context, xml) {
|
|
686
|
+
var oldCache,
|
|
687
|
+
outerCache,
|
|
688
|
+
newCache = [dirruns, doneName];
|
|
689
|
+
if (xml) {
|
|
690
|
+
for (; elem = elem[dir];) if ((1 === elem.nodeType || checkNonElements) && matcher(elem, context, xml)) return !0;
|
|
691
|
+
} else for (; elem = elem[dir];) if (1 === elem.nodeType || checkNonElements) {
|
|
692
|
+
if (outerCache = elem[expando] || (elem[expando] = {}), (oldCache = outerCache[dir]) && oldCache[0] === dirruns && oldCache[1] === doneName) return newCache[2] = oldCache[2];
|
|
693
|
+
if (outerCache[dir] = newCache, newCache[2] = matcher(elem, context, xml)) return !0;
|
|
694
|
+
}
|
|
695
|
+
};
|
|
696
|
+
}
|
|
697
|
+
function elementMatcher(matchers) {
|
|
698
|
+
return matchers.length > 1 ? function (elem, context, xml) {
|
|
699
|
+
for (var i = matchers.length; i--;) if (!matchers[i](elem, context, xml)) return !1;
|
|
700
|
+
return !0;
|
|
701
|
+
} : matchers[0];
|
|
702
|
+
}
|
|
703
|
+
function multipleContexts(selector, contexts, results) {
|
|
704
|
+
for (var i = 0, len = contexts.length; len > i; i++) Sizzle(selector, contexts[i], results);
|
|
705
|
+
return results;
|
|
706
|
+
}
|
|
707
|
+
function condense(unmatched, map, filter, context, xml) {
|
|
708
|
+
for (var elem, newUnmatched = [], i = 0, len = unmatched.length, mapped = null != map; len > i; i++) (elem = unmatched[i]) && (!filter || filter(elem, context, xml)) && (newUnmatched.push(elem), mapped && map.push(i));
|
|
709
|
+
return newUnmatched;
|
|
710
|
+
}
|
|
711
|
+
function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {
|
|
712
|
+
return postFilter && !postFilter[expando] && (postFilter = setMatcher(postFilter)), postFinder && !postFinder[expando] && (postFinder = setMatcher(postFinder, postSelector)), markFunction(function (seed, results, context, xml) {
|
|
713
|
+
var temp,
|
|
714
|
+
i,
|
|
715
|
+
elem,
|
|
716
|
+
preMap = [],
|
|
717
|
+
postMap = [],
|
|
718
|
+
preexisting = results.length,
|
|
719
|
+
elems = seed || multipleContexts(selector || "*", context.nodeType ? [context] : context, []),
|
|
720
|
+
matcherIn = !preFilter || !seed && selector ? elems : condense(elems, preMap, preFilter, context, xml),
|
|
721
|
+
matcherOut = matcher ? postFinder || (seed ? preFilter : preexisting || postFilter) ? [] : results : matcherIn;
|
|
722
|
+
if (matcher && matcher(matcherIn, matcherOut, context, xml), postFilter) for (temp = condense(matcherOut, postMap), postFilter(temp, [], context, xml), i = temp.length; i--;) (elem = temp[i]) && (matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem));
|
|
723
|
+
if (seed) {
|
|
724
|
+
if (postFinder || preFilter) {
|
|
725
|
+
if (postFinder) {
|
|
726
|
+
for (temp = [], i = matcherOut.length; i--;) (elem = matcherOut[i]) && temp.push(matcherIn[i] = elem);
|
|
727
|
+
postFinder(null, matcherOut = [], temp, xml);
|
|
728
|
+
}
|
|
729
|
+
for (i = matcherOut.length; i--;) (elem = matcherOut[i]) && (temp = postFinder ? indexOf(seed, elem) : preMap[i]) > -1 && (seed[temp] = !(results[temp] = elem));
|
|
730
|
+
}
|
|
731
|
+
} else matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut), postFinder ? postFinder(null, results, matcherOut, xml) : push.apply(results, matcherOut);
|
|
732
|
+
});
|
|
733
|
+
}
|
|
734
|
+
function matcherFromTokens(tokens) {
|
|
735
|
+
for (var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[tokens[0].type], implicitRelative = leadingRelative || Expr.relative[" "], i = leadingRelative ? 1 : 0, matchContext = addCombinator(function (elem) {
|
|
736
|
+
return elem === checkContext;
|
|
737
|
+
}, implicitRelative, !0), matchAnyContext = addCombinator(function (elem) {
|
|
738
|
+
return indexOf(checkContext, elem) > -1;
|
|
739
|
+
}, implicitRelative, !0), matchers = [function (elem, context, xml) {
|
|
740
|
+
var ret = !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml));
|
|
741
|
+
return checkContext = null, ret;
|
|
742
|
+
}]; len > i; i++) if (matcher = Expr.relative[tokens[i].type]) matchers = [addCombinator(elementMatcher(matchers), matcher)];else {
|
|
743
|
+
if (matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches), matcher[expando]) {
|
|
744
|
+
for (j = ++i; len > j && !Expr.relative[tokens[j].type]; j++);
|
|
745
|
+
return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(tokens.slice(0, i - 1).concat({
|
|
746
|
+
value: " " === tokens[i - 2].type ? "*" : ""
|
|
747
|
+
})).replace(rtrim, "$1"), matcher, j > i && matcherFromTokens(tokens.slice(i, j)), len > j && matcherFromTokens(tokens = tokens.slice(j)), len > j && toSelector(tokens));
|
|
748
|
+
}
|
|
749
|
+
matchers.push(matcher);
|
|
750
|
+
}
|
|
751
|
+
return elementMatcher(matchers);
|
|
752
|
+
}
|
|
753
|
+
function matcherFromGroupMatchers(elementMatchers, setMatchers) {
|
|
754
|
+
var bySet = setMatchers.length > 0,
|
|
755
|
+
byElement = elementMatchers.length > 0,
|
|
756
|
+
superMatcher = function (seed, context, xml, results, outermost) {
|
|
757
|
+
var elem,
|
|
758
|
+
j,
|
|
759
|
+
matcher,
|
|
760
|
+
matchedCount = 0,
|
|
761
|
+
i = "0",
|
|
762
|
+
unmatched = seed && [],
|
|
763
|
+
setMatched = [],
|
|
764
|
+
contextBackup = outermostContext,
|
|
765
|
+
elems = seed || byElement && Expr.find.TAG("*", outermost),
|
|
766
|
+
dirrunsUnique = dirruns += null == contextBackup ? 1 : Math.random() || .1,
|
|
767
|
+
len = elems.length;
|
|
768
|
+
for (outermost && (outermostContext = context !== document && context); i !== len && null != (elem = elems[i]); i++) {
|
|
769
|
+
if (byElement && elem) {
|
|
770
|
+
for (j = 0; matcher = elementMatchers[j++];) if (matcher(elem, context, xml)) {
|
|
771
|
+
results.push(elem);
|
|
772
|
+
break;
|
|
773
|
+
}
|
|
774
|
+
outermost && (dirruns = dirrunsUnique);
|
|
775
|
+
}
|
|
776
|
+
bySet && ((elem = !matcher && elem) && matchedCount--, seed && unmatched.push(elem));
|
|
777
|
+
}
|
|
778
|
+
if (matchedCount += i, bySet && i !== matchedCount) {
|
|
779
|
+
for (j = 0; matcher = setMatchers[j++];) matcher(unmatched, setMatched, context, xml);
|
|
780
|
+
if (seed) {
|
|
781
|
+
if (matchedCount > 0) for (; i--;) unmatched[i] || setMatched[i] || (setMatched[i] = pop.call(results));
|
|
782
|
+
setMatched = condense(setMatched);
|
|
783
|
+
}
|
|
784
|
+
push.apply(results, setMatched), outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1 && Sizzle.uniqueSort(results);
|
|
785
|
+
}
|
|
786
|
+
return outermost && (dirruns = dirrunsUnique, outermostContext = contextBackup), unmatched;
|
|
787
|
+
};
|
|
788
|
+
return bySet ? markFunction(superMatcher) : superMatcher;
|
|
789
|
+
}
|
|
790
|
+
var i,
|
|
791
|
+
support,
|
|
792
|
+
Expr,
|
|
793
|
+
getText,
|
|
794
|
+
isXML,
|
|
795
|
+
tokenize,
|
|
796
|
+
compile,
|
|
797
|
+
select,
|
|
798
|
+
outermostContext,
|
|
799
|
+
sortInput,
|
|
800
|
+
hasDuplicate,
|
|
801
|
+
setDocument,
|
|
802
|
+
document,
|
|
803
|
+
docElem,
|
|
804
|
+
documentIsHTML,
|
|
805
|
+
rbuggyQSA,
|
|
806
|
+
rbuggyMatches,
|
|
807
|
+
matches,
|
|
808
|
+
contains,
|
|
809
|
+
expando = "sizzle" + 1 * new Date(),
|
|
810
|
+
preferredDoc = window.document,
|
|
811
|
+
dirruns = 0,
|
|
812
|
+
done = 0,
|
|
813
|
+
classCache = createCache(),
|
|
814
|
+
tokenCache = createCache(),
|
|
815
|
+
compilerCache = createCache(),
|
|
816
|
+
sortOrder = function (a, b) {
|
|
817
|
+
return a === b && (hasDuplicate = !0), 0;
|
|
818
|
+
},
|
|
819
|
+
MAX_NEGATIVE = 1 << 31,
|
|
820
|
+
hasOwn = {}.hasOwnProperty,
|
|
821
|
+
arr = [],
|
|
822
|
+
pop = arr.pop,
|
|
823
|
+
push_native = arr.push,
|
|
824
|
+
push = arr.push,
|
|
825
|
+
slice = arr.slice,
|
|
826
|
+
indexOf = function (list, elem) {
|
|
827
|
+
for (var i = 0, len = list.length; len > i; i++) if (list[i] === elem) return i;
|
|
828
|
+
return -1;
|
|
829
|
+
},
|
|
830
|
+
booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
|
|
831
|
+
whitespace = "[\\x20\\t\\r\\n\\f]",
|
|
832
|
+
characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
|
|
833
|
+
identifier = characterEncoding.replace("w", "w#"),
|
|
834
|
+
attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + "*([*^$|!~]?=)" + whitespace + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + "*\\]",
|
|
835
|
+
pseudos = ":(" + characterEncoding + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|.*)\\)|)",
|
|
836
|
+
rwhitespace = new RegExp(whitespace + "+", "g"),
|
|
837
|
+
rtrim = new RegExp("^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g"),
|
|
838
|
+
rcomma = new RegExp("^" + whitespace + "*," + whitespace + "*"),
|
|
839
|
+
rcombinators = new RegExp("^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*"),
|
|
840
|
+
rattributeQuotes = new RegExp("=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g"),
|
|
841
|
+
rpseudo = new RegExp(pseudos),
|
|
842
|
+
ridentifier = new RegExp("^" + identifier + "$"),
|
|
843
|
+
matchExpr = {
|
|
844
|
+
ID: new RegExp("^#(" + characterEncoding + ")"),
|
|
845
|
+
CLASS: new RegExp("^\\.(" + characterEncoding + ")"),
|
|
846
|
+
TAG: new RegExp("^(" + characterEncoding.replace("w", "w*") + ")"),
|
|
847
|
+
ATTR: new RegExp("^" + attributes),
|
|
848
|
+
PSEUDO: new RegExp("^" + pseudos),
|
|
849
|
+
CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i"),
|
|
850
|
+
bool: new RegExp("^(?:" + booleans + ")$", "i"),
|
|
851
|
+
needsContext: new RegExp("^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i")
|
|
852
|
+
},
|
|
853
|
+
rinputs = /^(?:input|select|textarea|button)$/i,
|
|
854
|
+
rheader = /^h\d$/i,
|
|
855
|
+
rnative = /^[^{]+\{\s*\[native \w/,
|
|
856
|
+
rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
|
|
857
|
+
rsibling = /[+~]/,
|
|
858
|
+
rescape = /'|\\/g,
|
|
859
|
+
runescape = new RegExp("\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig"),
|
|
860
|
+
funescape = function (_, escaped, escapedWhitespace) {
|
|
861
|
+
var high = "0x" + escaped - 65536;
|
|
862
|
+
return high !== high || escapedWhitespace ? escaped : 0 > high ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, 1023 & high | 56320);
|
|
863
|
+
},
|
|
864
|
+
unloadHandler = function () {
|
|
865
|
+
setDocument();
|
|
866
|
+
};
|
|
867
|
+
try {
|
|
868
|
+
push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes), arr[preferredDoc.childNodes.length].nodeType;
|
|
869
|
+
} catch (e) {
|
|
870
|
+
push = {
|
|
871
|
+
apply: arr.length ? function (target, els) {
|
|
872
|
+
push_native.apply(target, slice.call(els));
|
|
873
|
+
} : function (target, els) {
|
|
874
|
+
for (var j = target.length, i = 0; target[j++] = els[i++];);
|
|
875
|
+
target.length = j - 1;
|
|
876
|
+
}
|
|
877
|
+
};
|
|
878
|
+
}
|
|
879
|
+
support = Sizzle.support = {}, isXML = Sizzle.isXML = function (elem) {
|
|
880
|
+
var documentElement = elem && (elem.ownerDocument || elem).documentElement;
|
|
881
|
+
return documentElement ? "HTML" !== documentElement.nodeName : !1;
|
|
882
|
+
}, setDocument = Sizzle.setDocument = function (node) {
|
|
883
|
+
var hasCompare,
|
|
884
|
+
parent,
|
|
885
|
+
doc = node ? node.ownerDocument || node : preferredDoc;
|
|
886
|
+
return doc !== document && 9 === doc.nodeType && doc.documentElement ? (document = doc, docElem = doc.documentElement, parent = doc.defaultView, parent && parent !== parent.top && (parent.addEventListener ? parent.addEventListener("unload", unloadHandler, !1) : parent.attachEvent && parent.attachEvent("onunload", unloadHandler)), documentIsHTML = !isXML(doc), support.attributes = assert(function (div) {
|
|
887
|
+
return div.className = "i", !div.getAttribute("className");
|
|
888
|
+
}), support.getElementsByTagName = assert(function (div) {
|
|
889
|
+
return div.appendChild(doc.createComment("")), !div.getElementsByTagName("*").length;
|
|
890
|
+
}), support.getElementsByClassName = rnative.test(doc.getElementsByClassName), support.getById = assert(function (div) {
|
|
891
|
+
return docElem.appendChild(div).id = expando, !doc.getElementsByName || !doc.getElementsByName(expando).length;
|
|
892
|
+
}), support.getById ? (Expr.find.ID = function (id, context) {
|
|
893
|
+
if ("undefined" != typeof context.getElementById && documentIsHTML) {
|
|
894
|
+
var m = context.getElementById(id);
|
|
895
|
+
return m && m.parentNode ? [m] : [];
|
|
896
|
+
}
|
|
897
|
+
}, Expr.filter.ID = function (id) {
|
|
898
|
+
var attrId = id.replace(runescape, funescape);
|
|
899
|
+
return function (elem) {
|
|
900
|
+
return elem.getAttribute("id") === attrId;
|
|
901
|
+
};
|
|
902
|
+
}) : (delete Expr.find.ID, Expr.filter.ID = function (id) {
|
|
903
|
+
var attrId = id.replace(runescape, funescape);
|
|
904
|
+
return function (elem) {
|
|
905
|
+
var node = "undefined" != typeof elem.getAttributeNode && elem.getAttributeNode("id");
|
|
906
|
+
return node && node.value === attrId;
|
|
907
|
+
};
|
|
908
|
+
}), Expr.find.TAG = support.getElementsByTagName ? function (tag, context) {
|
|
909
|
+
return "undefined" != typeof context.getElementsByTagName ? context.getElementsByTagName(tag) : support.qsa ? context.querySelectorAll(tag) : void 0;
|
|
910
|
+
} : function (tag, context) {
|
|
911
|
+
var elem,
|
|
912
|
+
tmp = [],
|
|
913
|
+
i = 0,
|
|
914
|
+
results = context.getElementsByTagName(tag);
|
|
915
|
+
if ("*" === tag) {
|
|
916
|
+
for (; elem = results[i++];) 1 === elem.nodeType && tmp.push(elem);
|
|
917
|
+
return tmp;
|
|
918
|
+
}
|
|
919
|
+
return results;
|
|
920
|
+
}, Expr.find.CLASS = support.getElementsByClassName && function (className, context) {
|
|
921
|
+
return documentIsHTML ? context.getElementsByClassName(className) : void 0;
|
|
922
|
+
}, rbuggyMatches = [], rbuggyQSA = [], (support.qsa = rnative.test(doc.querySelectorAll)) && (assert(function (div) {
|
|
923
|
+
docElem.appendChild(div).innerHTML = "<a id='" + expando + "'></a><select id='" + expando + "-\f]' msallowcapture=''><option selected=''></option></select>", div.querySelectorAll("[msallowcapture^='']").length && rbuggyQSA.push("[*^$]=" + whitespace + "*(?:''|\"\")"), div.querySelectorAll("[selected]").length || rbuggyQSA.push("\\[" + whitespace + "*(?:value|" + booleans + ")"), div.querySelectorAll("[id~=" + expando + "-]").length || rbuggyQSA.push("~="), div.querySelectorAll(":checked").length || rbuggyQSA.push(":checked"), div.querySelectorAll("a#" + expando + "+*").length || rbuggyQSA.push(".#.+[+~]");
|
|
924
|
+
}), assert(function (div) {
|
|
925
|
+
var input = doc.createElement("input");
|
|
926
|
+
input.setAttribute("type", "hidden"), div.appendChild(input).setAttribute("name", "D"), div.querySelectorAll("[name=d]").length && rbuggyQSA.push("name" + whitespace + "*[*^$|!~]?="), div.querySelectorAll(":enabled").length || rbuggyQSA.push(":enabled", ":disabled"), div.querySelectorAll("*,:x"), rbuggyQSA.push(",.*:");
|
|
927
|
+
})), (support.matchesSelector = rnative.test(matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector)) && assert(function (div) {
|
|
928
|
+
support.disconnectedMatch = matches.call(div, "div"), matches.call(div, "[s!='']:x"), rbuggyMatches.push("!=", pseudos);
|
|
929
|
+
}), rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join("|")), rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join("|")), hasCompare = rnative.test(docElem.compareDocumentPosition), contains = hasCompare || rnative.test(docElem.contains) ? function (a, b) {
|
|
930
|
+
var adown = 9 === a.nodeType ? a.documentElement : a,
|
|
931
|
+
bup = b && b.parentNode;
|
|
932
|
+
return a === bup || !(!bup || 1 !== bup.nodeType || !(adown.contains ? adown.contains(bup) : a.compareDocumentPosition && 16 & a.compareDocumentPosition(bup)));
|
|
933
|
+
} : function (a, b) {
|
|
934
|
+
if (b) for (; b = b.parentNode;) if (b === a) return !0;
|
|
935
|
+
return !1;
|
|
936
|
+
}, sortOrder = hasCompare ? function (a, b) {
|
|
937
|
+
if (a === b) return hasDuplicate = !0, 0;
|
|
938
|
+
var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
|
|
939
|
+
return compare ? compare : (compare = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1, 1 & compare || !support.sortDetached && b.compareDocumentPosition(a) === compare ? a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ? -1 : b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ? 1 : sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0 : 4 & compare ? -1 : 1);
|
|
940
|
+
} : function (a, b) {
|
|
941
|
+
if (a === b) return hasDuplicate = !0, 0;
|
|
942
|
+
var cur,
|
|
943
|
+
i = 0,
|
|
944
|
+
aup = a.parentNode,
|
|
945
|
+
bup = b.parentNode,
|
|
946
|
+
ap = [a],
|
|
947
|
+
bp = [b];
|
|
948
|
+
if (!aup || !bup) return a === doc ? -1 : b === doc ? 1 : aup ? -1 : bup ? 1 : sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0;
|
|
949
|
+
if (aup === bup) return siblingCheck(a, b);
|
|
950
|
+
for (cur = a; cur = cur.parentNode;) ap.unshift(cur);
|
|
951
|
+
for (cur = b; cur = cur.parentNode;) bp.unshift(cur);
|
|
952
|
+
for (; ap[i] === bp[i];) i++;
|
|
953
|
+
return i ? siblingCheck(ap[i], bp[i]) : ap[i] === preferredDoc ? -1 : bp[i] === preferredDoc ? 1 : 0;
|
|
954
|
+
}, doc) : document;
|
|
955
|
+
}, Sizzle.matches = function (expr, elements) {
|
|
956
|
+
return Sizzle(expr, null, null, elements);
|
|
957
|
+
}, Sizzle.matchesSelector = function (elem, expr) {
|
|
958
|
+
if ((elem.ownerDocument || elem) !== document && setDocument(elem), expr = expr.replace(rattributeQuotes, "='$1']"), support.matchesSelector && documentIsHTML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) try {
|
|
959
|
+
var ret = matches.call(elem, expr);
|
|
960
|
+
if (ret || support.disconnectedMatch || elem.document && 11 !== elem.document.nodeType) return ret;
|
|
961
|
+
} catch (e) {}
|
|
962
|
+
return Sizzle(expr, document, null, [elem]).length > 0;
|
|
963
|
+
}, Sizzle.contains = function (context, elem) {
|
|
964
|
+
return (context.ownerDocument || context) !== document && setDocument(context), contains(context, elem);
|
|
965
|
+
}, Sizzle.attr = function (elem, name) {
|
|
966
|
+
(elem.ownerDocument || elem) !== document && setDocument(elem);
|
|
967
|
+
var fn = Expr.attrHandle[name.toLowerCase()],
|
|
968
|
+
val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : void 0;
|
|
969
|
+
return void 0 !== val ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;
|
|
970
|
+
}, Sizzle.error = function (msg) {
|
|
971
|
+
throw new Error("Syntax error, unrecognized expression: " + msg);
|
|
972
|
+
}, Sizzle.uniqueSort = function (results) {
|
|
973
|
+
var elem,
|
|
974
|
+
duplicates = [],
|
|
975
|
+
j = 0,
|
|
976
|
+
i = 0;
|
|
977
|
+
if (hasDuplicate = !support.detectDuplicates, sortInput = !support.sortStable && results.slice(0), results.sort(sortOrder), hasDuplicate) {
|
|
978
|
+
for (; elem = results[i++];) elem === results[i] && (j = duplicates.push(i));
|
|
979
|
+
for (; j--;) results.splice(duplicates[j], 1);
|
|
980
|
+
}
|
|
981
|
+
return sortInput = null, results;
|
|
982
|
+
}, getText = Sizzle.getText = function (elem) {
|
|
983
|
+
var node,
|
|
984
|
+
ret = "",
|
|
985
|
+
i = 0,
|
|
986
|
+
nodeType = elem.nodeType;
|
|
987
|
+
if (nodeType) {
|
|
988
|
+
if (1 === nodeType || 9 === nodeType || 11 === nodeType) {
|
|
989
|
+
if ("string" == typeof elem.textContent) return elem.textContent;
|
|
990
|
+
for (elem = elem.firstChild; elem; elem = elem.nextSibling) ret += getText(elem);
|
|
991
|
+
} else if (3 === nodeType || 4 === nodeType) return elem.nodeValue;
|
|
992
|
+
} else for (; node = elem[i++];) ret += getText(node);
|
|
993
|
+
return ret;
|
|
994
|
+
}, Expr = Sizzle.selectors = {
|
|
995
|
+
cacheLength: 50,
|
|
996
|
+
createPseudo: markFunction,
|
|
997
|
+
match: matchExpr,
|
|
998
|
+
attrHandle: {},
|
|
999
|
+
find: {},
|
|
1000
|
+
relative: {
|
|
1001
|
+
">": {
|
|
1002
|
+
dir: "parentNode",
|
|
1003
|
+
first: !0
|
|
1004
|
+
},
|
|
1005
|
+
" ": {
|
|
1006
|
+
dir: "parentNode"
|
|
1007
|
+
},
|
|
1008
|
+
"+": {
|
|
1009
|
+
dir: "previousSibling",
|
|
1010
|
+
first: !0
|
|
1011
|
+
},
|
|
1012
|
+
"~": {
|
|
1013
|
+
dir: "previousSibling"
|
|
1014
|
+
}
|
|
1015
|
+
},
|
|
1016
|
+
preFilter: {
|
|
1017
|
+
ATTR: function (match) {
|
|
1018
|
+
return match[1] = match[1].replace(runescape, funescape), match[3] = (match[3] || match[4] || match[5] || "").replace(runescape, funescape), "~=" === match[2] && (match[3] = " " + match[3] + " "), match.slice(0, 4);
|
|
1019
|
+
},
|
|
1020
|
+
CHILD: function (match) {
|
|
1021
|
+
return match[1] = match[1].toLowerCase(), "nth" === match[1].slice(0, 3) ? (match[3] || Sizzle.error(match[0]), match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * ("even" === match[3] || "odd" === match[3])), match[5] = +(match[7] + match[8] || "odd" === match[3])) : match[3] && Sizzle.error(match[0]), match;
|
|
1022
|
+
},
|
|
1023
|
+
PSEUDO: function (match) {
|
|
1024
|
+
var excess,
|
|
1025
|
+
unquoted = !match[6] && match[2];
|
|
1026
|
+
return matchExpr.CHILD.test(match[0]) ? null : (match[3] ? match[2] = match[4] || match[5] || "" : unquoted && rpseudo.test(unquoted) && (excess = tokenize(unquoted, !0)) && (excess = unquoted.indexOf(")", unquoted.length - excess) - unquoted.length) && (match[0] = match[0].slice(0, excess), match[2] = unquoted.slice(0, excess)), match.slice(0, 3));
|
|
1027
|
+
}
|
|
1028
|
+
},
|
|
1029
|
+
filter: {
|
|
1030
|
+
TAG: function (nodeNameSelector) {
|
|
1031
|
+
var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();
|
|
1032
|
+
return "*" === nodeNameSelector ? function () {
|
|
1033
|
+
return !0;
|
|
1034
|
+
} : function (elem) {
|
|
1035
|
+
return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
|
|
1036
|
+
};
|
|
1037
|
+
},
|
|
1038
|
+
CLASS: function (className) {
|
|
1039
|
+
var pattern = classCache[className + " "];
|
|
1040
|
+
return pattern || (pattern = new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)")) && classCache(className, function (elem) {
|
|
1041
|
+
return pattern.test("string" == typeof elem.className && elem.className || "undefined" != typeof elem.getAttribute && elem.getAttribute("class") || "");
|
|
1042
|
+
});
|
|
1043
|
+
},
|
|
1044
|
+
ATTR: function (name, operator, check) {
|
|
1045
|
+
return function (elem) {
|
|
1046
|
+
var result = Sizzle.attr(elem, name);
|
|
1047
|
+
return null == result ? "!=" === operator : operator ? (result += "", "=" === operator ? result === check : "!=" === operator ? result !== check : "^=" === operator ? check && 0 === result.indexOf(check) : "*=" === operator ? check && result.indexOf(check) > -1 : "$=" === operator ? check && result.slice(-check.length) === check : "~=" === operator ? (" " + result.replace(rwhitespace, " ") + " ").indexOf(check) > -1 : "|=" === operator ? result === check || result.slice(0, check.length + 1) === check + "-" : !1) : !0;
|
|
1048
|
+
};
|
|
1049
|
+
},
|
|
1050
|
+
CHILD: function (type, what, argument, first, last) {
|
|
1051
|
+
var simple = "nth" !== type.slice(0, 3),
|
|
1052
|
+
forward = "last" !== type.slice(-4),
|
|
1053
|
+
ofType = "of-type" === what;
|
|
1054
|
+
return 1 === first && 0 === last ? function (elem) {
|
|
1055
|
+
return !!elem.parentNode;
|
|
1056
|
+
} : function (elem, context, xml) {
|
|
1057
|
+
var cache,
|
|
1058
|
+
outerCache,
|
|
1059
|
+
node,
|
|
1060
|
+
diff,
|
|
1061
|
+
nodeIndex,
|
|
1062
|
+
start,
|
|
1063
|
+
dir = simple !== forward ? "nextSibling" : "previousSibling",
|
|
1064
|
+
parent = elem.parentNode,
|
|
1065
|
+
name = ofType && elem.nodeName.toLowerCase(),
|
|
1066
|
+
useCache = !xml && !ofType;
|
|
1067
|
+
if (parent) {
|
|
1068
|
+
if (simple) {
|
|
1069
|
+
for (; dir;) {
|
|
1070
|
+
for (node = elem; node = node[dir];) if (ofType ? node.nodeName.toLowerCase() === name : 1 === node.nodeType) return !1;
|
|
1071
|
+
start = dir = "only" === type && !start && "nextSibling";
|
|
1072
|
+
}
|
|
1073
|
+
return !0;
|
|
1074
|
+
}
|
|
1075
|
+
if (start = [forward ? parent.firstChild : parent.lastChild], forward && useCache) {
|
|
1076
|
+
for (outerCache = parent[expando] || (parent[expando] = {}), cache = outerCache[type] || [], nodeIndex = cache[0] === dirruns && cache[1], diff = cache[0] === dirruns && cache[2], node = nodeIndex && parent.childNodes[nodeIndex]; node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop();) if (1 === node.nodeType && ++diff && node === elem) {
|
|
1077
|
+
outerCache[type] = [dirruns, nodeIndex, diff];
|
|
1078
|
+
break;
|
|
1079
|
+
}
|
|
1080
|
+
} else if (useCache && (cache = (elem[expando] || (elem[expando] = {}))[type]) && cache[0] === dirruns) diff = cache[1];else for (; (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) && ((ofType ? node.nodeName.toLowerCase() !== name : 1 !== node.nodeType) || !++diff || (useCache && ((node[expando] || (node[expando] = {}))[type] = [dirruns, diff]), node !== elem)););
|
|
1081
|
+
return diff -= last, diff === first || diff % first === 0 && diff / first >= 0;
|
|
1082
|
+
}
|
|
1083
|
+
};
|
|
1084
|
+
},
|
|
1085
|
+
PSEUDO: function (pseudo, argument) {
|
|
1086
|
+
var args,
|
|
1087
|
+
fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error("unsupported pseudo: " + pseudo);
|
|
1088
|
+
return fn[expando] ? fn(argument) : fn.length > 1 ? (args = [pseudo, pseudo, "", argument], Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {
|
|
1089
|
+
for (var idx, matched = fn(seed, argument), i = matched.length; i--;) idx = indexOf(seed, matched[i]), seed[idx] = !(matches[idx] = matched[i]);
|
|
1090
|
+
}) : function (elem) {
|
|
1091
|
+
return fn(elem, 0, args);
|
|
1092
|
+
}) : fn;
|
|
1093
|
+
}
|
|
1094
|
+
},
|
|
1095
|
+
pseudos: {
|
|
1096
|
+
not: markFunction(function (selector) {
|
|
1097
|
+
var input = [],
|
|
1098
|
+
results = [],
|
|
1099
|
+
matcher = compile(selector.replace(rtrim, "$1"));
|
|
1100
|
+
return matcher[expando] ? markFunction(function (seed, matches, context, xml) {
|
|
1101
|
+
for (var elem, unmatched = matcher(seed, null, xml, []), i = seed.length; i--;) (elem = unmatched[i]) && (seed[i] = !(matches[i] = elem));
|
|
1102
|
+
}) : function (elem, context, xml) {
|
|
1103
|
+
return input[0] = elem, matcher(input, null, xml, results), input[0] = null, !results.pop();
|
|
1104
|
+
};
|
|
1105
|
+
}),
|
|
1106
|
+
has: markFunction(function (selector) {
|
|
1107
|
+
return function (elem) {
|
|
1108
|
+
return Sizzle(selector, elem).length > 0;
|
|
1109
|
+
};
|
|
1110
|
+
}),
|
|
1111
|
+
contains: markFunction(function (text) {
|
|
1112
|
+
return text = text.replace(runescape, funescape), function (elem) {
|
|
1113
|
+
return (elem.textContent || elem.innerText || getText(elem)).indexOf(text) > -1;
|
|
1114
|
+
};
|
|
1115
|
+
}),
|
|
1116
|
+
lang: markFunction(function (lang) {
|
|
1117
|
+
return ridentifier.test(lang || "") || Sizzle.error("unsupported lang: " + lang), lang = lang.replace(runescape, funescape).toLowerCase(), function (elem) {
|
|
1118
|
+
var elemLang;
|
|
1119
|
+
do if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") || elem.getAttribute("lang")) return elemLang = elemLang.toLowerCase(), elemLang === lang || 0 === elemLang.indexOf(lang + "-"); while ((elem = elem.parentNode) && 1 === elem.nodeType);
|
|
1120
|
+
return !1;
|
|
1121
|
+
};
|
|
1122
|
+
}),
|
|
1123
|
+
target: function (elem) {
|
|
1124
|
+
var hash = window.location && window.location.hash;
|
|
1125
|
+
return hash && hash.slice(1) === elem.id;
|
|
1126
|
+
},
|
|
1127
|
+
root: function (elem) {
|
|
1128
|
+
return elem === docElem;
|
|
1129
|
+
},
|
|
1130
|
+
focus: function (elem) {
|
|
1131
|
+
return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
|
|
1132
|
+
},
|
|
1133
|
+
enabled: function (elem) {
|
|
1134
|
+
return elem.disabled === !1;
|
|
1135
|
+
},
|
|
1136
|
+
disabled: function (elem) {
|
|
1137
|
+
return elem.disabled === !0;
|
|
1138
|
+
},
|
|
1139
|
+
checked: function (elem) {
|
|
1140
|
+
var nodeName = elem.nodeName.toLowerCase();
|
|
1141
|
+
return "input" === nodeName && !!elem.checked || "option" === nodeName && !!elem.selected;
|
|
1142
|
+
},
|
|
1143
|
+
selected: function (elem) {
|
|
1144
|
+
return elem.parentNode && elem.parentNode.selectedIndex, elem.selected === !0;
|
|
1145
|
+
},
|
|
1146
|
+
empty: function (elem) {
|
|
1147
|
+
for (elem = elem.firstChild; elem; elem = elem.nextSibling) if (elem.nodeType < 6) return !1;
|
|
1148
|
+
return !0;
|
|
1149
|
+
},
|
|
1150
|
+
parent: function (elem) {
|
|
1151
|
+
return !Expr.pseudos.empty(elem);
|
|
1152
|
+
},
|
|
1153
|
+
header: function (elem) {
|
|
1154
|
+
return rheader.test(elem.nodeName);
|
|
1155
|
+
},
|
|
1156
|
+
input: function (elem) {
|
|
1157
|
+
return rinputs.test(elem.nodeName);
|
|
1158
|
+
},
|
|
1159
|
+
button: function (elem) {
|
|
1160
|
+
var name = elem.nodeName.toLowerCase();
|
|
1161
|
+
return "input" === name && "button" === elem.type || "button" === name;
|
|
1162
|
+
},
|
|
1163
|
+
text: function (elem) {
|
|
1164
|
+
var attr;
|
|
1165
|
+
return "input" === elem.nodeName.toLowerCase() && "text" === elem.type && (null == (attr = elem.getAttribute("type")) || "text" === attr.toLowerCase());
|
|
1166
|
+
},
|
|
1167
|
+
first: createPositionalPseudo(function () {
|
|
1168
|
+
return [0];
|
|
1169
|
+
}),
|
|
1170
|
+
last: createPositionalPseudo(function (matchIndexes, length) {
|
|
1171
|
+
return [length - 1];
|
|
1172
|
+
}),
|
|
1173
|
+
eq: createPositionalPseudo(function (matchIndexes, length, argument) {
|
|
1174
|
+
return [0 > argument ? argument + length : argument];
|
|
1175
|
+
}),
|
|
1176
|
+
even: createPositionalPseudo(function (matchIndexes, length) {
|
|
1177
|
+
for (var i = 0; length > i; i += 2) matchIndexes.push(i);
|
|
1178
|
+
return matchIndexes;
|
|
1179
|
+
}),
|
|
1180
|
+
odd: createPositionalPseudo(function (matchIndexes, length) {
|
|
1181
|
+
for (var i = 1; length > i; i += 2) matchIndexes.push(i);
|
|
1182
|
+
return matchIndexes;
|
|
1183
|
+
}),
|
|
1184
|
+
lt: createPositionalPseudo(function (matchIndexes, length, argument) {
|
|
1185
|
+
for (var i = 0 > argument ? argument + length : argument; --i >= 0;) matchIndexes.push(i);
|
|
1186
|
+
return matchIndexes;
|
|
1187
|
+
}),
|
|
1188
|
+
gt: createPositionalPseudo(function (matchIndexes, length, argument) {
|
|
1189
|
+
for (var i = 0 > argument ? argument + length : argument; ++i < length;) matchIndexes.push(i);
|
|
1190
|
+
return matchIndexes;
|
|
1191
|
+
})
|
|
1192
|
+
}
|
|
1193
|
+
}, Expr.pseudos.nth = Expr.pseudos.eq;
|
|
1194
|
+
for (i in {
|
|
1195
|
+
radio: !0,
|
|
1196
|
+
checkbox: !0,
|
|
1197
|
+
file: !0,
|
|
1198
|
+
password: !0,
|
|
1199
|
+
image: !0
|
|
1200
|
+
}) Expr.pseudos[i] = createInputPseudo(i);
|
|
1201
|
+
for (i in {
|
|
1202
|
+
submit: !0,
|
|
1203
|
+
reset: !0
|
|
1204
|
+
}) Expr.pseudos[i] = createButtonPseudo(i);
|
|
1205
|
+
return setFilters.prototype = Expr.filters = Expr.pseudos, Expr.setFilters = new setFilters(), tokenize = Sizzle.tokenize = function (selector, parseOnly) {
|
|
1206
|
+
var matched,
|
|
1207
|
+
match,
|
|
1208
|
+
tokens,
|
|
1209
|
+
type,
|
|
1210
|
+
soFar,
|
|
1211
|
+
groups,
|
|
1212
|
+
preFilters,
|
|
1213
|
+
cached = tokenCache[selector + " "];
|
|
1214
|
+
if (cached) return parseOnly ? 0 : cached.slice(0);
|
|
1215
|
+
for (soFar = selector, groups = [], preFilters = Expr.preFilter; soFar;) {
|
|
1216
|
+
(!matched || (match = rcomma.exec(soFar))) && (match && (soFar = soFar.slice(match[0].length) || soFar), groups.push(tokens = [])), matched = !1, (match = rcombinators.exec(soFar)) && (matched = match.shift(), tokens.push({
|
|
1217
|
+
value: matched,
|
|
1218
|
+
type: match[0].replace(rtrim, " ")
|
|
1219
|
+
}), soFar = soFar.slice(matched.length));
|
|
1220
|
+
for (type in Expr.filter) !(match = matchExpr[type].exec(soFar)) || preFilters[type] && !(match = preFilters[type](match)) || (matched = match.shift(), tokens.push({
|
|
1221
|
+
value: matched,
|
|
1222
|
+
type: type,
|
|
1223
|
+
matches: match
|
|
1224
|
+
}), soFar = soFar.slice(matched.length));
|
|
1225
|
+
if (!matched) break;
|
|
1226
|
+
}
|
|
1227
|
+
return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : tokenCache(selector, groups).slice(0);
|
|
1228
|
+
}, compile = Sizzle.compile = function (selector, match) {
|
|
1229
|
+
var i,
|
|
1230
|
+
setMatchers = [],
|
|
1231
|
+
elementMatchers = [],
|
|
1232
|
+
cached = compilerCache[selector + " "];
|
|
1233
|
+
if (!cached) {
|
|
1234
|
+
for (match || (match = tokenize(selector)), i = match.length; i--;) cached = matcherFromTokens(match[i]), cached[expando] ? setMatchers.push(cached) : elementMatchers.push(cached);
|
|
1235
|
+
cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers)), cached.selector = selector;
|
|
1236
|
+
}
|
|
1237
|
+
return cached;
|
|
1238
|
+
}, select = Sizzle.select = function (selector, context, results, seed) {
|
|
1239
|
+
var i,
|
|
1240
|
+
tokens,
|
|
1241
|
+
token,
|
|
1242
|
+
type,
|
|
1243
|
+
find,
|
|
1244
|
+
compiled = "function" == typeof selector && selector,
|
|
1245
|
+
match = !seed && tokenize(selector = compiled.selector || selector);
|
|
1246
|
+
if (results = results || [], 1 === match.length) {
|
|
1247
|
+
if (tokens = match[0] = match[0].slice(0), tokens.length > 2 && "ID" === (token = tokens[0]).type && support.getById && 9 === context.nodeType && documentIsHTML && Expr.relative[tokens[1].type]) {
|
|
1248
|
+
if (context = (Expr.find.ID(token.matches[0].replace(runescape, funescape), context) || [])[0], !context) return results;
|
|
1249
|
+
compiled && (context = context.parentNode), selector = selector.slice(tokens.shift().value.length);
|
|
1250
|
+
}
|
|
1251
|
+
for (i = matchExpr.needsContext.test(selector) ? 0 : tokens.length; i-- && (token = tokens[i], !Expr.relative[type = token.type]);) if ((find = Expr.find[type]) && (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context))) {
|
|
1252
|
+
if (tokens.splice(i, 1), selector = seed.length && toSelector(tokens), !selector) return push.apply(results, seed), results;
|
|
1253
|
+
break;
|
|
1254
|
+
}
|
|
1255
|
+
}
|
|
1256
|
+
return (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, rsibling.test(selector) && testContext(context.parentNode) || context), results;
|
|
1257
|
+
}, support.sortStable = expando.split("").sort(sortOrder).join("") === expando, support.detectDuplicates = !!hasDuplicate, setDocument(), support.sortDetached = assert(function (div1) {
|
|
1258
|
+
return 1 & div1.compareDocumentPosition(document.createElement("div"));
|
|
1259
|
+
}), assert(function (div) {
|
|
1260
|
+
return div.innerHTML = "<a href='#'></a>", "#" === div.firstChild.getAttribute("href");
|
|
1261
|
+
}) || addHandle("type|href|height|width", function (elem, name, isXML) {
|
|
1262
|
+
return isXML ? void 0 : elem.getAttribute(name, "type" === name.toLowerCase() ? 1 : 2);
|
|
1263
|
+
}), support.attributes && assert(function (div) {
|
|
1264
|
+
return div.innerHTML = "<input/>", div.firstChild.setAttribute("value", ""), "" === div.firstChild.getAttribute("value");
|
|
1265
|
+
}) || addHandle("value", function (elem, name, isXML) {
|
|
1266
|
+
return isXML || "input" !== elem.nodeName.toLowerCase() ? void 0 : elem.defaultValue;
|
|
1267
|
+
}), assert(function (div) {
|
|
1268
|
+
return null == div.getAttribute("disabled");
|
|
1269
|
+
}) || addHandle(booleans, function (elem, name, isXML) {
|
|
1270
|
+
var val;
|
|
1271
|
+
return isXML ? void 0 : elem[name] === !0 ? name.toLowerCase() : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;
|
|
1272
|
+
}), Sizzle;
|
|
1273
|
+
}(window);
|
|
1274
|
+
jQuery.find = Sizzle, jQuery.expr = Sizzle.selectors, jQuery.expr[":"] = jQuery.expr.pseudos, jQuery.unique = Sizzle.uniqueSort, jQuery.text = Sizzle.getText, jQuery.isXMLDoc = Sizzle.isXML, jQuery.contains = Sizzle.contains;
|
|
1275
|
+
var rneedsContext = jQuery.expr.match.needsContext,
|
|
1276
|
+
rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
|
|
1277
|
+
risSimple = /^.[^:#\[\.,]*$/;
|
|
1278
|
+
jQuery.filter = function (expr, elems, not) {
|
|
1279
|
+
var elem = elems[0];
|
|
1280
|
+
return not && (expr = ":not(" + expr + ")"), 1 === elems.length && 1 === elem.nodeType ? jQuery.find.matchesSelector(elem, expr) ? [elem] : [] : jQuery.find.matches(expr, jQuery.grep(elems, function (elem) {
|
|
1281
|
+
return 1 === elem.nodeType;
|
|
1282
|
+
}));
|
|
1283
|
+
}, jQuery.fn.extend({
|
|
1284
|
+
find: function (selector) {
|
|
1285
|
+
var i,
|
|
1286
|
+
ret = [],
|
|
1287
|
+
self = this,
|
|
1288
|
+
len = self.length;
|
|
1289
|
+
if ("string" != typeof selector) return this.pushStack(jQuery(selector).filter(function () {
|
|
1290
|
+
for (i = 0; len > i; i++) if (jQuery.contains(self[i], this)) return !0;
|
|
1291
|
+
}));
|
|
1292
|
+
for (i = 0; len > i; i++) jQuery.find(selector, self[i], ret);
|
|
1293
|
+
return ret = this.pushStack(len > 1 ? jQuery.unique(ret) : ret), ret.selector = this.selector ? this.selector + " " + selector : selector, ret;
|
|
1294
|
+
},
|
|
1295
|
+
filter: function (selector) {
|
|
1296
|
+
return this.pushStack(winnow(this, selector || [], !1));
|
|
1297
|
+
},
|
|
1298
|
+
not: function (selector) {
|
|
1299
|
+
return this.pushStack(winnow(this, selector || [], !0));
|
|
1300
|
+
},
|
|
1301
|
+
is: function (selector) {
|
|
1302
|
+
return !!winnow(this, "string" == typeof selector && rneedsContext.test(selector) ? jQuery(selector) : selector || [], !1).length;
|
|
1303
|
+
}
|
|
1304
|
+
});
|
|
1305
|
+
var rootjQuery,
|
|
1306
|
+
document = window.document,
|
|
1307
|
+
rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
|
|
1308
|
+
init = jQuery.fn.init = function (selector, context) {
|
|
1309
|
+
var match, elem;
|
|
1310
|
+
if (!selector) return this;
|
|
1311
|
+
if ("string" == typeof selector) {
|
|
1312
|
+
if (match = "<" === selector.charAt(0) && ">" === selector.charAt(selector.length - 1) && selector.length >= 3 ? [null, selector, null] : rquickExpr.exec(selector), !match || !match[1] && context) return !context || context.jquery ? (context || rootjQuery).find(selector) : this.constructor(context).find(selector);
|
|
1313
|
+
if (match[1]) {
|
|
1314
|
+
if (context = context instanceof jQuery ? context[0] : context, jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, !0)), rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) for (match in context) jQuery.isFunction(this[match]) ? this[match](context[match]) : this.attr(match, context[match]);
|
|
1315
|
+
return this;
|
|
1316
|
+
}
|
|
1317
|
+
if (elem = document.getElementById(match[2]), elem && elem.parentNode) {
|
|
1318
|
+
if (elem.id !== match[2]) return rootjQuery.find(selector);
|
|
1319
|
+
this.length = 1, this[0] = elem;
|
|
1320
|
+
}
|
|
1321
|
+
return this.context = document, this.selector = selector, this;
|
|
1322
|
+
}
|
|
1323
|
+
return selector.nodeType ? (this.context = this[0] = selector, this.length = 1, this) : jQuery.isFunction(selector) ? "undefined" != typeof rootjQuery.ready ? rootjQuery.ready(selector) : selector(jQuery) : (void 0 !== selector.selector && (this.selector = selector.selector, this.context = selector.context), jQuery.makeArray(selector, this));
|
|
1324
|
+
};
|
|
1325
|
+
init.prototype = jQuery.fn, rootjQuery = jQuery(document);
|
|
1326
|
+
var rparentsprev = /^(?:parents|prev(?:Until|All))/,
|
|
1327
|
+
guaranteedUnique = {
|
|
1328
|
+
children: !0,
|
|
1329
|
+
contents: !0,
|
|
1330
|
+
next: !0,
|
|
1331
|
+
prev: !0
|
|
1332
|
+
};
|
|
1333
|
+
jQuery.extend({
|
|
1334
|
+
dir: function (elem, dir, until) {
|
|
1335
|
+
for (var matched = [], cur = elem[dir]; cur && 9 !== cur.nodeType && (void 0 === until || 1 !== cur.nodeType || !jQuery(cur).is(until));) 1 === cur.nodeType && matched.push(cur), cur = cur[dir];
|
|
1336
|
+
return matched;
|
|
1337
|
+
},
|
|
1338
|
+
sibling: function (n, elem) {
|
|
1339
|
+
for (var r = []; n; n = n.nextSibling) 1 === n.nodeType && n !== elem && r.push(n);
|
|
1340
|
+
return r;
|
|
1341
|
+
}
|
|
1342
|
+
}), jQuery.fn.extend({
|
|
1343
|
+
has: function (target) {
|
|
1344
|
+
var i,
|
|
1345
|
+
targets = jQuery(target, this),
|
|
1346
|
+
len = targets.length;
|
|
1347
|
+
return this.filter(function () {
|
|
1348
|
+
for (i = 0; len > i; i++) if (jQuery.contains(this, targets[i])) return !0;
|
|
1349
|
+
});
|
|
1350
|
+
},
|
|
1351
|
+
closest: function (selectors, context) {
|
|
1352
|
+
for (var cur, i = 0, l = this.length, matched = [], pos = rneedsContext.test(selectors) || "string" != typeof selectors ? jQuery(selectors, context || this.context) : 0; l > i; i++) for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) if (cur.nodeType < 11 && (pos ? pos.index(cur) > -1 : 1 === cur.nodeType && jQuery.find.matchesSelector(cur, selectors))) {
|
|
1353
|
+
matched.push(cur);
|
|
1354
|
+
break;
|
|
1355
|
+
}
|
|
1356
|
+
return this.pushStack(matched.length > 1 ? jQuery.unique(matched) : matched);
|
|
1357
|
+
},
|
|
1358
|
+
index: function (elem) {
|
|
1359
|
+
return elem ? "string" == typeof elem ? jQuery.inArray(this[0], jQuery(elem)) : jQuery.inArray(elem.jquery ? elem[0] : elem, this) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1;
|
|
1360
|
+
},
|
|
1361
|
+
add: function (selector, context) {
|
|
1362
|
+
return this.pushStack(jQuery.unique(jQuery.merge(this.get(), jQuery(selector, context))));
|
|
1363
|
+
},
|
|
1364
|
+
addBack: function (selector) {
|
|
1365
|
+
return this.add(null == selector ? this.prevObject : this.prevObject.filter(selector));
|
|
1366
|
+
}
|
|
1367
|
+
}), jQuery.each({
|
|
1368
|
+
parent: function (elem) {
|
|
1369
|
+
var parent = elem.parentNode;
|
|
1370
|
+
return parent && 11 !== parent.nodeType ? parent : null;
|
|
1371
|
+
},
|
|
1372
|
+
parents: function (elem) {
|
|
1373
|
+
return jQuery.dir(elem, "parentNode");
|
|
1374
|
+
},
|
|
1375
|
+
parentsUntil: function (elem, i, until) {
|
|
1376
|
+
return jQuery.dir(elem, "parentNode", until);
|
|
1377
|
+
},
|
|
1378
|
+
next: function (elem) {
|
|
1379
|
+
return sibling(elem, "nextSibling");
|
|
1380
|
+
},
|
|
1381
|
+
prev: function (elem) {
|
|
1382
|
+
return sibling(elem, "previousSibling");
|
|
1383
|
+
},
|
|
1384
|
+
nextAll: function (elem) {
|
|
1385
|
+
return jQuery.dir(elem, "nextSibling");
|
|
1386
|
+
},
|
|
1387
|
+
prevAll: function (elem) {
|
|
1388
|
+
return jQuery.dir(elem, "previousSibling");
|
|
1389
|
+
},
|
|
1390
|
+
nextUntil: function (elem, i, until) {
|
|
1391
|
+
return jQuery.dir(elem, "nextSibling", until);
|
|
1392
|
+
},
|
|
1393
|
+
prevUntil: function (elem, i, until) {
|
|
1394
|
+
return jQuery.dir(elem, "previousSibling", until);
|
|
1395
|
+
},
|
|
1396
|
+
siblings: function (elem) {
|
|
1397
|
+
return jQuery.sibling((elem.parentNode || {}).firstChild, elem);
|
|
1398
|
+
},
|
|
1399
|
+
children: function (elem) {
|
|
1400
|
+
return jQuery.sibling(elem.firstChild);
|
|
1401
|
+
},
|
|
1402
|
+
contents: function (elem) {
|
|
1403
|
+
return jQuery.nodeName(elem, "iframe") ? elem.contentDocument || elem.contentWindow.document : jQuery.merge([], elem.childNodes);
|
|
1404
|
+
}
|
|
1405
|
+
}, function (name, fn) {
|
|
1406
|
+
jQuery.fn[name] = function (until, selector) {
|
|
1407
|
+
var ret = jQuery.map(this, fn, until);
|
|
1408
|
+
return "Until" !== name.slice(-5) && (selector = until), selector && "string" == typeof selector && (ret = jQuery.filter(selector, ret)), this.length > 1 && (guaranteedUnique[name] || (ret = jQuery.unique(ret)), rparentsprev.test(name) && (ret = ret.reverse())), this.pushStack(ret);
|
|
1409
|
+
};
|
|
1410
|
+
});
|
|
1411
|
+
var rnotwhite = /\S+/g,
|
|
1412
|
+
optionsCache = {};
|
|
1413
|
+
jQuery.Callbacks = function (options) {
|
|
1414
|
+
options = "string" == typeof options ? optionsCache[options] || createOptions(options) : jQuery.extend({}, options);
|
|
1415
|
+
var firing,
|
|
1416
|
+
memory,
|
|
1417
|
+
fired,
|
|
1418
|
+
firingLength,
|
|
1419
|
+
firingIndex,
|
|
1420
|
+
firingStart,
|
|
1421
|
+
list = [],
|
|
1422
|
+
stack = !options.once && [],
|
|
1423
|
+
fire = function (data) {
|
|
1424
|
+
for (memory = options.memory && data, fired = !0, firingIndex = firingStart || 0, firingStart = 0, firingLength = list.length, firing = !0; list && firingLength > firingIndex; firingIndex++) if (list[firingIndex].apply(data[0], data[1]) === !1 && options.stopOnFalse) {
|
|
1425
|
+
memory = !1;
|
|
1426
|
+
break;
|
|
1427
|
+
}
|
|
1428
|
+
firing = !1, list && (stack ? stack.length && fire(stack.shift()) : memory ? list = [] : self.disable());
|
|
1429
|
+
},
|
|
1430
|
+
self = {
|
|
1431
|
+
add: function () {
|
|
1432
|
+
if (list) {
|
|
1433
|
+
var start = list.length;
|
|
1434
|
+
!function add(args) {
|
|
1435
|
+
jQuery.each(args, function (_, arg) {
|
|
1436
|
+
var type = jQuery.type(arg);
|
|
1437
|
+
"function" === type ? options.unique && self.has(arg) || list.push(arg) : arg && arg.length && "string" !== type && add(arg);
|
|
1438
|
+
});
|
|
1439
|
+
}(arguments), firing ? firingLength = list.length : memory && (firingStart = start, fire(memory));
|
|
1440
|
+
}
|
|
1441
|
+
return this;
|
|
1442
|
+
},
|
|
1443
|
+
remove: function () {
|
|
1444
|
+
return list && jQuery.each(arguments, function (_, arg) {
|
|
1445
|
+
for (var index; (index = jQuery.inArray(arg, list, index)) > -1;) list.splice(index, 1), firing && (firingLength >= index && firingLength--, firingIndex >= index && firingIndex--);
|
|
1446
|
+
}), this;
|
|
1447
|
+
},
|
|
1448
|
+
has: function (fn) {
|
|
1449
|
+
return fn ? jQuery.inArray(fn, list) > -1 : !(!list || !list.length);
|
|
1450
|
+
},
|
|
1451
|
+
empty: function () {
|
|
1452
|
+
return list = [], firingLength = 0, this;
|
|
1453
|
+
},
|
|
1454
|
+
disable: function () {
|
|
1455
|
+
return list = stack = memory = void 0, this;
|
|
1456
|
+
},
|
|
1457
|
+
disabled: function () {
|
|
1458
|
+
return !list;
|
|
1459
|
+
},
|
|
1460
|
+
lock: function () {
|
|
1461
|
+
return stack = void 0, memory || self.disable(), this;
|
|
1462
|
+
},
|
|
1463
|
+
locked: function () {
|
|
1464
|
+
return !stack;
|
|
1465
|
+
},
|
|
1466
|
+
fireWith: function (context, args) {
|
|
1467
|
+
return !list || fired && !stack || (args = args || [], args = [context, args.slice ? args.slice() : args], firing ? stack.push(args) : fire(args)), this;
|
|
1468
|
+
},
|
|
1469
|
+
fire: function () {
|
|
1470
|
+
return self.fireWith(this, arguments), this;
|
|
1471
|
+
},
|
|
1472
|
+
fired: function () {
|
|
1473
|
+
return !!fired;
|
|
1474
|
+
}
|
|
1475
|
+
};
|
|
1476
|
+
return self;
|
|
1477
|
+
}, jQuery.extend({
|
|
1478
|
+
Deferred: function (func) {
|
|
1479
|
+
var tuples = [["resolve", "done", jQuery.Callbacks("once memory"), "resolved"], ["reject", "fail", jQuery.Callbacks("once memory"), "rejected"], ["notify", "progress", jQuery.Callbacks("memory")]],
|
|
1480
|
+
state = "pending",
|
|
1481
|
+
promise = {
|
|
1482
|
+
state: function () {
|
|
1483
|
+
return state;
|
|
1484
|
+
},
|
|
1485
|
+
always: function () {
|
|
1486
|
+
return deferred.done(arguments).fail(arguments), this;
|
|
1487
|
+
},
|
|
1488
|
+
then: function () {
|
|
1489
|
+
var fns = arguments;
|
|
1490
|
+
return jQuery.Deferred(function (newDefer) {
|
|
1491
|
+
jQuery.each(tuples, function (i, tuple) {
|
|
1492
|
+
var fn = jQuery.isFunction(fns[i]) && fns[i];
|
|
1493
|
+
deferred[tuple[1]](function () {
|
|
1494
|
+
var returned = fn && fn.apply(this, arguments);
|
|
1495
|
+
returned && jQuery.isFunction(returned.promise) ? returned.promise().done(newDefer.resolve).fail(newDefer.reject).progress(newDefer.notify) : newDefer[tuple[0] + "With"](this === promise ? newDefer.promise() : this, fn ? [returned] : arguments);
|
|
1496
|
+
});
|
|
1497
|
+
}), fns = null;
|
|
1498
|
+
}).promise();
|
|
1499
|
+
},
|
|
1500
|
+
promise: function (obj) {
|
|
1501
|
+
return null != obj ? jQuery.extend(obj, promise) : promise;
|
|
1502
|
+
}
|
|
1503
|
+
},
|
|
1504
|
+
deferred = {};
|
|
1505
|
+
return promise.pipe = promise.then, jQuery.each(tuples, function (i, tuple) {
|
|
1506
|
+
var list = tuple[2],
|
|
1507
|
+
stateString = tuple[3];
|
|
1508
|
+
promise[tuple[1]] = list.add, stateString && list.add(function () {
|
|
1509
|
+
state = stateString;
|
|
1510
|
+
}, tuples[1 ^ i][2].disable, tuples[2][2].lock), deferred[tuple[0]] = function () {
|
|
1511
|
+
return deferred[tuple[0] + "With"](this === deferred ? promise : this, arguments), this;
|
|
1512
|
+
}, deferred[tuple[0] + "With"] = list.fireWith;
|
|
1513
|
+
}), promise.promise(deferred), func && func.call(deferred, deferred), deferred;
|
|
1514
|
+
},
|
|
1515
|
+
when: function (subordinate) {
|
|
1516
|
+
var progressValues,
|
|
1517
|
+
progressContexts,
|
|
1518
|
+
resolveContexts,
|
|
1519
|
+
i = 0,
|
|
1520
|
+
resolveValues = slice.call(arguments),
|
|
1521
|
+
length = resolveValues.length,
|
|
1522
|
+
remaining = 1 !== length || subordinate && jQuery.isFunction(subordinate.promise) ? length : 0,
|
|
1523
|
+
deferred = 1 === remaining ? subordinate : jQuery.Deferred(),
|
|
1524
|
+
updateFunc = function (i, contexts, values) {
|
|
1525
|
+
return function (value) {
|
|
1526
|
+
contexts[i] = this, values[i] = arguments.length > 1 ? slice.call(arguments) : value, values === progressValues ? deferred.notifyWith(contexts, values) : --remaining || deferred.resolveWith(contexts, values);
|
|
1527
|
+
};
|
|
1528
|
+
};
|
|
1529
|
+
if (length > 1) for (progressValues = new Array(length), progressContexts = new Array(length), resolveContexts = new Array(length); length > i; i++) resolveValues[i] && jQuery.isFunction(resolveValues[i].promise) ? resolveValues[i].promise().done(updateFunc(i, resolveContexts, resolveValues)).fail(deferred.reject).progress(updateFunc(i, progressContexts, progressValues)) : --remaining;
|
|
1530
|
+
return remaining || deferred.resolveWith(resolveContexts, resolveValues), deferred.promise();
|
|
1531
|
+
}
|
|
1532
|
+
});
|
|
1533
|
+
var readyList;
|
|
1534
|
+
jQuery.fn.ready = function (fn) {
|
|
1535
|
+
return jQuery.ready.promise().done(fn), this;
|
|
1536
|
+
}, jQuery.extend({
|
|
1537
|
+
isReady: !1,
|
|
1538
|
+
readyWait: 1,
|
|
1539
|
+
holdReady: function (hold) {
|
|
1540
|
+
hold ? jQuery.readyWait++ : jQuery.ready(!0);
|
|
1541
|
+
},
|
|
1542
|
+
ready: function (wait) {
|
|
1543
|
+
if (wait === !0 ? ! --jQuery.readyWait : !jQuery.isReady) {
|
|
1544
|
+
if (!document.body) return setTimeout(jQuery.ready);
|
|
1545
|
+
jQuery.isReady = !0, wait !== !0 && --jQuery.readyWait > 0 || (readyList.resolveWith(document, [jQuery]), jQuery.fn.triggerHandler && (jQuery(document).triggerHandler("ready"), jQuery(document).off("ready")));
|
|
1546
|
+
}
|
|
1547
|
+
}
|
|
1548
|
+
}), jQuery.ready.promise = function (obj) {
|
|
1549
|
+
if (!readyList) if (readyList = jQuery.Deferred(), "complete" === document.readyState) setTimeout(jQuery.ready);else if (document.addEventListener) document.addEventListener("DOMContentLoaded", completed, !1), window.addEventListener("load", completed, !1);else {
|
|
1550
|
+
document.attachEvent("onreadystatechange", completed), window.attachEvent("onload", completed);
|
|
1551
|
+
var top = !1;
|
|
1552
|
+
try {
|
|
1553
|
+
top = null == window.frameElement && document.documentElement;
|
|
1554
|
+
} catch (e) {}
|
|
1555
|
+
top && top.doScroll && !function doScrollCheck() {
|
|
1556
|
+
if (!jQuery.isReady) {
|
|
1557
|
+
try {
|
|
1558
|
+
top.doScroll("left");
|
|
1559
|
+
} catch (e) {
|
|
1560
|
+
return setTimeout(doScrollCheck, 50);
|
|
1561
|
+
}
|
|
1562
|
+
detach(), jQuery.ready();
|
|
1563
|
+
}
|
|
1564
|
+
}();
|
|
1565
|
+
}
|
|
1566
|
+
return readyList.promise(obj);
|
|
1567
|
+
};
|
|
1568
|
+
var i,
|
|
1569
|
+
strundefined = "undefined";
|
|
1570
|
+
for (i in jQuery(support)) break;
|
|
1571
|
+
support.ownLast = "0" !== i, support.inlineBlockNeedsLayout = !1, jQuery(function () {
|
|
1572
|
+
var val, div, body, container;
|
|
1573
|
+
body = document.getElementsByTagName("body")[0], body && body.style && (div = document.createElement("div"), container = document.createElement("div"), container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px", body.appendChild(container).appendChild(div), typeof div.style.zoom !== strundefined && (div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1", support.inlineBlockNeedsLayout = val = 3 === div.offsetWidth, val && (body.style.zoom = 1)), body.removeChild(container));
|
|
1574
|
+
}), function () {
|
|
1575
|
+
var div = document.createElement("div");
|
|
1576
|
+
if (null == support.deleteExpando) {
|
|
1577
|
+
support.deleteExpando = !0;
|
|
1578
|
+
try {
|
|
1579
|
+
delete div.test;
|
|
1580
|
+
} catch (e) {
|
|
1581
|
+
support.deleteExpando = !1;
|
|
1582
|
+
}
|
|
1583
|
+
}
|
|
1584
|
+
div = null;
|
|
1585
|
+
}(), jQuery.acceptData = function (elem) {
|
|
1586
|
+
var noData = jQuery.noData[(elem.nodeName + " ").toLowerCase()],
|
|
1587
|
+
nodeType = +elem.nodeType || 1;
|
|
1588
|
+
return 1 !== nodeType && 9 !== nodeType ? !1 : !noData || noData !== !0 && elem.getAttribute("classid") === noData;
|
|
1589
|
+
};
|
|
1590
|
+
var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
|
|
1591
|
+
rmultiDash = /([A-Z])/g;
|
|
1592
|
+
jQuery.extend({
|
|
1593
|
+
cache: {},
|
|
1594
|
+
noData: {
|
|
1595
|
+
"applet ": !0,
|
|
1596
|
+
"embed ": !0,
|
|
1597
|
+
"object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
|
|
1598
|
+
},
|
|
1599
|
+
hasData: function (elem) {
|
|
1600
|
+
return elem = elem.nodeType ? jQuery.cache[elem[jQuery.expando]] : elem[jQuery.expando], !!elem && !isEmptyDataObject(elem);
|
|
1601
|
+
},
|
|
1602
|
+
data: function (elem, name, data) {
|
|
1603
|
+
return internalData(elem, name, data);
|
|
1604
|
+
},
|
|
1605
|
+
removeData: function (elem, name) {
|
|
1606
|
+
return internalRemoveData(elem, name);
|
|
1607
|
+
},
|
|
1608
|
+
_data: function (elem, name, data) {
|
|
1609
|
+
return internalData(elem, name, data, !0);
|
|
1610
|
+
},
|
|
1611
|
+
_removeData: function (elem, name) {
|
|
1612
|
+
return internalRemoveData(elem, name, !0);
|
|
1613
|
+
}
|
|
1614
|
+
}), jQuery.fn.extend({
|
|
1615
|
+
data: function (key, value) {
|
|
1616
|
+
var i,
|
|
1617
|
+
name,
|
|
1618
|
+
data,
|
|
1619
|
+
elem = this[0],
|
|
1620
|
+
attrs = elem && elem.attributes;
|
|
1621
|
+
if (void 0 === key) {
|
|
1622
|
+
if (this.length && (data = jQuery.data(elem), 1 === elem.nodeType && !jQuery._data(elem, "parsedAttrs"))) {
|
|
1623
|
+
for (i = attrs.length; i--;) attrs[i] && (name = attrs[i].name, 0 === name.indexOf("data-") && (name = jQuery.camelCase(name.slice(5)), dataAttr(elem, name, data[name])));
|
|
1624
|
+
jQuery._data(elem, "parsedAttrs", !0);
|
|
1625
|
+
}
|
|
1626
|
+
return data;
|
|
1627
|
+
}
|
|
1628
|
+
return "object" == typeof key ? this.each(function () {
|
|
1629
|
+
jQuery.data(this, key);
|
|
1630
|
+
}) : arguments.length > 1 ? this.each(function () {
|
|
1631
|
+
jQuery.data(this, key, value);
|
|
1632
|
+
}) : elem ? dataAttr(elem, key, jQuery.data(elem, key)) : void 0;
|
|
1633
|
+
},
|
|
1634
|
+
removeData: function (key) {
|
|
1635
|
+
return this.each(function () {
|
|
1636
|
+
jQuery.removeData(this, key);
|
|
1637
|
+
});
|
|
1638
|
+
}
|
|
1639
|
+
}), jQuery.extend({
|
|
1640
|
+
queue: function (elem, type, data) {
|
|
1641
|
+
var queue;
|
|
1642
|
+
return elem ? (type = (type || "fx") + "queue", queue = jQuery._data(elem, type), data && (!queue || jQuery.isArray(data) ? queue = jQuery._data(elem, type, jQuery.makeArray(data)) : queue.push(data)), queue || []) : void 0;
|
|
1643
|
+
},
|
|
1644
|
+
dequeue: function (elem, type) {
|
|
1645
|
+
type = type || "fx";
|
|
1646
|
+
var queue = jQuery.queue(elem, type),
|
|
1647
|
+
startLength = queue.length,
|
|
1648
|
+
fn = queue.shift(),
|
|
1649
|
+
hooks = jQuery._queueHooks(elem, type),
|
|
1650
|
+
next = function () {
|
|
1651
|
+
jQuery.dequeue(elem, type);
|
|
1652
|
+
};
|
|
1653
|
+
"inprogress" === fn && (fn = queue.shift(), startLength--), fn && ("fx" === type && queue.unshift("inprogress"), delete hooks.stop, fn.call(elem, next, hooks)), !startLength && hooks && hooks.empty.fire();
|
|
1654
|
+
},
|
|
1655
|
+
_queueHooks: function (elem, type) {
|
|
1656
|
+
var key = type + "queueHooks";
|
|
1657
|
+
return jQuery._data(elem, key) || jQuery._data(elem, key, {
|
|
1658
|
+
empty: jQuery.Callbacks("once memory").add(function () {
|
|
1659
|
+
jQuery._removeData(elem, type + "queue"), jQuery._removeData(elem, key);
|
|
1660
|
+
})
|
|
1661
|
+
});
|
|
1662
|
+
}
|
|
1663
|
+
}), jQuery.fn.extend({
|
|
1664
|
+
queue: function (type, data) {
|
|
1665
|
+
var setter = 2;
|
|
1666
|
+
return "string" != typeof type && (data = type, type = "fx", setter--), arguments.length < setter ? jQuery.queue(this[0], type) : void 0 === data ? this : this.each(function () {
|
|
1667
|
+
var queue = jQuery.queue(this, type, data);
|
|
1668
|
+
jQuery._queueHooks(this, type), "fx" === type && "inprogress" !== queue[0] && jQuery.dequeue(this, type);
|
|
1669
|
+
});
|
|
1670
|
+
},
|
|
1671
|
+
dequeue: function (type) {
|
|
1672
|
+
return this.each(function () {
|
|
1673
|
+
jQuery.dequeue(this, type);
|
|
1674
|
+
});
|
|
1675
|
+
},
|
|
1676
|
+
clearQueue: function (type) {
|
|
1677
|
+
return this.queue(type || "fx", []);
|
|
1678
|
+
},
|
|
1679
|
+
promise: function (type, obj) {
|
|
1680
|
+
var tmp,
|
|
1681
|
+
count = 1,
|
|
1682
|
+
defer = jQuery.Deferred(),
|
|
1683
|
+
elements = this,
|
|
1684
|
+
i = this.length,
|
|
1685
|
+
resolve = function () {
|
|
1686
|
+
--count || defer.resolveWith(elements, [elements]);
|
|
1687
|
+
};
|
|
1688
|
+
for ("string" != typeof type && (obj = type, type = void 0), type = type || "fx"; i--;) tmp = jQuery._data(elements[i], type + "queueHooks"), tmp && tmp.empty && (count++, tmp.empty.add(resolve));
|
|
1689
|
+
return resolve(), defer.promise(obj);
|
|
1690
|
+
}
|
|
1691
|
+
});
|
|
1692
|
+
var pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
|
|
1693
|
+
cssExpand = ["Top", "Right", "Bottom", "Left"],
|
|
1694
|
+
isHidden = function (elem, el) {
|
|
1695
|
+
return elem = el || elem, "none" === jQuery.css(elem, "display") || !jQuery.contains(elem.ownerDocument, elem);
|
|
1696
|
+
},
|
|
1697
|
+
access = jQuery.access = function (elems, fn, key, value, chainable, emptyGet, raw) {
|
|
1698
|
+
var i = 0,
|
|
1699
|
+
length = elems.length,
|
|
1700
|
+
bulk = null == key;
|
|
1701
|
+
if ("object" === jQuery.type(key)) {
|
|
1702
|
+
chainable = !0;
|
|
1703
|
+
for (i in key) jQuery.access(elems, fn, i, key[i], !0, emptyGet, raw);
|
|
1704
|
+
} else if (void 0 !== value && (chainable = !0, jQuery.isFunction(value) || (raw = !0), bulk && (raw ? (fn.call(elems, value), fn = null) : (bulk = fn, fn = function (elem, key, value) {
|
|
1705
|
+
return bulk.call(jQuery(elem), value);
|
|
1706
|
+
})), fn)) for (; length > i; i++) fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key)));
|
|
1707
|
+
return chainable ? elems : bulk ? fn.call(elems) : length ? fn(elems[0], key) : emptyGet;
|
|
1708
|
+
},
|
|
1709
|
+
rcheckableType = /^(?:checkbox|radio)$/i;
|
|
1710
|
+
!function () {
|
|
1711
|
+
var input = document.createElement("input"),
|
|
1712
|
+
div = document.createElement("div"),
|
|
1713
|
+
fragment = document.createDocumentFragment();
|
|
1714
|
+
if (div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", support.leadingWhitespace = 3 === div.firstChild.nodeType, support.tbody = !div.getElementsByTagName("tbody").length, support.htmlSerialize = !!div.getElementsByTagName("link").length, support.html5Clone = "<:nav></:nav>" !== document.createElement("nav").cloneNode(!0).outerHTML, input.type = "checkbox", input.checked = !0, fragment.appendChild(input), support.appendChecked = input.checked, div.innerHTML = "<textarea>x</textarea>", support.noCloneChecked = !!div.cloneNode(!0).lastChild.defaultValue, fragment.appendChild(div), div.innerHTML = "<input type='radio' checked='checked' name='t'/>", support.checkClone = div.cloneNode(!0).cloneNode(!0).lastChild.checked, support.noCloneEvent = !0, div.attachEvent && (div.attachEvent("onclick", function () {
|
|
1715
|
+
support.noCloneEvent = !1;
|
|
1716
|
+
}), div.cloneNode(!0).click()), null == support.deleteExpando) {
|
|
1717
|
+
support.deleteExpando = !0;
|
|
1718
|
+
try {
|
|
1719
|
+
delete div.test;
|
|
1720
|
+
} catch (e) {
|
|
1721
|
+
support.deleteExpando = !1;
|
|
1722
|
+
}
|
|
1723
|
+
}
|
|
1724
|
+
}(), function () {
|
|
1725
|
+
var i,
|
|
1726
|
+
eventName,
|
|
1727
|
+
div = document.createElement("div");
|
|
1728
|
+
for (i in {
|
|
1729
|
+
submit: !0,
|
|
1730
|
+
change: !0,
|
|
1731
|
+
focusin: !0
|
|
1732
|
+
}) eventName = "on" + i, (support[i + "Bubbles"] = eventName in window) || (div.setAttribute(eventName, "t"), support[i + "Bubbles"] = div.attributes[eventName].expando === !1);
|
|
1733
|
+
div = null;
|
|
1734
|
+
}();
|
|
1735
|
+
var rformElems = /^(?:input|select|textarea)$/i,
|
|
1736
|
+
rkeyEvent = /^key/,
|
|
1737
|
+
rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,
|
|
1738
|
+
rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
|
|
1739
|
+
rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
|
|
1740
|
+
jQuery.event = {
|
|
1741
|
+
global: {},
|
|
1742
|
+
add: function (elem, types, handler, data, selector) {
|
|
1743
|
+
var tmp,
|
|
1744
|
+
events,
|
|
1745
|
+
t,
|
|
1746
|
+
handleObjIn,
|
|
1747
|
+
special,
|
|
1748
|
+
eventHandle,
|
|
1749
|
+
handleObj,
|
|
1750
|
+
handlers,
|
|
1751
|
+
type,
|
|
1752
|
+
namespaces,
|
|
1753
|
+
origType,
|
|
1754
|
+
elemData = jQuery._data(elem);
|
|
1755
|
+
if (elemData) {
|
|
1756
|
+
for (handler.handler && (handleObjIn = handler, handler = handleObjIn.handler, selector = handleObjIn.selector), handler.guid || (handler.guid = jQuery.guid++), (events = elemData.events) || (events = elemData.events = {}), (eventHandle = elemData.handle) || (eventHandle = elemData.handle = function (e) {
|
|
1757
|
+
return typeof jQuery === strundefined || e && jQuery.event.triggered === e.type ? void 0 : jQuery.event.dispatch.apply(eventHandle.elem, arguments);
|
|
1758
|
+
}, eventHandle.elem = elem), types = (types || "").match(rnotwhite) || [""], t = types.length; t--;) tmp = rtypenamespace.exec(types[t]) || [], type = origType = tmp[1], namespaces = (tmp[2] || "").split(".").sort(), type && (special = jQuery.event.special[type] || {}, type = (selector ? special.delegateType : special.bindType) || type, special = jQuery.event.special[type] || {}, handleObj = jQuery.extend({
|
|
1759
|
+
type: type,
|
|
1760
|
+
origType: origType,
|
|
1761
|
+
data: data,
|
|
1762
|
+
handler: handler,
|
|
1763
|
+
guid: handler.guid,
|
|
1764
|
+
selector: selector,
|
|
1765
|
+
needsContext: selector && jQuery.expr.match.needsContext.test(selector),
|
|
1766
|
+
namespace: namespaces.join(".")
|
|
1767
|
+
}, handleObjIn), (handlers = events[type]) || (handlers = events[type] = [], handlers.delegateCount = 0, special.setup && special.setup.call(elem, data, namespaces, eventHandle) !== !1 || (elem.addEventListener ? elem.addEventListener(type, eventHandle, !1) : elem.attachEvent && elem.attachEvent("on" + type, eventHandle))), special.add && (special.add.call(elem, handleObj), handleObj.handler.guid || (handleObj.handler.guid = handler.guid)), selector ? handlers.splice(handlers.delegateCount++, 0, handleObj) : handlers.push(handleObj), jQuery.event.global[type] = !0);
|
|
1768
|
+
elem = null;
|
|
1769
|
+
}
|
|
1770
|
+
},
|
|
1771
|
+
remove: function (elem, types, handler, selector, mappedTypes) {
|
|
1772
|
+
var j,
|
|
1773
|
+
handleObj,
|
|
1774
|
+
tmp,
|
|
1775
|
+
origCount,
|
|
1776
|
+
t,
|
|
1777
|
+
events,
|
|
1778
|
+
special,
|
|
1779
|
+
handlers,
|
|
1780
|
+
type,
|
|
1781
|
+
namespaces,
|
|
1782
|
+
origType,
|
|
1783
|
+
elemData = jQuery.hasData(elem) && jQuery._data(elem);
|
|
1784
|
+
if (elemData && (events = elemData.events)) {
|
|
1785
|
+
for (types = (types || "").match(rnotwhite) || [""], t = types.length; t--;) if (tmp = rtypenamespace.exec(types[t]) || [], type = origType = tmp[1], namespaces = (tmp[2] || "").split(".").sort(), type) {
|
|
1786
|
+
for (special = jQuery.event.special[type] || {}, type = (selector ? special.delegateType : special.bindType) || type, handlers = events[type] || [], tmp = tmp[2] && new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)"), origCount = j = handlers.length; j--;) handleObj = handlers[j], !mappedTypes && origType !== handleObj.origType || handler && handler.guid !== handleObj.guid || tmp && !tmp.test(handleObj.namespace) || selector && selector !== handleObj.selector && ("**" !== selector || !handleObj.selector) || (handlers.splice(j, 1), handleObj.selector && handlers.delegateCount--, special.remove && special.remove.call(elem, handleObj));
|
|
1787
|
+
origCount && !handlers.length && (special.teardown && special.teardown.call(elem, namespaces, elemData.handle) !== !1 || jQuery.removeEvent(elem, type, elemData.handle), delete events[type]);
|
|
1788
|
+
} else for (type in events) jQuery.event.remove(elem, type + types[t], handler, selector, !0);
|
|
1789
|
+
jQuery.isEmptyObject(events) && (delete elemData.handle, jQuery._removeData(elem, "events"));
|
|
1790
|
+
}
|
|
1791
|
+
},
|
|
1792
|
+
trigger: function (event, data, elem, onlyHandlers) {
|
|
1793
|
+
var handle,
|
|
1794
|
+
ontype,
|
|
1795
|
+
cur,
|
|
1796
|
+
bubbleType,
|
|
1797
|
+
special,
|
|
1798
|
+
tmp,
|
|
1799
|
+
i,
|
|
1800
|
+
eventPath = [elem || document],
|
|
1801
|
+
type = hasOwn.call(event, "type") ? event.type : event,
|
|
1802
|
+
namespaces = hasOwn.call(event, "namespace") ? event.namespace.split(".") : [];
|
|
1803
|
+
if (cur = tmp = elem = elem || document, 3 !== elem.nodeType && 8 !== elem.nodeType && !rfocusMorph.test(type + jQuery.event.triggered) && (type.indexOf(".") >= 0 && (namespaces = type.split("."), type = namespaces.shift(), namespaces.sort()), ontype = type.indexOf(":") < 0 && "on" + type, event = event[jQuery.expando] ? event : new jQuery.Event(type, "object" == typeof event && event), event.isTrigger = onlyHandlers ? 2 : 3, event.namespace = namespaces.join("."), event.namespace_re = event.namespace ? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, event.result = void 0, event.target || (event.target = elem), data = null == data ? [event] : jQuery.makeArray(data, [event]), special = jQuery.event.special[type] || {}, onlyHandlers || !special.trigger || special.trigger.apply(elem, data) !== !1)) {
|
|
1804
|
+
if (!onlyHandlers && !special.noBubble && !jQuery.isWindow(elem)) {
|
|
1805
|
+
for (bubbleType = special.delegateType || type, rfocusMorph.test(bubbleType + type) || (cur = cur.parentNode); cur; cur = cur.parentNode) eventPath.push(cur), tmp = cur;
|
|
1806
|
+
tmp === (elem.ownerDocument || document) && eventPath.push(tmp.defaultView || tmp.parentWindow || window);
|
|
1807
|
+
}
|
|
1808
|
+
for (i = 0; (cur = eventPath[i++]) && !event.isPropagationStopped();) event.type = i > 1 ? bubbleType : special.bindType || type, handle = (jQuery._data(cur, "events") || {})[event.type] && jQuery._data(cur, "handle"), handle && handle.apply(cur, data), handle = ontype && cur[ontype], handle && handle.apply && jQuery.acceptData(cur) && (event.result = handle.apply(cur, data), event.result === !1 && event.preventDefault());
|
|
1809
|
+
if (event.type = type, !onlyHandlers && !event.isDefaultPrevented() && (!special._default || special._default.apply(eventPath.pop(), data) === !1) && jQuery.acceptData(elem) && ontype && elem[type] && !jQuery.isWindow(elem)) {
|
|
1810
|
+
tmp = elem[ontype], tmp && (elem[ontype] = null), jQuery.event.triggered = type;
|
|
1811
|
+
try {
|
|
1812
|
+
elem[type]();
|
|
1813
|
+
} catch (e) {}
|
|
1814
|
+
jQuery.event.triggered = void 0, tmp && (elem[ontype] = tmp);
|
|
1815
|
+
}
|
|
1816
|
+
return event.result;
|
|
1817
|
+
}
|
|
1818
|
+
},
|
|
1819
|
+
dispatch: function (event) {
|
|
1820
|
+
event = jQuery.event.fix(event);
|
|
1821
|
+
var i,
|
|
1822
|
+
ret,
|
|
1823
|
+
handleObj,
|
|
1824
|
+
matched,
|
|
1825
|
+
j,
|
|
1826
|
+
handlerQueue = [],
|
|
1827
|
+
args = slice.call(arguments),
|
|
1828
|
+
handlers = (jQuery._data(this, "events") || {})[event.type] || [],
|
|
1829
|
+
special = jQuery.event.special[event.type] || {};
|
|
1830
|
+
if (args[0] = event, event.delegateTarget = this, !special.preDispatch || special.preDispatch.call(this, event) !== !1) {
|
|
1831
|
+
for (handlerQueue = jQuery.event.handlers.call(this, event, handlers), i = 0; (matched = handlerQueue[i++]) && !event.isPropagationStopped();) for (event.currentTarget = matched.elem, j = 0; (handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped();) (!event.namespace_re || event.namespace_re.test(handleObj.namespace)) && (event.handleObj = handleObj, event.data = handleObj.data, ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args), void 0 !== ret && (event.result = ret) === !1 && (event.preventDefault(), event.stopPropagation()));
|
|
1832
|
+
return special.postDispatch && special.postDispatch.call(this, event), event.result;
|
|
1833
|
+
}
|
|
1834
|
+
},
|
|
1835
|
+
handlers: function (event, handlers) {
|
|
1836
|
+
var sel,
|
|
1837
|
+
handleObj,
|
|
1838
|
+
matches,
|
|
1839
|
+
i,
|
|
1840
|
+
handlerQueue = [],
|
|
1841
|
+
delegateCount = handlers.delegateCount,
|
|
1842
|
+
cur = event.target;
|
|
1843
|
+
if (delegateCount && cur.nodeType && (!event.button || "click" !== event.type)) for (; cur != this; cur = cur.parentNode || this) if (1 === cur.nodeType && (cur.disabled !== !0 || "click" !== event.type)) {
|
|
1844
|
+
for (matches = [], i = 0; delegateCount > i; i++) handleObj = handlers[i], sel = handleObj.selector + " ", void 0 === matches[sel] && (matches[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) >= 0 : jQuery.find(sel, this, null, [cur]).length), matches[sel] && matches.push(handleObj);
|
|
1845
|
+
matches.length && handlerQueue.push({
|
|
1846
|
+
elem: cur,
|
|
1847
|
+
handlers: matches
|
|
1848
|
+
});
|
|
1849
|
+
}
|
|
1850
|
+
return delegateCount < handlers.length && handlerQueue.push({
|
|
1851
|
+
elem: this,
|
|
1852
|
+
handlers: handlers.slice(delegateCount)
|
|
1853
|
+
}), handlerQueue;
|
|
1854
|
+
},
|
|
1855
|
+
fix: function (event) {
|
|
1856
|
+
if (event[jQuery.expando]) return event;
|
|
1857
|
+
var i,
|
|
1858
|
+
prop,
|
|
1859
|
+
copy,
|
|
1860
|
+
type = event.type,
|
|
1861
|
+
originalEvent = event,
|
|
1862
|
+
fixHook = this.fixHooks[type];
|
|
1863
|
+
for (fixHook || (this.fixHooks[type] = fixHook = rmouseEvent.test(type) ? this.mouseHooks : rkeyEvent.test(type) ? this.keyHooks : {}), copy = fixHook.props ? this.props.concat(fixHook.props) : this.props, event = new jQuery.Event(originalEvent), i = copy.length; i--;) prop = copy[i], event[prop] = originalEvent[prop];
|
|
1864
|
+
return event.target || (event.target = originalEvent.srcElement || document), 3 === event.target.nodeType && (event.target = event.target.parentNode), event.metaKey = !!event.metaKey, fixHook.filter ? fixHook.filter(event, originalEvent) : event;
|
|
1865
|
+
},
|
|
1866
|
+
props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
|
|
1867
|
+
fixHooks: {},
|
|
1868
|
+
keyHooks: {
|
|
1869
|
+
props: "char charCode key keyCode".split(" "),
|
|
1870
|
+
filter: function (event, original) {
|
|
1871
|
+
return null == event.which && (event.which = null != original.charCode ? original.charCode : original.keyCode), event;
|
|
1872
|
+
}
|
|
1873
|
+
},
|
|
1874
|
+
mouseHooks: {
|
|
1875
|
+
props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
|
|
1876
|
+
filter: function (event, original) {
|
|
1877
|
+
var body,
|
|
1878
|
+
eventDoc,
|
|
1879
|
+
doc,
|
|
1880
|
+
button = original.button,
|
|
1881
|
+
fromElement = original.fromElement;
|
|
1882
|
+
return null == event.pageX && null != original.clientX && (eventDoc = event.target.ownerDocument || document, doc = eventDoc.documentElement, body = eventDoc.body, event.pageX = original.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0), event.pageY = original.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0)), !event.relatedTarget && fromElement && (event.relatedTarget = fromElement === event.target ? original.toElement : fromElement), event.which || void 0 === button || (event.which = 1 & button ? 1 : 2 & button ? 3 : 4 & button ? 2 : 0), event;
|
|
1883
|
+
}
|
|
1884
|
+
},
|
|
1885
|
+
special: {
|
|
1886
|
+
load: {
|
|
1887
|
+
noBubble: !0
|
|
1888
|
+
},
|
|
1889
|
+
focus: {
|
|
1890
|
+
trigger: function () {
|
|
1891
|
+
if (this !== safeActiveElement() && this.focus) try {
|
|
1892
|
+
return this.focus(), !1;
|
|
1893
|
+
} catch (e) {}
|
|
1894
|
+
},
|
|
1895
|
+
delegateType: "focusin"
|
|
1896
|
+
},
|
|
1897
|
+
blur: {
|
|
1898
|
+
trigger: function () {
|
|
1899
|
+
return this === safeActiveElement() && this.blur ? (this.blur(), !1) : void 0;
|
|
1900
|
+
},
|
|
1901
|
+
delegateType: "focusout"
|
|
1902
|
+
},
|
|
1903
|
+
click: {
|
|
1904
|
+
trigger: function () {
|
|
1905
|
+
return jQuery.nodeName(this, "input") && "checkbox" === this.type && this.click ? (this.click(), !1) : void 0;
|
|
1906
|
+
},
|
|
1907
|
+
_default: function (event) {
|
|
1908
|
+
return jQuery.nodeName(event.target, "a");
|
|
1909
|
+
}
|
|
1910
|
+
},
|
|
1911
|
+
beforeunload: {
|
|
1912
|
+
postDispatch: function (event) {
|
|
1913
|
+
void 0 !== event.result && event.originalEvent && (event.originalEvent.returnValue = event.result);
|
|
1914
|
+
}
|
|
1915
|
+
}
|
|
1916
|
+
},
|
|
1917
|
+
simulate: function (type, elem, event, bubble) {
|
|
1918
|
+
var e = jQuery.extend(new jQuery.Event(), event, {
|
|
1919
|
+
type: type,
|
|
1920
|
+
isSimulated: !0,
|
|
1921
|
+
originalEvent: {}
|
|
1922
|
+
});
|
|
1923
|
+
bubble ? jQuery.event.trigger(e, null, elem) : jQuery.event.dispatch.call(elem, e), e.isDefaultPrevented() && event.preventDefault();
|
|
1924
|
+
}
|
|
1925
|
+
}, jQuery.removeEvent = document.removeEventListener ? function (elem, type, handle) {
|
|
1926
|
+
elem.removeEventListener && elem.removeEventListener(type, handle, !1);
|
|
1927
|
+
} : function (elem, type, handle) {
|
|
1928
|
+
var name = "on" + type;
|
|
1929
|
+
elem.detachEvent && (typeof elem[name] === strundefined && (elem[name] = null), elem.detachEvent(name, handle));
|
|
1930
|
+
}, jQuery.Event = function (src, props) {
|
|
1931
|
+
return this instanceof jQuery.Event ? (src && src.type ? (this.originalEvent = src, this.type = src.type, this.isDefaultPrevented = src.defaultPrevented || void 0 === src.defaultPrevented && src.returnValue === !1 ? returnTrue : returnFalse) : this.type = src, props && jQuery.extend(this, props), this.timeStamp = src && src.timeStamp || jQuery.now(), void (this[jQuery.expando] = !0)) : new jQuery.Event(src, props);
|
|
1932
|
+
}, jQuery.Event.prototype = {
|
|
1933
|
+
isDefaultPrevented: returnFalse,
|
|
1934
|
+
isPropagationStopped: returnFalse,
|
|
1935
|
+
isImmediatePropagationStopped: returnFalse,
|
|
1936
|
+
preventDefault: function () {
|
|
1937
|
+
var e = this.originalEvent;
|
|
1938
|
+
this.isDefaultPrevented = returnTrue, e && (e.preventDefault ? e.preventDefault() : e.returnValue = !1);
|
|
1939
|
+
},
|
|
1940
|
+
stopPropagation: function () {
|
|
1941
|
+
var e = this.originalEvent;
|
|
1942
|
+
this.isPropagationStopped = returnTrue, e && (e.stopPropagation && e.stopPropagation(), e.cancelBubble = !0);
|
|
1943
|
+
},
|
|
1944
|
+
stopImmediatePropagation: function () {
|
|
1945
|
+
var e = this.originalEvent;
|
|
1946
|
+
this.isImmediatePropagationStopped = returnTrue, e && e.stopImmediatePropagation && e.stopImmediatePropagation(), this.stopPropagation();
|
|
1947
|
+
}
|
|
1948
|
+
}, jQuery.each({
|
|
1949
|
+
mouseenter: "mouseover",
|
|
1950
|
+
mouseleave: "mouseout",
|
|
1951
|
+
pointerenter: "pointerover",
|
|
1952
|
+
pointerleave: "pointerout"
|
|
1953
|
+
}, function (orig, fix) {
|
|
1954
|
+
jQuery.event.special[orig] = {
|
|
1955
|
+
delegateType: fix,
|
|
1956
|
+
bindType: fix,
|
|
1957
|
+
handle: function (event) {
|
|
1958
|
+
var ret,
|
|
1959
|
+
target = this,
|
|
1960
|
+
related = event.relatedTarget,
|
|
1961
|
+
handleObj = event.handleObj;
|
|
1962
|
+
return (!related || related !== target && !jQuery.contains(target, related)) && (event.type = handleObj.origType, ret = handleObj.handler.apply(this, arguments), event.type = fix), ret;
|
|
1963
|
+
}
|
|
1964
|
+
};
|
|
1965
|
+
}), support.submitBubbles || (jQuery.event.special.submit = {
|
|
1966
|
+
setup: function () {
|
|
1967
|
+
return jQuery.nodeName(this, "form") ? !1 : void jQuery.event.add(this, "click._submit keypress._submit", function (e) {
|
|
1968
|
+
var elem = e.target,
|
|
1969
|
+
form = jQuery.nodeName(elem, "input") || jQuery.nodeName(elem, "button") ? elem.form : void 0;
|
|
1970
|
+
form && !jQuery._data(form, "submitBubbles") && (jQuery.event.add(form, "submit._submit", function (event) {
|
|
1971
|
+
event._submit_bubble = !0;
|
|
1972
|
+
}), jQuery._data(form, "submitBubbles", !0));
|
|
1973
|
+
});
|
|
1974
|
+
},
|
|
1975
|
+
postDispatch: function (event) {
|
|
1976
|
+
event._submit_bubble && (delete event._submit_bubble, this.parentNode && !event.isTrigger && jQuery.event.simulate("submit", this.parentNode, event, !0));
|
|
1977
|
+
},
|
|
1978
|
+
teardown: function () {
|
|
1979
|
+
return jQuery.nodeName(this, "form") ? !1 : void jQuery.event.remove(this, "._submit");
|
|
1980
|
+
}
|
|
1981
|
+
}), support.changeBubbles || (jQuery.event.special.change = {
|
|
1982
|
+
setup: function () {
|
|
1983
|
+
return rformElems.test(this.nodeName) ? (("checkbox" === this.type || "radio" === this.type) && (jQuery.event.add(this, "propertychange._change", function (event) {
|
|
1984
|
+
"checked" === event.originalEvent.propertyName && (this._just_changed = !0);
|
|
1985
|
+
}), jQuery.event.add(this, "click._change", function (event) {
|
|
1986
|
+
this._just_changed && !event.isTrigger && (this._just_changed = !1), jQuery.event.simulate("change", this, event, !0);
|
|
1987
|
+
})), !1) : void jQuery.event.add(this, "beforeactivate._change", function (e) {
|
|
1988
|
+
var elem = e.target;
|
|
1989
|
+
rformElems.test(elem.nodeName) && !jQuery._data(elem, "changeBubbles") && (jQuery.event.add(elem, "change._change", function (event) {
|
|
1990
|
+
!this.parentNode || event.isSimulated || event.isTrigger || jQuery.event.simulate("change", this.parentNode, event, !0);
|
|
1991
|
+
}), jQuery._data(elem, "changeBubbles", !0));
|
|
1992
|
+
});
|
|
1993
|
+
},
|
|
1994
|
+
handle: function (event) {
|
|
1995
|
+
var elem = event.target;
|
|
1996
|
+
return this !== elem || event.isSimulated || event.isTrigger || "radio" !== elem.type && "checkbox" !== elem.type ? event.handleObj.handler.apply(this, arguments) : void 0;
|
|
1997
|
+
},
|
|
1998
|
+
teardown: function () {
|
|
1999
|
+
return jQuery.event.remove(this, "._change"), !rformElems.test(this.nodeName);
|
|
2000
|
+
}
|
|
2001
|
+
}), support.focusinBubbles || jQuery.each({
|
|
2002
|
+
focus: "focusin",
|
|
2003
|
+
blur: "focusout"
|
|
2004
|
+
}, function (orig, fix) {
|
|
2005
|
+
var handler = function (event) {
|
|
2006
|
+
jQuery.event.simulate(fix, event.target, jQuery.event.fix(event), !0);
|
|
2007
|
+
};
|
|
2008
|
+
jQuery.event.special[fix] = {
|
|
2009
|
+
setup: function () {
|
|
2010
|
+
var doc = this.ownerDocument || this,
|
|
2011
|
+
attaches = jQuery._data(doc, fix);
|
|
2012
|
+
attaches || doc.addEventListener(orig, handler, !0), jQuery._data(doc, fix, (attaches || 0) + 1);
|
|
2013
|
+
},
|
|
2014
|
+
teardown: function () {
|
|
2015
|
+
var doc = this.ownerDocument || this,
|
|
2016
|
+
attaches = jQuery._data(doc, fix) - 1;
|
|
2017
|
+
attaches ? jQuery._data(doc, fix, attaches) : (doc.removeEventListener(orig, handler, !0), jQuery._removeData(doc, fix));
|
|
2018
|
+
}
|
|
2019
|
+
};
|
|
2020
|
+
}), jQuery.fn.extend({
|
|
2021
|
+
on: function (types, selector, data, fn, one) {
|
|
2022
|
+
var type, origFn;
|
|
2023
|
+
if ("object" == typeof types) {
|
|
2024
|
+
"string" != typeof selector && (data = data || selector, selector = void 0);
|
|
2025
|
+
for (type in types) this.on(type, selector, data, types[type], one);
|
|
2026
|
+
return this;
|
|
2027
|
+
}
|
|
2028
|
+
if (null == data && null == fn ? (fn = selector, data = selector = void 0) : null == fn && ("string" == typeof selector ? (fn = data, data = void 0) : (fn = data, data = selector, selector = void 0)), fn === !1) fn = returnFalse;else if (!fn) return this;
|
|
2029
|
+
return 1 === one && (origFn = fn, fn = function (event) {
|
|
2030
|
+
return jQuery().off(event), origFn.apply(this, arguments);
|
|
2031
|
+
}, fn.guid = origFn.guid || (origFn.guid = jQuery.guid++)), this.each(function () {
|
|
2032
|
+
jQuery.event.add(this, types, fn, data, selector);
|
|
2033
|
+
});
|
|
2034
|
+
},
|
|
2035
|
+
one: function (types, selector, data, fn) {
|
|
2036
|
+
return this.on(types, selector, data, fn, 1);
|
|
2037
|
+
},
|
|
2038
|
+
off: function (types, selector, fn) {
|
|
2039
|
+
var handleObj, type;
|
|
2040
|
+
if (types && types.preventDefault && types.handleObj) return handleObj = types.handleObj, jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler), this;
|
|
2041
|
+
if ("object" == typeof types) {
|
|
2042
|
+
for (type in types) this.off(type, selector, types[type]);
|
|
2043
|
+
return this;
|
|
2044
|
+
}
|
|
2045
|
+
return (selector === !1 || "function" == typeof selector) && (fn = selector, selector = void 0), fn === !1 && (fn = returnFalse), this.each(function () {
|
|
2046
|
+
jQuery.event.remove(this, types, fn, selector);
|
|
2047
|
+
});
|
|
2048
|
+
},
|
|
2049
|
+
trigger: function (type, data) {
|
|
2050
|
+
return this.each(function () {
|
|
2051
|
+
jQuery.event.trigger(type, data, this);
|
|
2052
|
+
});
|
|
2053
|
+
},
|
|
2054
|
+
triggerHandler: function (type, data) {
|
|
2055
|
+
var elem = this[0];
|
|
2056
|
+
return elem ? jQuery.event.trigger(type, data, elem, !0) : void 0;
|
|
2057
|
+
}
|
|
2058
|
+
});
|
|
2059
|
+
var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
|
|
2060
|
+
rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g,
|
|
2061
|
+
rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
|
|
2062
|
+
rleadingWhitespace = /^\s+/,
|
|
2063
|
+
rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
|
|
2064
|
+
rtagName = /<([\w:]+)/,
|
|
2065
|
+
rtbody = /<tbody/i,
|
|
2066
|
+
rhtml = /<|&#?\w+;/,
|
|
2067
|
+
rnoInnerhtml = /<(?:script|style|link)/i,
|
|
2068
|
+
rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
|
|
2069
|
+
rscriptType = /^$|\/(?:java|ecma)script/i,
|
|
2070
|
+
rscriptTypeMasked = /^true\/(.*)/,
|
|
2071
|
+
rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
|
|
2072
|
+
wrapMap = {
|
|
2073
|
+
option: [1, "<select multiple='multiple'>", "</select>"],
|
|
2074
|
+
legend: [1, "<fieldset>", "</fieldset>"],
|
|
2075
|
+
area: [1, "<map>", "</map>"],
|
|
2076
|
+
param: [1, "<object>", "</object>"],
|
|
2077
|
+
thead: [1, "<table>", "</table>"],
|
|
2078
|
+
tr: [2, "<table><tbody>", "</tbody></table>"],
|
|
2079
|
+
col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"],
|
|
2080
|
+
td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
|
|
2081
|
+
_default: support.htmlSerialize ? [0, "", ""] : [1, "X<div>", "</div>"]
|
|
2082
|
+
},
|
|
2083
|
+
safeFragment = createSafeFragment(document),
|
|
2084
|
+
fragmentDiv = safeFragment.appendChild(document.createElement("div"));
|
|
2085
|
+
wrapMap.optgroup = wrapMap.option, wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead, wrapMap.th = wrapMap.td, jQuery.extend({
|
|
2086
|
+
clone: function (elem, dataAndEvents, deepDataAndEvents) {
|
|
2087
|
+
var destElements,
|
|
2088
|
+
node,
|
|
2089
|
+
clone,
|
|
2090
|
+
i,
|
|
2091
|
+
srcElements,
|
|
2092
|
+
inPage = jQuery.contains(elem.ownerDocument, elem);
|
|
2093
|
+
if (support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test("<" + elem.nodeName + ">") ? clone = elem.cloneNode(!0) : (fragmentDiv.innerHTML = elem.outerHTML, fragmentDiv.removeChild(clone = fragmentDiv.firstChild)), !(support.noCloneEvent && support.noCloneChecked || 1 !== elem.nodeType && 11 !== elem.nodeType || jQuery.isXMLDoc(elem))) for (destElements = getAll(clone), srcElements = getAll(elem), i = 0; null != (node = srcElements[i]); ++i) destElements[i] && fixCloneNodeIssues(node, destElements[i]);
|
|
2094
|
+
if (dataAndEvents) if (deepDataAndEvents) for (srcElements = srcElements || getAll(elem), destElements = destElements || getAll(clone), i = 0; null != (node = srcElements[i]); i++) cloneCopyEvent(node, destElements[i]);else cloneCopyEvent(elem, clone);
|
|
2095
|
+
return destElements = getAll(clone, "script"), destElements.length > 0 && setGlobalEval(destElements, !inPage && getAll(elem, "script")), destElements = srcElements = node = null, clone;
|
|
2096
|
+
},
|
|
2097
|
+
buildFragment: function (elems, context, scripts, selection) {
|
|
2098
|
+
for (var j, elem, contains, tmp, tag, tbody, wrap, l = elems.length, safe = createSafeFragment(context), nodes = [], i = 0; l > i; i++) if (elem = elems[i], elem || 0 === elem) if ("object" === jQuery.type(elem)) jQuery.merge(nodes, elem.nodeType ? [elem] : elem);else if (rhtml.test(elem)) {
|
|
2099
|
+
for (tmp = tmp || safe.appendChild(context.createElement("div")), tag = (rtagName.exec(elem) || ["", ""])[1].toLowerCase(), wrap = wrapMap[tag] || wrapMap._default, tmp.innerHTML = wrap[1] + elem.replace(rxhtmlTag, "<$1></$2>") + wrap[2], j = wrap[0]; j--;) tmp = tmp.lastChild;
|
|
2100
|
+
if (!support.leadingWhitespace && rleadingWhitespace.test(elem) && nodes.push(context.createTextNode(rleadingWhitespace.exec(elem)[0])), !support.tbody) for (elem = "table" !== tag || rtbody.test(elem) ? "<table>" !== wrap[1] || rtbody.test(elem) ? 0 : tmp : tmp.firstChild, j = elem && elem.childNodes.length; j--;) jQuery.nodeName(tbody = elem.childNodes[j], "tbody") && !tbody.childNodes.length && elem.removeChild(tbody);
|
|
2101
|
+
for (jQuery.merge(nodes, tmp.childNodes), tmp.textContent = ""; tmp.firstChild;) tmp.removeChild(tmp.firstChild);
|
|
2102
|
+
tmp = safe.lastChild;
|
|
2103
|
+
} else nodes.push(context.createTextNode(elem));
|
|
2104
|
+
for (tmp && safe.removeChild(tmp), support.appendChecked || jQuery.grep(getAll(nodes, "input"), fixDefaultChecked), i = 0; elem = nodes[i++];) if ((!selection || -1 === jQuery.inArray(elem, selection)) && (contains = jQuery.contains(elem.ownerDocument, elem), tmp = getAll(safe.appendChild(elem), "script"), contains && setGlobalEval(tmp), scripts)) for (j = 0; elem = tmp[j++];) rscriptType.test(elem.type || "") && scripts.push(elem);
|
|
2105
|
+
return tmp = null, safe;
|
|
2106
|
+
},
|
|
2107
|
+
cleanData: function (elems, acceptData) {
|
|
2108
|
+
for (var elem, type, id, data, i = 0, internalKey = jQuery.expando, cache = jQuery.cache, deleteExpando = support.deleteExpando, special = jQuery.event.special; null != (elem = elems[i]); i++) if ((acceptData || jQuery.acceptData(elem)) && (id = elem[internalKey], data = id && cache[id])) {
|
|
2109
|
+
if (data.events) for (type in data.events) special[type] ? jQuery.event.remove(elem, type) : jQuery.removeEvent(elem, type, data.handle);
|
|
2110
|
+
cache[id] && (delete cache[id], deleteExpando ? delete elem[internalKey] : typeof elem.removeAttribute !== strundefined ? elem.removeAttribute(internalKey) : elem[internalKey] = null, deletedIds.push(id));
|
|
2111
|
+
}
|
|
2112
|
+
}
|
|
2113
|
+
}), jQuery.fn.extend({
|
|
2114
|
+
text: function (value) {
|
|
2115
|
+
return access(this, function (value) {
|
|
2116
|
+
return void 0 === value ? jQuery.text(this) : this.empty().append((this[0] && this[0].ownerDocument || document).createTextNode(value));
|
|
2117
|
+
}, null, value, arguments.length);
|
|
2118
|
+
},
|
|
2119
|
+
append: function () {
|
|
2120
|
+
return this.domManip(arguments, function (elem) {
|
|
2121
|
+
if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
|
|
2122
|
+
var target = manipulationTarget(this, elem);
|
|
2123
|
+
target.appendChild(elem);
|
|
2124
|
+
}
|
|
2125
|
+
});
|
|
2126
|
+
},
|
|
2127
|
+
prepend: function () {
|
|
2128
|
+
return this.domManip(arguments, function (elem) {
|
|
2129
|
+
if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
|
|
2130
|
+
var target = manipulationTarget(this, elem);
|
|
2131
|
+
target.insertBefore(elem, target.firstChild);
|
|
2132
|
+
}
|
|
2133
|
+
});
|
|
2134
|
+
},
|
|
2135
|
+
before: function () {
|
|
2136
|
+
return this.domManip(arguments, function (elem) {
|
|
2137
|
+
this.parentNode && this.parentNode.insertBefore(elem, this);
|
|
2138
|
+
});
|
|
2139
|
+
},
|
|
2140
|
+
after: function () {
|
|
2141
|
+
return this.domManip(arguments, function (elem) {
|
|
2142
|
+
this.parentNode && this.parentNode.insertBefore(elem, this.nextSibling);
|
|
2143
|
+
});
|
|
2144
|
+
},
|
|
2145
|
+
remove: function (selector, keepData) {
|
|
2146
|
+
for (var elem, elems = selector ? jQuery.filter(selector, this) : this, i = 0; null != (elem = elems[i]); i++) keepData || 1 !== elem.nodeType || jQuery.cleanData(getAll(elem)), elem.parentNode && (keepData && jQuery.contains(elem.ownerDocument, elem) && setGlobalEval(getAll(elem, "script")), elem.parentNode.removeChild(elem));
|
|
2147
|
+
return this;
|
|
2148
|
+
},
|
|
2149
|
+
empty: function () {
|
|
2150
|
+
for (var elem, i = 0; null != (elem = this[i]); i++) {
|
|
2151
|
+
for (1 === elem.nodeType && jQuery.cleanData(getAll(elem, !1)); elem.firstChild;) elem.removeChild(elem.firstChild);
|
|
2152
|
+
elem.options && jQuery.nodeName(elem, "select") && (elem.options.length = 0);
|
|
2153
|
+
}
|
|
2154
|
+
return this;
|
|
2155
|
+
},
|
|
2156
|
+
clone: function (dataAndEvents, deepDataAndEvents) {
|
|
2157
|
+
return dataAndEvents = null == dataAndEvents ? !1 : dataAndEvents, deepDataAndEvents = null == deepDataAndEvents ? dataAndEvents : deepDataAndEvents, this.map(function () {
|
|
2158
|
+
return jQuery.clone(this, dataAndEvents, deepDataAndEvents);
|
|
2159
|
+
});
|
|
2160
|
+
},
|
|
2161
|
+
html: function (value) {
|
|
2162
|
+
return access(this, function (value) {
|
|
2163
|
+
var elem = this[0] || {},
|
|
2164
|
+
i = 0,
|
|
2165
|
+
l = this.length;
|
|
2166
|
+
if (void 0 === value) return 1 === elem.nodeType ? elem.innerHTML.replace(rinlinejQuery, "") : void 0;
|
|
2167
|
+
if ("string" == typeof value && !rnoInnerhtml.test(value) && (support.htmlSerialize || !rnoshimcache.test(value)) && (support.leadingWhitespace || !rleadingWhitespace.test(value)) && !wrapMap[(rtagName.exec(value) || ["", ""])[1].toLowerCase()]) {
|
|
2168
|
+
value = value.replace(rxhtmlTag, "<$1></$2>");
|
|
2169
|
+
try {
|
|
2170
|
+
for (; l > i; i++) elem = this[i] || {}, 1 === elem.nodeType && (jQuery.cleanData(getAll(elem, !1)), elem.innerHTML = value);
|
|
2171
|
+
elem = 0;
|
|
2172
|
+
} catch (e) {}
|
|
2173
|
+
}
|
|
2174
|
+
elem && this.empty().append(value);
|
|
2175
|
+
}, null, value, arguments.length);
|
|
2176
|
+
},
|
|
2177
|
+
replaceWith: function () {
|
|
2178
|
+
var arg = arguments[0];
|
|
2179
|
+
return this.domManip(arguments, function (elem) {
|
|
2180
|
+
arg = this.parentNode, jQuery.cleanData(getAll(this)), arg && arg.replaceChild(elem, this);
|
|
2181
|
+
}), arg && (arg.length || arg.nodeType) ? this : this.remove();
|
|
2182
|
+
},
|
|
2183
|
+
detach: function (selector) {
|
|
2184
|
+
return this.remove(selector, !0);
|
|
2185
|
+
},
|
|
2186
|
+
domManip: function (args, callback) {
|
|
2187
|
+
args = concat.apply([], args);
|
|
2188
|
+
var first,
|
|
2189
|
+
node,
|
|
2190
|
+
hasScripts,
|
|
2191
|
+
scripts,
|
|
2192
|
+
doc,
|
|
2193
|
+
fragment,
|
|
2194
|
+
i = 0,
|
|
2195
|
+
l = this.length,
|
|
2196
|
+
set = this,
|
|
2197
|
+
iNoClone = l - 1,
|
|
2198
|
+
value = args[0],
|
|
2199
|
+
isFunction = jQuery.isFunction(value);
|
|
2200
|
+
if (isFunction || l > 1 && "string" == typeof value && !support.checkClone && rchecked.test(value)) return this.each(function (index) {
|
|
2201
|
+
var self = set.eq(index);
|
|
2202
|
+
isFunction && (args[0] = value.call(this, index, self.html())), self.domManip(args, callback);
|
|
2203
|
+
});
|
|
2204
|
+
if (l && (fragment = jQuery.buildFragment(args, this[0].ownerDocument, !1, this), first = fragment.firstChild, 1 === fragment.childNodes.length && (fragment = first), first)) {
|
|
2205
|
+
for (scripts = jQuery.map(getAll(fragment, "script"), disableScript), hasScripts = scripts.length; l > i; i++) node = fragment, i !== iNoClone && (node = jQuery.clone(node, !0, !0), hasScripts && jQuery.merge(scripts, getAll(node, "script"))), callback.call(this[i], node, i);
|
|
2206
|
+
if (hasScripts) for (doc = scripts[scripts.length - 1].ownerDocument, jQuery.map(scripts, restoreScript), i = 0; hasScripts > i; i++) node = scripts[i], rscriptType.test(node.type || "") && !jQuery._data(node, "globalEval") && jQuery.contains(doc, node) && (node.src ? jQuery._evalUrl && jQuery._evalUrl(node.src) : jQuery.globalEval((node.text || node.textContent || node.innerHTML || "").replace(rcleanScript, "")));
|
|
2207
|
+
fragment = first = null;
|
|
2208
|
+
}
|
|
2209
|
+
return this;
|
|
2210
|
+
}
|
|
2211
|
+
}), jQuery.each({
|
|
2212
|
+
appendTo: "append",
|
|
2213
|
+
prependTo: "prepend",
|
|
2214
|
+
insertBefore: "before",
|
|
2215
|
+
insertAfter: "after",
|
|
2216
|
+
replaceAll: "replaceWith"
|
|
2217
|
+
}, function (name, original) {
|
|
2218
|
+
jQuery.fn[name] = function (selector) {
|
|
2219
|
+
for (var elems, i = 0, ret = [], insert = jQuery(selector), last = insert.length - 1; last >= i; i++) elems = i === last ? this : this.clone(!0), jQuery(insert[i])[original](elems), push.apply(ret, elems.get());
|
|
2220
|
+
return this.pushStack(ret);
|
|
2221
|
+
};
|
|
2222
|
+
});
|
|
2223
|
+
var iframe,
|
|
2224
|
+
elemdisplay = {};
|
|
2225
|
+
!function () {
|
|
2226
|
+
var shrinkWrapBlocksVal;
|
|
2227
|
+
support.shrinkWrapBlocks = function () {
|
|
2228
|
+
if (null != shrinkWrapBlocksVal) return shrinkWrapBlocksVal;
|
|
2229
|
+
shrinkWrapBlocksVal = !1;
|
|
2230
|
+
var div, body, container;
|
|
2231
|
+
return body = document.getElementsByTagName("body")[0], body && body.style ? (div = document.createElement("div"), container = document.createElement("div"), container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px", body.appendChild(container).appendChild(div), typeof div.style.zoom !== strundefined && (div.style.cssText = "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1", div.appendChild(document.createElement("div")).style.width = "5px", shrinkWrapBlocksVal = 3 !== div.offsetWidth), body.removeChild(container), shrinkWrapBlocksVal) : void 0;
|
|
2232
|
+
};
|
|
2233
|
+
}();
|
|
2234
|
+
var getStyles,
|
|
2235
|
+
curCSS,
|
|
2236
|
+
rmargin = /^margin/,
|
|
2237
|
+
rnumnonpx = new RegExp("^(" + pnum + ")(?!px)[a-z%]+$", "i"),
|
|
2238
|
+
rposition = /^(top|right|bottom|left)$/;
|
|
2239
|
+
window.getComputedStyle ? (getStyles = function (elem) {
|
|
2240
|
+
return elem.ownerDocument.defaultView.opener ? elem.ownerDocument.defaultView.getComputedStyle(elem, null) : window.getComputedStyle(elem, null);
|
|
2241
|
+
}, curCSS = function (elem, name, computed) {
|
|
2242
|
+
var width,
|
|
2243
|
+
minWidth,
|
|
2244
|
+
maxWidth,
|
|
2245
|
+
ret,
|
|
2246
|
+
style = elem.style;
|
|
2247
|
+
return computed = computed || getStyles(elem), ret = computed ? computed.getPropertyValue(name) || computed[name] : void 0, computed && ("" !== ret || jQuery.contains(elem.ownerDocument, elem) || (ret = jQuery.style(elem, name)), rnumnonpx.test(ret) && rmargin.test(name) && (width = style.width, minWidth = style.minWidth, maxWidth = style.maxWidth, style.minWidth = style.maxWidth = style.width = ret, ret = computed.width, style.width = width, style.minWidth = minWidth, style.maxWidth = maxWidth)), void 0 === ret ? ret : ret + "";
|
|
2248
|
+
}) : document.documentElement.currentStyle && (getStyles = function (elem) {
|
|
2249
|
+
return elem.currentStyle;
|
|
2250
|
+
}, curCSS = function (elem, name, computed) {
|
|
2251
|
+
var left,
|
|
2252
|
+
rs,
|
|
2253
|
+
rsLeft,
|
|
2254
|
+
ret,
|
|
2255
|
+
style = elem.style;
|
|
2256
|
+
return computed = computed || getStyles(elem), ret = computed ? computed[name] : void 0, null == ret && style && style[name] && (ret = style[name]), rnumnonpx.test(ret) && !rposition.test(name) && (left = style.left, rs = elem.runtimeStyle, rsLeft = rs && rs.left, rsLeft && (rs.left = elem.currentStyle.left), style.left = "fontSize" === name ? "1em" : ret, ret = style.pixelLeft + "px", style.left = left, rsLeft && (rs.left = rsLeft)), void 0 === ret ? ret : ret + "" || "auto";
|
|
2257
|
+
}), function () {
|
|
2258
|
+
function computeStyleTests() {
|
|
2259
|
+
var div, body, container, contents;
|
|
2260
|
+
body = document.getElementsByTagName("body")[0], body && body.style && (div = document.createElement("div"), container = document.createElement("div"), container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px", body.appendChild(container).appendChild(div), div.style.cssText = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute", pixelPositionVal = boxSizingReliableVal = !1, reliableMarginRightVal = !0, window.getComputedStyle && (pixelPositionVal = "1%" !== (window.getComputedStyle(div, null) || {}).top, boxSizingReliableVal = "4px" === (window.getComputedStyle(div, null) || {
|
|
2261
|
+
width: "4px"
|
|
2262
|
+
}).width, contents = div.appendChild(document.createElement("div")), contents.style.cssText = div.style.cssText = "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0", contents.style.marginRight = contents.style.width = "0", div.style.width = "1px", reliableMarginRightVal = !parseFloat((window.getComputedStyle(contents, null) || {}).marginRight), div.removeChild(contents)), div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>", contents = div.getElementsByTagName("td"), contents[0].style.cssText = "margin:0;border:0;padding:0;display:none", reliableHiddenOffsetsVal = 0 === contents[0].offsetHeight, reliableHiddenOffsetsVal && (contents[0].style.display = "", contents[1].style.display = "none", reliableHiddenOffsetsVal = 0 === contents[0].offsetHeight), body.removeChild(container));
|
|
2263
|
+
}
|
|
2264
|
+
var div, style, a, pixelPositionVal, boxSizingReliableVal, reliableHiddenOffsetsVal, reliableMarginRightVal;
|
|
2265
|
+
div = document.createElement("div"), div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", a = div.getElementsByTagName("a")[0], style = a && a.style, style && (style.cssText = "float:left;opacity:.5", support.opacity = "0.5" === style.opacity, support.cssFloat = !!style.cssFloat, div.style.backgroundClip = "content-box", div.cloneNode(!0).style.backgroundClip = "", support.clearCloneStyle = "content-box" === div.style.backgroundClip, support.boxSizing = "" === style.boxSizing || "" === style.MozBoxSizing || "" === style.WebkitBoxSizing, jQuery.extend(support, {
|
|
2266
|
+
reliableHiddenOffsets: function () {
|
|
2267
|
+
return null == reliableHiddenOffsetsVal && computeStyleTests(), reliableHiddenOffsetsVal;
|
|
2268
|
+
},
|
|
2269
|
+
boxSizingReliable: function () {
|
|
2270
|
+
return null == boxSizingReliableVal && computeStyleTests(), boxSizingReliableVal;
|
|
2271
|
+
},
|
|
2272
|
+
pixelPosition: function () {
|
|
2273
|
+
return null == pixelPositionVal && computeStyleTests(), pixelPositionVal;
|
|
2274
|
+
},
|
|
2275
|
+
reliableMarginRight: function () {
|
|
2276
|
+
return null == reliableMarginRightVal && computeStyleTests(), reliableMarginRightVal;
|
|
2277
|
+
}
|
|
2278
|
+
}));
|
|
2279
|
+
}(), jQuery.swap = function (elem, options, callback, args) {
|
|
2280
|
+
var ret,
|
|
2281
|
+
name,
|
|
2282
|
+
old = {};
|
|
2283
|
+
for (name in options) old[name] = elem.style[name], elem.style[name] = options[name];
|
|
2284
|
+
ret = callback.apply(elem, args || []);
|
|
2285
|
+
for (name in options) elem.style[name] = old[name];
|
|
2286
|
+
return ret;
|
|
2287
|
+
};
|
|
2288
|
+
var ralpha = /alpha\([^)]*\)/i,
|
|
2289
|
+
ropacity = /opacity\s*=\s*([^)]*)/,
|
|
2290
|
+
rdisplayswap = /^(none|table(?!-c[ea]).+)/,
|
|
2291
|
+
rnumsplit = new RegExp("^(" + pnum + ")(.*)$", "i"),
|
|
2292
|
+
rrelNum = new RegExp("^([+-])=(" + pnum + ")", "i"),
|
|
2293
|
+
cssShow = {
|
|
2294
|
+
position: "absolute",
|
|
2295
|
+
visibility: "hidden",
|
|
2296
|
+
display: "block"
|
|
2297
|
+
},
|
|
2298
|
+
cssNormalTransform = {
|
|
2299
|
+
letterSpacing: "0",
|
|
2300
|
+
fontWeight: "400"
|
|
2301
|
+
},
|
|
2302
|
+
cssPrefixes = ["Webkit", "O", "Moz", "ms"];
|
|
2303
|
+
jQuery.extend({
|
|
2304
|
+
cssHooks: {
|
|
2305
|
+
opacity: {
|
|
2306
|
+
get: function (elem, computed) {
|
|
2307
|
+
if (computed) {
|
|
2308
|
+
var ret = curCSS(elem, "opacity");
|
|
2309
|
+
return "" === ret ? "1" : ret;
|
|
2310
|
+
}
|
|
2311
|
+
}
|
|
2312
|
+
}
|
|
2313
|
+
},
|
|
2314
|
+
cssNumber: {
|
|
2315
|
+
columnCount: !0,
|
|
2316
|
+
fillOpacity: !0,
|
|
2317
|
+
flexGrow: !0,
|
|
2318
|
+
flexShrink: !0,
|
|
2319
|
+
fontWeight: !0,
|
|
2320
|
+
lineHeight: !0,
|
|
2321
|
+
opacity: !0,
|
|
2322
|
+
order: !0,
|
|
2323
|
+
orphans: !0,
|
|
2324
|
+
widows: !0,
|
|
2325
|
+
zIndex: !0,
|
|
2326
|
+
zoom: !0
|
|
2327
|
+
},
|
|
2328
|
+
cssProps: {
|
|
2329
|
+
"float": support.cssFloat ? "cssFloat" : "styleFloat"
|
|
2330
|
+
},
|
|
2331
|
+
style: function (elem, name, value, extra) {
|
|
2332
|
+
if (elem && 3 !== elem.nodeType && 8 !== elem.nodeType && elem.style) {
|
|
2333
|
+
var ret,
|
|
2334
|
+
type,
|
|
2335
|
+
hooks,
|
|
2336
|
+
origName = jQuery.camelCase(name),
|
|
2337
|
+
style = elem.style;
|
|
2338
|
+
if (name = jQuery.cssProps[origName] || (jQuery.cssProps[origName] = vendorPropName(style, origName)), hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName], void 0 === value) return hooks && "get" in hooks && void 0 !== (ret = hooks.get(elem, !1, extra)) ? ret : style[name];
|
|
2339
|
+
if (type = typeof value, "string" === type && (ret = rrelNum.exec(value)) && (value = (ret[1] + 1) * ret[2] + parseFloat(jQuery.css(elem, name)), type = "number"), null != value && value === value && ("number" !== type || jQuery.cssNumber[origName] || (value += "px"), support.clearCloneStyle || "" !== value || 0 !== name.indexOf("background") || (style[name] = "inherit"), !(hooks && "set" in hooks && void 0 === (value = hooks.set(elem, value, extra))))) try {
|
|
2340
|
+
style[name] = value;
|
|
2341
|
+
} catch (e) {}
|
|
2342
|
+
}
|
|
2343
|
+
},
|
|
2344
|
+
css: function (elem, name, extra, styles) {
|
|
2345
|
+
var num,
|
|
2346
|
+
val,
|
|
2347
|
+
hooks,
|
|
2348
|
+
origName = jQuery.camelCase(name);
|
|
2349
|
+
return name = jQuery.cssProps[origName] || (jQuery.cssProps[origName] = vendorPropName(elem.style, origName)), hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName], hooks && "get" in hooks && (val = hooks.get(elem, !0, extra)), void 0 === val && (val = curCSS(elem, name, styles)), "normal" === val && name in cssNormalTransform && (val = cssNormalTransform[name]), "" === extra || extra ? (num = parseFloat(val), extra === !0 || jQuery.isNumeric(num) ? num || 0 : val) : val;
|
|
2350
|
+
}
|
|
2351
|
+
}), jQuery.each(["height", "width"], function (i, name) {
|
|
2352
|
+
jQuery.cssHooks[name] = {
|
|
2353
|
+
get: function (elem, computed, extra) {
|
|
2354
|
+
return computed ? rdisplayswap.test(jQuery.css(elem, "display")) && 0 === elem.offsetWidth ? jQuery.swap(elem, cssShow, function () {
|
|
2355
|
+
return getWidthOrHeight(elem, name, extra);
|
|
2356
|
+
}) : getWidthOrHeight(elem, name, extra) : void 0;
|
|
2357
|
+
},
|
|
2358
|
+
set: function (elem, value, extra) {
|
|
2359
|
+
var styles = extra && getStyles(elem);
|
|
2360
|
+
return setPositiveNumber(elem, value, extra ? augmentWidthOrHeight(elem, name, extra, support.boxSizing && "border-box" === jQuery.css(elem, "boxSizing", !1, styles), styles) : 0);
|
|
2361
|
+
}
|
|
2362
|
+
};
|
|
2363
|
+
}), support.opacity || (jQuery.cssHooks.opacity = {
|
|
2364
|
+
get: function (elem, computed) {
|
|
2365
|
+
return ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "") ? .01 * parseFloat(RegExp.$1) + "" : computed ? "1" : "";
|
|
2366
|
+
},
|
|
2367
|
+
set: function (elem, value) {
|
|
2368
|
+
var style = elem.style,
|
|
2369
|
+
currentStyle = elem.currentStyle,
|
|
2370
|
+
opacity = jQuery.isNumeric(value) ? "alpha(opacity=" + 100 * value + ")" : "",
|
|
2371
|
+
filter = currentStyle && currentStyle.filter || style.filter || "";
|
|
2372
|
+
style.zoom = 1, (value >= 1 || "" === value) && "" === jQuery.trim(filter.replace(ralpha, "")) && style.removeAttribute && (style.removeAttribute("filter"), "" === value || currentStyle && !currentStyle.filter) || (style.filter = ralpha.test(filter) ? filter.replace(ralpha, opacity) : filter + " " + opacity);
|
|
2373
|
+
}
|
|
2374
|
+
}), jQuery.cssHooks.marginRight = addGetHookIf(support.reliableMarginRight, function (elem, computed) {
|
|
2375
|
+
return computed ? jQuery.swap(elem, {
|
|
2376
|
+
display: "inline-block"
|
|
2377
|
+
}, curCSS, [elem, "marginRight"]) : void 0;
|
|
2378
|
+
}), jQuery.each({
|
|
2379
|
+
margin: "",
|
|
2380
|
+
padding: "",
|
|
2381
|
+
border: "Width"
|
|
2382
|
+
}, function (prefix, suffix) {
|
|
2383
|
+
jQuery.cssHooks[prefix + suffix] = {
|
|
2384
|
+
expand: function (value) {
|
|
2385
|
+
for (var i = 0, expanded = {}, parts = "string" == typeof value ? value.split(" ") : [value]; 4 > i; i++) expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0];
|
|
2386
|
+
return expanded;
|
|
2387
|
+
}
|
|
2388
|
+
}, rmargin.test(prefix) || (jQuery.cssHooks[prefix + suffix].set = setPositiveNumber);
|
|
2389
|
+
}), jQuery.fn.extend({
|
|
2390
|
+
css: function (name, value) {
|
|
2391
|
+
return access(this, function (elem, name, value) {
|
|
2392
|
+
var styles,
|
|
2393
|
+
len,
|
|
2394
|
+
map = {},
|
|
2395
|
+
i = 0;
|
|
2396
|
+
if (jQuery.isArray(name)) {
|
|
2397
|
+
for (styles = getStyles(elem), len = name.length; len > i; i++) map[name[i]] = jQuery.css(elem, name[i], !1, styles);
|
|
2398
|
+
return map;
|
|
2399
|
+
}
|
|
2400
|
+
return void 0 !== value ? jQuery.style(elem, name, value) : jQuery.css(elem, name);
|
|
2401
|
+
}, name, value, arguments.length > 1);
|
|
2402
|
+
},
|
|
2403
|
+
show: function () {
|
|
2404
|
+
return showHide(this, !0);
|
|
2405
|
+
},
|
|
2406
|
+
hide: function () {
|
|
2407
|
+
return showHide(this);
|
|
2408
|
+
},
|
|
2409
|
+
toggle: function (state) {
|
|
2410
|
+
return "boolean" == typeof state ? state ? this.show() : this.hide() : this.each(function () {
|
|
2411
|
+
isHidden(this) ? jQuery(this).show() : jQuery(this).hide();
|
|
2412
|
+
});
|
|
2413
|
+
}
|
|
2414
|
+
}), jQuery.Tween = Tween, Tween.prototype = {
|
|
2415
|
+
constructor: Tween,
|
|
2416
|
+
init: function (elem, options, prop, end, easing, unit) {
|
|
2417
|
+
this.elem = elem, this.prop = prop, this.easing = easing || "swing", this.options = options, this.start = this.now = this.cur(), this.end = end, this.unit = unit || (jQuery.cssNumber[prop] ? "" : "px");
|
|
2418
|
+
},
|
|
2419
|
+
cur: function () {
|
|
2420
|
+
var hooks = Tween.propHooks[this.prop];
|
|
2421
|
+
return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);
|
|
2422
|
+
},
|
|
2423
|
+
run: function (percent) {
|
|
2424
|
+
var eased,
|
|
2425
|
+
hooks = Tween.propHooks[this.prop];
|
|
2426
|
+
return this.options.duration ? this.pos = eased = jQuery.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration) : this.pos = eased = percent, this.now = (this.end - this.start) * eased + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), hooks && hooks.set ? hooks.set(this) : Tween.propHooks._default.set(this), this;
|
|
2427
|
+
}
|
|
2428
|
+
}, Tween.prototype.init.prototype = Tween.prototype, Tween.propHooks = {
|
|
2429
|
+
_default: {
|
|
2430
|
+
get: function (tween) {
|
|
2431
|
+
var result;
|
|
2432
|
+
return null == tween.elem[tween.prop] || tween.elem.style && null != tween.elem.style[tween.prop] ? (result = jQuery.css(tween.elem, tween.prop, ""), result && "auto" !== result ? result : 0) : tween.elem[tween.prop];
|
|
2433
|
+
},
|
|
2434
|
+
set: function (tween) {
|
|
2435
|
+
jQuery.fx.step[tween.prop] ? jQuery.fx.step[tween.prop](tween) : tween.elem.style && (null != tween.elem.style[jQuery.cssProps[tween.prop]] || jQuery.cssHooks[tween.prop]) ? jQuery.style(tween.elem, tween.prop, tween.now + tween.unit) : tween.elem[tween.prop] = tween.now;
|
|
2436
|
+
}
|
|
2437
|
+
}
|
|
2438
|
+
}, Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
|
|
2439
|
+
set: function (tween) {
|
|
2440
|
+
tween.elem.nodeType && tween.elem.parentNode && (tween.elem[tween.prop] = tween.now);
|
|
2441
|
+
}
|
|
2442
|
+
}, jQuery.easing = {
|
|
2443
|
+
linear: function (p) {
|
|
2444
|
+
return p;
|
|
2445
|
+
},
|
|
2446
|
+
swing: function (p) {
|
|
2447
|
+
return .5 - Math.cos(p * Math.PI) / 2;
|
|
2448
|
+
}
|
|
2449
|
+
}, jQuery.fx = Tween.prototype.init, jQuery.fx.step = {};
|
|
2450
|
+
var fxNow,
|
|
2451
|
+
timerId,
|
|
2452
|
+
rfxtypes = /^(?:toggle|show|hide)$/,
|
|
2453
|
+
rfxnum = new RegExp("^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i"),
|
|
2454
|
+
rrun = /queueHooks$/,
|
|
2455
|
+
animationPrefilters = [defaultPrefilter],
|
|
2456
|
+
tweeners = {
|
|
2457
|
+
"*": [function (prop, value) {
|
|
2458
|
+
var tween = this.createTween(prop, value),
|
|
2459
|
+
target = tween.cur(),
|
|
2460
|
+
parts = rfxnum.exec(value),
|
|
2461
|
+
unit = parts && parts[3] || (jQuery.cssNumber[prop] ? "" : "px"),
|
|
2462
|
+
start = (jQuery.cssNumber[prop] || "px" !== unit && +target) && rfxnum.exec(jQuery.css(tween.elem, prop)),
|
|
2463
|
+
scale = 1,
|
|
2464
|
+
maxIterations = 20;
|
|
2465
|
+
if (start && start[3] !== unit) {
|
|
2466
|
+
unit = unit || start[3], parts = parts || [], start = +target || 1;
|
|
2467
|
+
do scale = scale || ".5", start /= scale, jQuery.style(tween.elem, prop, start + unit); while (scale !== (scale = tween.cur() / target) && 1 !== scale && --maxIterations);
|
|
2468
|
+
}
|
|
2469
|
+
return parts && (start = tween.start = +start || +target || 0, tween.unit = unit, tween.end = parts[1] ? start + (parts[1] + 1) * parts[2] : +parts[2]), tween;
|
|
2470
|
+
}]
|
|
2471
|
+
};
|
|
2472
|
+
jQuery.Animation = jQuery.extend(Animation, {
|
|
2473
|
+
tweener: function (props, callback) {
|
|
2474
|
+
jQuery.isFunction(props) ? (callback = props, props = ["*"]) : props = props.split(" ");
|
|
2475
|
+
for (var prop, index = 0, length = props.length; length > index; index++) prop = props[index], tweeners[prop] = tweeners[prop] || [], tweeners[prop].unshift(callback);
|
|
2476
|
+
},
|
|
2477
|
+
prefilter: function (callback, prepend) {
|
|
2478
|
+
prepend ? animationPrefilters.unshift(callback) : animationPrefilters.push(callback);
|
|
2479
|
+
}
|
|
2480
|
+
}), jQuery.speed = function (speed, easing, fn) {
|
|
2481
|
+
var opt = speed && "object" == typeof speed ? jQuery.extend({}, speed) : {
|
|
2482
|
+
complete: fn || !fn && easing || jQuery.isFunction(speed) && speed,
|
|
2483
|
+
duration: speed,
|
|
2484
|
+
easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
|
|
2485
|
+
};
|
|
2486
|
+
return opt.duration = jQuery.fx.off ? 0 : "number" == typeof opt.duration ? opt.duration : opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default, (null == opt.queue || opt.queue === !0) && (opt.queue = "fx"), opt.old = opt.complete, opt.complete = function () {
|
|
2487
|
+
jQuery.isFunction(opt.old) && opt.old.call(this), opt.queue && jQuery.dequeue(this, opt.queue);
|
|
2488
|
+
}, opt;
|
|
2489
|
+
}, jQuery.fn.extend({
|
|
2490
|
+
fadeTo: function (speed, to, easing, callback) {
|
|
2491
|
+
return this.filter(isHidden).css("opacity", 0).show().end().animate({
|
|
2492
|
+
opacity: to
|
|
2493
|
+
}, speed, easing, callback);
|
|
2494
|
+
},
|
|
2495
|
+
animate: function (prop, speed, easing, callback) {
|
|
2496
|
+
var empty = jQuery.isEmptyObject(prop),
|
|
2497
|
+
optall = jQuery.speed(speed, easing, callback),
|
|
2498
|
+
doAnimation = function () {
|
|
2499
|
+
var anim = Animation(this, jQuery.extend({}, prop), optall);
|
|
2500
|
+
(empty || jQuery._data(this, "finish")) && anim.stop(!0);
|
|
2501
|
+
};
|
|
2502
|
+
return doAnimation.finish = doAnimation, empty || optall.queue === !1 ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);
|
|
2503
|
+
},
|
|
2504
|
+
stop: function (type, clearQueue, gotoEnd) {
|
|
2505
|
+
var stopQueue = function (hooks) {
|
|
2506
|
+
var stop = hooks.stop;
|
|
2507
|
+
delete hooks.stop, stop(gotoEnd);
|
|
2508
|
+
};
|
|
2509
|
+
return "string" != typeof type && (gotoEnd = clearQueue, clearQueue = type, type = void 0), clearQueue && type !== !1 && this.queue(type || "fx", []), this.each(function () {
|
|
2510
|
+
var dequeue = !0,
|
|
2511
|
+
index = null != type && type + "queueHooks",
|
|
2512
|
+
timers = jQuery.timers,
|
|
2513
|
+
data = jQuery._data(this);
|
|
2514
|
+
if (index) data[index] && data[index].stop && stopQueue(data[index]);else for (index in data) data[index] && data[index].stop && rrun.test(index) && stopQueue(data[index]);
|
|
2515
|
+
for (index = timers.length; index--;) timers[index].elem !== this || null != type && timers[index].queue !== type || (timers[index].anim.stop(gotoEnd), dequeue = !1, timers.splice(index, 1));
|
|
2516
|
+
(dequeue || !gotoEnd) && jQuery.dequeue(this, type);
|
|
2517
|
+
});
|
|
2518
|
+
},
|
|
2519
|
+
finish: function (type) {
|
|
2520
|
+
return type !== !1 && (type = type || "fx"), this.each(function () {
|
|
2521
|
+
var index,
|
|
2522
|
+
data = jQuery._data(this),
|
|
2523
|
+
queue = data[type + "queue"],
|
|
2524
|
+
hooks = data[type + "queueHooks"],
|
|
2525
|
+
timers = jQuery.timers,
|
|
2526
|
+
length = queue ? queue.length : 0;
|
|
2527
|
+
for (data.finish = !0, jQuery.queue(this, type, []), hooks && hooks.stop && hooks.stop.call(this, !0), index = timers.length; index--;) timers[index].elem === this && timers[index].queue === type && (timers[index].anim.stop(!0), timers.splice(index, 1));
|
|
2528
|
+
for (index = 0; length > index; index++) queue[index] && queue[index].finish && queue[index].finish.call(this);
|
|
2529
|
+
delete data.finish;
|
|
2530
|
+
});
|
|
2531
|
+
}
|
|
2532
|
+
}), jQuery.each(["toggle", "show", "hide"], function (i, name) {
|
|
2533
|
+
var cssFn = jQuery.fn[name];
|
|
2534
|
+
jQuery.fn[name] = function (speed, easing, callback) {
|
|
2535
|
+
return null == speed || "boolean" == typeof speed ? cssFn.apply(this, arguments) : this.animate(genFx(name, !0), speed, easing, callback);
|
|
2536
|
+
};
|
|
2537
|
+
}), jQuery.each({
|
|
2538
|
+
slideDown: genFx("show"),
|
|
2539
|
+
slideUp: genFx("hide"),
|
|
2540
|
+
slideToggle: genFx("toggle"),
|
|
2541
|
+
fadeIn: {
|
|
2542
|
+
opacity: "show"
|
|
2543
|
+
},
|
|
2544
|
+
fadeOut: {
|
|
2545
|
+
opacity: "hide"
|
|
2546
|
+
},
|
|
2547
|
+
fadeToggle: {
|
|
2548
|
+
opacity: "toggle"
|
|
2549
|
+
}
|
|
2550
|
+
}, function (name, props) {
|
|
2551
|
+
jQuery.fn[name] = function (speed, easing, callback) {
|
|
2552
|
+
return this.animate(props, speed, easing, callback);
|
|
2553
|
+
};
|
|
2554
|
+
}), jQuery.timers = [], jQuery.fx.tick = function () {
|
|
2555
|
+
var timer,
|
|
2556
|
+
timers = jQuery.timers,
|
|
2557
|
+
i = 0;
|
|
2558
|
+
for (fxNow = jQuery.now(); i < timers.length; i++) timer = timers[i], timer() || timers[i] !== timer || timers.splice(i--, 1);
|
|
2559
|
+
timers.length || jQuery.fx.stop(), fxNow = void 0;
|
|
2560
|
+
}, jQuery.fx.timer = function (timer) {
|
|
2561
|
+
jQuery.timers.push(timer), timer() ? jQuery.fx.start() : jQuery.timers.pop();
|
|
2562
|
+
}, jQuery.fx.interval = 13, jQuery.fx.start = function () {
|
|
2563
|
+
timerId || (timerId = setInterval(jQuery.fx.tick, jQuery.fx.interval));
|
|
2564
|
+
}, jQuery.fx.stop = function () {
|
|
2565
|
+
clearInterval(timerId), timerId = null;
|
|
2566
|
+
}, jQuery.fx.speeds = {
|
|
2567
|
+
slow: 600,
|
|
2568
|
+
fast: 200,
|
|
2569
|
+
_default: 400
|
|
2570
|
+
}, jQuery.fn.delay = function (time, type) {
|
|
2571
|
+
return time = jQuery.fx ? jQuery.fx.speeds[time] || time : time, type = type || "fx", this.queue(type, function (next, hooks) {
|
|
2572
|
+
var timeout = setTimeout(next, time);
|
|
2573
|
+
hooks.stop = function () {
|
|
2574
|
+
clearTimeout(timeout);
|
|
2575
|
+
};
|
|
2576
|
+
});
|
|
2577
|
+
}, function () {
|
|
2578
|
+
var input, div, select, a, opt;
|
|
2579
|
+
div = document.createElement("div"), div.setAttribute("className", "t"), div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", a = div.getElementsByTagName("a")[0], select = document.createElement("select"), opt = select.appendChild(document.createElement("option")), input = div.getElementsByTagName("input")[0], a.style.cssText = "top:1px", support.getSetAttribute = "t" !== div.className, support.style = /top/.test(a.getAttribute("style")), support.hrefNormalized = "/a" === a.getAttribute("href"), support.checkOn = !!input.value, support.optSelected = opt.selected, support.enctype = !!document.createElement("form").enctype, select.disabled = !0, support.optDisabled = !opt.disabled, input = document.createElement("input"), input.setAttribute("value", ""), support.input = "" === input.getAttribute("value"), input.value = "t", input.setAttribute("type", "radio"), support.radioValue = "t" === input.value;
|
|
2580
|
+
}();
|
|
2581
|
+
var rreturn = /\r/g;
|
|
2582
|
+
jQuery.fn.extend({
|
|
2583
|
+
val: function (value) {
|
|
2584
|
+
var hooks,
|
|
2585
|
+
ret,
|
|
2586
|
+
isFunction,
|
|
2587
|
+
elem = this[0];
|
|
2588
|
+
{
|
|
2589
|
+
if (arguments.length) return isFunction = jQuery.isFunction(value), this.each(function (i) {
|
|
2590
|
+
var val;
|
|
2591
|
+
1 === this.nodeType && (val = isFunction ? value.call(this, i, jQuery(this).val()) : value, null == val ? val = "" : "number" == typeof val ? val += "" : jQuery.isArray(val) && (val = jQuery.map(val, function (value) {
|
|
2592
|
+
return null == value ? "" : value + "";
|
|
2593
|
+
})), hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()], hooks && "set" in hooks && void 0 !== hooks.set(this, val, "value") || (this.value = val));
|
|
2594
|
+
});
|
|
2595
|
+
if (elem) return hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()], hooks && "get" in hooks && void 0 !== (ret = hooks.get(elem, "value")) ? ret : (ret = elem.value, "string" == typeof ret ? ret.replace(rreturn, "") : null == ret ? "" : ret);
|
|
2596
|
+
}
|
|
2597
|
+
}
|
|
2598
|
+
}), jQuery.extend({
|
|
2599
|
+
valHooks: {
|
|
2600
|
+
option: {
|
|
2601
|
+
get: function (elem) {
|
|
2602
|
+
var val = jQuery.find.attr(elem, "value");
|
|
2603
|
+
return null != val ? val : jQuery.trim(jQuery.text(elem));
|
|
2604
|
+
}
|
|
2605
|
+
},
|
|
2606
|
+
select: {
|
|
2607
|
+
get: function (elem) {
|
|
2608
|
+
for (var value, option, options = elem.options, index = elem.selectedIndex, one = "select-one" === elem.type || 0 > index, values = one ? null : [], max = one ? index + 1 : options.length, i = 0 > index ? max : one ? index : 0; max > i; i++) if (option = options[i], (option.selected || i === index) && (support.optDisabled ? !option.disabled : null === option.getAttribute("disabled")) && (!option.parentNode.disabled || !jQuery.nodeName(option.parentNode, "optgroup"))) {
|
|
2609
|
+
if (value = jQuery(option).val(), one) return value;
|
|
2610
|
+
values.push(value);
|
|
2611
|
+
}
|
|
2612
|
+
return values;
|
|
2613
|
+
},
|
|
2614
|
+
set: function (elem, value) {
|
|
2615
|
+
for (var optionSet, option, options = elem.options, values = jQuery.makeArray(value), i = options.length; i--;) if (option = options[i], jQuery.inArray(jQuery.valHooks.option.get(option), values) >= 0) try {
|
|
2616
|
+
option.selected = optionSet = !0;
|
|
2617
|
+
} catch (_) {
|
|
2618
|
+
option.scrollHeight;
|
|
2619
|
+
} else option.selected = !1;
|
|
2620
|
+
return optionSet || (elem.selectedIndex = -1), options;
|
|
2621
|
+
}
|
|
2622
|
+
}
|
|
2623
|
+
}
|
|
2624
|
+
}), jQuery.each(["radio", "checkbox"], function () {
|
|
2625
|
+
jQuery.valHooks[this] = {
|
|
2626
|
+
set: function (elem, value) {
|
|
2627
|
+
return jQuery.isArray(value) ? elem.checked = jQuery.inArray(jQuery(elem).val(), value) >= 0 : void 0;
|
|
2628
|
+
}
|
|
2629
|
+
}, support.checkOn || (jQuery.valHooks[this].get = function (elem) {
|
|
2630
|
+
return null === elem.getAttribute("value") ? "on" : elem.value;
|
|
2631
|
+
});
|
|
2632
|
+
});
|
|
2633
|
+
var nodeHook,
|
|
2634
|
+
boolHook,
|
|
2635
|
+
attrHandle = jQuery.expr.attrHandle,
|
|
2636
|
+
ruseDefault = /^(?:checked|selected)$/i,
|
|
2637
|
+
getSetAttribute = support.getSetAttribute,
|
|
2638
|
+
getSetInput = support.input;
|
|
2639
|
+
jQuery.fn.extend({
|
|
2640
|
+
attr: function (name, value) {
|
|
2641
|
+
return access(this, jQuery.attr, name, value, arguments.length > 1);
|
|
2642
|
+
},
|
|
2643
|
+
removeAttr: function (name) {
|
|
2644
|
+
return this.each(function () {
|
|
2645
|
+
jQuery.removeAttr(this, name);
|
|
2646
|
+
});
|
|
2647
|
+
}
|
|
2648
|
+
}), jQuery.extend({
|
|
2649
|
+
attr: function (elem, name, value) {
|
|
2650
|
+
var hooks,
|
|
2651
|
+
ret,
|
|
2652
|
+
nType = elem.nodeType;
|
|
2653
|
+
if (elem && 3 !== nType && 8 !== nType && 2 !== nType) return typeof elem.getAttribute === strundefined ? jQuery.prop(elem, name, value) : (1 === nType && jQuery.isXMLDoc(elem) || (name = name.toLowerCase(), hooks = jQuery.attrHooks[name] || (jQuery.expr.match.bool.test(name) ? boolHook : nodeHook)), void 0 === value ? hooks && "get" in hooks && null !== (ret = hooks.get(elem, name)) ? ret : (ret = jQuery.find.attr(elem, name), null == ret ? void 0 : ret) : null !== value ? hooks && "set" in hooks && void 0 !== (ret = hooks.set(elem, value, name)) ? ret : (elem.setAttribute(name, value + ""), value) : void jQuery.removeAttr(elem, name));
|
|
2654
|
+
},
|
|
2655
|
+
removeAttr: function (elem, value) {
|
|
2656
|
+
var name,
|
|
2657
|
+
propName,
|
|
2658
|
+
i = 0,
|
|
2659
|
+
attrNames = value && value.match(rnotwhite);
|
|
2660
|
+
if (attrNames && 1 === elem.nodeType) for (; name = attrNames[i++];) propName = jQuery.propFix[name] || name, jQuery.expr.match.bool.test(name) ? getSetInput && getSetAttribute || !ruseDefault.test(name) ? elem[propName] = !1 : elem[jQuery.camelCase("default-" + name)] = elem[propName] = !1 : jQuery.attr(elem, name, ""), elem.removeAttribute(getSetAttribute ? name : propName);
|
|
2661
|
+
},
|
|
2662
|
+
attrHooks: {
|
|
2663
|
+
type: {
|
|
2664
|
+
set: function (elem, value) {
|
|
2665
|
+
if (!support.radioValue && "radio" === value && jQuery.nodeName(elem, "input")) {
|
|
2666
|
+
var val = elem.value;
|
|
2667
|
+
return elem.setAttribute("type", value), val && (elem.value = val), value;
|
|
2668
|
+
}
|
|
2669
|
+
}
|
|
2670
|
+
}
|
|
2671
|
+
}
|
|
2672
|
+
}), boolHook = {
|
|
2673
|
+
set: function (elem, value, name) {
|
|
2674
|
+
return value === !1 ? jQuery.removeAttr(elem, name) : getSetInput && getSetAttribute || !ruseDefault.test(name) ? elem.setAttribute(!getSetAttribute && jQuery.propFix[name] || name, name) : elem[jQuery.camelCase("default-" + name)] = elem[name] = !0, name;
|
|
2675
|
+
}
|
|
2676
|
+
}, jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g), function (i, name) {
|
|
2677
|
+
var getter = attrHandle[name] || jQuery.find.attr;
|
|
2678
|
+
attrHandle[name] = getSetInput && getSetAttribute || !ruseDefault.test(name) ? function (elem, name, isXML) {
|
|
2679
|
+
var ret, handle;
|
|
2680
|
+
return isXML || (handle = attrHandle[name], attrHandle[name] = ret, ret = null != getter(elem, name, isXML) ? name.toLowerCase() : null, attrHandle[name] = handle), ret;
|
|
2681
|
+
} : function (elem, name, isXML) {
|
|
2682
|
+
return isXML ? void 0 : elem[jQuery.camelCase("default-" + name)] ? name.toLowerCase() : null;
|
|
2683
|
+
};
|
|
2684
|
+
}), getSetInput && getSetAttribute || (jQuery.attrHooks.value = {
|
|
2685
|
+
set: function (elem, value, name) {
|
|
2686
|
+
return jQuery.nodeName(elem, "input") ? void (elem.defaultValue = value) : nodeHook && nodeHook.set(elem, value, name);
|
|
2687
|
+
}
|
|
2688
|
+
}), getSetAttribute || (nodeHook = {
|
|
2689
|
+
set: function (elem, value, name) {
|
|
2690
|
+
var ret = elem.getAttributeNode(name);
|
|
2691
|
+
return ret || elem.setAttributeNode(ret = elem.ownerDocument.createAttribute(name)), ret.value = value += "", "value" === name || value === elem.getAttribute(name) ? value : void 0;
|
|
2692
|
+
}
|
|
2693
|
+
}, attrHandle.id = attrHandle.name = attrHandle.coords = function (elem, name, isXML) {
|
|
2694
|
+
var ret;
|
|
2695
|
+
return isXML ? void 0 : (ret = elem.getAttributeNode(name)) && "" !== ret.value ? ret.value : null;
|
|
2696
|
+
}, jQuery.valHooks.button = {
|
|
2697
|
+
get: function (elem, name) {
|
|
2698
|
+
var ret = elem.getAttributeNode(name);
|
|
2699
|
+
return ret && ret.specified ? ret.value : void 0;
|
|
2700
|
+
},
|
|
2701
|
+
set: nodeHook.set
|
|
2702
|
+
}, jQuery.attrHooks.contenteditable = {
|
|
2703
|
+
set: function (elem, value, name) {
|
|
2704
|
+
nodeHook.set(elem, "" === value ? !1 : value, name);
|
|
2705
|
+
}
|
|
2706
|
+
}, jQuery.each(["width", "height"], function (i, name) {
|
|
2707
|
+
jQuery.attrHooks[name] = {
|
|
2708
|
+
set: function (elem, value) {
|
|
2709
|
+
return "" === value ? (elem.setAttribute(name, "auto"), value) : void 0;
|
|
2710
|
+
}
|
|
2711
|
+
};
|
|
2712
|
+
})), support.style || (jQuery.attrHooks.style = {
|
|
2713
|
+
get: function (elem) {
|
|
2714
|
+
return elem.style.cssText || void 0;
|
|
2715
|
+
},
|
|
2716
|
+
set: function (elem, value) {
|
|
2717
|
+
return elem.style.cssText = value + "";
|
|
2718
|
+
}
|
|
2719
|
+
});
|
|
2720
|
+
var rfocusable = /^(?:input|select|textarea|button|object)$/i,
|
|
2721
|
+
rclickable = /^(?:a|area)$/i;
|
|
2722
|
+
jQuery.fn.extend({
|
|
2723
|
+
prop: function (name, value) {
|
|
2724
|
+
return access(this, jQuery.prop, name, value, arguments.length > 1);
|
|
2725
|
+
},
|
|
2726
|
+
removeProp: function (name) {
|
|
2727
|
+
return name = jQuery.propFix[name] || name, this.each(function () {
|
|
2728
|
+
try {
|
|
2729
|
+
this[name] = void 0, delete this[name];
|
|
2730
|
+
} catch (e) {}
|
|
2731
|
+
});
|
|
2732
|
+
}
|
|
2733
|
+
}), jQuery.extend({
|
|
2734
|
+
propFix: {
|
|
2735
|
+
"for": "htmlFor",
|
|
2736
|
+
"class": "className"
|
|
2737
|
+
},
|
|
2738
|
+
prop: function (elem, name, value) {
|
|
2739
|
+
var ret,
|
|
2740
|
+
hooks,
|
|
2741
|
+
notxml,
|
|
2742
|
+
nType = elem.nodeType;
|
|
2743
|
+
if (elem && 3 !== nType && 8 !== nType && 2 !== nType) return notxml = 1 !== nType || !jQuery.isXMLDoc(elem), notxml && (name = jQuery.propFix[name] || name, hooks = jQuery.propHooks[name]), void 0 !== value ? hooks && "set" in hooks && void 0 !== (ret = hooks.set(elem, value, name)) ? ret : elem[name] = value : hooks && "get" in hooks && null !== (ret = hooks.get(elem, name)) ? ret : elem[name];
|
|
2744
|
+
},
|
|
2745
|
+
propHooks: {
|
|
2746
|
+
tabIndex: {
|
|
2747
|
+
get: function (elem) {
|
|
2748
|
+
var tabindex = jQuery.find.attr(elem, "tabindex");
|
|
2749
|
+
return tabindex ? parseInt(tabindex, 10) : rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href ? 0 : -1;
|
|
2750
|
+
}
|
|
2751
|
+
}
|
|
2752
|
+
}
|
|
2753
|
+
}), support.hrefNormalized || jQuery.each(["href", "src"], function (i, name) {
|
|
2754
|
+
jQuery.propHooks[name] = {
|
|
2755
|
+
get: function (elem) {
|
|
2756
|
+
return elem.getAttribute(name, 4);
|
|
2757
|
+
}
|
|
2758
|
+
};
|
|
2759
|
+
}), support.optSelected || (jQuery.propHooks.selected = {
|
|
2760
|
+
get: function (elem) {
|
|
2761
|
+
var parent = elem.parentNode;
|
|
2762
|
+
return parent && (parent.selectedIndex, parent.parentNode && parent.parentNode.selectedIndex), null;
|
|
2763
|
+
}
|
|
2764
|
+
}), jQuery.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function () {
|
|
2765
|
+
jQuery.propFix[this.toLowerCase()] = this;
|
|
2766
|
+
}), support.enctype || (jQuery.propFix.enctype = "encoding");
|
|
2767
|
+
var rclass = /[\t\r\n\f]/g;
|
|
2768
|
+
jQuery.fn.extend({
|
|
2769
|
+
addClass: function (value) {
|
|
2770
|
+
var classes,
|
|
2771
|
+
elem,
|
|
2772
|
+
cur,
|
|
2773
|
+
clazz,
|
|
2774
|
+
j,
|
|
2775
|
+
finalValue,
|
|
2776
|
+
i = 0,
|
|
2777
|
+
len = this.length,
|
|
2778
|
+
proceed = "string" == typeof value && value;
|
|
2779
|
+
if (jQuery.isFunction(value)) return this.each(function (j) {
|
|
2780
|
+
jQuery(this).addClass(value.call(this, j, this.className));
|
|
2781
|
+
});
|
|
2782
|
+
if (proceed) for (classes = (value || "").match(rnotwhite) || []; len > i; i++) if (elem = this[i], cur = 1 === elem.nodeType && (elem.className ? (" " + elem.className + " ").replace(rclass, " ") : " ")) {
|
|
2783
|
+
for (j = 0; clazz = classes[j++];) cur.indexOf(" " + clazz + " ") < 0 && (cur += clazz + " ");
|
|
2784
|
+
finalValue = jQuery.trim(cur), elem.className !== finalValue && (elem.className = finalValue);
|
|
2785
|
+
}
|
|
2786
|
+
return this;
|
|
2787
|
+
},
|
|
2788
|
+
removeClass: function (value) {
|
|
2789
|
+
var classes,
|
|
2790
|
+
elem,
|
|
2791
|
+
cur,
|
|
2792
|
+
clazz,
|
|
2793
|
+
j,
|
|
2794
|
+
finalValue,
|
|
2795
|
+
i = 0,
|
|
2796
|
+
len = this.length,
|
|
2797
|
+
proceed = 0 === arguments.length || "string" == typeof value && value;
|
|
2798
|
+
if (jQuery.isFunction(value)) return this.each(function (j) {
|
|
2799
|
+
jQuery(this).removeClass(value.call(this, j, this.className));
|
|
2800
|
+
});
|
|
2801
|
+
if (proceed) for (classes = (value || "").match(rnotwhite) || []; len > i; i++) if (elem = this[i], cur = 1 === elem.nodeType && (elem.className ? (" " + elem.className + " ").replace(rclass, " ") : "")) {
|
|
2802
|
+
for (j = 0; clazz = classes[j++];) for (; cur.indexOf(" " + clazz + " ") >= 0;) cur = cur.replace(" " + clazz + " ", " ");
|
|
2803
|
+
finalValue = value ? jQuery.trim(cur) : "", elem.className !== finalValue && (elem.className = finalValue);
|
|
2804
|
+
}
|
|
2805
|
+
return this;
|
|
2806
|
+
},
|
|
2807
|
+
toggleClass: function (value, stateVal) {
|
|
2808
|
+
var type = typeof value;
|
|
2809
|
+
return "boolean" == typeof stateVal && "string" === type ? stateVal ? this.addClass(value) : this.removeClass(value) : jQuery.isFunction(value) ? this.each(function (i) {
|
|
2810
|
+
jQuery(this).toggleClass(value.call(this, i, this.className, stateVal), stateVal);
|
|
2811
|
+
}) : this.each(function () {
|
|
2812
|
+
if ("string" === type) for (var className, i = 0, self = jQuery(this), classNames = value.match(rnotwhite) || []; className = classNames[i++];) self.hasClass(className) ? self.removeClass(className) : self.addClass(className);else (type === strundefined || "boolean" === type) && (this.className && jQuery._data(this, "__className__", this.className), this.className = this.className || value === !1 ? "" : jQuery._data(this, "__className__") || "");
|
|
2813
|
+
});
|
|
2814
|
+
},
|
|
2815
|
+
hasClass: function (selector) {
|
|
2816
|
+
for (var className = " " + selector + " ", i = 0, l = this.length; l > i; i++) if (1 === this[i].nodeType && (" " + this[i].className + " ").replace(rclass, " ").indexOf(className) >= 0) return !0;
|
|
2817
|
+
return !1;
|
|
2818
|
+
}
|
|
2819
|
+
}), jQuery.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "), function (i, name) {
|
|
2820
|
+
jQuery.fn[name] = function (data, fn) {
|
|
2821
|
+
return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name);
|
|
2822
|
+
};
|
|
2823
|
+
}), jQuery.fn.extend({
|
|
2824
|
+
hover: function (fnOver, fnOut) {
|
|
2825
|
+
return this.mouseenter(fnOver).mouseleave(fnOut || fnOver);
|
|
2826
|
+
},
|
|
2827
|
+
bind: function (types, data, fn) {
|
|
2828
|
+
return this.on(types, null, data, fn);
|
|
2829
|
+
},
|
|
2830
|
+
unbind: function (types, fn) {
|
|
2831
|
+
return this.off(types, null, fn);
|
|
2832
|
+
},
|
|
2833
|
+
delegate: function (selector, types, data, fn) {
|
|
2834
|
+
return this.on(types, selector, data, fn);
|
|
2835
|
+
},
|
|
2836
|
+
undelegate: function (selector, types, fn) {
|
|
2837
|
+
return 1 === arguments.length ? this.off(selector, "**") : this.off(types, selector || "**", fn);
|
|
2838
|
+
}
|
|
2839
|
+
});
|
|
2840
|
+
var nonce = jQuery.now(),
|
|
2841
|
+
rquery = /\?/,
|
|
2842
|
+
rvalidtokens = /(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;
|
|
2843
|
+
jQuery.parseJSON = function (data) {
|
|
2844
|
+
if (window.JSON && window.JSON.parse) return window.JSON.parse(data + "");
|
|
2845
|
+
var requireNonComma,
|
|
2846
|
+
depth = null,
|
|
2847
|
+
str = jQuery.trim(data + "");
|
|
2848
|
+
return str && !jQuery.trim(str.replace(rvalidtokens, function (token, comma, open, close) {
|
|
2849
|
+
return requireNonComma && comma && (depth = 0), 0 === depth ? token : (requireNonComma = open || comma, depth += !close - !open, "");
|
|
2850
|
+
})) ? Function("return " + str)() : jQuery.error("Invalid JSON: " + data);
|
|
2851
|
+
}, jQuery.parseXML = function (data) {
|
|
2852
|
+
var xml, tmp;
|
|
2853
|
+
if (!data || "string" != typeof data) return null;
|
|
2854
|
+
try {
|
|
2855
|
+
window.DOMParser ? (tmp = new DOMParser(), xml = tmp.parseFromString(data, "text/xml")) : (xml = new ActiveXObject("Microsoft.XMLDOM"), xml.async = "false", xml.loadXML(data));
|
|
2856
|
+
} catch (e) {
|
|
2857
|
+
xml = void 0;
|
|
2858
|
+
}
|
|
2859
|
+
return xml && xml.documentElement && !xml.getElementsByTagName("parsererror").length || jQuery.error("Invalid XML: " + data), xml;
|
|
2860
|
+
};
|
|
2861
|
+
var ajaxLocParts,
|
|
2862
|
+
ajaxLocation,
|
|
2863
|
+
rhash = /#.*$/,
|
|
2864
|
+
rts = /([?&])_=[^&]*/,
|
|
2865
|
+
rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/gm,
|
|
2866
|
+
rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
|
|
2867
|
+
rnoContent = /^(?:GET|HEAD)$/,
|
|
2868
|
+
rprotocol = /^\/\//,
|
|
2869
|
+
rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
|
|
2870
|
+
prefilters = {},
|
|
2871
|
+
transports = {},
|
|
2872
|
+
allTypes = "*/".concat("*");
|
|
2873
|
+
try {
|
|
2874
|
+
ajaxLocation = location.href;
|
|
2875
|
+
} catch (e) {
|
|
2876
|
+
ajaxLocation = document.createElement("a"), ajaxLocation.href = "", ajaxLocation = ajaxLocation.href;
|
|
2877
|
+
}
|
|
2878
|
+
ajaxLocParts = rurl.exec(ajaxLocation.toLowerCase()) || [], jQuery.extend({
|
|
2879
|
+
active: 0,
|
|
2880
|
+
lastModified: {},
|
|
2881
|
+
etag: {},
|
|
2882
|
+
ajaxSettings: {
|
|
2883
|
+
url: ajaxLocation,
|
|
2884
|
+
type: "GET",
|
|
2885
|
+
isLocal: rlocalProtocol.test(ajaxLocParts[1]),
|
|
2886
|
+
global: !0,
|
|
2887
|
+
processData: !0,
|
|
2888
|
+
async: !0,
|
|
2889
|
+
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
|
|
2890
|
+
accepts: {
|
|
2891
|
+
"*": allTypes,
|
|
2892
|
+
text: "text/plain",
|
|
2893
|
+
html: "text/html",
|
|
2894
|
+
xml: "application/xml, text/xml",
|
|
2895
|
+
json: "application/json, text/javascript"
|
|
2896
|
+
},
|
|
2897
|
+
contents: {
|
|
2898
|
+
xml: /xml/,
|
|
2899
|
+
html: /html/,
|
|
2900
|
+
json: /json/
|
|
2901
|
+
},
|
|
2902
|
+
responseFields: {
|
|
2903
|
+
xml: "responseXML",
|
|
2904
|
+
text: "responseText",
|
|
2905
|
+
json: "responseJSON"
|
|
2906
|
+
},
|
|
2907
|
+
converters: {
|
|
2908
|
+
"* text": String,
|
|
2909
|
+
"text html": !0,
|
|
2910
|
+
"text json": jQuery.parseJSON,
|
|
2911
|
+
"text xml": jQuery.parseXML
|
|
2912
|
+
},
|
|
2913
|
+
flatOptions: {
|
|
2914
|
+
url: !0,
|
|
2915
|
+
context: !0
|
|
2916
|
+
}
|
|
2917
|
+
},
|
|
2918
|
+
ajaxSetup: function (target, settings) {
|
|
2919
|
+
return settings ? ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) : ajaxExtend(jQuery.ajaxSettings, target);
|
|
2920
|
+
},
|
|
2921
|
+
ajaxPrefilter: addToPrefiltersOrTransports(prefilters),
|
|
2922
|
+
ajaxTransport: addToPrefiltersOrTransports(transports),
|
|
2923
|
+
ajax: function (url, options) {
|
|
2924
|
+
function done(status, nativeStatusText, responses, headers) {
|
|
2925
|
+
var isSuccess,
|
|
2926
|
+
success,
|
|
2927
|
+
error,
|
|
2928
|
+
response,
|
|
2929
|
+
modified,
|
|
2930
|
+
statusText = nativeStatusText;
|
|
2931
|
+
2 !== state && (state = 2, timeoutTimer && clearTimeout(timeoutTimer), transport = void 0, responseHeadersString = headers || "", jqXHR.readyState = status > 0 ? 4 : 0, isSuccess = status >= 200 && 300 > status || 304 === status, responses && (response = ajaxHandleResponses(s, jqXHR, responses)), response = ajaxConvert(s, response, jqXHR, isSuccess), isSuccess ? (s.ifModified && (modified = jqXHR.getResponseHeader("Last-Modified"), modified && (jQuery.lastModified[cacheURL] = modified), modified = jqXHR.getResponseHeader("etag"), modified && (jQuery.etag[cacheURL] = modified)), 204 === status || "HEAD" === s.type ? statusText = "nocontent" : 304 === status ? statusText = "notmodified" : (statusText = response.state, success = response.data, error = response.error, isSuccess = !error)) : (error = statusText, (status || !statusText) && (statusText = "error", 0 > status && (status = 0))), jqXHR.status = status, jqXHR.statusText = (nativeStatusText || statusText) + "", isSuccess ? deferred.resolveWith(callbackContext, [success, statusText, jqXHR]) : deferred.rejectWith(callbackContext, [jqXHR, statusText, error]), jqXHR.statusCode(statusCode), statusCode = void 0, fireGlobals && globalEventContext.trigger(isSuccess ? "ajaxSuccess" : "ajaxError", [jqXHR, s, isSuccess ? success : error]), completeDeferred.fireWith(callbackContext, [jqXHR, statusText]), fireGlobals && (globalEventContext.trigger("ajaxComplete", [jqXHR, s]), --jQuery.active || jQuery.event.trigger("ajaxStop")));
|
|
2932
|
+
}
|
|
2933
|
+
"object" == typeof url && (options = url, url = void 0), options = options || {};
|
|
2934
|
+
var parts,
|
|
2935
|
+
i,
|
|
2936
|
+
cacheURL,
|
|
2937
|
+
responseHeadersString,
|
|
2938
|
+
timeoutTimer,
|
|
2939
|
+
fireGlobals,
|
|
2940
|
+
transport,
|
|
2941
|
+
responseHeaders,
|
|
2942
|
+
s = jQuery.ajaxSetup({}, options),
|
|
2943
|
+
callbackContext = s.context || s,
|
|
2944
|
+
globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event,
|
|
2945
|
+
deferred = jQuery.Deferred(),
|
|
2946
|
+
completeDeferred = jQuery.Callbacks("once memory"),
|
|
2947
|
+
statusCode = s.statusCode || {},
|
|
2948
|
+
requestHeaders = {},
|
|
2949
|
+
requestHeadersNames = {},
|
|
2950
|
+
state = 0,
|
|
2951
|
+
strAbort = "canceled",
|
|
2952
|
+
jqXHR = {
|
|
2953
|
+
readyState: 0,
|
|
2954
|
+
getResponseHeader: function (key) {
|
|
2955
|
+
var match;
|
|
2956
|
+
if (2 === state) {
|
|
2957
|
+
if (!responseHeaders) for (responseHeaders = {}; match = rheaders.exec(responseHeadersString);) responseHeaders[match[1].toLowerCase()] = match[2];
|
|
2958
|
+
match = responseHeaders[key.toLowerCase()];
|
|
2959
|
+
}
|
|
2960
|
+
return null == match ? null : match;
|
|
2961
|
+
},
|
|
2962
|
+
getAllResponseHeaders: function () {
|
|
2963
|
+
return 2 === state ? responseHeadersString : null;
|
|
2964
|
+
},
|
|
2965
|
+
setRequestHeader: function (name, value) {
|
|
2966
|
+
var lname = name.toLowerCase();
|
|
2967
|
+
return state || (name = requestHeadersNames[lname] = requestHeadersNames[lname] || name, requestHeaders[name] = value), this;
|
|
2968
|
+
},
|
|
2969
|
+
overrideMimeType: function (type) {
|
|
2970
|
+
return state || (s.mimeType = type), this;
|
|
2971
|
+
},
|
|
2972
|
+
statusCode: function (map) {
|
|
2973
|
+
var code;
|
|
2974
|
+
if (map) if (2 > state) for (code in map) statusCode[code] = [statusCode[code], map[code]];else jqXHR.always(map[jqXHR.status]);
|
|
2975
|
+
return this;
|
|
2976
|
+
},
|
|
2977
|
+
abort: function (statusText) {
|
|
2978
|
+
var finalText = statusText || strAbort;
|
|
2979
|
+
return transport && transport.abort(finalText), done(0, finalText), this;
|
|
2980
|
+
}
|
|
2981
|
+
};
|
|
2982
|
+
if (deferred.promise(jqXHR).complete = completeDeferred.add, jqXHR.success = jqXHR.done, jqXHR.error = jqXHR.fail, s.url = ((url || s.url || ajaxLocation) + "").replace(rhash, "").replace(rprotocol, ajaxLocParts[1] + "//"), s.type = options.method || options.type || s.method || s.type, s.dataTypes = jQuery.trim(s.dataType || "*").toLowerCase().match(rnotwhite) || [""], null == s.crossDomain && (parts = rurl.exec(s.url.toLowerCase()), s.crossDomain = !(!parts || parts[1] === ajaxLocParts[1] && parts[2] === ajaxLocParts[2] && (parts[3] || ("http:" === parts[1] ? "80" : "443")) === (ajaxLocParts[3] || ("http:" === ajaxLocParts[1] ? "80" : "443")))), s.data && s.processData && "string" != typeof s.data && (s.data = jQuery.param(s.data, s.traditional)), inspectPrefiltersOrTransports(prefilters, s, options, jqXHR), 2 === state) return jqXHR;
|
|
2983
|
+
fireGlobals = jQuery.event && s.global, fireGlobals && 0 === jQuery.active++ && jQuery.event.trigger("ajaxStart"), s.type = s.type.toUpperCase(), s.hasContent = !rnoContent.test(s.type), cacheURL = s.url, s.hasContent || (s.data && (cacheURL = s.url += (rquery.test(cacheURL) ? "&" : "?") + s.data, delete s.data), s.cache === !1 && (s.url = rts.test(cacheURL) ? cacheURL.replace(rts, "$1_=" + nonce++) : cacheURL + (rquery.test(cacheURL) ? "&" : "?") + "_=" + nonce++)), s.ifModified && (jQuery.lastModified[cacheURL] && jqXHR.setRequestHeader("If-Modified-Since", jQuery.lastModified[cacheURL]), jQuery.etag[cacheURL] && jqXHR.setRequestHeader("If-None-Match", jQuery.etag[cacheURL])), (s.data && s.hasContent && s.contentType !== !1 || options.contentType) && jqXHR.setRequestHeader("Content-Type", s.contentType), jqXHR.setRequestHeader("Accept", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + ("*" !== s.dataTypes[0] ? ", " + allTypes + "; q=0.01" : "") : s.accepts["*"]);
|
|
2984
|
+
for (i in s.headers) jqXHR.setRequestHeader(i, s.headers[i]);
|
|
2985
|
+
if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === !1 || 2 === state)) return jqXHR.abort();
|
|
2986
|
+
strAbort = "abort";
|
|
2987
|
+
for (i in {
|
|
2988
|
+
success: 1,
|
|
2989
|
+
error: 1,
|
|
2990
|
+
complete: 1
|
|
2991
|
+
}) jqXHR[i](s[i]);
|
|
2992
|
+
if (transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR)) {
|
|
2993
|
+
jqXHR.readyState = 1, fireGlobals && globalEventContext.trigger("ajaxSend", [jqXHR, s]), s.async && s.timeout > 0 && (timeoutTimer = setTimeout(function () {
|
|
2994
|
+
jqXHR.abort("timeout");
|
|
2995
|
+
}, s.timeout));
|
|
2996
|
+
try {
|
|
2997
|
+
state = 1, transport.send(requestHeaders, done);
|
|
2998
|
+
} catch (e) {
|
|
2999
|
+
if (!(2 > state)) throw e;
|
|
3000
|
+
done(-1, e);
|
|
3001
|
+
}
|
|
3002
|
+
} else done(-1, "No Transport");
|
|
3003
|
+
return jqXHR;
|
|
3004
|
+
},
|
|
3005
|
+
getJSON: function (url, data, callback) {
|
|
3006
|
+
return jQuery.get(url, data, callback, "json");
|
|
3007
|
+
},
|
|
3008
|
+
getScript: function (url, callback) {
|
|
3009
|
+
return jQuery.get(url, void 0, callback, "script");
|
|
3010
|
+
}
|
|
3011
|
+
}), jQuery.each(["get", "post"], function (i, method) {
|
|
3012
|
+
jQuery[method] = function (url, data, callback, type) {
|
|
3013
|
+
return jQuery.isFunction(data) && (type = type || callback, callback = data, data = void 0), jQuery.ajax({
|
|
3014
|
+
url: url,
|
|
3015
|
+
type: method,
|
|
3016
|
+
dataType: type,
|
|
3017
|
+
data: data,
|
|
3018
|
+
success: callback
|
|
3019
|
+
});
|
|
3020
|
+
};
|
|
3021
|
+
}), jQuery._evalUrl = function (url) {
|
|
3022
|
+
return jQuery.ajax({
|
|
3023
|
+
url: url,
|
|
3024
|
+
type: "GET",
|
|
3025
|
+
dataType: "script",
|
|
3026
|
+
async: !1,
|
|
3027
|
+
global: !1,
|
|
3028
|
+
"throws": !0
|
|
3029
|
+
});
|
|
3030
|
+
}, jQuery.fn.extend({
|
|
3031
|
+
wrapAll: function (html) {
|
|
3032
|
+
if (jQuery.isFunction(html)) return this.each(function (i) {
|
|
3033
|
+
jQuery(this).wrapAll(html.call(this, i));
|
|
3034
|
+
});
|
|
3035
|
+
if (this[0]) {
|
|
3036
|
+
var wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(!0);
|
|
3037
|
+
this[0].parentNode && wrap.insertBefore(this[0]), wrap.map(function () {
|
|
3038
|
+
for (var elem = this; elem.firstChild && 1 === elem.firstChild.nodeType;) elem = elem.firstChild;
|
|
3039
|
+
return elem;
|
|
3040
|
+
}).append(this);
|
|
3041
|
+
}
|
|
3042
|
+
return this;
|
|
3043
|
+
},
|
|
3044
|
+
wrapInner: function (html) {
|
|
3045
|
+
return jQuery.isFunction(html) ? this.each(function (i) {
|
|
3046
|
+
jQuery(this).wrapInner(html.call(this, i));
|
|
3047
|
+
}) : this.each(function () {
|
|
3048
|
+
var self = jQuery(this),
|
|
3049
|
+
contents = self.contents();
|
|
3050
|
+
contents.length ? contents.wrapAll(html) : self.append(html);
|
|
3051
|
+
});
|
|
3052
|
+
},
|
|
3053
|
+
wrap: function (html) {
|
|
3054
|
+
var isFunction = jQuery.isFunction(html);
|
|
3055
|
+
return this.each(function (i) {
|
|
3056
|
+
jQuery(this).wrapAll(isFunction ? html.call(this, i) : html);
|
|
3057
|
+
});
|
|
3058
|
+
},
|
|
3059
|
+
unwrap: function () {
|
|
3060
|
+
return this.parent().each(function () {
|
|
3061
|
+
jQuery.nodeName(this, "body") || jQuery(this).replaceWith(this.childNodes);
|
|
3062
|
+
}).end();
|
|
3063
|
+
}
|
|
3064
|
+
}), jQuery.expr.filters.hidden = function (elem) {
|
|
3065
|
+
return elem.offsetWidth <= 0 && elem.offsetHeight <= 0 || !support.reliableHiddenOffsets() && "none" === (elem.style && elem.style.display || jQuery.css(elem, "display"));
|
|
3066
|
+
}, jQuery.expr.filters.visible = function (elem) {
|
|
3067
|
+
return !jQuery.expr.filters.hidden(elem);
|
|
3068
|
+
};
|
|
3069
|
+
var r20 = /%20/g,
|
|
3070
|
+
rbracket = /\[\]$/,
|
|
3071
|
+
rCRLF = /\r?\n/g,
|
|
3072
|
+
rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
|
|
3073
|
+
rsubmittable = /^(?:input|select|textarea|keygen)/i;
|
|
3074
|
+
jQuery.param = function (a, traditional) {
|
|
3075
|
+
var prefix,
|
|
3076
|
+
s = [],
|
|
3077
|
+
add = function (key, value) {
|
|
3078
|
+
value = jQuery.isFunction(value) ? value() : null == value ? "" : value, s[s.length] = encodeURIComponent(key) + "=" + encodeURIComponent(value);
|
|
3079
|
+
};
|
|
3080
|
+
if (void 0 === traditional && (traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional), jQuery.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) jQuery.each(a, function () {
|
|
3081
|
+
add(this.name, this.value);
|
|
3082
|
+
});else for (prefix in a) buildParams(prefix, a[prefix], traditional, add);
|
|
3083
|
+
return s.join("&").replace(r20, "+");
|
|
3084
|
+
}, jQuery.fn.extend({
|
|
3085
|
+
serialize: function () {
|
|
3086
|
+
return jQuery.param(this.serializeArray());
|
|
3087
|
+
},
|
|
3088
|
+
serializeArray: function () {
|
|
3089
|
+
return this.map(function () {
|
|
3090
|
+
var elements = jQuery.prop(this, "elements");
|
|
3091
|
+
return elements ? jQuery.makeArray(elements) : this;
|
|
3092
|
+
}).filter(function () {
|
|
3093
|
+
var type = this.type;
|
|
3094
|
+
return this.name && !jQuery(this).is(":disabled") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type));
|
|
3095
|
+
}).map(function (i, elem) {
|
|
3096
|
+
var val = jQuery(this).val();
|
|
3097
|
+
return null == val ? null : jQuery.isArray(val) ? jQuery.map(val, function (val) {
|
|
3098
|
+
return {
|
|
3099
|
+
name: elem.name,
|
|
3100
|
+
value: val.replace(rCRLF, "\r\n")
|
|
3101
|
+
};
|
|
3102
|
+
}) : {
|
|
3103
|
+
name: elem.name,
|
|
3104
|
+
value: val.replace(rCRLF, "\r\n")
|
|
3105
|
+
};
|
|
3106
|
+
}).get();
|
|
3107
|
+
}
|
|
3108
|
+
}), jQuery.ajaxSettings.xhr = void 0 !== window.ActiveXObject ? function () {
|
|
3109
|
+
return !this.isLocal && /^(get|post|head|put|delete|options)$/i.test(this.type) && createStandardXHR() || createActiveXHR();
|
|
3110
|
+
} : createStandardXHR;
|
|
3111
|
+
var xhrId = 0,
|
|
3112
|
+
xhrCallbacks = {},
|
|
3113
|
+
xhrSupported = jQuery.ajaxSettings.xhr();
|
|
3114
|
+
window.attachEvent && window.attachEvent("onunload", function () {
|
|
3115
|
+
for (var key in xhrCallbacks) xhrCallbacks[key](void 0, !0);
|
|
3116
|
+
}), support.cors = !!xhrSupported && "withCredentials" in xhrSupported, xhrSupported = support.ajax = !!xhrSupported, xhrSupported && jQuery.ajaxTransport(function (options) {
|
|
3117
|
+
if (!options.crossDomain || support.cors) {
|
|
3118
|
+
var callback;
|
|
3119
|
+
return {
|
|
3120
|
+
send: function (headers, complete) {
|
|
3121
|
+
var i,
|
|
3122
|
+
xhr = options.xhr(),
|
|
3123
|
+
id = ++xhrId;
|
|
3124
|
+
if (xhr.open(options.type, options.url, options.async, options.username, options.password), options.xhrFields) for (i in options.xhrFields) xhr[i] = options.xhrFields[i];
|
|
3125
|
+
options.mimeType && xhr.overrideMimeType && xhr.overrideMimeType(options.mimeType), options.crossDomain || headers["X-Requested-With"] || (headers["X-Requested-With"] = "XMLHttpRequest");
|
|
3126
|
+
for (i in headers) void 0 !== headers[i] && xhr.setRequestHeader(i, headers[i] + "");
|
|
3127
|
+
xhr.send(options.hasContent && options.data || null), callback = function (_, isAbort) {
|
|
3128
|
+
var status, statusText, responses;
|
|
3129
|
+
if (callback && (isAbort || 4 === xhr.readyState)) if (delete xhrCallbacks[id], callback = void 0, xhr.onreadystatechange = jQuery.noop, isAbort) 4 !== xhr.readyState && xhr.abort();else {
|
|
3130
|
+
responses = {}, status = xhr.status, "string" == typeof xhr.responseText && (responses.text = xhr.responseText);
|
|
3131
|
+
try {
|
|
3132
|
+
statusText = xhr.statusText;
|
|
3133
|
+
} catch (e) {
|
|
3134
|
+
statusText = "";
|
|
3135
|
+
}
|
|
3136
|
+
status || !options.isLocal || options.crossDomain ? 1223 === status && (status = 204) : status = responses.text ? 200 : 404;
|
|
3137
|
+
}
|
|
3138
|
+
responses && complete(status, statusText, responses, xhr.getAllResponseHeaders());
|
|
3139
|
+
}, options.async ? 4 === xhr.readyState ? setTimeout(callback) : xhr.onreadystatechange = xhrCallbacks[id] = callback : callback();
|
|
3140
|
+
},
|
|
3141
|
+
abort: function () {
|
|
3142
|
+
callback && callback(void 0, !0);
|
|
3143
|
+
}
|
|
3144
|
+
};
|
|
3145
|
+
}
|
|
3146
|
+
}), jQuery.ajaxSetup({
|
|
3147
|
+
accepts: {
|
|
3148
|
+
script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
|
|
3149
|
+
},
|
|
3150
|
+
contents: {
|
|
3151
|
+
script: /(?:java|ecma)script/
|
|
3152
|
+
},
|
|
3153
|
+
converters: {
|
|
3154
|
+
"text script": function (text) {
|
|
3155
|
+
return jQuery.globalEval(text), text;
|
|
3156
|
+
}
|
|
3157
|
+
}
|
|
3158
|
+
}), jQuery.ajaxPrefilter("script", function (s) {
|
|
3159
|
+
void 0 === s.cache && (s.cache = !1), s.crossDomain && (s.type = "GET", s.global = !1);
|
|
3160
|
+
}), jQuery.ajaxTransport("script", function (s) {
|
|
3161
|
+
if (s.crossDomain) {
|
|
3162
|
+
var script,
|
|
3163
|
+
head = document.head || jQuery("head")[0] || document.documentElement;
|
|
3164
|
+
return {
|
|
3165
|
+
send: function (_, callback) {
|
|
3166
|
+
script = document.createElement("script"), script.async = !0, s.scriptCharset && (script.charset = s.scriptCharset), script.src = s.url, script.onload = script.onreadystatechange = function (_, isAbort) {
|
|
3167
|
+
(isAbort || !script.readyState || /loaded|complete/.test(script.readyState)) && (script.onload = script.onreadystatechange = null, script.parentNode && script.parentNode.removeChild(script), script = null, isAbort || callback(200, "success"));
|
|
3168
|
+
}, head.insertBefore(script, head.firstChild);
|
|
3169
|
+
},
|
|
3170
|
+
abort: function () {
|
|
3171
|
+
script && script.onload(void 0, !0);
|
|
3172
|
+
}
|
|
3173
|
+
};
|
|
3174
|
+
}
|
|
3175
|
+
});
|
|
3176
|
+
var oldCallbacks = [],
|
|
3177
|
+
rjsonp = /(=)\?(?=&|$)|\?\?/;
|
|
3178
|
+
jQuery.ajaxSetup({
|
|
3179
|
+
jsonp: "callback",
|
|
3180
|
+
jsonpCallback: function () {
|
|
3181
|
+
var callback = oldCallbacks.pop() || jQuery.expando + "_" + nonce++;
|
|
3182
|
+
return this[callback] = !0, callback;
|
|
3183
|
+
}
|
|
3184
|
+
}), jQuery.ajaxPrefilter("json jsonp", function (s, originalSettings, jqXHR) {
|
|
3185
|
+
var callbackName,
|
|
3186
|
+
overwritten,
|
|
3187
|
+
responseContainer,
|
|
3188
|
+
jsonProp = s.jsonp !== !1 && (rjsonp.test(s.url) ? "url" : "string" == typeof s.data && !(s.contentType || "").indexOf("application/x-www-form-urlencoded") && rjsonp.test(s.data) && "data");
|
|
3189
|
+
return jsonProp || "jsonp" === s.dataTypes[0] ? (callbackName = s.jsonpCallback = jQuery.isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback, jsonProp ? s[jsonProp] = s[jsonProp].replace(rjsonp, "$1" + callbackName) : s.jsonp !== !1 && (s.url += (rquery.test(s.url) ? "&" : "?") + s.jsonp + "=" + callbackName), s.converters["script json"] = function () {
|
|
3190
|
+
return responseContainer || jQuery.error(callbackName + " was not called"), responseContainer[0];
|
|
3191
|
+
}, s.dataTypes[0] = "json", overwritten = window[callbackName], window[callbackName] = function () {
|
|
3192
|
+
responseContainer = arguments;
|
|
3193
|
+
}, jqXHR.always(function () {
|
|
3194
|
+
window[callbackName] = overwritten, s[callbackName] && (s.jsonpCallback = originalSettings.jsonpCallback, oldCallbacks.push(callbackName)), responseContainer && jQuery.isFunction(overwritten) && overwritten(responseContainer[0]), responseContainer = overwritten = void 0;
|
|
3195
|
+
}), "script") : void 0;
|
|
3196
|
+
}), jQuery.parseHTML = function (data, context, keepScripts) {
|
|
3197
|
+
if (!data || "string" != typeof data) return null;
|
|
3198
|
+
"boolean" == typeof context && (keepScripts = context, context = !1), context = context || document;
|
|
3199
|
+
var parsed = rsingleTag.exec(data),
|
|
3200
|
+
scripts = !keepScripts && [];
|
|
3201
|
+
return parsed ? [context.createElement(parsed[1])] : (parsed = jQuery.buildFragment([data], context, scripts), scripts && scripts.length && jQuery(scripts).remove(), jQuery.merge([], parsed.childNodes));
|
|
3202
|
+
};
|
|
3203
|
+
var _load = jQuery.fn.load;
|
|
3204
|
+
jQuery.fn.load = function (url, params, callback) {
|
|
3205
|
+
if ("string" != typeof url && _load) return _load.apply(this, arguments);
|
|
3206
|
+
var selector,
|
|
3207
|
+
response,
|
|
3208
|
+
type,
|
|
3209
|
+
self = this,
|
|
3210
|
+
off = url.indexOf(" ");
|
|
3211
|
+
return off >= 0 && (selector = jQuery.trim(url.slice(off, url.length)), url = url.slice(0, off)), jQuery.isFunction(params) ? (callback = params, params = void 0) : params && "object" == typeof params && (type = "POST"), self.length > 0 && jQuery.ajax({
|
|
3212
|
+
url: url,
|
|
3213
|
+
type: type,
|
|
3214
|
+
dataType: "html",
|
|
3215
|
+
data: params
|
|
3216
|
+
}).done(function (responseText) {
|
|
3217
|
+
response = arguments, self.html(selector ? jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector) : responseText);
|
|
3218
|
+
}).complete(callback && function (jqXHR, status) {
|
|
3219
|
+
self.each(callback, response || [jqXHR.responseText, status, jqXHR]);
|
|
3220
|
+
}), this;
|
|
3221
|
+
}, jQuery.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function (i, type) {
|
|
3222
|
+
jQuery.fn[type] = function (fn) {
|
|
3223
|
+
return this.on(type, fn);
|
|
3224
|
+
};
|
|
3225
|
+
}), jQuery.expr.filters.animated = function (elem) {
|
|
3226
|
+
return jQuery.grep(jQuery.timers, function (fn) {
|
|
3227
|
+
return elem === fn.elem;
|
|
3228
|
+
}).length;
|
|
3229
|
+
};
|
|
3230
|
+
var docElem = window.document.documentElement;
|
|
3231
|
+
jQuery.offset = {
|
|
3232
|
+
setOffset: function (elem, options, i) {
|
|
3233
|
+
var curPosition,
|
|
3234
|
+
curLeft,
|
|
3235
|
+
curCSSTop,
|
|
3236
|
+
curTop,
|
|
3237
|
+
curOffset,
|
|
3238
|
+
curCSSLeft,
|
|
3239
|
+
calculatePosition,
|
|
3240
|
+
position = jQuery.css(elem, "position"),
|
|
3241
|
+
curElem = jQuery(elem),
|
|
3242
|
+
props = {};
|
|
3243
|
+
"static" === position && (elem.style.position = "relative"), curOffset = curElem.offset(), curCSSTop = jQuery.css(elem, "top"), curCSSLeft = jQuery.css(elem, "left"), calculatePosition = ("absolute" === position || "fixed" === position) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1, calculatePosition ? (curPosition = curElem.position(), curTop = curPosition.top, curLeft = curPosition.left) : (curTop = parseFloat(curCSSTop) || 0, curLeft = parseFloat(curCSSLeft) || 0), jQuery.isFunction(options) && (options = options.call(elem, i, curOffset)), null != options.top && (props.top = options.top - curOffset.top + curTop), null != options.left && (props.left = options.left - curOffset.left + curLeft), "using" in options ? options.using.call(elem, props) : curElem.css(props);
|
|
3244
|
+
}
|
|
3245
|
+
}, jQuery.fn.extend({
|
|
3246
|
+
offset: function (options) {
|
|
3247
|
+
if (arguments.length) return void 0 === options ? this : this.each(function (i) {
|
|
3248
|
+
jQuery.offset.setOffset(this, options, i);
|
|
3249
|
+
});
|
|
3250
|
+
var docElem,
|
|
3251
|
+
win,
|
|
3252
|
+
box = {
|
|
3253
|
+
top: 0,
|
|
3254
|
+
left: 0
|
|
3255
|
+
},
|
|
3256
|
+
elem = this[0],
|
|
3257
|
+
doc = elem && elem.ownerDocument;
|
|
3258
|
+
if (doc) return docElem = doc.documentElement, jQuery.contains(docElem, elem) ? (typeof elem.getBoundingClientRect !== strundefined && (box = elem.getBoundingClientRect()), win = getWindow(doc), {
|
|
3259
|
+
top: box.top + (win.pageYOffset || docElem.scrollTop) - (docElem.clientTop || 0),
|
|
3260
|
+
left: box.left + (win.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || 0)
|
|
3261
|
+
}) : box;
|
|
3262
|
+
},
|
|
3263
|
+
position: function () {
|
|
3264
|
+
if (this[0]) {
|
|
3265
|
+
var offsetParent,
|
|
3266
|
+
offset,
|
|
3267
|
+
parentOffset = {
|
|
3268
|
+
top: 0,
|
|
3269
|
+
left: 0
|
|
3270
|
+
},
|
|
3271
|
+
elem = this[0];
|
|
3272
|
+
return "fixed" === jQuery.css(elem, "position") ? offset = elem.getBoundingClientRect() : (offsetParent = this.offsetParent(), offset = this.offset(), jQuery.nodeName(offsetParent[0], "html") || (parentOffset = offsetParent.offset()), parentOffset.top += jQuery.css(offsetParent[0], "borderTopWidth", !0), parentOffset.left += jQuery.css(offsetParent[0], "borderLeftWidth", !0)), {
|
|
3273
|
+
top: offset.top - parentOffset.top - jQuery.css(elem, "marginTop", !0),
|
|
3274
|
+
left: offset.left - parentOffset.left - jQuery.css(elem, "marginLeft", !0)
|
|
3275
|
+
};
|
|
3276
|
+
}
|
|
3277
|
+
},
|
|
3278
|
+
offsetParent: function () {
|
|
3279
|
+
return this.map(function () {
|
|
3280
|
+
for (var offsetParent = this.offsetParent || docElem; offsetParent && !jQuery.nodeName(offsetParent, "html") && "static" === jQuery.css(offsetParent, "position");) offsetParent = offsetParent.offsetParent;
|
|
3281
|
+
return offsetParent || docElem;
|
|
3282
|
+
});
|
|
3283
|
+
}
|
|
3284
|
+
}), jQuery.each({
|
|
3285
|
+
scrollLeft: "pageXOffset",
|
|
3286
|
+
scrollTop: "pageYOffset"
|
|
3287
|
+
}, function (method, prop) {
|
|
3288
|
+
var top = /Y/.test(prop);
|
|
3289
|
+
jQuery.fn[method] = function (val) {
|
|
3290
|
+
return access(this, function (elem, method, val) {
|
|
3291
|
+
var win = getWindow(elem);
|
|
3292
|
+
return void 0 === val ? win ? prop in win ? win[prop] : win.document.documentElement[method] : elem[method] : void (win ? win.scrollTo(top ? jQuery(win).scrollLeft() : val, top ? val : jQuery(win).scrollTop()) : elem[method] = val);
|
|
3293
|
+
}, method, val, arguments.length, null);
|
|
3294
|
+
};
|
|
3295
|
+
}), jQuery.each(["top", "left"], function (i, prop) {
|
|
3296
|
+
jQuery.cssHooks[prop] = addGetHookIf(support.pixelPosition, function (elem, computed) {
|
|
3297
|
+
return computed ? (computed = curCSS(elem, prop), rnumnonpx.test(computed) ? jQuery(elem).position()[prop] + "px" : computed) : void 0;
|
|
3298
|
+
});
|
|
3299
|
+
}), jQuery.each({
|
|
3300
|
+
Height: "height",
|
|
3301
|
+
Width: "width"
|
|
3302
|
+
}, function (name, type) {
|
|
3303
|
+
jQuery.each({
|
|
3304
|
+
padding: "inner" + name,
|
|
3305
|
+
content: type,
|
|
3306
|
+
"": "outer" + name
|
|
3307
|
+
}, function (defaultExtra, funcName) {
|
|
3308
|
+
jQuery.fn[funcName] = function (margin, value) {
|
|
3309
|
+
var chainable = arguments.length && (defaultExtra || "boolean" != typeof margin),
|
|
3310
|
+
extra = defaultExtra || (margin === !0 || value === !0 ? "margin" : "border");
|
|
3311
|
+
return access(this, function (elem, type, value) {
|
|
3312
|
+
var doc;
|
|
3313
|
+
return jQuery.isWindow(elem) ? elem.document.documentElement["client" + name] : 9 === elem.nodeType ? (doc = elem.documentElement, Math.max(elem.body["scroll" + name], doc["scroll" + name], elem.body["offset" + name], doc["offset" + name], doc["client" + name])) : void 0 === value ? jQuery.css(elem, type, extra) : jQuery.style(elem, type, value, extra);
|
|
3314
|
+
}, type, chainable ? margin : void 0, chainable, null);
|
|
3315
|
+
};
|
|
3316
|
+
});
|
|
3317
|
+
}), jQuery.fn.size = function () {
|
|
3318
|
+
return this.length;
|
|
3319
|
+
}, jQuery.fn.andSelf = jQuery.fn.addBack, "function" == typeof define && define.amd && define("jquery", [], function () {
|
|
3320
|
+
return jQuery;
|
|
3321
|
+
});
|
|
3322
|
+
var _jQuery = window.jQuery,
|
|
3323
|
+
_$ = window.$;
|
|
3324
|
+
return jQuery.noConflict = function (deep) {
|
|
3325
|
+
return window.$ === jQuery && (window.$ = _$), deep && window.jQuery === jQuery && (window.jQuery = _jQuery), jQuery;
|
|
3326
|
+
}, typeof noGlobal === strundefined && (window.jQuery = window.$ = jQuery), jQuery;
|
|
3327
|
+
});
|
|
3328
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnbG9iYWwiLCJmYWN0b3J5IiwibW9kdWxlIiwiZXhwb3J0cyIsImRvY3VtZW50IiwidyIsIkVycm9yIiwid2luZG93Iiwibm9HbG9iYWwiLCJpc0FycmF5bGlrZSIsIm9iaiIsImxlbmd0aCIsInR5cGUiLCJqUXVlcnkiLCJpc1dpbmRvdyIsIm5vZGVUeXBlIiwid2lubm93IiwiZWxlbWVudHMiLCJxdWFsaWZpZXIiLCJub3QiLCJpc0Z1bmN0aW9uIiwiZ3JlcCIsImVsZW0iLCJpIiwiY2FsbCIsInJpc1NpbXBsZSIsInRlc3QiLCJmaWx0ZXIiLCJpbkFycmF5Iiwic2libGluZyIsImN1ciIsImRpciIsImNyZWF0ZU9wdGlvbnMiLCJvcHRpb25zIiwib2JqZWN0Iiwib3B0aW9uc0NhY2hlIiwiZWFjaCIsIm1hdGNoIiwicm5vdHdoaXRlIiwiXyIsImZsYWciLCJkZXRhY2giLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNvbXBsZXRlZCIsImRldGFjaEV2ZW50IiwiZXZlbnQiLCJyZWFkeVN0YXRlIiwicmVhZHkiLCJkYXRhQXR0ciIsImtleSIsImRhdGEiLCJuYW1lIiwicmVwbGFjZSIsInJtdWx0aURhc2giLCJ0b0xvd2VyQ2FzZSIsImdldEF0dHJpYnV0ZSIsInJicmFjZSIsInBhcnNlSlNPTiIsImUiLCJpc0VtcHR5RGF0YU9iamVjdCIsImlzRW1wdHlPYmplY3QiLCJpbnRlcm5hbERhdGEiLCJwdnQiLCJhY2NlcHREYXRhIiwicmV0IiwidGhpc0NhY2hlIiwiaW50ZXJuYWxLZXkiLCJleHBhbmRvIiwiaXNOb2RlIiwiY2FjaGUiLCJpZCIsImRlbGV0ZWRJZHMiLCJwb3AiLCJndWlkIiwidG9KU09OIiwibm9vcCIsImV4dGVuZCIsImNhbWVsQ2FzZSIsImludGVybmFsUmVtb3ZlRGF0YSIsImlzQXJyYXkiLCJjb25jYXQiLCJtYXAiLCJzcGxpdCIsImNsZWFuRGF0YSIsInN1cHBvcnQiLCJkZWxldGVFeHBhbmRvIiwicmV0dXJuVHJ1ZSIsInJldHVybkZhbHNlIiwic2FmZUFjdGl2ZUVsZW1lbnQiLCJhY3RpdmVFbGVtZW50IiwiZXJyIiwiY3JlYXRlU2FmZUZyYWdtZW50IiwibGlzdCIsIm5vZGVOYW1lcyIsInNhZmVGcmFnIiwiY3JlYXRlRG9jdW1lbnRGcmFnbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJnZXRBbGwiLCJjb250ZXh0IiwidGFnIiwiZWxlbXMiLCJmb3VuZCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwic3RydW5kZWZpbmVkIiwicXVlcnlTZWxlY3RvckFsbCIsImNoaWxkTm9kZXMiLCJub2RlTmFtZSIsInB1c2giLCJtZXJnZSIsImZpeERlZmF1bHRDaGVja2VkIiwicmNoZWNrYWJsZVR5cGUiLCJkZWZhdWx0Q2hlY2tlZCIsImNoZWNrZWQiLCJtYW5pcHVsYXRpb25UYXJnZXQiLCJjb250ZW50IiwiZmlyc3RDaGlsZCIsImFwcGVuZENoaWxkIiwib3duZXJEb2N1bWVudCIsImRpc2FibGVTY3JpcHQiLCJmaW5kIiwiYXR0ciIsInJlc3RvcmVTY3JpcHQiLCJyc2NyaXB0VHlwZU1hc2tlZCIsImV4ZWMiLCJyZW1vdmVBdHRyaWJ1dGUiLCJzZXRHbG9iYWxFdmFsIiwicmVmRWxlbWVudHMiLCJfZGF0YSIsImNsb25lQ29weUV2ZW50Iiwic3JjIiwiZGVzdCIsImhhc0RhdGEiLCJsIiwib2xkRGF0YSIsImN1ckRhdGEiLCJldmVudHMiLCJoYW5kbGUiLCJhZGQiLCJmaXhDbG9uZU5vZGVJc3N1ZXMiLCJub0Nsb25lRXZlbnQiLCJyZW1vdmVFdmVudCIsInRleHQiLCJwYXJlbnROb2RlIiwib3V0ZXJIVE1MIiwiaHRtbDVDbG9uZSIsImlubmVySFRNTCIsInRyaW0iLCJ2YWx1ZSIsImRlZmF1bHRTZWxlY3RlZCIsInNlbGVjdGVkIiwiZGVmYXVsdFZhbHVlIiwiYWN0dWFsRGlzcGxheSIsImRvYyIsInN0eWxlIiwiYXBwZW5kVG8iLCJib2R5IiwiZGlzcGxheSIsImdldERlZmF1bHRDb21wdXRlZFN0eWxlIiwiY3NzIiwiZGVmYXVsdERpc3BsYXkiLCJlbGVtZGlzcGxheSIsImlmcmFtZSIsImRvY3VtZW50RWxlbWVudCIsImNvbnRlbnRXaW5kb3ciLCJjb250ZW50RG9jdW1lbnQiLCJ3cml0ZSIsImNsb3NlIiwiYWRkR2V0SG9va0lmIiwiY29uZGl0aW9uRm4iLCJob29rRm4iLCJnZXQiLCJjb25kaXRpb24iLCJhcHBseSIsImFyZ3VtZW50cyIsInZlbmRvclByb3BOYW1lIiwiY2FwTmFtZSIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic2xpY2UiLCJvcmlnTmFtZSIsImNzc1ByZWZpeGVzIiwic2hvd0hpZGUiLCJzaG93IiwiaGlkZGVuIiwidmFsdWVzIiwiaW5kZXgiLCJpc0hpZGRlbiIsInNldFBvc2l0aXZlTnVtYmVyIiwic3VidHJhY3QiLCJtYXRjaGVzIiwicm51bXNwbGl0IiwiTWF0aCIsIm1heCIsImF1Z21lbnRXaWR0aE9ySGVpZ2h0IiwiZXh0cmEiLCJpc0JvcmRlckJveCIsInN0eWxlcyIsInZhbCIsImNzc0V4cGFuZCIsImdldFdpZHRoT3JIZWlnaHQiLCJ2YWx1ZUlzQm9yZGVyQm94Iiwib2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJnZXRTdHlsZXMiLCJib3hTaXppbmciLCJjdXJDU1MiLCJybnVtbm9ucHgiLCJib3hTaXppbmdSZWxpYWJsZSIsInBhcnNlRmxvYXQiLCJUd2VlbiIsInByb3AiLCJlbmQiLCJlYXNpbmciLCJwcm90b3R5cGUiLCJpbml0IiwiY3JlYXRlRnhOb3ciLCJzZXRUaW1lb3V0IiwiZnhOb3ciLCJub3ciLCJnZW5GeCIsImluY2x1ZGVXaWR0aCIsIndoaWNoIiwiYXR0cnMiLCJoZWlnaHQiLCJvcGFjaXR5Iiwid2lkdGgiLCJjcmVhdGVUd2VlbiIsImFuaW1hdGlvbiIsInR3ZWVuIiwiY29sbGVjdGlvbiIsInR3ZWVuZXJzIiwiZGVmYXVsdFByZWZpbHRlciIsInByb3BzIiwib3B0cyIsInRvZ2dsZSIsImhvb2tzIiwib2xkZmlyZSIsImNoZWNrRGlzcGxheSIsImFuaW0iLCJvcmlnIiwiZGF0YVNob3ciLCJxdWV1ZSIsIl9xdWV1ZUhvb2tzIiwidW5xdWV1ZWQiLCJlbXB0eSIsImZpcmUiLCJhbHdheXMiLCJvdmVyZmxvdyIsIm92ZXJmbG93WCIsIm92ZXJmbG93WSIsImlubGluZUJsb2NrTmVlZHNMYXlvdXQiLCJ6b29tIiwic2hyaW5rV3JhcEJsb2NrcyIsInJmeHR5cGVzIiwiZG9uZSIsImhpZGUiLCJfcmVtb3ZlRGF0YSIsInN0YXJ0IiwicHJvcEZpbHRlciIsInNwZWNpYWxFYXNpbmciLCJjc3NIb29rcyIsImV4cGFuZCIsIkFuaW1hdGlvbiIsInByb3BlcnRpZXMiLCJyZXN1bHQiLCJzdG9wcGVkIiwiYW5pbWF0aW9uUHJlZmlsdGVycyIsImRlZmVycmVkIiwiRGVmZXJyZWQiLCJ0aWNrIiwiY3VycmVudFRpbWUiLCJyZW1haW5pbmciLCJzdGFydFRpbWUiLCJkdXJhdGlvbiIsInRlbXAiLCJwZXJjZW50IiwidHdlZW5zIiwicnVuIiwibm90aWZ5V2l0aCIsInJlc29sdmVXaXRoIiwicHJvbWlzZSIsIm9yaWdpbmFsUHJvcGVydGllcyIsIm9yaWdpbmFsT3B0aW9ucyIsInN0b3AiLCJnb3RvRW5kIiwicmVqZWN0V2l0aCIsImZ4IiwidGltZXIiLCJwcm9ncmVzcyIsImNvbXBsZXRlIiwiZmFpbCIsImFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyIsInN0cnVjdHVyZSIsImRhdGFUeXBlRXhwcmVzc2lvbiIsImZ1bmMiLCJkYXRhVHlwZSIsImRhdGFUeXBlcyIsInVuc2hpZnQiLCJpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyIsImpxWEhSIiwiaW5zcGVjdCIsImluc3BlY3RlZCIsInByZWZpbHRlck9yRmFjdG9yeSIsImRhdGFUeXBlT3JUcmFuc3BvcnQiLCJzZWVraW5nVHJhbnNwb3J0IiwidHJhbnNwb3J0cyIsImFqYXhFeHRlbmQiLCJ0YXJnZXQiLCJkZWVwIiwiZmxhdE9wdGlvbnMiLCJhamF4U2V0dGluZ3MiLCJhamF4SGFuZGxlUmVzcG9uc2VzIiwicyIsInJlc3BvbnNlcyIsImZpcnN0RGF0YVR5cGUiLCJjdCIsImZpbmFsRGF0YVR5cGUiLCJjb250ZW50cyIsInNoaWZ0IiwibWltZVR5cGUiLCJnZXRSZXNwb25zZUhlYWRlciIsImNvbnZlcnRlcnMiLCJhamF4Q29udmVydCIsInJlc3BvbnNlIiwiaXNTdWNjZXNzIiwiY29udjIiLCJjdXJyZW50IiwiY29udiIsInRtcCIsInByZXYiLCJyZXNwb25zZUZpZWxkcyIsImRhdGFGaWx0ZXIiLCJzdGF0ZSIsImVycm9yIiwiYnVpbGRQYXJhbXMiLCJwcmVmaXgiLCJ0cmFkaXRpb25hbCIsInYiLCJyYnJhY2tldCIsImNyZWF0ZVN0YW5kYXJkWEhSIiwiWE1MSHR0cFJlcXVlc3QiLCJjcmVhdGVBY3RpdmVYSFIiLCJBY3RpdmVYT2JqZWN0IiwiZ2V0V2luZG93IiwiZGVmYXVsdFZpZXciLCJwYXJlbnRXaW5kb3ciLCJpbmRleE9mIiwiY2xhc3MydHlwZSIsInRvU3RyaW5nIiwiaGFzT3duIiwiaGFzT3duUHJvcGVydHkiLCJ2ZXJzaW9uIiwic2VsZWN0b3IiLCJmbiIsInJ0cmltIiwicm1zUHJlZml4IiwicmRhc2hBbHBoYSIsImZjYW1lbENhc2UiLCJhbGwiLCJsZXR0ZXIiLCJqcXVlcnkiLCJjb25zdHJ1Y3RvciIsInRvQXJyYXkiLCJudW0iLCJwdXNoU3RhY2siLCJwcmV2T2JqZWN0IiwiY2FsbGJhY2siLCJhcmdzIiwiZmlyc3QiLCJlcSIsImxhc3QiLCJsZW4iLCJqIiwic29ydCIsInNwbGljZSIsImNvcHlJc0FycmF5IiwiY29weSIsImNsb25lIiwiaXNQbGFpbk9iamVjdCIsInJhbmRvbSIsImlzUmVhZHkiLCJtc2ciLCJBcnJheSIsImlzTnVtZXJpYyIsIm93bkxhc3QiLCJnbG9iYWxFdmFsIiwiZXhlY1NjcmlwdCIsImV2YWwiLCJzdHJpbmciLCJtYWtlQXJyYXkiLCJhcnIiLCJyZXN1bHRzIiwiT2JqZWN0Iiwic2Vjb25kIiwiaW52ZXJ0IiwiY2FsbGJhY2tJbnZlcnNlIiwiY2FsbGJhY2tFeHBlY3QiLCJhcmciLCJwcm94eSIsIkRhdGUiLCJTaXp6bGUiLCJzZWVkIiwibSIsImdyb3VwcyIsIm9sZCIsIm5pZCIsIm5ld0NvbnRleHQiLCJuZXdTZWxlY3RvciIsInByZWZlcnJlZERvYyIsInNldERvY3VtZW50IiwiZG9jdW1lbnRJc0hUTUwiLCJycXVpY2tFeHByIiwiZ2V0RWxlbWVudEJ5SWQiLCJjb250YWlucyIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJxc2EiLCJyYnVnZ3lRU0EiLCJ0b2tlbml6ZSIsInJlc2NhcGUiLCJzZXRBdHRyaWJ1dGUiLCJ0b1NlbGVjdG9yIiwicnNpYmxpbmciLCJ0ZXN0Q29udGV4dCIsImpvaW4iLCJxc2FFcnJvciIsInNlbGVjdCIsImNyZWF0ZUNhY2hlIiwia2V5cyIsIkV4cHIiLCJjYWNoZUxlbmd0aCIsIm1hcmtGdW5jdGlvbiIsImFzc2VydCIsImRpdiIsInJlbW92ZUNoaWxkIiwiYWRkSGFuZGxlIiwiaGFuZGxlciIsImF0dHJIYW5kbGUiLCJzaWJsaW5nQ2hlY2siLCJhIiwiYiIsImRpZmYiLCJzb3VyY2VJbmRleCIsIk1BWF9ORUdBVElWRSIsIm5leHRTaWJsaW5nIiwiY3JlYXRlSW5wdXRQc2V1ZG8iLCJjcmVhdGVCdXR0b25Qc2V1ZG8iLCJjcmVhdGVQb3NpdGlvbmFsUHNldWRvIiwiYXJndW1lbnQiLCJtYXRjaEluZGV4ZXMiLCJzZXRGaWx0ZXJzIiwidG9rZW5zIiwiYWRkQ29tYmluYXRvciIsIm1hdGNoZXIiLCJjb21iaW5hdG9yIiwiYmFzZSIsImNoZWNrTm9uRWxlbWVudHMiLCJkb25lTmFtZSIsInhtbCIsIm9sZENhY2hlIiwib3V0ZXJDYWNoZSIsIm5ld0NhY2hlIiwiZGlycnVucyIsImVsZW1lbnRNYXRjaGVyIiwibWF0Y2hlcnMiLCJtdWx0aXBsZUNvbnRleHRzIiwiY29udGV4dHMiLCJjb25kZW5zZSIsInVubWF0Y2hlZCIsIm5ld1VubWF0Y2hlZCIsIm1hcHBlZCIsInNldE1hdGNoZXIiLCJwcmVGaWx0ZXIiLCJwb3N0RmlsdGVyIiwicG9zdEZpbmRlciIsInBvc3RTZWxlY3RvciIsInByZU1hcCIsInBvc3RNYXAiLCJwcmVleGlzdGluZyIsIm1hdGNoZXJJbiIsIm1hdGNoZXJPdXQiLCJtYXRjaGVyRnJvbVRva2VucyIsImNoZWNrQ29udGV4dCIsImxlYWRpbmdSZWxhdGl2ZSIsInJlbGF0aXZlIiwiaW1wbGljaXRSZWxhdGl2ZSIsIm1hdGNoQ29udGV4dCIsIm1hdGNoQW55Q29udGV4dCIsIm91dGVybW9zdENvbnRleHQiLCJtYXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMiLCJlbGVtZW50TWF0Y2hlcnMiLCJzZXRNYXRjaGVycyIsImJ5U2V0IiwiYnlFbGVtZW50Iiwic3VwZXJNYXRjaGVyIiwib3V0ZXJtb3N0IiwibWF0Y2hlZENvdW50Iiwic2V0TWF0Y2hlZCIsImNvbnRleHRCYWNrdXAiLCJUQUciLCJkaXJydW5zVW5pcXVlIiwidW5pcXVlU29ydCIsImdldFRleHQiLCJpc1hNTCIsImNvbXBpbGUiLCJzb3J0SW5wdXQiLCJoYXNEdXBsaWNhdGUiLCJkb2NFbGVtIiwicmJ1Z2d5TWF0Y2hlcyIsImNsYXNzQ2FjaGUiLCJ0b2tlbkNhY2hlIiwiY29tcGlsZXJDYWNoZSIsInNvcnRPcmRlciIsInB1c2hfbmF0aXZlIiwiYm9vbGVhbnMiLCJ3aGl0ZXNwYWNlIiwiY2hhcmFjdGVyRW5jb2RpbmciLCJpZGVudGlmaWVyIiwiYXR0cmlidXRlcyIsInBzZXVkb3MiLCJyd2hpdGVzcGFjZSIsIlJlZ0V4cCIsInJjb21tYSIsInJjb21iaW5hdG9ycyIsInJhdHRyaWJ1dGVRdW90ZXMiLCJycHNldWRvIiwicmlkZW50aWZpZXIiLCJtYXRjaEV4cHIiLCJJRCIsIkNMQVNTIiwiQVRUUiIsIlBTRVVETyIsIkNISUxEIiwiYm9vbCIsIm5lZWRzQ29udGV4dCIsInJpbnB1dHMiLCJyaGVhZGVyIiwicm5hdGl2ZSIsInJ1bmVzY2FwZSIsImZ1bmVzY2FwZSIsImVzY2FwZWQiLCJlc2NhcGVkV2hpdGVzcGFjZSIsImhpZ2giLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJ1bmxvYWRIYW5kbGVyIiwiZWxzIiwibm9kZSIsImhhc0NvbXBhcmUiLCJwYXJlbnQiLCJ0b3AiLCJhdHRhY2hFdmVudCIsImNsYXNzTmFtZSIsImNyZWF0ZUNvbW1lbnQiLCJnZXRCeUlkIiwiZ2V0RWxlbWVudHNCeU5hbWUiLCJhdHRySWQiLCJnZXRBdHRyaWJ1dGVOb2RlIiwiaW5wdXQiLCJtYXRjaGVzU2VsZWN0b3IiLCJ3ZWJraXRNYXRjaGVzU2VsZWN0b3IiLCJtb3pNYXRjaGVzU2VsZWN0b3IiLCJvTWF0Y2hlc1NlbGVjdG9yIiwibXNNYXRjaGVzU2VsZWN0b3IiLCJkaXNjb25uZWN0ZWRNYXRjaCIsImNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIiwiYWRvd24iLCJidXAiLCJjb21wYXJlIiwic29ydERldGFjaGVkIiwiYXVwIiwiYXAiLCJicCIsImV4cHIiLCJzcGVjaWZpZWQiLCJkdXBsaWNhdGVzIiwiZGV0ZWN0RHVwbGljYXRlcyIsInNvcnRTdGFibGUiLCJ0ZXh0Q29udGVudCIsIm5vZGVWYWx1ZSIsInNlbGVjdG9ycyIsImNyZWF0ZVBzZXVkbyIsImV4Y2VzcyIsInVucXVvdGVkIiwibm9kZU5hbWVTZWxlY3RvciIsInBhdHRlcm4iLCJvcGVyYXRvciIsImNoZWNrIiwid2hhdCIsInNpbXBsZSIsImZvcndhcmQiLCJvZlR5cGUiLCJub2RlSW5kZXgiLCJ1c2VDYWNoZSIsImxhc3RDaGlsZCIsInBzZXVkbyIsImlkeCIsIm1hdGNoZWQiLCJoYXMiLCJpbm5lclRleHQiLCJsYW5nIiwiZWxlbUxhbmciLCJoYXNoIiwibG9jYXRpb24iLCJyb290IiwiZm9jdXMiLCJoYXNGb2N1cyIsImhyZWYiLCJ0YWJJbmRleCIsImVuYWJsZWQiLCJkaXNhYmxlZCIsInNlbGVjdGVkSW5kZXgiLCJoZWFkZXIiLCJidXR0b24iLCJldmVuIiwib2RkIiwibHQiLCJndCIsIm50aCIsInJhZGlvIiwiY2hlY2tib3giLCJmaWxlIiwicGFzc3dvcmQiLCJpbWFnZSIsInN1Ym1pdCIsInJlc2V0IiwiZmlsdGVycyIsInBhcnNlT25seSIsInNvRmFyIiwicHJlRmlsdGVycyIsImNhY2hlZCIsInRva2VuIiwiY29tcGlsZWQiLCJkaXYxIiwidW5pcXVlIiwiaXNYTUxEb2MiLCJybmVlZHNDb250ZXh0IiwicnNpbmdsZVRhZyIsInNlbGYiLCJpcyIsInJvb3RqUXVlcnkiLCJwYXJzZUhUTUwiLCJycGFyZW50c3ByZXYiLCJndWFyYW50ZWVkVW5pcXVlIiwiY2hpbGRyZW4iLCJuZXh0IiwidW50aWwiLCJuIiwiciIsInRhcmdldHMiLCJjbG9zZXN0IiwicG9zIiwicHJldkFsbCIsImFkZEJhY2siLCJwYXJlbnRzIiwicGFyZW50c1VudGlsIiwibmV4dEFsbCIsIm5leHRVbnRpbCIsInByZXZVbnRpbCIsInNpYmxpbmdzIiwicmV2ZXJzZSIsIkNhbGxiYWNrcyIsImZpcmluZyIsIm1lbW9yeSIsImZpcmVkIiwiZmlyaW5nTGVuZ3RoIiwiZmlyaW5nSW5kZXgiLCJmaXJpbmdTdGFydCIsInN0YWNrIiwib25jZSIsInN0b3BPbkZhbHNlIiwiZGlzYWJsZSIsInJlbW92ZSIsImxvY2siLCJsb2NrZWQiLCJmaXJlV2l0aCIsInR1cGxlcyIsInRoZW4iLCJmbnMiLCJuZXdEZWZlciIsInR1cGxlIiwicmV0dXJuZWQiLCJyZXNvbHZlIiwicmVqZWN0Iiwibm90aWZ5IiwicGlwZSIsInN0YXRlU3RyaW5nIiwid2hlbiIsInN1Ym9yZGluYXRlIiwicHJvZ3Jlc3NWYWx1ZXMiLCJwcm9ncmVzc0NvbnRleHRzIiwicmVzb2x2ZUNvbnRleHRzIiwicmVzb2x2ZVZhbHVlcyIsInVwZGF0ZUZ1bmMiLCJyZWFkeUxpc3QiLCJyZWFkeVdhaXQiLCJob2xkUmVhZHkiLCJob2xkIiwid2FpdCIsInRyaWdnZXJIYW5kbGVyIiwib2ZmIiwiZnJhbWVFbGVtZW50IiwiZG9TY3JvbGwiLCJkb1Njcm9sbENoZWNrIiwiY29udGFpbmVyIiwiY3NzVGV4dCIsIm5vRGF0YSIsInJlbW92ZURhdGEiLCJkZXF1ZXVlIiwic3RhcnRMZW5ndGgiLCJzZXR0ZXIiLCJjbGVhclF1ZXVlIiwiY291bnQiLCJkZWZlciIsInBudW0iLCJzb3VyY2UiLCJlbCIsImFjY2VzcyIsImNoYWluYWJsZSIsImVtcHR5R2V0IiwicmF3IiwiYnVsayIsImZyYWdtZW50IiwibGVhZGluZ1doaXRlc3BhY2UiLCJ0Ym9keSIsImh0bWxTZXJpYWxpemUiLCJjbG9uZU5vZGUiLCJhcHBlbmRDaGVja2VkIiwibm9DbG9uZUNoZWNrZWQiLCJjaGVja0Nsb25lIiwiY2xpY2siLCJldmVudE5hbWUiLCJjaGFuZ2UiLCJmb2N1c2luIiwicmZvcm1FbGVtcyIsInJrZXlFdmVudCIsInJtb3VzZUV2ZW50IiwicmZvY3VzTW9ycGgiLCJydHlwZW5hbWVzcGFjZSIsInR5cGVzIiwidCIsImhhbmRsZU9iakluIiwic3BlY2lhbCIsImV2ZW50SGFuZGxlIiwiaGFuZGxlT2JqIiwiaGFuZGxlcnMiLCJuYW1lc3BhY2VzIiwib3JpZ1R5cGUiLCJlbGVtRGF0YSIsInRyaWdnZXJlZCIsImRpc3BhdGNoIiwiZGVsZWdhdGVUeXBlIiwiYmluZFR5cGUiLCJuYW1lc3BhY2UiLCJkZWxlZ2F0ZUNvdW50Iiwic2V0dXAiLCJtYXBwZWRUeXBlcyIsIm9yaWdDb3VudCIsInRlYXJkb3duIiwidHJpZ2dlciIsIm9ubHlIYW5kbGVycyIsIm9udHlwZSIsImJ1YmJsZVR5cGUiLCJldmVudFBhdGgiLCJFdmVudCIsImlzVHJpZ2dlciIsIm5hbWVzcGFjZV9yZSIsIm5vQnViYmxlIiwiaXNQcm9wYWdhdGlvblN0b3BwZWQiLCJwcmV2ZW50RGVmYXVsdCIsImlzRGVmYXVsdFByZXZlbnRlZCIsIl9kZWZhdWx0IiwiZml4IiwiaGFuZGxlclF1ZXVlIiwiZGVsZWdhdGVUYXJnZXQiLCJwcmVEaXNwYXRjaCIsImN1cnJlbnRUYXJnZXQiLCJpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCIsInN0b3BQcm9wYWdhdGlvbiIsInBvc3REaXNwYXRjaCIsInNlbCIsIm9yaWdpbmFsRXZlbnQiLCJmaXhIb29rIiwiZml4SG9va3MiLCJtb3VzZUhvb2tzIiwia2V5SG9va3MiLCJzcmNFbGVtZW50IiwibWV0YUtleSIsIm9yaWdpbmFsIiwiY2hhckNvZGUiLCJrZXlDb2RlIiwiZXZlbnREb2MiLCJmcm9tRWxlbWVudCIsInBhZ2VYIiwiY2xpZW50WCIsInNjcm9sbExlZnQiLCJjbGllbnRMZWZ0IiwicGFnZVkiLCJjbGllbnRZIiwic2Nyb2xsVG9wIiwiY2xpZW50VG9wIiwicmVsYXRlZFRhcmdldCIsInRvRWxlbWVudCIsImxvYWQiLCJibHVyIiwiYmVmb3JldW5sb2FkIiwicmV0dXJuVmFsdWUiLCJzaW11bGF0ZSIsImJ1YmJsZSIsImlzU2ltdWxhdGVkIiwiZGVmYXVsdFByZXZlbnRlZCIsInRpbWVTdGFtcCIsImNhbmNlbEJ1YmJsZSIsInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiIsIm1vdXNlZW50ZXIiLCJtb3VzZWxlYXZlIiwicG9pbnRlcmVudGVyIiwicG9pbnRlcmxlYXZlIiwicmVsYXRlZCIsInN1Ym1pdEJ1YmJsZXMiLCJmb3JtIiwiX3N1Ym1pdF9idWJibGUiLCJjaGFuZ2VCdWJibGVzIiwicHJvcGVydHlOYW1lIiwiX2p1c3RfY2hhbmdlZCIsImZvY3VzaW5CdWJibGVzIiwiYXR0YWNoZXMiLCJvbiIsIm9uZSIsIm9yaWdGbiIsInJpbmxpbmVqUXVlcnkiLCJybm9zaGltY2FjaGUiLCJybGVhZGluZ1doaXRlc3BhY2UiLCJyeGh0bWxUYWciLCJydGFnTmFtZSIsInJ0Ym9keSIsInJodG1sIiwicm5vSW5uZXJodG1sIiwicmNoZWNrZWQiLCJyc2NyaXB0VHlwZSIsInJjbGVhblNjcmlwdCIsIndyYXBNYXAiLCJvcHRpb24iLCJsZWdlbmQiLCJhcmVhIiwicGFyYW0iLCJ0aGVhZCIsInRyIiwiY29sIiwidGQiLCJzYWZlRnJhZ21lbnQiLCJmcmFnbWVudERpdiIsIm9wdGdyb3VwIiwidGZvb3QiLCJjb2xncm91cCIsImNhcHRpb24iLCJ0aCIsImRhdGFBbmRFdmVudHMiLCJkZWVwRGF0YUFuZEV2ZW50cyIsImRlc3RFbGVtZW50cyIsInNyY0VsZW1lbnRzIiwiaW5QYWdlIiwiYnVpbGRGcmFnbWVudCIsInNjcmlwdHMiLCJzZWxlY3Rpb24iLCJ3cmFwIiwic2FmZSIsIm5vZGVzIiwiY3JlYXRlVGV4dE5vZGUiLCJhcHBlbmQiLCJkb21NYW5pcCIsInByZXBlbmQiLCJpbnNlcnRCZWZvcmUiLCJiZWZvcmUiLCJhZnRlciIsImtlZXBEYXRhIiwiaHRtbCIsInJlcGxhY2VXaXRoIiwicmVwbGFjZUNoaWxkIiwiaGFzU2NyaXB0cyIsInNldCIsImlOb0Nsb25lIiwiX2V2YWxVcmwiLCJwcmVwZW5kVG8iLCJpbnNlcnRBZnRlciIsInJlcGxhY2VBbGwiLCJpbnNlcnQiLCJzaHJpbmtXcmFwQmxvY2tzVmFsIiwicm1hcmdpbiIsInJwb3NpdGlvbiIsImdldENvbXB1dGVkU3R5bGUiLCJvcGVuZXIiLCJjb21wdXRlZCIsIm1pbldpZHRoIiwibWF4V2lkdGgiLCJnZXRQcm9wZXJ0eVZhbHVlIiwiY3VycmVudFN0eWxlIiwibGVmdCIsInJzIiwicnNMZWZ0IiwicnVudGltZVN0eWxlIiwicGl4ZWxMZWZ0IiwiY29tcHV0ZVN0eWxlVGVzdHMiLCJwaXhlbFBvc2l0aW9uVmFsIiwiYm94U2l6aW5nUmVsaWFibGVWYWwiLCJyZWxpYWJsZU1hcmdpblJpZ2h0VmFsIiwibWFyZ2luUmlnaHQiLCJyZWxpYWJsZUhpZGRlbk9mZnNldHNWYWwiLCJjc3NGbG9hdCIsImJhY2tncm91bmRDbGlwIiwiY2xlYXJDbG9uZVN0eWxlIiwiTW96Qm94U2l6aW5nIiwiV2Via2l0Qm94U2l6aW5nIiwicmVsaWFibGVIaWRkZW5PZmZzZXRzIiwicGl4ZWxQb3NpdGlvbiIsInJlbGlhYmxlTWFyZ2luUmlnaHQiLCJzd2FwIiwicmFscGhhIiwicm9wYWNpdHkiLCJyZGlzcGxheXN3YXAiLCJycmVsTnVtIiwiY3NzU2hvdyIsInBvc2l0aW9uIiwidmlzaWJpbGl0eSIsImNzc05vcm1hbFRyYW5zZm9ybSIsImxldHRlclNwYWNpbmciLCJmb250V2VpZ2h0IiwiY3NzTnVtYmVyIiwiY29sdW1uQ291bnQiLCJmaWxsT3BhY2l0eSIsImZsZXhHcm93IiwiZmxleFNocmluayIsImxpbmVIZWlnaHQiLCJvcmRlciIsIm9ycGhhbnMiLCJ3aWRvd3MiLCJ6SW5kZXgiLCJjc3NQcm9wcyIsIiQxIiwibWFyZ2luIiwicGFkZGluZyIsImJvcmRlciIsInN1ZmZpeCIsImV4cGFuZGVkIiwicGFydHMiLCJ1bml0IiwicHJvcEhvb2tzIiwiZWFzZWQiLCJzdGVwIiwibGluZWFyIiwicCIsInN3aW5nIiwiY29zIiwiUEkiLCJ0aW1lcklkIiwicmZ4bnVtIiwicnJ1biIsInNjYWxlIiwibWF4SXRlcmF0aW9ucyIsInR3ZWVuZXIiLCJwcmVmaWx0ZXIiLCJzcGVlZCIsIm9wdCIsInNwZWVkcyIsImZhZGVUbyIsInRvIiwiYW5pbWF0ZSIsIm9wdGFsbCIsImRvQW5pbWF0aW9uIiwiZmluaXNoIiwic3RvcFF1ZXVlIiwidGltZXJzIiwiY3NzRm4iLCJzbGlkZURvd24iLCJzbGlkZVVwIiwic2xpZGVUb2dnbGUiLCJmYWRlSW4iLCJmYWRlT3V0IiwiZmFkZVRvZ2dsZSIsImludGVydmFsIiwic2V0SW50ZXJ2YWwiLCJjbGVhckludGVydmFsIiwic2xvdyIsImZhc3QiLCJkZWxheSIsInRpbWUiLCJ0aW1lb3V0IiwiY2xlYXJUaW1lb3V0IiwiZ2V0U2V0QXR0cmlidXRlIiwiaHJlZk5vcm1hbGl6ZWQiLCJjaGVja09uIiwib3B0U2VsZWN0ZWQiLCJlbmN0eXBlIiwib3B0RGlzYWJsZWQiLCJyYWRpb1ZhbHVlIiwicnJldHVybiIsInZhbEhvb2tzIiwib3B0aW9uU2V0Iiwic2Nyb2xsSGVpZ2h0Iiwibm9kZUhvb2siLCJib29sSG9vayIsInJ1c2VEZWZhdWx0IiwiZ2V0U2V0SW5wdXQiLCJyZW1vdmVBdHRyIiwiblR5cGUiLCJhdHRySG9va3MiLCJwcm9wTmFtZSIsImF0dHJOYW1lcyIsInByb3BGaXgiLCJnZXR0ZXIiLCJzZXRBdHRyaWJ1dGVOb2RlIiwiY3JlYXRlQXR0cmlidXRlIiwiY29vcmRzIiwiY29udGVudGVkaXRhYmxlIiwicmZvY3VzYWJsZSIsInJjbGlja2FibGUiLCJyZW1vdmVQcm9wIiwibm90eG1sIiwidGFiaW5kZXgiLCJwYXJzZUludCIsInJjbGFzcyIsImFkZENsYXNzIiwiY2xhc3NlcyIsImNsYXp6IiwiZmluYWxWYWx1ZSIsInByb2NlZWQiLCJyZW1vdmVDbGFzcyIsInRvZ2dsZUNsYXNzIiwic3RhdGVWYWwiLCJjbGFzc05hbWVzIiwiaGFzQ2xhc3MiLCJob3ZlciIsImZuT3ZlciIsImZuT3V0IiwiYmluZCIsInVuYmluZCIsImRlbGVnYXRlIiwidW5kZWxlZ2F0ZSIsIm5vbmNlIiwicnF1ZXJ5IiwicnZhbGlkdG9rZW5zIiwiSlNPTiIsInBhcnNlIiwicmVxdWlyZU5vbkNvbW1hIiwiZGVwdGgiLCJzdHIiLCJjb21tYSIsIm9wZW4iLCJGdW5jdGlvbiIsInBhcnNlWE1MIiwiRE9NUGFyc2VyIiwicGFyc2VGcm9tU3RyaW5nIiwiYXN5bmMiLCJsb2FkWE1MIiwiYWpheExvY1BhcnRzIiwiYWpheExvY2F0aW9uIiwicmhhc2giLCJydHMiLCJyaGVhZGVycyIsInJsb2NhbFByb3RvY29sIiwicm5vQ29udGVudCIsInJwcm90b2NvbCIsInJ1cmwiLCJwcmVmaWx0ZXJzIiwiYWxsVHlwZXMiLCJhY3RpdmUiLCJsYXN0TW9kaWZpZWQiLCJldGFnIiwidXJsIiwiaXNMb2NhbCIsInByb2Nlc3NEYXRhIiwiY29udGVudFR5cGUiLCJhY2NlcHRzIiwianNvbiIsImFqYXhTZXR1cCIsInNldHRpbmdzIiwiYWpheFByZWZpbHRlciIsImFqYXhUcmFuc3BvcnQiLCJhamF4Iiwic3RhdHVzIiwibmF0aXZlU3RhdHVzVGV4dCIsImhlYWRlcnMiLCJzdWNjZXNzIiwibW9kaWZpZWQiLCJzdGF0dXNUZXh0IiwidGltZW91dFRpbWVyIiwidHJhbnNwb3J0IiwicmVzcG9uc2VIZWFkZXJzU3RyaW5nIiwiaWZNb2RpZmllZCIsImNhY2hlVVJMIiwiY2FsbGJhY2tDb250ZXh0Iiwic3RhdHVzQ29kZSIsImZpcmVHbG9iYWxzIiwiZ2xvYmFsRXZlbnRDb250ZXh0IiwiY29tcGxldGVEZWZlcnJlZCIsInJlc3BvbnNlSGVhZGVycyIsInJlcXVlc3RIZWFkZXJzIiwicmVxdWVzdEhlYWRlcnNOYW1lcyIsInN0ckFib3J0IiwiZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIiwic2V0UmVxdWVzdEhlYWRlciIsImxuYW1lIiwib3ZlcnJpZGVNaW1lVHlwZSIsImNvZGUiLCJhYm9ydCIsImZpbmFsVGV4dCIsIm1ldGhvZCIsImNyb3NzRG9tYWluIiwiaGFzQ29udGVudCIsImJlZm9yZVNlbmQiLCJzZW5kIiwiZ2V0SlNPTiIsImdldFNjcmlwdCIsIndyYXBBbGwiLCJ3cmFwSW5uZXIiLCJ1bndyYXAiLCJ2aXNpYmxlIiwicjIwIiwickNSTEYiLCJyc3VibWl0dGVyVHlwZXMiLCJyc3VibWl0dGFibGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJzZXJpYWxpemUiLCJzZXJpYWxpemVBcnJheSIsInhociIsInhocklkIiwieGhyQ2FsbGJhY2tzIiwieGhyU3VwcG9ydGVkIiwiY29ycyIsInVzZXJuYW1lIiwieGhyRmllbGRzIiwiaXNBYm9ydCIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlc3BvbnNlVGV4dCIsInNjcmlwdCIsInRleHQgc2NyaXB0IiwiaGVhZCIsInNjcmlwdENoYXJzZXQiLCJjaGFyc2V0Iiwib25sb2FkIiwib2xkQ2FsbGJhY2tzIiwicmpzb25wIiwianNvbnAiLCJqc29ucENhbGxiYWNrIiwib3JpZ2luYWxTZXR0aW5ncyIsImNhbGxiYWNrTmFtZSIsIm92ZXJ3cml0dGVuIiwicmVzcG9uc2VDb250YWluZXIiLCJqc29uUHJvcCIsImtlZXBTY3JpcHRzIiwicGFyc2VkIiwiX2xvYWQiLCJwYXJhbXMiLCJhbmltYXRlZCIsIm9mZnNldCIsInNldE9mZnNldCIsImN1clBvc2l0aW9uIiwiY3VyTGVmdCIsImN1ckNTU1RvcCIsImN1clRvcCIsImN1ck9mZnNldCIsImN1ckNTU0xlZnQiLCJjYWxjdWxhdGVQb3NpdGlvbiIsImN1ckVsZW0iLCJ1c2luZyIsIndpbiIsImJveCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInBhZ2VZT2Zmc2V0IiwicGFnZVhPZmZzZXQiLCJvZmZzZXRQYXJlbnQiLCJwYXJlbnRPZmZzZXQiLCJzY3JvbGxUbyIsIkhlaWdodCIsIldpZHRoIiwiZGVmYXVsdEV4dHJhIiwiZnVuY05hbWUiLCJzaXplIiwiYW5kU2VsZiIsImRlZmluZSIsImFtZCIsIl9qUXVlcnkiLCJfJCIsIiQiLCJub0NvbmZsaWN0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL1N0YXRpY0ZpbGVzRm9yUmVzb3VyY2VzRGlyL2pxdWVyeS0xLjExLjMubWluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIiFmdW5jdGlvbihnbG9iYWwsZmFjdG9yeSl7XCJvYmplY3RcIj09dHlwZW9mIG1vZHVsZSYmXCJvYmplY3RcIj09dHlwZW9mIG1vZHVsZS5leHBvcnRzP21vZHVsZS5leHBvcnRzPWdsb2JhbC5kb2N1bWVudD9mYWN0b3J5KGdsb2JhbCwhMCk6ZnVuY3Rpb24odyl7aWYoIXcuZG9jdW1lbnQpdGhyb3cgbmV3IEVycm9yKFwialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudFwiKTtyZXR1cm4gZmFjdG9yeSh3KX06ZmFjdG9yeShnbG9iYWwpfShcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp0aGlzLGZ1bmN0aW9uKHdpbmRvdyxub0dsb2JhbCl7ZnVuY3Rpb24gaXNBcnJheWxpa2Uob2JqKXt2YXIgbGVuZ3RoPVwibGVuZ3RoXCJpbiBvYmomJm9iai5sZW5ndGgsdHlwZT1qUXVlcnkudHlwZShvYmopO3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGV8fGpRdWVyeS5pc1dpbmRvdyhvYmopPyExOjE9PT1vYmoubm9kZVR5cGUmJmxlbmd0aD8hMDpcImFycmF5XCI9PT10eXBlfHwwPT09bGVuZ3RofHxcIm51bWJlclwiPT10eXBlb2YgbGVuZ3RoJiZsZW5ndGg+MCYmbGVuZ3RoLTEgaW4gb2JqfWZ1bmN0aW9uIHdpbm5vdyhlbGVtZW50cyxxdWFsaWZpZXIsbm90KXtpZihqUXVlcnkuaXNGdW5jdGlvbihxdWFsaWZpZXIpKXJldHVybiBqUXVlcnkuZ3JlcChlbGVtZW50cyxmdW5jdGlvbihlbGVtLGkpe3JldHVybiEhcXVhbGlmaWVyLmNhbGwoZWxlbSxpLGVsZW0pIT09bm90fSk7aWYocXVhbGlmaWVyLm5vZGVUeXBlKXJldHVybiBqUXVlcnkuZ3JlcChlbGVtZW50cyxmdW5jdGlvbihlbGVtKXtyZXR1cm4gZWxlbT09PXF1YWxpZmllciE9PW5vdH0pO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBxdWFsaWZpZXIpe2lmKHJpc1NpbXBsZS50ZXN0KHF1YWxpZmllcikpcmV0dXJuIGpRdWVyeS5maWx0ZXIocXVhbGlmaWVyLGVsZW1lbnRzLG5vdCk7cXVhbGlmaWVyPWpRdWVyeS5maWx0ZXIocXVhbGlmaWVyLGVsZW1lbnRzKX1yZXR1cm4galF1ZXJ5LmdyZXAoZWxlbWVudHMsZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGpRdWVyeS5pbkFycmF5KGVsZW0scXVhbGlmaWVyKT49MCE9PW5vdH0pfWZ1bmN0aW9uIHNpYmxpbmcoY3VyLGRpcil7ZG8gY3VyPWN1cltkaXJdO3doaWxlKGN1ciYmMSE9PWN1ci5ub2RlVHlwZSk7cmV0dXJuIGN1cn1mdW5jdGlvbiBjcmVhdGVPcHRpb25zKG9wdGlvbnMpe3ZhciBvYmplY3Q9b3B0aW9uc0NhY2hlW29wdGlvbnNdPXt9O3JldHVybiBqUXVlcnkuZWFjaChvcHRpb25zLm1hdGNoKHJub3R3aGl0ZSl8fFtdLGZ1bmN0aW9uKF8sZmxhZyl7b2JqZWN0W2ZsYWddPSEwfSksb2JqZWN0fWZ1bmN0aW9uIGRldGFjaCgpe2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXI/KGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsY29tcGxldGVkLCExKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImxvYWRcIixjb21wbGV0ZWQsITEpKTooZG9jdW1lbnQuZGV0YWNoRXZlbnQoXCJvbnJlYWR5c3RhdGVjaGFuZ2VcIixjb21wbGV0ZWQpLHdpbmRvdy5kZXRhY2hFdmVudChcIm9ubG9hZFwiLGNvbXBsZXRlZCkpfWZ1bmN0aW9uIGNvbXBsZXRlZCgpeyhkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyfHxcImxvYWRcIj09PWV2ZW50LnR5cGV8fFwiY29tcGxldGVcIj09PWRvY3VtZW50LnJlYWR5U3RhdGUpJiYoZGV0YWNoKCksalF1ZXJ5LnJlYWR5KCkpfWZ1bmN0aW9uIGRhdGFBdHRyKGVsZW0sa2V5LGRhdGEpe2lmKHZvaWQgMD09PWRhdGEmJjE9PT1lbGVtLm5vZGVUeXBlKXt2YXIgbmFtZT1cImRhdGEtXCIra2V5LnJlcGxhY2Uocm11bHRpRGFzaCxcIi0kMVwiKS50b0xvd2VyQ2FzZSgpO2lmKGRhdGE9ZWxlbS5nZXRBdHRyaWJ1dGUobmFtZSksXCJzdHJpbmdcIj09dHlwZW9mIGRhdGEpe3RyeXtkYXRhPVwidHJ1ZVwiPT09ZGF0YT8hMDpcImZhbHNlXCI9PT1kYXRhPyExOlwibnVsbFwiPT09ZGF0YT9udWxsOitkYXRhK1wiXCI9PT1kYXRhPytkYXRhOnJicmFjZS50ZXN0KGRhdGEpP2pRdWVyeS5wYXJzZUpTT04oZGF0YSk6ZGF0YX1jYXRjaChlKXt9alF1ZXJ5LmRhdGEoZWxlbSxrZXksZGF0YSl9ZWxzZSBkYXRhPXZvaWQgMH1yZXR1cm4gZGF0YX1mdW5jdGlvbiBpc0VtcHR5RGF0YU9iamVjdChvYmope3ZhciBuYW1lO2ZvcihuYW1lIGluIG9iailpZigoXCJkYXRhXCIhPT1uYW1lfHwhalF1ZXJ5LmlzRW1wdHlPYmplY3Qob2JqW25hbWVdKSkmJlwidG9KU09OXCIhPT1uYW1lKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGludGVybmFsRGF0YShlbGVtLG5hbWUsZGF0YSxwdnQpe2lmKGpRdWVyeS5hY2NlcHREYXRhKGVsZW0pKXt2YXIgcmV0LHRoaXNDYWNoZSxpbnRlcm5hbEtleT1qUXVlcnkuZXhwYW5kbyxpc05vZGU9ZWxlbS5ub2RlVHlwZSxjYWNoZT1pc05vZGU/alF1ZXJ5LmNhY2hlOmVsZW0saWQ9aXNOb2RlP2VsZW1baW50ZXJuYWxLZXldOmVsZW1baW50ZXJuYWxLZXldJiZpbnRlcm5hbEtleTtpZihpZCYmY2FjaGVbaWRdJiYocHZ0fHxjYWNoZVtpZF0uZGF0YSl8fHZvaWQgMCE9PWRhdGF8fFwic3RyaW5nXCIhPXR5cGVvZiBuYW1lKXJldHVybiBpZHx8KGlkPWlzTm9kZT9lbGVtW2ludGVybmFsS2V5XT1kZWxldGVkSWRzLnBvcCgpfHxqUXVlcnkuZ3VpZCsrOmludGVybmFsS2V5KSxjYWNoZVtpZF18fChjYWNoZVtpZF09aXNOb2RlP3t9Ont0b0pTT046alF1ZXJ5Lm5vb3B9KSwoXCJvYmplY3RcIj09dHlwZW9mIG5hbWV8fFwiZnVuY3Rpb25cIj09dHlwZW9mIG5hbWUpJiYocHZ0P2NhY2hlW2lkXT1qUXVlcnkuZXh0ZW5kKGNhY2hlW2lkXSxuYW1lKTpjYWNoZVtpZF0uZGF0YT1qUXVlcnkuZXh0ZW5kKGNhY2hlW2lkXS5kYXRhLG5hbWUpKSx0aGlzQ2FjaGU9Y2FjaGVbaWRdLHB2dHx8KHRoaXNDYWNoZS5kYXRhfHwodGhpc0NhY2hlLmRhdGE9e30pLHRoaXNDYWNoZT10aGlzQ2FjaGUuZGF0YSksdm9pZCAwIT09ZGF0YSYmKHRoaXNDYWNoZVtqUXVlcnkuY2FtZWxDYXNlKG5hbWUpXT1kYXRhKSxcInN0cmluZ1wiPT10eXBlb2YgbmFtZT8ocmV0PXRoaXNDYWNoZVtuYW1lXSxudWxsPT1yZXQmJihyZXQ9dGhpc0NhY2hlW2pRdWVyeS5jYW1lbENhc2UobmFtZSldKSk6cmV0PXRoaXNDYWNoZSxyZXR9fWZ1bmN0aW9uIGludGVybmFsUmVtb3ZlRGF0YShlbGVtLG5hbWUscHZ0KXtpZihqUXVlcnkuYWNjZXB0RGF0YShlbGVtKSl7dmFyIHRoaXNDYWNoZSxpLGlzTm9kZT1lbGVtLm5vZGVUeXBlLGNhY2hlPWlzTm9kZT9qUXVlcnkuY2FjaGU6ZWxlbSxpZD1pc05vZGU/ZWxlbVtqUXVlcnkuZXhwYW5kb106alF1ZXJ5LmV4cGFuZG87aWYoY2FjaGVbaWRdKXtpZihuYW1lJiYodGhpc0NhY2hlPXB2dD9jYWNoZVtpZF06Y2FjaGVbaWRdLmRhdGEpKXtqUXVlcnkuaXNBcnJheShuYW1lKT9uYW1lPW5hbWUuY29uY2F0KGpRdWVyeS5tYXAobmFtZSxqUXVlcnkuY2FtZWxDYXNlKSk6bmFtZSBpbiB0aGlzQ2FjaGU/bmFtZT1bbmFtZV06KG5hbWU9alF1ZXJ5LmNhbWVsQ2FzZShuYW1lKSxuYW1lPW5hbWUgaW4gdGhpc0NhY2hlP1tuYW1lXTpuYW1lLnNwbGl0KFwiIFwiKSksaT1uYW1lLmxlbmd0aDtmb3IoO2ktLTspZGVsZXRlIHRoaXNDYWNoZVtuYW1lW2ldXTtpZihwdnQ/IWlzRW1wdHlEYXRhT2JqZWN0KHRoaXNDYWNoZSk6IWpRdWVyeS5pc0VtcHR5T2JqZWN0KHRoaXNDYWNoZSkpcmV0dXJufShwdnR8fChkZWxldGUgY2FjaGVbaWRdLmRhdGEsaXNFbXB0eURhdGFPYmplY3QoY2FjaGVbaWRdKSkpJiYoaXNOb2RlP2pRdWVyeS5jbGVhbkRhdGEoW2VsZW1dLCEwKTpzdXBwb3J0LmRlbGV0ZUV4cGFuZG98fGNhY2hlIT1jYWNoZS53aW5kb3c/ZGVsZXRlIGNhY2hlW2lkXTpjYWNoZVtpZF09bnVsbCl9fX1mdW5jdGlvbiByZXR1cm5UcnVlKCl7cmV0dXJuITB9ZnVuY3Rpb24gcmV0dXJuRmFsc2UoKXtyZXR1cm4hMX1mdW5jdGlvbiBzYWZlQWN0aXZlRWxlbWVudCgpe3RyeXtyZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudH1jYXRjaChlcnIpe319ZnVuY3Rpb24gY3JlYXRlU2FmZUZyYWdtZW50KGRvY3VtZW50KXt2YXIgbGlzdD1ub2RlTmFtZXMuc3BsaXQoXCJ8XCIpLHNhZmVGcmFnPWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihzYWZlRnJhZy5jcmVhdGVFbGVtZW50KWZvcig7bGlzdC5sZW5ndGg7KXNhZmVGcmFnLmNyZWF0ZUVsZW1lbnQobGlzdC5wb3AoKSk7cmV0dXJuIHNhZmVGcmFnfWZ1bmN0aW9uIGdldEFsbChjb250ZXh0LHRhZyl7dmFyIGVsZW1zLGVsZW0saT0wLGZvdW5kPXR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lIT09c3RydW5kZWZpbmVkP2NvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUodGFnfHxcIipcIik6dHlwZW9mIGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCE9PXN0cnVuZGVmaW5lZD9jb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwodGFnfHxcIipcIik6dm9pZCAwO2lmKCFmb3VuZClmb3IoZm91bmQ9W10sZWxlbXM9Y29udGV4dC5jaGlsZE5vZGVzfHxjb250ZXh0O251bGwhPShlbGVtPWVsZW1zW2ldKTtpKyspIXRhZ3x8alF1ZXJ5Lm5vZGVOYW1lKGVsZW0sdGFnKT9mb3VuZC5wdXNoKGVsZW0pOmpRdWVyeS5tZXJnZShmb3VuZCxnZXRBbGwoZWxlbSx0YWcpKTtyZXR1cm4gdm9pZCAwPT09dGFnfHx0YWcmJmpRdWVyeS5ub2RlTmFtZShjb250ZXh0LHRhZyk/alF1ZXJ5Lm1lcmdlKFtjb250ZXh0XSxmb3VuZCk6Zm91bmR9ZnVuY3Rpb24gZml4RGVmYXVsdENoZWNrZWQoZWxlbSl7cmNoZWNrYWJsZVR5cGUudGVzdChlbGVtLnR5cGUpJiYoZWxlbS5kZWZhdWx0Q2hlY2tlZD1lbGVtLmNoZWNrZWQpfWZ1bmN0aW9uIG1hbmlwdWxhdGlvblRhcmdldChlbGVtLGNvbnRlbnQpe3JldHVybiBqUXVlcnkubm9kZU5hbWUoZWxlbSxcInRhYmxlXCIpJiZqUXVlcnkubm9kZU5hbWUoMTEhPT1jb250ZW50Lm5vZGVUeXBlP2NvbnRlbnQ6Y29udGVudC5maXJzdENoaWxkLFwidHJcIik/ZWxlbS5nZXRFbGVtZW50c0J5VGFnTmFtZShcInRib2R5XCIpWzBdfHxlbGVtLmFwcGVuZENoaWxkKGVsZW0ub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KFwidGJvZHlcIikpOmVsZW19ZnVuY3Rpb24gZGlzYWJsZVNjcmlwdChlbGVtKXtyZXR1cm4gZWxlbS50eXBlPShudWxsIT09alF1ZXJ5LmZpbmQuYXR0cihlbGVtLFwidHlwZVwiKSkrXCIvXCIrZWxlbS50eXBlLGVsZW19ZnVuY3Rpb24gcmVzdG9yZVNjcmlwdChlbGVtKXt2YXIgbWF0Y2g9cnNjcmlwdFR5cGVNYXNrZWQuZXhlYyhlbGVtLnR5cGUpO3JldHVybiBtYXRjaD9lbGVtLnR5cGU9bWF0Y2hbMV06ZWxlbS5yZW1vdmVBdHRyaWJ1dGUoXCJ0eXBlXCIpLGVsZW19ZnVuY3Rpb24gc2V0R2xvYmFsRXZhbChlbGVtcyxyZWZFbGVtZW50cyl7Zm9yKHZhciBlbGVtLGk9MDtudWxsIT0oZWxlbT1lbGVtc1tpXSk7aSsrKWpRdWVyeS5fZGF0YShlbGVtLFwiZ2xvYmFsRXZhbFwiLCFyZWZFbGVtZW50c3x8alF1ZXJ5Ll9kYXRhKHJlZkVsZW1lbnRzW2ldLFwiZ2xvYmFsRXZhbFwiKSl9ZnVuY3Rpb24gY2xvbmVDb3B5RXZlbnQoc3JjLGRlc3Qpe2lmKDE9PT1kZXN0Lm5vZGVUeXBlJiZqUXVlcnkuaGFzRGF0YShzcmMpKXt2YXIgdHlwZSxpLGwsb2xkRGF0YT1qUXVlcnkuX2RhdGEoc3JjKSxjdXJEYXRhPWpRdWVyeS5fZGF0YShkZXN0LG9sZERhdGEpLGV2ZW50cz1vbGREYXRhLmV2ZW50cztpZihldmVudHMpe2RlbGV0ZSBjdXJEYXRhLmhhbmRsZSxjdXJEYXRhLmV2ZW50cz17fTtmb3IodHlwZSBpbiBldmVudHMpZm9yKGk9MCxsPWV2ZW50c1t0eXBlXS5sZW5ndGg7bD5pO2krKylqUXVlcnkuZXZlbnQuYWRkKGRlc3QsdHlwZSxldmVudHNbdHlwZV1baV0pfWN1ckRhdGEuZGF0YSYmKGN1ckRhdGEuZGF0YT1qUXVlcnkuZXh0ZW5kKHt9LGN1ckRhdGEuZGF0YSkpfX1mdW5jdGlvbiBmaXhDbG9uZU5vZGVJc3N1ZXMoc3JjLGRlc3Qpe3ZhciBub2RlTmFtZSxlLGRhdGE7aWYoMT09PWRlc3Qubm9kZVR5cGUpe2lmKG5vZGVOYW1lPWRlc3Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKSwhc3VwcG9ydC5ub0Nsb25lRXZlbnQmJmRlc3RbalF1ZXJ5LmV4cGFuZG9dKXtkYXRhPWpRdWVyeS5fZGF0YShkZXN0KTtmb3IoZSBpbiBkYXRhLmV2ZW50cylqUXVlcnkucmVtb3ZlRXZlbnQoZGVzdCxlLGRhdGEuaGFuZGxlKTtkZXN0LnJlbW92ZUF0dHJpYnV0ZShqUXVlcnkuZXhwYW5kbyl9XCJzY3JpcHRcIj09PW5vZGVOYW1lJiZkZXN0LnRleHQhPT1zcmMudGV4dD8oZGlzYWJsZVNjcmlwdChkZXN0KS50ZXh0PXNyYy50ZXh0LHJlc3RvcmVTY3JpcHQoZGVzdCkpOlwib2JqZWN0XCI9PT1ub2RlTmFtZT8oZGVzdC5wYXJlbnROb2RlJiYoZGVzdC5vdXRlckhUTUw9c3JjLm91dGVySFRNTCksc3VwcG9ydC5odG1sNUNsb25lJiZzcmMuaW5uZXJIVE1MJiYhalF1ZXJ5LnRyaW0oZGVzdC5pbm5lckhUTUwpJiYoZGVzdC5pbm5lckhUTUw9c3JjLmlubmVySFRNTCkpOlwiaW5wdXRcIj09PW5vZGVOYW1lJiZyY2hlY2thYmxlVHlwZS50ZXN0KHNyYy50eXBlKT8oZGVzdC5kZWZhdWx0Q2hlY2tlZD1kZXN0LmNoZWNrZWQ9c3JjLmNoZWNrZWQsZGVzdC52YWx1ZSE9PXNyYy52YWx1ZSYmKGRlc3QudmFsdWU9c3JjLnZhbHVlKSk6XCJvcHRpb25cIj09PW5vZGVOYW1lP2Rlc3QuZGVmYXVsdFNlbGVjdGVkPWRlc3Quc2VsZWN0ZWQ9c3JjLmRlZmF1bHRTZWxlY3RlZDooXCJpbnB1dFwiPT09bm9kZU5hbWV8fFwidGV4dGFyZWFcIj09PW5vZGVOYW1lKSYmKGRlc3QuZGVmYXVsdFZhbHVlPXNyYy5kZWZhdWx0VmFsdWUpfX1mdW5jdGlvbiBhY3R1YWxEaXNwbGF5KG5hbWUsZG9jKXt2YXIgc3R5bGUsZWxlbT1qUXVlcnkoZG9jLmNyZWF0ZUVsZW1lbnQobmFtZSkpLmFwcGVuZFRvKGRvYy5ib2R5KSxkaXNwbGF5PXdpbmRvdy5nZXREZWZhdWx0Q29tcHV0ZWRTdHlsZSYmKHN0eWxlPXdpbmRvdy5nZXREZWZhdWx0Q29tcHV0ZWRTdHlsZShlbGVtWzBdKSk/c3R5bGUuZGlzcGxheTpqUXVlcnkuY3NzKGVsZW1bMF0sXCJkaXNwbGF5XCIpO3JldHVybiBlbGVtLmRldGFjaCgpLGRpc3BsYXl9ZnVuY3Rpb24gZGVmYXVsdERpc3BsYXkobm9kZU5hbWUpe3ZhciBkb2M9ZG9jdW1lbnQsZGlzcGxheT1lbGVtZGlzcGxheVtub2RlTmFtZV07cmV0dXJuIGRpc3BsYXl8fChkaXNwbGF5PWFjdHVhbERpc3BsYXkobm9kZU5hbWUsZG9jKSxcIm5vbmVcIiE9PWRpc3BsYXkmJmRpc3BsYXl8fChpZnJhbWU9KGlmcmFtZXx8alF1ZXJ5KFwiPGlmcmFtZSBmcmFtZWJvcmRlcj0nMCcgd2lkdGg9JzAnIGhlaWdodD0nMCcvPlwiKSkuYXBwZW5kVG8oZG9jLmRvY3VtZW50RWxlbWVudCksZG9jPShpZnJhbWVbMF0uY29udGVudFdpbmRvd3x8aWZyYW1lWzBdLmNvbnRlbnREb2N1bWVudCkuZG9jdW1lbnQsZG9jLndyaXRlKCksZG9jLmNsb3NlKCksZGlzcGxheT1hY3R1YWxEaXNwbGF5KG5vZGVOYW1lLGRvYyksaWZyYW1lLmRldGFjaCgpKSxlbGVtZGlzcGxheVtub2RlTmFtZV09ZGlzcGxheSksZGlzcGxheX1mdW5jdGlvbiBhZGRHZXRIb29rSWYoY29uZGl0aW9uRm4saG9va0ZuKXtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl7dmFyIGNvbmRpdGlvbj1jb25kaXRpb25GbigpO2lmKG51bGwhPWNvbmRpdGlvbilyZXR1cm4gY29uZGl0aW9uP3ZvaWQgZGVsZXRlIHRoaXMuZ2V0Oih0aGlzLmdldD1ob29rRm4pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fWZ1bmN0aW9uIHZlbmRvclByb3BOYW1lKHN0eWxlLG5hbWUpe2lmKG5hbWUgaW4gc3R5bGUpcmV0dXJuIG5hbWU7Zm9yKHZhciBjYXBOYW1lPW5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrbmFtZS5zbGljZSgxKSxvcmlnTmFtZT1uYW1lLGk9Y3NzUHJlZml4ZXMubGVuZ3RoO2ktLTspaWYobmFtZT1jc3NQcmVmaXhlc1tpXStjYXBOYW1lLG5hbWUgaW4gc3R5bGUpcmV0dXJuIG5hbWU7cmV0dXJuIG9yaWdOYW1lfWZ1bmN0aW9uIHNob3dIaWRlKGVsZW1lbnRzLHNob3cpe2Zvcih2YXIgZGlzcGxheSxlbGVtLGhpZGRlbix2YWx1ZXM9W10saW5kZXg9MCxsZW5ndGg9ZWxlbWVudHMubGVuZ3RoO2xlbmd0aD5pbmRleDtpbmRleCsrKWVsZW09ZWxlbWVudHNbaW5kZXhdLGVsZW0uc3R5bGUmJih2YWx1ZXNbaW5kZXhdPWpRdWVyeS5fZGF0YShlbGVtLFwib2xkZGlzcGxheVwiKSxkaXNwbGF5PWVsZW0uc3R5bGUuZGlzcGxheSxzaG93Pyh2YWx1ZXNbaW5kZXhdfHxcIm5vbmVcIiE9PWRpc3BsYXl8fChlbGVtLnN0eWxlLmRpc3BsYXk9XCJcIiksXCJcIj09PWVsZW0uc3R5bGUuZGlzcGxheSYmaXNIaWRkZW4oZWxlbSkmJih2YWx1ZXNbaW5kZXhdPWpRdWVyeS5fZGF0YShlbGVtLFwib2xkZGlzcGxheVwiLGRlZmF1bHREaXNwbGF5KGVsZW0ubm9kZU5hbWUpKSkpOihoaWRkZW49aXNIaWRkZW4oZWxlbSksKGRpc3BsYXkmJlwibm9uZVwiIT09ZGlzcGxheXx8IWhpZGRlbikmJmpRdWVyeS5fZGF0YShlbGVtLFwib2xkZGlzcGxheVwiLGhpZGRlbj9kaXNwbGF5OmpRdWVyeS5jc3MoZWxlbSxcImRpc3BsYXlcIikpKSk7Zm9yKGluZGV4PTA7bGVuZ3RoPmluZGV4O2luZGV4KyspZWxlbT1lbGVtZW50c1tpbmRleF0sZWxlbS5zdHlsZSYmKHNob3cmJlwibm9uZVwiIT09ZWxlbS5zdHlsZS5kaXNwbGF5JiZcIlwiIT09ZWxlbS5zdHlsZS5kaXNwbGF5fHwoZWxlbS5zdHlsZS5kaXNwbGF5PXNob3c/dmFsdWVzW2luZGV4XXx8XCJcIjpcIm5vbmVcIikpO3JldHVybiBlbGVtZW50c31mdW5jdGlvbiBzZXRQb3NpdGl2ZU51bWJlcihlbGVtLHZhbHVlLHN1YnRyYWN0KXt2YXIgbWF0Y2hlcz1ybnVtc3BsaXQuZXhlYyh2YWx1ZSk7cmV0dXJuIG1hdGNoZXM/TWF0aC5tYXgoMCxtYXRjaGVzWzFdLShzdWJ0cmFjdHx8MCkpKyhtYXRjaGVzWzJdfHxcInB4XCIpOnZhbHVlfWZ1bmN0aW9uIGF1Z21lbnRXaWR0aE9ySGVpZ2h0KGVsZW0sbmFtZSxleHRyYSxpc0JvcmRlckJveCxzdHlsZXMpe2Zvcih2YXIgaT1leHRyYT09PShpc0JvcmRlckJveD9cImJvcmRlclwiOlwiY29udGVudFwiKT80Olwid2lkdGhcIj09PW5hbWU/MTowLHZhbD0wOzQ+aTtpKz0yKVwibWFyZ2luXCI9PT1leHRyYSYmKHZhbCs9alF1ZXJ5LmNzcyhlbGVtLGV4dHJhK2Nzc0V4cGFuZFtpXSwhMCxzdHlsZXMpKSxpc0JvcmRlckJveD8oXCJjb250ZW50XCI9PT1leHRyYSYmKHZhbC09alF1ZXJ5LmNzcyhlbGVtLFwicGFkZGluZ1wiK2Nzc0V4cGFuZFtpXSwhMCxzdHlsZXMpKSxcIm1hcmdpblwiIT09ZXh0cmEmJih2YWwtPWpRdWVyeS5jc3MoZWxlbSxcImJvcmRlclwiK2Nzc0V4cGFuZFtpXStcIldpZHRoXCIsITAsc3R5bGVzKSkpOih2YWwrPWpRdWVyeS5jc3MoZWxlbSxcInBhZGRpbmdcIitjc3NFeHBhbmRbaV0sITAsc3R5bGVzKSxcInBhZGRpbmdcIiE9PWV4dHJhJiYodmFsKz1qUXVlcnkuY3NzKGVsZW0sXCJib3JkZXJcIitjc3NFeHBhbmRbaV0rXCJXaWR0aFwiLCEwLHN0eWxlcykpKTtyZXR1cm4gdmFsfWZ1bmN0aW9uIGdldFdpZHRoT3JIZWlnaHQoZWxlbSxuYW1lLGV4dHJhKXt2YXIgdmFsdWVJc0JvcmRlckJveD0hMCx2YWw9XCJ3aWR0aFwiPT09bmFtZT9lbGVtLm9mZnNldFdpZHRoOmVsZW0ub2Zmc2V0SGVpZ2h0LHN0eWxlcz1nZXRTdHlsZXMoZWxlbSksaXNCb3JkZXJCb3g9c3VwcG9ydC5ib3hTaXppbmcmJlwiYm9yZGVyLWJveFwiPT09alF1ZXJ5LmNzcyhlbGVtLFwiYm94U2l6aW5nXCIsITEsc3R5bGVzKTtpZigwPj12YWx8fG51bGw9PXZhbCl7aWYodmFsPWN1ckNTUyhlbGVtLG5hbWUsc3R5bGVzKSwoMD52YWx8fG51bGw9PXZhbCkmJih2YWw9ZWxlbS5zdHlsZVtuYW1lXSkscm51bW5vbnB4LnRlc3QodmFsKSlyZXR1cm4gdmFsO3ZhbHVlSXNCb3JkZXJCb3g9aXNCb3JkZXJCb3gmJihzdXBwb3J0LmJveFNpemluZ1JlbGlhYmxlKCl8fHZhbD09PWVsZW0uc3R5bGVbbmFtZV0pLHZhbD1wYXJzZUZsb2F0KHZhbCl8fDB9cmV0dXJuIHZhbCthdWdtZW50V2lkdGhPckhlaWdodChlbGVtLG5hbWUsZXh0cmF8fChpc0JvcmRlckJveD9cImJvcmRlclwiOlwiY29udGVudFwiKSx2YWx1ZUlzQm9yZGVyQm94LHN0eWxlcykrXCJweFwifWZ1bmN0aW9uIFR3ZWVuKGVsZW0sb3B0aW9ucyxwcm9wLGVuZCxlYXNpbmcpe3JldHVybiBuZXcgVHdlZW4ucHJvdG90eXBlLmluaXQoZWxlbSxvcHRpb25zLHByb3AsZW5kLGVhc2luZyl9ZnVuY3Rpb24gY3JlYXRlRnhOb3coKXtyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe2Z4Tm93PXZvaWQgMH0pLGZ4Tm93PWpRdWVyeS5ub3coKX1mdW5jdGlvbiBnZW5GeCh0eXBlLGluY2x1ZGVXaWR0aCl7dmFyIHdoaWNoLGF0dHJzPXtoZWlnaHQ6dHlwZX0saT0wO2ZvcihpbmNsdWRlV2lkdGg9aW5jbHVkZVdpZHRoPzE6MDs0Pmk7aSs9Mi1pbmNsdWRlV2lkdGgpd2hpY2g9Y3NzRXhwYW5kW2ldLGF0dHJzW1wibWFyZ2luXCIrd2hpY2hdPWF0dHJzW1wicGFkZGluZ1wiK3doaWNoXT10eXBlO3JldHVybiBpbmNsdWRlV2lkdGgmJihhdHRycy5vcGFjaXR5PWF0dHJzLndpZHRoPXR5cGUpLGF0dHJzfWZ1bmN0aW9uIGNyZWF0ZVR3ZWVuKHZhbHVlLHByb3AsYW5pbWF0aW9uKXtmb3IodmFyIHR3ZWVuLGNvbGxlY3Rpb249KHR3ZWVuZXJzW3Byb3BdfHxbXSkuY29uY2F0KHR3ZWVuZXJzW1wiKlwiXSksaW5kZXg9MCxsZW5ndGg9Y29sbGVjdGlvbi5sZW5ndGg7bGVuZ3RoPmluZGV4O2luZGV4KyspaWYodHdlZW49Y29sbGVjdGlvbltpbmRleF0uY2FsbChhbmltYXRpb24scHJvcCx2YWx1ZSkpcmV0dXJuIHR3ZWVufWZ1bmN0aW9uIGRlZmF1bHRQcmVmaWx0ZXIoZWxlbSxwcm9wcyxvcHRzKXt2YXIgcHJvcCx2YWx1ZSx0b2dnbGUsdHdlZW4saG9va3Msb2xkZmlyZSxkaXNwbGF5LGNoZWNrRGlzcGxheSxhbmltPXRoaXMsb3JpZz17fSxzdHlsZT1lbGVtLnN0eWxlLGhpZGRlbj1lbGVtLm5vZGVUeXBlJiZpc0hpZGRlbihlbGVtKSxkYXRhU2hvdz1qUXVlcnkuX2RhdGEoZWxlbSxcImZ4c2hvd1wiKTtvcHRzLnF1ZXVlfHwoaG9va3M9alF1ZXJ5Ll9xdWV1ZUhvb2tzKGVsZW0sXCJmeFwiKSxudWxsPT1ob29rcy51bnF1ZXVlZCYmKGhvb2tzLnVucXVldWVkPTAsb2xkZmlyZT1ob29rcy5lbXB0eS5maXJlLGhvb2tzLmVtcHR5LmZpcmU9ZnVuY3Rpb24oKXtob29rcy51bnF1ZXVlZHx8b2xkZmlyZSgpfSksaG9va3MudW5xdWV1ZWQrKyxhbmltLmFsd2F5cyhmdW5jdGlvbigpe2FuaW0uYWx3YXlzKGZ1bmN0aW9uKCl7aG9va3MudW5xdWV1ZWQtLSxqUXVlcnkucXVldWUoZWxlbSxcImZ4XCIpLmxlbmd0aHx8aG9va3MuZW1wdHkuZmlyZSgpfSl9KSksMT09PWVsZW0ubm9kZVR5cGUmJihcImhlaWdodFwiaW4gcHJvcHN8fFwid2lkdGhcImluIHByb3BzKSYmKG9wdHMub3ZlcmZsb3c9W3N0eWxlLm92ZXJmbG93LHN0eWxlLm92ZXJmbG93WCxzdHlsZS5vdmVyZmxvd1ldLGRpc3BsYXk9alF1ZXJ5LmNzcyhlbGVtLFwiZGlzcGxheVwiKSxjaGVja0Rpc3BsYXk9XCJub25lXCI9PT1kaXNwbGF5P2pRdWVyeS5fZGF0YShlbGVtLFwib2xkZGlzcGxheVwiKXx8ZGVmYXVsdERpc3BsYXkoZWxlbS5ub2RlTmFtZSk6ZGlzcGxheSxcImlubGluZVwiPT09Y2hlY2tEaXNwbGF5JiZcIm5vbmVcIj09PWpRdWVyeS5jc3MoZWxlbSxcImZsb2F0XCIpJiYoc3VwcG9ydC5pbmxpbmVCbG9ja05lZWRzTGF5b3V0JiZcImlubGluZVwiIT09ZGVmYXVsdERpc3BsYXkoZWxlbS5ub2RlTmFtZSk/c3R5bGUuem9vbT0xOnN0eWxlLmRpc3BsYXk9XCJpbmxpbmUtYmxvY2tcIikpLG9wdHMub3ZlcmZsb3cmJihzdHlsZS5vdmVyZmxvdz1cImhpZGRlblwiLHN1cHBvcnQuc2hyaW5rV3JhcEJsb2NrcygpfHxhbmltLmFsd2F5cyhmdW5jdGlvbigpe3N0eWxlLm92ZXJmbG93PW9wdHMub3ZlcmZsb3dbMF0sc3R5bGUub3ZlcmZsb3dYPW9wdHMub3ZlcmZsb3dbMV0sc3R5bGUub3ZlcmZsb3dZPW9wdHMub3ZlcmZsb3dbMl19KSk7Zm9yKHByb3AgaW4gcHJvcHMpaWYodmFsdWU9cHJvcHNbcHJvcF0scmZ4dHlwZXMuZXhlYyh2YWx1ZSkpe2lmKGRlbGV0ZSBwcm9wc1twcm9wXSx0b2dnbGU9dG9nZ2xlfHxcInRvZ2dsZVwiPT09dmFsdWUsdmFsdWU9PT0oaGlkZGVuP1wiaGlkZVwiOlwic2hvd1wiKSl7aWYoXCJzaG93XCIhPT12YWx1ZXx8IWRhdGFTaG93fHx2b2lkIDA9PT1kYXRhU2hvd1twcm9wXSljb250aW51ZTtoaWRkZW49ITB9b3JpZ1twcm9wXT1kYXRhU2hvdyYmZGF0YVNob3dbcHJvcF18fGpRdWVyeS5zdHlsZShlbGVtLHByb3ApfWVsc2UgZGlzcGxheT12b2lkIDA7aWYoalF1ZXJ5LmlzRW1wdHlPYmplY3Qob3JpZykpXCJpbmxpbmVcIj09PShcIm5vbmVcIj09PWRpc3BsYXk/ZGVmYXVsdERpc3BsYXkoZWxlbS5ub2RlTmFtZSk6ZGlzcGxheSkmJihzdHlsZS5kaXNwbGF5PWRpc3BsYXkpO2Vsc2V7ZGF0YVNob3c/XCJoaWRkZW5cImluIGRhdGFTaG93JiYoaGlkZGVuPWRhdGFTaG93LmhpZGRlbik6ZGF0YVNob3c9alF1ZXJ5Ll9kYXRhKGVsZW0sXCJmeHNob3dcIix7fSksdG9nZ2xlJiYoZGF0YVNob3cuaGlkZGVuPSFoaWRkZW4pLGhpZGRlbj9qUXVlcnkoZWxlbSkuc2hvdygpOmFuaW0uZG9uZShmdW5jdGlvbigpe2pRdWVyeShlbGVtKS5oaWRlKCl9KSxhbmltLmRvbmUoZnVuY3Rpb24oKXt2YXIgcHJvcDtqUXVlcnkuX3JlbW92ZURhdGEoZWxlbSxcImZ4c2hvd1wiKTtmb3IocHJvcCBpbiBvcmlnKWpRdWVyeS5zdHlsZShlbGVtLHByb3Asb3JpZ1twcm9wXSl9KTtmb3IocHJvcCBpbiBvcmlnKXR3ZWVuPWNyZWF0ZVR3ZWVuKGhpZGRlbj9kYXRhU2hvd1twcm9wXTowLHByb3AsYW5pbSkscHJvcCBpbiBkYXRhU2hvd3x8KGRhdGFTaG93W3Byb3BdPXR3ZWVuLnN0YXJ0LGhpZGRlbiYmKHR3ZWVuLmVuZD10d2Vlbi5zdGFydCx0d2Vlbi5zdGFydD1cIndpZHRoXCI9PT1wcm9wfHxcImhlaWdodFwiPT09cHJvcD8xOjApKX19ZnVuY3Rpb24gcHJvcEZpbHRlcihwcm9wcyxzcGVjaWFsRWFzaW5nKXt2YXIgaW5kZXgsbmFtZSxlYXNpbmcsdmFsdWUsaG9va3M7Zm9yKGluZGV4IGluIHByb3BzKWlmKG5hbWU9alF1ZXJ5LmNhbWVsQ2FzZShpbmRleCksZWFzaW5nPXNwZWNpYWxFYXNpbmdbbmFtZV0sdmFsdWU9cHJvcHNbaW5kZXhdLGpRdWVyeS5pc0FycmF5KHZhbHVlKSYmKGVhc2luZz12YWx1ZVsxXSx2YWx1ZT1wcm9wc1tpbmRleF09dmFsdWVbMF0pLGluZGV4IT09bmFtZSYmKHByb3BzW25hbWVdPXZhbHVlLGRlbGV0ZSBwcm9wc1tpbmRleF0pLGhvb2tzPWpRdWVyeS5jc3NIb29rc1tuYW1lXSxob29rcyYmXCJleHBhbmRcImluIGhvb2tzKXt2YWx1ZT1ob29rcy5leHBhbmQodmFsdWUpLGRlbGV0ZSBwcm9wc1tuYW1lXTtmb3IoaW5kZXggaW4gdmFsdWUpaW5kZXggaW4gcHJvcHN8fChwcm9wc1tpbmRleF09dmFsdWVbaW5kZXhdLHNwZWNpYWxFYXNpbmdbaW5kZXhdPWVhc2luZyl9ZWxzZSBzcGVjaWFsRWFzaW5nW25hbWVdPWVhc2luZ31mdW5jdGlvbiBBbmltYXRpb24oZWxlbSxwcm9wZXJ0aWVzLG9wdGlvbnMpe3ZhciByZXN1bHQsc3RvcHBlZCxpbmRleD0wLGxlbmd0aD1hbmltYXRpb25QcmVmaWx0ZXJzLmxlbmd0aCxkZWZlcnJlZD1qUXVlcnkuRGVmZXJyZWQoKS5hbHdheXMoZnVuY3Rpb24oKXtkZWxldGUgdGljay5lbGVtfSksdGljaz1mdW5jdGlvbigpe2lmKHN0b3BwZWQpcmV0dXJuITE7Zm9yKHZhciBjdXJyZW50VGltZT1meE5vd3x8Y3JlYXRlRnhOb3coKSxyZW1haW5pbmc9TWF0aC5tYXgoMCxhbmltYXRpb24uc3RhcnRUaW1lK2FuaW1hdGlvbi5kdXJhdGlvbi1jdXJyZW50VGltZSksdGVtcD1yZW1haW5pbmcvYW5pbWF0aW9uLmR1cmF0aW9ufHwwLHBlcmNlbnQ9MS10ZW1wLGluZGV4PTAsbGVuZ3RoPWFuaW1hdGlvbi50d2VlbnMubGVuZ3RoO2xlbmd0aD5pbmRleDtpbmRleCsrKWFuaW1hdGlvbi50d2VlbnNbaW5kZXhdLnJ1bihwZXJjZW50KTtyZXR1cm4gZGVmZXJyZWQubm90aWZ5V2l0aChlbGVtLFthbmltYXRpb24scGVyY2VudCxyZW1haW5pbmddKSwxPnBlcmNlbnQmJmxlbmd0aD9yZW1haW5pbmc6KGRlZmVycmVkLnJlc29sdmVXaXRoKGVsZW0sW2FuaW1hdGlvbl0pLCExKX0sYW5pbWF0aW9uPWRlZmVycmVkLnByb21pc2Uoe2VsZW06ZWxlbSxwcm9wczpqUXVlcnkuZXh0ZW5kKHt9LHByb3BlcnRpZXMpLG9wdHM6alF1ZXJ5LmV4dGVuZCghMCx7c3BlY2lhbEVhc2luZzp7fX0sb3B0aW9ucyksb3JpZ2luYWxQcm9wZXJ0aWVzOnByb3BlcnRpZXMsb3JpZ2luYWxPcHRpb25zOm9wdGlvbnMsc3RhcnRUaW1lOmZ4Tm93fHxjcmVhdGVGeE5vdygpLGR1cmF0aW9uOm9wdGlvbnMuZHVyYXRpb24sdHdlZW5zOltdLGNyZWF0ZVR3ZWVuOmZ1bmN0aW9uKHByb3AsZW5kKXt2YXIgdHdlZW49alF1ZXJ5LlR3ZWVuKGVsZW0sYW5pbWF0aW9uLm9wdHMscHJvcCxlbmQsYW5pbWF0aW9uLm9wdHMuc3BlY2lhbEVhc2luZ1twcm9wXXx8YW5pbWF0aW9uLm9wdHMuZWFzaW5nKTtyZXR1cm4gYW5pbWF0aW9uLnR3ZWVucy5wdXNoKHR3ZWVuKSx0d2Vlbn0sc3RvcDpmdW5jdGlvbihnb3RvRW5kKXt2YXIgaW5kZXg9MCxsZW5ndGg9Z290b0VuZD9hbmltYXRpb24udHdlZW5zLmxlbmd0aDowO2lmKHN0b3BwZWQpcmV0dXJuIHRoaXM7Zm9yKHN0b3BwZWQ9ITA7bGVuZ3RoPmluZGV4O2luZGV4KyspYW5pbWF0aW9uLnR3ZWVuc1tpbmRleF0ucnVuKDEpO3JldHVybiBnb3RvRW5kP2RlZmVycmVkLnJlc29sdmVXaXRoKGVsZW0sW2FuaW1hdGlvbixnb3RvRW5kXSk6ZGVmZXJyZWQucmVqZWN0V2l0aChlbGVtLFthbmltYXRpb24sZ290b0VuZF0pLHRoaXN9fSkscHJvcHM9YW5pbWF0aW9uLnByb3BzO2Zvcihwcm9wRmlsdGVyKHByb3BzLGFuaW1hdGlvbi5vcHRzLnNwZWNpYWxFYXNpbmcpO2xlbmd0aD5pbmRleDtpbmRleCsrKWlmKHJlc3VsdD1hbmltYXRpb25QcmVmaWx0ZXJzW2luZGV4XS5jYWxsKGFuaW1hdGlvbixlbGVtLHByb3BzLGFuaW1hdGlvbi5vcHRzKSlyZXR1cm4gcmVzdWx0O3JldHVybiBqUXVlcnkubWFwKHByb3BzLGNyZWF0ZVR3ZWVuLGFuaW1hdGlvbiksalF1ZXJ5LmlzRnVuY3Rpb24oYW5pbWF0aW9uLm9wdHMuc3RhcnQpJiZhbmltYXRpb24ub3B0cy5zdGFydC5jYWxsKGVsZW0sYW5pbWF0aW9uKSxqUXVlcnkuZngudGltZXIoalF1ZXJ5LmV4dGVuZCh0aWNrLHtlbGVtOmVsZW0sYW5pbTphbmltYXRpb24scXVldWU6YW5pbWF0aW9uLm9wdHMucXVldWV9KSksYW5pbWF0aW9uLnByb2dyZXNzKGFuaW1hdGlvbi5vcHRzLnByb2dyZXNzKS5kb25lKGFuaW1hdGlvbi5vcHRzLmRvbmUsYW5pbWF0aW9uLm9wdHMuY29tcGxldGUpLmZhaWwoYW5pbWF0aW9uLm9wdHMuZmFpbCkuYWx3YXlzKGFuaW1hdGlvbi5vcHRzLmFsd2F5cyl9ZnVuY3Rpb24gYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKHN0cnVjdHVyZSl7cmV0dXJuIGZ1bmN0aW9uKGRhdGFUeXBlRXhwcmVzc2lvbixmdW5jKXtcInN0cmluZ1wiIT10eXBlb2YgZGF0YVR5cGVFeHByZXNzaW9uJiYoZnVuYz1kYXRhVHlwZUV4cHJlc3Npb24sZGF0YVR5cGVFeHByZXNzaW9uPVwiKlwiKTt2YXIgZGF0YVR5cGUsaT0wLGRhdGFUeXBlcz1kYXRhVHlwZUV4cHJlc3Npb24udG9Mb3dlckNhc2UoKS5tYXRjaChybm90d2hpdGUpfHxbXTtpZihqUXVlcnkuaXNGdW5jdGlvbihmdW5jKSlmb3IoO2RhdGFUeXBlPWRhdGFUeXBlc1tpKytdOylcIitcIj09PWRhdGFUeXBlLmNoYXJBdCgwKT8oZGF0YVR5cGU9ZGF0YVR5cGUuc2xpY2UoMSl8fFwiKlwiLChzdHJ1Y3R1cmVbZGF0YVR5cGVdPXN0cnVjdHVyZVtkYXRhVHlwZV18fFtdKS51bnNoaWZ0KGZ1bmMpKTooc3RydWN0dXJlW2RhdGFUeXBlXT1zdHJ1Y3R1cmVbZGF0YVR5cGVdfHxbXSkucHVzaChmdW5jKX19ZnVuY3Rpb24gaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoc3RydWN0dXJlLG9wdGlvbnMsb3JpZ2luYWxPcHRpb25zLGpxWEhSKXtmdW5jdGlvbiBpbnNwZWN0KGRhdGFUeXBlKXt2YXIgc2VsZWN0ZWQ7cmV0dXJuIGluc3BlY3RlZFtkYXRhVHlwZV09ITAsalF1ZXJ5LmVhY2goc3RydWN0dXJlW2RhdGFUeXBlXXx8W10sZnVuY3Rpb24oXyxwcmVmaWx0ZXJPckZhY3Rvcnkpe3ZhciBkYXRhVHlwZU9yVHJhbnNwb3J0PXByZWZpbHRlck9yRmFjdG9yeShvcHRpb25zLG9yaWdpbmFsT3B0aW9ucyxqcVhIUik7cmV0dXJuXCJzdHJpbmdcIiE9dHlwZW9mIGRhdGFUeXBlT3JUcmFuc3BvcnR8fHNlZWtpbmdUcmFuc3BvcnR8fGluc3BlY3RlZFtkYXRhVHlwZU9yVHJhbnNwb3J0XT9zZWVraW5nVHJhbnNwb3J0PyEoc2VsZWN0ZWQ9ZGF0YVR5cGVPclRyYW5zcG9ydCk6dm9pZCAwOihvcHRpb25zLmRhdGFUeXBlcy51bnNoaWZ0KGRhdGFUeXBlT3JUcmFuc3BvcnQpLGluc3BlY3QoZGF0YVR5cGVPclRyYW5zcG9ydCksITEpfSksc2VsZWN0ZWR9dmFyIGluc3BlY3RlZD17fSxzZWVraW5nVHJhbnNwb3J0PXN0cnVjdHVyZT09PXRyYW5zcG9ydHM7cmV0dXJuIGluc3BlY3Qob3B0aW9ucy5kYXRhVHlwZXNbMF0pfHwhaW5zcGVjdGVkW1wiKlwiXSYmaW5zcGVjdChcIipcIil9ZnVuY3Rpb24gYWpheEV4dGVuZCh0YXJnZXQsc3JjKXt2YXIgZGVlcCxrZXksZmxhdE9wdGlvbnM9alF1ZXJ5LmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKGtleSBpbiBzcmMpdm9pZCAwIT09c3JjW2tleV0mJigoZmxhdE9wdGlvbnNba2V5XT90YXJnZXQ6ZGVlcHx8KGRlZXA9e30pKVtrZXldPXNyY1trZXldKTtyZXR1cm4gZGVlcCYmalF1ZXJ5LmV4dGVuZCghMCx0YXJnZXQsZGVlcCksdGFyZ2V0fWZ1bmN0aW9uIGFqYXhIYW5kbGVSZXNwb25zZXMocyxqcVhIUixyZXNwb25zZXMpe2Zvcih2YXIgZmlyc3REYXRhVHlwZSxjdCxmaW5hbERhdGFUeXBlLHR5cGUsY29udGVudHM9cy5jb250ZW50cyxkYXRhVHlwZXM9cy5kYXRhVHlwZXM7XCIqXCI9PT1kYXRhVHlwZXNbMF07KWRhdGFUeXBlcy5zaGlmdCgpLHZvaWQgMD09PWN0JiYoY3Q9cy5taW1lVHlwZXx8anFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoXCJDb250ZW50LVR5cGVcIikpO2lmKGN0KWZvcih0eXBlIGluIGNvbnRlbnRzKWlmKGNvbnRlbnRzW3R5cGVdJiZjb250ZW50c1t0eXBlXS50ZXN0KGN0KSl7ZGF0YVR5cGVzLnVuc2hpZnQodHlwZSk7YnJlYWt9aWYoZGF0YVR5cGVzWzBdaW4gcmVzcG9uc2VzKWZpbmFsRGF0YVR5cGU9ZGF0YVR5cGVzWzBdO2Vsc2V7Zm9yKHR5cGUgaW4gcmVzcG9uc2VzKXtpZighZGF0YVR5cGVzWzBdfHxzLmNvbnZlcnRlcnNbdHlwZStcIiBcIitkYXRhVHlwZXNbMF1dKXtmaW5hbERhdGFUeXBlPXR5cGU7YnJlYWt9Zmlyc3REYXRhVHlwZXx8KGZpcnN0RGF0YVR5cGU9dHlwZSl9ZmluYWxEYXRhVHlwZT1maW5hbERhdGFUeXBlfHxmaXJzdERhdGFUeXBlfXJldHVybiBmaW5hbERhdGFUeXBlPyhmaW5hbERhdGFUeXBlIT09ZGF0YVR5cGVzWzBdJiZkYXRhVHlwZXMudW5zaGlmdChmaW5hbERhdGFUeXBlKSxyZXNwb25zZXNbZmluYWxEYXRhVHlwZV0pOnZvaWQgMH1mdW5jdGlvbiBhamF4Q29udmVydChzLHJlc3BvbnNlLGpxWEhSLGlzU3VjY2Vzcyl7dmFyIGNvbnYyLGN1cnJlbnQsY29udix0bXAscHJldixjb252ZXJ0ZXJzPXt9LGRhdGFUeXBlcz1zLmRhdGFUeXBlcy5zbGljZSgpO2lmKGRhdGFUeXBlc1sxXSlmb3IoY29udiBpbiBzLmNvbnZlcnRlcnMpY29udmVydGVyc1tjb252LnRvTG93ZXJDYXNlKCldPXMuY29udmVydGVyc1tjb252XTtmb3IoY3VycmVudD1kYXRhVHlwZXMuc2hpZnQoKTtjdXJyZW50OylpZihzLnJlc3BvbnNlRmllbGRzW2N1cnJlbnRdJiYoanFYSFJbcy5yZXNwb25zZUZpZWxkc1tjdXJyZW50XV09cmVzcG9uc2UpLCFwcmV2JiZpc1N1Y2Nlc3MmJnMuZGF0YUZpbHRlciYmKHJlc3BvbnNlPXMuZGF0YUZpbHRlcihyZXNwb25zZSxzLmRhdGFUeXBlKSkscHJldj1jdXJyZW50LGN1cnJlbnQ9ZGF0YVR5cGVzLnNoaWZ0KCkpaWYoXCIqXCI9PT1jdXJyZW50KWN1cnJlbnQ9cHJldjtlbHNlIGlmKFwiKlwiIT09cHJldiYmcHJldiE9PWN1cnJlbnQpe2lmKGNvbnY9Y29udmVydGVyc1twcmV2K1wiIFwiK2N1cnJlbnRdfHxjb252ZXJ0ZXJzW1wiKiBcIitjdXJyZW50XSwhY29udilmb3IoY29udjIgaW4gY29udmVydGVycylpZih0bXA9Y29udjIuc3BsaXQoXCIgXCIpLHRtcFsxXT09PWN1cnJlbnQmJihjb252PWNvbnZlcnRlcnNbcHJlditcIiBcIit0bXBbMF1dfHxjb252ZXJ0ZXJzW1wiKiBcIit0bXBbMF1dKSl7Y29udj09PSEwP2NvbnY9Y29udmVydGVyc1tjb252Ml06Y29udmVydGVyc1tjb252Ml0hPT0hMCYmKGN1cnJlbnQ9dG1wWzBdLGRhdGFUeXBlcy51bnNoaWZ0KHRtcFsxXSkpO2JyZWFrfWlmKGNvbnYhPT0hMClpZihjb252JiZzW1widGhyb3dzXCJdKXJlc3BvbnNlPWNvbnYocmVzcG9uc2UpO2Vsc2UgdHJ5e3Jlc3BvbnNlPWNvbnYocmVzcG9uc2UpfWNhdGNoKGUpe3JldHVybntzdGF0ZTpcInBhcnNlcmVycm9yXCIsZXJyb3I6Y29udj9lOlwiTm8gY29udmVyc2lvbiBmcm9tIFwiK3ByZXYrXCIgdG8gXCIrY3VycmVudH19fXJldHVybntzdGF0ZTpcInN1Y2Nlc3NcIixkYXRhOnJlc3BvbnNlfX1mdW5jdGlvbiBidWlsZFBhcmFtcyhwcmVmaXgsb2JqLHRyYWRpdGlvbmFsLGFkZCl7dmFyIG5hbWU7aWYoalF1ZXJ5LmlzQXJyYXkob2JqKSlqUXVlcnkuZWFjaChvYmosZnVuY3Rpb24oaSx2KXt0cmFkaXRpb25hbHx8cmJyYWNrZXQudGVzdChwcmVmaXgpP2FkZChwcmVmaXgsdik6YnVpbGRQYXJhbXMocHJlZml4K1wiW1wiKyhcIm9iamVjdFwiPT10eXBlb2Ygdj9pOlwiXCIpK1wiXVwiLHYsdHJhZGl0aW9uYWwsYWRkKX0pO2Vsc2UgaWYodHJhZGl0aW9uYWx8fFwib2JqZWN0XCIhPT1qUXVlcnkudHlwZShvYmopKWFkZChwcmVmaXgsb2JqKTtlbHNlIGZvcihuYW1lIGluIG9iailidWlsZFBhcmFtcyhwcmVmaXgrXCJbXCIrbmFtZStcIl1cIixvYmpbbmFtZV0sdHJhZGl0aW9uYWwsYWRkKX1mdW5jdGlvbiBjcmVhdGVTdGFuZGFyZFhIUigpe3RyeXtyZXR1cm4gbmV3IHdpbmRvdy5YTUxIdHRwUmVxdWVzdH1jYXRjaChlKXt9fWZ1bmN0aW9uIGNyZWF0ZUFjdGl2ZVhIUigpe3RyeXtyZXR1cm4gbmV3IHdpbmRvdy5BY3RpdmVYT2JqZWN0KFwiTWljcm9zb2Z0LlhNTEhUVFBcIil9Y2F0Y2goZSl7fX1mdW5jdGlvbiBnZXRXaW5kb3coZWxlbSl7cmV0dXJuIGpRdWVyeS5pc1dpbmRvdyhlbGVtKT9lbGVtOjk9PT1lbGVtLm5vZGVUeXBlP2VsZW0uZGVmYXVsdFZpZXd8fGVsZW0ucGFyZW50V2luZG93OiExfXZhciBkZWxldGVkSWRzPVtdLHNsaWNlPWRlbGV0ZWRJZHMuc2xpY2UsY29uY2F0PWRlbGV0ZWRJZHMuY29uY2F0LHB1c2g9ZGVsZXRlZElkcy5wdXNoLGluZGV4T2Y9ZGVsZXRlZElkcy5pbmRleE9mLGNsYXNzMnR5cGU9e30sdG9TdHJpbmc9Y2xhc3MydHlwZS50b1N0cmluZyxoYXNPd249Y2xhc3MydHlwZS5oYXNPd25Qcm9wZXJ0eSxzdXBwb3J0PXt9LHZlcnNpb249XCIxLjExLjNcIixqUXVlcnk9ZnVuY3Rpb24oc2VsZWN0b3IsY29udGV4dCl7cmV0dXJuIG5ldyBqUXVlcnkuZm4uaW5pdChzZWxlY3Rvcixjb250ZXh0KX0scnRyaW09L15bXFxzXFx1RkVGRlxceEEwXSt8W1xcc1xcdUZFRkZcXHhBMF0rJC9nLHJtc1ByZWZpeD0vXi1tcy0vLHJkYXNoQWxwaGE9Ly0oW1xcZGEtel0pL2dpLGZjYW1lbENhc2U9ZnVuY3Rpb24oYWxsLGxldHRlcil7cmV0dXJuIGxldHRlci50b1VwcGVyQ2FzZSgpfTtqUXVlcnkuZm49alF1ZXJ5LnByb3RvdHlwZT17anF1ZXJ5OnZlcnNpb24sY29uc3RydWN0b3I6alF1ZXJ5LHNlbGVjdG9yOlwiXCIsbGVuZ3RoOjAsdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBzbGljZS5jYWxsKHRoaXMpfSxnZXQ6ZnVuY3Rpb24obnVtKXtyZXR1cm4gbnVsbCE9bnVtPzA+bnVtP3RoaXNbbnVtK3RoaXMubGVuZ3RoXTp0aGlzW251bV06c2xpY2UuY2FsbCh0aGlzKX0scHVzaFN0YWNrOmZ1bmN0aW9uKGVsZW1zKXt2YXIgcmV0PWpRdWVyeS5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksZWxlbXMpO3JldHVybiByZXQucHJldk9iamVjdD10aGlzLHJldC5jb250ZXh0PXRoaXMuY29udGV4dCxyZXR9LGVhY2g6ZnVuY3Rpb24oY2FsbGJhY2ssYXJncyl7cmV0dXJuIGpRdWVyeS5lYWNoKHRoaXMsY2FsbGJhY2ssYXJncyl9LG1hcDpmdW5jdGlvbihjYWxsYmFjayl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGpRdWVyeS5tYXAodGhpcyxmdW5jdGlvbihlbGVtLGkpe3JldHVybiBjYWxsYmFjay5jYWxsKGVsZW0saSxlbGVtKX0pKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soc2xpY2UuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sZXE6ZnVuY3Rpb24oaSl7dmFyIGxlbj10aGlzLmxlbmd0aCxqPStpKygwPmk/bGVuOjApO3JldHVybiB0aGlzLnB1c2hTdGFjayhqPj0wJiZsZW4+aj9bdGhpc1tqXV06W10pfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKG51bGwpfSxwdXNoOnB1c2gsc29ydDpkZWxldGVkSWRzLnNvcnQsc3BsaWNlOmRlbGV0ZWRJZHMuc3BsaWNlfSxqUXVlcnkuZXh0ZW5kPWpRdWVyeS5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgc3JjLGNvcHlJc0FycmF5LGNvcHksbmFtZSxvcHRpb25zLGNsb25lLHRhcmdldD1hcmd1bWVudHNbMF18fHt9LGk9MSxsZW5ndGg9YXJndW1lbnRzLmxlbmd0aCxkZWVwPSExO2ZvcihcImJvb2xlYW5cIj09dHlwZW9mIHRhcmdldCYmKGRlZXA9dGFyZ2V0LHRhcmdldD1hcmd1bWVudHNbaV18fHt9LGkrKyksXCJvYmplY3RcIj09dHlwZW9mIHRhcmdldHx8alF1ZXJ5LmlzRnVuY3Rpb24odGFyZ2V0KXx8KHRhcmdldD17fSksaT09PWxlbmd0aCYmKHRhcmdldD10aGlzLGktLSk7bGVuZ3RoPmk7aSsrKWlmKG51bGwhPShvcHRpb25zPWFyZ3VtZW50c1tpXSkpZm9yKG5hbWUgaW4gb3B0aW9ucylzcmM9dGFyZ2V0W25hbWVdLGNvcHk9b3B0aW9uc1tuYW1lXSx0YXJnZXQhPT1jb3B5JiYoZGVlcCYmY29weSYmKGpRdWVyeS5pc1BsYWluT2JqZWN0KGNvcHkpfHwoY29weUlzQXJyYXk9alF1ZXJ5LmlzQXJyYXkoY29weSkpKT8oY29weUlzQXJyYXk/KGNvcHlJc0FycmF5PSExLGNsb25lPXNyYyYmalF1ZXJ5LmlzQXJyYXkoc3JjKT9zcmM6W10pOmNsb25lPXNyYyYmalF1ZXJ5LmlzUGxhaW5PYmplY3Qoc3JjKT9zcmM6e30sdGFyZ2V0W25hbWVdPWpRdWVyeS5leHRlbmQoZGVlcCxjbG9uZSxjb3B5KSk6dm9pZCAwIT09Y29weSYmKHRhcmdldFtuYW1lXT1jb3B5KSk7cmV0dXJuIHRhcmdldH0salF1ZXJ5LmV4dGVuZCh7ZXhwYW5kbzpcImpRdWVyeVwiKyh2ZXJzaW9uK01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xcRC9nLFwiXCIpLGlzUmVhZHk6ITAsZXJyb3I6ZnVuY3Rpb24obXNnKXt0aHJvdyBuZXcgRXJyb3IobXNnKX0sbm9vcDpmdW5jdGlvbigpe30saXNGdW5jdGlvbjpmdW5jdGlvbihvYmope3JldHVyblwiZnVuY3Rpb25cIj09PWpRdWVyeS50eXBlKG9iail9LGlzQXJyYXk6QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24ob2JqKXtyZXR1cm5cImFycmF5XCI9PT1qUXVlcnkudHlwZShvYmopfSxpc1dpbmRvdzpmdW5jdGlvbihvYmope3JldHVybiBudWxsIT1vYmomJm9iaj09b2JqLndpbmRvd30saXNOdW1lcmljOmZ1bmN0aW9uKG9iail7cmV0dXJuIWpRdWVyeS5pc0FycmF5KG9iaikmJm9iai1wYXJzZUZsb2F0KG9iaikrMT49MH0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihvYmope3ZhciBuYW1lO2ZvcihuYW1lIGluIG9iailyZXR1cm4hMTtyZXR1cm4hMH0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihvYmope3ZhciBrZXk7aWYoIW9ianx8XCJvYmplY3RcIiE9PWpRdWVyeS50eXBlKG9iail8fG9iai5ub2RlVHlwZXx8alF1ZXJ5LmlzV2luZG93KG9iaikpcmV0dXJuITE7dHJ5e2lmKG9iai5jb25zdHJ1Y3RvciYmIWhhc093bi5jYWxsKG9iaixcImNvbnN0cnVjdG9yXCIpJiYhaGFzT3duLmNhbGwob2JqLmNvbnN0cnVjdG9yLnByb3RvdHlwZSxcImlzUHJvdG90eXBlT2ZcIikpcmV0dXJuITF9Y2F0Y2goZSl7cmV0dXJuITF9aWYoc3VwcG9ydC5vd25MYXN0KWZvcihrZXkgaW4gb2JqKXJldHVybiBoYXNPd24uY2FsbChvYmosa2V5KTtmb3Ioa2V5IGluIG9iaik7cmV0dXJuIHZvaWQgMD09PWtleXx8aGFzT3duLmNhbGwob2JqLGtleSl9LHR5cGU6ZnVuY3Rpb24ob2JqKXtyZXR1cm4gbnVsbD09b2JqP29iaitcIlwiOlwib2JqZWN0XCI9PXR5cGVvZiBvYmp8fFwiZnVuY3Rpb25cIj09dHlwZW9mIG9iaj9jbGFzczJ0eXBlW3RvU3RyaW5nLmNhbGwob2JqKV18fFwib2JqZWN0XCI6dHlwZW9mIG9ian0sZ2xvYmFsRXZhbDpmdW5jdGlvbihkYXRhKXtkYXRhJiZqUXVlcnkudHJpbShkYXRhKSYmKHdpbmRvdy5leGVjU2NyaXB0fHxmdW5jdGlvbihkYXRhKXt3aW5kb3cuZXZhbC5jYWxsKHdpbmRvdyxkYXRhKX0pKGRhdGEpfSxjYW1lbENhc2U6ZnVuY3Rpb24oc3RyaW5nKXtyZXR1cm4gc3RyaW5nLnJlcGxhY2Uocm1zUHJlZml4LFwibXMtXCIpLnJlcGxhY2UocmRhc2hBbHBoYSxmY2FtZWxDYXNlKX0sbm9kZU5hbWU6ZnVuY3Rpb24oZWxlbSxuYW1lKXtyZXR1cm4gZWxlbS5ub2RlTmFtZSYmZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09bmFtZS50b0xvd2VyQ2FzZSgpfSxlYWNoOmZ1bmN0aW9uKG9iaixjYWxsYmFjayxhcmdzKXt2YXIgdmFsdWUsaT0wLGxlbmd0aD1vYmoubGVuZ3RoLGlzQXJyYXk9aXNBcnJheWxpa2Uob2JqKTtpZihhcmdzKXtpZihpc0FycmF5KWZvcig7bGVuZ3RoPmkmJih2YWx1ZT1jYWxsYmFjay5hcHBseShvYmpbaV0sYXJncyksdmFsdWUhPT0hMSk7aSsrKTtlbHNlIGZvcihpIGluIG9iailpZih2YWx1ZT1jYWxsYmFjay5hcHBseShvYmpbaV0sYXJncyksdmFsdWU9PT0hMSlicmVha31lbHNlIGlmKGlzQXJyYXkpZm9yKDtsZW5ndGg+aSYmKHZhbHVlPWNhbGxiYWNrLmNhbGwob2JqW2ldLGksb2JqW2ldKSx2YWx1ZSE9PSExKTtpKyspO2Vsc2UgZm9yKGkgaW4gb2JqKWlmKHZhbHVlPWNhbGxiYWNrLmNhbGwob2JqW2ldLGksb2JqW2ldKSx2YWx1ZT09PSExKWJyZWFrO3JldHVybiBvYmp9LHRyaW06ZnVuY3Rpb24odGV4dCl7cmV0dXJuIG51bGw9PXRleHQ/XCJcIjoodGV4dCtcIlwiKS5yZXBsYWNlKHJ0cmltLFwiXCIpfSxtYWtlQXJyYXk6ZnVuY3Rpb24oYXJyLHJlc3VsdHMpe3ZhciByZXQ9cmVzdWx0c3x8W107cmV0dXJuIG51bGwhPWFyciYmKGlzQXJyYXlsaWtlKE9iamVjdChhcnIpKT9qUXVlcnkubWVyZ2UocmV0LFwic3RyaW5nXCI9PXR5cGVvZiBhcnI/W2Fycl06YXJyKTpwdXNoLmNhbGwocmV0LGFycikpLHJldH0saW5BcnJheTpmdW5jdGlvbihlbGVtLGFycixpKXt2YXIgbGVuO2lmKGFycil7aWYoaW5kZXhPZilyZXR1cm4gaW5kZXhPZi5jYWxsKGFycixlbGVtLGkpO2ZvcihsZW49YXJyLmxlbmd0aCxpPWk/MD5pP01hdGgubWF4KDAsbGVuK2kpOmk6MDtsZW4+aTtpKyspaWYoaSBpbiBhcnImJmFycltpXT09PWVsZW0pcmV0dXJuIGl9cmV0dXJuLTF9LG1lcmdlOmZ1bmN0aW9uKGZpcnN0LHNlY29uZCl7Zm9yKHZhciBsZW49K3NlY29uZC5sZW5ndGgsaj0wLGk9Zmlyc3QubGVuZ3RoO2xlbj5qOylmaXJzdFtpKytdPXNlY29uZFtqKytdO2lmKGxlbiE9PWxlbilmb3IoO3ZvaWQgMCE9PXNlY29uZFtqXTspZmlyc3RbaSsrXT1zZWNvbmRbaisrXTtyZXR1cm4gZmlyc3QubGVuZ3RoPWksZmlyc3R9LGdyZXA6ZnVuY3Rpb24oZWxlbXMsY2FsbGJhY2ssaW52ZXJ0KXtmb3IodmFyIGNhbGxiYWNrSW52ZXJzZSxtYXRjaGVzPVtdLGk9MCxsZW5ndGg9ZWxlbXMubGVuZ3RoLGNhbGxiYWNrRXhwZWN0PSFpbnZlcnQ7bGVuZ3RoPmk7aSsrKWNhbGxiYWNrSW52ZXJzZT0hY2FsbGJhY2soZWxlbXNbaV0saSksY2FsbGJhY2tJbnZlcnNlIT09Y2FsbGJhY2tFeHBlY3QmJm1hdGNoZXMucHVzaChlbGVtc1tpXSk7cmV0dXJuIG1hdGNoZXN9LG1hcDpmdW5jdGlvbihlbGVtcyxjYWxsYmFjayxhcmcpe3ZhciB2YWx1ZSxpPTAsbGVuZ3RoPWVsZW1zLmxlbmd0aCxpc0FycmF5PWlzQXJyYXlsaWtlKGVsZW1zKSxyZXQ9W107aWYoaXNBcnJheSlmb3IoO2xlbmd0aD5pO2krKyl2YWx1ZT1jYWxsYmFjayhlbGVtc1tpXSxpLGFyZyksbnVsbCE9dmFsdWUmJnJldC5wdXNoKHZhbHVlKTtlbHNlIGZvcihpIGluIGVsZW1zKXZhbHVlPWNhbGxiYWNrKGVsZW1zW2ldLGksYXJnKSxudWxsIT12YWx1ZSYmcmV0LnB1c2godmFsdWUpO3JldHVybiBjb25jYXQuYXBwbHkoW10scmV0KX0sZ3VpZDoxLHByb3h5OmZ1bmN0aW9uKGZuLGNvbnRleHQpe3ZhciBhcmdzLHByb3h5LHRtcDtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgY29udGV4dCYmKHRtcD1mbltjb250ZXh0XSxjb250ZXh0PWZuLGZuPXRtcCksalF1ZXJ5LmlzRnVuY3Rpb24oZm4pPyhhcmdzPXNsaWNlLmNhbGwoYXJndW1lbnRzLDIpLHByb3h5PWZ1bmN0aW9uKCl7cmV0dXJuIGZuLmFwcGx5KGNvbnRleHR8fHRoaXMsYXJncy5jb25jYXQoc2xpY2UuY2FsbChhcmd1bWVudHMpKSl9LHByb3h5Lmd1aWQ9Zm4uZ3VpZD1mbi5ndWlkfHxqUXVlcnkuZ3VpZCsrLHByb3h5KTp2b2lkIDB9LG5vdzpmdW5jdGlvbigpe3JldHVybituZXcgRGF0ZX0sc3VwcG9ydDpzdXBwb3J0fSksalF1ZXJ5LmVhY2goXCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yXCIuc3BsaXQoXCIgXCIpLGZ1bmN0aW9uKGksbmFtZSl7Y2xhc3MydHlwZVtcIltvYmplY3QgXCIrbmFtZStcIl1cIl09bmFtZS50b0xvd2VyQ2FzZSgpfSk7dmFyIFNpenpsZT1mdW5jdGlvbih3aW5kb3cpe2Z1bmN0aW9uIFNpenpsZShzZWxlY3Rvcixjb250ZXh0LHJlc3VsdHMsc2VlZCl7dmFyIG1hdGNoLGVsZW0sbSxub2RlVHlwZSxpLGdyb3VwcyxvbGQsbmlkLG5ld0NvbnRleHQsbmV3U2VsZWN0b3I7aWYoKGNvbnRleHQ/Y29udGV4dC5vd25lckRvY3VtZW50fHxjb250ZXh0OnByZWZlcnJlZERvYykhPT1kb2N1bWVudCYmc2V0RG9jdW1lbnQoY29udGV4dCksY29udGV4dD1jb250ZXh0fHxkb2N1bWVudCxyZXN1bHRzPXJlc3VsdHN8fFtdLG5vZGVUeXBlPWNvbnRleHQubm9kZVR5cGUsXCJzdHJpbmdcIiE9dHlwZW9mIHNlbGVjdG9yfHwhc2VsZWN0b3J8fDEhPT1ub2RlVHlwZSYmOSE9PW5vZGVUeXBlJiYxMSE9PW5vZGVUeXBlKXJldHVybiByZXN1bHRzO2lmKCFzZWVkJiZkb2N1bWVudElzSFRNTCl7aWYoMTEhPT1ub2RlVHlwZSYmKG1hdGNoPXJxdWlja0V4cHIuZXhlYyhzZWxlY3RvcikpKWlmKG09bWF0Y2hbMV0pe2lmKDk9PT1ub2RlVHlwZSl7aWYoZWxlbT1jb250ZXh0LmdldEVsZW1lbnRCeUlkKG0pLCFlbGVtfHwhZWxlbS5wYXJlbnROb2RlKXJldHVybiByZXN1bHRzO2lmKGVsZW0uaWQ9PT1tKXJldHVybiByZXN1bHRzLnB1c2goZWxlbSkscmVzdWx0c31lbHNlIGlmKGNvbnRleHQub3duZXJEb2N1bWVudCYmKGVsZW09Y29udGV4dC5vd25lckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG0pKSYmY29udGFpbnMoY29udGV4dCxlbGVtKSYmZWxlbS5pZD09PW0pcmV0dXJuIHJlc3VsdHMucHVzaChlbGVtKSxyZXN1bHRzfWVsc2V7aWYobWF0Y2hbMl0pcmV0dXJuIHB1c2guYXBwbHkocmVzdWx0cyxjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKHNlbGVjdG9yKSkscmVzdWx0cztpZigobT1tYXRjaFszXSkmJnN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSlyZXR1cm4gcHVzaC5hcHBseShyZXN1bHRzLGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShtKSkscmVzdWx0c31pZihzdXBwb3J0LnFzYSYmKCFyYnVnZ3lRU0F8fCFyYnVnZ3lRU0EudGVzdChzZWxlY3RvcikpKXtpZihuaWQ9b2xkPWV4cGFuZG8sbmV3Q29udGV4dD1jb250ZXh0LG5ld1NlbGVjdG9yPTEhPT1ub2RlVHlwZSYmc2VsZWN0b3IsMT09PW5vZGVUeXBlJiZcIm9iamVjdFwiIT09Y29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXtmb3IoZ3JvdXBzPXRva2VuaXplKHNlbGVjdG9yKSwob2xkPWNvbnRleHQuZ2V0QXR0cmlidXRlKFwiaWRcIikpP25pZD1vbGQucmVwbGFjZShyZXNjYXBlLFwiXFxcXCQmXCIpOmNvbnRleHQuc2V0QXR0cmlidXRlKFwiaWRcIixuaWQpLG5pZD1cIltpZD0nXCIrbmlkK1wiJ10gXCIsaT1ncm91cHMubGVuZ3RoO2ktLTspZ3JvdXBzW2ldPW5pZCt0b1NlbGVjdG9yKGdyb3Vwc1tpXSk7bmV3Q29udGV4dD1yc2libGluZy50ZXN0KHNlbGVjdG9yKSYmdGVzdENvbnRleHQoY29udGV4dC5wYXJlbnROb2RlKXx8Y29udGV4dCxuZXdTZWxlY3Rvcj1ncm91cHMuam9pbihcIixcIil9aWYobmV3U2VsZWN0b3IpdHJ5e3JldHVybiBwdXNoLmFwcGx5KHJlc3VsdHMsbmV3Q29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKG5ld1NlbGVjdG9yKSkscmVzdWx0c31jYXRjaChxc2FFcnJvcil7fWZpbmFsbHl7b2xkfHxjb250ZXh0LnJlbW92ZUF0dHJpYnV0ZShcImlkXCIpfX19cmV0dXJuIHNlbGVjdChzZWxlY3Rvci5yZXBsYWNlKHJ0cmltLFwiJDFcIiksY29udGV4dCxyZXN1bHRzLHNlZWQpfWZ1bmN0aW9uIGNyZWF0ZUNhY2hlKCl7ZnVuY3Rpb24gY2FjaGUoa2V5LHZhbHVlKXtyZXR1cm4ga2V5cy5wdXNoKGtleStcIiBcIik+RXhwci5jYWNoZUxlbmd0aCYmZGVsZXRlIGNhY2hlW2tleXMuc2hpZnQoKV0sY2FjaGVba2V5K1wiIFwiXT12YWx1ZX12YXIga2V5cz1bXTtyZXR1cm4gY2FjaGV9ZnVuY3Rpb24gbWFya0Z1bmN0aW9uKGZuKXtyZXR1cm4gZm5bZXhwYW5kb109ITAsZm59ZnVuY3Rpb24gYXNzZXJ0KGZuKXt2YXIgZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7dHJ5e3JldHVybiEhZm4oZGl2KX1jYXRjaChlKXtyZXR1cm4hMX1maW5hbGx5e2Rpdi5wYXJlbnROb2RlJiZkaXYucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChkaXYpLGRpdj1udWxsfX1mdW5jdGlvbiBhZGRIYW5kbGUoYXR0cnMsaGFuZGxlcil7Zm9yKHZhciBhcnI9YXR0cnMuc3BsaXQoXCJ8XCIpLGk9YXR0cnMubGVuZ3RoO2ktLTspRXhwci5hdHRySGFuZGxlW2FycltpXV09aGFuZGxlcn1mdW5jdGlvbiBzaWJsaW5nQ2hlY2soYSxiKXt2YXIgY3VyPWImJmEsZGlmZj1jdXImJjE9PT1hLm5vZGVUeXBlJiYxPT09Yi5ub2RlVHlwZSYmKH5iLnNvdXJjZUluZGV4fHxNQVhfTkVHQVRJVkUpLSh+YS5zb3VyY2VJbmRleHx8TUFYX05FR0FUSVZFKTtpZihkaWZmKXJldHVybiBkaWZmO2lmKGN1cilmb3IoO2N1cj1jdXIubmV4dFNpYmxpbmc7KWlmKGN1cj09PWIpcmV0dXJuLTE7cmV0dXJuIGE/MTotMX1mdW5jdGlvbiBjcmVhdGVJbnB1dFBzZXVkbyh0eXBlKXtyZXR1cm4gZnVuY3Rpb24oZWxlbSl7dmFyIG5hbWU9ZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVyblwiaW5wdXRcIj09PW5hbWUmJmVsZW0udHlwZT09PXR5cGV9fWZ1bmN0aW9uIGNyZWF0ZUJ1dHRvblBzZXVkbyh0eXBlKXtyZXR1cm4gZnVuY3Rpb24oZWxlbSl7dmFyIG5hbWU9ZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybihcImlucHV0XCI9PT1uYW1lfHxcImJ1dHRvblwiPT09bmFtZSkmJmVsZW0udHlwZT09PXR5cGV9fWZ1bmN0aW9uIGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZm4pe3JldHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oYXJndW1lbnQpe3JldHVybiBhcmd1bWVudD0rYXJndW1lbnQsbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKHNlZWQsbWF0Y2hlcyl7Zm9yKHZhciBqLG1hdGNoSW5kZXhlcz1mbihbXSxzZWVkLmxlbmd0aCxhcmd1bWVudCksaT1tYXRjaEluZGV4ZXMubGVuZ3RoO2ktLTspc2VlZFtqPW1hdGNoSW5kZXhlc1tpXV0mJihzZWVkW2pdPSEobWF0Y2hlc1tqXT1zZWVkW2pdKSl9KX0pfWZ1bmN0aW9uIHRlc3RDb250ZXh0KGNvbnRleHQpe3JldHVybiBjb250ZXh0JiZcInVuZGVmaW5lZFwiIT10eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSYmY29udGV4dH1mdW5jdGlvbiBzZXRGaWx0ZXJzKCl7fWZ1bmN0aW9uIHRvU2VsZWN0b3IodG9rZW5zKXtmb3IodmFyIGk9MCxsZW49dG9rZW5zLmxlbmd0aCxzZWxlY3Rvcj1cIlwiO2xlbj5pO2krKylzZWxlY3Rvcis9dG9rZW5zW2ldLnZhbHVlO3JldHVybiBzZWxlY3Rvcn1mdW5jdGlvbiBhZGRDb21iaW5hdG9yKG1hdGNoZXIsY29tYmluYXRvcixiYXNlKXt2YXIgZGlyPWNvbWJpbmF0b3IuZGlyLGNoZWNrTm9uRWxlbWVudHM9YmFzZSYmXCJwYXJlbnROb2RlXCI9PT1kaXIsZG9uZU5hbWU9ZG9uZSsrO3JldHVybiBjb21iaW5hdG9yLmZpcnN0P2Z1bmN0aW9uKGVsZW0sY29udGV4dCx4bWwpe2Zvcig7ZWxlbT1lbGVtW2Rpcl07KWlmKDE9PT1lbGVtLm5vZGVUeXBlfHxjaGVja05vbkVsZW1lbnRzKXJldHVybiBtYXRjaGVyKGVsZW0sY29udGV4dCx4bWwpfTpmdW5jdGlvbihlbGVtLGNvbnRleHQseG1sKXt2YXIgb2xkQ2FjaGUsb3V0ZXJDYWNoZSxuZXdDYWNoZT1bZGlycnVucyxkb25lTmFtZV07aWYoeG1sKXtmb3IoO2VsZW09ZWxlbVtkaXJdOylpZigoMT09PWVsZW0ubm9kZVR5cGV8fGNoZWNrTm9uRWxlbWVudHMpJiZtYXRjaGVyKGVsZW0sY29udGV4dCx4bWwpKXJldHVybiEwfWVsc2UgZm9yKDtlbGVtPWVsZW1bZGlyXTspaWYoMT09PWVsZW0ubm9kZVR5cGV8fGNoZWNrTm9uRWxlbWVudHMpe2lmKG91dGVyQ2FjaGU9ZWxlbVtleHBhbmRvXXx8KGVsZW1bZXhwYW5kb109e30pLChvbGRDYWNoZT1vdXRlckNhY2hlW2Rpcl0pJiZvbGRDYWNoZVswXT09PWRpcnJ1bnMmJm9sZENhY2hlWzFdPT09ZG9uZU5hbWUpcmV0dXJuIG5ld0NhY2hlWzJdPW9sZENhY2hlWzJdO2lmKG91dGVyQ2FjaGVbZGlyXT1uZXdDYWNoZSxuZXdDYWNoZVsyXT1tYXRjaGVyKGVsZW0sY29udGV4dCx4bWwpKXJldHVybiEwfX19ZnVuY3Rpb24gZWxlbWVudE1hdGNoZXIobWF0Y2hlcnMpe3JldHVybiBtYXRjaGVycy5sZW5ndGg+MT9mdW5jdGlvbihlbGVtLGNvbnRleHQseG1sKXtmb3IodmFyIGk9bWF0Y2hlcnMubGVuZ3RoO2ktLTspaWYoIW1hdGNoZXJzW2ldKGVsZW0sY29udGV4dCx4bWwpKXJldHVybiExO3JldHVybiEwfTptYXRjaGVyc1swXX1mdW5jdGlvbiBtdWx0aXBsZUNvbnRleHRzKHNlbGVjdG9yLGNvbnRleHRzLHJlc3VsdHMpe2Zvcih2YXIgaT0wLGxlbj1jb250ZXh0cy5sZW5ndGg7bGVuPmk7aSsrKVNpenpsZShzZWxlY3Rvcixjb250ZXh0c1tpXSxyZXN1bHRzKTtyZXR1cm4gcmVzdWx0c31mdW5jdGlvbiBjb25kZW5zZSh1bm1hdGNoZWQsbWFwLGZpbHRlcixjb250ZXh0LHhtbCl7Zm9yKHZhciBlbGVtLG5ld1VubWF0Y2hlZD1bXSxpPTAsbGVuPXVubWF0Y2hlZC5sZW5ndGgsbWFwcGVkPW51bGwhPW1hcDtsZW4+aTtpKyspKGVsZW09dW5tYXRjaGVkW2ldKSYmKCFmaWx0ZXJ8fGZpbHRlcihlbGVtLGNvbnRleHQseG1sKSkmJihuZXdVbm1hdGNoZWQucHVzaChlbGVtKSxtYXBwZWQmJm1hcC5wdXNoKGkpKTtyZXR1cm4gbmV3VW5tYXRjaGVkfWZ1bmN0aW9uIHNldE1hdGNoZXIocHJlRmlsdGVyLHNlbGVjdG9yLG1hdGNoZXIscG9zdEZpbHRlcixwb3N0RmluZGVyLHBvc3RTZWxlY3Rvcil7cmV0dXJuIHBvc3RGaWx0ZXImJiFwb3N0RmlsdGVyW2V4cGFuZG9dJiYocG9zdEZpbHRlcj1zZXRNYXRjaGVyKHBvc3RGaWx0ZXIpKSxwb3N0RmluZGVyJiYhcG9zdEZpbmRlcltleHBhbmRvXSYmKHBvc3RGaW5kZXI9c2V0TWF0Y2hlcihwb3N0RmluZGVyLHBvc3RTZWxlY3RvcikpLG1hcmtGdW5jdGlvbihmdW5jdGlvbihzZWVkLHJlc3VsdHMsY29udGV4dCx4bWwpe3ZhciB0ZW1wLGksZWxlbSxwcmVNYXA9W10scG9zdE1hcD1bXSxwcmVleGlzdGluZz1yZXN1bHRzLmxlbmd0aCxlbGVtcz1zZWVkfHxtdWx0aXBsZUNvbnRleHRzKHNlbGVjdG9yfHxcIipcIixjb250ZXh0Lm5vZGVUeXBlP1tjb250ZXh0XTpjb250ZXh0LFtdKSxtYXRjaGVySW49IXByZUZpbHRlcnx8IXNlZWQmJnNlbGVjdG9yP2VsZW1zOmNvbmRlbnNlKGVsZW1zLHByZU1hcCxwcmVGaWx0ZXIsY29udGV4dCx4bWwpLG1hdGNoZXJPdXQ9bWF0Y2hlcj9wb3N0RmluZGVyfHwoc2VlZD9wcmVGaWx0ZXI6cHJlZXhpc3Rpbmd8fHBvc3RGaWx0ZXIpP1tdOnJlc3VsdHM6bWF0Y2hlckluO2lmKG1hdGNoZXImJm1hdGNoZXIobWF0Y2hlckluLG1hdGNoZXJPdXQsY29udGV4dCx4bWwpLHBvc3RGaWx0ZXIpZm9yKHRlbXA9Y29uZGVuc2UobWF0Y2hlck91dCxwb3N0TWFwKSxwb3N0RmlsdGVyKHRlbXAsW10sY29udGV4dCx4bWwpLGk9dGVtcC5sZW5ndGg7aS0tOykoZWxlbT10ZW1wW2ldKSYmKG1hdGNoZXJPdXRbcG9zdE1hcFtpXV09IShtYXRjaGVySW5bcG9zdE1hcFtpXV09ZWxlbSkpO2lmKHNlZWQpe2lmKHBvc3RGaW5kZXJ8fHByZUZpbHRlcil7aWYocG9zdEZpbmRlcil7Zm9yKHRlbXA9W10saT1tYXRjaGVyT3V0Lmxlbmd0aDtpLS07KShlbGVtPW1hdGNoZXJPdXRbaV0pJiZ0ZW1wLnB1c2gobWF0Y2hlckluW2ldPWVsZW0pO3Bvc3RGaW5kZXIobnVsbCxtYXRjaGVyT3V0PVtdLHRlbXAseG1sKX1mb3IoaT1tYXRjaGVyT3V0Lmxlbmd0aDtpLS07KShlbGVtPW1hdGNoZXJPdXRbaV0pJiYodGVtcD1wb3N0RmluZGVyP2luZGV4T2Yoc2VlZCxlbGVtKTpwcmVNYXBbaV0pPi0xJiYoc2VlZFt0ZW1wXT0hKHJlc3VsdHNbdGVtcF09ZWxlbSkpfX1lbHNlIG1hdGNoZXJPdXQ9Y29uZGVuc2UobWF0Y2hlck91dD09PXJlc3VsdHM/bWF0Y2hlck91dC5zcGxpY2UocHJlZXhpc3RpbmcsbWF0Y2hlck91dC5sZW5ndGgpOm1hdGNoZXJPdXQpLHBvc3RGaW5kZXI/cG9zdEZpbmRlcihudWxsLHJlc3VsdHMsbWF0Y2hlck91dCx4bWwpOnB1c2guYXBwbHkocmVzdWx0cyxtYXRjaGVyT3V0KX0pfWZ1bmN0aW9uIG1hdGNoZXJGcm9tVG9rZW5zKHRva2Vucyl7Zm9yKHZhciBjaGVja0NvbnRleHQsbWF0Y2hlcixqLGxlbj10b2tlbnMubGVuZ3RoLGxlYWRpbmdSZWxhdGl2ZT1FeHByLnJlbGF0aXZlW3Rva2Vuc1swXS50eXBlXSxpbXBsaWNpdFJlbGF0aXZlPWxlYWRpbmdSZWxhdGl2ZXx8RXhwci5yZWxhdGl2ZVtcIiBcIl0saT1sZWFkaW5nUmVsYXRpdmU/MTowLG1hdGNoQ29udGV4dD1hZGRDb21iaW5hdG9yKGZ1bmN0aW9uKGVsZW0pe3JldHVybiBlbGVtPT09Y2hlY2tDb250ZXh0fSxpbXBsaWNpdFJlbGF0aXZlLCEwKSxtYXRjaEFueUNvbnRleHQ9YWRkQ29tYmluYXRvcihmdW5jdGlvbihlbGVtKXtyZXR1cm4gaW5kZXhPZihjaGVja0NvbnRleHQsZWxlbSk+LTF9LGltcGxpY2l0UmVsYXRpdmUsITApLG1hdGNoZXJzPVtmdW5jdGlvbihlbGVtLGNvbnRleHQseG1sKXt2YXIgcmV0PSFsZWFkaW5nUmVsYXRpdmUmJih4bWx8fGNvbnRleHQhPT1vdXRlcm1vc3RDb250ZXh0KXx8KChjaGVja0NvbnRleHQ9Y29udGV4dCkubm9kZVR5cGU/bWF0Y2hDb250ZXh0KGVsZW0sY29udGV4dCx4bWwpOm1hdGNoQW55Q29udGV4dChlbGVtLGNvbnRleHQseG1sKSk7cmV0dXJuIGNoZWNrQ29udGV4dD1udWxsLHJldH1dO2xlbj5pO2krKylpZihtYXRjaGVyPUV4cHIucmVsYXRpdmVbdG9rZW5zW2ldLnR5cGVdKW1hdGNoZXJzPVthZGRDb21iaW5hdG9yKGVsZW1lbnRNYXRjaGVyKG1hdGNoZXJzKSxtYXRjaGVyKV07ZWxzZXtpZihtYXRjaGVyPUV4cHIuZmlsdGVyW3Rva2Vuc1tpXS50eXBlXS5hcHBseShudWxsLHRva2Vuc1tpXS5tYXRjaGVzKSxtYXRjaGVyW2V4cGFuZG9dKXtmb3Ioaj0rK2k7bGVuPmomJiFFeHByLnJlbGF0aXZlW3Rva2Vuc1tqXS50eXBlXTtqKyspO3JldHVybiBzZXRNYXRjaGVyKGk+MSYmZWxlbWVudE1hdGNoZXIobWF0Y2hlcnMpLGk+MSYmdG9TZWxlY3Rvcih0b2tlbnMuc2xpY2UoMCxpLTEpLmNvbmNhdCh7dmFsdWU6XCIgXCI9PT10b2tlbnNbaS0yXS50eXBlP1wiKlwiOlwiXCJ9KSkucmVwbGFjZShydHJpbSxcIiQxXCIpLG1hdGNoZXIsaj5pJiZtYXRjaGVyRnJvbVRva2Vucyh0b2tlbnMuc2xpY2UoaSxqKSksbGVuPmomJm1hdGNoZXJGcm9tVG9rZW5zKHRva2Vucz10b2tlbnMuc2xpY2UoaikpLGxlbj5qJiZ0b1NlbGVjdG9yKHRva2VucykpfW1hdGNoZXJzLnB1c2gobWF0Y2hlcil9cmV0dXJuIGVsZW1lbnRNYXRjaGVyKG1hdGNoZXJzKX1mdW5jdGlvbiBtYXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMoZWxlbWVudE1hdGNoZXJzLHNldE1hdGNoZXJzKXt2YXIgYnlTZXQ9c2V0TWF0Y2hlcnMubGVuZ3RoPjAsYnlFbGVtZW50PWVsZW1lbnRNYXRjaGVycy5sZW5ndGg+MCxzdXBlck1hdGNoZXI9ZnVuY3Rpb24oc2VlZCxjb250ZXh0LHhtbCxyZXN1bHRzLG91dGVybW9zdCl7dmFyIGVsZW0saixtYXRjaGVyLG1hdGNoZWRDb3VudD0wLGk9XCIwXCIsdW5tYXRjaGVkPXNlZWQmJltdLHNldE1hdGNoZWQ9W10sY29udGV4dEJhY2t1cD1vdXRlcm1vc3RDb250ZXh0LGVsZW1zPXNlZWR8fGJ5RWxlbWVudCYmRXhwci5maW5kLlRBRyhcIipcIixvdXRlcm1vc3QpLGRpcnJ1bnNVbmlxdWU9ZGlycnVucys9bnVsbD09Y29udGV4dEJhY2t1cD8xOk1hdGgucmFuZG9tKCl8fC4xLGxlbj1lbGVtcy5sZW5ndGg7Zm9yKG91dGVybW9zdCYmKG91dGVybW9zdENvbnRleHQ9Y29udGV4dCE9PWRvY3VtZW50JiZjb250ZXh0KTtpIT09bGVuJiZudWxsIT0oZWxlbT1lbGVtc1tpXSk7aSsrKXtpZihieUVsZW1lbnQmJmVsZW0pe2ZvcihqPTA7bWF0Y2hlcj1lbGVtZW50TWF0Y2hlcnNbaisrXTspaWYobWF0Y2hlcihlbGVtLGNvbnRleHQseG1sKSl7cmVzdWx0cy5wdXNoKGVsZW0pO1xuYnJlYWt9b3V0ZXJtb3N0JiYoZGlycnVucz1kaXJydW5zVW5pcXVlKX1ieVNldCYmKChlbGVtPSFtYXRjaGVyJiZlbGVtKSYmbWF0Y2hlZENvdW50LS0sc2VlZCYmdW5tYXRjaGVkLnB1c2goZWxlbSkpfWlmKG1hdGNoZWRDb3VudCs9aSxieVNldCYmaSE9PW1hdGNoZWRDb3VudCl7Zm9yKGo9MDttYXRjaGVyPXNldE1hdGNoZXJzW2orK107KW1hdGNoZXIodW5tYXRjaGVkLHNldE1hdGNoZWQsY29udGV4dCx4bWwpO2lmKHNlZWQpe2lmKG1hdGNoZWRDb3VudD4wKWZvcig7aS0tOyl1bm1hdGNoZWRbaV18fHNldE1hdGNoZWRbaV18fChzZXRNYXRjaGVkW2ldPXBvcC5jYWxsKHJlc3VsdHMpKTtzZXRNYXRjaGVkPWNvbmRlbnNlKHNldE1hdGNoZWQpfXB1c2guYXBwbHkocmVzdWx0cyxzZXRNYXRjaGVkKSxvdXRlcm1vc3QmJiFzZWVkJiZzZXRNYXRjaGVkLmxlbmd0aD4wJiZtYXRjaGVkQ291bnQrc2V0TWF0Y2hlcnMubGVuZ3RoPjEmJlNpenpsZS51bmlxdWVTb3J0KHJlc3VsdHMpfXJldHVybiBvdXRlcm1vc3QmJihkaXJydW5zPWRpcnJ1bnNVbmlxdWUsb3V0ZXJtb3N0Q29udGV4dD1jb250ZXh0QmFja3VwKSx1bm1hdGNoZWR9O3JldHVybiBieVNldD9tYXJrRnVuY3Rpb24oc3VwZXJNYXRjaGVyKTpzdXBlck1hdGNoZXJ9dmFyIGksc3VwcG9ydCxFeHByLGdldFRleHQsaXNYTUwsdG9rZW5pemUsY29tcGlsZSxzZWxlY3Qsb3V0ZXJtb3N0Q29udGV4dCxzb3J0SW5wdXQsaGFzRHVwbGljYXRlLHNldERvY3VtZW50LGRvY3VtZW50LGRvY0VsZW0sZG9jdW1lbnRJc0hUTUwscmJ1Z2d5UVNBLHJidWdneU1hdGNoZXMsbWF0Y2hlcyxjb250YWlucyxleHBhbmRvPVwic2l6emxlXCIrMSpuZXcgRGF0ZSxwcmVmZXJyZWREb2M9d2luZG93LmRvY3VtZW50LGRpcnJ1bnM9MCxkb25lPTAsY2xhc3NDYWNoZT1jcmVhdGVDYWNoZSgpLHRva2VuQ2FjaGU9Y3JlYXRlQ2FjaGUoKSxjb21waWxlckNhY2hlPWNyZWF0ZUNhY2hlKCksc29ydE9yZGVyPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9PT1iJiYoaGFzRHVwbGljYXRlPSEwKSwwfSxNQVhfTkVHQVRJVkU9MTw8MzEsaGFzT3duPXt9Lmhhc093blByb3BlcnR5LGFycj1bXSxwb3A9YXJyLnBvcCxwdXNoX25hdGl2ZT1hcnIucHVzaCxwdXNoPWFyci5wdXNoLHNsaWNlPWFyci5zbGljZSxpbmRleE9mPWZ1bmN0aW9uKGxpc3QsZWxlbSl7Zm9yKHZhciBpPTAsbGVuPWxpc3QubGVuZ3RoO2xlbj5pO2krKylpZihsaXN0W2ldPT09ZWxlbSlyZXR1cm4gaTtyZXR1cm4tMX0sYm9vbGVhbnM9XCJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZFwiLHdoaXRlc3BhY2U9XCJbXFxcXHgyMFxcXFx0XFxcXHJcXFxcblxcXFxmXVwiLGNoYXJhY3RlckVuY29kaW5nPVwiKD86XFxcXFxcXFwufFtcXFxcdy1dfFteXFxcXHgwMC1cXFxceGEwXSkrXCIsaWRlbnRpZmllcj1jaGFyYWN0ZXJFbmNvZGluZy5yZXBsYWNlKFwid1wiLFwidyNcIiksYXR0cmlidXRlcz1cIlxcXFxbXCIrd2hpdGVzcGFjZStcIiooXCIrY2hhcmFjdGVyRW5jb2RpbmcrXCIpKD86XCIrd2hpdGVzcGFjZStcIiooWypeJHwhfl0/PSlcIit3aGl0ZXNwYWNlK1wiKig/OicoKD86XFxcXFxcXFwufFteXFxcXFxcXFwnXSkqKSd8XFxcIigoPzpcXFxcXFxcXC58W15cXFxcXFxcXFxcXCJdKSopXFxcInwoXCIraWRlbnRpZmllcitcIikpfClcIit3aGl0ZXNwYWNlK1wiKlxcXFxdXCIscHNldWRvcz1cIjooXCIrY2hhcmFjdGVyRW5jb2RpbmcrXCIpKD86XFxcXCgoKCcoKD86XFxcXFxcXFwufFteXFxcXFxcXFwnXSkqKSd8XFxcIigoPzpcXFxcXFxcXC58W15cXFxcXFxcXFxcXCJdKSopXFxcIil8KCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcKClbXFxcXF1dfFwiK2F0dHJpYnV0ZXMrXCIpKil8LiopXFxcXCl8KVwiLHJ3aGl0ZXNwYWNlPW5ldyBSZWdFeHAod2hpdGVzcGFjZStcIitcIixcImdcIikscnRyaW09bmV3IFJlZ0V4cChcIl5cIit3aGl0ZXNwYWNlK1wiK3woKD86XnxbXlxcXFxcXFxcXSkoPzpcXFxcXFxcXC4pKilcIit3aGl0ZXNwYWNlK1wiKyRcIixcImdcIikscmNvbW1hPW5ldyBSZWdFeHAoXCJeXCIrd2hpdGVzcGFjZStcIiosXCIrd2hpdGVzcGFjZStcIipcIikscmNvbWJpbmF0b3JzPW5ldyBSZWdFeHAoXCJeXCIrd2hpdGVzcGFjZStcIiooWz4rfl18XCIrd2hpdGVzcGFjZStcIilcIit3aGl0ZXNwYWNlK1wiKlwiKSxyYXR0cmlidXRlUXVvdGVzPW5ldyBSZWdFeHAoXCI9XCIrd2hpdGVzcGFjZStcIiooW15cXFxcXSdcXFwiXSo/KVwiK3doaXRlc3BhY2UrXCIqXFxcXF1cIixcImdcIikscnBzZXVkbz1uZXcgUmVnRXhwKHBzZXVkb3MpLHJpZGVudGlmaWVyPW5ldyBSZWdFeHAoXCJeXCIraWRlbnRpZmllcitcIiRcIiksbWF0Y2hFeHByPXtJRDpuZXcgUmVnRXhwKFwiXiMoXCIrY2hhcmFjdGVyRW5jb2RpbmcrXCIpXCIpLENMQVNTOm5ldyBSZWdFeHAoXCJeXFxcXC4oXCIrY2hhcmFjdGVyRW5jb2RpbmcrXCIpXCIpLFRBRzpuZXcgUmVnRXhwKFwiXihcIitjaGFyYWN0ZXJFbmNvZGluZy5yZXBsYWNlKFwid1wiLFwidypcIikrXCIpXCIpLEFUVFI6bmV3IFJlZ0V4cChcIl5cIithdHRyaWJ1dGVzKSxQU0VVRE86bmV3IFJlZ0V4cChcIl5cIitwc2V1ZG9zKSxDSElMRDpuZXcgUmVnRXhwKFwiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFxcXChcIit3aGl0ZXNwYWNlK1wiKihldmVufG9kZHwoKFsrLV18KShcXFxcZCopbnwpXCIrd2hpdGVzcGFjZStcIiooPzooWystXXwpXCIrd2hpdGVzcGFjZStcIiooXFxcXGQrKXwpKVwiK3doaXRlc3BhY2UrXCIqXFxcXCl8KVwiLFwiaVwiKSxib29sOm5ldyBSZWdFeHAoXCJeKD86XCIrYm9vbGVhbnMrXCIpJFwiLFwiaVwiKSxuZWVkc0NvbnRleHQ6bmV3IFJlZ0V4cChcIl5cIit3aGl0ZXNwYWNlK1wiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFxcXChcIit3aGl0ZXNwYWNlK1wiKigoPzotXFxcXGQpP1xcXFxkKilcIit3aGl0ZXNwYWNlK1wiKlxcXFwpfCkoPz1bXi1dfCQpXCIsXCJpXCIpfSxyaW5wdXRzPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2kscmhlYWRlcj0vXmhcXGQkL2kscm5hdGl2ZT0vXltee10rXFx7XFxzKlxcW25hdGl2ZSBcXHcvLHJxdWlja0V4cHI9L14oPzojKFtcXHctXSspfChcXHcrKXxcXC4oW1xcdy1dKykpJC8scnNpYmxpbmc9L1srfl0vLHJlc2NhcGU9Lyd8XFxcXC9nLHJ1bmVzY2FwZT1uZXcgUmVnRXhwKFwiXFxcXFxcXFwoW1xcXFxkYS1mXXsxLDZ9XCIrd2hpdGVzcGFjZStcIj98KFwiK3doaXRlc3BhY2UrXCIpfC4pXCIsXCJpZ1wiKSxmdW5lc2NhcGU9ZnVuY3Rpb24oXyxlc2NhcGVkLGVzY2FwZWRXaGl0ZXNwYWNlKXt2YXIgaGlnaD1cIjB4XCIrZXNjYXBlZC02NTUzNjtyZXR1cm4gaGlnaCE9PWhpZ2h8fGVzY2FwZWRXaGl0ZXNwYWNlP2VzY2FwZWQ6MD5oaWdoP1N0cmluZy5mcm9tQ2hhckNvZGUoaGlnaCs2NTUzNik6U3RyaW5nLmZyb21DaGFyQ29kZShoaWdoPj4xMHw1NTI5NiwxMDIzJmhpZ2h8NTYzMjApfSx1bmxvYWRIYW5kbGVyPWZ1bmN0aW9uKCl7c2V0RG9jdW1lbnQoKX07dHJ5e3B1c2guYXBwbHkoYXJyPXNsaWNlLmNhbGwocHJlZmVycmVkRG9jLmNoaWxkTm9kZXMpLHByZWZlcnJlZERvYy5jaGlsZE5vZGVzKSxhcnJbcHJlZmVycmVkRG9jLmNoaWxkTm9kZXMubGVuZ3RoXS5ub2RlVHlwZX1jYXRjaChlKXtwdXNoPXthcHBseTphcnIubGVuZ3RoP2Z1bmN0aW9uKHRhcmdldCxlbHMpe3B1c2hfbmF0aXZlLmFwcGx5KHRhcmdldCxzbGljZS5jYWxsKGVscykpfTpmdW5jdGlvbih0YXJnZXQsZWxzKXtmb3IodmFyIGo9dGFyZ2V0Lmxlbmd0aCxpPTA7dGFyZ2V0W2orK109ZWxzW2krK107KTt0YXJnZXQubGVuZ3RoPWotMX19fXN1cHBvcnQ9U2l6emxlLnN1cHBvcnQ9e30saXNYTUw9U2l6emxlLmlzWE1MPWZ1bmN0aW9uKGVsZW0pe3ZhciBkb2N1bWVudEVsZW1lbnQ9ZWxlbSYmKGVsZW0ub3duZXJEb2N1bWVudHx8ZWxlbSkuZG9jdW1lbnRFbGVtZW50O3JldHVybiBkb2N1bWVudEVsZW1lbnQ/XCJIVE1MXCIhPT1kb2N1bWVudEVsZW1lbnQubm9kZU5hbWU6ITF9LHNldERvY3VtZW50PVNpenpsZS5zZXREb2N1bWVudD1mdW5jdGlvbihub2RlKXt2YXIgaGFzQ29tcGFyZSxwYXJlbnQsZG9jPW5vZGU/bm9kZS5vd25lckRvY3VtZW50fHxub2RlOnByZWZlcnJlZERvYztyZXR1cm4gZG9jIT09ZG9jdW1lbnQmJjk9PT1kb2Mubm9kZVR5cGUmJmRvYy5kb2N1bWVudEVsZW1lbnQ/KGRvY3VtZW50PWRvYyxkb2NFbGVtPWRvYy5kb2N1bWVudEVsZW1lbnQscGFyZW50PWRvYy5kZWZhdWx0VmlldyxwYXJlbnQmJnBhcmVudCE9PXBhcmVudC50b3AmJihwYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcj9wYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcihcInVubG9hZFwiLHVubG9hZEhhbmRsZXIsITEpOnBhcmVudC5hdHRhY2hFdmVudCYmcGFyZW50LmF0dGFjaEV2ZW50KFwib251bmxvYWRcIix1bmxvYWRIYW5kbGVyKSksZG9jdW1lbnRJc0hUTUw9IWlzWE1MKGRvYyksc3VwcG9ydC5hdHRyaWJ1dGVzPWFzc2VydChmdW5jdGlvbihkaXYpe3JldHVybiBkaXYuY2xhc3NOYW1lPVwiaVwiLCFkaXYuZ2V0QXR0cmlidXRlKFwiY2xhc3NOYW1lXCIpfSksc3VwcG9ydC5nZXRFbGVtZW50c0J5VGFnTmFtZT1hc3NlcnQoZnVuY3Rpb24oZGl2KXtyZXR1cm4gZGl2LmFwcGVuZENoaWxkKGRvYy5jcmVhdGVDb21tZW50KFwiXCIpKSwhZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiKlwiKS5sZW5ndGh9KSxzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWU9cm5hdGl2ZS50ZXN0KGRvYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSxzdXBwb3J0LmdldEJ5SWQ9YXNzZXJ0KGZ1bmN0aW9uKGRpdil7cmV0dXJuIGRvY0VsZW0uYXBwZW5kQ2hpbGQoZGl2KS5pZD1leHBhbmRvLCFkb2MuZ2V0RWxlbWVudHNCeU5hbWV8fCFkb2MuZ2V0RWxlbWVudHNCeU5hbWUoZXhwYW5kbykubGVuZ3RofSksc3VwcG9ydC5nZXRCeUlkPyhFeHByLmZpbmQuSUQ9ZnVuY3Rpb24oaWQsY29udGV4dCl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQmJmRvY3VtZW50SXNIVE1MKXt2YXIgbT1jb250ZXh0LmdldEVsZW1lbnRCeUlkKGlkKTtyZXR1cm4gbSYmbS5wYXJlbnROb2RlP1ttXTpbXX19LEV4cHIuZmlsdGVyLklEPWZ1bmN0aW9uKGlkKXt2YXIgYXR0cklkPWlkLnJlcGxhY2UocnVuZXNjYXBlLGZ1bmVzY2FwZSk7cmV0dXJuIGZ1bmN0aW9uKGVsZW0pe3JldHVybiBlbGVtLmdldEF0dHJpYnV0ZShcImlkXCIpPT09YXR0cklkfX0pOihkZWxldGUgRXhwci5maW5kLklELEV4cHIuZmlsdGVyLklEPWZ1bmN0aW9uKGlkKXt2YXIgYXR0cklkPWlkLnJlcGxhY2UocnVuZXNjYXBlLGZ1bmVzY2FwZSk7cmV0dXJuIGZ1bmN0aW9uKGVsZW0pe3ZhciBub2RlPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZU5vZGUmJmVsZW0uZ2V0QXR0cmlidXRlTm9kZShcImlkXCIpO3JldHVybiBub2RlJiZub2RlLnZhbHVlPT09YXR0cklkfX0pLEV4cHIuZmluZC5UQUc9c3VwcG9ydC5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbih0YWcsY29udGV4dCl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWU/Y29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSh0YWcpOnN1cHBvcnQucXNhP2NvbnRleHQucXVlcnlTZWxlY3RvckFsbCh0YWcpOnZvaWQgMH06ZnVuY3Rpb24odGFnLGNvbnRleHQpe3ZhciBlbGVtLHRtcD1bXSxpPTAscmVzdWx0cz1jb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZyk7aWYoXCIqXCI9PT10YWcpe2Zvcig7ZWxlbT1yZXN1bHRzW2krK107KTE9PT1lbGVtLm5vZGVUeXBlJiZ0bXAucHVzaChlbGVtKTtyZXR1cm4gdG1wfXJldHVybiByZXN1bHRzfSxFeHByLmZpbmQuQ0xBU1M9c3VwcG9ydC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZmdW5jdGlvbihjbGFzc05hbWUsY29udGV4dCl7cmV0dXJuIGRvY3VtZW50SXNIVE1MP2NvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShjbGFzc05hbWUpOnZvaWQgMH0scmJ1Z2d5TWF0Y2hlcz1bXSxyYnVnZ3lRU0E9W10sKHN1cHBvcnQucXNhPXJuYXRpdmUudGVzdChkb2MucXVlcnlTZWxlY3RvckFsbCkpJiYoYXNzZXJ0KGZ1bmN0aW9uKGRpdil7ZG9jRWxlbS5hcHBlbmRDaGlsZChkaXYpLmlubmVySFRNTD1cIjxhIGlkPSdcIitleHBhbmRvK1wiJz48L2E+PHNlbGVjdCBpZD0nXCIrZXhwYW5kbytcIi1cXGZdJyBtc2FsbG93Y2FwdHVyZT0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PlwiLGRpdi5xdWVyeVNlbGVjdG9yQWxsKFwiW21zYWxsb3djYXB0dXJlXj0nJ11cIikubGVuZ3RoJiZyYnVnZ3lRU0EucHVzaChcIlsqXiRdPVwiK3doaXRlc3BhY2UrXCIqKD86Jyd8XFxcIlxcXCIpXCIpLGRpdi5xdWVyeVNlbGVjdG9yQWxsKFwiW3NlbGVjdGVkXVwiKS5sZW5ndGh8fHJidWdneVFTQS5wdXNoKFwiXFxcXFtcIit3aGl0ZXNwYWNlK1wiKig/OnZhbHVlfFwiK2Jvb2xlYW5zK1wiKVwiKSxkaXYucXVlcnlTZWxlY3RvckFsbChcIltpZH49XCIrZXhwYW5kbytcIi1dXCIpLmxlbmd0aHx8cmJ1Z2d5UVNBLnB1c2goXCJ+PVwiKSxkaXYucXVlcnlTZWxlY3RvckFsbChcIjpjaGVja2VkXCIpLmxlbmd0aHx8cmJ1Z2d5UVNBLnB1c2goXCI6Y2hlY2tlZFwiKSxkaXYucXVlcnlTZWxlY3RvckFsbChcImEjXCIrZXhwYW5kbytcIisqXCIpLmxlbmd0aHx8cmJ1Z2d5UVNBLnB1c2goXCIuIy4rWyt+XVwiKX0pLGFzc2VydChmdW5jdGlvbihkaXYpe3ZhciBpbnB1dD1kb2MuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO2lucHV0LnNldEF0dHJpYnV0ZShcInR5cGVcIixcImhpZGRlblwiKSxkaXYuYXBwZW5kQ2hpbGQoaW5wdXQpLnNldEF0dHJpYnV0ZShcIm5hbWVcIixcIkRcIiksZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbbmFtZT1kXVwiKS5sZW5ndGgmJnJidWdneVFTQS5wdXNoKFwibmFtZVwiK3doaXRlc3BhY2UrXCIqWypeJHwhfl0/PVwiKSxkaXYucXVlcnlTZWxlY3RvckFsbChcIjplbmFibGVkXCIpLmxlbmd0aHx8cmJ1Z2d5UVNBLnB1c2goXCI6ZW5hYmxlZFwiLFwiOmRpc2FibGVkXCIpLGRpdi5xdWVyeVNlbGVjdG9yQWxsKFwiKiw6eFwiKSxyYnVnZ3lRU0EucHVzaChcIiwuKjpcIil9KSksKHN1cHBvcnQubWF0Y2hlc1NlbGVjdG9yPXJuYXRpdmUudGVzdChtYXRjaGVzPWRvY0VsZW0ubWF0Y2hlc3x8ZG9jRWxlbS53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fGRvY0VsZW0ubW96TWF0Y2hlc1NlbGVjdG9yfHxkb2NFbGVtLm9NYXRjaGVzU2VsZWN0b3J8fGRvY0VsZW0ubXNNYXRjaGVzU2VsZWN0b3IpKSYmYXNzZXJ0KGZ1bmN0aW9uKGRpdil7c3VwcG9ydC5kaXNjb25uZWN0ZWRNYXRjaD1tYXRjaGVzLmNhbGwoZGl2LFwiZGl2XCIpLG1hdGNoZXMuY2FsbChkaXYsXCJbcyE9JyddOnhcIikscmJ1Z2d5TWF0Y2hlcy5wdXNoKFwiIT1cIixwc2V1ZG9zKX0pLHJidWdneVFTQT1yYnVnZ3lRU0EubGVuZ3RoJiZuZXcgUmVnRXhwKHJidWdneVFTQS5qb2luKFwifFwiKSkscmJ1Z2d5TWF0Y2hlcz1yYnVnZ3lNYXRjaGVzLmxlbmd0aCYmbmV3IFJlZ0V4cChyYnVnZ3lNYXRjaGVzLmpvaW4oXCJ8XCIpKSxoYXNDb21wYXJlPXJuYXRpdmUudGVzdChkb2NFbGVtLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKSxjb250YWlucz1oYXNDb21wYXJlfHxybmF0aXZlLnRlc3QoZG9jRWxlbS5jb250YWlucyk/ZnVuY3Rpb24oYSxiKXt2YXIgYWRvd249OT09PWEubm9kZVR5cGU/YS5kb2N1bWVudEVsZW1lbnQ6YSxidXA9YiYmYi5wYXJlbnROb2RlO3JldHVybiBhPT09YnVwfHwhKCFidXB8fDEhPT1idXAubm9kZVR5cGV8fCEoYWRvd24uY29udGFpbnM/YWRvd24uY29udGFpbnMoYnVwKTphLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGJ1cCkpKX06ZnVuY3Rpb24oYSxiKXtpZihiKWZvcig7Yj1iLnBhcmVudE5vZGU7KWlmKGI9PT1hKXJldHVybiEwO3JldHVybiExfSxzb3J0T3JkZXI9aGFzQ29tcGFyZT9mdW5jdGlvbihhLGIpe2lmKGE9PT1iKXJldHVybiBoYXNEdXBsaWNhdGU9ITAsMDt2YXIgY29tcGFyZT0hYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gY29tcGFyZT9jb21wYXJlOihjb21wYXJlPShhLm93bmVyRG9jdW1lbnR8fGEpPT09KGIub3duZXJEb2N1bWVudHx8Yik/YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKToxLDEmY29tcGFyZXx8IXN1cHBvcnQuc29ydERldGFjaGVkJiZiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEpPT09Y29tcGFyZT9hPT09ZG9jfHxhLm93bmVyRG9jdW1lbnQ9PT1wcmVmZXJyZWREb2MmJmNvbnRhaW5zKHByZWZlcnJlZERvYyxhKT8tMTpiPT09ZG9jfHxiLm93bmVyRG9jdW1lbnQ9PT1wcmVmZXJyZWREb2MmJmNvbnRhaW5zKHByZWZlcnJlZERvYyxiKT8xOnNvcnRJbnB1dD9pbmRleE9mKHNvcnRJbnB1dCxhKS1pbmRleE9mKHNvcnRJbnB1dCxiKTowOjQmY29tcGFyZT8tMToxKX06ZnVuY3Rpb24oYSxiKXtpZihhPT09YilyZXR1cm4gaGFzRHVwbGljYXRlPSEwLDA7dmFyIGN1cixpPTAsYXVwPWEucGFyZW50Tm9kZSxidXA9Yi5wYXJlbnROb2RlLGFwPVthXSxicD1bYl07aWYoIWF1cHx8IWJ1cClyZXR1cm4gYT09PWRvYz8tMTpiPT09ZG9jPzE6YXVwPy0xOmJ1cD8xOnNvcnRJbnB1dD9pbmRleE9mKHNvcnRJbnB1dCxhKS1pbmRleE9mKHNvcnRJbnB1dCxiKTowO2lmKGF1cD09PWJ1cClyZXR1cm4gc2libGluZ0NoZWNrKGEsYik7Zm9yKGN1cj1hO2N1cj1jdXIucGFyZW50Tm9kZTspYXAudW5zaGlmdChjdXIpO2ZvcihjdXI9YjtjdXI9Y3VyLnBhcmVudE5vZGU7KWJwLnVuc2hpZnQoY3VyKTtmb3IoO2FwW2ldPT09YnBbaV07KWkrKztyZXR1cm4gaT9zaWJsaW5nQ2hlY2soYXBbaV0sYnBbaV0pOmFwW2ldPT09cHJlZmVycmVkRG9jPy0xOmJwW2ldPT09cHJlZmVycmVkRG9jPzE6MH0sZG9jKTpkb2N1bWVudH0sU2l6emxlLm1hdGNoZXM9ZnVuY3Rpb24oZXhwcixlbGVtZW50cyl7cmV0dXJuIFNpenpsZShleHByLG51bGwsbnVsbCxlbGVtZW50cyl9LFNpenpsZS5tYXRjaGVzU2VsZWN0b3I9ZnVuY3Rpb24oZWxlbSxleHByKXtpZigoZWxlbS5vd25lckRvY3VtZW50fHxlbGVtKSE9PWRvY3VtZW50JiZzZXREb2N1bWVudChlbGVtKSxleHByPWV4cHIucmVwbGFjZShyYXR0cmlidXRlUXVvdGVzLFwiPSckMSddXCIpLHN1cHBvcnQubWF0Y2hlc1NlbGVjdG9yJiZkb2N1bWVudElzSFRNTCYmKCFyYnVnZ3lNYXRjaGVzfHwhcmJ1Z2d5TWF0Y2hlcy50ZXN0KGV4cHIpKSYmKCFyYnVnZ3lRU0F8fCFyYnVnZ3lRU0EudGVzdChleHByKSkpdHJ5e3ZhciByZXQ9bWF0Y2hlcy5jYWxsKGVsZW0sZXhwcik7aWYocmV0fHxzdXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNofHxlbGVtLmRvY3VtZW50JiYxMSE9PWVsZW0uZG9jdW1lbnQubm9kZVR5cGUpcmV0dXJuIHJldH1jYXRjaChlKXt9cmV0dXJuIFNpenpsZShleHByLGRvY3VtZW50LG51bGwsW2VsZW1dKS5sZW5ndGg+MH0sU2l6emxlLmNvbnRhaW5zPWZ1bmN0aW9uKGNvbnRleHQsZWxlbSl7cmV0dXJuKGNvbnRleHQub3duZXJEb2N1bWVudHx8Y29udGV4dCkhPT1kb2N1bWVudCYmc2V0RG9jdW1lbnQoY29udGV4dCksY29udGFpbnMoY29udGV4dCxlbGVtKX0sU2l6emxlLmF0dHI9ZnVuY3Rpb24oZWxlbSxuYW1lKXsoZWxlbS5vd25lckRvY3VtZW50fHxlbGVtKSE9PWRvY3VtZW50JiZzZXREb2N1bWVudChlbGVtKTt2YXIgZm49RXhwci5hdHRySGFuZGxlW25hbWUudG9Mb3dlckNhc2UoKV0sdmFsPWZuJiZoYXNPd24uY2FsbChFeHByLmF0dHJIYW5kbGUsbmFtZS50b0xvd2VyQ2FzZSgpKT9mbihlbGVtLG5hbWUsIWRvY3VtZW50SXNIVE1MKTp2b2lkIDA7cmV0dXJuIHZvaWQgMCE9PXZhbD92YWw6c3VwcG9ydC5hdHRyaWJ1dGVzfHwhZG9jdW1lbnRJc0hUTUw/ZWxlbS5nZXRBdHRyaWJ1dGUobmFtZSk6KHZhbD1lbGVtLmdldEF0dHJpYnV0ZU5vZGUobmFtZSkpJiZ2YWwuc3BlY2lmaWVkP3ZhbC52YWx1ZTpudWxsfSxTaXp6bGUuZXJyb3I9ZnVuY3Rpb24obXNnKXt0aHJvdyBuZXcgRXJyb3IoXCJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiBcIittc2cpfSxTaXp6bGUudW5pcXVlU29ydD1mdW5jdGlvbihyZXN1bHRzKXt2YXIgZWxlbSxkdXBsaWNhdGVzPVtdLGo9MCxpPTA7aWYoaGFzRHVwbGljYXRlPSFzdXBwb3J0LmRldGVjdER1cGxpY2F0ZXMsc29ydElucHV0PSFzdXBwb3J0LnNvcnRTdGFibGUmJnJlc3VsdHMuc2xpY2UoMCkscmVzdWx0cy5zb3J0KHNvcnRPcmRlciksaGFzRHVwbGljYXRlKXtmb3IoO2VsZW09cmVzdWx0c1tpKytdOyllbGVtPT09cmVzdWx0c1tpXSYmKGo9ZHVwbGljYXRlcy5wdXNoKGkpKTtmb3IoO2otLTspcmVzdWx0cy5zcGxpY2UoZHVwbGljYXRlc1tqXSwxKX1yZXR1cm4gc29ydElucHV0PW51bGwscmVzdWx0c30sZ2V0VGV4dD1TaXp6bGUuZ2V0VGV4dD1mdW5jdGlvbihlbGVtKXt2YXIgbm9kZSxyZXQ9XCJcIixpPTAsbm9kZVR5cGU9ZWxlbS5ub2RlVHlwZTtpZihub2RlVHlwZSl7aWYoMT09PW5vZGVUeXBlfHw5PT09bm9kZVR5cGV8fDExPT09bm9kZVR5cGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlbGVtLnRleHRDb250ZW50KXJldHVybiBlbGVtLnRleHRDb250ZW50O2ZvcihlbGVtPWVsZW0uZmlyc3RDaGlsZDtlbGVtO2VsZW09ZWxlbS5uZXh0U2libGluZylyZXQrPWdldFRleHQoZWxlbSl9ZWxzZSBpZigzPT09bm9kZVR5cGV8fDQ9PT1ub2RlVHlwZSlyZXR1cm4gZWxlbS5ub2RlVmFsdWV9ZWxzZSBmb3IoO25vZGU9ZWxlbVtpKytdOylyZXQrPWdldFRleHQobm9kZSk7cmV0dXJuIHJldH0sRXhwcj1TaXp6bGUuc2VsZWN0b3JzPXtjYWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86bWFya0Z1bmN0aW9uLG1hdGNoOm1hdGNoRXhwcixhdHRySGFuZGxlOnt9LGZpbmQ6e30scmVsYXRpdmU6e1wiPlwiOntkaXI6XCJwYXJlbnROb2RlXCIsZmlyc3Q6ITB9LFwiIFwiOntkaXI6XCJwYXJlbnROb2RlXCJ9LFwiK1wiOntkaXI6XCJwcmV2aW91c1NpYmxpbmdcIixmaXJzdDohMH0sXCJ+XCI6e2RpcjpcInByZXZpb3VzU2libGluZ1wifX0scHJlRmlsdGVyOntBVFRSOmZ1bmN0aW9uKG1hdGNoKXtyZXR1cm4gbWF0Y2hbMV09bWF0Y2hbMV0ucmVwbGFjZShydW5lc2NhcGUsZnVuZXNjYXBlKSxtYXRjaFszXT0obWF0Y2hbM118fG1hdGNoWzRdfHxtYXRjaFs1XXx8XCJcIikucmVwbGFjZShydW5lc2NhcGUsZnVuZXNjYXBlKSxcIn49XCI9PT1tYXRjaFsyXSYmKG1hdGNoWzNdPVwiIFwiK21hdGNoWzNdK1wiIFwiKSxtYXRjaC5zbGljZSgwLDQpfSxDSElMRDpmdW5jdGlvbihtYXRjaCl7cmV0dXJuIG1hdGNoWzFdPW1hdGNoWzFdLnRvTG93ZXJDYXNlKCksXCJudGhcIj09PW1hdGNoWzFdLnNsaWNlKDAsMyk/KG1hdGNoWzNdfHxTaXp6bGUuZXJyb3IobWF0Y2hbMF0pLG1hdGNoWzRdPSsobWF0Y2hbNF0/bWF0Y2hbNV0rKG1hdGNoWzZdfHwxKToyKihcImV2ZW5cIj09PW1hdGNoWzNdfHxcIm9kZFwiPT09bWF0Y2hbM10pKSxtYXRjaFs1XT0rKG1hdGNoWzddK21hdGNoWzhdfHxcIm9kZFwiPT09bWF0Y2hbM10pKTptYXRjaFszXSYmU2l6emxlLmVycm9yKG1hdGNoWzBdKSxtYXRjaH0sUFNFVURPOmZ1bmN0aW9uKG1hdGNoKXt2YXIgZXhjZXNzLHVucXVvdGVkPSFtYXRjaFs2XSYmbWF0Y2hbMl07cmV0dXJuIG1hdGNoRXhwci5DSElMRC50ZXN0KG1hdGNoWzBdKT9udWxsOihtYXRjaFszXT9tYXRjaFsyXT1tYXRjaFs0XXx8bWF0Y2hbNV18fFwiXCI6dW5xdW90ZWQmJnJwc2V1ZG8udGVzdCh1bnF1b3RlZCkmJihleGNlc3M9dG9rZW5pemUodW5xdW90ZWQsITApKSYmKGV4Y2Vzcz11bnF1b3RlZC5pbmRleE9mKFwiKVwiLHVucXVvdGVkLmxlbmd0aC1leGNlc3MpLXVucXVvdGVkLmxlbmd0aCkmJihtYXRjaFswXT1tYXRjaFswXS5zbGljZSgwLGV4Y2VzcyksbWF0Y2hbMl09dW5xdW90ZWQuc2xpY2UoMCxleGNlc3MpKSxtYXRjaC5zbGljZSgwLDMpKX19LGZpbHRlcjp7VEFHOmZ1bmN0aW9uKG5vZGVOYW1lU2VsZWN0b3Ipe3ZhciBub2RlTmFtZT1ub2RlTmFtZVNlbGVjdG9yLnJlcGxhY2UocnVuZXNjYXBlLGZ1bmVzY2FwZSkudG9Mb3dlckNhc2UoKTtyZXR1cm5cIipcIj09PW5vZGVOYW1lU2VsZWN0b3I/ZnVuY3Rpb24oKXtyZXR1cm4hMH06ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGVsZW0ubm9kZU5hbWUmJmVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PW5vZGVOYW1lfX0sQ0xBU1M6ZnVuY3Rpb24oY2xhc3NOYW1lKXt2YXIgcGF0dGVybj1jbGFzc0NhY2hlW2NsYXNzTmFtZStcIiBcIl07cmV0dXJuIHBhdHRlcm58fChwYXR0ZXJuPW5ldyBSZWdFeHAoXCIoXnxcIit3aGl0ZXNwYWNlK1wiKVwiK2NsYXNzTmFtZStcIihcIit3aGl0ZXNwYWNlK1wifCQpXCIpKSYmY2xhc3NDYWNoZShjbGFzc05hbWUsZnVuY3Rpb24oZWxlbSl7cmV0dXJuIHBhdHRlcm4udGVzdChcInN0cmluZ1wiPT10eXBlb2YgZWxlbS5jbGFzc05hbWUmJmVsZW0uY2xhc3NOYW1lfHxcInVuZGVmaW5lZFwiIT10eXBlb2YgZWxlbS5nZXRBdHRyaWJ1dGUmJmVsZW0uZ2V0QXR0cmlidXRlKFwiY2xhc3NcIil8fFwiXCIpfSl9LEFUVFI6ZnVuY3Rpb24obmFtZSxvcGVyYXRvcixjaGVjayl7cmV0dXJuIGZ1bmN0aW9uKGVsZW0pe3ZhciByZXN1bHQ9U2l6emxlLmF0dHIoZWxlbSxuYW1lKTtyZXR1cm4gbnVsbD09cmVzdWx0P1wiIT1cIj09PW9wZXJhdG9yOm9wZXJhdG9yPyhyZXN1bHQrPVwiXCIsXCI9XCI9PT1vcGVyYXRvcj9yZXN1bHQ9PT1jaGVjazpcIiE9XCI9PT1vcGVyYXRvcj9yZXN1bHQhPT1jaGVjazpcIl49XCI9PT1vcGVyYXRvcj9jaGVjayYmMD09PXJlc3VsdC5pbmRleE9mKGNoZWNrKTpcIio9XCI9PT1vcGVyYXRvcj9jaGVjayYmcmVzdWx0LmluZGV4T2YoY2hlY2spPi0xOlwiJD1cIj09PW9wZXJhdG9yP2NoZWNrJiZyZXN1bHQuc2xpY2UoLWNoZWNrLmxlbmd0aCk9PT1jaGVjazpcIn49XCI9PT1vcGVyYXRvcj8oXCIgXCIrcmVzdWx0LnJlcGxhY2UocndoaXRlc3BhY2UsXCIgXCIpK1wiIFwiKS5pbmRleE9mKGNoZWNrKT4tMTpcInw9XCI9PT1vcGVyYXRvcj9yZXN1bHQ9PT1jaGVja3x8cmVzdWx0LnNsaWNlKDAsY2hlY2subGVuZ3RoKzEpPT09Y2hlY2srXCItXCI6ITEpOiEwfX0sQ0hJTEQ6ZnVuY3Rpb24odHlwZSx3aGF0LGFyZ3VtZW50LGZpcnN0LGxhc3Qpe3ZhciBzaW1wbGU9XCJudGhcIiE9PXR5cGUuc2xpY2UoMCwzKSxmb3J3YXJkPVwibGFzdFwiIT09dHlwZS5zbGljZSgtNCksb2ZUeXBlPVwib2YtdHlwZVwiPT09d2hhdDtyZXR1cm4gMT09PWZpcnN0JiYwPT09bGFzdD9mdW5jdGlvbihlbGVtKXtyZXR1cm4hIWVsZW0ucGFyZW50Tm9kZX06ZnVuY3Rpb24oZWxlbSxjb250ZXh0LHhtbCl7dmFyIGNhY2hlLG91dGVyQ2FjaGUsbm9kZSxkaWZmLG5vZGVJbmRleCxzdGFydCxkaXI9c2ltcGxlIT09Zm9yd2FyZD9cIm5leHRTaWJsaW5nXCI6XCJwcmV2aW91c1NpYmxpbmdcIixwYXJlbnQ9ZWxlbS5wYXJlbnROb2RlLG5hbWU9b2ZUeXBlJiZlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksdXNlQ2FjaGU9IXhtbCYmIW9mVHlwZTtpZihwYXJlbnQpe2lmKHNpbXBsZSl7Zm9yKDtkaXI7KXtmb3Iobm9kZT1lbGVtO25vZGU9bm9kZVtkaXJdOylpZihvZlR5cGU/bm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09bmFtZToxPT09bm9kZS5ub2RlVHlwZSlyZXR1cm4hMTtzdGFydD1kaXI9XCJvbmx5XCI9PT10eXBlJiYhc3RhcnQmJlwibmV4dFNpYmxpbmdcIn1yZXR1cm4hMH1pZihzdGFydD1bZm9yd2FyZD9wYXJlbnQuZmlyc3RDaGlsZDpwYXJlbnQubGFzdENoaWxkXSxmb3J3YXJkJiZ1c2VDYWNoZSl7Zm9yKG91dGVyQ2FjaGU9cGFyZW50W2V4cGFuZG9dfHwocGFyZW50W2V4cGFuZG9dPXt9KSxjYWNoZT1vdXRlckNhY2hlW3R5cGVdfHxbXSxub2RlSW5kZXg9Y2FjaGVbMF09PT1kaXJydW5zJiZjYWNoZVsxXSxkaWZmPWNhY2hlWzBdPT09ZGlycnVucyYmY2FjaGVbMl0sbm9kZT1ub2RlSW5kZXgmJnBhcmVudC5jaGlsZE5vZGVzW25vZGVJbmRleF07bm9kZT0rK25vZGVJbmRleCYmbm9kZSYmbm9kZVtkaXJdfHwoZGlmZj1ub2RlSW5kZXg9MCl8fHN0YXJ0LnBvcCgpOylpZigxPT09bm9kZS5ub2RlVHlwZSYmKytkaWZmJiZub2RlPT09ZWxlbSl7b3V0ZXJDYWNoZVt0eXBlXT1bZGlycnVucyxub2RlSW5kZXgsZGlmZl07YnJlYWt9fWVsc2UgaWYodXNlQ2FjaGUmJihjYWNoZT0oZWxlbVtleHBhbmRvXXx8KGVsZW1bZXhwYW5kb109e30pKVt0eXBlXSkmJmNhY2hlWzBdPT09ZGlycnVucylkaWZmPWNhY2hlWzFdO2Vsc2UgZm9yKDsobm9kZT0rK25vZGVJbmRleCYmbm9kZSYmbm9kZVtkaXJdfHwoZGlmZj1ub2RlSW5kZXg9MCl8fHN0YXJ0LnBvcCgpKSYmKChvZlR5cGU/bm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIT09bmFtZToxIT09bm9kZS5ub2RlVHlwZSl8fCErK2RpZmZ8fCh1c2VDYWNoZSYmKChub2RlW2V4cGFuZG9dfHwobm9kZVtleHBhbmRvXT17fSkpW3R5cGVdPVtkaXJydW5zLGRpZmZdKSxub2RlIT09ZWxlbSkpOyk7cmV0dXJuIGRpZmYtPWxhc3QsZGlmZj09PWZpcnN0fHxkaWZmJWZpcnN0PT09MCYmZGlmZi9maXJzdD49MH19fSxQU0VVRE86ZnVuY3Rpb24ocHNldWRvLGFyZ3VtZW50KXt2YXIgYXJncyxmbj1FeHByLnBzZXVkb3NbcHNldWRvXXx8RXhwci5zZXRGaWx0ZXJzW3BzZXVkby50b0xvd2VyQ2FzZSgpXXx8U2l6emxlLmVycm9yKFwidW5zdXBwb3J0ZWQgcHNldWRvOiBcIitwc2V1ZG8pO3JldHVybiBmbltleHBhbmRvXT9mbihhcmd1bWVudCk6Zm4ubGVuZ3RoPjE/KGFyZ3M9W3BzZXVkbyxwc2V1ZG8sXCJcIixhcmd1bWVudF0sRXhwci5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KHBzZXVkby50b0xvd2VyQ2FzZSgpKT9tYXJrRnVuY3Rpb24oZnVuY3Rpb24oc2VlZCxtYXRjaGVzKXtmb3IodmFyIGlkeCxtYXRjaGVkPWZuKHNlZWQsYXJndW1lbnQpLGk9bWF0Y2hlZC5sZW5ndGg7aS0tOylpZHg9aW5kZXhPZihzZWVkLG1hdGNoZWRbaV0pLHNlZWRbaWR4XT0hKG1hdGNoZXNbaWR4XT1tYXRjaGVkW2ldKX0pOmZ1bmN0aW9uKGVsZW0pe3JldHVybiBmbihlbGVtLDAsYXJncyl9KTpmbn19LHBzZXVkb3M6e25vdDptYXJrRnVuY3Rpb24oZnVuY3Rpb24oc2VsZWN0b3Ipe3ZhciBpbnB1dD1bXSxyZXN1bHRzPVtdLG1hdGNoZXI9Y29tcGlsZShzZWxlY3Rvci5yZXBsYWNlKHJ0cmltLFwiJDFcIikpO3JldHVybiBtYXRjaGVyW2V4cGFuZG9dP21hcmtGdW5jdGlvbihmdW5jdGlvbihzZWVkLG1hdGNoZXMsY29udGV4dCx4bWwpe2Zvcih2YXIgZWxlbSx1bm1hdGNoZWQ9bWF0Y2hlcihzZWVkLG51bGwseG1sLFtdKSxpPXNlZWQubGVuZ3RoO2ktLTspKGVsZW09dW5tYXRjaGVkW2ldKSYmKHNlZWRbaV09IShtYXRjaGVzW2ldPWVsZW0pKX0pOmZ1bmN0aW9uKGVsZW0sY29udGV4dCx4bWwpe3JldHVybiBpbnB1dFswXT1lbGVtLG1hdGNoZXIoaW5wdXQsbnVsbCx4bWwscmVzdWx0cyksaW5wdXRbMF09bnVsbCwhcmVzdWx0cy5wb3AoKX19KSxoYXM6bWFya0Z1bmN0aW9uKGZ1bmN0aW9uKHNlbGVjdG9yKXtyZXR1cm4gZnVuY3Rpb24oZWxlbSl7cmV0dXJuIFNpenpsZShzZWxlY3RvcixlbGVtKS5sZW5ndGg+MH19KSxjb250YWluczptYXJrRnVuY3Rpb24oZnVuY3Rpb24odGV4dCl7cmV0dXJuIHRleHQ9dGV4dC5yZXBsYWNlKHJ1bmVzY2FwZSxmdW5lc2NhcGUpLGZ1bmN0aW9uKGVsZW0pe3JldHVybihlbGVtLnRleHRDb250ZW50fHxlbGVtLmlubmVyVGV4dHx8Z2V0VGV4dChlbGVtKSkuaW5kZXhPZih0ZXh0KT4tMX19KSxsYW5nOm1hcmtGdW5jdGlvbihmdW5jdGlvbihsYW5nKXtyZXR1cm4gcmlkZW50aWZpZXIudGVzdChsYW5nfHxcIlwiKXx8U2l6emxlLmVycm9yKFwidW5zdXBwb3J0ZWQgbGFuZzogXCIrbGFuZyksbGFuZz1sYW5nLnJlcGxhY2UocnVuZXNjYXBlLGZ1bmVzY2FwZSkudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihlbGVtKXt2YXIgZWxlbUxhbmc7ZG8gaWYoZWxlbUxhbmc9ZG9jdW1lbnRJc0hUTUw/ZWxlbS5sYW5nOmVsZW0uZ2V0QXR0cmlidXRlKFwieG1sOmxhbmdcIil8fGVsZW0uZ2V0QXR0cmlidXRlKFwibGFuZ1wiKSlyZXR1cm4gZWxlbUxhbmc9ZWxlbUxhbmcudG9Mb3dlckNhc2UoKSxlbGVtTGFuZz09PWxhbmd8fDA9PT1lbGVtTGFuZy5pbmRleE9mKGxhbmcrXCItXCIpO3doaWxlKChlbGVtPWVsZW0ucGFyZW50Tm9kZSkmJjE9PT1lbGVtLm5vZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24oZWxlbSl7dmFyIGhhc2g9d2luZG93LmxvY2F0aW9uJiZ3aW5kb3cubG9jYXRpb24uaGFzaDtyZXR1cm4gaGFzaCYmaGFzaC5zbGljZSgxKT09PWVsZW0uaWR9LHJvb3Q6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGVsZW09PT1kb2NFbGVtfSxmb2N1czpmdW5jdGlvbihlbGVtKXtyZXR1cm4gZWxlbT09PWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQmJighZG9jdW1lbnQuaGFzRm9jdXN8fGRvY3VtZW50Lmhhc0ZvY3VzKCkpJiYhIShlbGVtLnR5cGV8fGVsZW0uaHJlZnx8fmVsZW0udGFiSW5kZXgpfSxlbmFibGVkOmZ1bmN0aW9uKGVsZW0pe3JldHVybiBlbGVtLmRpc2FibGVkPT09ITF9LGRpc2FibGVkOmZ1bmN0aW9uKGVsZW0pe3JldHVybiBlbGVtLmRpc2FibGVkPT09ITB9LGNoZWNrZWQ6ZnVuY3Rpb24oZWxlbSl7dmFyIG5vZGVOYW1lPWVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm5cImlucHV0XCI9PT1ub2RlTmFtZSYmISFlbGVtLmNoZWNrZWR8fFwib3B0aW9uXCI9PT1ub2RlTmFtZSYmISFlbGVtLnNlbGVjdGVkfSxzZWxlY3RlZDpmdW5jdGlvbihlbGVtKXtyZXR1cm4gZWxlbS5wYXJlbnROb2RlJiZlbGVtLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxlbGVtLnNlbGVjdGVkPT09ITB9LGVtcHR5OmZ1bmN0aW9uKGVsZW0pe2ZvcihlbGVtPWVsZW0uZmlyc3RDaGlsZDtlbGVtO2VsZW09ZWxlbS5uZXh0U2libGluZylpZihlbGVtLm5vZGVUeXBlPDYpcmV0dXJuITE7cmV0dXJuITB9LHBhcmVudDpmdW5jdGlvbihlbGVtKXtyZXR1cm4hRXhwci5wc2V1ZG9zLmVtcHR5KGVsZW0pfSxoZWFkZXI6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIHJoZWFkZXIudGVzdChlbGVtLm5vZGVOYW1lKX0saW5wdXQ6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIHJpbnB1dHMudGVzdChlbGVtLm5vZGVOYW1lKX0sYnV0dG9uOmZ1bmN0aW9uKGVsZW0pe3ZhciBuYW1lPWVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm5cImlucHV0XCI9PT1uYW1lJiZcImJ1dHRvblwiPT09ZWxlbS50eXBlfHxcImJ1dHRvblwiPT09bmFtZX0sdGV4dDpmdW5jdGlvbihlbGVtKXt2YXIgYXR0cjtyZXR1cm5cImlucHV0XCI9PT1lbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJlwidGV4dFwiPT09ZWxlbS50eXBlJiYobnVsbD09KGF0dHI9ZWxlbS5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpKXx8XCJ0ZXh0XCI9PT1hdHRyLnRvTG93ZXJDYXNlKCkpfSxmaXJzdDpjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCl7cmV0dXJuWzBdfSksbGFzdDpjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKG1hdGNoSW5kZXhlcyxsZW5ndGgpe3JldHVybltsZW5ndGgtMV19KSxlcTpjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKG1hdGNoSW5kZXhlcyxsZW5ndGgsYXJndW1lbnQpe3JldHVyblswPmFyZ3VtZW50P2FyZ3VtZW50K2xlbmd0aDphcmd1bWVudF19KSxldmVuOmNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24obWF0Y2hJbmRleGVzLGxlbmd0aCl7Zm9yKHZhciBpPTA7bGVuZ3RoPmk7aSs9MiltYXRjaEluZGV4ZXMucHVzaChpKTtyZXR1cm4gbWF0Y2hJbmRleGVzfSksb2RkOmNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24obWF0Y2hJbmRleGVzLGxlbmd0aCl7Zm9yKHZhciBpPTE7bGVuZ3RoPmk7aSs9MiltYXRjaEluZGV4ZXMucHVzaChpKTtyZXR1cm4gbWF0Y2hJbmRleGVzfSksbHQ6Y3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbihtYXRjaEluZGV4ZXMsbGVuZ3RoLGFyZ3VtZW50KXtmb3IodmFyIGk9MD5hcmd1bWVudD9hcmd1bWVudCtsZW5ndGg6YXJndW1lbnQ7LS1pPj0wOyltYXRjaEluZGV4ZXMucHVzaChpKTtyZXR1cm4gbWF0Y2hJbmRleGVzfSksZ3Q6Y3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbihtYXRjaEluZGV4ZXMsbGVuZ3RoLGFyZ3VtZW50KXtmb3IodmFyIGk9MD5hcmd1bWVudD9hcmd1bWVudCtsZW5ndGg6YXJndW1lbnQ7KytpPGxlbmd0aDspbWF0Y2hJbmRleGVzLnB1c2goaSk7cmV0dXJuIG1hdGNoSW5kZXhlc30pfX0sRXhwci5wc2V1ZG9zLm50aD1FeHByLnBzZXVkb3MuZXE7Zm9yKGkgaW57cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNzd29yZDohMCxpbWFnZTohMH0pRXhwci5wc2V1ZG9zW2ldPWNyZWF0ZUlucHV0UHNldWRvKGkpO2ZvcihpIGlue3N1Ym1pdDohMCxyZXNldDohMH0pRXhwci5wc2V1ZG9zW2ldPWNyZWF0ZUJ1dHRvblBzZXVkbyhpKTtyZXR1cm4gc2V0RmlsdGVycy5wcm90b3R5cGU9RXhwci5maWx0ZXJzPUV4cHIucHNldWRvcyxFeHByLnNldEZpbHRlcnM9bmV3IHNldEZpbHRlcnMsdG9rZW5pemU9U2l6emxlLnRva2VuaXplPWZ1bmN0aW9uKHNlbGVjdG9yLHBhcnNlT25seSl7dmFyIG1hdGNoZWQsbWF0Y2gsdG9rZW5zLHR5cGUsc29GYXIsZ3JvdXBzLHByZUZpbHRlcnMsY2FjaGVkPXRva2VuQ2FjaGVbc2VsZWN0b3IrXCIgXCJdO2lmKGNhY2hlZClyZXR1cm4gcGFyc2VPbmx5PzA6Y2FjaGVkLnNsaWNlKDApO2Zvcihzb0Zhcj1zZWxlY3Rvcixncm91cHM9W10scHJlRmlsdGVycz1FeHByLnByZUZpbHRlcjtzb0ZhcjspeyghbWF0Y2hlZHx8KG1hdGNoPXJjb21tYS5leGVjKHNvRmFyKSkpJiYobWF0Y2gmJihzb0Zhcj1zb0Zhci5zbGljZShtYXRjaFswXS5sZW5ndGgpfHxzb0ZhciksZ3JvdXBzLnB1c2godG9rZW5zPVtdKSksbWF0Y2hlZD0hMSwobWF0Y2g9cmNvbWJpbmF0b3JzLmV4ZWMoc29GYXIpKSYmKG1hdGNoZWQ9bWF0Y2guc2hpZnQoKSx0b2tlbnMucHVzaCh7dmFsdWU6bWF0Y2hlZCx0eXBlOm1hdGNoWzBdLnJlcGxhY2UocnRyaW0sXCIgXCIpfSksc29GYXI9c29GYXIuc2xpY2UobWF0Y2hlZC5sZW5ndGgpKTtmb3IodHlwZSBpbiBFeHByLmZpbHRlcikhKG1hdGNoPW1hdGNoRXhwclt0eXBlXS5leGVjKHNvRmFyKSl8fHByZUZpbHRlcnNbdHlwZV0mJiEobWF0Y2g9cHJlRmlsdGVyc1t0eXBlXShtYXRjaCkpfHwobWF0Y2hlZD1tYXRjaC5zaGlmdCgpLHRva2Vucy5wdXNoKHt2YWx1ZTptYXRjaGVkLHR5cGU6dHlwZSxtYXRjaGVzOm1hdGNofSksc29GYXI9c29GYXIuc2xpY2UobWF0Y2hlZC5sZW5ndGgpKTtpZighbWF0Y2hlZClicmVha31yZXR1cm4gcGFyc2VPbmx5P3NvRmFyLmxlbmd0aDpzb0Zhcj9TaXp6bGUuZXJyb3Ioc2VsZWN0b3IpOnRva2VuQ2FjaGUoc2VsZWN0b3IsZ3JvdXBzKS5zbGljZSgwKX0sY29tcGlsZT1TaXp6bGUuY29tcGlsZT1mdW5jdGlvbihzZWxlY3RvcixtYXRjaCl7dmFyIGksc2V0TWF0Y2hlcnM9W10sZWxlbWVudE1hdGNoZXJzPVtdLGNhY2hlZD1jb21waWxlckNhY2hlW3NlbGVjdG9yK1wiIFwiXTtpZighY2FjaGVkKXtmb3IobWF0Y2h8fChtYXRjaD10b2tlbml6ZShzZWxlY3RvcikpLGk9bWF0Y2gubGVuZ3RoO2ktLTspY2FjaGVkPW1hdGNoZXJGcm9tVG9rZW5zKG1hdGNoW2ldKSxjYWNoZWRbZXhwYW5kb10/c2V0TWF0Y2hlcnMucHVzaChjYWNoZWQpOmVsZW1lbnRNYXRjaGVycy5wdXNoKGNhY2hlZCk7Y2FjaGVkPWNvbXBpbGVyQ2FjaGUoc2VsZWN0b3IsbWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzKGVsZW1lbnRNYXRjaGVycyxzZXRNYXRjaGVycykpLGNhY2hlZC5zZWxlY3Rvcj1zZWxlY3Rvcn1yZXR1cm4gY2FjaGVkfSxzZWxlY3Q9U2l6emxlLnNlbGVjdD1mdW5jdGlvbihzZWxlY3Rvcixjb250ZXh0LHJlc3VsdHMsc2VlZCl7dmFyIGksdG9rZW5zLHRva2VuLHR5cGUsZmluZCxjb21waWxlZD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBzZWxlY3RvciYmc2VsZWN0b3IsbWF0Y2g9IXNlZWQmJnRva2VuaXplKHNlbGVjdG9yPWNvbXBpbGVkLnNlbGVjdG9yfHxzZWxlY3Rvcik7aWYocmVzdWx0cz1yZXN1bHRzfHxbXSwxPT09bWF0Y2gubGVuZ3RoKXtpZih0b2tlbnM9bWF0Y2hbMF09bWF0Y2hbMF0uc2xpY2UoMCksdG9rZW5zLmxlbmd0aD4yJiZcIklEXCI9PT0odG9rZW49dG9rZW5zWzBdKS50eXBlJiZzdXBwb3J0LmdldEJ5SWQmJjk9PT1jb250ZXh0Lm5vZGVUeXBlJiZkb2N1bWVudElzSFRNTCYmRXhwci5yZWxhdGl2ZVt0b2tlbnNbMV0udHlwZV0pe2lmKGNvbnRleHQ9KEV4cHIuZmluZC5JRCh0b2tlbi5tYXRjaGVzWzBdLnJlcGxhY2UocnVuZXNjYXBlLGZ1bmVzY2FwZSksY29udGV4dCl8fFtdKVswXSwhY29udGV4dClyZXR1cm4gcmVzdWx0cztjb21waWxlZCYmKGNvbnRleHQ9Y29udGV4dC5wYXJlbnROb2RlKSxzZWxlY3Rvcj1zZWxlY3Rvci5zbGljZSh0b2tlbnMuc2hpZnQoKS52YWx1ZS5sZW5ndGgpfWZvcihpPW1hdGNoRXhwci5uZWVkc0NvbnRleHQudGVzdChzZWxlY3Rvcik/MDp0b2tlbnMubGVuZ3RoO2ktLSYmKHRva2VuPXRva2Vuc1tpXSwhRXhwci5yZWxhdGl2ZVt0eXBlPXRva2VuLnR5cGVdKTspaWYoKGZpbmQ9RXhwci5maW5kW3R5cGVdKSYmKHNlZWQ9ZmluZCh0b2tlbi5tYXRjaGVzWzBdLnJlcGxhY2UocnVuZXNjYXBlLGZ1bmVzY2FwZSkscnNpYmxpbmcudGVzdCh0b2tlbnNbMF0udHlwZSkmJnRlc3RDb250ZXh0KGNvbnRleHQucGFyZW50Tm9kZSl8fGNvbnRleHQpKSl7aWYodG9rZW5zLnNwbGljZShpLDEpLHNlbGVjdG9yPXNlZWQubGVuZ3RoJiZ0b1NlbGVjdG9yKHRva2VucyksIXNlbGVjdG9yKXJldHVybiBwdXNoLmFwcGx5KHJlc3VsdHMsc2VlZCkscmVzdWx0czticmVha319cmV0dXJuKGNvbXBpbGVkfHxjb21waWxlKHNlbGVjdG9yLG1hdGNoKSkoc2VlZCxjb250ZXh0LCFkb2N1bWVudElzSFRNTCxyZXN1bHRzLHJzaWJsaW5nLnRlc3Qoc2VsZWN0b3IpJiZ0ZXN0Q29udGV4dChjb250ZXh0LnBhcmVudE5vZGUpfHxjb250ZXh0KSxyZXN1bHRzfSxzdXBwb3J0LnNvcnRTdGFibGU9ZXhwYW5kby5zcGxpdChcIlwiKS5zb3J0KHNvcnRPcmRlcikuam9pbihcIlwiKT09PWV4cGFuZG8sc3VwcG9ydC5kZXRlY3REdXBsaWNhdGVzPSEhaGFzRHVwbGljYXRlLHNldERvY3VtZW50KCksc3VwcG9ydC5zb3J0RGV0YWNoZWQ9YXNzZXJ0KGZ1bmN0aW9uKGRpdjEpe3JldHVybiAxJmRpdjEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSl9KSxhc3NlcnQoZnVuY3Rpb24oZGl2KXtyZXR1cm4gZGl2LmlubmVySFRNTD1cIjxhIGhyZWY9JyMnPjwvYT5cIixcIiNcIj09PWRpdi5maXJzdENoaWxkLmdldEF0dHJpYnV0ZShcImhyZWZcIil9KXx8YWRkSGFuZGxlKFwidHlwZXxocmVmfGhlaWdodHx3aWR0aFwiLGZ1bmN0aW9uKGVsZW0sbmFtZSxpc1hNTCl7cmV0dXJuIGlzWE1MP3ZvaWQgMDplbGVtLmdldEF0dHJpYnV0ZShuYW1lLFwidHlwZVwiPT09bmFtZS50b0xvd2VyQ2FzZSgpPzE6Mil9KSxzdXBwb3J0LmF0dHJpYnV0ZXMmJmFzc2VydChmdW5jdGlvbihkaXYpe3JldHVybiBkaXYuaW5uZXJIVE1MPVwiPGlucHV0Lz5cIixkaXYuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiLFwiXCIpLFwiXCI9PT1kaXYuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiKX0pfHxhZGRIYW5kbGUoXCJ2YWx1ZVwiLGZ1bmN0aW9uKGVsZW0sbmFtZSxpc1hNTCl7cmV0dXJuIGlzWE1MfHxcImlucHV0XCIhPT1lbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk/dm9pZCAwOmVsZW0uZGVmYXVsdFZhbHVlfSksYXNzZXJ0KGZ1bmN0aW9uKGRpdil7cmV0dXJuIG51bGw9PWRpdi5nZXRBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKX0pfHxhZGRIYW5kbGUoYm9vbGVhbnMsZnVuY3Rpb24oZWxlbSxuYW1lLGlzWE1MKXt2YXIgdmFsO3JldHVybiBpc1hNTD92b2lkIDA6ZWxlbVtuYW1lXT09PSEwP25hbWUudG9Mb3dlckNhc2UoKToodmFsPWVsZW0uZ2V0QXR0cmlidXRlTm9kZShuYW1lKSkmJnZhbC5zcGVjaWZpZWQ/dmFsLnZhbHVlOm51bGx9KSxTaXp6bGV9KHdpbmRvdyk7alF1ZXJ5LmZpbmQ9U2l6emxlLGpRdWVyeS5leHByPVNpenpsZS5zZWxlY3RvcnMsalF1ZXJ5LmV4cHJbXCI6XCJdPWpRdWVyeS5leHByLnBzZXVkb3MsalF1ZXJ5LnVuaXF1ZT1TaXp6bGUudW5pcXVlU29ydCxqUXVlcnkudGV4dD1TaXp6bGUuZ2V0VGV4dCxqUXVlcnkuaXNYTUxEb2M9U2l6emxlLmlzWE1MLGpRdWVyeS5jb250YWlucz1TaXp6bGUuY29udGFpbnM7dmFyIHJuZWVkc0NvbnRleHQ9alF1ZXJ5LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LHJzaW5nbGVUYWc9L148KFxcdyspXFxzKlxcLz8+KD86PFxcL1xcMT58KSQvLHJpc1NpbXBsZT0vXi5bXjojXFxbXFwuLF0qJC87alF1ZXJ5LmZpbHRlcj1mdW5jdGlvbihleHByLGVsZW1zLG5vdCl7dmFyIGVsZW09ZWxlbXNbMF07cmV0dXJuIG5vdCYmKGV4cHI9XCI6bm90KFwiK2V4cHIrXCIpXCIpLDE9PT1lbGVtcy5sZW5ndGgmJjE9PT1lbGVtLm5vZGVUeXBlP2pRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvcihlbGVtLGV4cHIpP1tlbGVtXTpbXTpqUXVlcnkuZmluZC5tYXRjaGVzKGV4cHIsalF1ZXJ5LmdyZXAoZWxlbXMsZnVuY3Rpb24oZWxlbSl7cmV0dXJuIDE9PT1lbGVtLm5vZGVUeXBlfSkpfSxqUXVlcnkuZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0aW9uKHNlbGVjdG9yKXt2YXIgaSxyZXQ9W10sc2VsZj10aGlzLGxlbj1zZWxmLmxlbmd0aDtpZihcInN0cmluZ1wiIT10eXBlb2Ygc2VsZWN0b3IpcmV0dXJuIHRoaXMucHVzaFN0YWNrKGpRdWVyeShzZWxlY3RvcikuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKGk9MDtsZW4+aTtpKyspaWYoalF1ZXJ5LmNvbnRhaW5zKHNlbGZbaV0sdGhpcykpcmV0dXJuITB9KSk7Zm9yKGk9MDtsZW4+aTtpKyspalF1ZXJ5LmZpbmQoc2VsZWN0b3Isc2VsZltpXSxyZXQpO3JldHVybiByZXQ9dGhpcy5wdXNoU3RhY2sobGVuPjE/alF1ZXJ5LnVuaXF1ZShyZXQpOnJldCkscmV0LnNlbGVjdG9yPXRoaXMuc2VsZWN0b3I/dGhpcy5zZWxlY3RvcitcIiBcIitzZWxlY3RvcjpzZWxlY3RvcixyZXR9LGZpbHRlcjpmdW5jdGlvbihzZWxlY3Rvcil7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHdpbm5vdyh0aGlzLHNlbGVjdG9yfHxbXSwhMSkpfSxub3Q6ZnVuY3Rpb24oc2VsZWN0b3Ipe3JldHVybiB0aGlzLnB1c2hTdGFjayh3aW5ub3codGhpcyxzZWxlY3Rvcnx8W10sITApKX0saXM6ZnVuY3Rpb24oc2VsZWN0b3Ipe3JldHVybiEhd2lubm93KHRoaXMsXCJzdHJpbmdcIj09dHlwZW9mIHNlbGVjdG9yJiZybmVlZHNDb250ZXh0LnRlc3Qoc2VsZWN0b3IpP2pRdWVyeShzZWxlY3Rvcik6c2VsZWN0b3J8fFtdLCExKS5sZW5ndGh9fSk7dmFyIHJvb3RqUXVlcnksZG9jdW1lbnQ9d2luZG93LmRvY3VtZW50LHJxdWlja0V4cHI9L14oPzpcXHMqKDxbXFx3XFxXXSs+KVtePl0qfCMoW1xcdy1dKikpJC8saW5pdD1qUXVlcnkuZm4uaW5pdD1mdW5jdGlvbihzZWxlY3Rvcixjb250ZXh0KXt2YXIgbWF0Y2gsZWxlbTtpZighc2VsZWN0b3IpcmV0dXJuIHRoaXM7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHNlbGVjdG9yKXtpZihtYXRjaD1cIjxcIj09PXNlbGVjdG9yLmNoYXJBdCgwKSYmXCI+XCI9PT1zZWxlY3Rvci5jaGFyQXQoc2VsZWN0b3IubGVuZ3RoLTEpJiZzZWxlY3Rvci5sZW5ndGg+PTM/W251bGwsc2VsZWN0b3IsbnVsbF06cnF1aWNrRXhwci5leGVjKHNlbGVjdG9yKSwhbWF0Y2h8fCFtYXRjaFsxXSYmY29udGV4dClyZXR1cm4hY29udGV4dHx8Y29udGV4dC5qcXVlcnk/KGNvbnRleHR8fHJvb3RqUXVlcnkpLmZpbmQoc2VsZWN0b3IpOnRoaXMuY29uc3RydWN0b3IoY29udGV4dCkuZmluZChzZWxlY3Rvcik7aWYobWF0Y2hbMV0pe2lmKGNvbnRleHQ9Y29udGV4dCBpbnN0YW5jZW9mIGpRdWVyeT9jb250ZXh0WzBdOmNvbnRleHQsalF1ZXJ5Lm1lcmdlKHRoaXMsalF1ZXJ5LnBhcnNlSFRNTChtYXRjaFsxXSxjb250ZXh0JiZjb250ZXh0Lm5vZGVUeXBlP2NvbnRleHQub3duZXJEb2N1bWVudHx8Y29udGV4dDpkb2N1bWVudCwhMCkpLHJzaW5nbGVUYWcudGVzdChtYXRjaFsxXSkmJmpRdWVyeS5pc1BsYWluT2JqZWN0KGNvbnRleHQpKWZvcihtYXRjaCBpbiBjb250ZXh0KWpRdWVyeS5pc0Z1bmN0aW9uKHRoaXNbbWF0Y2hdKT90aGlzW21hdGNoXShjb250ZXh0W21hdGNoXSk6dGhpcy5hdHRyKG1hdGNoLGNvbnRleHRbbWF0Y2hdKTtyZXR1cm4gdGhpc31pZihlbGVtPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG1hdGNoWzJdKSxlbGVtJiZlbGVtLnBhcmVudE5vZGUpe2lmKGVsZW0uaWQhPT1tYXRjaFsyXSlyZXR1cm4gcm9vdGpRdWVyeS5maW5kKHNlbGVjdG9yKTt0aGlzLmxlbmd0aD0xLHRoaXNbMF09ZWxlbX1yZXR1cm4gdGhpcy5jb250ZXh0PWRvY3VtZW50LHRoaXMuc2VsZWN0b3I9c2VsZWN0b3IsdGhpc31yZXR1cm4gc2VsZWN0b3Iubm9kZVR5cGU/KHRoaXMuY29udGV4dD10aGlzWzBdPXNlbGVjdG9yLHRoaXMubGVuZ3RoPTEsdGhpcyk6alF1ZXJ5LmlzRnVuY3Rpb24oc2VsZWN0b3IpP1widW5kZWZpbmVkXCIhPXR5cGVvZiByb290alF1ZXJ5LnJlYWR5P3Jvb3RqUXVlcnkucmVhZHkoc2VsZWN0b3IpOnNlbGVjdG9yKGpRdWVyeSk6KHZvaWQgMCE9PXNlbGVjdG9yLnNlbGVjdG9yJiYodGhpcy5zZWxlY3Rvcj1zZWxlY3Rvci5zZWxlY3Rvcix0aGlzLmNvbnRleHQ9c2VsZWN0b3IuY29udGV4dCksalF1ZXJ5Lm1ha2VBcnJheShzZWxlY3Rvcix0aGlzKSl9O2luaXQucHJvdG90eXBlPWpRdWVyeS5mbixyb290alF1ZXJ5PWpRdWVyeShkb2N1bWVudCk7dmFyIHJwYXJlbnRzcHJldj0vXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLyxndWFyYW50ZWVkVW5pcXVlPXtjaGlsZHJlbjohMCxjb250ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O2pRdWVyeS5leHRlbmQoe2RpcjpmdW5jdGlvbihlbGVtLGRpcix1bnRpbCl7Zm9yKHZhciBtYXRjaGVkPVtdLGN1cj1lbGVtW2Rpcl07Y3VyJiY5IT09Y3VyLm5vZGVUeXBlJiYodm9pZCAwPT09dW50aWx8fDEhPT1jdXIubm9kZVR5cGV8fCFqUXVlcnkoY3VyKS5pcyh1bnRpbCkpOykxPT09Y3VyLm5vZGVUeXBlJiZtYXRjaGVkLnB1c2goY3VyKSxjdXI9Y3VyW2Rpcl07cmV0dXJuIG1hdGNoZWR9LHNpYmxpbmc6ZnVuY3Rpb24obixlbGVtKXtmb3IodmFyIHI9W107bjtuPW4ubmV4dFNpYmxpbmcpMT09PW4ubm9kZVR5cGUmJm4hPT1lbGVtJiZyLnB1c2gobik7cmV0dXJuIHJ9fSksalF1ZXJ5LmZuLmV4dGVuZCh7aGFzOmZ1bmN0aW9uKHRhcmdldCl7dmFyIGksdGFyZ2V0cz1qUXVlcnkodGFyZ2V0LHRoaXMpLGxlbj10YXJnZXRzLmxlbmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoaT0wO2xlbj5pO2krKylpZihqUXVlcnkuY29udGFpbnModGhpcyx0YXJnZXRzW2ldKSlyZXR1cm4hMH0pfSxjbG9zZXN0OmZ1bmN0aW9uKHNlbGVjdG9ycyxjb250ZXh0KXtmb3IodmFyIGN1cixpPTAsbD10aGlzLmxlbmd0aCxtYXRjaGVkPVtdLHBvcz1ybmVlZHNDb250ZXh0LnRlc3Qoc2VsZWN0b3JzKXx8XCJzdHJpbmdcIiE9dHlwZW9mIHNlbGVjdG9ycz9qUXVlcnkoc2VsZWN0b3JzLGNvbnRleHR8fHRoaXMuY29udGV4dCk6MDtsPmk7aSsrKWZvcihjdXI9dGhpc1tpXTtjdXImJmN1ciE9PWNvbnRleHQ7Y3VyPWN1ci5wYXJlbnROb2RlKWlmKGN1ci5ub2RlVHlwZTwxMSYmKHBvcz9wb3MuaW5kZXgoY3VyKT4tMToxPT09Y3VyLm5vZGVUeXBlJiZqUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoY3VyLHNlbGVjdG9ycykpKXttYXRjaGVkLnB1c2goY3VyKTticmVha31yZXR1cm4gdGhpcy5wdXNoU3RhY2sobWF0Y2hlZC5sZW5ndGg+MT9qUXVlcnkudW5pcXVlKG1hdGNoZWQpOm1hdGNoZWQpfSxpbmRleDpmdW5jdGlvbihlbGVtKXtyZXR1cm4gZWxlbT9cInN0cmluZ1wiPT10eXBlb2YgZWxlbT9qUXVlcnkuaW5BcnJheSh0aGlzWzBdLGpRdWVyeShlbGVtKSk6alF1ZXJ5LmluQXJyYXkoZWxlbS5qcXVlcnk/ZWxlbVswXTplbGVtLHRoaXMpOnRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZT90aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aDotMX0sYWRkOmZ1bmN0aW9uKHNlbGVjdG9yLGNvbnRleHQpe3JldHVybiB0aGlzLnB1c2hTdGFjayhqUXVlcnkudW5pcXVlKGpRdWVyeS5tZXJnZSh0aGlzLmdldCgpLGpRdWVyeShzZWxlY3Rvcixjb250ZXh0KSkpKX0sYWRkQmFjazpmdW5jdGlvbihzZWxlY3Rvcil7cmV0dXJuIHRoaXMuYWRkKG51bGw9PXNlbGVjdG9yP3RoaXMucHJldk9iamVjdDp0aGlzLnByZXZPYmplY3QuZmlsdGVyKHNlbGVjdG9yKSl9fSksalF1ZXJ5LmVhY2goe3BhcmVudDpmdW5jdGlvbihlbGVtKXt2YXIgcGFyZW50PWVsZW0ucGFyZW50Tm9kZTtyZXR1cm4gcGFyZW50JiYxMSE9PXBhcmVudC5ub2RlVHlwZT9wYXJlbnQ6bnVsbH0scGFyZW50czpmdW5jdGlvbihlbGVtKXtyZXR1cm4galF1ZXJ5LmRpcihlbGVtLFwicGFyZW50Tm9kZVwiKX0scGFyZW50c1VudGlsOmZ1bmN0aW9uKGVsZW0saSx1bnRpbCl7cmV0dXJuIGpRdWVyeS5kaXIoZWxlbSxcInBhcmVudE5vZGVcIix1bnRpbCl9LG5leHQ6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIHNpYmxpbmcoZWxlbSxcIm5leHRTaWJsaW5nXCIpfSxwcmV2OmZ1bmN0aW9uKGVsZW0pe3JldHVybiBzaWJsaW5nKGVsZW0sXCJwcmV2aW91c1NpYmxpbmdcIil9LG5leHRBbGw6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGpRdWVyeS5kaXIoZWxlbSxcIm5leHRTaWJsaW5nXCIpfSxwcmV2QWxsOmZ1bmN0aW9uKGVsZW0pe3JldHVybiBqUXVlcnkuZGlyKGVsZW0sXCJwcmV2aW91c1NpYmxpbmdcIil9LG5leHRVbnRpbDpmdW5jdGlvbihlbGVtLGksdW50aWwpe3JldHVybiBqUXVlcnkuZGlyKGVsZW0sXCJuZXh0U2libGluZ1wiLHVudGlsKX0scHJldlVudGlsOmZ1bmN0aW9uKGVsZW0saSx1bnRpbCl7cmV0dXJuIGpRdWVyeS5kaXIoZWxlbSxcInByZXZpb3VzU2libGluZ1wiLHVudGlsKX0sc2libGluZ3M6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGpRdWVyeS5zaWJsaW5nKChlbGVtLnBhcmVudE5vZGV8fHt9KS5maXJzdENoaWxkLGVsZW0pfSxjaGlsZHJlbjpmdW5jdGlvbihlbGVtKXtyZXR1cm4galF1ZXJ5LnNpYmxpbmcoZWxlbS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGpRdWVyeS5ub2RlTmFtZShlbGVtLFwiaWZyYW1lXCIpP2VsZW0uY29udGVudERvY3VtZW50fHxlbGVtLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ6alF1ZXJ5Lm1lcmdlKFtdLGVsZW0uY2hpbGROb2Rlcyl9fSxmdW5jdGlvbihuYW1lLGZuKXtqUXVlcnkuZm5bbmFtZV09ZnVuY3Rpb24odW50aWwsc2VsZWN0b3Ipe3ZhciByZXQ9alF1ZXJ5Lm1hcCh0aGlzLGZuLHVudGlsKTtyZXR1cm5cIlVudGlsXCIhPT1uYW1lLnNsaWNlKC01KSYmKHNlbGVjdG9yPXVudGlsKSxzZWxlY3RvciYmXCJzdHJpbmdcIj09dHlwZW9mIHNlbGVjdG9yJiYocmV0PWpRdWVyeS5maWx0ZXIoc2VsZWN0b3IscmV0KSksdGhpcy5sZW5ndGg+MSYmKGd1YXJhbnRlZWRVbmlxdWVbbmFtZV18fChyZXQ9alF1ZXJ5LnVuaXF1ZShyZXQpKSxycGFyZW50c3ByZXYudGVzdChuYW1lKSYmKHJldD1yZXQucmV2ZXJzZSgpKSksdGhpcy5wdXNoU3RhY2socmV0KX19KTt2YXIgcm5vdHdoaXRlPS9cXFMrL2csb3B0aW9uc0NhY2hlPXt9O2pRdWVyeS5DYWxsYmFja3M9ZnVuY3Rpb24ob3B0aW9ucyl7b3B0aW9ucz1cInN0cmluZ1wiPT10eXBlb2Ygb3B0aW9ucz9vcHRpb25zQ2FjaGVbb3B0aW9uc118fGNyZWF0ZU9wdGlvbnMob3B0aW9ucyk6alF1ZXJ5LmV4dGVuZCh7fSxvcHRpb25zKTt2YXIgZmlyaW5nLG1lbW9yeSxmaXJlZCxmaXJpbmdMZW5ndGgsZmlyaW5nSW5kZXgsZmlyaW5nU3RhcnQsbGlzdD1bXSxzdGFjaz0hb3B0aW9ucy5vbmNlJiZbXSxmaXJlPWZ1bmN0aW9uKGRhdGEpe2ZvcihtZW1vcnk9b3B0aW9ucy5tZW1vcnkmJmRhdGEsZmlyZWQ9ITAsZmlyaW5nSW5kZXg9ZmlyaW5nU3RhcnR8fDAsZmlyaW5nU3RhcnQ9MCxmaXJpbmdMZW5ndGg9bGlzdC5sZW5ndGgsZmlyaW5nPSEwO2xpc3QmJmZpcmluZ0xlbmd0aD5maXJpbmdJbmRleDtmaXJpbmdJbmRleCsrKWlmKGxpc3RbZmlyaW5nSW5kZXhdLmFwcGx5KGRhdGFbMF0sZGF0YVsxXSk9PT0hMSYmb3B0aW9ucy5zdG9wT25GYWxzZSl7bWVtb3J5PSExO2JyZWFrfWZpcmluZz0hMSxsaXN0JiYoc3RhY2s/c3RhY2subGVuZ3RoJiZmaXJlKHN0YWNrLnNoaWZ0KCkpOm1lbW9yeT9saXN0PVtdOnNlbGYuZGlzYWJsZSgpKX0sc2VsZj17YWRkOmZ1bmN0aW9uKCl7aWYobGlzdCl7dmFyIHN0YXJ0PWxpc3QubGVuZ3RoOyFmdW5jdGlvbiBhZGQoYXJncyl7alF1ZXJ5LmVhY2goYXJncyxmdW5jdGlvbihfLGFyZyl7dmFyIHR5cGU9alF1ZXJ5LnR5cGUoYXJnKTtcImZ1bmN0aW9uXCI9PT10eXBlP29wdGlvbnMudW5pcXVlJiZzZWxmLmhhcyhhcmcpfHxsaXN0LnB1c2goYXJnKTphcmcmJmFyZy5sZW5ndGgmJlwic3RyaW5nXCIhPT10eXBlJiZhZGQoYXJnKX0pfShhcmd1bWVudHMpLGZpcmluZz9maXJpbmdMZW5ndGg9bGlzdC5sZW5ndGg6bWVtb3J5JiYoZmlyaW5nU3RhcnQ9c3RhcnQsZmlyZShtZW1vcnkpKX1yZXR1cm4gdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIGxpc3QmJmpRdWVyeS5lYWNoKGFyZ3VtZW50cyxmdW5jdGlvbihfLGFyZyl7Zm9yKHZhciBpbmRleDsoaW5kZXg9alF1ZXJ5LmluQXJyYXkoYXJnLGxpc3QsaW5kZXgpKT4tMTspbGlzdC5zcGxpY2UoaW5kZXgsMSksZmlyaW5nJiYoZmlyaW5nTGVuZ3RoPj1pbmRleCYmZmlyaW5nTGVuZ3RoLS0sZmlyaW5nSW5kZXg+PWluZGV4JiZmaXJpbmdJbmRleC0tKX0pLHRoaXN9LGhhczpmdW5jdGlvbihmbil7cmV0dXJuIGZuP2pRdWVyeS5pbkFycmF5KGZuLGxpc3QpPi0xOiEoIWxpc3R8fCFsaXN0Lmxlbmd0aCl9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIGxpc3Q9W10sZmlyaW5nTGVuZ3RoPTAsdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBsaXN0PXN0YWNrPW1lbW9yeT12b2lkIDAsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hbGlzdH0sbG9jazpmdW5jdGlvbigpe3JldHVybiBzdGFjaz12b2lkIDAsbWVtb3J5fHxzZWxmLmRpc2FibGUoKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hc3RhY2t9LGZpcmVXaXRoOmZ1bmN0aW9uKGNvbnRleHQsYXJncyl7cmV0dXJuIWxpc3R8fGZpcmVkJiYhc3RhY2t8fChhcmdzPWFyZ3N8fFtdLGFyZ3M9W2NvbnRleHQsYXJncy5zbGljZT9hcmdzLnNsaWNlKCk6YXJnc10sZmlyaW5nP3N0YWNrLnB1c2goYXJncyk6ZmlyZShhcmdzKSksdGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVybiBzZWxmLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhZmlyZWR9fTtyZXR1cm4gc2VsZn0salF1ZXJ5LmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oZnVuYyl7dmFyIHR1cGxlcz1bW1wicmVzb2x2ZVwiLFwiZG9uZVwiLGpRdWVyeS5DYWxsYmFja3MoXCJvbmNlIG1lbW9yeVwiKSxcInJlc29sdmVkXCJdLFtcInJlamVjdFwiLFwiZmFpbFwiLGpRdWVyeS5DYWxsYmFja3MoXCJvbmNlIG1lbW9yeVwiKSxcInJlamVjdGVkXCJdLFtcIm5vdGlmeVwiLFwicHJvZ3Jlc3NcIixqUXVlcnkuQ2FsbGJhY2tzKFwibWVtb3J5XCIpXV0sc3RhdGU9XCJwZW5kaW5nXCIscHJvbWlzZT17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gc3RhdGV9LGFsd2F5czpmdW5jdGlvbigpe3JldHVybiBkZWZlcnJlZC5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLHRoaXN9LHRoZW46ZnVuY3Rpb24oKXt2YXIgZm5zPWFyZ3VtZW50cztyZXR1cm4galF1ZXJ5LkRlZmVycmVkKGZ1bmN0aW9uKG5ld0RlZmVyKXtqUXVlcnkuZWFjaCh0dXBsZXMsZnVuY3Rpb24oaSx0dXBsZSl7dmFyIGZuPWpRdWVyeS5pc0Z1bmN0aW9uKGZuc1tpXSkmJmZuc1tpXTtkZWZlcnJlZFt0dXBsZVsxXV0oZnVuY3Rpb24oKXt2YXIgcmV0dXJuZWQ9Zm4mJmZuLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm5lZCYmalF1ZXJ5LmlzRnVuY3Rpb24ocmV0dXJuZWQucHJvbWlzZSk/cmV0dXJuZWQucHJvbWlzZSgpLmRvbmUobmV3RGVmZXIucmVzb2x2ZSkuZmFpbChuZXdEZWZlci5yZWplY3QpLnByb2dyZXNzKG5ld0RlZmVyLm5vdGlmeSk6bmV3RGVmZXJbdHVwbGVbMF0rXCJXaXRoXCJdKHRoaXM9PT1wcm9taXNlP25ld0RlZmVyLnByb21pc2UoKTp0aGlzLGZuP1tyZXR1cm5lZF06YXJndW1lbnRzKX0pfSksZm5zPW51bGx9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rpb24ob2JqKXtyZXR1cm4gbnVsbCE9b2JqP2pRdWVyeS5leHRlbmQob2JqLHByb21pc2UpOnByb21pc2V9fSxkZWZlcnJlZD17fTtyZXR1cm4gcHJvbWlzZS5waXBlPXByb21pc2UudGhlbixqUXVlcnkuZWFjaCh0dXBsZXMsZnVuY3Rpb24oaSx0dXBsZSl7dmFyIGxpc3Q9dHVwbGVbMl0sc3RhdGVTdHJpbmc9dHVwbGVbM107cHJvbWlzZVt0dXBsZVsxXV09bGlzdC5hZGQsc3RhdGVTdHJpbmcmJmxpc3QuYWRkKGZ1bmN0aW9uKCl7c3RhdGU9c3RhdGVTdHJpbmd9LHR1cGxlc1sxXmldWzJdLmRpc2FibGUsdHVwbGVzWzJdWzJdLmxvY2spLGRlZmVycmVkW3R1cGxlWzBdXT1mdW5jdGlvbigpe3JldHVybiBkZWZlcnJlZFt0dXBsZVswXStcIldpdGhcIl0odGhpcz09PWRlZmVycmVkP3Byb21pc2U6dGhpcyxhcmd1bWVudHMpLHRoaXN9LGRlZmVycmVkW3R1cGxlWzBdK1wiV2l0aFwiXT1saXN0LmZpcmVXaXRofSkscHJvbWlzZS5wcm9taXNlKGRlZmVycmVkKSxmdW5jJiZmdW5jLmNhbGwoZGVmZXJyZWQsZGVmZXJyZWQpLGRlZmVycmVkfSx3aGVuOmZ1bmN0aW9uKHN1Ym9yZGluYXRlKXt2YXIgcHJvZ3Jlc3NWYWx1ZXMscHJvZ3Jlc3NDb250ZXh0cyxyZXNvbHZlQ29udGV4dHMsaT0wLHJlc29sdmVWYWx1ZXM9c2xpY2UuY2FsbChhcmd1bWVudHMpLGxlbmd0aD1yZXNvbHZlVmFsdWVzLmxlbmd0aCxyZW1haW5pbmc9MSE9PWxlbmd0aHx8c3Vib3JkaW5hdGUmJmpRdWVyeS5pc0Z1bmN0aW9uKHN1Ym9yZGluYXRlLnByb21pc2UpP2xlbmd0aDowLGRlZmVycmVkPTE9PT1yZW1haW5pbmc/c3Vib3JkaW5hdGU6alF1ZXJ5LkRlZmVycmVkKCksdXBkYXRlRnVuYz1mdW5jdGlvbihpLGNvbnRleHRzLHZhbHVlcyl7cmV0dXJuIGZ1bmN0aW9uKHZhbHVlKXtjb250ZXh0c1tpXT10aGlzLHZhbHVlc1tpXT1hcmd1bWVudHMubGVuZ3RoPjE/c2xpY2UuY2FsbChhcmd1bWVudHMpOnZhbHVlLHZhbHVlcz09PXByb2dyZXNzVmFsdWVzP2RlZmVycmVkLm5vdGlmeVdpdGgoY29udGV4dHMsdmFsdWVzKTotLXJlbWFpbmluZ3x8ZGVmZXJyZWQucmVzb2x2ZVdpdGgoY29udGV4dHMsdmFsdWVzKX19O2lmKGxlbmd0aD4xKWZvcihwcm9ncmVzc1ZhbHVlcz1uZXcgQXJyYXkobGVuZ3RoKSxwcm9ncmVzc0NvbnRleHRzPW5ldyBBcnJheShsZW5ndGgpLHJlc29sdmVDb250ZXh0cz1uZXcgQXJyYXkobGVuZ3RoKTtsZW5ndGg+aTtpKyspcmVzb2x2ZVZhbHVlc1tpXSYmalF1ZXJ5LmlzRnVuY3Rpb24ocmVzb2x2ZVZhbHVlc1tpXS5wcm9taXNlKT9yZXNvbHZlVmFsdWVzW2ldLnByb21pc2UoKS5kb25lKHVwZGF0ZUZ1bmMoaSxyZXNvbHZlQ29udGV4dHMscmVzb2x2ZVZhbHVlcykpLmZhaWwoZGVmZXJyZWQucmVqZWN0KS5wcm9ncmVzcyh1cGRhdGVGdW5jKGkscHJvZ3Jlc3NDb250ZXh0cyxwcm9ncmVzc1ZhbHVlcykpOi0tcmVtYWluaW5nO3JldHVybiByZW1haW5pbmd8fGRlZmVycmVkLnJlc29sdmVXaXRoKHJlc29sdmVDb250ZXh0cyxyZXNvbHZlVmFsdWVzKSxkZWZlcnJlZC5wcm9taXNlKCl9fSk7dmFyIHJlYWR5TGlzdDtqUXVlcnkuZm4ucmVhZHk9ZnVuY3Rpb24oZm4pe3JldHVybiBqUXVlcnkucmVhZHkucHJvbWlzZSgpLmRvbmUoZm4pLHRoaXN9LGpRdWVyeS5leHRlbmQoe2lzUmVhZHk6ITEscmVhZHlXYWl0OjEsaG9sZFJlYWR5OmZ1bmN0aW9uKGhvbGQpe2hvbGQ/alF1ZXJ5LnJlYWR5V2FpdCsrOmpRdWVyeS5yZWFkeSghMCl9LHJlYWR5OmZ1bmN0aW9uKHdhaXQpe2lmKHdhaXQ9PT0hMD8hLS1qUXVlcnkucmVhZHlXYWl0OiFqUXVlcnkuaXNSZWFkeSl7aWYoIWRvY3VtZW50LmJvZHkpcmV0dXJuIHNldFRpbWVvdXQoalF1ZXJ5LnJlYWR5KTtqUXVlcnkuaXNSZWFkeT0hMCx3YWl0IT09ITAmJi0talF1ZXJ5LnJlYWR5V2FpdD4wfHwocmVhZHlMaXN0LnJlc29sdmVXaXRoKGRvY3VtZW50LFtqUXVlcnldKSxqUXVlcnkuZm4udHJpZ2dlckhhbmRsZXImJihqUXVlcnkoZG9jdW1lbnQpLnRyaWdnZXJIYW5kbGVyKFwicmVhZHlcIiksalF1ZXJ5KGRvY3VtZW50KS5vZmYoXCJyZWFkeVwiKSkpfX19KSxqUXVlcnkucmVhZHkucHJvbWlzZT1mdW5jdGlvbihvYmope2lmKCFyZWFkeUxpc3QpaWYocmVhZHlMaXN0PWpRdWVyeS5EZWZlcnJlZCgpLFwiY29tcGxldGVcIj09PWRvY3VtZW50LnJlYWR5U3RhdGUpc2V0VGltZW91dChqUXVlcnkucmVhZHkpO2Vsc2UgaWYoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcilkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiRE9NQ29udGVudExvYWRlZFwiLGNvbXBsZXRlZCwhMSksXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIixjb21wbGV0ZWQsITEpO2Vsc2V7ZG9jdW1lbnQuYXR0YWNoRXZlbnQoXCJvbnJlYWR5c3RhdGVjaGFuZ2VcIixjb21wbGV0ZWQpLHdpbmRvdy5hdHRhY2hFdmVudChcIm9ubG9hZFwiLGNvbXBsZXRlZCk7dmFyIHRvcD0hMTt0cnl7dG9wPW51bGw9PXdpbmRvdy5mcmFtZUVsZW1lbnQmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudH1jYXRjaChlKXt9dG9wJiZ0b3AuZG9TY3JvbGwmJiFmdW5jdGlvbiBkb1Njcm9sbENoZWNrKCl7aWYoIWpRdWVyeS5pc1JlYWR5KXt0cnl7dG9wLmRvU2Nyb2xsKFwibGVmdFwiKX1jYXRjaChlKXtyZXR1cm4gc2V0VGltZW91dChkb1Njcm9sbENoZWNrLDUwKX1kZXRhY2goKSxqUXVlcnkucmVhZHkoKX19KCl9cmV0dXJuIHJlYWR5TGlzdC5wcm9taXNlKG9iail9O3ZhciBpLHN0cnVuZGVmaW5lZD1cInVuZGVmaW5lZFwiO2ZvcihpIGluIGpRdWVyeShzdXBwb3J0KSlicmVhaztzdXBwb3J0Lm93bkxhc3Q9XCIwXCIhPT1pLHN1cHBvcnQuaW5saW5lQmxvY2tOZWVkc0xheW91dD0hMSxqUXVlcnkoZnVuY3Rpb24oKXt2YXIgdmFsLGRpdixib2R5LGNvbnRhaW5lcjtib2R5PWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYm9keVwiKVswXSxib2R5JiZib2R5LnN0eWxlJiYoZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksY29udGFpbmVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksY29udGFpbmVyLnN0eWxlLmNzc1RleHQ9XCJwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweFwiLGJvZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKS5hcHBlbmRDaGlsZChkaXYpLHR5cGVvZiBkaXYuc3R5bGUuem9vbSE9PXN0cnVuZGVmaW5lZCYmKGRpdi5zdHlsZS5jc3NUZXh0PVwiZGlzcGxheTppbmxpbmU7bWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzoxcHg7d2lkdGg6MXB4O3pvb206MVwiLHN1cHBvcnQuaW5saW5lQmxvY2tOZWVkc0xheW91dD12YWw9Mz09PWRpdi5vZmZzZXRXaWR0aCx2YWwmJihib2R5LnN0eWxlLnpvb209MSkpLGJvZHkucmVtb3ZlQ2hpbGQoY29udGFpbmVyKSl9KSxmdW5jdGlvbigpe3ZhciBkaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtpZihudWxsPT1zdXBwb3J0LmRlbGV0ZUV4cGFuZG8pe3N1cHBvcnQuZGVsZXRlRXhwYW5kbz0hMDt0cnl7ZGVsZXRlIGRpdi50ZXN0fWNhdGNoKGUpe3N1cHBvcnQuZGVsZXRlRXhwYW5kbz0hMX19ZGl2PW51bGx9KCksalF1ZXJ5LmFjY2VwdERhdGE9ZnVuY3Rpb24oZWxlbSl7dmFyIG5vRGF0YT1qUXVlcnkubm9EYXRhWyhlbGVtLm5vZGVOYW1lK1wiIFwiKS50b0xvd2VyQ2FzZSgpXSxub2RlVHlwZT0rZWxlbS5ub2RlVHlwZXx8MTtyZXR1cm4gMSE9PW5vZGVUeXBlJiY5IT09bm9kZVR5cGU/ITE6IW5vRGF0YXx8bm9EYXRhIT09ITAmJmVsZW0uZ2V0QXR0cmlidXRlKFwiY2xhc3NpZFwiKT09PW5vRGF0YX07dmFyIHJicmFjZT0vXig/Olxce1tcXHdcXFddKlxcfXxcXFtbXFx3XFxXXSpcXF0pJC8scm11bHRpRGFzaD0vKFtBLVpdKS9nO2pRdWVyeS5leHRlbmQoe2NhY2hlOnt9LG5vRGF0YTp7XCJhcHBsZXQgXCI6ITAsXCJlbWJlZCBcIjohMCxcIm9iamVjdCBcIjpcImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMFwifSxoYXNEYXRhOmZ1bmN0aW9uKGVsZW0pe3JldHVybiBlbGVtPWVsZW0ubm9kZVR5cGU/alF1ZXJ5LmNhY2hlW2VsZW1balF1ZXJ5LmV4cGFuZG9dXTplbGVtW2pRdWVyeS5leHBhbmRvXSwhIWVsZW0mJiFpc0VtcHR5RGF0YU9iamVjdChlbGVtKX0sZGF0YTpmdW5jdGlvbihlbGVtLG5hbWUsZGF0YSl7cmV0dXJuIGludGVybmFsRGF0YShlbGVtLG5hbWUsZGF0YSl9LHJlbW92ZURhdGE6ZnVuY3Rpb24oZWxlbSxuYW1lKXtyZXR1cm4gaW50ZXJuYWxSZW1vdmVEYXRhKGVsZW0sbmFtZSl9LF9kYXRhOmZ1bmN0aW9uKGVsZW0sbmFtZSxkYXRhKXtyZXR1cm4gaW50ZXJuYWxEYXRhKGVsZW0sbmFtZSxkYXRhLCEwKX0sX3JlbW92ZURhdGE6ZnVuY3Rpb24oZWxlbSxuYW1lKXtyZXR1cm4gaW50ZXJuYWxSZW1vdmVEYXRhKGVsZW0sbmFtZSwhMCl9fSksalF1ZXJ5LmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihrZXksdmFsdWUpe3ZhciBpLG5hbWUsZGF0YSxlbGVtPXRoaXNbMF0sYXR0cnM9ZWxlbSYmZWxlbS5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PWtleSl7aWYodGhpcy5sZW5ndGgmJihkYXRhPWpRdWVyeS5kYXRhKGVsZW0pLDE9PT1lbGVtLm5vZGVUeXBlJiYhalF1ZXJ5Ll9kYXRhKGVsZW0sXCJwYXJzZWRBdHRyc1wiKSkpe2ZvcihpPWF0dHJzLmxlbmd0aDtpLS07KWF0dHJzW2ldJiYobmFtZT1hdHRyc1tpXS5uYW1lLDA9PT1uYW1lLmluZGV4T2YoXCJkYXRhLVwiKSYmKG5hbWU9alF1ZXJ5LmNhbWVsQ2FzZShuYW1lLnNsaWNlKDUpKSxkYXRhQXR0cihlbGVtLG5hbWUsZGF0YVtuYW1lXSkpKTtqUXVlcnkuX2RhdGEoZWxlbSxcInBhcnNlZEF0dHJzXCIsITApfXJldHVybiBkYXRhfXJldHVyblwib2JqZWN0XCI9PXR5cGVvZiBrZXk/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7alF1ZXJ5LmRhdGEodGhpcyxrZXkpfSk6YXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaChmdW5jdGlvbigpe2pRdWVyeS5kYXRhKHRoaXMsa2V5LHZhbHVlKX0pOmVsZW0/ZGF0YUF0dHIoZWxlbSxrZXksalF1ZXJ5LmRhdGEoZWxlbSxrZXkpKTp2b2lkIDB9LHJlbW92ZURhdGE6ZnVuY3Rpb24oa2V5KXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7alF1ZXJ5LnJlbW92ZURhdGEodGhpcyxrZXkpfSl9fSksalF1ZXJ5LmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oZWxlbSx0eXBlLGRhdGEpe3ZhciBxdWV1ZTtyZXR1cm4gZWxlbT8odHlwZT0odHlwZXx8XCJmeFwiKStcInF1ZXVlXCIscXVldWU9alF1ZXJ5Ll9kYXRhKGVsZW0sdHlwZSksZGF0YSYmKCFxdWV1ZXx8alF1ZXJ5LmlzQXJyYXkoZGF0YSk/cXVldWU9alF1ZXJ5Ll9kYXRhKGVsZW0sdHlwZSxqUXVlcnkubWFrZUFycmF5KGRhdGEpKTpxdWV1ZS5wdXNoKGRhdGEpKSxxdWV1ZXx8W10pOnZvaWQgMH0sZGVxdWV1ZTpmdW5jdGlvbihlbGVtLHR5cGUpe3R5cGU9dHlwZXx8XCJmeFwiO3ZhciBxdWV1ZT1qUXVlcnkucXVldWUoZWxlbSx0eXBlKSxzdGFydExlbmd0aD1xdWV1ZS5sZW5ndGgsZm49cXVldWUuc2hpZnQoKSxob29rcz1qUXVlcnkuX3F1ZXVlSG9va3MoZWxlbSx0eXBlKSxuZXh0PWZ1bmN0aW9uKCl7alF1ZXJ5LmRlcXVldWUoZWxlbSx0eXBlKX07XCJpbnByb2dyZXNzXCI9PT1mbiYmKGZuPXF1ZXVlLnNoaWZ0KCksc3RhcnRMZW5ndGgtLSksZm4mJihcImZ4XCI9PT10eXBlJiZxdWV1ZS51bnNoaWZ0KFwiaW5wcm9ncmVzc1wiKSxkZWxldGUgaG9va3Muc3RvcCxmbi5jYWxsKGVsZW0sbmV4dCxob29rcykpLCFzdGFydExlbmd0aCYmaG9va3MmJmhvb2tzLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oZWxlbSx0eXBlKXt2YXIga2V5PXR5cGUrXCJxdWV1ZUhvb2tzXCI7cmV0dXJuIGpRdWVyeS5fZGF0YShlbGVtLGtleSl8fGpRdWVyeS5fZGF0YShlbGVtLGtleSx7ZW1wdHk6alF1ZXJ5LkNhbGxiYWNrcyhcIm9uY2UgbWVtb3J5XCIpLmFkZChmdW5jdGlvbigpe2pRdWVyeS5fcmVtb3ZlRGF0YShlbGVtLHR5cGUrXCJxdWV1ZVwiKSxqUXVlcnkuX3JlbW92ZURhdGEoZWxlbSxrZXkpfSl9KX19KSxqUXVlcnkuZm4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbih0eXBlLGRhdGEpe3ZhciBzZXR0ZXI9MjtyZXR1cm5cInN0cmluZ1wiIT10eXBlb2YgdHlwZSYmKGRhdGE9dHlwZSx0eXBlPVwiZnhcIixzZXR0ZXItLSksYXJndW1lbnRzLmxlbmd0aDxzZXR0ZXI/alF1ZXJ5LnF1ZXVlKHRoaXNbMF0sdHlwZSk6dm9pZCAwPT09ZGF0YT90aGlzOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBxdWV1ZT1qUXVlcnkucXVldWUodGhpcyx0eXBlLGRhdGEpO2pRdWVyeS5fcXVldWVIb29rcyh0aGlzLHR5cGUpLFwiZnhcIj09PXR5cGUmJlwiaW5wcm9ncmVzc1wiIT09cXVldWVbMF0mJmpRdWVyeS5kZXF1ZXVlKHRoaXMsdHlwZSl9KX0sZGVxdWV1ZTpmdW5jdGlvbih0eXBlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7alF1ZXJ5LmRlcXVldWUodGhpcyx0eXBlKX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKHR5cGUpe3JldHVybiB0aGlzLnF1ZXVlKHR5cGV8fFwiZnhcIixbXSl9LHByb21pc2U6ZnVuY3Rpb24odHlwZSxvYmope3ZhciB0bXAsY291bnQ9MSxkZWZlcj1qUXVlcnkuRGVmZXJyZWQoKSxlbGVtZW50cz10aGlzLGk9dGhpcy5sZW5ndGgscmVzb2x2ZT1mdW5jdGlvbigpey0tY291bnR8fGRlZmVyLnJlc29sdmVXaXRoKGVsZW1lbnRzLFtlbGVtZW50c10pfTtmb3IoXCJzdHJpbmdcIiE9dHlwZW9mIHR5cGUmJihvYmo9dHlwZSx0eXBlPXZvaWQgMCksdHlwZT10eXBlfHxcImZ4XCI7aS0tOyl0bXA9alF1ZXJ5Ll9kYXRhKGVsZW1lbnRzW2ldLHR5cGUrXCJxdWV1ZUhvb2tzXCIpLHRtcCYmdG1wLmVtcHR5JiYoY291bnQrKyx0bXAuZW1wdHkuYWRkKHJlc29sdmUpKTtyZXR1cm4gcmVzb2x2ZSgpLGRlZmVyLnByb21pc2Uob2JqKX19KTt2YXIgcG51bT0vWystXT8oPzpcXGQqXFwufClcXGQrKD86W2VFXVsrLV0/XFxkK3wpLy5zb3VyY2UsY3NzRXhwYW5kPVtcIlRvcFwiLFwiUmlnaHRcIixcIkJvdHRvbVwiLFwiTGVmdFwiXSxpc0hpZGRlbj1mdW5jdGlvbihlbGVtLGVsKXtyZXR1cm4gZWxlbT1lbHx8ZWxlbSxcIm5vbmVcIj09PWpRdWVyeS5jc3MoZWxlbSxcImRpc3BsYXlcIil8fCFqUXVlcnkuY29udGFpbnMoZWxlbS5vd25lckRvY3VtZW50LGVsZW0pfSxhY2Nlc3M9alF1ZXJ5LmFjY2Vzcz1mdW5jdGlvbihlbGVtcyxmbixrZXksdmFsdWUsY2hhaW5hYmxlLGVtcHR5R2V0LHJhdyl7dmFyIGk9MCxsZW5ndGg9ZWxlbXMubGVuZ3RoLGJ1bGs9bnVsbD09a2V5O2lmKFwib2JqZWN0XCI9PT1qUXVlcnkudHlwZShrZXkpKXtjaGFpbmFibGU9ITA7Zm9yKGkgaW4ga2V5KWpRdWVyeS5hY2Nlc3MoZWxlbXMsZm4saSxrZXlbaV0sITAsZW1wdHlHZXQscmF3KX1lbHNlIGlmKHZvaWQgMCE9PXZhbHVlJiYoY2hhaW5hYmxlPSEwLGpRdWVyeS5pc0Z1bmN0aW9uKHZhbHVlKXx8KHJhdz0hMCksYnVsayYmKHJhdz8oZm4uY2FsbChlbGVtcyx2YWx1ZSksZm49bnVsbCk6KGJ1bGs9Zm4sZm49ZnVuY3Rpb24oZWxlbSxrZXksdmFsdWUpe3JldHVybiBidWxrLmNhbGwoalF1ZXJ5KGVsZW0pLHZhbHVlKX0pKSxmbikpZm9yKDtsZW5ndGg+aTtpKyspZm4oZWxlbXNbaV0sa2V5LHJhdz92YWx1ZTp2YWx1ZS5jYWxsKGVsZW1zW2ldLGksZm4oZWxlbXNbaV0sa2V5KSkpO3JldHVybiBjaGFpbmFibGU/ZWxlbXM6YnVsaz9mbi5jYWxsKGVsZW1zKTpsZW5ndGg/Zm4oZWxlbXNbMF0sa2V5KTplbXB0eUdldH0scmNoZWNrYWJsZVR5cGU9L14oPzpjaGVja2JveHxyYWRpbykkL2k7IWZ1bmN0aW9uKCl7dmFyIGlucHV0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKSxkaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxmcmFnbWVudD1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7aWYoZGl2LmlubmVySFRNTD1cIiAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJz5hPC9hPjxpbnB1dCB0eXBlPSdjaGVja2JveCcvPlwiLHN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2U9Mz09PWRpdi5maXJzdENoaWxkLm5vZGVUeXBlLHN1cHBvcnQudGJvZHk9IWRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZShcInRib2R5XCIpLmxlbmd0aCxzdXBwb3J0Lmh0bWxTZXJpYWxpemU9ISFkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJsaW5rXCIpLmxlbmd0aCxzdXBwb3J0Lmh0bWw1Q2xvbmU9XCI8Om5hdj48LzpuYXY+XCIhPT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibmF2XCIpLmNsb25lTm9kZSghMCkub3V0ZXJIVE1MLGlucHV0LnR5cGU9XCJjaGVja2JveFwiLGlucHV0LmNoZWNrZWQ9ITAsZnJhZ21lbnQuYXBwZW5kQ2hpbGQoaW5wdXQpLHN1cHBvcnQuYXBwZW5kQ2hlY2tlZD1pbnB1dC5jaGVja2VkLGRpdi5pbm5lckhUTUw9XCI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+XCIsc3VwcG9ydC5ub0Nsb25lQ2hlY2tlZD0hIWRpdi5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWUsZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZGl2KSxkaXYuaW5uZXJIVE1MPVwiPGlucHV0IHR5cGU9J3JhZGlvJyBjaGVja2VkPSdjaGVja2VkJyBuYW1lPSd0Jy8+XCIsc3VwcG9ydC5jaGVja0Nsb25lPWRpdi5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsc3VwcG9ydC5ub0Nsb25lRXZlbnQ9ITAsZGl2LmF0dGFjaEV2ZW50JiYoZGl2LmF0dGFjaEV2ZW50KFwib25jbGlja1wiLGZ1bmN0aW9uKCl7c3VwcG9ydC5ub0Nsb25lRXZlbnQ9ITF9KSxkaXYuY2xvbmVOb2RlKCEwKS5jbGljaygpKSxudWxsPT1zdXBwb3J0LmRlbGV0ZUV4cGFuZG8pe3N1cHBvcnQuZGVsZXRlRXhwYW5kbz0hMDt0cnl7ZGVsZXRlIGRpdi50ZXN0fWNhdGNoKGUpe3N1cHBvcnQuZGVsZXRlRXhwYW5kbz0hMX19fSgpLGZ1bmN0aW9uKCl7dmFyIGksZXZlbnROYW1lLGRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO2ZvcihpIGlue3N1Ym1pdDohMCxjaGFuZ2U6ITAsZm9jdXNpbjohMH0pZXZlbnROYW1lPVwib25cIitpLChzdXBwb3J0W2krXCJCdWJibGVzXCJdPWV2ZW50TmFtZSBpbiB3aW5kb3cpfHwoZGl2LnNldEF0dHJpYnV0ZShldmVudE5hbWUsXCJ0XCIpLHN1cHBvcnRbaStcIkJ1YmJsZXNcIl09ZGl2LmF0dHJpYnV0ZXNbZXZlbnROYW1lXS5leHBhbmRvPT09ITEpO2Rpdj1udWxsfSgpO3ZhciByZm9ybUVsZW1zPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhKSQvaSxya2V5RXZlbnQ9L15rZXkvLHJtb3VzZUV2ZW50PS9eKD86bW91c2V8cG9pbnRlcnxjb250ZXh0bWVudSl8Y2xpY2svLHJmb2N1c01vcnBoPS9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyxydHlwZW5hbWVzcGFjZT0vXihbXi5dKikoPzpcXC4oLispfCkkLztqUXVlcnkuZXZlbnQ9e2dsb2JhbDp7fSxhZGQ6ZnVuY3Rpb24oZWxlbSx0eXBlcyxoYW5kbGVyLGRhdGEsc2VsZWN0b3Ipe3ZhciB0bXAsZXZlbnRzLHQsaGFuZGxlT2JqSW4sc3BlY2lhbCxldmVudEhhbmRsZSxoYW5kbGVPYmosaGFuZGxlcnMsdHlwZSxuYW1lc3BhY2VzLG9yaWdUeXBlLGVsZW1EYXRhPWpRdWVyeS5fZGF0YShlbGVtKTtpZihlbGVtRGF0YSl7Zm9yKGhhbmRsZXIuaGFuZGxlciYmKGhhbmRsZU9iakluPWhhbmRsZXIsaGFuZGxlcj1oYW5kbGVPYmpJbi5oYW5kbGVyLHNlbGVjdG9yPWhhbmRsZU9iakluLnNlbGVjdG9yKSxoYW5kbGVyLmd1aWR8fChoYW5kbGVyLmd1aWQ9alF1ZXJ5Lmd1aWQrKyksKGV2ZW50cz1lbGVtRGF0YS5ldmVudHMpfHwoZXZlbnRzPWVsZW1EYXRhLmV2ZW50cz17fSksKGV2ZW50SGFuZGxlPWVsZW1EYXRhLmhhbmRsZSl8fChldmVudEhhbmRsZT1lbGVtRGF0YS5oYW5kbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBqUXVlcnk9PT1zdHJ1bmRlZmluZWR8fGUmJmpRdWVyeS5ldmVudC50cmlnZ2VyZWQ9PT1lLnR5cGU/dm9pZCAwOmpRdWVyeS5ldmVudC5kaXNwYXRjaC5hcHBseShldmVudEhhbmRsZS5lbGVtLGFyZ3VtZW50cyl9LGV2ZW50SGFuZGxlLmVsZW09ZWxlbSksdHlwZXM9KHR5cGVzfHxcIlwiKS5tYXRjaChybm90d2hpdGUpfHxbXCJcIl0sdD10eXBlcy5sZW5ndGg7dC0tOyl0bXA9cnR5cGVuYW1lc3BhY2UuZXhlYyh0eXBlc1t0XSl8fFtdLHR5cGU9b3JpZ1R5cGU9dG1wWzFdLG5hbWVzcGFjZXM9KHRtcFsyXXx8XCJcIikuc3BsaXQoXCIuXCIpLnNvcnQoKSx0eXBlJiYoc3BlY2lhbD1qUXVlcnkuZXZlbnQuc3BlY2lhbFt0eXBlXXx8e30sdHlwZT0oc2VsZWN0b3I/c3BlY2lhbC5kZWxlZ2F0ZVR5cGU6c3BlY2lhbC5iaW5kVHlwZSl8fHR5cGUsc3BlY2lhbD1qUXVlcnkuZXZlbnQuc3BlY2lhbFt0eXBlXXx8e30saGFuZGxlT2JqPWpRdWVyeS5leHRlbmQoe3R5cGU6dHlwZSxvcmlnVHlwZTpvcmlnVHlwZSxkYXRhOmRhdGEsaGFuZGxlcjpoYW5kbGVyLGd1aWQ6aGFuZGxlci5ndWlkLHNlbGVjdG9yOnNlbGVjdG9yLG5lZWRzQ29udGV4dDpzZWxlY3RvciYmalF1ZXJ5LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3Qoc2VsZWN0b3IpLG5hbWVzcGFjZTpuYW1lc3BhY2VzLmpvaW4oXCIuXCIpfSxoYW5kbGVPYmpJbiksKGhhbmRsZXJzPWV2ZW50c1t0eXBlXSl8fChoYW5kbGVycz1ldmVudHNbdHlwZV09W10saGFuZGxlcnMuZGVsZWdhdGVDb3VudD0wLHNwZWNpYWwuc2V0dXAmJnNwZWNpYWwuc2V0dXAuY2FsbChlbGVtLGRhdGEsbmFtZXNwYWNlcyxldmVudEhhbmRsZSkhPT0hMXx8KGVsZW0uYWRkRXZlbnRMaXN0ZW5lcj9lbGVtLmFkZEV2ZW50TGlzdGVuZXIodHlwZSxldmVudEhhbmRsZSwhMSk6ZWxlbS5hdHRhY2hFdmVudCYmZWxlbS5hdHRhY2hFdmVudChcIm9uXCIrdHlwZSxldmVudEhhbmRsZSkpKSxzcGVjaWFsLmFkZCYmKHNwZWNpYWwuYWRkLmNhbGwoZWxlbSxoYW5kbGVPYmopLGhhbmRsZU9iai5oYW5kbGVyLmd1aWR8fChoYW5kbGVPYmouaGFuZGxlci5ndWlkPWhhbmRsZXIuZ3VpZCkpLHNlbGVjdG9yP2hhbmRsZXJzLnNwbGljZShoYW5kbGVycy5kZWxlZ2F0ZUNvdW50KyssMCxoYW5kbGVPYmopOmhhbmRsZXJzLnB1c2goaGFuZGxlT2JqKSxqUXVlcnkuZXZlbnQuZ2xvYmFsW3R5cGVdPSEwKTtlbGVtPW51bGx9fSxyZW1vdmU6ZnVuY3Rpb24oZWxlbSx0eXBlcyxoYW5kbGVyLHNlbGVjdG9yLG1hcHBlZFR5cGVzKXt2YXIgaixoYW5kbGVPYmosdG1wLG9yaWdDb3VudCx0LGV2ZW50cyxzcGVjaWFsLGhhbmRsZXJzLHR5cGUsbmFtZXNwYWNlcyxvcmlnVHlwZSxlbGVtRGF0YT1qUXVlcnkuaGFzRGF0YShlbGVtKSYmalF1ZXJ5Ll9kYXRhKGVsZW0pO2lmKGVsZW1EYXRhJiYoZXZlbnRzPWVsZW1EYXRhLmV2ZW50cykpe2Zvcih0eXBlcz0odHlwZXN8fFwiXCIpLm1hdGNoKHJub3R3aGl0ZSl8fFtcIlwiXSx0PXR5cGVzLmxlbmd0aDt0LS07KWlmKHRtcD1ydHlwZW5hbWVzcGFjZS5leGVjKHR5cGVzW3RdKXx8W10sdHlwZT1vcmlnVHlwZT10bXBbMV0sbmFtZXNwYWNlcz0odG1wWzJdfHxcIlwiKS5zcGxpdChcIi5cIikuc29ydCgpLHR5cGUpe2ZvcihzcGVjaWFsPWpRdWVyeS5ldmVudC5zcGVjaWFsW3R5cGVdfHx7fSx0eXBlPShzZWxlY3Rvcj9zcGVjaWFsLmRlbGVnYXRlVHlwZTpzcGVjaWFsLmJpbmRUeXBlKXx8dHlwZSxoYW5kbGVycz1ldmVudHNbdHlwZV18fFtdLHRtcD10bXBbMl0mJm5ldyBSZWdFeHAoXCIoXnxcXFxcLilcIituYW1lc3BhY2VzLmpvaW4oXCJcXFxcLig/Oi4qXFxcXC58KVwiKStcIihcXFxcLnwkKVwiKSxvcmlnQ291bnQ9aj1oYW5kbGVycy5sZW5ndGg7ai0tOyloYW5kbGVPYmo9aGFuZGxlcnNbal0sIW1hcHBlZFR5cGVzJiZvcmlnVHlwZSE9PWhhbmRsZU9iai5vcmlnVHlwZXx8aGFuZGxlciYmaGFuZGxlci5ndWlkIT09aGFuZGxlT2JqLmd1aWR8fHRtcCYmIXRtcC50ZXN0KGhhbmRsZU9iai5uYW1lc3BhY2UpfHxzZWxlY3RvciYmc2VsZWN0b3IhPT1oYW5kbGVPYmouc2VsZWN0b3ImJihcIioqXCIhPT1zZWxlY3Rvcnx8IWhhbmRsZU9iai5zZWxlY3Rvcil8fChoYW5kbGVycy5zcGxpY2UoaiwxKSxoYW5kbGVPYmouc2VsZWN0b3ImJmhhbmRsZXJzLmRlbGVnYXRlQ291bnQtLSxzcGVjaWFsLnJlbW92ZSYmc3BlY2lhbC5yZW1vdmUuY2FsbChlbGVtLGhhbmRsZU9iaikpO29yaWdDb3VudCYmIWhhbmRsZXJzLmxlbmd0aCYmKHNwZWNpYWwudGVhcmRvd24mJnNwZWNpYWwudGVhcmRvd24uY2FsbChlbGVtLG5hbWVzcGFjZXMsZWxlbURhdGEuaGFuZGxlKSE9PSExfHxqUXVlcnkucmVtb3ZlRXZlbnQoZWxlbSx0eXBlLGVsZW1EYXRhLmhhbmRsZSksZGVsZXRlIGV2ZW50c1t0eXBlXSl9ZWxzZSBmb3IodHlwZSBpbiBldmVudHMpalF1ZXJ5LmV2ZW50LnJlbW92ZShlbGVtLHR5cGUrdHlwZXNbdF0saGFuZGxlcixzZWxlY3RvciwhMCk7alF1ZXJ5LmlzRW1wdHlPYmplY3QoZXZlbnRzKSYmKGRlbGV0ZSBlbGVtRGF0YS5oYW5kbGUsalF1ZXJ5Ll9yZW1vdmVEYXRhKGVsZW0sXCJldmVudHNcIikpfX0sdHJpZ2dlcjpmdW5jdGlvbihldmVudCxkYXRhLGVsZW0sb25seUhhbmRsZXJzKXt2YXIgaGFuZGxlLG9udHlwZSxjdXIsYnViYmxlVHlwZSxzcGVjaWFsLHRtcCxpLGV2ZW50UGF0aD1bZWxlbXx8ZG9jdW1lbnRdLHR5cGU9aGFzT3duLmNhbGwoZXZlbnQsXCJ0eXBlXCIpP2V2ZW50LnR5cGU6ZXZlbnQsbmFtZXNwYWNlcz1oYXNPd24uY2FsbChldmVudCxcIm5hbWVzcGFjZVwiKT9ldmVudC5uYW1lc3BhY2Uuc3BsaXQoXCIuXCIpOltdO2lmKGN1cj10bXA9ZWxlbT1lbGVtfHxkb2N1bWVudCwzIT09ZWxlbS5ub2RlVHlwZSYmOCE9PWVsZW0ubm9kZVR5cGUmJiFyZm9jdXNNb3JwaC50ZXN0KHR5cGUralF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCkmJih0eXBlLmluZGV4T2YoXCIuXCIpPj0wJiYobmFtZXNwYWNlcz10eXBlLnNwbGl0KFwiLlwiKSx0eXBlPW5hbWVzcGFjZXMuc2hpZnQoKSxuYW1lc3BhY2VzLnNvcnQoKSksb250eXBlPXR5cGUuaW5kZXhPZihcIjpcIik8MCYmXCJvblwiK3R5cGUsZXZlbnQ9ZXZlbnRbalF1ZXJ5LmV4cGFuZG9dP2V2ZW50Om5ldyBqUXVlcnkuRXZlbnQodHlwZSxcIm9iamVjdFwiPT10eXBlb2YgZXZlbnQmJmV2ZW50KSxldmVudC5pc1RyaWdnZXI9b25seUhhbmRsZXJzPzI6MyxldmVudC5uYW1lc3BhY2U9bmFtZXNwYWNlcy5qb2luKFwiLlwiKSxldmVudC5uYW1lc3BhY2VfcmU9ZXZlbnQubmFtZXNwYWNlP25ldyBSZWdFeHAoXCIoXnxcXFxcLilcIituYW1lc3BhY2VzLmpvaW4oXCJcXFxcLig/Oi4qXFxcXC58KVwiKStcIihcXFxcLnwkKVwiKTpudWxsLGV2ZW50LnJlc3VsdD12b2lkIDAsZXZlbnQudGFyZ2V0fHwoZXZlbnQudGFyZ2V0PWVsZW0pLGRhdGE9bnVsbD09ZGF0YT9bZXZlbnRdOmpRdWVyeS5tYWtlQXJyYXkoZGF0YSxbZXZlbnRdKSxzcGVjaWFsPWpRdWVyeS5ldmVudC5zcGVjaWFsW3R5cGVdfHx7fSxvbmx5SGFuZGxlcnN8fCFzcGVjaWFsLnRyaWdnZXJ8fHNwZWNpYWwudHJpZ2dlci5hcHBseShlbGVtLGRhdGEpIT09ITEpKXtpZighb25seUhhbmRsZXJzJiYhc3BlY2lhbC5ub0J1YmJsZSYmIWpRdWVyeS5pc1dpbmRvdyhlbGVtKSl7Zm9yKGJ1YmJsZVR5cGU9c3BlY2lhbC5kZWxlZ2F0ZVR5cGV8fHR5cGUscmZvY3VzTW9ycGgudGVzdChidWJibGVUeXBlK3R5cGUpfHwoY3VyPWN1ci5wYXJlbnROb2RlKTtjdXI7Y3VyPWN1ci5wYXJlbnROb2RlKWV2ZW50UGF0aC5wdXNoKGN1ciksdG1wPWN1cjt0bXA9PT0oZWxlbS5vd25lckRvY3VtZW50fHxkb2N1bWVudCkmJmV2ZW50UGF0aC5wdXNoKHRtcC5kZWZhdWx0Vmlld3x8dG1wLnBhcmVudFdpbmRvd3x8d2luZG93KX1mb3IoaT0wOyhjdXI9ZXZlbnRQYXRoW2krK10pJiYhZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTspZXZlbnQudHlwZT1pPjE/YnViYmxlVHlwZTpzcGVjaWFsLmJpbmRUeXBlfHx0eXBlLGhhbmRsZT0oalF1ZXJ5Ll9kYXRhKGN1cixcImV2ZW50c1wiKXx8e30pW2V2ZW50LnR5cGVdJiZqUXVlcnkuX2RhdGEoY3VyLFwiaGFuZGxlXCIpLGhhbmRsZSYmaGFuZGxlLmFwcGx5KGN1cixkYXRhKSxoYW5kbGU9b250eXBlJiZjdXJbb250eXBlXSxoYW5kbGUmJmhhbmRsZS5hcHBseSYmalF1ZXJ5LmFjY2VwdERhdGEoY3VyKSYmKGV2ZW50LnJlc3VsdD1oYW5kbGUuYXBwbHkoY3VyLGRhdGEpLGV2ZW50LnJlc3VsdD09PSExJiZldmVudC5wcmV2ZW50RGVmYXVsdCgpKTtpZihldmVudC50eXBlPXR5cGUsIW9ubHlIYW5kbGVycyYmIWV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpJiYoIXNwZWNpYWwuX2RlZmF1bHR8fHNwZWNpYWwuX2RlZmF1bHQuYXBwbHkoZXZlbnRQYXRoLnBvcCgpLGRhdGEpPT09ITEpJiZqUXVlcnkuYWNjZXB0RGF0YShlbGVtKSYmb250eXBlJiZlbGVtW3R5cGVdJiYhalF1ZXJ5LmlzV2luZG93KGVsZW0pKXt0bXA9ZWxlbVtvbnR5cGVdLHRtcCYmKGVsZW1bb250eXBlXT1udWxsKSxqUXVlcnkuZXZlbnQudHJpZ2dlcmVkPXR5cGU7dHJ5e2VsZW1bdHlwZV0oKX1jYXRjaChlKXt9alF1ZXJ5LmV2ZW50LnRyaWdnZXJlZD12b2lkIDAsdG1wJiYoZWxlbVtvbnR5cGVdPXRtcCl9cmV0dXJuIGV2ZW50LnJlc3VsdH19LGRpc3BhdGNoOmZ1bmN0aW9uKGV2ZW50KXtldmVudD1qUXVlcnkuZXZlbnQuZml4KGV2ZW50KTt2YXIgaSxyZXQsaGFuZGxlT2JqLG1hdGNoZWQsaixoYW5kbGVyUXVldWU9W10sYXJncz1zbGljZS5jYWxsKGFyZ3VtZW50cyksaGFuZGxlcnM9KGpRdWVyeS5fZGF0YSh0aGlzLFwiZXZlbnRzXCIpfHx7fSlbZXZlbnQudHlwZV18fFtdLHNwZWNpYWw9alF1ZXJ5LmV2ZW50LnNwZWNpYWxbZXZlbnQudHlwZV18fHt9O2lmKGFyZ3NbMF09ZXZlbnQsZXZlbnQuZGVsZWdhdGVUYXJnZXQ9dGhpcywhc3BlY2lhbC5wcmVEaXNwYXRjaHx8c3BlY2lhbC5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsZXZlbnQpIT09ITEpe2ZvcihoYW5kbGVyUXVldWU9alF1ZXJ5LmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcyxldmVudCxoYW5kbGVycyksaT0wOyhtYXRjaGVkPWhhbmRsZXJRdWV1ZVtpKytdKSYmIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7KWZvcihldmVudC5jdXJyZW50VGFyZ2V0PW1hdGNoZWQuZWxlbSxqPTA7KGhhbmRsZU9iaj1tYXRjaGVkLmhhbmRsZXJzW2orK10pJiYhZXZlbnQuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKTspKCFldmVudC5uYW1lc3BhY2VfcmV8fGV2ZW50Lm5hbWVzcGFjZV9yZS50ZXN0KGhhbmRsZU9iai5uYW1lc3BhY2UpKSYmKGV2ZW50LmhhbmRsZU9iaj1oYW5kbGVPYmosZXZlbnQuZGF0YT1oYW5kbGVPYmouZGF0YSxyZXQ9KChqUXVlcnkuZXZlbnQuc3BlY2lhbFtoYW5kbGVPYmoub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxoYW5kbGVPYmouaGFuZGxlcikuYXBwbHkobWF0Y2hlZC5lbGVtLGFyZ3MpLHZvaWQgMCE9PXJldCYmKGV2ZW50LnJlc3VsdD1yZXQpPT09ITEmJihldmVudC5wcmV2ZW50RGVmYXVsdCgpLGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpKSk7cmV0dXJuIHNwZWNpYWwucG9zdERpc3BhdGNoJiZzcGVjaWFsLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsZXZlbnQpLGV2ZW50LnJlc3VsdH19LGhhbmRsZXJzOmZ1bmN0aW9uKGV2ZW50LGhhbmRsZXJzKXt2YXIgc2VsLGhhbmRsZU9iaixtYXRjaGVzLGksaGFuZGxlclF1ZXVlPVtdLGRlbGVnYXRlQ291bnQ9aGFuZGxlcnMuZGVsZWdhdGVDb3VudCxjdXI9ZXZlbnQudGFyZ2V0O2lmKGRlbGVnYXRlQ291bnQmJmN1ci5ub2RlVHlwZSYmKCFldmVudC5idXR0b258fFwiY2xpY2tcIiE9PWV2ZW50LnR5cGUpKWZvcig7Y3VyIT10aGlzO2N1cj1jdXIucGFyZW50Tm9kZXx8dGhpcylpZigxPT09Y3VyLm5vZGVUeXBlJiYoY3VyLmRpc2FibGVkIT09ITB8fFwiY2xpY2tcIiE9PWV2ZW50LnR5cGUpKXtmb3IobWF0Y2hlcz1bXSxpPTA7ZGVsZWdhdGVDb3VudD5pO2krKyloYW5kbGVPYmo9aGFuZGxlcnNbaV0sc2VsPWhhbmRsZU9iai5zZWxlY3RvcitcIiBcIix2b2lkIDA9PT1tYXRjaGVzW3NlbF0mJihtYXRjaGVzW3NlbF09aGFuZGxlT2JqLm5lZWRzQ29udGV4dD9qUXVlcnkoc2VsLHRoaXMpLmluZGV4KGN1cik+PTA6alF1ZXJ5LmZpbmQoc2VsLHRoaXMsbnVsbCxbY3VyXSkubGVuZ3RoKSxtYXRjaGVzW3NlbF0mJm1hdGNoZXMucHVzaChoYW5kbGVPYmopO21hdGNoZXMubGVuZ3RoJiZoYW5kbGVyUXVldWUucHVzaCh7ZWxlbTpjdXIsaGFuZGxlcnM6bWF0Y2hlc30pfXJldHVybiBkZWxlZ2F0ZUNvdW50PGhhbmRsZXJzLmxlbmd0aCYmaGFuZGxlclF1ZXVlLnB1c2goe2VsZW06dGhpcyxoYW5kbGVyczpoYW5kbGVycy5zbGljZShkZWxlZ2F0ZUNvdW50KX0pLGhhbmRsZXJRdWV1ZX0sZml4OmZ1bmN0aW9uKGV2ZW50KXtpZihldmVudFtqUXVlcnkuZXhwYW5kb10pcmV0dXJuIGV2ZW50O3ZhciBpLHByb3AsY29weSx0eXBlPWV2ZW50LnR5cGUsb3JpZ2luYWxFdmVudD1ldmVudCxmaXhIb29rPXRoaXMuZml4SG9va3NbdHlwZV07Zm9yKGZpeEhvb2t8fCh0aGlzLmZpeEhvb2tzW3R5cGVdPWZpeEhvb2s9cm1vdXNlRXZlbnQudGVzdCh0eXBlKT90aGlzLm1vdXNlSG9va3M6cmtleUV2ZW50LnRlc3QodHlwZSk/dGhpcy5rZXlIb29rczp7fSksY29weT1maXhIb29rLnByb3BzP3RoaXMucHJvcHMuY29uY2F0KGZpeEhvb2sucHJvcHMpOnRoaXMucHJvcHMsZXZlbnQ9bmV3IGpRdWVyeS5FdmVudChvcmlnaW5hbEV2ZW50KSxpPWNvcHkubGVuZ3RoO2ktLTspcHJvcD1jb3B5W2ldLGV2ZW50W3Byb3BdPW9yaWdpbmFsRXZlbnRbcHJvcF07cmV0dXJuIGV2ZW50LnRhcmdldHx8KGV2ZW50LnRhcmdldD1vcmlnaW5hbEV2ZW50LnNyY0VsZW1lbnR8fGRvY3VtZW50KSwzPT09ZXZlbnQudGFyZ2V0Lm5vZGVUeXBlJiYoZXZlbnQudGFyZ2V0PWV2ZW50LnRhcmdldC5wYXJlbnROb2RlKSxldmVudC5tZXRhS2V5PSEhZXZlbnQubWV0YUtleSxmaXhIb29rLmZpbHRlcj9maXhIb29rLmZpbHRlcihldmVudCxvcmlnaW5hbEV2ZW50KTpldmVudH0scHJvcHM6XCJhbHRLZXkgYnViYmxlcyBjYW5jZWxhYmxlIGN0cmxLZXkgY3VycmVudFRhcmdldCBldmVudFBoYXNlIG1ldGFLZXkgcmVsYXRlZFRhcmdldCBzaGlmdEtleSB0YXJnZXQgdGltZVN0YW1wIHZpZXcgd2hpY2hcIi5zcGxpdChcIiBcIiksZml4SG9va3M6e30sa2V5SG9va3M6e3Byb3BzOlwiY2hhciBjaGFyQ29kZSBrZXkga2V5Q29kZVwiLnNwbGl0KFwiIFwiKSxmaWx0ZXI6ZnVuY3Rpb24oZXZlbnQsb3JpZ2luYWwpe3JldHVybiBudWxsPT1ldmVudC53aGljaCYmKGV2ZW50LndoaWNoPW51bGwhPW9yaWdpbmFsLmNoYXJDb2RlP29yaWdpbmFsLmNoYXJDb2RlOm9yaWdpbmFsLmtleUNvZGUpLGV2ZW50fX0sbW91c2VIb29rczp7cHJvcHM6XCJidXR0b24gYnV0dG9ucyBjbGllbnRYIGNsaWVudFkgZnJvbUVsZW1lbnQgb2Zmc2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHNjcmVlblggc2NyZWVuWSB0b0VsZW1lbnRcIi5zcGxpdChcIiBcIiksZmlsdGVyOmZ1bmN0aW9uKGV2ZW50LG9yaWdpbmFsKXt2YXIgYm9keSxldmVudERvYyxkb2MsYnV0dG9uPW9yaWdpbmFsLmJ1dHRvbixmcm9tRWxlbWVudD1vcmlnaW5hbC5mcm9tRWxlbWVudDtyZXR1cm4gbnVsbD09ZXZlbnQucGFnZVgmJm51bGwhPW9yaWdpbmFsLmNsaWVudFgmJihldmVudERvYz1ldmVudC50YXJnZXQub3duZXJEb2N1bWVudHx8ZG9jdW1lbnQsZG9jPWV2ZW50RG9jLmRvY3VtZW50RWxlbWVudCxib2R5PWV2ZW50RG9jLmJvZHksZXZlbnQucGFnZVg9b3JpZ2luYWwuY2xpZW50WCsoZG9jJiZkb2Muc2Nyb2xsTGVmdHx8Ym9keSYmYm9keS5zY3JvbGxMZWZ0fHwwKS0oZG9jJiZkb2MuY2xpZW50TGVmdHx8Ym9keSYmYm9keS5jbGllbnRMZWZ0fHwwKSxldmVudC5wYWdlWT1vcmlnaW5hbC5jbGllbnRZKyhkb2MmJmRvYy5zY3JvbGxUb3B8fGJvZHkmJmJvZHkuc2Nyb2xsVG9wfHwwKS0oZG9jJiZkb2MuY2xpZW50VG9wfHxib2R5JiZib2R5LmNsaWVudFRvcHx8MCkpLCFldmVudC5yZWxhdGVkVGFyZ2V0JiZmcm9tRWxlbWVudCYmKGV2ZW50LnJlbGF0ZWRUYXJnZXQ9ZnJvbUVsZW1lbnQ9PT1ldmVudC50YXJnZXQ/b3JpZ2luYWwudG9FbGVtZW50OmZyb21FbGVtZW50KSxldmVudC53aGljaHx8dm9pZCAwPT09YnV0dG9ufHwoZXZlbnQud2hpY2g9MSZidXR0b24/MToyJmJ1dHRvbj8zOjQmYnV0dG9uPzI6MCksZXZlbnR9fSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sZm9jdXM6e3RyaWdnZXI6ZnVuY3Rpb24oKXtpZih0aGlzIT09c2FmZUFjdGl2ZUVsZW1lbnQoKSYmdGhpcy5mb2N1cyl0cnl7cmV0dXJuIHRoaXMuZm9jdXMoKSwhMX1jYXRjaChlKXt9fSxkZWxlZ2F0ZVR5cGU6XCJmb2N1c2luXCJ9LGJsdXI6e3RyaWdnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcz09PXNhZmVBY3RpdmVFbGVtZW50KCkmJnRoaXMuYmx1cj8odGhpcy5ibHVyKCksITEpOnZvaWQgMH0sZGVsZWdhdGVUeXBlOlwiZm9jdXNvdXRcIn0sY2xpY2s6e3RyaWdnZXI6ZnVuY3Rpb24oKXtyZXR1cm4galF1ZXJ5Lm5vZGVOYW1lKHRoaXMsXCJpbnB1dFwiKSYmXCJjaGVja2JveFwiPT09dGhpcy50eXBlJiZ0aGlzLmNsaWNrPyh0aGlzLmNsaWNrKCksITEpOnZvaWQgMH0sX2RlZmF1bHQ6ZnVuY3Rpb24oZXZlbnQpe3JldHVybiBqUXVlcnkubm9kZU5hbWUoZXZlbnQudGFyZ2V0LFwiYVwiKX19LGJlZm9yZXVubG9hZDp7cG9zdERpc3BhdGNoOmZ1bmN0aW9uKGV2ZW50KXt2b2lkIDAhPT1ldmVudC5yZXN1bHQmJmV2ZW50Lm9yaWdpbmFsRXZlbnQmJihldmVudC5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVlPWV2ZW50LnJlc3VsdCl9fX0sc2ltdWxhdGU6ZnVuY3Rpb24odHlwZSxlbGVtLGV2ZW50LGJ1YmJsZSl7dmFyIGU9alF1ZXJ5LmV4dGVuZChuZXcgalF1ZXJ5LkV2ZW50LGV2ZW50LHt0eXBlOnR5cGUsaXNTaW11bGF0ZWQ6ITAsb3JpZ2luYWxFdmVudDp7fX0pO2J1YmJsZT9qUXVlcnkuZXZlbnQudHJpZ2dlcihlLG51bGwsZWxlbSk6alF1ZXJ5LmV2ZW50LmRpc3BhdGNoLmNhbGwoZWxlbSxlKSxlLmlzRGVmYXVsdFByZXZlbnRlZCgpJiZldmVudC5wcmV2ZW50RGVmYXVsdCgpfX0salF1ZXJ5LnJlbW92ZUV2ZW50PWRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oZWxlbSx0eXBlLGhhbmRsZSl7ZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyJiZlbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSxoYW5kbGUsITEpfTpmdW5jdGlvbihlbGVtLHR5cGUsaGFuZGxlKXt2YXIgbmFtZT1cIm9uXCIrdHlwZTtlbGVtLmRldGFjaEV2ZW50JiYodHlwZW9mIGVsZW1bbmFtZV09PT1zdHJ1bmRlZmluZWQmJihlbGVtW25hbWVdPW51bGwpLGVsZW0uZGV0YWNoRXZlbnQobmFtZSxoYW5kbGUpKX0salF1ZXJ5LkV2ZW50PWZ1bmN0aW9uKHNyYyxwcm9wcyl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBqUXVlcnkuRXZlbnQ/KHNyYyYmc3JjLnR5cGU/KHRoaXMub3JpZ2luYWxFdmVudD1zcmMsdGhpcy50eXBlPXNyYy50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPXNyYy5kZWZhdWx0UHJldmVudGVkfHx2b2lkIDA9PT1zcmMuZGVmYXVsdFByZXZlbnRlZCYmc3JjLnJldHVyblZhbHVlPT09ITE/cmV0dXJuVHJ1ZTpyZXR1cm5GYWxzZSk6dGhpcy50eXBlPXNyYyxwcm9wcyYmalF1ZXJ5LmV4dGVuZCh0aGlzLHByb3BzKSx0aGlzLnRpbWVTdGFtcD1zcmMmJnNyYy50aW1lU3RhbXB8fGpRdWVyeS5ub3coKSx2b2lkKHRoaXNbalF1ZXJ5LmV4cGFuZG9dPSEwKSk6bmV3IGpRdWVyeS5FdmVudChzcmMscHJvcHMpfSxqUXVlcnkuRXZlbnQucHJvdG90eXBlPXtpc0RlZmF1bHRQcmV2ZW50ZWQ6cmV0dXJuRmFsc2UsaXNQcm9wYWdhdGlvblN0b3BwZWQ6cmV0dXJuRmFsc2UsaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6cmV0dXJuRmFsc2UscHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9cmV0dXJuVHJ1ZSxlJiYoZS5wcmV2ZW50RGVmYXVsdD9lLnByZXZlbnREZWZhdWx0KCk6ZS5yZXR1cm5WYWx1ZT0hMSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXJldHVyblRydWUsZSYmKGUuc3RvcFByb3BhZ2F0aW9uJiZlLnN0b3BQcm9wYWdhdGlvbigpLGUuY2FuY2VsQnViYmxlPSEwKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9cmV0dXJuVHJ1ZSxlJiZlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiYmZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0aGlzLnN0b3BQcm9wYWdhdGlvbigpfX0salF1ZXJ5LmVhY2goe21vdXNlZW50ZXI6XCJtb3VzZW92ZXJcIixtb3VzZWxlYXZlOlwibW91c2VvdXRcIixwb2ludGVyZW50ZXI6XCJwb2ludGVyb3ZlclwiLHBvaW50ZXJsZWF2ZTpcInBvaW50ZXJvdXRcIn0sZnVuY3Rpb24ob3JpZyxmaXgpe2pRdWVyeS5ldmVudC5zcGVjaWFsW29yaWddPXtkZWxlZ2F0ZVR5cGU6Zml4LGJpbmRUeXBlOmZpeCxoYW5kbGU6ZnVuY3Rpb24oZXZlbnQpe3ZhciByZXQsdGFyZ2V0PXRoaXMscmVsYXRlZD1ldmVudC5yZWxhdGVkVGFyZ2V0LGhhbmRsZU9iaj1ldmVudC5oYW5kbGVPYmo7cmV0dXJuKCFyZWxhdGVkfHxyZWxhdGVkIT09dGFyZ2V0JiYhalF1ZXJ5LmNvbnRhaW5zKHRhcmdldCxyZWxhdGVkKSkmJihldmVudC50eXBlPWhhbmRsZU9iai5vcmlnVHlwZSxyZXQ9aGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGV2ZW50LnR5cGU9Zml4KSxyZXR9fX0pLHN1cHBvcnQuc3VibWl0QnViYmxlc3x8KGpRdWVyeS5ldmVudC5zcGVjaWFsLnN1Ym1pdD17c2V0dXA6ZnVuY3Rpb24oKXtyZXR1cm4galF1ZXJ5Lm5vZGVOYW1lKHRoaXMsXCJmb3JtXCIpPyExOnZvaWQgalF1ZXJ5LmV2ZW50LmFkZCh0aGlzLFwiY2xpY2suX3N1Ym1pdCBrZXlwcmVzcy5fc3VibWl0XCIsZnVuY3Rpb24oZSl7dmFyIGVsZW09ZS50YXJnZXQsZm9ybT1qUXVlcnkubm9kZU5hbWUoZWxlbSxcImlucHV0XCIpfHxqUXVlcnkubm9kZU5hbWUoZWxlbSxcImJ1dHRvblwiKT9lbGVtLmZvcm06dm9pZCAwO2Zvcm0mJiFqUXVlcnkuX2RhdGEoZm9ybSxcInN1Ym1pdEJ1YmJsZXNcIikmJihqUXVlcnkuZXZlbnQuYWRkKGZvcm0sXCJzdWJtaXQuX3N1Ym1pdFwiLGZ1bmN0aW9uKGV2ZW50KXtldmVudC5fc3VibWl0X2J1YmJsZT0hMH0pLGpRdWVyeS5fZGF0YShmb3JtLFwic3VibWl0QnViYmxlc1wiLCEwKSl9KX0scG9zdERpc3BhdGNoOmZ1bmN0aW9uKGV2ZW50KXtldmVudC5fc3VibWl0X2J1YmJsZSYmKGRlbGV0ZSBldmVudC5fc3VibWl0X2J1YmJsZSx0aGlzLnBhcmVudE5vZGUmJiFldmVudC5pc1RyaWdnZXImJmpRdWVyeS5ldmVudC5zaW11bGF0ZShcInN1Ym1pdFwiLHRoaXMucGFyZW50Tm9kZSxldmVudCwhMCkpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiBqUXVlcnkubm9kZU5hbWUodGhpcyxcImZvcm1cIik/ITE6dm9pZCBqUXVlcnkuZXZlbnQucmVtb3ZlKHRoaXMsXCIuX3N1Ym1pdFwiKX19KSxzdXBwb3J0LmNoYW5nZUJ1YmJsZXN8fChqUXVlcnkuZXZlbnQuc3BlY2lhbC5jaGFuZ2U9e3NldHVwOmZ1bmN0aW9uKCl7cmV0dXJuIHJmb3JtRWxlbXMudGVzdCh0aGlzLm5vZGVOYW1lKT8oKFwiY2hlY2tib3hcIj09PXRoaXMudHlwZXx8XCJyYWRpb1wiPT09dGhpcy50eXBlKSYmKGpRdWVyeS5ldmVudC5hZGQodGhpcyxcInByb3BlcnR5Y2hhbmdlLl9jaGFuZ2VcIixmdW5jdGlvbihldmVudCl7XCJjaGVja2VkXCI9PT1ldmVudC5vcmlnaW5hbEV2ZW50LnByb3BlcnR5TmFtZSYmKHRoaXMuX2p1c3RfY2hhbmdlZD0hMCl9KSxqUXVlcnkuZXZlbnQuYWRkKHRoaXMsXCJjbGljay5fY2hhbmdlXCIsZnVuY3Rpb24oZXZlbnQpe3RoaXMuX2p1c3RfY2hhbmdlZCYmIWV2ZW50LmlzVHJpZ2dlciYmKHRoaXMuX2p1c3RfY2hhbmdlZD0hMSksalF1ZXJ5LmV2ZW50LnNpbXVsYXRlKFwiY2hhbmdlXCIsdGhpcyxldmVudCwhMCl9KSksITEpOnZvaWQgalF1ZXJ5LmV2ZW50LmFkZCh0aGlzLFwiYmVmb3JlYWN0aXZhdGUuX2NoYW5nZVwiLGZ1bmN0aW9uKGUpe3ZhciBlbGVtPWUudGFyZ2V0O3Jmb3JtRWxlbXMudGVzdChlbGVtLm5vZGVOYW1lKSYmIWpRdWVyeS5fZGF0YShlbGVtLFwiY2hhbmdlQnViYmxlc1wiKSYmKGpRdWVyeS5ldmVudC5hZGQoZWxlbSxcImNoYW5nZS5fY2hhbmdlXCIsZnVuY3Rpb24oZXZlbnQpeyF0aGlzLnBhcmVudE5vZGV8fGV2ZW50LmlzU2ltdWxhdGVkfHxldmVudC5pc1RyaWdnZXJ8fGpRdWVyeS5ldmVudC5zaW11bGF0ZShcImNoYW5nZVwiLHRoaXMucGFyZW50Tm9kZSxldmVudCwhMCl9KSxqUXVlcnkuX2RhdGEoZWxlbSxcImNoYW5nZUJ1YmJsZXNcIiwhMCkpfSl9LGhhbmRsZTpmdW5jdGlvbihldmVudCl7dmFyIGVsZW09ZXZlbnQudGFyZ2V0O3JldHVybiB0aGlzIT09ZWxlbXx8ZXZlbnQuaXNTaW11bGF0ZWR8fGV2ZW50LmlzVHJpZ2dlcnx8XCJyYWRpb1wiIT09ZWxlbS50eXBlJiZcImNoZWNrYm94XCIhPT1lbGVtLnR5cGU/ZXZlbnQuaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpOnZvaWQgMH0sdGVhcmRvd246ZnVuY3Rpb24oKXtyZXR1cm4galF1ZXJ5LmV2ZW50LnJlbW92ZSh0aGlzLFwiLl9jaGFuZ2VcIiksIXJmb3JtRWxlbXMudGVzdCh0aGlzLm5vZGVOYW1lKX19KSxzdXBwb3J0LmZvY3VzaW5CdWJibGVzfHxqUXVlcnkuZWFjaCh7Zm9jdXM6XCJmb2N1c2luXCIsYmx1cjpcImZvY3Vzb3V0XCJ9LGZ1bmN0aW9uKG9yaWcsZml4KXt2YXIgaGFuZGxlcj1mdW5jdGlvbihldmVudCl7alF1ZXJ5LmV2ZW50LnNpbXVsYXRlKGZpeCxldmVudC50YXJnZXQsalF1ZXJ5LmV2ZW50LmZpeChldmVudCksITApfTtqUXVlcnkuZXZlbnQuc3BlY2lhbFtmaXhdPXtzZXR1cDpmdW5jdGlvbigpe3ZhciBkb2M9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzLGF0dGFjaGVzPWpRdWVyeS5fZGF0YShkb2MsZml4KTthdHRhY2hlc3x8ZG9jLmFkZEV2ZW50TGlzdGVuZXIob3JpZyxoYW5kbGVyLCEwKSxqUXVlcnkuX2RhdGEoZG9jLGZpeCwoYXR0YWNoZXN8fDApKzEpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3ZhciBkb2M9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzLGF0dGFjaGVzPWpRdWVyeS5fZGF0YShkb2MsZml4KS0xO2F0dGFjaGVzP2pRdWVyeS5fZGF0YShkb2MsZml4LGF0dGFjaGVzKTooZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIob3JpZyxoYW5kbGVyLCEwKSxqUXVlcnkuX3JlbW92ZURhdGEoZG9jLGZpeCkpfX19KSxqUXVlcnkuZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbih0eXBlcyxzZWxlY3RvcixkYXRhLGZuLG9uZSl7dmFyIHR5cGUsb3JpZ0ZuO2lmKFwib2JqZWN0XCI9PXR5cGVvZiB0eXBlcyl7XCJzdHJpbmdcIiE9dHlwZW9mIHNlbGVjdG9yJiYoZGF0YT1kYXRhfHxzZWxlY3RvcixzZWxlY3Rvcj12b2lkIDApO2Zvcih0eXBlIGluIHR5cGVzKXRoaXMub24odHlwZSxzZWxlY3RvcixkYXRhLHR5cGVzW3R5cGVdLG9uZSk7cmV0dXJuIHRoaXN9aWYobnVsbD09ZGF0YSYmbnVsbD09Zm4/KGZuPXNlbGVjdG9yLGRhdGE9c2VsZWN0b3I9dm9pZCAwKTpudWxsPT1mbiYmKFwic3RyaW5nXCI9PXR5cGVvZiBzZWxlY3Rvcj8oZm49ZGF0YSxkYXRhPXZvaWQgMCk6KGZuPWRhdGEsZGF0YT1zZWxlY3RvcixzZWxlY3Rvcj12b2lkIDApKSxmbj09PSExKWZuPXJldHVybkZhbHNlO2Vsc2UgaWYoIWZuKXJldHVybiB0aGlzO3JldHVybiAxPT09b25lJiYob3JpZ0ZuPWZuLGZuPWZ1bmN0aW9uKGV2ZW50KXtyZXR1cm4galF1ZXJ5KCkub2ZmKGV2ZW50KSxvcmlnRm4uYXBwbHkodGhpcyxhcmd1bWVudHMpfSxmbi5ndWlkPW9yaWdGbi5ndWlkfHwob3JpZ0ZuLmd1aWQ9alF1ZXJ5Lmd1aWQrKykpLHRoaXMuZWFjaChmdW5jdGlvbigpe2pRdWVyeS5ldmVudC5hZGQodGhpcyx0eXBlcyxmbixkYXRhLHNlbGVjdG9yKX0pfSxvbmU6ZnVuY3Rpb24odHlwZXMsc2VsZWN0b3IsZGF0YSxmbil7cmV0dXJuIHRoaXMub24odHlwZXMsc2VsZWN0b3IsZGF0YSxmbiwxKX0sb2ZmOmZ1bmN0aW9uKHR5cGVzLHNlbGVjdG9yLGZuKXt2YXIgaGFuZGxlT2JqLHR5cGU7aWYodHlwZXMmJnR5cGVzLnByZXZlbnREZWZhdWx0JiZ0eXBlcy5oYW5kbGVPYmopcmV0dXJuIGhhbmRsZU9iaj10eXBlcy5oYW5kbGVPYmosalF1ZXJ5KHR5cGVzLmRlbGVnYXRlVGFyZ2V0KS5vZmYoaGFuZGxlT2JqLm5hbWVzcGFjZT9oYW5kbGVPYmoub3JpZ1R5cGUrXCIuXCIraGFuZGxlT2JqLm5hbWVzcGFjZTpoYW5kbGVPYmoub3JpZ1R5cGUsaGFuZGxlT2JqLnNlbGVjdG9yLGhhbmRsZU9iai5oYW5kbGVyKSx0aGlzO2lmKFwib2JqZWN0XCI9PXR5cGVvZiB0eXBlcyl7Zm9yKHR5cGUgaW4gdHlwZXMpdGhpcy5vZmYodHlwZSxzZWxlY3Rvcix0eXBlc1t0eXBlXSk7cmV0dXJuIHRoaXN9cmV0dXJuKHNlbGVjdG9yPT09ITF8fFwiZnVuY3Rpb25cIj09dHlwZW9mIHNlbGVjdG9yKSYmKGZuPXNlbGVjdG9yLHNlbGVjdG9yPXZvaWQgMCksZm49PT0hMSYmKGZuPXJldHVybkZhbHNlKSx0aGlzLmVhY2goZnVuY3Rpb24oKXtqUXVlcnkuZXZlbnQucmVtb3ZlKHRoaXMsdHlwZXMsZm4sc2VsZWN0b3IpfSl9LHRyaWdnZXI6ZnVuY3Rpb24odHlwZSxkYXRhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7alF1ZXJ5LmV2ZW50LnRyaWdnZXIodHlwZSxkYXRhLHRoaXMpfSl9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKHR5cGUsZGF0YSl7dmFyIGVsZW09dGhpc1swXTtyZXR1cm4gZWxlbT9qUXVlcnkuZXZlbnQudHJpZ2dlcih0eXBlLGRhdGEsZWxlbSwhMCk6dm9pZCAwfX0pO3ZhciBub2RlTmFtZXM9XCJhYmJyfGFydGljbGV8YXNpZGV8YXVkaW98YmRpfGNhbnZhc3xkYXRhfGRhdGFsaXN0fGRldGFpbHN8ZmlnY2FwdGlvbnxmaWd1cmV8Zm9vdGVyfGhlYWRlcnxoZ3JvdXB8bWFya3xtZXRlcnxuYXZ8b3V0cHV0fHByb2dyZXNzfHNlY3Rpb258c3VtbWFyeXx0aW1lfHZpZGVvXCIscmlubGluZWpRdWVyeT0vIGpRdWVyeVxcZCs9XCIoPzpudWxsfFxcZCspXCIvZyxybm9zaGltY2FjaGU9bmV3IFJlZ0V4cChcIjwoPzpcIitub2RlTmFtZXMrXCIpW1xcXFxzLz5dXCIsXCJpXCIpLHJsZWFkaW5nV2hpdGVzcGFjZT0vXlxccysvLHJ4aHRtbFRhZz0vPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbXFx3Ol0rKVtePl0qKVxcLz4vZ2kscnRhZ05hbWU9LzwoW1xcdzpdKykvLHJ0Ym9keT0vPHRib2R5L2kscmh0bWw9Lzx8JiM/XFx3KzsvLHJub0lubmVyaHRtbD0vPCg/OnNjcmlwdHxzdHlsZXxsaW5rKS9pLHJjaGVja2VkPS9jaGVja2VkXFxzKig/OltePV18PVxccyouY2hlY2tlZC4pL2kscnNjcmlwdFR5cGU9L14kfFxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaSxyc2NyaXB0VHlwZU1hc2tlZD0vXnRydWVcXC8oLiopLyxyY2xlYW5TY3JpcHQ9L15cXHMqPCEoPzpcXFtDREFUQVxcW3wtLSl8KD86XFxdXFxdfC0tKT5cXHMqJC9nLHdyYXBNYXA9e29wdGlvbjpbMSxcIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz5cIixcIjwvc2VsZWN0PlwiXSxsZWdlbmQ6WzEsXCI8ZmllbGRzZXQ+XCIsXCI8L2ZpZWxkc2V0PlwiXSxhcmVhOlsxLFwiPG1hcD5cIixcIjwvbWFwPlwiXSxwYXJhbTpbMSxcIjxvYmplY3Q+XCIsXCI8L29iamVjdD5cIl0sdGhlYWQ6WzEsXCI8dGFibGU+XCIsXCI8L3RhYmxlPlwiXSx0cjpbMixcIjx0YWJsZT48dGJvZHk+XCIsXCI8L3Rib2R5PjwvdGFibGU+XCJdLGNvbDpbMixcIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+XCIsXCI8L2NvbGdyb3VwPjwvdGFibGU+XCJdLHRkOlszLFwiPHRhYmxlPjx0Ym9keT48dHI+XCIsXCI8L3RyPjwvdGJvZHk+PC90YWJsZT5cIl0sX2RlZmF1bHQ6c3VwcG9ydC5odG1sU2VyaWFsaXplP1swLFwiXCIsXCJcIl06WzEsXCJYPGRpdj5cIixcIjwvZGl2PlwiXX0sc2FmZUZyYWdtZW50PWNyZWF0ZVNhZmVGcmFnbWVudChkb2N1bWVudCksZnJhZ21lbnREaXY9c2FmZUZyYWdtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpO3dyYXBNYXAub3B0Z3JvdXA9d3JhcE1hcC5vcHRpb24sd3JhcE1hcC50Ym9keT13cmFwTWFwLnRmb290PXdyYXBNYXAuY29sZ3JvdXA9d3JhcE1hcC5jYXB0aW9uPXdyYXBNYXAudGhlYWQsd3JhcE1hcC50aD13cmFwTWFwLnRkLGpRdWVyeS5leHRlbmQoe2Nsb25lOmZ1bmN0aW9uKGVsZW0sZGF0YUFuZEV2ZW50cyxkZWVwRGF0YUFuZEV2ZW50cyl7dmFyIGRlc3RFbGVtZW50cyxub2RlLGNsb25lLGksc3JjRWxlbWVudHMsaW5QYWdlPWpRdWVyeS5jb250YWlucyhlbGVtLm93bmVyRG9jdW1lbnQsZWxlbSk7aWYoc3VwcG9ydC5odG1sNUNsb25lfHxqUXVlcnkuaXNYTUxEb2MoZWxlbSl8fCFybm9zaGltY2FjaGUudGVzdChcIjxcIitlbGVtLm5vZGVOYW1lK1wiPlwiKT9jbG9uZT1lbGVtLmNsb25lTm9kZSghMCk6KGZyYWdtZW50RGl2LmlubmVySFRNTD1lbGVtLm91dGVySFRNTCxmcmFnbWVudERpdi5yZW1vdmVDaGlsZChjbG9uZT1mcmFnbWVudERpdi5maXJzdENoaWxkKSksIShzdXBwb3J0Lm5vQ2xvbmVFdmVudCYmc3VwcG9ydC5ub0Nsb25lQ2hlY2tlZHx8MSE9PWVsZW0ubm9kZVR5cGUmJjExIT09ZWxlbS5ub2RlVHlwZXx8alF1ZXJ5LmlzWE1MRG9jKGVsZW0pKSlmb3IoZGVzdEVsZW1lbnRzPWdldEFsbChjbG9uZSksc3JjRWxlbWVudHM9Z2V0QWxsKGVsZW0pLGk9MDtudWxsIT0obm9kZT1zcmNFbGVtZW50c1tpXSk7KytpKWRlc3RFbGVtZW50c1tpXSYmZml4Q2xvbmVOb2RlSXNzdWVzKG5vZGUsZGVzdEVsZW1lbnRzW2ldKTtpZihkYXRhQW5kRXZlbnRzKWlmKGRlZXBEYXRhQW5kRXZlbnRzKWZvcihzcmNFbGVtZW50cz1zcmNFbGVtZW50c3x8Z2V0QWxsKGVsZW0pLGRlc3RFbGVtZW50cz1kZXN0RWxlbWVudHN8fGdldEFsbChjbG9uZSksaT0wO251bGwhPShub2RlPXNyY0VsZW1lbnRzW2ldKTtpKyspY2xvbmVDb3B5RXZlbnQobm9kZSxkZXN0RWxlbWVudHNbaV0pO2Vsc2UgY2xvbmVDb3B5RXZlbnQoZWxlbSxjbG9uZSk7cmV0dXJuIGRlc3RFbGVtZW50cz1nZXRBbGwoY2xvbmUsXCJzY3JpcHRcIiksZGVzdEVsZW1lbnRzLmxlbmd0aD4wJiZzZXRHbG9iYWxFdmFsKGRlc3RFbGVtZW50cywhaW5QYWdlJiZnZXRBbGwoZWxlbSxcInNjcmlwdFwiKSksZGVzdEVsZW1lbnRzPXNyY0VsZW1lbnRzPW5vZGU9bnVsbCxjbG9uZX0sYnVpbGRGcmFnbWVudDpmdW5jdGlvbihlbGVtcyxjb250ZXh0LHNjcmlwdHMsc2VsZWN0aW9uKXtmb3IodmFyIGosZWxlbSxjb250YWlucyx0bXAsdGFnLHRib2R5LHdyYXAsbD1lbGVtcy5sZW5ndGgsc2FmZT1jcmVhdGVTYWZlRnJhZ21lbnQoY29udGV4dCksbm9kZXM9W10saT0wO2w+aTtpKyspaWYoZWxlbT1lbGVtc1tpXSxlbGVtfHwwPT09ZWxlbSlpZihcIm9iamVjdFwiPT09alF1ZXJ5LnR5cGUoZWxlbSkpalF1ZXJ5Lm1lcmdlKG5vZGVzLGVsZW0ubm9kZVR5cGU/W2VsZW1dOmVsZW0pO2Vsc2UgaWYocmh0bWwudGVzdChlbGVtKSl7Zm9yKHRtcD10bXB8fHNhZmUuYXBwZW5kQ2hpbGQoY29udGV4dC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpKSx0YWc9KHJ0YWdOYW1lLmV4ZWMoZWxlbSl8fFtcIlwiLFwiXCJdKVsxXS50b0xvd2VyQ2FzZSgpLHdyYXA9d3JhcE1hcFt0YWddfHx3cmFwTWFwLl9kZWZhdWx0LHRtcC5pbm5lckhUTUw9d3JhcFsxXStlbGVtLnJlcGxhY2UocnhodG1sVGFnLFwiPCQxPjwvJDI+XCIpK3dyYXBbMl0saj13cmFwWzBdO2otLTspdG1wPXRtcC5sYXN0Q2hpbGQ7aWYoIXN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2UmJnJsZWFkaW5nV2hpdGVzcGFjZS50ZXN0KGVsZW0pJiZub2Rlcy5wdXNoKGNvbnRleHQuY3JlYXRlVGV4dE5vZGUocmxlYWRpbmdXaGl0ZXNwYWNlLmV4ZWMoZWxlbSlbMF0pKSwhc3VwcG9ydC50Ym9keSlmb3IoZWxlbT1cInRhYmxlXCIhPT10YWd8fHJ0Ym9keS50ZXN0KGVsZW0pP1wiPHRhYmxlPlwiIT09d3JhcFsxXXx8cnRib2R5LnRlc3QoZWxlbSk/MDp0bXA6dG1wLmZpcnN0Q2hpbGQsaj1lbGVtJiZlbGVtLmNoaWxkTm9kZXMubGVuZ3RoO2otLTspalF1ZXJ5Lm5vZGVOYW1lKHRib2R5PWVsZW0uY2hpbGROb2Rlc1tqXSxcInRib2R5XCIpJiYhdGJvZHkuY2hpbGROb2Rlcy5sZW5ndGgmJmVsZW0ucmVtb3ZlQ2hpbGQodGJvZHkpO2ZvcihqUXVlcnkubWVyZ2Uobm9kZXMsdG1wLmNoaWxkTm9kZXMpLHRtcC50ZXh0Q29udGVudD1cIlwiO3RtcC5maXJzdENoaWxkOyl0bXAucmVtb3ZlQ2hpbGQodG1wLmZpcnN0Q2hpbGQpO3RtcD1zYWZlLmxhc3RDaGlsZH1lbHNlIG5vZGVzLnB1c2goY29udGV4dC5jcmVhdGVUZXh0Tm9kZShlbGVtKSk7Zm9yKHRtcCYmc2FmZS5yZW1vdmVDaGlsZCh0bXApLHN1cHBvcnQuYXBwZW5kQ2hlY2tlZHx8alF1ZXJ5LmdyZXAoZ2V0QWxsKG5vZGVzLFwiaW5wdXRcIiksZml4RGVmYXVsdENoZWNrZWQpLGk9MDtlbGVtPW5vZGVzW2krK107KWlmKCghc2VsZWN0aW9ufHwtMT09PWpRdWVyeS5pbkFycmF5KGVsZW0sc2VsZWN0aW9uKSkmJihjb250YWlucz1qUXVlcnkuY29udGFpbnMoZWxlbS5vd25lckRvY3VtZW50LGVsZW0pLHRtcD1nZXRBbGwoc2FmZS5hcHBlbmRDaGlsZChlbGVtKSxcInNjcmlwdFwiKSxjb250YWlucyYmc2V0R2xvYmFsRXZhbCh0bXApLHNjcmlwdHMpKWZvcihqPTA7ZWxlbT10bXBbaisrXTspcnNjcmlwdFR5cGUudGVzdChlbGVtLnR5cGV8fFwiXCIpJiZzY3JpcHRzLnB1c2goZWxlbSk7cmV0dXJuIHRtcD1udWxsLHNhZmV9LGNsZWFuRGF0YTpmdW5jdGlvbihlbGVtcyxhY2NlcHREYXRhKXtmb3IodmFyIGVsZW0sdHlwZSxpZCxkYXRhLGk9MCxpbnRlcm5hbEtleT1qUXVlcnkuZXhwYW5kbyxjYWNoZT1qUXVlcnkuY2FjaGUsZGVsZXRlRXhwYW5kbz1zdXBwb3J0LmRlbGV0ZUV4cGFuZG8sc3BlY2lhbD1qUXVlcnkuZXZlbnQuc3BlY2lhbDtudWxsIT0oZWxlbT1lbGVtc1tpXSk7aSsrKWlmKChhY2NlcHREYXRhfHxqUXVlcnkuYWNjZXB0RGF0YShlbGVtKSkmJihpZD1lbGVtW2ludGVybmFsS2V5XSxkYXRhPWlkJiZjYWNoZVtpZF0pKXtpZihkYXRhLmV2ZW50cylmb3IodHlwZSBpbiBkYXRhLmV2ZW50cylzcGVjaWFsW3R5cGVdP2pRdWVyeS5ldmVudC5yZW1vdmUoZWxlbSx0eXBlKTpqUXVlcnkucmVtb3ZlRXZlbnQoZWxlbSx0eXBlLGRhdGEuaGFuZGxlKTtjYWNoZVtpZF0mJihkZWxldGUgY2FjaGVbaWRdLGRlbGV0ZUV4cGFuZG8/ZGVsZXRlIGVsZW1baW50ZXJuYWxLZXldOnR5cGVvZiBlbGVtLnJlbW92ZUF0dHJpYnV0ZSE9PXN0cnVuZGVmaW5lZD9lbGVtLnJlbW92ZUF0dHJpYnV0ZShpbnRlcm5hbEtleSk6ZWxlbVtpbnRlcm5hbEtleV09bnVsbCxkZWxldGVkSWRzLnB1c2goaWQpKX19fSksalF1ZXJ5LmZuLmV4dGVuZCh7dGV4dDpmdW5jdGlvbih2YWx1ZSl7cmV0dXJuIGFjY2Vzcyh0aGlzLGZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gdm9pZCAwPT09dmFsdWU/alF1ZXJ5LnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHxkb2N1bWVudCkuY3JlYXRlVGV4dE5vZGUodmFsdWUpKX0sbnVsbCx2YWx1ZSxhcmd1bWVudHMubGVuZ3RoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGVsZW0pe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgdGFyZ2V0PW1hbmlwdWxhdGlvblRhcmdldCh0aGlzLGVsZW0pO3RhcmdldC5hcHBlbmRDaGlsZChlbGVtKX19KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxmdW5jdGlvbihlbGVtKXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSl7dmFyIHRhcmdldD1tYW5pcHVsYXRpb25UYXJnZXQodGhpcyxlbGVtKTt0YXJnZXQuaW5zZXJ0QmVmb3JlKGVsZW0sdGFyZ2V0LmZpcnN0Q2hpbGQpfX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oZWxlbSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsZW0sdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oZWxlbSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsZW0sdGhpcy5uZXh0U2libGluZyl9KX0scmVtb3ZlOmZ1bmN0aW9uKHNlbGVjdG9yLGtlZXBEYXRhKXtmb3IodmFyIGVsZW0sZWxlbXM9c2VsZWN0b3I/alF1ZXJ5LmZpbHRlcihzZWxlY3Rvcix0aGlzKTp0aGlzLGk9MDtudWxsIT0oZWxlbT1lbGVtc1tpXSk7aSsrKWtlZXBEYXRhfHwxIT09ZWxlbS5ub2RlVHlwZXx8alF1ZXJ5LmNsZWFuRGF0YShnZXRBbGwoZWxlbSkpLGVsZW0ucGFyZW50Tm9kZSYmKGtlZXBEYXRhJiZqUXVlcnkuY29udGFpbnMoZWxlbS5vd25lckRvY3VtZW50LGVsZW0pJiZzZXRHbG9iYWxFdmFsKGdldEFsbChlbGVtLFwic2NyaXB0XCIpKSxlbGVtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbSkpO3JldHVybiB0aGlzfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgZWxlbSxpPTA7bnVsbCE9KGVsZW09dGhpc1tpXSk7aSsrKXtmb3IoMT09PWVsZW0ubm9kZVR5cGUmJmpRdWVyeS5jbGVhbkRhdGEoZ2V0QWxsKGVsZW0sITEpKTtlbGVtLmZpcnN0Q2hpbGQ7KWVsZW0ucmVtb3ZlQ2hpbGQoZWxlbS5maXJzdENoaWxkKTtlbGVtLm9wdGlvbnMmJmpRdWVyeS5ub2RlTmFtZShlbGVtLFwic2VsZWN0XCIpJiYoZWxlbS5vcHRpb25zLmxlbmd0aD0wKX1yZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oZGF0YUFuZEV2ZW50cyxkZWVwRGF0YUFuZEV2ZW50cyl7cmV0dXJuIGRhdGFBbmRFdmVudHM9bnVsbD09ZGF0YUFuZEV2ZW50cz8hMTpkYXRhQW5kRXZlbnRzLGRlZXBEYXRhQW5kRXZlbnRzPW51bGw9PWRlZXBEYXRhQW5kRXZlbnRzP2RhdGFBbmRFdmVudHM6ZGVlcERhdGFBbmRFdmVudHMsdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4galF1ZXJ5LmNsb25lKHRoaXMsZGF0YUFuZEV2ZW50cyxkZWVwRGF0YUFuZEV2ZW50cyl9KX0saHRtbDpmdW5jdGlvbih2YWx1ZSl7cmV0dXJuIGFjY2Vzcyh0aGlzLGZ1bmN0aW9uKHZhbHVlKXt2YXIgZWxlbT10aGlzWzBdfHx7fSxpPTAsbD10aGlzLmxlbmd0aDtpZih2b2lkIDA9PT12YWx1ZSlyZXR1cm4gMT09PWVsZW0ubm9kZVR5cGU/ZWxlbS5pbm5lckhUTUwucmVwbGFjZShyaW5saW5lalF1ZXJ5LFwiXCIpOnZvaWQgMDtpZihcInN0cmluZ1wiPT10eXBlb2YgdmFsdWUmJiFybm9Jbm5lcmh0bWwudGVzdCh2YWx1ZSkmJihzdXBwb3J0Lmh0bWxTZXJpYWxpemV8fCFybm9zaGltY2FjaGUudGVzdCh2YWx1ZSkpJiYoc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZXx8IXJsZWFkaW5nV2hpdGVzcGFjZS50ZXN0KHZhbHVlKSkmJiF3cmFwTWFwWyhydGFnTmFtZS5leGVjKHZhbHVlKXx8W1wiXCIsXCJcIl0pWzFdLnRvTG93ZXJDYXNlKCldKXt2YWx1ZT12YWx1ZS5yZXBsYWNlKHJ4aHRtbFRhZyxcIjwkMT48LyQyPlwiKTt0cnl7Zm9yKDtsPmk7aSsrKWVsZW09dGhpc1tpXXx8e30sMT09PWVsZW0ubm9kZVR5cGUmJihqUXVlcnkuY2xlYW5EYXRhKGdldEFsbChlbGVtLCExKSksZWxlbS5pbm5lckhUTUw9dmFsdWUpO2VsZW09MH1jYXRjaChlKXt9fWVsZW0mJnRoaXMuZW1wdHkoKS5hcHBlbmQodmFsdWUpfSxudWxsLHZhbHVlLGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBsYWNlV2l0aDpmdW5jdGlvbigpe3ZhciBhcmc9YXJndW1lbnRzWzBdO3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxmdW5jdGlvbihlbGVtKXthcmc9dGhpcy5wYXJlbnROb2RlLGpRdWVyeS5jbGVhbkRhdGEoZ2V0QWxsKHRoaXMpKSxhcmcmJmFyZy5yZXBsYWNlQ2hpbGQoZWxlbSx0aGlzKX0pLGFyZyYmKGFyZy5sZW5ndGh8fGFyZy5ub2RlVHlwZSk/dGhpczp0aGlzLnJlbW92ZSgpfSxkZXRhY2g6ZnVuY3Rpb24oc2VsZWN0b3Ipe3JldHVybiB0aGlzLnJlbW92ZShzZWxlY3RvciwhMCl9LGRvbU1hbmlwOmZ1bmN0aW9uKGFyZ3MsY2FsbGJhY2spe2FyZ3M9Y29uY2F0LmFwcGx5KFtdLGFyZ3MpO3ZhciBmaXJzdCxub2RlLGhhc1NjcmlwdHMsc2NyaXB0cyxkb2MsZnJhZ21lbnQsaT0wLGw9dGhpcy5sZW5ndGgsc2V0PXRoaXMsaU5vQ2xvbmU9bC0xLHZhbHVlPWFyZ3NbMF0saXNGdW5jdGlvbj1qUXVlcnkuaXNGdW5jdGlvbih2YWx1ZSk7aWYoaXNGdW5jdGlvbnx8bD4xJiZcInN0cmluZ1wiPT10eXBlb2YgdmFsdWUmJiFzdXBwb3J0LmNoZWNrQ2xvbmUmJnJjaGVja2VkLnRlc3QodmFsdWUpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oaW5kZXgpe3ZhciBzZWxmPXNldC5lcShpbmRleCk7aXNGdW5jdGlvbiYmKGFyZ3NbMF09dmFsdWUuY2FsbCh0aGlzLGluZGV4LHNlbGYuaHRtbCgpKSksc2VsZi5kb21NYW5pcChhcmdzLGNhbGxiYWNrKX0pO2lmKGwmJihmcmFnbWVudD1qUXVlcnkuYnVpbGRGcmFnbWVudChhcmdzLHRoaXNbMF0ub3duZXJEb2N1bWVudCwhMSx0aGlzKSxmaXJzdD1mcmFnbWVudC5maXJzdENoaWxkLDE9PT1mcmFnbWVudC5jaGlsZE5vZGVzLmxlbmd0aCYmKGZyYWdtZW50PWZpcnN0KSxmaXJzdCkpe2ZvcihzY3JpcHRzPWpRdWVyeS5tYXAoZ2V0QWxsKGZyYWdtZW50LFwic2NyaXB0XCIpLGRpc2FibGVTY3JpcHQpLGhhc1NjcmlwdHM9c2NyaXB0cy5sZW5ndGg7bD5pO2krKylub2RlPWZyYWdtZW50LGkhPT1pTm9DbG9uZSYmKG5vZGU9alF1ZXJ5LmNsb25lKG5vZGUsITAsITApLGhhc1NjcmlwdHMmJmpRdWVyeS5tZXJnZShzY3JpcHRzLGdldEFsbChub2RlLFwic2NyaXB0XCIpKSksY2FsbGJhY2suY2FsbCh0aGlzW2ldLG5vZGUsaSk7aWYoaGFzU2NyaXB0cylmb3IoZG9jPXNjcmlwdHNbc2NyaXB0cy5sZW5ndGgtMV0ub3duZXJEb2N1bWVudCxqUXVlcnkubWFwKHNjcmlwdHMscmVzdG9yZVNjcmlwdCksaT0wO2hhc1NjcmlwdHM+aTtpKyspbm9kZT1zY3JpcHRzW2ldLHJzY3JpcHRUeXBlLnRlc3Qobm9kZS50eXBlfHxcIlwiKSYmIWpRdWVyeS5fZGF0YShub2RlLFwiZ2xvYmFsRXZhbFwiKSYmalF1ZXJ5LmNvbnRhaW5zKGRvYyxub2RlKSYmKG5vZGUuc3JjP2pRdWVyeS5fZXZhbFVybCYmalF1ZXJ5Ll9ldmFsVXJsKG5vZGUuc3JjKTpqUXVlcnkuZ2xvYmFsRXZhbCgobm9kZS50ZXh0fHxub2RlLnRleHRDb250ZW50fHxub2RlLmlubmVySFRNTHx8XCJcIikucmVwbGFjZShyY2xlYW5TY3JpcHQsXCJcIikpKTtmcmFnbWVudD1maXJzdD1udWxsfXJldHVybiB0aGlzfX0pLGpRdWVyeS5lYWNoKHthcHBlbmRUbzpcImFwcGVuZFwiLHByZXBlbmRUbzpcInByZXBlbmRcIixpbnNlcnRCZWZvcmU6XCJiZWZvcmVcIixpbnNlcnRBZnRlcjpcImFmdGVyXCIscmVwbGFjZUFsbDpcInJlcGxhY2VXaXRoXCJ9LGZ1bmN0aW9uKG5hbWUsb3JpZ2luYWwpe2pRdWVyeS5mbltuYW1lXT1mdW5jdGlvbihzZWxlY3Rvcil7Zm9yKHZhciBlbGVtcyxpPTAscmV0PVtdLGluc2VydD1qUXVlcnkoc2VsZWN0b3IpLGxhc3Q9aW5zZXJ0Lmxlbmd0aC0xO2xhc3Q+PWk7aSsrKWVsZW1zPWk9PT1sYXN0P3RoaXM6dGhpcy5jbG9uZSghMCksalF1ZXJ5KGluc2VydFtpXSlbb3JpZ2luYWxdKGVsZW1zKSxwdXNoLmFwcGx5KHJldCxlbGVtcy5nZXQoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHJldCl9fSk7dmFyIGlmcmFtZSxlbGVtZGlzcGxheT17fTshZnVuY3Rpb24oKXt2YXIgc2hyaW5rV3JhcEJsb2Nrc1ZhbDtzdXBwb3J0LnNocmlua1dyYXBCbG9ja3M9ZnVuY3Rpb24oKXtpZihudWxsIT1zaHJpbmtXcmFwQmxvY2tzVmFsKXJldHVybiBzaHJpbmtXcmFwQmxvY2tzVmFsO3Nocmlua1dyYXBCbG9ja3NWYWw9ITE7dmFyIGRpdixib2R5LGNvbnRhaW5lcjtyZXR1cm4gYm9keT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImJvZHlcIilbMF0sYm9keSYmYm9keS5zdHlsZT8oZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksY29udGFpbmVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksY29udGFpbmVyLnN0eWxlLmNzc1RleHQ9XCJwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweFwiLGJvZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKS5hcHBlbmRDaGlsZChkaXYpLHR5cGVvZiBkaXYuc3R5bGUuem9vbSE9PXN0cnVuZGVmaW5lZCYmKGRpdi5zdHlsZS5jc3NUZXh0PVwiLXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy1tb3otYm94LXNpemluZzpjb250ZW50LWJveDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzoxcHg7d2lkdGg6MXB4O3pvb206MVwiLGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpKS5zdHlsZS53aWR0aD1cIjVweFwiLHNocmlua1dyYXBCbG9ja3NWYWw9MyE9PWRpdi5vZmZzZXRXaWR0aCksYm9keS5yZW1vdmVDaGlsZChjb250YWluZXIpLHNocmlua1dyYXBCbG9ja3NWYWwpOnZvaWQgMH19KCk7dmFyIGdldFN0eWxlcyxjdXJDU1Mscm1hcmdpbj0vXm1hcmdpbi8scm51bW5vbnB4PW5ldyBSZWdFeHAoXCJeKFwiK3BudW0rXCIpKD8hcHgpW2EteiVdKyRcIixcImlcIikscnBvc2l0aW9uPS9eKHRvcHxyaWdodHxib3R0b218bGVmdCkkLzt3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZT8oZ2V0U3R5bGVzPWZ1bmN0aW9uKGVsZW0pe3JldHVybiBlbGVtLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcub3BlbmVyP2VsZW0ub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsZW0sbnVsbCk6d2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbSxudWxsKTtcbn0sY3VyQ1NTPWZ1bmN0aW9uKGVsZW0sbmFtZSxjb21wdXRlZCl7dmFyIHdpZHRoLG1pbldpZHRoLG1heFdpZHRoLHJldCxzdHlsZT1lbGVtLnN0eWxlO3JldHVybiBjb21wdXRlZD1jb21wdXRlZHx8Z2V0U3R5bGVzKGVsZW0pLHJldD1jb21wdXRlZD9jb21wdXRlZC5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpfHxjb21wdXRlZFtuYW1lXTp2b2lkIDAsY29tcHV0ZWQmJihcIlwiIT09cmV0fHxqUXVlcnkuY29udGFpbnMoZWxlbS5vd25lckRvY3VtZW50LGVsZW0pfHwocmV0PWpRdWVyeS5zdHlsZShlbGVtLG5hbWUpKSxybnVtbm9ucHgudGVzdChyZXQpJiZybWFyZ2luLnRlc3QobmFtZSkmJih3aWR0aD1zdHlsZS53aWR0aCxtaW5XaWR0aD1zdHlsZS5taW5XaWR0aCxtYXhXaWR0aD1zdHlsZS5tYXhXaWR0aCxzdHlsZS5taW5XaWR0aD1zdHlsZS5tYXhXaWR0aD1zdHlsZS53aWR0aD1yZXQscmV0PWNvbXB1dGVkLndpZHRoLHN0eWxlLndpZHRoPXdpZHRoLHN0eWxlLm1pbldpZHRoPW1pbldpZHRoLHN0eWxlLm1heFdpZHRoPW1heFdpZHRoKSksdm9pZCAwPT09cmV0P3JldDpyZXQrXCJcIn0pOmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jdXJyZW50U3R5bGUmJihnZXRTdHlsZXM9ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGVsZW0uY3VycmVudFN0eWxlfSxjdXJDU1M9ZnVuY3Rpb24oZWxlbSxuYW1lLGNvbXB1dGVkKXt2YXIgbGVmdCxycyxyc0xlZnQscmV0LHN0eWxlPWVsZW0uc3R5bGU7cmV0dXJuIGNvbXB1dGVkPWNvbXB1dGVkfHxnZXRTdHlsZXMoZWxlbSkscmV0PWNvbXB1dGVkP2NvbXB1dGVkW25hbWVdOnZvaWQgMCxudWxsPT1yZXQmJnN0eWxlJiZzdHlsZVtuYW1lXSYmKHJldD1zdHlsZVtuYW1lXSkscm51bW5vbnB4LnRlc3QocmV0KSYmIXJwb3NpdGlvbi50ZXN0KG5hbWUpJiYobGVmdD1zdHlsZS5sZWZ0LHJzPWVsZW0ucnVudGltZVN0eWxlLHJzTGVmdD1ycyYmcnMubGVmdCxyc0xlZnQmJihycy5sZWZ0PWVsZW0uY3VycmVudFN0eWxlLmxlZnQpLHN0eWxlLmxlZnQ9XCJmb250U2l6ZVwiPT09bmFtZT9cIjFlbVwiOnJldCxyZXQ9c3R5bGUucGl4ZWxMZWZ0K1wicHhcIixzdHlsZS5sZWZ0PWxlZnQscnNMZWZ0JiYocnMubGVmdD1yc0xlZnQpKSx2b2lkIDA9PT1yZXQ/cmV0OnJldCtcIlwifHxcImF1dG9cIn0pLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gY29tcHV0ZVN0eWxlVGVzdHMoKXt2YXIgZGl2LGJvZHksY29udGFpbmVyLGNvbnRlbnRzO2JvZHk9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJib2R5XCIpWzBdLGJvZHkmJmJvZHkuc3R5bGUmJihkaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxjb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxjb250YWluZXIuc3R5bGUuY3NzVGV4dD1cInBvc2l0aW9uOmFic29sdXRlO2JvcmRlcjowO3dpZHRoOjA7aGVpZ2h0OjA7dG9wOjA7bGVmdDotOTk5OXB4XCIsYm9keS5hcHBlbmRDaGlsZChjb250YWluZXIpLmFwcGVuZENoaWxkKGRpdiksZGl2LnN0eWxlLmNzc1RleHQ9XCItd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpibG9jazttYXJnaW4tdG9wOjElO3RvcDoxJTtib3JkZXI6MXB4O3BhZGRpbmc6MXB4O3dpZHRoOjRweDtwb3NpdGlvbjphYnNvbHV0ZVwiLHBpeGVsUG9zaXRpb25WYWw9Ym94U2l6aW5nUmVsaWFibGVWYWw9ITEscmVsaWFibGVNYXJnaW5SaWdodFZhbD0hMCx3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSYmKHBpeGVsUG9zaXRpb25WYWw9XCIxJVwiIT09KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRpdixudWxsKXx8e30pLnRvcCxib3hTaXppbmdSZWxpYWJsZVZhbD1cIjRweFwiPT09KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRpdixudWxsKXx8e3dpZHRoOlwiNHB4XCJ9KS53aWR0aCxjb250ZW50cz1kaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSksY29udGVudHMuc3R5bGUuY3NzVGV4dD1kaXYuc3R5bGUuY3NzVGV4dD1cIi13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MFwiLGNvbnRlbnRzLnN0eWxlLm1hcmdpblJpZ2h0PWNvbnRlbnRzLnN0eWxlLndpZHRoPVwiMFwiLGRpdi5zdHlsZS53aWR0aD1cIjFweFwiLHJlbGlhYmxlTWFyZ2luUmlnaHRWYWw9IXBhcnNlRmxvYXQoKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGNvbnRlbnRzLG51bGwpfHx7fSkubWFyZ2luUmlnaHQpLGRpdi5yZW1vdmVDaGlsZChjb250ZW50cykpLGRpdi5pbm5lckhUTUw9XCI8dGFibGU+PHRyPjx0ZD48L3RkPjx0ZD50PC90ZD48L3RyPjwvdGFibGU+XCIsY29udGVudHM9ZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwidGRcIiksY29udGVudHNbMF0uc3R5bGUuY3NzVGV4dD1cIm1hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MDtkaXNwbGF5Om5vbmVcIixyZWxpYWJsZUhpZGRlbk9mZnNldHNWYWw9MD09PWNvbnRlbnRzWzBdLm9mZnNldEhlaWdodCxyZWxpYWJsZUhpZGRlbk9mZnNldHNWYWwmJihjb250ZW50c1swXS5zdHlsZS5kaXNwbGF5PVwiXCIsY29udGVudHNbMV0uc3R5bGUuZGlzcGxheT1cIm5vbmVcIixyZWxpYWJsZUhpZGRlbk9mZnNldHNWYWw9MD09PWNvbnRlbnRzWzBdLm9mZnNldEhlaWdodCksYm9keS5yZW1vdmVDaGlsZChjb250YWluZXIpKX12YXIgZGl2LHN0eWxlLGEscGl4ZWxQb3NpdGlvblZhbCxib3hTaXppbmdSZWxpYWJsZVZhbCxyZWxpYWJsZUhpZGRlbk9mZnNldHNWYWwscmVsaWFibGVNYXJnaW5SaWdodFZhbDtkaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxkaXYuaW5uZXJIVE1MPVwiICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+XCIsYT1kaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJhXCIpWzBdLHN0eWxlPWEmJmEuc3R5bGUsc3R5bGUmJihzdHlsZS5jc3NUZXh0PVwiZmxvYXQ6bGVmdDtvcGFjaXR5Oi41XCIsc3VwcG9ydC5vcGFjaXR5PVwiMC41XCI9PT1zdHlsZS5vcGFjaXR5LHN1cHBvcnQuY3NzRmxvYXQ9ISFzdHlsZS5jc3NGbG9hdCxkaXYuc3R5bGUuYmFja2dyb3VuZENsaXA9XCJjb250ZW50LWJveFwiLGRpdi5jbG9uZU5vZGUoITApLnN0eWxlLmJhY2tncm91bmRDbGlwPVwiXCIsc3VwcG9ydC5jbGVhckNsb25lU3R5bGU9XCJjb250ZW50LWJveFwiPT09ZGl2LnN0eWxlLmJhY2tncm91bmRDbGlwLHN1cHBvcnQuYm94U2l6aW5nPVwiXCI9PT1zdHlsZS5ib3hTaXppbmd8fFwiXCI9PT1zdHlsZS5Nb3pCb3hTaXppbmd8fFwiXCI9PT1zdHlsZS5XZWJraXRCb3hTaXppbmcsalF1ZXJ5LmV4dGVuZChzdXBwb3J0LHtyZWxpYWJsZUhpZGRlbk9mZnNldHM6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09cmVsaWFibGVIaWRkZW5PZmZzZXRzVmFsJiZjb21wdXRlU3R5bGVUZXN0cygpLHJlbGlhYmxlSGlkZGVuT2Zmc2V0c1ZhbH0sYm94U2l6aW5nUmVsaWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09Ym94U2l6aW5nUmVsaWFibGVWYWwmJmNvbXB1dGVTdHlsZVRlc3RzKCksYm94U2l6aW5nUmVsaWFibGVWYWx9LHBpeGVsUG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09cGl4ZWxQb3NpdGlvblZhbCYmY29tcHV0ZVN0eWxlVGVzdHMoKSxwaXhlbFBvc2l0aW9uVmFsfSxyZWxpYWJsZU1hcmdpblJpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXJlbGlhYmxlTWFyZ2luUmlnaHRWYWwmJmNvbXB1dGVTdHlsZVRlc3RzKCkscmVsaWFibGVNYXJnaW5SaWdodFZhbH19KSl9KCksalF1ZXJ5LnN3YXA9ZnVuY3Rpb24oZWxlbSxvcHRpb25zLGNhbGxiYWNrLGFyZ3Mpe3ZhciByZXQsbmFtZSxvbGQ9e307Zm9yKG5hbWUgaW4gb3B0aW9ucylvbGRbbmFtZV09ZWxlbS5zdHlsZVtuYW1lXSxlbGVtLnN0eWxlW25hbWVdPW9wdGlvbnNbbmFtZV07cmV0PWNhbGxiYWNrLmFwcGx5KGVsZW0sYXJnc3x8W10pO2ZvcihuYW1lIGluIG9wdGlvbnMpZWxlbS5zdHlsZVtuYW1lXT1vbGRbbmFtZV07cmV0dXJuIHJldH07dmFyIHJhbHBoYT0vYWxwaGFcXChbXildKlxcKS9pLHJvcGFjaXR5PS9vcGFjaXR5XFxzKj1cXHMqKFteKV0qKS8scmRpc3BsYXlzd2FwPS9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxybnVtc3BsaXQ9bmV3IFJlZ0V4cChcIl4oXCIrcG51bStcIikoLiopJFwiLFwiaVwiKSxycmVsTnVtPW5ldyBSZWdFeHAoXCJeKFsrLV0pPShcIitwbnVtK1wiKVwiLFwiaVwiKSxjc3NTaG93PXtwb3NpdGlvbjpcImFic29sdXRlXCIsdmlzaWJpbGl0eTpcImhpZGRlblwiLGRpc3BsYXk6XCJibG9ja1wifSxjc3NOb3JtYWxUcmFuc2Zvcm09e2xldHRlclNwYWNpbmc6XCIwXCIsZm9udFdlaWdodDpcIjQwMFwifSxjc3NQcmVmaXhlcz1bXCJXZWJraXRcIixcIk9cIixcIk1velwiLFwibXNcIl07alF1ZXJ5LmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihlbGVtLGNvbXB1dGVkKXtpZihjb21wdXRlZCl7dmFyIHJldD1jdXJDU1MoZWxlbSxcIm9wYWNpdHlcIik7cmV0dXJuXCJcIj09PXJldD9cIjFcIjpyZXR9fX19LGNzc051bWJlcjp7Y29sdW1uQ291bnQ6ITAsZmlsbE9wYWNpdHk6ITAsZmxleEdyb3c6ITAsZmxleFNocmluazohMCxmb250V2VpZ2h0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6e1wiZmxvYXRcIjpzdXBwb3J0LmNzc0Zsb2F0P1wiY3NzRmxvYXRcIjpcInN0eWxlRmxvYXRcIn0sc3R5bGU6ZnVuY3Rpb24oZWxlbSxuYW1lLHZhbHVlLGV4dHJhKXtpZihlbGVtJiYzIT09ZWxlbS5ub2RlVHlwZSYmOCE9PWVsZW0ubm9kZVR5cGUmJmVsZW0uc3R5bGUpe3ZhciByZXQsdHlwZSxob29rcyxvcmlnTmFtZT1qUXVlcnkuY2FtZWxDYXNlKG5hbWUpLHN0eWxlPWVsZW0uc3R5bGU7aWYobmFtZT1qUXVlcnkuY3NzUHJvcHNbb3JpZ05hbWVdfHwoalF1ZXJ5LmNzc1Byb3BzW29yaWdOYW1lXT12ZW5kb3JQcm9wTmFtZShzdHlsZSxvcmlnTmFtZSkpLGhvb2tzPWpRdWVyeS5jc3NIb29rc1tuYW1lXXx8alF1ZXJ5LmNzc0hvb2tzW29yaWdOYW1lXSx2b2lkIDA9PT12YWx1ZSlyZXR1cm4gaG9va3MmJlwiZ2V0XCJpbiBob29rcyYmdm9pZCAwIT09KHJldD1ob29rcy5nZXQoZWxlbSwhMSxleHRyYSkpP3JldDpzdHlsZVtuYW1lXTtpZih0eXBlPXR5cGVvZiB2YWx1ZSxcInN0cmluZ1wiPT09dHlwZSYmKHJldD1ycmVsTnVtLmV4ZWModmFsdWUpKSYmKHZhbHVlPShyZXRbMV0rMSkqcmV0WzJdK3BhcnNlRmxvYXQoalF1ZXJ5LmNzcyhlbGVtLG5hbWUpKSx0eXBlPVwibnVtYmVyXCIpLG51bGwhPXZhbHVlJiZ2YWx1ZT09PXZhbHVlJiYoXCJudW1iZXJcIiE9PXR5cGV8fGpRdWVyeS5jc3NOdW1iZXJbb3JpZ05hbWVdfHwodmFsdWUrPVwicHhcIiksc3VwcG9ydC5jbGVhckNsb25lU3R5bGV8fFwiXCIhPT12YWx1ZXx8MCE9PW5hbWUuaW5kZXhPZihcImJhY2tncm91bmRcIil8fChzdHlsZVtuYW1lXT1cImluaGVyaXRcIiksIShob29rcyYmXCJzZXRcImluIGhvb2tzJiZ2b2lkIDA9PT0odmFsdWU9aG9va3Muc2V0KGVsZW0sdmFsdWUsZXh0cmEpKSkpKXRyeXtzdHlsZVtuYW1lXT12YWx1ZX1jYXRjaChlKXt9fX0sY3NzOmZ1bmN0aW9uKGVsZW0sbmFtZSxleHRyYSxzdHlsZXMpe3ZhciBudW0sdmFsLGhvb2tzLG9yaWdOYW1lPWpRdWVyeS5jYW1lbENhc2UobmFtZSk7cmV0dXJuIG5hbWU9alF1ZXJ5LmNzc1Byb3BzW29yaWdOYW1lXXx8KGpRdWVyeS5jc3NQcm9wc1tvcmlnTmFtZV09dmVuZG9yUHJvcE5hbWUoZWxlbS5zdHlsZSxvcmlnTmFtZSkpLGhvb2tzPWpRdWVyeS5jc3NIb29rc1tuYW1lXXx8alF1ZXJ5LmNzc0hvb2tzW29yaWdOYW1lXSxob29rcyYmXCJnZXRcImluIGhvb2tzJiYodmFsPWhvb2tzLmdldChlbGVtLCEwLGV4dHJhKSksdm9pZCAwPT09dmFsJiYodmFsPWN1ckNTUyhlbGVtLG5hbWUsc3R5bGVzKSksXCJub3JtYWxcIj09PXZhbCYmbmFtZSBpbiBjc3NOb3JtYWxUcmFuc2Zvcm0mJih2YWw9Y3NzTm9ybWFsVHJhbnNmb3JtW25hbWVdKSxcIlwiPT09ZXh0cmF8fGV4dHJhPyhudW09cGFyc2VGbG9hdCh2YWwpLGV4dHJhPT09ITB8fGpRdWVyeS5pc051bWVyaWMobnVtKT9udW18fDA6dmFsKTp2YWx9fSksalF1ZXJ5LmVhY2goW1wiaGVpZ2h0XCIsXCJ3aWR0aFwiXSxmdW5jdGlvbihpLG5hbWUpe2pRdWVyeS5jc3NIb29rc1tuYW1lXT17Z2V0OmZ1bmN0aW9uKGVsZW0sY29tcHV0ZWQsZXh0cmEpe3JldHVybiBjb21wdXRlZD9yZGlzcGxheXN3YXAudGVzdChqUXVlcnkuY3NzKGVsZW0sXCJkaXNwbGF5XCIpKSYmMD09PWVsZW0ub2Zmc2V0V2lkdGg/alF1ZXJ5LnN3YXAoZWxlbSxjc3NTaG93LGZ1bmN0aW9uKCl7cmV0dXJuIGdldFdpZHRoT3JIZWlnaHQoZWxlbSxuYW1lLGV4dHJhKX0pOmdldFdpZHRoT3JIZWlnaHQoZWxlbSxuYW1lLGV4dHJhKTp2b2lkIDB9LHNldDpmdW5jdGlvbihlbGVtLHZhbHVlLGV4dHJhKXt2YXIgc3R5bGVzPWV4dHJhJiZnZXRTdHlsZXMoZWxlbSk7cmV0dXJuIHNldFBvc2l0aXZlTnVtYmVyKGVsZW0sdmFsdWUsZXh0cmE/YXVnbWVudFdpZHRoT3JIZWlnaHQoZWxlbSxuYW1lLGV4dHJhLHN1cHBvcnQuYm94U2l6aW5nJiZcImJvcmRlci1ib3hcIj09PWpRdWVyeS5jc3MoZWxlbSxcImJveFNpemluZ1wiLCExLHN0eWxlcyksc3R5bGVzKTowKX19fSksc3VwcG9ydC5vcGFjaXR5fHwoalF1ZXJ5LmNzc0hvb2tzLm9wYWNpdHk9e2dldDpmdW5jdGlvbihlbGVtLGNvbXB1dGVkKXtyZXR1cm4gcm9wYWNpdHkudGVzdCgoY29tcHV0ZWQmJmVsZW0uY3VycmVudFN0eWxlP2VsZW0uY3VycmVudFN0eWxlLmZpbHRlcjplbGVtLnN0eWxlLmZpbHRlcil8fFwiXCIpPy4wMSpwYXJzZUZsb2F0KFJlZ0V4cC4kMSkrXCJcIjpjb21wdXRlZD9cIjFcIjpcIlwifSxzZXQ6ZnVuY3Rpb24oZWxlbSx2YWx1ZSl7dmFyIHN0eWxlPWVsZW0uc3R5bGUsY3VycmVudFN0eWxlPWVsZW0uY3VycmVudFN0eWxlLG9wYWNpdHk9alF1ZXJ5LmlzTnVtZXJpYyh2YWx1ZSk/XCJhbHBoYShvcGFjaXR5PVwiKzEwMCp2YWx1ZStcIilcIjpcIlwiLGZpbHRlcj1jdXJyZW50U3R5bGUmJmN1cnJlbnRTdHlsZS5maWx0ZXJ8fHN0eWxlLmZpbHRlcnx8XCJcIjtzdHlsZS56b29tPTEsKHZhbHVlPj0xfHxcIlwiPT09dmFsdWUpJiZcIlwiPT09alF1ZXJ5LnRyaW0oZmlsdGVyLnJlcGxhY2UocmFscGhhLFwiXCIpKSYmc3R5bGUucmVtb3ZlQXR0cmlidXRlJiYoc3R5bGUucmVtb3ZlQXR0cmlidXRlKFwiZmlsdGVyXCIpLFwiXCI9PT12YWx1ZXx8Y3VycmVudFN0eWxlJiYhY3VycmVudFN0eWxlLmZpbHRlcil8fChzdHlsZS5maWx0ZXI9cmFscGhhLnRlc3QoZmlsdGVyKT9maWx0ZXIucmVwbGFjZShyYWxwaGEsb3BhY2l0eSk6ZmlsdGVyK1wiIFwiK29wYWNpdHkpfX0pLGpRdWVyeS5jc3NIb29rcy5tYXJnaW5SaWdodD1hZGRHZXRIb29rSWYoc3VwcG9ydC5yZWxpYWJsZU1hcmdpblJpZ2h0LGZ1bmN0aW9uKGVsZW0sY29tcHV0ZWQpe3JldHVybiBjb21wdXRlZD9qUXVlcnkuc3dhcChlbGVtLHtkaXNwbGF5OlwiaW5saW5lLWJsb2NrXCJ9LGN1ckNTUyxbZWxlbSxcIm1hcmdpblJpZ2h0XCJdKTp2b2lkIDB9KSxqUXVlcnkuZWFjaCh7bWFyZ2luOlwiXCIscGFkZGluZzpcIlwiLGJvcmRlcjpcIldpZHRoXCJ9LGZ1bmN0aW9uKHByZWZpeCxzdWZmaXgpe2pRdWVyeS5jc3NIb29rc1twcmVmaXgrc3VmZml4XT17ZXhwYW5kOmZ1bmN0aW9uKHZhbHVlKXtmb3IodmFyIGk9MCxleHBhbmRlZD17fSxwYXJ0cz1cInN0cmluZ1wiPT10eXBlb2YgdmFsdWU/dmFsdWUuc3BsaXQoXCIgXCIpOlt2YWx1ZV07ND5pO2krKylleHBhbmRlZFtwcmVmaXgrY3NzRXhwYW5kW2ldK3N1ZmZpeF09cGFydHNbaV18fHBhcnRzW2ktMl18fHBhcnRzWzBdO3JldHVybiBleHBhbmRlZH19LHJtYXJnaW4udGVzdChwcmVmaXgpfHwoalF1ZXJ5LmNzc0hvb2tzW3ByZWZpeCtzdWZmaXhdLnNldD1zZXRQb3NpdGl2ZU51bWJlcil9KSxqUXVlcnkuZm4uZXh0ZW5kKHtjc3M6ZnVuY3Rpb24obmFtZSx2YWx1ZSl7cmV0dXJuIGFjY2Vzcyh0aGlzLGZ1bmN0aW9uKGVsZW0sbmFtZSx2YWx1ZSl7dmFyIHN0eWxlcyxsZW4sbWFwPXt9LGk9MDtpZihqUXVlcnkuaXNBcnJheShuYW1lKSl7Zm9yKHN0eWxlcz1nZXRTdHlsZXMoZWxlbSksbGVuPW5hbWUubGVuZ3RoO2xlbj5pO2krKyltYXBbbmFtZVtpXV09alF1ZXJ5LmNzcyhlbGVtLG5hbWVbaV0sITEsc3R5bGVzKTtyZXR1cm4gbWFwfXJldHVybiB2b2lkIDAhPT12YWx1ZT9qUXVlcnkuc3R5bGUoZWxlbSxuYW1lLHZhbHVlKTpqUXVlcnkuY3NzKGVsZW0sbmFtZSl9LG5hbWUsdmFsdWUsYXJndW1lbnRzLmxlbmd0aD4xKX0sc2hvdzpmdW5jdGlvbigpe3JldHVybiBzaG93SGlkZSh0aGlzLCEwKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiBzaG93SGlkZSh0aGlzKX0sdG9nZ2xlOmZ1bmN0aW9uKHN0YXRlKXtyZXR1cm5cImJvb2xlYW5cIj09dHlwZW9mIHN0YXRlP3N0YXRlP3RoaXMuc2hvdygpOnRoaXMuaGlkZSgpOnRoaXMuZWFjaChmdW5jdGlvbigpe2lzSGlkZGVuKHRoaXMpP2pRdWVyeSh0aGlzKS5zaG93KCk6alF1ZXJ5KHRoaXMpLmhpZGUoKX0pfX0pLGpRdWVyeS5Ud2Vlbj1Ud2VlbixUd2Vlbi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlR3ZWVuLGluaXQ6ZnVuY3Rpb24oZWxlbSxvcHRpb25zLHByb3AsZW5kLGVhc2luZyx1bml0KXt0aGlzLmVsZW09ZWxlbSx0aGlzLnByb3A9cHJvcCx0aGlzLmVhc2luZz1lYXNpbmd8fFwic3dpbmdcIix0aGlzLm9wdGlvbnM9b3B0aW9ucyx0aGlzLnN0YXJ0PXRoaXMubm93PXRoaXMuY3VyKCksdGhpcy5lbmQ9ZW5kLHRoaXMudW5pdD11bml0fHwoalF1ZXJ5LmNzc051bWJlcltwcm9wXT9cIlwiOlwicHhcIil9LGN1cjpmdW5jdGlvbigpe3ZhciBob29rcz1Ud2Vlbi5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gaG9va3MmJmhvb2tzLmdldD9ob29rcy5nZXQodGhpcyk6VHdlZW4ucHJvcEhvb2tzLl9kZWZhdWx0LmdldCh0aGlzKX0scnVuOmZ1bmN0aW9uKHBlcmNlbnQpe3ZhciBlYXNlZCxob29rcz1Ud2Vlbi5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gdGhpcy5vcHRpb25zLmR1cmF0aW9uP3RoaXMucG9zPWVhc2VkPWpRdWVyeS5lYXNpbmdbdGhpcy5lYXNpbmddKHBlcmNlbnQsdGhpcy5vcHRpb25zLmR1cmF0aW9uKnBlcmNlbnQsMCwxLHRoaXMub3B0aW9ucy5kdXJhdGlvbik6dGhpcy5wb3M9ZWFzZWQ9cGVyY2VudCx0aGlzLm5vdz0odGhpcy5lbmQtdGhpcy5zdGFydCkqZWFzZWQrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksaG9va3MmJmhvb2tzLnNldD9ob29rcy5zZXQodGhpcyk6VHdlZW4ucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0sVHdlZW4ucHJvdG90eXBlLmluaXQucHJvdG90eXBlPVR3ZWVuLnByb3RvdHlwZSxUd2Vlbi5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24odHdlZW4pe3ZhciByZXN1bHQ7cmV0dXJuIG51bGw9PXR3ZWVuLmVsZW1bdHdlZW4ucHJvcF18fHR3ZWVuLmVsZW0uc3R5bGUmJm51bGwhPXR3ZWVuLmVsZW0uc3R5bGVbdHdlZW4ucHJvcF0/KHJlc3VsdD1qUXVlcnkuY3NzKHR3ZWVuLmVsZW0sdHdlZW4ucHJvcCxcIlwiKSxyZXN1bHQmJlwiYXV0b1wiIT09cmVzdWx0P3Jlc3VsdDowKTp0d2Vlbi5lbGVtW3R3ZWVuLnByb3BdfSxzZXQ6ZnVuY3Rpb24odHdlZW4pe2pRdWVyeS5meC5zdGVwW3R3ZWVuLnByb3BdP2pRdWVyeS5meC5zdGVwW3R3ZWVuLnByb3BdKHR3ZWVuKTp0d2Vlbi5lbGVtLnN0eWxlJiYobnVsbCE9dHdlZW4uZWxlbS5zdHlsZVtqUXVlcnkuY3NzUHJvcHNbdHdlZW4ucHJvcF1dfHxqUXVlcnkuY3NzSG9va3NbdHdlZW4ucHJvcF0pP2pRdWVyeS5zdHlsZSh0d2Vlbi5lbGVtLHR3ZWVuLnByb3AsdHdlZW4ubm93K3R3ZWVuLnVuaXQpOnR3ZWVuLmVsZW1bdHdlZW4ucHJvcF09dHdlZW4ubm93fX19LFR3ZWVuLnByb3BIb29rcy5zY3JvbGxUb3A9VHdlZW4ucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbih0d2Vlbil7dHdlZW4uZWxlbS5ub2RlVHlwZSYmdHdlZW4uZWxlbS5wYXJlbnROb2RlJiYodHdlZW4uZWxlbVt0d2Vlbi5wcm9wXT10d2Vlbi5ub3cpfX0salF1ZXJ5LmVhc2luZz17bGluZWFyOmZ1bmN0aW9uKHApe3JldHVybiBwfSxzd2luZzpmdW5jdGlvbihwKXtyZXR1cm4uNS1NYXRoLmNvcyhwKk1hdGguUEkpLzJ9fSxqUXVlcnkuZng9VHdlZW4ucHJvdG90eXBlLmluaXQsalF1ZXJ5LmZ4LnN0ZXA9e307dmFyIGZ4Tm93LHRpbWVySWQscmZ4dHlwZXM9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLHJmeG51bT1uZXcgUmVnRXhwKFwiXig/OihbKy1dKT18KShcIitwbnVtK1wiKShbYS16JV0qKSRcIixcImlcIikscnJ1bj0vcXVldWVIb29rcyQvLGFuaW1hdGlvblByZWZpbHRlcnM9W2RlZmF1bHRQcmVmaWx0ZXJdLHR3ZWVuZXJzPXtcIipcIjpbZnVuY3Rpb24ocHJvcCx2YWx1ZSl7dmFyIHR3ZWVuPXRoaXMuY3JlYXRlVHdlZW4ocHJvcCx2YWx1ZSksdGFyZ2V0PXR3ZWVuLmN1cigpLHBhcnRzPXJmeG51bS5leGVjKHZhbHVlKSx1bml0PXBhcnRzJiZwYXJ0c1szXXx8KGpRdWVyeS5jc3NOdW1iZXJbcHJvcF0/XCJcIjpcInB4XCIpLHN0YXJ0PShqUXVlcnkuY3NzTnVtYmVyW3Byb3BdfHxcInB4XCIhPT11bml0JiYrdGFyZ2V0KSYmcmZ4bnVtLmV4ZWMoalF1ZXJ5LmNzcyh0d2Vlbi5lbGVtLHByb3ApKSxzY2FsZT0xLG1heEl0ZXJhdGlvbnM9MjA7aWYoc3RhcnQmJnN0YXJ0WzNdIT09dW5pdCl7dW5pdD11bml0fHxzdGFydFszXSxwYXJ0cz1wYXJ0c3x8W10sc3RhcnQ9K3RhcmdldHx8MTtkbyBzY2FsZT1zY2FsZXx8XCIuNVwiLHN0YXJ0Lz1zY2FsZSxqUXVlcnkuc3R5bGUodHdlZW4uZWxlbSxwcm9wLHN0YXJ0K3VuaXQpO3doaWxlKHNjYWxlIT09KHNjYWxlPXR3ZWVuLmN1cigpL3RhcmdldCkmJjEhPT1zY2FsZSYmLS1tYXhJdGVyYXRpb25zKX1yZXR1cm4gcGFydHMmJihzdGFydD10d2Vlbi5zdGFydD0rc3RhcnR8fCt0YXJnZXR8fDAsdHdlZW4udW5pdD11bml0LHR3ZWVuLmVuZD1wYXJ0c1sxXT9zdGFydCsocGFydHNbMV0rMSkqcGFydHNbMl06K3BhcnRzWzJdKSx0d2Vlbn1dfTtqUXVlcnkuQW5pbWF0aW9uPWpRdWVyeS5leHRlbmQoQW5pbWF0aW9uLHt0d2VlbmVyOmZ1bmN0aW9uKHByb3BzLGNhbGxiYWNrKXtqUXVlcnkuaXNGdW5jdGlvbihwcm9wcyk/KGNhbGxiYWNrPXByb3BzLHByb3BzPVtcIipcIl0pOnByb3BzPXByb3BzLnNwbGl0KFwiIFwiKTtmb3IodmFyIHByb3AsaW5kZXg9MCxsZW5ndGg9cHJvcHMubGVuZ3RoO2xlbmd0aD5pbmRleDtpbmRleCsrKXByb3A9cHJvcHNbaW5kZXhdLHR3ZWVuZXJzW3Byb3BdPXR3ZWVuZXJzW3Byb3BdfHxbXSx0d2VlbmVyc1twcm9wXS51bnNoaWZ0KGNhbGxiYWNrKX0scHJlZmlsdGVyOmZ1bmN0aW9uKGNhbGxiYWNrLHByZXBlbmQpe3ByZXBlbmQ/YW5pbWF0aW9uUHJlZmlsdGVycy51bnNoaWZ0KGNhbGxiYWNrKTphbmltYXRpb25QcmVmaWx0ZXJzLnB1c2goY2FsbGJhY2spfX0pLGpRdWVyeS5zcGVlZD1mdW5jdGlvbihzcGVlZCxlYXNpbmcsZm4pe3ZhciBvcHQ9c3BlZWQmJlwib2JqZWN0XCI9PXR5cGVvZiBzcGVlZD9qUXVlcnkuZXh0ZW5kKHt9LHNwZWVkKTp7Y29tcGxldGU6Zm58fCFmbiYmZWFzaW5nfHxqUXVlcnkuaXNGdW5jdGlvbihzcGVlZCkmJnNwZWVkLGR1cmF0aW9uOnNwZWVkLGVhc2luZzpmbiYmZWFzaW5nfHxlYXNpbmcmJiFqUXVlcnkuaXNGdW5jdGlvbihlYXNpbmcpJiZlYXNpbmd9O3JldHVybiBvcHQuZHVyYXRpb249alF1ZXJ5LmZ4Lm9mZj8wOlwibnVtYmVyXCI9PXR5cGVvZiBvcHQuZHVyYXRpb24/b3B0LmR1cmF0aW9uOm9wdC5kdXJhdGlvbiBpbiBqUXVlcnkuZnguc3BlZWRzP2pRdWVyeS5meC5zcGVlZHNbb3B0LmR1cmF0aW9uXTpqUXVlcnkuZnguc3BlZWRzLl9kZWZhdWx0LChudWxsPT1vcHQucXVldWV8fG9wdC5xdWV1ZT09PSEwKSYmKG9wdC5xdWV1ZT1cImZ4XCIpLG9wdC5vbGQ9b3B0LmNvbXBsZXRlLG9wdC5jb21wbGV0ZT1mdW5jdGlvbigpe2pRdWVyeS5pc0Z1bmN0aW9uKG9wdC5vbGQpJiZvcHQub2xkLmNhbGwodGhpcyksb3B0LnF1ZXVlJiZqUXVlcnkuZGVxdWV1ZSh0aGlzLG9wdC5xdWV1ZSl9LG9wdH0salF1ZXJ5LmZuLmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKHNwZWVkLHRvLGVhc2luZyxjYWxsYmFjayl7cmV0dXJuIHRoaXMuZmlsdGVyKGlzSGlkZGVuKS5jc3MoXCJvcGFjaXR5XCIsMCkuc2hvdygpLmVuZCgpLmFuaW1hdGUoe29wYWNpdHk6dG99LHNwZWVkLGVhc2luZyxjYWxsYmFjayl9LGFuaW1hdGU6ZnVuY3Rpb24ocHJvcCxzcGVlZCxlYXNpbmcsY2FsbGJhY2spe3ZhciBlbXB0eT1qUXVlcnkuaXNFbXB0eU9iamVjdChwcm9wKSxvcHRhbGw9alF1ZXJ5LnNwZWVkKHNwZWVkLGVhc2luZyxjYWxsYmFjayksZG9BbmltYXRpb249ZnVuY3Rpb24oKXt2YXIgYW5pbT1BbmltYXRpb24odGhpcyxqUXVlcnkuZXh0ZW5kKHt9LHByb3ApLG9wdGFsbCk7KGVtcHR5fHxqUXVlcnkuX2RhdGEodGhpcyxcImZpbmlzaFwiKSkmJmFuaW0uc3RvcCghMCl9O3JldHVybiBkb0FuaW1hdGlvbi5maW5pc2g9ZG9BbmltYXRpb24sZW1wdHl8fG9wdGFsbC5xdWV1ZT09PSExP3RoaXMuZWFjaChkb0FuaW1hdGlvbik6dGhpcy5xdWV1ZShvcHRhbGwucXVldWUsZG9BbmltYXRpb24pfSxzdG9wOmZ1bmN0aW9uKHR5cGUsY2xlYXJRdWV1ZSxnb3RvRW5kKXt2YXIgc3RvcFF1ZXVlPWZ1bmN0aW9uKGhvb2tzKXt2YXIgc3RvcD1ob29rcy5zdG9wO2RlbGV0ZSBob29rcy5zdG9wLHN0b3AoZ290b0VuZCl9O3JldHVyblwic3RyaW5nXCIhPXR5cGVvZiB0eXBlJiYoZ290b0VuZD1jbGVhclF1ZXVlLGNsZWFyUXVldWU9dHlwZSx0eXBlPXZvaWQgMCksY2xlYXJRdWV1ZSYmdHlwZSE9PSExJiZ0aGlzLnF1ZXVlKHR5cGV8fFwiZnhcIixbXSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGRlcXVldWU9ITAsaW5kZXg9bnVsbCE9dHlwZSYmdHlwZStcInF1ZXVlSG9va3NcIix0aW1lcnM9alF1ZXJ5LnRpbWVycyxkYXRhPWpRdWVyeS5fZGF0YSh0aGlzKTtpZihpbmRleClkYXRhW2luZGV4XSYmZGF0YVtpbmRleF0uc3RvcCYmc3RvcFF1ZXVlKGRhdGFbaW5kZXhdKTtlbHNlIGZvcihpbmRleCBpbiBkYXRhKWRhdGFbaW5kZXhdJiZkYXRhW2luZGV4XS5zdG9wJiZycnVuLnRlc3QoaW5kZXgpJiZzdG9wUXVldWUoZGF0YVtpbmRleF0pO2ZvcihpbmRleD10aW1lcnMubGVuZ3RoO2luZGV4LS07KXRpbWVyc1tpbmRleF0uZWxlbSE9PXRoaXN8fG51bGwhPXR5cGUmJnRpbWVyc1tpbmRleF0ucXVldWUhPT10eXBlfHwodGltZXJzW2luZGV4XS5hbmltLnN0b3AoZ290b0VuZCksZGVxdWV1ZT0hMSx0aW1lcnMuc3BsaWNlKGluZGV4LDEpKTsoZGVxdWV1ZXx8IWdvdG9FbmQpJiZqUXVlcnkuZGVxdWV1ZSh0aGlzLHR5cGUpfSl9LGZpbmlzaDpmdW5jdGlvbih0eXBlKXtyZXR1cm4gdHlwZSE9PSExJiYodHlwZT10eXBlfHxcImZ4XCIpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBpbmRleCxkYXRhPWpRdWVyeS5fZGF0YSh0aGlzKSxxdWV1ZT1kYXRhW3R5cGUrXCJxdWV1ZVwiXSxob29rcz1kYXRhW3R5cGUrXCJxdWV1ZUhvb2tzXCJdLHRpbWVycz1qUXVlcnkudGltZXJzLGxlbmd0aD1xdWV1ZT9xdWV1ZS5sZW5ndGg6MDtmb3IoZGF0YS5maW5pc2g9ITAsalF1ZXJ5LnF1ZXVlKHRoaXMsdHlwZSxbXSksaG9va3MmJmhvb2tzLnN0b3AmJmhvb2tzLnN0b3AuY2FsbCh0aGlzLCEwKSxpbmRleD10aW1lcnMubGVuZ3RoO2luZGV4LS07KXRpbWVyc1tpbmRleF0uZWxlbT09PXRoaXMmJnRpbWVyc1tpbmRleF0ucXVldWU9PT10eXBlJiYodGltZXJzW2luZGV4XS5hbmltLnN0b3AoITApLHRpbWVycy5zcGxpY2UoaW5kZXgsMSkpO2ZvcihpbmRleD0wO2xlbmd0aD5pbmRleDtpbmRleCsrKXF1ZXVlW2luZGV4XSYmcXVldWVbaW5kZXhdLmZpbmlzaCYmcXVldWVbaW5kZXhdLmZpbmlzaC5jYWxsKHRoaXMpO2RlbGV0ZSBkYXRhLmZpbmlzaH0pfX0pLGpRdWVyeS5lYWNoKFtcInRvZ2dsZVwiLFwic2hvd1wiLFwiaGlkZVwiXSxmdW5jdGlvbihpLG5hbWUpe3ZhciBjc3NGbj1qUXVlcnkuZm5bbmFtZV07alF1ZXJ5LmZuW25hbWVdPWZ1bmN0aW9uKHNwZWVkLGVhc2luZyxjYWxsYmFjayl7cmV0dXJuIG51bGw9PXNwZWVkfHxcImJvb2xlYW5cIj09dHlwZW9mIHNwZWVkP2Nzc0ZuLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUoZ2VuRngobmFtZSwhMCksc3BlZWQsZWFzaW5nLGNhbGxiYWNrKX19KSxqUXVlcnkuZWFjaCh7c2xpZGVEb3duOmdlbkZ4KFwic2hvd1wiKSxzbGlkZVVwOmdlbkZ4KFwiaGlkZVwiKSxzbGlkZVRvZ2dsZTpnZW5GeChcInRvZ2dsZVwiKSxmYWRlSW46e29wYWNpdHk6XCJzaG93XCJ9LGZhZGVPdXQ6e29wYWNpdHk6XCJoaWRlXCJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6XCJ0b2dnbGVcIn19LGZ1bmN0aW9uKG5hbWUscHJvcHMpe2pRdWVyeS5mbltuYW1lXT1mdW5jdGlvbihzcGVlZCxlYXNpbmcsY2FsbGJhY2spe3JldHVybiB0aGlzLmFuaW1hdGUocHJvcHMsc3BlZWQsZWFzaW5nLGNhbGxiYWNrKX19KSxqUXVlcnkudGltZXJzPVtdLGpRdWVyeS5meC50aWNrPWZ1bmN0aW9uKCl7dmFyIHRpbWVyLHRpbWVycz1qUXVlcnkudGltZXJzLGk9MDtmb3IoZnhOb3c9alF1ZXJ5Lm5vdygpO2k8dGltZXJzLmxlbmd0aDtpKyspdGltZXI9dGltZXJzW2ldLHRpbWVyKCl8fHRpbWVyc1tpXSE9PXRpbWVyfHx0aW1lcnMuc3BsaWNlKGktLSwxKTt0aW1lcnMubGVuZ3RofHxqUXVlcnkuZnguc3RvcCgpLGZ4Tm93PXZvaWQgMH0salF1ZXJ5LmZ4LnRpbWVyPWZ1bmN0aW9uKHRpbWVyKXtqUXVlcnkudGltZXJzLnB1c2godGltZXIpLHRpbWVyKCk/alF1ZXJ5LmZ4LnN0YXJ0KCk6alF1ZXJ5LnRpbWVycy5wb3AoKX0salF1ZXJ5LmZ4LmludGVydmFsPTEzLGpRdWVyeS5meC5zdGFydD1mdW5jdGlvbigpe3RpbWVySWR8fCh0aW1lcklkPXNldEludGVydmFsKGpRdWVyeS5meC50aWNrLGpRdWVyeS5meC5pbnRlcnZhbCkpfSxqUXVlcnkuZnguc3RvcD1mdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwodGltZXJJZCksdGltZXJJZD1udWxsfSxqUXVlcnkuZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LGpRdWVyeS5mbi5kZWxheT1mdW5jdGlvbih0aW1lLHR5cGUpe3JldHVybiB0aW1lPWpRdWVyeS5meD9qUXVlcnkuZnguc3BlZWRzW3RpbWVdfHx0aW1lOnRpbWUsdHlwZT10eXBlfHxcImZ4XCIsdGhpcy5xdWV1ZSh0eXBlLGZ1bmN0aW9uKG5leHQsaG9va3Mpe3ZhciB0aW1lb3V0PXNldFRpbWVvdXQobmV4dCx0aW1lKTtob29rcy5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHRpbWVvdXQpfX0pfSxmdW5jdGlvbigpe3ZhciBpbnB1dCxkaXYsc2VsZWN0LGEsb3B0O2Rpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGRpdi5zZXRBdHRyaWJ1dGUoXCJjbGFzc05hbWVcIixcInRcIiksZGl2LmlubmVySFRNTD1cIiAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJz5hPC9hPjxpbnB1dCB0eXBlPSdjaGVja2JveCcvPlwiLGE9ZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYVwiKVswXSxzZWxlY3Q9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNlbGVjdFwiKSxvcHQ9c2VsZWN0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJvcHRpb25cIikpLGlucHV0PWRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZShcImlucHV0XCIpWzBdLGEuc3R5bGUuY3NzVGV4dD1cInRvcDoxcHhcIixzdXBwb3J0LmdldFNldEF0dHJpYnV0ZT1cInRcIiE9PWRpdi5jbGFzc05hbWUsc3VwcG9ydC5zdHlsZT0vdG9wLy50ZXN0KGEuZ2V0QXR0cmlidXRlKFwic3R5bGVcIikpLHN1cHBvcnQuaHJlZk5vcm1hbGl6ZWQ9XCIvYVwiPT09YS5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpLHN1cHBvcnQuY2hlY2tPbj0hIWlucHV0LnZhbHVlLHN1cHBvcnQub3B0U2VsZWN0ZWQ9b3B0LnNlbGVjdGVkLHN1cHBvcnQuZW5jdHlwZT0hIWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJmb3JtXCIpLmVuY3R5cGUsc2VsZWN0LmRpc2FibGVkPSEwLHN1cHBvcnQub3B0RGlzYWJsZWQ9IW9wdC5kaXNhYmxlZCxpbnB1dD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiksaW5wdXQuc2V0QXR0cmlidXRlKFwidmFsdWVcIixcIlwiKSxzdXBwb3J0LmlucHV0PVwiXCI9PT1pbnB1dC5nZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiKSxpbnB1dC52YWx1ZT1cInRcIixpbnB1dC5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsXCJyYWRpb1wiKSxzdXBwb3J0LnJhZGlvVmFsdWU9XCJ0XCI9PT1pbnB1dC52YWx1ZX0oKTt2YXIgcnJldHVybj0vXFxyL2c7alF1ZXJ5LmZuLmV4dGVuZCh7dmFsOmZ1bmN0aW9uKHZhbHVlKXt2YXIgaG9va3MscmV0LGlzRnVuY3Rpb24sZWxlbT10aGlzWzBdO3tpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiBpc0Z1bmN0aW9uPWpRdWVyeS5pc0Z1bmN0aW9uKHZhbHVlKSx0aGlzLmVhY2goZnVuY3Rpb24oaSl7dmFyIHZhbDsxPT09dGhpcy5ub2RlVHlwZSYmKHZhbD1pc0Z1bmN0aW9uP3ZhbHVlLmNhbGwodGhpcyxpLGpRdWVyeSh0aGlzKS52YWwoKSk6dmFsdWUsbnVsbD09dmFsP3ZhbD1cIlwiOlwibnVtYmVyXCI9PXR5cGVvZiB2YWw/dmFsKz1cIlwiOmpRdWVyeS5pc0FycmF5KHZhbCkmJih2YWw9alF1ZXJ5Lm1hcCh2YWwsZnVuY3Rpb24odmFsdWUpe3JldHVybiBudWxsPT12YWx1ZT9cIlwiOnZhbHVlK1wiXCJ9KSksaG9va3M9alF1ZXJ5LnZhbEhvb2tzW3RoaXMudHlwZV18fGpRdWVyeS52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGhvb2tzJiZcInNldFwiaW4gaG9va3MmJnZvaWQgMCE9PWhvb2tzLnNldCh0aGlzLHZhbCxcInZhbHVlXCIpfHwodGhpcy52YWx1ZT12YWwpKX0pO2lmKGVsZW0pcmV0dXJuIGhvb2tzPWpRdWVyeS52YWxIb29rc1tlbGVtLnR5cGVdfHxqUXVlcnkudmFsSG9va3NbZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSxob29rcyYmXCJnZXRcImluIGhvb2tzJiZ2b2lkIDAhPT0ocmV0PWhvb2tzLmdldChlbGVtLFwidmFsdWVcIikpP3JldDoocmV0PWVsZW0udmFsdWUsXCJzdHJpbmdcIj09dHlwZW9mIHJldD9yZXQucmVwbGFjZShycmV0dXJuLFwiXCIpOm51bGw9PXJldD9cIlwiOnJldCl9fX0pLGpRdWVyeS5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihlbGVtKXt2YXIgdmFsPWpRdWVyeS5maW5kLmF0dHIoZWxlbSxcInZhbHVlXCIpO3JldHVybiBudWxsIT12YWw/dmFsOmpRdWVyeS50cmltKGpRdWVyeS50ZXh0KGVsZW0pKX19LHNlbGVjdDp7Z2V0OmZ1bmN0aW9uKGVsZW0pe2Zvcih2YXIgdmFsdWUsb3B0aW9uLG9wdGlvbnM9ZWxlbS5vcHRpb25zLGluZGV4PWVsZW0uc2VsZWN0ZWRJbmRleCxvbmU9XCJzZWxlY3Qtb25lXCI9PT1lbGVtLnR5cGV8fDA+aW5kZXgsdmFsdWVzPW9uZT9udWxsOltdLG1heD1vbmU/aW5kZXgrMTpvcHRpb25zLmxlbmd0aCxpPTA+aW5kZXg/bWF4Om9uZT9pbmRleDowO21heD5pO2krKylpZihvcHRpb249b3B0aW9uc1tpXSwob3B0aW9uLnNlbGVjdGVkfHxpPT09aW5kZXgpJiYoc3VwcG9ydC5vcHREaXNhYmxlZD8hb3B0aW9uLmRpc2FibGVkOm51bGw9PT1vcHRpb24uZ2V0QXR0cmlidXRlKFwiZGlzYWJsZWRcIikpJiYoIW9wdGlvbi5wYXJlbnROb2RlLmRpc2FibGVkfHwhalF1ZXJ5Lm5vZGVOYW1lKG9wdGlvbi5wYXJlbnROb2RlLFwib3B0Z3JvdXBcIikpKXtpZih2YWx1ZT1qUXVlcnkob3B0aW9uKS52YWwoKSxvbmUpcmV0dXJuIHZhbHVlO3ZhbHVlcy5wdXNoKHZhbHVlKX1yZXR1cm4gdmFsdWVzfSxzZXQ6ZnVuY3Rpb24oZWxlbSx2YWx1ZSl7Zm9yKHZhciBvcHRpb25TZXQsb3B0aW9uLG9wdGlvbnM9ZWxlbS5vcHRpb25zLHZhbHVlcz1qUXVlcnkubWFrZUFycmF5KHZhbHVlKSxpPW9wdGlvbnMubGVuZ3RoO2ktLTspaWYob3B0aW9uPW9wdGlvbnNbaV0salF1ZXJ5LmluQXJyYXkoalF1ZXJ5LnZhbEhvb2tzLm9wdGlvbi5nZXQob3B0aW9uKSx2YWx1ZXMpPj0wKXRyeXtvcHRpb24uc2VsZWN0ZWQ9b3B0aW9uU2V0PSEwfWNhdGNoKF8pe29wdGlvbi5zY3JvbGxIZWlnaHR9ZWxzZSBvcHRpb24uc2VsZWN0ZWQ9ITE7cmV0dXJuIG9wdGlvblNldHx8KGVsZW0uc2VsZWN0ZWRJbmRleD0tMSksb3B0aW9uc319fX0pLGpRdWVyeS5lYWNoKFtcInJhZGlvXCIsXCJjaGVja2JveFwiXSxmdW5jdGlvbigpe2pRdWVyeS52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGVsZW0sdmFsdWUpe3JldHVybiBqUXVlcnkuaXNBcnJheSh2YWx1ZSk/ZWxlbS5jaGVja2VkPWpRdWVyeS5pbkFycmF5KGpRdWVyeShlbGVtKS52YWwoKSx2YWx1ZSk+PTA6dm9pZCAwfX0sc3VwcG9ydC5jaGVja09ufHwoalF1ZXJ5LnZhbEhvb2tzW3RoaXNdLmdldD1mdW5jdGlvbihlbGVtKXtyZXR1cm4gbnVsbD09PWVsZW0uZ2V0QXR0cmlidXRlKFwidmFsdWVcIik/XCJvblwiOmVsZW0udmFsdWV9KX0pO3ZhciBub2RlSG9vayxib29sSG9vayxhdHRySGFuZGxlPWpRdWVyeS5leHByLmF0dHJIYW5kbGUscnVzZURlZmF1bHQ9L14oPzpjaGVja2VkfHNlbGVjdGVkKSQvaSxnZXRTZXRBdHRyaWJ1dGU9c3VwcG9ydC5nZXRTZXRBdHRyaWJ1dGUsZ2V0U2V0SW5wdXQ9c3VwcG9ydC5pbnB1dDtqUXVlcnkuZm4uZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKG5hbWUsdmFsdWUpe3JldHVybiBhY2Nlc3ModGhpcyxqUXVlcnkuYXR0cixuYW1lLHZhbHVlLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24obmFtZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2pRdWVyeS5yZW1vdmVBdHRyKHRoaXMsbmFtZSl9KX19KSxqUXVlcnkuZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGVsZW0sbmFtZSx2YWx1ZSl7dmFyIGhvb2tzLHJldCxuVHlwZT1lbGVtLm5vZGVUeXBlO2lmKGVsZW0mJjMhPT1uVHlwZSYmOCE9PW5UeXBlJiYyIT09blR5cGUpcmV0dXJuIHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZT09PXN0cnVuZGVmaW5lZD9qUXVlcnkucHJvcChlbGVtLG5hbWUsdmFsdWUpOigxPT09blR5cGUmJmpRdWVyeS5pc1hNTERvYyhlbGVtKXx8KG5hbWU9bmFtZS50b0xvd2VyQ2FzZSgpLGhvb2tzPWpRdWVyeS5hdHRySG9va3NbbmFtZV18fChqUXVlcnkuZXhwci5tYXRjaC5ib29sLnRlc3QobmFtZSk/Ym9vbEhvb2s6bm9kZUhvb2spKSx2b2lkIDA9PT12YWx1ZT9ob29rcyYmXCJnZXRcImluIGhvb2tzJiZudWxsIT09KHJldD1ob29rcy5nZXQoZWxlbSxuYW1lKSk/cmV0OihyZXQ9alF1ZXJ5LmZpbmQuYXR0cihlbGVtLG5hbWUpLG51bGw9PXJldD92b2lkIDA6cmV0KTpudWxsIT09dmFsdWU/aG9va3MmJlwic2V0XCJpbiBob29rcyYmdm9pZCAwIT09KHJldD1ob29rcy5zZXQoZWxlbSx2YWx1ZSxuYW1lKSk/cmV0OihlbGVtLnNldEF0dHJpYnV0ZShuYW1lLHZhbHVlK1wiXCIpLHZhbHVlKTp2b2lkIGpRdWVyeS5yZW1vdmVBdHRyKGVsZW0sbmFtZSkpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGVsZW0sdmFsdWUpe3ZhciBuYW1lLHByb3BOYW1lLGk9MCxhdHRyTmFtZXM9dmFsdWUmJnZhbHVlLm1hdGNoKHJub3R3aGl0ZSk7aWYoYXR0ck5hbWVzJiYxPT09ZWxlbS5ub2RlVHlwZSlmb3IoO25hbWU9YXR0ck5hbWVzW2krK107KXByb3BOYW1lPWpRdWVyeS5wcm9wRml4W25hbWVdfHxuYW1lLGpRdWVyeS5leHByLm1hdGNoLmJvb2wudGVzdChuYW1lKT9nZXRTZXRJbnB1dCYmZ2V0U2V0QXR0cmlidXRlfHwhcnVzZURlZmF1bHQudGVzdChuYW1lKT9lbGVtW3Byb3BOYW1lXT0hMTplbGVtW2pRdWVyeS5jYW1lbENhc2UoXCJkZWZhdWx0LVwiK25hbWUpXT1lbGVtW3Byb3BOYW1lXT0hMTpqUXVlcnkuYXR0cihlbGVtLG5hbWUsXCJcIiksZWxlbS5yZW1vdmVBdHRyaWJ1dGUoZ2V0U2V0QXR0cmlidXRlP25hbWU6cHJvcE5hbWUpfSxhdHRySG9va3M6e3R5cGU6e3NldDpmdW5jdGlvbihlbGVtLHZhbHVlKXtpZighc3VwcG9ydC5yYWRpb1ZhbHVlJiZcInJhZGlvXCI9PT12YWx1ZSYmalF1ZXJ5Lm5vZGVOYW1lKGVsZW0sXCJpbnB1dFwiKSl7dmFyIHZhbD1lbGVtLnZhbHVlO3JldHVybiBlbGVtLnNldEF0dHJpYnV0ZShcInR5cGVcIix2YWx1ZSksdmFsJiYoZWxlbS52YWx1ZT12YWwpLHZhbHVlfX19fX0pLGJvb2xIb29rPXtzZXQ6ZnVuY3Rpb24oZWxlbSx2YWx1ZSxuYW1lKXtyZXR1cm4gdmFsdWU9PT0hMT9qUXVlcnkucmVtb3ZlQXR0cihlbGVtLG5hbWUpOmdldFNldElucHV0JiZnZXRTZXRBdHRyaWJ1dGV8fCFydXNlRGVmYXVsdC50ZXN0KG5hbWUpP2VsZW0uc2V0QXR0cmlidXRlKCFnZXRTZXRBdHRyaWJ1dGUmJmpRdWVyeS5wcm9wRml4W25hbWVdfHxuYW1lLG5hbWUpOmVsZW1balF1ZXJ5LmNhbWVsQ2FzZShcImRlZmF1bHQtXCIrbmFtZSldPWVsZW1bbmFtZV09ITAsbmFtZX19LGpRdWVyeS5lYWNoKGpRdWVyeS5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKC9cXHcrL2cpLGZ1bmN0aW9uKGksbmFtZSl7dmFyIGdldHRlcj1hdHRySGFuZGxlW25hbWVdfHxqUXVlcnkuZmluZC5hdHRyO2F0dHJIYW5kbGVbbmFtZV09Z2V0U2V0SW5wdXQmJmdldFNldEF0dHJpYnV0ZXx8IXJ1c2VEZWZhdWx0LnRlc3QobmFtZSk/ZnVuY3Rpb24oZWxlbSxuYW1lLGlzWE1MKXt2YXIgcmV0LGhhbmRsZTtyZXR1cm4gaXNYTUx8fChoYW5kbGU9YXR0ckhhbmRsZVtuYW1lXSxhdHRySGFuZGxlW25hbWVdPXJldCxyZXQ9bnVsbCE9Z2V0dGVyKGVsZW0sbmFtZSxpc1hNTCk/bmFtZS50b0xvd2VyQ2FzZSgpOm51bGwsYXR0ckhhbmRsZVtuYW1lXT1oYW5kbGUpLHJldH06ZnVuY3Rpb24oZWxlbSxuYW1lLGlzWE1MKXtyZXR1cm4gaXNYTUw/dm9pZCAwOmVsZW1balF1ZXJ5LmNhbWVsQ2FzZShcImRlZmF1bHQtXCIrbmFtZSldP25hbWUudG9Mb3dlckNhc2UoKTpudWxsfX0pLGdldFNldElucHV0JiZnZXRTZXRBdHRyaWJ1dGV8fChqUXVlcnkuYXR0ckhvb2tzLnZhbHVlPXtzZXQ6ZnVuY3Rpb24oZWxlbSx2YWx1ZSxuYW1lKXtyZXR1cm4galF1ZXJ5Lm5vZGVOYW1lKGVsZW0sXCJpbnB1dFwiKT92b2lkKGVsZW0uZGVmYXVsdFZhbHVlPXZhbHVlKTpub2RlSG9vayYmbm9kZUhvb2suc2V0KGVsZW0sdmFsdWUsbmFtZSl9fSksZ2V0U2V0QXR0cmlidXRlfHwobm9kZUhvb2s9e3NldDpmdW5jdGlvbihlbGVtLHZhbHVlLG5hbWUpe3ZhciByZXQ9ZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKG5hbWUpO3JldHVybiByZXR8fGVsZW0uc2V0QXR0cmlidXRlTm9kZShyZXQ9ZWxlbS5vd25lckRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZShuYW1lKSkscmV0LnZhbHVlPXZhbHVlKz1cIlwiLFwidmFsdWVcIj09PW5hbWV8fHZhbHVlPT09ZWxlbS5nZXRBdHRyaWJ1dGUobmFtZSk/dmFsdWU6dm9pZCAwfX0sYXR0ckhhbmRsZS5pZD1hdHRySGFuZGxlLm5hbWU9YXR0ckhhbmRsZS5jb29yZHM9ZnVuY3Rpb24oZWxlbSxuYW1lLGlzWE1MKXt2YXIgcmV0O3JldHVybiBpc1hNTD92b2lkIDA6KHJldD1lbGVtLmdldEF0dHJpYnV0ZU5vZGUobmFtZSkpJiZcIlwiIT09cmV0LnZhbHVlP3JldC52YWx1ZTpudWxsfSxqUXVlcnkudmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rpb24oZWxlbSxuYW1lKXt2YXIgcmV0PWVsZW0uZ2V0QXR0cmlidXRlTm9kZShuYW1lKTtyZXR1cm4gcmV0JiZyZXQuc3BlY2lmaWVkP3JldC52YWx1ZTp2b2lkIDB9LHNldDpub2RlSG9vay5zZXR9LGpRdWVyeS5hdHRySG9va3MuY29udGVudGVkaXRhYmxlPXtzZXQ6ZnVuY3Rpb24oZWxlbSx2YWx1ZSxuYW1lKXtub2RlSG9vay5zZXQoZWxlbSxcIlwiPT09dmFsdWU/ITE6dmFsdWUsbmFtZSl9fSxqUXVlcnkuZWFjaChbXCJ3aWR0aFwiLFwiaGVpZ2h0XCJdLGZ1bmN0aW9uKGksbmFtZSl7alF1ZXJ5LmF0dHJIb29rc1tuYW1lXT17c2V0OmZ1bmN0aW9uKGVsZW0sdmFsdWUpe3JldHVyblwiXCI9PT12YWx1ZT8oZWxlbS5zZXRBdHRyaWJ1dGUobmFtZSxcImF1dG9cIiksdmFsdWUpOnZvaWQgMH19fSkpLHN1cHBvcnQuc3R5bGV8fChqUXVlcnkuYXR0ckhvb2tzLnN0eWxlPXtnZXQ6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGVsZW0uc3R5bGUuY3NzVGV4dHx8dm9pZCAwfSxzZXQ6ZnVuY3Rpb24oZWxlbSx2YWx1ZSl7cmV0dXJuIGVsZW0uc3R5bGUuY3NzVGV4dD12YWx1ZStcIlwifX0pO3ZhciByZm9jdXNhYmxlPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbnxvYmplY3QpJC9pLHJjbGlja2FibGU9L14oPzphfGFyZWEpJC9pO2pRdWVyeS5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24obmFtZSx2YWx1ZSl7cmV0dXJuIGFjY2Vzcyh0aGlzLGpRdWVyeS5wcm9wLG5hbWUsdmFsdWUsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihuYW1lKXtyZXR1cm4gbmFtZT1qUXVlcnkucHJvcEZpeFtuYW1lXXx8bmFtZSx0aGlzLmVhY2goZnVuY3Rpb24oKXt0cnl7dGhpc1tuYW1lXT12b2lkIDAsZGVsZXRlIHRoaXNbbmFtZV19Y2F0Y2goZSl7fX0pfX0pLGpRdWVyeS5leHRlbmQoe3Byb3BGaXg6e1wiZm9yXCI6XCJodG1sRm9yXCIsXCJjbGFzc1wiOlwiY2xhc3NOYW1lXCJ9LHByb3A6ZnVuY3Rpb24oZWxlbSxuYW1lLHZhbHVlKXt2YXIgcmV0LGhvb2tzLG5vdHhtbCxuVHlwZT1lbGVtLm5vZGVUeXBlO2lmKGVsZW0mJjMhPT1uVHlwZSYmOCE9PW5UeXBlJiYyIT09blR5cGUpcmV0dXJuIG5vdHhtbD0xIT09blR5cGV8fCFqUXVlcnkuaXNYTUxEb2MoZWxlbSksbm90eG1sJiYobmFtZT1qUXVlcnkucHJvcEZpeFtuYW1lXXx8bmFtZSxob29rcz1qUXVlcnkucHJvcEhvb2tzW25hbWVdKSx2b2lkIDAhPT12YWx1ZT9ob29rcyYmXCJzZXRcImluIGhvb2tzJiZ2b2lkIDAhPT0ocmV0PWhvb2tzLnNldChlbGVtLHZhbHVlLG5hbWUpKT9yZXQ6ZWxlbVtuYW1lXT12YWx1ZTpob29rcyYmXCJnZXRcImluIGhvb2tzJiZudWxsIT09KHJldD1ob29rcy5nZXQoZWxlbSxuYW1lKSk/cmV0OmVsZW1bbmFtZV19LHByb3BIb29rczp7dGFiSW5kZXg6e2dldDpmdW5jdGlvbihlbGVtKXt2YXIgdGFiaW5kZXg9alF1ZXJ5LmZpbmQuYXR0cihlbGVtLFwidGFiaW5kZXhcIik7cmV0dXJuIHRhYmluZGV4P3BhcnNlSW50KHRhYmluZGV4LDEwKTpyZm9jdXNhYmxlLnRlc3QoZWxlbS5ub2RlTmFtZSl8fHJjbGlja2FibGUudGVzdChlbGVtLm5vZGVOYW1lKSYmZWxlbS5ocmVmPzA6LTF9fX19KSxzdXBwb3J0LmhyZWZOb3JtYWxpemVkfHxqUXVlcnkuZWFjaChbXCJocmVmXCIsXCJzcmNcIl0sZnVuY3Rpb24oaSxuYW1lKXtqUXVlcnkucHJvcEhvb2tzW25hbWVdPXtnZXQ6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKG5hbWUsNCl9fX0pLHN1cHBvcnQub3B0U2VsZWN0ZWR8fChqUXVlcnkucHJvcEhvb2tzLnNlbGVjdGVkPXtnZXQ6ZnVuY3Rpb24oZWxlbSl7dmFyIHBhcmVudD1lbGVtLnBhcmVudE5vZGU7cmV0dXJuIHBhcmVudCYmKHBhcmVudC5zZWxlY3RlZEluZGV4LHBhcmVudC5wYXJlbnROb2RlJiZwYXJlbnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KSxudWxsfX0pLGpRdWVyeS5lYWNoKFtcInRhYkluZGV4XCIsXCJyZWFkT25seVwiLFwibWF4TGVuZ3RoXCIsXCJjZWxsU3BhY2luZ1wiLFwiY2VsbFBhZGRpbmdcIixcInJvd1NwYW5cIixcImNvbFNwYW5cIixcInVzZU1hcFwiLFwiZnJhbWVCb3JkZXJcIixcImNvbnRlbnRFZGl0YWJsZVwiXSxmdW5jdGlvbigpe2pRdWVyeS5wcm9wRml4W3RoaXMudG9Mb3dlckNhc2UoKV09dGhpc30pLHN1cHBvcnQuZW5jdHlwZXx8KGpRdWVyeS5wcm9wRml4LmVuY3R5cGU9XCJlbmNvZGluZ1wiKTt2YXIgcmNsYXNzPS9bXFx0XFxyXFxuXFxmXS9nO2pRdWVyeS5mbi5leHRlbmQoe2FkZENsYXNzOmZ1bmN0aW9uKHZhbHVlKXt2YXIgY2xhc3NlcyxlbGVtLGN1cixjbGF6eixqLGZpbmFsVmFsdWUsaT0wLGxlbj10aGlzLmxlbmd0aCxwcm9jZWVkPVwic3RyaW5nXCI9PXR5cGVvZiB2YWx1ZSYmdmFsdWU7aWYoalF1ZXJ5LmlzRnVuY3Rpb24odmFsdWUpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oail7alF1ZXJ5KHRoaXMpLmFkZENsYXNzKHZhbHVlLmNhbGwodGhpcyxqLHRoaXMuY2xhc3NOYW1lKSl9KTtpZihwcm9jZWVkKWZvcihjbGFzc2VzPSh2YWx1ZXx8XCJcIikubWF0Y2gocm5vdHdoaXRlKXx8W107bGVuPmk7aSsrKWlmKGVsZW09dGhpc1tpXSxjdXI9MT09PWVsZW0ubm9kZVR5cGUmJihlbGVtLmNsYXNzTmFtZT8oXCIgXCIrZWxlbS5jbGFzc05hbWUrXCIgXCIpLnJlcGxhY2UocmNsYXNzLFwiIFwiKTpcIiBcIikpe2ZvcihqPTA7Y2xheno9Y2xhc3Nlc1tqKytdOyljdXIuaW5kZXhPZihcIiBcIitjbGF6eitcIiBcIik8MCYmKGN1cis9Y2xhenorXCIgXCIpO2ZpbmFsVmFsdWU9alF1ZXJ5LnRyaW0oY3VyKSxlbGVtLmNsYXNzTmFtZSE9PWZpbmFsVmFsdWUmJihlbGVtLmNsYXNzTmFtZT1maW5hbFZhbHVlKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24odmFsdWUpe3ZhciBjbGFzc2VzLGVsZW0sY3VyLGNsYXp6LGosZmluYWxWYWx1ZSxpPTAsbGVuPXRoaXMubGVuZ3RoLHByb2NlZWQ9MD09PWFyZ3VtZW50cy5sZW5ndGh8fFwic3RyaW5nXCI9PXR5cGVvZiB2YWx1ZSYmdmFsdWU7aWYoalF1ZXJ5LmlzRnVuY3Rpb24odmFsdWUpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oail7alF1ZXJ5KHRoaXMpLnJlbW92ZUNsYXNzKHZhbHVlLmNhbGwodGhpcyxqLHRoaXMuY2xhc3NOYW1lKSl9KTtpZihwcm9jZWVkKWZvcihjbGFzc2VzPSh2YWx1ZXx8XCJcIikubWF0Y2gocm5vdHdoaXRlKXx8W107bGVuPmk7aSsrKWlmKGVsZW09dGhpc1tpXSxjdXI9MT09PWVsZW0ubm9kZVR5cGUmJihlbGVtLmNsYXNzTmFtZT8oXCIgXCIrZWxlbS5jbGFzc05hbWUrXCIgXCIpLnJlcGxhY2UocmNsYXNzLFwiIFwiKTpcIlwiKSl7Zm9yKGo9MDtjbGF6ej1jbGFzc2VzW2orK107KWZvcig7Y3VyLmluZGV4T2YoXCIgXCIrY2xhenorXCIgXCIpPj0wOyljdXI9Y3VyLnJlcGxhY2UoXCIgXCIrY2xhenorXCIgXCIsXCIgXCIpO2ZpbmFsVmFsdWU9dmFsdWU/alF1ZXJ5LnRyaW0oY3VyKTpcIlwiLGVsZW0uY2xhc3NOYW1lIT09ZmluYWxWYWx1ZSYmKGVsZW0uY2xhc3NOYW1lPWZpbmFsVmFsdWUpfXJldHVybiB0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbih2YWx1ZSxzdGF0ZVZhbCl7dmFyIHR5cGU9dHlwZW9mIHZhbHVlO3JldHVyblwiYm9vbGVhblwiPT10eXBlb2Ygc3RhdGVWYWwmJlwic3RyaW5nXCI9PT10eXBlP3N0YXRlVmFsP3RoaXMuYWRkQ2xhc3ModmFsdWUpOnRoaXMucmVtb3ZlQ2xhc3ModmFsdWUpOmpRdWVyeS5pc0Z1bmN0aW9uKHZhbHVlKT90aGlzLmVhY2goZnVuY3Rpb24oaSl7alF1ZXJ5KHRoaXMpLnRvZ2dsZUNsYXNzKHZhbHVlLmNhbGwodGhpcyxpLHRoaXMuY2xhc3NOYW1lLHN0YXRlVmFsKSxzdGF0ZVZhbCl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXtpZihcInN0cmluZ1wiPT09dHlwZSlmb3IodmFyIGNsYXNzTmFtZSxpPTAsc2VsZj1qUXVlcnkodGhpcyksY2xhc3NOYW1lcz12YWx1ZS5tYXRjaChybm90d2hpdGUpfHxbXTtjbGFzc05hbWU9Y2xhc3NOYW1lc1tpKytdOylzZWxmLmhhc0NsYXNzKGNsYXNzTmFtZSk/c2VsZi5yZW1vdmVDbGFzcyhjbGFzc05hbWUpOnNlbGYuYWRkQ2xhc3MoY2xhc3NOYW1lKTtlbHNlKHR5cGU9PT1zdHJ1bmRlZmluZWR8fFwiYm9vbGVhblwiPT09dHlwZSkmJih0aGlzLmNsYXNzTmFtZSYmalF1ZXJ5Ll9kYXRhKHRoaXMsXCJfX2NsYXNzTmFtZV9fXCIsdGhpcy5jbGFzc05hbWUpLHRoaXMuY2xhc3NOYW1lPXRoaXMuY2xhc3NOYW1lfHx2YWx1ZT09PSExP1wiXCI6alF1ZXJ5Ll9kYXRhKHRoaXMsXCJfX2NsYXNzTmFtZV9fXCIpfHxcIlwiKX0pfSxoYXNDbGFzczpmdW5jdGlvbihzZWxlY3Rvcil7Zm9yKHZhciBjbGFzc05hbWU9XCIgXCIrc2VsZWN0b3IrXCIgXCIsaT0wLGw9dGhpcy5sZW5ndGg7bD5pO2krKylpZigxPT09dGhpc1tpXS5ub2RlVHlwZSYmKFwiIFwiK3RoaXNbaV0uY2xhc3NOYW1lK1wiIFwiKS5yZXBsYWNlKHJjbGFzcyxcIiBcIikuaW5kZXhPZihjbGFzc05hbWUpPj0wKXJldHVybiEwO3JldHVybiExfX0pLGpRdWVyeS5lYWNoKFwiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudVwiLnNwbGl0KFwiIFwiKSxmdW5jdGlvbihpLG5hbWUpe2pRdWVyeS5mbltuYW1lXT1mdW5jdGlvbihkYXRhLGZuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24obmFtZSxudWxsLGRhdGEsZm4pOnRoaXMudHJpZ2dlcihuYW1lKX19KSxqUXVlcnkuZm4uZXh0ZW5kKHtob3ZlcjpmdW5jdGlvbihmbk92ZXIsZm5PdXQpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoZm5PdmVyKS5tb3VzZWxlYXZlKGZuT3V0fHxmbk92ZXIpfSxiaW5kOmZ1bmN0aW9uKHR5cGVzLGRhdGEsZm4pe3JldHVybiB0aGlzLm9uKHR5cGVzLG51bGwsZGF0YSxmbil9LHVuYmluZDpmdW5jdGlvbih0eXBlcyxmbil7cmV0dXJuIHRoaXMub2ZmKHR5cGVzLG51bGwsZm4pfSxkZWxlZ2F0ZTpmdW5jdGlvbihzZWxlY3Rvcix0eXBlcyxkYXRhLGZuKXtyZXR1cm4gdGhpcy5vbih0eXBlcyxzZWxlY3RvcixkYXRhLGZuKX0sdW5kZWxlZ2F0ZTpmdW5jdGlvbihzZWxlY3Rvcix0eXBlcyxmbil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMub2ZmKHNlbGVjdG9yLFwiKipcIik6dGhpcy5vZmYodHlwZXMsc2VsZWN0b3J8fFwiKipcIixmbil9fSk7dmFyIG5vbmNlPWpRdWVyeS5ub3coKSxycXVlcnk9L1xcPy8scnZhbGlkdG9rZW5zPS8oLCl8KFxcW3x7KXwofXxdKXxcIig/OlteXCJcXFxcXFxyXFxuXXxcXFxcW1wiXFxcXFxcL2JmbnJ0XXxcXFxcdVtcXGRhLWZBLUZdezR9KSpcIlxccyo6P3x0cnVlfGZhbHNlfG51bGx8LT8oPyEwXFxkKVxcZCsoPzpcXC5cXGQrfCkoPzpbZUVdWystXT9cXGQrfCkvZztqUXVlcnkucGFyc2VKU09OPWZ1bmN0aW9uKGRhdGEpe2lmKHdpbmRvdy5KU09OJiZ3aW5kb3cuSlNPTi5wYXJzZSlyZXR1cm4gd2luZG93LkpTT04ucGFyc2UoZGF0YStcIlwiKTt2YXIgcmVxdWlyZU5vbkNvbW1hLGRlcHRoPW51bGwsc3RyPWpRdWVyeS50cmltKGRhdGErXCJcIik7cmV0dXJuIHN0ciYmIWpRdWVyeS50cmltKHN0ci5yZXBsYWNlKHJ2YWxpZHRva2VucyxmdW5jdGlvbih0b2tlbixjb21tYSxvcGVuLGNsb3NlKXtyZXR1cm4gcmVxdWlyZU5vbkNvbW1hJiZjb21tYSYmKGRlcHRoPTApLDA9PT1kZXB0aD90b2tlbjoocmVxdWlyZU5vbkNvbW1hPW9wZW58fGNvbW1hLGRlcHRoKz0hY2xvc2UtIW9wZW4sXCJcIil9KSk/RnVuY3Rpb24oXCJyZXR1cm4gXCIrc3RyKSgpOmpRdWVyeS5lcnJvcihcIkludmFsaWQgSlNPTjogXCIrZGF0YSl9LGpRdWVyeS5wYXJzZVhNTD1mdW5jdGlvbihkYXRhKXt2YXIgeG1sLHRtcDtpZighZGF0YXx8XCJzdHJpbmdcIiE9dHlwZW9mIGRhdGEpcmV0dXJuIG51bGw7dHJ5e3dpbmRvdy5ET01QYXJzZXI/KHRtcD1uZXcgRE9NUGFyc2VyLHhtbD10bXAucGFyc2VGcm9tU3RyaW5nKGRhdGEsXCJ0ZXh0L3htbFwiKSk6KHhtbD1uZXcgQWN0aXZlWE9iamVjdChcIk1pY3Jvc29mdC5YTUxET01cIikseG1sLmFzeW5jPVwiZmFsc2VcIix4bWwubG9hZFhNTChkYXRhKSl9Y2F0Y2goZSl7eG1sPXZvaWQgMH1yZXR1cm4geG1sJiZ4bWwuZG9jdW1lbnRFbGVtZW50JiYheG1sLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwicGFyc2VyZXJyb3JcIikubGVuZ3RofHxqUXVlcnkuZXJyb3IoXCJJbnZhbGlkIFhNTDogXCIrZGF0YSkseG1sfTt2YXIgYWpheExvY1BhcnRzLGFqYXhMb2NhdGlvbixyaGFzaD0vIy4qJC8scnRzPS8oWz8mXSlfPVteJl0qLyxyaGVhZGVycz0vXiguKj8pOlsgXFx0XSooW15cXHJcXG5dKilcXHI/JC9nbSxybG9jYWxQcm90b2NvbD0vXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxybm9Db250ZW50PS9eKD86R0VUfEhFQUQpJC8scnByb3RvY29sPS9eXFwvXFwvLyxydXJsPS9eKFtcXHcuKy1dKzopKD86XFwvXFwvKD86W15cXC8/I10qQHwpKFteXFwvPyM6XSopKD86OihcXGQrKXwpfCkvLHByZWZpbHRlcnM9e30sdHJhbnNwb3J0cz17fSxhbGxUeXBlcz1cIiovXCIuY29uY2F0KFwiKlwiKTt0cnl7YWpheExvY2F0aW9uPWxvY2F0aW9uLmhyZWZ9Y2F0Y2goZSl7YWpheExvY2F0aW9uPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpLGFqYXhMb2NhdGlvbi5ocmVmPVwiXCIsYWpheExvY2F0aW9uPWFqYXhMb2NhdGlvbi5ocmVmfWFqYXhMb2NQYXJ0cz1ydXJsLmV4ZWMoYWpheExvY2F0aW9uLnRvTG93ZXJDYXNlKCkpfHxbXSxqUXVlcnkuZXh0ZW5kKHthY3RpdmU6MCxsYXN0TW9kaWZpZWQ6e30sZXRhZzp7fSxhamF4U2V0dGluZ3M6e3VybDphamF4TG9jYXRpb24sdHlwZTpcIkdFVFwiLGlzTG9jYWw6cmxvY2FsUHJvdG9jb2wudGVzdChhamF4TG9jUGFydHNbMV0pLGdsb2JhbDohMCxwcm9jZXNzRGF0YTohMCxhc3luYzohMCxjb250ZW50VHlwZTpcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOFwiLGFjY2VwdHM6e1wiKlwiOmFsbFR5cGVzLHRleHQ6XCJ0ZXh0L3BsYWluXCIsaHRtbDpcInRleHQvaHRtbFwiLHhtbDpcImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWxcIixqc29uOlwiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0XCJ9LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6XCJyZXNwb25zZVhNTFwiLHRleHQ6XCJyZXNwb25zZVRleHRcIixqc29uOlwicmVzcG9uc2VKU09OXCJ9LGNvbnZlcnRlcnM6e1wiKiB0ZXh0XCI6U3RyaW5nLFwidGV4dCBodG1sXCI6ITAsXCJ0ZXh0IGpzb25cIjpqUXVlcnkucGFyc2VKU09OLFwidGV4dCB4bWxcIjpqUXVlcnkucGFyc2VYTUx9LGZsYXRPcHRpb25zOnt1cmw6ITAsY29udGV4dDohMH19LGFqYXhTZXR1cDpmdW5jdGlvbih0YXJnZXQsc2V0dGluZ3Mpe3JldHVybiBzZXR0aW5ncz9hamF4RXh0ZW5kKGFqYXhFeHRlbmQodGFyZ2V0LGpRdWVyeS5hamF4U2V0dGluZ3MpLHNldHRpbmdzKTphamF4RXh0ZW5kKGpRdWVyeS5hamF4U2V0dGluZ3MsdGFyZ2V0KX0sYWpheFByZWZpbHRlcjphZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMocHJlZmlsdGVycyksYWpheFRyYW5zcG9ydDphZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHModHJhbnNwb3J0cyksYWpheDpmdW5jdGlvbih1cmwsb3B0aW9ucyl7ZnVuY3Rpb24gZG9uZShzdGF0dXMsbmF0aXZlU3RhdHVzVGV4dCxyZXNwb25zZXMsaGVhZGVycyl7dmFyIGlzU3VjY2VzcyxzdWNjZXNzLGVycm9yLHJlc3BvbnNlLG1vZGlmaWVkLHN0YXR1c1RleHQ9bmF0aXZlU3RhdHVzVGV4dDsyIT09c3RhdGUmJihzdGF0ZT0yLHRpbWVvdXRUaW1lciYmY2xlYXJUaW1lb3V0KHRpbWVvdXRUaW1lciksdHJhbnNwb3J0PXZvaWQgMCxyZXNwb25zZUhlYWRlcnNTdHJpbmc9aGVhZGVyc3x8XCJcIixqcVhIUi5yZWFkeVN0YXRlPXN0YXR1cz4wPzQ6MCxpc1N1Y2Nlc3M9c3RhdHVzPj0yMDAmJjMwMD5zdGF0dXN8fDMwND09PXN0YXR1cyxyZXNwb25zZXMmJihyZXNwb25zZT1hamF4SGFuZGxlUmVzcG9uc2VzKHMsanFYSFIscmVzcG9uc2VzKSkscmVzcG9uc2U9YWpheENvbnZlcnQocyxyZXNwb25zZSxqcVhIUixpc1N1Y2Nlc3MpLGlzU3VjY2Vzcz8ocy5pZk1vZGlmaWVkJiYobW9kaWZpZWQ9anFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoXCJMYXN0LU1vZGlmaWVkXCIpLG1vZGlmaWVkJiYoalF1ZXJ5Lmxhc3RNb2RpZmllZFtjYWNoZVVSTF09bW9kaWZpZWQpLG1vZGlmaWVkPWpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKFwiZXRhZ1wiKSxtb2RpZmllZCYmKGpRdWVyeS5ldGFnW2NhY2hlVVJMXT1tb2RpZmllZCkpLDIwND09PXN0YXR1c3x8XCJIRUFEXCI9PT1zLnR5cGU/c3RhdHVzVGV4dD1cIm5vY29udGVudFwiOjMwND09PXN0YXR1cz9zdGF0dXNUZXh0PVwibm90bW9kaWZpZWRcIjooc3RhdHVzVGV4dD1yZXNwb25zZS5zdGF0ZSxzdWNjZXNzPXJlc3BvbnNlLmRhdGEsZXJyb3I9cmVzcG9uc2UuZXJyb3IsaXNTdWNjZXNzPSFlcnJvcikpOihlcnJvcj1zdGF0dXNUZXh0LChzdGF0dXN8fCFzdGF0dXNUZXh0KSYmKHN0YXR1c1RleHQ9XCJlcnJvclwiLDA+c3RhdHVzJiYoc3RhdHVzPTApKSksanFYSFIuc3RhdHVzPXN0YXR1cyxqcVhIUi5zdGF0dXNUZXh0PShuYXRpdmVTdGF0dXNUZXh0fHxzdGF0dXNUZXh0KStcIlwiLGlzU3VjY2Vzcz9kZWZlcnJlZC5yZXNvbHZlV2l0aChjYWxsYmFja0NvbnRleHQsW3N1Y2Nlc3Msc3RhdHVzVGV4dCxqcVhIUl0pOmRlZmVycmVkLnJlamVjdFdpdGgoY2FsbGJhY2tDb250ZXh0LFtqcVhIUixzdGF0dXNUZXh0LGVycm9yXSksanFYSFIuc3RhdHVzQ29kZShzdGF0dXNDb2RlKSxzdGF0dXNDb2RlPXZvaWQgMCxmaXJlR2xvYmFscyYmZ2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoaXNTdWNjZXNzP1wiYWpheFN1Y2Nlc3NcIjpcImFqYXhFcnJvclwiLFtqcVhIUixzLGlzU3VjY2Vzcz9zdWNjZXNzOmVycm9yXSksY29tcGxldGVEZWZlcnJlZC5maXJlV2l0aChjYWxsYmFja0NvbnRleHQsW2pxWEhSLHN0YXR1c1RleHRdKSxmaXJlR2xvYmFscyYmKGdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2VyKFwiYWpheENvbXBsZXRlXCIsW2pxWEhSLHNdKSwtLWpRdWVyeS5hY3RpdmV8fGpRdWVyeS5ldmVudC50cmlnZ2VyKFwiYWpheFN0b3BcIikpKX1cIm9iamVjdFwiPT10eXBlb2YgdXJsJiYob3B0aW9ucz11cmwsdXJsPXZvaWQgMCksb3B0aW9ucz1vcHRpb25zfHx7fTt2YXIgcGFydHMsaSxjYWNoZVVSTCxyZXNwb25zZUhlYWRlcnNTdHJpbmcsdGltZW91dFRpbWVyLGZpcmVHbG9iYWxzLHRyYW5zcG9ydCxyZXNwb25zZUhlYWRlcnMscz1qUXVlcnkuYWpheFNldHVwKHt9LG9wdGlvbnMpLGNhbGxiYWNrQ29udGV4dD1zLmNvbnRleHR8fHMsZ2xvYmFsRXZlbnRDb250ZXh0PXMuY29udGV4dCYmKGNhbGxiYWNrQ29udGV4dC5ub2RlVHlwZXx8Y2FsbGJhY2tDb250ZXh0LmpxdWVyeSk/alF1ZXJ5KGNhbGxiYWNrQ29udGV4dCk6alF1ZXJ5LmV2ZW50LGRlZmVycmVkPWpRdWVyeS5EZWZlcnJlZCgpLGNvbXBsZXRlRGVmZXJyZWQ9alF1ZXJ5LkNhbGxiYWNrcyhcIm9uY2UgbWVtb3J5XCIpLHN0YXR1c0NvZGU9cy5zdGF0dXNDb2RlfHx7fSxyZXF1ZXN0SGVhZGVycz17fSxyZXF1ZXN0SGVhZGVyc05hbWVzPXt9LHN0YXRlPTAsc3RyQWJvcnQ9XCJjYW5jZWxlZFwiLGpxWEhSPXtyZWFkeVN0YXRlOjAsZ2V0UmVzcG9uc2VIZWFkZXI6ZnVuY3Rpb24oa2V5KXt2YXIgbWF0Y2g7aWYoMj09PXN0YXRlKXtpZighcmVzcG9uc2VIZWFkZXJzKWZvcihyZXNwb25zZUhlYWRlcnM9e307bWF0Y2g9cmhlYWRlcnMuZXhlYyhyZXNwb25zZUhlYWRlcnNTdHJpbmcpOylyZXNwb25zZUhlYWRlcnNbbWF0Y2hbMV0udG9Mb3dlckNhc2UoKV09bWF0Y2hbMl07bWF0Y2g9cmVzcG9uc2VIZWFkZXJzW2tleS50b0xvd2VyQ2FzZSgpXX1yZXR1cm4gbnVsbD09bWF0Y2g/bnVsbDptYXRjaH0sZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIDI9PT1zdGF0ZT9yZXNwb25zZUhlYWRlcnNTdHJpbmc6bnVsbH0sc2V0UmVxdWVzdEhlYWRlcjpmdW5jdGlvbihuYW1lLHZhbHVlKXt2YXIgbG5hbWU9bmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiBzdGF0ZXx8KG5hbWU9cmVxdWVzdEhlYWRlcnNOYW1lc1tsbmFtZV09cmVxdWVzdEhlYWRlcnNOYW1lc1tsbmFtZV18fG5hbWUscmVxdWVzdEhlYWRlcnNbbmFtZV09dmFsdWUpLHRoaXN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24odHlwZSl7cmV0dXJuIHN0YXRlfHwocy5taW1lVHlwZT10eXBlKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKG1hcCl7dmFyIGNvZGU7aWYobWFwKWlmKDI+c3RhdGUpZm9yKGNvZGUgaW4gbWFwKXN0YXR1c0NvZGVbY29kZV09W3N0YXR1c0NvZGVbY29kZV0sbWFwW2NvZGVdXTtlbHNlIGpxWEhSLmFsd2F5cyhtYXBbanFYSFIuc3RhdHVzXSk7cmV0dXJuIHRoaXN9LGFib3J0OmZ1bmN0aW9uKHN0YXR1c1RleHQpe3ZhciBmaW5hbFRleHQ9c3RhdHVzVGV4dHx8c3RyQWJvcnQ7cmV0dXJuIHRyYW5zcG9ydCYmdHJhbnNwb3J0LmFib3J0KGZpbmFsVGV4dCksZG9uZSgwLGZpbmFsVGV4dCksdGhpc319O2lmKGRlZmVycmVkLnByb21pc2UoanFYSFIpLmNvbXBsZXRlPWNvbXBsZXRlRGVmZXJyZWQuYWRkLGpxWEhSLnN1Y2Nlc3M9anFYSFIuZG9uZSxqcVhIUi5lcnJvcj1qcVhIUi5mYWlsLHMudXJsPSgodXJsfHxzLnVybHx8YWpheExvY2F0aW9uKStcIlwiKS5yZXBsYWNlKHJoYXNoLFwiXCIpLnJlcGxhY2UocnByb3RvY29sLGFqYXhMb2NQYXJ0c1sxXStcIi8vXCIpLHMudHlwZT1vcHRpb25zLm1ldGhvZHx8b3B0aW9ucy50eXBlfHxzLm1ldGhvZHx8cy50eXBlLHMuZGF0YVR5cGVzPWpRdWVyeS50cmltKHMuZGF0YVR5cGV8fFwiKlwiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKHJub3R3aGl0ZSl8fFtcIlwiXSxcbm51bGw9PXMuY3Jvc3NEb21haW4mJihwYXJ0cz1ydXJsLmV4ZWMocy51cmwudG9Mb3dlckNhc2UoKSkscy5jcm9zc0RvbWFpbj0hKCFwYXJ0c3x8cGFydHNbMV09PT1hamF4TG9jUGFydHNbMV0mJnBhcnRzWzJdPT09YWpheExvY1BhcnRzWzJdJiYocGFydHNbM118fChcImh0dHA6XCI9PT1wYXJ0c1sxXT9cIjgwXCI6XCI0NDNcIikpPT09KGFqYXhMb2NQYXJ0c1szXXx8KFwiaHR0cDpcIj09PWFqYXhMb2NQYXJ0c1sxXT9cIjgwXCI6XCI0NDNcIikpKSkscy5kYXRhJiZzLnByb2Nlc3NEYXRhJiZcInN0cmluZ1wiIT10eXBlb2Ygcy5kYXRhJiYocy5kYXRhPWpRdWVyeS5wYXJhbShzLmRhdGEscy50cmFkaXRpb25hbCkpLGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKHByZWZpbHRlcnMscyxvcHRpb25zLGpxWEhSKSwyPT09c3RhdGUpcmV0dXJuIGpxWEhSO2ZpcmVHbG9iYWxzPWpRdWVyeS5ldmVudCYmcy5nbG9iYWwsZmlyZUdsb2JhbHMmJjA9PT1qUXVlcnkuYWN0aXZlKysmJmpRdWVyeS5ldmVudC50cmlnZ2VyKFwiYWpheFN0YXJ0XCIpLHMudHlwZT1zLnR5cGUudG9VcHBlckNhc2UoKSxzLmhhc0NvbnRlbnQ9IXJub0NvbnRlbnQudGVzdChzLnR5cGUpLGNhY2hlVVJMPXMudXJsLHMuaGFzQ29udGVudHx8KHMuZGF0YSYmKGNhY2hlVVJMPXMudXJsKz0ocnF1ZXJ5LnRlc3QoY2FjaGVVUkwpP1wiJlwiOlwiP1wiKStzLmRhdGEsZGVsZXRlIHMuZGF0YSkscy5jYWNoZT09PSExJiYocy51cmw9cnRzLnRlc3QoY2FjaGVVUkwpP2NhY2hlVVJMLnJlcGxhY2UocnRzLFwiJDFfPVwiK25vbmNlKyspOmNhY2hlVVJMKyhycXVlcnkudGVzdChjYWNoZVVSTCk/XCImXCI6XCI/XCIpK1wiXz1cIitub25jZSsrKSkscy5pZk1vZGlmaWVkJiYoalF1ZXJ5Lmxhc3RNb2RpZmllZFtjYWNoZVVSTF0mJmpxWEhSLnNldFJlcXVlc3RIZWFkZXIoXCJJZi1Nb2RpZmllZC1TaW5jZVwiLGpRdWVyeS5sYXN0TW9kaWZpZWRbY2FjaGVVUkxdKSxqUXVlcnkuZXRhZ1tjYWNoZVVSTF0mJmpxWEhSLnNldFJlcXVlc3RIZWFkZXIoXCJJZi1Ob25lLU1hdGNoXCIsalF1ZXJ5LmV0YWdbY2FjaGVVUkxdKSksKHMuZGF0YSYmcy5oYXNDb250ZW50JiZzLmNvbnRlbnRUeXBlIT09ITF8fG9wdGlvbnMuY29udGVudFR5cGUpJiZqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIscy5jb250ZW50VHlwZSksanFYSFIuc2V0UmVxdWVzdEhlYWRlcihcIkFjY2VwdFwiLHMuZGF0YVR5cGVzWzBdJiZzLmFjY2VwdHNbcy5kYXRhVHlwZXNbMF1dP3MuYWNjZXB0c1tzLmRhdGFUeXBlc1swXV0rKFwiKlwiIT09cy5kYXRhVHlwZXNbMF0/XCIsIFwiK2FsbFR5cGVzK1wiOyBxPTAuMDFcIjpcIlwiKTpzLmFjY2VwdHNbXCIqXCJdKTtmb3IoaSBpbiBzLmhlYWRlcnMpanFYSFIuc2V0UmVxdWVzdEhlYWRlcihpLHMuaGVhZGVyc1tpXSk7aWYocy5iZWZvcmVTZW5kJiYocy5iZWZvcmVTZW5kLmNhbGwoY2FsbGJhY2tDb250ZXh0LGpxWEhSLHMpPT09ITF8fDI9PT1zdGF0ZSkpcmV0dXJuIGpxWEhSLmFib3J0KCk7c3RyQWJvcnQ9XCJhYm9ydFwiO2ZvcihpIGlue3N1Y2Nlc3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9KWpxWEhSW2ldKHNbaV0pO2lmKHRyYW5zcG9ydD1pbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyh0cmFuc3BvcnRzLHMsb3B0aW9ucyxqcVhIUikpe2pxWEhSLnJlYWR5U3RhdGU9MSxmaXJlR2xvYmFscyYmZ2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoXCJhamF4U2VuZFwiLFtqcVhIUixzXSkscy5hc3luYyYmcy50aW1lb3V0PjAmJih0aW1lb3V0VGltZXI9c2V0VGltZW91dChmdW5jdGlvbigpe2pxWEhSLmFib3J0KFwidGltZW91dFwiKX0scy50aW1lb3V0KSk7dHJ5e3N0YXRlPTEsdHJhbnNwb3J0LnNlbmQocmVxdWVzdEhlYWRlcnMsZG9uZSl9Y2F0Y2goZSl7aWYoISgyPnN0YXRlKSl0aHJvdyBlO2RvbmUoLTEsZSl9fWVsc2UgZG9uZSgtMSxcIk5vIFRyYW5zcG9ydFwiKTtyZXR1cm4ganFYSFJ9LGdldEpTT046ZnVuY3Rpb24odXJsLGRhdGEsY2FsbGJhY2spe3JldHVybiBqUXVlcnkuZ2V0KHVybCxkYXRhLGNhbGxiYWNrLFwianNvblwiKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKHVybCxjYWxsYmFjayl7cmV0dXJuIGpRdWVyeS5nZXQodXJsLHZvaWQgMCxjYWxsYmFjayxcInNjcmlwdFwiKX19KSxqUXVlcnkuZWFjaChbXCJnZXRcIixcInBvc3RcIl0sZnVuY3Rpb24oaSxtZXRob2Qpe2pRdWVyeVttZXRob2RdPWZ1bmN0aW9uKHVybCxkYXRhLGNhbGxiYWNrLHR5cGUpe3JldHVybiBqUXVlcnkuaXNGdW5jdGlvbihkYXRhKSYmKHR5cGU9dHlwZXx8Y2FsbGJhY2ssY2FsbGJhY2s9ZGF0YSxkYXRhPXZvaWQgMCksalF1ZXJ5LmFqYXgoe3VybDp1cmwsdHlwZTptZXRob2QsZGF0YVR5cGU6dHlwZSxkYXRhOmRhdGEsc3VjY2VzczpjYWxsYmFja30pfX0pLGpRdWVyeS5fZXZhbFVybD1mdW5jdGlvbih1cmwpe3JldHVybiBqUXVlcnkuYWpheCh7dXJsOnVybCx0eXBlOlwiR0VUXCIsZGF0YVR5cGU6XCJzY3JpcHRcIixhc3luYzohMSxnbG9iYWw6ITEsXCJ0aHJvd3NcIjohMH0pfSxqUXVlcnkuZm4uZXh0ZW5kKHt3cmFwQWxsOmZ1bmN0aW9uKGh0bWwpe2lmKGpRdWVyeS5pc0Z1bmN0aW9uKGh0bWwpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oaSl7alF1ZXJ5KHRoaXMpLndyYXBBbGwoaHRtbC5jYWxsKHRoaXMsaSkpfSk7aWYodGhpc1swXSl7dmFyIHdyYXA9alF1ZXJ5KGh0bWwsdGhpc1swXS5vd25lckRvY3VtZW50KS5lcSgwKS5jbG9uZSghMCk7dGhpc1swXS5wYXJlbnROb2RlJiZ3cmFwLmluc2VydEJlZm9yZSh0aGlzWzBdKSx3cmFwLm1hcChmdW5jdGlvbigpe2Zvcih2YXIgZWxlbT10aGlzO2VsZW0uZmlyc3RDaGlsZCYmMT09PWVsZW0uZmlyc3RDaGlsZC5ub2RlVHlwZTspZWxlbT1lbGVtLmZpcnN0Q2hpbGQ7cmV0dXJuIGVsZW19KS5hcHBlbmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihodG1sKXtyZXR1cm4galF1ZXJ5LmlzRnVuY3Rpb24oaHRtbCk/dGhpcy5lYWNoKGZ1bmN0aW9uKGkpe2pRdWVyeSh0aGlzKS53cmFwSW5uZXIoaHRtbC5jYWxsKHRoaXMsaSkpfSk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHNlbGY9alF1ZXJ5KHRoaXMpLGNvbnRlbnRzPXNlbGYuY29udGVudHMoKTtjb250ZW50cy5sZW5ndGg/Y29udGVudHMud3JhcEFsbChodG1sKTpzZWxmLmFwcGVuZChodG1sKX0pfSx3cmFwOmZ1bmN0aW9uKGh0bWwpe3ZhciBpc0Z1bmN0aW9uPWpRdWVyeS5pc0Z1bmN0aW9uKGh0bWwpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oaSl7alF1ZXJ5KHRoaXMpLndyYXBBbGwoaXNGdW5jdGlvbj9odG1sLmNhbGwodGhpcyxpKTpodG1sKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7alF1ZXJ5Lm5vZGVOYW1lKHRoaXMsXCJib2R5XCIpfHxqUXVlcnkodGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLmVuZCgpfX0pLGpRdWVyeS5leHByLmZpbHRlcnMuaGlkZGVuPWZ1bmN0aW9uKGVsZW0pe3JldHVybiBlbGVtLm9mZnNldFdpZHRoPD0wJiZlbGVtLm9mZnNldEhlaWdodDw9MHx8IXN1cHBvcnQucmVsaWFibGVIaWRkZW5PZmZzZXRzKCkmJlwibm9uZVwiPT09KGVsZW0uc3R5bGUmJmVsZW0uc3R5bGUuZGlzcGxheXx8alF1ZXJ5LmNzcyhlbGVtLFwiZGlzcGxheVwiKSl9LGpRdWVyeS5leHByLmZpbHRlcnMudmlzaWJsZT1mdW5jdGlvbihlbGVtKXtyZXR1cm4halF1ZXJ5LmV4cHIuZmlsdGVycy5oaWRkZW4oZWxlbSl9O3ZhciByMjA9LyUyMC9nLHJicmFja2V0PS9cXFtcXF0kLyxyQ1JMRj0vXFxyP1xcbi9nLHJzdWJtaXR0ZXJUeXBlcz0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2kscnN1Ym1pdHRhYmxlPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTtqUXVlcnkucGFyYW09ZnVuY3Rpb24oYSx0cmFkaXRpb25hbCl7dmFyIHByZWZpeCxzPVtdLGFkZD1mdW5jdGlvbihrZXksdmFsdWUpe3ZhbHVlPWpRdWVyeS5pc0Z1bmN0aW9uKHZhbHVlKT92YWx1ZSgpOm51bGw9PXZhbHVlP1wiXCI6dmFsdWUsc1tzLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGtleSkrXCI9XCIrZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKX07aWYodm9pZCAwPT09dHJhZGl0aW9uYWwmJih0cmFkaXRpb25hbD1qUXVlcnkuYWpheFNldHRpbmdzJiZqUXVlcnkuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsKSxqUXVlcnkuaXNBcnJheShhKXx8YS5qcXVlcnkmJiFqUXVlcnkuaXNQbGFpbk9iamVjdChhKSlqUXVlcnkuZWFjaChhLGZ1bmN0aW9uKCl7YWRkKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9yKHByZWZpeCBpbiBhKWJ1aWxkUGFyYW1zKHByZWZpeCxhW3ByZWZpeF0sdHJhZGl0aW9uYWwsYWRkKTtyZXR1cm4gcy5qb2luKFwiJlwiKS5yZXBsYWNlKHIyMCxcIitcIil9LGpRdWVyeS5mbi5leHRlbmQoe3NlcmlhbGl6ZTpmdW5jdGlvbigpe3JldHVybiBqUXVlcnkucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgZWxlbWVudHM9alF1ZXJ5LnByb3AodGhpcyxcImVsZW1lbnRzXCIpO3JldHVybiBlbGVtZW50cz9qUXVlcnkubWFrZUFycmF5KGVsZW1lbnRzKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIHR5cGU9dGhpcy50eXBlO3JldHVybiB0aGlzLm5hbWUmJiFqUXVlcnkodGhpcykuaXMoXCI6ZGlzYWJsZWRcIikmJnJzdWJtaXR0YWJsZS50ZXN0KHRoaXMubm9kZU5hbWUpJiYhcnN1Ym1pdHRlclR5cGVzLnRlc3QodHlwZSkmJih0aGlzLmNoZWNrZWR8fCFyY2hlY2thYmxlVHlwZS50ZXN0KHR5cGUpKX0pLm1hcChmdW5jdGlvbihpLGVsZW0pe3ZhciB2YWw9alF1ZXJ5KHRoaXMpLnZhbCgpO3JldHVybiBudWxsPT12YWw/bnVsbDpqUXVlcnkuaXNBcnJheSh2YWwpP2pRdWVyeS5tYXAodmFsLGZ1bmN0aW9uKHZhbCl7cmV0dXJue25hbWU6ZWxlbS5uYW1lLHZhbHVlOnZhbC5yZXBsYWNlKHJDUkxGLFwiXFxyXFxuXCIpfX0pOntuYW1lOmVsZW0ubmFtZSx2YWx1ZTp2YWwucmVwbGFjZShyQ1JMRixcIlxcclxcblwiKX19KS5nZXQoKX19KSxqUXVlcnkuYWpheFNldHRpbmdzLnhocj12b2lkIDAhPT13aW5kb3cuQWN0aXZlWE9iamVjdD9mdW5jdGlvbigpe3JldHVybiF0aGlzLmlzTG9jYWwmJi9eKGdldHxwb3N0fGhlYWR8cHV0fGRlbGV0ZXxvcHRpb25zKSQvaS50ZXN0KHRoaXMudHlwZSkmJmNyZWF0ZVN0YW5kYXJkWEhSKCl8fGNyZWF0ZUFjdGl2ZVhIUigpfTpjcmVhdGVTdGFuZGFyZFhIUjt2YXIgeGhySWQ9MCx4aHJDYWxsYmFja3M9e30seGhyU3VwcG9ydGVkPWpRdWVyeS5hamF4U2V0dGluZ3MueGhyKCk7d2luZG93LmF0dGFjaEV2ZW50JiZ3aW5kb3cuYXR0YWNoRXZlbnQoXCJvbnVubG9hZFwiLGZ1bmN0aW9uKCl7Zm9yKHZhciBrZXkgaW4geGhyQ2FsbGJhY2tzKXhockNhbGxiYWNrc1trZXldKHZvaWQgMCwhMCl9KSxzdXBwb3J0LmNvcnM9ISF4aHJTdXBwb3J0ZWQmJlwid2l0aENyZWRlbnRpYWxzXCJpbiB4aHJTdXBwb3J0ZWQseGhyU3VwcG9ydGVkPXN1cHBvcnQuYWpheD0hIXhoclN1cHBvcnRlZCx4aHJTdXBwb3J0ZWQmJmpRdWVyeS5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKG9wdGlvbnMpe2lmKCFvcHRpb25zLmNyb3NzRG9tYWlufHxzdXBwb3J0LmNvcnMpe3ZhciBjYWxsYmFjaztyZXR1cm57c2VuZDpmdW5jdGlvbihoZWFkZXJzLGNvbXBsZXRlKXt2YXIgaSx4aHI9b3B0aW9ucy54aHIoKSxpZD0rK3hocklkO2lmKHhoci5vcGVuKG9wdGlvbnMudHlwZSxvcHRpb25zLnVybCxvcHRpb25zLmFzeW5jLG9wdGlvbnMudXNlcm5hbWUsb3B0aW9ucy5wYXNzd29yZCksb3B0aW9ucy54aHJGaWVsZHMpZm9yKGkgaW4gb3B0aW9ucy54aHJGaWVsZHMpeGhyW2ldPW9wdGlvbnMueGhyRmllbGRzW2ldO29wdGlvbnMubWltZVR5cGUmJnhoci5vdmVycmlkZU1pbWVUeXBlJiZ4aHIub3ZlcnJpZGVNaW1lVHlwZShvcHRpb25zLm1pbWVUeXBlKSxvcHRpb25zLmNyb3NzRG9tYWlufHxoZWFkZXJzW1wiWC1SZXF1ZXN0ZWQtV2l0aFwiXXx8KGhlYWRlcnNbXCJYLVJlcXVlc3RlZC1XaXRoXCJdPVwiWE1MSHR0cFJlcXVlc3RcIik7Zm9yKGkgaW4gaGVhZGVycyl2b2lkIDAhPT1oZWFkZXJzW2ldJiZ4aHIuc2V0UmVxdWVzdEhlYWRlcihpLGhlYWRlcnNbaV0rXCJcIik7eGhyLnNlbmQob3B0aW9ucy5oYXNDb250ZW50JiZvcHRpb25zLmRhdGF8fG51bGwpLGNhbGxiYWNrPWZ1bmN0aW9uKF8saXNBYm9ydCl7dmFyIHN0YXR1cyxzdGF0dXNUZXh0LHJlc3BvbnNlcztpZihjYWxsYmFjayYmKGlzQWJvcnR8fDQ9PT14aHIucmVhZHlTdGF0ZSkpaWYoZGVsZXRlIHhockNhbGxiYWNrc1tpZF0sY2FsbGJhY2s9dm9pZCAwLHhoci5vbnJlYWR5c3RhdGVjaGFuZ2U9alF1ZXJ5Lm5vb3AsaXNBYm9ydCk0IT09eGhyLnJlYWR5U3RhdGUmJnhoci5hYm9ydCgpO2Vsc2V7cmVzcG9uc2VzPXt9LHN0YXR1cz14aHIuc3RhdHVzLFwic3RyaW5nXCI9PXR5cGVvZiB4aHIucmVzcG9uc2VUZXh0JiYocmVzcG9uc2VzLnRleHQ9eGhyLnJlc3BvbnNlVGV4dCk7dHJ5e3N0YXR1c1RleHQ9eGhyLnN0YXR1c1RleHR9Y2F0Y2goZSl7c3RhdHVzVGV4dD1cIlwifXN0YXR1c3x8IW9wdGlvbnMuaXNMb2NhbHx8b3B0aW9ucy5jcm9zc0RvbWFpbj8xMjIzPT09c3RhdHVzJiYoc3RhdHVzPTIwNCk6c3RhdHVzPXJlc3BvbnNlcy50ZXh0PzIwMDo0MDR9cmVzcG9uc2VzJiZjb21wbGV0ZShzdGF0dXMsc3RhdHVzVGV4dCxyZXNwb25zZXMseGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKX0sb3B0aW9ucy5hc3luYz80PT09eGhyLnJlYWR5U3RhdGU/c2V0VGltZW91dChjYWxsYmFjayk6eGhyLm9ucmVhZHlzdGF0ZWNoYW5nZT14aHJDYWxsYmFja3NbaWRdPWNhbGxiYWNrOmNhbGxiYWNrKCl9LGFib3J0OmZ1bmN0aW9uKCl7Y2FsbGJhY2smJmNhbGxiYWNrKHZvaWQgMCwhMCl9fX19KSxqUXVlcnkuYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6XCJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdFwifSxjb250ZW50czp7c2NyaXB0Oi8oPzpqYXZhfGVjbWEpc2NyaXB0L30sY29udmVydGVyczp7XCJ0ZXh0IHNjcmlwdFwiOmZ1bmN0aW9uKHRleHQpe3JldHVybiBqUXVlcnkuZ2xvYmFsRXZhbCh0ZXh0KSx0ZXh0fX19KSxqUXVlcnkuYWpheFByZWZpbHRlcihcInNjcmlwdFwiLGZ1bmN0aW9uKHMpe3ZvaWQgMD09PXMuY2FjaGUmJihzLmNhY2hlPSExKSxzLmNyb3NzRG9tYWluJiYocy50eXBlPVwiR0VUXCIscy5nbG9iYWw9ITEpfSksalF1ZXJ5LmFqYXhUcmFuc3BvcnQoXCJzY3JpcHRcIixmdW5jdGlvbihzKXtpZihzLmNyb3NzRG9tYWluKXt2YXIgc2NyaXB0LGhlYWQ9ZG9jdW1lbnQuaGVhZHx8alF1ZXJ5KFwiaGVhZFwiKVswXXx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O3JldHVybntzZW5kOmZ1bmN0aW9uKF8sY2FsbGJhY2spe3NjcmlwdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpLHNjcmlwdC5hc3luYz0hMCxzLnNjcmlwdENoYXJzZXQmJihzY3JpcHQuY2hhcnNldD1zLnNjcmlwdENoYXJzZXQpLHNjcmlwdC5zcmM9cy51cmwsc2NyaXB0Lm9ubG9hZD1zY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKF8saXNBYm9ydCl7KGlzQWJvcnR8fCFzY3JpcHQucmVhZHlTdGF0ZXx8L2xvYWRlZHxjb21wbGV0ZS8udGVzdChzY3JpcHQucmVhZHlTdGF0ZSkpJiYoc2NyaXB0Lm9ubG9hZD1zY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsc2NyaXB0LnBhcmVudE5vZGUmJnNjcmlwdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNjcmlwdCksc2NyaXB0PW51bGwsaXNBYm9ydHx8Y2FsbGJhY2soMjAwLFwic3VjY2Vzc1wiKSl9LGhlYWQuaW5zZXJ0QmVmb3JlKHNjcmlwdCxoZWFkLmZpcnN0Q2hpbGQpfSxhYm9ydDpmdW5jdGlvbigpe3NjcmlwdCYmc2NyaXB0Lm9ubG9hZCh2b2lkIDAsITApfX19fSk7dmFyIG9sZENhbGxiYWNrcz1bXSxyanNvbnA9Lyg9KVxcPyg/PSZ8JCl8XFw/XFw/LztqUXVlcnkuYWpheFNldHVwKHtqc29ucDpcImNhbGxiYWNrXCIsanNvbnBDYWxsYmFjazpmdW5jdGlvbigpe3ZhciBjYWxsYmFjaz1vbGRDYWxsYmFja3MucG9wKCl8fGpRdWVyeS5leHBhbmRvK1wiX1wiK25vbmNlKys7cmV0dXJuIHRoaXNbY2FsbGJhY2tdPSEwLGNhbGxiYWNrfX0pLGpRdWVyeS5hamF4UHJlZmlsdGVyKFwianNvbiBqc29ucFwiLGZ1bmN0aW9uKHMsb3JpZ2luYWxTZXR0aW5ncyxqcVhIUil7dmFyIGNhbGxiYWNrTmFtZSxvdmVyd3JpdHRlbixyZXNwb25zZUNvbnRhaW5lcixqc29uUHJvcD1zLmpzb25wIT09ITEmJihyanNvbnAudGVzdChzLnVybCk/XCJ1cmxcIjpcInN0cmluZ1wiPT10eXBlb2Ygcy5kYXRhJiYhKHMuY29udGVudFR5cGV8fFwiXCIpLmluZGV4T2YoXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIikmJnJqc29ucC50ZXN0KHMuZGF0YSkmJlwiZGF0YVwiKTtyZXR1cm4ganNvblByb3B8fFwianNvbnBcIj09PXMuZGF0YVR5cGVzWzBdPyhjYWxsYmFja05hbWU9cy5qc29ucENhbGxiYWNrPWpRdWVyeS5pc0Z1bmN0aW9uKHMuanNvbnBDYWxsYmFjayk/cy5qc29ucENhbGxiYWNrKCk6cy5qc29ucENhbGxiYWNrLGpzb25Qcm9wP3NbanNvblByb3BdPXNbanNvblByb3BdLnJlcGxhY2Uocmpzb25wLFwiJDFcIitjYWxsYmFja05hbWUpOnMuanNvbnAhPT0hMSYmKHMudXJsKz0ocnF1ZXJ5LnRlc3Qocy51cmwpP1wiJlwiOlwiP1wiKStzLmpzb25wK1wiPVwiK2NhbGxiYWNrTmFtZSkscy5jb252ZXJ0ZXJzW1wic2NyaXB0IGpzb25cIl09ZnVuY3Rpb24oKXtyZXR1cm4gcmVzcG9uc2VDb250YWluZXJ8fGpRdWVyeS5lcnJvcihjYWxsYmFja05hbWUrXCIgd2FzIG5vdCBjYWxsZWRcIikscmVzcG9uc2VDb250YWluZXJbMF19LHMuZGF0YVR5cGVzWzBdPVwianNvblwiLG92ZXJ3cml0dGVuPXdpbmRvd1tjYWxsYmFja05hbWVdLHdpbmRvd1tjYWxsYmFja05hbWVdPWZ1bmN0aW9uKCl7cmVzcG9uc2VDb250YWluZXI9YXJndW1lbnRzfSxqcVhIUi5hbHdheXMoZnVuY3Rpb24oKXt3aW5kb3dbY2FsbGJhY2tOYW1lXT1vdmVyd3JpdHRlbixzW2NhbGxiYWNrTmFtZV0mJihzLmpzb25wQ2FsbGJhY2s9b3JpZ2luYWxTZXR0aW5ncy5qc29ucENhbGxiYWNrLG9sZENhbGxiYWNrcy5wdXNoKGNhbGxiYWNrTmFtZSkpLHJlc3BvbnNlQ29udGFpbmVyJiZqUXVlcnkuaXNGdW5jdGlvbihvdmVyd3JpdHRlbikmJm92ZXJ3cml0dGVuKHJlc3BvbnNlQ29udGFpbmVyWzBdKSxyZXNwb25zZUNvbnRhaW5lcj1vdmVyd3JpdHRlbj12b2lkIDB9KSxcInNjcmlwdFwiKTp2b2lkIDB9KSxqUXVlcnkucGFyc2VIVE1MPWZ1bmN0aW9uKGRhdGEsY29udGV4dCxrZWVwU2NyaXB0cyl7aWYoIWRhdGF8fFwic3RyaW5nXCIhPXR5cGVvZiBkYXRhKXJldHVybiBudWxsO1wiYm9vbGVhblwiPT10eXBlb2YgY29udGV4dCYmKGtlZXBTY3JpcHRzPWNvbnRleHQsY29udGV4dD0hMSksY29udGV4dD1jb250ZXh0fHxkb2N1bWVudDt2YXIgcGFyc2VkPXJzaW5nbGVUYWcuZXhlYyhkYXRhKSxzY3JpcHRzPSFrZWVwU2NyaXB0cyYmW107cmV0dXJuIHBhcnNlZD9bY29udGV4dC5jcmVhdGVFbGVtZW50KHBhcnNlZFsxXSldOihwYXJzZWQ9alF1ZXJ5LmJ1aWxkRnJhZ21lbnQoW2RhdGFdLGNvbnRleHQsc2NyaXB0cyksc2NyaXB0cyYmc2NyaXB0cy5sZW5ndGgmJmpRdWVyeShzY3JpcHRzKS5yZW1vdmUoKSxqUXVlcnkubWVyZ2UoW10scGFyc2VkLmNoaWxkTm9kZXMpKX07dmFyIF9sb2FkPWpRdWVyeS5mbi5sb2FkO2pRdWVyeS5mbi5sb2FkPWZ1bmN0aW9uKHVybCxwYXJhbXMsY2FsbGJhY2spe2lmKFwic3RyaW5nXCIhPXR5cGVvZiB1cmwmJl9sb2FkKXJldHVybiBfbG9hZC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIHNlbGVjdG9yLHJlc3BvbnNlLHR5cGUsc2VsZj10aGlzLG9mZj11cmwuaW5kZXhPZihcIiBcIik7cmV0dXJuIG9mZj49MCYmKHNlbGVjdG9yPWpRdWVyeS50cmltKHVybC5zbGljZShvZmYsdXJsLmxlbmd0aCkpLHVybD11cmwuc2xpY2UoMCxvZmYpKSxqUXVlcnkuaXNGdW5jdGlvbihwYXJhbXMpPyhjYWxsYmFjaz1wYXJhbXMscGFyYW1zPXZvaWQgMCk6cGFyYW1zJiZcIm9iamVjdFwiPT10eXBlb2YgcGFyYW1zJiYodHlwZT1cIlBPU1RcIiksc2VsZi5sZW5ndGg+MCYmalF1ZXJ5LmFqYXgoe3VybDp1cmwsdHlwZTp0eXBlLGRhdGFUeXBlOlwiaHRtbFwiLGRhdGE6cGFyYW1zfSkuZG9uZShmdW5jdGlvbihyZXNwb25zZVRleHQpe3Jlc3BvbnNlPWFyZ3VtZW50cyxzZWxmLmh0bWwoc2VsZWN0b3I/alF1ZXJ5KFwiPGRpdj5cIikuYXBwZW5kKGpRdWVyeS5wYXJzZUhUTUwocmVzcG9uc2VUZXh0KSkuZmluZChzZWxlY3Rvcik6cmVzcG9uc2VUZXh0KX0pLmNvbXBsZXRlKGNhbGxiYWNrJiZmdW5jdGlvbihqcVhIUixzdGF0dXMpe3NlbGYuZWFjaChjYWxsYmFjayxyZXNwb25zZXx8W2pxWEhSLnJlc3BvbnNlVGV4dCxzdGF0dXMsanFYSFJdKX0pLHRoaXN9LGpRdWVyeS5lYWNoKFtcImFqYXhTdGFydFwiLFwiYWpheFN0b3BcIixcImFqYXhDb21wbGV0ZVwiLFwiYWpheEVycm9yXCIsXCJhamF4U3VjY2Vzc1wiLFwiYWpheFNlbmRcIl0sZnVuY3Rpb24oaSx0eXBlKXtqUXVlcnkuZm5bdHlwZV09ZnVuY3Rpb24oZm4pe3JldHVybiB0aGlzLm9uKHR5cGUsZm4pfX0pLGpRdWVyeS5leHByLmZpbHRlcnMuYW5pbWF0ZWQ9ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGpRdWVyeS5ncmVwKGpRdWVyeS50aW1lcnMsZnVuY3Rpb24oZm4pe3JldHVybiBlbGVtPT09Zm4uZWxlbX0pLmxlbmd0aH07dmFyIGRvY0VsZW09d2luZG93LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtqUXVlcnkub2Zmc2V0PXtzZXRPZmZzZXQ6ZnVuY3Rpb24oZWxlbSxvcHRpb25zLGkpe3ZhciBjdXJQb3NpdGlvbixjdXJMZWZ0LGN1ckNTU1RvcCxjdXJUb3AsY3VyT2Zmc2V0LGN1ckNTU0xlZnQsY2FsY3VsYXRlUG9zaXRpb24scG9zaXRpb249alF1ZXJ5LmNzcyhlbGVtLFwicG9zaXRpb25cIiksY3VyRWxlbT1qUXVlcnkoZWxlbSkscHJvcHM9e307XCJzdGF0aWNcIj09PXBvc2l0aW9uJiYoZWxlbS5zdHlsZS5wb3NpdGlvbj1cInJlbGF0aXZlXCIpLGN1ck9mZnNldD1jdXJFbGVtLm9mZnNldCgpLGN1ckNTU1RvcD1qUXVlcnkuY3NzKGVsZW0sXCJ0b3BcIiksY3VyQ1NTTGVmdD1qUXVlcnkuY3NzKGVsZW0sXCJsZWZ0XCIpLGNhbGN1bGF0ZVBvc2l0aW9uPShcImFic29sdXRlXCI9PT1wb3NpdGlvbnx8XCJmaXhlZFwiPT09cG9zaXRpb24pJiZqUXVlcnkuaW5BcnJheShcImF1dG9cIixbY3VyQ1NTVG9wLGN1ckNTU0xlZnRdKT4tMSxjYWxjdWxhdGVQb3NpdGlvbj8oY3VyUG9zaXRpb249Y3VyRWxlbS5wb3NpdGlvbigpLGN1clRvcD1jdXJQb3NpdGlvbi50b3AsY3VyTGVmdD1jdXJQb3NpdGlvbi5sZWZ0KTooY3VyVG9wPXBhcnNlRmxvYXQoY3VyQ1NTVG9wKXx8MCxjdXJMZWZ0PXBhcnNlRmxvYXQoY3VyQ1NTTGVmdCl8fDApLGpRdWVyeS5pc0Z1bmN0aW9uKG9wdGlvbnMpJiYob3B0aW9ucz1vcHRpb25zLmNhbGwoZWxlbSxpLGN1ck9mZnNldCkpLG51bGwhPW9wdGlvbnMudG9wJiYocHJvcHMudG9wPW9wdGlvbnMudG9wLWN1ck9mZnNldC50b3ArY3VyVG9wKSxudWxsIT1vcHRpb25zLmxlZnQmJihwcm9wcy5sZWZ0PW9wdGlvbnMubGVmdC1jdXJPZmZzZXQubGVmdCtjdXJMZWZ0KSxcInVzaW5nXCJpbiBvcHRpb25zP29wdGlvbnMudXNpbmcuY2FsbChlbGVtLHByb3BzKTpjdXJFbGVtLmNzcyhwcm9wcyl9fSxqUXVlcnkuZm4uZXh0ZW5kKHtvZmZzZXQ6ZnVuY3Rpb24ob3B0aW9ucyl7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09b3B0aW9ucz90aGlzOnRoaXMuZWFjaChmdW5jdGlvbihpKXtqUXVlcnkub2Zmc2V0LnNldE9mZnNldCh0aGlzLG9wdGlvbnMsaSl9KTt2YXIgZG9jRWxlbSx3aW4sYm94PXt0b3A6MCxsZWZ0OjB9LGVsZW09dGhpc1swXSxkb2M9ZWxlbSYmZWxlbS5vd25lckRvY3VtZW50O2lmKGRvYylyZXR1cm4gZG9jRWxlbT1kb2MuZG9jdW1lbnRFbGVtZW50LGpRdWVyeS5jb250YWlucyhkb2NFbGVtLGVsZW0pPyh0eXBlb2YgZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QhPT1zdHJ1bmRlZmluZWQmJihib3g9ZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksd2luPWdldFdpbmRvdyhkb2MpLHt0b3A6Ym94LnRvcCsod2luLnBhZ2VZT2Zmc2V0fHxkb2NFbGVtLnNjcm9sbFRvcCktKGRvY0VsZW0uY2xpZW50VG9wfHwwKSxsZWZ0OmJveC5sZWZ0Kyh3aW4ucGFnZVhPZmZzZXR8fGRvY0VsZW0uc2Nyb2xsTGVmdCktKGRvY0VsZW0uY2xpZW50TGVmdHx8MCl9KTpib3h9LHBvc2l0aW9uOmZ1bmN0aW9uKCl7aWYodGhpc1swXSl7dmFyIG9mZnNldFBhcmVudCxvZmZzZXQscGFyZW50T2Zmc2V0PXt0b3A6MCxsZWZ0OjB9LGVsZW09dGhpc1swXTtyZXR1cm5cImZpeGVkXCI9PT1qUXVlcnkuY3NzKGVsZW0sXCJwb3NpdGlvblwiKT9vZmZzZXQ9ZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKToob2Zmc2V0UGFyZW50PXRoaXMub2Zmc2V0UGFyZW50KCksb2Zmc2V0PXRoaXMub2Zmc2V0KCksalF1ZXJ5Lm5vZGVOYW1lKG9mZnNldFBhcmVudFswXSxcImh0bWxcIil8fChwYXJlbnRPZmZzZXQ9b2Zmc2V0UGFyZW50Lm9mZnNldCgpKSxwYXJlbnRPZmZzZXQudG9wKz1qUXVlcnkuY3NzKG9mZnNldFBhcmVudFswXSxcImJvcmRlclRvcFdpZHRoXCIsITApLHBhcmVudE9mZnNldC5sZWZ0Kz1qUXVlcnkuY3NzKG9mZnNldFBhcmVudFswXSxcImJvcmRlckxlZnRXaWR0aFwiLCEwKSkse3RvcDpvZmZzZXQudG9wLXBhcmVudE9mZnNldC50b3AtalF1ZXJ5LmNzcyhlbGVtLFwibWFyZ2luVG9wXCIsITApLGxlZnQ6b2Zmc2V0LmxlZnQtcGFyZW50T2Zmc2V0LmxlZnQtalF1ZXJ5LmNzcyhlbGVtLFwibWFyZ2luTGVmdFwiLCEwKX19fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtmb3IodmFyIG9mZnNldFBhcmVudD10aGlzLm9mZnNldFBhcmVudHx8ZG9jRWxlbTtvZmZzZXRQYXJlbnQmJiFqUXVlcnkubm9kZU5hbWUob2Zmc2V0UGFyZW50LFwiaHRtbFwiKSYmXCJzdGF0aWNcIj09PWpRdWVyeS5jc3Mob2Zmc2V0UGFyZW50LFwicG9zaXRpb25cIik7KW9mZnNldFBhcmVudD1vZmZzZXRQYXJlbnQub2Zmc2V0UGFyZW50O3JldHVybiBvZmZzZXRQYXJlbnR8fGRvY0VsZW19KX19KSxqUXVlcnkuZWFjaCh7c2Nyb2xsTGVmdDpcInBhZ2VYT2Zmc2V0XCIsc2Nyb2xsVG9wOlwicGFnZVlPZmZzZXRcIn0sZnVuY3Rpb24obWV0aG9kLHByb3Ape3ZhciB0b3A9L1kvLnRlc3QocHJvcCk7alF1ZXJ5LmZuW21ldGhvZF09ZnVuY3Rpb24odmFsKXtyZXR1cm4gYWNjZXNzKHRoaXMsZnVuY3Rpb24oZWxlbSxtZXRob2QsdmFsKXt2YXIgd2luPWdldFdpbmRvdyhlbGVtKTtyZXR1cm4gdm9pZCAwPT09dmFsP3dpbj9wcm9wIGluIHdpbj93aW5bcHJvcF06d2luLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFttZXRob2RdOmVsZW1bbWV0aG9kXTp2b2lkKHdpbj93aW4uc2Nyb2xsVG8odG9wP2pRdWVyeSh3aW4pLnNjcm9sbExlZnQoKTp2YWwsdG9wP3ZhbDpqUXVlcnkod2luKS5zY3JvbGxUb3AoKSk6ZWxlbVttZXRob2RdPXZhbCl9LG1ldGhvZCx2YWwsYXJndW1lbnRzLmxlbmd0aCxudWxsKX19KSxqUXVlcnkuZWFjaChbXCJ0b3BcIixcImxlZnRcIl0sZnVuY3Rpb24oaSxwcm9wKXtqUXVlcnkuY3NzSG9va3NbcHJvcF09YWRkR2V0SG9va0lmKHN1cHBvcnQucGl4ZWxQb3NpdGlvbixmdW5jdGlvbihlbGVtLGNvbXB1dGVkKXtyZXR1cm4gY29tcHV0ZWQ/KGNvbXB1dGVkPWN1ckNTUyhlbGVtLHByb3ApLHJudW1ub25weC50ZXN0KGNvbXB1dGVkKT9qUXVlcnkoZWxlbSkucG9zaXRpb24oKVtwcm9wXStcInB4XCI6Y29tcHV0ZWQpOnZvaWQgMH0pfSksalF1ZXJ5LmVhY2goe0hlaWdodDpcImhlaWdodFwiLFdpZHRoOlwid2lkdGhcIn0sZnVuY3Rpb24obmFtZSx0eXBlKXtqUXVlcnkuZWFjaCh7cGFkZGluZzpcImlubmVyXCIrbmFtZSxjb250ZW50OnR5cGUsXCJcIjpcIm91dGVyXCIrbmFtZX0sZnVuY3Rpb24oZGVmYXVsdEV4dHJhLGZ1bmNOYW1lKXtqUXVlcnkuZm5bZnVuY05hbWVdPWZ1bmN0aW9uKG1hcmdpbix2YWx1ZSl7dmFyIGNoYWluYWJsZT1hcmd1bWVudHMubGVuZ3RoJiYoZGVmYXVsdEV4dHJhfHxcImJvb2xlYW5cIiE9dHlwZW9mIG1hcmdpbiksZXh0cmE9ZGVmYXVsdEV4dHJhfHwobWFyZ2luPT09ITB8fHZhbHVlPT09ITA/XCJtYXJnaW5cIjpcImJvcmRlclwiKTtyZXR1cm4gYWNjZXNzKHRoaXMsZnVuY3Rpb24oZWxlbSx0eXBlLHZhbHVlKXt2YXIgZG9jO3JldHVybiBqUXVlcnkuaXNXaW5kb3coZWxlbSk/ZWxlbS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbXCJjbGllbnRcIituYW1lXTo5PT09ZWxlbS5ub2RlVHlwZT8oZG9jPWVsZW0uZG9jdW1lbnRFbGVtZW50LE1hdGgubWF4KGVsZW0uYm9keVtcInNjcm9sbFwiK25hbWVdLGRvY1tcInNjcm9sbFwiK25hbWVdLGVsZW0uYm9keVtcIm9mZnNldFwiK25hbWVdLGRvY1tcIm9mZnNldFwiK25hbWVdLGRvY1tcImNsaWVudFwiK25hbWVdKSk6dm9pZCAwPT09dmFsdWU/alF1ZXJ5LmNzcyhlbGVtLHR5cGUsZXh0cmEpOmpRdWVyeS5zdHlsZShlbGVtLHR5cGUsdmFsdWUsZXh0cmEpfSx0eXBlLGNoYWluYWJsZT9tYXJnaW46dm9pZCAwLGNoYWluYWJsZSxudWxsKX19KX0pLGpRdWVyeS5mbi5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RofSxqUXVlcnkuZm4uYW5kU2VsZj1qUXVlcnkuZm4uYWRkQmFjayxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQmJmRlZmluZShcImpxdWVyeVwiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIGpRdWVyeX0pO3ZhciBfalF1ZXJ5PXdpbmRvdy5qUXVlcnksXyQ9d2luZG93LiQ7cmV0dXJuIGpRdWVyeS5ub0NvbmZsaWN0PWZ1bmN0aW9uKGRlZXApe3JldHVybiB3aW5kb3cuJD09PWpRdWVyeSYmKHdpbmRvdy4kPV8kKSxkZWVwJiZ3aW5kb3cualF1ZXJ5PT09alF1ZXJ5JiYod2luZG93LmpRdWVyeT1falF1ZXJ5KSxqUXVlcnl9LHR5cGVvZiBub0dsb2JhbD09PXN0cnVuZGVmaW5lZCYmKHdpbmRvdy5qUXVlcnk9d2luZG93LiQ9alF1ZXJ5KSxqUXVlcnl9KTsiXSwibWFwcGluZ3MiOiI7O0FBQUEsQ0FBQyxVQUFTQSxNQUFNLEVBQUNDLE9BQU8sRUFBQztFQUFDLFFBQVEsSUFBRSxPQUFPQyxNQUFNLElBQUUsUUFBUSxJQUFFLE9BQU9BLE1BQU0sQ0FBQ0MsT0FBTyxHQUFDRCxNQUFNLENBQUNDLE9BQU8sR0FBQ0gsTUFBTSxDQUFDSSxRQUFRLEdBQUNILE9BQU8sQ0FBQ0QsTUFBTSxFQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBU0ssQ0FBQyxFQUFDO0lBQUMsSUFBRyxDQUFDQSxDQUFDLENBQUNELFFBQVEsRUFBQyxNQUFNLElBQUlFLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQztJQUFDLE9BQU9MLE9BQU8sQ0FBQ0ksQ0FBQyxDQUFDO0VBQUEsQ0FBQyxHQUFDSixPQUFPLENBQUNELE1BQU0sQ0FBQztBQUFBLENBQUMsQ0FBQyxXQUFXLElBQUUsT0FBT08sTUFBTSxHQUFDQSxNQUFNLFNBQUssRUFBQyxVQUFTQSxNQUFNLEVBQUNDLFFBQVEsRUFBQztFQUFDLFNBQVNDLFdBQVdBLENBQUNDLEdBQUcsRUFBQztJQUFDLElBQUlDLE1BQU0sR0FBQyxRQUFRLElBQUdELEdBQUcsSUFBRUEsR0FBRyxDQUFDQyxNQUFNO01BQUNDLElBQUksR0FBQ0MsTUFBTSxDQUFDRCxJQUFJLENBQUNGLEdBQUcsQ0FBQztJQUFDLE9BQU0sVUFBVSxLQUFHRSxJQUFJLElBQUVDLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDSixHQUFHLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEtBQUdBLEdBQUcsQ0FBQ0ssUUFBUSxJQUFFSixNQUFNLEdBQUMsQ0FBQyxDQUFDLEdBQUMsT0FBTyxLQUFHQyxJQUFJLElBQUUsQ0FBQyxLQUFHRCxNQUFNLElBQUUsUUFBUSxJQUFFLE9BQU9BLE1BQU0sSUFBRUEsTUFBTSxHQUFDLENBQUMsSUFBRUEsTUFBTSxHQUFDLENBQUMsSUFBSUQsR0FBRztFQUFBO0VBQUMsU0FBU00sTUFBTUEsQ0FBQ0MsUUFBUSxFQUFDQyxTQUFTLEVBQUNDLEdBQUcsRUFBQztJQUFDLElBQUdOLE1BQU0sQ0FBQ08sVUFBVSxDQUFDRixTQUFTLENBQUMsRUFBQyxPQUFPTCxNQUFNLENBQUNRLElBQUksQ0FBQ0osUUFBUSxFQUFDLFVBQVNLLElBQUksRUFBQ0MsQ0FBQyxFQUFDO01BQUMsT0FBTSxDQUFDLENBQUNMLFNBQVMsQ0FBQ00sSUFBSSxDQUFDRixJQUFJLEVBQUNDLENBQUMsRUFBQ0QsSUFBSSxDQUFDLEtBQUdILEdBQUc7SUFBQSxDQUFDLENBQUM7SUFBQyxJQUFHRCxTQUFTLENBQUNILFFBQVEsRUFBQyxPQUFPRixNQUFNLENBQUNRLElBQUksQ0FBQ0osUUFBUSxFQUFDLFVBQVNLLElBQUksRUFBQztNQUFDLE9BQU9BLElBQUksS0FBR0osU0FBUyxLQUFHQyxHQUFHO0lBQUEsQ0FBQyxDQUFDO0lBQUMsSUFBRyxRQUFRLElBQUUsT0FBT0QsU0FBUyxFQUFDO01BQUMsSUFBR08sU0FBUyxDQUFDQyxJQUFJLENBQUNSLFNBQVMsQ0FBQyxFQUFDLE9BQU9MLE1BQU0sQ0FBQ2MsTUFBTSxDQUFDVCxTQUFTLEVBQUNELFFBQVEsRUFBQ0UsR0FBRyxDQUFDO01BQUNELFNBQVMsR0FBQ0wsTUFBTSxDQUFDYyxNQUFNLENBQUNULFNBQVMsRUFBQ0QsUUFBUSxDQUFDO0lBQUE7SUFBQyxPQUFPSixNQUFNLENBQUNRLElBQUksQ0FBQ0osUUFBUSxFQUFDLFVBQVNLLElBQUksRUFBQztNQUFDLE9BQU9ULE1BQU0sQ0FBQ2UsT0FBTyxDQUFDTixJQUFJLEVBQUNKLFNBQVMsQ0FBQyxJQUFFLENBQUMsS0FBR0MsR0FBRztJQUFBLENBQUMsQ0FBQztFQUFBO0VBQUMsU0FBU1UsT0FBT0EsQ0FBQ0MsR0FBRyxFQUFDQyxHQUFHLEVBQUM7SUFBQyxHQUFHRCxHQUFHLEdBQUNBLEdBQUcsQ0FBQ0MsR0FBRyxDQUFDLENBQUMsUUFBTUQsR0FBRyxJQUFFLENBQUMsS0FB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
|