UNPKG

ngrx-rtk-query

Version:
66 lines 14.4 kB
import { buildHooks } from './build-hooks'; import { isInfiniteQueryDefinition, isMutationDefinition, isQueryDefinition, } from './types'; import { capitalize, safeAssign } from './utils'; export const angularHooksModuleName = /* @__PURE__ */ Symbol(); /** * Creates a module that generates angular hooks from endpoints, for use with `buildCreateApi`. * * @example * ```ts * const customCreateApi = buildCreateApi( * coreModule(), * angularHooksModule(() => myCreateAngularHooksModule()) * ); * ``` * * @returns A module for use with `buildCreateApi` */ export const angularHooksModule = ({ hooks, createSelector, getInjector, }) => { return { name: angularHooksModuleName, init(api, { serializeQueryArgs }, context) { const anyApi = api; const { buildQueryHooks, buildInfiniteQueryHooks, buildMutationHook, usePrefetch } = buildHooks({ api, moduleOptions: { hooks, createSelector, getInjector }, serializeQueryArgs, context, }); safeAssign(anyApi, { usePrefetch }); safeAssign(anyApi, { dispatch: hooks.dispatch }); safeAssign(anyApi, { selectSignal: hooks.useSelector }); safeAssign(anyApi, { getInjector }); return { injectEndpoint(endpointName, definition) { if (isQueryDefinition(definition)) { const { useQuery, useLazyQuery, useLazyQuerySubscription, useQueryState, useQuerySubscription } = buildQueryHooks(endpointName); safeAssign(anyApi.endpoints[endpointName], { useQuery, useLazyQuery, useLazyQuerySubscription, useQueryState, useQuerySubscription, }); api[`use${capitalize(endpointName)}Query`] = useQuery; api[`useLazy${capitalize(endpointName)}Query`] = useLazyQuery; } if (isMutationDefinition(definition)) { const { useMutation } = buildMutationHook(endpointName); safeAssign(anyApi.endpoints[endpointName], { useMutation }); api[`use${capitalize(endpointName)}Mutation`] = useMutation; } else if (isInfiniteQueryDefinition(definition)) { const { useInfiniteQuery, useInfiniteQuerySubscription, useInfiniteQueryState } = buildInfiniteQueryHooks(endpointName); safeAssign(anyApi.endpoints[endpointName], { useInfiniteQuery, useInfiniteQuerySubscription, useInfiniteQueryState, }); api[`use${capitalize(endpointName)}InfiniteQuery`] = useInfiniteQuery; } }, }; }, }; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmdyeC1ydGstcXVlcnkvY29yZS9zcmMvbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUtMLHlCQUF5QixFQUN6QixvQkFBb0IsRUFDcEIsaUJBQWlCLEdBQ2xCLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWpELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQW9GL0Q7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxFQUNqQyxLQUFLLEVBQ0wsY0FBYyxFQUNkLFdBQVcsR0FDZSxFQUE4QixFQUFFO0lBQzFELE9BQU87UUFDTCxJQUFJLEVBQUUsc0JBQXNCO1FBQzVCLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxFQUFFLE9BQU87WUFDdkMsTUFBTSxNQUFNLEdBQUcsR0FBeUUsQ0FBQztZQUN6RixNQUFNLEVBQUUsZUFBZSxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxHQUFHLFVBQVUsQ0FBQztnQkFDOUYsR0FBRztnQkFDSCxhQUFhLEVBQUUsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRTtnQkFDckQsa0JBQWtCO2dCQUNsQixPQUFPO2FBQ1IsQ0FBQyxDQUFDO1lBQ0gsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDcEMsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUNqRCxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBRXBDLE9BQU87Z0JBQ0wsY0FBYyxDQUFDLFlBQVksRUFBRSxVQUFVO29CQUNyQyxJQUFJLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7d0JBQ2xDLE1BQU0sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLHdCQUF3QixFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxHQUM3RixlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7d0JBQ2hDLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFOzRCQUN6QyxRQUFROzRCQUNSLFlBQVk7NEJBQ1osd0JBQXdCOzRCQUN4QixhQUFhOzRCQUNiLG9CQUFvQjt5QkFDckIsQ0FBQyxDQUFDO3dCQUNGLEdBQVcsQ0FBQyxNQUFNLFVBQVUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFDO3dCQUM5RCxHQUFXLENBQUMsVUFBVSxVQUFVLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLFlBQVksQ0FBQztvQkFDekUsQ0FBQztvQkFDRCxJQUFJLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7d0JBQ3JDLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQzt3QkFDeEQsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO3dCQUMzRCxHQUFXLENBQUMsTUFBTSxVQUFVLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFdBQVcsQ0FBQztvQkFDdkUsQ0FBQzt5QkFBTSxJQUFJLHlCQUF5QixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7d0JBQ2pELE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSw0QkFBNEIsRUFBRSxxQkFBcUIsRUFBRSxHQUM3RSx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsQ0FBQzt3QkFDeEMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUU7NEJBQ3pDLGdCQUFnQjs0QkFDaEIsNEJBQTRCOzRCQUM1QixxQkFBcUI7eUJBQ3RCLENBQUMsQ0FBQzt3QkFDRixHQUFXLENBQUMsTUFBTSxVQUFVLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxHQUFHLGdCQUFnQixDQUFDO29CQUNqRixDQUFDO2dCQUNILENBQUM7YUFDRixDQUFDO1FBQ0osQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEluamVjdG9yLCB0eXBlIFNpZ25hbCwgdHlwZSBWYWx1ZUVxdWFsaXR5Rm4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHR5cGUgQWN0aW9uLCB0eXBlIFNlbGVjdG9yLCB0eXBlIFRodW5rQWN0aW9uIH0gZnJvbSAnQHJlZHV4anMvdG9vbGtpdCc7XG5pbXBvcnQge1xuICB0eXBlIEFwaSxcbiAgdHlwZSBCYXNlUXVlcnlGbixcbiAgdHlwZSBFbmRwb2ludERlZmluaXRpb25zLFxuICB0eXBlIEluZmluaXRlUXVlcnlEZWZpbml0aW9uLFxuICB0eXBlIE1vZHVsZSxcbiAgdHlwZSBNdXRhdGlvbkRlZmluaXRpb24sXG4gIHR5cGUgUHJlZmV0Y2hPcHRpb25zLFxuICB0eXBlIFF1ZXJ5QXJnRnJvbSxcbiAgdHlwZSBRdWVyeURlZmluaXRpb24sXG4gIHR5cGUgUXVlcnlLZXlzLFxufSBmcm9tICdAcmVkdXhqcy90b29sa2l0L3F1ZXJ5JztcblxuaW1wb3J0IHsgYnVpbGRIb29rcyB9IGZyb20gJy4vYnVpbGQtaG9va3MnO1xuaW1wb3J0IHtcbiAgdHlwZSBIb29rc1dpdGhVbmlxdWVOYW1lcyxcbiAgdHlwZSBJbmZpbml0ZVF1ZXJ5SG9va3MsXG4gIHR5cGUgTXV0YXRpb25Ib29rcyxcbiAgdHlwZSBRdWVyeUhvb2tzLFxuICBpc0luZmluaXRlUXVlcnlEZWZpbml0aW9uLFxuICBpc011dGF0aW9uRGVmaW5pdGlvbixcbiAgaXNRdWVyeURlZmluaXRpb24sXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZSwgc2FmZUFzc2lnbiB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgYW5ndWxhckhvb2tzTW9kdWxlTmFtZSA9IC8qIEBfX1BVUkVfXyAqLyBTeW1ib2woKTtcbmV4cG9ydCB0eXBlIEFuZ3VsYXJIb29rc01vZHVsZSA9IHR5cGVvZiBhbmd1bGFySG9va3NNb2R1bGVOYW1lO1xuXG5leHBvcnQgdHlwZSBEaXNwYXRjaCA9IDxSZXR1cm5UeXBlPihcbiAgYWN0aW9uOiBBY3Rpb24gfCBUaHVua0FjdGlvbjxSZXR1cm5UeXBlLCBhbnksIGFueSwgQWN0aW9uPixcbikgPT4gUmV0dXJuVHlwZSBleHRlbmRzIEFjdGlvbiA/IEFjdGlvbiA6IFJldHVyblR5cGU7XG5cbmV4cG9ydCB0eXBlIFVzZVNlbGVjdG9yID0gPEs+KG1hcEZuOiAoc3RhdGU6IGFueSkgPT4gSywgb3B0aW9ucz86IHsgZXF1YWw/OiBWYWx1ZUVxdWFsaXR5Rm48Sz4gfSkgPT4gU2lnbmFsPEs+O1xuXG5kZWNsYXJlIG1vZHVsZSAnQHJlZHV4anMvdG9vbGtpdC9xdWVyeScge1xuICBleHBvcnQgaW50ZXJmYWNlIEFwaU1vZHVsZXM8XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIEJhc2VRdWVyeSBleHRlbmRzIEJhc2VRdWVyeUZuLFxuICAgIERlZmluaXRpb25zIGV4dGVuZHMgRW5kcG9pbnREZWZpbml0aW9ucyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgUmVkdWNlclBhdGggZXh0ZW5kcyBzdHJpbmcsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIFRhZ1R5cGVzIGV4dGVuZHMgc3RyaW5nLFxuICA+IHtcbiAgICBbYW5ndWxhckhvb2tzTW9kdWxlTmFtZV06IHtcbiAgICAgIC8qKlxuICAgICAgICogIEVuZHBvaW50cyBiYXNlZCBvbiB0aGUgaW5wdXQgZW5kcG9pbnRzIHByb3ZpZGVkIHRvIGBjcmVhdGVBcGlgLCBjb250YWluaW5nIGBzZWxlY3RgLCBgaG9va3NgIGFuZCBgYWN0aW9uIG1hdGNoZXJzYC5cbiAgICAgICAqL1xuICAgICAgZW5kcG9pbnRzOiB7XG4gICAgICAgIFtLIGluIGtleW9mIERlZmluaXRpb25zXTogRGVmaW5pdGlvbnNbS10gZXh0ZW5kcyBRdWVyeURlZmluaXRpb248YW55LCBhbnksIGFueSwgYW55LCBhbnk+XG4gICAgICAgICAgPyBRdWVyeUhvb2tzPERlZmluaXRpb25zW0tdPlxuICAgICAgICAgIDogRGVmaW5pdGlvbnNbS10gZXh0ZW5kcyBNdXRhdGlvbkRlZmluaXRpb248YW55LCBhbnksIGFueSwgYW55LCBhbnk+XG4gICAgICAgICAgICA/IE11dGF0aW9uSG9va3M8RGVmaW5pdGlvbnNbS10+XG4gICAgICAgICAgICA6IERlZmluaXRpb25zW0tdIGV4dGVuZHMgSW5maW5pdGVRdWVyeURlZmluaXRpb248YW55LCBhbnksIGFueSwgYW55LCBhbnk+XG4gICAgICAgICAgICAgID8gSW5maW5pdGVRdWVyeUhvb2tzPERlZmluaXRpb25zW0tdPlxuICAgICAgICAgICAgICA6IG5ldmVyO1xuICAgICAgfTtcbiAgICAgIC8qKlxuICAgICAgICogQSBob29rIHRoYXQgYWNjZXB0cyBhIHN0cmluZyBlbmRwb2ludCBuYW1lLCBhbmQgcHJvdmlkZXMgYSBjYWxsYmFjayB0aGF0IHdoZW4gY2FsbGVkLFxuICAgICAgICogcHJlLWZldGNoZXMgdGhlIGRhdGEgZm9yIHRoYXQgZW5kcG9pbnQuXG4gICAgICAgKi9cbiAgICAgIHVzZVByZWZldGNoPEVuZHBvaW50TmFtZSBleHRlbmRzIFF1ZXJ5S2V5czxEZWZpbml0aW9ucz4+KFxuICAgICAgICBlbmRwb2ludE5hbWU6IEVuZHBvaW50TmFtZSxcbiAgICAgICAgb3B0aW9ucz86IFByZWZldGNoT3B0aW9ucyxcbiAgICAgICk6IChhcmc6IFF1ZXJ5QXJnRnJvbTxEZWZpbml0aW9uc1tFbmRwb2ludE5hbWVdPiwgb3B0aW9ucz86IFByZWZldGNoT3B0aW9ucykgPT4gdm9pZDtcbiAgICAgIC8qKlxuICAgICAgICogUHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBhcGkgZGlzcGF0Y2ggZnVuY3Rpb24uXG4gICAgICAgKi9cbiAgICAgIGRpc3BhdGNoOiBEaXNwYXRjaDtcbiAgICAgIC8qKlxuICAgICAgICogUHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBhcGkgc2VsZWN0U2lnbmFsIGZ1bmN0aW9uLlxuICAgICAgICovXG4gICAgICBzZWxlY3RTaWduYWw6IFVzZVNlbGVjdG9yO1xuICAgICAgLyoqXG4gICAgICAgKiBQcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGFwaSBpbmplY3Rvci5cbiAgICAgICAqL1xuICAgICAgZ2V0SW5qZWN0b3I6ICgpID0+IEluamVjdG9yO1xuICAgIH0gJiBIb29rc1dpdGhVbmlxdWVOYW1lczxEZWZpbml0aW9ucz47XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbmd1bGFySG9va3NNb2R1bGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBob29rcyBmcm9tIFJlZHV4IHRvIGJlIHVzZWRcbiAgICovXG4gIGhvb2tzOiB7XG4gICAgLyoqXG4gICAgICogVGhlIHZlcnNpb24gb2YgdGhlIGBkaXNwYXRjaGAgdG8gYmUgdXNlZFxuICAgICAqL1xuICAgIGRpc3BhdGNoOiBEaXNwYXRjaDtcbiAgICAvKipcbiAgICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgYGdldFN0YXRlYCB0byBiZSB1c2VkXG4gICAgICovXG4gICAgZ2V0U3RhdGU6ICgpID0+IGFueTtcbiAgICAvKipcbiAgICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgYHVzZVNlbGVjdG9yYCBob29rIHRvIGJlIHVzZWRcbiAgICAgKi9cbiAgICB1c2VTZWxlY3RvcjogVXNlU2VsZWN0b3I7XG4gIH07XG4gIC8qKlxuICAgKiBBIHNlbGVjdG9yIGNyZWF0b3IgKHVzdWFsbHkgZnJvbSBgcmVzZWxlY3RgLCBvciBtYXRjaGluZyB0aGUgc2FtZSBzaWduYXR1cmUpXG4gICAqL1xuICBjcmVhdGVTZWxlY3RvcjogPFQgPSBhbnksIFYgPSBhbnk+KC4uLmlucHV0OiBhbnlbXSkgPT4gU2VsZWN0b3I8VCwgVj47XG4gIC8qKlxuICAgKiBUaGUgaW5qZWN0b3IgdG8gYmUgdXNlZFxuICAgKi9cbiAgZ2V0SW5qZWN0b3I6ICgpID0+IEluamVjdG9yO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBtb2R1bGUgdGhhdCBnZW5lcmF0ZXMgYW5ndWxhciBob29rcyBmcm9tIGVuZHBvaW50cywgZm9yIHVzZSB3aXRoIGBidWlsZENyZWF0ZUFwaWAuXG4gKlxuICogIEBleGFtcGxlXG4gKiBgYGB0c1xuICogY29uc3QgY3VzdG9tQ3JlYXRlQXBpID0gYnVpbGRDcmVhdGVBcGkoXG4gKiAgIGNvcmVNb2R1bGUoKSxcbiAqICAgYW5ndWxhckhvb2tzTW9kdWxlKCgpID0+IG15Q3JlYXRlQW5ndWxhckhvb2tzTW9kdWxlKCkpXG4gKiApO1xuICogYGBgXG4gKlxuICogQHJldHVybnMgQSBtb2R1bGUgZm9yIHVzZSB3aXRoIGBidWlsZENyZWF0ZUFwaWBcbiAqL1xuZXhwb3J0IGNvbnN0IGFuZ3VsYXJIb29rc01vZHVsZSA9ICh7XG4gIGhvb2tzLFxuICBjcmVhdGVTZWxlY3RvcixcbiAgZ2V0SW5qZWN0b3IsXG59OiBBbmd1bGFySG9va3NNb2R1bGVPcHRpb25zKTogTW9kdWxlPEFuZ3VsYXJIb29rc01vZHVsZT4gPT4ge1xuICByZXR1cm4ge1xuICAgIG5hbWU6IGFuZ3VsYXJIb29rc01vZHVsZU5hbWUsXG4gICAgaW5pdChhcGksIHsgc2VyaWFsaXplUXVlcnlBcmdzIH0sIGNvbnRleHQpIHtcbiAgICAgIGNvbnN0IGFueUFwaSA9IGFwaSBhcyBhbnkgYXMgQXBpPGFueSwgUmVjb3JkPHN0cmluZywgYW55PiwgYW55LCBhbnksIEFuZ3VsYXJIb29rc01vZHVsZT47XG4gICAgICBjb25zdCB7IGJ1aWxkUXVlcnlIb29rcywgYnVpbGRJbmZpbml0ZVF1ZXJ5SG9va3MsIGJ1aWxkTXV0YXRpb25Ib29rLCB1c2VQcmVmZXRjaCB9ID0gYnVpbGRIb29rcyh7XG4gICAgICAgIGFwaSxcbiAgICAgICAgbW9kdWxlT3B0aW9uczogeyBob29rcywgY3JlYXRlU2VsZWN0b3IsIGdldEluamVjdG9yIH0sXG4gICAgICAgIHNlcmlhbGl6ZVF1ZXJ5QXJncyxcbiAgICAgICAgY29udGV4dCxcbiAgICAgIH0pO1xuICAgICAgc2FmZUFzc2lnbihhbnlBcGksIHsgdXNlUHJlZmV0Y2ggfSk7XG4gICAgICBzYWZlQXNzaWduKGFueUFwaSwgeyBkaXNwYXRjaDogaG9va3MuZGlzcGF0Y2ggfSk7XG4gICAgICBzYWZlQXNzaWduKGFueUFwaSwgeyBzZWxlY3RTaWduYWw6IGhvb2tzLnVzZVNlbGVjdG9yIH0pO1xuICAgICAgc2FmZUFzc2lnbihhbnlBcGksIHsgZ2V0SW5qZWN0b3IgfSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGluamVjdEVuZHBvaW50KGVuZHBvaW50TmFtZSwgZGVmaW5pdGlvbikge1xuICAgICAgICAgIGlmIChpc1F1ZXJ5RGVmaW5pdGlvbihkZWZpbml0aW9uKSkge1xuICAgICAgICAgICAgY29uc3QgeyB1c2VRdWVyeSwgdXNlTGF6eVF1ZXJ5LCB1c2VMYXp5UXVlcnlTdWJzY3JpcHRpb24sIHVzZVF1ZXJ5U3RhdGUsIHVzZVF1ZXJ5U3Vic2NyaXB0aW9uIH0gPVxuICAgICAgICAgICAgICBidWlsZFF1ZXJ5SG9va3MoZW5kcG9pbnROYW1lKTtcbiAgICAgICAgICAgIHNhZmVBc3NpZ24oYW55QXBpLmVuZHBvaW50c1tlbmRwb2ludE5hbWVdLCB7XG4gICAgICAgICAgICAgIHVzZVF1ZXJ5LFxuICAgICAgICAgICAgICB1c2VMYXp5UXVlcnksXG4gICAgICAgICAgICAgIHVzZUxhenlRdWVyeVN1YnNjcmlwdGlvbixcbiAgICAgICAgICAgICAgdXNlUXVlcnlTdGF0ZSxcbiAgICAgICAgICAgICAgdXNlUXVlcnlTdWJzY3JpcHRpb24sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIChhcGkgYXMgYW55KVtgdXNlJHtjYXBpdGFsaXplKGVuZHBvaW50TmFtZSl9UXVlcnlgXSA9IHVzZVF1ZXJ5O1xuICAgICAgICAgICAgKGFwaSBhcyBhbnkpW2B1c2VMYXp5JHtjYXBpdGFsaXplKGVuZHBvaW50TmFtZSl9UXVlcnlgXSA9IHVzZUxhenlRdWVyeTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzTXV0YXRpb25EZWZpbml0aW9uKGRlZmluaXRpb24pKSB7XG4gICAgICAgICAgICBjb25zdCB7IHVzZU11dGF0aW9uIH0gPSBidWlsZE11dGF0aW9uSG9vayhlbmRwb2ludE5hbWUpO1xuICAgICAgICAgICAgc2FmZUFzc2lnbihhbnlBcGkuZW5kcG9pbnRzW2VuZHBvaW50TmFtZV0sIHsgdXNlTXV0YXRpb24gfSk7XG4gICAgICAgICAgICAoYXBpIGFzIGFueSlbYHVzZSR7Y2FwaXRhbGl6ZShlbmRwb2ludE5hbWUpfU11dGF0aW9uYF0gPSB1c2VNdXRhdGlvbjtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzSW5maW5pdGVRdWVyeURlZmluaXRpb24oZGVmaW5pdGlvbikpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdXNlSW5maW5pdGVRdWVyeSwgdXNlSW5maW5pdGVRdWVyeVN1YnNjcmlwdGlvbiwgdXNlSW5maW5pdGVRdWVyeVN0YXRlIH0gPVxuICAgICAgICAgICAgICBidWlsZEluZmluaXRlUXVlcnlIb29rcyhlbmRwb2ludE5hbWUpO1xuICAgICAgICAgICAgc2FmZUFzc2lnbihhbnlBcGkuZW5kcG9pbnRzW2VuZHBvaW50TmFtZV0sIHtcbiAgICAgICAgICAgICAgdXNlSW5maW5pdGVRdWVyeSxcbiAgICAgICAgICAgICAgdXNlSW5maW5pdGVRdWVyeVN1YnNjcmlwdGlvbixcbiAgICAgICAgICAgICAgdXNlSW5maW5pdGVRdWVyeVN0YXRlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAoYXBpIGFzIGFueSlbYHVzZSR7Y2FwaXRhbGl6ZShlbmRwb2ludE5hbWUpfUluZmluaXRlUXVlcnlgXSA9IHVzZUluZmluaXRlUXVlcnk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9LFxuICB9O1xufTtcbiJdfQ==