obsidian-integration-testing 12.2.0 → 13.0.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 +1 -5
- package/dist/lib/cjs/adb.cjs +1 -1
- package/dist/lib/cjs/app-config.cjs +1 -1
- package/dist/lib/cjs/app-config.d.cts +1 -1
- package/dist/lib/cjs/appium-dependencies.cjs +1 -1
- package/dist/lib/cjs/appium-session-config.cjs +3 -5
- package/dist/lib/cjs/appium-session-config.d.cts +6 -9
- package/dist/lib/cjs/connect-to-cdp.cjs +1 -1
- package/dist/lib/cjs/connect-to-cdp.d.cts +5 -0
- package/dist/lib/cjs/demo-vault-bootstrap.cjs +1 -1
- package/dist/lib/cjs/desktop-only-plugin-skip-error.cjs +1 -1
- package/dist/lib/cjs/device-readiness.cjs +1 -1
- package/dist/lib/cjs/device-settings.cjs +1 -1
- package/dist/lib/cjs/device-settings.d.cts +1 -1
- package/dist/lib/cjs/emulator-device-id.cjs +1 -1
- package/dist/lib/cjs/emulator-device-id.d.cts +7 -6
- package/dist/lib/cjs/emulator-reaper.cjs +1 -1
- package/dist/lib/cjs/emulator-reaper.d.cts +2 -2
- package/dist/lib/cjs/emulator-reclaim.cjs +1 -1
- package/dist/lib/cjs/emulator-reclaim.d.cts +17 -17
- package/dist/lib/cjs/eval-cap.cjs +29 -0
- package/dist/lib/cjs/eval-cap.d.cts +43 -0
- package/dist/lib/cjs/eval-in-obsidian.cjs +1 -1
- package/dist/lib/cjs/eval-in-obsidian.d.cts +5 -0
- package/dist/lib/cjs/fit-screenshot.cjs +1 -1
- package/dist/lib/cjs/generate-function-call.cjs +1 -1
- package/dist/lib/cjs/generate-function-call.d.cts +1 -1
- package/dist/lib/cjs/global-setup-core.cjs +1 -1
- package/dist/lib/cjs/global-setup-core.d.cts +4 -4
- package/dist/lib/cjs/index.cjs +4 -1
- package/dist/lib/cjs/index.d.cts +1 -0
- package/dist/lib/cjs/integration-setup-failed-error.cjs +1 -1
- package/dist/lib/cjs/jest/global-setup.cjs +1 -1
- package/dist/lib/cjs/jest/global-setup.d.cts +3 -3
- package/dist/lib/cjs/leftover-cleanup.cjs +1 -1
- package/dist/lib/cjs/leftover-cleanup.d.cts +2 -2
- package/dist/lib/cjs/library.cjs +1 -1
- package/dist/lib/cjs/mobile-input.cjs +1 -1
- package/dist/lib/cjs/namespace-bootstrap.cjs +13 -3
- package/dist/lib/cjs/obsidian-instance.cjs +1 -1
- package/dist/lib/cjs/obsidian-version-switch.cjs +1 -1
- package/dist/lib/cjs/open-obsidian-settings-tab.cjs +1 -1
- package/dist/lib/cjs/owned-vault-seed.cjs +3 -3
- package/dist/lib/cjs/poll-in-obsidian.cjs +1 -1
- package/dist/lib/cjs/poll-in-obsidian.d.cts +4 -3
- package/dist/lib/cjs/process-capture.cjs +1 -1
- package/dist/lib/cjs/process-capture.d.cts +5 -5
- package/dist/lib/cjs/process-exit-message.cjs +1 -1
- package/dist/lib/cjs/process-exit-message.d.cts +2 -2
- package/dist/lib/cjs/run-version-matrix.cjs +3 -3
- package/dist/lib/cjs/run-version-matrix.d.cts +1 -1
- package/dist/lib/cjs/setup-lock.cjs +1 -1
- package/dist/lib/cjs/soft-keyboard-geometry.cjs +17 -8
- package/dist/lib/cjs/soft-keyboard-geometry.d.cts +46 -9
- package/dist/lib/cjs/soft-keyboard.cjs +7 -4
- package/dist/lib/cjs/soft-keyboard.d.cts +16 -2
- package/dist/lib/cjs/temporary-vault.cjs +3 -1
- package/dist/lib/cjs/transport-appium.cjs +7 -5
- package/dist/lib/cjs/transport-desktop-cdp.cjs +81 -15
- package/dist/lib/cjs/transport-desktop-cdp.d.cts +44 -1
- package/dist/lib/cjs/transport-factory.cjs +2 -2
- package/dist/lib/cjs/transport-options.cjs +1 -1
- package/dist/lib/cjs/transport-options.d.cts +11 -1
- package/dist/lib/cjs/vault-teardown-verdict.cjs +1 -1
- package/dist/lib/cjs/version-matrix.cjs +1 -1
- package/dist/lib/cjs/version-matrix.d.cts +2 -2
- package/dist/lib/cjs/vitest/global-setup.cjs +1 -1
- package/dist/lib/cjs/vitest/global-setup.d.cts +3 -3
- package/dist/lib/cjs/webview-cdp.cjs +45 -14
- package/dist/lib/cjs/webview-cdp.d.cts +17 -0
- package/dist/lib/esm/adb.mjs +1 -1
- package/dist/lib/esm/app-config.d.mts +1 -1
- package/dist/lib/esm/app-config.mjs +1 -1
- package/dist/lib/esm/appium-dependencies.mjs +1 -1
- package/dist/lib/esm/appium-session-config.d.mts +6 -9
- package/dist/lib/esm/appium-session-config.mjs +3 -4
- package/dist/lib/esm/connect-to-cdp.d.mts +5 -0
- package/dist/lib/esm/connect-to-cdp.mjs +1 -1
- package/dist/lib/esm/demo-vault-bootstrap.mjs +1 -1
- package/dist/lib/esm/desktop-only-plugin-skip-error.mjs +1 -1
- package/dist/lib/esm/device-readiness.mjs +1 -1
- package/dist/lib/esm/device-settings.d.mts +1 -1
- package/dist/lib/esm/device-settings.mjs +1 -1
- package/dist/lib/esm/emulator-device-id.d.mts +7 -6
- package/dist/lib/esm/emulator-device-id.mjs +1 -1
- package/dist/lib/esm/emulator-reaper.d.mts +2 -2
- package/dist/lib/esm/emulator-reaper.mjs +1 -1
- package/dist/lib/esm/emulator-reclaim.d.mts +17 -17
- package/dist/lib/esm/emulator-reclaim.mjs +1 -1
- package/dist/lib/esm/eval-cap.d.mts +43 -0
- package/dist/lib/esm/eval-cap.mjs +5 -0
- package/dist/lib/esm/eval-in-obsidian.d.mts +5 -0
- package/dist/lib/esm/eval-in-obsidian.mjs +1 -1
- package/dist/lib/esm/fit-screenshot.mjs +1 -1
- package/dist/lib/esm/generate-function-call.d.mts +1 -1
- package/dist/lib/esm/generate-function-call.mjs +1 -1
- package/dist/lib/esm/global-setup-core.d.mts +4 -4
- package/dist/lib/esm/global-setup-core.mjs +1 -1
- package/dist/lib/esm/index.d.mts +1 -0
- package/dist/lib/esm/index.mjs +3 -1
- package/dist/lib/esm/integration-setup-failed-error.mjs +1 -1
- package/dist/lib/esm/jest/global-setup.d.mts +3 -3
- package/dist/lib/esm/jest/global-setup.mjs +1 -1
- package/dist/lib/esm/leftover-cleanup.d.mts +2 -2
- package/dist/lib/esm/leftover-cleanup.mjs +1 -1
- package/dist/lib/esm/library.mjs +1 -1
- package/dist/lib/esm/mobile-input.mjs +1 -1
- package/dist/lib/esm/namespace-bootstrap.mjs +13 -3
- package/dist/lib/esm/obsidian-instance.mjs +1 -1
- package/dist/lib/esm/obsidian-version-switch.mjs +1 -1
- package/dist/lib/esm/open-obsidian-settings-tab.mjs +1 -1
- package/dist/lib/esm/owned-vault-seed.mjs +3 -3
- package/dist/lib/esm/poll-in-obsidian.d.mts +4 -3
- package/dist/lib/esm/poll-in-obsidian.mjs +1 -1
- package/dist/lib/esm/process-capture.d.mts +5 -5
- package/dist/lib/esm/process-capture.mjs +1 -1
- package/dist/lib/esm/process-exit-message.d.mts +2 -2
- package/dist/lib/esm/process-exit-message.mjs +1 -1
- package/dist/lib/esm/run-version-matrix.d.mts +1 -1
- package/dist/lib/esm/run-version-matrix.mjs +3 -3
- package/dist/lib/esm/setup-lock.mjs +1 -1
- package/dist/lib/esm/soft-keyboard-geometry.d.mts +46 -9
- package/dist/lib/esm/soft-keyboard-geometry.mjs +17 -8
- package/dist/lib/esm/soft-keyboard.d.mts +16 -2
- package/dist/lib/esm/soft-keyboard.mjs +7 -4
- package/dist/lib/esm/temporary-vault.mjs +3 -1
- package/dist/lib/esm/transport-appium.mjs +7 -5
- package/dist/lib/esm/transport-desktop-cdp.d.mts +44 -1
- package/dist/lib/esm/transport-desktop-cdp.mjs +81 -15
- package/dist/lib/esm/transport-factory.mjs +2 -2
- package/dist/lib/esm/transport-options.d.mts +11 -1
- package/dist/lib/esm/transport-options.mjs +1 -1
- package/dist/lib/esm/vault-teardown-verdict.mjs +1 -1
- package/dist/lib/esm/version-matrix.d.mts +2 -2
- package/dist/lib/esm/version-matrix.mjs +1 -1
- package/dist/lib/esm/vitest/global-setup.d.mts +3 -3
- package/dist/lib/esm/vitest/global-setup.mjs +1 -1
- package/dist/lib/esm/webview-cdp.d.mts +17 -0
- package/dist/lib/esm/webview-cdp.mjs +45 -14
- package/package.json +1 -7
|
@@ -218,6 +218,10 @@ export interface ObsidianAndroidAppiumTransportOptions {
|
|
|
218
218
|
* from Node. The knob exists so the cap is explicit and matches
|
|
219
219
|
* {@link ObsidianCdpTransportOptions.commandTimeoutInMilliseconds} on desktop.
|
|
220
220
|
*
|
|
221
|
+
* The default is `DEFAULT_EVAL_CAP_IN_MILLISECONDS`, exported from the package
|
|
222
|
+
* root — import it rather than restating the number, so a closure sized
|
|
223
|
+
* against the cap follows it if it ever moves.
|
|
224
|
+
*
|
|
221
225
|
* @default `30000`
|
|
222
226
|
*/
|
|
223
227
|
readonly scriptTimeoutInMilliseconds?: number;
|
|
@@ -344,7 +348,13 @@ export interface ObsidianAndroidAppiumTransportOptions {
|
|
|
344
348
|
export interface ObsidianCdpTransportOptions {
|
|
345
349
|
/**
|
|
346
350
|
* Timeout in milliseconds for individual CDP commands.
|
|
347
|
-
*
|
|
351
|
+
*
|
|
352
|
+
* A test's closure travels as one `Runtime.evaluate` command, so this is also
|
|
353
|
+
* the desktop per-eval cap. The default is `DEFAULT_EVAL_CAP_IN_MILLISECONDS`,
|
|
354
|
+
* exported from the package root — import it rather than restating the number,
|
|
355
|
+
* so a closure sized against the cap follows it if it ever moves.
|
|
356
|
+
*
|
|
357
|
+
* @default `30000`
|
|
348
358
|
*/
|
|
349
359
|
readonly commandTimeoutInMilliseconds?: number;
|
|
350
360
|
/**
|
|
@@ -11,4 +11,4 @@ export {
|
|
|
11
11
|
checkIsMobileTransport,
|
|
12
12
|
resolveOwnedConfigDirectory
|
|
13
13
|
};
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3RyYW5zcG9ydC1vcHRpb25zLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRGlzY3JpbWluYXRlZCB1bmlvbiB0eXBlcyBmb3IgY29uZmlndXJpbmcgdGhlIE9ic2lkaWFuIHRyYW5zcG9ydFxuICogdmlhIHZpdGVzdCBgZW52aXJvbm1lbnRPcHRpb25zYC5cbiAqL1xuXG4vKipcbiAqIFRyYW5zcG9ydCBvcHRpb25zIGZvciBBbmRyb2lkIHRlc3RpbmcgdmlhIEFwcGl1bSBXZWJWaWV3IGluamVjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFwcCBwYWNrYWdlIChBbmRyb2lkKSBvciBidW5kbGUgSUQgKGlPUykuXG4gICAqIERlZmF1bHRzIHRvIGAnbWQub2JzaWRpYW4nYFxuICAgKi9cbiAgcmVhZG9ubHkgYXBwSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciB0aGUgYXV0by1zdGFydGVkIEFwcGl1bSBzZXJ2ZXIgdG8gYmVjb21lIHJlYWR5XG4gICAqIChpdHMgYC9zdGF0dXNgIGVuZHBvaW50IHRvIHJlc3BvbmQpLlxuICAgKlxuICAgKiBPbmx5IGFwcGxpZXMgd2hlbiB0aGUgaGFybmVzcyBhdXRvLXN0YXJ0cyB0aGUgQXBwaXVtIHNlcnZlclxuICAgKiAoe0BsaW5rIHNob3VsZEF1dG9TdGFydEFwcGl1bX0pOyBpZ25vcmVkIHdoZW4gYXR0YWNoaW5nIHRvIGFuXG4gICAqIGFscmVhZHktcnVubmluZyBzZXJ2ZXIuIE9uIGEgY29sZCBtYWNoaW5lIHRoZSBgbnB4IGFwcGl1bWAgc2VydmVyIGNhbiB0YWtlXG4gICAqIGEgd2hpbGUgdG8gZmluaXNoIGJvb3RpbmcsIHNvIHJhaXNlIHRoaXMgaWYgc3RhcnR1cCB0aW1lcyBvdXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAxODAwMDBgXG4gICAqL1xuICByZWFkb25seSBhcHBpdW1TdGFydFRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIEFwcGl1bSBzZXJ2ZXIgVVJMIChlLmcuIGAnaHR0cDovL2xvY2FsaG9zdDo0NzIzJ2ApLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwaXVtVXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBPYnNpZGlhbiBNb2JpbGUgdG8gZ2V0IGFzIGZhciBhcyBgZ2xvYmFsVGhpcy5hcHBgXG4gICAqIGV4aXN0aW5nIGFmdGVyIHRoZSB2YXVsdCBpcyAocmUpb3BlbmVkLlxuICAgKlxuICAgKiBUaGUgZmlyc3Qgb2YgdGhlIHR3byBidWRnZXRzIHRoZSB0cmFuc3BvcnQgc3BlbmRzIGFmdGVyIGBsb2NhdGlvbi5yZWxvYWQoKWAuXG4gICAqIEl0IGNvdmVycyB0aGUgYXBwJ3Mgb3duIGNvbGQgc3RhcnQgXHUyMDE0IHRoZSBXZWJWaWV3IHJlbG9hZGluZyBhbmQgT2JzaWRpYW4nc1xuICAgKiBidW5kbGUgY29taW5nIHVwIFx1MjAxNCB3aGljaCBvbiBhIGNvbGQgb3IgY29udGVuZGVkIGd1ZXN0IGNhbiB0YWtlIG1pbnV0ZXMsIGFuZFxuICAgKiBpcyBub3Qgd29yayB7QGxpbmsgbGF5b3V0UmVhZHlUaW1lb3V0SW5NaWxsaXNlY29uZHN9IHNob3VsZCBiZSBzaXplZCBmb3IuXG4gICAqIE9ubHkgb25jZSBgZ2xvYmFsVGhpcy5hcHBgIGFwcGVhcnMgZG9lcyB0aGF0IGZhciB0aWdodGVyIGNsb2NrIHN0YXJ0LlxuICAgKlxuICAgKiBTcGxpdHRpbmcgdGhlIHR3byBpcyB3aGF0IHN0b3BzIGEgZmlyc3QgcnVuIGFmdGVyIGEgbWFjaGluZSByZXN0YXJ0IGZyb21cbiAgICogZmFpbGluZyBieSBkZXNpZ246IHRoZSBvbGQgc2luZ2xlIDkwcyB3YWxsIGNsb2NrIHN0YXJ0ZWQgYXQgdGhlIHJlbG9hZCwgc28gYVxuICAgKiBjb2xkIGFwcCBzdGFydCBzcGVudCBpdCBiZWZvcmUgT2JzaWRpYW4gaGFkIGJlZ3VuIGxheWluZyBhbnl0aGluZyBvdXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAxODAwMDBgXG4gICAqL1xuICByZWFkb25seSBhcHBTdGFydFRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIEFuZHJvaWQgQVZEIChBbmRyb2lkIFZpcnR1YWwgRGV2aWNlKSBuYW1lLlxuICAgKlxuICAgKiBUaGUgdHJhbnNwb3J0IGZhY3RvcnkgbGF1bmNoZXMgYGVtdWxhdG9yIC1hdmQgPGF2ZE5hbWU+YCBhcyBhIGJhY2tncm91bmRcbiAgICogcHJvY2VzcyBhbmQgcG9sbHMgdW50aWwgdGhlIGRldmljZSBhcHBlYXJzLiBUaGUgZW11bGF0b3IgaXMga2lsbGVkXG4gICAqIG9uIHRyYW5zcG9ydCBkaXNwb3NhbC5cbiAgICpcbiAgICogUnVuIGBlbXVsYXRvciAtbGlzdC1hdmRzYCB0byBzZWUgYXZhaWxhYmxlIEFWRCBuYW1lcy5cbiAgICovXG4gIHJlYWRvbmx5IGF2ZE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRldmljZSBVRElEIHRvIHJldXNlIChlLmcuIGAnZW11bGF0b3ItNTU1NCdgKS5cbiAgICpcbiAgICogUG9wdWxhdGVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIGdsb2JhbCBzZXR1cCBhZnRlciB0aGUgQXBwaXVtIHNlc3Npb24gaXNcbiAgICogZXN0YWJsaXNoZWQuIFdoZW4gcHJlc2VudCBhbG9uZ3NpZGUge0BsaW5rIHNlc3Npb25JZH0sIHRoZSB0cmFuc3BvcnRcbiAgICogZmFjdG9yeSBza2lwcyBlbXVsYXRvciBzdGFydHVwIGFuZCBhdHRhY2hlcyB0byB0aGUgZXhpc3Rpbmcgc2Vzc2lvbi5cbiAgICovXG4gIHJlYWRvbmx5IGRldmljZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3Igd2FpdGluZywgYWZ0ZXIgYHN5cy5ib290X2NvbXBsZXRlZGAsIGZvciB0aGVcbiAgICogZW11bGF0b3IgdG8gYmVjb21lIGlkbGUgYmVmb3JlIHRoZSBBcHBpdW0gc2Vzc2lvbiBpcyBlc3RhYmxpc2hlZC5cbiAgICpcbiAgICogYHN5cy5ib290X2NvbXBsZXRlZGAgZmlyZXMgKmJlZm9yZSogdGhlIGd1ZXN0IGlzIGFjdHVhbGx5IGlkbGU6IHBhY2thZ2VcbiAgICogb3B0aW1pemF0aW9uIGFuZCBzeXN0ZW0gc2VydmljZXMga2VlcCBjaHVybmluZywgc28gZXN0YWJsaXNoaW5nIHRoZSBzZXNzaW9uXG4gICAqIGltbWVkaWF0ZWx5IG1ha2VzIGV2ZXJ5IG9uZSBvZiBVaUF1dG9tYXRvcjIncyBzZXJpYWxpemVkIGBhZGJgIHJvdW5kLXRyaXBzXG4gICAqIGNvbnRlbmQgd2l0aCB0aGF0IHdvcmsgYW5kIGluZmxhdGVzIHNlc3Npb24gZXN0YWJsaXNobWVudCB+M3guIFRoZSBmYWN0b3J5XG4gICAqIGluc3RlYWQgd2FpdHMgdW50aWwgdGhlIGJvb3QgYW5pbWF0aW9uIGhhcyBzdG9wcGVkIGFuZCB0aGUgcGFja2FnZSBtYW5hZ2VyXG4gICAqIGlzIHNlcnZpbmcsIHByb2NlZWRpbmcgZWFybHkgb25jZSBpZGxlIG9yIGFmdGVyIHRoaXMgYnVkZ2V0IChiZXN0LWVmZm9ydCBcdTIwMTQgYVxuICAgKiB0aW1lb3V0IGxvZ3MgYSB3YXJuaW5nIGFuZCBwcm9jZWVkcykuIFNldCBgMGAgdG8gc2tpcCB0aGUgd2FpdC5cbiAgICpcbiAgICogQXBwbGllcyB0byBhICoqcmV1c2VkKiogZGV2aWNlIGFzIHdlbGwgYXMgYSBoYXJuZXNzLXN0YXJ0ZWQgb25lLiBBIGRldmljZVxuICAgKiB0aGF0IGlzIG1lcmVseSBwcmVzZW50IGluIGBhZGIgZGV2aWNlc2AgY2FuIHN0aWxsIGJlIG1pZC1gZGV4Mm9hdGAsIGFuZFxuICAgKiBza2lwcGluZyB0aGUgZ2F0ZSB0aGVyZSBpcyB3aGF0IGxlZnQgYSBydW4gcG9sbGluZyBhIGNodXJuaW5nIGd1ZXN0IHVudGlsXG4gICAqIHtAbGluayBsYXlvdXRSZWFkeVRpbWVvdXRJbk1pbGxpc2Vjb25kc30gcmFuIG91dC5cbiAgICpcbiAgICogQGRlZmF1bHQgYDYwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgZGV2aWNlSWRsZVRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgYXV0by1zdGFydGVkIEFwcGl1bSBzZXJ2ZXIgY29uc29sZSB3aW5kb3cgaXMgc2hvd24uXG4gICAqXG4gICAqIFdoZW4gYGZhbHNlYCAodGhlIGRlZmF1bHQpLCB0aGUgYG5weCBhcHBpdW1gIHNlcnZlciBwcm9jZXNzIGlzIHNwYXduZWQgd2l0aFxuICAgKiBpdHMgY29uc29sZSB3aW5kb3cgaGlkZGVuIChgd2luZG93c0hpZGVgKSBhbmQgaXRzIG91dHB1dCBkaXNjYXJkZWQsIHNvIGl0XG4gICAqIG5laXRoZXIgc3RlYWxzIGZvY3VzIG5vciB3cml0ZXMgdG8gdGhlIGludm9raW5nIHRlcm1pbmFsLiBJZ25vcmVkIHdoZW5cbiAgICogYXR0YWNoaW5nIHRvIGFuIGFscmVhZHktcnVubmluZyBBcHBpdW0gc2VydmVyICh7QGxpbmsgc2hvdWxkQXV0b1N0YXJ0QXBwaXVtfVxuICAgKiBgZmFsc2VgLCBvciB0aGUgc2VydmVyIGFscmVhZHkgcmVhY2hhYmxlKS4gU2V0IGB0cnVlYCB0byBzZWUgdGhlIHNlcnZlciBsb2cgd2luZG93XG4gICAqIGFuZCBpdHMgbGl2ZSBvdXRwdXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IGlzQXBwaXVtQ29uc29sZVZpc2libGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhdXRvLXN0YXJ0ZWQgQW5kcm9pZCBlbXVsYXRvciB3aW5kb3cgaXMgc2hvd24gb24gc2NyZWVuLlxuICAgKlxuICAgKiBXaGVuIGBmYWxzZWAgKHRoZSBkZWZhdWx0KSwgdGhlIGVtdWxhdG9yIGlzIHN0YXJ0ZWQgd2l0aCBgLW5vLXdpbmRvd2BcbiAgICogKGhlYWRsZXNzKSwgc28gaXQgbmV2ZXIgc3RlYWxzIGZvY3VzLiBJZ25vcmVkIHdoZW4gcmV1c2luZyBhbiBhbHJlYWR5LXJ1bm5pbmdcbiAgICogZGV2aWNlIChub3RoaW5nIGlzIGxhdW5jaGVkIHRvIGhpZGUpLiBTZXQgYHRydWVgIHRvIHdhdGNoIHRoZSBlbXVsYXRvciBVSS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNFbXVsYXRvclZpc2libGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3Igd2FpdGluZyBmb3IgYGFwcC53b3Jrc3BhY2UubGF5b3V0UmVhZHlgLCBjb3VudGVkXG4gICAqIGZyb20gdGhlIG1vbWVudCB7QGxpbmsgYXBwU3RhcnRUaW1lb3V0SW5NaWxsaXNlY29uZHN9IGlzIHNhdGlzZmllZCBcdTIwMTQgbm90XG4gICAqIGZyb20gdGhlIHJlbG9hZC5cbiAgICpcbiAgICogVGhlIHNlY29uZCBvZiB0aGUgdHdvIGJ1ZGdldHMgdGhlIHRyYW5zcG9ydCBzcGVuZHMgYWZ0ZXIgYGxvY2F0aW9uLnJlbG9hZCgpYC5cbiAgICogSXQgY292ZXJzIG9ubHkgT2JzaWRpYW4ncyBvd24gd29yayBcdTIwMTQgb3BlbmluZyB0aGUgdmF1bHQgYW5kIGxvYWRpbmcgZXZlcnlcbiAgICogcGx1Z2luIFx1MjAxNCBvbmNlIHRoZSBhcHAgaXRzZWxmIGlzIHVwLCB3aGljaCBpcyB3aHkgaXQgY2FuIHN0YXkgdGlnaHQ6IG1lYXN1cmVkXG4gICAqIGF0IH4xcywgYW5kIFx1MjI2NDguNHMgdW5kZXIgMTItY29yZSArIGRpc2sgKyBtZW1vcnkgc3RyZXNzLlxuICAgKlxuICAgKiBCbG93aW5nIGl0IHRoZXJlZm9yZSBtZWFucyBPYnNpZGlhbiBnZW51aW5lbHkgc3RhbGxlZCwgKipvcioqIHRoYXQgZWFjaCBwcm9iZVxuICAgKiByb3VuZC10cmlwIGlzIGJlaW5nIGluZmxhdGVkIGJ5IGEgYnVzeSBndWVzdC4gVGhlIHRpbWVvdXQgZXJyb3IgbmFtZXMgd2hpY2gsXG4gICAqIGJ5IHJlcG9ydGluZyB0aGUgcHJvYmUgY291bnQgYW5kIHNsb3dlc3Qgcm91bmQtdHJpcCBhbG9uZ3NpZGUgdGhlIGZ1cnRoZXN0XG4gICAqIHN0YXJ0dXAgbWlsZXN0b25lIHJlYWNoZWQ6IGEgaGFuZGZ1bCBvZiBwcm9iZXMgZWFjaCB0YWtpbmcgdGVucyBvZiBzZWNvbmRzIGlzXG4gICAqIGEgY29udGVuZGVkIGd1ZXN0LCBhbmQgdGhlIGtub2IgZm9yIHRoYXQgaXNcbiAgICoge0BsaW5rIGRldmljZUlkbGVUaW1lb3V0SW5NaWxsaXNlY29uZHN9LCBub3QgdGhpcyBvbmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA5MDAwMGBcbiAgICovXG4gIHJlYWRvbmx5IGxheW91dFJlYWR5VGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBIb3cgb2xkIGEgbGVmdG92ZXIgKipob3N0KiogZGlyZWN0b3J5IG11c3QgYmUgYmVmb3JlXG4gICAqIHtAbGluayBzaG91bGRTd2VlcExlZnRvdmVyc30gcmVtb3ZlcyBpdC5cbiAgICpcbiAgICogR292ZXJucyB0aGUgaG9zdC1zaWRlIHN3ZWVwIG9ubHkgKHRoZSBgdGVtcC12YXVsdC0qYCBzdGFnaW5nIGRpcmVjdG9yaWVzXG4gICAqIHRoaXMgcnVuJ3MgbWFjaGluZSBhY2N1bXVsYXRlcyBpbiBpdHMgdGVtcCBkaXIpLiBUaGUgKipkZXZpY2UqKiBzd2VlcCBpc1xuICAgKiB1bmNvbmRpdGlvbmFsOiBBbmRyb2lkIHJ1bnMgaG9sZCB0aGUgZXhjbHVzaXZlIGBhbmRyb2lkYCBzZXR1cCBsb2NrLCBzbyBub1xuICAgKiBjb25jdXJyZW50IHJ1biBjYW4gb3duIGEgZGV2aWNlIHZhdWx0LCBhbmQgYW4gYWdlIGdhdGUgdGhlcmUgd291bGQgbGV0IGFcbiAgICogdmF1bHQgbGVha2VkIG1pbnV0ZXMgYWdvIHN1cnZpdmUgaW50byB0aGUgbmV4dCBydW4gXHUyMDE0IHdoaWNoIGlzIHRoZSBmYWlsdXJlXG4gICAqIGxvb3AgdGhlIHN3ZWVwIGV4aXN0cyB0byBicmVhay4gU2V0IGAwYCB0byByZW1vdmUgZXZlcnkgaG9zdCBtYXRjaCB0b28uXG4gICAqXG4gICAqIEBkZWZhdWx0IGA3MjAwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgbGVmdG92ZXJNYXhBZ2VJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIHdhaXRpbmcsIGFmdGVyIHRoZSBkZXZpY2UtaWRsZSBnYXRlLCBmb3IgdGhlXG4gICAqIGVtdWxhdG9yIHRvIHJlcG9ydCBhICoqdmFsaWRhdGVkIGRlZmF1bHQgbmV0d29yayoqIGJlZm9yZSB0aGUgQXBwaXVtIHNlc3Npb25cbiAgICogaXMgZXN0YWJsaXNoZWQuXG4gICAqXG4gICAqIEEgZGV2aWNlIGNhbiBiZSBpZGxlLCBmdWxseSBwYWNrYWdlZCBhbmQgYW5zd2VyaW5nIGBhZGJgIHdoaWxlIHN0aWxsIGhhdmluZ1xuICAgKiBubyByb3V0ZTogdGhlIHR3byB7QGxpbmsgZGV2aWNlSWRsZVRpbWVvdXRJbk1pbGxpc2Vjb25kc30gc2lnbmFscyBhcmVcbiAgICogc2F0aXNmaWVkIHdlbGwgYmVmb3JlIHRoZSBkZWZhdWx0IG5ldHdvcmsgaXMgY3JlYXRlZCBhbmQgdmFsaWRhdGVkLCB3aGljaFxuICAgKiBsYW5kcyB+ODBzIGludG8gZ3Vlc3QgdXB0aW1lLiBUaGF0IGdhcCBpcyBkYW5nZXJvdXMgcmF0aGVyIHRoYW4gbWVyZWx5IHNsb3dcbiAgICogXHUyMDE0IGEgdGVzdCB0aGF0IHJlYWNoZXMgdGhlIG5ldHdvcmsgdGhlcmUgcnVucyB0byBjb21wbGV0aW9uIGFnYWluc3QgYVxuICAgKiBzaWxlbnRseSAqKmVtcHR5IHJlc3VsdCoqLCB3aGljaCBubyBhc3NlcnRpb24gaW5zaWRlIHRoZSBzdWl0ZSBjYW4gdGVsbFxuICAgKiBhcGFydCBmcm9tIGEgZ2VudWluZWx5IGVtcHR5IHJlc3BvbnNlLlxuICAgKlxuICAgKiBUaGUgZmFjdG9yeSBwb2xscyBgZHVtcHN5cyBjb25uZWN0aXZpdHlgIHVudGlsIGFuIGFjdGl2ZSBkZWZhdWx0IG5ldHdvcmtcbiAgICogcmVwb3J0cyB2YWxpZGF0aW9uLCBwcm9jZWVkaW5nIGVhcmx5IG9uY2UgaXQgZG9lcyBvciBhZnRlciB0aGlzIGJ1ZGdldFxuICAgKiAoYmVzdC1lZmZvcnQgXHUyMDE0IGEgdGltZW91dCBsb2dzIGEgd2FybmluZyBuYW1pbmcgdGhlIG1pc3NpbmcgbmV0d29yayBhbmRcbiAgICogcHJvY2VlZHMpLiBTZXQgYDBgIHRvIHNraXAgdGhlIHdhaXQsIGUuZy4gZm9yIGEgZGVsaWJlcmF0ZWx5IG9mZmxpbmUgQVZEIG9yXG4gICAqIGEgc3VpdGUgdGhhdCBuZXZlciB0b3VjaGVzIHRoZSBuZXR3b3JrLlxuICAgKlxuICAgKiBBcHBsaWVzIHRvIGEgKipyZXVzZWQqKiBkZXZpY2UgYXMgd2VsbCBhcyBhIGhhcm5lc3Mtc3RhcnRlZCBvbmUsIGZvciB0aGVcbiAgICogc2FtZSByZWFzb24gdGhlIGlkbGUgZ2F0ZSBkb2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgMTIwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya1JlYWR5VGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgZXh0cmEgYXR0ZW1wdHMgdG8gZW5hYmxlIHRoZSBwbHVnaW4gYW5kIHZlcmlmeSBpdCBsb2FkZWQsIG9uIHRvcFxuICAgKiBvZiB0aGUgZmlyc3QgYXR0ZW1wdC5cbiAgICpcbiAgICogT24gYSBmcmVzaGx5IGNvbGQtYm9vdGVkIGVtdWxhdG9yIHRoZSBwbHVnaW4gc3Vic3lzdGVtIGNhbiBzdGlsbCBiZSBzZXR0bGluZ1xuICAgKiB3aGVuIHRoZSBoYXJuZXNzIGVuYWJsZXMgdGhlIHBsdWdpbiwgc28gdGhlIGVuYWJsZSBsYW5kcyBpbiB0aGUgZW5hYmxlZCBzZXRcbiAgICogYnV0IHRoZSBsb2FkIHJhY2VzIGFuZCBmYWlscyAoYFwiPGlkPlwiIGlzIGluIHRoZSBlbmFibGVkIHNldCBidXQgbm90IGxvYWRlZGApLlxuICAgKiBEZXZpY2UtaWRsZSBhbmQgYGxheW91dFJlYWR5YCBhcmUgYWxyZWFkeSBhd2FpdGVkLCBzbyB0aGlzIGlzIHRoZSBuYXJyb3dcbiAgICogcmVzaWR1YWwgcmFjZTogdGhlIGhhcm5lc3MgcmV0cmllcyB0aGUgZW5hYmxlICsgbG9hZC12ZXJpZmljYXRpb24gdGhpcyBtYW55XG4gICAqIHRpbWVzIHdpdGggZXhwb25lbnRpYWwgYmFja29mZiAoc2VlXG4gICAqIHtAbGluayBwbHVnaW5FbmFibGVSZXRyeURlbGF5SW5NaWxsaXNlY29uZHN9KSwgZm9yY2luZyBhIGdlbnVpbmUgcmVsb2FkIGVhY2hcbiAgICogYXR0ZW1wdC4gQSBjYXB0dXJlZCBwbHVnaW4gbG9hZCBlcnJvciBpcyB0cmVhdGVkIGFzIGEgZGV0ZXJtaW5pc3RpYyBidWcgYW5kXG4gICAqIGlzICoqbm90KiogcmV0cmllZC4gU2V0IGAwYCB0byBkaXNhYmxlIHJldHJ5IChhIHNpbmdsZSBhdHRlbXB0KS5cbiAgICpcbiAgICogQGRlZmF1bHQgYDNgXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5FbmFibGVSZXRyeUNvdW50PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCYXNlIGRlbGF5IGluIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHBsdWdpbi1lbmFibGUgYXR0ZW1wdHMgKHNlZVxuICAgKiB7QGxpbmsgcGx1Z2luRW5hYmxlUmV0cnlDb3VudH0pLlxuICAgKlxuICAgKiBUaGUgZGVsYXkgZ3Jvd3MgZXhwb25lbnRpYWxseSBwZXIgcmV0cnk6IHRoZSBmaXJzdCByZXRyeSB3YWl0cyB0aGlzIGxvbmcsXG4gICAqIHRoZSBzZWNvbmQgdHdpY2UgYXMgbG9uZywgdGhlIHRoaXJkIGZvdXIgdGltZXMsIGFuZCBzbyBvbiBcdTIwMTQgZ2l2aW5nIGFcbiAgICogc3RpbGwtc2V0dGxpbmcgY29sZCBndWVzdCBwcm9ncmVzc2l2ZWx5IG1vcmUgdGltZSB0byBiZWNvbWUgcmVhZHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAyMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luRW5hYmxlUmV0cnlEZWxheUluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgYSBzaW5nbGUgc2NyaXB0IGV4ZWN1dGVkIGluc2lkZSBPYnNpZGlhbiBcdTIwMTQgdGhlXG4gICAqIHBlci1gZXZhbEluT2JzaWRpYW5gIGNhcCBvbiB0aGlzIHRyYW5zcG9ydC5cbiAgICpcbiAgICogSXQgaXMgZW5mb3JjZWQgYnkgdGhlIHRyYW5zcG9ydCBpdHNlbGYsIG9uIHRoZSBOb2RlIHNpZGUsIGFuZCBpcyBhbHNvIHNlbnQgYXNcbiAgICogdGhlIFczQyBgdGltZW91dHMuc2NyaXB0YCBjYXBhYmlsaXR5IFx1MjAxNCBidXQgdGhlIGNhcGFiaWxpdHkgaXMgZGVjb3JhdGlvbi5cbiAgICogTWVhc3VyZWQgb24gYSBsaXZlIGVtdWxhdG9yOiBpdCBpcyBhY2NlcHRlZCBhbmQgcmVhZHMgYmFjayBhc1xuICAgKiBgMzAwMDBgIGluIHRoZSBXZWJWaWV3IGNvbnRleHQsIGFuZCBub3RoaW5nIGV2ZXIgYWN0cyBvbiBpdC4gT3Zlci1jYXBcbiAgICogY2xvc3VyZXMgcmFuIHBhc3QgYSA2MHMgY2VpbGluZyB3aXRob3V0IFdlYkRyaXZlciByYWlzaW5nIGBzY3JpcHQgdGltZW91dGBcbiAgICogb25jZSwgaW4gYm90aCB0aGUgc2xlZXBpbmcgYW5kIHRoZSBzcGlubmluZyBzaGFwZSwgd2l0aCBhbmQgd2l0aG91dCBhblxuICAgKiBleHBsaWNpdCBgc2V0VGltZW91dHNgLlxuICAgKlxuICAgKiBXaGF0IGhhcHBlbnMgcGFzdCByb3VnaGx5IGhhbGYgYSBtaW51dGUgaXMgd29yc2UgdGhhbiBhIGxhdGUgYW5zd2VyOiB0aGVcbiAgICogY2xvc3VyZSBjb21wbGV0ZXMgaW4gdGhlIGd1ZXN0IG9uIHNjaGVkdWxlIGFuZCBpdHMgRXhlY3V0ZSBTY3JpcHQgcmVzcG9uc2VcbiAgICogbmV2ZXIgcmVhY2hlcyB0aGUgY2xpZW50LCBzbyB0aGUgY2FsbCBzaW1wbHkgbmV2ZXIgcmV0dXJucy4gVGhpcyB0aW1lb3V0IGlzXG4gICAqIHdoYXQgdHVybnMgdGhhdCBzaWxlbmNlIGludG8gYW4ge0BsaW5rIEV2YWxDYXBFeGNlZWRlZEVycm9yfSBuYW1pbmcgdGhlXG4gICAqIGNsb3N1cmUgYXMgdGhlIGNhdXNlLlxuICAgKlxuICAgKiBSYWlzaW5nIGl0IGlzIGFsbW9zdCBuZXZlciB0aGUgcmlnaHQgYW5zd2VyLiBBIGNsb3N1cmUgdGhhdCBuZWVkcyB0byB3YWl0XG4gICAqIGxvbmdlciB0aGFuIHRoaXMgc2hvdWxkIG5vdCBiZSB3YWl0aW5nIGluc2lkZSBPYnNpZGlhbiBhdCBhbGwgXHUyMDE0IHVzZVxuICAgKiBgcG9sbEluT2JzaWRpYW5gLCB3aGljaCBrZWVwcyBlYWNoIGNsb3N1cmUgc2hvcnQgYW5kIGRvZXMgdGhlIHdhaXRpbmdcbiAgICogZnJvbSBOb2RlLiBUaGUga25vYiBleGlzdHMgc28gdGhlIGNhcCBpcyBleHBsaWNpdCBhbmQgbWF0Y2hlc1xuICAgKiB7QGxpbmsgT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zLmNvbW1hbmRUaW1lb3V0SW5NaWxsaXNlY29uZHN9IG9uIGRlc2t0b3AuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAzMDAwMGBcbiAgICovXG4gIHJlYWRvbmx5IHNjcmlwdFRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIGVzdGFibGlzaGluZyB0aGUgQXBwaXVtIHNlc3Npb24gKFdlYkRyaXZlcklPXG4gICAqIGByZW1vdGUoKWAgXHUyMDE0IFVpQXV0b21hdG9yMiBzZXJ2ZXIgaW5zdGFsbCArIGFwcCBsYXVuY2gpLlxuICAgKlxuICAgKiBUaGlzIGlzIHRoZSBsYXJnZXN0IGFuZCBtb3N0IGxvYWQtc2Vuc2l0aXZlIHN0ZXAgb2YgdGhlIEFuZHJvaWQgc2V0dXA6XG4gICAqIG9uIGEgY29sZCBvciBjb250ZW5kZWQgZW11bGF0b3IgaXQgZG9taW5hdGVzIHN0YXJ0dXAgYW5kIGNhbiB0YWtlIGEgZmV3XG4gICAqIG1pbnV0ZXMuIFJhaXNlIGl0IGlmIHNlc3Npb24gZXN0YWJsaXNobWVudCB0aW1lcyBvdXQgdW5kZXIgbG9hZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYDE4MDAwMGBcbiAgICovXG4gIHJlYWRvbmx5IHNlc3Npb25Db25uZWN0aW9uUmV0cnlUaW1lb3V0SW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEFuIGV4aXN0aW5nIEFwcGl1bSBzZXNzaW9uIElEIHRvIHJlYXR0YWNoIHRvLlxuICAgKlxuICAgKiBQb3B1bGF0ZWQgYXV0b21hdGljYWxseSBieSB0aGUgZ2xvYmFsIHNldHVwIGFuZCBwcm92aWRlZCB0byB0ZXN0IHdvcmtlcnNcbiAgICogdmlhIHRoZSBmcmFtZXdvcmsncyBjb250ZXh0IG1lY2hhbmlzbSAoZS5nLiBWaXRlc3QgYHByb3ZpZGVgL2BpbmplY3RgKS5cbiAgICogV2hlbiBwcmVzZW50LCB0aGUgdHJhbnNwb3J0IGZhY3RvcnkgdXNlcyBXZWJEcml2ZXJJTydzIGBhdHRhY2goKWAgaW5zdGVhZFxuICAgKiBvZiBjcmVhdGluZyBhIG5ldyBzZXNzaW9uLCBhdm9pZGluZyBkdXBsaWNhdGUgQXBwaXVtL0FEQiBjb25uZWN0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IHNlc3Npb25JZD86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IGluc3RhbGwgbWlzc2luZyBBcHBpdW0gZGVwZW5kZW5jaWVzICh0aGVcbiAgICogYHVpYXV0b21hdG9yMmAgZHJpdmVyLCBhbmQgQXBwaXVtIGl0c2VsZikgYmVmb3JlIGF1dG8tc3RhcnRpbmcgdGhlIHNlcnZlci5cbiAgICpcbiAgICogV2hlbiBgdHJ1ZWAgKHRoZSBkZWZhdWx0KSBhbmQgdGhlIGhhcm5lc3MgaXMgYWJvdXQgdG8gYXV0by1zdGFydCB0aGUgQXBwaXVtXG4gICAqIHNlcnZlciAoe0BsaW5rIHNob3VsZEF1dG9TdGFydEFwcGl1bX0pLCB0aGUgZmFjdG9yeSBmaXJzdCBlbnN1cmVzIEFwcGl1bSBpc1xuICAgKiBpbnN0YWxsZWQgKGdsb2JhbGx5LCB2aWEgYG5wbSBpbnN0YWxsIC1nIGFwcGl1bWApIGFuZCB0aGF0IHRoZVxuICAgKiBgdWlhdXRvbWF0b3IyYCBkcml2ZXIgaXMgaW5zdGFsbGVkIChgYXBwaXVtIGRyaXZlciBpbnN0YWxsIHVpYXV0b21hdG9yMmApLFxuICAgKiBpbnN0YWxsaW5nIHdoaWNoZXZlciBpcyBtaXNzaW5nLiBJZ25vcmVkIHdoZW4gYXR0YWNoaW5nIHRvIGFuXG4gICAqIGFscmVhZHktcnVubmluZyBzZXJ2ZXIgKG5vdGhpbmcgaXMgYXV0by1zdGFydGVkLCBzbyBub3RoaW5nIGlzIGluc3RhbGxlZCkgb3JcbiAgICogd2hlbiB7QGxpbmsgc2hvdWxkQXV0b1N0YXJ0QXBwaXVtfSBpcyBgZmFsc2VgLiBTZXQgaXQgdG8gYGZhbHNlYCB0byBtYW5hZ2VcbiAgICogdGhlIEFwcGl1bSB0b29sY2hhaW4geW91cnNlbGYgYW5kIHNraXAgdGhlIG1hY2hpbmUtbXV0YXRpbmcgZ2xvYmFsIGluc3RhbGwuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkQXV0b0luc3RhbGxBcHBpdW1EZXBlbmRlbmNpZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGF1dG9tYXRpY2FsbHkgc3RhcnQgdGhlIEFwcGl1bSBzZXJ2ZXIgaWYgaXQgaXMgbm90IHJlYWNoYWJsZS5cbiAgICpcbiAgICogV2hlbiBgdHJ1ZWAgKHRoZSBkZWZhdWx0KSwgdGhlIHRyYW5zcG9ydCBmYWN0b3J5IHNwYXducyBgbnB4IGFwcGl1bWBcbiAgICogYXMgYSBiYWNrZ3JvdW5kIHByb2Nlc3Mgd2hlbiB0aGUgcHJlZmxpZ2h0IGNoZWNrIGZhaWxzLCBhbmQga2lsbHMgaXRcbiAgICogb24gdHJhbnNwb3J0IGRpc3Bvc2FsLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEF1dG9TdGFydEFwcGl1bT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGF1dG8tc3RhcnRlZCBlbXVsYXRvciBtYXkgcmVzdW1lIFx1MjAxNCBhbmQgcmVmcmVzaCBcdTIwMTQgdGhlIEFWRCdzXG4gICAqIHNhdmVkIGJvb3Qgc25hcHNob3QuXG4gICAqXG4gICAqIFdoZW4gYGZhbHNlYCAodGhlIGRlZmF1bHQpIHRoZSBlbXVsYXRvciBpcyBzdGFydGVkIHdpdGhcbiAgICogYC1uby1zbmFwc2hvdC1sb2FkIC1uby1zbmFwc2hvdC1zYXZlYCwgc28gZXZlcnkgcnVuIGNvbGQtYm9vdHMgYSBndWVzdCB3aG9zZVxuICAgKiBzdGF0ZSBub3RoaW5nIGNhcnJpZWQgb3Zlci4gVGhhdCBpcyB0aGUgaGVybWV0aWMgZGVmYXVsdCBhIHRlc3QgaGFybmVzc1xuICAgKiBvd2VzIGl0cyBjYWxsZXJzLCBhbmQgaXQgaXMgYWxzbyB0aGUgc2FmZSBvbmU6IGEgc25hcHNob3QgdGhlIGhhcm5lc3MgbG9hZHNcbiAgICogYnV0IG5ldmVyIHdyaXRlcyByb3RzIHVubm90aWNlZCwgYW5kIHRoZSBmYWlsdXJlIGl0IGV2ZW50dWFsbHkgcHJvZHVjZXMgXHUyMDE0IGFcbiAgICogZGV2aWNlIHRoYXQgc2VydmVzIGFkYiwgYWNjZXB0cyBhIHNlc3Npb24sIHRoZW4gZHJvcHMgYG9mZmxpbmVgIGFib3V0IGhhbGYgYVxuICAgKiBtaW51dGUgbGF0ZXIgXHUyMDE0IGlzIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gYSBjb2RlIHJlZ3Jlc3Npb24uIE1lYXN1cmVkIG9uIG9uZVxuICAgKiBBVkQgYmFjayB0byBiYWNrLCBhIHJlc3VtZWQgc25hcHNob3Qga2lsbGVkIHRoZSBndWVzdCB+OTBzIGluICpldmVyeSogdGltZSxcbiAgICogd2hpbGUgdGhlIHNhbWUgQVZEIGNvbGQtYm9vdGVkIGluIDUwcyBhbmQgc3RheWVkIHVwLlxuICAgKlxuICAgKiBTZXQgaXQgdG8gYHRydWVgIG9uIGEgKipwZXJzaXN0ZW50IHJ1bm5lcioqIHdob3NlIEFWRCBpcyBub3Qgc2hhcmVkIHdpdGhcbiAgICogYW55dGhpbmcgZWxzZTogdGhlIGVtdWxhdG9yIHRoZW4gYm90aCBsb2FkcyBhbmQgc2F2ZXMgYGRlZmF1bHRfYm9vdGAsIHNvIHRoZVxuICAgKiBzbmFwc2hvdCBlYWNoIHJ1biByZXN1bWVzIGlzIG9uZSBhIHByZXZpb3VzIHJ1biB3cm90ZSwgYW5kIHRoZSB+MTEycyBjb2xkXG4gICAqIGJvb3QgaXMgbGFyZ2VseSBib3VnaHQgYmFjay4gVGhlIHRyYWRlIGlzIHRlc3QgaXNvbGF0aW9uIFx1MjAxNCBhIGd1ZXN0IHRoYXRcbiAgICogY2FycmllcyBzdGF0ZSBiZXR3ZWVuIHJ1bnMgXHUyMDE0IHNvIGl0IGlzIG9wdC1pbiBwZXIgcHJvamVjdCwgbmV2ZXIgYSBkZWZhdWx0LlxuICAgKiBJZ25vcmVkIHdoZW4gcmV1c2luZyBhbiBhbHJlYWR5LXJ1bm5pbmcgZGV2aWNlIChub3RoaW5nIGlzIGxhdW5jaGVkKS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkUmV1c2VFbXVsYXRvclNuYXBzaG90PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgaGFybmVzcyByZW1vdmVzIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMgZWFybGllciBydW5zIGxlYWtlZC5cbiAgICpcbiAgICogV2hlbiBgdHJ1ZWAgKHRoZSBkZWZhdWx0KSwgZWFjaCBydW4gc3dlZXBzIGF0IHN0YXJ0ICoqYW5kKiogYXQgZW5kOiBvbiB0aGVcbiAgICogZGV2aWNlLCBldmVyeSBgdGVtcC12YXVsdC0qYCBkaXJlY3RvcnkgdW5kZXIge0BsaW5rIHZhdWx0QmFzZVBhdGh9IChwbHVzIHRoZVxuICAgKiBzdGFsZSB2YXVsdCByZWdpc3RyYXRpb25zIGluIE9ic2lkaWFuIE1vYmlsZSdzIGBsb2NhbFN0b3JhZ2VgKTsgb24gdGhlIGhvc3QsXG4gICAqIHRoZSBsZWZ0b3ZlciBgdGVtcC12YXVsdC0qYCBhbmQgb3duZWQgYHVzZXJkYXRhLSpgIGRpcmVjdG9yaWVzIG9sZGVyIHRoYW5cbiAgICoge0BsaW5rIGxlZnRvdmVyTWF4QWdlSW5NaWxsaXNlY29uZHN9LlxuICAgKlxuICAgKiBBIHJ1biB0aGF0IGRpZXMgY2Fubm90IGNsZWFuIHVwIGFmdGVyIGl0c2VsZiBcdTIwMTQgaXRzIHRlYXJkb3duIGdvZXMgdGhyb3VnaCB0aGVcbiAgICogV2ViVmlldywgYW5kIGEgZGVhZCBXZWJWaWV3IGlzIHdoYXQgbW9zdCBBbmRyb2lkIGZhaWx1cmVzIGFyZSBcdTIwMTQgc28gdGhlXG4gICAqIHJlc2lkdWUgYWNjdW11bGF0ZXMgYW5kIHNsb3dzIHRoZSBuZXh0IHJ1bidzIHN0YXJ0dXAgZW51bWVyYXRpb24gdW50aWwgaXRcbiAgICogbWlzc2VzIHRoZSBXZWJWaWV3LXJlYWRpbmVzcyBidWRnZXQuIFRoZSBzdGFydCBzd2VlcCBpcyB0aGUgaGFsZiB0aGF0IGJyZWFrc1xuICAgKiB0aGF0IGxvb3AsIGJlY2F1c2UgaXQgcnVucyBiZWZvcmUgYW55dGhpbmcgdGhhdCBjYW4gZGllLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFN3ZWVwTGVmdG92ZXJzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGlzY3JpbWluYW50IGZvciB0aGUgdHJhbnNwb3J0IHR5cGUuXG4gICAqL1xuICByZWFkb25seSB0eXBlOiAnb2JzaWRpYW4tYW5kcm9pZC1hcHBpdW0nO1xuXG4gIC8qKlxuICAgKiBCYXNlIHBhdGggb24gdGhlIGRldmljZSB3aGVyZSBPYnNpZGlhbiBzdG9yZXMgdmF1bHRzLlxuICAgKlxuICAgKiBEZWZhdWx0czpcbiAgICogLSBBbmRyb2lkOiBgL3NkY2FyZC9Eb2N1bWVudHMvYFxuICAgKiAtIGlPUzogYEBtZC5vYnNpZGlhbjpkb2N1bWVudHMvYFxuICAgKi9cbiAgcmVhZG9ubHkgdmF1bHRCYXNlUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogVGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIHdhaXRpbmcgZm9yIHRoZSBXZWJWaWV3IGNvbnRleHQgdG8gYmVjb21lIGF2YWlsYWJsZS5cbiAgICpcbiAgICogT24gc2xvdyBlbXVsYXRvcnMsIHRoZSBDaHJvbWVEcml2ZXIgcHJveHkgdGhhdCBoYW5kbGVzIFdlYlZpZXcgY29tbWFuZHNcbiAgICogbWF5IG5vdCBiZSByZWFkeSBpbW1lZGlhdGVseSBhZnRlciB0aGUgQXBwaXVtIHNlc3Npb24gc3RhcnRzLiBUaGlzIHRpbWVvdXRcbiAgICogY29udHJvbHMgaG93IGxvbmcgdG8gcG9sbCBiZWZvcmUgZ2l2aW5nIHVwLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgNjAwMDBgXG4gICAqL1xuICByZWFkb25seSB3ZWJ2aWV3VGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFRyYW5zcG9ydCBvcHRpb25zIGZvciBkZXNrdG9wIHRlc3RpbmcgdmlhIENocm9tZSBEZXZUb29scyBQcm90b2NvbC5cbiAqXG4gKiBUaGlzIGlzIHRoZSBkZWZhdWx0IGRlc2t0b3AgdHJhbnNwb3J0LiBCeSBkZWZhdWx0IHRoZSBoYXJuZXNzICoqbGF1bmNoZXMgYW5kXG4gKiBvd25zIGFuIGlzb2xhdGVkIE9ic2lkaWFuIGluc3RhbmNlKiogaW4gYSB0ZW1wb3JhcnkgdXNlci1kYXRhIGRpciAobmV2ZXJcbiAqIHRvdWNoaW5nIHRoZSB1c2VyJ3MgT2JzaWRpYW4pLCBjb25uZWN0ZWQgb3ZlciBhIGZyZWUgQ0RQIHBvcnQuIFByb3ZpZGVcbiAqIHtAbGluayBPYnNpZGlhbkNkcFRyYW5zcG9ydE9wdGlvbnMucG9ydH0gdG8gaW5zdGVhZCBhdHRhY2ggdG8gYW5cbiAqIGFscmVhZHktcnVubmluZyBPYnNpZGlhbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYnNpZGlhbkNkcFRyYW5zcG9ydE9wdGlvbnMge1xuICAvKipcbiAgICogVGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIGluZGl2aWR1YWwgQ0RQIGNvbW1hbmRzLlxuICAgKiBEZWZhdWx0cyB0byAzMDAwMFxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWFuZFRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHZhdWx0J3MgKipjb25maWcgZm9sZGVyKiogXHUyMDE0IE9ic2lkaWFuJ3MgcGVyLXZhdWx0ICpPdmVycmlkZSBjb25maWdcbiAgICogZm9sZGVyKiBzZXR0aW5nLCBlLmcuIGAnLm9ic2lkaWFuLWRlc2t0b3AnYC4gTXVzdCBzdGFydCB3aXRoIGEgZG90LCBtdXN0IG5vdFxuICAgKiBiZSB0aGUgYmFyZSBkb3QsIGFuZCBtdXN0IG5vdCBjb250YWluIGEgcGF0aCBzZXBhcmF0b3I7IGFueXRoaW5nIGVsc2UgdGhyb3dzXG4gICAqIGJlZm9yZSBPYnNpZGlhbiBpcyBsYXVuY2hlZCwgYmVjYXVzZSBPYnNpZGlhbiBpdHNlbGYgd291bGQgc2lsZW50bHlcbiAgICogc3Vic3RpdHV0ZSBgLm9ic2lkaWFuYC5cbiAgICpcbiAgICogTmVlZGVkIHRvIG9wZW4gYSB2YXVsdCB0aGF0IGtlZXBzIGl0cyBzZXR0aW5ncyBzb21ld2hlcmUgb3RoZXIgdGhhblxuICAgKiBgLm9ic2lkaWFuYCBcdTIwMTQgYSB2YXVsdCB3aXRoIGEgc3RhbGUgYC5vYnNpZGlhbmAgYmVzaWRlIHRoZSByZWFsIGZvbGRlciB3b3VsZFxuICAgKiBvdGhlcndpc2Ugb3BlbiBzdWNjZXNzZnVsbHkgYWdhaW5zdCB0aGUgd3Jvbmcgc2V0dGluZ3MgYW5kIHJlcG9ydCBzdWNjZXNzLlxuICAgKiBUaGUgb3ZlcnJpZGUgbGl2ZXMgaW4gYGxvY2FsU3RvcmFnZWAsIGtleWVkIGJ5IHZhdWx0IGlkLCBhbmQgc28gaXMgc2NvcGVkIHRvXG4gICAqIGEgdXNlci1kYXRhIGRpcmVjdG9yeTogYW4gb3duZWQgaW5zdGFuY2UgZ2V0cyBhIGZyZXNoIHRlbXAgb25lIGFuZCB0aGVyZWZvcmVcbiAgICogaW5oZXJpdHMgbm90aGluZyBmcm9tIHRoZSB1c2VyJ3MgT2JzaWRpYW4sIGhvd2V2ZXIgdGhhdCB2YXVsdCBpcyBjb25maWd1cmVkXG4gICAqIHRoZXJlLlxuICAgKlxuICAgKiBTZXR0aW5nIGl0IGNvc3RzIG9uZSBleHRyYSBib290IHBoYXNlOiB0aGUgaW5zdGFuY2UgaXMgbGF1bmNoZWQgdG8gdGhlXG4gICAqIHN0YXJ0ZXIgc2NyZWVuLCB0aGUgb3ZlcnJpZGUgaXMgd3JpdHRlbiBpbiB0aGF0IHJlbmRlcmVyLCBhbmQgdGhlIHZhdWx0IGlzXG4gICAqIHRoZW4gb3BlbmVkIG92ZXIgSVBDLiBBZnRlciB0aGUgdmF1bHQgaXMgcmVhZHkgaXRzIGFjdHVhbFxuICAgKiBgYXBwLnZhdWx0LmNvbmZpZ0RpcmAgaXMgcmVhZCBiYWNrIGFuZCBhbnkgbWlzbWF0Y2ggdGhyb3dzXG4gICAqIGBDb25maWdEaXJlY3RvcnlGYWxsYmFja0Vycm9yYCBcdTIwMTQgdGhlcmUgaXMgbm8ga25vYiB0byBkb3duZ3JhZGUgdGhhdCwgYmVjYXVzZSBhXG4gICAqIHZhdWx0IG9wZW5lZCBhZ2FpbnN0IHRoZSB3cm9uZyBjb25maWcgZm9sZGVyIGlzIHNpbGVudGx5IHRoZSB3cm9uZyB2YXVsdC5cbiAgICpcbiAgICogT25seSBtZWFuaW5nZnVsIGluIG93bmVkIG1vZGU7ICoqaWdub3JlZCBpbiBhdHRhY2ggbW9kZSoqICh7QGxpbmsgT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zLnBvcnR9XG4gICAqIHNldCksIHdoZXJlIHRoZSB2YXVsdCBpcyBvcGVuZWQgYnkgdGhlIHVzZXIncyBvd24gT2JzaWRpYW4gdW5kZXIgaXRzIG93blxuICAgKiBjb25maWcuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB1bmRlZmluZWRgIChPYnNpZGlhbidzIG93biBkZWZhdWx0LCBgLm9ic2lkaWFuYClcbiAgICovXG4gIHJlYWRvbmx5IGNvbmZpZ0RpcmVjdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogR3JhY2Ugd2luZG93IGluIG1pbGxpc2Vjb25kcyBmb3IgZmFzdC1mYWlsaW5nIGEgKipkZWFkIGJvb3QqKiBvZiB0aGUgb3duZWRcbiAgICogaW5zdGFuY2UuXG4gICAqXG4gICAqIFdoZW4gYW4gYXNhciBjYW5ub3QgcnVuIG9uIHRoZSBsYXVuY2hlZCBFbGVjdHJvbiBzaGVsbCAodGhlIGluc3RhbGxlclxuICAgKiB2ZXJzaW9uIGlzIHRvbyBvbGQgZm9yIHRoZSBhcHAgdmVyc2lvbiksIHRoZSByZW5kZXJlciBsb2FkcyBidXQgbmV2ZXJcbiAgICogYm9vdHN0cmFwczogYGRvY3VtZW50LmJvZHlgIHN0YXlzIGVtcHR5IGFuZCBgd2luZG93LmFwcGAgcmVtYWluc1xuICAgKiBgdW5kZWZpbmVkYCBcdTIwMTQgYSBibGFjayBzY3JlZW4uIFJhdGhlciB0aGFuIHdhaXRpbmcgb3V0IHRoZSBmdWxsIHJlYWRpbmVzc1xuICAgKiB0aW1lb3V0LCB0aGUgb3duZWQtdmF1bHQgcmVhZGluZXNzIHBvbGwgY29uY2x1ZGVzIHRoZSBib290IGlzIGRlYWQgb25jZSB0aGVcbiAgICogcmVuZGVyZXIgaGFzIGJlZW4gYGRvY3VtZW50LnJlYWR5U3RhdGVgIGAnY29tcGxldGUnYCBmb3IgdGhpcyBsb25nIHdpdGggbm9cbiAgICogYHdpbmRvdy5hcHBgIGFuZCBhbiBlbXB0eSBgPGJvZHk+YCwgYW5kIHRocm93cyBhXG4gICAqIGBSZW5kZXJlckZhaWxlZFRvSW5pdGlhbGl6ZUVycm9yYC4gT25seSBhcHBsaWVzIHRvIGFuIG93bmVkIGluc3RhbmNlXG4gICAqIChpZ25vcmVkIGluIGF0dGFjaCBtb2RlLCB7QGxpbmsgcG9ydH0gc2V0KS4gU2V0IGAwYCB0byBkaXNhYmxlIGZhc3QtZmFpbCBhbmRcbiAgICogcmVzdG9yZSB0aGUgcGxhaW4gd2FpdC1vdXQtdGhlLXJlYWRpbmVzcy10aW1lb3V0IGJlaGF2aW9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgMTAwMDBgXG4gICAqL1xuICByZWFkb25seSBkZWFkQm9vdEdyYWNlSW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENEUCBob3N0LlxuICAgKiBEZWZhdWx0cyB0byBgJ2xvY2FsaG9zdCdgXG4gICAqL1xuICByZWFkb25seSBob3N0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNYXJrcyB7QGxpbmsgcG9ydH0gYXMgdGhlIENEUCBwb3J0IG9mIGEgKipoYXJuZXNzLW93bmVkLCBpc29sYXRlZCBpbnN0YW5jZSoqXG4gICAqIHRoYXQgdGhlIGdsb2JhbCBzZXR1cCBhbHJlYWR5IGxhdW5jaGVkIGFuZCBwcmVwYXJlZCAodmF1bHQgcmVnaXN0ZXJlZCxcbiAgICogcGx1Z2luIGVuYWJsZWQpLlxuICAgKlxuICAgKiBQb3B1bGF0ZWQgYXV0b21hdGljYWxseSBieSB0aGUgZ2xvYmFsIHNldHVwIGFuZCBwcm92aWRlZCB0byB0ZXN0IHdvcmtlcnMgdmlhXG4gICAqIHRoZSBmcmFtZXdvcmsncyBjb250ZXh0IG1lY2hhbmlzbSAoZS5nLiBWaXRlc3QgYHByb3ZpZGVgL2BpbmplY3RgKS4gV2hlbiBzZXQsXG4gICAqIHRoZSB3b3JrZXIgKiphdHRhY2hlcyoqIHRvIHRoZSBvd25lZCBpbnN0YW5jZSBvbiB7QGxpbmsgcG9ydH0gaW5zdGVhZCBvZlxuICAgKiBsYXVuY2hpbmcgaXRzIG93biwgYW5kIHNraXBzIHRoZSB1c2VyLXNjb3BlIHZhdWx0LXJlZ2lzdHJhdGlvbiBwcmVmbGlnaHQgXHUyMDE0XG4gICAqIHRoZSBvd25lZCBpbnN0YW5jZSdzIHZhdWx0IGxpdmVzIGluIGFuIGlzb2xhdGVkIHVzZXItZGF0YSBjb25maWcsIG5vdCB0aGVcbiAgICogdXNlci1zY29wZSByZWdpc3RyeS4gRG8gbm90IHNldCB0aGlzIG1hbnVhbGx5OyBmb3IgcGxhaW4gYXR0YWNoIG1vZGUgdXNlXG4gICAqIHtAbGluayBwb3J0fSBhbG9uZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlYWRvbmx5IGlzSGFybmVzc093bmVkSW5zdGFuY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBvd25lZCBkZXNrdG9wIE9ic2lkaWFuIHdpbmRvdyBpcyBzaG93biBvbiBzY3JlZW4uXG4gICAqXG4gICAqIFdoZW4gYGZhbHNlYCwgdGhlIGhhcm5lc3MgbGF1bmNoZXMgdGhlIG93bmVkIGluc3RhbmNlIHdpdGhcbiAgICoga2VlcC1hbGl2ZSBDaHJvbWl1bSBmbGFncyBhbmQgbW92ZXMgaXRzIHdpbmRvdyAqKm9mZi1zY3JlZW4qKiBvbmNlIEVsZWN0cm9uJ3NcbiAgICogcmVtb3RlIGJyaWRnZSBpcyBhdmFpbGFibGUsIHNvIHRoZSBydW4gbmV2ZXIgc3RlYWxzIGZvY3VzIG9yIHBvcHMgYSB3aW5kb3cgaW5cbiAgICogZnJvbnQgb2YgeW91LiBPZmYtc2NyZWVuIChub3QgbWluaW1pemVkKSBrZWVwcyB0aGUgcmVuZGVyZXIgbGl2ZSwgc29cbiAgICogYHNldFRpbWVvdXRgLCBgcmVxdWVzdEFuaW1hdGlvbkZyYW1lYCwgYDpob3ZlcmAsIGFuZCB0cnVzdGVkIGlucHV0IGJlaGF2ZVxuICAgKiBpZGVudGljYWxseSB0byBhIHZpc2libGUgd2luZG93LiBEZWZhdWx0cyB0byBgdHJ1ZWA7IGludGVncmF0aW9uIHNldHVwXG4gICAqIGV4cGxpY2l0bHkgcGFzc2VzIGBmYWxzZWAgdG8gYXZvaWQgc3RlYWxpbmcgZm9jdXMuIElnbm9yZWQgaW4gYXR0YWNoIG1vZGVcbiAgICogKHtAbGluayBwb3J0fSBzZXQpIFx1MjAxNCB0aGUgaGFybmVzcyBuZXZlclxuICAgKiBtb3ZlcyB0aGUgdXNlcidzIG93biBydW5uaW5nIHdpbmRvdy5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBpc09ic2lkaWFuQXBwVmlzaWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEhvdyBvbGQgYSBsZWZ0b3ZlciBkaXJlY3RvcnkgbXVzdCBiZSBiZWZvcmUge0BsaW5rIHNob3VsZFN3ZWVwTGVmdG92ZXJzfVxuICAgKiByZW1vdmVzIGl0LlxuICAgKlxuICAgKiBUaGUgZ2F0ZSBtYXR0ZXJzIG1vc3Qgb24gZGVza3RvcDogcnVucyBhcmUgZGVsaWJlcmF0ZWx5ICoqbm90Kiogc2VyaWFsaXplZFxuICAgKiAoZWFjaCBvd25zIGFuIGlzb2xhdGVkIGluc3RhbmNlKSwgYW5kIGV2ZXJ5IHByb2plY3Qgb24gdGhlIG1hY2hpbmUgc2hhcmVzXG4gICAqIG9uZSB0ZW1wIGRpcmVjdG9yeSwgc28gYSB5b3VuZyBgdGVtcC12YXVsdC0qYCAvIGB1c2VyZGF0YS0qYCBkaXJlY3RvcnkgbWF5XG4gICAqIHdlbGwgYmVsb25nIHRvIGEgcnVuIHRoYXQgaXMgc3RpbGwgaW4gZmxpZ2h0LiBSYWlzZSBpdCBpZiBhIHJ1biBvZiB5b3VycyBjYW5cbiAgICogb3V0bGl2ZSB0aGUgZGVmYXVsdDsgc2V0IGAwYCB0byByZW1vdmUgZXZlcnkgbWF0Y2ggcmVnYXJkbGVzcyBvZiBhZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA3MjAwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgbGVmdG92ZXJNYXhBZ2VJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogUGlucyB0aGUgKipFbGVjdHJvbiBzaGVsbCoqIChpbnN0YWxsZXIgYnVpbGQpIHRoZSBvd25lZCBpbnN0YW5jZSBydW5zLlxuICAgKlxuICAgKiBBY2NlcHRzIGFuIGV4cGxpY2l0IGAneC55LnonYCwgYCdwdWJsaWMtbGF0ZXN0J2AsIG9yIGAnY2F0YWx5c3QtbGF0ZXN0J2AuXG4gICAqIFRoZSBtYXRjaGluZyBHaXRIdWIgcmVsZWFzZSBpbnN0YWxsZXIgaXMgZG93bmxvYWRlZCBhbmQgZXh0cmFjdGVkIHRvIGFcbiAgICogcG9ydGFibGUgc2hlbGwgKGNhY2hlZCBmb3IgcmV1c2UpLiBQdWJsaWMgcmVsZWFzZXMgb25seSBcdTIwMTQgY2F0YWx5c3QgYnVpbGRzXG4gICAqIGhhdmUgbm8gcHVibGljIGluc3RhbGxlci4gSWdub3JlZCB3aGVuIHtAbGluayBwb3J0fSAoYXR0YWNoIG1vZGUpIGlzIHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlYWRvbmx5IG9ic2lkaWFuSW5zdGFsbGVyVmVyc2lvbj86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogUGlucyB0aGUgKipPYnNpZGlhbiBhcHAgdmVyc2lvbioqIChhc2FyKSB0aGUgb3duZWQgaW5zdGFuY2UgcnVucy5cbiAgICpcbiAgICogQWNjZXB0cyBhbiBleHBsaWNpdCBgJ3gueS56J2AsIGAncHVibGljLWxhdGVzdCdgLCBvciBgJ2NhdGFseXN0LWxhdGVzdCdgLlxuICAgKiBWZXJzaW9ucyBhdCBvciBhYm92ZSB0aGUgc2hlbGwgdmVyc2lvbiBhcmUgYXBwbGllZCBhcyBhIGNoZWFwIGFzYXIgc3dhcDtcbiAgICogb2xkZXIgdmVyc2lvbnMgdHJhbnNwYXJlbnRseSB1c2UgdGhlIG1hdGNoaW5nIGluc3RhbGxlciBzaGVsbC4gV2hlbiBvbWl0dGVkLFxuICAgKiB0aGUgdXNlcidzIGN1cnJlbnRseS1pbnN0YWxsZWQgdmVyc2lvbiBpcyB1c2VkLiBJZ25vcmVkIHdoZW4ge0BsaW5rIHBvcnR9XG4gICAqIChhdHRhY2ggbW9kZSkgaXMgc2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdW5kZWZpbmVkYFxuICAgKi9cbiAgcmVhZG9ubHkgb2JzaWRpYW5WZXJzaW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBDRFAgcG9ydCBvZiBhbiBhbHJlYWR5LXJ1bm5pbmcgT2JzaWRpYW4gdG8gKiphdHRhY2gqKiB0byAodGhlXG4gICAqIGAtLXJlbW90ZS1kZWJ1Z2dpbmctcG9ydGAgaXQgd2FzIGxhdW5jaGVkIHdpdGgpLiBXaGVuIHNldCwgdGhlIGhhcm5lc3NcbiAgICogYXR0YWNoZXMgaW5zdGVhZCBvZiBvd25pbmcgYW4gaW5zdGFuY2UsIGFuZCB0aGUgdmVyc2lvbiBrbm9icyBhcmUgaWdub3JlZC5cbiAgICogV2hlbiBvbWl0dGVkLCBhbiBvd25lZCBpc29sYXRlZCBpbnN0YW5jZSBpcyBsYXVuY2hlZCBvbiBhbiBhdXRvbWF0aWNhbGx5XG4gICAqIGNob3NlbiBmcmVlIHBvcnQgKG5vIHBvcnQgaXMgaGFyZGNvZGVkKS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gbGF1bmNoIHRoZSBvd25lZCBpbnN0YW5jZSB3aXRoIENocm9taXVtJ3Mgc2FuZGJveCBkaXNhYmxlZFxuICAgKiAoYC0tbm8tc2FuZGJveGApLlxuICAgKlxuICAgKiBOZWVkZWQgdG8gYm9vdCBhbiBvd25lZCBpbnN0YW5jZSBvbiBMaW51eCB3aGVuIHRoZXJlIGlzIG5vXG4gICAqIGNvcnJlY3RseS1jb25maWd1cmVkIHNldHVpZCBgY2hyb21lLXNhbmRib3hgIGhlbHBlciBcdTIwMTQgZS5nLiBhIHBvcnRhYmxlIHNoZWxsXG4gICAqIGV4dHJhY3RlZCBmcm9tIGFuIGluc3RhbGxlciwgb3IgYSBDSSBydW5uZXIgbGF1bmNoaW5nIGFzIGEgbm9uLXJvb3QgdXNlciwgaW5cbiAgICogd2hpY2ggY2FzZSB0aGUgcmVuZGVyZXIgb3RoZXJ3aXNlIHJlZnVzZXMgdG8gc3RhcnQuIEhhcm1sZXNzIG9uXG4gICAqIFdpbmRvd3MvbWFjT1MuIElnbm9yZWQgaW4gYXR0YWNoIG1vZGUgKHtAbGluayBwb3J0fSBzZXQpIFx1MjAxNCB0aGUgaGFybmVzcyBuZXZlclxuICAgKiByZWxhdW5jaGVzIHRoZSB1c2VyJ3MgcnVubmluZyBpbnN0YW5jZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkRGlzYWJsZVNhbmRib3g/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBoYXJuZXNzIHJlbW92ZXMgdGhlIHRlbXBvcmFyeSBkaXJlY3RvcmllcyBlYXJsaWVyIHJ1bnMgbGVha2VkLlxuICAgKlxuICAgKiBXaGVuIGB0cnVlYCAodGhlIGRlZmF1bHQpLCBlYWNoIHJ1biBzd2VlcHMgYXQgc3RhcnQgYW5kIGF0IGVuZCBmb3JcbiAgICogYHRlbXAtdmF1bHQtKmAgc3RhZ2luZyBkaXJlY3RvcmllcyBhbmQgb3duZWQgYHVzZXJkYXRhLSpgIGluc3RhbmNlIHByb2ZpbGVzXG4gICAqIG9sZGVyIHRoYW4ge0BsaW5rIGxlZnRvdmVyTWF4QWdlSW5NaWxsaXNlY29uZHN9LiBBIHJ1biBraWxsZWQgbWlkLWZsaWdodFxuICAgKiBuZXZlciByZWFjaGVzIGl0cyBvd24gY2xlYW51cCwgc28gd2l0aG91dCB0aGlzIHRoZSB0ZW1wIGRpcmVjdG9yeSBncm93c1xuICAgKiB3aXRob3V0IGJvdW5kLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFN3ZWVwTGVmdG92ZXJzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBhbiAqKnVucnVubmFibGUqKiBpbnN0YWxsZXJcdTIxOTRhcHAgdmVyc2lvbiBwYWlyIGZhaWxzIGZhc3QgYmVmb3JlIGxhdW5jaC5cbiAgICpcbiAgICogV2hlbiBgdHJ1ZWAgKHRoZSBkZWZhdWx0KSwgYW4gaW5zdGFsbGVyIGJlbG93IHRoZSBhcHAncyBydW4gZmxvb3IgKHRoZVxuICAgKiBvbGRlc3QgaW5zdGFsbGVyIHRoZSBhcHAncyBhc2FyIGNhbiBib290IG9uKSB0aHJvd3NcbiAgICogYEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvcmAgZnJvbSB2ZXJzaW9uIHJlc29sdXRpb24sIGJlZm9yZSBhbnl0aGluZ1xuICAgKiBpcyBkb3dubG9hZGVkIG9yIGxhdW5jaGVkLiBTZXQgYGZhbHNlYCB0byBsZXQgdGhlIHBpbiBwcm9jZWVkIHRvIGxhdW5jaFxuICAgKiBpbnN0ZWFkIFx1MjAxNCB3aGVyZSB0aGUgcmVhY3RpdmUgZGVhZC1ib290IGZhc3QtZmFpbFxuICAgKiAoYFJlbmRlcmVyRmFpbGVkVG9Jbml0aWFsaXplRXJyb3JgLCBzZWUge0BsaW5rIGRlYWRCb290R3JhY2VJbk1pbGxpc2Vjb25kc30pXG4gICAqIHN0aWxsIGNhdGNoZXMgdGhlIGJsYWNrLXNjcmVlbiBib290LCBhbmQgdGhlIGAndW5ydW5uYWJsZSdgIHZlcmRpY3QgaXNcbiAgICogc3VyZmFjZWQgYXMgZGF0YSByYXRoZXIgdGhhbiB0aHJvd24uIE9ubHkgYXBwbGllcyB0byBhbiBvd25lZCBpbnN0YW5jZVxuICAgKiAoaWdub3JlZCBpbiBhdHRhY2ggbW9kZSwge0BsaW5rIHBvcnR9IHNldCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkVGhyb3dPbkluY29tcGF0aWJsZUluc3RhbGxlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYSAqKnNpbGVudCBhc2FyIGZhbGxiYWNrKiogZmFpbHMgZmFzdCBhZnRlciBib290LlxuICAgKlxuICAgKiBXaGVuIGFuIGFzYXIgaXMgc3dhcHBlZCBvbnRvIGFuIGluc3RhbGxlciBzaGVsbCB0b28gb2xkIGZvciBpdCwgdGhlIGluc3RhbmNlXG4gICAqIG1heSBub3QgZGVhZC1ib290IFx1MjAxNCBpdCBjYW4gc2lsZW50bHkgcmV2ZXJ0IHRvIHRoZSBpbnN0YWxsZXIncyBvd24gYnVuZGxlZFxuICAgKiBhc2FyIGFuZCBydW4gdGhlICoqd3JvbmcgKG9sZGVyKSoqIHZlcnNpb24gYmVoaW5kIGEgaGVhbHRoeSBVSS4gV2hlbiBgdHJ1ZWBcbiAgICogKHRoZSBkZWZhdWx0KSwgdGhlIHRyYW5zcG9ydCB2ZXJpZmllcyB0aGUgcnVubmluZyBhcHAgdmVyc2lvbiBhZ2FpbnN0IHRoZSBwaW5cbiAgICogcG9zdC1ib290IGFuZCB0aHJvd3MgYFNpbGVudEFzYXJGYWxsYmFja0Vycm9yYCBvbiBhIG1pc21hdGNoLiBTZXQgYGZhbHNlYCB0b1xuICAgKiBsZXQgdGhlIGJvb3QgcHJvY2VlZCBcdTIwMTQgdGhlIG1pc21hdGNoIGlzIHRoZW4gc3VyZmFjZWQgYXMgZGF0YSAodGhlIGZhbGxiYWNrXG4gICAqIHZlcmRpY3QpIHJhdGhlciB0aGFuIHRocm93bi4gT25seSBhcHBsaWVzIHRvIGFuIG93bmVkIGluc3RhbmNlIHJ1bm5pbmcgYVxuICAgKiBzd2FwcGVkLWluIGFzYXIgKGlnbm9yZWQgaW4gYXR0YWNoIG1vZGUsIHtAbGluayBwb3J0fSBzZXQsIGFuZCB3aGVuIG5vIGFzYXIgaXNcbiAgICogc3dhcHBlZCBcdTIwMTQgdGhlcmUgaXMgbm90aGluZyB0byB2ZXJpZnkpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFRocm93T25TaWxlbnRBc2FyRmFsbGJhY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBvd25lZC1pbnN0YW5jZSBjb21wYXRpYmlsaXR5ICoqbmFnIHdhcm5pbmdzKiogYXJlIGVtaXR0ZWQuXG4gICAqXG4gICAqIENvdmVycyAqKmJvdGgqKiBjb21wYXRpYmlsaXR5IG5hZ3M6IHRoZSBvZmZsaW5lIGluc3RhbGxlclx1MjE5NGFwcCB3YXJuaW5nIChhXG4gICAqIHJ1bm5hYmxlIGluc3RhbGxlciBiZWxvdyB0aGUgcmVjb21tZW5kZWQgZmxvb3IpIGFuZCB0aGUgcG9zdC1ib290XG4gICAqIHJ1bnRpbWUtRWxlY3Ryb24gd2FybmluZyAoYSBsaXZlIEVsZWN0cm9uIGJlbG93IHRoZSBhcHAncyByZWNvbW1lbmRlZFxuICAgKiBtaW5pbXVtKS4gV2hlbiBgdHJ1ZWAgKHRoZSBkZWZhdWx0KSBlYWNoIGZpcmVzIHZpYSB0aGUgaGFybmVzcyBsb2c7IHNldFxuICAgKiBgZmFsc2VgIHRvIHNpbGVuY2UgYm90aCBcdTIwMTQgdGhlIHZlcmRpY3RzIGFyZSBzdGlsbCBjb21wdXRlZCBhbmQgc3VyZmFjZWQgYXNcbiAgICogZGF0YSAoYGNvbXBhdGliaWxpdHlgIC8gYGVsZWN0cm9uQ29tcGF0aWJpbGl0eWApLCBvbmx5IHRoZSBsb2cgaXMgc3VwcHJlc3NlZC5cbiAgICogRG9lcyBub3QgYWZmZWN0IHRoZSBgJ3VucnVubmFibGUnYCB0aHJvdyAoc2VlXG4gICAqIHtAbGluayBzaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyfSkuIE9ubHkgYXBwbGllcyB0byBhbiBvd25lZFxuICAgKiBpbnN0YW5jZSAoaWdub3JlZCBpbiBhdHRhY2ggbW9kZSwge0BsaW5rIHBvcnR9IHNldCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3Vlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERpc2NyaW1pbmFudCBmb3IgdGhlIHRyYW5zcG9ydCB0eXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogJ29ic2lkaWFuLWNkcCc7XG59XG5cbi8qKlxuICogRGlzY3JpbWluYXRlZCB1bmlvbiBvZiBhbGwgc3VwcG9ydGVkIHRyYW5zcG9ydCBjb25maWd1cmF0aW9ucy5cbiAqXG4gKiBVc2VkIGluIHZpdGVzdCBgZW52aXJvbm1lbnRPcHRpb25zLm9ic2lkaWFuVHJhbnNwb3J0YCB0byBzZWxlY3QgYW5kXG4gKiBjb25maWd1cmUgdGhlIHRyYW5zcG9ydCBmb3IgaW50ZWdyYXRpb24gdGVzdHMuXG4gKi9cbmV4cG9ydCB0eXBlIE9ic2lkaWFuVHJhbnNwb3J0T3B0aW9ucyA9XG4gIHwgT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9uc1xuICB8IE9ic2lkaWFuQ2RwVHJhbnNwb3J0T3B0aW9ucztcblxuLyoqXG4gKiBXaGV0aGVyIHRoZXNlIG9wdGlvbnMgZGVzY3JpYmUgYSBtb2JpbGUgdHJhbnNwb3J0LlxuICpcbiAqIFRoZSBzYW1lIGZhY3QgYXMge0BsaW5rIE9ic2lkaWFuVHJhbnNwb3J0LmlzTW9iaWxlfSwgYnV0IGtub3dhYmxlIGZyb20gdGhlIG9wdGlvbnMgYWxvbmUgXHUyMDE0IHNvIGEgY2FsbGVyXG4gKiBjYW4gYWN0IG9uIGl0IGJlZm9yZSBwYXlpbmcgZm9yIGEgZGV2aWNlLiBSZWFkaW5nIGl0IG9mZiBhIGxpdmUgdHJhbnNwb3J0IG1lYW5zIGJvb3RpbmcgdGhlIGVtdWxhdG9yXG4gKiBhbmQgdGhlIEFwcGl1bSBzZXNzaW9uIGZpcnN0LCB3aGljaCBpcyB+NzAgcyB0byBsZWFybiBzb21ldGhpbmcgdGhlIGRpc2NyaW1pbmFudCBhbHJlYWR5IHNheXMuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcmVzb2x2ZWQgdHJhbnNwb3J0IG9wdGlvbnMuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgZm9yIGEgbW9iaWxlIHRyYW5zcG9ydCwgYGZhbHNlYCBmb3IgZGVza3RvcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrSXNNb2JpbGVUcmFuc3BvcnQob3B0aW9uczogT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zKTogYm9vbGVhbiB7XG4gIHJldHVybiBvcHRpb25zLnR5cGUgPT09ICdvYnNpZGlhbi1hbmRyb2lkLWFwcGl1bSc7XG59XG5cbi8qKlxuICogVGhlIGNvbmZpZyBmb2xkZXIgYSB2YXVsdCB0aGUgaGFybmVzcyAqKm93bnMqKiB3aWxsIGFjdHVhbGx5IHJlYWQsIG9yIGB1bmRlZmluZWRgIHdoZW4gaXQgaXNcbiAqIE9ic2lkaWFuJ3Mgb3duIGRlZmF1bHQuXG4gKlxuICoge0BsaW5rIE9ic2lkaWFuQ2RwVHJhbnNwb3J0T3B0aW9ucy5jb25maWdEaXJlY3Rvcnl9IGlzIHRoZSBvbmx5IGtub2IgdGhhdCBtb3ZlcyBpdCwgYW5kIGl0IGlzXG4gKiBtZWFuaW5nZnVsIG9ubHkgaW4gb3duZWQgbW9kZTogaW4gYXR0YWNoIG1vZGUgdGhlIHZhdWx0IGlzIG9wZW5lZCBieSB0aGUgdXNlcidzIG93biBPYnNpZGlhbiB1bmRlclxuICogaXRzIG93biBjb25maWcsIGFuZCBvbiBBbmRyb2lkIHRoZXJlIGlzIG5vIG92ZXJyaWRlIGF0IGFsbC4gQW55dGhpbmcgdGhlIGhhcm5lc3Mgd3JpdGVzIGludG8gYSB2YXVsdFxuICogYmVmb3JlIGl0IGlzIG9wZW5lZCBoYXMgdG8gZ28gd2hlcmUgdGhhdCB2YXVsdCB3aWxsIGxvb2ssIHNvIHRoaXMgaXMgdGhlIGFuc3dlciBldmVyeSBzdWNoIHdyaXRlclxuICogbmVlZHMgXHUyMDE0IHNlZSBgZW5zdXJlSGVhZGxlc3NWYXVsdENvbmZpZ2AuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcmVzb2x2ZWQgdHJhbnNwb3J0IG9wdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgb3ZlcnJpZGRlbiBjb25maWcgZm9sZGVyIG5hbWUsIG9yIGB1bmRlZmluZWRgIGZvciBPYnNpZGlhbidzIGRlZmF1bHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlT3duZWRDb25maWdEaXJlY3Rvcnkob3B0aW9uczogT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9wdGlvbnMudHlwZSAhPT0gJ29ic2lkaWFuLWNkcCcgfHwgb3B0aW9ucy5wb3J0ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIG9wdGlvbnMuY29uZmlnRGlyZWN0b3J5O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBMm1CTyxTQUFTLHVCQUF1QixTQUE0QztBQUNqRixTQUFPLFFBQVEsU0FBUztBQUMxQjtBQWVPLFNBQVMsNEJBQTRCLFNBQXVEO0FBQ2pHLE1BQUksUUFBUSxTQUFTLGtCQUFrQixRQUFRLFNBQVMsUUFBVztBQUNqRSxXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU8sUUFBUTtBQUNqQjsiLAogICJuYW1lcyI6IFtdCn0K
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3RyYW5zcG9ydC1vcHRpb25zLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRGlzY3JpbWluYXRlZCB1bmlvbiB0eXBlcyBmb3IgY29uZmlndXJpbmcgdGhlIE9ic2lkaWFuIHRyYW5zcG9ydFxuICogdmlhIHZpdGVzdCBgZW52aXJvbm1lbnRPcHRpb25zYC5cbiAqL1xuXG4vKipcbiAqIFRyYW5zcG9ydCBvcHRpb25zIGZvciBBbmRyb2lkIHRlc3RpbmcgdmlhIEFwcGl1bSBXZWJWaWV3IGluamVjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFwcCBwYWNrYWdlIChBbmRyb2lkKSBvciBidW5kbGUgSUQgKGlPUykuXG4gICAqIERlZmF1bHRzIHRvIGAnbWQub2JzaWRpYW4nYFxuICAgKi9cbiAgcmVhZG9ubHkgYXBwSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciB0aGUgYXV0by1zdGFydGVkIEFwcGl1bSBzZXJ2ZXIgdG8gYmVjb21lIHJlYWR5XG4gICAqIChpdHMgYC9zdGF0dXNgIGVuZHBvaW50IHRvIHJlc3BvbmQpLlxuICAgKlxuICAgKiBPbmx5IGFwcGxpZXMgd2hlbiB0aGUgaGFybmVzcyBhdXRvLXN0YXJ0cyB0aGUgQXBwaXVtIHNlcnZlclxuICAgKiAoe0BsaW5rIHNob3VsZEF1dG9TdGFydEFwcGl1bX0pOyBpZ25vcmVkIHdoZW4gYXR0YWNoaW5nIHRvIGFuXG4gICAqIGFscmVhZHktcnVubmluZyBzZXJ2ZXIuIE9uIGEgY29sZCBtYWNoaW5lIHRoZSBgbnB4IGFwcGl1bWAgc2VydmVyIGNhbiB0YWtlXG4gICAqIGEgd2hpbGUgdG8gZmluaXNoIGJvb3RpbmcsIHNvIHJhaXNlIHRoaXMgaWYgc3RhcnR1cCB0aW1lcyBvdXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAxODAwMDBgXG4gICAqL1xuICByZWFkb25seSBhcHBpdW1TdGFydFRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIEFwcGl1bSBzZXJ2ZXIgVVJMIChlLmcuIGAnaHR0cDovL2xvY2FsaG9zdDo0NzIzJ2ApLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwaXVtVXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBPYnNpZGlhbiBNb2JpbGUgdG8gZ2V0IGFzIGZhciBhcyBgZ2xvYmFsVGhpcy5hcHBgXG4gICAqIGV4aXN0aW5nIGFmdGVyIHRoZSB2YXVsdCBpcyAocmUpb3BlbmVkLlxuICAgKlxuICAgKiBUaGUgZmlyc3Qgb2YgdGhlIHR3byBidWRnZXRzIHRoZSB0cmFuc3BvcnQgc3BlbmRzIGFmdGVyIGBsb2NhdGlvbi5yZWxvYWQoKWAuXG4gICAqIEl0IGNvdmVycyB0aGUgYXBwJ3Mgb3duIGNvbGQgc3RhcnQgXHUyMDE0IHRoZSBXZWJWaWV3IHJlbG9hZGluZyBhbmQgT2JzaWRpYW4nc1xuICAgKiBidW5kbGUgY29taW5nIHVwIFx1MjAxNCB3aGljaCBvbiBhIGNvbGQgb3IgY29udGVuZGVkIGd1ZXN0IGNhbiB0YWtlIG1pbnV0ZXMsIGFuZFxuICAgKiBpcyBub3Qgd29yayB7QGxpbmsgbGF5b3V0UmVhZHlUaW1lb3V0SW5NaWxsaXNlY29uZHN9IHNob3VsZCBiZSBzaXplZCBmb3IuXG4gICAqIE9ubHkgb25jZSBgZ2xvYmFsVGhpcy5hcHBgIGFwcGVhcnMgZG9lcyB0aGF0IGZhciB0aWdodGVyIGNsb2NrIHN0YXJ0LlxuICAgKlxuICAgKiBTcGxpdHRpbmcgdGhlIHR3byBpcyB3aGF0IHN0b3BzIGEgZmlyc3QgcnVuIGFmdGVyIGEgbWFjaGluZSByZXN0YXJ0IGZyb21cbiAgICogZmFpbGluZyBieSBkZXNpZ246IHRoZSBvbGQgc2luZ2xlIDkwcyB3YWxsIGNsb2NrIHN0YXJ0ZWQgYXQgdGhlIHJlbG9hZCwgc28gYVxuICAgKiBjb2xkIGFwcCBzdGFydCBzcGVudCBpdCBiZWZvcmUgT2JzaWRpYW4gaGFkIGJlZ3VuIGxheWluZyBhbnl0aGluZyBvdXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAxODAwMDBgXG4gICAqL1xuICByZWFkb25seSBhcHBTdGFydFRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIEFuZHJvaWQgQVZEIChBbmRyb2lkIFZpcnR1YWwgRGV2aWNlKSBuYW1lLlxuICAgKlxuICAgKiBUaGUgdHJhbnNwb3J0IGZhY3RvcnkgbGF1bmNoZXMgYGVtdWxhdG9yIC1hdmQgPGF2ZE5hbWU+YCBhcyBhIGJhY2tncm91bmRcbiAgICogcHJvY2VzcyBhbmQgcG9sbHMgdW50aWwgdGhlIGRldmljZSBhcHBlYXJzLiBUaGUgZW11bGF0b3IgaXMga2lsbGVkXG4gICAqIG9uIHRyYW5zcG9ydCBkaXNwb3NhbC5cbiAgICpcbiAgICogUnVuIGBlbXVsYXRvciAtbGlzdC1hdmRzYCB0byBzZWUgYXZhaWxhYmxlIEFWRCBuYW1lcy5cbiAgICovXG4gIHJlYWRvbmx5IGF2ZE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRldmljZSBVRElEIHRvIHJldXNlIChlLmcuIGAnZW11bGF0b3ItNTU1NCdgKS5cbiAgICpcbiAgICogUG9wdWxhdGVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIGdsb2JhbCBzZXR1cCBhZnRlciB0aGUgQXBwaXVtIHNlc3Npb24gaXNcbiAgICogZXN0YWJsaXNoZWQuIFdoZW4gcHJlc2VudCBhbG9uZ3NpZGUge0BsaW5rIHNlc3Npb25JZH0sIHRoZSB0cmFuc3BvcnRcbiAgICogZmFjdG9yeSBza2lwcyBlbXVsYXRvciBzdGFydHVwIGFuZCBhdHRhY2hlcyB0byB0aGUgZXhpc3Rpbmcgc2Vzc2lvbi5cbiAgICovXG4gIHJlYWRvbmx5IGRldmljZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3Igd2FpdGluZywgYWZ0ZXIgYHN5cy5ib290X2NvbXBsZXRlZGAsIGZvciB0aGVcbiAgICogZW11bGF0b3IgdG8gYmVjb21lIGlkbGUgYmVmb3JlIHRoZSBBcHBpdW0gc2Vzc2lvbiBpcyBlc3RhYmxpc2hlZC5cbiAgICpcbiAgICogYHN5cy5ib290X2NvbXBsZXRlZGAgZmlyZXMgKmJlZm9yZSogdGhlIGd1ZXN0IGlzIGFjdHVhbGx5IGlkbGU6IHBhY2thZ2VcbiAgICogb3B0aW1pemF0aW9uIGFuZCBzeXN0ZW0gc2VydmljZXMga2VlcCBjaHVybmluZywgc28gZXN0YWJsaXNoaW5nIHRoZSBzZXNzaW9uXG4gICAqIGltbWVkaWF0ZWx5IG1ha2VzIGV2ZXJ5IG9uZSBvZiBVaUF1dG9tYXRvcjIncyBzZXJpYWxpemVkIGBhZGJgIHJvdW5kLXRyaXBzXG4gICAqIGNvbnRlbmQgd2l0aCB0aGF0IHdvcmsgYW5kIGluZmxhdGVzIHNlc3Npb24gZXN0YWJsaXNobWVudCB+M3guIFRoZSBmYWN0b3J5XG4gICAqIGluc3RlYWQgd2FpdHMgdW50aWwgdGhlIGJvb3QgYW5pbWF0aW9uIGhhcyBzdG9wcGVkIGFuZCB0aGUgcGFja2FnZSBtYW5hZ2VyXG4gICAqIGlzIHNlcnZpbmcsIHByb2NlZWRpbmcgZWFybHkgb25jZSBpZGxlIG9yIGFmdGVyIHRoaXMgYnVkZ2V0IChiZXN0LWVmZm9ydCBcdTIwMTQgYVxuICAgKiB0aW1lb3V0IGxvZ3MgYSB3YXJuaW5nIGFuZCBwcm9jZWVkcykuIFNldCBgMGAgdG8gc2tpcCB0aGUgd2FpdC5cbiAgICpcbiAgICogQXBwbGllcyB0byBhICoqcmV1c2VkKiogZGV2aWNlIGFzIHdlbGwgYXMgYSBoYXJuZXNzLXN0YXJ0ZWQgb25lLiBBIGRldmljZVxuICAgKiB0aGF0IGlzIG1lcmVseSBwcmVzZW50IGluIGBhZGIgZGV2aWNlc2AgY2FuIHN0aWxsIGJlIG1pZC1gZGV4Mm9hdGAsIGFuZFxuICAgKiBza2lwcGluZyB0aGUgZ2F0ZSB0aGVyZSBpcyB3aGF0IGxlZnQgYSBydW4gcG9sbGluZyBhIGNodXJuaW5nIGd1ZXN0IHVudGlsXG4gICAqIHtAbGluayBsYXlvdXRSZWFkeVRpbWVvdXRJbk1pbGxpc2Vjb25kc30gcmFuIG91dC5cbiAgICpcbiAgICogQGRlZmF1bHQgYDYwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgZGV2aWNlSWRsZVRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgYXV0by1zdGFydGVkIEFwcGl1bSBzZXJ2ZXIgY29uc29sZSB3aW5kb3cgaXMgc2hvd24uXG4gICAqXG4gICAqIFdoZW4gYGZhbHNlYCAodGhlIGRlZmF1bHQpLCB0aGUgYG5weCBhcHBpdW1gIHNlcnZlciBwcm9jZXNzIGlzIHNwYXduZWQgd2l0aFxuICAgKiBpdHMgY29uc29sZSB3aW5kb3cgaGlkZGVuIChgd2luZG93c0hpZGVgKSBhbmQgaXRzIG91dHB1dCBkaXNjYXJkZWQsIHNvIGl0XG4gICAqIG5laXRoZXIgc3RlYWxzIGZvY3VzIG5vciB3cml0ZXMgdG8gdGhlIGludm9raW5nIHRlcm1pbmFsLiBJZ25vcmVkIHdoZW5cbiAgICogYXR0YWNoaW5nIHRvIGFuIGFscmVhZHktcnVubmluZyBBcHBpdW0gc2VydmVyICh7QGxpbmsgc2hvdWxkQXV0b1N0YXJ0QXBwaXVtfVxuICAgKiBgZmFsc2VgLCBvciB0aGUgc2VydmVyIGFscmVhZHkgcmVhY2hhYmxlKS4gU2V0IGB0cnVlYCB0byBzZWUgdGhlIHNlcnZlciBsb2cgd2luZG93XG4gICAqIGFuZCBpdHMgbGl2ZSBvdXRwdXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IGlzQXBwaXVtQ29uc29sZVZpc2libGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhdXRvLXN0YXJ0ZWQgQW5kcm9pZCBlbXVsYXRvciB3aW5kb3cgaXMgc2hvd24gb24gc2NyZWVuLlxuICAgKlxuICAgKiBXaGVuIGBmYWxzZWAgKHRoZSBkZWZhdWx0KSwgdGhlIGVtdWxhdG9yIGlzIHN0YXJ0ZWQgd2l0aCBgLW5vLXdpbmRvd2BcbiAgICogKGhlYWRsZXNzKSwgc28gaXQgbmV2ZXIgc3RlYWxzIGZvY3VzLiBJZ25vcmVkIHdoZW4gcmV1c2luZyBhbiBhbHJlYWR5LXJ1bm5pbmdcbiAgICogZGV2aWNlIChub3RoaW5nIGlzIGxhdW5jaGVkIHRvIGhpZGUpLiBTZXQgYHRydWVgIHRvIHdhdGNoIHRoZSBlbXVsYXRvciBVSS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNFbXVsYXRvclZpc2libGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3Igd2FpdGluZyBmb3IgYGFwcC53b3Jrc3BhY2UubGF5b3V0UmVhZHlgLCBjb3VudGVkXG4gICAqIGZyb20gdGhlIG1vbWVudCB7QGxpbmsgYXBwU3RhcnRUaW1lb3V0SW5NaWxsaXNlY29uZHN9IGlzIHNhdGlzZmllZCBcdTIwMTQgbm90XG4gICAqIGZyb20gdGhlIHJlbG9hZC5cbiAgICpcbiAgICogVGhlIHNlY29uZCBvZiB0aGUgdHdvIGJ1ZGdldHMgdGhlIHRyYW5zcG9ydCBzcGVuZHMgYWZ0ZXIgYGxvY2F0aW9uLnJlbG9hZCgpYC5cbiAgICogSXQgY292ZXJzIG9ubHkgT2JzaWRpYW4ncyBvd24gd29yayBcdTIwMTQgb3BlbmluZyB0aGUgdmF1bHQgYW5kIGxvYWRpbmcgZXZlcnlcbiAgICogcGx1Z2luIFx1MjAxNCBvbmNlIHRoZSBhcHAgaXRzZWxmIGlzIHVwLCB3aGljaCBpcyB3aHkgaXQgY2FuIHN0YXkgdGlnaHQ6IG1lYXN1cmVkXG4gICAqIGF0IH4xcywgYW5kIFx1MjI2NDguNHMgdW5kZXIgMTItY29yZSArIGRpc2sgKyBtZW1vcnkgc3RyZXNzLlxuICAgKlxuICAgKiBCbG93aW5nIGl0IHRoZXJlZm9yZSBtZWFucyBPYnNpZGlhbiBnZW51aW5lbHkgc3RhbGxlZCwgKipvcioqIHRoYXQgZWFjaCBwcm9iZVxuICAgKiByb3VuZC10cmlwIGlzIGJlaW5nIGluZmxhdGVkIGJ5IGEgYnVzeSBndWVzdC4gVGhlIHRpbWVvdXQgZXJyb3IgbmFtZXMgd2hpY2gsXG4gICAqIGJ5IHJlcG9ydGluZyB0aGUgcHJvYmUgY291bnQgYW5kIHNsb3dlc3Qgcm91bmQtdHJpcCBhbG9uZ3NpZGUgdGhlIGZ1cnRoZXN0XG4gICAqIHN0YXJ0dXAgbWlsZXN0b25lIHJlYWNoZWQ6IGEgaGFuZGZ1bCBvZiBwcm9iZXMgZWFjaCB0YWtpbmcgdGVucyBvZiBzZWNvbmRzIGlzXG4gICAqIGEgY29udGVuZGVkIGd1ZXN0LCBhbmQgdGhlIGtub2IgZm9yIHRoYXQgaXNcbiAgICoge0BsaW5rIGRldmljZUlkbGVUaW1lb3V0SW5NaWxsaXNlY29uZHN9LCBub3QgdGhpcyBvbmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA5MDAwMGBcbiAgICovXG4gIHJlYWRvbmx5IGxheW91dFJlYWR5VGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBIb3cgb2xkIGEgbGVmdG92ZXIgKipob3N0KiogZGlyZWN0b3J5IG11c3QgYmUgYmVmb3JlXG4gICAqIHtAbGluayBzaG91bGRTd2VlcExlZnRvdmVyc30gcmVtb3ZlcyBpdC5cbiAgICpcbiAgICogR292ZXJucyB0aGUgaG9zdC1zaWRlIHN3ZWVwIG9ubHkgKHRoZSBgdGVtcC12YXVsdC0qYCBzdGFnaW5nIGRpcmVjdG9yaWVzXG4gICAqIHRoaXMgcnVuJ3MgbWFjaGluZSBhY2N1bXVsYXRlcyBpbiBpdHMgdGVtcCBkaXIpLiBUaGUgKipkZXZpY2UqKiBzd2VlcCBpc1xuICAgKiB1bmNvbmRpdGlvbmFsOiBBbmRyb2lkIHJ1bnMgaG9sZCB0aGUgZXhjbHVzaXZlIGBhbmRyb2lkYCBzZXR1cCBsb2NrLCBzbyBub1xuICAgKiBjb25jdXJyZW50IHJ1biBjYW4gb3duIGEgZGV2aWNlIHZhdWx0LCBhbmQgYW4gYWdlIGdhdGUgdGhlcmUgd291bGQgbGV0IGFcbiAgICogdmF1bHQgbGVha2VkIG1pbnV0ZXMgYWdvIHN1cnZpdmUgaW50byB0aGUgbmV4dCBydW4gXHUyMDE0IHdoaWNoIGlzIHRoZSBmYWlsdXJlXG4gICAqIGxvb3AgdGhlIHN3ZWVwIGV4aXN0cyB0byBicmVhay4gU2V0IGAwYCB0byByZW1vdmUgZXZlcnkgaG9zdCBtYXRjaCB0b28uXG4gICAqXG4gICAqIEBkZWZhdWx0IGA3MjAwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgbGVmdG92ZXJNYXhBZ2VJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIHdhaXRpbmcsIGFmdGVyIHRoZSBkZXZpY2UtaWRsZSBnYXRlLCBmb3IgdGhlXG4gICAqIGVtdWxhdG9yIHRvIHJlcG9ydCBhICoqdmFsaWRhdGVkIGRlZmF1bHQgbmV0d29yayoqIGJlZm9yZSB0aGUgQXBwaXVtIHNlc3Npb25cbiAgICogaXMgZXN0YWJsaXNoZWQuXG4gICAqXG4gICAqIEEgZGV2aWNlIGNhbiBiZSBpZGxlLCBmdWxseSBwYWNrYWdlZCBhbmQgYW5zd2VyaW5nIGBhZGJgIHdoaWxlIHN0aWxsIGhhdmluZ1xuICAgKiBubyByb3V0ZTogdGhlIHR3byB7QGxpbmsgZGV2aWNlSWRsZVRpbWVvdXRJbk1pbGxpc2Vjb25kc30gc2lnbmFscyBhcmVcbiAgICogc2F0aXNmaWVkIHdlbGwgYmVmb3JlIHRoZSBkZWZhdWx0IG5ldHdvcmsgaXMgY3JlYXRlZCBhbmQgdmFsaWRhdGVkLCB3aGljaFxuICAgKiBsYW5kcyB+ODBzIGludG8gZ3Vlc3QgdXB0aW1lLiBUaGF0IGdhcCBpcyBkYW5nZXJvdXMgcmF0aGVyIHRoYW4gbWVyZWx5IHNsb3dcbiAgICogXHUyMDE0IGEgdGVzdCB0aGF0IHJlYWNoZXMgdGhlIG5ldHdvcmsgdGhlcmUgcnVucyB0byBjb21wbGV0aW9uIGFnYWluc3QgYVxuICAgKiBzaWxlbnRseSAqKmVtcHR5IHJlc3VsdCoqLCB3aGljaCBubyBhc3NlcnRpb24gaW5zaWRlIHRoZSBzdWl0ZSBjYW4gdGVsbFxuICAgKiBhcGFydCBmcm9tIGEgZ2VudWluZWx5IGVtcHR5IHJlc3BvbnNlLlxuICAgKlxuICAgKiBUaGUgZmFjdG9yeSBwb2xscyBgZHVtcHN5cyBjb25uZWN0aXZpdHlgIHVudGlsIGFuIGFjdGl2ZSBkZWZhdWx0IG5ldHdvcmtcbiAgICogcmVwb3J0cyB2YWxpZGF0aW9uLCBwcm9jZWVkaW5nIGVhcmx5IG9uY2UgaXQgZG9lcyBvciBhZnRlciB0aGlzIGJ1ZGdldFxuICAgKiAoYmVzdC1lZmZvcnQgXHUyMDE0IGEgdGltZW91dCBsb2dzIGEgd2FybmluZyBuYW1pbmcgdGhlIG1pc3NpbmcgbmV0d29yayBhbmRcbiAgICogcHJvY2VlZHMpLiBTZXQgYDBgIHRvIHNraXAgdGhlIHdhaXQsIGUuZy4gZm9yIGEgZGVsaWJlcmF0ZWx5IG9mZmxpbmUgQVZEIG9yXG4gICAqIGEgc3VpdGUgdGhhdCBuZXZlciB0b3VjaGVzIHRoZSBuZXR3b3JrLlxuICAgKlxuICAgKiBBcHBsaWVzIHRvIGEgKipyZXVzZWQqKiBkZXZpY2UgYXMgd2VsbCBhcyBhIGhhcm5lc3Mtc3RhcnRlZCBvbmUsIGZvciB0aGVcbiAgICogc2FtZSByZWFzb24gdGhlIGlkbGUgZ2F0ZSBkb2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgMTIwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya1JlYWR5VGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgZXh0cmEgYXR0ZW1wdHMgdG8gZW5hYmxlIHRoZSBwbHVnaW4gYW5kIHZlcmlmeSBpdCBsb2FkZWQsIG9uIHRvcFxuICAgKiBvZiB0aGUgZmlyc3QgYXR0ZW1wdC5cbiAgICpcbiAgICogT24gYSBmcmVzaGx5IGNvbGQtYm9vdGVkIGVtdWxhdG9yIHRoZSBwbHVnaW4gc3Vic3lzdGVtIGNhbiBzdGlsbCBiZSBzZXR0bGluZ1xuICAgKiB3aGVuIHRoZSBoYXJuZXNzIGVuYWJsZXMgdGhlIHBsdWdpbiwgc28gdGhlIGVuYWJsZSBsYW5kcyBpbiB0aGUgZW5hYmxlZCBzZXRcbiAgICogYnV0IHRoZSBsb2FkIHJhY2VzIGFuZCBmYWlscyAoYFwiPGlkPlwiIGlzIGluIHRoZSBlbmFibGVkIHNldCBidXQgbm90IGxvYWRlZGApLlxuICAgKiBEZXZpY2UtaWRsZSBhbmQgYGxheW91dFJlYWR5YCBhcmUgYWxyZWFkeSBhd2FpdGVkLCBzbyB0aGlzIGlzIHRoZSBuYXJyb3dcbiAgICogcmVzaWR1YWwgcmFjZTogdGhlIGhhcm5lc3MgcmV0cmllcyB0aGUgZW5hYmxlICsgbG9hZC12ZXJpZmljYXRpb24gdGhpcyBtYW55XG4gICAqIHRpbWVzIHdpdGggZXhwb25lbnRpYWwgYmFja29mZiAoc2VlXG4gICAqIHtAbGluayBwbHVnaW5FbmFibGVSZXRyeURlbGF5SW5NaWxsaXNlY29uZHN9KSwgZm9yY2luZyBhIGdlbnVpbmUgcmVsb2FkIGVhY2hcbiAgICogYXR0ZW1wdC4gQSBjYXB0dXJlZCBwbHVnaW4gbG9hZCBlcnJvciBpcyB0cmVhdGVkIGFzIGEgZGV0ZXJtaW5pc3RpYyBidWcgYW5kXG4gICAqIGlzICoqbm90KiogcmV0cmllZC4gU2V0IGAwYCB0byBkaXNhYmxlIHJldHJ5IChhIHNpbmdsZSBhdHRlbXB0KS5cbiAgICpcbiAgICogQGRlZmF1bHQgYDNgXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5FbmFibGVSZXRyeUNvdW50PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCYXNlIGRlbGF5IGluIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHBsdWdpbi1lbmFibGUgYXR0ZW1wdHMgKHNlZVxuICAgKiB7QGxpbmsgcGx1Z2luRW5hYmxlUmV0cnlDb3VudH0pLlxuICAgKlxuICAgKiBUaGUgZGVsYXkgZ3Jvd3MgZXhwb25lbnRpYWxseSBwZXIgcmV0cnk6IHRoZSBmaXJzdCByZXRyeSB3YWl0cyB0aGlzIGxvbmcsXG4gICAqIHRoZSBzZWNvbmQgdHdpY2UgYXMgbG9uZywgdGhlIHRoaXJkIGZvdXIgdGltZXMsIGFuZCBzbyBvbiBcdTIwMTQgZ2l2aW5nIGFcbiAgICogc3RpbGwtc2V0dGxpbmcgY29sZCBndWVzdCBwcm9ncmVzc2l2ZWx5IG1vcmUgdGltZSB0byBiZWNvbWUgcmVhZHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAyMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luRW5hYmxlUmV0cnlEZWxheUluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgYSBzaW5nbGUgc2NyaXB0IGV4ZWN1dGVkIGluc2lkZSBPYnNpZGlhbiBcdTIwMTQgdGhlXG4gICAqIHBlci1gZXZhbEluT2JzaWRpYW5gIGNhcCBvbiB0aGlzIHRyYW5zcG9ydC5cbiAgICpcbiAgICogSXQgaXMgZW5mb3JjZWQgYnkgdGhlIHRyYW5zcG9ydCBpdHNlbGYsIG9uIHRoZSBOb2RlIHNpZGUsIGFuZCBpcyBhbHNvIHNlbnQgYXNcbiAgICogdGhlIFczQyBgdGltZW91dHMuc2NyaXB0YCBjYXBhYmlsaXR5IFx1MjAxNCBidXQgdGhlIGNhcGFiaWxpdHkgaXMgZGVjb3JhdGlvbi5cbiAgICogTWVhc3VyZWQgb24gYSBsaXZlIGVtdWxhdG9yOiBpdCBpcyBhY2NlcHRlZCBhbmQgcmVhZHMgYmFjayBhc1xuICAgKiBgMzAwMDBgIGluIHRoZSBXZWJWaWV3IGNvbnRleHQsIGFuZCBub3RoaW5nIGV2ZXIgYWN0cyBvbiBpdC4gT3Zlci1jYXBcbiAgICogY2xvc3VyZXMgcmFuIHBhc3QgYSA2MHMgY2VpbGluZyB3aXRob3V0IFdlYkRyaXZlciByYWlzaW5nIGBzY3JpcHQgdGltZW91dGBcbiAgICogb25jZSwgaW4gYm90aCB0aGUgc2xlZXBpbmcgYW5kIHRoZSBzcGlubmluZyBzaGFwZSwgd2l0aCBhbmQgd2l0aG91dCBhblxuICAgKiBleHBsaWNpdCBgc2V0VGltZW91dHNgLlxuICAgKlxuICAgKiBXaGF0IGhhcHBlbnMgcGFzdCByb3VnaGx5IGhhbGYgYSBtaW51dGUgaXMgd29yc2UgdGhhbiBhIGxhdGUgYW5zd2VyOiB0aGVcbiAgICogY2xvc3VyZSBjb21wbGV0ZXMgaW4gdGhlIGd1ZXN0IG9uIHNjaGVkdWxlIGFuZCBpdHMgRXhlY3V0ZSBTY3JpcHQgcmVzcG9uc2VcbiAgICogbmV2ZXIgcmVhY2hlcyB0aGUgY2xpZW50LCBzbyB0aGUgY2FsbCBzaW1wbHkgbmV2ZXIgcmV0dXJucy4gVGhpcyB0aW1lb3V0IGlzXG4gICAqIHdoYXQgdHVybnMgdGhhdCBzaWxlbmNlIGludG8gYW4ge0BsaW5rIEV2YWxDYXBFeGNlZWRlZEVycm9yfSBuYW1pbmcgdGhlXG4gICAqIGNsb3N1cmUgYXMgdGhlIGNhdXNlLlxuICAgKlxuICAgKiBSYWlzaW5nIGl0IGlzIGFsbW9zdCBuZXZlciB0aGUgcmlnaHQgYW5zd2VyLiBBIGNsb3N1cmUgdGhhdCBuZWVkcyB0byB3YWl0XG4gICAqIGxvbmdlciB0aGFuIHRoaXMgc2hvdWxkIG5vdCBiZSB3YWl0aW5nIGluc2lkZSBPYnNpZGlhbiBhdCBhbGwgXHUyMDE0IHVzZVxuICAgKiBgcG9sbEluT2JzaWRpYW5gLCB3aGljaCBrZWVwcyBlYWNoIGNsb3N1cmUgc2hvcnQgYW5kIGRvZXMgdGhlIHdhaXRpbmdcbiAgICogZnJvbSBOb2RlLiBUaGUga25vYiBleGlzdHMgc28gdGhlIGNhcCBpcyBleHBsaWNpdCBhbmQgbWF0Y2hlc1xuICAgKiB7QGxpbmsgT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zLmNvbW1hbmRUaW1lb3V0SW5NaWxsaXNlY29uZHN9IG9uIGRlc2t0b3AuXG4gICAqXG4gICAqIFRoZSBkZWZhdWx0IGlzIGBERUZBVUxUX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EU2AsIGV4cG9ydGVkIGZyb20gdGhlIHBhY2thZ2VcbiAgICogcm9vdCBcdTIwMTQgaW1wb3J0IGl0IHJhdGhlciB0aGFuIHJlc3RhdGluZyB0aGUgbnVtYmVyLCBzbyBhIGNsb3N1cmUgc2l6ZWRcbiAgICogYWdhaW5zdCB0aGUgY2FwIGZvbGxvd3MgaXQgaWYgaXQgZXZlciBtb3Zlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYDMwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgc2NyaXB0VGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgZXN0YWJsaXNoaW5nIHRoZSBBcHBpdW0gc2Vzc2lvbiAoV2ViRHJpdmVySU9cbiAgICogYHJlbW90ZSgpYCBcdTIwMTQgVWlBdXRvbWF0b3IyIHNlcnZlciBpbnN0YWxsICsgYXBwIGxhdW5jaCkuXG4gICAqXG4gICAqIFRoaXMgaXMgdGhlIGxhcmdlc3QgYW5kIG1vc3QgbG9hZC1zZW5zaXRpdmUgc3RlcCBvZiB0aGUgQW5kcm9pZCBzZXR1cDpcbiAgICogb24gYSBjb2xkIG9yIGNvbnRlbmRlZCBlbXVsYXRvciBpdCBkb21pbmF0ZXMgc3RhcnR1cCBhbmQgY2FuIHRha2UgYSBmZXdcbiAgICogbWludXRlcy4gUmFpc2UgaXQgaWYgc2Vzc2lvbiBlc3RhYmxpc2htZW50IHRpbWVzIG91dCB1bmRlciBsb2FkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgMTgwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgc2Vzc2lvbkNvbm5lY3Rpb25SZXRyeVRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQW4gZXhpc3RpbmcgQXBwaXVtIHNlc3Npb24gSUQgdG8gcmVhdHRhY2ggdG8uXG4gICAqXG4gICAqIFBvcHVsYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBnbG9iYWwgc2V0dXAgYW5kIHByb3ZpZGVkIHRvIHRlc3Qgd29ya2Vyc1xuICAgKiB2aWEgdGhlIGZyYW1ld29yaydzIGNvbnRleHQgbWVjaGFuaXNtIChlLmcuIFZpdGVzdCBgcHJvdmlkZWAvYGluamVjdGApLlxuICAgKiBXaGVuIHByZXNlbnQsIHRoZSB0cmFuc3BvcnQgZmFjdG9yeSB1c2VzIFdlYkRyaXZlcklPJ3MgYGF0dGFjaCgpYCBpbnN0ZWFkXG4gICAqIG9mIGNyZWF0aW5nIGEgbmV3IHNlc3Npb24sIGF2b2lkaW5nIGR1cGxpY2F0ZSBBcHBpdW0vQURCIGNvbm5lY3Rpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgc2Vzc2lvbklkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGF1dG9tYXRpY2FsbHkgaW5zdGFsbCBtaXNzaW5nIEFwcGl1bSBkZXBlbmRlbmNpZXMgKHRoZVxuICAgKiBgdWlhdXRvbWF0b3IyYCBkcml2ZXIsIGFuZCBBcHBpdW0gaXRzZWxmKSBiZWZvcmUgYXV0by1zdGFydGluZyB0aGUgc2VydmVyLlxuICAgKlxuICAgKiBXaGVuIGB0cnVlYCAodGhlIGRlZmF1bHQpIGFuZCB0aGUgaGFybmVzcyBpcyBhYm91dCB0byBhdXRvLXN0YXJ0IHRoZSBBcHBpdW1cbiAgICogc2VydmVyICh7QGxpbmsgc2hvdWxkQXV0b1N0YXJ0QXBwaXVtfSksIHRoZSBmYWN0b3J5IGZpcnN0IGVuc3VyZXMgQXBwaXVtIGlzXG4gICAqIGluc3RhbGxlZCAoZ2xvYmFsbHksIHZpYSBgbnBtIGluc3RhbGwgLWcgYXBwaXVtYCkgYW5kIHRoYXQgdGhlXG4gICAqIGB1aWF1dG9tYXRvcjJgIGRyaXZlciBpcyBpbnN0YWxsZWQgKGBhcHBpdW0gZHJpdmVyIGluc3RhbGwgdWlhdXRvbWF0b3IyYCksXG4gICAqIGluc3RhbGxpbmcgd2hpY2hldmVyIGlzIG1pc3NpbmcuIElnbm9yZWQgd2hlbiBhdHRhY2hpbmcgdG8gYW5cbiAgICogYWxyZWFkeS1ydW5uaW5nIHNlcnZlciAobm90aGluZyBpcyBhdXRvLXN0YXJ0ZWQsIHNvIG5vdGhpbmcgaXMgaW5zdGFsbGVkKSBvclxuICAgKiB3aGVuIHtAbGluayBzaG91bGRBdXRvU3RhcnRBcHBpdW19IGlzIGBmYWxzZWAuIFNldCBpdCB0byBgZmFsc2VgIHRvIG1hbmFnZVxuICAgKiB0aGUgQXBwaXVtIHRvb2xjaGFpbiB5b3Vyc2VsZiBhbmQgc2tpcCB0aGUgbWFjaGluZS1tdXRhdGluZyBnbG9iYWwgaW5zdGFsbC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRBdXRvSW5zdGFsbEFwcGl1bURlcGVuZGVuY2llcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYXV0b21hdGljYWxseSBzdGFydCB0aGUgQXBwaXVtIHNlcnZlciBpZiBpdCBpcyBub3QgcmVhY2hhYmxlLlxuICAgKlxuICAgKiBXaGVuIGB0cnVlYCAodGhlIGRlZmF1bHQpLCB0aGUgdHJhbnNwb3J0IGZhY3Rvcnkgc3Bhd25zIGBucHggYXBwaXVtYFxuICAgKiBhcyBhIGJhY2tncm91bmQgcHJvY2VzcyB3aGVuIHRoZSBwcmVmbGlnaHQgY2hlY2sgZmFpbHMsIGFuZCBraWxscyBpdFxuICAgKiBvbiB0cmFuc3BvcnQgZGlzcG9zYWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkQXV0b1N0YXJ0QXBwaXVtPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgYXV0by1zdGFydGVkIGVtdWxhdG9yIG1heSByZXN1bWUgXHUyMDE0IGFuZCByZWZyZXNoIFx1MjAxNCB0aGUgQVZEJ3NcbiAgICogc2F2ZWQgYm9vdCBzbmFwc2hvdC5cbiAgICpcbiAgICogV2hlbiBgZmFsc2VgICh0aGUgZGVmYXVsdCkgdGhlIGVtdWxhdG9yIGlzIHN0YXJ0ZWQgd2l0aFxuICAgKiBgLW5vLXNuYXBzaG90LWxvYWQgLW5vLXNuYXBzaG90LXNhdmVgLCBzbyBldmVyeSBydW4gY29sZC1ib290cyBhIGd1ZXN0IHdob3NlXG4gICAqIHN0YXRlIG5vdGhpbmcgY2FycmllZCBvdmVyLiBUaGF0IGlzIHRoZSBoZXJtZXRpYyBkZWZhdWx0IGEgdGVzdCBoYXJuZXNzXG4gICAqIG93ZXMgaXRzIGNhbGxlcnMsIGFuZCBpdCBpcyBhbHNvIHRoZSBzYWZlIG9uZTogYSBzbmFwc2hvdCB0aGUgaGFybmVzcyBsb2Fkc1xuICAgKiBidXQgbmV2ZXIgd3JpdGVzIHJvdHMgdW5ub3RpY2VkLCBhbmQgdGhlIGZhaWx1cmUgaXQgZXZlbnR1YWxseSBwcm9kdWNlcyBcdTIwMTQgYVxuICAgKiBkZXZpY2UgdGhhdCBzZXJ2ZXMgYWRiLCBhY2NlcHRzIGEgc2Vzc2lvbiwgdGhlbiBkcm9wcyBgb2ZmbGluZWAgYWJvdXQgaGFsZiBhXG4gICAqIG1pbnV0ZSBsYXRlciBcdTIwMTQgaXMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBhIGNvZGUgcmVncmVzc2lvbi4gTWVhc3VyZWQgb24gb25lXG4gICAqIEFWRCBiYWNrIHRvIGJhY2ssIGEgcmVzdW1lZCBzbmFwc2hvdCBraWxsZWQgdGhlIGd1ZXN0IH45MHMgaW4gKmV2ZXJ5KiB0aW1lLFxuICAgKiB3aGlsZSB0aGUgc2FtZSBBVkQgY29sZC1ib290ZWQgaW4gNTBzIGFuZCBzdGF5ZWQgdXAuXG4gICAqXG4gICAqIFNldCBpdCB0byBgdHJ1ZWAgb24gYSAqKnBlcnNpc3RlbnQgcnVubmVyKiogd2hvc2UgQVZEIGlzIG5vdCBzaGFyZWQgd2l0aFxuICAgKiBhbnl0aGluZyBlbHNlOiB0aGUgZW11bGF0b3IgdGhlbiBib3RoIGxvYWRzIGFuZCBzYXZlcyBgZGVmYXVsdF9ib290YCwgc28gdGhlXG4gICAqIHNuYXBzaG90IGVhY2ggcnVuIHJlc3VtZXMgaXMgb25lIGEgcHJldmlvdXMgcnVuIHdyb3RlLCBhbmQgdGhlIH4xMTJzIGNvbGRcbiAgICogYm9vdCBpcyBsYXJnZWx5IGJvdWdodCBiYWNrLiBUaGUgdHJhZGUgaXMgdGVzdCBpc29sYXRpb24gXHUyMDE0IGEgZ3Vlc3QgdGhhdFxuICAgKiBjYXJyaWVzIHN0YXRlIGJldHdlZW4gcnVucyBcdTIwMTQgc28gaXQgaXMgb3B0LWluIHBlciBwcm9qZWN0LCBuZXZlciBhIGRlZmF1bHQuXG4gICAqIElnbm9yZWQgd2hlbiByZXVzaW5nIGFuIGFscmVhZHktcnVubmluZyBkZXZpY2UgKG5vdGhpbmcgaXMgbGF1bmNoZWQpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZXVzZUVtdWxhdG9yU25hcHNob3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBoYXJuZXNzIHJlbW92ZXMgdGhlIHRlbXBvcmFyeSBkaXJlY3RvcmllcyBlYXJsaWVyIHJ1bnMgbGVha2VkLlxuICAgKlxuICAgKiBXaGVuIGB0cnVlYCAodGhlIGRlZmF1bHQpLCBlYWNoIHJ1biBzd2VlcHMgYXQgc3RhcnQgKiphbmQqKiBhdCBlbmQ6IG9uIHRoZVxuICAgKiBkZXZpY2UsIGV2ZXJ5IGB0ZW1wLXZhdWx0LSpgIGRpcmVjdG9yeSB1bmRlciB7QGxpbmsgdmF1bHRCYXNlUGF0aH0gKHBsdXMgdGhlXG4gICAqIHN0YWxlIHZhdWx0IHJlZ2lzdHJhdGlvbnMgaW4gT2JzaWRpYW4gTW9iaWxlJ3MgYGxvY2FsU3RvcmFnZWApOyBvbiB0aGUgaG9zdCxcbiAgICogdGhlIGxlZnRvdmVyIGB0ZW1wLXZhdWx0LSpgIGFuZCBvd25lZCBgdXNlcmRhdGEtKmAgZGlyZWN0b3JpZXMgb2xkZXIgdGhhblxuICAgKiB7QGxpbmsgbGVmdG92ZXJNYXhBZ2VJbk1pbGxpc2Vjb25kc30uXG4gICAqXG4gICAqIEEgcnVuIHRoYXQgZGllcyBjYW5ub3QgY2xlYW4gdXAgYWZ0ZXIgaXRzZWxmIFx1MjAxNCBpdHMgdGVhcmRvd24gZ29lcyB0aHJvdWdoIHRoZVxuICAgKiBXZWJWaWV3LCBhbmQgYSBkZWFkIFdlYlZpZXcgaXMgd2hhdCBtb3N0IEFuZHJvaWQgZmFpbHVyZXMgYXJlIFx1MjAxNCBzbyB0aGVcbiAgICogcmVzaWR1ZSBhY2N1bXVsYXRlcyBhbmQgc2xvd3MgdGhlIG5leHQgcnVuJ3Mgc3RhcnR1cCBlbnVtZXJhdGlvbiB1bnRpbCBpdFxuICAgKiBtaXNzZXMgdGhlIFdlYlZpZXctcmVhZGluZXNzIGJ1ZGdldC4gVGhlIHN0YXJ0IHN3ZWVwIGlzIHRoZSBoYWxmIHRoYXQgYnJlYWtzXG4gICAqIHRoYXQgbG9vcCwgYmVjYXVzZSBpdCBydW5zIGJlZm9yZSBhbnl0aGluZyB0aGF0IGNhbiBkaWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU3dlZXBMZWZ0b3ZlcnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEaXNjcmltaW5hbnQgZm9yIHRoZSB0cmFuc3BvcnQgdHlwZS5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6ICdvYnNpZGlhbi1hbmRyb2lkLWFwcGl1bSc7XG5cbiAgLyoqXG4gICAqIEJhc2UgcGF0aCBvbiB0aGUgZGV2aWNlIHdoZXJlIE9ic2lkaWFuIHN0b3JlcyB2YXVsdHMuXG4gICAqXG4gICAqIERlZmF1bHRzOlxuICAgKiAtIEFuZHJvaWQ6IGAvc2RjYXJkL0RvY3VtZW50cy9gXG4gICAqIC0gaU9TOiBgQG1kLm9ic2lkaWFuOmRvY3VtZW50cy9gXG4gICAqL1xuICByZWFkb25seSB2YXVsdEJhc2VQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3Igd2FpdGluZyBmb3IgdGhlIFdlYlZpZXcgY29udGV4dCB0byBiZWNvbWUgYXZhaWxhYmxlLlxuICAgKlxuICAgKiBPbiBzbG93IGVtdWxhdG9ycywgdGhlIENocm9tZURyaXZlciBwcm94eSB0aGF0IGhhbmRsZXMgV2ViVmlldyBjb21tYW5kc1xuICAgKiBtYXkgbm90IGJlIHJlYWR5IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBBcHBpdW0gc2Vzc2lvbiBzdGFydHMuIFRoaXMgdGltZW91dFxuICAgKiBjb250cm9scyBob3cgbG9uZyB0byBwb2xsIGJlZm9yZSBnaXZpbmcgdXAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA2MDAwMGBcbiAgICovXG4gIHJlYWRvbmx5IHdlYnZpZXdUaW1lb3V0SW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVHJhbnNwb3J0IG9wdGlvbnMgZm9yIGRlc2t0b3AgdGVzdGluZyB2aWEgQ2hyb21lIERldlRvb2xzIFByb3RvY29sLlxuICpcbiAqIFRoaXMgaXMgdGhlIGRlZmF1bHQgZGVza3RvcCB0cmFuc3BvcnQuIEJ5IGRlZmF1bHQgdGhlIGhhcm5lc3MgKipsYXVuY2hlcyBhbmRcbiAqIG93bnMgYW4gaXNvbGF0ZWQgT2JzaWRpYW4gaW5zdGFuY2UqKiBpbiBhIHRlbXBvcmFyeSB1c2VyLWRhdGEgZGlyIChuZXZlclxuICogdG91Y2hpbmcgdGhlIHVzZXIncyBPYnNpZGlhbiksIGNvbm5lY3RlZCBvdmVyIGEgZnJlZSBDRFAgcG9ydC4gUHJvdmlkZVxuICoge0BsaW5rIE9ic2lkaWFuQ2RwVHJhbnNwb3J0T3B0aW9ucy5wb3J0fSB0byBpbnN0ZWFkIGF0dGFjaCB0byBhblxuICogYWxyZWFkeS1ydW5uaW5nIE9ic2lkaWFuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuQ2RwVHJhbnNwb3J0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgaW5kaXZpZHVhbCBDRFAgY29tbWFuZHMuXG4gICAqXG4gICAqIEEgdGVzdCdzIGNsb3N1cmUgdHJhdmVscyBhcyBvbmUgYFJ1bnRpbWUuZXZhbHVhdGVgIGNvbW1hbmQsIHNvIHRoaXMgaXMgYWxzb1xuICAgKiB0aGUgZGVza3RvcCBwZXItZXZhbCBjYXAuIFRoZSBkZWZhdWx0IGlzIGBERUZBVUxUX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EU2AsXG4gICAqIGV4cG9ydGVkIGZyb20gdGhlIHBhY2thZ2Ugcm9vdCBcdTIwMTQgaW1wb3J0IGl0IHJhdGhlciB0aGFuIHJlc3RhdGluZyB0aGUgbnVtYmVyLFxuICAgKiBzbyBhIGNsb3N1cmUgc2l6ZWQgYWdhaW5zdCB0aGUgY2FwIGZvbGxvd3MgaXQgaWYgaXQgZXZlciBtb3Zlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYDMwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWFuZFRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHZhdWx0J3MgKipjb25maWcgZm9sZGVyKiogXHUyMDE0IE9ic2lkaWFuJ3MgcGVyLXZhdWx0ICpPdmVycmlkZSBjb25maWdcbiAgICogZm9sZGVyKiBzZXR0aW5nLCBlLmcuIGAnLm9ic2lkaWFuLWRlc2t0b3AnYC4gTXVzdCBzdGFydCB3aXRoIGEgZG90LCBtdXN0IG5vdFxuICAgKiBiZSB0aGUgYmFyZSBkb3QsIGFuZCBtdXN0IG5vdCBjb250YWluIGEgcGF0aCBzZXBhcmF0b3I7IGFueXRoaW5nIGVsc2UgdGhyb3dzXG4gICAqIGJlZm9yZSBPYnNpZGlhbiBpcyBsYXVuY2hlZCwgYmVjYXVzZSBPYnNpZGlhbiBpdHNlbGYgd291bGQgc2lsZW50bHlcbiAgICogc3Vic3RpdHV0ZSBgLm9ic2lkaWFuYC5cbiAgICpcbiAgICogTmVlZGVkIHRvIG9wZW4gYSB2YXVsdCB0aGF0IGtlZXBzIGl0cyBzZXR0aW5ncyBzb21ld2hlcmUgb3RoZXIgdGhhblxuICAgKiBgLm9ic2lkaWFuYCBcdTIwMTQgYSB2YXVsdCB3aXRoIGEgc3RhbGUgYC5vYnNpZGlhbmAgYmVzaWRlIHRoZSByZWFsIGZvbGRlciB3b3VsZFxuICAgKiBvdGhlcndpc2Ugb3BlbiBzdWNjZXNzZnVsbHkgYWdhaW5zdCB0aGUgd3Jvbmcgc2V0dGluZ3MgYW5kIHJlcG9ydCBzdWNjZXNzLlxuICAgKiBUaGUgb3ZlcnJpZGUgbGl2ZXMgaW4gYGxvY2FsU3RvcmFnZWAsIGtleWVkIGJ5IHZhdWx0IGlkLCBhbmQgc28gaXMgc2NvcGVkIHRvXG4gICAqIGEgdXNlci1kYXRhIGRpcmVjdG9yeTogYW4gb3duZWQgaW5zdGFuY2UgZ2V0cyBhIGZyZXNoIHRlbXAgb25lIGFuZCB0aGVyZWZvcmVcbiAgICogaW5oZXJpdHMgbm90aGluZyBmcm9tIHRoZSB1c2VyJ3MgT2JzaWRpYW4sIGhvd2V2ZXIgdGhhdCB2YXVsdCBpcyBjb25maWd1cmVkXG4gICAqIHRoZXJlLlxuICAgKlxuICAgKiBTZXR0aW5nIGl0IGNvc3RzIG9uZSBleHRyYSBib290IHBoYXNlOiB0aGUgaW5zdGFuY2UgaXMgbGF1bmNoZWQgdG8gdGhlXG4gICAqIHN0YXJ0ZXIgc2NyZWVuLCB0aGUgb3ZlcnJpZGUgaXMgd3JpdHRlbiBpbiB0aGF0IHJlbmRlcmVyLCBhbmQgdGhlIHZhdWx0IGlzXG4gICAqIHRoZW4gb3BlbmVkIG92ZXIgSVBDLiBBZnRlciB0aGUgdmF1bHQgaXMgcmVhZHkgaXRzIGFjdHVhbFxuICAgKiBgYXBwLnZhdWx0LmNvbmZpZ0RpcmAgaXMgcmVhZCBiYWNrIGFuZCBhbnkgbWlzbWF0Y2ggdGhyb3dzXG4gICAqIGBDb25maWdEaXJlY3RvcnlGYWxsYmFja0Vycm9yYCBcdTIwMTQgdGhlcmUgaXMgbm8ga25vYiB0byBkb3duZ3JhZGUgdGhhdCwgYmVjYXVzZSBhXG4gICAqIHZhdWx0IG9wZW5lZCBhZ2FpbnN0IHRoZSB3cm9uZyBjb25maWcgZm9sZGVyIGlzIHNpbGVudGx5IHRoZSB3cm9uZyB2YXVsdC5cbiAgICpcbiAgICogT25seSBtZWFuaW5nZnVsIGluIG93bmVkIG1vZGU7ICoqaWdub3JlZCBpbiBhdHRhY2ggbW9kZSoqICh7QGxpbmsgT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zLnBvcnR9XG4gICAqIHNldCksIHdoZXJlIHRoZSB2YXVsdCBpcyBvcGVuZWQgYnkgdGhlIHVzZXIncyBvd24gT2JzaWRpYW4gdW5kZXIgaXRzIG93blxuICAgKiBjb25maWcuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB1bmRlZmluZWRgIChPYnNpZGlhbidzIG93biBkZWZhdWx0LCBgLm9ic2lkaWFuYClcbiAgICovXG4gIHJlYWRvbmx5IGNvbmZpZ0RpcmVjdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogR3JhY2Ugd2luZG93IGluIG1pbGxpc2Vjb25kcyBmb3IgZmFzdC1mYWlsaW5nIGEgKipkZWFkIGJvb3QqKiBvZiB0aGUgb3duZWRcbiAgICogaW5zdGFuY2UuXG4gICAqXG4gICAqIFdoZW4gYW4gYXNhciBjYW5ub3QgcnVuIG9uIHRoZSBsYXVuY2hlZCBFbGVjdHJvbiBzaGVsbCAodGhlIGluc3RhbGxlclxuICAgKiB2ZXJzaW9uIGlzIHRvbyBvbGQgZm9yIHRoZSBhcHAgdmVyc2lvbiksIHRoZSByZW5kZXJlciBsb2FkcyBidXQgbmV2ZXJcbiAgICogYm9vdHN0cmFwczogYGRvY3VtZW50LmJvZHlgIHN0YXlzIGVtcHR5IGFuZCBgd2luZG93LmFwcGAgcmVtYWluc1xuICAgKiBgdW5kZWZpbmVkYCBcdTIwMTQgYSBibGFjayBzY3JlZW4uIFJhdGhlciB0aGFuIHdhaXRpbmcgb3V0IHRoZSBmdWxsIHJlYWRpbmVzc1xuICAgKiB0aW1lb3V0LCB0aGUgb3duZWQtdmF1bHQgcmVhZGluZXNzIHBvbGwgY29uY2x1ZGVzIHRoZSBib290IGlzIGRlYWQgb25jZSB0aGVcbiAgICogcmVuZGVyZXIgaGFzIGJlZW4gYGRvY3VtZW50LnJlYWR5U3RhdGVgIGAnY29tcGxldGUnYCBmb3IgdGhpcyBsb25nIHdpdGggbm9cbiAgICogYHdpbmRvdy5hcHBgIGFuZCBhbiBlbXB0eSBgPGJvZHk+YCwgYW5kIHRocm93cyBhXG4gICAqIGBSZW5kZXJlckZhaWxlZFRvSW5pdGlhbGl6ZUVycm9yYC4gT25seSBhcHBsaWVzIHRvIGFuIG93bmVkIGluc3RhbmNlXG4gICAqIChpZ25vcmVkIGluIGF0dGFjaCBtb2RlLCB7QGxpbmsgcG9ydH0gc2V0KS4gU2V0IGAwYCB0byBkaXNhYmxlIGZhc3QtZmFpbCBhbmRcbiAgICogcmVzdG9yZSB0aGUgcGxhaW4gd2FpdC1vdXQtdGhlLXJlYWRpbmVzcy10aW1lb3V0IGJlaGF2aW9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgMTAwMDBgXG4gICAqL1xuICByZWFkb25seSBkZWFkQm9vdEdyYWNlSW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENEUCBob3N0LlxuICAgKiBEZWZhdWx0cyB0byBgJ2xvY2FsaG9zdCdgXG4gICAqL1xuICByZWFkb25seSBob3N0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNYXJrcyB7QGxpbmsgcG9ydH0gYXMgdGhlIENEUCBwb3J0IG9mIGEgKipoYXJuZXNzLW93bmVkLCBpc29sYXRlZCBpbnN0YW5jZSoqXG4gICAqIHRoYXQgdGhlIGdsb2JhbCBzZXR1cCBhbHJlYWR5IGxhdW5jaGVkIGFuZCBwcmVwYXJlZCAodmF1bHQgcmVnaXN0ZXJlZCxcbiAgICogcGx1Z2luIGVuYWJsZWQpLlxuICAgKlxuICAgKiBQb3B1bGF0ZWQgYXV0b21hdGljYWxseSBieSB0aGUgZ2xvYmFsIHNldHVwIGFuZCBwcm92aWRlZCB0byB0ZXN0IHdvcmtlcnMgdmlhXG4gICAqIHRoZSBmcmFtZXdvcmsncyBjb250ZXh0IG1lY2hhbmlzbSAoZS5nLiBWaXRlc3QgYHByb3ZpZGVgL2BpbmplY3RgKS4gV2hlbiBzZXQsXG4gICAqIHRoZSB3b3JrZXIgKiphdHRhY2hlcyoqIHRvIHRoZSBvd25lZCBpbnN0YW5jZSBvbiB7QGxpbmsgcG9ydH0gaW5zdGVhZCBvZlxuICAgKiBsYXVuY2hpbmcgaXRzIG93biwgYW5kIHNraXBzIHRoZSB1c2VyLXNjb3BlIHZhdWx0LXJlZ2lzdHJhdGlvbiBwcmVmbGlnaHQgXHUyMDE0XG4gICAqIHRoZSBvd25lZCBpbnN0YW5jZSdzIHZhdWx0IGxpdmVzIGluIGFuIGlzb2xhdGVkIHVzZXItZGF0YSBjb25maWcsIG5vdCB0aGVcbiAgICogdXNlci1zY29wZSByZWdpc3RyeS4gRG8gbm90IHNldCB0aGlzIG1hbnVhbGx5OyBmb3IgcGxhaW4gYXR0YWNoIG1vZGUgdXNlXG4gICAqIHtAbGluayBwb3J0fSBhbG9uZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlYWRvbmx5IGlzSGFybmVzc093bmVkSW5zdGFuY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBvd25lZCBkZXNrdG9wIE9ic2lkaWFuIHdpbmRvdyBpcyBzaG93biBvbiBzY3JlZW4uXG4gICAqXG4gICAqIFdoZW4gYGZhbHNlYCwgdGhlIGhhcm5lc3MgbGF1bmNoZXMgdGhlIG93bmVkIGluc3RhbmNlIHdpdGhcbiAgICoga2VlcC1hbGl2ZSBDaHJvbWl1bSBmbGFncyBhbmQgbW92ZXMgaXRzIHdpbmRvdyAqKm9mZi1zY3JlZW4qKiBvbmNlIEVsZWN0cm9uJ3NcbiAgICogcmVtb3RlIGJyaWRnZSBpcyBhdmFpbGFibGUsIHNvIHRoZSBydW4gbmV2ZXIgc3RlYWxzIGZvY3VzIG9yIHBvcHMgYSB3aW5kb3cgaW5cbiAgICogZnJvbnQgb2YgeW91LiBPZmYtc2NyZWVuIChub3QgbWluaW1pemVkKSBrZWVwcyB0aGUgcmVuZGVyZXIgbGl2ZSwgc29cbiAgICogYHNldFRpbWVvdXRgLCBgcmVxdWVzdEFuaW1hdGlvbkZyYW1lYCwgYDpob3ZlcmAsIGFuZCB0cnVzdGVkIGlucHV0IGJlaGF2ZVxuICAgKiBpZGVudGljYWxseSB0byBhIHZpc2libGUgd2luZG93LiBEZWZhdWx0cyB0byBgdHJ1ZWA7IGludGVncmF0aW9uIHNldHVwXG4gICAqIGV4cGxpY2l0bHkgcGFzc2VzIGBmYWxzZWAgdG8gYXZvaWQgc3RlYWxpbmcgZm9jdXMuIElnbm9yZWQgaW4gYXR0YWNoIG1vZGVcbiAgICogKHtAbGluayBwb3J0fSBzZXQpIFx1MjAxNCB0aGUgaGFybmVzcyBuZXZlclxuICAgKiBtb3ZlcyB0aGUgdXNlcidzIG93biBydW5uaW5nIHdpbmRvdy5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBpc09ic2lkaWFuQXBwVmlzaWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEhvdyBvbGQgYSBsZWZ0b3ZlciBkaXJlY3RvcnkgbXVzdCBiZSBiZWZvcmUge0BsaW5rIHNob3VsZFN3ZWVwTGVmdG92ZXJzfVxuICAgKiByZW1vdmVzIGl0LlxuICAgKlxuICAgKiBUaGUgZ2F0ZSBtYXR0ZXJzIG1vc3Qgb24gZGVza3RvcDogcnVucyBhcmUgZGVsaWJlcmF0ZWx5ICoqbm90Kiogc2VyaWFsaXplZFxuICAgKiAoZWFjaCBvd25zIGFuIGlzb2xhdGVkIGluc3RhbmNlKSwgYW5kIGV2ZXJ5IHByb2plY3Qgb24gdGhlIG1hY2hpbmUgc2hhcmVzXG4gICAqIG9uZSB0ZW1wIGRpcmVjdG9yeSwgc28gYSB5b3VuZyBgdGVtcC12YXVsdC0qYCAvIGB1c2VyZGF0YS0qYCBkaXJlY3RvcnkgbWF5XG4gICAqIHdlbGwgYmVsb25nIHRvIGEgcnVuIHRoYXQgaXMgc3RpbGwgaW4gZmxpZ2h0LiBSYWlzZSBpdCBpZiBhIHJ1biBvZiB5b3VycyBjYW5cbiAgICogb3V0bGl2ZSB0aGUgZGVmYXVsdDsgc2V0IGAwYCB0byByZW1vdmUgZXZlcnkgbWF0Y2ggcmVnYXJkbGVzcyBvZiBhZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA3MjAwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgbGVmdG92ZXJNYXhBZ2VJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogUGlucyB0aGUgKipFbGVjdHJvbiBzaGVsbCoqIChpbnN0YWxsZXIgYnVpbGQpIHRoZSBvd25lZCBpbnN0YW5jZSBydW5zLlxuICAgKlxuICAgKiBBY2NlcHRzIGFuIGV4cGxpY2l0IGAneC55LnonYCwgYCdwdWJsaWMtbGF0ZXN0J2AsIG9yIGAnY2F0YWx5c3QtbGF0ZXN0J2AuXG4gICAqIFRoZSBtYXRjaGluZyBHaXRIdWIgcmVsZWFzZSBpbnN0YWxsZXIgaXMgZG93bmxvYWRlZCBhbmQgZXh0cmFjdGVkIHRvIGFcbiAgICogcG9ydGFibGUgc2hlbGwgKGNhY2hlZCBmb3IgcmV1c2UpLiBQdWJsaWMgcmVsZWFzZXMgb25seSBcdTIwMTQgY2F0YWx5c3QgYnVpbGRzXG4gICAqIGhhdmUgbm8gcHVibGljIGluc3RhbGxlci4gSWdub3JlZCB3aGVuIHtAbGluayBwb3J0fSAoYXR0YWNoIG1vZGUpIGlzIHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlYWRvbmx5IG9ic2lkaWFuSW5zdGFsbGVyVmVyc2lvbj86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogUGlucyB0aGUgKipPYnNpZGlhbiBhcHAgdmVyc2lvbioqIChhc2FyKSB0aGUgb3duZWQgaW5zdGFuY2UgcnVucy5cbiAgICpcbiAgICogQWNjZXB0cyBhbiBleHBsaWNpdCBgJ3gueS56J2AsIGAncHVibGljLWxhdGVzdCdgLCBvciBgJ2NhdGFseXN0LWxhdGVzdCdgLlxuICAgKiBWZXJzaW9ucyBhdCBvciBhYm92ZSB0aGUgc2hlbGwgdmVyc2lvbiBhcmUgYXBwbGllZCBhcyBhIGNoZWFwIGFzYXIgc3dhcDtcbiAgICogb2xkZXIgdmVyc2lvbnMgdHJhbnNwYXJlbnRseSB1c2UgdGhlIG1hdGNoaW5nIGluc3RhbGxlciBzaGVsbC4gV2hlbiBvbWl0dGVkLFxuICAgKiB0aGUgdXNlcidzIGN1cnJlbnRseS1pbnN0YWxsZWQgdmVyc2lvbiBpcyB1c2VkLiBJZ25vcmVkIHdoZW4ge0BsaW5rIHBvcnR9XG4gICAqIChhdHRhY2ggbW9kZSkgaXMgc2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdW5kZWZpbmVkYFxuICAgKi9cbiAgcmVhZG9ubHkgb2JzaWRpYW5WZXJzaW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBDRFAgcG9ydCBvZiBhbiBhbHJlYWR5LXJ1bm5pbmcgT2JzaWRpYW4gdG8gKiphdHRhY2gqKiB0byAodGhlXG4gICAqIGAtLXJlbW90ZS1kZWJ1Z2dpbmctcG9ydGAgaXQgd2FzIGxhdW5jaGVkIHdpdGgpLiBXaGVuIHNldCwgdGhlIGhhcm5lc3NcbiAgICogYXR0YWNoZXMgaW5zdGVhZCBvZiBvd25pbmcgYW4gaW5zdGFuY2UsIGFuZCB0aGUgdmVyc2lvbiBrbm9icyBhcmUgaWdub3JlZC5cbiAgICogV2hlbiBvbWl0dGVkLCBhbiBvd25lZCBpc29sYXRlZCBpbnN0YW5jZSBpcyBsYXVuY2hlZCBvbiBhbiBhdXRvbWF0aWNhbGx5XG4gICAqIGNob3NlbiBmcmVlIHBvcnQgKG5vIHBvcnQgaXMgaGFyZGNvZGVkKS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gbGF1bmNoIHRoZSBvd25lZCBpbnN0YW5jZSB3aXRoIENocm9taXVtJ3Mgc2FuZGJveCBkaXNhYmxlZFxuICAgKiAoYC0tbm8tc2FuZGJveGApLlxuICAgKlxuICAgKiBOZWVkZWQgdG8gYm9vdCBhbiBvd25lZCBpbnN0YW5jZSBvbiBMaW51eCB3aGVuIHRoZXJlIGlzIG5vXG4gICAqIGNvcnJlY3RseS1jb25maWd1cmVkIHNldHVpZCBgY2hyb21lLXNhbmRib3hgIGhlbHBlciBcdTIwMTQgZS5nLiBhIHBvcnRhYmxlIHNoZWxsXG4gICAqIGV4dHJhY3RlZCBmcm9tIGFuIGluc3RhbGxlciwgb3IgYSBDSSBydW5uZXIgbGF1bmNoaW5nIGFzIGEgbm9uLXJvb3QgdXNlciwgaW5cbiAgICogd2hpY2ggY2FzZSB0aGUgcmVuZGVyZXIgb3RoZXJ3aXNlIHJlZnVzZXMgdG8gc3RhcnQuIEhhcm1sZXNzIG9uXG4gICAqIFdpbmRvd3MvbWFjT1MuIElnbm9yZWQgaW4gYXR0YWNoIG1vZGUgKHtAbGluayBwb3J0fSBzZXQpIFx1MjAxNCB0aGUgaGFybmVzcyBuZXZlclxuICAgKiByZWxhdW5jaGVzIHRoZSB1c2VyJ3MgcnVubmluZyBpbnN0YW5jZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkRGlzYWJsZVNhbmRib3g/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBoYXJuZXNzIHJlbW92ZXMgdGhlIHRlbXBvcmFyeSBkaXJlY3RvcmllcyBlYXJsaWVyIHJ1bnMgbGVha2VkLlxuICAgKlxuICAgKiBXaGVuIGB0cnVlYCAodGhlIGRlZmF1bHQpLCBlYWNoIHJ1biBzd2VlcHMgYXQgc3RhcnQgYW5kIGF0IGVuZCBmb3JcbiAgICogYHRlbXAtdmF1bHQtKmAgc3RhZ2luZyBkaXJlY3RvcmllcyBhbmQgb3duZWQgYHVzZXJkYXRhLSpgIGluc3RhbmNlIHByb2ZpbGVzXG4gICAqIG9sZGVyIHRoYW4ge0BsaW5rIGxlZnRvdmVyTWF4QWdlSW5NaWxsaXNlY29uZHN9LiBBIHJ1biBraWxsZWQgbWlkLWZsaWdodFxuICAgKiBuZXZlciByZWFjaGVzIGl0cyBvd24gY2xlYW51cCwgc28gd2l0aG91dCB0aGlzIHRoZSB0ZW1wIGRpcmVjdG9yeSBncm93c1xuICAgKiB3aXRob3V0IGJvdW5kLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFN3ZWVwTGVmdG92ZXJzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBhbiAqKnVucnVubmFibGUqKiBpbnN0YWxsZXJcdTIxOTRhcHAgdmVyc2lvbiBwYWlyIGZhaWxzIGZhc3QgYmVmb3JlIGxhdW5jaC5cbiAgICpcbiAgICogV2hlbiBgdHJ1ZWAgKHRoZSBkZWZhdWx0KSwgYW4gaW5zdGFsbGVyIGJlbG93IHRoZSBhcHAncyBydW4gZmxvb3IgKHRoZVxuICAgKiBvbGRlc3QgaW5zdGFsbGVyIHRoZSBhcHAncyBhc2FyIGNhbiBib290IG9uKSB0aHJvd3NcbiAgICogYEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvcmAgZnJvbSB2ZXJzaW9uIHJlc29sdXRpb24sIGJlZm9yZSBhbnl0aGluZ1xuICAgKiBpcyBkb3dubG9hZGVkIG9yIGxhdW5jaGVkLiBTZXQgYGZhbHNlYCB0byBsZXQgdGhlIHBpbiBwcm9jZWVkIHRvIGxhdW5jaFxuICAgKiBpbnN0ZWFkIFx1MjAxNCB3aGVyZSB0aGUgcmVhY3RpdmUgZGVhZC1ib290IGZhc3QtZmFpbFxuICAgKiAoYFJlbmRlcmVyRmFpbGVkVG9Jbml0aWFsaXplRXJyb3JgLCBzZWUge0BsaW5rIGRlYWRCb290R3JhY2VJbk1pbGxpc2Vjb25kc30pXG4gICAqIHN0aWxsIGNhdGNoZXMgdGhlIGJsYWNrLXNjcmVlbiBib290LCBhbmQgdGhlIGAndW5ydW5uYWJsZSdgIHZlcmRpY3QgaXNcbiAgICogc3VyZmFjZWQgYXMgZGF0YSByYXRoZXIgdGhhbiB0aHJvd24uIE9ubHkgYXBwbGllcyB0byBhbiBvd25lZCBpbnN0YW5jZVxuICAgKiAoaWdub3JlZCBpbiBhdHRhY2ggbW9kZSwge0BsaW5rIHBvcnR9IHNldCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkVGhyb3dPbkluY29tcGF0aWJsZUluc3RhbGxlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYSAqKnNpbGVudCBhc2FyIGZhbGxiYWNrKiogZmFpbHMgZmFzdCBhZnRlciBib290LlxuICAgKlxuICAgKiBXaGVuIGFuIGFzYXIgaXMgc3dhcHBlZCBvbnRvIGFuIGluc3RhbGxlciBzaGVsbCB0b28gb2xkIGZvciBpdCwgdGhlIGluc3RhbmNlXG4gICAqIG1heSBub3QgZGVhZC1ib290IFx1MjAxNCBpdCBjYW4gc2lsZW50bHkgcmV2ZXJ0IHRvIHRoZSBpbnN0YWxsZXIncyBvd24gYnVuZGxlZFxuICAgKiBhc2FyIGFuZCBydW4gdGhlICoqd3JvbmcgKG9sZGVyKSoqIHZlcnNpb24gYmVoaW5kIGEgaGVhbHRoeSBVSS4gV2hlbiBgdHJ1ZWBcbiAgICogKHRoZSBkZWZhdWx0KSwgdGhlIHRyYW5zcG9ydCB2ZXJpZmllcyB0aGUgcnVubmluZyBhcHAgdmVyc2lvbiBhZ2FpbnN0IHRoZSBwaW5cbiAgICogcG9zdC1ib290IGFuZCB0aHJvd3MgYFNpbGVudEFzYXJGYWxsYmFja0Vycm9yYCBvbiBhIG1pc21hdGNoLiBTZXQgYGZhbHNlYCB0b1xuICAgKiBsZXQgdGhlIGJvb3QgcHJvY2VlZCBcdTIwMTQgdGhlIG1pc21hdGNoIGlzIHRoZW4gc3VyZmFjZWQgYXMgZGF0YSAodGhlIGZhbGxiYWNrXG4gICAqIHZlcmRpY3QpIHJhdGhlciB0aGFuIHRocm93bi4gT25seSBhcHBsaWVzIHRvIGFuIG93bmVkIGluc3RhbmNlIHJ1bm5pbmcgYVxuICAgKiBzd2FwcGVkLWluIGFzYXIgKGlnbm9yZWQgaW4gYXR0YWNoIG1vZGUsIHtAbGluayBwb3J0fSBzZXQsIGFuZCB3aGVuIG5vIGFzYXIgaXNcbiAgICogc3dhcHBlZCBcdTIwMTQgdGhlcmUgaXMgbm90aGluZyB0byB2ZXJpZnkpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFRocm93T25TaWxlbnRBc2FyRmFsbGJhY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBvd25lZC1pbnN0YW5jZSBjb21wYXRpYmlsaXR5ICoqbmFnIHdhcm5pbmdzKiogYXJlIGVtaXR0ZWQuXG4gICAqXG4gICAqIENvdmVycyAqKmJvdGgqKiBjb21wYXRpYmlsaXR5IG5hZ3M6IHRoZSBvZmZsaW5lIGluc3RhbGxlclx1MjE5NGFwcCB3YXJuaW5nIChhXG4gICAqIHJ1bm5hYmxlIGluc3RhbGxlciBiZWxvdyB0aGUgcmVjb21tZW5kZWQgZmxvb3IpIGFuZCB0aGUgcG9zdC1ib290XG4gICAqIHJ1bnRpbWUtRWxlY3Ryb24gd2FybmluZyAoYSBsaXZlIEVsZWN0cm9uIGJlbG93IHRoZSBhcHAncyByZWNvbW1lbmRlZFxuICAgKiBtaW5pbXVtKS4gV2hlbiBgdHJ1ZWAgKHRoZSBkZWZhdWx0KSBlYWNoIGZpcmVzIHZpYSB0aGUgaGFybmVzcyBsb2c7IHNldFxuICAgKiBgZmFsc2VgIHRvIHNpbGVuY2UgYm90aCBcdTIwMTQgdGhlIHZlcmRpY3RzIGFyZSBzdGlsbCBjb21wdXRlZCBhbmQgc3VyZmFjZWQgYXNcbiAgICogZGF0YSAoYGNvbXBhdGliaWxpdHlgIC8gYGVsZWN0cm9uQ29tcGF0aWJpbGl0eWApLCBvbmx5IHRoZSBsb2cgaXMgc3VwcHJlc3NlZC5cbiAgICogRG9lcyBub3QgYWZmZWN0IHRoZSBgJ3VucnVubmFibGUnYCB0aHJvdyAoc2VlXG4gICAqIHtAbGluayBzaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyfSkuIE9ubHkgYXBwbGllcyB0byBhbiBvd25lZFxuICAgKiBpbnN0YW5jZSAoaWdub3JlZCBpbiBhdHRhY2ggbW9kZSwge0BsaW5rIHBvcnR9IHNldCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3Vlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERpc2NyaW1pbmFudCBmb3IgdGhlIHRyYW5zcG9ydCB0eXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogJ29ic2lkaWFuLWNkcCc7XG59XG5cbi8qKlxuICogRGlzY3JpbWluYXRlZCB1bmlvbiBvZiBhbGwgc3VwcG9ydGVkIHRyYW5zcG9ydCBjb25maWd1cmF0aW9ucy5cbiAqXG4gKiBVc2VkIGluIHZpdGVzdCBgZW52aXJvbm1lbnRPcHRpb25zLm9ic2lkaWFuVHJhbnNwb3J0YCB0byBzZWxlY3QgYW5kXG4gKiBjb25maWd1cmUgdGhlIHRyYW5zcG9ydCBmb3IgaW50ZWdyYXRpb24gdGVzdHMuXG4gKi9cbmV4cG9ydCB0eXBlIE9ic2lkaWFuVHJhbnNwb3J0T3B0aW9ucyA9XG4gIHwgT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9uc1xuICB8IE9ic2lkaWFuQ2RwVHJhbnNwb3J0T3B0aW9ucztcblxuLyoqXG4gKiBXaGV0aGVyIHRoZXNlIG9wdGlvbnMgZGVzY3JpYmUgYSBtb2JpbGUgdHJhbnNwb3J0LlxuICpcbiAqIFRoZSBzYW1lIGZhY3QgYXMge0BsaW5rIE9ic2lkaWFuVHJhbnNwb3J0LmlzTW9iaWxlfSwgYnV0IGtub3dhYmxlIGZyb20gdGhlIG9wdGlvbnMgYWxvbmUgXHUyMDE0IHNvIGEgY2FsbGVyXG4gKiBjYW4gYWN0IG9uIGl0IGJlZm9yZSBwYXlpbmcgZm9yIGEgZGV2aWNlLiBSZWFkaW5nIGl0IG9mZiBhIGxpdmUgdHJhbnNwb3J0IG1lYW5zIGJvb3RpbmcgdGhlIGVtdWxhdG9yXG4gKiBhbmQgdGhlIEFwcGl1bSBzZXNzaW9uIGZpcnN0LCB3aGljaCBpcyB+NzAgcyB0byBsZWFybiBzb21ldGhpbmcgdGhlIGRpc2NyaW1pbmFudCBhbHJlYWR5IHNheXMuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcmVzb2x2ZWQgdHJhbnNwb3J0IG9wdGlvbnMuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgZm9yIGEgbW9iaWxlIHRyYW5zcG9ydCwgYGZhbHNlYCBmb3IgZGVza3RvcC5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG9ic2lkaWFuLWRldi11dGlscy9wYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoIC0tIFBlcm1hbmVudDogYE9ic2lkaWFuVHJhbnNwb3J0T3B0aW9uc2AgaXMgb25lIHRyYW5zcG9ydCBvcHRpb25zIGJhZyByZWFkIGJ5IGZpdmUgaGVscGVycywgc28gbm8gcGVyLW93bmVyIG5hbWUgY2FuIHNhdGlzZnkgdGhlbSBhbGwuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tJc01vYmlsZVRyYW5zcG9ydChvcHRpb25zOiBPYnNpZGlhblRyYW5zcG9ydE9wdGlvbnMpOiBib29sZWFuIHtcbiAgcmV0dXJuIG9wdGlvbnMudHlwZSA9PT0gJ29ic2lkaWFuLWFuZHJvaWQtYXBwaXVtJztcbn1cblxuLyoqXG4gKiBUaGUgY29uZmlnIGZvbGRlciBhIHZhdWx0IHRoZSBoYXJuZXNzICoqb3ducyoqIHdpbGwgYWN0dWFsbHkgcmVhZCwgb3IgYHVuZGVmaW5lZGAgd2hlbiBpdCBpc1xuICogT2JzaWRpYW4ncyBvd24gZGVmYXVsdC5cbiAqXG4gKiB7QGxpbmsgT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zLmNvbmZpZ0RpcmVjdG9yeX0gaXMgdGhlIG9ubHkga25vYiB0aGF0IG1vdmVzIGl0LCBhbmQgaXQgaXNcbiAqIG1lYW5pbmdmdWwgb25seSBpbiBvd25lZCBtb2RlOiBpbiBhdHRhY2ggbW9kZSB0aGUgdmF1bHQgaXMgb3BlbmVkIGJ5IHRoZSB1c2VyJ3Mgb3duIE9ic2lkaWFuIHVuZGVyXG4gKiBpdHMgb3duIGNvbmZpZywgYW5kIG9uIEFuZHJvaWQgdGhlcmUgaXMgbm8gb3ZlcnJpZGUgYXQgYWxsLiBBbnl0aGluZyB0aGUgaGFybmVzcyB3cml0ZXMgaW50byBhIHZhdWx0XG4gKiBiZWZvcmUgaXQgaXMgb3BlbmVkIGhhcyB0byBnbyB3aGVyZSB0aGF0IHZhdWx0IHdpbGwgbG9vaywgc28gdGhpcyBpcyB0aGUgYW5zd2VyIGV2ZXJ5IHN1Y2ggd3JpdGVyXG4gKiBuZWVkcyBcdTIwMTQgc2VlIGBlbnN1cmVIZWFkbGVzc1ZhdWx0Q29uZmlnYC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSByZXNvbHZlZCB0cmFuc3BvcnQgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSBvdmVycmlkZGVuIGNvbmZpZyBmb2xkZXIgbmFtZSwgb3IgYHVuZGVmaW5lZGAgZm9yIE9ic2lkaWFuJ3MgZGVmYXVsdC5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG9ic2lkaWFuLWRldi11dGlscy9wYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoIC0tIFBlcm1hbmVudDogYE9ic2lkaWFuVHJhbnNwb3J0T3B0aW9uc2AgaXMgb25lIHRyYW5zcG9ydCBvcHRpb25zIGJhZyByZWFkIGJ5IGZpdmUgaGVscGVycywgc28gbm8gcGVyLW93bmVyIG5hbWUgY2FuIHNhdGlzZnkgdGhlbSBhbGwuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZU93bmVkQ29uZmlnRGlyZWN0b3J5KG9wdGlvbnM6IE9ic2lkaWFuVHJhbnNwb3J0T3B0aW9ucyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmIChvcHRpb25zLnR5cGUgIT09ICdvYnNpZGlhbi1jZHAnIHx8IG9wdGlvbnMucG9ydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBvcHRpb25zLmNvbmZpZ0RpcmVjdG9yeTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQXNuQk8sU0FBUyx1QkFBdUIsU0FBNEM7QUFDakYsU0FBTyxRQUFRLFNBQVM7QUFDMUI7QUFnQk8sU0FBUyw0QkFBNEIsU0FBdUQ7QUFDakcsTUFBSSxRQUFRLFNBQVMsa0JBQWtCLFFBQVEsU0FBUyxRQUFXO0FBQ2pFLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxRQUFRO0FBQ2pCOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -15,4 +15,4 @@ function shouldTearDownVaultWindow(params) {
|
|
|
15
15
|
export {
|
|
16
16
|
shouldTearDownVaultWindow
|
|
17
17
|
};
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3ZhdWx0LXRlYXJkb3duLXZlcmRpY3QudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBQdXJlIGRlY2lzaW9uIGZvciB3aGV0aGVyIHVucmVnaXN0ZXJpbmcgYSB2YXVsdCBtYXkgdGVhciBpdHMgd2luZG93IGRvd24uXG4gKlxuICogVGhlIGRlc2t0b3AgQ0RQIHRyYW5zcG9ydCB1c2VkIHRvIGFuc3dlciB0aGlzIHdpdGggYSBzaW5nbGUgZmxhZy4gSXRzXG4gKiByZWFkaW5lc3MgZ3VhcmQgYXNrcyBgb3duZWRDb25maWcgfHwgaXNIYXJuZXNzT3duZWRJbnN0YW5jZWAgXHUyMDE0IHRoZSB0d28gd2F5c1xuICogXCJ0aGUgaGFybmVzcyBvd25zIHRoaXMgaW5zdGFuY2VcIiBjYW4gYmUgdHJ1ZSBcdTIwMTQgd2hpbGUgaXRzIHRlYXJkb3duIGd1YXJkIGFza2VkXG4gKiBvbmx5IGBvd25lZENvbmZpZ2AuIEEgKip3b3JrZXIqKiBhdHRhY2hlZCB0byBhIGhhcm5lc3Mtb3duZWQgaW5zdGFuY2UgaGFzXG4gKiBgaXNIYXJuZXNzT3duZWRJbnN0YW5jZTogdHJ1ZWAgYW5kIG5vIGBvd25lZENvbmZpZ2AgYXQgYWxsICh0aGUgZ2xvYmFsIHNldHVwXG4gKiBvd25zIHRoZSBjb25maWc7IHRoZSB3b3JrZXIgd2FzIGhhbmRlZCBvbmx5IHRoZSBwb3J0KSwgc28gaXQgZmVsbCBzdHJhaWdodFxuICogdGhyb3VnaCB0aGUgdGVhcmRvd24gZ3VhcmQgYW5kIHJhbiBgZGVzdHJveUN1cnJlbnRXaW5kb3coKWAgYWdhaW5zdCB0aGUgdmF1bHRcbiAqIGl0IHdhcyBhc2tlZCB0byB1bnJlZ2lzdGVyLiBXaGVuIHRoYXQgdmF1bHQgaXMgdGhlIG9uZSB0aGUgd2hvbGUgcnVuIHNoYXJlcyxcbiAqIGl0cyB3aW5kb3cgaXMgdGhlIG9ubHkgb25lIFx1MjAxNCBkZXN0cm95aW5nIGl0IHF1aXRzIHRoZSBhcHAsIGFuZCBldmVyeSBsYXRlciBmaWxlXG4gKiBmYWlscyB3aXRoIGBFQ09OTlJFRlVTRURgIG9uIGEgY2xvc2VkIENEUCBwb3J0LCB3aGljaCByZWFkcyBhcyBhIGhhcm5lc3NcbiAqIG91dGFnZSByYXRoZXIgdGhhbiBhcyBhIHRlYXJkb3duIHRoYXQgb3ZlcnJlYWNoZWQuXG4gKlxuICogTWFraW5nIHRoZSB0d28gZ3VhcmRzIGlkZW50aWNhbCB3b3VsZCBmaXggdGhhdCBhbmQgYnJlYWsgc29tZXRoaW5nIGVsc2U6IGFuXG4gKiBhdHRhY2hlZCB3b3JrZXIgdGhhdCByZWdpc3RlcnMgaXRzICoqb3duKiogYFRlbXBvcmFyeVZhdWx0YCBkb2VzIG5lZWQgdGhhdFxuICogd2luZG93IGNsb3NlZCwgYW5kIGEgYmxhbmtldCBlYXJseS1yZXR1cm4gbGVha3Mgb25lIHN0YWxlIHdpbmRvdyBwZXIgdGVtcFxuICogdmF1bHQgZm9yIHRoZSBsaWZlIG9mIHRoZSBydW4gXHUyMDE0IGVhY2ggcG9pbnRpbmcgYXQgYSBkaXJlY3RvcnkgdGhlIGRpc3Bvc2FsIGhhc1xuICogYWxyZWFkeSBkZWxldGVkLiBTaW5jZSBldmVyeSB3b3JrZXIgaW4gYSBgY3JlYXRlU2V0dXBgIHJ1biBpcyBhbiBhdHRhY2hlZCBvbmUsXG4gKiB0aGF0IGlzIHRoZSBjb21tb24gcGF0aCwgbm90IGFuIGVkZ2UgY2FzZS5cbiAqXG4gKiBTbyB0aGUgaW52YXJpYW50IGlzIG5hcnJvd2VyIHRoYW4gZWl0aGVyIGd1YXJkIGV4cHJlc3NlZDogKiphIHdvcmtlciBhdHRhY2hlZFxuICogdG8gYSBoYXJuZXNzLW93bmVkIGluc3RhbmNlIG1heSB0ZWFyIGRvd24gb25seSBhIHZhdWx0IGl0IHJlZ2lzdGVyZWQgaXRzZWxmLioqXG4gKiBFdmVyeXRoaW5nIGVsc2UgaW4gdGhhdCBpbnN0YW5jZSBiZWxvbmdzIHRvIHRoZSBnbG9iYWwgc2V0dXAgdGhhdCBsYXVuY2hlZCBpdC5cbiAqXG4gKiBLZXB0IG91dCBvZiB0aGUgaW50ZWdyYXRpb24tb25seSB0cmFuc3BvcnQgbW9kdWxlIChleGNsdWRlZCBmcm9tIHVuaXQgdGVzdHMsXG4gKiBgTEY6MGAgaW4gY292ZXJhZ2UpIGZvciB0aGUgc2FtZSByZWFzb24gYHZhdWx0LXBhdGgtbWF0Y2gudHNgIGlzIFx1MjAxNCBzbyB0aGVcbiAqIGRlY2lzaW9uIGlzIHVuaXQtdGVzdGFibGUgd2hpbGUgdGhlIHRyYW5zcG9ydCBrZWVwcyBvbmx5IHRoZSBwbHVtYmluZy5cbiAqL1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBzaG91bGRUZWFyRG93blZhdWx0V2luZG93fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaG91bGRUZWFyRG93blZhdWx0V2luZG93UGFyYW1zIHtcbiAgLyoqXG4gIFdoZXRoZXIgdGhpcyB0cmFuc3BvcnQgaXMgYSB3b3JrZXIgYXR0YWNoZWQgdG8gYW4gaW5zdGFuY2UgdGhlIGhhcm5lc3MgbGF1bmNoZWQgZWxzZXdoZXJlLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNIYXJuZXNzT3duZWRJbnN0YW5jZTogYm9vbGVhbjtcblxuICAvKipcbiAgV2hldGhlciB0aGlzIHRyYW5zcG9ydCBsYXVuY2hlZCBhbmQgb3ducyB0aGUgaW5zdGFuY2UgaXRzZWxmLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNPd25lZEluc3RhbmNlOiBib29sZWFuO1xuXG4gIC8qKlxuICBXaGV0aGVyIHRoaXMgdHJhbnNwb3J0IGlzIHRoZSBvbmUgdGhhdCByZWdpc3RlcmVkIHRoZSB2YXVsdCBiZWluZyB1bnJlZ2lzdGVyZWQuXG4gICAqL1xuICByZWFkb25seSBpc1NlbGZSZWdpc3RlcmVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgdW5yZWdpc3RlcmluZyBhIHZhdWx0IG1heSBkZXN0cm95IGl0cyB3aW5kb3cgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZVxuICogcmVnaXN0cnksIG9yIG11c3QgbGVhdmUgdGhlIGluc3RhbmNlIHVudG91Y2hlZC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gV2hvIG93bnMgdGhlIGluc3RhbmNlLCBhbmQgd2hvIHJlZ2lzdGVyZWQgdGhlIHZhdWx0LlxuICogQHJldHVybnMgYHRydWVgIHdoZW4gdGhlIHdpbmRvdyBtYXkgYmUgdG9ybiBkb3duLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hvdWxkVGVhckRvd25WYXVsdFdpbmRvdyhwYXJhbXM6IFNob3VsZFRlYXJEb3duVmF1bHRXaW5kb3dQYXJhbXMpOiBib29sZWFuIHtcbiAgY29uc3Qge1xuICAgIGlzSGFybmVzc093bmVkSW5zdGFuY2UsXG4gICAgaXNPd25lZEluc3RhbmNlLFxuICAgIGlzU2VsZlJlZ2lzdGVyZWRcbiAgfSA9IHBhcmFtcztcblxuICBpZiAoaXNPd25lZEluc3RhbmNlKSB7XG4gICAgLy8gVGhlIG93bmVkIGluc3RhbmNlIGlzIGtpbGxlZCB3aG9sZXNhbGUgb24gZGlzcG9zZSwgYW5kIGl0cyByZWdpc3RyeSBsaXZlc1xuICAgIC8vIGluIHRoZSBpc29sYXRlZCB1c2VyLWRhdGEgY29uZmlnIFx1MjAxNCB0aGVyZSBpcyBub3RoaW5nIHRvIHVucmVnaXN0ZXIgZnJvbS5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoaXNIYXJuZXNzT3duZWRJbnN0YW5jZSkge1xuICAgIC8vIEF0dGFjaGVkIHRvIHNvbWVvbmUgZWxzZSdzIGluc3RhbmNlOiBvbmx5IHRoaXMgdHJhbnNwb3J0J3Mgb3duIHZhdWx0cy5cbiAgICByZXR1cm4gaXNTZWxmUmVnaXN0ZXJlZDtcbiAgfVxuXG4gIC8vIFBsYWluIGF0dGFjaCBtb2RlIFx1MjAxNCBhIGZvcmVpZ24gT2JzaWRpYW4gdGhlIGhhcm5lc3Mgb3BlbmVkIGEgdmF1bHQgaW4sIHdoaWNoXG4gIC8vIG91dGxpdmVzIHRoZSBydW4gYW5kIG11c3QgYmUgbGVmdCBhcyBpdCB3YXMgZm91bmQuXG4gIHJldHVybiB0cnVlO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBNERPLFNBQVMsMEJBQTBCLFFBQWtEO0FBQzFGLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGLElBQUk7QUFFSixNQUFJLGlCQUFpQjtBQUduQixXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksd0JBQXdCO0FBRTFCLFdBQU87QUFBQSxFQUNUO0FBSUEsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -157,11 +157,11 @@ export interface RunVersionMatrixEntriesParams {
|
|
|
157
157
|
/**
|
|
158
158
|
Called just before each entry runs, for progress reporting.
|
|
159
159
|
*/
|
|
160
|
-
|
|
160
|
+
onEntryStart(this: void, params: FormatVersionMatrixRunHeaderParams): void;
|
|
161
161
|
/**
|
|
162
162
|
Runs the suites against a single entry, throwing on failure.
|
|
163
163
|
*/
|
|
164
|
-
|
|
164
|
+
run(this: void, entry: ObsidianVersionMatrixEntry): Promise<void> | void;
|
|
165
165
|
}
|
|
166
166
|
/**
|
|
167
167
|
* Collapses resolved specifiers into one entry per **distinct resolved version**.
|
|
@@ -144,4 +144,4 @@ export {
|
|
|
144
144
|
resolveVersionSpecs,
|
|
145
145
|
runVersionMatrixEntries
|
|
146
146
|
};
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3ZlcnNpb24tbWF0cml4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHVyZSBkZWNpc2lvbiBsYXllciBmb3IgcnVubmluZyBhIHN1aXRlIGFnYWluc3QgKipldmVyeSoqIHN1cHBvcnRlZCBPYnNpZGlhblxuICogdmVyc2lvbi5cbiAqXG4gKiBTdXBwb3J0IGlzIHRoZSByYW5nZSBgW2xhdGVzdCBwdWJsaWMsIGxhdGVzdCBjYXRhbHlzdF1gIGFuZCBib3RoIGVuZHMgbXVzdCBiZVxuICogdmVyaWZpZWQuIFRoZSB0d28gZW5kcyBhcmUgbW92aW5nIHRhcmdldHMsIGFuZCB0aGV5IHBlcmlvZGljYWxseVxuICogKipjb2luY2lkZSoqIFx1MjAxNCB3aGVuIHB1YmxpYyBjYXRjaGVzIHVwIHRvIGNhdGFseXN0LCBib3RoIHNwZWNpZmllcnMgcHJvdmlzaW9uXG4gKiB0aGUgc2FtZSBidWlsZCwgc28gcnVubmluZyB0aGUgc3VpdGVzIHR3aWNlIHJlLXJ1bnMgdGhlIHNhbWUgYnVpbGQgYW5kIGJ1eXNcbiAqIG5vdGhpbmcuIFdvcnNlLCBhIGNvbnN1bWVyIHRoYXQgcmFuIGJvdGggc3RpbGwgcmVwb3J0cyBcImdyZWVuIG9uIHB1YmxpYyBBTkRcbiAqIGNhdGFseXN0XCIsIGEgdHdvLWVuZCBjbGFpbSBpdCBuZXZlciB2ZXJpZmllZC5cbiAqXG4gKiBUaGUgZGVjaXNpb24gdGhlcmVmb3JlIGxpdmVzIGhlcmUgcmF0aGVyIHRoYW4gaW4gZXZlcnkgY29uc3VtaW5nIHJlcG86IGEgbGlzdFxuICogb2YgdmVyc2lvbiBzcGVjaWZpZXJzIGlzIHJlc29sdmVkIHRvIGNvbmNyZXRlIHZlcnNpb25zLCAqKmRlLWR1cGxpY2F0ZWQgb24gdGhlXG4gKiByZXNvbHZlZCB2ZXJzaW9uKiogKG5ldmVyIG9uIHRoZSBzcGVjaWZpZXIgc3RyaW5nLCBzbyBhbiBleHBsaWNpdCBgMS4xMy40YCBhbmRcbiAqIGBjYXRhbHlzdC1sYXRlc3RgIGNvbGxhcHNlIHdoZW4gY2F0YWx5c3QgKmlzKiAxLjEzLjQpLCBhbmQgdGhlIHN1aXRlcyBydW4gb25jZVxuICogcGVyIGRpc3RpbmN0IHZlcnNpb24uXG4gKlxuICogRXZlcnl0aGluZyBoZXJlIGlzIHB1cmUgYW5kIHVuaXQtdGVzdGVkOyB0aGUgbWFuaWZlc3QgZmV0Y2ggYW5kIHRoZSBsb2dnaW5nXG4gKiBsaXZlIGluIHRoZSBpbnRlZ3JhdGlvbi10aW1lIGBydW4tdmVyc2lvbi1tYXRyaXgudHNgIGdsdWUuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBEZXNrdG9wUmVsZWFzZXNNYW5pZmVzdCB9IGZyb20gJy4vb2JzaWRpYW4tdmVyc2lvbi5tanMnO1xuXG5pbXBvcnQge1xuICBDQVRBTFlTVF9MQVRFU1QsXG4gIHBhcnNlVmVyc2lvblNwZWMsXG4gIFBVQkxJQ19MQVRFU1QsXG4gIHJlc29sdmVWZXJzaW9uRnJvbU1hbmlmZXN0XG59IGZyb20gJy4vb2JzaWRpYW4tdmVyc2lvbi5tanMnO1xuXG4vKipcbiAqIFRoZSB2ZXJzaW9uIHNwZWNpZmllcnMgYSBtYXRyaXggcnVuIGRlZmF1bHRzIHRvOiBib3RoIGVuZHMgb2YgdGhlIHN1cHBvcnRlZFxuICogcmFuZ2UuIFRoZXkgYXJlIGRlLWR1cGxpY2F0ZWQgb24gdGhlaXIgcmVzb2x2ZWQgdmVyc2lvbnMsIHNvIHdoZW4gcHVibGljXG4gKiBoYXMgY2F1Z2h0IHVwIHRvIGNhdGFseXN0IHRoaXMgeWllbGRzIGEgc2luZ2xlIHJ1bi5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfT0JTSURJQU5fVkVSU0lPTl9TUEVDUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbUFVCTElDX0xBVEVTVCwgQ0FUQUxZU1RfTEFURVNUXTtcblxuLyoqXG4gKiBBIHJlcXVlc3RlZCBzcGVjaWZpZXIgdGhhdCBjb3VsZCBub3QgYmUgcmVzb2x2ZWQgYW5kIHdhcyBkcm9wcGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERyb3BwZWRWZXJzaW9uU3BlYyB7XG4gIC8qKlxuICBXaHkgdGhlIHNwZWNpZmllciBjb3VsZCBub3QgYmUgcmVzb2x2ZWQuXG4gICAqL1xuICByZWFkb25seSByZWFzb246IHN0cmluZztcblxuICAvKipcbiAgVGhlIHNwZWNpZmllciBhcyByZXF1ZXN0ZWQuXG4gICAqL1xuICByZWFkb25seSBzcGVjOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGZvcm1hdFZlcnNpb25NYXRyaXhQbGFufS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3JtYXRWZXJzaW9uTWF0cml4UGxhblBhcmFtcyB7XG4gIC8qKlxuICBUaGUgZGUtZHVwbGljYXRlZCBtYXRyaXggdGhhdCB3aWxsIGJlIHJ1bi5cbiAgICovXG4gIHJlYWRvbmx5IGVudHJpZXM6IHJlYWRvbmx5IE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5W107XG5cbiAgLyoqXG4gIFRoZSBzcGVjaWZpZXJzIHRoYXQgcmVzb2x2ZWQsIGluIHJlcXVlc3RlZCBvcmRlci5cbiAgICovXG4gIHJlYWRvbmx5IHJlc29sdmVkU3BlY3M6IHJlYWRvbmx5IFJlc29sdmVkVmVyc2lvblNwZWNbXTtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZm9ybWF0VmVyc2lvbk1hdHJpeFJ1bkhlYWRlcn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0VmVyc2lvbk1hdHJpeFJ1bkhlYWRlclBhcmFtcyB7XG4gIC8qKlxuICBUaGUgZW50cnkgYWJvdXQgdG8gcnVuLlxuICAgKi9cbiAgcmVhZG9ubHkgZW50cnk6IE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5O1xuXG4gIC8qKlxuICBUaGUgZW50cnkncyB6ZXJvLWJhc2VkIHBvc2l0aW9uIGluIHRoZSBtYXRyaXguXG4gICAqL1xuICByZWFkb25seSBpbmRleDogbnVtYmVyO1xuXG4gIC8qKlxuICBUaGUgdG90YWwgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIG1hdHJpeC5cbiAgICovXG4gIHJlYWRvbmx5IHRvdGFsOiBudW1iZXI7XG59XG5cbi8qKlxuICogT25lIGRpc3RpbmN0IE9ic2lkaWFuIHZlcnNpb24gdGhlIHN1aXRlcyB3aWxsIHJ1biBhZ2FpbnN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5IHtcbiAgLyoqXG4gICAqIEV2ZXJ5IHJlcXVlc3RlZCBzcGVjaWZpZXIgdGhhdCByZXNvbHZlZCB0byB7QGxpbmsgdmVyc2lvbn0sIGluIHJlcXVlc3RlZFxuICAgKiBvcmRlci4gTW9yZSB0aGFuIG9uZSBtZWFucyB0aGUgc3BlY2lmaWVycyBjb2luY2lkZWQgYW5kIHdlcmUgY29sbGFwc2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgc3BlY3M6IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICBUaGUgY29uY3JldGUgYHgueS56YCB2ZXJzaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgcmVxdWVzdGVkIHNwZWNpZmllciBwYWlyZWQgd2l0aCB0aGUgY29uY3JldGUgdmVyc2lvbiBpdCByZXNvbHZlZCB0by5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlZFZlcnNpb25TcGVjIHtcbiAgLyoqXG4gIFRoZSBzcGVjaWZpZXIgYXMgcmVxdWVzdGVkIChhbiBgeC55LnpgIHZlcnNpb24gb3IgYSBjaGFubmVsIGFsaWFzKS5cbiAgICovXG4gIHJlYWRvbmx5IHNwZWM6IHN0cmluZztcblxuICAvKipcbiAgVGhlIGNvbmNyZXRlIGB4LnkuemAgdmVyc2lvbiBpdCByZXNvbHZlZCB0by5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgb3V0Y29tZSBvZiB7QGxpbmsgcmVzb2x2ZVJlcXVlc3RlZFNwZWNzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlUmVxdWVzdGVkU3BlY3NSZXN1bHQge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgc3BlY2lmaWVycyBjYW1lIGZyb20ge0BsaW5rIERFRkFVTFRfT0JTSURJQU5fVkVSU0lPTl9TUEVDU31cbiAgICogcmF0aGVyIHRoYW4gYmVpbmcgZXhwbGljaXRseSByZXF1ZXN0ZWQuXG4gICAqL1xuICByZWFkb25seSBpc0RlZmF1bHQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gIFRoZSBzcGVjaWZpZXJzIHRvIHJlc29sdmUsIGluIG9yZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgc3BlY3M6IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZXNvbHZlVmVyc2lvblNwZWNzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlVmVyc2lvblNwZWNzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBkZXNrdG9wIHJlbGVhc2VzIG1hbmlmZXN0LCBvciBgdW5kZWZpbmVkYCB3aGVuIG5vIHJlcXVlc3RlZCBzcGVjaWZpZXIgaXNcbiAgICogYSBjaGFubmVsIGFsaWFzIChzbyBubyBmZXRjaCB3YXMgbmVlZGVkKS5cbiAgICovXG4gIHJlYWRvbmx5IG1hbmlmZXN0OiBEZXNrdG9wUmVsZWFzZXNNYW5pZmVzdCB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciBhIHNwZWNpZmllciB0aGF0IGNhbm5vdCBiZSByZXNvbHZlZCBpcyBkcm9wcGVkIHdpdGggYSByZWNvcmRlZFxuICAgKiByZWFzb24gaW5zdGVhZCBvZiB0aHJvd2luZy4gU2V0IGZvciB0aGUgKipkZWZhdWx0Kiogc3BlY2lmaWVyIGxpc3Qgb25seTogYVxuICAgKiBtYW5pZmVzdCB0aGF0IHNoaXBzIG5vIGNhdGFseXN0IGVudHJ5IG11c3Qgbm90IGJyZWFrIGV2ZXJ5IGNvbnN1bWVyJ3MgZ2F0ZSxcbiAgICogd2hlcmVhcyBhbiBleHBsaWNpdGx5IHJlcXVlc3RlZCBzcGVjaWZpZXIgdGhhdCBjYW5ub3QgcmVzb2x2ZSBpcyBhIHJlYWxcbiAgICogZXJyb3IuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRUb2xlcmF0ZVVucmVzb2x2YWJsZVNwZWNzOiBib29sZWFuO1xuXG4gIC8qKlxuICBUaGUgcmVxdWVzdGVkIHNwZWNpZmllcnMsIGluIG9yZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgc3BlY3M6IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFRoZSBvdXRjb21lIG9mIHtAbGluayByZXNvbHZlVmVyc2lvblNwZWNzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlVmVyc2lvblNwZWNzUmVzdWx0IHtcbiAgLyoqXG4gIFNwZWNpZmllcnMgZHJvcHBlZCBiZWNhdXNlIHRoZXkgY291bGQgbm90IGJlIHJlc29sdmVkICh0b2xlcmFudCBtb2RlIG9ubHkpLlxuICAgKi9cbiAgcmVhZG9ubHkgZHJvcHBlZFNwZWNzOiByZWFkb25seSBEcm9wcGVkVmVyc2lvblNwZWNbXTtcblxuICAvKipcbiAgVGhlIHNwZWNpZmllcnMgdGhhdCByZXNvbHZlZCwgaW4gcmVxdWVzdGVkIG9yZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb2x2ZWRTcGVjczogcmVhZG9ubHkgUmVzb2x2ZWRWZXJzaW9uU3BlY1tdO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBydW5WZXJzaW9uTWF0cml4RW50cmllc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVuVmVyc2lvbk1hdHJpeEVudHJpZXNQYXJhbXMge1xuICAvKipcbiAgVGhlIGRlLWR1cGxpY2F0ZWQgbWF0cml4IHRvIHJ1bi5cbiAgICovXG4gIHJlYWRvbmx5IGVudHJpZXM6IHJlYWRvbmx5IE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5W107XG5cbiAgLyoqXG4gIENhbGxlZCBqdXN0IGJlZm9yZSBlYWNoIGVudHJ5IHJ1bnMsIGZvciBwcm9ncmVzcyByZXBvcnRpbmcuXG4gICAqL1xuICByZWFkb25seSBvbkVudHJ5U3RhcnQ6IChwYXJhbXM6IEZvcm1hdFZlcnNpb25NYXRyaXhSdW5IZWFkZXJQYXJhbXMpID0+IHZvaWQ7XG5cbiAgLyoqXG4gIFJ1bnMgdGhlIHN1aXRlcyBhZ2FpbnN0IGEgc2luZ2xlIGVudHJ5LCB0aHJvd2luZyBvbiBmYWlsdXJlLlxuICAgKi9cbiAgcmVhZG9ubHkgcnVuOiAoZW50cnk6IE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5KSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZDtcbn1cblxuLyoqXG4gKiBDb2xsYXBzZXMgcmVzb2x2ZWQgc3BlY2lmaWVycyBpbnRvIG9uZSBlbnRyeSBwZXIgKipkaXN0aW5jdCByZXNvbHZlZCB2ZXJzaW9uKiouXG4gKlxuICogRGUtZHVwbGljYXRpb24gaXMga2V5ZWQgb24gdGhlIHJlc29sdmVkIHZlcnNpb24sIG5vdCB0aGUgc3BlY2lmaWVyIHN0cmluZywgc29cbiAqIHNwZWNpZmllcnMgdGhhdCBuYW1lIHRoZSBzYW1lIGJ1aWxkIGNvbGxhcHNlIGhvd2V2ZXIgdGhleSB3ZXJlIHdyaXR0ZW4uXG4gKiBGaXJzdC1zZWVuIG9yZGVyIGlzIHByZXNlcnZlZCwgYW5kIGV2ZXJ5IHNwZWNpZmllciB0aGF0IGxhbmRlZCBvbiBhIHZlcnNpb24gaXNcbiAqIHJlY29yZGVkIG9uIGl0cyBlbnRyeS5cbiAqXG4gKiBAcGFyYW0gcmVzb2x2ZWRTcGVjcyAtIFRoZSByZXNvbHZlZCBzcGVjaWZpZXJzLCBpbiByZXF1ZXN0ZWQgb3JkZXIuXG4gKiBAcmV0dXJucyBPbmUgZW50cnkgcGVyIGRpc3RpbmN0IHZlcnNpb24sIGluIGZpcnN0LXNlZW4gb3JkZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFZlcnNpb25NYXRyaXgocmVzb2x2ZWRTcGVjczogcmVhZG9ubHkgUmVzb2x2ZWRWZXJzaW9uU3BlY1tdKTogT2JzaWRpYW5WZXJzaW9uTWF0cml4RW50cnlbXSB7XG4gIGNvbnN0IHNwZWNzQnlWZXJzaW9uID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZ1tdPigpO1xuXG4gIGZvciAoY29uc3QgeyBzcGVjLCB2ZXJzaW9uIH0gb2YgcmVzb2x2ZWRTcGVjcykge1xuICAgIGNvbnN0IHNwZWNzID0gc3BlY3NCeVZlcnNpb24uZ2V0KHZlcnNpb24pO1xuICAgIGlmICghc3BlY3MpIHtcbiAgICAgIHNwZWNzQnlWZXJzaW9uLnNldCh2ZXJzaW9uLCBbc3BlY10pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmICghc3BlY3MuaW5jbHVkZXMoc3BlYykpIHtcbiAgICAgIHNwZWNzLnB1c2goc3BlYyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFsuLi5zcGVjc0J5VmVyc2lvbl0ubWFwKChbdmVyc2lvbiwgc3BlY3NdKSA9PiAoeyBzcGVjcywgdmVyc2lvbiB9KSk7XG59XG5cbi8qKlxuICogRm9ybWF0cyBhbiBlbnRyeSBmb3IgbG9ncyBhbmQgZXJyb3IgbWVzc2FnZXMuXG4gKlxuICogU3BlY2lmaWVycyB0aGF0IG1lcmVseSByZXBlYXQgdGhlIHZlcnNpb24gYWRkIG5vdGhpbmcsIHNvIGFuIGV4cGxpY2l0LW9ubHlcbiAqIGVudHJ5IGZvcm1hdHMgYXMgdGhlIGJhcmUgdmVyc2lvbiByYXRoZXIgdGhhbiBgMS4xMy40ICgxLjEzLjQpYC5cbiAqXG4gKiBAcGFyYW0gZW50cnkgLSBUaGUgZW50cnkgdG8gZm9ybWF0LlxuICogQHJldHVybnMgQSBzdHJpbmcgbGlrZSBgMS4xMy40IChwdWJsaWMtbGF0ZXN0LCBjYXRhbHlzdC1sYXRlc3QpYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFZlcnNpb25NYXRyaXhFbnRyeShlbnRyeTogT2JzaWRpYW5WZXJzaW9uTWF0cml4RW50cnkpOiBzdHJpbmcge1xuICBjb25zdCB7IHNwZWNzLCB2ZXJzaW9uIH0gPSBlbnRyeTtcbiAgY29uc3QgYWxpYXNTcGVjcyA9IHNwZWNzLmZpbHRlcigoc3BlYykgPT4gc3BlYyAhPT0gdmVyc2lvbik7XG4gIGlmIChhbGlhc1NwZWNzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB2ZXJzaW9uO1xuICB9XG4gIHJldHVybiBgJHt2ZXJzaW9ufSAoJHthbGlhc1NwZWNzLmpvaW4oJywgJyl9KWA7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBsaW5lcyBhbm5vdW5jaW5nIHdoYXQgdGhlIG1hdHJpeCByZXNvbHZlZCB0byBhbmQgaG93IG1hbnkgcnVucyBpdFxuICogd2lsbCB0YWtlLlxuICpcbiAqIFRoZSBjb2xsYXBzZSBtdXN0IGJlICoqc3RhdGVkKiosIG5ldmVyIGluZmVycmVkOiBhIHJlYWRlciB3aG8gc2VlcyBvbmUgcnVuXG4gKiB3aGVyZSB0aGV5IGV4cGVjdGVkIHR3byBoYXMgdG8gYmUgdG9sZCB0aGUgc2Vjb25kIGVuZCB3YXMgYWxyZWFkeSBjb3ZlcmVkLFxuICogbm90IGxlZnQgd29uZGVyaW5nIHdoZXRoZXIgaXQgd2FzIHNraXBwZWQgYnkgYWNjaWRlbnQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBtYXRyaXggYW5kIHRoZSBzcGVjaWZpZXJzIGl0IHdhcyBidWlsdCBmcm9tLlxuICogQHJldHVybnMgVGhlIGxpbmVzIHRvIGxvZywgaW4gb3JkZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRWZXJzaW9uTWF0cml4UGxhbihwYXJhbXM6IEZvcm1hdFZlcnNpb25NYXRyaXhQbGFuUGFyYW1zKTogc3RyaW5nW10ge1xuICBjb25zdCB7IGVudHJpZXMsIHJlc29sdmVkU3BlY3MgfSA9IHBhcmFtcztcblxuICBjb25zdCBsaW5lcyA9IHJlc29sdmVkU3BlY3NcbiAgICAuZmlsdGVyKCh7IHNwZWMsIHZlcnNpb24gfSkgPT4gc3BlYyAhPT0gdmVyc2lvbilcbiAgICAubWFwKCh7IHNwZWMsIHZlcnNpb24gfSkgPT4gYCR7c3BlY30gLT4gJHt2ZXJzaW9ufWApO1xuXG4gIGNvbnN0IHNwZWNpZmllckNvdW50ID0gcmVzb2x2ZWRTcGVjcy5sZW5ndGg7XG4gIGNvbnN0IHZlcnNpb25Db3VudCA9IGVudHJpZXMubGVuZ3RoO1xuICBjb25zdCBmb3JtYXR0ZWRFbnRyaWVzID0gZW50cmllcy5tYXAoKGVudHJ5KSA9PiBmb3JtYXRWZXJzaW9uTWF0cml4RW50cnkoZW50cnkpKS5qb2luKCcsICcpO1xuXG4gIGxpbmVzLnB1c2goXG4gICAgYCR7U3RyaW5nKHNwZWNpZmllckNvdW50KX0gcmVxdWVzdGVkICR7cGx1cmFsaXplKHNwZWNpZmllckNvdW50LCAnc3BlY2lmaWVyJyl9IGBcbiAgICAgICsgYCR7cmVzb2x2ZVZlcmIoc3BlY2lmaWVyQ291bnQpfSB0byAke1N0cmluZyh2ZXJzaW9uQ291bnQpfSBkaXN0aW5jdCAke3BsdXJhbGl6ZSh2ZXJzaW9uQ291bnQsICd2ZXJzaW9uJyl9OiBgXG4gICAgICArIGAke2Zvcm1hdHRlZEVudHJpZXN9LiBSdW5uaW5nIHRoZSBzdWl0ZXMgJHtmb3JtYXRSdW5Db3VudCh2ZXJzaW9uQ291bnQpfS5gXG4gICk7XG5cbiAgcmV0dXJuIGxpbmVzO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgcHJvZ3Jlc3MgbGluZSBhbm5vdW5jaW5nIGEgc2luZ2xlIGVudHJ5J3MgcnVuLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgZW50cnkgYW5kIGl0cyBwb3NpdGlvbiBpbiB0aGUgbWF0cml4LlxuICogQHJldHVybnMgQSBzdHJpbmcgbGlrZSBgUnVuIDEgb2YgMjogMS4xMi43IChwdWJsaWMtbGF0ZXN0KWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRWZXJzaW9uTWF0cml4UnVuSGVhZGVyKHBhcmFtczogRm9ybWF0VmVyc2lvbk1hdHJpeFJ1bkhlYWRlclBhcmFtcyk6IHN0cmluZyB7XG4gIGNvbnN0IHsgZW50cnksIGluZGV4LCB0b3RhbCB9ID0gcGFyYW1zO1xuICByZXR1cm4gYFJ1biAke1N0cmluZyhpbmRleCArIDEpfSBvZiAke1N0cmluZyh0b3RhbCl9OiAke2Zvcm1hdFZlcnNpb25NYXRyaXhFbnRyeShlbnRyeSl9YDtcbn1cblxuLyoqXG4gKiBSZXBvcnRzIHdoZXRoZXIgYW55IHNwZWNpZmllciBpcyBhIGNoYW5uZWwgYWxpYXMsIGkuZS4gd2hldGhlciB0aGUgcmVsZWFzZXNcbiAqIG1hbmlmZXN0IGhhcyB0byBiZSBmZXRjaGVkIGF0IGFsbC5cbiAqXG4gKiBAcGFyYW0gc3BlY3MgLSBUaGUgcmVxdWVzdGVkIHNwZWNpZmllcnMuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiBhdCBsZWFzdCBvbmUgc3BlY2lmaWVyIHJlc29sdmVzIGFnYWluc3QgdGhlIG1hbmlmZXN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzQ2hhbm5lbFNwZWMoc3BlY3M6IHJlYWRvbmx5IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gIHJldHVybiBzcGVjcy5zb21lKChzcGVjKSA9PiBzcGVjID09PSBQVUJMSUNfTEFURVNUIHx8IHNwZWMgPT09IENBVEFMWVNUX0xBVEVTVCk7XG59XG5cbi8qKlxuICogU3BsaXRzIGEgY29tbWEtc2VwYXJhdGVkIHNwZWNpZmllciBsaXN0LCBzbyBhIGNvbnN1bWVyIGNhbiBoYW5kIGFuIGVudiB2YXJcbiAqIChgT0JTSURJQU5fVkVSU0lPTj0xLjEyLjcsY2F0YWx5c3QtbGF0ZXN0YCkgc3RyYWlnaHQgdGhyb3VnaC5cbiAqXG4gKiBAcGFyYW0gcmF3IC0gVGhlIHJhdyBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nLlxuICogQHJldHVybnMgVGhlIHRyaW1tZWQsIG5vbi1lbXB0eSBzcGVjaWZpZXJzLCBpbiBvcmRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVmVyc2lvblNwZWNMaXN0KHJhdzogc3RyaW5nKTogc3RyaW5nW10ge1xuICByZXR1cm4gcmF3LnNwbGl0KCcsJykubWFwKChzcGVjKSA9PiBzcGVjLnRyaW0oKSkuZmlsdGVyKChzcGVjKSA9PiBzcGVjICE9PSAnJyk7XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyB0aGUgcmVxdWVzdGVkIHZlcnNpb24gc3BlY2lmaWVycywgZmFsbGluZyBiYWNrIHRvIHRoZSBkZWZhdWx0XG4gKiBib3RoLWVuZHMgbGlzdCB3aGVuIG5vbmUgd2VyZSBnaXZlbi5cbiAqXG4gKiBBbiBlbXB0eSBzdHJpbmcgaXMgdHJlYXRlZCBhcyBhYnNlbnQsIHNvIGEgY29uc3VtZXIgY2FuIHBhc3MgYW4gdW5zZXRcbiAqIGBwcm9jZXNzLmVudlsnT0JTSURJQU5fVkVSU0lPTiddYCB3aXRob3V0IGd1YXJkaW5nIGl0LlxuICpcbiAqIEBwYXJhbSB2ZXJzaW9ucyAtIEFuIGFycmF5IG9mIHNwZWNpZmllcnMsIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZywgb3IgYHVuZGVmaW5lZGAuXG4gKiBAcmV0dXJucyBUaGUgc3BlY2lmaWVycyB0byByZXNvbHZlLCBhbmQgd2hldGhlciB0aGV5IGNhbWUgZnJvbSB0aGUgZGVmYXVsdCBsaXN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVJlcXVlc3RlZFNwZWNzKHZlcnNpb25zOiByZWFkb25seSBzdHJpbmdbXSB8IHN0cmluZyB8IHVuZGVmaW5lZCk6IFJlc29sdmVSZXF1ZXN0ZWRTcGVjc1Jlc3VsdCB7XG4gIGNvbnN0IHNwZWNzID0gdHlwZW9mIHZlcnNpb25zID09PSAnc3RyaW5nJyA/IHBhcnNlVmVyc2lvblNwZWNMaXN0KHZlcnNpb25zKSA6IFsuLi52ZXJzaW9ucyA/PyBbXV07XG4gIGlmIChzcGVjcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4geyBpc0RlZmF1bHQ6IHRydWUsIHNwZWNzOiBbLi4uREVGQVVMVF9PQlNJRElBTl9WRVJTSU9OX1NQRUNTXSB9O1xuICB9XG4gIHJldHVybiB7IGlzRGVmYXVsdDogZmFsc2UsIHNwZWNzIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgZWFjaCByZXF1ZXN0ZWQgc3BlY2lmaWVyIHRvIGEgY29uY3JldGUgdmVyc2lvbiBhZ2FpbnN0IGFcbiAqIHNpbmdsZSBtYW5pZmVzdC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHNwZWNpZmllcnMsIHRoZSBtYW5pZmVzdCwgYW5kIHRoZSB0b2xlcmFuY2UgbW9kZS5cbiAqIEByZXR1cm5zIFRoZSByZXNvbHZlZCBzcGVjaWZpZXJzIGFuZCBhbnkgdGhhdCB3ZXJlIGRyb3BwZWQuXG4gKiBAdGhyb3dzIEVycm9yIGlmIGEgc3BlY2lmaWVyIGNhbm5vdCBiZSByZXNvbHZlZCBhbmQgdG9sZXJhbmNlIGlzIG9mZiwgb3IgaWZcbiAqICAgdG9sZXJhbmNlIGlzIG9uIGJ1dCBub3RoaW5nIHJlc29sdmVkIGF0IGFsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVWZXJzaW9uU3BlY3MocGFyYW1zOiBSZXNvbHZlVmVyc2lvblNwZWNzUGFyYW1zKTogUmVzb2x2ZVZlcnNpb25TcGVjc1Jlc3VsdCB7XG4gIGNvbnN0IHsgbWFuaWZlc3QsIHNob3VsZFRvbGVyYXRlVW5yZXNvbHZhYmxlU3BlY3MsIHNwZWNzIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgZHJvcHBlZFNwZWNzOiBEcm9wcGVkVmVyc2lvblNwZWNbXSA9IFtdO1xuICBjb25zdCByZXNvbHZlZFNwZWNzOiBSZXNvbHZlZFZlcnNpb25TcGVjW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHNwZWMgb2Ygc3BlY3MpIHtcbiAgICB0cnkge1xuICAgICAgcmVzb2x2ZWRTcGVjcy5wdXNoKHsgc3BlYywgdmVyc2lvbjogcmVzb2x2ZVNwZWMoc3BlYywgbWFuaWZlc3QpIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIXNob3VsZFRvbGVyYXRlVW5yZXNvbHZhYmxlU3BlY3MpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICBkcm9wcGVkU3BlY3MucHVzaCh7IHJlYXNvbjogdG9SZWFzb24oZXJyb3IpLCBzcGVjIH0pO1xuICAgIH1cbiAgfVxuXG4gIGlmIChyZXNvbHZlZFNwZWNzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBObyBPYnNpZGlhbiB2ZXJzaW9uIGNvdWxkIGJlIHJlc29sdmVkIGZyb206ICR7c3BlY3Muam9pbignLCAnKX0uICR7ZHJvcHBlZFNwZWNzLm1hcCgoeyByZWFzb24sIHNwZWMgfSkgPT4gYCR7c3BlY306ICR7cmVhc29ufWApLmpvaW4oJzsgJyl9YFxuICAgICk7XG4gIH1cblxuICByZXR1cm4geyBkcm9wcGVkU3BlY3MsIHJlc29sdmVkU3BlY3MgfTtcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSBzdWl0ZXMgb25jZSBwZXIgbWF0cml4IGVudHJ5LCAqKmFsd2F5cyBydW5uaW5nIGV2ZXJ5IGVudHJ5KiogYmVmb3JlXG4gKiByZXBvcnRpbmcuXG4gKlxuICogQSBmYWlsaW5nIGVuZCBtdXN0IG5vdCBoaWRlIHRoZSBzdGF0ZSBvZiB0aGUgb3RoZXI6IHN0b3BwaW5nIGF0IHRoZSBmaXJzdFxuICogZmFpbHVyZSB3b3VsZCBsZWF2ZSBcImNhdGFseXN0IGJyb2tlXCIgYW5kIFwiYm90aCBlbmRzIGJyb2tlXCIgaW5kaXN0aW5ndWlzaGFibGVcbiAqIHdpdGhvdXQgYSBzZWNvbmQgcnVuLiBFdmVyeSBlbnRyeSB0aGVyZWZvcmUgcnVucywgYW5kIHRoZSBzdW1tYXJ5IG5hbWVzIHdoaWNoXG4gKiBjb25jcmV0ZSB2ZXJzaW9ucyBmYWlsZWQgYW5kIHdoaWNoIHBhc3NlZC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIG1hdHJpeCwgdGhlIHBlci1lbnRyeSBydW5uZXIsIGFuZCB0aGUgcHJvZ3Jlc3MgcmVwb3J0ZXIuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgZXZlcnkgZW50cnkgaGFzIHJ1biBzdWNjZXNzZnVsbHkuXG4gKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBtYXRyaXggaXMgZW1wdHksIG9yIGFuIHtAbGluayBBZ2dyZWdhdGVFcnJvcn0gbmFtaW5nIGV2ZXJ5XG4gKiAgIHZlcnNpb24gdGhhdCBmYWlsZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5WZXJzaW9uTWF0cml4RW50cmllcyhwYXJhbXM6IFJ1blZlcnNpb25NYXRyaXhFbnRyaWVzUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgZW50cmllcywgb25FbnRyeVN0YXJ0LCBydW4gfSA9IHBhcmFtcztcblxuICBpZiAoZW50cmllcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlZnVzaW5nIHRvIHJ1biBhbiBlbXB0eSBPYnNpZGlhbiB2ZXJzaW9uIG1hdHJpeDogbm8gdmVyc2lvbiB3b3VsZCBiZSB2ZXJpZmllZC4nKTtcbiAgfVxuXG4gIGNvbnN0IGVycm9yczogdW5rbm93bltdID0gW107XG4gIGNvbnN0IGZhaWxlZEVudHJpZXM6IE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5W10gPSBbXTtcbiAgY29uc3QgcGFzc2VkRW50cmllczogT2JzaWRpYW5WZXJzaW9uTWF0cml4RW50cnlbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgW2luZGV4LCBlbnRyeV0gb2YgZW50cmllcy5lbnRyaWVzKCkpIHtcbiAgICBvbkVudHJ5U3RhcnQoeyBlbnRyeSwgaW5kZXgsIHRvdGFsOiBlbnRyaWVzLmxlbmd0aCB9KTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcnVuKGVudHJ5KTtcbiAgICAgIHBhc3NlZEVudHJpZXMucHVzaChlbnRyeSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGVycm9ycy5wdXNoKGVycm9yKTtcbiAgICAgIGZhaWxlZEVudHJpZXMucHVzaChlbnRyeSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGZhaWxlZEVudHJpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGFzc2VkQ2xhdXNlID0gcGFzc2VkRW50cmllcy5sZW5ndGggPT09IDBcbiAgICA/ICcnXG4gICAgOiBgIFBhc3NlZDogJHtwYXNzZWRFbnRyaWVzLm1hcCgoZW50cnkpID0+IGZvcm1hdFZlcnNpb25NYXRyaXhFbnRyeShlbnRyeSkpLmpvaW4oJywgJyl9LmA7XG5cbiAgdGhyb3cgbmV3IEFnZ3JlZ2F0ZUVycm9yKFxuICAgIGVycm9ycyxcbiAgICBgT2JzaWRpYW4gdmVyc2lvbiBtYXRyaXggZmFpbGVkIG9uICR7U3RyaW5nKGZhaWxlZEVudHJpZXMubGVuZ3RoKX0gb2YgJHtTdHJpbmcoZW50cmllcy5sZW5ndGgpfSBgXG4gICAgICArIGAke3BsdXJhbGl6ZShlbnRyaWVzLmxlbmd0aCwgJ3ZlcnNpb24nKX06IGBcbiAgICAgICsgYCR7ZmFpbGVkRW50cmllcy5tYXAoKGVudHJ5KSA9PiBmb3JtYXRWZXJzaW9uTWF0cml4RW50cnkoZW50cnkpKS5qb2luKCcsICcpfS4ke3Bhc3NlZENsYXVzZX1gXG4gICk7XG59XG5cbi8qKlxuICogRm9ybWF0cyBhIHJ1biBjb3VudCBhcyBwcm9zZSwgc28gdGhlIHNpbmdsZS1ydW4gY2FzZSByZWFkcyBhcyBhIGRlbGliZXJhdGVcbiAqIGRlY2lzaW9uIHJhdGhlciB0aGFuIGEgc3VzcGljaW91cyBgMWAuXG4gKlxuICogQHBhcmFtIGNvdW50IC0gVGhlIG51bWJlciBvZiBydW5zLlxuICogQHJldHVybnMgYG9uY2VgLCBgdHdpY2VgLCBvciBgTiB0aW1lc2AuXG4gKi9cbmZ1bmN0aW9uIGZvcm1hdFJ1bkNvdW50KGNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICBjb25zdCBUV0lDRSA9IDI7XG4gIGlmIChjb3VudCA9PT0gMSkge1xuICAgIHJldHVybiAnb25jZSc7XG4gIH1cbiAgaWYgKGNvdW50ID09PSBUV0lDRSkge1xuICAgIHJldHVybiAndHdpY2UnO1xuICB9XG4gIHJldHVybiBgJHtTdHJpbmcoY291bnQpfSB0aW1lc2A7XG59XG5cbi8qKlxuICogUGx1cmFsaXplcyBhIG5vdW4gYnkgY291bnQuXG4gKlxuICogQHBhcmFtIGNvdW50IC0gVGhlIGNvdW50LlxuICogQHBhcmFtIG5vdW4gLSBUaGUgc2luZ3VsYXIgbm91bi5cbiAqIEByZXR1cm5zIFRoZSBub3VuLCBzdWZmaXhlZCB3aXRoIGBzYCB1bmxlc3MgdGhlIGNvdW50IGlzIGV4YWN0bHkgb25lLlxuICovXG5mdW5jdGlvbiBwbHVyYWxpemUoY291bnQ6IG51bWJlciwgbm91bjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNvdW50ID09PSAxID8gbm91biA6IGAke25vdW59c2A7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgYSBzaW5nbGUgc3BlY2lmaWVyIGFnYWluc3QgYSBtYW5pZmVzdC5cbiAqXG4gKiBAcGFyYW0gc3BlYyAtIFRoZSBzcGVjaWZpZXIuXG4gKiBAcGFyYW0gbWFuaWZlc3QgLSBUaGUgbWFuaWZlc3QsIG9yIGB1bmRlZmluZWRgIHdoZW4gbm9uZSB3YXMgZmV0Y2hlZC5cbiAqIEByZXR1cm5zIFRoZSBjb25jcmV0ZSBgeC55LnpgIHZlcnNpb24uXG4gKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBzcGVjaWZpZXIgaXMgaW52YWxpZCwgb3IgbmFtZXMgYSBjaGFubmVsIHdpdGggbm8gbWFuaWZlc3RcbiAqICAgZW50cnkuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVTcGVjKHNwZWM6IHN0cmluZywgbWFuaWZlc3Q6IERlc2t0b3BSZWxlYXNlc01hbmlmZXN0IHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgY29uc3QgcGFyc2VkID0gcGFyc2VWZXJzaW9uU3BlYyhzcGVjKTtcbiAgaWYgKHBhcnNlZC5raW5kID09PSAnZXhwbGljaXQnKSB7XG4gICAgcmV0dXJuIHBhcnNlZC52ZXJzaW9uO1xuICB9XG4gIGlmICghbWFuaWZlc3QpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXNvbHZlIFwiJHtzcGVjfVwiIHdpdGhvdXQgdGhlIGRlc2t0b3AgcmVsZWFzZXMgbWFuaWZlc3QuYCk7XG4gIH1cbiAgcmV0dXJuIHJlc29sdmVWZXJzaW9uRnJvbU1hbmlmZXN0KG1hbmlmZXN0LCBwYXJzZWQuY2hhbm5lbCk7XG59XG5cbi8qKlxuICogQ2hvb3NlcyB0aGUgc3ViamVjdC12ZXJiIGFncmVlbWVudCBmb3IgdGhlIHNwZWNpZmllciBjb3VudC5cbiAqXG4gKiBAcGFyYW0gY291bnQgLSBUaGUgbnVtYmVyIG9mIHNwZWNpZmllcnMuXG4gKiBAcmV0dXJucyBgcmVzb2x2ZXNgIG9yIGByZXNvbHZlYC5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVZlcmIoY291bnQ6IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiBjb3VudCA9PT0gMSA/ICdyZXNvbHZlcycgOiAncmVzb2x2ZSc7XG59XG5cbi8qKlxuICogRXh0cmFjdHMgYSBodW1hbi1yZWFkYWJsZSByZWFzb24gZnJvbSBhIHRocm93biB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0gZXJyb3IgLSBUaGUgdGhyb3duIHZhbHVlLlxuICogQHJldHVybnMgVGhlIHJlYXNvbiB0ZXh0LlxuICovXG5mdW5jdGlvbiB0b1JlYXNvbihlcnJvcjogdW5rbm93bik6IHN0cmluZyB7XG4gIC8qIHY4IGlnbm9yZSBuZXh0IC0tIERlZmVuc2l2ZTogZXZlcnkgdGhyb3cgc2l0ZSByZWFjaGFibGUgZnJvbSBoZXJlIChwYXJzZVZlcnNpb25TcGVjLCByZXNvbHZlVmVyc2lvbkZyb21NYW5pZmVzdCwgdGhlIG1pc3NpbmctbWFuaWZlc3QgZ3VhcmQpIHRocm93cyBhbiBFcnJvci4gKi9cbiAgcmV0dXJuIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQXlCQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBT0EsTUFBTSxpQ0FBb0QsQ0FBQyxlQUFlLGVBQWU7QUEwS3pGLFNBQVMsbUJBQW1CLGVBQTZFO0FBQzlHLFFBQU0saUJBQWlCLG9CQUFJLElBQXNCO0FBRWpELGFBQVcsRUFBRSxNQUFNLFFBQVEsS0FBSyxlQUFlO0FBQzdDLFVBQU0sUUFBUSxlQUFlLElBQUksT0FBTztBQUN4QyxRQUFJLENBQUMsT0FBTztBQUNWLHFCQUFlLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQztBQUNsQztBQUFBLElBQ0Y7QUFDQSxRQUFJLENBQUMsTUFBTSxTQUFTLElB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
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3ZlcnNpb24tbWF0cml4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHVyZSBkZWNpc2lvbiBsYXllciBmb3IgcnVubmluZyBhIHN1aXRlIGFnYWluc3QgKipldmVyeSoqIHN1cHBvcnRlZCBPYnNpZGlhblxuICogdmVyc2lvbi5cbiAqXG4gKiBTdXBwb3J0IGlzIHRoZSByYW5nZSBgW2xhdGVzdCBwdWJsaWMsIGxhdGVzdCBjYXRhbHlzdF1gIGFuZCBib3RoIGVuZHMgbXVzdCBiZVxuICogdmVyaWZpZWQuIFRoZSB0d28gZW5kcyBhcmUgbW92aW5nIHRhcmdldHMsIGFuZCB0aGV5IHBlcmlvZGljYWxseVxuICogKipjb2luY2lkZSoqIFx1MjAxNCB3aGVuIHB1YmxpYyBjYXRjaGVzIHVwIHRvIGNhdGFseXN0LCBib3RoIHNwZWNpZmllcnMgcHJvdmlzaW9uXG4gKiB0aGUgc2FtZSBidWlsZCwgc28gcnVubmluZyB0aGUgc3VpdGVzIHR3aWNlIHJlLXJ1bnMgdGhlIHNhbWUgYnVpbGQgYW5kIGJ1eXNcbiAqIG5vdGhpbmcuIFdvcnNlLCBhIGNvbnN1bWVyIHRoYXQgcmFuIGJvdGggc3RpbGwgcmVwb3J0cyBcImdyZWVuIG9uIHB1YmxpYyBBTkRcbiAqIGNhdGFseXN0XCIsIGEgdHdvLWVuZCBjbGFpbSBpdCBuZXZlciB2ZXJpZmllZC5cbiAqXG4gKiBUaGUgZGVjaXNpb24gdGhlcmVmb3JlIGxpdmVzIGhlcmUgcmF0aGVyIHRoYW4gaW4gZXZlcnkgY29uc3VtaW5nIHJlcG86IGEgbGlzdFxuICogb2YgdmVyc2lvbiBzcGVjaWZpZXJzIGlzIHJlc29sdmVkIHRvIGNvbmNyZXRlIHZlcnNpb25zLCAqKmRlLWR1cGxpY2F0ZWQgb24gdGhlXG4gKiByZXNvbHZlZCB2ZXJzaW9uKiogKG5ldmVyIG9uIHRoZSBzcGVjaWZpZXIgc3RyaW5nLCBzbyBhbiBleHBsaWNpdCBgMS4xMy40YCBhbmRcbiAqIGBjYXRhbHlzdC1sYXRlc3RgIGNvbGxhcHNlIHdoZW4gY2F0YWx5c3QgKmlzKiAxLjEzLjQpLCBhbmQgdGhlIHN1aXRlcyBydW4gb25jZVxuICogcGVyIGRpc3RpbmN0IHZlcnNpb24uXG4gKlxuICogRXZlcnl0aGluZyBoZXJlIGlzIHB1cmUgYW5kIHVuaXQtdGVzdGVkOyB0aGUgbWFuaWZlc3QgZmV0Y2ggYW5kIHRoZSBsb2dnaW5nXG4gKiBsaXZlIGluIHRoZSBpbnRlZ3JhdGlvbi10aW1lIGBydW4tdmVyc2lvbi1tYXRyaXgudHNgIGdsdWUuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBEZXNrdG9wUmVsZWFzZXNNYW5pZmVzdCB9IGZyb20gJy4vb2JzaWRpYW4tdmVyc2lvbi5tanMnO1xuXG5pbXBvcnQge1xuICBDQVRBTFlTVF9MQVRFU1QsXG4gIHBhcnNlVmVyc2lvblNwZWMsXG4gIFBVQkxJQ19MQVRFU1QsXG4gIHJlc29sdmVWZXJzaW9uRnJvbU1hbmlmZXN0XG59IGZyb20gJy4vb2JzaWRpYW4tdmVyc2lvbi5tanMnO1xuXG4vKipcbiAqIFRoZSB2ZXJzaW9uIHNwZWNpZmllcnMgYSBtYXRyaXggcnVuIGRlZmF1bHRzIHRvOiBib3RoIGVuZHMgb2YgdGhlIHN1cHBvcnRlZFxuICogcmFuZ2UuIFRoZXkgYXJlIGRlLWR1cGxpY2F0ZWQgb24gdGhlaXIgcmVzb2x2ZWQgdmVyc2lvbnMsIHNvIHdoZW4gcHVibGljXG4gKiBoYXMgY2F1Z2h0IHVwIHRvIGNhdGFseXN0IHRoaXMgeWllbGRzIGEgc2luZ2xlIHJ1bi5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfT0JTSURJQU5fVkVSU0lPTl9TUEVDUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbUFVCTElDX0xBVEVTVCwgQ0FUQUxZU1RfTEFURVNUXTtcblxuLyoqXG4gKiBBIHJlcXVlc3RlZCBzcGVjaWZpZXIgdGhhdCBjb3VsZCBub3QgYmUgcmVzb2x2ZWQgYW5kIHdhcyBkcm9wcGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERyb3BwZWRWZXJzaW9uU3BlYyB7XG4gIC8qKlxuICBXaHkgdGhlIHNwZWNpZmllciBjb3VsZCBub3QgYmUgcmVzb2x2ZWQuXG4gICAqL1xuICByZWFkb25seSByZWFzb246IHN0cmluZztcblxuICAvKipcbiAgVGhlIHNwZWNpZmllciBhcyByZXF1ZXN0ZWQuXG4gICAqL1xuICByZWFkb25seSBzcGVjOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGZvcm1hdFZlcnNpb25NYXRyaXhQbGFufS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3JtYXRWZXJzaW9uTWF0cml4UGxhblBhcmFtcyB7XG4gIC8qKlxuICBUaGUgZGUtZHVwbGljYXRlZCBtYXRyaXggdGhhdCB3aWxsIGJlIHJ1bi5cbiAgICovXG4gIHJlYWRvbmx5IGVudHJpZXM6IHJlYWRvbmx5IE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5W107XG5cbiAgLyoqXG4gIFRoZSBzcGVjaWZpZXJzIHRoYXQgcmVzb2x2ZWQsIGluIHJlcXVlc3RlZCBvcmRlci5cbiAgICovXG4gIHJlYWRvbmx5IHJlc29sdmVkU3BlY3M6IHJlYWRvbmx5IFJlc29sdmVkVmVyc2lvblNwZWNbXTtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZm9ybWF0VmVyc2lvbk1hdHJpeFJ1bkhlYWRlcn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0VmVyc2lvbk1hdHJpeFJ1bkhlYWRlclBhcmFtcyB7XG4gIC8qKlxuICBUaGUgZW50cnkgYWJvdXQgdG8gcnVuLlxuICAgKi9cbiAgcmVhZG9ubHkgZW50cnk6IE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5O1xuXG4gIC8qKlxuICBUaGUgZW50cnkncyB6ZXJvLWJhc2VkIHBvc2l0aW9uIGluIHRoZSBtYXRyaXguXG4gICAqL1xuICByZWFkb25seSBpbmRleDogbnVtYmVyO1xuXG4gIC8qKlxuICBUaGUgdG90YWwgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIG1hdHJpeC5cbiAgICovXG4gIHJlYWRvbmx5IHRvdGFsOiBudW1iZXI7XG59XG5cbi8qKlxuICogT25lIGRpc3RpbmN0IE9ic2lkaWFuIHZlcnNpb24gdGhlIHN1aXRlcyB3aWxsIHJ1biBhZ2FpbnN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5IHtcbiAgLyoqXG4gICAqIEV2ZXJ5IHJlcXVlc3RlZCBzcGVjaWZpZXIgdGhhdCByZXNvbHZlZCB0byB7QGxpbmsgdmVyc2lvbn0sIGluIHJlcXVlc3RlZFxuICAgKiBvcmRlci4gTW9yZSB0aGFuIG9uZSBtZWFucyB0aGUgc3BlY2lmaWVycyBjb2luY2lkZWQgYW5kIHdlcmUgY29sbGFwc2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgc3BlY3M6IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICBUaGUgY29uY3JldGUgYHgueS56YCB2ZXJzaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgcmVxdWVzdGVkIHNwZWNpZmllciBwYWlyZWQgd2l0aCB0aGUgY29uY3JldGUgdmVyc2lvbiBpdCByZXNvbHZlZCB0by5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlZFZlcnNpb25TcGVjIHtcbiAgLyoqXG4gIFRoZSBzcGVjaWZpZXIgYXMgcmVxdWVzdGVkIChhbiBgeC55LnpgIHZlcnNpb24gb3IgYSBjaGFubmVsIGFsaWFzKS5cbiAgICovXG4gIHJlYWRvbmx5IHNwZWM6IHN0cmluZztcblxuICAvKipcbiAgVGhlIGNvbmNyZXRlIGB4LnkuemAgdmVyc2lvbiBpdCByZXNvbHZlZCB0by5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgb3V0Y29tZSBvZiB7QGxpbmsgcmVzb2x2ZVJlcXVlc3RlZFNwZWNzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlUmVxdWVzdGVkU3BlY3NSZXN1bHQge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgc3BlY2lmaWVycyBjYW1lIGZyb20ge0BsaW5rIERFRkFVTFRfT0JTSURJQU5fVkVSU0lPTl9TUEVDU31cbiAgICogcmF0aGVyIHRoYW4gYmVpbmcgZXhwbGljaXRseSByZXF1ZXN0ZWQuXG4gICAqL1xuICByZWFkb25seSBpc0RlZmF1bHQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gIFRoZSBzcGVjaWZpZXJzIHRvIHJlc29sdmUsIGluIG9yZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgc3BlY3M6IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZXNvbHZlVmVyc2lvblNwZWNzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlVmVyc2lvblNwZWNzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBkZXNrdG9wIHJlbGVhc2VzIG1hbmlmZXN0LCBvciBgdW5kZWZpbmVkYCB3aGVuIG5vIHJlcXVlc3RlZCBzcGVjaWZpZXIgaXNcbiAgICogYSBjaGFubmVsIGFsaWFzIChzbyBubyBmZXRjaCB3YXMgbmVlZGVkKS5cbiAgICovXG4gIHJlYWRvbmx5IG1hbmlmZXN0OiBEZXNrdG9wUmVsZWFzZXNNYW5pZmVzdCB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciBhIHNwZWNpZmllciB0aGF0IGNhbm5vdCBiZSByZXNvbHZlZCBpcyBkcm9wcGVkIHdpdGggYSByZWNvcmRlZFxuICAgKiByZWFzb24gaW5zdGVhZCBvZiB0aHJvd2luZy4gU2V0IGZvciB0aGUgKipkZWZhdWx0Kiogc3BlY2lmaWVyIGxpc3Qgb25seTogYVxuICAgKiBtYW5pZmVzdCB0aGF0IHNoaXBzIG5vIGNhdGFseXN0IGVudHJ5IG11c3Qgbm90IGJyZWFrIGV2ZXJ5IGNvbnN1bWVyJ3MgZ2F0ZSxcbiAgICogd2hlcmVhcyBhbiBleHBsaWNpdGx5IHJlcXVlc3RlZCBzcGVjaWZpZXIgdGhhdCBjYW5ub3QgcmVzb2x2ZSBpcyBhIHJlYWxcbiAgICogZXJyb3IuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRUb2xlcmF0ZVVucmVzb2x2YWJsZVNwZWNzOiBib29sZWFuO1xuXG4gIC8qKlxuICBUaGUgcmVxdWVzdGVkIHNwZWNpZmllcnMsIGluIG9yZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgc3BlY3M6IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFRoZSBvdXRjb21lIG9mIHtAbGluayByZXNvbHZlVmVyc2lvblNwZWNzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlVmVyc2lvblNwZWNzUmVzdWx0IHtcbiAgLyoqXG4gIFNwZWNpZmllcnMgZHJvcHBlZCBiZWNhdXNlIHRoZXkgY291bGQgbm90IGJlIHJlc29sdmVkICh0b2xlcmFudCBtb2RlIG9ubHkpLlxuICAgKi9cbiAgcmVhZG9ubHkgZHJvcHBlZFNwZWNzOiByZWFkb25seSBEcm9wcGVkVmVyc2lvblNwZWNbXTtcblxuICAvKipcbiAgVGhlIHNwZWNpZmllcnMgdGhhdCByZXNvbHZlZCwgaW4gcmVxdWVzdGVkIG9yZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb2x2ZWRTcGVjczogcmVhZG9ubHkgUmVzb2x2ZWRWZXJzaW9uU3BlY1tdO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBydW5WZXJzaW9uTWF0cml4RW50cmllc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVuVmVyc2lvbk1hdHJpeEVudHJpZXNQYXJhbXMge1xuICAvKipcbiAgVGhlIGRlLWR1cGxpY2F0ZWQgbWF0cml4IHRvIHJ1bi5cbiAgICovXG4gIHJlYWRvbmx5IGVudHJpZXM6IHJlYWRvbmx5IE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5W107XG5cbiAgLyoqXG4gIENhbGxlZCBqdXN0IGJlZm9yZSBlYWNoIGVudHJ5IHJ1bnMsIGZvciBwcm9ncmVzcyByZXBvcnRpbmcuXG4gICAqL1xuICBvbkVudHJ5U3RhcnQodGhpczogdm9pZCwgcGFyYW1zOiBGb3JtYXRWZXJzaW9uTWF0cml4UnVuSGVhZGVyUGFyYW1zKTogdm9pZDtcblxuICAvKipcbiAgUnVucyB0aGUgc3VpdGVzIGFnYWluc3QgYSBzaW5nbGUgZW50cnksIHRocm93aW5nIG9uIGZhaWx1cmUuXG4gICAqL1xuICBydW4odGhpczogdm9pZCwgZW50cnk6IE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5KTogUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG59XG5cbi8qKlxuICogQ29sbGFwc2VzIHJlc29sdmVkIHNwZWNpZmllcnMgaW50byBvbmUgZW50cnkgcGVyICoqZGlzdGluY3QgcmVzb2x2ZWQgdmVyc2lvbioqLlxuICpcbiAqIERlLWR1cGxpY2F0aW9uIGlzIGtleWVkIG9uIHRoZSByZXNvbHZlZCB2ZXJzaW9uLCBub3QgdGhlIHNwZWNpZmllciBzdHJpbmcsIHNvXG4gKiBzcGVjaWZpZXJzIHRoYXQgbmFtZSB0aGUgc2FtZSBidWlsZCBjb2xsYXBzZSBob3dldmVyIHRoZXkgd2VyZSB3cml0dGVuLlxuICogRmlyc3Qtc2VlbiBvcmRlciBpcyBwcmVzZXJ2ZWQsIGFuZCBldmVyeSBzcGVjaWZpZXIgdGhhdCBsYW5kZWQgb24gYSB2ZXJzaW9uIGlzXG4gKiByZWNvcmRlZCBvbiBpdHMgZW50cnkuXG4gKlxuICogQHBhcmFtIHJlc29sdmVkU3BlY3MgLSBUaGUgcmVzb2x2ZWQgc3BlY2lmaWVycywgaW4gcmVxdWVzdGVkIG9yZGVyLlxuICogQHJldHVybnMgT25lIGVudHJ5IHBlciBkaXN0aW5jdCB2ZXJzaW9uLCBpbiBmaXJzdC1zZWVuIG9yZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRWZXJzaW9uTWF0cml4KHJlc29sdmVkU3BlY3M6IHJlYWRvbmx5IFJlc29sdmVkVmVyc2lvblNwZWNbXSk6IE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5W10ge1xuICBjb25zdCBzcGVjc0J5VmVyc2lvbiA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmdbXT4oKTtcblxuICBmb3IgKGNvbnN0IHsgc3BlYywgdmVyc2lvbiB9IG9mIHJlc29sdmVkU3BlY3MpIHtcbiAgICBjb25zdCBzcGVjcyA9IHNwZWNzQnlWZXJzaW9uLmdldCh2ZXJzaW9uKTtcbiAgICBpZiAoIXNwZWNzKSB7XG4gICAgICBzcGVjc0J5VmVyc2lvbi5zZXQodmVyc2lvbiwgW3NwZWNdKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoIXNwZWNzLmluY2x1ZGVzKHNwZWMpKSB7XG4gICAgICBzcGVjcy5wdXNoKHNwZWMpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBbLi4uc3BlY3NCeVZlcnNpb25dLm1hcCgoW3ZlcnNpb24sIHNwZWNzXSkgPT4gKHsgc3BlY3MsIHZlcnNpb24gfSkpO1xufVxuXG4vKipcbiAqIEZvcm1hdHMgYW4gZW50cnkgZm9yIGxvZ3MgYW5kIGVycm9yIG1lc3NhZ2VzLlxuICpcbiAqIFNwZWNpZmllcnMgdGhhdCBtZXJlbHkgcmVwZWF0IHRoZSB2ZXJzaW9uIGFkZCBub3RoaW5nLCBzbyBhbiBleHBsaWNpdC1vbmx5XG4gKiBlbnRyeSBmb3JtYXRzIGFzIHRoZSBiYXJlIHZlcnNpb24gcmF0aGVyIHRoYW4gYDEuMTMuNCAoMS4xMy40KWAuXG4gKlxuICogQHBhcmFtIGVudHJ5IC0gVGhlIGVudHJ5IHRvIGZvcm1hdC5cbiAqIEByZXR1cm5zIEEgc3RyaW5nIGxpa2UgYDEuMTMuNCAocHVibGljLWxhdGVzdCwgY2F0YWx5c3QtbGF0ZXN0KWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRWZXJzaW9uTWF0cml4RW50cnkoZW50cnk6IE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5KTogc3RyaW5nIHtcbiAgY29uc3QgeyBzcGVjcywgdmVyc2lvbiB9ID0gZW50cnk7XG4gIGNvbnN0IGFsaWFzU3BlY3MgPSBzcGVjcy5maWx0ZXIoKHNwZWMpID0+IHNwZWMgIT09IHZlcnNpb24pO1xuICBpZiAoYWxpYXNTcGVjcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdmVyc2lvbjtcbiAgfVxuICByZXR1cm4gYCR7dmVyc2lvbn0gKCR7YWxpYXNTcGVjcy5qb2luKCcsICcpfSlgO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgbGluZXMgYW5ub3VuY2luZyB3aGF0IHRoZSBtYXRyaXggcmVzb2x2ZWQgdG8gYW5kIGhvdyBtYW55IHJ1bnMgaXRcbiAqIHdpbGwgdGFrZS5cbiAqXG4gKiBUaGUgY29sbGFwc2UgbXVzdCBiZSAqKnN0YXRlZCoqLCBuZXZlciBpbmZlcnJlZDogYSByZWFkZXIgd2hvIHNlZXMgb25lIHJ1blxuICogd2hlcmUgdGhleSBleHBlY3RlZCB0d28gaGFzIHRvIGJlIHRvbGQgdGhlIHNlY29uZCBlbmQgd2FzIGFscmVhZHkgY292ZXJlZCxcbiAqIG5vdCBsZWZ0IHdvbmRlcmluZyB3aGV0aGVyIGl0IHdhcyBza2lwcGVkIGJ5IGFjY2lkZW50LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgbWF0cml4IGFuZCB0aGUgc3BlY2lmaWVycyBpdCB3YXMgYnVpbHQgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBsaW5lcyB0byBsb2csIGluIG9yZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VmVyc2lvbk1hdHJpeFBsYW4ocGFyYW1zOiBGb3JtYXRWZXJzaW9uTWF0cml4UGxhblBhcmFtcyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgeyBlbnRyaWVzLCByZXNvbHZlZFNwZWNzIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgbGluZXMgPSByZXNvbHZlZFNwZWNzXG4gICAgLmZpbHRlcigoeyBzcGVjLCB2ZXJzaW9uIH0pID0+IHNwZWMgIT09IHZlcnNpb24pXG4gICAgLm1hcCgoeyBzcGVjLCB2ZXJzaW9uIH0pID0+IGAke3NwZWN9IC0+ICR7dmVyc2lvbn1gKTtcblxuICBjb25zdCBzcGVjaWZpZXJDb3VudCA9IHJlc29sdmVkU3BlY3MubGVuZ3RoO1xuICBjb25zdCB2ZXJzaW9uQ291bnQgPSBlbnRyaWVzLmxlbmd0aDtcbiAgY29uc3QgZm9ybWF0dGVkRW50cmllcyA9IGVudHJpZXMubWFwKChlbnRyeSkgPT4gZm9ybWF0VmVyc2lvbk1hdHJpeEVudHJ5KGVudHJ5KSkuam9pbignLCAnKTtcblxuICBsaW5lcy5wdXNoKFxuICAgIGAke1N0cmluZyhzcGVjaWZpZXJDb3VudCl9IHJlcXVlc3RlZCAke3BsdXJhbGl6ZShzcGVjaWZpZXJDb3VudCwgJ3NwZWNpZmllcicpfSBgXG4gICAgICArIGAke3Jlc29sdmVWZXJiKHNwZWNpZmllckNvdW50KX0gdG8gJHtTdHJpbmcodmVyc2lvbkNvdW50KX0gZGlzdGluY3QgJHtwbHVyYWxpemUodmVyc2lvbkNvdW50LCAndmVyc2lvbicpfTogYFxuICAgICAgKyBgJHtmb3JtYXR0ZWRFbnRyaWVzfS4gUnVubmluZyB0aGUgc3VpdGVzICR7Zm9ybWF0UnVuQ291bnQodmVyc2lvbkNvdW50KX0uYFxuICApO1xuXG4gIHJldHVybiBsaW5lcztcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIHByb2dyZXNzIGxpbmUgYW5ub3VuY2luZyBhIHNpbmdsZSBlbnRyeSdzIHJ1bi5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGVudHJ5IGFuZCBpdHMgcG9zaXRpb24gaW4gdGhlIG1hdHJpeC5cbiAqIEByZXR1cm5zIEEgc3RyaW5nIGxpa2UgYFJ1biAxIG9mIDI6IDEuMTIuNyAocHVibGljLWxhdGVzdClgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VmVyc2lvbk1hdHJpeFJ1bkhlYWRlcihwYXJhbXM6IEZvcm1hdFZlcnNpb25NYXRyaXhSdW5IZWFkZXJQYXJhbXMpOiBzdHJpbmcge1xuICBjb25zdCB7IGVudHJ5LCBpbmRleCwgdG90YWwgfSA9IHBhcmFtcztcbiAgcmV0dXJuIGBSdW4gJHtTdHJpbmcoaW5kZXggKyAxKX0gb2YgJHtTdHJpbmcodG90YWwpfTogJHtmb3JtYXRWZXJzaW9uTWF0cml4RW50cnkoZW50cnkpfWA7XG59XG5cbi8qKlxuICogUmVwb3J0cyB3aGV0aGVyIGFueSBzcGVjaWZpZXIgaXMgYSBjaGFubmVsIGFsaWFzLCBpLmUuIHdoZXRoZXIgdGhlIHJlbGVhc2VzXG4gKiBtYW5pZmVzdCBoYXMgdG8gYmUgZmV0Y2hlZCBhdCBhbGwuXG4gKlxuICogQHBhcmFtIHNwZWNzIC0gVGhlIHJlcXVlc3RlZCBzcGVjaWZpZXJzLlxuICogQHJldHVybnMgYHRydWVgIHdoZW4gYXQgbGVhc3Qgb25lIHNwZWNpZmllciByZXNvbHZlcyBhZ2FpbnN0IHRoZSBtYW5pZmVzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc0NoYW5uZWxTcGVjKHNwZWNzOiByZWFkb25seSBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICByZXR1cm4gc3BlY3Muc29tZSgoc3BlYykgPT4gc3BlYyA9PT0gUFVCTElDX0xBVEVTVCB8fCBzcGVjID09PSBDQVRBTFlTVF9MQVRFU1QpO1xufVxuXG4vKipcbiAqIFNwbGl0cyBhIGNvbW1hLXNlcGFyYXRlZCBzcGVjaWZpZXIgbGlzdCwgc28gYSBjb25zdW1lciBjYW4gaGFuZCBhbiBlbnYgdmFyXG4gKiAoYE9CU0lESUFOX1ZFUlNJT049MS4xMi43LGNhdGFseXN0LWxhdGVzdGApIHN0cmFpZ2h0IHRocm91Z2guXG4gKlxuICogQHBhcmFtIHJhdyAtIFRoZSByYXcgY29tbWEtc2VwYXJhdGVkIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSB0cmltbWVkLCBub24tZW1wdHkgc3BlY2lmaWVycywgaW4gb3JkZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVZlcnNpb25TcGVjTGlzdChyYXc6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIHJhdy5zcGxpdCgnLCcpLm1hcCgoc3BlYykgPT4gc3BlYy50cmltKCkpLmZpbHRlcigoc3BlYykgPT4gc3BlYyAhPT0gJycpO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgdGhlIHJlcXVlc3RlZCB2ZXJzaW9uIHNwZWNpZmllcnMsIGZhbGxpbmcgYmFjayB0byB0aGUgZGVmYXVsdFxuICogYm90aC1lbmRzIGxpc3Qgd2hlbiBub25lIHdlcmUgZ2l2ZW4uXG4gKlxuICogQW4gZW1wdHkgc3RyaW5nIGlzIHRyZWF0ZWQgYXMgYWJzZW50LCBzbyBhIGNvbnN1bWVyIGNhbiBwYXNzIGFuIHVuc2V0XG4gKiBgcHJvY2Vzcy5lbnZbJ09CU0lESUFOX1ZFUlNJT04nXWAgd2l0aG91dCBndWFyZGluZyBpdC5cbiAqXG4gKiBAcGFyYW0gdmVyc2lvbnMgLSBBbiBhcnJheSBvZiBzcGVjaWZpZXJzLCBhIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcsIG9yIGB1bmRlZmluZWRgLlxuICogQHJldHVybnMgVGhlIHNwZWNpZmllcnMgdG8gcmVzb2x2ZSwgYW5kIHdoZXRoZXIgdGhleSBjYW1lIGZyb20gdGhlIGRlZmF1bHQgbGlzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVSZXF1ZXN0ZWRTcGVjcyh2ZXJzaW9uczogcmVhZG9ubHkgc3RyaW5nW10gfCBzdHJpbmcgfCB1bmRlZmluZWQpOiBSZXNvbHZlUmVxdWVzdGVkU3BlY3NSZXN1bHQge1xuICBjb25zdCBzcGVjcyA9IHR5cGVvZiB2ZXJzaW9ucyA9PT0gJ3N0cmluZycgPyBwYXJzZVZlcnNpb25TcGVjTGlzdCh2ZXJzaW9ucykgOiBbLi4udmVyc2lvbnMgPz8gW11dO1xuICBpZiAoc3BlY3MubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHsgaXNEZWZhdWx0OiB0cnVlLCBzcGVjczogWy4uLkRFRkFVTFRfT0JTSURJQU5fVkVSU0lPTl9TUEVDU10gfTtcbiAgfVxuICByZXR1cm4geyBpc0RlZmF1bHQ6IGZhbHNlLCBzcGVjcyB9O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIGVhY2ggcmVxdWVzdGVkIHNwZWNpZmllciB0byBhIGNvbmNyZXRlIHZlcnNpb24gYWdhaW5zdCBhXG4gKiBzaW5nbGUgbWFuaWZlc3QuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBzcGVjaWZpZXJzLCB0aGUgbWFuaWZlc3QsIGFuZCB0aGUgdG9sZXJhbmNlIG1vZGUuXG4gKiBAcmV0dXJucyBUaGUgcmVzb2x2ZWQgc3BlY2lmaWVycyBhbmQgYW55IHRoYXQgd2VyZSBkcm9wcGVkLlxuICogQHRocm93cyBFcnJvciBpZiBhIHNwZWNpZmllciBjYW5ub3QgYmUgcmVzb2x2ZWQgYW5kIHRvbGVyYW5jZSBpcyBvZmYsIG9yIGlmXG4gKiAgIHRvbGVyYW5jZSBpcyBvbiBidXQgbm90aGluZyByZXNvbHZlZCBhdCBhbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlVmVyc2lvblNwZWNzKHBhcmFtczogUmVzb2x2ZVZlcnNpb25TcGVjc1BhcmFtcyk6IFJlc29sdmVWZXJzaW9uU3BlY3NSZXN1bHQge1xuICBjb25zdCB7IG1hbmlmZXN0LCBzaG91bGRUb2xlcmF0ZVVucmVzb2x2YWJsZVNwZWNzLCBzcGVjcyB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IGRyb3BwZWRTcGVjczogRHJvcHBlZFZlcnNpb25TcGVjW10gPSBbXTtcbiAgY29uc3QgcmVzb2x2ZWRTcGVjczogUmVzb2x2ZWRWZXJzaW9uU3BlY1tdID0gW107XG5cbiAgZm9yIChjb25zdCBzcGVjIG9mIHNwZWNzKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJlc29sdmVkU3BlY3MucHVzaCh7IHNwZWMsIHZlcnNpb246IHJlc29sdmVTcGVjKHNwZWMsIG1hbmlmZXN0KSB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKCFzaG91bGRUb2xlcmF0ZVVucmVzb2x2YWJsZVNwZWNzKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgZHJvcHBlZFNwZWNzLnB1c2goeyByZWFzb246IHRvUmVhc29uKGVycm9yKSwgc3BlYyB9KTtcbiAgICB9XG4gIH1cblxuICBpZiAocmVzb2x2ZWRTcGVjcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgTm8gT2JzaWRpYW4gdmVyc2lvbiBjb3VsZCBiZSByZXNvbHZlZCBmcm9tOiAke3NwZWNzLmpvaW4oJywgJyl9LiAke2Ryb3BwZWRTcGVjcy5tYXAoKHsgcmVhc29uLCBzcGVjIH0pID0+IGAke3NwZWN9OiAke3JlYXNvbn1gKS5qb2luKCc7ICcpfWBcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHsgZHJvcHBlZFNwZWNzLCByZXNvbHZlZFNwZWNzIH07XG59XG5cbi8qKlxuICogUnVucyB0aGUgc3VpdGVzIG9uY2UgcGVyIG1hdHJpeCBlbnRyeSwgKiphbHdheXMgcnVubmluZyBldmVyeSBlbnRyeSoqIGJlZm9yZVxuICogcmVwb3J0aW5nLlxuICpcbiAqIEEgZmFpbGluZyBlbmQgbXVzdCBub3QgaGlkZSB0aGUgc3RhdGUgb2YgdGhlIG90aGVyOiBzdG9wcGluZyBhdCB0aGUgZmlyc3RcbiAqIGZhaWx1cmUgd291bGQgbGVhdmUgXCJjYXRhbHlzdCBicm9rZVwiIGFuZCBcImJvdGggZW5kcyBicm9rZVwiIGluZGlzdGluZ3Vpc2hhYmxlXG4gKiB3aXRob3V0IGEgc2Vjb25kIHJ1bi4gRXZlcnkgZW50cnkgdGhlcmVmb3JlIHJ1bnMsIGFuZCB0aGUgc3VtbWFyeSBuYW1lcyB3aGljaFxuICogY29uY3JldGUgdmVyc2lvbnMgZmFpbGVkIGFuZCB3aGljaCBwYXNzZWQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBtYXRyaXgsIHRoZSBwZXItZW50cnkgcnVubmVyLCBhbmQgdGhlIHByb2dyZXNzIHJlcG9ydGVyLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIGV2ZXJ5IGVudHJ5IGhhcyBydW4gc3VjY2Vzc2Z1bGx5LlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgbWF0cml4IGlzIGVtcHR5LCBvciBhbiB7QGxpbmsgQWdncmVnYXRlRXJyb3J9IG5hbWluZyBldmVyeVxuICogICB2ZXJzaW9uIHRoYXQgZmFpbGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuVmVyc2lvbk1hdHJpeEVudHJpZXMocGFyYW1zOiBSdW5WZXJzaW9uTWF0cml4RW50cmllc1BhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGVudHJpZXMsIG9uRW50cnlTdGFydCwgcnVuIH0gPSBwYXJhbXM7XG5cbiAgaWYgKGVudHJpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdSZWZ1c2luZyB0byBydW4gYW4gZW1wdHkgT2JzaWRpYW4gdmVyc2lvbiBtYXRyaXg6IG5vIHZlcnNpb24gd291bGQgYmUgdmVyaWZpZWQuJyk7XG4gIH1cblxuICBjb25zdCBlcnJvcnM6IHVua25vd25bXSA9IFtdO1xuICBjb25zdCBmYWlsZWRFbnRyaWVzOiBPYnNpZGlhblZlcnNpb25NYXRyaXhFbnRyeVtdID0gW107XG4gIGNvbnN0IHBhc3NlZEVudHJpZXM6IE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5W10gPSBbXTtcblxuICBmb3IgKGNvbnN0IFtpbmRleCwgZW50cnldIG9mIGVudHJpZXMuZW50cmllcygpKSB7XG4gICAgb25FbnRyeVN0YXJ0KHsgZW50cnksIGluZGV4LCB0b3RhbDogZW50cmllcy5sZW5ndGggfSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHJ1bihlbnRyeSk7XG4gICAgICBwYXNzZWRFbnRyaWVzLnB1c2goZW50cnkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBlcnJvcnMucHVzaChlcnJvcik7XG4gICAgICBmYWlsZWRFbnRyaWVzLnB1c2goZW50cnkpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChmYWlsZWRFbnRyaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBhc3NlZENsYXVzZSA9IHBhc3NlZEVudHJpZXMubGVuZ3RoID09PSAwXG4gICAgPyAnJ1xuICAgIDogYCBQYXNzZWQ6ICR7cGFzc2VkRW50cmllcy5tYXAoKGVudHJ5KSA9PiBmb3JtYXRWZXJzaW9uTWF0cml4RW50cnkoZW50cnkpKS5qb2luKCcsICcpfS5gO1xuXG4gIHRocm93IG5ldyBBZ2dyZWdhdGVFcnJvcihcbiAgICBlcnJvcnMsXG4gICAgYE9ic2lkaWFuIHZlcnNpb24gbWF0cml4IGZhaWxlZCBvbiAke1N0cmluZyhmYWlsZWRFbnRyaWVzLmxlbmd0aCl9IG9mICR7U3RyaW5nKGVudHJpZXMubGVuZ3RoKX0gYFxuICAgICAgKyBgJHtwbHVyYWxpemUoZW50cmllcy5sZW5ndGgsICd2ZXJzaW9uJyl9OiBgXG4gICAgICArIGAke2ZhaWxlZEVudHJpZXMubWFwKChlbnRyeSkgPT4gZm9ybWF0VmVyc2lvbk1hdHJpeEVudHJ5KGVudHJ5KSkuam9pbignLCAnKX0uJHtwYXNzZWRDbGF1c2V9YFxuICApO1xufVxuXG4vKipcbiAqIEZvcm1hdHMgYSBydW4gY291bnQgYXMgcHJvc2UsIHNvIHRoZSBzaW5nbGUtcnVuIGNhc2UgcmVhZHMgYXMgYSBkZWxpYmVyYXRlXG4gKiBkZWNpc2lvbiByYXRoZXIgdGhhbiBhIHN1c3BpY2lvdXMgYDFgLlxuICpcbiAqIEBwYXJhbSBjb3VudCAtIFRoZSBudW1iZXIgb2YgcnVucy5cbiAqIEByZXR1cm5zIGBvbmNlYCwgYHR3aWNlYCwgb3IgYE4gdGltZXNgLlxuICovXG5mdW5jdGlvbiBmb3JtYXRSdW5Db3VudChjb3VudDogbnVtYmVyKTogc3RyaW5nIHtcbiAgY29uc3QgVFdJQ0UgPSAyO1xuICBpZiAoY291bnQgPT09IDEpIHtcbiAgICByZXR1cm4gJ29uY2UnO1xuICB9XG4gIGlmIChjb3VudCA9PT0gVFdJQ0UpIHtcbiAgICByZXR1cm4gJ3R3aWNlJztcbiAgfVxuICByZXR1cm4gYCR7U3RyaW5nKGNvdW50KX0gdGltZXNgO1xufVxuXG4vKipcbiAqIFBsdXJhbGl6ZXMgYSBub3VuIGJ5IGNvdW50LlxuICpcbiAqIEBwYXJhbSBjb3VudCAtIFRoZSBjb3VudC5cbiAqIEBwYXJhbSBub3VuIC0gVGhlIHNpbmd1bGFyIG5vdW4uXG4gKiBAcmV0dXJucyBUaGUgbm91biwgc3VmZml4ZWQgd2l0aCBgc2AgdW5sZXNzIHRoZSBjb3VudCBpcyBleGFjdGx5IG9uZS5cbiAqL1xuZnVuY3Rpb24gcGx1cmFsaXplKGNvdW50OiBudW1iZXIsIG5vdW46IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBjb3VudCA9PT0gMSA/IG5vdW4gOiBgJHtub3VufXNgO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIGEgc2luZ2xlIHNwZWNpZmllciBhZ2FpbnN0IGEgbWFuaWZlc3QuXG4gKlxuICogQHBhcmFtIHNwZWMgLSBUaGUgc3BlY2lmaWVyLlxuICogQHBhcmFtIG1hbmlmZXN0IC0gVGhlIG1hbmlmZXN0LCBvciBgdW5kZWZpbmVkYCB3aGVuIG5vbmUgd2FzIGZldGNoZWQuXG4gKiBAcmV0dXJucyBUaGUgY29uY3JldGUgYHgueS56YCB2ZXJzaW9uLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgc3BlY2lmaWVyIGlzIGludmFsaWQsIG9yIG5hbWVzIGEgY2hhbm5lbCB3aXRoIG5vIG1hbmlmZXN0XG4gKiAgIGVudHJ5LlxuICovXG5mdW5jdGlvbiByZXNvbHZlU3BlYyhzcGVjOiBzdHJpbmcsIG1hbmlmZXN0OiBEZXNrdG9wUmVsZWFzZXNNYW5pZmVzdCB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gIGNvbnN0IHBhcnNlZCA9IHBhcnNlVmVyc2lvblNwZWMoc3BlYyk7XG4gIGlmIChwYXJzZWQua2luZCA9PT0gJ2V4cGxpY2l0Jykge1xuICAgIHJldHVybiBwYXJzZWQudmVyc2lvbjtcbiAgfVxuICBpZiAoIW1hbmlmZXN0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVzb2x2ZSBcIiR7c3BlY31cIiB3aXRob3V0IHRoZSBkZXNrdG9wIHJlbGVhc2VzIG1hbmlmZXN0LmApO1xuICB9XG4gIHJldHVybiByZXNvbHZlVmVyc2lvbkZyb21NYW5pZmVzdChtYW5pZmVzdCwgcGFyc2VkLmNoYW5uZWwpO1xufVxuXG4vKipcbiAqIENob29zZXMgdGhlIHN1YmplY3QtdmVyYiBhZ3JlZW1lbnQgZm9yIHRoZSBzcGVjaWZpZXIgY291bnQuXG4gKlxuICogQHBhcmFtIGNvdW50IC0gVGhlIG51bWJlciBvZiBzcGVjaWZpZXJzLlxuICogQHJldHVybnMgYHJlc29sdmVzYCBvciBgcmVzb2x2ZWAuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVWZXJiKGNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gY291bnQgPT09IDEgPyAncmVzb2x2ZXMnIDogJ3Jlc29sdmUnO1xufVxuXG4vKipcbiAqIEV4dHJhY3RzIGEgaHVtYW4tcmVhZGFibGUgcmVhc29uIGZyb20gYSB0aHJvd24gdmFsdWUuXG4gKlxuICogQHBhcmFtIGVycm9yIC0gVGhlIHRocm93biB2YWx1ZS5cbiAqIEByZXR1cm5zIFRoZSByZWFzb24gdGV4dC5cbiAqL1xuZnVuY3Rpb24gdG9SZWFzb24oZXJyb3I6IHVua25vd24pOiBzdHJpbmcge1xuICAvKiB2OCBpZ25vcmUgbmV4dCAtLSBEZWZlbnNpdmU6IGV2ZXJ5IHRocm93IHNpdGUgcmVhY2hhYmxlIGZyb20gaGVyZSAocGFyc2VWZXJzaW9uU3BlYywgcmVzb2x2ZVZlcnNpb25Gcm9tTWFuaWZlc3QsIHRoZSBtaXNzaW5nLW1hbmlmZXN0IGd1YXJkKSB0aHJvd3MgYW4gRXJyb3IuICovXG4gIHJldHVybiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUF5QkE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQU9BLE1BQU0saUNBQW9ELENBQUMsZUFBZSxlQUFlO0FBMEt6RixTQUFTLG1CQUFtQixlQUE2RTtBQUM5RyxRQUFNLGlCQUFpQixvQkFBSSxJQUFzQjtBQUVqRCxhQUFXLEVBQUUsTUFBTSxRQUFRLEtBQUssZUFBZTtBQUM3QyxVQUFNLFFBQVEsZUFBZSxJQUFJLE9BQU87QUFDeEMsUUFBSSxDQUFDLE9BQU87QUFDVixxQkFBZSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUM7QUFDbEM7QUFBQSxJQUNGO0FBQ0EsUUFBSSxDQUFDLE1BQU0sU0FBUyxJQUFJ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
|
|
@@ -15,7 +15,7 @@ import { TemporaryVault } from '../temporary-vault.mjs';
|
|
|
15
15
|
export interface CreateSetupOptions {
|
|
16
16
|
/**
|
|
17
17
|
* Community-plugin ids to enable in the vault in addition to the plugin-under-test,
|
|
18
|
-
* after it is enabled (see {@link
|
|
18
|
+
* after it is enabled (see {@link CoreSetupOptions.enableCommunityPlugins}). Seed each
|
|
19
19
|
* plugin's built files via {@link CreateSetupOptions.populate} (e.g. with `buildDemoVaultPopulate`)
|
|
20
20
|
* so the enable finds them on disk.
|
|
21
21
|
*/
|
|
@@ -26,12 +26,12 @@ export interface CreateSetupOptions {
|
|
|
26
26
|
* registered, empty vault to `evalInObsidian` against — the owned instance is
|
|
27
27
|
* still launched and its endpoint published to workers, so re-exporting
|
|
28
28
|
* `createSetup({ installPlugin: false })` reuses the same attach wiring with no
|
|
29
|
-
* plugin copy/enable. See {@link
|
|
29
|
+
* plugin copy/enable. See {@link CoreSetupOptions.installPlugin}.
|
|
30
30
|
*/
|
|
31
31
|
readonly installPlugin?: boolean;
|
|
32
32
|
/**
|
|
33
33
|
* Returns files/folders to write into the vault before Obsidian opens it (see
|
|
34
|
-
* {@link
|
|
34
|
+
* {@link CoreSetupOptions.populate}). A thunk so large fixtures are built lazily,
|
|
35
35
|
* once, in the setup process.
|
|
36
36
|
*
|
|
37
37
|
* May return a promise, so the map can be built by something that needs the network — notably
|
|
@@ -62,4 +62,4 @@ export {
|
|
|
62
62
|
setup,
|
|
63
63
|
teardown
|
|
64
64
|
};
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3ZpdGVzdC9nbG9iYWwtc2V0dXAudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwIGFuZCB0ZWFyZG93biBhZGFwdGVyLlxuICpcbiAqIERlbGVnYXRlcyB0byB0aGUgZnJhbWV3b3JrLWFnbm9zdGljIGNvcmUgYW5kIGJyaWRnZXMgY29udGV4dFxuICogdG8gdGVzdCB3b3JrZXJzIHZpYSBWaXRlc3QncyBgcHJvamVjdC5wcm92aWRlYCAvIGBpbmplY3RgLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIHNldHVwIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7IFRlc3RQcm9qZWN0IH0gZnJvbSAndml0ZXN0L25vZGUnO1xuXG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICd2aXRlc3QnO1xuXG5pbXBvcnQgdHlwZSB7IENvcmVTZXR1cFJlc3VsdCB9IGZyb20gJy4uL2dsb2JhbC1zZXR1cC1jb3JlLm1qcyc7XG5pbXBvcnQgdHlwZSB7IFBvcHVsYXRlRmlsZXNQYXJhbXMgfSBmcm9tICcuLi90ZW1wb3JhcnktdmF1bHQubWpzJztcbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIH0gZnJvbSAnLi4vdHJhbnNwb3J0LW9wdGlvbnMubWpzJztcblxuaW1wb3J0IHtcbiAgc2V0U2V0dXBFcnJvclJlc29sdmVyLFxuICBzZXRUcmFuc3BvcnRPcHRpb25zUmVzb2x2ZXIsXG4gIHNldFZhdWx0UGF0aFJlc29sdmVyXG59IGZyb20gJy4uL2NvbnRleHQtcHJvdmlkZXIubWpzJztcbmltcG9ydCB7IGVycm9yVG9TdHJpbmcgfSBmcm9tICcuLi9lcnJvci10by1zdHJpbmcubWpzJztcbmltcG9ydCB7XG4gIGNvcmVTZXR1cCxcbiAgY29yZVRlYXJkb3duXG59IGZyb20gJy4uL2dsb2JhbC1zZXR1cC1jb3JlLm1qcyc7XG5pbXBvcnQgeyBJbnRlZ3JhdGlvblNldHVwRmFpbGVkRXJyb3IgfSBmcm9tICcuLi9pbnRlZ3JhdGlvbi1zZXR1cC1mYWlsZWQtZXJyb3IubWpzJztcbmltcG9ydCB7IGxvZyB9IGZyb20gJy4uL2xvZy5tanMnO1xuaW1wb3J0IHsgVGVtcG9yYXJ5VmF1bHQgfSBmcm9tICcuLi90ZW1wb3JhcnktdmF1bHQubWpzJztcblxuc2V0U2V0dXBFcnJvclJlc29sdmVyKCgpID0+IGluamVjdCgnc2V0dXBFcnJvcicpKTtcbnNldFRyYW5zcG9ydE9wdGlvbnNSZXNvbHZlcigoKSA9PiBpbmplY3QoJ29ic2lkaWFuVHJhbnNwb3J0JykpO1xuc2V0VmF1bHRQYXRoUmVzb2x2ZXIoKCkgPT4gaW5qZWN0KCd0ZW1wb3JhcnlWYXVsdFBhdGgnKSk7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGNyZWF0ZVNldHVwfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVTZXR1cE9wdGlvbnMge1xuICAvKipcbiAgICogQ29tbXVuaXR5LXBsdWdpbiBpZHMgdG8gZW5hYmxlIGluIHRoZSB2YXVsdCBpbiBhZGRpdGlvbiB0byB0aGUgcGx1Z2luLXVuZGVyLXRlc3QsXG4gICAqIGFmdGVyIGl0IGlzIGVuYWJsZWQgKHNlZSB7QGxpbmsgQ29yZVNldHVwUGFyYW1zLmVuYWJsZUNvbW11bml0eVBsdWdpbnN9KS4gU2VlZCBlYWNoXG4gICAqIHBsdWdpbidzIGJ1aWx0IGZpbGVzIHZpYSB7QGxpbmsgQ3JlYXRlU2V0dXBPcHRpb25zLnBvcHVsYXRlfSAoZS5nLiB3aXRoIGBidWlsZERlbW9WYXVsdFBvcHVsYXRlYClcbiAgICogc28gdGhlIGVuYWJsZSBmaW5kcyB0aGVtIG9uIGRpc2suXG4gICAqL1xuICByZWFkb25seSBlbmFibGVDb21tdW5pdHlQbHVnaW5zPzogcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5zdGFsbCBhbmQgZW5hYmxlIHRoZSBidWlsdCBwbHVnaW4gaW4gdGhlIHRlbXAgdmF1bHQuIERlZmF1bHRzXG4gICAqIHRvIGB0cnVlYC4gU2V0IHRvIGBmYWxzZWAgZm9yIGEgKipub24tcGx1Z2luKiogY29uc3VtZXIgdGhhdCBvbmx5IG5lZWRzIGFcbiAgICogcmVnaXN0ZXJlZCwgZW1wdHkgdmF1bHQgdG8gYGV2YWxJbk9ic2lkaWFuYCBhZ2FpbnN0IFx1MjAxNCB0aGUgb3duZWQgaW5zdGFuY2UgaXNcbiAgICogc3RpbGwgbGF1bmNoZWQgYW5kIGl0cyBlbmRwb2ludCBwdWJsaXNoZWQgdG8gd29ya2Vycywgc28gcmUtZXhwb3J0aW5nXG4gICAqIGBjcmVhdGVTZXR1cCh7IGluc3RhbGxQbHVnaW46IGZhbHNlIH0pYCByZXVzZXMgdGhlIHNhbWUgYXR0YWNoIHdpcmluZyB3aXRoIG5vXG4gICAqIHBsdWdpbiBjb3B5L2VuYWJsZS4gU2VlIHtAbGluayBDb3JlU2V0dXBQYXJhbXMuaW5zdGFsbFBsdWdpbn0uXG4gICAqL1xuICByZWFkb25seSBpbnN0YWxsUGx1Z2luPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUmV0dXJucyBmaWxlcy9mb2xkZXJzIHRvIHdyaXRlIGludG8gdGhlIHZhdWx0IGJlZm9yZSBPYnNpZGlhbiBvcGVucyBpdCAoc2VlXG4gICAqIHtAbGluayBDb3JlU2V0dXBQYXJhbXMucG9wdWxhdGV9KS4gQSB0aHVuayBzbyBsYXJnZSBmaXh0dXJlcyBhcmUgYnVpbHQgbGF6aWx5LFxuICAgKiBvbmNlLCBpbiB0aGUgc2V0dXAgcHJvY2Vzcy5cbiAgICpcbiAgICogTWF5IHJldHVybiBhIHByb21pc2UsIHNvIHRoZSBtYXAgY2FuIGJlIGJ1aWx0IGJ5IHNvbWV0aGluZyB0aGF0IG5lZWRzIHRoZSBuZXR3b3JrIFx1MjAxNCBub3RhYmx5XG4gICAqIGBidWlsZERlbW9WYXVsdFBvcHVsYXRlQXN5bmNgLCB3aGljaCBpbnN0YWxscyBhIGRlbW8gdmF1bHQncyBtaXNzaW5nIGNvbW11bml0eSBwbHVnaW5zIGJlZm9yZVxuICAgKiByZWFkaW5nIHRoZW0uIEEgc3luY2hyb25vdXMgdGh1bmsgKGUuZy4gYGJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVgKSBpcyB1bmNoYW5nZWQuXG4gICAqL1xuICBwb3B1bGF0ZT8odGhpczogdm9pZCk6IFBvcHVsYXRlRmlsZXNQYXJhbXMgfCBQcm9taXNlPFBvcHVsYXRlRmlsZXNQYXJhbXM+O1xufVxuXG4vKipcbiAqIEEgVml0ZXN0IGBnbG9iYWxTZXR1cGAgbW9kdWxlJ3MgYHNldHVwYCAvIGB0ZWFyZG93bmAgcGFpci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWaXRlc3RHbG9iYWxTZXR1cCB7XG4gIHNldHVwKHRoaXM6IHZvaWQsIHByb2plY3Q6IFRlc3RQcm9qZWN0KTogUHJvbWlzZTx2b2lkPjtcbiAgdGVhcmRvd24odGhpczogdm9pZCk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIFZpdGVzdCBnbG9iYWwgc2V0dXAvdGVhcmRvd24gcGFpciwgb3B0aW9uYWxseSBwcmUtcG9wdWxhdGluZyB0aGUgdmF1bHRcbiAqIGJlZm9yZSBPYnNpZGlhbiBvcGVucyBpdCBcdTIwMTQgdXNlIHRoaXMgZm9yIGEgZGVkaWNhdGVkIGxhcmdlLXZhdWx0L3BlcmZvcm1hbmNlXG4gKiBwcm9qZWN0LiBUaGUgcGxhaW4ge0BsaW5rIHNldHVwfSAvIHtAbGluayB0ZWFyZG93bn0gZXhwb3J0cyBhcmUgdGhlIG5vLXBvcHVsYXRlXG4gKiBjYXNlIChgY3JlYXRlU2V0dXAoKWApLiBQYXNzIGB7IGluc3RhbGxQbHVnaW46IGZhbHNlIH1gIGZvciBhIG5vbi1wbHVnaW4gY29uc3VtZXJcbiAqIHRoYXQgb25seSBuZWVkcyBhIHJlZ2lzdGVyZWQsIGVtcHR5IHZhdWx0IChzZWUge0BsaW5rIENyZWF0ZVNldHVwT3B0aW9ucy5pbnN0YWxsUGx1Z2lufSkuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBTZXR1cCBvcHRpb25zLlxuICogQHJldHVybnMgVGhlIGBzZXR1cGAgYW5kIGB0ZWFyZG93bmAgZnVuY3Rpb25zIHRvIHJlLWV4cG9ydCBmcm9tIGEgYGdsb2JhbFNldHVwYCBtb2R1bGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZXR1cChvcHRpb25zPzogQ3JlYXRlU2V0dXBPcHRpb25zKTogVml0ZXN0R2xvYmFsU2V0dXAge1xuICBsZXQgc2V0dXBSZXN1bHQ6IENvcmVTZXR1cFJlc3VsdCB8IHVuZGVmaW5lZDtcblxuICByZXR1cm4geyBzZXR1cCwgdGVhcmRvd24gfTtcblxuICBhc3luYyBmdW5jdGlvbiBzZXR1cChwcm9qZWN0OiBUZXN0UHJvamVjdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGVudmlyb25tZW50T3B0aW9ucyA9IHByb2plY3QuY29uZmlnLmVudmlyb25tZW50T3B0aW9ucyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCB0cmFuc3BvcnRPcHRpb25zID0gZW52aXJvbm1lbnRPcHRpb25zPy5bJ29ic2lkaWFuVHJhbnNwb3J0J10gYXMgT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IGxhYmVsID0gdHJhbnNwb3J0T3B0aW9ucz8udHlwZSA/PyAnb2JzaWRpYW4tY2RwJztcblxuICAgIHRyeSB7XG4gICAgICBzZXR1cFJlc3VsdCA9IGF3YWl0IGNvcmVTZXR1cCh7XG4gICAgICAgIGVuYWJsZUNvbW11bml0eVBsdWdpbnM6IG9wdGlvbnM/LmVuYWJsZUNvbW11bml0eVBsdWdpbnMsXG4gICAgICAgIGluc3RhbGxQbHVnaW46IG9wdGlvbnM/Lmluc3RhbGxQbHVnaW4sXG4gICAgICAgIHBvcHVsYXRlOiBhd2FpdCBvcHRpb25zPy5wb3B1bGF0ZT8uKCksXG4gICAgICAgIHRyYW5zcG9ydE9wdGlvbnNcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAvLyBDYXRjaCBzZXR1cCBlcnJvcnMgc28gdGhhdCBvdGhlciBwcm9qZWN0cycgdGVzdHMgY2FuIHN0aWxsIHJ1bi4gRXZlcnkgdGVzdCBpbiBUSElTIHByb2plY3RcbiAgICAgIC8vIFRoZW4gZmFpbHMgd2l0aCB0aGUgc3RvcmVkIGVycm9yOiBgZ2V0T3JDcmVhdGVUcmFuc3BvcnRgIHJlYWRzIGl0IHRocm91Z2ggdGhlIHNldHVwLWVycm9yXG4gICAgICAvLyBSZXNvbHZlciBhbmQgdGhyb3dzIGJlZm9yZSBpdCBjYW4gYnVpbGQgYSB0cmFuc3BvcnQuIFdpdGhvdXQgdGhhdCBhIHdvcmtlciBnZXRzIG5vIG9wdGlvbnNcbiAgICAgIC8vIEF0IGFsbCBhbmQgc2lsZW50bHkgcmVidWlsZHMgdGhlIG93bmVkIERFU0tUT1AgZGVmYXVsdCwgd2hhdGV2ZXIgcGxhdGZvcm0gdGhpcyBwcm9qZWN0IGFza2VkXG4gICAgICAvLyBGb3IgLS0gd2hpY2ggaXMgaG93IGFuIEFuZHJvaWQgcnVuIGNhbWUgdG8gcmVwb3J0IG5pbmUgYEZhaWxlZCB0byBwYXJzZSBVUkwgZnJvbSAvanNvbmBcbiAgICAgIC8vIEZhaWx1cmVzIHdoaWxlIHRoZSByZWFsIGNhdXNlIHNhdCBvbmNlLCBmYXIgYWJvdmUsIGluIHRoaXMgbG9nIChzZWUgQUdFTlRTLm1kIEw5KS5cbiAgICAgIGxvZyhgW2ludGVncmF0aW9uLXNldHVwOiR7bGFiZWx9XSBTZXR1cCBmYWlsZWQgKGV2ZXJ5IHRlc3QgaW4gdGhpcyBwcm9qZWN0IHdpbGwgZmFpbCB3aXRoIHRoaXMgZXJyb3IpOiAke2Vycm9yVG9TdHJpbmcoZXJyb3IpfWApO1xuICAgICAgcHJvamVjdC5wcm92aWRlKCdzZXR1cEVycm9yJywge1xuICAgICAgICBlcnJvck5hbWU6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5uYW1lIDogJ0Vycm9yJyxcbiAgICAgICAgbWVzc2FnZTogZXJyb3JUb1N0cmluZyhlcnJvciksXG4gICAgICAgIHRyYW5zcG9ydExhYmVsOiBsYWJlbFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcHJvamVjdC5wcm92aWRlKCdvYnNpZGlhblRyYW5zcG9ydCcsIHNldHVwUmVzdWx0LnRyYW5zcG9ydE9wdGlvbnMpO1xuICAgIHByb2plY3QucHJvdmlkZSgndGVtcG9yYXJ5VmF1bHRQYXRoJywgc2V0dXBSZXN1bHQudGVtcG9yYXJ5VmF1bHQucGF0aCk7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiB0ZWFyZG93bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBjb3JlVGVhcmRvd24oc2V0dXBSZXN1bHQpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgdGVtcG9yYXJ5IHZhdWx0IHByb3ZpZGVkIGJ5IHRoZSBnbG9iYWwgc2V0dXAuXG4gKlxuICogQHJldHVybnMgVGhlIHRlbXBvcmFyeSB2YXVsdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRlbXBvcmFyeVZhdWx0KCk6IFRlbXBvcmFyeVZhdWx0IHtcbiAgY29uc3QgdGVtcG9yYXJ5VmF1bHRQYXRoID0gaW5qZWN0KCd0ZW1wb3JhcnlWYXVsdFBhdGgnKTtcbiAgY29uc3Qgc2V0dXBFcnJvciA9IGluamVjdCgnc2V0dXBFcnJvcicpO1xuICBpZiAoc2V0dXBFcnJvcikge1xuICAgIHRocm93IG5ldyBJbnRlZ3JhdGlvblNldHVwRmFpbGVkRXJyb3Ioc2V0dXBFcnJvcik7XG4gIH1cbiAgcmV0dXJuIG5ldyBUZW1wb3JhcnlWYXVsdCh0ZW1wb3JhcnlWYXVsdFBhdGgpO1xufVxuXG5jb25zdCBkZWZhdWx0R2xvYmFsU2V0dXAgPSBjcmVhdGVTZXR1cCgpO1xuXG4vKipcbiAqIFZpdGVzdCBnbG9iYWwgc2V0dXAgZnVuY3Rpb24gKG5vIHByZS1wb3B1bGF0aW9uKS5cbiAqXG4gKiBDb3BpZXMgdGhlIGJ1aWx0IHBsdWdpbiBpbnRvIGEgdGVtcG9yYXJ5IHZhdWx0LCBlbmFibGVzIGl0IHZpYSBhIHJlbmRlcmVyIGV2YWxcbiAqIG92ZXIgdGhlIHRyYW5zcG9ydCwgYW5kIHByb3ZpZGVzIGB0ZW1wb3JhcnlWYXVsdFBhdGhgIHRvIHRlc3RzLlxuICpcbiAqIEBwYXJhbSBwcm9qZWN0IC0gVGhlIFZpdGVzdCBwcm9qZWN0LlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBzZXR1cCBjb21wbGV0ZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBzZXR1cCA9IGRlZmF1bHRHbG9iYWxTZXR1cC5zZXR1cDtcblxuLyoqXG4gKiBWaXRlc3QgZ2xvYmFsIHRlYXJkb3duIGZ1bmN0aW9uLlxuICpcbiAqIFJlbW92ZXMgdGhlIHRlbXBvcmFyeSB2YXVsdCBjcmVhdGVkIGR1cmluZyBzZXR1cC5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRlYXJkb3duIGNvbXBsZXRlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHRlYXJkb3duID0gZGVmYXVsdEdsb2JhbFNldHVwLnRlYXJkb3duO1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBYUEsU0FBUyxjQUFjO0FBTXZCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMscUJBQXFCO0FBQzlCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxtQ0FBbUM7QUFDNUMsU0FBUyxXQUFXO0FBQ3BCLFNBQVMsc0JBQXNCO0FBRS9CLHNCQUFzQixNQUFNLE9BQU8sWUFBWSxDQUFDO0FBQ2hELDRCQUE0QixNQUFNLE9BQU8sbUJBQW1CLENBQUM7QUFDN0QscUJBQXFCLE1BQU0sT0FBTyxvQkFBb0IsQ0FBQztBQXNEaEQsU0FBUyxZQUFZLFNBQWlEO0FBQzNFLE1BQUk7QUFFSixTQUFPLEVBQUUsT0FBQUEsUUFBTyxVQUFBQyxVQUFTO0FBRXpCLGlCQUFlRCxPQUFNLFNBQXFDO0FBQ3hELFVBQU0scUJBQXFCLFFBQVEsT0FBTztBQUMxQyxVQUFNLG1CQUFtQixxQkFBcUIsbUJBQW1CO0FBQ2pFLFVBQU0sUUFBUSxrQkFBa0IsUUFBUTtBQUV4QyxRQUFJO0FBQ0Ysb0JBQWMsTUFBTSxVQUFVO0FBQUEsUUFDNUIsd0JBQXdCLFNBQVM7QUFBQSxRQUNqQyxlQUFlLFNBQVM7QUFBQSxRQUN4QixVQUFVLE1BQU0sU0FBUyxXQUFXO0FBQUEsUUFDcEM7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNILFNBQVMsT0FBZ0I7QUFPdkIsVUFBSSxzQkFBc0IsS0FBSywwRUFBMEUsY0FBYyxLQUFLLENBQUMsRUFBRTtBQUMvSCxjQUFRLFFBQVEsY0FBYztBQUFBLFFBQzVCLFdBQVcsaUJBQWlCLFFBQVEsTUFBTSxPQUFPO0FBQUEsUUFDakQsU0FBUyxjQUFjLEtBQUs7QUFBQSxRQUM1QixnQkFBZ0I7QUFBQSxNQUNsQixDQUFDO0FBQ0Q7QUFBQSxJQUNGO0FBRUEsWUFBUSxRQUFRLHFCQUFxQixZQUFZLGdCQUFnQjtBQUNqRSxZQUFRLFFBQVEsc0JBQXNCLFlBQVksZUFBZSxJQUFJO0FBQUEsRUFDdkU7QUFFQSxpQkFBZUMsWUFBMEI7QUFDdkMsVUFBTSxhQUFhLFdBQVc7QUFBQSxFQUNoQztBQUNGO0FBT08sU0FBUyxvQkFBb0M7QUFDbEQsUUFBTSxxQkFBcUIsT0FBTyxvQkFBb0I7QUFDdEQsUUFBTSxhQUFhLE9BQU8sWUFBWTtBQUN0QyxNQUFJLFlBQVk7QUFDZCxVQUFNLElBQUksNEJBQTRCLFVBQVU7QUFBQSxFQUNsRDtBQUNBLFNBQU8sSUFBSSxlQUFlLGtCQUFrQjtBQUM5QztBQUVBLE1BQU0scUJBQXFCLFlBQVk7QUFXaEMsTUFBTSxRQUFRLG1CQUFtQjtBQVNqQyxNQUFNLFdBQVcsbUJBQW1COyIsCiAgIm5hbWVzIjogWyJzZXR1cCIsICJ0ZWFyZG93biJdCn0K
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3ZpdGVzdC9nbG9iYWwtc2V0dXAudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwIGFuZCB0ZWFyZG93biBhZGFwdGVyLlxuICpcbiAqIERlbGVnYXRlcyB0byB0aGUgZnJhbWV3b3JrLWFnbm9zdGljIGNvcmUgYW5kIGJyaWRnZXMgY29udGV4dFxuICogdG8gdGVzdCB3b3JrZXJzIHZpYSBWaXRlc3QncyBgcHJvamVjdC5wcm92aWRlYCAvIGBpbmplY3RgLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIHNldHVwIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7IFRlc3RQcm9qZWN0IH0gZnJvbSAndml0ZXN0L25vZGUnO1xuXG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICd2aXRlc3QnO1xuXG5pbXBvcnQgdHlwZSB7IENvcmVTZXR1cFJlc3VsdCB9IGZyb20gJy4uL2dsb2JhbC1zZXR1cC1jb3JlLm1qcyc7XG5pbXBvcnQgdHlwZSB7IFBvcHVsYXRlRmlsZXNQYXJhbXMgfSBmcm9tICcuLi90ZW1wb3JhcnktdmF1bHQubWpzJztcbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIH0gZnJvbSAnLi4vdHJhbnNwb3J0LW9wdGlvbnMubWpzJztcblxuaW1wb3J0IHtcbiAgc2V0U2V0dXBFcnJvclJlc29sdmVyLFxuICBzZXRUcmFuc3BvcnRPcHRpb25zUmVzb2x2ZXIsXG4gIHNldFZhdWx0UGF0aFJlc29sdmVyXG59IGZyb20gJy4uL2NvbnRleHQtcHJvdmlkZXIubWpzJztcbmltcG9ydCB7IGVycm9yVG9TdHJpbmcgfSBmcm9tICcuLi9lcnJvci10by1zdHJpbmcubWpzJztcbmltcG9ydCB7XG4gIGNvcmVTZXR1cCxcbiAgY29yZVRlYXJkb3duXG59IGZyb20gJy4uL2dsb2JhbC1zZXR1cC1jb3JlLm1qcyc7XG5pbXBvcnQgeyBJbnRlZ3JhdGlvblNldHVwRmFpbGVkRXJyb3IgfSBmcm9tICcuLi9pbnRlZ3JhdGlvbi1zZXR1cC1mYWlsZWQtZXJyb3IubWpzJztcbmltcG9ydCB7IGxvZyB9IGZyb20gJy4uL2xvZy5tanMnO1xuaW1wb3J0IHsgVGVtcG9yYXJ5VmF1bHQgfSBmcm9tICcuLi90ZW1wb3JhcnktdmF1bHQubWpzJztcblxuc2V0U2V0dXBFcnJvclJlc29sdmVyKCgpID0+IGluamVjdCgnc2V0dXBFcnJvcicpKTtcbnNldFRyYW5zcG9ydE9wdGlvbnNSZXNvbHZlcigoKSA9PiBpbmplY3QoJ29ic2lkaWFuVHJhbnNwb3J0JykpO1xuc2V0VmF1bHRQYXRoUmVzb2x2ZXIoKCkgPT4gaW5qZWN0KCd0ZW1wb3JhcnlWYXVsdFBhdGgnKSk7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGNyZWF0ZVNldHVwfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVTZXR1cE9wdGlvbnMge1xuICAvKipcbiAgICogQ29tbXVuaXR5LXBsdWdpbiBpZHMgdG8gZW5hYmxlIGluIHRoZSB2YXVsdCBpbiBhZGRpdGlvbiB0byB0aGUgcGx1Z2luLXVuZGVyLXRlc3QsXG4gICAqIGFmdGVyIGl0IGlzIGVuYWJsZWQgKHNlZSB7QGxpbmsgQ29yZVNldHVwT3B0aW9ucy5lbmFibGVDb21tdW5pdHlQbHVnaW5zfSkuIFNlZWQgZWFjaFxuICAgKiBwbHVnaW4ncyBidWlsdCBmaWxlcyB2aWEge0BsaW5rIENyZWF0ZVNldHVwT3B0aW9ucy5wb3B1bGF0ZX0gKGUuZy4gd2l0aCBgYnVpbGREZW1vVmF1bHRQb3B1bGF0ZWApXG4gICAqIHNvIHRoZSBlbmFibGUgZmluZHMgdGhlbSBvbiBkaXNrLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlQ29tbXVuaXR5UGx1Z2lucz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluc3RhbGwgYW5kIGVuYWJsZSB0aGUgYnVpbHQgcGx1Z2luIGluIHRoZSB0ZW1wIHZhdWx0LiBEZWZhdWx0c1xuICAgKiB0byBgdHJ1ZWAuIFNldCB0byBgZmFsc2VgIGZvciBhICoqbm9uLXBsdWdpbioqIGNvbnN1bWVyIHRoYXQgb25seSBuZWVkcyBhXG4gICAqIHJlZ2lzdGVyZWQsIGVtcHR5IHZhdWx0IHRvIGBldmFsSW5PYnNpZGlhbmAgYWdhaW5zdCBcdTIwMTQgdGhlIG93bmVkIGluc3RhbmNlIGlzXG4gICAqIHN0aWxsIGxhdW5jaGVkIGFuZCBpdHMgZW5kcG9pbnQgcHVibGlzaGVkIHRvIHdvcmtlcnMsIHNvIHJlLWV4cG9ydGluZ1xuICAgKiBgY3JlYXRlU2V0dXAoeyBpbnN0YWxsUGx1Z2luOiBmYWxzZSB9KWAgcmV1c2VzIHRoZSBzYW1lIGF0dGFjaCB3aXJpbmcgd2l0aCBub1xuICAgKiBwbHVnaW4gY29weS9lbmFibGUuIFNlZSB7QGxpbmsgQ29yZVNldHVwT3B0aW9ucy5pbnN0YWxsUGx1Z2lufS5cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbGxQbHVnaW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGZpbGVzL2ZvbGRlcnMgdG8gd3JpdGUgaW50byB0aGUgdmF1bHQgYmVmb3JlIE9ic2lkaWFuIG9wZW5zIGl0IChzZWVcbiAgICoge0BsaW5rIENvcmVTZXR1cE9wdGlvbnMucG9wdWxhdGV9KS4gQSB0aHVuayBzbyBsYXJnZSBmaXh0dXJlcyBhcmUgYnVpbHQgbGF6aWx5LFxuICAgKiBvbmNlLCBpbiB0aGUgc2V0dXAgcHJvY2Vzcy5cbiAgICpcbiAgICogTWF5IHJldHVybiBhIHByb21pc2UsIHNvIHRoZSBtYXAgY2FuIGJlIGJ1aWx0IGJ5IHNvbWV0aGluZyB0aGF0IG5lZWRzIHRoZSBuZXR3b3JrIFx1MjAxNCBub3RhYmx5XG4gICAqIGBidWlsZERlbW9WYXVsdFBvcHVsYXRlQXN5bmNgLCB3aGljaCBpbnN0YWxscyBhIGRlbW8gdmF1bHQncyBtaXNzaW5nIGNvbW11bml0eSBwbHVnaW5zIGJlZm9yZVxuICAgKiByZWFkaW5nIHRoZW0uIEEgc3luY2hyb25vdXMgdGh1bmsgKGUuZy4gYGJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVgKSBpcyB1bmNoYW5nZWQuXG4gICAqL1xuICBwb3B1bGF0ZT8odGhpczogdm9pZCk6IFBvcHVsYXRlRmlsZXNQYXJhbXMgfCBQcm9taXNlPFBvcHVsYXRlRmlsZXNQYXJhbXM+O1xufVxuXG4vKipcbiAqIEEgVml0ZXN0IGBnbG9iYWxTZXR1cGAgbW9kdWxlJ3MgYHNldHVwYCAvIGB0ZWFyZG93bmAgcGFpci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWaXRlc3RHbG9iYWxTZXR1cCB7XG4gIHNldHVwKHRoaXM6IHZvaWQsIHByb2plY3Q6IFRlc3RQcm9qZWN0KTogUHJvbWlzZTx2b2lkPjtcbiAgdGVhcmRvd24odGhpczogdm9pZCk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIFZpdGVzdCBnbG9iYWwgc2V0dXAvdGVhcmRvd24gcGFpciwgb3B0aW9uYWxseSBwcmUtcG9wdWxhdGluZyB0aGUgdmF1bHRcbiAqIGJlZm9yZSBPYnNpZGlhbiBvcGVucyBpdCBcdTIwMTQgdXNlIHRoaXMgZm9yIGEgZGVkaWNhdGVkIGxhcmdlLXZhdWx0L3BlcmZvcm1hbmNlXG4gKiBwcm9qZWN0LiBUaGUgcGxhaW4ge0BsaW5rIHNldHVwfSAvIHtAbGluayB0ZWFyZG93bn0gZXhwb3J0cyBhcmUgdGhlIG5vLXBvcHVsYXRlXG4gKiBjYXNlIChgY3JlYXRlU2V0dXAoKWApLiBQYXNzIGB7IGluc3RhbGxQbHVnaW46IGZhbHNlIH1gIGZvciBhIG5vbi1wbHVnaW4gY29uc3VtZXJcbiAqIHRoYXQgb25seSBuZWVkcyBhIHJlZ2lzdGVyZWQsIGVtcHR5IHZhdWx0IChzZWUge0BsaW5rIENyZWF0ZVNldHVwT3B0aW9ucy5pbnN0YWxsUGx1Z2lufSkuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBTZXR1cCBvcHRpb25zLlxuICogQHJldHVybnMgVGhlIGBzZXR1cGAgYW5kIGB0ZWFyZG93bmAgZnVuY3Rpb25zIHRvIHJlLWV4cG9ydCBmcm9tIGEgYGdsb2JhbFNldHVwYCBtb2R1bGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZXR1cChvcHRpb25zPzogQ3JlYXRlU2V0dXBPcHRpb25zKTogVml0ZXN0R2xvYmFsU2V0dXAge1xuICBsZXQgc2V0dXBSZXN1bHQ6IENvcmVTZXR1cFJlc3VsdCB8IHVuZGVmaW5lZDtcblxuICByZXR1cm4geyBzZXR1cCwgdGVhcmRvd24gfTtcblxuICBhc3luYyBmdW5jdGlvbiBzZXR1cChwcm9qZWN0OiBUZXN0UHJvamVjdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGVudmlyb25tZW50T3B0aW9ucyA9IHByb2plY3QuY29uZmlnLmVudmlyb25tZW50T3B0aW9ucyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCB0cmFuc3BvcnRPcHRpb25zID0gZW52aXJvbm1lbnRPcHRpb25zPy5bJ29ic2lkaWFuVHJhbnNwb3J0J10gYXMgT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IGxhYmVsID0gdHJhbnNwb3J0T3B0aW9ucz8udHlwZSA/PyAnb2JzaWRpYW4tY2RwJztcblxuICAgIHRyeSB7XG4gICAgICBzZXR1cFJlc3VsdCA9IGF3YWl0IGNvcmVTZXR1cCh7XG4gICAgICAgIGVuYWJsZUNvbW11bml0eVBsdWdpbnM6IG9wdGlvbnM/LmVuYWJsZUNvbW11bml0eVBsdWdpbnMsXG4gICAgICAgIGluc3RhbGxQbHVnaW46IG9wdGlvbnM/Lmluc3RhbGxQbHVnaW4sXG4gICAgICAgIHBvcHVsYXRlOiBhd2FpdCBvcHRpb25zPy5wb3B1bGF0ZT8uKCksXG4gICAgICAgIHRyYW5zcG9ydE9wdGlvbnNcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAvLyBDYXRjaCBzZXR1cCBlcnJvcnMgc28gdGhhdCBvdGhlciBwcm9qZWN0cycgdGVzdHMgY2FuIHN0aWxsIHJ1bi4gRXZlcnkgdGVzdCBpbiBUSElTIHByb2plY3RcbiAgICAgIC8vIHRoZW4gZmFpbHMgd2l0aCB0aGUgc3RvcmVkIGVycm9yOiBgZ2V0T3JDcmVhdGVUcmFuc3BvcnRgIHJlYWRzIGl0IHRocm91Z2ggdGhlIHNldHVwLWVycm9yXG4gICAgICAvLyByZXNvbHZlciBhbmQgdGhyb3dzIGJlZm9yZSBpdCBjYW4gYnVpbGQgYSB0cmFuc3BvcnQuIFdpdGhvdXQgdGhhdCBhIHdvcmtlciBnZXRzIG5vIG9wdGlvbnNcbiAgICAgIC8vIGF0IGFsbCBhbmQgc2lsZW50bHkgcmVidWlsZHMgdGhlIG93bmVkIERFU0tUT1AgZGVmYXVsdCwgd2hhdGV2ZXIgcGxhdGZvcm0gdGhpcyBwcm9qZWN0IGFza2VkXG4gICAgICAvLyBmb3IgLS0gd2hpY2ggaXMgaG93IGFuIEFuZHJvaWQgcnVuIGNhbWUgdG8gcmVwb3J0IG5pbmUgYEZhaWxlZCB0byBwYXJzZSBVUkwgZnJvbSAvanNvbmBcbiAgICAgIC8vIGZhaWx1cmVzIHdoaWxlIHRoZSByZWFsIGNhdXNlIHNhdCBvbmNlLCBmYXIgYWJvdmUsIGluIHRoaXMgbG9nIChzZWUgQUdFTlRTLm1kIEw5KS5cbiAgICAgIGxvZyhgW2ludGVncmF0aW9uLXNldHVwOiR7bGFiZWx9XSBTZXR1cCBmYWlsZWQgKGV2ZXJ5IHRlc3QgaW4gdGhpcyBwcm9qZWN0IHdpbGwgZmFpbCB3aXRoIHRoaXMgZXJyb3IpOiAke2Vycm9yVG9TdHJpbmcoZXJyb3IpfWApO1xuICAgICAgcHJvamVjdC5wcm92aWRlKCdzZXR1cEVycm9yJywge1xuICAgICAgICBlcnJvck5hbWU6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5uYW1lIDogJ0Vycm9yJyxcbiAgICAgICAgbWVzc2FnZTogZXJyb3JUb1N0cmluZyhlcnJvciksXG4gICAgICAgIHRyYW5zcG9ydExhYmVsOiBsYWJlbFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcHJvamVjdC5wcm92aWRlKCdvYnNpZGlhblRyYW5zcG9ydCcsIHNldHVwUmVzdWx0LnRyYW5zcG9ydE9wdGlvbnMpO1xuICAgIHByb2plY3QucHJvdmlkZSgndGVtcG9yYXJ5VmF1bHRQYXRoJywgc2V0dXBSZXN1bHQudGVtcG9yYXJ5VmF1bHQucGF0aCk7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiB0ZWFyZG93bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBjb3JlVGVhcmRvd24oc2V0dXBSZXN1bHQpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgdGVtcG9yYXJ5IHZhdWx0IHByb3ZpZGVkIGJ5IHRoZSBnbG9iYWwgc2V0dXAuXG4gKlxuICogQHJldHVybnMgVGhlIHRlbXBvcmFyeSB2YXVsdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRlbXBvcmFyeVZhdWx0KCk6IFRlbXBvcmFyeVZhdWx0IHtcbiAgY29uc3QgdGVtcG9yYXJ5VmF1bHRQYXRoID0gaW5qZWN0KCd0ZW1wb3JhcnlWYXVsdFBhdGgnKTtcbiAgY29uc3Qgc2V0dXBFcnJvciA9IGluamVjdCgnc2V0dXBFcnJvcicpO1xuICBpZiAoc2V0dXBFcnJvcikge1xuICAgIHRocm93IG5ldyBJbnRlZ3JhdGlvblNldHVwRmFpbGVkRXJyb3Ioc2V0dXBFcnJvcik7XG4gIH1cbiAgcmV0dXJuIG5ldyBUZW1wb3JhcnlWYXVsdCh0ZW1wb3JhcnlWYXVsdFBhdGgpO1xufVxuXG5jb25zdCBkZWZhdWx0R2xvYmFsU2V0dXAgPSBjcmVhdGVTZXR1cCgpO1xuXG4vKipcbiAqIFZpdGVzdCBnbG9iYWwgc2V0dXAgZnVuY3Rpb24gKG5vIHByZS1wb3B1bGF0aW9uKS5cbiAqXG4gKiBDb3BpZXMgdGhlIGJ1aWx0IHBsdWdpbiBpbnRvIGEgdGVtcG9yYXJ5IHZhdWx0LCBlbmFibGVzIGl0IHZpYSBhIHJlbmRlcmVyIGV2YWxcbiAqIG92ZXIgdGhlIHRyYW5zcG9ydCwgYW5kIHByb3ZpZGVzIGB0ZW1wb3JhcnlWYXVsdFBhdGhgIHRvIHRlc3RzLlxuICpcbiAqIEBwYXJhbSBwcm9qZWN0IC0gVGhlIFZpdGVzdCBwcm9qZWN0LlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBzZXR1cCBjb21wbGV0ZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBzZXR1cCA9IGRlZmF1bHRHbG9iYWxTZXR1cC5zZXR1cDtcblxuLyoqXG4gKiBWaXRlc3QgZ2xvYmFsIHRlYXJkb3duIGZ1bmN0aW9uLlxuICpcbiAqIFJlbW92ZXMgdGhlIHRlbXBvcmFyeSB2YXVsdCBjcmVhdGVkIGR1cmluZyBzZXR1cC5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRlYXJkb3duIGNvbXBsZXRlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHRlYXJkb3duID0gZGVmYXVsdEdsb2JhbFNldHVwLnRlYXJkb3duO1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBYUEsU0FBUyxjQUFjO0FBTXZCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMscUJBQXFCO0FBQzlCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxtQ0FBbUM7QUFDNUMsU0FBUyxXQUFXO0FBQ3BCLFNBQVMsc0JBQXNCO0FBRS9CLHNCQUFzQixNQUFNLE9BQU8sWUFBWSxDQUFDO0FBQ2hELDRCQUE0QixNQUFNLE9BQU8sbUJBQW1CLENBQUM7QUFDN0QscUJBQXFCLE1BQU0sT0FBTyxvQkFBb0IsQ0FBQztBQXNEaEQsU0FBUyxZQUFZLFNBQWlEO0FBQzNFLE1BQUk7QUFFSixTQUFPLEVBQUUsT0FBQUEsUUFBTyxVQUFBQyxVQUFTO0FBRXpCLGlCQUFlRCxPQUFNLFNBQXFDO0FBQ3hELFVBQU0scUJBQXFCLFFBQVEsT0FBTztBQUMxQyxVQUFNLG1CQUFtQixxQkFBcUIsbUJBQW1CO0FBQ2pFLFVBQU0sUUFBUSxrQkFBa0IsUUFBUTtBQUV4QyxRQUFJO0FBQ0Ysb0JBQWMsTUFBTSxVQUFVO0FBQUEsUUFDNUIsd0JBQXdCLFNBQVM7QUFBQSxRQUNqQyxlQUFlLFNBQVM7QUFBQSxRQUN4QixVQUFVLE1BQU0sU0FBUyxXQUFXO0FBQUEsUUFDcEM7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNILFNBQVMsT0FBZ0I7QUFPdkIsVUFBSSxzQkFBc0IsS0FBSywwRUFBMEUsY0FBYyxLQUFLLENBQUMsRUFBRTtBQUMvSCxjQUFRLFFBQVEsY0FBYztBQUFBLFFBQzVCLFdBQVcsaUJBQWlCLFFBQVEsTUFBTSxPQUFPO0FBQUEsUUFDakQsU0FBUyxjQUFjLEtBQUs7QUFBQSxRQUM1QixnQkFBZ0I7QUFBQSxNQUNsQixDQUFDO0FBQ0Q7QUFBQSxJQUNGO0FBRUEsWUFBUSxRQUFRLHFCQUFxQixZQUFZLGdCQUFnQjtBQUNqRSxZQUFRLFFBQVEsc0JBQXNCLFlBQVksZUFBZSxJQUFJO0FBQUEsRUFDdkU7QUFFQSxpQkFBZUMsWUFBMEI7QUFDdkMsVUFBTSxhQUFhLFdBQVc7QUFBQSxFQUNoQztBQUNGO0FBT08sU0FBUyxvQkFBb0M7QUFDbEQsUUFBTSxxQkFBcUIsT0FBTyxvQkFBb0I7QUFDdEQsUUFBTSxhQUFhLE9BQU8sWUFBWTtBQUN0QyxNQUFJLFlBQVk7QUFDZCxVQUFNLElBQUksNEJBQTRCLFVBQVU7QUFBQSxFQUNsRDtBQUNBLFNBQU8sSUFBSSxlQUFlLGtCQUFrQjtBQUM5QztBQUVBLE1BQU0scUJBQXFCLFlBQVk7QUFXaEMsTUFBTSxRQUFRLG1CQUFtQjtBQVNqQyxNQUFNLFdBQVcsbUJBQW1COyIsCiAgIm5hbWVzIjogWyJzZXR1cCIsICJ0ZWFyZG93biJdCn0K
|
|
@@ -63,9 +63,26 @@ export declare class WebViewCdpConnection {
|
|
|
63
63
|
get isOpen(): boolean;
|
|
64
64
|
private readonly eventHandlers;
|
|
65
65
|
private messageId;
|
|
66
|
+
/**
|
|
67
|
+
* The commands still waiting for a reply, keyed by the CDP message id each was
|
|
68
|
+
* sent with. Emptied by whichever of the reply and the timeout comes first.
|
|
69
|
+
*/
|
|
70
|
+
private readonly pendingCommands;
|
|
66
71
|
/**
|
|
67
72
|
* Wraps an already-open debugger socket, plus what is needed to tear its port forward down.
|
|
68
73
|
*
|
|
74
|
+
* ONE `message` listener for the socket's whole life, routing both halves of what
|
|
75
|
+
* arrives — CDP events to their subscribed handler, command replies to the
|
|
76
|
+
* {@link send} call waiting on the id. A listener per in-flight command instead
|
|
77
|
+
* would make the count scale with concurrency, so eleven commands in flight at
|
|
78
|
+
* once would cross Node's default `maxListeners` of 10 and report a memory leak
|
|
79
|
+
* that is not one (see the desktop transport's `getPendingCommands`, where the
|
|
80
|
+
* same shape was measured).
|
|
81
|
+
*
|
|
82
|
+
* The parse is guarded because a frame this connection cannot read belongs to
|
|
83
|
+
* nothing it sent: throwing here would throw out of the event dispatch, where
|
|
84
|
+
* nothing can catch it.
|
|
85
|
+
*
|
|
69
86
|
* @param webSocket - The open debugger socket.
|
|
70
87
|
* @param deviceId - The adb device id, needed to drop the port forward on dispose.
|
|
71
88
|
* @param port - The forwarded local port.
|