@mnaoumov/obsidian-lib 10.8.0 → 10.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/codemirror/editor-mode-extension/package.json +6 -0
- package/dist/lib/cjs/__merged.cjs +42 -1
- package/dist/lib/cjs/__merged.d.cts +7 -2
- package/dist/lib/cjs/code-block-render-handoff.cjs +2 -5
- package/dist/lib/cjs/codemirror/editor-mode-extension.cjs +180 -0
- package/dist/lib/cjs/codemirror/editor-mode-extension.d.cts +50 -0
- package/dist/lib/cjs/codemirror/index.cjs +4 -1
- package/dist/lib/cjs/codemirror/index.d.cts +1 -0
- package/dist/lib/cjs/codemirror/inline-token-widgets.cjs +4 -7
- package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.cjs +2 -2
- package/dist/lib/cjs/community-plugins.cjs +2 -2
- package/dist/lib/cjs/components/all-windows-event-component.cjs +86 -14
- package/dist/lib/cjs/components/all-windows-event-component.d.cts +54 -3
- package/dist/lib/cjs/components/monkey-around-component.cjs +1 -1
- package/dist/lib/cjs/components/plugin-notice-component.cjs +2 -6
- package/dist/lib/cjs/components/plugin-settings-component.cjs +4 -3
- package/dist/lib/cjs/components/plugin-settings-component.d.cts +2 -1
- package/dist/lib/cjs/components/style-sheet-component.cjs +1 -4
- package/dist/lib/cjs/css-class.cjs +7 -1
- package/dist/lib/cjs/css-class.d.cts +24 -0
- package/dist/lib/cjs/data-stores/shared-data-store.cjs +15 -4
- package/dist/lib/cjs/desktop-bulk-operation-git.cjs +5 -5
- package/dist/lib/cjs/folder-note.cjs +5 -5
- package/dist/lib/cjs/formula-function.cjs +152 -0
- package/dist/lib/cjs/formula-function.d.cts +98 -0
- package/dist/lib/cjs/frontmatter-formatting.cjs +2 -2
- package/dist/lib/cjs/generated-during-build.cjs +2 -2
- package/dist/lib/cjs/i18n/i18n.cjs +38 -10
- package/dist/lib/cjs/i18n/i18n.d.cts +29 -2
- package/dist/lib/cjs/i18n/locales/en.cjs +13 -1
- package/dist/lib/cjs/i18n/locales/en.d.cts +12 -0
- package/dist/lib/cjs/i18n/locales/translations-map.d.cts +12 -0
- package/dist/lib/cjs/index.cjs +7 -1
- package/dist/lib/cjs/index.d.cts +2 -0
- package/dist/lib/cjs/link.cjs +12 -12
- package/dist/lib/cjs/markdown.cjs +7 -7
- package/dist/lib/cjs/modals/code-block-builder.cjs +486 -0
- package/dist/lib/cjs/modals/code-block-builder.d.cts +321 -0
- package/dist/lib/cjs/modals/index.cjs +4 -1
- package/dist/lib/cjs/modals/index.d.cts +1 -0
- package/dist/lib/cjs/plugin/index.cjs +4 -1
- package/dist/lib/cjs/plugin/index.d.cts +1 -0
- package/dist/lib/cjs/plugin/plugin-async-cleanup.cjs +189 -0
- package/dist/lib/cjs/plugin/plugin-async-cleanup.d.cts +111 -0
- package/dist/lib/cjs/plugin/plugin.cjs +47 -2
- package/dist/lib/cjs/plugin/plugin.d.cts +25 -1
- package/dist/lib/cjs/vault.cjs +2 -2
- package/dist/lib/cjs/virtual-file.cjs +340 -0
- package/dist/lib/cjs/virtual-file.d.cts +48 -0
- package/dist/lib/esm/__merged.d.mts +7 -2
- package/dist/lib/esm/__merged.mjs +48 -2
- package/dist/lib/esm/code-block-render-handoff.mjs +2 -5
- package/dist/lib/esm/codemirror/editor-mode-extension.d.mts +50 -0
- package/dist/lib/esm/codemirror/editor-mode-extension.mjs +93 -0
- package/dist/lib/esm/codemirror/index.d.mts +1 -0
- package/dist/lib/esm/codemirror/index.mjs +3 -1
- package/dist/lib/esm/codemirror/inline-token-widgets.mjs +3 -9
- package/dist/lib/esm/command-handlers/unlock-active-note-command-handler.mjs +2 -2
- package/dist/lib/esm/community-plugins.mjs +2 -2
- package/dist/lib/esm/components/all-windows-event-component.d.mts +54 -3
- package/dist/lib/esm/components/all-windows-event-component.mjs +87 -14
- package/dist/lib/esm/components/monkey-around-component.mjs +1 -1
- package/dist/lib/esm/components/plugin-notice-component.mjs +2 -6
- package/dist/lib/esm/components/plugin-settings-component.d.mts +2 -1
- package/dist/lib/esm/components/plugin-settings-component.mjs +4 -3
- package/dist/lib/esm/components/style-sheet-component.mjs +1 -4
- package/dist/lib/esm/css-class.d.mts +24 -0
- package/dist/lib/esm/css-class.mjs +7 -1
- package/dist/lib/esm/data-stores/shared-data-store.mjs +15 -4
- package/dist/lib/esm/desktop-bulk-operation-git.mjs +5 -5
- package/dist/lib/esm/folder-note.mjs +5 -5
- package/dist/lib/esm/formula-function.d.mts +98 -0
- package/dist/lib/esm/formula-function.mjs +62 -0
- package/dist/lib/esm/frontmatter-formatting.mjs +2 -2
- package/dist/lib/esm/generated-during-build.mjs +2 -2
- package/dist/lib/esm/i18n/i18n.d.mts +29 -2
- package/dist/lib/esm/i18n/i18n.mjs +40 -10
- package/dist/lib/esm/i18n/locales/en.d.mts +12 -0
- package/dist/lib/esm/i18n/locales/en.mjs +13 -1
- package/dist/lib/esm/i18n/locales/translations-map.d.mts +12 -0
- package/dist/lib/esm/index.d.mts +2 -0
- package/dist/lib/esm/index.mjs +5 -1
- package/dist/lib/esm/link.mjs +12 -12
- package/dist/lib/esm/markdown.mjs +7 -7
- package/dist/lib/esm/modals/code-block-builder.d.mts +321 -0
- package/dist/lib/esm/modals/code-block-builder.mjs +408 -0
- package/dist/lib/esm/modals/index.d.mts +1 -0
- package/dist/lib/esm/modals/index.mjs +3 -1
- package/dist/lib/esm/plugin/index.d.mts +1 -0
- package/dist/lib/esm/plugin/index.mjs +3 -1
- package/dist/lib/esm/plugin/plugin-async-cleanup.d.mts +111 -0
- package/dist/lib/esm/plugin/plugin-async-cleanup.mjs +96 -0
- package/dist/lib/esm/plugin/plugin.d.mts +25 -1
- package/dist/lib/esm/plugin/plugin.mjs +52 -2
- package/dist/lib/esm/vault.mjs +2 -2
- package/dist/lib/esm/virtual-file.d.mts +48 -0
- package/dist/lib/esm/virtual-file.mjs +264 -0
- package/dist/styles.css +31 -1
- package/modals/code-block-builder/package.json +6 -0
- package/package.json +5 -5
- package/plugin/plugin-async-cleanup/package.json +6 -0
|
@@ -2,8 +2,40 @@
|
|
|
2
2
|
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
3
|
if you want to view the source, please visit the github repository of this plugin
|
|
4
4
|
*/
|
|
5
|
+
(function () {
|
|
6
|
+
function ensureBrowserProcess() {
|
|
7
|
+
const browserProcess = {
|
|
8
|
+
browser: true,
|
|
9
|
+
cwd() {
|
|
10
|
+
return "/";
|
|
11
|
+
},
|
|
12
|
+
env: {},
|
|
13
|
+
platform: "android"
|
|
14
|
+
};
|
|
15
|
+
const existingProcess = globalThis.process;
|
|
16
|
+
if (!existingProcess) {
|
|
17
|
+
globalThis.process = browserProcess;
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (existingProcess.versions?.node) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const existingProcessRecord = existingProcess;
|
|
24
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
25
|
+
existingProcessRecord[key] ??= value;
|
|
26
|
+
}
|
|
27
|
+
existingProcessRecord["browser"] = true;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
ensureBrowserProcess();
|
|
31
|
+
})();
|
|
5
32
|
|
|
6
|
-
import {
|
|
33
|
+
import { isFunction } from "@mnaoumov/typescript-lib/type-guards";
|
|
34
|
+
import { Component } from "obsidian";
|
|
35
|
+
import {
|
|
36
|
+
getAllDomWindows,
|
|
37
|
+
getMainWindow
|
|
38
|
+
} from "../workspace.mjs";
|
|
7
39
|
import { ComponentEx } from "./component-ex.mjs";
|
|
8
40
|
import { CallbackLayoutReadyComponent } from "./layout-ready-component.mjs";
|
|
9
41
|
class AllWindowsEventComponent extends ComponentEx {
|
|
@@ -52,30 +84,71 @@ class AllWindowsEventComponent extends ComponentEx {
|
|
|
52
84
|
});
|
|
53
85
|
}
|
|
54
86
|
/**
|
|
55
|
-
* Registers a handler for
|
|
87
|
+
* Registers a handler once for each window, including popouts opened later.
|
|
56
88
|
*
|
|
57
|
-
* @param allWindowsHandler - The handler
|
|
89
|
+
* @param allWindowsHandler - The handler. Its optional cleanup runs when the window closes or this component unloads.
|
|
58
90
|
*/
|
|
59
91
|
registerAllWindowsHandler(allWindowsHandler) {
|
|
60
92
|
this.ensureLoaded();
|
|
61
|
-
const
|
|
62
|
-
|
|
93
|
+
const componentsByWindow = /* @__PURE__ */ new Map();
|
|
94
|
+
this.register(() => {
|
|
95
|
+
componentsByWindow.clear();
|
|
96
|
+
});
|
|
97
|
+
const attach = (win) => {
|
|
98
|
+
if (componentsByWindow.has(win)) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const component = this.addChild(new Component());
|
|
102
|
+
componentsByWindow.set(win, component);
|
|
103
|
+
const cleanup = allWindowsHandler(win);
|
|
104
|
+
if (isFunction(cleanup)) {
|
|
105
|
+
component.register(cleanup);
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
this.registerEvent(this.app.workspace.on("window-close", (_workspaceWindow, win) => {
|
|
109
|
+
const component = componentsByWindow.get(win);
|
|
110
|
+
if (!component) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
componentsByWindow.delete(win);
|
|
114
|
+
this.removeChild(component);
|
|
115
|
+
}));
|
|
116
|
+
attach(getMainWindow(this.app));
|
|
63
117
|
this.addChild(
|
|
64
118
|
new CallbackLayoutReadyComponent(this.app, () => {
|
|
65
|
-
for (const win of getAllDomWindows(this.app)) {
|
|
66
|
-
if (win === mainWindow) {
|
|
67
|
-
continue;
|
|
68
|
-
}
|
|
69
|
-
allWindowsHandler(win);
|
|
70
|
-
}
|
|
71
119
|
this.registerEvent(this.app.workspace.on("window-open", (workspaceWindow) => {
|
|
72
|
-
|
|
120
|
+
attach(workspaceWindow.win);
|
|
73
121
|
}));
|
|
122
|
+
for (const win of getAllDomWindows(this.app)) {
|
|
123
|
+
attach(win);
|
|
124
|
+
}
|
|
74
125
|
})
|
|
75
126
|
);
|
|
76
127
|
}
|
|
77
128
|
}
|
|
129
|
+
function forEachWindow(params) {
|
|
130
|
+
const { app, callback, component } = params;
|
|
131
|
+
const allWindowsComponent = component.addChild(new AllWindowsEventComponent(app));
|
|
132
|
+
allWindowsComponent.registerAllWindowsHandler(callback);
|
|
133
|
+
return allWindowsComponent;
|
|
134
|
+
}
|
|
135
|
+
function registerBodyClass(params) {
|
|
136
|
+
const { app, className, component } = params;
|
|
137
|
+
return forEachWindow({
|
|
138
|
+
app,
|
|
139
|
+
callback(win) {
|
|
140
|
+
const { classList } = win.document.body;
|
|
141
|
+
classList.add(className);
|
|
142
|
+
return () => {
|
|
143
|
+
classList.remove(className);
|
|
144
|
+
};
|
|
145
|
+
},
|
|
146
|
+
component
|
|
147
|
+
});
|
|
148
|
+
}
|
|
78
149
|
export {
|
|
79
|
-
AllWindowsEventComponent
|
|
150
|
+
AllWindowsEventComponent,
|
|
151
|
+
forEachWindow,
|
|
152
|
+
registerBodyClass
|
|
80
153
|
};
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYWxsLXdpbmRvd3MtZXZlbnQtY29tcG9uZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogSGFuZGxlcyByZWdpc3RlcmluZyBET00gZXZlbnRzIGFuZCBoYW5kbGVycyBmb3IgYWxsIHdpbmRvd3MgKG1haW4gd2luZG93IGFuZCBhbGwgZXhpc3RpbmcvZnV0dXJlIHBvcHVwIHdpbmRvd3MpIGFuZCB0aGVpciBkb2N1bWVudHMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGdldEFsbERvbVdpbmRvd3MgfSBmcm9tICcuLi93b3Jrc3BhY2UudHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50RXggfSBmcm9tICcuL2NvbXBvbmVudC1leC50cyc7XG5pbXBvcnQgeyBDYWxsYmFja0xheW91dFJlYWR5Q29tcG9uZW50IH0gZnJvbSAnLi9sYXlvdXQtcmVhZHktY29tcG9uZW50LnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgQWxsV2luZG93c0V2ZW50Q29tcG9uZW50LnJlZ2lzdGVyQWxsRG9jdW1lbnRzRG9tRXZlbnR9LlxuICpcbiAqIEB0eXBlUGFyYW0gRG9jdW1lbnRFdmVudFR5cGUgLSBUaGUgdHlwZSBvZiB0aGUgZXZlbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxsV2luZG93c0V2ZW50Q29tcG9uZW50UmVnaXN0ZXJBbGxEb2N1bWVudHNEb21FdmVudFBhcmFtczxEb2N1bWVudEV2ZW50VHlwZSBleHRlbmRzIGtleW9mIERvY3VtZW50RXZlbnRNYXA+IHtcbiAgLyoqXG4gICAqIFRoZSBjYWxsYmFjayB0byBleGVjdXRlLlxuICAgKlxuICAgKiBAcGFyYW0gJGV2ZW50IC0gVGhlIGV2ZW50LlxuICAgKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBjYWxsYmFjay5cbiAgICovXG4gIHJlYWRvbmx5IGNhbGxiYWNrOiAodGhpczogSFRNTEVsZW1lbnQsICRldmVudDogRG9jdW1lbnRFdmVudE1hcFtEb2N1bWVudEV2ZW50VHlwZV0pID0+IHVua25vd247XG5cbiAgLyoqXG4gICAqIFRoZSBvcHRpb25zIGZvciB0aGUgZXZlbnQuXG4gICAqL1xuICByZWFkb25seSBvcHRpb25zPzogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgfCBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgZXZlbnQuXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBEb2N1bWVudEV2ZW50VHlwZTtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgQWxsV2luZG93c0V2ZW50Q29tcG9uZW50LnJlZ2lzdGVyQWxsV2luZG93c0RvbUV2ZW50fS5cbiAqXG4gKiBAdHlwZVBhcmFtIFdpbmRvd0V2ZW50VHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBldmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGxXaW5kb3dzRXZlbnRDb21wb25lbnRSZWdpc3RlckFsbFdpbmRvd3NEb21FdmVudFBhcmFtczxXaW5kb3dFdmVudFR5cGUgZXh0ZW5kcyBrZXlvZiBXaW5kb3dFdmVudE1hcD4ge1xuICAvKipcbiAgICogVGhlIGNhbGxiYWNrIHRvIGV4ZWN1dGUuXG4gICAqXG4gICAqIEBwYXJhbSAkZXZlbnQgLSBUaGUgZXZlbnQuXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGNhbGxiYWNrLlxuICAgKi9cbiAgcmVhZG9ubHkgY2FsbGJhY2s6ICh0aGlzOiBIVE1MRWxlbWVudCwgJGV2ZW50OiBXaW5kb3dFdmVudE1hcFtXaW5kb3dFdmVudFR5cGVdKSA9PiB1bmtub3duO1xuXG4gIC8qKlxuICAgKiBUaGUgb3B0aW9ucyBmb3IgdGhlIGV2ZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgb3B0aW9ucz86IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zIHwgYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIGV2ZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogV2luZG93RXZlbnRUeXBlO1xufVxuXG4vKipcbiAqIEhhbmRsZXMgcmVnaXN0ZXJpbmcgRE9NIGV2ZW50cyBhbmQgaGFuZGxlcnMgZm9yIGFsbCB3aW5kb3dzIChtYWluIHdpbmRvdyBhbmQgYWxsIGV4aXN0aW5nL2Z1dHVyZSBwb3B1cCB3aW5kb3dzKSBhbmQgdGhlaXIgZG9jdW1lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgQWxsV2luZG93c0V2ZW50Q29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50RXgge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgYEFsbFdpbmRvd3NFdmVudENvbXBvbmVudGAgY2xhc3MuXG4gICAqXG4gICAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWFkb25seSBhcHA6IEFwcCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgRE9NIGV2ZW50IGZvciBhbGwgZG9jdW1lbnRzIChtYWluIHdpbmRvdyBkb2N1bWVudCBhbmQgYWxsIGV4aXN0aW5nL2Z1dHVyZSBwb3B1cCB3aW5kb3cgZG9jdW1lbnRzKS5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBEb2N1bWVudEV2ZW50VHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZWdpc3RlcmluZyB0aGUgRE9NIGV2ZW50LlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyQWxsRG9jdW1lbnRzRG9tRXZlbnQ8RG9jdW1lbnRFdmVudFR5cGUgZXh0ZW5kcyBrZXlvZiBEb2N1bWVudEV2ZW50TWFwPihcbiAgICBwYXJhbXM6IEFsbFdpbmRvd3NFdmVudENvbXBvbmVudFJlZ2lzdGVyQWxsRG9jdW1lbnRzRG9tRXZlbnRQYXJhbXM8RG9jdW1lbnRFdmVudFR5cGU+XG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHtcbiAgICAgIGNhbGxiYWNrLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHR5cGVcbiAgICB9ID0gcGFyYW1zO1xuICAgIHRoaXMuZW5zdXJlTG9hZGVkKCk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyQWxsV2luZG93c0hhbmRsZXIoKHdpbikgPT4ge1xuICAgICAgdGhpcy5yZWdpc3RlckRvbUV2ZW50KHdpbi5kb2N1bWVudCwgdHlwZSwgY2FsbGJhY2ssIG9wdGlvbnMpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIERPTSBldmVudCBmb3IgYWxsIHdpbmRvd3MgKG1haW4gd2luZG93IGFuZCBhbGwgZXhpc3RpbmcvZnV0dXJlIHBvcHVwIHdpbmRvd3MpLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFdpbmRvd0V2ZW50VHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZWdpc3RlcmluZyB0aGUgRE9NIGV2ZW50LlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyQWxsV2luZG93c0RvbUV2ZW50PFdpbmRvd0V2ZW50VHlwZSBleHRlbmRzIGtleW9mIFdpbmRvd0V2ZW50TWFwPihcbiAgICBwYXJhbXM6IEFsbFdpbmRvd3NFdmVudENvbXBvbmVudFJlZ2lzdGVyQWxsV2luZG93c0RvbUV2ZW50UGFyYW1zPFdpbmRvd0V2ZW50VHlwZT5cbiAgKTogdm9pZCB7XG4gICAgY29uc3Qge1xuICAgICAgY2FsbGJhY2ssXG4gICAgICBvcHRpb25zLFxuICAgICAgdHlwZVxuICAgIH0gPSBwYXJhbXM7XG4gICAgdGhpcy5lbnN1cmVMb2FkZWQoKTtcblxuICAgIHRoaXMucmVnaXN0ZXJBbGxXaW5kb3dzSGFuZGxlcigod2luKSA9PiB7XG4gICAgICB0aGlzLnJlZ2lzdGVyRG9tRXZlbnQod2luLCB0eXBlLCBjYWxsYmFjaywgb3B0aW9ucyk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgaGFuZGxlciBmb3IgYWxsIHdpbmRvd3MgKG1haW4gd2luZG93IGFuZCBhbGwgZXhpc3RpbmcvZnV0dXJlIHBvcHVwIHdpbmRvd3MpLlxuICAgKlxuICAgKiBAcGFyYW0gYWxsV2luZG93c0hhbmRsZXIgLSBUaGUgaGFuZGxlciBjYWxsZWQgZm9yIGVhY2ggd2luZG93IChtYWluICsgcG9wdXBzKS5cbiAgICovXG4gIHB1YmxpYyByZWdpc3RlckFsbFdpbmRvd3NIYW5kbGVyKGFsbFdpbmRvd3NIYW5kbGVyOiAod2luOiBXaW5kb3cpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLmVuc3VyZUxvYWRlZCgpO1xuXG4gICAgY29uc3QgbWFpbldpbmRvdyA9IGFjdGl2ZVdpbmRvdztcbiAgICBhbGxXaW5kb3dzSGFuZGxlcihtYWluV2luZG93KTtcblxuICAgIHRoaXMuYWRkQ2hpbGQoXG4gICAgICBuZXcgQ2FsbGJhY2tMYXlvdXRSZWFkeUNvbXBvbmVudCh0aGlzLmFwcCwgKCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IHdpbiBvZiBnZXRBbGxEb21XaW5kb3dzKHRoaXMuYXBwKSkge1xuICAgICAgICAgIGlmICh3aW4gPT09IG1haW5XaW5kb3cpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGFsbFdpbmRvd3NIYW5kbGVyKHdpbik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlZ2lzdGVyRXZlbnQodGhpcy5hcHAud29ya3NwYWNlLm9uKCd3aW5kb3ctb3BlbicsICh3b3Jrc3BhY2VXaW5kb3cpID0+IHtcbiAgICAgICAgICBhbGxXaW5kb3dzSGFuZGxlcih3b3Jrc3BhY2VXaW5kb3cud2luKTtcbiAgICAgICAgfSkpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7OztBQVFBLFNBQVMsd0JBQXdCO0FBQ2pDLFNBQVMsbUJBQW1CO0FBQzVCLFNBQVMsb0NBQW9DO0FBdUR0QyxNQUFNLGlDQUFpQyxZQUFZO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTWpELFlBQStCLEtBQVU7QUFDOUMsVUFBTTtBQUQ4QjtBQUFBLEVBRXRDO0FBQUEsRUFGc0M7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVUvQiw2QkFDTCxRQUNNO0FBQ04sVUFBTTtBQUFBLE1BQ0o7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0YsSUFBSTtBQUNKLFNBQUssYUFBYTtBQUVsQixTQUFLLDBCQUEwQixDQUFDLFFBQVE7QUFDdEMsV0FBSyxpQkFBaUIsSUFBSSxVQUFVLE1BQU0sVUFBVSxPQUFPO0FBQUEsSUFDN0QsQ0FBQztBQUFBLEVBQ0g7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFPLDJCQUNMLFFBQ007QUFDTixVQUFNO0FBQUEsTUFDSjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRixJQUFJO0FBQ0osU0FBSyxhQUFhO0FBRWxCLFNBQUssMEJBQTBCLENBQUMsUUFBUTtBQUN0QyxXQUFLLGlCQUFpQixLQUFLLE1BQU0sVUFBVSxPQUFPO0FBQUEsSUFDcEQsQ0FBQztBQUFBLEVBQ0g7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTywwQkFBMEIsbUJBQWdEO0FBQy9FLFNBQUssYUFBYTtBQUVsQixVQUFNLGFBQWE7QUFDbkIsc0JBQWtCLFVBQVU7QUFFNUIsU0FBSztBQUFBLE1BQ0gsSUFBSSw2QkFBNkIsS0FBSyxLQUFLLE1BQU07QUFDL0MsbUJBQVcsT0FBTyxpQkFBaUIsS0FBSyxHQUFHLEdBQUc7QUFDNUMsY0FBSSxRQUFRLFlBQVk7QUFDdEI7QUFBQSxVQUNGO0FBRUEsNEJBQWtCLEdBQUc7QUFBQSxRQUN2QjtBQUVBLGFBQUssY0FBYyxLQUFLLElBQUksVUFBVSxHQUFHLGVBQWUsQ0FBQyxvQkFBb0I7QUFDM0UsNEJBQWtCLGdCQUFnQixHQUFHO0FBQUEsUUFDdkMsQ0FBQyxDQUFDO0FBQUEsTUFDSixDQUFDO0FBQUEsSUFDSDtBQUFBLEVBQ0Y7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2FsbC13aW5kb3dzLWV2ZW50LWNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogSGFuZGxlcyByZWdpc3RlcmluZyBET00gZXZlbnRzIGFuZCBoYW5kbGVycyBmb3IgYWxsIHdpbmRvd3MgKG1haW4gd2luZG93IGFuZCBhbGwgZXhpc3RpbmcvZnV0dXJlIHBvcHVwIHdpbmRvd3MpIGFuZCB0aGVpciBkb2N1bWVudHMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGlzRnVuY3Rpb24gfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHlwZS1ndWFyZHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQge1xuICBnZXRBbGxEb21XaW5kb3dzLFxuICBnZXRNYWluV2luZG93XG59IGZyb20gJy4uL3dvcmtzcGFjZS50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFeCB9IGZyb20gJy4vY29tcG9uZW50LWV4LnRzJztcbmltcG9ydCB7IENhbGxiYWNrTGF5b3V0UmVhZHlDb21wb25lbnQgfSBmcm9tICcuL2xheW91dC1yZWFkeS1jb21wb25lbnQudHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBBbGxXaW5kb3dzRXZlbnRDb21wb25lbnQucmVnaXN0ZXJBbGxEb2N1bWVudHNEb21FdmVudH0uXG4gKlxuICogQHR5cGVQYXJhbSBEb2N1bWVudEV2ZW50VHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBldmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGxXaW5kb3dzRXZlbnRDb21wb25lbnRSZWdpc3RlckFsbERvY3VtZW50c0RvbUV2ZW50UGFyYW1zPERvY3VtZW50RXZlbnRUeXBlIGV4dGVuZHMga2V5b2YgRG9jdW1lbnRFdmVudE1hcD4ge1xuICAvKipcbiAgICogVGhlIGNhbGxiYWNrIHRvIGV4ZWN1dGUuXG4gICAqXG4gICAqIEBwYXJhbSAkZXZlbnQgLSBUaGUgZXZlbnQuXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGNhbGxiYWNrLlxuICAgKi9cbiAgcmVhZG9ubHkgY2FsbGJhY2s6ICh0aGlzOiBIVE1MRWxlbWVudCwgJGV2ZW50OiBEb2N1bWVudEV2ZW50TWFwW0RvY3VtZW50RXZlbnRUeXBlXSkgPT4gdW5rbm93bjtcblxuICAvKipcbiAgICogVGhlIG9wdGlvbnMgZm9yIHRoZSBldmVudC5cbiAgICovXG4gIHJlYWRvbmx5IG9wdGlvbnM/OiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyB8IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSBldmVudC5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IERvY3VtZW50RXZlbnRUeXBlO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBBbGxXaW5kb3dzRXZlbnRDb21wb25lbnQucmVnaXN0ZXJBbGxXaW5kb3dzRG9tRXZlbnR9LlxuICpcbiAqIEB0eXBlUGFyYW0gV2luZG93RXZlbnRUeXBlIC0gVGhlIHR5cGUgb2YgdGhlIGV2ZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFsbFdpbmRvd3NFdmVudENvbXBvbmVudFJlZ2lzdGVyQWxsV2luZG93c0RvbUV2ZW50UGFyYW1zPFdpbmRvd0V2ZW50VHlwZSBleHRlbmRzIGtleW9mIFdpbmRvd0V2ZW50TWFwPiB7XG4gIC8qKlxuICAgKiBUaGUgY2FsbGJhY2sgdG8gZXhlY3V0ZS5cbiAgICpcbiAgICogQHBhcmFtICRldmVudCAtIFRoZSBldmVudC5cbiAgICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgY2FsbGJhY2suXG4gICAqL1xuICByZWFkb25seSBjYWxsYmFjazogKHRoaXM6IEhUTUxFbGVtZW50LCAkZXZlbnQ6IFdpbmRvd0V2ZW50TWFwW1dpbmRvd0V2ZW50VHlwZV0pID0+IHVua25vd247XG5cbiAgLyoqXG4gICAqIFRoZSBvcHRpb25zIGZvciB0aGUgZXZlbnQuXG4gICAqL1xuICByZWFkb25seSBvcHRpb25zPzogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgfCBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgZXZlbnQuXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBXaW5kb3dFdmVudFR5cGU7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGZvckVhY2hXaW5kb3d9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZvckVhY2hXaW5kb3dQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuICAvKipcbiAgICogVGhlIGhhbmRsZXIsIG9wdGlvbmFsbHkgcmV0dXJuaW5nIGNsZWFudXAgZm9yIHRoYXQgd2luZG93LlxuICAgKi9cbiAgcmVhZG9ubHkgY2FsbGJhY2s6ICh3aW46IFdpbmRvdykgPT4gdW5rbm93bjtcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdGhhdCBvd25zIHRoZSByZWdpc3RyYXRpb24gYW5kIGl0cyBjbGVhbnVwLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcG9uZW50OiBDb21wb25lbnQ7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlZ2lzdGVyQm9keUNsYXNzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RlckJvZHlDbGFzc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIC8qKlxuICAgKiBPbmUgQ1NTIGNsYXNzIHRvIGFkZCB0byBlYWNoIHdpbmRvdydzIGJvZHkuIFVzZSBhIHBsdWdpbi1zcGVjaWZpYyBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgY2xhc3NOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHRoYXQgb3ducyB0aGUgYm9keSBjbGFzcy5cbiAgICovXG4gIHJlYWRvbmx5IGNvbXBvbmVudDogQ29tcG9uZW50O1xufVxuXG4vKipcbiAqIEhhbmRsZXMgcmVnaXN0ZXJpbmcgRE9NIGV2ZW50cyBhbmQgaGFuZGxlcnMgZm9yIGFsbCB3aW5kb3dzIChtYWluIHdpbmRvdyBhbmQgYWxsIGV4aXN0aW5nL2Z1dHVyZSBwb3B1cCB3aW5kb3dzKSBhbmQgdGhlaXIgZG9jdW1lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgQWxsV2luZG93c0V2ZW50Q29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50RXgge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgYEFsbFdpbmRvd3NFdmVudENvbXBvbmVudGAgY2xhc3MuXG4gICAqXG4gICAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWFkb25seSBhcHA6IEFwcCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgRE9NIGV2ZW50IGZvciBhbGwgZG9jdW1lbnRzIChtYWluIHdpbmRvdyBkb2N1bWVudCBhbmQgYWxsIGV4aXN0aW5nL2Z1dHVyZSBwb3B1cCB3aW5kb3cgZG9jdW1lbnRzKS5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBEb2N1bWVudEV2ZW50VHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZWdpc3RlcmluZyB0aGUgRE9NIGV2ZW50LlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyQWxsRG9jdW1lbnRzRG9tRXZlbnQ8RG9jdW1lbnRFdmVudFR5cGUgZXh0ZW5kcyBrZXlvZiBEb2N1bWVudEV2ZW50TWFwPihcbiAgICBwYXJhbXM6IEFsbFdpbmRvd3NFdmVudENvbXBvbmVudFJlZ2lzdGVyQWxsRG9jdW1lbnRzRG9tRXZlbnRQYXJhbXM8RG9jdW1lbnRFdmVudFR5cGU+XG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHtcbiAgICAgIGNhbGxiYWNrLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHR5cGVcbiAgICB9ID0gcGFyYW1zO1xuICAgIHRoaXMuZW5zdXJlTG9hZGVkKCk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyQWxsV2luZG93c0hhbmRsZXIoKHdpbikgPT4ge1xuICAgICAgdGhpcy5yZWdpc3RlckRvbUV2ZW50KHdpbi5kb2N1bWVudCwgdHlwZSwgY2FsbGJhY2ssIG9wdGlvbnMpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIERPTSBldmVudCBmb3IgYWxsIHdpbmRvd3MgKG1haW4gd2luZG93IGFuZCBhbGwgZXhpc3RpbmcvZnV0dXJlIHBvcHVwIHdpbmRvd3MpLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFdpbmRvd0V2ZW50VHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZWdpc3RlcmluZyB0aGUgRE9NIGV2ZW50LlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyQWxsV2luZG93c0RvbUV2ZW50PFdpbmRvd0V2ZW50VHlwZSBleHRlbmRzIGtleW9mIFdpbmRvd0V2ZW50TWFwPihcbiAgICBwYXJhbXM6IEFsbFdpbmRvd3NFdmVudENvbXBvbmVudFJlZ2lzdGVyQWxsV2luZG93c0RvbUV2ZW50UGFyYW1zPFdpbmRvd0V2ZW50VHlwZT5cbiAgKTogdm9pZCB7XG4gICAgY29uc3Qge1xuICAgICAgY2FsbGJhY2ssXG4gICAgICBvcHRpb25zLFxuICAgICAgdHlwZVxuICAgIH0gPSBwYXJhbXM7XG4gICAgdGhpcy5lbnN1cmVMb2FkZWQoKTtcblxuICAgIHRoaXMucmVnaXN0ZXJBbGxXaW5kb3dzSGFuZGxlcigod2luKSA9PiB7XG4gICAgICB0aGlzLnJlZ2lzdGVyRG9tRXZlbnQod2luLCB0eXBlLCBjYWxsYmFjaywgb3B0aW9ucyk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgaGFuZGxlciBvbmNlIGZvciBlYWNoIHdpbmRvdywgaW5jbHVkaW5nIHBvcG91dHMgb3BlbmVkIGxhdGVyLlxuICAgKlxuICAgKiBAcGFyYW0gYWxsV2luZG93c0hhbmRsZXIgLSBUaGUgaGFuZGxlci4gSXRzIG9wdGlvbmFsIGNsZWFudXAgcnVucyB3aGVuIHRoZSB3aW5kb3cgY2xvc2VzIG9yIHRoaXMgY29tcG9uZW50IHVubG9hZHMuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJBbGxXaW5kb3dzSGFuZGxlcihhbGxXaW5kb3dzSGFuZGxlcjogKHdpbjogV2luZG93KSA9PiB1bmtub3duKTogdm9pZCB7XG4gICAgdGhpcy5lbnN1cmVMb2FkZWQoKTtcblxuICAgIGNvbnN0IGNvbXBvbmVudHNCeVdpbmRvdyA9IG5ldyBNYXA8V2luZG93LCBDb21wb25lbnQ+KCk7XG4gICAgdGhpcy5yZWdpc3RlcigoKSA9PiB7XG4gICAgICBjb21wb25lbnRzQnlXaW5kb3cuY2xlYXIoKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGF0dGFjaCA9ICh3aW46IFdpbmRvdyk6IHZvaWQgPT4ge1xuICAgICAgaWYgKGNvbXBvbmVudHNCeVdpbmRvdy5oYXMod2luKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuYWRkQ2hpbGQobmV3IENvbXBvbmVudCgpKTtcbiAgICAgIGNvbXBvbmVudHNCeVdpbmRvdy5zZXQod2luLCBjb21wb25lbnQpO1xuICAgICAgY29uc3QgY2xlYW51cCA9IGFsbFdpbmRvd3NIYW5kbGVyKHdpbik7XG4gICAgICBpZiAoaXNGdW5jdGlvbihjbGVhbnVwKSkge1xuICAgICAgICBjb21wb25lbnQucmVnaXN0ZXIoY2xlYW51cCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHRoaXMucmVnaXN0ZXJFdmVudCh0aGlzLmFwcC53b3Jrc3BhY2Uub24oJ3dpbmRvdy1jbG9zZScsIChfd29ya3NwYWNlV2luZG93LCB3aW4pID0+IHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGNvbXBvbmVudHNCeVdpbmRvdy5nZXQod2luKTtcbiAgICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29tcG9uZW50c0J5V2luZG93LmRlbGV0ZSh3aW4pO1xuICAgICAgdGhpcy5yZW1vdmVDaGlsZChjb21wb25lbnQpO1xuICAgIH0pKTtcblxuICAgIGF0dGFjaChnZXRNYWluV2luZG93KHRoaXMuYXBwKSk7XG5cbiAgICB0aGlzLmFkZENoaWxkKFxuICAgICAgbmV3IENhbGxiYWNrTGF5b3V0UmVhZHlDb21wb25lbnQodGhpcy5hcHAsICgpID0+IHtcbiAgICAgICAgdGhpcy5yZWdpc3RlckV2ZW50KHRoaXMuYXBwLndvcmtzcGFjZS5vbignd2luZG93LW9wZW4nLCAod29ya3NwYWNlV2luZG93KSA9PiB7XG4gICAgICAgICAgYXR0YWNoKHdvcmtzcGFjZVdpbmRvdy53aW4pO1xuICAgICAgICB9KSk7XG5cbiAgICAgICAgZm9yIChjb25zdCB3aW4gb2YgZ2V0QWxsRG9tV2luZG93cyh0aGlzLmFwcCkpIHtcbiAgICAgICAgICBhdHRhY2god2luKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogQXBwbGllcyBhIGhhbmRsZXIgdG8gdGhlIG1haW4gd2luZG93IGltbWVkaWF0ZWx5IGFuZCB0byBleGlzdGluZyBhbmQgZnV0dXJlIHBvcG91dHMgYWZ0ZXIgbGF5b3V0IHJlYWR5LlxuICogQ2xlYW51cCBydW5zIHdoZW4gZWFjaCB3aW5kb3cgY2xvc2VzIG9yIHRoZSBvd25pbmcgY29tcG9uZW50IHVubG9hZHMuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSByZWdpc3RyYXRpb24gcGFyYW1ldGVycy4gVGhlIG93bmVyIG11c3QgYmUgbG9hZGVkLlxuICogQHJldHVybnMgVGhlIGNoaWxkIGNvbXBvbmVudDsgcmVtb3ZlIGl0IGZyb20gdGhlIG93bmVyIHRvIHN0b3AgZWFybHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JFYWNoV2luZG93KHBhcmFtczogRm9yRWFjaFdpbmRvd1BhcmFtcyk6IEFsbFdpbmRvd3NFdmVudENvbXBvbmVudCB7XG4gIGNvbnN0IHsgYXBwLCBjYWxsYmFjaywgY29tcG9uZW50IH0gPSBwYXJhbXM7XG4gIGNvbnN0IGFsbFdpbmRvd3NDb21wb25lbnQgPSBjb21wb25lbnQuYWRkQ2hpbGQobmV3IEFsbFdpbmRvd3NFdmVudENvbXBvbmVudChhcHApKTtcbiAgYWxsV2luZG93c0NvbXBvbmVudC5yZWdpc3RlckFsbFdpbmRvd3NIYW5kbGVyKGNhbGxiYWNrKTtcbiAgcmV0dXJuIGFsbFdpbmRvd3NDb21wb25lbnQ7XG59XG5cbi8qKlxuICogQWRkcyBhIGJvZHkgY2xhc3MgdG8gdGhlIG1haW4gd2luZG93IGFuZCBldmVyeSBleGlzdGluZyBvciBmdXR1cmUgcG9wb3V0IHVudGlsIHRoZSBvd25lciB1bmxvYWRzLlxuICogVXNlIGEgcGx1Z2luLXNwZWNpZmljIGNsYXNzIG93bmVkIGV4Y2x1c2l2ZWx5IGJ5IHRoaXMgcmVnaXN0cmF0aW9uLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcmVnaXN0cmF0aW9uIHBhcmFtZXRlcnMuIFRoZSBvd25lciBtdXN0IGJlIGxvYWRlZC5cbiAqIEByZXR1cm5zIFRoZSBjaGlsZCBjb21wb25lbnQ7IHJlbW92ZSBpdCBmcm9tIHRoZSBvd25lciB0byBzdG9wIGVhcmx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJCb2R5Q2xhc3MocGFyYW1zOiBSZWdpc3RlckJvZHlDbGFzc1BhcmFtcyk6IEFsbFdpbmRvd3NFdmVudENvbXBvbmVudCB7XG4gIGNvbnN0IHsgYXBwLCBjbGFzc05hbWUsIGNvbXBvbmVudCB9ID0gcGFyYW1zO1xuICByZXR1cm4gZm9yRWFjaFdpbmRvdyh7XG4gICAgYXBwLFxuICAgIGNhbGxiYWNrKHdpbikge1xuICAgICAgY29uc3QgeyBjbGFzc0xpc3QgfSA9IHdpbi5kb2N1bWVudC5ib2R5O1xuICAgICAgY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgY2xhc3NMaXN0LnJlbW92ZShjbGFzc05hbWUpO1xuICAgICAgfTtcbiAgICB9LFxuICAgIGNvbXBvbmVudFxuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRQSxTQUFTLGtCQUFrQjtBQUMzQixTQUFTLGlCQUFpQjtBQUUxQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsbUJBQW1CO0FBQzVCLFNBQVMsb0NBQW9DO0FBMkZ0QyxNQUFNLGlDQUFpQyxZQUFZO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTWpELFlBQStCLEtBQVU7QUFDOUMsVUFBTTtBQUQ4QjtBQUFBLEVBRXRDO0FBQUEsRUFGc0M7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVUvQiw2QkFDTCxRQUNNO0FBQ04sVUFBTTtBQUFBLE1BQ0o7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0YsSUFBSTtBQUNKLFNBQUssYUFBYTtBQUVsQixTQUFLLDBCQUEwQixDQUFDLFFBQVE7QUFDdEMsV0FBSyxpQkFBaUIsSUFBSSxVQUFVLE1BQU0sVUFBVSxPQUFPO0FBQUEsSUFDN0QsQ0FBQztBQUFBLEVBQ0g7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFPLDJCQUNMLFFBQ007QUFDTixVQUFNO0FBQUEsTUFDSjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRixJQUFJO0FBQ0osU0FBSyxhQUFhO0FBRWxCLFNBQUssMEJBQTBCLENBQUMsUUFBUTtBQUN0QyxXQUFLLGlCQUFpQixLQUFLLE1BQU0sVUFBVSxPQUFPO0FBQUEsSUFDcEQsQ0FBQztBQUFBLEVBQ0g7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTywwQkFBMEIsbUJBQW1EO0FBQ2xGLFNBQUssYUFBYTtBQUVsQixVQUFNLHFCQUFxQixvQkFBSSxJQUF1QjtBQUN0RCxTQUFLLFNBQVMsTUFBTTtBQUNsQix5QkFBbUIsTUFBTTtBQUFBLElBQzNCLENBQUM7QUFFRCxVQUFNLFNBQVMsQ0FBQyxRQUFzQjtBQUNwQyxVQUFJLG1CQUFtQixJQUFJLEdBQUcsR0FBRztBQUMvQjtBQUFBLE1BQ0Y7QUFFQSxZQUFNLFlBQVksS0FBSyxTQUFTLElBQUksVUFBVSxDQUFDO0FBQy9DLHlCQUFtQixJQUFJLEtBQUssU0FBUztBQUNyQyxZQUFNLFVBQVUsa0JBQWtCLEdBQUc7QUFDckMsVUFBSSxXQUFXLE9BQU8sR0FBRztBQUN2QixrQkFBVSxTQUFTLE9BQU87QUFBQSxNQUM1QjtBQUFBLElBQ0Y7QUFFQSxTQUFLLGNBQWMsS0FBSyxJQUFJLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxrQkFBa0IsUUFBUTtBQUNsRixZQUFNLFlBQVksbUJBQW1CLElBQUksR0FBRztBQUM1QyxVQUFJLENBQUMsV0FBVztBQUNkO0FBQUEsTUFDRjtBQUVBLHlCQUFtQixPQUFPLEdBQUc7QUFDN0IsV0FBSyxZQUFZLFNBQVM7QUFBQSxJQUM1QixDQUFDLENBQUM7QUFFRixXQUFPLGNBQWMsS0FBSyxHQUFHLENBQUM7QUFFOUIsU0FBSztBQUFBLE1BQ0gsSUFBSSw2QkFBNkIsS0FBSyxLQUFLLE1BQU07QUFDL0MsYUFBSyxjQUFjLEtBQUssSUFBSSxVQUFVLEdBQUcsZUFBZSxDQUFDLG9CQUFvQjtBQUMzRSxpQkFBTyxnQkFBZ0IsR0FBRztBQUFBLFFBQzVCLENBQUMsQ0FBQztBQUVGLG1CQUFXLE9BQU8saUJBQWlCLEtBQUssR0FBRyxHQUFHO0FBQzVDLGlCQUFPLEdBQUc7QUFBQSxRQUNaO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSDtBQUFBLEVBQ0Y7QUFDRjtBQVNPLFNBQVMsY0FBYyxRQUF1RDtBQUNuRixRQUFNLEVBQUUsS0FBSyxVQUFVLFVBQVUsSUFBSTtBQUNyQyxRQUFNLHNCQUFzQixVQUFVLFNBQVMsSUFBSSx5QkFBeUIsR0FBRyxDQUFDO0FBQ2hGLHNCQUFvQiwwQkFBMEIsUUFBUTtBQUN0RCxTQUFPO0FBQ1Q7QUFTTyxTQUFTLGtCQUFrQixRQUEyRDtBQUMzRixRQUFNLEVBQUUsS0FBSyxXQUFXLFVBQVUsSUFBSTtBQUN0QyxTQUFPLGNBQWM7QUFBQSxJQUNuQjtBQUFBLElBQ0EsU0FBUyxLQUFLO0FBQ1osWUFBTSxFQUFFLFVBQVUsSUFBSSxJQUFJLFNBQVM7QUFDbkMsZ0JBQVUsSUFBSSxTQUFTO0FBQ3ZCLGFBQU8sTUFBTTtBQUNYLGtCQUFVLE9BQU8sU0FBUztBQUFBLE1BQzVCO0FBQUEsSUFDRjtBQUFBLElBQ0E7QUFBQSxFQUNGLENBQUM7QUFDSDsiLCJuYW1lcyI6W119
|
|
@@ -131,4 +131,4 @@ export {
|
|
|
131
131
|
around,
|
|
132
132
|
hasPatchToken
|
|
133
133
|
};
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbmtleS1hcm91bmQtY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBJbXByb3ZlZCB0eXBlLXNhZmUgd3JhcHBlciBvZiB7QGxpbmsgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvbW9ua2V5LWFyb3VuZH0gbGlicmFyeS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNGdW5jdGlvbiB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9mdW5jdGlvbic7XG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNPYmplY3QgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHlwZS1ndWFyZHMnO1xuaW1wb3J0IHR5cGUgeyBDb25kaXRpb25hbEtleXMgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBhcm91bmQgYXMgb3JpZ2luYWxBcm91bmQgfSBmcm9tICdtb25rZXktYXJvdW5kJztcblxuaW1wb3J0IHsgZ2V0T2JzaWRpYW5MaWJTdGF0ZSB9IGZyb20gJy4uL29ic2lkaWFuLWxpYi1zdGF0ZS50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFeCB9IGZyb20gJy4vY29tcG9uZW50LWV4LnRzJztcblxuLyoqXG4gKiBBIHR5cGUgb2YgdGhlIGZhY3RvcmllcyB0byBhcHBseSB0byB0aGUgb2JqZWN0LlxuICpcbiAqIEB0eXBlUGFyYW0gJE9iamVjdCAtIFRoZSBvYmplY3QgdG8gcGF0Y2guXG4gKi9cbmV4cG9ydCB0eXBlIEZhY3RvcmllczwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0PiA9IFBhcnRpYWw8RnVsbEZhY3RvcmllczwkT2JqZWN0Pj47XG5cbi8qKlxuICogS2V5cyBvZiBgT2JqYCB3aG9zZSB2YWx1ZSBpcyBjYWxsYWJsZSDigJQgYSBtZXRob2QsIG9yIGEgZnVuY3Rpb24tbGlrZSBvYmplY3Qgc3VjaCBhcyBhIGBEZWJvdW5jZXJgLiBUaGVzZSBhcmUgdGhlIG1lbWJlcnNcbiAqIGFjY2VwdGVkIGJ5IHtAbGluayBNb25rZXlBcm91bmRDb21wb25lbnQjcmVnaXN0ZXJGdW5jdGlvblBhdGNofS5cbiAqXG4gKiBAdHlwZVBhcmFtICRPYmplY3QgLSBUaGUgb2JqZWN0IHdob3NlIGtleXMgYXJlIGZpbHRlcmVkLlxuICovXG5leHBvcnQgdHlwZSBGdW5jdGlvbktleXM8JE9iamVjdCBleHRlbmRzIG9iamVjdD4gPSBDb25kaXRpb25hbEtleXM8JE9iamVjdCwgR2VuZXJpY0Z1bmN0aW9uIHwgdW5kZWZpbmVkPiAmIGtleW9mICRPYmplY3Q7XG5cbi8qKlxuICogS2V5cyBvZiBgT2JqYCB3aG9zZSB2YWx1ZSBpcyBhIHBsYWluIGZ1bmN0aW9uIChhIFwicmVhbCBtZXRob2RcIikuIEZ1bmN0aW9uLWxpa2Ugb2JqZWN0cyB0aGF0IGNhcnJ5IGV4dHJhIG1lbWJlcnMgYXJlXG4gKiBleGNsdWRlZCDigJQgZS5nLiBhIGBEZWJvdW5jZXJgICh3aGljaCBhZGRzIGBjYW5jZWxgL2BydW5gKSBiZWxvbmdzIHRvIHtAbGluayBNb25rZXlBcm91bmRDb21wb25lbnQjcmVnaXN0ZXJGdW5jdGlvblBhdGNofSxcbiAqIG5vdCB7QGxpbmsgTW9ua2V5QXJvdW5kQ29tcG9uZW50I3JlZ2lzdGVyTWV0aG9kUGF0Y2h9LiBUaGUgY2hlY2sgaXMgd2hldGhlciB0aGUgbWVtYmVyIGhhcyBhbnkgb3duIGtleXMgYmV5b25kIGEgYmFyZVxuICogZnVuY3Rpb24ncyAoYEV4Y2x1ZGU8a2V5b2YgVCwga2V5b2YgR2VuZXJpY0Z1bmN0aW9uPmAgaXMgYG5ldmVyYCkuXG4gKlxuICogQHR5cGVQYXJhbSAkT2JqZWN0IC0gVGhlIG9iamVjdCB3aG9zZSBrZXlzIGFyZSBmaWx0ZXJlZC5cbiAqL1xuZXhwb3J0IHR5cGUgTWV0aG9kS2V5czwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0PiA9IE1ldGhvZEtleXNNYXA8JE9iamVjdD5bRnVuY3Rpb25LZXlzPCRPYmplY3Q+XTtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIHBhc3NlZCB0byB7QGxpbmsgTW9ua2V5QXJvdW5kQ29tcG9uZW50I3JlZ2lzdGVyRnVuY3Rpb25QYXRjaH0uXG4gKlxuICogQHR5cGVQYXJhbSAkT2JqZWN0IC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAqIEB0eXBlUGFyYW0gRnVuY3Rpb25OYW1lIC0gVGhlIGZ1bmN0aW9uIG5hbWUgdG8gcGF0Y2guXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9ua2V5QXJvdW5kQ29tcG9uZW50UmVnaXN0ZXJGdW5jdGlvblBhdGNoUGFyYW1zPCRPYmplY3QgZXh0ZW5kcyBvYmplY3QsIEZ1bmN0aW9uTmFtZSBleHRlbmRzIEZ1bmN0aW9uS2V5czwkT2JqZWN0Pj4ge1xuICAvKipcbiAgICogVGhlIG9iamVjdCB0byBwYXRjaC5cbiAgICovXG4gIHJlYWRvbmx5ICRvYmplY3Q6ICRPYmplY3Q7XG5cbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbiBuYW1lIHRvIHBhdGNoLlxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25OYW1lOiBGdW5jdGlvbk5hbWU7XG5cbiAgLyoqXG4gICAqIFdoZW4gYHRydWVgLCB0aGUgcGF0Y2ggdW5pbnN0YWxscyBpdHNlbGYgdGhlIGZpcnN0IHRpbWUgdGhlIHBhdGNoZWQgZnVuY3Rpb24gaXMgaW52b2tlZCAoYnlcbiAgICogdW5sb2FkaW5nIHRoaXMgY29tcG9uZW50KSwgcmVzdG9yaW5nIHRoZSBvcmlnaW5hbCDigJQgc28gdGhlIGludGVyY2VwdGlvbiBoYXBwZW5zIGV4YWN0bHkgb25jZS5cbiAgICogSW50ZW5kZWQgZm9yIGEgY29tcG9uZW50IGRlZGljYXRlZCB0byB0aGlzIHNpbmdsZSBwYXRjaC4gRXhpc3RpbmcgY2FsbGVycyB0aGF0IG9taXQgaXQgYXJlXG4gICAqIHVuYWZmZWN0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IG9uY2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQYXRjaCBoYW5kbGVyIGZ1bmN0aW9uIHRoYXQgdGFrZXMgdGhlIG9yaWdpbmFsIHZhbHVlIGFuZCByZXR1cm5zIHRoZSBwYXRjaGVkIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0gb3JpZ2luYWxWYWx1ZSAtIFRoZSBvcmlnaW5hbCB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24uXG4gICAqIEByZXR1cm5zIFRoZSBwYXRjaGVkIHZhbHVlIG9mIHRoZSBmdW5jdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGNoSGFuZGxlcjogKG9yaWdpbmFsVmFsdWU6ICRPYmplY3RbRnVuY3Rpb25OYW1lXSkgPT4gJE9iamVjdFtGdW5jdGlvbk5hbWVdO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgcGFzc2VkIHRvIHtAbGluayBNb25rZXlBcm91bmRDb21wb25lbnQjcmVnaXN0ZXJNZXRob2RQYXRjaH0uXG4gKlxuICogQHR5cGVQYXJhbSAkT2JqZWN0IC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAqIEB0eXBlUGFyYW0gTWV0aG9kTmFtZSAtIFRoZSBtZXRob2QgbmFtZSB0byBwYXRjaC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb25rZXlBcm91bmRDb21wb25lbnRSZWdpc3Rlck1ldGhvZFBhdGNoUGFyYW1zPCRPYmplY3QgZXh0ZW5kcyBvYmplY3QsIE1ldGhvZE5hbWUgZXh0ZW5kcyBNZXRob2RLZXlzPCRPYmplY3Q+PiB7XG4gIC8qKlxuICAgKiBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICAgKi9cbiAgcmVhZG9ubHkgJG9iamVjdDogJE9iamVjdDtcblxuICAvKipcbiAgICogVGhlIG1ldGhvZCBuYW1lIHRvIHBhdGNoLlxuICAgKi9cbiAgcmVhZG9ubHkgbWV0aG9kTmFtZTogTWV0aG9kTmFtZTtcblxuICAvKipcbiAgICogV2hlbiBgdHJ1ZWAsIHRoZSBwYXRjaCB1bmluc3RhbGxzIGl0c2VsZiB0aGUgZmlyc3QgdGltZSB0aGUgcGF0Y2hlZCBtZXRob2QgaXMgaW52b2tlZCwgcmVzdG9yaW5nXG4gICAqIHRoZSBvcmlnaW5hbCDigJQgc28gdGhlIGludGVyY2VwdGlvbiBoYXBwZW5zIGV4YWN0bHkgb25jZS4gRXhpc3RpbmcgY2FsbGVycyB0aGF0IG9taXQgaXQgYXJlXG4gICAqIHVuYWZmZWN0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IG9uY2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0Y2ggaGFuZGxlciBmdW5jdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGNoSGFuZGxlcjogUGF0Y2hIYW5kbGVyRnVuY3Rpb248JE9iamVjdCwgTWV0aG9kTmFtZT47XG5cbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsIHRva2VuIHRvIGlkZW50aWZ5IHRoZSBwYXRjaC5cbiAgICpcbiAgICogVGhlIHRva2VuIGlzIHJlY29yZGVkIGFnYWluc3QgdGhlIG1ldGhvZCB0aGlzIHBhdGNoIElOU1RBTExTLCBzbyB0aGUgbmV4dCBwYXRjaCBvZiB0aGUgc2FtZSBtZXRob2RcbiAgICogZGV0ZWN0cyBpdCB2aWEge0BsaW5rIGhhc1BhdGNoVG9rZW59IG9uIGl0cyBvd24gYG9yaWdpbmFsTWV0aG9kYCBhbmQgY2FuIGRlZmVyIHRvIHRoaXMgb25lLiBUaGVcbiAgICogcGF0Y2ggdGhhdCBpbnN0YWxscyBhIHRva2VuIHRoZXJlZm9yZSBuZXZlciBzZWVzIGl0cyBvd24gdG9rZW4g4oCUIG9ubHkgdGhlIHBhdGNoZXMgc3RhY2tlZCBvbiB0b3Agb2ZcbiAgICogaXQgZG8uIFVzZSBhIGBTeW1ib2wuZm9yYCB0b2tlbiB0byBtYWtlIHRoZSBkZXRlY3Rpb24gd29yayBhY3Jvc3MgaW5kZXBlbmRlbnRseSBidW5kbGVkIGNvcGllcyBvZlxuICAgKiB0aGlzIGxpYnJhcnkuXG4gICAqXG4gICAqIFRoZSB0b2tlbiBpcyBkcm9wcGVkIHdoZW4gdGhpcyBjb21wb25lbnQgdW5sb2Fkcywgc28gYSBsYXRlciBwYXRjaCB0aGF0IGhhZCBkZWZlcnJlZCB0YWtlcyBvdmVyIG9uXG4gICAqIGl0cyBuZXh0IGNhbGwuXG4gICAqL1xuICByZWFkb25seSBwYXRjaFRva2VuPzogc3ltYm9sO1xuXG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBwb3N0LXBhdGNoIGhhbmRsZXIgZnVuY3Rpb24gdGhhdCBydW5zIGFmdGVyIHRoZSBwYXRjaCBpcyBhcHBsaWVkLCB0eXBpY2FsbHkgdG8ga2VlcCB0aGUgb3JpZ2luYWwgbWV0aG9kLlxuICAgKi9cbiAgcmVhZG9ubHkgcG9zdFBhdGNoSGFuZGxlcj86IFBvc3RQYXRjaEhhbmRsZXJGdW5jdGlvbjwkT2JqZWN0LCBNZXRob2ROYW1lPjtcbn1cblxuLyoqXG4gKiBBIHBhdGNoIGhhbmRsZXIgZnVuY3Rpb24gdGhhdCBpbnRlcmNlcHRzIGNhbGxzIHRvIGEgbWV0aG9kIG9uIGFuIG9iamVjdC5cbiAqXG4gKiBAdHlwZVBhcmFtICRPYmplY3QgLSBUaGUgb2JqZWN0IGJlaW5nIHBhdGNoZWQuXG4gKiBAdHlwZVBhcmFtIE1ldGhvZE5hbWUgLSBUaGUgbWV0aG9kIG5hbWUgYmVpbmcgcGF0Y2hlZC5cbiAqL1xuZXhwb3J0IHR5cGUgUGF0Y2hIYW5kbGVyRnVuY3Rpb248JE9iamVjdCBleHRlbmRzIG9iamVjdCwgTWV0aG9kTmFtZSBleHRlbmRzIE1ldGhvZEtleXM8JE9iamVjdD4+ID0gKFxuICBwYXJhbXM6IFBhdGNoSGFuZGxlclBhcmFtczwkT2JqZWN0LCBNZXRob2ROYW1lPlxuKSA9PiBSZXR1cm5UeXBlPEV4dHJhY3RGdW5jdGlvbjwkT2JqZWN0LCBNZXRob2ROYW1lPj47XG5cbi8qKlxuICogUGFyYW1ldGVycyBwYXNzZWQgdG8gYSB7QGxpbmsgUGF0Y2hIYW5kbGVyRnVuY3Rpb259IGNhbGxiYWNrLlxuICpcbiAqIEB0eXBlUGFyYW0gJE9iamVjdCAtIFRoZSBvYmplY3QgYmVpbmcgcGF0Y2hlZC5cbiAqIEB0eXBlUGFyYW0gTWV0aG9kTmFtZSAtIFRoZSBtZXRob2QgbmFtZSBiZWluZyBwYXRjaGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhdGNoSGFuZGxlclBhcmFtczwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0LCBNZXRob2ROYW1lIGV4dGVuZHMgTWV0aG9kS2V5czwkT2JqZWN0Pj4ge1xuICAvKipcbiAgICogSW52b2tlcyB0aGUgb3JpZ2luYWwgbWV0aG9kIHdpdGggdGhlIG9yaWdpbmFsIGB0aGlzYCBhbmQgYXJndW1lbnRzLlxuICAgKlxuICAgKiBAcmV0dXJucyBXaGF0ZXZlciB0aGUgb3JpZ2luYWwgbWV0aG9kIHJldHVybnMuXG4gICAqL1xuICByZWFkb25seSBmYWxsYmFjazogKCkgPT4gUmV0dXJuVHlwZTxFeHRyYWN0RnVuY3Rpb248JE9iamVjdCwgTWV0aG9kTmFtZT4+O1xuXG4gIC8qKlxuICAgKiBUaGUgb3JpZ2luYWwgYXJndW1lbnRzIG9mIHRoZSBpbnRlcmNlcHRlZCBjYWxsLCBhcyBhIHR1cGxlLlxuICAgKi9cbiAgcmVhZG9ubHkgb3JpZ2luYWxBcmd1bWVudHM6IFBhcmFtZXRlcnM8RXh0cmFjdEZ1bmN0aW9uPCRPYmplY3QsIE1ldGhvZE5hbWU+PjtcblxuICAvKipcbiAgICogVGhlIG9yaWdpbmFsICh1bnBhdGNoZWQpIG1ldGhvZC4gQ2FsbCB2aWEgYG9yaWdpbmFsRm4uY2FsbChvcmlnaW5hbFRoaXMsIC4uLm9yaWdpbmFsQXJncylgLlxuICAgKi9cbiAgcmVhZG9ubHkgb3JpZ2luYWxNZXRob2Q6IEV4dHJhY3RGdW5jdGlvbjwkT2JqZWN0LCBNZXRob2ROYW1lPjtcblxuICAvKipcbiAgICogVGhlIG9yaWdpbmFsIG1ldGhvZCwgYnV0IHdpdGggdGhlIGB0aGlzYCBjb250ZXh0IGFscmVhZHkgYm91bmQgdG8gdGhlIG9yaWdpbmFsIG9iamVjdC4gQ2FsbCB2aWEgYG9yaWdpbmFsTWV0aG9kQm91bmQoLi4ub3JpZ2luYWxBcmdzKWAuXG4gICAqL1xuICByZWFkb25seSBvcmlnaW5hbE1ldGhvZEJvdW5kOiBPbWl0VGhpc1BhcmFtZXRlcjxFeHRyYWN0RnVuY3Rpb248JE9iamVjdCwgTWV0aG9kTmFtZT4+O1xuXG4gIC8qKlxuICAgKiBUaGUgb3JpZ2luYWwgYHRoaXNgIGNvbnRleHQgb2YgdGhlIGludGVyY2VwdGVkIGNhbGwuXG4gICAqL1xuICByZWFkb25seSBvcmlnaW5hbFRoaXM6ICRPYmplY3Q7XG59XG5cbi8qKlxuICogQSBwb3N0LXBhdGNoIGhhbmRsZXIgZnVuY3Rpb24gdGhhdCBydW5zIGFmdGVyIGEgcGF0Y2ggaXMgYXBwbGllZC5cbiAqXG4gKiBJdCByZXR1cm5zIG5vdGhpbmcgYW5kIGlzIG5vdCBoYW5kZWQgdGhlIHBhdGNoZWQgbWV0aG9kOiB0aGUgbWV0aG9kIGluc3RhbGxlZCBpcyBhbHdheXMgdGhlIG9uZSB0aGUgcGF0Y2ggYnVpbGRzLCBzb1xuICogYSBwb3N0LXBhdGNoIGhhbmRsZXIgY2Fubm90IGdyYWZ0IG1lbWJlcnMgb250byBpdC4gQSBjYXBhYmlsaXR5IGJleW9uZCB0aGUgcGF0Y2hlZCBtZXRob2QncyBvd24gc2lnbmF0dXJlIGJlbG9uZ3NcbiAqIG9uIHRoZSBwbHVnaW4ncyBwdWJsaXNoZWQgQVBJIGluc3RlYWQuXG4gKlxuICogQHR5cGVQYXJhbSAkT2JqZWN0IC0gVGhlIG9iamVjdCBiZWluZyBwYXRjaGVkLlxuICogQHR5cGVQYXJhbSBNZXRob2ROYW1lIC0gVGhlIG1ldGhvZCBuYW1lIGJlaW5nIHBhdGNoZWQuXG4gKi9cbmV4cG9ydCB0eXBlIFBvc3RQYXRjaEhhbmRsZXJGdW5jdGlvbjwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0LCBNZXRob2ROYW1lIGV4dGVuZHMgTWV0aG9kS2V5czwkT2JqZWN0Pj4gPSAoXG4gIHBhcmFtczogUG9zdFBhdGNoSGFuZGxlclBhcmFtczwkT2JqZWN0LCBNZXRob2ROYW1lPlxuKSA9PiB2b2lkO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgcGFzc2VkIHRvIGEge0BsaW5rIFBvc3RQYXRjaEhhbmRsZXJGdW5jdGlvbn0gY2FsbGJhY2suXG4gKlxuICogQHR5cGVQYXJhbSAkT2JqZWN0IC0gVGhlIG9iamVjdCBiZWluZyBwYXRjaGVkLlxuICogQHR5cGVQYXJhbSBNZXRob2ROYW1lIC0gVGhlIG1ldGhvZCBuYW1lIGJlaW5nIHBhdGNoZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9zdFBhdGNoSGFuZGxlclBhcmFtczwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0LCBNZXRob2ROYW1lIGV4dGVuZHMgTWV0aG9kS2V5czwkT2JqZWN0Pj4ge1xuICAvKipcbiAgICogVGhlIG9yaWdpbmFsICh1bnBhdGNoZWQpIG1ldGhvZC4gQ2FsbCB2aWEgYG9yaWdpbmFsRm4uY2FsbChvcmlnaW5hbFRoaXMsIC4uLm9yaWdpbmFsQXJncylgLlxuICAgKi9cbiAgcmVhZG9ubHkgb3JpZ2luYWxNZXRob2Q6IEV4dHJhY3RGdW5jdGlvbjwkT2JqZWN0LCBNZXRob2ROYW1lPjtcbn1cblxudHlwZSBFeHRyYWN0RnVuY3Rpb248JE9iamVjdCBleHRlbmRzIG9iamVjdCwgTWV0aG9kTmFtZSBleHRlbmRzIE1ldGhvZEtleXM8JE9iamVjdD4+ID0gR2VuZXJpY0Z1bmN0aW9uPFBhcmFtZXRlcnM8RXh0cmFjdDwkT2JqZWN0W01ldGhvZE5hbWVdLCBHZW5lcmljRnVuY3Rpb24+PiwgUmV0dXJuVHlwZTxFeHRyYWN0PCRPYmplY3RbTWV0aG9kTmFtZV0sIEdlbmVyaWNGdW5jdGlvbj4+PjtcblxudHlwZSBGdWxsRmFjdG9yaWVzPCRPYmplY3QgZXh0ZW5kcyBvYmplY3Q+ID0ge1xuICBbS2V5IGluIGtleW9mICRPYmplY3RdOiAob3JpZ2luYWxWYWx1ZTogJE9iamVjdFtLZXldKSA9PiAkT2JqZWN0W0tleV07XG59O1xuXG50eXBlIE1ldGhvZEtleXNNYXA8JE9iamVjdCBleHRlbmRzIG9iamVjdD4gPSB7XG4gIFtLZXkgaW4gRnVuY3Rpb25LZXlzPCRPYmplY3Q+XTogW0V4Y2x1ZGU8a2V5b2YgTm9uTnVsbGFibGU8JE9iamVjdFtLZXldPiwga2V5b2YgR2VuZXJpY0Z1bmN0aW9uPl0gZXh0ZW5kcyBbbmV2ZXJdID8gS2V5IDogbmV2ZXI7XG59O1xuXG50eXBlIE9yaWdpbmFsRmFjdG9yaWVzPCRPYmplY3QgZXh0ZW5kcyBHZW5lcmljT2JqZWN0PiA9IFBhcmFtZXRlcnM8dHlwZW9mIG9yaWdpbmFsQXJvdW5kPCRPYmplY3Q+PlsxXTtcblxudHlwZSBVbmluc3RhbGxlciA9ICgpID0+IHZvaWQ7XG5cbi8qKlxuICogQSBjb21wb25lbnQgdGhhdCBtYW5hZ2VzIG1vbmtleS1wYXRjaGVzIHdpdGggbGlmZWN5Y2xlLWJvdW5kIGNsZWFudXAuXG4gKiBBbGwgcGF0Y2hlcyByZWdpc3RlcmVkIHZpYSB0aGlzIGNvbXBvbmVudCBhcmUgYXV0b21hdGljYWxseSB1bmluc3RhbGxlZCB3aGVuIHRoZSBjb21wb25lbnQgdW5sb2Fkcy5cbiAqL1xuZXhwb3J0IGNsYXNzIE1vbmtleUFyb3VuZENvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEV4IHtcbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIHBhdGNoIGZvciBhIHNpbmdsZSBmdW5jdGlvbi1saWtlIG1lbWJlciAoYSBtZXRob2QsIG9yIGEgY2FsbGFibGUgc3VjaCBhcyBhIGBEZWJvdW5jZXJgKSB1c2luZyBhIHNpbXBsaWZpZWQgaGFuZGxlci5cbiAgICpcbiAgICogQHR5cGVQYXJhbSAkT2JqZWN0IC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAgICogQHR5cGVQYXJhbSBGdW5jdGlvbk5hbWUgLSBUaGUgZnVuY3Rpb24gbmFtZSB0byBwYXRjaC5cbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBwYXRjaC5cbiAgICovXG4gIHB1YmxpYyByZWdpc3RlckZ1bmN0aW9uUGF0Y2g8JE9iamVjdCBleHRlbmRzIG9iamVjdCwgY29uc3QgRnVuY3Rpb25OYW1lIGV4dGVuZHMgRnVuY3Rpb25LZXlzPCRPYmplY3Q+PihcbiAgICBwYXJhbXM6IE1vbmtleUFyb3VuZENvbXBvbmVudFJlZ2lzdGVyRnVuY3Rpb25QYXRjaFBhcmFtczwkT2JqZWN0LCBGdW5jdGlvbk5hbWU+XG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW5zdXJlTG9hZGVkKCk7XG5cbiAgICBjb25zdCBmYWN0b3JpZXM6IEZhY3RvcmllczwkT2JqZWN0PiA9IHt9O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLWltbWVkaWF0ZS1tdXRhdGlvbiAtLSBBIGNvbXB1dGVkIGtleSBpbiBhbiBvYmplY3QgbGl0ZXJhbCBkb2VzIG5vdCBtYXRjaCBgUGFydGlhbDxGdWxsRmFjdG9yaWVzPCRPYmplY3Q+PmAgd2hlbiB0aGUga2V5IHR5cGUgaXMgZ2VuZXJpYzsgYXNzaWduaW5nIGFmdGVyIGRlY2xhcmF0aW9uIGtlZXBzIHRoZSB0YXJnZXQgdHlwZSBrbm93bi5cbiAgICBmYWN0b3JpZXNbcGFyYW1zLmZ1bmN0aW9uTmFtZV0gPSAob3JpZ2luYWxWYWx1ZTogJE9iamVjdFtGdW5jdGlvbk5hbWVdKTogJE9iamVjdFtGdW5jdGlvbk5hbWVdID0+IHtcbiAgICAgIGNvbnN0IHBhdGNoZWRWYWx1ZSA9IHBhcmFtcy5wYXRjaEhhbmRsZXIob3JpZ2luYWxWYWx1ZSk7XG4gICAgICBpZiAoIXBhcmFtcy5vbmNlKSB7XG4gICAgICAgIHJldHVybiBwYXRjaGVkVmFsdWU7XG4gICAgICB9XG5cbiAgICAgIC8vIEEgYG9uY2VgIHBhdGNoIHVubG9hZHMgdGhpcyBjb21wb25lbnQgYWZ0ZXIgdGhlIGZpcnN0IGludm9jYXRpb24g4oCUIHJ1bm5pbmcgdGhlIHJlZ2lzdGVyZWRcbiAgICAgIC8vIHVuaW5zdGFsbGVyIGFuZCByZXN0b3JpbmcgdGhlIG9yaWdpbmFsLiBgdW5sb2FkQ29tcG9uZW50YCBpcyBhbiBhcnJvdyBzbyBpdCBjYXB0dXJlcyB0aGVcbiAgICAgIC8vIGNvbXBvbmVudCBgdGhpc2A7IHRoZSBuZXN0ZWQgYG9uY2VQYXRjaGVkVmFsdWVgIG11c3QgYmUgYSBmdW5jdGlvbiB0byByZWNlaXZlIHRoZSBjYWxsLXRpbWVcbiAgICAgIC8vIGB0aGlzYC4gT3duIG1lbWJlcnMgKGUuZy4gYSBgRGVib3VuY2VyYCdzIGBjYW5jZWxgL2BydW5gKSBhcmUgY29waWVkIG9udG8gaXQgc28gZnVuY3Rpb24tbGlrZVxuICAgICAgLy8gdmFsdWVzIGtlZXAgd29ya2luZy5cbiAgICAgIGNvbnN0IHVubG9hZENvbXBvbmVudCA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy51bmxvYWQoKTtcbiAgICAgIH07XG4gICAgICBmdW5jdGlvbiBvbmNlUGF0Y2hlZFZhbHVlKHRoaXM6IHVua25vd24sIC4uLiRhcmd1bWVudHM6IHVua25vd25bXSk6IHVua25vd24ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBSZWZsZWN0LmFwcGx5KHBhdGNoZWRWYWx1ZSwgdGhpcywgJGFyZ3VtZW50cyk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgdW5sb2FkQ29tcG9uZW50KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKG9uY2VQYXRjaGVkVmFsdWUsIHBhdGNoZWRWYWx1ZSkgYXMgJE9iamVjdFtGdW5jdGlvbk5hbWVdO1xuICAgIH07XG5cbiAgICB0aGlzLnJlZ2lzdGVyUGF0Y2gocGFyYW1zLiRvYmplY3QsIGZhY3Rvcmllcyk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgc2luZ2xlLW1ldGhvZCBwYXRjaCB1c2luZyBhIHNpbXBsaWZpZWQgaGFuZGxlci5cbiAgICpcbiAgICogQHR5cGVQYXJhbSAkT2JqZWN0IC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAgICogQHR5cGVQYXJhbSBNZXRob2ROYW1lIC0gVGhlIG1ldGhvZCBuYW1lIHRvIHBhdGNoLlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHBhdGNoLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyTWV0aG9kUGF0Y2g8JE9iamVjdCBleHRlbmRzIG9iamVjdCwgY29uc3QgTWV0aG9kTmFtZSBleHRlbmRzIE1ldGhvZEtleXM8JE9iamVjdD4+KFxuICAgIHBhcmFtczogTW9ua2V5QXJvdW5kQ29tcG9uZW50UmVnaXN0ZXJNZXRob2RQYXRjaFBhcmFtczwkT2JqZWN0LCBNZXRob2ROYW1lPlxuICApOiB2b2lkIHtcbiAgICB0aGlzLmVuc3VyZUxvYWRlZCgpO1xuXG4gICAgdHlwZSAkRnVuY3Rpb24gPSBFeHRyYWN0RnVuY3Rpb248JE9iamVjdCwgTWV0aG9kTmFtZT47XG5cbiAgICB0aGlzLnJlZ2lzdGVyRnVuY3Rpb25QYXRjaCh7XG4gICAgICAkb2JqZWN0OiBwYXJhbXMuJG9iamVjdCxcbiAgICAgIGZ1bmN0aW9uTmFtZTogcGFyYW1zLm1ldGhvZE5hbWUsXG4gICAgICBvbmNlOiBwYXJhbXMub25jZSA/PyBmYWxzZSxcbiAgICAgIHBhdGNoSGFuZGxlcjogKG9yaWdpbmFsTWV0aG9kUmF3KSA9PiB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kID0gb3JpZ2luYWxNZXRob2RSYXcgYXMgJEZ1bmN0aW9uO1xuICAgICAgICBwYXJhbXMucG9zdFBhdGNoSGFuZGxlcj8uKHsgb3JpZ2luYWxNZXRob2QgfSk7XG4gICAgICAgIHJldHVybiBwYXRjaGVkTWV0aG9kIGFzICRPYmplY3RbTWV0aG9kTmFtZV07XG5cbiAgICAgICAgZnVuY3Rpb24gcGF0Y2hlZE1ldGhvZCh0aGlzOiAkT2JqZWN0LCAuLi5vcmlnaW5hbEFyZ3VtZW50czogUGFyYW1ldGVyczwkRnVuY3Rpb24+KTogUmV0dXJuVHlwZTwkRnVuY3Rpb24+IHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC10aGlzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhcywgdW5pY29ybi9uby10aGlzLWFzc2lnbm1lbnQgLS0gV2UgbmVlZCB0byB1c2UgdGhlIGB0aGlzYCBjb250ZXh0LlxuICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVGhpcyA9IHRoaXM7XG4gICAgICAgICAgcmV0dXJuIHBhcmFtcy5wYXRjaEhhbmRsZXIoe1xuICAgICAgICAgICAgZmFsbGJhY2soKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbE1ldGhvZC5jYWxsKG9yaWdpbmFsVGhpcywgLi4ub3JpZ2luYWxBcmd1bWVudHMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9yaWdpbmFsQXJndW1lbnRzLFxuICAgICAgICAgICAgb3JpZ2luYWxNZXRob2QsXG4gICAgICAgICAgICBvcmlnaW5hbE1ldGhvZEJvdW5kOiBvcmlnaW5hbE1ldGhvZC5iaW5kKG9yaWdpbmFsVGhpcyksXG4gICAgICAgICAgICBvcmlnaW5hbFRoaXNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFwYXJhbXMucGF0Y2hUb2tlbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFRoZSB0b2tlbiBtYXJrcyB0aGUgSU5TVEFMTEVEIG1ldGhvZCwgcmVhZCBiYWNrIG9uY2UgdGhlIHBhdGNoIGlzIGluIHBsYWNlLlxuICAgIC8vIFRoYXQgaXMgdGhlIGlkZW50aXR5IHRoZSBuZXh0IHBhdGNoIG9mIHRoZSBzYW1lIG1ldGhvZCByZWNlaXZlcyBhcyBpdHMgYG9yaWdpbmFsTWV0aG9kYC5cbiAgICAvLyBgbW9ua2V5LWFyb3VuZGAgaW5zdGFsbHMgYSB3cmFwcGVyIG9mIGl0cyBvd24gYW5kIGV4cG9zZXMgdGhlIHZhbHVlIGJ1aWx0IGFib3ZlIG9ubHkgdmlhIGl0cyBwcm90b3R5cGUuXG4gICAgLy8gTWFya2luZyB0aGF0IHZhbHVlLCBvciB0aGUgbWV0aG9kIGJlaW5nIHdyYXBwZWQgYXMgdGhpcyBvbmNlIGRpZCwgbWF0Y2hlcyBub3RoaW5nIHRoZSBuZXh0IHBhdGNoIHNlZXMuXG4gICAgLy8gRHJvcHBpbmcgdGhlIHRva2VuIG9uIHVubG9hZCBsZXRzIGEgZGVmZXJyaW5nIGxhdGVyIHBhdGNoIHRha2Ugb3Zlciwgc2luY2UgdGhlIGd1YXJkIGlzIHJlYWQgcGVyIGNhbGwuXG4gICAgY29uc3QgcGF0Y2hlZE1ldGhvZCA9IHBhcmFtcy4kb2JqZWN0W3BhcmFtcy5tZXRob2ROYW1lXSBhcyBHZW5lcmljRnVuY3Rpb247XG4gICAgY29uc3QgbW9ua2V5QXJvdW5kUGF0Y2hlcyA9IGdldE1vbmtleUFyb3VuZFBhdGNoZXMoKTtcbiAgICBtb25rZXlBcm91bmRQYXRjaGVzLnNldChwYXRjaGVkTWV0aG9kLCBwYXJhbXMucGF0Y2hUb2tlbik7XG4gICAgdGhpcy5yZWdpc3RlcigoKSA9PiB7XG4gICAgICBtb25rZXlBcm91bmRQYXRjaGVzLmRlbGV0ZShwYXRjaGVkTWV0aG9kKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBwYXRjaCB1c2luZyByYXcgZmFjdG9yaWVzIChhZHZhbmNlZCBBUEkpLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtICRPYmplY3QgLSBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICAgKiBAcGFyYW0gJG9iamVjdCAtIFRoZSBvYmplY3QgdG8gcGF0Y2guXG4gICAqIEBwYXJhbSBmYWN0b3JpZXMgLSBUaGUgZmFjdG9yaWVzIHRvIGFwcGx5IHRvIHRoZSBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJQYXRjaDwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0Pigkb2JqZWN0OiAkT2JqZWN0LCBmYWN0b3JpZXM6IEZhY3RvcmllczwkT2JqZWN0Pik6IHZvaWQge1xuICAgIHRoaXMuZW5zdXJlTG9hZGVkKCk7XG5cbiAgICBjb25zdCB1bmluc3RhbGxlciA9IGFyb3VuZCgkb2JqZWN0LCBmYWN0b3JpZXMpO1xuICAgIHRoaXMucmVnaXN0ZXIodW5pbnN0YWxsZXIpO1xuICB9XG59XG5cbi8qKlxuICogQXBwbGllcyBhIHBhdGNoIHRvIHRoZSBvYmplY3QuXG4gKiBCZXR0ZXIgc3Ryb25nbHktdHlwZWQgdmVyc2lvbiBvZiBgbW9ua2V5LWFyb3VuZGAuXG4gKlxuICogQHR5cGVQYXJhbSAkT2JqZWN0IC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAqIEBwYXJhbSAkb2JqZWN0IC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAqIEBwYXJhbSBmYWN0b3JpZXMgLSBUaGUgZmFjdG9yaWVzIHRvIGFwcGx5IHRvIHRoZSBvYmplY3QuXG4gKiBAcmV0dXJucyBUaGUgdW5pbnN0YWxsZXIgdGhhdCByZW1vdmVzIHRoZSBwYXRjaCB3aGVuIGNhbGxlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFyb3VuZDwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0Pigkb2JqZWN0OiAkT2JqZWN0LCBmYWN0b3JpZXM6IEZhY3RvcmllczwkT2JqZWN0Pik6IFVuaW5zdGFsbGVyIHtcbiAgcmV0dXJuIG9yaWdpbmFsQXJvdW5kKCRvYmplY3QgYXMgR2VuZXJpY09iamVjdCwgZmFjdG9yaWVzIGFzIE9yaWdpbmFsRmFjdG9yaWVzPEdlbmVyaWNPYmplY3Q+KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBmdW5jdGlvbiBoYXMgYSBzcGVjaWZpYyBwYXRjaCB0b2tlbi5cbiAqXG4gKiBBIHRva2VuIGlzIGNhcnJpZWQgYnkgdGhlIG1ldGhvZCBhIHtAbGluayBNb25rZXlBcm91bmRDb21wb25lbnQjcmVnaXN0ZXJNZXRob2RQYXRjaH0gY2FsbCBJTlNUQUxMRUQsIHNvXG4gKiB0aGUgaW50ZW5kZWQgY2FsbGVyIGlzIGEgbGF0ZXIgcGF0Y2ggb2YgdGhlIHNhbWUgbWV0aG9kLCBjaGVja2luZyB0aGUgYG9yaWdpbmFsTWV0aG9kYCBpdCB3cmFwcGVkIGluXG4gKiBvcmRlciB0byBkZWZlciB0byB0aGUgcGF0Y2ggYWxyZWFkeSBpbiBwbGFjZTpcbiAqXG4gKiBgYGB0c1xuICogcGF0Y2hIYW5kbGVyOiAoeyBmYWxsYmFjaywgb3JpZ2luYWxNZXRob2QgfSkgPT4ge1xuICogICBpZiAoaGFzUGF0Y2hUb2tlbihvcmlnaW5hbE1ldGhvZCwgUEFUQ0hfVE9LRU4pKSB7XG4gKiAgICAgcmV0dXJuIGZhbGxiYWNrKCk7XG4gKiAgIH1cbiAqICAgLi4uXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBUaGUgY2hlY2sgaXMgbWFkZSBwZXIgY2FsbCwgc28gaXQgc3RvcHMgcmVwb3J0aW5nIHRoZSBlYXJsaWVyIHBhdGNoIG9uY2UgdGhhdCBwYXRjaCdzIGNvbXBvbmVudCB1bmxvYWRzLlxuICpcbiAqIEBwYXJhbSAkZnVuY3Rpb24gLSBUaGUgZnVuY3Rpb24gdG8gY2hlY2suXG4gKiBAcGFyYW0gcGF0Y2hUb2tlbiAtIFRoZSBwYXRjaCB0b2tlbiB0byBjaGVjayBmb3IuXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBmdW5jdGlvbiBoYXMgdGhlIHBhdGNoIHRva2VuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzUGF0Y2hUb2tlbigkZnVuY3Rpb246IEdlbmVyaWNGdW5jdGlvbiwgcGF0Y2hUb2tlbjogc3ltYm9sKTogYm9vbGVhbiB7XG4gIHJldHVybiBnZXRNb25rZXlBcm91bmRQYXRjaGVzKCkuZ2V0KCRmdW5jdGlvbikgPT09IHBhdGNoVG9rZW47XG59XG5cbmZ1bmN0aW9uIGdldE1vbmtleUFyb3VuZFBhdGNoZXMoKTogV2Vha01hcDxHZW5lcmljRnVuY3Rpb24sIHN5bWJvbD4ge1xuICByZXR1cm4gZ2V0T2JzaWRpYW5MaWJTdGF0ZSgnbW9ua2V5QXJvdW5kUGF0Y2hlcycsIG5ldyBXZWFrTWFwPEdlbmVyaWNGdW5jdGlvbiwgc3ltYm9sPigpKS52YWx1ZTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVQSxTQUFTLFVBQVUsc0JBQXNCO0FBRXpDLFNBQVMsMkJBQTJCO0FBQ3BDLFNBQVMsbUJBQW1CO0FBNE1yQixNQUFNLDhCQUE4QixZQUFZO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVE5QyxzQkFDTCxRQUNNO0FBQ04sU0FBSyxhQUFhO0FBRWxCLFVBQU0sWUFBZ0MsQ0FBQztBQUV2QyxjQUFVLE9BQU8sWUFBWSxJQUFJLENBQUMsa0JBQWdFO0FBQ2hHLFlBQU0sZUFBZSxPQUFPLGFBQWEsYUFBYTtBQUN0RCxVQUFJLENBQUMsT0FBTyxNQUFNO0FBQ2hCLGVBQU87QUFBQSxNQUNUO0FBT0EsWUFBTSxrQkFBa0IsTUFBWTtBQUNsQyxhQUFLLE9BQU87QUFBQSxNQUNkO0FBQ0EsZUFBUyxvQkFBbUMsWUFBZ0M7QUFDMUUsWUFBSTtBQUNGLGlCQUFPLFFBQVEsTUFBTSxjQUFjLE1BQU0sVUFBVTtBQUFBLFFBQ3JELFVBQUU7QUFDQSwwQkFBZ0I7QUFBQSxRQUNsQjtBQUFBLE1BQ0Y7QUFDQSxhQUFPLE9BQU8sT0FBTyxrQkFBa0IsWUFBWTtBQUFBLElBQ3JEO0FBRUEsU0FBSyxjQUFjLE9BQU8sU0FBUyxTQUFTO0FBQUEsRUFDOUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU08sb0JBQ0wsUUFDTTtBQUNOLFNBQUssYUFBYTtBQUlsQixTQUFLLHNCQUFzQjtBQUFBLE1BQ3pCLFNBQVMsT0FBTztBQUFBLE1BQ2hCLGNBQWMsT0FBTztBQUFBLE1BQ3JCLE1BQU0sT0FBTyxRQUFRO0FBQUEsTUFDckIsY0FBYyxDQUFDLHNCQUFzQjtBQUNuQyxjQUFNLGlCQUFpQjtBQUN2QixlQUFPLG1CQUFtQixFQUFFLGVBQWUsQ0FBQztBQUM1QyxlQUFPQTtBQUVQLGlCQUFTQSxrQkFBZ0MsbUJBQWlFO0FBRXhHLGdCQUFNLGVBQWU7QUFDckIsaUJBQU8sT0FBTyxhQUFhO0FBQUEsWUFDekIsV0FBVztBQUNULHFCQUFPLGVBQWUsS0FBSyxjQUFjLEdBQUcsaUJBQWlCO0FBQUEsWUFDL0Q7QUFBQSxZQUNBO0FBQUEsWUFDQTtBQUFBLFlBQ0EscUJBQXFCLGVBQWUsS0FBSyxZQUFZO0FBQUEsWUFDckQ7QUFBQSxVQUNGLENBQUM7QUFBQSxRQUNIO0FBQUEsTUFDRjtBQUFBLElBQ0YsQ0FBQztBQUVELFFBQUksQ0FBQyxPQUFPLFlBQVk7QUFDdEI7QUFBQSxJQUNGO0FBT0EsVUFBTSxnQkFBZ0IsT0FBTyxRQUFRLE9BQU8sVUFBVTtBQUN0RCxVQUFNLHNCQUFzQix1QkFBdUI7QUFDbkQsd0JBQW9CLElBQUksZUFBZSxPQUFPLFVBQVU7QUFDeEQsU0FBSyxTQUFTLE1BQU07QUFDbEIsMEJBQW9CLE9BQU8sYUFBYTtBQUFBLElBQzFDLENBQUM7QUFBQSxFQUNIO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNPLGNBQXNDLFNBQWtCLFdBQXFDO0FBQ2xHLFNBQUssYUFBYTtBQUVsQixVQUFNLGNBQWMsT0FBTyxTQUFTLFNBQVM7QUFDN0MsU0FBSyxTQUFTLFdBQVc7QUFBQSxFQUMzQjtBQUNGO0FBV08sU0FBUyxPQUErQixTQUFrQixXQUE0QztBQUMzRyxTQUFPLGVBQWUsU0FBMEIsU0FBNkM7QUFDL0Y7QUF3Qk8sU0FBUyxjQUFjLFdBQTRCLFlBQTZCO0FBQ3JGLFNBQU8sdUJBQXVCLEVBQUUsSUFBSSxTQUFTLE1BQU07QUFDckQ7QUFFQSxTQUFTLHlCQUEyRDtBQUNsRSxTQUFPLG9CQUFvQix1QkFBdUIsb0JBQUksUUFBaUMsQ0FBQyxFQUFFO0FBQzVGOyIsIm5hbWVzIjpbInBhdGNoZWRNZXRob2QiXX0=
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbmtleS1hcm91bmQtY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBJbXByb3ZlZCB0eXBlLXNhZmUgd3JhcHBlciBvZiB7QGxpbmsgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvbW9ua2V5LWFyb3VuZH0gbGlicmFyeS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNGdW5jdGlvbiB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9mdW5jdGlvbic7XG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNPYmplY3QgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHlwZS1ndWFyZHMnO1xuaW1wb3J0IHR5cGUgeyBDb25kaXRpb25hbEtleXMgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBhcm91bmQgYXMgb3JpZ2luYWxBcm91bmQgfSBmcm9tICdtb25rZXktYXJvdW5kJztcblxuaW1wb3J0IHsgZ2V0T2JzaWRpYW5MaWJTdGF0ZSB9IGZyb20gJy4uL29ic2lkaWFuLWxpYi1zdGF0ZS50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFeCB9IGZyb20gJy4vY29tcG9uZW50LWV4LnRzJztcblxuLyoqXG4gKiBBIHR5cGUgb2YgdGhlIGZhY3RvcmllcyB0byBhcHBseSB0byB0aGUgb2JqZWN0LlxuICpcbiAqIEB0eXBlUGFyYW0gJE9iamVjdCAtIFRoZSBvYmplY3QgdG8gcGF0Y2guXG4gKi9cbmV4cG9ydCB0eXBlIEZhY3RvcmllczwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0PiA9IFBhcnRpYWw8RnVsbEZhY3RvcmllczwkT2JqZWN0Pj47XG5cbi8qKlxuICogS2V5cyBvZiBgT2JqYCB3aG9zZSB2YWx1ZSBpcyBjYWxsYWJsZSDigJQgYSBtZXRob2QsIG9yIGEgZnVuY3Rpb24tbGlrZSBvYmplY3Qgc3VjaCBhcyBhIGBEZWJvdW5jZXJgLiBUaGVzZSBhcmUgdGhlIG1lbWJlcnNcbiAqIGFjY2VwdGVkIGJ5IHtAbGluayBNb25rZXlBcm91bmRDb21wb25lbnQjcmVnaXN0ZXJGdW5jdGlvblBhdGNofS5cbiAqXG4gKiBAdHlwZVBhcmFtICRPYmplY3QgLSBUaGUgb2JqZWN0IHdob3NlIGtleXMgYXJlIGZpbHRlcmVkLlxuICovXG5leHBvcnQgdHlwZSBGdW5jdGlvbktleXM8JE9iamVjdCBleHRlbmRzIG9iamVjdD4gPSBDb25kaXRpb25hbEtleXM8JE9iamVjdCwgR2VuZXJpY0Z1bmN0aW9uIHwgdW5kZWZpbmVkPiAmIGtleW9mICRPYmplY3Q7XG5cbi8qKlxuICogS2V5cyBvZiBgT2JqYCB3aG9zZSB2YWx1ZSBpcyBhIHBsYWluIGZ1bmN0aW9uIChhIFwicmVhbCBtZXRob2RcIikuIEZ1bmN0aW9uLWxpa2Ugb2JqZWN0cyB0aGF0IGNhcnJ5IGV4dHJhIG1lbWJlcnMgYXJlXG4gKiBleGNsdWRlZCDigJQgZS5nLiBhIGBEZWJvdW5jZXJgICh3aGljaCBhZGRzIGBjYW5jZWxgL2BydW5gKSBiZWxvbmdzIHRvIHtAbGluayBNb25rZXlBcm91bmRDb21wb25lbnQjcmVnaXN0ZXJGdW5jdGlvblBhdGNofSxcbiAqIG5vdCB7QGxpbmsgTW9ua2V5QXJvdW5kQ29tcG9uZW50I3JlZ2lzdGVyTWV0aG9kUGF0Y2h9LiBUaGUgY2hlY2sgaXMgd2hldGhlciB0aGUgbWVtYmVyIGhhcyBhbnkgb3duIGtleXMgYmV5b25kIGEgYmFyZVxuICogZnVuY3Rpb24ncyAoYEV4Y2x1ZGU8a2V5b2YgVCwga2V5b2YgR2VuZXJpY0Z1bmN0aW9uPmAgaXMgYG5ldmVyYCkuXG4gKlxuICogQHR5cGVQYXJhbSAkT2JqZWN0IC0gVGhlIG9iamVjdCB3aG9zZSBrZXlzIGFyZSBmaWx0ZXJlZC5cbiAqL1xuZXhwb3J0IHR5cGUgTWV0aG9kS2V5czwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0PiA9IE1ldGhvZEtleXNNYXA8JE9iamVjdD5bRnVuY3Rpb25LZXlzPCRPYmplY3Q+XTtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIHBhc3NlZCB0byB7QGxpbmsgTW9ua2V5QXJvdW5kQ29tcG9uZW50I3JlZ2lzdGVyRnVuY3Rpb25QYXRjaH0uXG4gKlxuICogQHR5cGVQYXJhbSAkT2JqZWN0IC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAqIEB0eXBlUGFyYW0gRnVuY3Rpb25OYW1lIC0gVGhlIGZ1bmN0aW9uIG5hbWUgdG8gcGF0Y2guXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9ua2V5QXJvdW5kQ29tcG9uZW50UmVnaXN0ZXJGdW5jdGlvblBhdGNoUGFyYW1zPCRPYmplY3QgZXh0ZW5kcyBvYmplY3QsIEZ1bmN0aW9uTmFtZSBleHRlbmRzIEZ1bmN0aW9uS2V5czwkT2JqZWN0Pj4ge1xuICAvKipcbiAgICogVGhlIG9iamVjdCB0byBwYXRjaC5cbiAgICovXG4gIHJlYWRvbmx5ICRvYmplY3Q6ICRPYmplY3Q7XG5cbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbiBuYW1lIHRvIHBhdGNoLlxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25OYW1lOiBGdW5jdGlvbk5hbWU7XG5cbiAgLyoqXG4gICAqIFdoZW4gYHRydWVgLCB0aGUgcGF0Y2ggdW5pbnN0YWxscyBpdHNlbGYgdGhlIGZpcnN0IHRpbWUgdGhlIHBhdGNoZWQgZnVuY3Rpb24gaXMgaW52b2tlZCAoYnlcbiAgICogdW5sb2FkaW5nIHRoaXMgY29tcG9uZW50KSwgcmVzdG9yaW5nIHRoZSBvcmlnaW5hbCDigJQgc28gdGhlIGludGVyY2VwdGlvbiBoYXBwZW5zIGV4YWN0bHkgb25jZS5cbiAgICogSW50ZW5kZWQgZm9yIGEgY29tcG9uZW50IGRlZGljYXRlZCB0byB0aGlzIHNpbmdsZSBwYXRjaC4gRXhpc3RpbmcgY2FsbGVycyB0aGF0IG9taXQgaXQgYXJlXG4gICAqIHVuYWZmZWN0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IG9uY2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQYXRjaCBoYW5kbGVyIGZ1bmN0aW9uIHRoYXQgdGFrZXMgdGhlIG9yaWdpbmFsIHZhbHVlIGFuZCByZXR1cm5zIHRoZSBwYXRjaGVkIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0gb3JpZ2luYWxWYWx1ZSAtIFRoZSBvcmlnaW5hbCB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24uXG4gICAqIEByZXR1cm5zIFRoZSBwYXRjaGVkIHZhbHVlIG9mIHRoZSBmdW5jdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGNoSGFuZGxlcjogKG9yaWdpbmFsVmFsdWU6ICRPYmplY3RbRnVuY3Rpb25OYW1lXSkgPT4gJE9iamVjdFtGdW5jdGlvbk5hbWVdO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgcGFzc2VkIHRvIHtAbGluayBNb25rZXlBcm91bmRDb21wb25lbnQjcmVnaXN0ZXJNZXRob2RQYXRjaH0uXG4gKlxuICogQHR5cGVQYXJhbSAkT2JqZWN0IC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAqIEB0eXBlUGFyYW0gTWV0aG9kTmFtZSAtIFRoZSBtZXRob2QgbmFtZSB0byBwYXRjaC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb25rZXlBcm91bmRDb21wb25lbnRSZWdpc3Rlck1ldGhvZFBhdGNoUGFyYW1zPCRPYmplY3QgZXh0ZW5kcyBvYmplY3QsIE1ldGhvZE5hbWUgZXh0ZW5kcyBNZXRob2RLZXlzPCRPYmplY3Q+PiB7XG4gIC8qKlxuICAgKiBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICAgKi9cbiAgcmVhZG9ubHkgJG9iamVjdDogJE9iamVjdDtcblxuICAvKipcbiAgICogVGhlIG1ldGhvZCBuYW1lIHRvIHBhdGNoLlxuICAgKi9cbiAgcmVhZG9ubHkgbWV0aG9kTmFtZTogTWV0aG9kTmFtZTtcblxuICAvKipcbiAgICogV2hlbiBgdHJ1ZWAsIHRoZSBwYXRjaCB1bmluc3RhbGxzIGl0c2VsZiB0aGUgZmlyc3QgdGltZSB0aGUgcGF0Y2hlZCBtZXRob2QgaXMgaW52b2tlZCwgcmVzdG9yaW5nXG4gICAqIHRoZSBvcmlnaW5hbCDigJQgc28gdGhlIGludGVyY2VwdGlvbiBoYXBwZW5zIGV4YWN0bHkgb25jZS4gRXhpc3RpbmcgY2FsbGVycyB0aGF0IG9taXQgaXQgYXJlXG4gICAqIHVuYWZmZWN0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IG9uY2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0Y2ggaGFuZGxlciBmdW5jdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGNoSGFuZGxlcjogUGF0Y2hIYW5kbGVyRnVuY3Rpb248JE9iamVjdCwgTWV0aG9kTmFtZT47XG5cbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsIHRva2VuIHRvIGlkZW50aWZ5IHRoZSBwYXRjaC5cbiAgICpcbiAgICogVGhlIHRva2VuIGlzIHJlY29yZGVkIGFnYWluc3QgdGhlIG1ldGhvZCB0aGlzIHBhdGNoIElOU1RBTExTLCBzbyB0aGUgbmV4dCBwYXRjaCBvZiB0aGUgc2FtZSBtZXRob2RcbiAgICogZGV0ZWN0cyBpdCB2aWEge0BsaW5rIGhhc1BhdGNoVG9rZW59IG9uIGl0cyBvd24gYG9yaWdpbmFsTWV0aG9kYCBhbmQgY2FuIGRlZmVyIHRvIHRoaXMgb25lLiBUaGVcbiAgICogcGF0Y2ggdGhhdCBpbnN0YWxscyBhIHRva2VuIHRoZXJlZm9yZSBuZXZlciBzZWVzIGl0cyBvd24gdG9rZW4g4oCUIG9ubHkgdGhlIHBhdGNoZXMgc3RhY2tlZCBvbiB0b3Agb2ZcbiAgICogaXQgZG8uIFVzZSBhIGBTeW1ib2wuZm9yYCB0b2tlbiB0byBtYWtlIHRoZSBkZXRlY3Rpb24gd29yayBhY3Jvc3MgaW5kZXBlbmRlbnRseSBidW5kbGVkIGNvcGllcyBvZlxuICAgKiB0aGlzIGxpYnJhcnkuXG4gICAqXG4gICAqIFRoZSB0b2tlbiBpcyBkcm9wcGVkIHdoZW4gdGhpcyBjb21wb25lbnQgdW5sb2Fkcywgc28gYSBsYXRlciBwYXRjaCB0aGF0IGhhZCBkZWZlcnJlZCB0YWtlcyBvdmVyIG9uXG4gICAqIGl0cyBuZXh0IGNhbGwuXG4gICAqL1xuICByZWFkb25seSBwYXRjaFRva2VuPzogc3ltYm9sO1xuXG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBwb3N0LXBhdGNoIGhhbmRsZXIgZnVuY3Rpb24gdGhhdCBydW5zIGFmdGVyIHRoZSBwYXRjaCBpcyBhcHBsaWVkLCB0eXBpY2FsbHkgdG8ga2VlcCB0aGUgb3JpZ2luYWwgbWV0aG9kLlxuICAgKi9cbiAgcmVhZG9ubHkgcG9zdFBhdGNoSGFuZGxlcj86IFBvc3RQYXRjaEhhbmRsZXJGdW5jdGlvbjwkT2JqZWN0LCBNZXRob2ROYW1lPjtcbn1cblxuLyoqXG4gKiBBIHBhdGNoIGhhbmRsZXIgZnVuY3Rpb24gdGhhdCBpbnRlcmNlcHRzIGNhbGxzIHRvIGEgbWV0aG9kIG9uIGFuIG9iamVjdC5cbiAqXG4gKiBAdHlwZVBhcmFtICRPYmplY3QgLSBUaGUgb2JqZWN0IGJlaW5nIHBhdGNoZWQuXG4gKiBAdHlwZVBhcmFtIE1ldGhvZE5hbWUgLSBUaGUgbWV0aG9kIG5hbWUgYmVpbmcgcGF0Y2hlZC5cbiAqL1xuZXhwb3J0IHR5cGUgUGF0Y2hIYW5kbGVyRnVuY3Rpb248JE9iamVjdCBleHRlbmRzIG9iamVjdCwgTWV0aG9kTmFtZSBleHRlbmRzIE1ldGhvZEtleXM8JE9iamVjdD4+ID0gKFxuICBwYXJhbXM6IFBhdGNoSGFuZGxlclBhcmFtczwkT2JqZWN0LCBNZXRob2ROYW1lPlxuKSA9PiBSZXR1cm5UeXBlPEV4dHJhY3RGdW5jdGlvbjwkT2JqZWN0LCBNZXRob2ROYW1lPj47XG5cbi8qKlxuICogUGFyYW1ldGVycyBwYXNzZWQgdG8gYSB7QGxpbmsgUGF0Y2hIYW5kbGVyRnVuY3Rpb259IGNhbGxiYWNrLlxuICpcbiAqIEB0eXBlUGFyYW0gJE9iamVjdCAtIFRoZSBvYmplY3QgYmVpbmcgcGF0Y2hlZC5cbiAqIEB0eXBlUGFyYW0gTWV0aG9kTmFtZSAtIFRoZSBtZXRob2QgbmFtZSBiZWluZyBwYXRjaGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhdGNoSGFuZGxlclBhcmFtczwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0LCBNZXRob2ROYW1lIGV4dGVuZHMgTWV0aG9kS2V5czwkT2JqZWN0Pj4ge1xuICAvKipcbiAgICogSW52b2tlcyB0aGUgb3JpZ2luYWwgbWV0aG9kIHdpdGggdGhlIG9yaWdpbmFsIGB0aGlzYCBhbmQgYXJndW1lbnRzLlxuICAgKlxuICAgKiBAcmV0dXJucyBXaGF0ZXZlciB0aGUgb3JpZ2luYWwgbWV0aG9kIHJldHVybnMuXG4gICAqL1xuICByZWFkb25seSBmYWxsYmFjazogKCkgPT4gUmV0dXJuVHlwZTxFeHRyYWN0RnVuY3Rpb248JE9iamVjdCwgTWV0aG9kTmFtZT4+O1xuXG4gIC8qKlxuICAgKiBUaGUgb3JpZ2luYWwgYXJndW1lbnRzIG9mIHRoZSBpbnRlcmNlcHRlZCBjYWxsLCBhcyBhIHR1cGxlLlxuICAgKi9cbiAgcmVhZG9ubHkgb3JpZ2luYWxBcmd1bWVudHM6IFBhcmFtZXRlcnM8RXh0cmFjdEZ1bmN0aW9uPCRPYmplY3QsIE1ldGhvZE5hbWU+PjtcblxuICAvKipcbiAgICogVGhlIG9yaWdpbmFsICh1bnBhdGNoZWQpIG1ldGhvZC4gQ2FsbCB2aWEgYG9yaWdpbmFsRm4uY2FsbChvcmlnaW5hbFRoaXMsIC4uLm9yaWdpbmFsQXJncylgLlxuICAgKi9cbiAgcmVhZG9ubHkgb3JpZ2luYWxNZXRob2Q6IEV4dHJhY3RGdW5jdGlvbjwkT2JqZWN0LCBNZXRob2ROYW1lPjtcblxuICAvKipcbiAgICogVGhlIG9yaWdpbmFsIG1ldGhvZCwgYnV0IHdpdGggdGhlIGB0aGlzYCBjb250ZXh0IGFscmVhZHkgYm91bmQgdG8gdGhlIG9yaWdpbmFsIG9iamVjdC4gQ2FsbCB2aWEgYG9yaWdpbmFsTWV0aG9kQm91bmQoLi4ub3JpZ2luYWxBcmdzKWAuXG4gICAqL1xuICByZWFkb25seSBvcmlnaW5hbE1ldGhvZEJvdW5kOiBPbWl0VGhpc1BhcmFtZXRlcjxFeHRyYWN0RnVuY3Rpb248JE9iamVjdCwgTWV0aG9kTmFtZT4+O1xuXG4gIC8qKlxuICAgKiBUaGUgb3JpZ2luYWwgYHRoaXNgIGNvbnRleHQgb2YgdGhlIGludGVyY2VwdGVkIGNhbGwuXG4gICAqL1xuICByZWFkb25seSBvcmlnaW5hbFRoaXM6ICRPYmplY3Q7XG59XG5cbi8qKlxuICogQSBwb3N0LXBhdGNoIGhhbmRsZXIgZnVuY3Rpb24gdGhhdCBydW5zIGFmdGVyIGEgcGF0Y2ggaXMgYXBwbGllZC5cbiAqXG4gKiBJdCByZXR1cm5zIG5vdGhpbmcgYW5kIGlzIG5vdCBoYW5kZWQgdGhlIHBhdGNoZWQgbWV0aG9kOiB0aGUgbWV0aG9kIGluc3RhbGxlZCBpcyBhbHdheXMgdGhlIG9uZSB0aGUgcGF0Y2ggYnVpbGRzLCBzb1xuICogYSBwb3N0LXBhdGNoIGhhbmRsZXIgY2Fubm90IGdyYWZ0IG1lbWJlcnMgb250byBpdC4gQSBjYXBhYmlsaXR5IGJleW9uZCB0aGUgcGF0Y2hlZCBtZXRob2QncyBvd24gc2lnbmF0dXJlIGJlbG9uZ3NcbiAqIG9uIHRoZSBwbHVnaW4ncyBwdWJsaXNoZWQgQVBJIGluc3RlYWQuXG4gKlxuICogQHR5cGVQYXJhbSAkT2JqZWN0IC0gVGhlIG9iamVjdCBiZWluZyBwYXRjaGVkLlxuICogQHR5cGVQYXJhbSBNZXRob2ROYW1lIC0gVGhlIG1ldGhvZCBuYW1lIGJlaW5nIHBhdGNoZWQuXG4gKi9cbmV4cG9ydCB0eXBlIFBvc3RQYXRjaEhhbmRsZXJGdW5jdGlvbjwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0LCBNZXRob2ROYW1lIGV4dGVuZHMgTWV0aG9kS2V5czwkT2JqZWN0Pj4gPSAoXG4gIHBhcmFtczogUG9zdFBhdGNoSGFuZGxlclBhcmFtczwkT2JqZWN0LCBNZXRob2ROYW1lPlxuKSA9PiB2b2lkO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgcGFzc2VkIHRvIGEge0BsaW5rIFBvc3RQYXRjaEhhbmRsZXJGdW5jdGlvbn0gY2FsbGJhY2suXG4gKlxuICogQHR5cGVQYXJhbSAkT2JqZWN0IC0gVGhlIG9iamVjdCBiZWluZyBwYXRjaGVkLlxuICogQHR5cGVQYXJhbSBNZXRob2ROYW1lIC0gVGhlIG1ldGhvZCBuYW1lIGJlaW5nIHBhdGNoZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9zdFBhdGNoSGFuZGxlclBhcmFtczwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0LCBNZXRob2ROYW1lIGV4dGVuZHMgTWV0aG9kS2V5czwkT2JqZWN0Pj4ge1xuICAvKipcbiAgICogVGhlIG9yaWdpbmFsICh1bnBhdGNoZWQpIG1ldGhvZC4gQ2FsbCB2aWEgYG9yaWdpbmFsRm4uY2FsbChvcmlnaW5hbFRoaXMsIC4uLm9yaWdpbmFsQXJncylgLlxuICAgKi9cbiAgcmVhZG9ubHkgb3JpZ2luYWxNZXRob2Q6IEV4dHJhY3RGdW5jdGlvbjwkT2JqZWN0LCBNZXRob2ROYW1lPjtcbn1cblxudHlwZSBFeHRyYWN0RnVuY3Rpb248JE9iamVjdCBleHRlbmRzIG9iamVjdCwgTWV0aG9kTmFtZSBleHRlbmRzIE1ldGhvZEtleXM8JE9iamVjdD4+ID0gR2VuZXJpY0Z1bmN0aW9uPFBhcmFtZXRlcnM8RXh0cmFjdDwkT2JqZWN0W01ldGhvZE5hbWVdLCBHZW5lcmljRnVuY3Rpb24+PiwgUmV0dXJuVHlwZTxFeHRyYWN0PCRPYmplY3RbTWV0aG9kTmFtZV0sIEdlbmVyaWNGdW5jdGlvbj4+PjtcblxudHlwZSBGdWxsRmFjdG9yaWVzPCRPYmplY3QgZXh0ZW5kcyBvYmplY3Q+ID0ge1xuICBbS2V5IGluIGtleW9mICRPYmplY3RdOiAob3JpZ2luYWxWYWx1ZTogJE9iamVjdFtLZXldKSA9PiAkT2JqZWN0W0tleV07XG59O1xuXG50eXBlIE1ldGhvZEtleXNNYXA8JE9iamVjdCBleHRlbmRzIG9iamVjdD4gPSB7XG4gIFtLZXkgaW4gRnVuY3Rpb25LZXlzPCRPYmplY3Q+XTogW0V4Y2x1ZGU8a2V5b2YgTm9uTnVsbGFibGU8JE9iamVjdFtLZXldPiwga2V5b2YgR2VuZXJpY0Z1bmN0aW9uPl0gZXh0ZW5kcyBbbmV2ZXJdID8gS2V5IDogbmV2ZXI7XG59O1xuXG50eXBlIFVuaW5zdGFsbGVyID0gKCkgPT4gdm9pZDtcblxuLyoqXG4gKiBBIGNvbXBvbmVudCB0aGF0IG1hbmFnZXMgbW9ua2V5LXBhdGNoZXMgd2l0aCBsaWZlY3ljbGUtYm91bmQgY2xlYW51cC5cbiAqIEFsbCBwYXRjaGVzIHJlZ2lzdGVyZWQgdmlhIHRoaXMgY29tcG9uZW50IGFyZSBhdXRvbWF0aWNhbGx5IHVuaW5zdGFsbGVkIHdoZW4gdGhlIGNvbXBvbmVudCB1bmxvYWRzLlxuICovXG5leHBvcnQgY2xhc3MgTW9ua2V5QXJvdW5kQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50RXgge1xuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgcGF0Y2ggZm9yIGEgc2luZ2xlIGZ1bmN0aW9uLWxpa2UgbWVtYmVyIChhIG1ldGhvZCwgb3IgYSBjYWxsYWJsZSBzdWNoIGFzIGEgYERlYm91bmNlcmApIHVzaW5nIGEgc2ltcGxpZmllZCBoYW5kbGVyLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtICRPYmplY3QgLSBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICAgKiBAdHlwZVBhcmFtIEZ1bmN0aW9uTmFtZSAtIFRoZSBmdW5jdGlvbiBuYW1lIHRvIHBhdGNoLlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHBhdGNoLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyRnVuY3Rpb25QYXRjaDwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0LCBjb25zdCBGdW5jdGlvbk5hbWUgZXh0ZW5kcyBGdW5jdGlvbktleXM8JE9iamVjdD4+KFxuICAgIHBhcmFtczogTW9ua2V5QXJvdW5kQ29tcG9uZW50UmVnaXN0ZXJGdW5jdGlvblBhdGNoUGFyYW1zPCRPYmplY3QsIEZ1bmN0aW9uTmFtZT5cbiAgKTogdm9pZCB7XG4gICAgdGhpcy5lbnN1cmVMb2FkZWQoKTtcblxuICAgIGNvbnN0IGZhY3RvcmllczogRmFjdG9yaWVzPCRPYmplY3Q+ID0ge307XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbm8taW1tZWRpYXRlLW11dGF0aW9uIC0tIEEgY29tcHV0ZWQga2V5IGluIGFuIG9iamVjdCBsaXRlcmFsIGRvZXMgbm90IG1hdGNoIGBQYXJ0aWFsPEZ1bGxGYWN0b3JpZXM8JE9iamVjdD4+YCB3aGVuIHRoZSBrZXkgdHlwZSBpcyBnZW5lcmljOyBhc3NpZ25pbmcgYWZ0ZXIgZGVjbGFyYXRpb24ga2VlcHMgdGhlIHRhcmdldCB0eXBlIGtub3duLlxuICAgIGZhY3Rvcmllc1twYXJhbXMuZnVuY3Rpb25OYW1lXSA9IChvcmlnaW5hbFZhbHVlOiAkT2JqZWN0W0Z1bmN0aW9uTmFtZV0pOiAkT2JqZWN0W0Z1bmN0aW9uTmFtZV0gPT4ge1xuICAgICAgY29uc3QgcGF0Y2hlZFZhbHVlID0gcGFyYW1zLnBhdGNoSGFuZGxlcihvcmlnaW5hbFZhbHVlKTtcbiAgICAgIGlmICghcGFyYW1zLm9uY2UpIHtcbiAgICAgICAgcmV0dXJuIHBhdGNoZWRWYWx1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gQSBgb25jZWAgcGF0Y2ggdW5sb2FkcyB0aGlzIGNvbXBvbmVudCBhZnRlciB0aGUgZmlyc3QgaW52b2NhdGlvbiDigJQgcnVubmluZyB0aGUgcmVnaXN0ZXJlZFxuICAgICAgLy8gdW5pbnN0YWxsZXIgYW5kIHJlc3RvcmluZyB0aGUgb3JpZ2luYWwuIGB1bmxvYWRDb21wb25lbnRgIGlzIGFuIGFycm93IHNvIGl0IGNhcHR1cmVzIHRoZVxuICAgICAgLy8gY29tcG9uZW50IGB0aGlzYDsgdGhlIG5lc3RlZCBgb25jZVBhdGNoZWRWYWx1ZWAgbXVzdCBiZSBhIGZ1bmN0aW9uIHRvIHJlY2VpdmUgdGhlIGNhbGwtdGltZVxuICAgICAgLy8gYHRoaXNgLiBPd24gbWVtYmVycyAoZS5nLiBhIGBEZWJvdW5jZXJgJ3MgYGNhbmNlbGAvYHJ1bmApIGFyZSBjb3BpZWQgb250byBpdCBzbyBmdW5jdGlvbi1saWtlXG4gICAgICAvLyB2YWx1ZXMga2VlcCB3b3JraW5nLlxuICAgICAgY29uc3QgdW5sb2FkQ29tcG9uZW50ID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLnVubG9hZCgpO1xuICAgICAgfTtcbiAgICAgIGZ1bmN0aW9uIG9uY2VQYXRjaGVkVmFsdWUodGhpczogdW5rbm93biwgLi4uJGFyZ3VtZW50czogdW5rbm93bltdKTogdW5rbm93biB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIFJlZmxlY3QuYXBwbHkocGF0Y2hlZFZhbHVlLCB0aGlzLCAkYXJndW1lbnRzKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICB1bmxvYWRDb21wb25lbnQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24ob25jZVBhdGNoZWRWYWx1ZSwgcGF0Y2hlZFZhbHVlKSBhcyAkT2JqZWN0W0Z1bmN0aW9uTmFtZV07XG4gICAgfTtcblxuICAgIHRoaXMucmVnaXN0ZXJQYXRjaChwYXJhbXMuJG9iamVjdCwgZmFjdG9yaWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBzaW5nbGUtbWV0aG9kIHBhdGNoIHVzaW5nIGEgc2ltcGxpZmllZCBoYW5kbGVyLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtICRPYmplY3QgLSBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICAgKiBAdHlwZVBhcmFtIE1ldGhvZE5hbWUgLSBUaGUgbWV0aG9kIG5hbWUgdG8gcGF0Y2guXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBvZiB0aGUgcGF0Y2guXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJNZXRob2RQYXRjaDwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0LCBjb25zdCBNZXRob2ROYW1lIGV4dGVuZHMgTWV0aG9kS2V5czwkT2JqZWN0Pj4oXG4gICAgcGFyYW1zOiBNb25rZXlBcm91bmRDb21wb25lbnRSZWdpc3Rlck1ldGhvZFBhdGNoUGFyYW1zPCRPYmplY3QsIE1ldGhvZE5hbWU+XG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW5zdXJlTG9hZGVkKCk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyRnVuY3Rpb25QYXRjaCh7XG4gICAgICAkb2JqZWN0OiBwYXJhbXMuJG9iamVjdCxcbiAgICAgIGZ1bmN0aW9uTmFtZTogcGFyYW1zLm1ldGhvZE5hbWUsXG4gICAgICBvbmNlOiBwYXJhbXMub25jZSA/PyBmYWxzZSxcbiAgICAgIHBhdGNoSGFuZGxlcjogKG9yaWdpbmFsTWV0aG9kUmF3KSA9PiB7XG4gICAgICAgIHR5cGUgJEZ1bmN0aW9uID0gRXh0cmFjdEZ1bmN0aW9uPCRPYmplY3QsIE1ldGhvZE5hbWU+O1xuICAgICAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IG9yaWdpbmFsTWV0aG9kUmF3IGFzICRGdW5jdGlvbjtcbiAgICAgICAgcGFyYW1zLnBvc3RQYXRjaEhhbmRsZXI/Lih7IG9yaWdpbmFsTWV0aG9kIH0pO1xuICAgICAgICByZXR1cm4gcGF0Y2hlZE1ldGhvZCBhcyAkT2JqZWN0W01ldGhvZE5hbWVdO1xuXG4gICAgICAgIGZ1bmN0aW9uIHBhdGNoZWRNZXRob2QodGhpczogJE9iamVjdCwgLi4ub3JpZ2luYWxBcmd1bWVudHM6IFBhcmFtZXRlcnM8JEZ1bmN0aW9uPik6IFJldHVyblR5cGU8JEZ1bmN0aW9uPiB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtdGhpcywgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXMsIHVuaWNvcm4vbm8tdGhpcy1hc3NpZ25tZW50IC0tIFdlIG5lZWQgdG8gdXNlIHRoZSBgdGhpc2AgY29udGV4dC5cbiAgICAgICAgICBjb25zdCBvcmlnaW5hbFRoaXMgPSB0aGlzO1xuICAgICAgICAgIHJldHVybiBwYXJhbXMucGF0Y2hIYW5kbGVyKHtcbiAgICAgICAgICAgIGZhbGxiYWNrKCkge1xuICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuY2FsbChvcmlnaW5hbFRoaXMsIC4uLm9yaWdpbmFsQXJndW1lbnRzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvcmlnaW5hbEFyZ3VtZW50cyxcbiAgICAgICAgICAgIG9yaWdpbmFsTWV0aG9kLFxuICAgICAgICAgICAgb3JpZ2luYWxNZXRob2RCb3VuZDogb3JpZ2luYWxNZXRob2QuYmluZChvcmlnaW5hbFRoaXMpLFxuICAgICAgICAgICAgb3JpZ2luYWxUaGlzXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICghcGFyYW1zLnBhdGNoVG9rZW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBUaGUgdG9rZW4gbWFya3MgdGhlIElOU1RBTExFRCBtZXRob2QsIHJlYWQgYmFjayBvbmNlIHRoZSBwYXRjaCBpcyBpbiBwbGFjZS5cbiAgICAvLyBUaGF0IGlzIHRoZSBpZGVudGl0eSB0aGUgbmV4dCBwYXRjaCBvZiB0aGUgc2FtZSBtZXRob2QgcmVjZWl2ZXMgYXMgaXRzIGBvcmlnaW5hbE1ldGhvZGAuXG4gICAgLy8gYG1vbmtleS1hcm91bmRgIGluc3RhbGxzIGEgd3JhcHBlciBvZiBpdHMgb3duIGFuZCBleHBvc2VzIHRoZSB2YWx1ZSBidWlsdCBhYm92ZSBvbmx5IHZpYSBpdHMgcHJvdG90eXBlLlxuICAgIC8vIE1hcmtpbmcgdGhhdCB2YWx1ZSwgb3IgdGhlIG1ldGhvZCBiZWluZyB3cmFwcGVkIGFzIHRoaXMgb25jZSBkaWQsIG1hdGNoZXMgbm90aGluZyB0aGUgbmV4dCBwYXRjaCBzZWVzLlxuICAgIC8vIERyb3BwaW5nIHRoZSB0b2tlbiBvbiB1bmxvYWQgbGV0cyBhIGRlZmVycmluZyBsYXRlciBwYXRjaCB0YWtlIG92ZXIsIHNpbmNlIHRoZSBndWFyZCBpcyByZWFkIHBlciBjYWxsLlxuICAgIGNvbnN0IHBhdGNoZWRNZXRob2QgPSBwYXJhbXMuJG9iamVjdFtwYXJhbXMubWV0aG9kTmFtZV0gYXMgR2VuZXJpY0Z1bmN0aW9uO1xuICAgIGNvbnN0IG1vbmtleUFyb3VuZFBhdGNoZXMgPSBnZXRNb25rZXlBcm91bmRQYXRjaGVzKCk7XG4gICAgbW9ua2V5QXJvdW5kUGF0Y2hlcy5zZXQocGF0Y2hlZE1ldGhvZCwgcGFyYW1zLnBhdGNoVG9rZW4pO1xuICAgIHRoaXMucmVnaXN0ZXIoKCkgPT4ge1xuICAgICAgbW9ua2V5QXJvdW5kUGF0Y2hlcy5kZWxldGUocGF0Y2hlZE1ldGhvZCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgcGF0Y2ggdXNpbmcgcmF3IGZhY3RvcmllcyAoYWR2YW5jZWQgQVBJKS5cbiAgICpcbiAgICogQHR5cGVQYXJhbSAkT2JqZWN0IC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAgICogQHBhcmFtICRvYmplY3QgLSBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICAgKiBAcGFyYW0gZmFjdG9yaWVzIC0gVGhlIGZhY3RvcmllcyB0byBhcHBseSB0byB0aGUgb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyUGF0Y2g8JE9iamVjdCBleHRlbmRzIG9iamVjdD4oJG9iamVjdDogJE9iamVjdCwgZmFjdG9yaWVzOiBGYWN0b3JpZXM8JE9iamVjdD4pOiB2b2lkIHtcbiAgICB0aGlzLmVuc3VyZUxvYWRlZCgpO1xuXG4gICAgY29uc3QgdW5pbnN0YWxsZXIgPSBhcm91bmQoJG9iamVjdCwgZmFjdG9yaWVzKTtcbiAgICB0aGlzLnJlZ2lzdGVyKHVuaW5zdGFsbGVyKTtcbiAgfVxufVxuXG4vKipcbiAqIEFwcGxpZXMgYSBwYXRjaCB0byB0aGUgb2JqZWN0LlxuICogQmV0dGVyIHN0cm9uZ2x5LXR5cGVkIHZlcnNpb24gb2YgYG1vbmtleS1hcm91bmRgLlxuICpcbiAqIEB0eXBlUGFyYW0gJE9iamVjdCAtIFRoZSBvYmplY3QgdG8gcGF0Y2guXG4gKiBAcGFyYW0gJG9iamVjdCAtIFRoZSBvYmplY3QgdG8gcGF0Y2guXG4gKiBAcGFyYW0gZmFjdG9yaWVzIC0gVGhlIGZhY3RvcmllcyB0byBhcHBseSB0byB0aGUgb2JqZWN0LlxuICogQHJldHVybnMgVGhlIHVuaW5zdGFsbGVyIHRoYXQgcmVtb3ZlcyB0aGUgcGF0Y2ggd2hlbiBjYWxsZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcm91bmQ8JE9iamVjdCBleHRlbmRzIG9iamVjdD4oJG9iamVjdDogJE9iamVjdCwgZmFjdG9yaWVzOiBGYWN0b3JpZXM8JE9iamVjdD4pOiBVbmluc3RhbGxlciB7XG4gIHR5cGUgT3JpZ2luYWxGYWN0b3JpZXM8JFRhcmdldCBleHRlbmRzIEdlbmVyaWNPYmplY3Q+ID0gUGFyYW1ldGVyczx0eXBlb2Ygb3JpZ2luYWxBcm91bmQ8JFRhcmdldD4+WzFdO1xuICByZXR1cm4gb3JpZ2luYWxBcm91bmQoJG9iamVjdCBhcyBHZW5lcmljT2JqZWN0LCBmYWN0b3JpZXMgYXMgT3JpZ2luYWxGYWN0b3JpZXM8R2VuZXJpY09iamVjdD4pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZ1bmN0aW9uIGhhcyBhIHNwZWNpZmljIHBhdGNoIHRva2VuLlxuICpcbiAqIEEgdG9rZW4gaXMgY2FycmllZCBieSB0aGUgbWV0aG9kIGEge0BsaW5rIE1vbmtleUFyb3VuZENvbXBvbmVudCNyZWdpc3Rlck1ldGhvZFBhdGNofSBjYWxsIElOU1RBTExFRCwgc29cbiAqIHRoZSBpbnRlbmRlZCBjYWxsZXIgaXMgYSBsYXRlciBwYXRjaCBvZiB0aGUgc2FtZSBtZXRob2QsIGNoZWNraW5nIHRoZSBgb3JpZ2luYWxNZXRob2RgIGl0IHdyYXBwZWQgaW5cbiAqIG9yZGVyIHRvIGRlZmVyIHRvIHRoZSBwYXRjaCBhbHJlYWR5IGluIHBsYWNlOlxuICpcbiAqIGBgYHRzXG4gKiBwYXRjaEhhbmRsZXI6ICh7IGZhbGxiYWNrLCBvcmlnaW5hbE1ldGhvZCB9KSA9PiB7XG4gKiAgIGlmIChoYXNQYXRjaFRva2VuKG9yaWdpbmFsTWV0aG9kLCBQQVRDSF9UT0tFTikpIHtcbiAqICAgICByZXR1cm4gZmFsbGJhY2soKTtcbiAqICAgfVxuICogICAuLi5cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFRoZSBjaGVjayBpcyBtYWRlIHBlciBjYWxsLCBzbyBpdCBzdG9wcyByZXBvcnRpbmcgdGhlIGVhcmxpZXIgcGF0Y2ggb25jZSB0aGF0IHBhdGNoJ3MgY29tcG9uZW50IHVubG9hZHMuXG4gKlxuICogQHBhcmFtICRmdW5jdGlvbiAtIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAqIEBwYXJhbSBwYXRjaFRva2VuIC0gVGhlIHBhdGNoIHRva2VuIHRvIGNoZWNrIGZvci5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGZ1bmN0aW9uIGhhcyB0aGUgcGF0Y2ggdG9rZW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNQYXRjaFRva2VuKCRmdW5jdGlvbjogR2VuZXJpY0Z1bmN0aW9uLCBwYXRjaFRva2VuOiBzeW1ib2wpOiBib29sZWFuIHtcbiAgcmV0dXJuIGdldE1vbmtleUFyb3VuZFBhdGNoZXMoKS5nZXQoJGZ1bmN0aW9uKSA9PT0gcGF0Y2hUb2tlbjtcbn1cblxuZnVuY3Rpb24gZ2V0TW9ua2V5QXJvdW5kUGF0Y2hlcygpOiBXZWFrTWFwPEdlbmVyaWNGdW5jdGlvbiwgc3ltYm9sPiB7XG4gIHJldHVybiBnZXRPYnNpZGlhbkxpYlN0YXRlKCdtb25rZXlBcm91bmRQYXRjaGVzJywgbmV3IFdlYWtNYXA8R2VuZXJpY0Z1bmN0aW9uLCBzeW1ib2w+KCkpLnZhbHVlO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVVBLFNBQVMsVUFBVSxzQkFBc0I7QUFFekMsU0FBUywyQkFBMkI7QUFDcEMsU0FBUyxtQkFBbUI7QUEwTXJCLE1BQU0sOEJBQThCLFlBQVk7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUTlDLHNCQUNMLFFBQ007QUFDTixTQUFLLGFBQWE7QUFFbEIsVUFBTSxZQUFnQyxDQUFDO0FBRXZDLGNBQVUsT0FBTyxZQUFZLElBQUksQ0FBQyxrQkFBZ0U7QUFDaEcsWUFBTSxlQUFlLE9BQU8sYUFBYSxhQUFhO0FBQ3RELFVBQUksQ0FBQyxPQUFPLE1BQU07QUFDaEIsZUFBTztBQUFBLE1BQ1Q7QUFPQSxZQUFNLGtCQUFrQixNQUFZO0FBQ2xDLGFBQUssT0FBTztBQUFBLE1BQ2Q7QUFDQSxlQUFTLG9CQUFtQyxZQUFnQztBQUMxRSxZQUFJO0FBQ0YsaUJBQU8sUUFBUSxNQUFNLGNBQWMsTUFBTSxVQUFVO0FBQUEsUUFDckQsVUFBRTtBQUNBLDBCQUFnQjtBQUFBLFFBQ2xCO0FBQUEsTUFDRjtBQUNBLGFBQU8sT0FBTyxPQUFPLGtCQUFrQixZQUFZO0FBQUEsSUFDckQ7QUFFQSxTQUFLLGNBQWMsT0FBTyxTQUFTLFNBQVM7QUFBQSxFQUM5QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFTTyxvQkFDTCxRQUNNO0FBQ04sU0FBSyxhQUFhO0FBRWxCLFNBQUssc0JBQXNCO0FBQUEsTUFDekIsU0FBUyxPQUFPO0FBQUEsTUFDaEIsY0FBYyxPQUFPO0FBQUEsTUFDckIsTUFBTSxPQUFPLFFBQVE7QUFBQSxNQUNyQixjQUFjLENBQUMsc0JBQXNCO0FBRW5DLGNBQU0saUJBQWlCO0FBQ3ZCLGVBQU8sbUJBQW1CLEVBQUUsZUFBZSxDQUFDO0FBQzVDLGVBQU9BO0FBRVAsaUJBQVNBLGtCQUFnQyxtQkFBaUU7QUFFeEcsZ0JBQU0sZUFBZTtBQUNyQixpQkFBTyxPQUFPLGFBQWE7QUFBQSxZQUN6QixXQUFXO0FBQ1QscUJBQU8sZUFBZSxLQUFLLGNBQWMsR0FBRyxpQkFBaUI7QUFBQSxZQUMvRDtBQUFBLFlBQ0E7QUFBQSxZQUNBO0FBQUEsWUFDQSxxQkFBcUIsZUFBZSxLQUFLLFlBQVk7QUFBQSxZQUNyRDtBQUFBLFVBQ0YsQ0FBQztBQUFBLFFBQ0g7QUFBQSxNQUNGO0FBQUEsSUFDRixDQUFDO0FBRUQsUUFBSSxDQUFDLE9BQU8sWUFBWTtBQUN0QjtBQUFBLElBQ0Y7QUFPQSxVQUFNLGdCQUFnQixPQUFPLFFBQVEsT0FBTyxVQUFVO0FBQ3RELFVBQU0sc0JBQXNCLHVCQUF1QjtBQUNuRCx3QkFBb0IsSUFBSSxlQUFlLE9BQU8sVUFBVTtBQUN4RCxTQUFLLFNBQVMsTUFBTTtBQUNsQiwwQkFBb0IsT0FBTyxhQUFhO0FBQUEsSUFDMUMsQ0FBQztBQUFBLEVBQ0g7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU08sY0FBc0MsU0FBa0IsV0FBcUM7QUFDbEcsU0FBSyxhQUFhO0FBRWxCLFVBQU0sY0FBYyxPQUFPLFNBQVMsU0FBUztBQUM3QyxTQUFLLFNBQVMsV0FBVztBQUFBLEVBQzNCO0FBQ0Y7QUFXTyxTQUFTLE9BQStCLFNBQWtCLFdBQTRDO0FBRTNHLFNBQU8sZUFBZSxTQUEwQixTQUE2QztBQUMvRjtBQXdCTyxTQUFTLGNBQWMsV0FBNEIsWUFBNkI7QUFDckYsU0FBTyx1QkFBdUIsRUFBRSxJQUFJLFNBQVMsTUFBTTtBQUNyRDtBQUVBLFNBQVMseUJBQTJEO0FBQ2xFLFNBQU8sb0JBQW9CLHVCQUF1QixvQkFBSSxRQUFpQyxDQUFDLEVBQUU7QUFDNUY7IiwibmFtZXMiOlsicGF0Y2hlZE1ldGhvZCJdfQ==
|