// EXPORTS __webpack_require__.d(__webpack_exports__, { K5: () => (/* reexport */ DefaultIdentityProviderConfig), oH: () => (/* reexport */ NoAuthSigner), zV: () => (/* reexport */ doesIdentityRequireRefresh), tZ: () => (/* reexport */ getHttpAuthSchemeEndpointRuleSetPlugin), aZ: () => (/* reexport */ getHttpSigningPlugin), BP: () => (/* reexport */ isIdentityExpired), CU: () => (/* reexport */ memoizeIdentityProvider), $E: () => (/* reexport */ normalizeProvider), hr: () => (/* reexport */ setFeature) }); // UNUSED EXPORTS: EXPIRATION_MS, HttpApiKeyAuthSigner, HttpBearerAuthSigner, createIsIdentityExpiredFunction, createPaginator, getHttpAuthSchemePlugin, getSmithyContext, httpAuthSchemeEndpointRuleSetMiddlewareOptions, httpAuthSchemeMiddleware, httpAuthSchemeMiddlewareOptions, httpSigningMiddleware, httpSigningMiddlewareOptions, requestBuilder // EXTERNAL MODULE: ./node_modules/@smithy/types/dist-es/index.js + 11 modules var dist_es = __webpack_require__(8428); ;// CONCATENATED MODULE: ./node_modules/@smithy/core/dist-es/getSmithyContext.js const getSmithyContext = (context) => context[SMITHY_CONTEXT_KEY] || (context[SMITHY_CONTEXT_KEY] = {}); // EXTERNAL MODULE: ./node_modules/@smithy/util-middleware/dist-es/index.js + 2 modules var util_middleware_dist_es = __webpack_require__(8530); ;// CONCATENATED MODULE: ./node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/httpAuthSchemeMiddleware.js function convertHttpAuthSchemesToMap(httpAuthSchemes) { const map = new Map(); for (const scheme of httpAuthSchemes) { map.set(scheme.schemeId, scheme); } return map; } const httpAuthSchemeMiddleware_httpAuthSchemeMiddleware = (config, mwOptions) => (next, context) => async (args) => { const options = config.httpAuthSchemeProvider(await mwOptions.httpAuthSchemeParametersProvider(config, context, args.input)); const authSchemes = convertHttpAuthSchemesToMap(config.httpAuthSchemes); const smithyContext = (0,util_middleware_dist_es/* getSmithyContext */.J)(context); const failureReasons = []; for (const option of options) { const scheme = authSchemes.get(option.schemeId); if (!scheme) { failureReasons.push(`HttpAuthScheme \`${option.schemeId}\` was not enabled for this service.`); continue; } const identityProvider = scheme.identityProvider(await mwOptions.identityProviderConfigProvider(config)); if (!identityProvider) { failureReasons.push(`HttpAuthScheme \`${option.schemeId}\` did not have an IdentityProvider configured.`); continue; } const { identityProperties = {}, signingProperties = {} } = option.propertiesExtractor?.(config, context) || {}; option.identityProperties = Object.assign(option.identityProperties || {}, identityProperties); option.signingProperties = Object.assign(option.signingProperties || {}, signingProperties); smithyContext.selectedHttpAuthScheme = { httpAuthOption: option, identity: await identityProvider(option.identityProperties), signer: scheme.signer, }; break; } if (!smithyContext.selectedHttpAuthScheme) { throw new Error(failureReasons.join("\n")); } return next(args); }; ;// CONCATENATED MODULE: ./node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.js const httpAuthSchemeEndpointRuleSetMiddlewareOptions = { step: "serialize", tags: ["HTTP_AUTH_SCHEME"], name: "httpAuthSchemeMiddleware", override: true, relation: "before", toMiddleware: "endpointV2Middleware", }; const getHttpAuthSchemeEndpointRuleSetPlugin = (config, { httpAuthSchemeParametersProvider, identityProviderConfigProvider, }) => ({ applyToStack: (clientStack) => { clientStack.addRelativeTo(httpAuthSchemeMiddleware_httpAuthSchemeMiddleware(config, { httpAuthSchemeParametersProvider, identityProviderConfigProvider, }), httpAuthSchemeEndpointRuleSetMiddlewareOptions); }, }); // EXTERNAL MODULE: ./node_modules/@smithy/middleware-serde/dist-es/index.js + 3 modules var middleware_serde_dist_es = __webpack_require__(9649); ;// CONCATENATED MODULE: ./node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/getHttpAuthSchemePlugin.js const httpAuthSchemeMiddlewareOptions = { step: "serialize", tags: ["HTTP_AUTH_SCHEME"], name: "httpAuthSchemeMiddleware", override: true, relation: "before", toMiddleware: middleware_serde_dist_es/* serializerMiddlewareOption */.JK.name, }; const getHttpAuthSchemePlugin = (config, { httpAuthSchemeParametersProvider, identityProviderConfigProvider, }) => ({ applyToStack: (clientStack) => { clientStack.addRelativeTo(httpAuthSchemeMiddleware(config, { httpAuthSchemeParametersProvider, identityProviderConfigProvider, }), httpAuthSchemeMiddlewareOptions); }, }); ;// CONCATENATED MODULE: ./node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/index.js // EXTERNAL MODULE: ./node_modules/@smithy/protocol-http/dist-es/index.js + 5 modules var protocol_http_dist_es = __webpack_require__(6580); ;// CONCATENATED MODULE: ./node_modules/@smithy/core/dist-es/middleware-http-signing/httpSigningMiddleware.js const defaultErrorHandler = (signingProperties) => (error) => { throw error; }; const defaultSuccessHandler = (httpResponse, signingProperties) => { }; const httpSigningMiddleware = (config) => (next, context) => async (args) => { if (!protocol_http_dist_es/* HttpRequest */.aW.isInstance(args.request)) { return next(args); } const smithyContext = (0,util_middleware_dist_es/* getSmithyContext */.J)(context); const scheme = smithyContext.selectedHttpAuthScheme; if (!scheme) { throw new Error(`No HttpAuthScheme was selected: unable to sign request`); } const { httpAuthOption: { signingProperties = {} }, identity, signer, } = scheme; const output = await next({ ...args, request: await signer.sign(args.request, identity, signingProperties), }).catch((signer.errorHandler || defaultErrorHandler)(signingProperties)); (signer.successHandler || defaultSuccessHandler)(output.response, signingProperties); return output; }; ;// CONCATENATED MODULE: ./node_modules/@smithy/core/dist-es/middleware-http-signing/getHttpSigningMiddleware.js const httpSigningMiddlewareOptions = { step: "finalizeRequest", tags: ["HTTP_SIGNING"], name: "httpSigningMiddleware", aliases: ["apiKeyMiddleware", "tokenMiddleware", "awsAuthMiddleware"], override: true, relation: "after", toMiddleware: "retryMiddleware", }; const getHttpSigningPlugin = (config) => ({ applyToStack: (clientStack) => { clientStack.addRelativeTo(httpSigningMiddleware(config), httpSigningMiddlewareOptions); }, }); ;// CONCATENATED MODULE: ./node_modules/@smithy/core/dist-es/middleware-http-signing/index.js ;// CONCATENATED MODULE: ./node_modules/@smithy/core/dist-es/normalizeProvider.js const normalizeProvider = (input) => { if (typeof input === "function") return input; const promisified = Promise.resolve(input); return () => promisified; }; // EXTERNAL MODULE: ./node_modules/@smithy/core/dist-es/submodules/protocols/index.js + 8 modules var protocols = __webpack_require__(6136); ;// CONCATENATED MODULE: ./node_modules/@smithy/core/dist-es/protocols/requestBuilder.js ;// CONCATENATED MODULE: ./node_modules/@smithy/core/dist-es/setFeature.js function setFeature(context, feature, value) { if (!context.__smithy_context) { context.__smithy_context = { features: {}, }; } else if (!context.__smithy_context.features) { context.__smithy_context.features = {}; } context.__smithy_context.features[feature] = value; } ;// CONCATENATED MODULE: ./node_modules/@smithy/core/dist-es/util-identity-and-auth/DefaultIdentityProviderConfig.js class DefaultIdentityProviderConfig { constructor(config) { this.authSchemes = new Map(); for (const [key, value] of Object.entries(config)) { if (value !== undefined) { this.authSchemes.set(key, value); } } } getIdentityProvider(schemeId) { return this.authSchemes.get(schemeId); } } ;// CONCATENATED MODULE: ./node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.js class HttpApiKeyAuthSigner { async sign(httpRequest, identity, signingProperties) { if (!signingProperties) { throw new Error("request could not be signed with `apiKey` since the `name` and `in` signer properties are missing"); } if (!signingProperties.name) { throw new Error("request could not be signed with `apiKey` since the `name` signer property is missing"); } if (!signingProperties.in) { throw new Error("request could not be signed with `apiKey` since the `in` signer property is missing"); } if (!identity.apiKey) { throw new Error("request could not be signed with `apiKey` since the `apiKey` is not defined"); } const clonedRequest = HttpRequest.clone(httpRequest); if (signingProperties.in === HttpApiKeyAuthLocation.QUERY) { clonedRequest.query[signingProperties.name] = identity.apiKey; } else if (signingProperties.in === HttpApiKeyAuthLocation.HEADER) { clonedRequest.headers[signingProperties.name] = signingProperties.scheme ? `${signingProperties.scheme} ${identity.apiKey}` : identity.apiKey; } else { throw new Error("request can only be signed with `apiKey` locations `query` or `header`, " + "but found: `" + signingProperties.in + "`"); } return clonedRequest; } } ;// CONCATENATED MODULE: ./node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.js class HttpBearerAuthSigner { async sign(httpRequest, identity, signingProperties) { const clonedRequest = HttpRequest.clone(httpRequest); if (!identity.token) { throw new Error("request could not be signed with `token` since the `token` is not defined"); } clonedRequest.headers["Authorization"] = `Bearer ${identity.token}`; return clonedRequest; } } ;// CONCATENATED MODULE: ./node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/noAuth.js class NoAuthSigner { async sign(httpRequest, identity, signingProperties) { return httpRequest; } } ;// CONCATENATED MODULE: ./node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/index.js ;// CONCATENATED MODULE: ./node_modules/@smithy/core/dist-es/util-identity-and-auth/memoizeIdentityProvider.js const createIsIdentityExpiredFunction = (expirationMs) => (identity) => doesIdentityRequireRefresh(identity) && identity.expiration.getTime() - Date.now() < expirationMs; const EXPIRATION_MS = 300000; const isIdentityExpired = createIsIdentityExpiredFunction(EXPIRATION_MS); const doesIdentityRequireRefresh = (identity) => identity.expiration !== undefined; const memoizeIdentityProvider = (provider, isExpired, requiresRefresh) => { if (provider === undefined) { return undefined; } const normalizedProvider = typeof provider !== "function" ? async () => Promise.resolve(provider) : provider; let resolved; let pending; let hasResult; let isConstant = false; const coalesceProvider = async (options) => { if (!pending) { pending = normalizedProvider(options); } try { resolved = await pending; hasResult = true; isConstant = false; } finally { pending = undefined; } return resolved; }; if (isExpired === undefined) { return async (options) => { if (!hasResult || options?.forceRefresh) { resolved = await coalesceProvider(options); } return resolved; }; } return async (options) => { if (!hasResult || options?.forceRefresh) { resolved = await coalesceProvider(options); } if (isConstant) { return resolved; } if (!requiresRefresh(resolved)) { isConstant = true; return resolved; } if (isExpired(resolved)) { await coalesceProvider(options); return resolved; } return resolved; }; }; ;// CONCATENATED MODULE: ./node_modules/@smithy/core/dist-es/util-identity-and-auth/index.js ;// CONCATENATED MODULE: ./node_modules/@smithy/core/dist-es/index.js //# sourceURL=[module] //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDc2MS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTs7Ozs7QUNEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDdkNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDaEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDakJBO0FBQ0E7QUFDQTs7Ozs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ3ZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ2RBO0FBQ0E7OztBQ0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNMQTs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDVkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ1pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNqQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDVkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDSkE7QUFDQTtBQUNBOzs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNwREE7QUFDQTtBQUNBOzs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbWF0dHJ6LWN4LWxpYnJhcnkvLi9ub2RlX21vZHVsZXMvQHNtaXRoeS9jb3JlL2Rpc3QtZXMvZ2V0U21pdGh5Q29udGV4dC5qcz80NzI5Iiwid2VicGFjazovL21hdHRyei1jeC1saWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL0BzbWl0aHkvY29yZS9kaXN0LWVzL21pZGRsZXdhcmUtaHR0cC1hdXRoLXNjaGVtZS9odHRwQXV0aFNjaGVtZU1pZGRsZXdhcmUuanM/ZjJmNSIsIndlYnBhY2s6Ly9tYXR0cnotY3gtbGlicmFyeS8uL25vZGVfbW9kdWxlcy9Ac21pdGh5L2NvcmUvZGlzdC1lcy9taWRkbGV3YXJlLWh0dHAtYXV0aC1zY2hlbWUvZ2V0SHR0cEF1dGhTY2hlbWVFbmRwb2ludFJ1bGVTZXRQbHVnaW4uanM/NDNkNyIsIndlYnBhY2s6Ly9tYXR0cnotY3gtbGlicmFyeS8uL25vZGVfbW9kdWxlcy9Ac21pdGh5L2NvcmUvZGlzdC1lcy9taWRkbGV3YXJlLWh0dHAtYXV0aC1zY2hlbWUvZ2V0SHR0cEF1dGhTY2hlbWVQbHVnaW4uanM/YTQ5YiIsIndlYnBhY2s6Ly9tYXR0cnotY3gtbGlicmFyeS8uL25vZGVfbW9kdWxlcy9Ac21pdGh5L2NvcmUvZGlzdC1lcy9taWRkbGV3YXJlLWh0dHAtYXV0aC1zY2hlbWUvaW5kZXguanM/ODFiMiIsIndlYnBhY2s6Ly9tYXR0cnotY3gtbGlicmFyeS8uL25vZGVfbW9kdWxlcy9Ac21pdGh5L2NvcmUvZGlzdC1lcy9taWRkbGV3YXJlLWh0dHAtc2lnbmluZy9odHRwU2lnbmluZ01pZGRsZXdhcmUuanM/NGNjZSIsIndlYnBhY2s6Ly9tYXR0cnotY3gtbGlicmFyeS8uL25vZGVfbW9kdWxlcy9Ac21pdGh5L2NvcmUvZGlzdC1lcy9taWRkbGV3YXJlLWh0dHAtc2lnbmluZy9nZXRIdHRwU2lnbmluZ01pZGRsZXdhcmUuanM/M2ZjOSIsIndlYnBhY2s6Ly9tYXR0cnotY3gtbGlicmFyeS8uL25vZGVfbW9kdWxlcy9Ac21pdGh5L2NvcmUvZGlzdC1lcy9taWRkbGV3YXJlLWh0dHAtc2lnbmluZy9pbmRleC5qcz83OGI1Iiwid2VicGFjazovL21hdHRyei1jeC1saWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL0BzbWl0aHkvY29yZS9kaXN0LWVzL25vcm1hbGl6ZVByb3ZpZGVyLmpzPzVjMzIiLCJ3ZWJwYWNrOi8vbWF0dHJ6LWN4LWxpYnJhcnkvLi9ub2RlX21vZHVsZXMvQHNtaXRoeS9jb3JlL2Rpc3QtZXMvcHJvdG9jb2xzL3JlcXVlc3RCdWlsZGVyLmpzPzVkZmMiLCJ3ZWJwYWNrOi8vbWF0dHJ6LWN4LWxpYnJhcnkvLi9ub2RlX21vZHVsZXMvQHNtaXRoeS9jb3JlL2Rpc3QtZXMvc2V0RmVhdHVyZS5qcz82NDg4Iiwid2VicGFjazovL21hdHRyei1jeC1saWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL0BzbWl0aHkvY29yZS9kaXN0LWVzL3V0aWwtaWRlbnRpdHktYW5kLWF1dGgvRGVmYXVsdElkZW50aXR5UHJvdmlkZXJDb25maWcuanM/ZDU4YyIsIndlYnBhY2s6Ly9tYXR0cnotY3gtbGlicmFyeS8uL25vZGVfbW9kdWxlcy9Ac21pdGh5L2NvcmUvZGlzdC1lcy91dGlsLWlkZW50aXR5LWFuZC1hdXRoL2h0dHBBdXRoU2NoZW1lcy9odHRwQXBpS2V5QXV0aC5qcz80MmFhIiwid2VicGFjazovL21hdHRyei1jeC1saWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL0BzbWl0aHkvY29yZS9kaXN0LWVzL3V0aWwtaWRlbnRpdHktYW5kLWF1dGgvaHR0cEF1dGhTY2hlbWVzL2h0dHBCZWFyZXJBdXRoLmpzPzY1NWEiLCJ3ZWJwYWNrOi8vbWF0dHJ6LWN4LWxpYnJhcnkvLi9ub2RlX21vZHVsZXMvQHNtaXRoeS9jb3JlL2Rpc3QtZXMvdXRpbC1pZGVudGl0eS1hbmQtYXV0aC9odHRwQXV0aFNjaGVtZXMvbm9BdXRoLmpzP2Y4OTciLCJ3ZWJwYWNrOi8vbWF0dHJ6LWN4LWxpYnJhcnkvLi9ub2RlX21vZHVsZXMvQHNtaXRoeS9jb3JlL2Rpc3QtZXMvdXRpbC1pZGVudGl0eS1hbmQtYXV0aC9odHRwQXV0aFNjaGVtZXMvaW5kZXguanM/ZDI1ZCIsIndlYnBhY2s6Ly9tYXR0cnotY3gtbGlicmFyeS8uL25vZGVfbW9kdWxlcy9Ac21pdGh5L2NvcmUvZGlzdC1lcy91dGlsLWlkZW50aXR5LWFuZC1hdXRoL21lbW9pemVJZGVudGl0eVByb3ZpZGVyLmpzPzRiNGEiLCJ3ZWJwYWNrOi8vbWF0dHJ6LWN4LWxpYnJhcnkvLi9ub2RlX21vZHVsZXMvQHNtaXRoeS9jb3JlL2Rpc3QtZXMvdXRpbC1pZGVudGl0eS1hbmQtYXV0aC9pbmRleC5qcz9jMmEyIiwid2VicGFjazovL21hdHRyei1jeC1saWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL0BzbWl0aHkvY29yZS9kaXN0LWVzL2luZGV4LmpzP2NlYmQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU01JVEhZX0NPTlRFWFRfS0VZIH0gZnJvbSBcIkBzbWl0aHkvdHlwZXNcIjtcbmV4cG9ydCBjb25zdCBnZXRTbWl0aHlDb250ZXh0ID0gKGNvbnRleHQpID0+IGNvbnRleHRbU01JVEhZX0NPTlRFWFRfS0VZXSB8fCAoY29udGV4dFtTTUlUSFlfQ09OVEVYVF9LRVldID0ge30pO1xuIiwiaW1wb3J0IHsgU01JVEhZX0NPTlRFWFRfS0VZLCB9IGZyb20gXCJAc21pdGh5L3R5cGVzXCI7XG5pbXBvcnQgeyBnZXRTbWl0aHlDb250ZXh0IH0gZnJvbSBcIkBzbWl0aHkvdXRpbC1taWRkbGV3YXJlXCI7XG5mdW5jdGlvbiBjb252ZXJ0SHR0cEF1dGhTY2hlbWVzVG9NYXAoaHR0cEF1dGhTY2hlbWVzKSB7XG4gICAgY29uc3QgbWFwID0gbmV3IE1hcCgpO1xuICAgIGZvciAoY29uc3Qgc2NoZW1lIG9mIGh0dHBBdXRoU2NoZW1lcykge1xuICAgICAgICBtYXAuc2V0KHNjaGVtZS5zY2hlbWVJZCwgc2NoZW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hcDtcbn1cbmV4cG9ydCBjb25zdCBodHRwQXV0aFNjaGVtZU1pZGRsZXdhcmUgPSAoY29uZmlnLCBtd09wdGlvbnMpID0+IChuZXh0LCBjb250ZXh0KSA9PiBhc3luYyAoYXJncykgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBjb25maWcuaHR0cEF1dGhTY2hlbWVQcm92aWRlcihhd2FpdCBtd09wdGlvbnMuaHR0cEF1dGhTY2hlbWVQYXJhbWV0ZXJzUHJvdmlkZXIoY29uZmlnLCBjb250ZXh0LCBhcmdzLmlucHV0KSk7XG4gICAgY29uc3QgYXV0aFNjaGVtZXMgPSBjb252ZXJ0SHR0cEF1dGhTY2hlbWVzVG9NYXAoY29uZmlnLmh0dHBBdXRoU2NoZW1lcyk7XG4gICAgY29uc3Qgc21pdGh5Q29udGV4dCA9IGdldFNtaXRoeUNvbnRleHQoY29udGV4dCk7XG4gICAgY29uc3QgZmFpbHVyZVJlYXNvbnMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHNjaGVtZSA9IGF1dGhTY2hlbWVzLmdldChvcHRpb24uc2NoZW1lSWQpO1xuICAgICAgICBpZiAoIXNjaGVtZSkge1xuICAgICAgICAgICAgZmFpbHVyZVJlYXNvbnMucHVzaChgSHR0cEF1dGhTY2hlbWUgXFxgJHtvcHRpb24uc2NoZW1lSWR9XFxgIHdhcyBub3QgZW5hYmxlZCBmb3IgdGhpcyBzZXJ2aWNlLmApO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaWRlbnRpdHlQcm92aWRlciA9IHNjaGVtZS5pZGVudGl0eVByb3ZpZGVyKGF3YWl0IG13T3B0aW9ucy5pZGVudGl0eVByb3ZpZGVyQ29uZmlnUHJvdmlkZXIoY29uZmlnKSk7XG4gICAgICAgIGlmICghaWRlbnRpdHlQcm92aWRlcikge1xuICAgICAgICAgICAgZmFpbHVyZVJlYXNvbnMucHVzaChgSHR0cEF1dGhTY2hlbWUgXFxgJHtvcHRpb24uc2NoZW1lSWR9XFxgIGRpZCBub3QgaGF2ZSBhbiBJZGVudGl0eVByb3ZpZGVyIGNvbmZpZ3VyZWQuYCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IGlkZW50aXR5UHJvcGVydGllcyA9IHt9LCBzaWduaW5nUHJvcGVydGllcyA9IHt9IH0gPSBvcHRpb24ucHJvcGVydGllc0V4dHJhY3Rvcj8uKGNvbmZpZywgY29udGV4dCkgfHwge307XG4gICAgICAgIG9wdGlvbi5pZGVudGl0eVByb3BlcnRpZXMgPSBPYmplY3QuYXNzaWduKG9wdGlvbi5pZGVudGl0eVByb3BlcnRpZXMgfHwge30sIGlkZW50aXR5UHJvcGVydGllcyk7XG4gICAgICAgIG9wdGlvbi5zaWduaW5nUHJvcGVydGllcyA9IE9iamVjdC5hc3NpZ24ob3B0aW9uLnNpZ25pbmdQcm9wZXJ0aWVzIHx8IHt9LCBzaWduaW5nUHJvcGVydGllcyk7XG4gICAgICAgIHNtaXRoeUNvbnRleHQuc2VsZWN0ZWRIdHRwQXV0aFNjaGVtZSA9IHtcbiAgICAgICAgICAgIGh0dHBBdXRoT3B0aW9uOiBvcHRpb24sXG4gICAgICAgICAgICBpZGVudGl0eTogYXdhaXQgaWRlbnRpdHlQcm92aWRlcihvcHRpb24uaWRlbnRpdHlQcm9wZXJ0aWVzKSxcbiAgICAgICAgICAgIHNpZ25lcjogc2NoZW1lLnNpZ25lcixcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmICghc21pdGh5Q29udGV4dC5zZWxlY3RlZEh0dHBBdXRoU2NoZW1lKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihmYWlsdXJlUmVhc29ucy5qb2luKFwiXFxuXCIpKTtcbiAgICB9XG4gICAgcmV0dXJuIG5leHQoYXJncyk7XG59O1xuIiwiaW1wb3J0IHsgaHR0cEF1dGhTY2hlbWVNaWRkbGV3YXJlIH0gZnJvbSBcIi4vaHR0cEF1dGhTY2hlbWVNaWRkbGV3YXJlXCI7XG5leHBvcnQgY29uc3QgaHR0cEF1dGhTY2hlbWVFbmRwb2ludFJ1bGVTZXRNaWRkbGV3YXJlT3B0aW9ucyA9IHtcbiAgICBzdGVwOiBcInNlcmlhbGl6ZVwiLFxuICAgIHRhZ3M6IFtcIkhUVFBfQVVUSF9TQ0hFTUVcIl0sXG4gICAgbmFtZTogXCJodHRwQXV0aFNjaGVtZU1pZGRsZXdhcmVcIixcbiAgICBvdmVycmlkZTogdHJ1ZSxcbiAgICByZWxhdGlvbjogXCJiZWZvcmVcIixcbiAgICB0b01pZGRsZXdhcmU6IFwiZW5kcG9pbnRWMk1pZGRsZXdhcmVcIixcbn07XG5leHBvcnQgY29uc3QgZ2V0SHR0cEF1dGhTY2hlbWVFbmRwb2ludFJ1bGVTZXRQbHVnaW4gPSAoY29uZmlnLCB7IGh0dHBBdXRoU2NoZW1lUGFyYW1ldGVyc1Byb3ZpZGVyLCBpZGVudGl0eVByb3ZpZGVyQ29uZmlnUHJvdmlkZXIsIH0pID0+ICh7XG4gICAgYXBwbHlUb1N0YWNrOiAoY2xpZW50U3RhY2spID0+IHtcbiAgICAgICAgY2xpZW50U3RhY2suYWRkUmVsYXRpdmVUbyhodHRwQXV0aFNjaGVtZU1pZGRsZXdhcmUoY29uZmlnLCB7XG4gICAgICAgICAgICBodHRwQXV0aFNjaGVtZVBhcmFtZXRlcnNQcm92aWRlcixcbiAgICAgICAgICAgIGlkZW50aXR5UHJvdmlkZXJDb25maWdQcm92aWRlcixcbiAgICAgICAgfSksIGh0dHBBdXRoU2NoZW1lRW5kcG9pbnRSdWxlU2V0TWlkZGxld2FyZU9wdGlvbnMpO1xuICAgIH0sXG59KTtcbiIsImltcG9ydCB7IHNlcmlhbGl6ZXJNaWRkbGV3YXJlT3B0aW9uIH0gZnJvbSBcIkBzbWl0aHkvbWlkZGxld2FyZS1zZXJkZVwiO1xuaW1wb3J0IHsgaHR0cEF1dGhTY2hlbWVNaWRkbGV3YXJlIH0gZnJvbSBcIi4vaHR0cEF1dGhTY2hlbWVNaWRkbGV3YXJlXCI7XG5leHBvcnQgY29uc3QgaHR0cEF1dGhTY2hlbWVNaWRkbGV3YXJlT3B0aW9ucyA9IHtcbiAgICBzdGVwOiBcInNlcmlhbGl6ZVwiLFxuICAgIHRhZ3M6IFtcIkhUVFBfQVVUSF9TQ0hFTUVcIl0sXG4gICAgbmFtZTogXCJodHRwQXV0aFNjaGVtZU1pZGRsZXdhcmVcIixcbiAgICBvdmVycmlkZTogdHJ1ZSxcbiAgICByZWxhdGlvbjogXCJiZWZvcmVcIixcbiAgICB0b01pZGRsZXdhcmU6IHNlcmlhbGl6ZXJNaWRkbGV3YXJlT3B0aW9uLm5hbWUsXG59O1xuZXhwb3J0IGNvbnN0IGdldEh0dHBBdXRoU2NoZW1lUGx1Z2luID0gKGNvbmZpZywgeyBodHRwQXV0aFNjaGVtZVBhcmFtZXRlcnNQcm92aWRlciwgaWRlbnRpdHlQcm92aWRlckNvbmZpZ1Byb3ZpZGVyLCB9KSA9PiAoe1xuICAgIGFwcGx5VG9TdGFjazogKGNsaWVudFN0YWNrKSA9PiB7XG4gICAgICAgIGNsaWVudFN0YWNrLmFkZFJlbGF0aXZlVG8oaHR0cEF1dGhTY2hlbWVNaWRkbGV3YXJlKGNvbmZpZywge1xuICAgICAgICAgICAgaHR0cEF1dGhTY2hlbWVQYXJhbWV0ZXJzUHJvdmlkZXIsXG4gICAgICAgICAgICBpZGVudGl0eVByb3ZpZGVyQ29uZmlnUHJvdmlkZXIsXG4gICAgICAgIH0pLCBodHRwQXV0aFNjaGVtZU1pZGRsZXdhcmVPcHRpb25zKTtcbiAgICB9LFxufSk7XG4iLCJleHBvcnQgKiBmcm9tIFwiLi9odHRwQXV0aFNjaGVtZU1pZGRsZXdhcmVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2dldEh0dHBBdXRoU2NoZW1lRW5kcG9pbnRSdWxlU2V0UGx1Z2luXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9nZXRIdHRwQXV0aFNjaGVtZVBsdWdpblwiO1xuIiwiaW1wb3J0IHsgSHR0cFJlcXVlc3QgfSBmcm9tIFwiQHNtaXRoeS9wcm90b2NvbC1odHRwXCI7XG5pbXBvcnQgeyBTTUlUSFlfQ09OVEVYVF9LRVksIH0gZnJvbSBcIkBzbWl0aHkvdHlwZXNcIjtcbmltcG9ydCB7IGdldFNtaXRoeUNvbnRleHQgfSBmcm9tIFwiQHNtaXRoeS91dGlsLW1pZGRsZXdhcmVcIjtcbmNvbnN0IGRlZmF1bHRFcnJvckhhbmRsZXIgPSAoc2lnbmluZ1Byb3BlcnRpZXMpID0+IChlcnJvcikgPT4ge1xuICAgIHRocm93IGVycm9yO1xufTtcbmNvbnN0IGRlZmF1bHRTdWNjZXNzSGFuZGxlciA9IChodHRwUmVzcG9uc2UsIHNpZ25pbmdQcm9wZXJ0aWVzKSA9PiB7IH07XG5leHBvcnQgY29uc3QgaHR0cFNpZ25pbmdNaWRkbGV3YXJlID0gKGNvbmZpZykgPT4gKG5leHQsIGNvbnRleHQpID0+IGFzeW5jIChhcmdzKSA9PiB7XG4gICAgaWYgKCFIdHRwUmVxdWVzdC5pc0luc3RhbmNlKGFyZ3MucmVxdWVzdCkpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoYXJncyk7XG4gICAgfVxuICAgIGNvbnN0IHNtaXRoeUNvbnRleHQgPSBnZXRTbWl0aHlDb250ZXh0KGNvbnRleHQpO1xuICAgIGNvbnN0IHNjaGVtZSA9IHNtaXRoeUNvbnRleHQuc2VsZWN0ZWRIdHRwQXV0aFNjaGVtZTtcbiAgICBpZiAoIXNjaGVtZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIEh0dHBBdXRoU2NoZW1lIHdhcyBzZWxlY3RlZDogdW5hYmxlIHRvIHNpZ24gcmVxdWVzdGApO1xuICAgIH1cbiAgICBjb25zdCB7IGh0dHBBdXRoT3B0aW9uOiB7IHNpZ25pbmdQcm9wZXJ0aWVzID0ge30gfSwgaWRlbnRpdHksIHNpZ25lciwgfSA9IHNjaGVtZTtcbiAgICBjb25zdCBvdXRwdXQgPSBhd2FpdCBuZXh0KHtcbiAgICAgICAgLi4uYXJncyxcbiAgICAgICAgcmVxdWVzdDogYXdhaXQgc2lnbmVyLnNpZ24oYXJncy5yZXF1ZXN0LCBpZGVudGl0eSwgc2lnbmluZ1Byb3BlcnRpZXMpLFxuICAgIH0pLmNhdGNoKChzaWduZXIuZXJyb3JIYW5kbGVyIHx8IGRlZmF1bHRFcnJvckhhbmRsZXIpKHNpZ25pbmdQcm9wZXJ0aWVzKSk7XG4gICAgKHNpZ25lci5zdWNjZXNzSGFuZGxlciB8fCBkZWZhdWx0U3VjY2Vzc0hhbmRsZXIpKG91dHB1dC5yZXNwb25zZSwgc2lnbmluZ1Byb3BlcnRpZXMpO1xuICAgIHJldHVybiBvdXRwdXQ7XG59O1xuIiwiaW1wb3J0IHsgaHR0cFNpZ25pbmdNaWRkbGV3YXJlIH0gZnJvbSBcIi4vaHR0cFNpZ25pbmdNaWRkbGV3YXJlXCI7XG5leHBvcnQgY29uc3QgaHR0cFNpZ25pbmdNaWRkbGV3YXJlT3B0aW9ucyA9IHtcbiAgICBzdGVwOiBcImZpbmFsaXplUmVxdWVzdFwiLFxuICAgIHRhZ3M6IFtcIkhUVFBfU0lHTklOR1wiXSxcbiAgICBuYW1lOiBcImh0dHBTaWduaW5nTWlkZGxld2FyZVwiLFxuICAgIGFsaWFzZXM6IFtcImFwaUtleU1pZGRsZXdhcmVcIiwgXCJ0b2tlbk1pZGRsZXdhcmVcIiwgXCJhd3NBdXRoTWlkZGxld2FyZVwiXSxcbiAgICBvdmVycmlkZTogdHJ1ZSxcbiAgICByZWxhdGlvbjogXCJhZnRlclwiLFxuICAgIHRvTWlkZGxld2FyZTogXCJyZXRyeU1pZGRsZXdhcmVcIixcbn07XG5leHBvcnQgY29uc3QgZ2V0SHR0cFNpZ25pbmdQbHVnaW4gPSAoY29uZmlnKSA9PiAoe1xuICAgIGFwcGx5VG9TdGFjazogKGNsaWVudFN0YWNrKSA9PiB7XG4gICAgICAgIGNsaWVudFN0YWNrLmFkZFJlbGF0aXZlVG8oaHR0cFNpZ25pbmdNaWRkbGV3YXJlKGNvbmZpZyksIGh0dHBTaWduaW5nTWlkZGxld2FyZU9wdGlvbnMpO1xuICAgIH0sXG59KTtcbiIsImV4cG9ydCAqIGZyb20gXCIuL2h0dHBTaWduaW5nTWlkZGxld2FyZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZ2V0SHR0cFNpZ25pbmdNaWRkbGV3YXJlXCI7XG4iLCJleHBvcnQgY29uc3Qgbm9ybWFsaXplUHJvdmlkZXIgPSAoaW5wdXQpID0+IHtcbiAgICBpZiAodHlwZW9mIGlucHV0ID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIHJldHVybiBpbnB1dDtcbiAgICBjb25zdCBwcm9taXNpZmllZCA9IFByb21pc2UucmVzb2x2ZShpbnB1dCk7XG4gICAgcmV0dXJuICgpID0+IHByb21pc2lmaWVkO1xufTtcbiIsImV4cG9ydCB7IHJlcXVlc3RCdWlsZGVyIH0gZnJvbSBcIkBzbWl0aHkvY29yZS9wcm90b2NvbHNcIjtcbiIsImV4cG9ydCBmdW5jdGlvbiBzZXRGZWF0dXJlKGNvbnRleHQsIGZlYXR1cmUsIHZhbHVlKSB7XG4gICAgaWYgKCFjb250ZXh0Ll9fc21pdGh5X2NvbnRleHQpIHtcbiAgICAgICAgY29udGV4dC5fX3NtaXRoeV9jb250ZXh0ID0ge1xuICAgICAgICAgICAgZmVhdHVyZXM6IHt9LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIGlmICghY29udGV4dC5fX3NtaXRoeV9jb250ZXh0LmZlYXR1cmVzKSB7XG4gICAgICAgIGNvbnRleHQuX19zbWl0aHlfY29udGV4dC5mZWF0dXJlcyA9IHt9O1xuICAgIH1cbiAgICBjb250ZXh0Ll9fc21pdGh5X2NvbnRleHQuZmVhdHVyZXNbZmVhdHVyZV0gPSB2YWx1ZTtcbn1cbiIsImV4cG9ydCBjbGFzcyBEZWZhdWx0SWRlbnRpdHlQcm92aWRlckNvbmZpZyB7XG4gICAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgICAgIHRoaXMuYXV0aFNjaGVtZXMgPSBuZXcgTWFwKCk7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGNvbmZpZykpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hdXRoU2NoZW1lcy5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0SWRlbnRpdHlQcm92aWRlcihzY2hlbWVJZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hdXRoU2NoZW1lcy5nZXQoc2NoZW1lSWQpO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IEh0dHBSZXF1ZXN0IH0gZnJvbSBcIkBzbWl0aHkvcHJvdG9jb2wtaHR0cFwiO1xuaW1wb3J0IHsgSHR0cEFwaUtleUF1dGhMb2NhdGlvbiB9IGZyb20gXCJAc21pdGh5L3R5cGVzXCI7XG5leHBvcnQgY2xhc3MgSHR0cEFwaUtleUF1dGhTaWduZXIge1xuICAgIGFzeW5jIHNpZ24oaHR0cFJlcXVlc3QsIGlkZW50aXR5LCBzaWduaW5nUHJvcGVydGllcykge1xuICAgICAgICBpZiAoIXNpZ25pbmdQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJyZXF1ZXN0IGNvdWxkIG5vdCBiZSBzaWduZWQgd2l0aCBgYXBpS2V5YCBzaW5jZSB0aGUgYG5hbWVgIGFuZCBgaW5gIHNpZ25lciBwcm9wZXJ0aWVzIGFyZSBtaXNzaW5nXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc2lnbmluZ1Byb3BlcnRpZXMubmFtZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwicmVxdWVzdCBjb3VsZCBub3QgYmUgc2lnbmVkIHdpdGggYGFwaUtleWAgc2luY2UgdGhlIGBuYW1lYCBzaWduZXIgcHJvcGVydHkgaXMgbWlzc2luZ1wiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNpZ25pbmdQcm9wZXJ0aWVzLmluKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJyZXF1ZXN0IGNvdWxkIG5vdCBiZSBzaWduZWQgd2l0aCBgYXBpS2V5YCBzaW5jZSB0aGUgYGluYCBzaWduZXIgcHJvcGVydHkgaXMgbWlzc2luZ1wiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlkZW50aXR5LmFwaUtleSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwicmVxdWVzdCBjb3VsZCBub3QgYmUgc2lnbmVkIHdpdGggYGFwaUtleWAgc2luY2UgdGhlIGBhcGlLZXlgIGlzIG5vdCBkZWZpbmVkXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNsb25lZFJlcXVlc3QgPSBIdHRwUmVxdWVzdC5jbG9uZShodHRwUmVxdWVzdCk7XG4gICAgICAgIGlmIChzaWduaW5nUHJvcGVydGllcy5pbiA9PT0gSHR0cEFwaUtleUF1dGhMb2NhdGlvbi5RVUVSWSkge1xuICAgICAgICAgICAgY2xvbmVkUmVxdWVzdC5xdWVyeVtzaWduaW5nUHJvcGVydGllcy5uYW1lXSA9IGlkZW50aXR5LmFwaUtleTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzaWduaW5nUHJvcGVydGllcy5pbiA9PT0gSHR0cEFwaUtleUF1dGhMb2NhdGlvbi5IRUFERVIpIHtcbiAgICAgICAgICAgIGNsb25lZFJlcXVlc3QuaGVhZGVyc1tzaWduaW5nUHJvcGVydGllcy5uYW1lXSA9IHNpZ25pbmdQcm9wZXJ0aWVzLnNjaGVtZVxuICAgICAgICAgICAgICAgID8gYCR7c2lnbmluZ1Byb3BlcnRpZXMuc2NoZW1lfSAke2lkZW50aXR5LmFwaUtleX1gXG4gICAgICAgICAgICAgICAgOiBpZGVudGl0eS5hcGlLZXk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJyZXF1ZXN0IGNhbiBvbmx5IGJlIHNpZ25lZCB3aXRoIGBhcGlLZXlgIGxvY2F0aW9ucyBgcXVlcnlgIG9yIGBoZWFkZXJgLCBcIiArXG4gICAgICAgICAgICAgICAgXCJidXQgZm91bmQ6IGBcIiArXG4gICAgICAgICAgICAgICAgc2lnbmluZ1Byb3BlcnRpZXMuaW4gK1xuICAgICAgICAgICAgICAgIFwiYFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2xvbmVkUmVxdWVzdDtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBIdHRwUmVxdWVzdCB9IGZyb20gXCJAc21pdGh5L3Byb3RvY29sLWh0dHBcIjtcbmV4cG9ydCBjbGFzcyBIdHRwQmVhcmVyQXV0aFNpZ25lciB7XG4gICAgYXN5bmMgc2lnbihodHRwUmVxdWVzdCwgaWRlbnRpdHksIHNpZ25pbmdQcm9wZXJ0aWVzKSB7XG4gICAgICAgIGNvbnN0IGNsb25lZFJlcXVlc3QgPSBIdHRwUmVxdWVzdC5jbG9uZShodHRwUmVxdWVzdCk7XG4gICAgICAgIGlmICghaWRlbnRpdHkudG9rZW4pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInJlcXVlc3QgY291bGQgbm90IGJlIHNpZ25lZCB3aXRoIGB0b2tlbmAgc2luY2UgdGhlIGB0b2tlbmAgaXMgbm90IGRlZmluZWRcIik7XG4gICAgICAgIH1cbiAgICAgICAgY2xvbmVkUmVxdWVzdC5oZWFkZXJzW1wiQXV0aG9yaXphdGlvblwiXSA9IGBCZWFyZXIgJHtpZGVudGl0eS50b2tlbn1gO1xuICAgICAgICByZXR1cm4gY2xvbmVkUmVxdWVzdDtcbiAgICB9XG59XG4iLCJleHBvcnQgY2xhc3MgTm9BdXRoU2lnbmVyIHtcbiAgICBhc3luYyBzaWduKGh0dHBSZXF1ZXN0LCBpZGVudGl0eSwgc2lnbmluZ1Byb3BlcnRpZXMpIHtcbiAgICAgICAgcmV0dXJuIGh0dHBSZXF1ZXN0O1xuICAgIH1cbn1cbiIsImV4cG9ydCAqIGZyb20gXCIuL2h0dHBBcGlLZXlBdXRoXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9odHRwQmVhcmVyQXV0aFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbm9BdXRoXCI7XG4iLCJleHBvcnQgY29uc3QgY3JlYXRlSXNJZGVudGl0eUV4cGlyZWRGdW5jdGlvbiA9IChleHBpcmF0aW9uTXMpID0+IChpZGVudGl0eSkgPT4gZG9lc0lkZW50aXR5UmVxdWlyZVJlZnJlc2goaWRlbnRpdHkpICYmIGlkZW50aXR5LmV4cGlyYXRpb24uZ2V0VGltZSgpIC0gRGF0ZS5ub3coKSA8IGV4cGlyYXRpb25NcztcbmV4cG9ydCBjb25zdCBFWFBJUkFUSU9OX01TID0gMzAwMDAwO1xuZXhwb3J0IGNvbnN0IGlzSWRlbnRpdHlFeHBpcmVkID0gY3JlYXRlSXNJZGVudGl0eUV4cGlyZWRGdW5jdGlvbihFWFBJUkFUSU9OX01TKTtcbmV4cG9ydCBjb25zdCBkb2VzSWRlbnRpdHlSZXF1aXJlUmVmcmVzaCA9IChpZGVudGl0eSkgPT4gaWRlbnRpdHkuZXhwaXJhdGlvbiAhPT0gdW5kZWZpbmVkO1xuZXhwb3J0IGNvbnN0IG1lbW9pemVJZGVudGl0eVByb3ZpZGVyID0gKHByb3ZpZGVyLCBpc0V4cGlyZWQsIHJlcXVpcmVzUmVmcmVzaCkgPT4ge1xuICAgIGlmIChwcm92aWRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IG5vcm1hbGl6ZWRQcm92aWRlciA9IHR5cGVvZiBwcm92aWRlciAhPT0gXCJmdW5jdGlvblwiID8gYXN5bmMgKCkgPT4gUHJvbWlzZS5yZXNvbHZlKHByb3ZpZGVyKSA6IHByb3ZpZGVyO1xuICAgIGxldCByZXNvbHZlZDtcbiAgICBsZXQgcGVuZGluZztcbiAgICBsZXQgaGFzUmVzdWx0O1xuICAgIGxldCBpc0NvbnN0YW50ID0gZmFsc2U7XG4gICAgY29uc3QgY29hbGVzY2VQcm92aWRlciA9IGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICAgIGlmICghcGVuZGluZykge1xuICAgICAgICAgICAgcGVuZGluZyA9IG5vcm1hbGl6ZWRQcm92aWRlcihvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzb2x2ZWQgPSBhd2FpdCBwZW5kaW5nO1xuICAgICAgICAgICAgaGFzUmVzdWx0ID0gdHJ1ZTtcbiAgICAgICAgICAgIGlzQ29uc3RhbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHBlbmRpbmcgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc29sdmVkO1xuICAgIH07XG4gICAgaWYgKGlzRXhwaXJlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgaWYgKCFoYXNSZXN1bHQgfHwgb3B0aW9ucz8uZm9yY2VSZWZyZXNoKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZWQgPSBhd2FpdCBjb2FsZXNjZVByb3ZpZGVyKG9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVkO1xuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgICAgaWYgKCFoYXNSZXN1bHQgfHwgb3B0aW9ucz8uZm9yY2VSZWZyZXNoKSB7XG4gICAgICAgICAgICByZXNvbHZlZCA9IGF3YWl0IGNvYWxlc2NlUHJvdmlkZXIob3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQ29uc3RhbnQpIHtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJlcXVpcmVzUmVmcmVzaChyZXNvbHZlZCkpIHtcbiAgICAgICAgICAgIGlzQ29uc3RhbnQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0V4cGlyZWQocmVzb2x2ZWQpKSB7XG4gICAgICAgICAgICBhd2FpdCBjb2FsZXNjZVByb3ZpZGVyKG9wdGlvbnMpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNvbHZlZDtcbiAgICB9O1xufTtcbiIsImV4cG9ydCAqIGZyb20gXCIuL0RlZmF1bHRJZGVudGl0eVByb3ZpZGVyQ29uZmlnXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9odHRwQXV0aFNjaGVtZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21lbW9pemVJZGVudGl0eVByb3ZpZGVyXCI7XG4iLCJleHBvcnQgKiBmcm9tIFwiLi9nZXRTbWl0aHlDb250ZXh0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9taWRkbGV3YXJlLWh0dHAtYXV0aC1zY2hlbWVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21pZGRsZXdhcmUtaHR0cC1zaWduaW5nXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ub3JtYWxpemVQcm92aWRlclwiO1xuZXhwb3J0IHsgY3JlYXRlUGFnaW5hdG9yIH0gZnJvbSBcIi4vcGFnaW5hdGlvbi9jcmVhdGVQYWdpbmF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Byb3RvY29scy9yZXF1ZXN0QnVpbGRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc2V0RmVhdHVyZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbC1pZGVudGl0eS1hbmQtYXV0aFwiO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9 //# sourceURL=webpack-internal:///4761