@worktif/runtime 0.3.0-edge.15 → 0.3.0-edge.16
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/out/dist/lib/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
1
|
+
export { pureweb, ConfigValidationError, EnvironmentDetectionError, createRuntimeConfig, extractRuntimeConfig, isRuntimeConfig, mergeRuntimeConfig, isValidServiceName, } from './lib/runtime-web';
|
|
2
|
+
export type { RuntimeWebConfig, TypeSafePurenowConfig, Stage, ServiceNames, LambdaIds, ValidServiceName, RuntimeConfig, } from './lib/runtime-web';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/out/dist/lib/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
${r.map(
|
|
3
|
-
`)}`),this.name="ConfigValidationError",this.errors=r,Error.captureStackTrace(this,this.constructor)}},
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzeCIsICIuLi8uLi8uLi9zcmMvbGliL3J1bnRpbWUtd2ViL3BpcGVsaW5lcy9icm93c2VyLXBpcGVsaW5lLnRzIiwgIi4uLy4uLy4uL3NyYy9saWIvcnVudGltZS13ZWIvdHlwZXMvY29uZmlnLnR5cGVzLnRzIiwgIi4uLy4uLy4uL3NyYy9saWIvcnVudGltZS13ZWIvcHVyZXdlYi50cyIsICIuLi8uLi8uLi9zcmMvbGliL3J1bnRpbWUtd2ViL3J1bnRpbWUuY29uZmlnLnR5cGVzLnRzeCJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLypcbiAqIEVsYXN0aWMgTGljZW5zZSAyLjBcbiAqIENvcHlyaWdodCAoQykgMjAyNVx1MjAxM3ByZXNlbnQgUmFtYW4gTWFyb3phdSwgV29yayBUYXJnZXQgSW5zaWdodCBGdW5jdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIENvbnRhY3Q6IHJhbWFuQHdvcmt0aWYuY29tXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIExpY2Vuc2VkIFdvcms6IHdvcmt0aWYucHVyZW5vdy5jZGsgPHdvcmt0aWZfcHVyZW5vd19jZGs+LlxuICogVXNlIG9mIHRoaXMgc29mdHdhcmUgaXMgZ292ZXJuZWQgYnkgdGhlIEVsYXN0aWMgTGljZW5zZSAyLjA7IHNlZSB0aGUgTElDRU5TRSBmaWxlXG4gKiBvciBodHRwczovL3d3dy5lbGFzdGljLmNvL2xpY2Vuc2luZy9lbGFzdGljLWxpY2Vuc2UgZm9yIGRldGFpbHMuXG4gKlxuICogUmUtbGljZW5zaW5nIG5vdGljZTpcbiAqICAgVGhpcyBmaWxlIHdhcyBwcmV2aW91c2x5IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCdXNpbmVzcyBTb3VyY2UgTGljZW5zZSAxLjEgKEJVU0wtMS4xKS5cbiAqICAgQXMgb2YgMjAyNS0wOS0yMiwgaXQgaXMgcmUtbGljZW5zZWQgdW5kZXIgRWxhc3RpYyBMaWNlbnNlIDIuMC5cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRWxhc3RpYy0yLjBcbiAqL1xuXG4vLyBSZS1leHBvcnQgZXZlcnl0aGluZyBmcm9tIHRoZSBiYXNlIFB1cmVub3cgZnJhbWV3b3JrXG5leHBvcnQgKiBmcm9tICdAd29ya3RpZi9wdXJlbm93JztcblxuLy8gRXhwb3J0IHJ1bnRpbWUtd2ViIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHlcbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1bnRpbWUtd2ViJztcblxuLy8gRXhwb3J0IHJ1bnRpbWUgY29uZmlndXJhdGlvbiB0eXBlcyBhbmQgdXRpbGl0aWVzXG4vLyBleHBvcnQgKiBmcm9tICcuL3V0aWxzJztcblxuXG4vLyBSZS1leHBvcnQgcHVyZW5vdyBiaW4gZnVuY3Rpb25hbGl0eVxuLy8gZXhwb3J0ICogZnJvbSAnQHdvcmt0aWYvcHVyZW5vdyc7XG4iLCAiLypcbiAqIEVsYXN0aWMgTGljZW5zZSAyLjBcbiAqIENvcHlyaWdodCAoQykgMjAyNVx1MjAxM3ByZXNlbnQgUmFtYW4gTWFyb3phdSwgV29yayBUYXJnZXQgSW5zaWdodCBGdW5jdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIENvbnRhY3Q6IHJhbWFuQHdvcmt0aWYuY29tXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIExpY2Vuc2VkIFdvcms6IHdvcmt0aWYucHVyZW5vdy5jZGsgPHdvcmt0aWZfcHVyZW5vd19jZGs+LlxuICogVXNlIG9mIHRoaXMgc29mdHdhcmUgaXMgZ292ZXJuZWQgYnkgdGhlIEVsYXN0aWMgTGljZW5zZSAyLjA7IHNlZSB0aGUgTElDRU5TRSBmaWxlXG4gKiBvciBodHRwczovL3d3dy5lbGFzdGljLmNvL2xpY2Vuc2luZy9lbGFzdGljLWxpY2Vuc2UgZm9yIGRldGFpbHMuXG4gKlxuICogUmUtbGljZW5zaW5nIG5vdGljZTpcbiAqICAgVGhpcyBmaWxlIHdhcyBwcmV2aW91c2x5IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCdXNpbmVzcyBTb3VyY2UgTGljZW5zZSAxLjEgKEJVU0wtMS4xKS5cbiAqICAgQXMgb2YgMjAyNS0wOS0yMiwgaXQgaXMgcmUtbGljZW5zaW5nIHVuZGVyIEVsYXN0aWMgTGljZW5zZSAyLjAuXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVsYXN0aWMtMi4wXG4gKi9cblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgaHlkcmF0ZVJvb3QgfSBmcm9tICdyZWFjdC1kb20vY2xpZW50JztcbmltcG9ydCB7IGNyZWF0ZUJyb3dzZXJSb3V0ZXIsIFJvdXRlclByb3ZpZGVyIH0gZnJvbSAncmVhY3Qtcm91dGVyJztcblxuaW1wb3J0IHR5cGUgeyBCcm93c2VyTWV0YWRhdGEsIFJ1bnRpbWVXZWJDb25maWcgfSBmcm9tICdAbGliL3J1bnRpbWUtd2ViL3R5cGVzJztcblxuLy8gaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnQHdvcmt0aWYvdXRpbHMnO1xuXG4vKipcbiAqIEJyb3dzZXIgZXhlY3V0aW9uIHBpcGVsaW5lIGZvciBSdW50aW1lIFRhcmdldCBDb3JlLlxuICpcbiAqIEB0b2RvOiBvcmRpbmF0ZSB0aGlzIGNsYXNzIHRvIGluZnJhIG9yIGNvcmUgY2F1c2Ugd2UgaGF2ZSBOb2RlLmpzIHJlc3BvbnNpYmlsaXR5XG4gKiAgICAgIC0tLS0gT1IgXHUyMDEzPiBSRU1PVkUgTE9HR0VSXG4gKlxuICogKipBUkNISVRFQ1RVUkUgTk9URSoqOiBUaGlzIGZpbGUgaXMgaW4gYHNyYy9saWIvYCBiZWNhdXNlIGl0OlxuICogLSBVc2VzIGJyb3dzZXItb25seSBBUElzICh3aW5kb3csIGRvY3VtZW50LCBoeWRyYXRlUm9vdClcbiAqIC0gUnVucyBPTkxZIGluIGJyb3dzZXIgZW52aXJvbm1lbnRcbiAqIC0gTXVzdCBiZSBpc29tb3JwaGljLXNhZmUgKG5vIE5vZGUuanMgQVBJcylcbiAqIC0gTkVWRVIgcnVucyBpbiBMYW1iZGFcbiAqXG4gKiBIYW5kbGVzIGNsaWVudC1zaWRlIGh5ZHJhdGlvbiBvZiBSZWFjdCBhcHBsaWNhdGlvbnMgd2l0aCBwcmUtbG9hZGVkIGRhdGFcbiAqIGZyb20gc2VydmVyLXNpZGUgcmVuZGVyaW5nLiBTZXRzIHVwIGNsaWVudC1zaWRlIHJvdXRpbmcgYW5kIEhUVFAgY2xpZW50XG4gKiBmb3IgcG9zdC1oeWRyYXRpb24gQVBJIGNhbGxzIHRvIExhbWJkYSBlbmRwb2ludHMuXG4gKlxuICogKipFeGVjdXRpb24gRmxvdyoqOlxuICogMS4gSHlkcmF0ZSBSZWFjdCBhcHAgd2l0aCBleGlzdGluZyBQdXJlbm93Um91dGVyXG4gKiAyLiBDYWxsIGNvbmZpZy5hcHAoeyByb3V0ZXIgfSkgdG8gZ2V0IFJlYWN0IGVsZW1lbnRcbiAqIDMuIEluaXRpYWxpemUgY2xpZW50LXNpZGUgbmF2aWdhdGlvblxuICogNC4gU2V0IHVwIEhUVFAgY2xpZW50IGZvciBMYW1iZGEgZW5kcG9pbnQgY2FsbHNcbiAqXG4gKiAqKlJlcXVpcmVtZW50cyoqOiBSRVEtMDYsIFJFUS0xMlxuICovXG5leHBvcnQgY2xhc3MgQnJvd3NlclBpcGVsaW5lIHtcbiAgLy8gcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBsb2dnZXIoe1xuICAvLyAgIHNlcnZpY2VOYW1lOiAnQGxpYi9ydW50aW1lLXdlYi9waXBlbGluZXMvYnJvd3Nlci1waXBlbGluZScsXG4gIC8vIH0pO1xuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGJyb3dzZXIgcGlwZWxpbmUgZm9yIGNsaWVudC1zaWRlIGh5ZHJhdGlvbi5cbiAgICpcbiAgICogSHlkcmF0ZXMgdGhlIFJlYWN0IGFwcGxpY2F0aW9uIHdpdGggcHJlLWxvYWRlZCBkYXRhIGZyb20gU1NSIGFuZCBzZXRzIHVwXG4gICAqIGNsaWVudC1zaWRlIHJvdXRpbmcuIFVzZXMgUmVhY3QgaHlkcmF0aW9uIChub3QgcmVuZGVyKSB0byBtYXRjaCB0aGVcbiAgICogc2VydmVyLXJlbmRlcmVkIEhUTUwgZXhhY3RseS5cbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZyAtIFB1cmVub3cgY29uZmlndXJhdGlvbiB3aXRoIGFwcCBmYWN0b3J5IGFuZCByb3V0ZXJcbiAgICogQHBhcmFtIGNvbnRleHQgLSBCcm93c2VyIGVudmlyb25tZW50IGNvbnRleHQgd2l0aCBtZXRhZGF0YVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHBpcGVsaW5lID0gbmV3IEJyb3dzZXJQaXBlbGluZSgpO1xuICAgKiBhd2FpdCBwaXBlbGluZS5leGVjdXRlKGNvbmZpZywge1xuICAgKiAgIHR5cGU6ICdicm93c2VyJyxcbiAgICogICBtZXRhZGF0YToge1xuICAgKiAgICAgdXNlckFnZW50OiBuYXZpZ2F0b3IudXNlckFnZW50LFxuICAgKiAgICAgdXJsOiB3aW5kb3cubG9jYXRpb24uaHJlZixcbiAgICogICAgIHZpZXdwb3J0OiB7IHdpZHRoOiB3aW5kb3cuaW5uZXJXaWR0aCwgaGVpZ2h0OiB3aW5kb3cuaW5uZXJIZWlnaHQgfVxuICAgKiAgIH1cbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZXhlY3V0ZShjb25maWc6IFJ1bnRpbWVXZWJDb25maWcsIGNvbnRleHQ6IHsgdHlwZTogJ2Jyb3dzZXInOyBtZXRhZGF0YTogQnJvd3Nlck1ldGFkYXRhIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc29sZS5pbmZvKCdTdGFydGluZyBicm93c2VyIHBpcGVsaW5lIGV4ZWN1dGlvbicsIHtcbiAgICAgICAgc2VydmljZU5hbWU6IGNvbmZpZy5zZXJ2aWNlTmFtZSxcbiAgICAgICAgc3RhZ2U6IGNvbmZpZy5zdGFnZSxcbiAgICAgICAgdXJsOiBjb250ZXh0Lm1ldGFkYXRhLnVybCxcbiAgICAgICAgdXNlckFnZW50OiBjb250ZXh0Lm1ldGFkYXRhLnVzZXJBZ2VudCxcbiAgICAgICAgdmlld3BvcnQ6IGNvbnRleHQubWV0YWRhdGEudmlld3BvcnQsXG4gICAgICB9KTtcblxuICAgICAgLy8gMS4gQ3JlYXRlIGJyb3dzZXIgcm91dGVyIGZyb20gUHVyZW5vd1JvdXRlclxuICAgICAgY29uc3QgYnJvd3NlclJvdXRlciA9IHRoaXMuY3JlYXRlQnJvd3NlclJvdXRlcihjb25maWcpO1xuXG4gICAgICAvLyAyLiBHZXQgUmVhY3QgZWxlbWVudCBmcm9tIGFwcCBmYWN0b3J5XG4gICAgICBjb25zdCBhcHBFbGVtZW50ID0gdGhpcy5jcmVhdGVBcHBFbGVtZW50KGNvbmZpZyk7XG5cbiAgICAgIC8vIDMuIENyZWF0ZSByb3V0ZXIgcHJvdmlkZXIgd2l0aCB0aGUgYXBwXG4gICAgICBjb25zdCByb3V0ZXJQcm92aWRlciA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoUm91dGVyUHJvdmlkZXIsIHtcbiAgICAgICAgcm91dGVyOiBicm93c2VyUm91dGVyLFxuICAgICAgfSwgYXBwRWxlbWVudCk7XG5cbiAgICAgIC8vIDQuIEh5ZHJhdGUgdGhlIGFwcGxpY2F0aW9uICh1c2UgaHlkcmF0aW9uLCBub3QgcmVuZGVyKVxuICAgICAgdGhpcy5oeWRyYXRlQXBwbGljYXRpb24ocm91dGVyUHJvdmlkZXIpO1xuXG4gICAgICAvLyA1LiBTZXQgdXAgSFRUUCBjbGllbnQgZm9yIHBvc3QtaHlkcmF0aW9uIEFQSSBjYWxsc1xuICAgICAgdGhpcy5zZXR1cEh0dHBDbGllbnQoY29uZmlnKTtcblxuICAgICAgY29uc29sZS5pbmZvKCdCcm93c2VyIHBpcGVsaW5lIGV4ZWN1dGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Jywge1xuICAgICAgICBzZXJ2aWNlTmFtZTogY29uZmlnLnNlcnZpY2VOYW1lLFxuICAgICAgICBzdGFnZTogY29uZmlnLnN0YWdlLFxuICAgICAgfSk7XG5cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignQnJvd3NlciBwaXBlbGluZSBleGVjdXRpb24gZmFpbGVkJywge1xuICAgICAgICBzZXJ2aWNlTmFtZTogY29uZmlnLnNlcnZpY2VOYW1lLFxuICAgICAgICBzdGFnZTogY29uZmlnLnN0YWdlLFxuICAgICAgICBlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpLFxuICAgICAgICBzdGFjazogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLnN0YWNrIDogdW5kZWZpbmVkLFxuICAgICAgfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGJyb3dzZXIgcm91dGVyIGZyb20gUHVyZW5vd1JvdXRlciBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBVc2VzIHRoZSBleGlzdGluZyBQdXJlbm93Um91dGVyIHRvIGdldCByb3V0ZXMgYW5kIGNyZWF0ZXMgYSBSZWFjdCBSb3V0ZXJcbiAgICogYnJvd3NlciByb3V0ZXIgZm9yIGNsaWVudC1zaWRlIG5hdmlnYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgLSBQdXJlbm93IGNvbmZpZ3VyYXRpb25cbiAgICogQHJldHVybnMgQnJvd3NlciByb3V0ZXIgaW5zdGFuY2VcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlQnJvd3NlclJvdXRlcihjb25maWc6IFJ1bnRpbWVXZWJDb25maWcpIHtcbiAgICBjb25zb2xlLmRlYnVnKCdDcmVhdGluZyBicm93c2VyIHJvdXRlcicsIHtcbiAgICAgIHJvdXRlQ291bnQ6IGNvbmZpZy5yb3V0ZXIuZ2V0Um91dGVzKCkubGVuZ3RoLFxuICAgIH0pO1xuXG4gICAgLy8gR2V0IHJvdXRlcyBmcm9tIFB1cmVub3dSb3V0ZXJcbiAgICBjb25zdCByb3V0ZXMgPSBjb25maWcucm91dGVyLmdldFJvdXRlcygpO1xuXG4gICAgLy8gQ3JlYXRlIGJyb3dzZXIgcm91dGVyIHdpdGggcm91dGVzIChjYXN0IHRvIFJvdXRlT2JqZWN0W10gZm9yIGNvbXBhdGliaWxpdHkpXG4gICAgY29uc3QgYnJvd3NlclJvdXRlciA9IGNyZWF0ZUJyb3dzZXJSb3V0ZXIocm91dGVzIGFzIGFueSk7XG5cbiAgICBjb25zb2xlLmRlYnVnKCdCcm93c2VyIHJvdXRlciBjcmVhdGVkIHN1Y2Nlc3NmdWxseScsIHtcbiAgICAgIHJvdXRlQ291bnQ6IHJvdXRlcy5sZW5ndGgsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYnJvd3NlclJvdXRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgUmVhY3QgZWxlbWVudCBmcm9tIGFwcCBmYWN0b3J5IGZ1bmN0aW9uLlxuICAgKlxuICAgKiBDYWxscyB0aGUgdXNlcidzIGFwcCBmYWN0b3J5IGZ1bmN0aW9uIHdpdGggdGhlIHJvdXRlciBkZXBlbmRlbmN5XG4gICAqIHRvIGdldCB0aGUgcm9vdCBSZWFjdCBlbGVtZW50IGZvciB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgLSBQdXJlbm93IGNvbmZpZ3VyYXRpb25cbiAgICogQHJldHVybnMgUm9vdCBSZWFjdCBlbGVtZW50XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUFwcEVsZW1lbnQoY29uZmlnOiBSdW50aW1lV2ViQ29uZmlnKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgICBjb25zb2xlLmRlYnVnKCdDcmVhdGluZyBhcHAgZWxlbWVudCBmcm9tIGZhY3RvcnknKTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBDYWxsIGFwcCBmYWN0b3J5IHdpdGggcm91dGVyIGRlcGVuZGVuY3lcbiAgICAgIGNvbnN0IGFwcEVsZW1lbnQgPSBjb25maWcuYXBwKHsgcm91dGVyOiBjb25maWcucm91dGVyIH0pO1xuXG4gICAgICBpZiAoIVJlYWN0LmlzVmFsaWRFbGVtZW50KGFwcEVsZW1lbnQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQXBwIGZhY3RvcnkgbXVzdCByZXR1cm4gYSB2YWxpZCBSZWFjdCBlbGVtZW50Jyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGUuZGVidWcoJ0FwcCBlbGVtZW50IGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICByZXR1cm4gYXBwRWxlbWVudDtcblxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gY3JlYXRlIGFwcCBlbGVtZW50Jywge1xuICAgICAgICBlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpLFxuICAgICAgfSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBjcmVhdGUgYXBwIGVsZW1lbnQ6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIeWRyYXRlIHRoZSBSZWFjdCBhcHBsaWNhdGlvbiBpbiB0aGUgYnJvd3Nlci5cbiAgICpcbiAgICogVXNlcyBSZWFjdCdzIGh5ZHJhdGVSb290IHRvIGh5ZHJhdGUgdGhlIHNlcnZlci1yZW5kZXJlZCBIVE1MIHdpdGhcbiAgICogdGhlIGNsaWVudC1zaWRlIFJlYWN0IGFwcGxpY2F0aW9uLiBUaGlzIGVuc3VyZXMgdGhlIGNsaWVudCBtYXRjaGVzXG4gICAqIHRoZSBzZXJ2ZXIgZXhhY3RseSB0byBhdm9pZCBoeWRyYXRpb24gbWlzbWF0Y2hlcy5cbiAgICpcbiAgICogQHBhcmFtIHJvdXRlclByb3ZpZGVyIC0gUm91dGVyIHByb3ZpZGVyIGVsZW1lbnQgdG8gaHlkcmF0ZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBoeWRyYXRlQXBwbGljYXRpb24ocm91dGVyUHJvdmlkZXI6IFJlYWN0LlJlYWN0RWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnNvbGUuZGVidWcoJ1N0YXJ0aW5nIFJlYWN0IGh5ZHJhdGlvbicpO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIEdldCB0aGUgcm9vdCBjb250YWluZXIgZWxlbWVudFxuICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTtcbiAgICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignUm9vdCBjb250YWluZXIgZWxlbWVudCBub3QgZm91bmQuIEV4cGVjdGVkIGVsZW1lbnQgd2l0aCBpZD1cInJvb3RcIicpO1xuICAgICAgfVxuXG4gICAgICAvLyBIeWRyYXRlIHRoZSBhcHBsaWNhdGlvbiAobm90IHJlbmRlciAtIG11c3QgbWF0Y2ggc2VydmVyIEhUTUwpXG4gICAgICBoeWRyYXRlUm9vdChjb250YWluZXIsIHJvdXRlclByb3ZpZGVyKTtcblxuICAgICAgY29uc29sZS5pbmZvKCdSZWFjdCBoeWRyYXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseScpO1xuXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1JlYWN0IGh5ZHJhdGlvbiBmYWlsZWQnLCB7XG4gICAgICAgIGVycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvciksXG4gICAgICB9KTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUmVhY3QgaHlkcmF0aW9uIGZhaWxlZDogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB1cCBIVFRQIGNsaWVudCBmb3IgTGFtYmRhIGVuZHBvaW50IGNhbGxzLlxuICAgKlxuICAgKiBDb25maWd1cmVzIHRoZSBIVFRQIGNsaWVudCBmb3IgbWFraW5nIEFQSSBjYWxscyB0byBMYW1iZGEgZW5kcG9pbnRzXG4gICAqIGFmdGVyIGh5ZHJhdGlvbi4gVGhpcyBpcyB1c2VkIGZvciBwb3N0LWh5ZHJhdGlvbiBpbnRlcmFjdGlvbnMgdGhhdFxuICAgKiByZXF1aXJlIHNlcnZlci1zaWRlIGRhdGEuXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgLSBQdXJlbm93IGNvbmZpZ3VyYXRpb25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgc2V0dXBIdHRwQ2xpZW50KGNvbmZpZzogUnVudGltZVdlYkNvbmZpZyk6IHZvaWQge1xuICAgIGNvbnNvbGUuZGVidWcoJ1NldHRpbmcgdXAgSFRUUCBjbGllbnQgZm9yIExhbWJkYSBlbmRwb2ludHMnKTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBTZXQgdXAgYmFzZSBVUkwgZm9yIEFQSSBjYWxscyBiYXNlZCBvbiBzdGFnZVxuICAgICAgY29uc3QgYmFzZVVybCA9IHRoaXMuZ2V0QXBpQmFzZVVybChjb25maWcuc3RhZ2UpO1xuXG4gICAgICAvLyBTdG9yZSBjb25maWd1cmF0aW9uIGdsb2JhbGx5IGZvciB1c2UgYnkgZGF0YSBsb2FkZXJzXG4gICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgKHdpbmRvdyBhcyBhbnkpLl9fUFVSRU5PV19DT05GSUdfXyA9IHtcbiAgICAgICAgICBzZXJ2aWNlTmFtZTogY29uZmlnLnNlcnZpY2VOYW1lLFxuICAgICAgICAgIHN0YWdlOiBjb25maWcuc3RhZ2UsXG4gICAgICAgICAgYXBpQmFzZVVybDogYmFzZVVybCxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgY29uc29sZS5pbmZvKCdIVFRQIGNsaWVudCBjb25maWd1cmVkIHN1Y2Nlc3NmdWxseScsIHtcbiAgICAgICAgYmFzZVVybCxcbiAgICAgICAgc3RhZ2U6IGNvbmZpZy5zdGFnZSxcbiAgICAgIH0pO1xuXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBzZXR1cCBIVFRQIGNsaWVudCcsIHtcbiAgICAgICAgZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKSxcbiAgICAgIH0pO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gc2V0dXAgSFRUUCBjbGllbnQ6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgQVBJIGJhc2UgVVJMIGJhc2VkIG9uIGRlcGxveW1lbnQgc3RhZ2UuXG4gICAqXG4gICAqIERldGVybWluZXMgdGhlIGFwcHJvcHJpYXRlIEFQSSBiYXNlIFVSTCBmb3IgbWFraW5nIEhUVFAgcmVxdWVzdHNcbiAgICogdG8gTGFtYmRhIGVuZHBvaW50cyBiYXNlZCBvbiB0aGUgZGVwbG95bWVudCBzdGFnZS5cbiAgICpcbiAgICogQHBhcmFtIHN0YWdlIC0gRGVwbG95bWVudCBzdGFnZVxuICAgKiBAcmV0dXJucyBBUEkgYmFzZSBVUkxcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgZ2V0QXBpQmFzZVVybChzdGFnZTogJ2RldicgfCAnc3RhZ2luZycgfCAncHJvZCcpOiBzdHJpbmcge1xuICAgIC8vIEluIGJyb3dzZXIgY29udGV4dCwgQVBJIGNhbGxzIGdvIHRocm91Z2ggdGhlIHNhbWUgb3JpZ2luXG4gICAgLy8gVGhlIGFjdHVhbCBBUEkgR2F0ZXdheSBVUkwgaXMgaGFuZGxlZCBieSBDbG91ZEZyb250IHJvdXRpbmdcbiAgICBjb25zdCBvcmlnaW4gPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gOiAnJztcblxuICAgIC8vIEFQSSBlbmRwb2ludHMgYXJlIHR5cGljYWxseSB1bmRlciAvYXBpIHBhdGhcbiAgICByZXR1cm4gYCR7b3JpZ2lufS9hcGlgO1xuICB9XG59XG4iLCAiLypcbiAqIEVsYXN0aWMgTGljZW5zZSAyLjBcbiAqIENvcHlyaWdodCAoQykgMjAyNVx1MjAxM3ByZXNlbnQgUmFtYW4gTWFyb3phdSwgV29yayBUYXJnZXQgSW5zaWdodCBGdW5jdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIENvbnRhY3Q6IHJhbWFuQHdvcmt0aWYuY29tXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIExpY2Vuc2VkIFdvcms6IHdvcmt0aWYucHVyZW5vdy5jZGsgPHdvcmt0aWZfcHVyZW5vd19jZGs+LlxuICogVXNlIG9mIHRoaXMgc29mdHdhcmUgaXMgZ292ZXJuZWQgYnkgdGhlIEVsYXN0aWMgTGljZW5zZSAyLjA7IHNlZSB0aGUgTElDRU5TRSBmaWxlXG4gKiBvciBodHRwczovL3d3dy5lbGFzdGljLmNvL2xpY2Vuc2luZy9lbGFzdGljLWxpY2Vuc2UgZm9yIGRldGFpbHMuXG4gKlxuICogUmUtbGljZW5zaW5nIG5vdGljZTpcbiAqICAgVGhpcyBmaWxlIHdhcyBwcmV2aW91c2x5IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCdXNpbmVzcyBTb3VyY2UgTGljZW5zZSAxLjEgKEJVU0wtMS4xKS5cbiAqICAgQXMgb2YgMjAyNS0wOS0yMiwgaXQgaXMgcmUtbGljZW5zZWQgdW5kZXIgRWxhc3RpYyBMaWNlbnNlIDIuMC5cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRWxhc3RpYy0yLjBcbiAqL1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7IEluZnJhT3B0aW9ucyB9IGZyb20gJy4vaW5mcmEudHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBNaWNyb3NlcnZpY2VEZWZpbml0aW9uIH0gZnJvbSAnLi9taWNyb3NlcnZpY2UudHlwZXMnO1xuXG4vKipcbiAqIFB1cmVub3dSb3V0ZXIgaW50ZXJmYWNlIGZvciBydW50aW1lLXdlYiBpbnRlZ3JhdGlvbi5cbiAqXG4gKiBEZWZpbmVzIHRoZSBlc3NlbnRpYWwgbWV0aG9kcyBuZWVkZWQgYnkgdGhlIHJ1bnRpbWUtd2ViIHBpcGVsaW5lcy5cbiAqIFRoaXMgaW50ZXJmYWNlIG1hdGNoZXMgdGhlIGFjdHVhbCBQdXJlbm93Um91dGVyIGNsYXNzIGZyb20gQGxpYi9yZWFjdC9wdXJlbm93LnJvdXRlci5cbiAqL1xuaW50ZXJmYWNlIFB1cmVub3dSb3V0ZXIge1xuICAvKipcbiAgICogR2V0IGFsbCByb3V0ZSBvYmplY3RzIGFzIGFuIGFycmF5LlxuICAgKiBVc2VkIGZvciBjcmVhdGluZyBicm93c2VyIHJvdXRlcnMgYW5kIFNTUiBzdGF0aWMgaGFuZGxlcnMuXG4gICAqL1xuICBnZXRSb3V0ZXMoKTogQXJyYXk8e1xuICAgIHBhdGg/OiBzdHJpbmc7XG4gICAgZWxlbWVudD86IHVua25vd247XG4gICAgbG9hZGVyPzogdW5rbm93bjtcbiAgICBjaGlsZHJlbj86IHVua25vd247XG4gICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgfT47XG5cbiAgLyoqXG4gICAqIEZpbmQgYSByb3V0ZSBieSBpdHMgSUQuXG4gICAqL1xuICBnZXRSb3V0ZUJ5SWQ/KGlkOiBzdHJpbmcpOiB1bmtub3duO1xuXG4gIC8qKlxuICAgKiBGaW5kIGEgcm91dGUgYnkgaXRzIHBhdGguXG4gICAqL1xuICBnZXRSb3V0ZUJ5UGF0aD8ocGF0aDogc3RyaW5nKTogdW5rbm93bjtcblxuICAvKipcbiAgICogR2V0IHRoZSByb3V0ZXMgYXJyYXkgKGdldHRlcikuXG4gICAqL1xuICByb3V0ZXM/OiBBcnJheTx1bmtub3duPjtcblxuICAvKipcbiAgICogR2V0IHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBkZWZhdWx0cz86IHVua25vd247XG59XG5cbi8qKlxuICogU3RhZ2UgZW52aXJvbm1lbnQgZm9yIGRlcGxveW1lbnQuXG4gKlxuICogLSBgZGV2YDogRGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRcbiAqIC0gYHN0YWdpbmdgOiBTdGFnaW5nL3ByZS1wcm9kdWN0aW9uIGVudmlyb25tZW50XG4gKiAtIGBwcm9kYDogUHJvZHVjdGlvbiBlbnZpcm9ubWVudFxuICovXG5leHBvcnQgdHlwZSBTdGFnZSA9ICdkZXYnIHwgJ3N0YWdpbmcnIHwgJ3Byb2QnO1xuXG4vKipcbiAqIFV0aWxpdHkgdHlwZSB0byBleHRyYWN0IHNlcnZpY2UgbmFtZXMgZnJvbSByZWdpc3RlciBjb25maWd1cmF0aW9uLlxuICpcbiAqIFRoaXMgZW5hYmxlcyBjb21waWxlLXRpbWUgdmFsaWRhdGlvbiBvZiBzZXJ2aWNlIG5hbWVzIGFuZCBwcm92aWRlc1xuICogdHlwZS1zYWZlIGFjY2VzcyB0byBzZXJ2aWNlIGlkZW50aWZpZXJzIHRocm91Z2hvdXQgdGhlIGZyYW1ld29yay5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSByZWdpc3RlciBjb25maWd1cmF0aW9uIG9iamVjdCB0eXBlXG4gKi9cbmV4cG9ydCB0eXBlIFNlcnZpY2VOYW1lczxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgTWljcm9zZXJ2aWNlRGVmaW5pdGlvbj4+ID0ga2V5b2YgVDtcblxuLyoqXG4gKiBVdGlsaXR5IHR5cGUgdG8gZ2VuZXJhdGUgTGFtYmRhIElEcyBmcm9tIHNlcnZpY2UgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBDb21iaW5lcyBzZXJ2aWNlIG5hbWVzIHdpdGggTGFtYmRhIElEcyB0byBjcmVhdGUgZnVsbHkgcXVhbGlmaWVkXG4gKiBMYW1iZGEgaWRlbnRpZmllcnMgZm9yIHR5cGUtc2FmZSBMYW1iZGEgcmVzb2x1dGlvbi5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSByZWdpc3RlciBjb25maWd1cmF0aW9uIG9iamVjdCB0eXBlXG4gKi9cbmV4cG9ydCB0eXBlIExhbWJkYUlkczxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgTWljcm9zZXJ2aWNlRGVmaW5pdGlvbj4+ID0ge1xuICBbSyBpbiBrZXlvZiBUXTogVFtLXVsnbGFtYmRhcyddW251bWJlcl0gZXh0ZW5kcyB7IGlkOiBpbmZlciBJIH1cbiAgICA/IEkgZXh0ZW5kcyBzdHJpbmdcbiAgICAgID8gYCR7SyAmIHN0cmluZ30uJHtJfWBcbiAgICAgIDogbmV2ZXJcbiAgICA6IG5ldmVyO1xufVtrZXlvZiBUXTtcblxuLyoqXG4gKiBUeXBlIGNvbnN0cmFpbnQgZm9yIHZhbGlkIHNlcnZpY2UgbmFtZXMuXG4gKlxuICogRW5zdXJlcyBzZXJ2aWNlIG5hbWVzIGZvbGxvdyB0aGUgdmFsaWRhdGlvbiBwYXR0ZXJuOlxuICogLSBNdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIgKGEteiwgQS1aKVxuICogLSBDYW4gY29udGFpbiBsZXR0ZXJzLCBudW1iZXJzLCBhbmQgaHlwaGVuc1xuICogLSBNYXhpbXVtIGxlbmd0aDogMTI4IGNoYXJhY3RlcnNcbiAqXG4gKiBUaGlzIGlzIGEgYnJhbmRlZCB0eXBlIHRoYXQgcHJvdmlkZXMgY29tcGlsZS10aW1lIHZhbGlkYXRpb24uXG4gKi9cbmV4cG9ydCB0eXBlIFZhbGlkU2VydmljZU5hbWUgPSBzdHJpbmcgJiB7IHJlYWRvbmx5IF9fYnJhbmQ6ICdWYWxpZFNlcnZpY2VOYW1lJyB9O1xuXG4vKipcbiAqIFR5cGUgZ3VhcmQgdG8gdmFsaWRhdGUgc2VydmljZSBuYW1lIGZvcm1hdC5cbiAqXG4gKiBAcGFyYW0gc2VydmljZU5hbWUgLSBUaGUgc2VydmljZSBuYW1lIHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyBUeXBlIHByZWRpY2F0ZSBpbmRpY2F0aW5nIGlmIHRoZSBzZXJ2aWNlIG5hbWUgaXMgdmFsaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRTZXJ2aWNlTmFtZShzZXJ2aWNlTmFtZTogc3RyaW5nKTogc2VydmljZU5hbWUgaXMgVmFsaWRTZXJ2aWNlTmFtZSB7XG4gIHJldHVybiAvXlthLXpBLVpdW2EtekEtWjAtOS1dezAsMTI3fSQvLnRlc3Qoc2VydmljZU5hbWUpO1xufVxuXG4vKipcbiAqIE1haW4gY29uZmlndXJhdGlvbiBpbnRlcmZhY2UgZm9yIFJ1bnRpbWUgVGFyZ2V0IENvcmUuXG4gKlxuICogVGhpcyBpbnRlcmZhY2UgcHJvdmlkZXMgYSB1bmlmaWVkIGNvbmZpZ3VyYXRpb24gdGhhdCB3b3JrcyBhY3Jvc3MgYWxsIGV4ZWN1dGlvbiBjb250ZXh0czpcbiAqIC0gQnJvd3NlcjogSHlkcmF0ZXMgUmVhY3QgYXBwbGljYXRpb24gd2l0aCBjbGllbnQtc2lkZSByb3V0aW5nXG4gKiAtIExhbWJkYTogRXhlY3V0ZXMgc2VydmVyLXNpZGUgcmVuZGVyaW5nIGFuZCBidXNpbmVzcyBsb2dpY1xuICogLSBDREs6IFN5bnRoZXNpemVzIENsb3VkRm9ybWF0aW9uIGluZnJhc3RydWN0dXJlXG4gKlxuICogQHRlbXBsYXRlIFRSZWdpc3RlciAtIFRoZSByZWdpc3RlciBjb25maWd1cmF0aW9uIHR5cGUgZm9yIHR5cGUtc2FmZSBzZXJ2aWNlIG5hbWVzXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IHB1cmVub3cgfSBmcm9tICdAd29ya3RpZi9wdXJlbm93L3J1bnRpbWUtd2ViJztcbiAqIGltcG9ydCB7IFB1cmVub3dSb3V0ZXIgfSBmcm9tICdAd29ya3RpZi9wdXJlbm93JztcbiAqXG4gKiBjb25zdCBjb25maWcgPSB7XG4gKiAgIGFwcDogKHsgcm91dGVyIH0pID0+IDxBcHAgcm91dGVyPXtyb3V0ZXJ9IC8+LFxuICogICByb3V0ZXI6IG5ldyBQdXJlbm93Um91dGVyKHsgcm91dGVyOiByb3V0ZXMsIGRlZmF1bHRzOiB7fSB9KSxcbiAqICAgc2VydmljZU5hbWU6ICdteS1hcHAnLFxuICogICBzdGFnZTogJ2RldicsXG4gKiAgIHJlZ2lzdGVyOiB7XG4gKiAgICAgcGF5bWVudHM6IHtcbiAqICAgICAgIHRpZXM6IFtQYXltZW50c1RpZXNdLFxuICogICAgICAgbGFtYmRhczogW2NoYXJnZUhhbmRsZXIsIHJlZnVuZEhhbmRsZXJdXG4gKiAgICAgfSxcbiAqICAgICB1c2Vyczoge1xuICogICAgICAgdGllczogW1VzZXJzVGllc10sXG4gKiAgICAgICBsYW1iZGFzOiBbY3JlYXRlVXNlckhhbmRsZXIsIGdldFVzZXJIYW5kbGVyXVxuICogICAgIH1cbiAqICAgfSBhcyBjb25zdCwgIC8vIFVzZSAnYXMgY29uc3QnIGZvciBiZXR0ZXIgdHlwZSBpbmZlcmVuY2VcbiAqICAgaW5mcmE6IHtcbiAqICAgICBlbnY6IHsgYWNjb3VudDogJzEyMzQ1Njc4OTAxMicsIHJlZ2lvbjogJ3VzLWVhc3QtMScgfSxcbiAqICAgICBzdGFnZTogJ2RldicsXG4gKiAgICAgcmVhY3RFbnRyeTogJy4vc3JjL2luZGV4LnRzeCcsXG4gKiAgICAgYXBpTW9kZTogJ2FwaUdhdGV3YXknXG4gKiAgIH1cbiAqIH0gc2F0aXNmaWVzIFB1cmVub3dDb25maWc7XG4gKlxuICogcHVyZW5vdyhjb25maWcpO1xuICogYGBgXG4gKlxuICogQHRvZG86IGFmdGVyIFJ1bnRpbWVXZWIgcmVwbyB3aWxsIGJlIHJlc29sdmVkLCBSdW50aW1lV2ViQ29uZmlnIE1VU1QgZXh0ZW5kIFB1cmVub3dDb25maWcgQ29yZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bnRpbWVXZWJDb25maWc8VFJlZ2lzdGVyIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgTWljcm9zZXJ2aWNlRGVmaW5pdGlvbj4gPSBSZWNvcmQ8c3RyaW5nLCBNaWNyb3NlcnZpY2VEZWZpbml0aW9uPj4ge1xuICAvKipcbiAgICogUmVhY3QgYXBwbGljYXRpb24gY29tcG9uZW50IGZhY3RvcnkgZnVuY3Rpb24uXG4gICAqXG4gICAqIFJlY2VpdmVzIHRoZSByb3V0ZXIgaW5zdGFuY2UgYXMgYSBkZXBlbmRlbmN5IGFuZCByZXR1cm5zIHRoZSByb290IFJlYWN0IGVsZW1lbnQuXG4gICAqIFRoaXMgcGF0dGVybiBlbmFibGVzIGRlcGVuZGVuY3kgaW5qZWN0aW9uIG9mIHRoZSByb3V0ZXIgaW50byB5b3VyIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gZGVwcyAtIERlcGVuZGVuY2llcyBvYmplY3QgY29udGFpbmluZyB0aGUgcm91dGVyXG4gICAqIEBwYXJhbSBkZXBzLnJvdXRlciAtIFB1cmVub3dSb3V0ZXIgaW5zdGFuY2UgZm9yIG5hdmlnYXRpb24gYW5kIHJvdXRpbmdcbiAgICogQHJldHVybnMgUm9vdCBSZWFjdCBlbGVtZW50IChSZWFjdC5SZWFjdEVsZW1lbnQpXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogYXBwOiAoeyByb3V0ZXIgfSkgPT4gPEFwcCByb3V0ZXI9e3JvdXRlcn0gLz5cbiAgICogYGBgXG4gICAqL1xuICBhcHA6IChkZXBzOiB7IHJvdXRlcjogUHVyZW5vd1JvdXRlciB9KSA9PiBSZWFjdC5SZWFjdEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIFB1cmVub3dSb3V0ZXIgaW5zdGFuY2UgZm9yIGFwcGxpY2F0aW9uIHJvdXRpbmcuXG4gICAqXG4gICAqIERlZmluZXMgYWxsIHJvdXRlcywgbG9hZGVycywgYW5kIG5hdmlnYXRpb24gY29uZmlndXJhdGlvbi5cbiAgICogVGhlIHJvdXRlciBpcyB1c2VkIGluIGJvdGggc2VydmVyLXNpZGUgcmVuZGVyaW5nIChMYW1iZGEpIGFuZCBjbGllbnQtc2lkZSBoeWRyYXRpb24gKGJyb3dzZXIpLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBQdXJlbm93Um91dGVyfSBmb3Igcm91dGVyIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiByb3V0ZXI6IG5ldyBQdXJlbm93Um91dGVyKHtcbiAgICogICByb3V0ZXI6IFtcbiAgICogICAgIHsgcGF0aDogJy8nLCBlbGVtZW50OiA8SG9tZSAvPiB9LFxuICAgKiAgICAgeyBwYXRoOiAnL2Fib3V0JywgZWxlbWVudDogPEFib3V0IC8+IH1cbiAgICogICBdLFxuICAgKiAgIGRlZmF1bHRzOiB7fVxuICAgKiB9KVxuICAgKiBgYGBcbiAgICovXG4gIHJvdXRlcjogUHVyZW5vd1JvdXRlcjtcblxuICAvKipcbiAgICogU2VydmljZSBuYW1lIGlkZW50aWZpZXIgZm9yIHRoZSBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogVXNlZCBhcyBhIHByZWZpeCBmb3IgYWxsIEFXUyByZXNvdXJjZXMgKExhbWJkYSBmdW5jdGlvbnMsIEFQSSBHYXRld2F5LCBTMyBidWNrZXRzLCBldGMuKS5cbiAgICogTXVzdCBiZSB1bmlxdWUgd2l0aGluIHlvdXIgQVdTIGFjY291bnQgYW5kIHJlZ2lvbi5cbiAgICpcbiAgICogKipWYWxpZGF0aW9uIFJ1bGVzKio6XG4gICAqIC0gTXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyIChhLXosIEEtWilcbiAgICogLSBDYW4gY29udGFpbiBsZXR0ZXJzLCBudW1iZXJzLCBhbmQgaHlwaGVuc1xuICAgKiAtIE1heGltdW0gbGVuZ3RoOiAxMjggY2hhcmFjdGVyc1xuICAgKiAtIFBhdHRlcm46IGAvXlthLXpBLVpdW2EtekEtWjAtOS1dezAsMTI3fSQvYFxuICAgKlxuICAgKiAqKkV4YW1wbGVzKio6XG4gICAqIC0gVmFsaWQ6IGBteS1hcHBgLCBgTXlBcHBgLCBgYXBwMTIzYCwgYG15LWFwcC12MmBcbiAgICogLSBJbnZhbGlkOiBgMTIzYXBwYCAoc3RhcnRzIHdpdGggbnVtYmVyKSwgYG15X2FwcGAgKHVuZGVyc2NvcmUpLCBgbXkgYXBwYCAoc3BhY2UpXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogc2VydmljZU5hbWU6ICdteS1hcHBsaWNhdGlvbidcbiAgICogYGBgXG4gICAqL1xuICBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXBsb3ltZW50IHN0YWdlL2Vudmlyb25tZW50LlxuICAgKlxuICAgKiBEZXRlcm1pbmVzIHRoZSBlbnZpcm9ubWVudC1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGFuZCByZXNvdXJjZSBuYW1pbmcuXG4gICAqIFVzZWQgdG8gY3JlYXRlIHNlcGFyYXRlIGluZnJhc3RydWN0dXJlIHN0YWNrcyBmb3IgZGlmZmVyZW50IGVudmlyb25tZW50cy5cbiAgICpcbiAgICogKipWYWx1ZXMqKjpcbiAgICogLSBgZGV2YDogRGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgKGxvY2FsIHRlc3RpbmcsIHJhcGlkIGl0ZXJhdGlvbilcbiAgICogLSBgc3RhZ2luZ2A6IFN0YWdpbmcvcHJlLXByb2R1Y3Rpb24gZW52aXJvbm1lbnQgKFFBLCBpbnRlZ3JhdGlvbiB0ZXN0aW5nKVxuICAgKiAtIGBwcm9kYDogUHJvZHVjdGlvbiBlbnZpcm9ubWVudCAobGl2ZSB1c2VycylcbiAgICpcbiAgICogKipJbXBhY3QqKjpcbiAgICogLSBSZXNvdXJjZSBuYW1pbmc6IGB7c2VydmljZU5hbWV9LXtyZXNvdXJjZX0te3N0YWdlfWBcbiAgICogLSBFbnZpcm9ubWVudCB2YXJpYWJsZXM6IERpZmZlcmVudCBjb25maWdzIHBlciBzdGFnZVxuICAgKiAtIENhY2hlIFRUTDogU2hvcnRlciBpbiBkZXYsIGxvbmdlciBpbiBwcm9kXG4gICAqIC0gTG9nZ2luZzogTW9yZSB2ZXJib3NlIGluIGRldiwgc3RydWN0dXJlZCBpbiBwcm9kXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogc3RhZ2U6ICdkZXYnXG4gICAqIGBgYFxuICAgKi9cbiAgc3RhZ2U6IFN0YWdlO1xuXG4gIC8qKlxuICAgKiBNaWNyb3NlcnZpY2UgcmVnaXN0cnkgKHJ1bnRpbWUtbGV2ZWwgY29uZmlndXJhdGlvbikuXG4gICAqXG4gICAqICoqUmVxdWlyZWQqKjogRGVmaW5lcyBhbGwgbWljcm9zZXJ2aWNlcywgdGhlaXIgREkgY29udGFpbmVycywgYW5kIExhbWJkYSBlbmRwb2ludHMuXG4gICAqICoqVXNlZCBpbiBhbGwgY29udGV4dHMqKjogQnJvd3NlciAoZm9yIHR5cGUgZ2VuZXJhdGlvbiksIExhbWJkYSAoZm9yIERJKSwgQ0RLIChmb3IgaW5mcmFzdHJ1Y3R1cmUpLlxuICAgKiAqKkFyY2hpdGVjdHVyZSoqOiBUaGlzIGlzIHJ1bnRpbWUgY29uZmlndXJhdGlvbiwgc2VwYXJhdGUgZnJvbSBpbmZyYXN0cnVjdHVyZSBjb25jZXJucy5cbiAgICpcbiAgICogRWFjaCBtaWNyb3NlcnZpY2UgZ2V0cyBpdHMgb3duIFB1cmVDb250YWluZXIgaW5zdGFuY2UgYnVpbHQgZnJvbSB0aGUgVGllcyBjbGFzc2VzLlxuICAgKiBMYW1iZGEgZnVuY3Rpb25zIGFyZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYW5kIHdpcmVkIHdpdGggZGVwZW5kZW5jeSBpbmplY3Rpb24uXG4gICAqXG4gICAqICoqVHlwZSBTYWZldHkqKjogU2VydmljZSBuYW1lcyBhcmUgZGVyaXZlZCBmcm9tIG9iamVjdCBrZXlzLCBlbnN1cmluZyBjb21waWxlLXRpbWUgdmFsaWRhdGlvbi5cbiAgICogKipObyBNYWdpYyBTdHJpbmdzKio6IEFsbCBzZXJ2aWNlIGlkZW50aWZpZXJzIGFyZSB0eXBlLXNhZmUgYW5kIGF1dG8tZ2VuZXJhdGVkLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBNaWNyb3NlcnZpY2VEZWZpbml0aW9ufSBmb3IgbWljcm9zZXJ2aWNlIHN0cnVjdHVyZVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIHJlZ2lzdGVyOiB7XG4gICAqICAgcGF5bWVudHM6IHtcbiAgICogICAgIHRpZXM6IFtQYXltZW50c1RpZXMsIEJpbGxpbmdUaWVzXSxcbiAgICogICAgIGxhbWJkYXM6IFtjaGFyZ2VIYW5kbGVyLCByZWZ1bmRIYW5kbGVyLCB3ZWJob29rSGFuZGxlcl1cbiAgICogICB9LFxuICAgKiAgIHVzZXJzOiB7XG4gICAqICAgICB0aWVzOiBbVXNlcnNUaWVzLCBBdXRoVGllc10sXG4gICAqICAgICBsYW1iZGFzOiBbY3JlYXRlVXNlckhhbmRsZXIsIGdldFVzZXJIYW5kbGVyLCBsb2dpbkhhbmRsZXJdXG4gICAqICAgfVxuICAgKiB9IGFzIGNvbnN0ICAvLyBVc2UgJ2FzIGNvbnN0JyBmb3IgYmV0dGVyIHR5cGUgaW5mZXJlbmNlXG4gICAqIGBgYFxuICAgKi9cbiAgcmVnaXN0ZXI6IFRSZWdpc3RlcjtcblxuICAvKipcbiAgICogSW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiBmb3IgQ0RLIGRlcGxveW1lbnQuXG4gICAqXG4gICAqICoqT3B0aW9uYWwqKjogT25seSByZXF1aXJlZCB3aGVuIHJ1bm5pbmcgaW4gQ0RLIGNvbnRleHQgKHN5bnRoZXNpemluZyBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZXMpLlxuICAgKiAqKk5vdCB1c2VkKio6IEluIGJyb3dzZXIgYW5kIExhbWJkYSBjb250ZXh0cyAocnVudGltZSBjb25maWd1cmF0aW9uIGlzIGluIHJlZ2lzdGVyKS5cbiAgICogKipQdXJlIGluZnJhc3RydWN0dXJlKio6IENvbnRhaW5zIG9ubHkgQVdTIHJlc291cmNlIGNvbmZpZ3VyYXRpb24sIG5vIGJ1c2luZXNzIGxvZ2ljLlxuICAgKlxuICAgKiBEZWZpbmVzOlxuICAgKiAtIEFXUyBhY2NvdW50IGFuZCByZWdpb25cbiAgICogLSBMYW1iZGEgY29uZmlndXJhdGlvbiAobWVtb3J5LCB0aW1lb3V0LCBWUEMpXG4gICAqIC0gQVBJIEdhdGV3YXkgb3IgTGFtYmRhIFVSTCBtb2RlXG4gICAqIC0gQ3VzdG9tIGRvbWFpbiBjb25maWd1cmF0aW9uXG4gICAqIC0gUmVhY3QgZW50cnkgcG9pbnQgZm9yIFNTUiBMYW1iZGFcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgSW5mcmFPcHRpb25zfSBmb3IgZGV0YWlsZWQgY29uZmlndXJhdGlvbiBvcHRpb25zXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogaW5mcmE6IHtcbiAgICogICBlbnY6IHsgYWNjb3VudDogJzEyMzQ1Njc4OTAxMicsIHJlZ2lvbjogJ3VzLWVhc3QtMScgfSxcbiAgICogICBzdGFnZTogJ2RldicsXG4gICAqICAgcmVhY3RFbnRyeTogJy4vc3JjL2luZGV4LnRzeCcsXG4gICAqICAgYXBpTW9kZTogJ2FwaUdhdGV3YXknLFxuICAgKiAgIGxhbWJkYU1lbW9yeVNpemU6IDEwMjQsXG4gICAqICAgbGFtYmRhVGltZW91dDogMzAsXG4gICAqICAgZG9tYWluOiB7XG4gICAqICAgICByb290RG9tYWluOiAnbXlhcHAuY29tJyxcbiAgICogICAgIHN1YmRvbWFpbjogJ2FwaSdcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBpbmZyYT86IEluZnJhT3B0aW9ucztcbn1cblxuLyoqXG4gKiBUeXBlLXNhZmUgUHVyZW5vdyBjb25maWd1cmF0aW9uIHdpdGggaW5mZXJyZWQgc2VydmljZSBuYW1lcy5cbiAqXG4gKiBUaGlzIHR5cGUgcHJvdmlkZXMgUnVudGltZSBDb3JlIHR5cGUgc2FmZXR5IGJ5IGluZmVycmluZyBzZXJ2aWNlIG5hbWVzIGZyb20gdGhlIHJlZ2lzdGVyXG4gKiBjb25maWd1cmF0aW9uLCBlbmFibGluZyBjb21waWxlLXRpbWUgdmFsaWRhdGlvbiBvZiBzZXJ2aWNlIHJlZmVyZW5jZXMuXG4gKlxuICogQHRlbXBsYXRlIFRSZWdpc3RlciAtIFRoZSByZWdpc3RlciBjb25maWd1cmF0aW9uIHR5cGVcbiAqL1xuZXhwb3J0IHR5cGUgVHlwZVNhZmVQdXJlbm93Q29uZmlnPFRSZWdpc3RlciBleHRlbmRzIFJlY29yZDxzdHJpbmcsIE1pY3Jvc2VydmljZURlZmluaXRpb24+PiA9XG4gIFJ1bnRpbWVXZWJDb25maWc8VFJlZ2lzdGVyPiAmIHtcbiAgLyoqXG4gICAqIFR5cGUtc2FmZSBzZXJ2aWNlIG5hbWVzIGRlcml2ZWQgZnJvbSByZWdpc3RlciBrZXlzLlxuICAgKiBBdmFpbGFibGUgYXQgY29tcGlsZS10aW1lIGZvciB0eXBlIGNoZWNraW5nIGFuZCBJREUgYXV0b2NvbXBsZXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZU5hbWVzPzogU2VydmljZU5hbWVzPFRSZWdpc3Rlcj47XG5cbiAgLyoqXG4gICAqIFR5cGUtc2FmZSBMYW1iZGEgSURzIGRlcml2ZWQgZnJvbSByZWdpc3RlciBjb25maWd1cmF0aW9uLlxuICAgKiBBdmFpbGFibGUgYXQgY29tcGlsZS10aW1lIGZvciB0eXBlIGNoZWNraW5nIGFuZCBJREUgYXV0b2NvbXBsZXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhSWRzPzogTGFtYmRhSWRzPFRSZWdpc3Rlcj47XG59O1xuIiwgIi8qXG4gKiBFbGFzdGljIExpY2Vuc2UgMi4wXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjVcdTIwMTNwcmVzZW50IFJhbWFuIE1hcm96YXUsIFdvcmsgVGFyZ2V0IEluc2lnaHQgRnVuY3Rpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBDb250YWN0OiByYW1hbkB3b3JrdGlmLmNvbVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBMaWNlbnNlZCBXb3JrOiB3b3JrdGlmLnB1cmVub3cuY2RrIDx3b3JrdGlmX3B1cmVub3dfY2RrPi5cbiAqIFVzZSBvZiB0aGlzIHNvZnR3YXJlIGlzIGdvdmVybmVkIGJ5IHRoZSBFbGFzdGljIExpY2Vuc2UgMi4wOyBzZWUgdGhlIExJQ0VOU0UgZmlsZVxuICogb3IgaHR0cHM6Ly93d3cuZWxhc3RpYy5jby9saWNlbnNpbmcvZWxhc3RpYy1saWNlbnNlIGZvciBkZXRhaWxzLlxuICpcbiAqIFJlLWxpY2Vuc2luZyBub3RpY2U6XG4gKiAgIFRoaXMgZmlsZSB3YXMgcHJldmlvdXNseSBkaXN0cmlidXRlZCB1bmRlciB0aGUgQnVzaW5lc3MgU291cmNlIExpY2Vuc2UgMS4xIChCVVNMLTEuMSkuXG4gKiAgIEFzIG9mIDIwMjUtMDktMjIsIGl0IGlzIHJlLWxpY2Vuc2VkIHVuZGVyIEVsYXN0aWMgTGljZW5zZSAyLjAuXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVsYXN0aWMtMi4wXG4gKi9cblxuaW1wb3J0IHsgcHVyZW5vdywgUHVyZW5vd1JvdXRlLCBwdXJlbm93Um91dGVyLCBQdXJlbm93Um91dGVyRGVmYXVsdHMgfSBmcm9tICdAd29ya3RpZi9wdXJlbm93JztcbmltcG9ydCB7IFJ1bnRpbWVXZWJDb25maWcgfSBmcm9tICdAbGliL3J1bnRpbWUtd2ViL3R5cGVzJztcblxuLyoqXG4gKiBFcnJvciB0aHJvd24gd2hlbiBjb25maWd1cmF0aW9uIHZhbGlkYXRpb24gZmFpbHMuXG4gKiBGb2xsb3dzIHB1cmVub3cgZXJyb3IgcGF0dGVybnMgd2l0aG91dCBlbW9qaS5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbmZpZ1ZhbGlkYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgLyoqIEFycmF5IG9mIHZhbGlkYXRpb24gZXJyb3IgbWVzc2FnZXMgKi9cbiAgcmVhZG9ubHkgZXJyb3JzOiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3RvcihlcnJvcnM6IHN0cmluZ1tdKSB7XG4gICAgc3VwZXIoYENvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiBmYWlsZWQ6XFxuJHtlcnJvcnMubWFwKGUgPT4gYCAgLSAke2V9YCkuam9pbignXFxuJyl9YCk7XG4gICAgdGhpcy5uYW1lID0gJ0NvbmZpZ1ZhbGlkYXRpb25FcnJvcic7XG4gICAgdGhpcy5lcnJvcnMgPSBlcnJvcnM7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgdGhpcy5jb25zdHJ1Y3Rvcik7XG4gIH1cbn1cblxuLyoqXG4gKiBFcnJvciB0aHJvd24gd2hlbiBlbnZpcm9ubWVudCBkZXRlY3Rpb24gZmFpbHMuXG4gKiBGb2xsb3dzIHB1cmVub3cgZXJyb3IgcGF0dGVybnMgd2l0aG91dCBlbW9qaS5cbiAqL1xuZXhwb3J0IGNsYXNzIEVudmlyb25tZW50RGV0ZWN0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdFbnZpcm9ubWVudERldGVjdGlvbkVycm9yJztcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCB0aGlzLmNvbnN0cnVjdG9yKTtcbiAgfVxufVxuXG4vKipcbiAqIERldGVjdCB0aGUgY3VycmVudCBydW50aW1lIGVudmlyb25tZW50LlxuICogVGhpcyBpcyBhIGxpZ2h0d2VpZ2h0IGRldGVjdGlvbiB0aGF0IHdvcmtzIGluIGFsbCBlbnZpcm9ubWVudHMuXG4gKi9cbmZ1bmN0aW9uIGRldGVjdEVudmlyb25tZW50KCk6ICdicm93c2VyJyB8ICdsYW1iZGEnIHwgJ2Nkaycge1xuICAvLyBCcm93c2VyIGRldGVjdGlvblxuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gJ2Jyb3dzZXInO1xuICB9XG5cbiAgLy8gTGFtYmRhIGRldGVjdGlvblxuICBpZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MuZW52Py5BV1NfTEFNQkRBX0ZVTkNUSU9OX05BTUUpIHtcbiAgICByZXR1cm4gJ2xhbWJkYSc7XG4gIH1cblxuICAvLyBDREsgZGV0ZWN0aW9uXG4gIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnY/LlBVUkVOT1dfTU9ERSA9PT0gJ2NkaycpIHtcbiAgICAgIHJldHVybiAnY2RrJztcbiAgICB9XG4gICAgaWYgKHByb2Nlc3MuZW52Py5DREtfREVGQVVMVF9BQ0NPVU5UIHx8IHByb2Nlc3MuZW52Py5DREtfREVGQVVMVF9SRUdJT04pIHtcbiAgICAgIHJldHVybiAnY2RrJztcbiAgICB9XG4gICAgaWYgKHByb2Nlc3MuYXJndj8uc29tZShhcmcgPT4gYXJnLmluY2x1ZGVzKCdjZGsnKSB8fCBhcmcuaW5jbHVkZXMoJ3N5bnRoJykpKSB7XG4gICAgICByZXR1cm4gJ2Nkayc7XG4gICAgfVxuICB9XG5cbiAgLy8gRGVmYXVsdCB0byBDREsgZm9yIE5vZGUuanMgZW52aXJvbm1lbnRzIChidWlsZCB0aW1lKVxuICByZXR1cm4gJ2Nkayc7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGdpdmVuIGVudmlyb25tZW50LlxuICogTGlnaHR3ZWlnaHQgdmFsaWRhdGlvbiB0aGF0IHdvcmtzIGluIGFsbCBlbnZpcm9ubWVudHMuXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlQ29uZmlnKGNvbmZpZzogUnVudGltZVdlYkNvbmZpZywgaXNDREtDb250ZXh0OiBib29sZWFuKTogeyB2YWxpZDogYm9vbGVhbjsgZXJyb3JzOiBzdHJpbmdbXSB9IHtcbiAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8vIFNlcnZpY2UgbmFtZSB2YWxpZGF0aW9uXG4gIGlmICghY29uZmlnLnNlcnZpY2VOYW1lIHx8ICEvXlthLXpBLVpdW2EtekEtWjAtOS1dezAsMTI3fSQvLnRlc3QoY29uZmlnLnNlcnZpY2VOYW1lKSkge1xuICAgIGVycm9ycy5wdXNoKCdzZXJ2aWNlTmFtZSBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIsIGNvbnRhaW4gb25seSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBhbmQgaHlwaGVucywgYW5kIGJlIG1heCAxMjggY2hhcmFjdGVycycpO1xuICB9XG5cbiAgLy8gU3RhZ2UgdmFsaWRhdGlvblxuICBpZiAoIVsnZGV2JywgJ3N0YWdpbmcnLCAncHJvZCddLmluY2x1ZGVzKGNvbmZpZy5zdGFnZSkpIHtcbiAgICBlcnJvcnMucHVzaCgnc3RhZ2UgbXVzdCBiZSBvbmUgb2Y6IGRldiwgc3RhZ2luZywgcHJvZCcpO1xuICB9XG5cbiAgLy8gSW5mcmEgdmFsaWRhdGlvbiBmb3IgQ0RLIGNvbnRleHRcbiAgaWYgKGlzQ0RLQ29udGV4dCAmJiAhY29uZmlnLmluZnJhKSB7XG4gICAgZXJyb3JzLnB1c2goJ2luZnJhIGNvbmZpZ3VyYXRpb24gaXMgcmVxdWlyZWQgaW4gQ0RLIGNvbnRleHQnKTtcbiAgfVxuXG4gIHJldHVybiB7IHZhbGlkOiBlcnJvcnMubGVuZ3RoID09PSAwLCBlcnJvcnMgfTtcbn1cblxuLyoqXG4gKiBVbmlmaWVkIGVudHJ5IHBvaW50IGZvciBSdW50aW1lIFRhcmdldCBDb3JlLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgYSBzaW5nbGUgQVBJIHRoYXQgd29ya3MgYWNyb3NzIGFsbCBleGVjdXRpb24gY29udGV4dHM6XG4gKiAtICoqQnJvd3NlcioqOiBIeWRyYXRlcyBSZWFjdCBhcHBsaWNhdGlvbiB3aXRoIGNsaWVudC1zaWRlIHJvdXRpbmdcbiAqIC0gKipMYW1iZGEqKjogRXhlY3V0ZXMgc2VydmVyLXNpZGUgcmVuZGVyaW5nIGFuZCBidXNpbmVzcyBsb2dpYyB3aXRoIERJXG4gKiAtICoqQ0RLKio6IFN5bnRoZXNpemVzIENsb3VkRm9ybWF0aW9uIGluZnJhc3RydWN0dXJlIHRlbXBsYXRlc1xuICpcbiAqIFRoZSBmdW5jdGlvbiBhdXRvbWF0aWNhbGx5IGRldGVjdHMgdGhlIHJ1bnRpbWUgZW52aXJvbm1lbnQgYW5kIHJvdXRlc1xuICogZXhlY3V0aW9uIHRvIHRoZSBhcHByb3ByaWF0ZSBwaXBlbGluZSB3aXRob3V0IHVzZXIgaW50ZXJ2ZW50aW9uLlxuICpcbiAqICoqTm90ZSoqOiBGb3IgTGFtYmRhIGFuZCBDREsgY29udGV4dHMsIHVzZSB0aGUgc2VydmVyLXNpZGUgZW50cnkgcG9pbnRcbiAqIGZyb20gYEBjb3JlL3J1bnRpbWUtd2ViYCBpbnN0ZWFkLiBUaGlzIGJyb3dzZXItY29tcGF0aWJsZSB2ZXJzaW9uXG4gKiBvbmx5IHN1cHBvcnRzIGJyb3dzZXIgaHlkcmF0aW9uLlxuICpcbiAqIEBwYXJhbSBjb25maWcgLSBVbmlmaWVkIGNvbmZpZ3VyYXRpb24gZm9yIGFsbCBjb250ZXh0c1xuICogQHJldHVybnMgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gZXhlY3V0aW9uIGNvbXBsZXRlc1xuICogQHRocm93cyBDb25maWdWYWxpZGF0aW9uRXJyb3IgaWYgY29uZmlndXJhdGlvbiBpcyBpbnZhbGlkXG4gKiBAdGhyb3dzIEVudmlyb25tZW50RGV0ZWN0aW9uRXJyb3IgaWYgZW52aXJvbm1lbnQgY2Fubm90IGJlIGRldGVjdGVkXG4gKiBAdGhyb3dzIEVycm9yIGlmIGV4ZWN1dGlvbiBmYWlsc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBwdXJlbm93IH0gZnJvbSAnQHdvcmt0aWYvcHVyZW5vdy9ydW50aW1lLXdlYic7XG4gKiBpbXBvcnQgeyBQdXJlbm93Um91dGVyIH0gZnJvbSAnQHdvcmt0aWYvcHVyZW5vdyc7XG4gKlxuICogcHVyZW5vdyh7XG4gKiAgIGFwcDogKHsgcm91dGVyIH0pID0+IDxBcHAgcm91dGVyPXtyb3V0ZXJ9IC8+LFxuICogICByb3V0ZXI6IG5ldyBQdXJlbm93Um91dGVyKHsgcm91dGVzLCBkZWZhdWx0czoge30gfSksXG4gKiAgIHNlcnZpY2VOYW1lOiAnbXktYXBwJyxcbiAqICAgc3RhZ2U6ICdkZXYnLFxuICogICByZWdpc3Rlcjoge1xuICogICAgIHBheW1lbnRzOiB7XG4gKiAgICAgICB0aWVzOiBbUGF5bWVudHNUaWVzXSxcbiAqICAgICAgIGxhbWJkYXM6IFtjaGFyZ2VIYW5kbGVyLCByZWZ1bmRIYW5kbGVyXVxuICogICAgIH1cbiAqICAgfSxcbiAqICAgaW5mcmE6IHtcbiAqICAgICBlbnY6IHsgYWNjb3VudDogJzEyMzQ1Njc4OTAxMicsIHJlZ2lvbjogJ3VzLWVhc3QtMScgfSxcbiAqICAgICBzdGFnZTogJ2RldicsXG4gKiAgICAgcmVhY3RFbnRyeTogJy4vc3JjL2luZGV4LnRzeCcsXG4gKiAgICAgYXBpTW9kZTogJ2FwaUdhdGV3YXknXG4gKiAgIH1cbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwdXJld2ViKGNvbmZpZzogUnVudGltZVdlYkNvbmZpZyk6IHZvaWQge1xuICAvLyAxLiBEZXRlY3QgcnVudGltZSBlbnZpcm9ubWVudCB1c2luZyBsaWdodHdlaWdodCBkZXRlY3Rpb25cbiAgY29uc3QgZW52VHlwZSA9IGRldGVjdEVudmlyb25tZW50KCk7XG4gIGNvbnN0IGlzQ0RLQ29udGV4dCA9IGVudlR5cGUgPT09ICdjZGsnO1xuXG4gIC8vIDIuIFZhbGlkYXRlIGNvbmZpZ3VyYXRpb25cbiAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IHZhbGlkYXRlQ29uZmlnKGNvbmZpZywgaXNDREtDb250ZXh0KTtcblxuICBpZiAoIXZhbGlkYXRpb25SZXN1bHQudmFsaWQpIHtcbiAgICB0aHJvdyBuZXcgQ29uZmlnVmFsaWRhdGlvbkVycm9yKHZhbGlkYXRpb25SZXN1bHQuZXJyb3JzKTtcbiAgfVxuXG4gIC8vIDMuIFJvdXRlIHRvIGFwcHJvcHJpYXRlIHBpcGVsaW5lIGJhc2VkIG9uIGVudmlyb25tZW50XG4gIHN3aXRjaCAoZW52VHlwZSkge1xuICAgIGNhc2UgJ2Jyb3dzZXInOiB7XG4gICAgICAvLyBCcm93c2VyIHBpcGVsaW5lIC0gaHlkcmF0ZSBSZWFjdCBhcHBcbiAgICAgIC8vIFRoaXMgaXMgdGhlIG9ubHkgcGF0aCB0aGF0IHJ1bnMgaW4gdGhlIGJyb3dzZXJcbiAgICAgIHB1cmVub3coe1xuICAgICAgICBhcHA6ICh7IHJvdXRlciB9KSA9PiBjb25maWcuYXBwKHsgcm91dGVyIH0pLFxuICAgICAgICByb3V0ZXI6IHB1cmVub3dSb3V0ZXIoe1xuICAgICAgICAgIHJvdXRlcjogY29uZmlnLnJvdXRlci5nZXRSb3V0ZXMoKSBhcyBQdXJlbm93Um91dGVbXSxcbiAgICAgICAgICBkZWZhdWx0czogY29uZmlnLnJvdXRlci5kZWZhdWx0cyBhcyBQdXJlbm93Um91dGVyRGVmYXVsdHMsXG4gICAgICAgIH0pLFxuICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICBzZXJ2aWNlTmFtZTogY29uZmlnLnNlcnZpY2VOYW1lLFxuICAgICAgICAgIHN0YWdlOiBjb25maWcuc3RhZ2UsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNhc2UgJ2xhbWJkYSc6XG4gICAgY2FzZSAnY2RrJzoge1xuICAgICAgLy8gTGFtYmRhIGFuZCBDREsgcGlwZWxpbmVzIHJlcXVpcmUgc2VydmVyLXNpZGUgY29kZVxuICAgICAgLy8gVGhlc2Ugc2hvdWxkIHVzZSB0aGUgc2VydmVyLXNpZGUgZW50cnkgcG9pbnQgZnJvbSBAY29yZS9ydW50aW1lLXdlYlxuICAgICAgY29uc29sZS5sb2coJ1tSdW50aW1lXSBTZXJ2ZXItc2lkZSBwaXBlbGluZSBkZXRlY3RlZCAoJXMpJywgZW52VHlwZSk7XG4gICAgICBwdXJlbm93KHtcbiAgICAgICAgYXBwOiAoeyByb3V0ZXIgfSkgPT4gY29uZmlnLmFwcCh7IHJvdXRlciB9KSxcbiAgICAgICAgcm91dGVyOiBwdXJlbm93Um91dGVyKHtcbiAgICAgICAgICByb3V0ZXI6IGNvbmZpZy5yb3V0ZXIuZ2V0Um91dGVzKCkgYXMgUHVyZW5vd1JvdXRlW10sXG4gICAgICAgICAgZGVmYXVsdHM6IGNvbmZpZy5yb3V0ZXIuZGVmYXVsdHMgYXMgUHVyZW5vd1JvdXRlckRlZmF1bHRzLFxuICAgICAgICB9KSxcbiAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgc2VydmljZU5hbWU6IGNvbmZpZy5zZXJ2aWNlTmFtZSxcbiAgICAgICAgICBzdGFnZTogY29uZmlnLnN0YWdlLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdbUnVudGltZSBXZWJdIExhbWJkYSBydW50aW1lIGRldGVjdGVkLCBza2lwcGluZyBicm93c2VyIHJlbmRlcmluZyBwaXBlbGluZScpO1xuICAgICAgLy8gdGhyb3cgbmV3IEVudmlyb25tZW50RGV0ZWN0aW9uRXJyb3IoXG4gICAgICAvLyAgIGBTZXJ2ZXItc2lkZSBlbnZpcm9ubWVudCBkZXRlY3RlZCAoJHtlbnZUeXBlfSkuIGAgK1xuICAgICAgLy8gICBgVXNlIHRoZSBzZXJ2ZXItc2lkZSBlbnRyeSBwb2ludCBmcm9tICdAY29yZS9ydW50aW1lLXdlYicgZm9yIExhbWJkYSBhbmQgQ0RLIGNvbnRleHRzLmAsXG4gICAgICAvLyApO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6XG4gICAgICBjb25zb2xlLmxvZygnW1J1bnRpbWUgV2ViXSBVbmtub3duIGVudmlyb25tZW50IHR5cGU6ICVzJywgZW52VHlwZSk7XG4gICAgICBicmVhaztcbiAgICAvLyB0aHJvdyBuZXcgRW52aXJvbm1lbnREZXRlY3Rpb25FcnJvcihcbiAgICAvLyAgIGBVbmtub3duIGVudmlyb25tZW50IHR5cGU6ICR7ZW52VHlwZX1gLFxuICAgIC8vICk7XG4gIH1cbn1cblxuXG4iLCAiLypcbiAqIEVsYXN0aWMgTGljZW5zZSAyLjBcbiAqIENvcHlyaWdodCAoQykgMjAyNVx1MjAxM3ByZXNlbnQgUmFtYW4gTWFyb3phdSwgV29yayBUYXJnZXQgSW5zaWdodCBGdW5jdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIENvbnRhY3Q6IHJhbWFuQHdvcmt0aWYuY29tXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIExpY2Vuc2VkIFdvcms6IHdvcmt0aWYucHVyZW5vdy5jZGsgPHdvcmt0aWZfcHVyZW5vd19jZGs+LlxuICogVXNlIG9mIHRoaXMgc29mdHdhcmUgaXMgZ292ZXJuZWQgYnkgdGhlIEVsYXN0aWMgTGljZW5zZSAyLjA7IHNlZSB0aGUgTElDRU5TRSBmaWxlXG4gKiBvciBodHRwczovL3d3dy5lbGFzdGljLmNvL2xpY2Vuc2luZy9lbGFzdGljLWxpY2Vuc2UgZm9yIGRldGFpbHMuXG4gKlxuICogUmUtbGljZW5zaW5nIG5vdGljZTpcbiAqICAgVGhpcyBmaWxlIHdhcyBwcmV2aW91c2x5IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCdXNpbmVzcyBTb3VyY2UgTGljZW5zZSAxLjEgKEJVU0wtMS4xKS5cbiAqICAgQXMgb2YgMjAyNS0wOS0yMiwgaXQgaXMgcmUtbGljZW5zZWQgdW5kZXIgRWxhc3RpYyBMaWNlbnNlIDIuMC5cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRWxhc3RpYy0yLjBcbiAqL1xuXG5cbmltcG9ydCB0eXBlIHsgUHVyZW5vd0NvbmZpZyB9IGZyb20gJ0B3b3JrdGlmL3B1cmVub3cnO1xuXG4vKipcbiAqIFJ1bnRpbWUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiB0aGF0IGV4dGVuZHMgUHVyZW5vd0NvbmZpZy5cbiAqXG4gKiBUaGlzIGludGVyZmFjZSBhZGRzIHJ1bnRpbWUgd29ya3NwYWNlIGZ1bmN0aW9uYWxpdHkgd2hpbGUgcHJlc2VydmluZ1xuICogYWxsIGV4aXN0aW5nIHB1cmVub3cgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGUgcnVudGltZSBjb25maWd1cmF0aW9uXG4gKiBpcyBtZXJnZWQgd2l0aCBwdXJlbm93IGNvbmZpZ3VyYXRpb24gcmF0aGVyIHRoYW4gcmVwbGFjaW5nIGl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bnRpbWVDb25maWcgZXh0ZW5kcyBQdXJlbm93Q29uZmlnIHtcbiAgLyoqXG4gICAqIFJ1bnRpbWUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICAgKiBUaGVzZSBzZXR0aW5ncyBleHRlbmQgcHVyZW5vdyBmdW5jdGlvbmFsaXR5IHdpdGhvdXQgcmVwbGFjaW5nIGl0LlxuICAgKi9cbiAgcnVudGltZT86IHtcbiAgICAvKiogRW5hYmxlIFJ1bnRpbWUgQ29yZSBzdGFjayBkZXBsb3ltZW50IChleHRlbmRzIHB1cmVub3cncyB0d28tc3RhY2sgYXJjaGl0ZWN0dXJlKSAqL1xuICAgIGVuYWJsZVRoaXJkU3RhY2s/OiBib29sZWFuO1xuXG4gICAgLyoqIFJ1bnRpbWUgd2ViIG1vZGUgY29uZmlndXJhdGlvbiAqL1xuICAgIHJ1bnRpbWVXZWJNb2RlPzogJ2RldmVsb3BtZW50JyB8ICdwcm9kdWN0aW9uJztcblxuICAgIC8qKiBBZGRpdGlvbmFsIHJ1bnRpbWUgZmVhdHVyZXMgdG8gZW5hYmxlICovXG4gICAgYWRkaXRpb25hbEZlYXR1cmVzPzogc3RyaW5nW107XG5cbiAgICAvKiogRGV2ZWxvcG1lbnQgc2VydmVyIGVuaGFuY2VtZW50cyAqL1xuICAgIGRldlNlcnZlckVuaGFuY2VtZW50cz86IHtcbiAgICAgIC8qKiBFbmFibGUgaG90IG1vZHVsZSByZXBsYWNlbWVudCAqL1xuICAgICAgaG90UmVsb2FkPzogYm9vbGVhbjtcbiAgICAgIC8qKiBFbmFibGUgZGVidWcgbW9kZSB3aXRoIGFkZGl0aW9uYWwgbG9nZ2luZyAqL1xuICAgICAgZGVidWdNb2RlPzogYm9vbGVhbjtcbiAgICAgIC8qKiBFbmFibGUgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyAqL1xuICAgICAgcGVyZm9ybWFuY2VNb25pdG9yaW5nPzogYm9vbGVhbjtcbiAgICB9O1xuXG4gICAgLyoqIEJ1aWxkIG9wdGltaXphdGlvbnMgKi9cbiAgICBidWlsZE9wdGltaXphdGlvbnM/OiB7XG4gICAgICAvKiogRW5hYmxlIGJ1bmRsZSBhbmFseXNpcyAqL1xuICAgICAgYnVuZGxlQW5hbHlzaXM/OiBib29sZWFuO1xuICAgICAgLyoqIEVuYWJsZSB0cmVlIHNoYWtpbmcgKi9cbiAgICAgIHRyZWVzaGFraW5nPzogYm9vbGVhbjtcbiAgICAgIC8qKiBFbmFibGUgY29kZSBtaW5pZmljYXRpb24gKi9cbiAgICAgIGNvZGVNaW5pZmljYXRpb24/OiBib29sZWFuO1xuICAgIH07XG4gIH07XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBtZXJnaW5nIHV0aWxpdHkgdGhhdCBwcmVzZXJ2ZXMgYWxsIHB1cmVub3cgc2V0dGluZ3NcbiAqIHdoaWxlIGFkZGluZyBydW50aW1lLXNwZWNpZmljIGV4dGVuc2lvbnMuXG4gKlxuICogQHBhcmFtIHB1cmVub3dDb25maWcgLSBCYXNlIHB1cmVub3cgY29uZmlndXJhdGlvblxuICogQHBhcmFtIHJ1bnRpbWVDb25maWcgLSBSdW50aW1lLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gdG8gbWVyZ2VcbiAqIEByZXR1cm5zIE1lcmdlZCBjb25maWd1cmF0aW9uIHdpdGggYWxsIHB1cmVub3cgc2V0dGluZ3MgcHJlc2VydmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZVJ1bnRpbWVDb25maWcoXG4gIHB1cmVub3dDb25maWc6IFB1cmVub3dDb25maWcsXG4gIHJ1bnRpbWVDb25maWc/OiBQYXJ0aWFsPFJ1bnRpbWVDb25maWdbJ3J1bnRpbWUnXT4sXG4pOiBSdW50aW1lQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5wdXJlbm93Q29uZmlnLFxuICAgIHJ1bnRpbWU6IHtcbiAgICAgIGVuYWJsZVRoaXJkU3RhY2s6IGZhbHNlLFxuICAgICAgcnVudGltZVdlYk1vZGU6ICdkZXZlbG9wbWVudCcsXG4gICAgICBhZGRpdGlvbmFsRmVhdHVyZXM6IFtdLFxuXG4gICAgICAvLyBAdG9kbzogY3JpdGlhbCB0byBpbXByb3ZlIHRoaXMgc29sdXRpb24uIE90aGVyd2lzZSBcdTIwMTM+IFVOTkVDRVNTQVJZIE9QVElPTlMgVE9UQUxMWVxuICAgICAgZGV2U2VydmVyRW5oYW5jZW1lbnRzOiB7XG4gICAgICAgIGhvdFJlbG9hZDogdHJ1ZSxcbiAgICAgICAgZGVidWdNb2RlOiBmYWxzZSxcbiAgICAgICAgcGVyZm9ybWFuY2VNb25pdG9yaW5nOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBidWlsZE9wdGltaXphdGlvbnM6IHtcbiAgICAgICAgYnVuZGxlQW5hbHlzaXM6IGZhbHNlLFxuICAgICAgICB0cmVlc2hha2luZzogdHJ1ZSxcbiAgICAgICAgY29kZU1pbmlmaWNhdGlvbjogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICAuLi5ydW50aW1lQ29uZmlnLFxuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogVHlwZSBndWFyZCB0byBjaGVjayBpZiBhIGNvbmZpZ3VyYXRpb24gaXMgYSBSdW50aW1lQ29uZmlnLlxuICpcbiAqIEBwYXJhbSBjb25maWcgLSBDb25maWd1cmF0aW9uIHRvIGNoZWNrXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBjb25maWd1cmF0aW9uIGhhcyBydW50aW1lLXNwZWNpZmljIHByb3BlcnRpZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUnVudGltZUNvbmZpZyhjb25maWc6IGFueSk6IGNvbmZpZyBpcyBSdW50aW1lQ29uZmlnIHtcbiAgcmV0dXJuICEhKGNvbmZpZyAmJiB0eXBlb2YgY29uZmlnID09PSAnb2JqZWN0JyAmJiAncnVudGltZScgaW4gY29uZmlnKTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IHJ1bnRpbWUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmcm9tIGEgUnVudGltZUNvbmZpZy5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gUnVudGltZUNvbmZpZyB0byBleHRyYWN0IGZyb21cbiAqIEByZXR1cm5zIFJ1bnRpbWUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvciB1bmRlZmluZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RSdW50aW1lQ29uZmlnKGNvbmZpZzogUnVudGltZUNvbmZpZyk6IFJ1bnRpbWVDb25maWdbJ3J1bnRpbWUnXSB7XG4gIHJldHVybiBjb25maWcucnVudGltZTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBSdW50aW1lQ29uZmlnIGZyb20gYSBiYXNlIFB1cmVub3dDb25maWcgd2l0aCBkZWZhdWx0IHJ1bnRpbWUgc2V0dGluZ3MuXG4gKlxuICogQHBhcmFtIHB1cmVub3dDb25maWcgLSBCYXNlIHB1cmVub3cgY29uZmlndXJhdGlvblxuICogQHJldHVybnMgUnVudGltZUNvbmZpZyB3aXRoIGRlZmF1bHQgcnVudGltZSBzZXR0aW5nc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUnVudGltZUNvbmZpZyhwdXJlbm93Q29uZmlnOiBQdXJlbm93Q29uZmlnKTogUnVudGltZUNvbmZpZyB7XG4gIHJldHVybiBtZXJnZVJ1bnRpbWVDb25maWcocHVyZW5vd0NvbmZpZyk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAid21CQUFBLElBQUFBLEVBQUEsR0FBQUMsRUFBQUQsRUFBQSxxQkFBQUUsRUFBQSwwQkFBQUMsRUFBQSw4QkFBQUMsRUFBQSx3QkFBQUMsRUFBQSx5QkFBQUMsRUFBQSxvQkFBQUMsRUFBQSx1QkFBQUMsRUFBQSx1QkFBQUMsRUFBQSxZQUFBQyxJQUFBLGVBQUFDLEVBQUFYLEdBaUJBWSxFQUFBWixFQUFjLDRCQWpCZCxnQkNnQkEsSUFBQWEsRUFBdUIsb0JBQ3ZCQyxFQUE0Qiw0QkFDNUJDLEVBQW9ELHdCQThCdkNDLEVBQU4sS0FBc0IsQ0E0QjNCLE1BQU0sUUFBUUMsRUFBMEJDLEVBQXdFLENBQzlHLEdBQUksQ0FDRixRQUFRLEtBQUss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QUNBQyxFQUNlLENBQ2YsTUFBTyxDQUNMLEdBQUdELEVBQ0gsUUFBUyxDQUNQLGlCQUFrQixHQUNsQixlQUFnQixjQUNoQixtQkFBb0IsQ0FBQyxFQUdyQixzQkFBdUIsQ0FDckIsVUFBVyxHQUNYLFVBQVcsR0FDWCxzQkFBdUIsRUFDekIsRUFDQSxtQkFBb0IsQ0FDbEIsZUFBZ0IsR0FDaEIsWUFBYSxHQUNiLGlCQUFrQixFQUNwQixFQUNBLEdBQUdDLENBQ0wsQ0FDRixDQUNGLENBUU8sU0FBU0MsRUFBZ0JDLEVBQXNDLENBQ3BFLE1BQU8sQ0FBQyxFQUFFQSxHQUFVLE9BQU9BLEdBQVcsVUFBWSxZQUFhQSxFQUNqRSxDQVFPLFNBQVNDLEVBQXFCRCxFQUFpRCxDQUNwRixPQUFPQSxFQUFPLE9BQ2hCLENBUU8sU0FBU0UsRUFBb0JMLEVBQTZDLENBQy9FLE9BQU9ELEVBQW1CQyxDQUFhLENBQ3pDIiwKICAibmFtZXMiOiBbImluZGV4X2V4cG9ydHMiLCAiX19leHBvcnQiLCAiQnJvd3NlclBpcGVsaW5lIiwgIkNvbmZpZ1ZhbGlkYXRpb25FcnJvciIsICJFbnZpcm9ubWVudERldGVjdGlvbkVycm9yIiwgImNyZWF0ZVJ1bnRpbWVDb25maWciLCAiZXh0cmFjdFJ1bnRpbWVDb25maWciLCAiaXNSdW50aW1lQ29uZmlnIiwgImlzVmFsaWRTZXJ2aWNlTmFtZSIsICJtZXJnZVJ1bnRpbWVDb25maWciLCAicHVyZXdlYiIsICJfX3RvQ29tbW9uSlMiLCAiX19yZUV4cG9ydCIsICJSZWFjdCIsICJpbXBvcnRfY2xpZW50IiwgImltcG9ydF9yZWFjdF9yb3V0ZXIiLCAiQnJvd3NlclBpcGVsaW5lIiwgImNvbmZpZyIsICJjb250ZXh0IiwgImJyb3dzZXJSb3V0ZXIiLCAiYXBwRWxlbWVudCIsICJyb3V0ZXJQcm92aWRlciIsICJlcnJvciIsICJyb3V0ZXMiLCAiY29udGFpbmVyIiwgImJhc2VVcmwiLCAic3RhZ2UiLCAiaXNWYWxpZFNlcnZpY2VOYW1lIiwgInNlcnZpY2VOYW1lIiwgImltcG9ydF9wdXJlbm93IiwgIkNvbmZpZ1ZhbGlkYXRpb25FcnJvciIsICJlcnJvcnMiLCAiRW52aXJvbm1lbnREZXRlY3Rpb25FcnJvciIsICJtZXNzYWdlIiwgImRldGVjdEVudmlyb25tZW50IiwgImFyZyIsICJ2YWxpZGF0ZUNvbmZpZyIsICJjb25maWciLCAiaXNDREtDb250ZXh0IiwgInB1cmV3ZWIiLCAiZW52VHlwZSIsICJ2YWxpZGF0aW9uUmVzdWx0IiwgInJvdXRlciIsICJtZXJnZVJ1bnRpbWVDb25maWciLCAicHVyZW5vd0NvbmZpZyIsICJydW50aW1lQ29uZmlnIiwgImlzUnVudGltZUNvbmZpZyIsICJjb25maWciLCAiZXh0cmFjdFJ1bnRpbWVDb25maWciLCAiY3JlYXRlUnVudGltZUNvbmZpZyJdCn0K
|
|
1
|
+
"use strict";var d=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var w=(e,r)=>{for(var t in r)d(e,t,{get:r[t],enumerable:!0})},k=(e,r,t,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of C(r))!x.call(e,n)&&n!==t&&d(e,n,{get:()=>r[n],enumerable:!(i=y(r,n))||i.enumerable});return e};var h=e=>k(d({},"__esModule",{value:!0}),e);var S={};w(S,{ConfigValidationError:()=>o,EnvironmentDetectionError:()=>a,createRuntimeConfig:()=>v,extractRuntimeConfig:()=>l,isRuntimeConfig:()=>g,isValidServiceName:()=>f,mergeRuntimeConfig:()=>s,pureweb:()=>R});module.exports=h(S);function f(e){return/^[a-zA-Z][a-zA-Z0-9-]{0,127}$/.test(e)}var o=class extends Error{constructor(r){super(`Configuration validation failed:
|
|
2
|
+
${r.map(t=>` - ${t}`).join(`
|
|
3
|
+
`)}`),this.name="ConfigValidationError",this.errors=r,Error.captureStackTrace(this,this.constructor)}},a=class extends Error{constructor(r){super(r),this.name="EnvironmentDetectionError",Error.captureStackTrace(this,this.constructor)}};function N(){return typeof window<"u"?"browser":typeof process<"u"&&process.env?.AWS_LAMBDA_FUNCTION_NAME?"lambda":(typeof process<"u"&&(process.env?.PURENOW_MODE==="cdk"||process.env?.CDK_DEFAULT_ACCOUNT||process.env?.CDK_DEFAULT_REGION||process.argv?.some(e=>e.includes("cdk")||e.includes("synth"))),"cdk")}function T(e,r){let t=[];return(!e.serviceName||!/^[a-zA-Z][a-zA-Z0-9-]{0,127}$/.test(e.serviceName))&&t.push("serviceName must start with a letter, contain only alphanumeric characters and hyphens, and be max 128 characters"),["dev","staging","prod"].includes(e.stage)||t.push("stage must be one of: dev, staging, prod"),r&&!e.infra&&t.push("infra configuration is required in CDK context"),{valid:t.length===0,errors:t}}function R(e){let r=N(),i=T(e,r==="cdk");if(!i.valid)throw new o(i.errors);switch(r){case"browser":{let u=(globalThis.require||require)("@worktif/purenow"),{purenow:c,purenowRouter:m}=u;c({app:({router:p})=>e.app({router:p}),router:m({router:e.router.getRoutes(),defaults:e.router.defaults}),config:{serviceName:e.serviceName,stage:e.stage}});break}case"lambda":case"cdk":{console.log("[Runtime] Server-side pipeline detected (%s)",r);let u=(globalThis.require||require)("@worktif/purenow"),{purenow:c,purenowRouter:m}=u;c({app:({router:p})=>e.app({router:p}),router:m({router:e.router.getRoutes(),defaults:e.router.defaults}),config:{serviceName:e.serviceName,stage:e.stage}});break}default:console.log("[Runtime Web] Unknown environment type: %s",r);break}}function s(e,r){return{...e,runtime:{enableThirdStack:!1,runtimeWebMode:"development",additionalFeatures:[],devServerEnhancements:{hotReload:!0,debugMode:!1,performanceMonitoring:!1},buildOptimizations:{bundleAnalysis:!1,treeshaking:!0,codeMinification:!0},...r}}}function g(e){return!!(e&&typeof e=="object"&&"runtime"in e)}function l(e){return e.runtime}function v(e){return s(e)}0&&(module.exports={ConfigValidationError,EnvironmentDetectionError,createRuntimeConfig,extractRuntimeConfig,isRuntimeConfig,isValidServiceName,mergeRuntimeConfig,pureweb});
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzeCIsICIuLi8uLi8uLi9zcmMvbGliL3J1bnRpbWUtd2ViL3R5cGVzL2NvbmZpZy50eXBlcy50cyIsICIuLi8uLi8uLi9zcmMvbGliL3J1bnRpbWUtd2ViL3B1cmV3ZWIudHMiLCAiLi4vLi4vLi4vc3JjL2xpYi9ydW50aW1lLXdlYi9ydW50aW1lLmNvbmZpZy50eXBlcy50c3giXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qXG4gKiBFbGFzdGljIExpY2Vuc2UgMi4wXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjVcdTIwMTNwcmVzZW50IFJhbWFuIE1hcm96YXUsIFdvcmsgVGFyZ2V0IEluc2lnaHQgRnVuY3Rpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBDb250YWN0OiByYW1hbkB3b3JrdGlmLmNvbVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBMaWNlbnNlZCBXb3JrOiB3b3JrdGlmLnB1cmVub3cuY2RrIDx3b3JrdGlmX3B1cmVub3dfY2RrPi5cbiAqIFVzZSBvZiB0aGlzIHNvZnR3YXJlIGlzIGdvdmVybmVkIGJ5IHRoZSBFbGFzdGljIExpY2Vuc2UgMi4wOyBzZWUgdGhlIExJQ0VOU0UgZmlsZVxuICogb3IgaHR0cHM6Ly93d3cuZWxhc3RpYy5jby9saWNlbnNpbmcvZWxhc3RpYy1saWNlbnNlIGZvciBkZXRhaWxzLlxuICpcbiAqIFJlLWxpY2Vuc2luZyBub3RpY2U6XG4gKiAgIFRoaXMgZmlsZSB3YXMgcHJldmlvdXNseSBkaXN0cmlidXRlZCB1bmRlciB0aGUgQnVzaW5lc3MgU291cmNlIExpY2Vuc2UgMS4xIChCVVNMLTEuMSkuXG4gKiAgIEFzIG9mIDIwMjUtMDktMjIsIGl0IGlzIHJlLWxpY2Vuc2VkIHVuZGVyIEVsYXN0aWMgTGljZW5zZSAyLjAuXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVsYXN0aWMtMi4wXG4gKi9cblxuLy8gRXhwb3J0IHJ1bnRpbWUtd2ViIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgKGV4Y2x1ZGluZyBCcm93c2VyUGlwZWxpbmUgdG8gcmVkdWNlIGJ1bmRsZSBzaXplKVxuZXhwb3J0IHtcbiAgICBwdXJld2ViLFxuICAgIENvbmZpZ1ZhbGlkYXRpb25FcnJvcixcbiAgICBFbnZpcm9ubWVudERldGVjdGlvbkVycm9yLFxuICAgIGNyZWF0ZVJ1bnRpbWVDb25maWcsXG4gICAgZXh0cmFjdFJ1bnRpbWVDb25maWcsXG4gICAgaXNSdW50aW1lQ29uZmlnLFxuICAgIG1lcmdlUnVudGltZUNvbmZpZyxcbiAgICBpc1ZhbGlkU2VydmljZU5hbWUsXG59IGZyb20gJy4vbGliL3J1bnRpbWUtd2ViJztcblxuLy8gRXhwb3J0IHR5cGVzXG5leHBvcnQgdHlwZSB7XG4gICAgUnVudGltZVdlYkNvbmZpZyxcbiAgICBUeXBlU2FmZVB1cmVub3dDb25maWcsXG4gICAgU3RhZ2UsXG4gICAgU2VydmljZU5hbWVzLFxuICAgIExhbWJkYUlkcyxcbiAgICBWYWxpZFNlcnZpY2VOYW1lLFxuICAgIFJ1bnRpbWVDb25maWcsXG59IGZyb20gJy4vbGliL3J1bnRpbWUtd2ViJztcblxuLy8gRXhwb3J0IHJ1bnRpbWUgY29uZmlndXJhdGlvbiB0eXBlcyBhbmQgdXRpbGl0aWVzXG4vLyBleHBvcnQgKiBmcm9tICcuL3V0aWxzJztcblxuLy8gTm90ZTogV2UgZG9uJ3QgcmUtZXhwb3J0IGZyb20gQHdvcmt0aWYvcHVyZW5vdyB0byBhdm9pZCBidW5kbGluZyBpdCBpbiB1c2VyIGFwcGxpY2F0aW9uc1xuLy8gVXNlcnMgc2hvdWxkIGltcG9ydCBmcm9tIEB3b3JrdGlmL3B1cmVub3cgZGlyZWN0bHkgaWYgdGhleSBuZWVkIHRob3NlIGZ1bmN0aW9uc1xuIiwgIi8qXG4gKiBFbGFzdGljIExpY2Vuc2UgMi4wXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjVcdTIwMTNwcmVzZW50IFJhbWFuIE1hcm96YXUsIFdvcmsgVGFyZ2V0IEluc2lnaHQgRnVuY3Rpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBDb250YWN0OiByYW1hbkB3b3JrdGlmLmNvbVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBMaWNlbnNlZCBXb3JrOiB3b3JrdGlmLnB1cmVub3cuY2RrIDx3b3JrdGlmX3B1cmVub3dfY2RrPi5cbiAqIFVzZSBvZiB0aGlzIHNvZnR3YXJlIGlzIGdvdmVybmVkIGJ5IHRoZSBFbGFzdGljIExpY2Vuc2UgMi4wOyBzZWUgdGhlIExJQ0VOU0UgZmlsZVxuICogb3IgaHR0cHM6Ly93d3cuZWxhc3RpYy5jby9saWNlbnNpbmcvZWxhc3RpYy1saWNlbnNlIGZvciBkZXRhaWxzLlxuICpcbiAqIFJlLWxpY2Vuc2luZyBub3RpY2U6XG4gKiAgIFRoaXMgZmlsZSB3YXMgcHJldmlvdXNseSBkaXN0cmlidXRlZCB1bmRlciB0aGUgQnVzaW5lc3MgU291cmNlIExpY2Vuc2UgMS4xIChCVVNMLTEuMSkuXG4gKiAgIEFzIG9mIDIwMjUtMDktMjIsIGl0IGlzIHJlLWxpY2Vuc2VkIHVuZGVyIEVsYXN0aWMgTGljZW5zZSAyLjAuXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVsYXN0aWMtMi4wXG4gKi9cblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBJbmZyYU9wdGlvbnMgfSBmcm9tICcuL2luZnJhLnR5cGVzJztcbmltcG9ydCB0eXBlIHsgTWljcm9zZXJ2aWNlRGVmaW5pdGlvbiB9IGZyb20gJy4vbWljcm9zZXJ2aWNlLnR5cGVzJztcblxuLyoqXG4gKiBQdXJlbm93Um91dGVyIGludGVyZmFjZSBmb3IgcnVudGltZS13ZWIgaW50ZWdyYXRpb24uXG4gKlxuICogRGVmaW5lcyB0aGUgZXNzZW50aWFsIG1ldGhvZHMgbmVlZGVkIGJ5IHRoZSBydW50aW1lLXdlYiBwaXBlbGluZXMuXG4gKiBUaGlzIGludGVyZmFjZSBtYXRjaGVzIHRoZSBhY3R1YWwgUHVyZW5vd1JvdXRlciBjbGFzcyBmcm9tIEBsaWIvcmVhY3QvcHVyZW5vdy5yb3V0ZXIuXG4gKi9cbmludGVyZmFjZSBQdXJlbm93Um91dGVyIHtcbiAgLyoqXG4gICAqIEdldCBhbGwgcm91dGUgb2JqZWN0cyBhcyBhbiBhcnJheS5cbiAgICogVXNlZCBmb3IgY3JlYXRpbmcgYnJvd3NlciByb3V0ZXJzIGFuZCBTU1Igc3RhdGljIGhhbmRsZXJzLlxuICAgKi9cbiAgZ2V0Um91dGVzKCk6IEFycmF5PHtcbiAgICBwYXRoPzogc3RyaW5nO1xuICAgIGVsZW1lbnQ/OiB1bmtub3duO1xuICAgIGxvYWRlcj86IHVua25vd247XG4gICAgY2hpbGRyZW4/OiB1bmtub3duO1xuICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gIH0+O1xuXG4gIC8qKlxuICAgKiBGaW5kIGEgcm91dGUgYnkgaXRzIElELlxuICAgKi9cbiAgZ2V0Um91dGVCeUlkPyhpZDogc3RyaW5nKTogdW5rbm93bjtcblxuICAvKipcbiAgICogRmluZCBhIHJvdXRlIGJ5IGl0cyBwYXRoLlxuICAgKi9cbiAgZ2V0Um91dGVCeVBhdGg/KHBhdGg6IHN0cmluZyk6IHVua25vd247XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcm91dGVzIGFycmF5IChnZXR0ZXIpLlxuICAgKi9cbiAgcm91dGVzPzogQXJyYXk8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgZGVmYXVsdHM/OiB1bmtub3duO1xufVxuXG4vKipcbiAqIFN0YWdlIGVudmlyb25tZW50IGZvciBkZXBsb3ltZW50LlxuICpcbiAqIC0gYGRldmA6IERldmVsb3BtZW50IGVudmlyb25tZW50XG4gKiAtIGBzdGFnaW5nYDogU3RhZ2luZy9wcmUtcHJvZHVjdGlvbiBlbnZpcm9ubWVudFxuICogLSBgcHJvZGA6IFByb2R1Y3Rpb24gZW52aXJvbm1lbnRcbiAqL1xuZXhwb3J0IHR5cGUgU3RhZ2UgPSAnZGV2JyB8ICdzdGFnaW5nJyB8ICdwcm9kJztcblxuLyoqXG4gKiBVdGlsaXR5IHR5cGUgdG8gZXh0cmFjdCBzZXJ2aWNlIG5hbWVzIGZyb20gcmVnaXN0ZXIgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBUaGlzIGVuYWJsZXMgY29tcGlsZS10aW1lIHZhbGlkYXRpb24gb2Ygc2VydmljZSBuYW1lcyBhbmQgcHJvdmlkZXNcbiAqIHR5cGUtc2FmZSBhY2Nlc3MgdG8gc2VydmljZSBpZGVudGlmaWVycyB0aHJvdWdob3V0IHRoZSBmcmFtZXdvcmsuXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgcmVnaXN0ZXIgY29uZmlndXJhdGlvbiBvYmplY3QgdHlwZVxuICovXG5leHBvcnQgdHlwZSBTZXJ2aWNlTmFtZXM8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIE1pY3Jvc2VydmljZURlZmluaXRpb24+PiA9IGtleW9mIFQ7XG5cbi8qKlxuICogVXRpbGl0eSB0eXBlIHRvIGdlbmVyYXRlIExhbWJkYSBJRHMgZnJvbSBzZXJ2aWNlIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogQ29tYmluZXMgc2VydmljZSBuYW1lcyB3aXRoIExhbWJkYSBJRHMgdG8gY3JlYXRlIGZ1bGx5IHF1YWxpZmllZFxuICogTGFtYmRhIGlkZW50aWZpZXJzIGZvciB0eXBlLXNhZmUgTGFtYmRhIHJlc29sdXRpb24uXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgcmVnaXN0ZXIgY29uZmlndXJhdGlvbiBvYmplY3QgdHlwZVxuICovXG5leHBvcnQgdHlwZSBMYW1iZGFJZHM8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIE1pY3Jvc2VydmljZURlZmluaXRpb24+PiA9IHtcbiAgW0sgaW4ga2V5b2YgVF06IFRbS11bJ2xhbWJkYXMnXVtudW1iZXJdIGV4dGVuZHMgeyBpZDogaW5mZXIgSSB9XG4gICAgPyBJIGV4dGVuZHMgc3RyaW5nXG4gICAgICA/IGAke0sgJiBzdHJpbmd9LiR7SX1gXG4gICAgICA6IG5ldmVyXG4gICAgOiBuZXZlcjtcbn1ba2V5b2YgVF07XG5cbi8qKlxuICogVHlwZSBjb25zdHJhaW50IGZvciB2YWxpZCBzZXJ2aWNlIG5hbWVzLlxuICpcbiAqIEVuc3VyZXMgc2VydmljZSBuYW1lcyBmb2xsb3cgdGhlIHZhbGlkYXRpb24gcGF0dGVybjpcbiAqIC0gTXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyIChhLXosIEEtWilcbiAqIC0gQ2FuIGNvbnRhaW4gbGV0dGVycywgbnVtYmVycywgYW5kIGh5cGhlbnNcbiAqIC0gTWF4aW11bSBsZW5ndGg6IDEyOCBjaGFyYWN0ZXJzXG4gKlxuICogVGhpcyBpcyBhIGJyYW5kZWQgdHlwZSB0aGF0IHByb3ZpZGVzIGNvbXBpbGUtdGltZSB2YWxpZGF0aW9uLlxuICovXG5leHBvcnQgdHlwZSBWYWxpZFNlcnZpY2VOYW1lID0gc3RyaW5nICYgeyByZWFkb25seSBfX2JyYW5kOiAnVmFsaWRTZXJ2aWNlTmFtZScgfTtcblxuLyoqXG4gKiBUeXBlIGd1YXJkIHRvIHZhbGlkYXRlIHNlcnZpY2UgbmFtZSBmb3JtYXQuXG4gKlxuICogQHBhcmFtIHNlcnZpY2VOYW1lIC0gVGhlIHNlcnZpY2UgbmFtZSB0byB2YWxpZGF0ZVxuICogQHJldHVybnMgVHlwZSBwcmVkaWNhdGUgaW5kaWNhdGluZyBpZiB0aGUgc2VydmljZSBuYW1lIGlzIHZhbGlkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkU2VydmljZU5hbWUoc2VydmljZU5hbWU6IHN0cmluZyk6IHNlcnZpY2VOYW1lIGlzIFZhbGlkU2VydmljZU5hbWUge1xuICByZXR1cm4gL15bYS16QS1aXVthLXpBLVowLTktXXswLDEyN30kLy50ZXN0KHNlcnZpY2VOYW1lKTtcbn1cblxuLyoqXG4gKiBNYWluIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlIGZvciBSdW50aW1lIFRhcmdldCBDb3JlLlxuICpcbiAqIFRoaXMgaW50ZXJmYWNlIHByb3ZpZGVzIGEgdW5pZmllZCBjb25maWd1cmF0aW9uIHRoYXQgd29ya3MgYWNyb3NzIGFsbCBleGVjdXRpb24gY29udGV4dHM6XG4gKiAtIEJyb3dzZXI6IEh5ZHJhdGVzIFJlYWN0IGFwcGxpY2F0aW9uIHdpdGggY2xpZW50LXNpZGUgcm91dGluZ1xuICogLSBMYW1iZGE6IEV4ZWN1dGVzIHNlcnZlci1zaWRlIHJlbmRlcmluZyBhbmQgYnVzaW5lc3MgbG9naWNcbiAqIC0gQ0RLOiBTeW50aGVzaXplcyBDbG91ZEZvcm1hdGlvbiBpbmZyYXN0cnVjdHVyZVxuICpcbiAqIEB0ZW1wbGF0ZSBUUmVnaXN0ZXIgLSBUaGUgcmVnaXN0ZXIgY29uZmlndXJhdGlvbiB0eXBlIGZvciB0eXBlLXNhZmUgc2VydmljZSBuYW1lc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBwdXJlbm93IH0gZnJvbSAnQHdvcmt0aWYvcHVyZW5vdy9ydW50aW1lLXdlYic7XG4gKiBpbXBvcnQgeyBQdXJlbm93Um91dGVyIH0gZnJvbSAnQHdvcmt0aWYvcHVyZW5vdyc7XG4gKlxuICogY29uc3QgY29uZmlnID0ge1xuICogICBhcHA6ICh7IHJvdXRlciB9KSA9PiA8QXBwIHJvdXRlcj17cm91dGVyfSAvPixcbiAqICAgcm91dGVyOiBuZXcgUHVyZW5vd1JvdXRlcih7IHJvdXRlcjogcm91dGVzLCBkZWZhdWx0czoge30gfSksXG4gKiAgIHNlcnZpY2VOYW1lOiAnbXktYXBwJyxcbiAqICAgc3RhZ2U6ICdkZXYnLFxuICogICByZWdpc3Rlcjoge1xuICogICAgIHBheW1lbnRzOiB7XG4gKiAgICAgICB0aWVzOiBbUGF5bWVudHNUaWVzXSxcbiAqICAgICAgIGxhbWJkYXM6IFtjaGFyZ2VIYW5kbGVyLCByZWZ1bmRIYW5kbGVyXVxuICogICAgIH0sXG4gKiAgICAgdXNlcnM6IHtcbiAqICAgICAgIHRpZXM6IFtVc2Vyc1RpZXNdLFxuICogICAgICAgbGFtYmRhczogW2NyZWF0ZVVzZXJIYW5kbGVyLCBnZXRVc2VySGFuZGxlcl1cbiAqICAgICB9XG4gKiAgIH0gYXMgY29uc3QsICAvLyBVc2UgJ2FzIGNvbnN0JyBmb3IgYmV0dGVyIHR5cGUgaW5mZXJlbmNlXG4gKiAgIGluZnJhOiB7XG4gKiAgICAgZW52OiB7IGFjY291bnQ6ICcxMjM0NTY3ODkwMTInLCByZWdpb246ICd1cy1lYXN0LTEnIH0sXG4gKiAgICAgc3RhZ2U6ICdkZXYnLFxuICogICAgIHJlYWN0RW50cnk6ICcuL3NyYy9pbmRleC50c3gnLFxuICogICAgIGFwaU1vZGU6ICdhcGlHYXRld2F5J1xuICogICB9XG4gKiB9IHNhdGlzZmllcyBQdXJlbm93Q29uZmlnO1xuICpcbiAqIHB1cmVub3coY29uZmlnKTtcbiAqIGBgYFxuICpcbiAqIEB0b2RvOiBhZnRlciBSdW50aW1lV2ViIHJlcG8gd2lsbCBiZSByZXNvbHZlZCwgUnVudGltZVdlYkNvbmZpZyBNVVNUIGV4dGVuZCBQdXJlbm93Q29uZmlnIENvcmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW50aW1lV2ViQ29uZmlnPFRSZWdpc3RlciBleHRlbmRzIFJlY29yZDxzdHJpbmcsIE1pY3Jvc2VydmljZURlZmluaXRpb24+ID0gUmVjb3JkPHN0cmluZywgTWljcm9zZXJ2aWNlRGVmaW5pdGlvbj4+IHtcbiAgLyoqXG4gICAqIFJlYWN0IGFwcGxpY2F0aW9uIGNvbXBvbmVudCBmYWN0b3J5IGZ1bmN0aW9uLlxuICAgKlxuICAgKiBSZWNlaXZlcyB0aGUgcm91dGVyIGluc3RhbmNlIGFzIGEgZGVwZW5kZW5jeSBhbmQgcmV0dXJucyB0aGUgcm9vdCBSZWFjdCBlbGVtZW50LlxuICAgKiBUaGlzIHBhdHRlcm4gZW5hYmxlcyBkZXBlbmRlbmN5IGluamVjdGlvbiBvZiB0aGUgcm91dGVyIGludG8geW91ciBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGRlcHMgLSBEZXBlbmRlbmNpZXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJvdXRlclxuICAgKiBAcGFyYW0gZGVwcy5yb3V0ZXIgLSBQdXJlbm93Um91dGVyIGluc3RhbmNlIGZvciBuYXZpZ2F0aW9uIGFuZCByb3V0aW5nXG4gICAqIEByZXR1cm5zIFJvb3QgUmVhY3QgZWxlbWVudCAoUmVhY3QuUmVhY3RFbGVtZW50KVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGFwcDogKHsgcm91dGVyIH0pID0+IDxBcHAgcm91dGVyPXtyb3V0ZXJ9IC8+XG4gICAqIGBgYFxuICAgKi9cbiAgYXBwOiAoZGVwczogeyByb3V0ZXI6IFB1cmVub3dSb3V0ZXIgfSkgPT4gUmVhY3QuUmVhY3RFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBQdXJlbm93Um91dGVyIGluc3RhbmNlIGZvciBhcHBsaWNhdGlvbiByb3V0aW5nLlxuICAgKlxuICAgKiBEZWZpbmVzIGFsbCByb3V0ZXMsIGxvYWRlcnMsIGFuZCBuYXZpZ2F0aW9uIGNvbmZpZ3VyYXRpb24uXG4gICAqIFRoZSByb3V0ZXIgaXMgdXNlZCBpbiBib3RoIHNlcnZlci1zaWRlIHJlbmRlcmluZyAoTGFtYmRhKSBhbmQgY2xpZW50LXNpZGUgaHlkcmF0aW9uIChicm93c2VyKS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgUHVyZW5vd1JvdXRlcn0gZm9yIHJvdXRlciBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogcm91dGVyOiBuZXcgUHVyZW5vd1JvdXRlcih7XG4gICAqICAgcm91dGVyOiBbXG4gICAqICAgICB7IHBhdGg6ICcvJywgZWxlbWVudDogPEhvbWUgLz4gfSxcbiAgICogICAgIHsgcGF0aDogJy9hYm91dCcsIGVsZW1lbnQ6IDxBYm91dCAvPiB9XG4gICAqICAgXSxcbiAgICogICBkZWZhdWx0czoge31cbiAgICogfSlcbiAgICogYGBgXG4gICAqL1xuICByb3V0ZXI6IFB1cmVub3dSb3V0ZXI7XG5cbiAgLyoqXG4gICAqIFNlcnZpY2UgbmFtZSBpZGVudGlmaWVyIGZvciB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIFVzZWQgYXMgYSBwcmVmaXggZm9yIGFsbCBBV1MgcmVzb3VyY2VzIChMYW1iZGEgZnVuY3Rpb25zLCBBUEkgR2F0ZXdheSwgUzMgYnVja2V0cywgZXRjLikuXG4gICAqIE11c3QgYmUgdW5pcXVlIHdpdGhpbiB5b3VyIEFXUyBhY2NvdW50IGFuZCByZWdpb24uXG4gICAqXG4gICAqICoqVmFsaWRhdGlvbiBSdWxlcyoqOlxuICAgKiAtIE11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciAoYS16LCBBLVopXG4gICAqIC0gQ2FuIGNvbnRhaW4gbGV0dGVycywgbnVtYmVycywgYW5kIGh5cGhlbnNcbiAgICogLSBNYXhpbXVtIGxlbmd0aDogMTI4IGNoYXJhY3RlcnNcbiAgICogLSBQYXR0ZXJuOiBgL15bYS16QS1aXVthLXpBLVowLTktXXswLDEyN30kL2BcbiAgICpcbiAgICogKipFeGFtcGxlcyoqOlxuICAgKiAtIFZhbGlkOiBgbXktYXBwYCwgYE15QXBwYCwgYGFwcDEyM2AsIGBteS1hcHAtdjJgXG4gICAqIC0gSW52YWxpZDogYDEyM2FwcGAgKHN0YXJ0cyB3aXRoIG51bWJlciksIGBteV9hcHBgICh1bmRlcnNjb3JlKSwgYG15IGFwcGAgKHNwYWNlKVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIHNlcnZpY2VOYW1lOiAnbXktYXBwbGljYXRpb24nXG4gICAqIGBgYFxuICAgKi9cbiAgc2VydmljZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogRGVwbG95bWVudCBzdGFnZS9lbnZpcm9ubWVudC5cbiAgICpcbiAgICogRGV0ZXJtaW5lcyB0aGUgZW52aXJvbm1lbnQtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBhbmQgcmVzb3VyY2UgbmFtaW5nLlxuICAgKiBVc2VkIHRvIGNyZWF0ZSBzZXBhcmF0ZSBpbmZyYXN0cnVjdHVyZSBzdGFja3MgZm9yIGRpZmZlcmVudCBlbnZpcm9ubWVudHMuXG4gICAqXG4gICAqICoqVmFsdWVzKio6XG4gICAqIC0gYGRldmA6IERldmVsb3BtZW50IGVudmlyb25tZW50IChsb2NhbCB0ZXN0aW5nLCByYXBpZCBpdGVyYXRpb24pXG4gICAqIC0gYHN0YWdpbmdgOiBTdGFnaW5nL3ByZS1wcm9kdWN0aW9uIGVudmlyb25tZW50IChRQSwgaW50ZWdyYXRpb24gdGVzdGluZylcbiAgICogLSBgcHJvZGA6IFByb2R1Y3Rpb24gZW52aXJvbm1lbnQgKGxpdmUgdXNlcnMpXG4gICAqXG4gICAqICoqSW1wYWN0Kio6XG4gICAqIC0gUmVzb3VyY2UgbmFtaW5nOiBge3NlcnZpY2VOYW1lfS17cmVzb3VyY2V9LXtzdGFnZX1gXG4gICAqIC0gRW52aXJvbm1lbnQgdmFyaWFibGVzOiBEaWZmZXJlbnQgY29uZmlncyBwZXIgc3RhZ2VcbiAgICogLSBDYWNoZSBUVEw6IFNob3J0ZXIgaW4gZGV2LCBsb25nZXIgaW4gcHJvZFxuICAgKiAtIExvZ2dpbmc6IE1vcmUgdmVyYm9zZSBpbiBkZXYsIHN0cnVjdHVyZWQgaW4gcHJvZFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIHN0YWdlOiAnZGV2J1xuICAgKiBgYGBcbiAgICovXG4gIHN0YWdlOiBTdGFnZTtcblxuICAvKipcbiAgICogTWljcm9zZXJ2aWNlIHJlZ2lzdHJ5IChydW50aW1lLWxldmVsIGNvbmZpZ3VyYXRpb24pLlxuICAgKlxuICAgKiAqKlJlcXVpcmVkKio6IERlZmluZXMgYWxsIG1pY3Jvc2VydmljZXMsIHRoZWlyIERJIGNvbnRhaW5lcnMsIGFuZCBMYW1iZGEgZW5kcG9pbnRzLlxuICAgKiAqKlVzZWQgaW4gYWxsIGNvbnRleHRzKio6IEJyb3dzZXIgKGZvciB0eXBlIGdlbmVyYXRpb24pLCBMYW1iZGEgKGZvciBESSksIENESyAoZm9yIGluZnJhc3RydWN0dXJlKS5cbiAgICogKipBcmNoaXRlY3R1cmUqKjogVGhpcyBpcyBydW50aW1lIGNvbmZpZ3VyYXRpb24sIHNlcGFyYXRlIGZyb20gaW5mcmFzdHJ1Y3R1cmUgY29uY2VybnMuXG4gICAqXG4gICAqIEVhY2ggbWljcm9zZXJ2aWNlIGdldHMgaXRzIG93biBQdXJlQ29udGFpbmVyIGluc3RhbmNlIGJ1aWx0IGZyb20gdGhlIFRpZXMgY2xhc3Nlcy5cbiAgICogTGFtYmRhIGZ1bmN0aW9ucyBhcmUgYXV0b21hdGljYWxseSBjcmVhdGVkIGFuZCB3aXJlZCB3aXRoIGRlcGVuZGVuY3kgaW5qZWN0aW9uLlxuICAgKlxuICAgKiAqKlR5cGUgU2FmZXR5Kio6IFNlcnZpY2UgbmFtZXMgYXJlIGRlcml2ZWQgZnJvbSBvYmplY3Qga2V5cywgZW5zdXJpbmcgY29tcGlsZS10aW1lIHZhbGlkYXRpb24uXG4gICAqICoqTm8gTWFnaWMgU3RyaW5ncyoqOiBBbGwgc2VydmljZSBpZGVudGlmaWVycyBhcmUgdHlwZS1zYWZlIGFuZCBhdXRvLWdlbmVyYXRlZC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgTWljcm9zZXJ2aWNlRGVmaW5pdGlvbn0gZm9yIG1pY3Jvc2VydmljZSBzdHJ1Y3R1cmVcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiByZWdpc3Rlcjoge1xuICAgKiAgIHBheW1lbnRzOiB7XG4gICAqICAgICB0aWVzOiBbUGF5bWVudHNUaWVzLCBCaWxsaW5nVGllc10sXG4gICAqICAgICBsYW1iZGFzOiBbY2hhcmdlSGFuZGxlciwgcmVmdW5kSGFuZGxlciwgd2ViaG9va0hhbmRsZXJdXG4gICAqICAgfSxcbiAgICogICB1c2Vyczoge1xuICAgKiAgICAgdGllczogW1VzZXJzVGllcywgQXV0aFRpZXNdLFxuICAgKiAgICAgbGFtYmRhczogW2NyZWF0ZVVzZXJIYW5kbGVyLCBnZXRVc2VySGFuZGxlciwgbG9naW5IYW5kbGVyXVxuICAgKiAgIH1cbiAgICogfSBhcyBjb25zdCAgLy8gVXNlICdhcyBjb25zdCcgZm9yIGJldHRlciB0eXBlIGluZmVyZW5jZVxuICAgKiBgYGBcbiAgICovXG4gIHJlZ2lzdGVyOiBUUmVnaXN0ZXI7XG5cbiAgLyoqXG4gICAqIEluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gZm9yIENESyBkZXBsb3ltZW50LlxuICAgKlxuICAgKiAqKk9wdGlvbmFsKio6IE9ubHkgcmVxdWlyZWQgd2hlbiBydW5uaW5nIGluIENESyBjb250ZXh0IChzeW50aGVzaXppbmcgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGVzKS5cbiAgICogKipOb3QgdXNlZCoqOiBJbiBicm93c2VyIGFuZCBMYW1iZGEgY29udGV4dHMgKHJ1bnRpbWUgY29uZmlndXJhdGlvbiBpcyBpbiByZWdpc3RlcikuXG4gICAqICoqUHVyZSBpbmZyYXN0cnVjdHVyZSoqOiBDb250YWlucyBvbmx5IEFXUyByZXNvdXJjZSBjb25maWd1cmF0aW9uLCBubyBidXNpbmVzcyBsb2dpYy5cbiAgICpcbiAgICogRGVmaW5lczpcbiAgICogLSBBV1MgYWNjb3VudCBhbmQgcmVnaW9uXG4gICAqIC0gTGFtYmRhIGNvbmZpZ3VyYXRpb24gKG1lbW9yeSwgdGltZW91dCwgVlBDKVxuICAgKiAtIEFQSSBHYXRld2F5IG9yIExhbWJkYSBVUkwgbW9kZVxuICAgKiAtIEN1c3RvbSBkb21haW4gY29uZmlndXJhdGlvblxuICAgKiAtIFJlYWN0IGVudHJ5IHBvaW50IGZvciBTU1IgTGFtYmRhXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIEluZnJhT3B0aW9uc30gZm9yIGRldGFpbGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGluZnJhOiB7XG4gICAqICAgZW52OiB7IGFjY291bnQ6ICcxMjM0NTY3ODkwMTInLCByZWdpb246ICd1cy1lYXN0LTEnIH0sXG4gICAqICAgc3RhZ2U6ICdkZXYnLFxuICAgKiAgIHJlYWN0RW50cnk6ICcuL3NyYy9pbmRleC50c3gnLFxuICAgKiAgIGFwaU1vZGU6ICdhcGlHYXRld2F5JyxcbiAgICogICBsYW1iZGFNZW1vcnlTaXplOiAxMDI0LFxuICAgKiAgIGxhbWJkYVRpbWVvdXQ6IDMwLFxuICAgKiAgIGRvbWFpbjoge1xuICAgKiAgICAgcm9vdERvbWFpbjogJ215YXBwLmNvbScsXG4gICAqICAgICBzdWJkb21haW46ICdhcGknXG4gICAqICAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgaW5mcmE/OiBJbmZyYU9wdGlvbnM7XG59XG5cbi8qKlxuICogVHlwZS1zYWZlIFB1cmVub3cgY29uZmlndXJhdGlvbiB3aXRoIGluZmVycmVkIHNlcnZpY2UgbmFtZXMuXG4gKlxuICogVGhpcyB0eXBlIHByb3ZpZGVzIFJ1bnRpbWUgQ29yZSB0eXBlIHNhZmV0eSBieSBpbmZlcnJpbmcgc2VydmljZSBuYW1lcyBmcm9tIHRoZSByZWdpc3RlclxuICogY29uZmlndXJhdGlvbiwgZW5hYmxpbmcgY29tcGlsZS10aW1lIHZhbGlkYXRpb24gb2Ygc2VydmljZSByZWZlcmVuY2VzLlxuICpcbiAqIEB0ZW1wbGF0ZSBUUmVnaXN0ZXIgLSBUaGUgcmVnaXN0ZXIgY29uZmlndXJhdGlvbiB0eXBlXG4gKi9cbmV4cG9ydCB0eXBlIFR5cGVTYWZlUHVyZW5vd0NvbmZpZzxUUmVnaXN0ZXIgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBNaWNyb3NlcnZpY2VEZWZpbml0aW9uPj4gPVxuICBSdW50aW1lV2ViQ29uZmlnPFRSZWdpc3Rlcj4gJiB7XG4gIC8qKlxuICAgKiBUeXBlLXNhZmUgc2VydmljZSBuYW1lcyBkZXJpdmVkIGZyb20gcmVnaXN0ZXIga2V5cy5cbiAgICogQXZhaWxhYmxlIGF0IGNvbXBpbGUtdGltZSBmb3IgdHlwZSBjaGVja2luZyBhbmQgSURFIGF1dG9jb21wbGV0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lcz86IFNlcnZpY2VOYW1lczxUUmVnaXN0ZXI+O1xuXG4gIC8qKlxuICAgKiBUeXBlLXNhZmUgTGFtYmRhIElEcyBkZXJpdmVkIGZyb20gcmVnaXN0ZXIgY29uZmlndXJhdGlvbi5cbiAgICogQXZhaWxhYmxlIGF0IGNvbXBpbGUtdGltZSBmb3IgdHlwZSBjaGVja2luZyBhbmQgSURFIGF1dG9jb21wbGV0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYUlkcz86IExhbWJkYUlkczxUUmVnaXN0ZXI+O1xufTtcbiIsICIvKlxuICogRWxhc3RpYyBMaWNlbnNlIDIuMFxuICogQ29weXJpZ2h0IChDKSAyMDI1XHUyMDEzcHJlc2VudCBSYW1hbiBNYXJvemF1LCBXb3JrIFRhcmdldCBJbnNpZ2h0IEZ1bmN0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogQ29udGFjdDogcmFtYW5Ad29ya3RpZi5jb21cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgTGljZW5zZWQgV29yazogd29ya3RpZi5wdXJlbm93LmNkayA8d29ya3RpZl9wdXJlbm93X2Nkaz4uXG4gKiBVc2Ugb2YgdGhpcyBzb2Z0d2FyZSBpcyBnb3Zlcm5lZCBieSB0aGUgRWxhc3RpYyBMaWNlbnNlIDIuMDsgc2VlIHRoZSBMSUNFTlNFIGZpbGVcbiAqIG9yIGh0dHBzOi8vd3d3LmVsYXN0aWMuY28vbGljZW5zaW5nL2VsYXN0aWMtbGljZW5zZSBmb3IgZGV0YWlscy5cbiAqXG4gKiBSZS1saWNlbnNpbmcgbm90aWNlOlxuICogICBUaGlzIGZpbGUgd2FzIHByZXZpb3VzbHkgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJ1c2luZXNzIFNvdXJjZSBMaWNlbnNlIDEuMSAoQlVTTC0xLjEpLlxuICogICBBcyBvZiAyMDI1LTA5LTIyLCBpdCBpcyByZS1saWNlbnNlZCB1bmRlciBFbGFzdGljIExpY2Vuc2UgMi4wLlxuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFbGFzdGljLTIuMFxuICovXG5cbmltcG9ydCB7IFJ1bnRpbWVXZWJDb25maWcgfSBmcm9tICdAbGliL3J1bnRpbWUtd2ViL3R5cGVzJztcblxuLy8gRHluYW1pYyBpbXBvcnRzIHRvIGF2b2lkIGJ1bmRsaW5nIEB3b3JrdGlmL3B1cmVub3cgaW4gYnJvd3NlclxuLy8gVGhlc2Ugd2lsbCBiZSByZXNvbHZlZCBhdCBydW50aW1lIHdoZW4gdGhlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkXG5cbi8qKlxuICogRXJyb3IgdGhyb3duIHdoZW4gY29uZmlndXJhdGlvbiB2YWxpZGF0aW9uIGZhaWxzLlxuICogRm9sbG93cyBwdXJlbm93IGVycm9yIHBhdHRlcm5zIHdpdGhvdXQgZW1vamkuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb25maWdWYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIC8qKiBBcnJheSBvZiB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VzICovXG4gIHJlYWRvbmx5IGVycm9yczogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IoZXJyb3JzOiBzdHJpbmdbXSkge1xuICAgIHN1cGVyKGBDb25maWd1cmF0aW9uIHZhbGlkYXRpb24gZmFpbGVkOlxcbiR7ZXJyb3JzLm1hcChlID0+IGAgIC0gJHtlfWApLmpvaW4oJ1xcbicpfWApO1xuICAgIHRoaXMubmFtZSA9ICdDb25maWdWYWxpZGF0aW9uRXJyb3InO1xuICAgIHRoaXMuZXJyb3JzID0gZXJyb3JzO1xuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpO1xuICB9XG59XG5cbi8qKlxuICogRXJyb3IgdGhyb3duIHdoZW4gZW52aXJvbm1lbnQgZGV0ZWN0aW9uIGZhaWxzLlxuICogRm9sbG93cyBwdXJlbm93IGVycm9yIHBhdHRlcm5zIHdpdGhvdXQgZW1vamkuXG4gKi9cbmV4cG9ydCBjbGFzcyBFbnZpcm9ubWVudERldGVjdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnRW52aXJvbm1lbnREZXRlY3Rpb25FcnJvcic7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgdGhpcy5jb25zdHJ1Y3Rvcik7XG4gIH1cbn1cblxuLyoqXG4gKiBEZXRlY3QgdGhlIGN1cnJlbnQgcnVudGltZSBlbnZpcm9ubWVudC5cbiAqIFRoaXMgaXMgYSBsaWdodHdlaWdodCBkZXRlY3Rpb24gdGhhdCB3b3JrcyBpbiBhbGwgZW52aXJvbm1lbnRzLlxuICovXG5mdW5jdGlvbiBkZXRlY3RFbnZpcm9ubWVudCgpOiAnYnJvd3NlcicgfCAnbGFtYmRhJyB8ICdjZGsnIHtcbiAgLy8gQnJvd3NlciBkZXRlY3Rpb25cbiAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuICdicm93c2VyJztcbiAgfVxuXG4gIC8vIExhbWJkYSBkZXRlY3Rpb25cbiAgaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLmVudj8uQVdTX0xBTUJEQV9GVU5DVElPTl9OQU1FKSB7XG4gICAgcmV0dXJuICdsYW1iZGEnO1xuICB9XG5cbiAgLy8gQ0RLIGRldGVjdGlvblxuICBpZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Py5QVVJFTk9XX01PREUgPT09ICdjZGsnKSB7XG4gICAgICByZXR1cm4gJ2Nkayc7XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmVudj8uQ0RLX0RFRkFVTFRfQUNDT1VOVCB8fCBwcm9jZXNzLmVudj8uQ0RLX0RFRkFVTFRfUkVHSU9OKSB7XG4gICAgICByZXR1cm4gJ2Nkayc7XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmFyZ3Y/LnNvbWUoYXJnID0+IGFyZy5pbmNsdWRlcygnY2RrJykgfHwgYXJnLmluY2x1ZGVzKCdzeW50aCcpKSkge1xuICAgICAgcmV0dXJuICdjZGsnO1xuICAgIH1cbiAgfVxuXG4gIC8vIERlZmF1bHQgdG8gQ0RLIGZvciBOb2RlLmpzIGVudmlyb25tZW50cyAoYnVpbGQgdGltZSlcbiAgcmV0dXJuICdjZGsnO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBnaXZlbiBlbnZpcm9ubWVudC5cbiAqIExpZ2h0d2VpZ2h0IHZhbGlkYXRpb24gdGhhdCB3b3JrcyBpbiBhbGwgZW52aXJvbm1lbnRzLlxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZUNvbmZpZyhjb25maWc6IFJ1bnRpbWVXZWJDb25maWcsIGlzQ0RLQ29udGV4dDogYm9vbGVhbik6IHsgdmFsaWQ6IGJvb2xlYW47IGVycm9yczogc3RyaW5nW10gfSB7XG4gIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICAvLyBTZXJ2aWNlIG5hbWUgdmFsaWRhdGlvblxuICBpZiAoIWNvbmZpZy5zZXJ2aWNlTmFtZSB8fCAhL15bYS16QS1aXVthLXpBLVowLTktXXswLDEyN30kLy50ZXN0KGNvbmZpZy5zZXJ2aWNlTmFtZSkpIHtcbiAgICBlcnJvcnMucHVzaCgnc2VydmljZU5hbWUgbXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyLCBjb250YWluIG9ubHkgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIGh5cGhlbnMsIGFuZCBiZSBtYXggMTI4IGNoYXJhY3RlcnMnKTtcbiAgfVxuXG4gIC8vIFN0YWdlIHZhbGlkYXRpb25cbiAgaWYgKCFbJ2RldicsICdzdGFnaW5nJywgJ3Byb2QnXS5pbmNsdWRlcyhjb25maWcuc3RhZ2UpKSB7XG4gICAgZXJyb3JzLnB1c2goJ3N0YWdlIG11c3QgYmUgb25lIG9mOiBkZXYsIHN0YWdpbmcsIHByb2QnKTtcbiAgfVxuXG4gIC8vIEluZnJhIHZhbGlkYXRpb24gZm9yIENESyBjb250ZXh0XG4gIGlmIChpc0NES0NvbnRleHQgJiYgIWNvbmZpZy5pbmZyYSkge1xuICAgIGVycm9ycy5wdXNoKCdpbmZyYSBjb25maWd1cmF0aW9uIGlzIHJlcXVpcmVkIGluIENESyBjb250ZXh0Jyk7XG4gIH1cblxuICByZXR1cm4geyB2YWxpZDogZXJyb3JzLmxlbmd0aCA9PT0gMCwgZXJyb3JzIH07XG59XG5cbi8qKlxuICogVW5pZmllZCBlbnRyeSBwb2ludCBmb3IgUnVudGltZSBUYXJnZXQgQ29yZS5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHByb3ZpZGVzIGEgc2luZ2xlIEFQSSB0aGF0IHdvcmtzIGFjcm9zcyBhbGwgZXhlY3V0aW9uIGNvbnRleHRzOlxuICogLSAqKkJyb3dzZXIqKjogSHlkcmF0ZXMgUmVhY3QgYXBwbGljYXRpb24gd2l0aCBjbGllbnQtc2lkZSByb3V0aW5nXG4gKiAtICoqTGFtYmRhKio6IEV4ZWN1dGVzIHNlcnZlci1zaWRlIHJlbmRlcmluZyBhbmQgYnVzaW5lc3MgbG9naWMgd2l0aCBESVxuICogLSAqKkNESyoqOiBTeW50aGVzaXplcyBDbG91ZEZvcm1hdGlvbiBpbmZyYXN0cnVjdHVyZSB0ZW1wbGF0ZXNcbiAqXG4gKiBUaGUgZnVuY3Rpb24gYXV0b21hdGljYWxseSBkZXRlY3RzIHRoZSBydW50aW1lIGVudmlyb25tZW50IGFuZCByb3V0ZXNcbiAqIGV4ZWN1dGlvbiB0byB0aGUgYXBwcm9wcmlhdGUgcGlwZWxpbmUgd2l0aG91dCB1c2VyIGludGVydmVudGlvbi5cbiAqXG4gKiAqKk5vdGUqKjogRm9yIExhbWJkYSBhbmQgQ0RLIGNvbnRleHRzLCB1c2UgdGhlIHNlcnZlci1zaWRlIGVudHJ5IHBvaW50XG4gKiBmcm9tIGBAY29yZS9ydW50aW1lLXdlYmAgaW5zdGVhZC4gVGhpcyBicm93c2VyLWNvbXBhdGlibGUgdmVyc2lvblxuICogb25seSBzdXBwb3J0cyBicm93c2VyIGh5ZHJhdGlvbi5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gVW5pZmllZCBjb25maWd1cmF0aW9uIGZvciBhbGwgY29udGV4dHNcbiAqIEByZXR1cm5zIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGV4ZWN1dGlvbiBjb21wbGV0ZXNcbiAqIEB0aHJvd3MgQ29uZmlnVmFsaWRhdGlvbkVycm9yIGlmIGNvbmZpZ3VyYXRpb24gaXMgaW52YWxpZFxuICogQHRocm93cyBFbnZpcm9ubWVudERldGVjdGlvbkVycm9yIGlmIGVudmlyb25tZW50IGNhbm5vdCBiZSBkZXRlY3RlZFxuICogQHRocm93cyBFcnJvciBpZiBleGVjdXRpb24gZmFpbHNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgcHVyZW5vdyB9IGZyb20gJ0B3b3JrdGlmL3B1cmVub3cvcnVudGltZS13ZWInO1xuICogaW1wb3J0IHsgUHVyZW5vd1JvdXRlciB9IGZyb20gJ0B3b3JrdGlmL3B1cmVub3cnO1xuICpcbiAqIHB1cmVub3coe1xuICogICBhcHA6ICh7IHJvdXRlciB9KSA9PiA8QXBwIHJvdXRlcj17cm91dGVyfSAvPixcbiAqICAgcm91dGVyOiBuZXcgUHVyZW5vd1JvdXRlcih7IHJvdXRlcywgZGVmYXVsdHM6IHt9IH0pLFxuICogICBzZXJ2aWNlTmFtZTogJ215LWFwcCcsXG4gKiAgIHN0YWdlOiAnZGV2JyxcbiAqICAgcmVnaXN0ZXI6IHtcbiAqICAgICBwYXltZW50czoge1xuICogICAgICAgdGllczogW1BheW1lbnRzVGllc10sXG4gKiAgICAgICBsYW1iZGFzOiBbY2hhcmdlSGFuZGxlciwgcmVmdW5kSGFuZGxlcl1cbiAqICAgICB9XG4gKiAgIH0sXG4gKiAgIGluZnJhOiB7XG4gKiAgICAgZW52OiB7IGFjY291bnQ6ICcxMjM0NTY3ODkwMTInLCByZWdpb246ICd1cy1lYXN0LTEnIH0sXG4gKiAgICAgc3RhZ2U6ICdkZXYnLFxuICogICAgIHJlYWN0RW50cnk6ICcuL3NyYy9pbmRleC50c3gnLFxuICogICAgIGFwaU1vZGU6ICdhcGlHYXRld2F5J1xuICogICB9XG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHVyZXdlYihjb25maWc6IFJ1bnRpbWVXZWJDb25maWcpOiB2b2lkIHtcbiAgLy8gMS4gRGV0ZWN0IHJ1bnRpbWUgZW52aXJvbm1lbnQgdXNpbmcgbGlnaHR3ZWlnaHQgZGV0ZWN0aW9uXG4gIGNvbnN0IGVudlR5cGUgPSBkZXRlY3RFbnZpcm9ubWVudCgpO1xuICBjb25zdCBpc0NES0NvbnRleHQgPSBlbnZUeXBlID09PSAnY2RrJztcblxuICAvLyAyLiBWYWxpZGF0ZSBjb25maWd1cmF0aW9uXG4gIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSB2YWxpZGF0ZUNvbmZpZyhjb25maWcsIGlzQ0RLQ29udGV4dCk7XG5cbiAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0LnZhbGlkKSB7XG4gICAgdGhyb3cgbmV3IENvbmZpZ1ZhbGlkYXRpb25FcnJvcih2YWxpZGF0aW9uUmVzdWx0LmVycm9ycyk7XG4gIH1cblxuICAvLyAzLiBSb3V0ZSB0byBhcHByb3ByaWF0ZSBwaXBlbGluZSBiYXNlZCBvbiBlbnZpcm9ubWVudFxuICBzd2l0Y2ggKGVudlR5cGUpIHtcbiAgICBjYXNlICdicm93c2VyJzoge1xuICAgICAgLy8gQnJvd3NlciBwaXBlbGluZSAtIGh5ZHJhdGUgUmVhY3QgYXBwXG4gICAgICAvLyBUaGlzIGlzIHRoZSBvbmx5IHBhdGggdGhhdCBydW5zIGluIHRoZSBicm93c2VyXG4gICAgICAvLyBEeW5hbWljIHJlcXVpcmUgdG8gYXZvaWQgYnVuZGxpbmcgQHdvcmt0aWYvcHVyZW5vd1xuICAgICAgY29uc3QgcmVxdWlyZUZuID0gKGdsb2JhbFRoaXMgYXMgYW55KS5yZXF1aXJlIHx8IHJlcXVpcmU7XG4gICAgICBjb25zdCBwYWNrYWdlTmFtZSA9ICdAd29ya3RpZi9wdXJlbm93JztcbiAgICAgIGNvbnN0IHB1cmVub3dQYWNrYWdlID0gcmVxdWlyZUZuKHBhY2thZ2VOYW1lKTtcbiAgICAgIGNvbnN0IHsgcHVyZW5vdywgcHVyZW5vd1JvdXRlciB9ID0gcHVyZW5vd1BhY2thZ2U7XG5cbiAgICAgIHB1cmVub3coe1xuICAgICAgICBhcHA6ICh7IHJvdXRlciB9OiBhbnkpID0+IGNvbmZpZy5hcHAoeyByb3V0ZXIgfSksXG4gICAgICAgIHJvdXRlcjogcHVyZW5vd1JvdXRlcih7XG4gICAgICAgICAgcm91dGVyOiBjb25maWcucm91dGVyLmdldFJvdXRlcygpLFxuICAgICAgICAgIGRlZmF1bHRzOiBjb25maWcucm91dGVyLmRlZmF1bHRzLFxuICAgICAgICB9KSxcbiAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgc2VydmljZU5hbWU6IGNvbmZpZy5zZXJ2aWNlTmFtZSxcbiAgICAgICAgICBzdGFnZTogY29uZmlnLnN0YWdlLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjYXNlICdsYW1iZGEnOlxuICAgIGNhc2UgJ2Nkayc6IHtcbiAgICAgIC8vIExhbWJkYSBhbmQgQ0RLIHBpcGVsaW5lcyByZXF1aXJlIHNlcnZlci1zaWRlIGNvZGVcbiAgICAgIC8vIFRoZXNlIHNob3VsZCB1c2UgdGhlIHNlcnZlci1zaWRlIGVudHJ5IHBvaW50IGZyb20gQGNvcmUvcnVudGltZS13ZWJcbiAgICAgIGNvbnNvbGUubG9nKCdbUnVudGltZV0gU2VydmVyLXNpZGUgcGlwZWxpbmUgZGV0ZWN0ZWQgKCVzKScsIGVudlR5cGUpO1xuXG4gICAgICAvLyBEeW5hbWljIHJlcXVpcmUgdG8gYXZvaWQgYnVuZGxpbmcgQHdvcmt0aWYvcHVyZW5vd1xuICAgICAgY29uc3QgcmVxdWlyZUZuID0gKGdsb2JhbFRoaXMgYXMgYW55KS5yZXF1aXJlIHx8IHJlcXVpcmU7XG4gICAgICBjb25zdCBwYWNrYWdlTmFtZSA9ICdAd29ya3RpZi9wdXJlbm93JztcbiAgICAgIGNvbnN0IHB1cmVub3dQYWNrYWdlID0gcmVxdWlyZUZuKHBhY2thZ2VOYW1lKTtcbiAgICAgIGNvbnN0IHsgcHVyZW5vdywgcHVyZW5vd1JvdXRlciB9ID0gcHVyZW5vd1BhY2thZ2U7XG5cbiAgICAgIHB1cmVub3coe1xuICAgICAgICBhcHA6ICh7IHJvdXRlciB9OiBhbnkpID0+IGNvbmZpZy5hcHAoeyByb3V0ZXIgfSksXG4gICAgICAgIHJvdXRlcjogcHVyZW5vd1JvdXRlcih7XG4gICAgICAgICAgcm91dGVyOiBjb25maWcucm91dGVyLmdldFJvdXRlcygpLFxuICAgICAgICAgIGRlZmF1bHRzOiBjb25maWcucm91dGVyLmRlZmF1bHRzLFxuICAgICAgICB9KSxcbiAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgc2VydmljZU5hbWU6IGNvbmZpZy5zZXJ2aWNlTmFtZSxcbiAgICAgICAgICBzdGFnZTogY29uZmlnLnN0YWdlLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdbUnVudGltZSBXZWJdIExhbWJkYSBydW50aW1lIGRldGVjdGVkLCBza2lwcGluZyBicm93c2VyIHJlbmRlcmluZyBwaXBlbGluZScpO1xuICAgICAgLy8gdGhyb3cgbmV3IEVudmlyb25tZW50RGV0ZWN0aW9uRXJyb3IoXG4gICAgICAvLyAgIGBTZXJ2ZXItc2lkZSBlbnZpcm9ubWVudCBkZXRlY3RlZCAoJHtlbnZUeXBlfSkuIGAgK1xuICAgICAgLy8gICBgVXNlIHRoZSBzZXJ2ZXItc2lkZSBlbnRyeSBwb2ludCBmcm9tICdAY29yZS9ydW50aW1lLXdlYicgZm9yIExhbWJkYSBhbmQgQ0RLIGNvbnRleHRzLmAsXG4gICAgICAvLyApO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6XG4gICAgICBjb25zb2xlLmxvZygnW1J1bnRpbWUgV2ViXSBVbmtub3duIGVudmlyb25tZW50IHR5cGU6ICVzJywgZW52VHlwZSk7XG4gICAgICBicmVhaztcbiAgICAvLyB0aHJvdyBuZXcgRW52aXJvbm1lbnREZXRlY3Rpb25FcnJvcihcbiAgICAvLyAgIGBVbmtub3duIGVudmlyb25tZW50IHR5cGU6ICR7ZW52VHlwZX1gLFxuICAgIC8vICk7XG4gIH1cbn1cblxuXG4iLCAiLypcbiAqIEVsYXN0aWMgTGljZW5zZSAyLjBcbiAqIENvcHlyaWdodCAoQykgMjAyNVx1MjAxM3ByZXNlbnQgUmFtYW4gTWFyb3phdSwgV29yayBUYXJnZXQgSW5zaWdodCBGdW5jdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIENvbnRhY3Q6IHJhbWFuQHdvcmt0aWYuY29tXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIExpY2Vuc2VkIFdvcms6IHdvcmt0aWYucHVyZW5vdy5jZGsgPHdvcmt0aWZfcHVyZW5vd19jZGs+LlxuICogVXNlIG9mIHRoaXMgc29mdHdhcmUgaXMgZ292ZXJuZWQgYnkgdGhlIEVsYXN0aWMgTGljZW5zZSAyLjA7IHNlZSB0aGUgTElDRU5TRSBmaWxlXG4gKiBvciBodHRwczovL3d3dy5lbGFzdGljLmNvL2xpY2Vuc2luZy9lbGFzdGljLWxpY2Vuc2UgZm9yIGRldGFpbHMuXG4gKlxuICogUmUtbGljZW5zaW5nIG5vdGljZTpcbiAqICAgVGhpcyBmaWxlIHdhcyBwcmV2aW91c2x5IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCdXNpbmVzcyBTb3VyY2UgTGljZW5zZSAxLjEgKEJVU0wtMS4xKS5cbiAqICAgQXMgb2YgMjAyNS0wOS0yMiwgaXQgaXMgcmUtbGljZW5zZWQgdW5kZXIgRWxhc3RpYyBMaWNlbnNlIDIuMC5cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRWxhc3RpYy0yLjBcbiAqL1xuXG5cbmltcG9ydCB0eXBlIHsgUHVyZW5vd0NvbmZpZyB9IGZyb20gJ0B3b3JrdGlmL3B1cmVub3cnO1xuXG4vKipcbiAqIFJ1bnRpbWUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiB0aGF0IGV4dGVuZHMgUHVyZW5vd0NvbmZpZy5cbiAqXG4gKiBUaGlzIGludGVyZmFjZSBhZGRzIHJ1bnRpbWUgd29ya3NwYWNlIGZ1bmN0aW9uYWxpdHkgd2hpbGUgcHJlc2VydmluZ1xuICogYWxsIGV4aXN0aW5nIHB1cmVub3cgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGUgcnVudGltZSBjb25maWd1cmF0aW9uXG4gKiBpcyBtZXJnZWQgd2l0aCBwdXJlbm93IGNvbmZpZ3VyYXRpb24gcmF0aGVyIHRoYW4gcmVwbGFjaW5nIGl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bnRpbWVDb25maWcgZXh0ZW5kcyBQdXJlbm93Q29uZmlnIHtcbiAgLyoqXG4gICAqIFJ1bnRpbWUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICAgKiBUaGVzZSBzZXR0aW5ncyBleHRlbmQgcHVyZW5vdyBmdW5jdGlvbmFsaXR5IHdpdGhvdXQgcmVwbGFjaW5nIGl0LlxuICAgKi9cbiAgcnVudGltZT86IHtcbiAgICAvKiogRW5hYmxlIFJ1bnRpbWUgQ29yZSBzdGFjayBkZXBsb3ltZW50IChleHRlbmRzIHB1cmVub3cncyB0d28tc3RhY2sgYXJjaGl0ZWN0dXJlKSAqL1xuICAgIGVuYWJsZVRoaXJkU3RhY2s/OiBib29sZWFuO1xuXG4gICAgLyoqIFJ1bnRpbWUgd2ViIG1vZGUgY29uZmlndXJhdGlvbiAqL1xuICAgIHJ1bnRpbWVXZWJNb2RlPzogJ2RldmVsb3BtZW50JyB8ICdwcm9kdWN0aW9uJztcblxuICAgIC8qKiBBZGRpdGlvbmFsIHJ1bnRpbWUgZmVhdHVyZXMgdG8gZW5hYmxlICovXG4gICAgYWRkaXRpb25hbEZlYXR1cmVzPzogc3RyaW5nW107XG5cbiAgICAvKiogRGV2ZWxvcG1lbnQgc2VydmVyIGVuaGFuY2VtZW50cyAqL1xuICAgIGRldlNlcnZlckVuaGFuY2VtZW50cz86IHtcbiAgICAgIC8qKiBFbmFibGUgaG90IG1vZHVsZSByZXBsYWNlbWVudCAqL1xuICAgICAgaG90UmVsb2FkPzogYm9vbGVhbjtcbiAgICAgIC8qKiBFbmFibGUgZGVidWcgbW9kZSB3aXRoIGFkZGl0aW9uYWwgbG9nZ2luZyAqL1xuICAgICAgZGVidWdNb2RlPzogYm9vbGVhbjtcbiAgICAgIC8qKiBFbmFibGUgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyAqL1xuICAgICAgcGVyZm9ybWFuY2VNb25pdG9yaW5nPzogYm9vbGVhbjtcbiAgICB9O1xuXG4gICAgLyoqIEJ1aWxkIG9wdGltaXphdGlvbnMgKi9cbiAgICBidWlsZE9wdGltaXphdGlvbnM/OiB7XG4gICAgICAvKiogRW5hYmxlIGJ1bmRsZSBhbmFseXNpcyAqL1xuICAgICAgYnVuZGxlQW5hbHlzaXM/OiBib29sZWFuO1xuICAgICAgLyoqIEVuYWJsZSB0cmVlIHNoYWtpbmcgKi9cbiAgICAgIHRyZWVzaGFraW5nPzogYm9vbGVhbjtcbiAgICAgIC8qKiBFbmFibGUgY29kZSBtaW5pZmljYXRpb24gKi9cbiAgICAgIGNvZGVNaW5pZmljYXRpb24/OiBib29sZWFuO1xuICAgIH07XG4gIH07XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBtZXJnaW5nIHV0aWxpdHkgdGhhdCBwcmVzZXJ2ZXMgYWxsIHB1cmVub3cgc2V0dGluZ3NcbiAqIHdoaWxlIGFkZGluZyBydW50aW1lLXNwZWNpZmljIGV4dGVuc2lvbnMuXG4gKlxuICogQHBhcmFtIHB1cmVub3dDb25maWcgLSBCYXNlIHB1cmVub3cgY29uZmlndXJhdGlvblxuICogQHBhcmFtIHJ1bnRpbWVDb25maWcgLSBSdW50aW1lLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gdG8gbWVyZ2VcbiAqIEByZXR1cm5zIE1lcmdlZCBjb25maWd1cmF0aW9uIHdpdGggYWxsIHB1cmVub3cgc2V0dGluZ3MgcHJlc2VydmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZVJ1bnRpbWVDb25maWcoXG4gIHB1cmVub3dDb25maWc6IFB1cmVub3dDb25maWcsXG4gIHJ1bnRpbWVDb25maWc/OiBQYXJ0aWFsPFJ1bnRpbWVDb25maWdbJ3J1bnRpbWUnXT4sXG4pOiBSdW50aW1lQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5wdXJlbm93Q29uZmlnLFxuICAgIHJ1bnRpbWU6IHtcbiAgICAgIGVuYWJsZVRoaXJkU3RhY2s6IGZhbHNlLFxuICAgICAgcnVudGltZVdlYk1vZGU6ICdkZXZlbG9wbWVudCcsXG4gICAgICBhZGRpdGlvbmFsRmVhdHVyZXM6IFtdLFxuXG4gICAgICAvLyBAdG9kbzogY3JpdGlhbCB0byBpbXByb3ZlIHRoaXMgc29sdXRpb24uIE90aGVyd2lzZSBcdTIwMTM+IFVOTkVDRVNTQVJZIE9QVElPTlMgVE9UQUxMWVxuICAgICAgZGV2U2VydmVyRW5oYW5jZW1lbnRzOiB7XG4gICAgICAgIGhvdFJlbG9hZDogdHJ1ZSxcbiAgICAgICAgZGVidWdNb2RlOiBmYWxzZSxcbiAgICAgICAgcGVyZm9ybWFuY2VNb25pdG9yaW5nOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBidWlsZE9wdGltaXphdGlvbnM6IHtcbiAgICAgICAgYnVuZGxlQW5hbHlzaXM6IGZhbHNlLFxuICAgICAgICB0cmVlc2hha2luZzogdHJ1ZSxcbiAgICAgICAgY29kZU1pbmlmaWNhdGlvbjogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICAuLi5ydW50aW1lQ29uZmlnLFxuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogVHlwZSBndWFyZCB0byBjaGVjayBpZiBhIGNvbmZpZ3VyYXRpb24gaXMgYSBSdW50aW1lQ29uZmlnLlxuICpcbiAqIEBwYXJhbSBjb25maWcgLSBDb25maWd1cmF0aW9uIHRvIGNoZWNrXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBjb25maWd1cmF0aW9uIGhhcyBydW50aW1lLXNwZWNpZmljIHByb3BlcnRpZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUnVudGltZUNvbmZpZyhjb25maWc6IGFueSk6IGNvbmZpZyBpcyBSdW50aW1lQ29uZmlnIHtcbiAgcmV0dXJuICEhKGNvbmZpZyAmJiB0eXBlb2YgY29uZmlnID09PSAnb2JqZWN0JyAmJiAncnVudGltZScgaW4gY29uZmlnKTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IHJ1bnRpbWUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmcm9tIGEgUnVudGltZUNvbmZpZy5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gUnVudGltZUNvbmZpZyB0byBleHRyYWN0IGZyb21cbiAqIEByZXR1cm5zIFJ1bnRpbWUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvciB1bmRlZmluZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RSdW50aW1lQ29uZmlnKGNvbmZpZzogUnVudGltZUNvbmZpZyk6IFJ1bnRpbWVDb25maWdbJ3J1bnRpbWUnXSB7XG4gIHJldHVybiBjb25maWcucnVudGltZTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBSdW50aW1lQ29uZmlnIGZyb20gYSBiYXNlIFB1cmVub3dDb25maWcgd2l0aCBkZWZhdWx0IHJ1bnRpbWUgc2V0dGluZ3MuXG4gKlxuICogQHBhcmFtIHB1cmVub3dDb25maWcgLSBCYXNlIHB1cmVub3cgY29uZmlndXJhdGlvblxuICogQHJldHVybnMgUnVudGltZUNvbmZpZyB3aXRoIGRlZmF1bHQgcnVudGltZSBzZXR0aW5nc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUnVudGltZUNvbmZpZyhwdXJlbm93Q29uZmlnOiBQdXJlbm93Q29uZmlnKTogUnVudGltZUNvbmZpZyB7XG4gIHJldHVybiBtZXJnZVJ1bnRpbWVDb25maWcocHVyZW5vd0NvbmZpZyk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAieWFBQUEsSUFBQUEsRUFBQSxHQUFBQyxFQUFBRCxFQUFBLDJCQUFBRSxFQUFBLDhCQUFBQyxFQUFBLHdCQUFBQyxFQUFBLHlCQUFBQyxFQUFBLG9CQUFBQyxFQUFBLHVCQUFBQyxFQUFBLHVCQUFBQyxFQUFBLFlBQUFDLElBQUEsZUFBQUMsRUFBQVYsR0NpSE8sU0FBU1csRUFBbUJDLEVBQXNELENBQ3ZGLE1BQU8sZ0NBQWdDLEtBQUtBLENBQVcsQ0FDekQsQ0MxRk8sSUFBTUMsRUFBTixjQUFvQyxLQUFNLENBSS9DLFlBQVlDLEVBQWtCLENBQzVCLE1BQU07QUFBQSxFQUFxQ0EsRUFBTyxJQUFJQyxHQUFLLE9BQU9BLENBQUMsRUFBRSxFQUFFLEtBQUs7QUFBQSxDQUFJLENBQUMsRUFBRSxFQUNuRixLQUFLLEtBQU8sd0JBQ1osS0FBSyxPQUFTRCxFQUNkLE1BQU0sa0JBQWtCLEtBQU0sS0FBSyxXQUFXLENBQ2hELENBQ0YsRUFNYUUsRUFBTixjQUF3QyxLQUFNLENBQ25ELFlBQVlDLEVBQWlCLENBQzNCLE1BQU1BLENBQU8sRUFDYixLQUFLLEtBQU8sNEJBQ1osTUFBTSxrQkFBa0IsS0FBTSxLQUFLLFdBQVcsQ0FDaEQsQ0FDRixFQU1BLFNBQVNDLEdBQWtELENBRXpELE9BQUksT0FBTyxPQUFXLElBQ2IsVUFJTCxPQUFPLFFBQVksS0FBZSxRQUFRLEtBQUsseUJBQzFDLFVBSUwsT0FBTyxR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b25FcnJvciIsICJFbnZpcm9ubWVudERldGVjdGlvbkVycm9yIiwgImNyZWF0ZVJ1bnRpbWVDb25maWciLCAiZXh0cmFjdFJ1bnRpbWVDb25maWciLCAiaXNSdW50aW1lQ29uZmlnIiwgImlzVmFsaWRTZXJ2aWNlTmFtZSIsICJtZXJnZVJ1bnRpbWVDb25maWciLCAicHVyZXdlYiIsICJfX3RvQ29tbW9uSlMiLCAiaXNWYWxpZFNlcnZpY2VOYW1lIiwgInNlcnZpY2VOYW1lIiwgIkNvbmZpZ1ZhbGlkYXRpb25FcnJvciIsICJlcnJvcnMiLCAiZSIsICJFbnZpcm9ubWVudERldGVjdGlvbkVycm9yIiwgIm1lc3NhZ2UiLCAiZGV0ZWN0RW52aXJvbm1lbnQiLCAiYXJnIiwgInZhbGlkYXRlQ29uZmlnIiwgImNvbmZpZyIsICJpc0NES0NvbnRleHQiLCAicHVyZXdlYiIsICJlbnZUeXBlIiwgInZhbGlkYXRpb25SZXN1bHQiLCAicHVyZW5vd1BhY2thZ2UiLCAicHVyZW5vdyIsICJwdXJlbm93Um91dGVyIiwgInJvdXRlciIsICJtZXJnZVJ1bnRpbWVDb25maWciLCAicHVyZW5vd0NvbmZpZyIsICJydW50aW1lQ29uZmlnIiwgImlzUnVudGltZUNvbmZpZyIsICJjb25maWciLCAiZXh0cmFjdFJ1bnRpbWVDb25maWciLCAiY3JlYXRlUnVudGltZUNvbmZpZyJdCn0K
|
package/out/dist/lib/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
${r.map(
|
|
3
|
-
`)}`),this.name="ConfigValidationError",this.errors=r,Error.captureStackTrace(this,this.constructor)}},
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzeCIsICIuLi8uLi8uLi9zcmMvbGliL3J1bnRpbWUtd2ViL3BpcGVsaW5lcy9icm93c2VyLXBpcGVsaW5lLnRzIiwgIi4uLy4uLy4uL3NyYy9saWIvcnVudGltZS13ZWIvdHlwZXMvY29uZmlnLnR5cGVzLnRzIiwgIi4uLy4uLy4uL3NyYy9saWIvcnVudGltZS13ZWIvcHVyZXdlYi50cyIsICIuLi8uLi8uLi9zcmMvbGliL3J1bnRpbWUtd2ViL3J1bnRpbWUuY29uZmlnLnR5cGVzLnRzeCJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLypcbiAqIEVsYXN0aWMgTGljZW5zZSAyLjBcbiAqIENvcHlyaWdodCAoQykgMjAyNVx1MjAxM3ByZXNlbnQgUmFtYW4gTWFyb3phdSwgV29yayBUYXJnZXQgSW5zaWdodCBGdW5jdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIENvbnRhY3Q6IHJhbWFuQHdvcmt0aWYuY29tXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIExpY2Vuc2VkIFdvcms6IHdvcmt0aWYucHVyZW5vdy5jZGsgPHdvcmt0aWZfcHVyZW5vd19jZGs+LlxuICogVXNlIG9mIHRoaXMgc29mdHdhcmUgaXMgZ292ZXJuZWQgYnkgdGhlIEVsYXN0aWMgTGljZW5zZSAyLjA7IHNlZSB0aGUgTElDRU5TRSBmaWxlXG4gKiBvciBodHRwczovL3d3dy5lbGFzdGljLmNvL2xpY2Vuc2luZy9lbGFzdGljLWxpY2Vuc2UgZm9yIGRldGFpbHMuXG4gKlxuICogUmUtbGljZW5zaW5nIG5vdGljZTpcbiAqICAgVGhpcyBmaWxlIHdhcyBwcmV2aW91c2x5IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCdXNpbmVzcyBTb3VyY2UgTGljZW5zZSAxLjEgKEJVU0wtMS4xKS5cbiAqICAgQXMgb2YgMjAyNS0wOS0yMiwgaXQgaXMgcmUtbGljZW5zZWQgdW5kZXIgRWxhc3RpYyBMaWNlbnNlIDIuMC5cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRWxhc3RpYy0yLjBcbiAqL1xuXG4vLyBSZS1leHBvcnQgZXZlcnl0aGluZyBmcm9tIHRoZSBiYXNlIFB1cmVub3cgZnJhbWV3b3JrXG5leHBvcnQgKiBmcm9tICdAd29ya3RpZi9wdXJlbm93JztcblxuLy8gRXhwb3J0IHJ1bnRpbWUtd2ViIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHlcbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1bnRpbWUtd2ViJztcblxuLy8gRXhwb3J0IHJ1bnRpbWUgY29uZmlndXJhdGlvbiB0eXBlcyBhbmQgdXRpbGl0aWVzXG4vLyBleHBvcnQgKiBmcm9tICcuL3V0aWxzJztcblxuXG4vLyBSZS1leHBvcnQgcHVyZW5vdyBiaW4gZnVuY3Rpb25hbGl0eVxuLy8gZXhwb3J0ICogZnJvbSAnQHdvcmt0aWYvcHVyZW5vdyc7XG4iLCAiLypcbiAqIEVsYXN0aWMgTGljZW5zZSAyLjBcbiAqIENvcHlyaWdodCAoQykgMjAyNVx1MjAxM3ByZXNlbnQgUmFtYW4gTWFyb3phdSwgV29yayBUYXJnZXQgSW5zaWdodCBGdW5jdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIENvbnRhY3Q6IHJhbWFuQHdvcmt0aWYuY29tXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIExpY2Vuc2VkIFdvcms6IHdvcmt0aWYucHVyZW5vdy5jZGsgPHdvcmt0aWZfcHVyZW5vd19jZGs+LlxuICogVXNlIG9mIHRoaXMgc29mdHdhcmUgaXMgZ292ZXJuZWQgYnkgdGhlIEVsYXN0aWMgTGljZW5zZSAyLjA7IHNlZSB0aGUgTElDRU5TRSBmaWxlXG4gKiBvciBodHRwczovL3d3dy5lbGFzdGljLmNvL2xpY2Vuc2luZy9lbGFzdGljLWxpY2Vuc2UgZm9yIGRldGFpbHMuXG4gKlxuICogUmUtbGljZW5zaW5nIG5vdGljZTpcbiAqICAgVGhpcyBmaWxlIHdhcyBwcmV2aW91c2x5IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCdXNpbmVzcyBTb3VyY2UgTGljZW5zZSAxLjEgKEJVU0wtMS4xKS5cbiAqICAgQXMgb2YgMjAyNS0wOS0yMiwgaXQgaXMgcmUtbGljZW5zaW5nIHVuZGVyIEVsYXN0aWMgTGljZW5zZSAyLjAuXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVsYXN0aWMtMi4wXG4gKi9cblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgaHlkcmF0ZVJvb3QgfSBmcm9tICdyZWFjdC1kb20vY2xpZW50JztcbmltcG9ydCB7IGNyZWF0ZUJyb3dzZXJSb3V0ZXIsIFJvdXRlclByb3ZpZGVyIH0gZnJvbSAncmVhY3Qtcm91dGVyJztcblxuaW1wb3J0IHR5cGUgeyBCcm93c2VyTWV0YWRhdGEsIFJ1bnRpbWVXZWJDb25maWcgfSBmcm9tICdAbGliL3J1bnRpbWUtd2ViL3R5cGVzJztcblxuLy8gaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnQHdvcmt0aWYvdXRpbHMnO1xuXG4vKipcbiAqIEJyb3dzZXIgZXhlY3V0aW9uIHBpcGVsaW5lIGZvciBSdW50aW1lIFRhcmdldCBDb3JlLlxuICpcbiAqIEB0b2RvOiBvcmRpbmF0ZSB0aGlzIGNsYXNzIHRvIGluZnJhIG9yIGNvcmUgY2F1c2Ugd2UgaGF2ZSBOb2RlLmpzIHJlc3BvbnNpYmlsaXR5XG4gKiAgICAgIC0tLS0gT1IgXHUyMDEzPiBSRU1PVkUgTE9HR0VSXG4gKlxuICogKipBUkNISVRFQ1RVUkUgTk9URSoqOiBUaGlzIGZpbGUgaXMgaW4gYHNyYy9saWIvYCBiZWNhdXNlIGl0OlxuICogLSBVc2VzIGJyb3dzZXItb25seSBBUElzICh3aW5kb3csIGRvY3VtZW50LCBoeWRyYXRlUm9vdClcbiAqIC0gUnVucyBPTkxZIGluIGJyb3dzZXIgZW52aXJvbm1lbnRcbiAqIC0gTXVzdCBiZSBpc29tb3JwaGljLXNhZmUgKG5vIE5vZGUuanMgQVBJcylcbiAqIC0gTkVWRVIgcnVucyBpbiBMYW1iZGFcbiAqXG4gKiBIYW5kbGVzIGNsaWVudC1zaWRlIGh5ZHJhdGlvbiBvZiBSZWFjdCBhcHBsaWNhdGlvbnMgd2l0aCBwcmUtbG9hZGVkIGRhdGFcbiAqIGZyb20gc2VydmVyLXNpZGUgcmVuZGVyaW5nLiBTZXRzIHVwIGNsaWVudC1zaWRlIHJvdXRpbmcgYW5kIEhUVFAgY2xpZW50XG4gKiBmb3IgcG9zdC1oeWRyYXRpb24gQVBJIGNhbGxzIHRvIExhbWJkYSBlbmRwb2ludHMuXG4gKlxuICogKipFeGVjdXRpb24gRmxvdyoqOlxuICogMS4gSHlkcmF0ZSBSZWFjdCBhcHAgd2l0aCBleGlzdGluZyBQdXJlbm93Um91dGVyXG4gKiAyLiBDYWxsIGNvbmZpZy5hcHAoeyByb3V0ZXIgfSkgdG8gZ2V0IFJlYWN0IGVsZW1lbnRcbiAqIDMuIEluaXRpYWxpemUgY2xpZW50LXNpZGUgbmF2aWdhdGlvblxuICogNC4gU2V0IHVwIEhUVFAgY2xpZW50IGZvciBMYW1iZGEgZW5kcG9pbnQgY2FsbHNcbiAqXG4gKiAqKlJlcXVpcmVtZW50cyoqOiBSRVEtMDYsIFJFUS0xMlxuICovXG5leHBvcnQgY2xhc3MgQnJvd3NlclBpcGVsaW5lIHtcbiAgLy8gcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBsb2dnZXIoe1xuICAvLyAgIHNlcnZpY2VOYW1lOiAnQGxpYi9ydW50aW1lLXdlYi9waXBlbGluZXMvYnJvd3Nlci1waXBlbGluZScsXG4gIC8vIH0pO1xuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGJyb3dzZXIgcGlwZWxpbmUgZm9yIGNsaWVudC1zaWRlIGh5ZHJhdGlvbi5cbiAgICpcbiAgICogSHlkcmF0ZXMgdGhlIFJlYWN0IGFwcGxpY2F0aW9uIHdpdGggcHJlLWxvYWRlZCBkYXRhIGZyb20gU1NSIGFuZCBzZXRzIHVwXG4gICAqIGNsaWVudC1zaWRlIHJvdXRpbmcuIFVzZXMgUmVhY3QgaHlkcmF0aW9uIChub3QgcmVuZGVyKSB0byBtYXRjaCB0aGVcbiAgICogc2VydmVyLXJlbmRlcmVkIEhUTUwgZXhhY3RseS5cbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZyAtIFB1cmVub3cgY29uZmlndXJhdGlvbiB3aXRoIGFwcCBmYWN0b3J5IGFuZCByb3V0ZXJcbiAgICogQHBhcmFtIGNvbnRleHQgLSBCcm93c2VyIGVudmlyb25tZW50IGNvbnRleHQgd2l0aCBtZXRhZGF0YVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHBpcGVsaW5lID0gbmV3IEJyb3dzZXJQaXBlbGluZSgpO1xuICAgKiBhd2FpdCBwaXBlbGluZS5leGVjdXRlKGNvbmZpZywge1xuICAgKiAgIHR5cGU6ICdicm93c2VyJyxcbiAgICogICBtZXRhZGF0YToge1xuICAgKiAgICAgdXNlckFnZW50OiBuYXZpZ2F0b3IudXNlckFnZW50LFxuICAgKiAgICAgdXJsOiB3aW5kb3cubG9jYXRpb24uaHJlZixcbiAgICogICAgIHZpZXdwb3J0OiB7IHdpZHRoOiB3aW5kb3cuaW5uZXJXaWR0aCwgaGVpZ2h0OiB3aW5kb3cuaW5uZXJIZWlnaHQgfVxuICAgKiAgIH1cbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZXhlY3V0ZShjb25maWc6IFJ1bnRpbWVXZWJDb25maWcsIGNvbnRleHQ6IHsgdHlwZTogJ2Jyb3dzZXInOyBtZXRhZGF0YTogQnJvd3Nlck1ldGFkYXRhIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc29sZS5pbmZvKCdTdGFydGluZyBicm93c2VyIHBpcGVsaW5lIGV4ZWN1dGlvbicsIHtcbiAgICAgICAgc2VydmljZU5hbWU6IGNvbmZpZy5zZXJ2aWNlTmFtZSxcbiAgICAgICAgc3RhZ2U6IGNvbmZpZy5zdGFnZSxcbiAgICAgICAgdXJsOiBjb250ZXh0Lm1ldGFkYXRhLnVybCxcbiAgICAgICAgdXNlckFnZW50OiBjb250ZXh0Lm1ldGFkYXRhLnVzZXJBZ2VudCxcbiAgICAgICAgdmlld3BvcnQ6IGNvbnRleHQubWV0YWRhdGEudmlld3BvcnQsXG4gICAgICB9KTtcblxuICAgICAgLy8gMS4gQ3JlYXRlIGJyb3dzZXIgcm91dGVyIGZyb20gUHVyZW5vd1JvdXRlclxuICAgICAgY29uc3QgYnJvd3NlclJvdXRlciA9IHRoaXMuY3JlYXRlQnJvd3NlclJvdXRlcihjb25maWcpO1xuXG4gICAgICAvLyAyLiBHZXQgUmVhY3QgZWxlbWVudCBmcm9tIGFwcCBmYWN0b3J5XG4gICAgICBjb25zdCBhcHBFbGVtZW50ID0gdGhpcy5jcmVhdGVBcHBFbGVtZW50KGNvbmZpZyk7XG5cbiAgICAgIC8vIDMuIENyZWF0ZSByb3V0ZXIgcHJvdmlkZXIgd2l0aCB0aGUgYXBwXG4gICAgICBjb25zdCByb3V0ZXJQcm92aWRlciA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoUm91dGVyUHJvdmlkZXIsIHtcbiAgICAgICAgcm91dGVyOiBicm93c2VyUm91dGVyLFxuICAgICAgfSwgYXBwRWxlbWVudCk7XG5cbiAgICAgIC8vIDQuIEh5ZHJhdGUgdGhlIGFwcGxpY2F0aW9uICh1c2UgaHlkcmF0aW9uLCBub3QgcmVuZGVyKVxuICAgICAgdGhpcy5oeWRyYXRlQXBwbGljYXRpb24ocm91dGVyUHJvdmlkZXIpO1xuXG4gICAgICAvLyA1LiBTZXQgdXAgSFRUUCBjbGllbnQgZm9yIHBvc3QtaHlkcmF0aW9uIEFQSSBjYWxsc1xuICAgICAgdGhpcy5zZXR1cEh0dHBDbGllbnQoY29uZmlnKTtcblxuICAgICAgY29uc29sZS5pbmZvKCdCcm93c2VyIHBpcGVsaW5lIGV4ZWN1dGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Jywge1xuICAgICAgICBzZXJ2aWNlTmFtZTogY29uZmlnLnNlcnZpY2VOYW1lLFxuICAgICAgICBzdGFnZTogY29uZmlnLnN0YWdlLFxuICAgICAgfSk7XG5cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignQnJvd3NlciBwaXBlbGluZSBleGVjdXRpb24gZmFpbGVkJywge1xuICAgICAgICBzZXJ2aWNlTmFtZTogY29uZmlnLnNlcnZpY2VOYW1lLFxuICAgICAgICBzdGFnZTogY29uZmlnLnN0YWdlLFxuICAgICAgICBlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpLFxuICAgICAgICBzdGFjazogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLnN0YWNrIDogdW5kZWZpbmVkLFxuICAgICAgfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGJyb3dzZXIgcm91dGVyIGZyb20gUHVyZW5vd1JvdXRlciBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBVc2VzIHRoZSBleGlzdGluZyBQdXJlbm93Um91dGVyIHRvIGdldCByb3V0ZXMgYW5kIGNyZWF0ZXMgYSBSZWFjdCBSb3V0ZXJcbiAgICogYnJvd3NlciByb3V0ZXIgZm9yIGNsaWVudC1zaWRlIG5hdmlnYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgLSBQdXJlbm93IGNvbmZpZ3VyYXRpb25cbiAgICogQHJldHVybnMgQnJvd3NlciByb3V0ZXIgaW5zdGFuY2VcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlQnJvd3NlclJvdXRlcihjb25maWc6IFJ1bnRpbWVXZWJDb25maWcpIHtcbiAgICBjb25zb2xlLmRlYnVnKCdDcmVhdGluZyBicm93c2VyIHJvdXRlcicsIHtcbiAgICAgIHJvdXRlQ291bnQ6IGNvbmZpZy5yb3V0ZXIuZ2V0Um91dGVzKCkubGVuZ3RoLFxuICAgIH0pO1xuXG4gICAgLy8gR2V0IHJvdXRlcyBmcm9tIFB1cmVub3dSb3V0ZXJcbiAgICBjb25zdCByb3V0ZXMgPSBjb25maWcucm91dGVyLmdldFJvdXRlcygpO1xuXG4gICAgLy8gQ3JlYXRlIGJyb3dzZXIgcm91dGVyIHdpdGggcm91dGVzIChjYXN0IHRvIFJvdXRlT2JqZWN0W10gZm9yIGNvbXBhdGliaWxpdHkpXG4gICAgY29uc3QgYnJvd3NlclJvdXRlciA9IGNyZWF0ZUJyb3dzZXJSb3V0ZXIocm91dGVzIGFzIGFueSk7XG5cbiAgICBjb25zb2xlLmRlYnVnKCdCcm93c2VyIHJvdXRlciBjcmVhdGVkIHN1Y2Nlc3NmdWxseScsIHtcbiAgICAgIHJvdXRlQ291bnQ6IHJvdXRlcy5sZW5ndGgsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYnJvd3NlclJvdXRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgUmVhY3QgZWxlbWVudCBmcm9tIGFwcCBmYWN0b3J5IGZ1bmN0aW9uLlxuICAgKlxuICAgKiBDYWxscyB0aGUgdXNlcidzIGFwcCBmYWN0b3J5IGZ1bmN0aW9uIHdpdGggdGhlIHJvdXRlciBkZXBlbmRlbmN5XG4gICAqIHRvIGdldCB0aGUgcm9vdCBSZWFjdCBlbGVtZW50IGZvciB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgLSBQdXJlbm93IGNvbmZpZ3VyYXRpb25cbiAgICogQHJldHVybnMgUm9vdCBSZWFjdCBlbGVtZW50XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUFwcEVsZW1lbnQoY29uZmlnOiBSdW50aW1lV2ViQ29uZmlnKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgICBjb25zb2xlLmRlYnVnKCdDcmVhdGluZyBhcHAgZWxlbWVudCBmcm9tIGZhY3RvcnknKTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBDYWxsIGFwcCBmYWN0b3J5IHdpdGggcm91dGVyIGRlcGVuZGVuY3lcbiAgICAgIGNvbnN0IGFwcEVsZW1lbnQgPSBjb25maWcuYXBwKHsgcm91dGVyOiBjb25maWcucm91dGVyIH0pO1xuXG4gICAgICBpZiAoIVJlYWN0LmlzVmFsaWRFbGVtZW50KGFwcEVsZW1lbnQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQXBwIGZhY3RvcnkgbXVzdCByZXR1cm4gYSB2YWxpZCBSZWFjdCBlbGVtZW50Jyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGUuZGVidWcoJ0FwcCBlbGVtZW50IGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICByZXR1cm4gYXBwRWxlbWVudDtcblxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gY3JlYXRlIGFwcCBlbGVtZW50Jywge1xuICAgICAgICBlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpLFxuICAgICAgfSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBjcmVhdGUgYXBwIGVsZW1lbnQ6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIeWRyYXRlIHRoZSBSZWFjdCBhcHBsaWNhdGlvbiBpbiB0aGUgYnJvd3Nlci5cbiAgICpcbiAgICogVXNlcyBSZWFjdCdzIGh5ZHJhdGVSb290IHRvIGh5ZHJhdGUgdGhlIHNlcnZlci1yZW5kZXJlZCBIVE1MIHdpdGhcbiAgICogdGhlIGNsaWVudC1zaWRlIFJlYWN0IGFwcGxpY2F0aW9uLiBUaGlzIGVuc3VyZXMgdGhlIGNsaWVudCBtYXRjaGVzXG4gICAqIHRoZSBzZXJ2ZXIgZXhhY3RseSB0byBhdm9pZCBoeWRyYXRpb24gbWlzbWF0Y2hlcy5cbiAgICpcbiAgICogQHBhcmFtIHJvdXRlclByb3ZpZGVyIC0gUm91dGVyIHByb3ZpZGVyIGVsZW1lbnQgdG8gaHlkcmF0ZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBoeWRyYXRlQXBwbGljYXRpb24ocm91dGVyUHJvdmlkZXI6IFJlYWN0LlJlYWN0RWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnNvbGUuZGVidWcoJ1N0YXJ0aW5nIFJlYWN0IGh5ZHJhdGlvbicpO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIEdldCB0aGUgcm9vdCBjb250YWluZXIgZWxlbWVudFxuICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTtcbiAgICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignUm9vdCBjb250YWluZXIgZWxlbWVudCBub3QgZm91bmQuIEV4cGVjdGVkIGVsZW1lbnQgd2l0aCBpZD1cInJvb3RcIicpO1xuICAgICAgfVxuXG4gICAgICAvLyBIeWRyYXRlIHRoZSBhcHBsaWNhdGlvbiAobm90IHJlbmRlciAtIG11c3QgbWF0Y2ggc2VydmVyIEhUTUwpXG4gICAgICBoeWRyYXRlUm9vdChjb250YWluZXIsIHJvdXRlclByb3ZpZGVyKTtcblxuICAgICAgY29uc29sZS5pbmZvKCdSZWFjdCBoeWRyYXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseScpO1xuXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1JlYWN0IGh5ZHJhdGlvbiBmYWlsZWQnLCB7XG4gICAgICAgIGVycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvciksXG4gICAgICB9KTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUmVhY3QgaHlkcmF0aW9uIGZhaWxlZDogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB1cCBIVFRQIGNsaWVudCBmb3IgTGFtYmRhIGVuZHBvaW50IGNhbGxzLlxuICAgKlxuICAgKiBDb25maWd1cmVzIHRoZSBIVFRQIGNsaWVudCBmb3IgbWFraW5nIEFQSSBjYWxscyB0byBMYW1iZGEgZW5kcG9pbnRzXG4gICAqIGFmdGVyIGh5ZHJhdGlvbi4gVGhpcyBpcyB1c2VkIGZvciBwb3N0LWh5ZHJhdGlvbiBpbnRlcmFjdGlvbnMgdGhhdFxuICAgKiByZXF1aXJlIHNlcnZlci1zaWRlIGRhdGEuXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgLSBQdXJlbm93IGNvbmZpZ3VyYXRpb25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgc2V0dXBIdHRwQ2xpZW50KGNvbmZpZzogUnVudGltZVdlYkNvbmZpZyk6IHZvaWQge1xuICAgIGNvbnNvbGUuZGVidWcoJ1NldHRpbmcgdXAgSFRUUCBjbGllbnQgZm9yIExhbWJkYSBlbmRwb2ludHMnKTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBTZXQgdXAgYmFzZSBVUkwgZm9yIEFQSSBjYWxscyBiYXNlZCBvbiBzdGFnZVxuICAgICAgY29uc3QgYmFzZVVybCA9IHRoaXMuZ2V0QXBpQmFzZVVybChjb25maWcuc3RhZ2UpO1xuXG4gICAgICAvLyBTdG9yZSBjb25maWd1cmF0aW9uIGdsb2JhbGx5IGZvciB1c2UgYnkgZGF0YSBsb2FkZXJzXG4gICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgKHdpbmRvdyBhcyBhbnkpLl9fUFVSRU5PV19DT05GSUdfXyA9IHtcbiAgICAgICAgICBzZXJ2aWNlTmFtZTogY29uZmlnLnNlcnZpY2VOYW1lLFxuICAgICAgICAgIHN0YWdlOiBjb25maWcuc3RhZ2UsXG4gICAgICAgICAgYXBpQmFzZVVybDogYmFzZVVybCxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgY29uc29sZS5pbmZvKCdIVFRQIGNsaWVudCBjb25maWd1cmVkIHN1Y2Nlc3NmdWxseScsIHtcbiAgICAgICAgYmFzZVVybCxcbiAgICAgICAgc3RhZ2U6IGNvbmZpZy5zdGFnZSxcbiAgICAgIH0pO1xuXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBzZXR1cCBIVFRQIGNsaWVudCcsIHtcbiAgICAgICAgZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKSxcbiAgICAgIH0pO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gc2V0dXAgSFRUUCBjbGllbnQ6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgQVBJIGJhc2UgVVJMIGJhc2VkIG9uIGRlcGxveW1lbnQgc3RhZ2UuXG4gICAqXG4gICAqIERldGVybWluZXMgdGhlIGFwcHJvcHJpYXRlIEFQSSBiYXNlIFVSTCBmb3IgbWFraW5nIEhUVFAgcmVxdWVzdHNcbiAgICogdG8gTGFtYmRhIGVuZHBvaW50cyBiYXNlZCBvbiB0aGUgZGVwbG95bWVudCBzdGFnZS5cbiAgICpcbiAgICogQHBhcmFtIHN0YWdlIC0gRGVwbG95bWVudCBzdGFnZVxuICAgKiBAcmV0dXJucyBBUEkgYmFzZSBVUkxcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgZ2V0QXBpQmFzZVVybChzdGFnZTogJ2RldicgfCAnc3RhZ2luZycgfCAncHJvZCcpOiBzdHJpbmcge1xuICAgIC8vIEluIGJyb3dzZXIgY29udGV4dCwgQVBJIGNhbGxzIGdvIHRocm91Z2ggdGhlIHNhbWUgb3JpZ2luXG4gICAgLy8gVGhlIGFjdHVhbCBBUEkgR2F0ZXdheSBVUkwgaXMgaGFuZGxlZCBieSBDbG91ZEZyb250IHJvdXRpbmdcbiAgICBjb25zdCBvcmlnaW4gPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gOiAnJztcblxuICAgIC8vIEFQSSBlbmRwb2ludHMgYXJlIHR5cGljYWxseSB1bmRlciAvYXBpIHBhdGhcbiAgICByZXR1cm4gYCR7b3JpZ2lufS9hcGlgO1xuICB9XG59XG4iLCAiLypcbiAqIEVsYXN0aWMgTGljZW5zZSAyLjBcbiAqIENvcHlyaWdodCAoQykgMjAyNVx1MjAxM3ByZXNlbnQgUmFtYW4gTWFyb3phdSwgV29yayBUYXJnZXQgSW5zaWdodCBGdW5jdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIENvbnRhY3Q6IHJhbWFuQHdvcmt0aWYuY29tXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIExpY2Vuc2VkIFdvcms6IHdvcmt0aWYucHVyZW5vdy5jZGsgPHdvcmt0aWZfcHVyZW5vd19jZGs+LlxuICogVXNlIG9mIHRoaXMgc29mdHdhcmUgaXMgZ292ZXJuZWQgYnkgdGhlIEVsYXN0aWMgTGljZW5zZSAyLjA7IHNlZSB0aGUgTElDRU5TRSBmaWxlXG4gKiBvciBodHRwczovL3d3dy5lbGFzdGljLmNvL2xpY2Vuc2luZy9lbGFzdGljLWxpY2Vuc2UgZm9yIGRldGFpbHMuXG4gKlxuICogUmUtbGljZW5zaW5nIG5vdGljZTpcbiAqICAgVGhpcyBmaWxlIHdhcyBwcmV2aW91c2x5IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCdXNpbmVzcyBTb3VyY2UgTGljZW5zZSAxLjEgKEJVU0wtMS4xKS5cbiAqICAgQXMgb2YgMjAyNS0wOS0yMiwgaXQgaXMgcmUtbGljZW5zZWQgdW5kZXIgRWxhc3RpYyBMaWNlbnNlIDIuMC5cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRWxhc3RpYy0yLjBcbiAqL1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7IEluZnJhT3B0aW9ucyB9IGZyb20gJy4vaW5mcmEudHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBNaWNyb3NlcnZpY2VEZWZpbml0aW9uIH0gZnJvbSAnLi9taWNyb3NlcnZpY2UudHlwZXMnO1xuXG4vKipcbiAqIFB1cmVub3dSb3V0ZXIgaW50ZXJmYWNlIGZvciBydW50aW1lLXdlYiBpbnRlZ3JhdGlvbi5cbiAqXG4gKiBEZWZpbmVzIHRoZSBlc3NlbnRpYWwgbWV0aG9kcyBuZWVkZWQgYnkgdGhlIHJ1bnRpbWUtd2ViIHBpcGVsaW5lcy5cbiAqIFRoaXMgaW50ZXJmYWNlIG1hdGNoZXMgdGhlIGFjdHVhbCBQdXJlbm93Um91dGVyIGNsYXNzIGZyb20gQGxpYi9yZWFjdC9wdXJlbm93LnJvdXRlci5cbiAqL1xuaW50ZXJmYWNlIFB1cmVub3dSb3V0ZXIge1xuICAvKipcbiAgICogR2V0IGFsbCByb3V0ZSBvYmplY3RzIGFzIGFuIGFycmF5LlxuICAgKiBVc2VkIGZvciBjcmVhdGluZyBicm93c2VyIHJvdXRlcnMgYW5kIFNTUiBzdGF0aWMgaGFuZGxlcnMuXG4gICAqL1xuICBnZXRSb3V0ZXMoKTogQXJyYXk8e1xuICAgIHBhdGg/OiBzdHJpbmc7XG4gICAgZWxlbWVudD86IHVua25vd247XG4gICAgbG9hZGVyPzogdW5rbm93bjtcbiAgICBjaGlsZHJlbj86IHVua25vd247XG4gICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgfT47XG5cbiAgLyoqXG4gICAqIEZpbmQgYSByb3V0ZSBieSBpdHMgSUQuXG4gICAqL1xuICBnZXRSb3V0ZUJ5SWQ/KGlkOiBzdHJpbmcpOiB1bmtub3duO1xuXG4gIC8qKlxuICAgKiBGaW5kIGEgcm91dGUgYnkgaXRzIHBhdGguXG4gICAqL1xuICBnZXRSb3V0ZUJ5UGF0aD8ocGF0aDogc3RyaW5nKTogdW5rbm93bjtcblxuICAvKipcbiAgICogR2V0IHRoZSByb3V0ZXMgYXJyYXkgKGdldHRlcikuXG4gICAqL1xuICByb3V0ZXM/OiBBcnJheTx1bmtub3duPjtcblxuICAvKipcbiAgICogR2V0IHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBkZWZhdWx0cz86IHVua25vd247XG59XG5cbi8qKlxuICogU3RhZ2UgZW52aXJvbm1lbnQgZm9yIGRlcGxveW1lbnQuXG4gKlxuICogLSBgZGV2YDogRGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRcbiAqIC0gYHN0YWdpbmdgOiBTdGFnaW5nL3ByZS1wcm9kdWN0aW9uIGVudmlyb25tZW50XG4gKiAtIGBwcm9kYDogUHJvZHVjdGlvbiBlbnZpcm9ubWVudFxuICovXG5leHBvcnQgdHlwZSBTdGFnZSA9ICdkZXYnIHwgJ3N0YWdpbmcnIHwgJ3Byb2QnO1xuXG4vKipcbiAqIFV0aWxpdHkgdHlwZSB0byBleHRyYWN0IHNlcnZpY2UgbmFtZXMgZnJvbSByZWdpc3RlciBjb25maWd1cmF0aW9uLlxuICpcbiAqIFRoaXMgZW5hYmxlcyBjb21waWxlLXRpbWUgdmFsaWRhdGlvbiBvZiBzZXJ2aWNlIG5hbWVzIGFuZCBwcm92aWRlc1xuICogdHlwZS1zYWZlIGFjY2VzcyB0byBzZXJ2aWNlIGlkZW50aWZpZXJzIHRocm91Z2hvdXQgdGhlIGZyYW1ld29yay5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSByZWdpc3RlciBjb25maWd1cmF0aW9uIG9iamVjdCB0eXBlXG4gKi9cbmV4cG9ydCB0eXBlIFNlcnZpY2VOYW1lczxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgTWljcm9zZXJ2aWNlRGVmaW5pdGlvbj4+ID0ga2V5b2YgVDtcblxuLyoqXG4gKiBVdGlsaXR5IHR5cGUgdG8gZ2VuZXJhdGUgTGFtYmRhIElEcyBmcm9tIHNlcnZpY2UgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBDb21iaW5lcyBzZXJ2aWNlIG5hbWVzIHdpdGggTGFtYmRhIElEcyB0byBjcmVhdGUgZnVsbHkgcXVhbGlmaWVkXG4gKiBMYW1iZGEgaWRlbnRpZmllcnMgZm9yIHR5cGUtc2FmZSBMYW1iZGEgcmVzb2x1dGlvbi5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSByZWdpc3RlciBjb25maWd1cmF0aW9uIG9iamVjdCB0eXBlXG4gKi9cbmV4cG9ydCB0eXBlIExhbWJkYUlkczxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgTWljcm9zZXJ2aWNlRGVmaW5pdGlvbj4+ID0ge1xuICBbSyBpbiBrZXlvZiBUXTogVFtLXVsnbGFtYmRhcyddW251bWJlcl0gZXh0ZW5kcyB7IGlkOiBpbmZlciBJIH1cbiAgICA/IEkgZXh0ZW5kcyBzdHJpbmdcbiAgICAgID8gYCR7SyAmIHN0cmluZ30uJHtJfWBcbiAgICAgIDogbmV2ZXJcbiAgICA6IG5ldmVyO1xufVtrZXlvZiBUXTtcblxuLyoqXG4gKiBUeXBlIGNvbnN0cmFpbnQgZm9yIHZhbGlkIHNlcnZpY2UgbmFtZXMuXG4gKlxuICogRW5zdXJlcyBzZXJ2aWNlIG5hbWVzIGZvbGxvdyB0aGUgdmFsaWRhdGlvbiBwYXR0ZXJuOlxuICogLSBNdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIgKGEteiwgQS1aKVxuICogLSBDYW4gY29udGFpbiBsZXR0ZXJzLCBudW1iZXJzLCBhbmQgaHlwaGVuc1xuICogLSBNYXhpbXVtIGxlbmd0aDogMTI4IGNoYXJhY3RlcnNcbiAqXG4gKiBUaGlzIGlzIGEgYnJhbmRlZCB0eXBlIHRoYXQgcHJvdmlkZXMgY29tcGlsZS10aW1lIHZhbGlkYXRpb24uXG4gKi9cbmV4cG9ydCB0eXBlIFZhbGlkU2VydmljZU5hbWUgPSBzdHJpbmcgJiB7IHJlYWRvbmx5IF9fYnJhbmQ6ICdWYWxpZFNlcnZpY2VOYW1lJyB9O1xuXG4vKipcbiAqIFR5cGUgZ3VhcmQgdG8gdmFsaWRhdGUgc2VydmljZSBuYW1lIGZvcm1hdC5cbiAqXG4gKiBAcGFyYW0gc2VydmljZU5hbWUgLSBUaGUgc2VydmljZSBuYW1lIHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyBUeXBlIHByZWRpY2F0ZSBpbmRpY2F0aW5nIGlmIHRoZSBzZXJ2aWNlIG5hbWUgaXMgdmFsaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRTZXJ2aWNlTmFtZShzZXJ2aWNlTmFtZTogc3RyaW5nKTogc2VydmljZU5hbWUgaXMgVmFsaWRTZXJ2aWNlTmFtZSB7XG4gIHJldHVybiAvXlthLXpBLVpdW2EtekEtWjAtOS1dezAsMTI3fSQvLnRlc3Qoc2VydmljZU5hbWUpO1xufVxuXG4vKipcbiAqIE1haW4gY29uZmlndXJhdGlvbiBpbnRlcmZhY2UgZm9yIFJ1bnRpbWUgVGFyZ2V0IENvcmUuXG4gKlxuICogVGhpcyBpbnRlcmZhY2UgcHJvdmlkZXMgYSB1bmlmaWVkIGNvbmZpZ3VyYXRpb24gdGhhdCB3b3JrcyBhY3Jvc3MgYWxsIGV4ZWN1dGlvbiBjb250ZXh0czpcbiAqIC0gQnJvd3NlcjogSHlkcmF0ZXMgUmVhY3QgYXBwbGljYXRpb24gd2l0aCBjbGllbnQtc2lkZSByb3V0aW5nXG4gKiAtIExhbWJkYTogRXhlY3V0ZXMgc2VydmVyLXNpZGUgcmVuZGVyaW5nIGFuZCBidXNpbmVzcyBsb2dpY1xuICogLSBDREs6IFN5bnRoZXNpemVzIENsb3VkRm9ybWF0aW9uIGluZnJhc3RydWN0dXJlXG4gKlxuICogQHRlbXBsYXRlIFRSZWdpc3RlciAtIFRoZSByZWdpc3RlciBjb25maWd1cmF0aW9uIHR5cGUgZm9yIHR5cGUtc2FmZSBzZXJ2aWNlIG5hbWVzXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IHB1cmVub3cgfSBmcm9tICdAd29ya3RpZi9wdXJlbm93L3J1bnRpbWUtd2ViJztcbiAqIGltcG9ydCB7IFB1cmVub3dSb3V0ZXIgfSBmcm9tICdAd29ya3RpZi9wdXJlbm93JztcbiAqXG4gKiBjb25zdCBjb25maWcgPSB7XG4gKiAgIGFwcDogKHsgcm91dGVyIH0pID0+IDxBcHAgcm91dGVyPXtyb3V0ZXJ9IC8+LFxuICogICByb3V0ZXI6IG5ldyBQdXJlbm93Um91dGVyKHsgcm91dGVyOiByb3V0ZXMsIGRlZmF1bHRzOiB7fSB9KSxcbiAqICAgc2VydmljZU5hbWU6ICdteS1hcHAnLFxuICogICBzdGFnZTogJ2RldicsXG4gKiAgIHJlZ2lzdGVyOiB7XG4gKiAgICAgcGF5bWVudHM6IHtcbiAqICAgICAgIHRpZXM6IFtQYXltZW50c1RpZXNdLFxuICogICAgICAgbGFtYmRhczogW2NoYXJnZUhhbmRsZXIsIHJlZnVuZEhhbmRsZXJdXG4gKiAgICAgfSxcbiAqICAgICB1c2Vyczoge1xuICogICAgICAgdGllczogW1VzZXJzVGllc10sXG4gKiAgICAgICBsYW1iZGFzOiBbY3JlYXRlVXNlckhhbmRsZXIsIGdldFVzZXJIYW5kbGVyXVxuICogICAgIH1cbiAqICAgfSBhcyBjb25zdCwgIC8vIFVzZSAnYXMgY29uc3QnIGZvciBiZXR0ZXIgdHlwZSBpbmZlcmVuY2VcbiAqICAgaW5mcmE6IHtcbiAqICAgICBlbnY6IHsgYWNjb3VudDogJzEyMzQ1Njc4OTAxMicsIHJlZ2lvbjogJ3VzLWVhc3QtMScgfSxcbiAqICAgICBzdGFnZTogJ2RldicsXG4gKiAgICAgcmVhY3RFbnRyeTogJy4vc3JjL2luZGV4LnRzeCcsXG4gKiAgICAgYXBpTW9kZTogJ2FwaUdhdGV3YXknXG4gKiAgIH1cbiAqIH0gc2F0aXNmaWVzIFB1cmVub3dDb25maWc7XG4gKlxuICogcHVyZW5vdyhjb25maWcpO1xuICogYGBgXG4gKlxuICogQHRvZG86IGFmdGVyIFJ1bnRpbWVXZWIgcmVwbyB3aWxsIGJlIHJlc29sdmVkLCBSdW50aW1lV2ViQ29uZmlnIE1VU1QgZXh0ZW5kIFB1cmVub3dDb25maWcgQ29yZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bnRpbWVXZWJDb25maWc8VFJlZ2lzdGVyIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgTWljcm9zZXJ2aWNlRGVmaW5pdGlvbj4gPSBSZWNvcmQ8c3RyaW5nLCBNaWNyb3NlcnZpY2VEZWZpbml0aW9uPj4ge1xuICAvKipcbiAgICogUmVhY3QgYXBwbGljYXRpb24gY29tcG9uZW50IGZhY3RvcnkgZnVuY3Rpb24uXG4gICAqXG4gICAqIFJlY2VpdmVzIHRoZSByb3V0ZXIgaW5zdGFuY2UgYXMgYSBkZXBlbmRlbmN5IGFuZCByZXR1cm5zIHRoZSByb290IFJlYWN0IGVsZW1lbnQuXG4gICAqIFRoaXMgcGF0dGVybiBlbmFibGVzIGRlcGVuZGVuY3kgaW5qZWN0aW9uIG9mIHRoZSByb3V0ZXIgaW50byB5b3VyIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gZGVwcyAtIERlcGVuZGVuY2llcyBvYmplY3QgY29udGFpbmluZyB0aGUgcm91dGVyXG4gICAqIEBwYXJhbSBkZXBzLnJvdXRlciAtIFB1cmVub3dSb3V0ZXIgaW5zdGFuY2UgZm9yIG5hdmlnYXRpb24gYW5kIHJvdXRpbmdcbiAgICogQHJldHVybnMgUm9vdCBSZWFjdCBlbGVtZW50IChSZWFjdC5SZWFjdEVsZW1lbnQpXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogYXBwOiAoeyByb3V0ZXIgfSkgPT4gPEFwcCByb3V0ZXI9e3JvdXRlcn0gLz5cbiAgICogYGBgXG4gICAqL1xuICBhcHA6IChkZXBzOiB7IHJvdXRlcjogUHVyZW5vd1JvdXRlciB9KSA9PiBSZWFjdC5SZWFjdEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIFB1cmVub3dSb3V0ZXIgaW5zdGFuY2UgZm9yIGFwcGxpY2F0aW9uIHJvdXRpbmcuXG4gICAqXG4gICAqIERlZmluZXMgYWxsIHJvdXRlcywgbG9hZGVycywgYW5kIG5hdmlnYXRpb24gY29uZmlndXJhdGlvbi5cbiAgICogVGhlIHJvdXRlciBpcyB1c2VkIGluIGJvdGggc2VydmVyLXNpZGUgcmVuZGVyaW5nIChMYW1iZGEpIGFuZCBjbGllbnQtc2lkZSBoeWRyYXRpb24gKGJyb3dzZXIpLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBQdXJlbm93Um91dGVyfSBmb3Igcm91dGVyIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiByb3V0ZXI6IG5ldyBQdXJlbm93Um91dGVyKHtcbiAgICogICByb3V0ZXI6IFtcbiAgICogICAgIHsgcGF0aDogJy8nLCBlbGVtZW50OiA8SG9tZSAvPiB9LFxuICAgKiAgICAgeyBwYXRoOiAnL2Fib3V0JywgZWxlbWVudDogPEFib3V0IC8+IH1cbiAgICogICBdLFxuICAgKiAgIGRlZmF1bHRzOiB7fVxuICAgKiB9KVxuICAgKiBgYGBcbiAgICovXG4gIHJvdXRlcjogUHVyZW5vd1JvdXRlcjtcblxuICAvKipcbiAgICogU2VydmljZSBuYW1lIGlkZW50aWZpZXIgZm9yIHRoZSBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogVXNlZCBhcyBhIHByZWZpeCBmb3IgYWxsIEFXUyByZXNvdXJjZXMgKExhbWJkYSBmdW5jdGlvbnMsIEFQSSBHYXRld2F5LCBTMyBidWNrZXRzLCBldGMuKS5cbiAgICogTXVzdCBiZSB1bmlxdWUgd2l0aGluIHlvdXIgQVdTIGFjY291bnQgYW5kIHJlZ2lvbi5cbiAgICpcbiAgICogKipWYWxpZGF0aW9uIFJ1bGVzKio6XG4gICAqIC0gTXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyIChhLXosIEEtWilcbiAgICogLSBDYW4gY29udGFpbiBsZXR0ZXJzLCBudW1iZXJzLCBhbmQgaHlwaGVuc1xuICAgKiAtIE1heGltdW0gbGVuZ3RoOiAxMjggY2hhcmFjdGVyc1xuICAgKiAtIFBhdHRlcm46IGAvXlthLXpBLVpdW2EtekEtWjAtOS1dezAsMTI3fSQvYFxuICAgKlxuICAgKiAqKkV4YW1wbGVzKio6XG4gICAqIC0gVmFsaWQ6IGBteS1hcHBgLCBgTXlBcHBgLCBgYXBwMTIzYCwgYG15LWFwcC12MmBcbiAgICogLSBJbnZhbGlkOiBgMTIzYXBwYCAoc3RhcnRzIHdpdGggbnVtYmVyKSwgYG15X2FwcGAgKHVuZGVyc2NvcmUpLCBgbXkgYXBwYCAoc3BhY2UpXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogc2VydmljZU5hbWU6ICdteS1hcHBsaWNhdGlvbidcbiAgICogYGBgXG4gICAqL1xuICBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXBsb3ltZW50IHN0YWdlL2Vudmlyb25tZW50LlxuICAgKlxuICAgKiBEZXRlcm1pbmVzIHRoZSBlbnZpcm9ubWVudC1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGFuZCByZXNvdXJjZSBuYW1pbmcuXG4gICAqIFVzZWQgdG8gY3JlYXRlIHNlcGFyYXRlIGluZnJhc3RydWN0dXJlIHN0YWNrcyBmb3IgZGlmZmVyZW50IGVudmlyb25tZW50cy5cbiAgICpcbiAgICogKipWYWx1ZXMqKjpcbiAgICogLSBgZGV2YDogRGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgKGxvY2FsIHRlc3RpbmcsIHJhcGlkIGl0ZXJhdGlvbilcbiAgICogLSBgc3RhZ2luZ2A6IFN0YWdpbmcvcHJlLXByb2R1Y3Rpb24gZW52aXJvbm1lbnQgKFFBLCBpbnRlZ3JhdGlvbiB0ZXN0aW5nKVxuICAgKiAtIGBwcm9kYDogUHJvZHVjdGlvbiBlbnZpcm9ubWVudCAobGl2ZSB1c2VycylcbiAgICpcbiAgICogKipJbXBhY3QqKjpcbiAgICogLSBSZXNvdXJjZSBuYW1pbmc6IGB7c2VydmljZU5hbWV9LXtyZXNvdXJjZX0te3N0YWdlfWBcbiAgICogLSBFbnZpcm9ubWVudCB2YXJpYWJsZXM6IERpZmZlcmVudCBjb25maWdzIHBlciBzdGFnZVxuICAgKiAtIENhY2hlIFRUTDogU2hvcnRlciBpbiBkZXYsIGxvbmdlciBpbiBwcm9kXG4gICAqIC0gTG9nZ2luZzogTW9yZSB2ZXJib3NlIGluIGRldiwgc3RydWN0dXJlZCBpbiBwcm9kXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogc3RhZ2U6ICdkZXYnXG4gICAqIGBgYFxuICAgKi9cbiAgc3RhZ2U6IFN0YWdlO1xuXG4gIC8qKlxuICAgKiBNaWNyb3NlcnZpY2UgcmVnaXN0cnkgKHJ1bnRpbWUtbGV2ZWwgY29uZmlndXJhdGlvbikuXG4gICAqXG4gICAqICoqUmVxdWlyZWQqKjogRGVmaW5lcyBhbGwgbWljcm9zZXJ2aWNlcywgdGhlaXIgREkgY29udGFpbmVycywgYW5kIExhbWJkYSBlbmRwb2ludHMuXG4gICAqICoqVXNlZCBpbiBhbGwgY29udGV4dHMqKjogQnJvd3NlciAoZm9yIHR5cGUgZ2VuZXJhdGlvbiksIExhbWJkYSAoZm9yIERJKSwgQ0RLIChmb3IgaW5mcmFzdHJ1Y3R1cmUpLlxuICAgKiAqKkFyY2hpdGVjdHVyZSoqOiBUaGlzIGlzIHJ1bnRpbWUgY29uZmlndXJhdGlvbiwgc2VwYXJhdGUgZnJvbSBpbmZyYXN0cnVjdHVyZSBjb25jZXJucy5cbiAgICpcbiAgICogRWFjaCBtaWNyb3NlcnZpY2UgZ2V0cyBpdHMgb3duIFB1cmVDb250YWluZXIgaW5zdGFuY2UgYnVpbHQgZnJvbSB0aGUgVGllcyBjbGFzc2VzLlxuICAgKiBMYW1iZGEgZnVuY3Rpb25zIGFyZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYW5kIHdpcmVkIHdpdGggZGVwZW5kZW5jeSBpbmplY3Rpb24uXG4gICAqXG4gICAqICoqVHlwZSBTYWZldHkqKjogU2VydmljZSBuYW1lcyBhcmUgZGVyaXZlZCBmcm9tIG9iamVjdCBrZXlzLCBlbnN1cmluZyBjb21waWxlLXRpbWUgdmFsaWRhdGlvbi5cbiAgICogKipObyBNYWdpYyBTdHJpbmdzKio6IEFsbCBzZXJ2aWNlIGlkZW50aWZpZXJzIGFyZSB0eXBlLXNhZmUgYW5kIGF1dG8tZ2VuZXJhdGVkLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBNaWNyb3NlcnZpY2VEZWZpbml0aW9ufSBmb3IgbWljcm9zZXJ2aWNlIHN0cnVjdHVyZVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIHJlZ2lzdGVyOiB7XG4gICAqICAgcGF5bWVudHM6IHtcbiAgICogICAgIHRpZXM6IFtQYXltZW50c1RpZXMsIEJpbGxpbmdUaWVzXSxcbiAgICogICAgIGxhbWJkYXM6IFtjaGFyZ2VIYW5kbGVyLCByZWZ1bmRIYW5kbGVyLCB3ZWJob29rSGFuZGxlcl1cbiAgICogICB9LFxuICAgKiAgIHVzZXJzOiB7XG4gICAqICAgICB0aWVzOiBbVXNlcnNUaWVzLCBBdXRoVGllc10sXG4gICAqICAgICBsYW1iZGFzOiBbY3JlYXRlVXNlckhhbmRsZXIsIGdldFVzZXJIYW5kbGVyLCBsb2dpbkhhbmRsZXJdXG4gICAqICAgfVxuICAgKiB9IGFzIGNvbnN0ICAvLyBVc2UgJ2FzIGNvbnN0JyBmb3IgYmV0dGVyIHR5cGUgaW5mZXJlbmNlXG4gICAqIGBgYFxuICAgKi9cbiAgcmVnaXN0ZXI6IFRSZWdpc3RlcjtcblxuICAvKipcbiAgICogSW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiBmb3IgQ0RLIGRlcGxveW1lbnQuXG4gICAqXG4gICAqICoqT3B0aW9uYWwqKjogT25seSByZXF1aXJlZCB3aGVuIHJ1bm5pbmcgaW4gQ0RLIGNvbnRleHQgKHN5bnRoZXNpemluZyBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZXMpLlxuICAgKiAqKk5vdCB1c2VkKio6IEluIGJyb3dzZXIgYW5kIExhbWJkYSBjb250ZXh0cyAocnVudGltZSBjb25maWd1cmF0aW9uIGlzIGluIHJlZ2lzdGVyKS5cbiAgICogKipQdXJlIGluZnJhc3RydWN0dXJlKio6IENvbnRhaW5zIG9ubHkgQVdTIHJlc291cmNlIGNvbmZpZ3VyYXRpb24sIG5vIGJ1c2luZXNzIGxvZ2ljLlxuICAgKlxuICAgKiBEZWZpbmVzOlxuICAgKiAtIEFXUyBhY2NvdW50IGFuZCByZWdpb25cbiAgICogLSBMYW1iZGEgY29uZmlndXJhdGlvbiAobWVtb3J5LCB0aW1lb3V0LCBWUEMpXG4gICAqIC0gQVBJIEdhdGV3YXkgb3IgTGFtYmRhIFVSTCBtb2RlXG4gICAqIC0gQ3VzdG9tIGRvbWFpbiBjb25maWd1cmF0aW9uXG4gICAqIC0gUmVhY3QgZW50cnkgcG9pbnQgZm9yIFNTUiBMYW1iZGFcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgSW5mcmFPcHRpb25zfSBmb3IgZGV0YWlsZWQgY29uZmlndXJhdGlvbiBvcHRpb25zXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogaW5mcmE6IHtcbiAgICogICBlbnY6IHsgYWNjb3VudDogJzEyMzQ1Njc4OTAxMicsIHJlZ2lvbjogJ3VzLWVhc3QtMScgfSxcbiAgICogICBzdGFnZTogJ2RldicsXG4gICAqICAgcmVhY3RFbnRyeTogJy4vc3JjL2luZGV4LnRzeCcsXG4gICAqICAgYXBpTW9kZTogJ2FwaUdhdGV3YXknLFxuICAgKiAgIGxhbWJkYU1lbW9yeVNpemU6IDEwMjQsXG4gICAqICAgbGFtYmRhVGltZW91dDogMzAsXG4gICAqICAgZG9tYWluOiB7XG4gICAqICAgICByb290RG9tYWluOiAnbXlhcHAuY29tJyxcbiAgICogICAgIHN1YmRvbWFpbjogJ2FwaSdcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBpbmZyYT86IEluZnJhT3B0aW9ucztcbn1cblxuLyoqXG4gKiBUeXBlLXNhZmUgUHVyZW5vdyBjb25maWd1cmF0aW9uIHdpdGggaW5mZXJyZWQgc2VydmljZSBuYW1lcy5cbiAqXG4gKiBUaGlzIHR5cGUgcHJvdmlkZXMgUnVudGltZSBDb3JlIHR5cGUgc2FmZXR5IGJ5IGluZmVycmluZyBzZXJ2aWNlIG5hbWVzIGZyb20gdGhlIHJlZ2lzdGVyXG4gKiBjb25maWd1cmF0aW9uLCBlbmFibGluZyBjb21waWxlLXRpbWUgdmFsaWRhdGlvbiBvZiBzZXJ2aWNlIHJlZmVyZW5jZXMuXG4gKlxuICogQHRlbXBsYXRlIFRSZWdpc3RlciAtIFRoZSByZWdpc3RlciBjb25maWd1cmF0aW9uIHR5cGVcbiAqL1xuZXhwb3J0IHR5cGUgVHlwZVNhZmVQdXJlbm93Q29uZmlnPFRSZWdpc3RlciBleHRlbmRzIFJlY29yZDxzdHJpbmcsIE1pY3Jvc2VydmljZURlZmluaXRpb24+PiA9XG4gIFJ1bnRpbWVXZWJDb25maWc8VFJlZ2lzdGVyPiAmIHtcbiAgLyoqXG4gICAqIFR5cGUtc2FmZSBzZXJ2aWNlIG5hbWVzIGRlcml2ZWQgZnJvbSByZWdpc3RlciBrZXlzLlxuICAgKiBBdmFpbGFibGUgYXQgY29tcGlsZS10aW1lIGZvciB0eXBlIGNoZWNraW5nIGFuZCBJREUgYXV0b2NvbXBsZXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZU5hbWVzPzogU2VydmljZU5hbWVzPFRSZWdpc3Rlcj47XG5cbiAgLyoqXG4gICAqIFR5cGUtc2FmZSBMYW1iZGEgSURzIGRlcml2ZWQgZnJvbSByZWdpc3RlciBjb25maWd1cmF0aW9uLlxuICAgKiBBdmFpbGFibGUgYXQgY29tcGlsZS10aW1lIGZvciB0eXBlIGNoZWNraW5nIGFuZCBJREUgYXV0b2NvbXBsZXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhSWRzPzogTGFtYmRhSWRzPFRSZWdpc3Rlcj47XG59O1xuIiwgIi8qXG4gKiBFbGFzdGljIExpY2Vuc2UgMi4wXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjVcdTIwMTNwcmVzZW50IFJhbWFuIE1hcm96YXUsIFdvcmsgVGFyZ2V0IEluc2lnaHQgRnVuY3Rpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBDb250YWN0OiByYW1hbkB3b3JrdGlmLmNvbVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBMaWNlbnNlZCBXb3JrOiB3b3JrdGlmLnB1cmVub3cuY2RrIDx3b3JrdGlmX3B1cmVub3dfY2RrPi5cbiAqIFVzZSBvZiB0aGlzIHNvZnR3YXJlIGlzIGdvdmVybmVkIGJ5IHRoZSBFbGFzdGljIExpY2Vuc2UgMi4wOyBzZWUgdGhlIExJQ0VOU0UgZmlsZVxuICogb3IgaHR0cHM6Ly93d3cuZWxhc3RpYy5jby9saWNlbnNpbmcvZWxhc3RpYy1saWNlbnNlIGZvciBkZXRhaWxzLlxuICpcbiAqIFJlLWxpY2Vuc2luZyBub3RpY2U6XG4gKiAgIFRoaXMgZmlsZSB3YXMgcHJldmlvdXNseSBkaXN0cmlidXRlZCB1bmRlciB0aGUgQnVzaW5lc3MgU291cmNlIExpY2Vuc2UgMS4xIChCVVNMLTEuMSkuXG4gKiAgIEFzIG9mIDIwMjUtMDktMjIsIGl0IGlzIHJlLWxpY2Vuc2VkIHVuZGVyIEVsYXN0aWMgTGljZW5zZSAyLjAuXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVsYXN0aWMtMi4wXG4gKi9cblxuaW1wb3J0IHsgcHVyZW5vdywgUHVyZW5vd1JvdXRlLCBwdXJlbm93Um91dGVyLCBQdXJlbm93Um91dGVyRGVmYXVsdHMgfSBmcm9tICdAd29ya3RpZi9wdXJlbm93JztcbmltcG9ydCB7IFJ1bnRpbWVXZWJDb25maWcgfSBmcm9tICdAbGliL3J1bnRpbWUtd2ViL3R5cGVzJztcblxuLyoqXG4gKiBFcnJvciB0aHJvd24gd2hlbiBjb25maWd1cmF0aW9uIHZhbGlkYXRpb24gZmFpbHMuXG4gKiBGb2xsb3dzIHB1cmVub3cgZXJyb3IgcGF0dGVybnMgd2l0aG91dCBlbW9qaS5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbmZpZ1ZhbGlkYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgLyoqIEFycmF5IG9mIHZhbGlkYXRpb24gZXJyb3IgbWVzc2FnZXMgKi9cbiAgcmVhZG9ubHkgZXJyb3JzOiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3RvcihlcnJvcnM6IHN0cmluZ1tdKSB7XG4gICAgc3VwZXIoYENvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiBmYWlsZWQ6XFxuJHtlcnJvcnMubWFwKGUgPT4gYCAgLSAke2V9YCkuam9pbignXFxuJyl9YCk7XG4gICAgdGhpcy5uYW1lID0gJ0NvbmZpZ1ZhbGlkYXRpb25FcnJvcic7XG4gICAgdGhpcy5lcnJvcnMgPSBlcnJvcnM7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgdGhpcy5jb25zdHJ1Y3Rvcik7XG4gIH1cbn1cblxuLyoqXG4gKiBFcnJvciB0aHJvd24gd2hlbiBlbnZpcm9ubWVudCBkZXRlY3Rpb24gZmFpbHMuXG4gKiBGb2xsb3dzIHB1cmVub3cgZXJyb3IgcGF0dGVybnMgd2l0aG91dCBlbW9qaS5cbiAqL1xuZXhwb3J0IGNsYXNzIEVudmlyb25tZW50RGV0ZWN0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdFbnZpcm9ubWVudERldGVjdGlvbkVycm9yJztcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCB0aGlzLmNvbnN0cnVjdG9yKTtcbiAgfVxufVxuXG4vKipcbiAqIERldGVjdCB0aGUgY3VycmVudCBydW50aW1lIGVudmlyb25tZW50LlxuICogVGhpcyBpcyBhIGxpZ2h0d2VpZ2h0IGRldGVjdGlvbiB0aGF0IHdvcmtzIGluIGFsbCBlbnZpcm9ubWVudHMuXG4gKi9cbmZ1bmN0aW9uIGRldGVjdEVudmlyb25tZW50KCk6ICdicm93c2VyJyB8ICdsYW1iZGEnIHwgJ2Nkaycge1xuICAvLyBCcm93c2VyIGRldGVjdGlvblxuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gJ2Jyb3dzZXInO1xuICB9XG5cbiAgLy8gTGFtYmRhIGRldGVjdGlvblxuICBpZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MuZW52Py5BV1NfTEFNQkRBX0ZVTkNUSU9OX05BTUUpIHtcbiAgICByZXR1cm4gJ2xhbWJkYSc7XG4gIH1cblxuICAvLyBDREsgZGV0ZWN0aW9uXG4gIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnY/LlBVUkVOT1dfTU9ERSA9PT0gJ2NkaycpIHtcbiAgICAgIHJldHVybiAnY2RrJztcbiAgICB9XG4gICAgaWYgKHByb2Nlc3MuZW52Py5DREtfREVGQVVMVF9BQ0NPVU5UIHx8IHByb2Nlc3MuZW52Py5DREtfREVGQVVMVF9SRUdJT04pIHtcbiAgICAgIHJldHVybiAnY2RrJztcbiAgICB9XG4gICAgaWYgKHByb2Nlc3MuYXJndj8uc29tZShhcmcgPT4gYXJnLmluY2x1ZGVzKCdjZGsnKSB8fCBhcmcuaW5jbHVkZXMoJ3N5bnRoJykpKSB7XG4gICAgICByZXR1cm4gJ2Nkayc7XG4gICAgfVxuICB9XG5cbiAgLy8gRGVmYXVsdCB0byBDREsgZm9yIE5vZGUuanMgZW52aXJvbm1lbnRzIChidWlsZCB0aW1lKVxuICByZXR1cm4gJ2Nkayc7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGdpdmVuIGVudmlyb25tZW50LlxuICogTGlnaHR3ZWlnaHQgdmFsaWRhdGlvbiB0aGF0IHdvcmtzIGluIGFsbCBlbnZpcm9ubWVudHMuXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlQ29uZmlnKGNvbmZpZzogUnVudGltZVdlYkNvbmZpZywgaXNDREtDb250ZXh0OiBib29sZWFuKTogeyB2YWxpZDogYm9vbGVhbjsgZXJyb3JzOiBzdHJpbmdbXSB9IHtcbiAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8vIFNlcnZpY2UgbmFtZSB2YWxpZGF0aW9uXG4gIGlmICghY29uZmlnLnNlcnZpY2VOYW1lIHx8ICEvXlthLXpBLVpdW2EtekEtWjAtOS1dezAsMTI3fSQvLnRlc3QoY29uZmlnLnNlcnZpY2VOYW1lKSkge1xuICAgIGVycm9ycy5wdXNoKCdzZXJ2aWNlTmFtZSBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIsIGNvbnRhaW4gb25seSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBhbmQgaHlwaGVucywgYW5kIGJlIG1heCAxMjggY2hhcmFjdGVycycpO1xuICB9XG5cbiAgLy8gU3RhZ2UgdmFsaWRhdGlvblxuICBpZiAoIVsnZGV2JywgJ3N0YWdpbmcnLCAncHJvZCddLmluY2x1ZGVzKGNvbmZpZy5zdGFnZSkpIHtcbiAgICBlcnJvcnMucHVzaCgnc3RhZ2UgbXVzdCBiZSBvbmUgb2Y6IGRldiwgc3RhZ2luZywgcHJvZCcpO1xuICB9XG5cbiAgLy8gSW5mcmEgdmFsaWRhdGlvbiBmb3IgQ0RLIGNvbnRleHRcbiAgaWYgKGlzQ0RLQ29udGV4dCAmJiAhY29uZmlnLmluZnJhKSB7XG4gICAgZXJyb3JzLnB1c2goJ2luZnJhIGNvbmZpZ3VyYXRpb24gaXMgcmVxdWlyZWQgaW4gQ0RLIGNvbnRleHQnKTtcbiAgfVxuXG4gIHJldHVybiB7IHZhbGlkOiBlcnJvcnMubGVuZ3RoID09PSAwLCBlcnJvcnMgfTtcbn1cblxuLyoqXG4gKiBVbmlmaWVkIGVudHJ5IHBvaW50IGZvciBSdW50aW1lIFRhcmdldCBDb3JlLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgYSBzaW5nbGUgQVBJIHRoYXQgd29ya3MgYWNyb3NzIGFsbCBleGVjdXRpb24gY29udGV4dHM6XG4gKiAtICoqQnJvd3NlcioqOiBIeWRyYXRlcyBSZWFjdCBhcHBsaWNhdGlvbiB3aXRoIGNsaWVudC1zaWRlIHJvdXRpbmdcbiAqIC0gKipMYW1iZGEqKjogRXhlY3V0ZXMgc2VydmVyLXNpZGUgcmVuZGVyaW5nIGFuZCBidXNpbmVzcyBsb2dpYyB3aXRoIERJXG4gKiAtICoqQ0RLKio6IFN5bnRoZXNpemVzIENsb3VkRm9ybWF0aW9uIGluZnJhc3RydWN0dXJlIHRlbXBsYXRlc1xuICpcbiAqIFRoZSBmdW5jdGlvbiBhdXRvbWF0aWNhbGx5IGRldGVjdHMgdGhlIHJ1bnRpbWUgZW52aXJvbm1lbnQgYW5kIHJvdXRlc1xuICogZXhlY3V0aW9uIHRvIHRoZSBhcHByb3ByaWF0ZSBwaXBlbGluZSB3aXRob3V0IHVzZXIgaW50ZXJ2ZW50aW9uLlxuICpcbiAqICoqTm90ZSoqOiBGb3IgTGFtYmRhIGFuZCBDREsgY29udGV4dHMsIHVzZSB0aGUgc2VydmVyLXNpZGUgZW50cnkgcG9pbnRcbiAqIGZyb20gYEBjb3JlL3J1bnRpbWUtd2ViYCBpbnN0ZWFkLiBUaGlzIGJyb3dzZXItY29tcGF0aWJsZSB2ZXJzaW9uXG4gKiBvbmx5IHN1cHBvcnRzIGJyb3dzZXIgaHlkcmF0aW9uLlxuICpcbiAqIEBwYXJhbSBjb25maWcgLSBVbmlmaWVkIGNvbmZpZ3VyYXRpb24gZm9yIGFsbCBjb250ZXh0c1xuICogQHJldHVybnMgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gZXhlY3V0aW9uIGNvbXBsZXRlc1xuICogQHRocm93cyBDb25maWdWYWxpZGF0aW9uRXJyb3IgaWYgY29uZmlndXJhdGlvbiBpcyBpbnZhbGlkXG4gKiBAdGhyb3dzIEVudmlyb25tZW50RGV0ZWN0aW9uRXJyb3IgaWYgZW52aXJvbm1lbnQgY2Fubm90IGJlIGRldGVjdGVkXG4gKiBAdGhyb3dzIEVycm9yIGlmIGV4ZWN1dGlvbiBmYWlsc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBwdXJlbm93IH0gZnJvbSAnQHdvcmt0aWYvcHVyZW5vdy9ydW50aW1lLXdlYic7XG4gKiBpbXBvcnQgeyBQdXJlbm93Um91dGVyIH0gZnJvbSAnQHdvcmt0aWYvcHVyZW5vdyc7XG4gKlxuICogcHVyZW5vdyh7XG4gKiAgIGFwcDogKHsgcm91dGVyIH0pID0+IDxBcHAgcm91dGVyPXtyb3V0ZXJ9IC8+LFxuICogICByb3V0ZXI6IG5ldyBQdXJlbm93Um91dGVyKHsgcm91dGVzLCBkZWZhdWx0czoge30gfSksXG4gKiAgIHNlcnZpY2VOYW1lOiAnbXktYXBwJyxcbiAqICAgc3RhZ2U6ICdkZXYnLFxuICogICByZWdpc3Rlcjoge1xuICogICAgIHBheW1lbnRzOiB7XG4gKiAgICAgICB0aWVzOiBbUGF5bWVudHNUaWVzXSxcbiAqICAgICAgIGxhbWJkYXM6IFtjaGFyZ2VIYW5kbGVyLCByZWZ1bmRIYW5kbGVyXVxuICogICAgIH1cbiAqICAgfSxcbiAqICAgaW5mcmE6IHtcbiAqICAgICBlbnY6IHsgYWNjb3VudDogJzEyMzQ1Njc4OTAxMicsIHJlZ2lvbjogJ3VzLWVhc3QtMScgfSxcbiAqICAgICBzdGFnZTogJ2RldicsXG4gKiAgICAgcmVhY3RFbnRyeTogJy4vc3JjL2luZGV4LnRzeCcsXG4gKiAgICAgYXBpTW9kZTogJ2FwaUdhdGV3YXknXG4gKiAgIH1cbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwdXJld2ViKGNvbmZpZzogUnVudGltZVdlYkNvbmZpZyk6IHZvaWQge1xuICAvLyAxLiBEZXRlY3QgcnVudGltZSBlbnZpcm9ubWVudCB1c2luZyBsaWdodHdlaWdodCBkZXRlY3Rpb25cbiAgY29uc3QgZW52VHlwZSA9IGRldGVjdEVudmlyb25tZW50KCk7XG4gIGNvbnN0IGlzQ0RLQ29udGV4dCA9IGVudlR5cGUgPT09ICdjZGsnO1xuXG4gIC8vIDIuIFZhbGlkYXRlIGNvbmZpZ3VyYXRpb25cbiAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IHZhbGlkYXRlQ29uZmlnKGNvbmZpZywgaXNDREtDb250ZXh0KTtcblxuICBpZiAoIXZhbGlkYXRpb25SZXN1bHQudmFsaWQpIHtcbiAgICB0aHJvdyBuZXcgQ29uZmlnVmFsaWRhdGlvbkVycm9yKHZhbGlkYXRpb25SZXN1bHQuZXJyb3JzKTtcbiAgfVxuXG4gIC8vIDMuIFJvdXRlIHRvIGFwcHJvcHJpYXRlIHBpcGVsaW5lIGJhc2VkIG9uIGVudmlyb25tZW50XG4gIHN3aXRjaCAoZW52VHlwZSkge1xuICAgIGNhc2UgJ2Jyb3dzZXInOiB7XG4gICAgICAvLyBCcm93c2VyIHBpcGVsaW5lIC0gaHlkcmF0ZSBSZWFjdCBhcHBcbiAgICAgIC8vIFRoaXMgaXMgdGhlIG9ubHkgcGF0aCB0aGF0IHJ1bnMgaW4gdGhlIGJyb3dzZXJcbiAgICAgIHB1cmVub3coe1xuICAgICAgICBhcHA6ICh7IHJvdXRlciB9KSA9PiBjb25maWcuYXBwKHsgcm91dGVyIH0pLFxuICAgICAgICByb3V0ZXI6IHB1cmVub3dSb3V0ZXIoe1xuICAgICAgICAgIHJvdXRlcjogY29uZmlnLnJvdXRlci5nZXRSb3V0ZXMoKSBhcyBQdXJlbm93Um91dGVbXSxcbiAgICAgICAgICBkZWZhdWx0czogY29uZmlnLnJvdXRlci5kZWZhdWx0cyBhcyBQdXJlbm93Um91dGVyRGVmYXVsdHMsXG4gICAgICAgIH0pLFxuICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICBzZXJ2aWNlTmFtZTogY29uZmlnLnNlcnZpY2VOYW1lLFxuICAgICAgICAgIHN0YWdlOiBjb25maWcuc3RhZ2UsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNhc2UgJ2xhbWJkYSc6XG4gICAgY2FzZSAnY2RrJzoge1xuICAgICAgLy8gTGFtYmRhIGFuZCBDREsgcGlwZWxpbmVzIHJlcXVpcmUgc2VydmVyLXNpZGUgY29kZVxuICAgICAgLy8gVGhlc2Ugc2hvdWxkIHVzZSB0aGUgc2VydmVyLXNpZGUgZW50cnkgcG9pbnQgZnJvbSBAY29yZS9ydW50aW1lLXdlYlxuICAgICAgY29uc29sZS5sb2coJ1tSdW50aW1lXSBTZXJ2ZXItc2lkZSBwaXBlbGluZSBkZXRlY3RlZCAoJXMpJywgZW52VHlwZSk7XG4gICAgICBwdXJlbm93KHtcbiAgICAgICAgYXBwOiAoeyByb3V0ZXIgfSkgPT4gY29uZmlnLmFwcCh7IHJvdXRlciB9KSxcbiAgICAgICAgcm91dGVyOiBwdXJlbm93Um91dGVyKHtcbiAgICAgICAgICByb3V0ZXI6IGNvbmZpZy5yb3V0ZXIuZ2V0Um91dGVzKCkgYXMgUHVyZW5vd1JvdXRlW10sXG4gICAgICAgICAgZGVmYXVsdHM6IGNvbmZpZy5yb3V0ZXIuZGVmYXVsdHMgYXMgUHVyZW5vd1JvdXRlckRlZmF1bHRzLFxuICAgICAgICB9KSxcbiAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgc2VydmljZU5hbWU6IGNvbmZpZy5zZXJ2aWNlTmFtZSxcbiAgICAgICAgICBzdGFnZTogY29uZmlnLnN0YWdlLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdbUnVudGltZSBXZWJdIExhbWJkYSBydW50aW1lIGRldGVjdGVkLCBza2lwcGluZyBicm93c2VyIHJlbmRlcmluZyBwaXBlbGluZScpO1xuICAgICAgLy8gdGhyb3cgbmV3IEVudmlyb25tZW50RGV0ZWN0aW9uRXJyb3IoXG4gICAgICAvLyAgIGBTZXJ2ZXItc2lkZSBlbnZpcm9ubWVudCBkZXRlY3RlZCAoJHtlbnZUeXBlfSkuIGAgK1xuICAgICAgLy8gICBgVXNlIHRoZSBzZXJ2ZXItc2lkZSBlbnRyeSBwb2ludCBmcm9tICdAY29yZS9ydW50aW1lLXdlYicgZm9yIExhbWJkYSBhbmQgQ0RLIGNvbnRleHRzLmAsXG4gICAgICAvLyApO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6XG4gICAgICBjb25zb2xlLmxvZygnW1J1bnRpbWUgV2ViXSBVbmtub3duIGVudmlyb25tZW50IHR5cGU6ICVzJywgZW52VHlwZSk7XG4gICAgICBicmVhaztcbiAgICAvLyB0aHJvdyBuZXcgRW52aXJvbm1lbnREZXRlY3Rpb25FcnJvcihcbiAgICAvLyAgIGBVbmtub3duIGVudmlyb25tZW50IHR5cGU6ICR7ZW52VHlwZX1gLFxuICAgIC8vICk7XG4gIH1cbn1cblxuXG4iLCAiLypcbiAqIEVsYXN0aWMgTGljZW5zZSAyLjBcbiAqIENvcHlyaWdodCAoQykgMjAyNVx1MjAxM3ByZXNlbnQgUmFtYW4gTWFyb3phdSwgV29yayBUYXJnZXQgSW5zaWdodCBGdW5jdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIENvbnRhY3Q6IHJhbWFuQHdvcmt0aWYuY29tXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIExpY2Vuc2VkIFdvcms6IHdvcmt0aWYucHVyZW5vdy5jZGsgPHdvcmt0aWZfcHVyZW5vd19jZGs+LlxuICogVXNlIG9mIHRoaXMgc29mdHdhcmUgaXMgZ292ZXJuZWQgYnkgdGhlIEVsYXN0aWMgTGljZW5zZSAyLjA7IHNlZSB0aGUgTElDRU5TRSBmaWxlXG4gKiBvciBodHRwczovL3d3dy5lbGFzdGljLmNvL2xpY2Vuc2luZy9lbGFzdGljLWxpY2Vuc2UgZm9yIGRldGFpbHMuXG4gKlxuICogUmUtbGljZW5zaW5nIG5vdGljZTpcbiAqICAgVGhpcyBmaWxlIHdhcyBwcmV2aW91c2x5IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCdXNpbmVzcyBTb3VyY2UgTGljZW5zZSAxLjEgKEJVU0wtMS4xKS5cbiAqICAgQXMgb2YgMjAyNS0wOS0yMiwgaXQgaXMgcmUtbGljZW5zZWQgdW5kZXIgRWxhc3RpYyBMaWNlbnNlIDIuMC5cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRWxhc3RpYy0yLjBcbiAqL1xuXG5cbmltcG9ydCB0eXBlIHsgUHVyZW5vd0NvbmZpZyB9IGZyb20gJ0B3b3JrdGlmL3B1cmVub3cnO1xuXG4vKipcbiAqIFJ1bnRpbWUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiB0aGF0IGV4dGVuZHMgUHVyZW5vd0NvbmZpZy5cbiAqXG4gKiBUaGlzIGludGVyZmFjZSBhZGRzIHJ1bnRpbWUgd29ya3NwYWNlIGZ1bmN0aW9uYWxpdHkgd2hpbGUgcHJlc2VydmluZ1xuICogYWxsIGV4aXN0aW5nIHB1cmVub3cgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGUgcnVudGltZSBjb25maWd1cmF0aW9uXG4gKiBpcyBtZXJnZWQgd2l0aCBwdXJlbm93IGNvbmZpZ3VyYXRpb24gcmF0aGVyIHRoYW4gcmVwbGFjaW5nIGl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bnRpbWVDb25maWcgZXh0ZW5kcyBQdXJlbm93Q29uZmlnIHtcbiAgLyoqXG4gICAqIFJ1bnRpbWUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICAgKiBUaGVzZSBzZXR0aW5ncyBleHRlbmQgcHVyZW5vdyBmdW5jdGlvbmFsaXR5IHdpdGhvdXQgcmVwbGFjaW5nIGl0LlxuICAgKi9cbiAgcnVudGltZT86IHtcbiAgICAvKiogRW5hYmxlIFJ1bnRpbWUgQ29yZSBzdGFjayBkZXBsb3ltZW50IChleHRlbmRzIHB1cmVub3cncyB0d28tc3RhY2sgYXJjaGl0ZWN0dXJlKSAqL1xuICAgIGVuYWJsZVRoaXJkU3RhY2s/OiBib29sZWFuO1xuXG4gICAgLyoqIFJ1bnRpbWUgd2ViIG1vZGUgY29uZmlndXJhdGlvbiAqL1xuICAgIHJ1bnRpbWVXZWJNb2RlPzogJ2RldmVsb3BtZW50JyB8ICdwcm9kdWN0aW9uJztcblxuICAgIC8qKiBBZGRpdGlvbmFsIHJ1bnRpbWUgZmVhdHVyZXMgdG8gZW5hYmxlICovXG4gICAgYWRkaXRpb25hbEZlYXR1cmVzPzogc3RyaW5nW107XG5cbiAgICAvKiogRGV2ZWxvcG1lbnQgc2VydmVyIGVuaGFuY2VtZW50cyAqL1xuICAgIGRldlNlcnZlckVuaGFuY2VtZW50cz86IHtcbiAgICAgIC8qKiBFbmFibGUgaG90IG1vZHVsZSByZXBsYWNlbWVudCAqL1xuICAgICAgaG90UmVsb2FkPzogYm9vbGVhbjtcbiAgICAgIC8qKiBFbmFibGUgZGVidWcgbW9kZSB3aXRoIGFkZGl0aW9uYWwgbG9nZ2luZyAqL1xuICAgICAgZGVidWdNb2RlPzogYm9vbGVhbjtcbiAgICAgIC8qKiBFbmFibGUgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyAqL1xuICAgICAgcGVyZm9ybWFuY2VNb25pdG9yaW5nPzogYm9vbGVhbjtcbiAgICB9O1xuXG4gICAgLyoqIEJ1aWxkIG9wdGltaXphdGlvbnMgKi9cbiAgICBidWlsZE9wdGltaXphdGlvbnM/OiB7XG4gICAgICAvKiogRW5hYmxlIGJ1bmRsZSBhbmFseXNpcyAqL1xuICAgICAgYnVuZGxlQW5hbHlzaXM/OiBib29sZWFuO1xuICAgICAgLyoqIEVuYWJsZSB0cmVlIHNoYWtpbmcgKi9cbiAgICAgIHRyZWVzaGFraW5nPzogYm9vbGVhbjtcbiAgICAgIC8qKiBFbmFibGUgY29kZSBtaW5pZmljYXRpb24gKi9cbiAgICAgIGNvZGVNaW5pZmljYXRpb24/OiBib29sZWFuO1xuICAgIH07XG4gIH07XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBtZXJnaW5nIHV0aWxpdHkgdGhhdCBwcmVzZXJ2ZXMgYWxsIHB1cmVub3cgc2V0dGluZ3NcbiAqIHdoaWxlIGFkZGluZyBydW50aW1lLXNwZWNpZmljIGV4dGVuc2lvbnMuXG4gKlxuICogQHBhcmFtIHB1cmVub3dDb25maWcgLSBCYXNlIHB1cmVub3cgY29uZmlndXJhdGlvblxuICogQHBhcmFtIHJ1bnRpbWVDb25maWcgLSBSdW50aW1lLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gdG8gbWVyZ2VcbiAqIEByZXR1cm5zIE1lcmdlZCBjb25maWd1cmF0aW9uIHdpdGggYWxsIHB1cmVub3cgc2V0dGluZ3MgcHJlc2VydmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZVJ1bnRpbWVDb25maWcoXG4gIHB1cmVub3dDb25maWc6IFB1cmVub3dDb25maWcsXG4gIHJ1bnRpbWVDb25maWc/OiBQYXJ0aWFsPFJ1bnRpbWVDb25maWdbJ3J1bnRpbWUnXT4sXG4pOiBSdW50aW1lQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5wdXJlbm93Q29uZmlnLFxuICAgIHJ1bnRpbWU6IHtcbiAgICAgIGVuYWJsZVRoaXJkU3RhY2s6IGZhbHNlLFxuICAgICAgcnVudGltZVdlYk1vZGU6ICdkZXZlbG9wbWVudCcsXG4gICAgICBhZGRpdGlvbmFsRmVhdHVyZXM6IFtdLFxuXG4gICAgICAvLyBAdG9kbzogY3JpdGlhbCB0byBpbXByb3ZlIHRoaXMgc29sdXRpb24uIE90aGVyd2lzZSBcdTIwMTM+IFVOTkVDRVNTQVJZIE9QVElPTlMgVE9UQUxMWVxuICAgICAgZGV2U2VydmVyRW5oYW5jZW1lbnRzOiB7XG4gICAgICAgIGhvdFJlbG9hZDogdHJ1ZSxcbiAgICAgICAgZGVidWdNb2RlOiBmYWxzZSxcbiAgICAgICAgcGVyZm9ybWFuY2VNb25pdG9yaW5nOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBidWlsZE9wdGltaXphdGlvbnM6IHtcbiAgICAgICAgYnVuZGxlQW5hbHlzaXM6IGZhbHNlLFxuICAgICAgICB0cmVlc2hha2luZzogdHJ1ZSxcbiAgICAgICAgY29kZU1pbmlmaWNhdGlvbjogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICAuLi5ydW50aW1lQ29uZmlnLFxuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogVHlwZSBndWFyZCB0byBjaGVjayBpZiBhIGNvbmZpZ3VyYXRpb24gaXMgYSBSdW50aW1lQ29uZmlnLlxuICpcbiAqIEBwYXJhbSBjb25maWcgLSBDb25maWd1cmF0aW9uIHRvIGNoZWNrXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBjb25maWd1cmF0aW9uIGhhcyBydW50aW1lLXNwZWNpZmljIHByb3BlcnRpZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUnVudGltZUNvbmZpZyhjb25maWc6IGFueSk6IGNvbmZpZyBpcyBSdW50aW1lQ29uZmlnIHtcbiAgcmV0dXJuICEhKGNvbmZpZyAmJiB0eXBlb2YgY29uZmlnID09PSAnb2JqZWN0JyAmJiAncnVudGltZScgaW4gY29uZmlnKTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IHJ1bnRpbWUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmcm9tIGEgUnVudGltZUNvbmZpZy5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gUnVudGltZUNvbmZpZyB0byBleHRyYWN0IGZyb21cbiAqIEByZXR1cm5zIFJ1bnRpbWUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvciB1bmRlZmluZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RSdW50aW1lQ29uZmlnKGNvbmZpZzogUnVudGltZUNvbmZpZyk6IFJ1bnRpbWVDb25maWdbJ3J1bnRpbWUnXSB7XG4gIHJldHVybiBjb25maWcucnVudGltZTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBSdW50aW1lQ29uZmlnIGZyb20gYSBiYXNlIFB1cmVub3dDb25maWcgd2l0aCBkZWZhdWx0IHJ1bnRpbWUgc2V0dGluZ3MuXG4gKlxuICogQHBhcmFtIHB1cmVub3dDb25maWcgLSBCYXNlIHB1cmVub3cgY29uZmlndXJhdGlvblxuICogQHJldHVybnMgUnVudGltZUNvbmZpZyB3aXRoIGRlZmF1bHQgcnVudGltZSBzZXR0aW5nc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUnVudGltZUNvbmZpZyhwdXJlbm93Q29uZmlnOiBQdXJlbm93Q29uZmlnKTogUnVudGltZUNvbmZpZyB7XG4gIHJldHVybiBtZXJnZVJ1bnRpbWVDb25maWcocHVyZW5vd0NvbmZpZyk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUFpQkEsV0FBYyxtQkNEZCxVQUFZQSxNQUFXLFFBQ3ZCLE9BQVMsZUFBQUMsTUFBbUIsbUJBQzVCLE9BQVMsdUJBQUFDLEVBQXFCLGtCQUFBQyxNQUFzQixlQThCN0MsSUFBTUMsRUFBTixLQUFzQixDQTRCM0IsTUFBTSxRQUFRQyxFQUEwQkMsRUFBd0UsQ0FDOUcsR0FBSSxDQUNGLFFBQVEsS0FBSyxzQ0FBdUMsQ0FDbEQsWUFBYUQsRUFBTyxZQUNwQixNQUFPQSxFQUFPLE1BQ2QsSUFBS0MsRUFBUSxTQUFTLElBQ3RCLFVBQVdBLEVBQVEsU0FBUyxVQUM1QixTQUFVQSxFQUFRLFNBQVMsUUFDN0IsQ0FBQyxFQUdELElBQU1DLEVBQWdCLEtBQUssb0JBQW9CRixDQUFNLEVBRy9DRyxFQUFhLEtBQUssaUJBQWlCSCxDQUFNLEVBR3pDSSxFQUF1QixnQkFBY04sRUFBZ0IsQ0FDekQsT0FBUUksQ0FDVixFQUFHQyxDQUFVLEVBR2IsS0FBSyxtQkFBbUJDLENBQWMsRUFHdEMsS0FBSyxnQkFBZ0JKLENBQU0sRUFFM0IsUUFBUSxLQUFLLG9EQUFxRCxDQUNoRSxZQUFhQSxFQUFPLFlBQ3BCLE1BQU9BLEVBQU8sS0FDaEIsQ0FBQyxDQUVILE9BQVNLLEVBQU8sQ0FDZCxjQUFRLE1BQU0sb0NBQXFDLENBQ2pELFlBQWFMLEVBQU8sWUFDcEIsTUFBT0EsRUFBTyxNQUNkLE1BQU9LLGFBQWlCLE1BQVFBLEVBQU0sUUFBVSxPQUFPQSxDQUFLLEVBQzVELE1BQU9BLGFBQWlCLE1BQVFBLEVBQU0sTUFBUSxNQUNoRCxDQUFDLEVBQ0tBLENBQ1IsQ0FDRixDQVlRLG9CQUFvQkwsRUFBMEIsQ0FDcEQsUUFBUSxNQUFNLDBCQUEyQixDQUN2QyxXQUFZQSxFQUFPLE9BQU8sVUFBVSxFQUFFLE1BQ3hDLENBQUMsRUFHRCxJQUFNTSxFQUFTTixFQUFPLE9BQU8sVUFBVSxFQUdqQ0UsRUFBZ0JMLEVBQW9CUyxDQUFhLEVBRXZELGVBQVEsTUFBTSxzQ0FBdUMsQ0FDbkQsV0FBWUEsRUFBTyxNQUNyQixDQUFDLEVBRU1KLENBQ1QsQ0FZUSxpQkFBaUJGLEVBQThDLENBQ3JFLFFBQVEsTUFBTSxtQ0FBbUMsRUFFakQsR0FBSSxDQUVGLElBQU1HLEVBQWFILEVBQU8sSUFBSSxDQUFFLE9BQVFBLEVBQU8sTUFBTyxDQUFDLEVBRXZELEdBQUksQ0FBTyxpQkFBZUcsQ0FBVSxFQUNsQyxNQUFNLElBQUksTUFBTSwrQ0FBK0MsRUFHakUsZUFBUSxNQUFNLGtDQUFrQyxFQUN6Q0EsQ0FFVCxPQUFTRSxFQUFPLENBQ2QsY0FBUSxNQUFNLCtCQUFnQyxDQUM1QyxNQUFPQSxhQUFpQixNQUFRQSxFQUFNLFFBQVUsT0FBT0EsQ0FBSyxDQUM5RCxDQUFDLEVBQ0ssSUFBSSxNQUFNLGlDQUFpQ0EsYUFBaUIsTUFBUUEsRUFBTSxRQUFVLE9BQU9BLENBQUssQ0FBQyxFQUFFLENBQzNHLENBQ0YsQ0FZUSxtQkFBbUJELEVBQTBDLENBQ25FLFFBQVEsTUFBTSwwQkFBMEIsRUFFeEMsR0FBSSxDQUVGLElBQU1HLEVBQVksU0FBUyxlQUFlLE1BQU0sRUFDaEQsR0FBSSxDQUFDQSxFQUNILE1BQU0sSUFBSSxNQUFNLG1FQUFtRSxFQUlyRlgsRUFBWVcsRUFBV0gsQ0FBYyxFQUVyQyxRQUFRLEtBQUssd0NBQXdDLENBRXZELE9BQVNDLEVBQU8sQ0FDZCxjQUFRLE1BQU0seUJBQTBCLENBQ3RDLE1BQU9BLGFBQWlCLE1BQVFBLEVBQU0sUUFBVSxPQUFPQSxDQUFLLENBQzlELENBQUMsRUFDSyxJQUFJLE1BQU0sMkJBQTJCQSxhQUFpQixNQUFRQSxFQUFNLFFBQVUsT0FBT0EsQ0FBSyxDQUFDLEVBQUUsQ0FDckcsQ0FDRixDQVlRLGdCQUFnQkwsRUFBZ0MsQ0FDdEQsUUFBUSxNQUFNLDZDQUE2QyxFQUUzRCxHQUFJLENBRUYsSUFBTVEsRUFBVSxLQUFLLGNBQWNSLEVBQU8sS0FBSyxFQUczQyxPQUFPLE9BQVcsTUFDbkIsT0FBZSxtQkFBcUIsQ0FDbkMsWUFBYUEsRUFBTyxZQUNwQixNQUFPQSxFQUFPLE1BQ2QsV0FBWVEsQ0FDZCxHQUdGLFFBQVEsS0FBSyxzQ0FBdUMsQ0FDbEQsUUFBQUEsRUFDQSxNQUFPUixFQUFPLEtBQ2hCLENBQUMsQ0FFSCxPQUFTSyxFQUFPLENBQ2QsY0FBUSxNQUFNLDhCQUErQixDQUMzQyxNQUFPQSxhQUFpQixNQUFRQSxFQUFNLFFBQVUsT0FBT0EsQ0FBSyxDQUM5RCxDQUFDLEVBQ0ssSUFBSSxNQUFNLGdDQUFnQ0EsYUFBaUIsTUFBUUEsRUFBTSxRQUFVLE9BQU9BLENBQUssQ0FBQyxFQUFFLENBQzFHLENBQ0YsQ0FZUSxjQUFjSSxFQUEyQyxDQU0vRCxNQUFPLEdBSFEsT0FBTyxPQUFXLElBQWMsT0FBTyxTQUFTLE9BQVMsRUFHeEQsTUFDbEIsQ0FDRixFQzVKTyxTQUFTQyxFQUFtQkMsRUFBc0QsQ0FDdkYsTUFBTyxnQ0FBZ0MsS0FBS0EsQ0FBVyxDQUN6RCxDQ25HQSxPQUFTLFdBQUFDLEVBQXVCLGlCQUFBQyxNQUE0QyxtQkFPckUsSUFBTUMsRUFBTixjQUFvQyxLQUFNLENBSS9DLFlBQVlDLEVBQWtCLENBQzVCLE1BQU07QUFBQSxFQUFxQ0EsRUFBTyxJQUFJLEdBQUssT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLO0FBQUEsQ0FBSSxDQUFDLEVBQUUsRUFDbkYsS0FBSyxLQUFPLHdCQUNaLEtBQUssT0FBU0EsRUFDZCxNQUFNLGtCQUFrQixLQUFNLEtBQUssV0FBVyxDQUNoRCxDQUNGLEVBTWFDLEVBQU4sY0FBd0MsS0FBTSxDQUNuRCxZQUFZQyxFQUFpQixDQUMzQixNQUFNQSxDQUFPLEVBQ2IsS0FBSyxLQUFPLDRCQUNaLE1BQU0sa0JBQWtCLEtBQU0sS0FBSyxXQUFXLENBQ2hELENBQ0YsRUFNQSxTQUFTQyxHQUFrRCxDQUV6RCxPQUFJLE9BQU8sT0FBVyxJQUNiLFVBSUwsT0FBTyxRQUFZLEtBQWUsUUFBUSxLQUFLLHlCQUMxQyxVQUlMLE9BQU8sUUFBWSxNQUNqQixRQUFRLEtBQUssZUFBaUIsT0FHOUIsUUFBUSxLQUFLLHFCQUF1QixRQUFRLEtBQUssb0JBR2pELFFBQVEsTUFBTSxLQUFLQyxHQUFPQSxFQUFJLFNBQVMsS0FBSyxHQUFLQSxFQUFJLFNBQVMsT0FBTyxDQUFDLEdBQ2pFLE1BTWIsQ0FNQSxTQUFTQyxFQUFlQyxFQUEwQkMsRUFBNkQsQ0FDN0csSUFBTVAsRUFBbUIsQ0FBQyxFQUcxQixPQUFJLENBQUNNLEVBQU8sYUFBZSxDQUFDLGdDQUFnQyxLQUFLQSxFQUFPLFdBQVcsSUFDakZOLEVBQU8sS0FBSyxtSEFBbUgsRUFJNUgsQ0FBQyxNQUFPLFVBQVcsTUFBTSxFQUFFLFNBQVNNLEVBQU8sS0FBSyxHQUNuRE4sRUFBTyxLQUFLLDBDQUEwQyxFQUlwRE8sR0FBZ0IsQ0FBQ0QsRUFBTyxPQUMxQk4sRUFBTyxLQUFLLGdEQUFnRCxFQUd2RCxDQUFFLE1BQU9BLEVBQU8sU0FBVyxFQUFHLE9BQUFBLENBQU8sQ0FDOUMsQ0FnRE8sU0FBU1EsRUFBUUYsRUFBZ0MsQ0FFdEQsSUFBTUcsRUFBVU4sRUFBa0IsRUFJNUJPLEVBQW1CTCxFQUFlQyxFQUhuQkcsSUFBWSxLQUcyQixFQUU1RCxHQUFJLENBQUNDLEVBQWlCLE1BQ3BCLE1BQU0sSUFBSVgsRUFBc0JXLEVBQWlCLE1BQU0sRUFJekQsT0FBUUQsRUFBUyxDQUNmLElBQUssVUFBVyxDQUdkWixFQUFRLENBQ04sSUFBSyxDQUFDLENBQUUsT0FBQWMsQ0FBTyxJQUFNTCxFQUFPLElBQUksQ0FBRSxPQUFBSyxDQUFPLENBQUMsRUFDMUMsT0FBUWIsRUFBYyxDQUNwQixPQUFRUSxFQUFPLE9BQU8sVUFBVSxFQUNoQyxTQUFVQSxFQUFPLE9BQU8sUUFDMUIsQ0FBQyxFQUNELE9BQVEsQ0FDTixZQUFhQSxFQUFPLFlBQ3BCLE1BQU9BLEVBQU8sS0FDaEIsQ0FDRixDQUFDLEVBQ0QsS0FDRixDQUVBLElBQUssU0FDTCxJQUFLLE1BQU8sQ0FHVixRQUFRLElBQUksK0NBQWdERyxDQUFPLEVBQ25FWixFQUFRLENBQ04sSUFBSyxDQUFDLENBQUUsT0FBQWMsQ0FBTyxJQUFNTCxFQUFPLElBQUksQ0FBRSxPQUFBSyxDQUFPLENBQUMsRUFDMUMsT0FBUWIsRUFBYyxDQUNwQixPQUFRUSxFQUFPLE9BQU8sVUFBVSxFQUNoQyxTQUFVQSxFQUFPLE9BQU8sUUFDMUIsQ0FBQyxFQUNELE9BQVEsQ0FDTixZQUFhQSxFQUFPLFlBQ3BCLE1BQU9BLEVBQU8sS0FDaEIsQ0FDRixDQUFDLEVBQ0QsS0FNRixDQUVBLFFBQ0UsUUFBUSxJQUFJLDZDQUE4Q0csQ0FBTyxFQUNqRSxLQUlKLENBQ0YsQ0M3SU8sU0FBU0csRUFDZEMsRUFDQUMsRUFDZSxDQUNmLE1BQU8sQ0FDTCxHQUFHRCxFQUNILFFBQVMsQ0FDUCxpQkFBa0IsR0FDbEIsZUFBZ0IsY0FDaEIsbUJBQW9CLENBQUMsRUFHckIsc0JBQXVCLENBQ3JCLFVBQVcsR0FDWCxVQUFXLEdBQ1gsc0JBQXVCLEVBQ3pCLEVBQ0EsbUJBQW9CLENBQ2xCLGVBQWdCLEdBQ2hCLFlBQWEsR0FDYixpQkFBa0IsRUFDcEIsRUFDQSxHQUFHQyxDQUNMLENBQ0YsQ0FDRixDQVFPLFNBQVNDLEVBQWdCQyxFQUFzQyxDQUNwRSxNQUFPLENBQUMsRUFBRUEsR0FBVSxPQUFPQSxHQUFXLFVBQVksWUFBYUEsRUFDakUsQ0FRTyxTQUFTQyxFQUFxQkQsRUFBaUQsQ0FDcEYsT0FBT0EsRUFBTyxPQUNoQixDQVFPLFNBQVNFLEVBQW9CTCxFQUE2QyxDQUMvRSxPQUFPRCxFQUFtQkMsQ0FBYSxDQUN6QyIsCiAgIm5hbWVzIjogWyJSZWFjdCIsICJoeWRyYXRlUm9vdCIsICJjcmVhdGVCcm93c2VyUm91dGVyIiwgIlJvdXRlclByb3ZpZGVyIiwgIkJyb3dzZXJQaXBlbGluZSIsICJjb25maWciLCAiY29udGV4dCIsICJicm93c2VyUm91dGVyIiwgImFwcEVsZW1lbnQiLCAicm91dGVyUHJvdmlkZXIiLCAiZXJyb3IiLCAicm91dGVzIiwgImNvbnRhaW5lciIsICJiYXNlVXJsIiwgInN0YWdlIiwgImlzVmFsaWRTZXJ2aWNlTmFtZSIsICJzZXJ2aWNlTmFtZSIsICJwdXJlbm93IiwgInB1cmVub3dSb3V0ZXIiLCAiQ29uZmlnVmFsaWRhdGlvbkVycm9yIiwgImVycm9ycyIsICJFbnZpcm9ubWVudERldGVjdGlvbkVycm9yIiwgIm1lc3NhZ2UiLCAiZGV0ZWN0RW52aXJvbm1lbnQiLCAiYXJnIiwgInZhbGlkYXRlQ29uZmlnIiwgImNvbmZpZyIsICJpc0NES0NvbnRleHQiLCAicHVyZXdlYiIsICJlbnZUeXBlIiwgInZhbGlkYXRpb25SZXN1bHQiLCAicm91dGVyIiwgIm1lcmdlUnVudGltZUNvbmZpZyIsICJwdXJlbm93Q29uZmlnIiwgInJ1bnRpbWVDb25maWciLCAiaXNSdW50aW1lQ29uZmlnIiwgImNvbmZpZyIsICJleHRyYWN0UnVudGltZUNvbmZpZyIsICJjcmVhdGVSdW50aW1lQ29uZmlnIl0KfQo=
|
|
1
|
+
var u=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(r,t)=>(typeof require<"u"?require:r)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});function d(e){return/^[a-zA-Z][a-zA-Z0-9-]{0,127}$/.test(e)}var n=class extends Error{constructor(r){super(`Configuration validation failed:
|
|
2
|
+
${r.map(t=>` - ${t}`).join(`
|
|
3
|
+
`)}`),this.name="ConfigValidationError",this.errors=r,Error.captureStackTrace(this,this.constructor)}},c=class extends Error{constructor(r){super(r),this.name="EnvironmentDetectionError",Error.captureStackTrace(this,this.constructor)}};function b(){return typeof window<"u"?"browser":typeof process<"u"&&process.env?.AWS_LAMBDA_FUNCTION_NAME?"lambda":(typeof process<"u"&&(process.env?.PURENOW_MODE==="cdk"||process.env?.CDK_DEFAULT_ACCOUNT||process.env?.CDK_DEFAULT_REGION||process.argv?.some(e=>e.includes("cdk")||e.includes("synth"))),"cdk")}function y(e,r){let t=[];return(!e.serviceName||!/^[a-zA-Z][a-zA-Z0-9-]{0,127}$/.test(e.serviceName))&&t.push("serviceName must start with a letter, contain only alphanumeric characters and hyphens, and be max 128 characters"),["dev","staging","prod"].includes(e.stage)||t.push("stage must be one of: dev, staging, prod"),r&&!e.infra&&t.push("infra configuration is required in CDK context"),{valid:t.length===0,errors:t}}function C(e){let r=b(),p=y(e,r==="cdk");if(!p.valid)throw new n(p.errors);switch(r){case"browser":{let i=(globalThis.require||u)("@worktif/purenow"),{purenow:o,purenowRouter:a}=i;o({app:({router:s})=>e.app({router:s}),router:a({router:e.router.getRoutes(),defaults:e.router.defaults}),config:{serviceName:e.serviceName,stage:e.stage}});break}case"lambda":case"cdk":{console.log("[Runtime] Server-side pipeline detected (%s)",r);let i=(globalThis.require||u)("@worktif/purenow"),{purenow:o,purenowRouter:a}=i;o({app:({router:s})=>e.app({router:s}),router:a({router:e.router.getRoutes(),defaults:e.router.defaults}),config:{serviceName:e.serviceName,stage:e.stage}});break}default:console.log("[Runtime Web] Unknown environment type: %s",r);break}}function m(e,r){return{...e,runtime:{enableThirdStack:!1,runtimeWebMode:"development",additionalFeatures:[],devServerEnhancements:{hotReload:!0,debugMode:!1,performanceMonitoring:!1},buildOptimizations:{bundleAnalysis:!1,treeshaking:!0,codeMinification:!0},...r}}}function f(e){return!!(e&&typeof e=="object"&&"runtime"in e)}function g(e){return e.runtime}function l(e){return m(e)}export{n as ConfigValidationError,c as EnvironmentDetectionError,l as createRuntimeConfig,g as extractRuntimeConfig,f as isRuntimeConfig,d as isValidServiceName,m as mergeRuntimeConfig,C as pureweb};
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2xpYi9ydW50aW1lLXdlYi90eXBlcy9jb25maWcudHlwZXMudHMiLCAiLi4vLi4vLi4vc3JjL2xpYi9ydW50aW1lLXdlYi9wdXJld2ViLnRzIiwgIi4uLy4uLy4uL3NyYy9saWIvcnVudGltZS13ZWIvcnVudGltZS5jb25maWcudHlwZXMudHN4Il0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKlxuICogRWxhc3RpYyBMaWNlbnNlIDIuMFxuICogQ29weXJpZ2h0IChDKSAyMDI1XHUyMDEzcHJlc2VudCBSYW1hbiBNYXJvemF1LCBXb3JrIFRhcmdldCBJbnNpZ2h0IEZ1bmN0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogQ29udGFjdDogcmFtYW5Ad29ya3RpZi5jb21cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgTGljZW5zZWQgV29yazogd29ya3RpZi5wdXJlbm93LmNkayA8d29ya3RpZl9wdXJlbm93X2Nkaz4uXG4gKiBVc2Ugb2YgdGhpcyBzb2Z0d2FyZSBpcyBnb3Zlcm5lZCBieSB0aGUgRWxhc3RpYyBMaWNlbnNlIDIuMDsgc2VlIHRoZSBMSUNFTlNFIGZpbGVcbiAqIG9yIGh0dHBzOi8vd3d3LmVsYXN0aWMuY28vbGljZW5zaW5nL2VsYXN0aWMtbGljZW5zZSBmb3IgZGV0YWlscy5cbiAqXG4gKiBSZS1saWNlbnNpbmcgbm90aWNlOlxuICogICBUaGlzIGZpbGUgd2FzIHByZXZpb3VzbHkgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJ1c2luZXNzIFNvdXJjZSBMaWNlbnNlIDEuMSAoQlVTTC0xLjEpLlxuICogICBBcyBvZiAyMDI1LTA5LTIyLCBpdCBpcyByZS1saWNlbnNlZCB1bmRlciBFbGFzdGljIExpY2Vuc2UgMi4wLlxuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFbGFzdGljLTIuMFxuICovXG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgSW5mcmFPcHRpb25zIH0gZnJvbSAnLi9pbmZyYS50eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE1pY3Jvc2VydmljZURlZmluaXRpb24gfSBmcm9tICcuL21pY3Jvc2VydmljZS50eXBlcyc7XG5cbi8qKlxuICogUHVyZW5vd1JvdXRlciBpbnRlcmZhY2UgZm9yIHJ1bnRpbWUtd2ViIGludGVncmF0aW9uLlxuICpcbiAqIERlZmluZXMgdGhlIGVzc2VudGlhbCBtZXRob2RzIG5lZWRlZCBieSB0aGUgcnVudGltZS13ZWIgcGlwZWxpbmVzLlxuICogVGhpcyBpbnRlcmZhY2UgbWF0Y2hlcyB0aGUgYWN0dWFsIFB1cmVub3dSb3V0ZXIgY2xhc3MgZnJvbSBAbGliL3JlYWN0L3B1cmVub3cucm91dGVyLlxuICovXG5pbnRlcmZhY2UgUHVyZW5vd1JvdXRlciB7XG4gIC8qKlxuICAgKiBHZXQgYWxsIHJvdXRlIG9iamVjdHMgYXMgYW4gYXJyYXkuXG4gICAqIFVzZWQgZm9yIGNyZWF0aW5nIGJyb3dzZXIgcm91dGVycyBhbmQgU1NSIHN0YXRpYyBoYW5kbGVycy5cbiAgICovXG4gIGdldFJvdXRlcygpOiBBcnJheTx7XG4gICAgcGF0aD86IHN0cmluZztcbiAgICBlbGVtZW50PzogdW5rbm93bjtcbiAgICBsb2FkZXI/OiB1bmtub3duO1xuICAgIGNoaWxkcmVuPzogdW5rbm93bjtcbiAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICB9PjtcblxuICAvKipcbiAgICogRmluZCBhIHJvdXRlIGJ5IGl0cyBJRC5cbiAgICovXG4gIGdldFJvdXRlQnlJZD8oaWQ6IHN0cmluZyk6IHVua25vd247XG5cbiAgLyoqXG4gICAqIEZpbmQgYSByb3V0ZSBieSBpdHMgcGF0aC5cbiAgICovXG4gIGdldFJvdXRlQnlQYXRoPyhwYXRoOiBzdHJpbmcpOiB1bmtub3duO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJvdXRlcyBhcnJheSAoZ2V0dGVyKS5cbiAgICovXG4gIHJvdXRlcz86IEFycmF5PHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIGRlZmF1bHRzPzogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBTdGFnZSBlbnZpcm9ubWVudCBmb3IgZGVwbG95bWVudC5cbiAqXG4gKiAtIGBkZXZgOiBEZXZlbG9wbWVudCBlbnZpcm9ubWVudFxuICogLSBgc3RhZ2luZ2A6IFN0YWdpbmcvcHJlLXByb2R1Y3Rpb24gZW52aXJvbm1lbnRcbiAqIC0gYHByb2RgOiBQcm9kdWN0aW9uIGVudmlyb25tZW50XG4gKi9cbmV4cG9ydCB0eXBlIFN0YWdlID0gJ2RldicgfCAnc3RhZ2luZycgfCAncHJvZCc7XG5cbi8qKlxuICogVXRpbGl0eSB0eXBlIHRvIGV4dHJhY3Qgc2VydmljZSBuYW1lcyBmcm9tIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogVGhpcyBlbmFibGVzIGNvbXBpbGUtdGltZSB2YWxpZGF0aW9uIG9mIHNlcnZpY2UgbmFtZXMgYW5kIHByb3ZpZGVzXG4gKiB0eXBlLXNhZmUgYWNjZXNzIHRvIHNlcnZpY2UgaWRlbnRpZmllcnMgdGhyb3VnaG91dCB0aGUgZnJhbWV3b3JrLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHR5cGVcbiAqL1xuZXhwb3J0IHR5cGUgU2VydmljZU5hbWVzPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBNaWNyb3NlcnZpY2VEZWZpbml0aW9uPj4gPSBrZXlvZiBUO1xuXG4vKipcbiAqIFV0aWxpdHkgdHlwZSB0byBnZW5lcmF0ZSBMYW1iZGEgSURzIGZyb20gc2VydmljZSBjb25maWd1cmF0aW9uLlxuICpcbiAqIENvbWJpbmVzIHNlcnZpY2UgbmFtZXMgd2l0aCBMYW1iZGEgSURzIHRvIGNyZWF0ZSBmdWxseSBxdWFsaWZpZWRcbiAqIExhbWJkYSBpZGVudGlmaWVycyBmb3IgdHlwZS1zYWZlIExhbWJkYSByZXNvbHV0aW9uLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHR5cGVcbiAqL1xuZXhwb3J0IHR5cGUgTGFtYmRhSWRzPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBNaWNyb3NlcnZpY2VEZWZpbml0aW9uPj4gPSB7XG4gIFtLIGluIGtleW9mIFRdOiBUW0tdWydsYW1iZGFzJ11bbnVtYmVyXSBleHRlbmRzIHsgaWQ6IGluZmVyIEkgfVxuICAgID8gSSBleHRlbmRzIHN0cmluZ1xuICAgICAgPyBgJHtLICYgc3RyaW5nfS4ke0l9YFxuICAgICAgOiBuZXZlclxuICAgIDogbmV2ZXI7XG59W2tleW9mIFRdO1xuXG4vKipcbiAqIFR5cGUgY29uc3RyYWludCBmb3IgdmFsaWQgc2VydmljZSBuYW1lcy5cbiAqXG4gKiBFbnN1cmVzIHNlcnZpY2UgbmFtZXMgZm9sbG93IHRoZSB2YWxpZGF0aW9uIHBhdHRlcm46XG4gKiAtIE11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciAoYS16LCBBLVopXG4gKiAtIENhbiBjb250YWluIGxldHRlcnMsIG51bWJlcnMsIGFuZCBoeXBoZW5zXG4gKiAtIE1heGltdW0gbGVuZ3RoOiAxMjggY2hhcmFjdGVyc1xuICpcbiAqIFRoaXMgaXMgYSBicmFuZGVkIHR5cGUgdGhhdCBwcm92aWRlcyBjb21waWxlLXRpbWUgdmFsaWRhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRTZXJ2aWNlTmFtZSA9IHN0cmluZyAmIHsgcmVhZG9ubHkgX19icmFuZDogJ1ZhbGlkU2VydmljZU5hbWUnIH07XG5cbi8qKlxuICogVHlwZSBndWFyZCB0byB2YWxpZGF0ZSBzZXJ2aWNlIG5hbWUgZm9ybWF0LlxuICpcbiAqIEBwYXJhbSBzZXJ2aWNlTmFtZSAtIFRoZSBzZXJ2aWNlIG5hbWUgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIFR5cGUgcHJlZGljYXRlIGluZGljYXRpbmcgaWYgdGhlIHNlcnZpY2UgbmFtZSBpcyB2YWxpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFNlcnZpY2VOYW1lKHNlcnZpY2VOYW1lOiBzdHJpbmcpOiBzZXJ2aWNlTmFtZSBpcyBWYWxpZFNlcnZpY2VOYW1lIHtcbiAgcmV0dXJuIC9eW2EtekEtWl1bYS16QS1aMC05LV17MCwxMjd9JC8udGVzdChzZXJ2aWNlTmFtZSk7XG59XG5cbi8qKlxuICogTWFpbiBjb25maWd1cmF0aW9uIGludGVyZmFjZSBmb3IgUnVudGltZSBUYXJnZXQgQ29yZS5cbiAqXG4gKiBUaGlzIGludGVyZmFjZSBwcm92aWRlcyBhIHVuaWZpZWQgY29uZmlndXJhdGlvbiB0aGF0IHdvcmtzIGFjcm9zcyBhbGwgZXhlY3V0aW9uIGNvbnRleHRzOlxuICogLSBCcm93c2VyOiBIeWRyYXRlcyBSZWFjdCBhcHBsaWNhdGlvbiB3aXRoIGNsaWVudC1zaWRlIHJvdXRpbmdcbiAqIC0gTGFtYmRhOiBFeGVjdXRlcyBzZXJ2ZXItc2lkZSByZW5kZXJpbmcgYW5kIGJ1c2luZXNzIGxvZ2ljXG4gKiAtIENESzogU3ludGhlc2l6ZXMgQ2xvdWRGb3JtYXRpb24gaW5mcmFzdHJ1Y3R1cmVcbiAqXG4gKiBAdGVtcGxhdGUgVFJlZ2lzdGVyIC0gVGhlIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb24gdHlwZSBmb3IgdHlwZS1zYWZlIHNlcnZpY2UgbmFtZXNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgcHVyZW5vdyB9IGZyb20gJ0B3b3JrdGlmL3B1cmVub3cvcnVudGltZS13ZWInO1xuICogaW1wb3J0IHsgUHVyZW5vd1JvdXRlciB9IGZyb20gJ0B3b3JrdGlmL3B1cmVub3cnO1xuICpcbiAqIGNvbnN0IGNvbmZpZyA9IHtcbiAqICAgYXBwOiAoeyByb3V0ZXIgfSkgPT4gPEFwcCByb3V0ZXI9e3JvdXRlcn0gLz4sXG4gKiAgIHJvdXRlcjogbmV3IFB1cmVub3dSb3V0ZXIoeyByb3V0ZXI6IHJvdXRlcywgZGVmYXVsdHM6IHt9IH0pLFxuICogICBzZXJ2aWNlTmFtZTogJ215LWFwcCcsXG4gKiAgIHN0YWdlOiAnZGV2JyxcbiAqICAgcmVnaXN0ZXI6IHtcbiAqICAgICBwYXltZW50czoge1xuICogICAgICAgdGllczogW1BheW1lbnRzVGllc10sXG4gKiAgICAgICBsYW1iZGFzOiBbY2hhcmdlSGFuZGxlciwgcmVmdW5kSGFuZGxlcl1cbiAqICAgICB9LFxuICogICAgIHVzZXJzOiB7XG4gKiAgICAgICB0aWVzOiBbVXNlcnNUaWVzXSxcbiAqICAgICAgIGxhbWJkYXM6IFtjcmVhdGVVc2VySGFuZGxlciwgZ2V0VXNlckhhbmRsZXJdXG4gKiAgICAgfVxuICogICB9IGFzIGNvbnN0LCAgLy8gVXNlICdhcyBjb25zdCcgZm9yIGJldHRlciB0eXBlIGluZmVyZW5jZVxuICogICBpbmZyYToge1xuICogICAgIGVudjogeyBhY2NvdW50OiAnMTIzNDU2Nzg5MDEyJywgcmVnaW9uOiAndXMtZWFzdC0xJyB9LFxuICogICAgIHN0YWdlOiAnZGV2JyxcbiAqICAgICByZWFjdEVudHJ5OiAnLi9zcmMvaW5kZXgudHN4JyxcbiAqICAgICBhcGlNb2RlOiAnYXBpR2F0ZXdheSdcbiAqICAgfVxuICogfSBzYXRpc2ZpZXMgUHVyZW5vd0NvbmZpZztcbiAqXG4gKiBwdXJlbm93KGNvbmZpZyk7XG4gKiBgYGBcbiAqXG4gKiBAdG9kbzogYWZ0ZXIgUnVudGltZVdlYiByZXBvIHdpbGwgYmUgcmVzb2x2ZWQsIFJ1bnRpbWVXZWJDb25maWcgTVVTVCBleHRlbmQgUHVyZW5vd0NvbmZpZyBDb3JlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVudGltZVdlYkNvbmZpZzxUUmVnaXN0ZXIgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBNaWNyb3NlcnZpY2VEZWZpbml0aW9uPiA9IFJlY29yZDxzdHJpbmcsIE1pY3Jvc2VydmljZURlZmluaXRpb24+PiB7XG4gIC8qKlxuICAgKiBSZWFjdCBhcHBsaWNhdGlvbiBjb21wb25lbnQgZmFjdG9yeSBmdW5jdGlvbi5cbiAgICpcbiAgICogUmVjZWl2ZXMgdGhlIHJvdXRlciBpbnN0YW5jZSBhcyBhIGRlcGVuZGVuY3kgYW5kIHJldHVybnMgdGhlIHJvb3QgUmVhY3QgZWxlbWVudC5cbiAgICogVGhpcyBwYXR0ZXJuIGVuYWJsZXMgZGVwZW5kZW5jeSBpbmplY3Rpb24gb2YgdGhlIHJvdXRlciBpbnRvIHlvdXIgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBkZXBzIC0gRGVwZW5kZW5jaWVzIG9iamVjdCBjb250YWluaW5nIHRoZSByb3V0ZXJcbiAgICogQHBhcmFtIGRlcHMucm91dGVyIC0gUHVyZW5vd1JvdXRlciBpbnN0YW5jZSBmb3IgbmF2aWdhdGlvbiBhbmQgcm91dGluZ1xuICAgKiBAcmV0dXJucyBSb290IFJlYWN0IGVsZW1lbnQgKFJlYWN0LlJlYWN0RWxlbWVudClcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBhcHA6ICh7IHJvdXRlciB9KSA9PiA8QXBwIHJvdXRlcj17cm91dGVyfSAvPlxuICAgKiBgYGBcbiAgICovXG4gIGFwcDogKGRlcHM6IHsgcm91dGVyOiBQdXJlbm93Um91dGVyIH0pID0+IFJlYWN0LlJlYWN0RWxlbWVudDtcblxuICAvKipcbiAgICogUHVyZW5vd1JvdXRlciBpbnN0YW5jZSBmb3IgYXBwbGljYXRpb24gcm91dGluZy5cbiAgICpcbiAgICogRGVmaW5lcyBhbGwgcm91dGVzLCBsb2FkZXJzLCBhbmQgbmF2aWdhdGlvbiBjb25maWd1cmF0aW9uLlxuICAgKiBUaGUgcm91dGVyIGlzIHVzZWQgaW4gYm90aCBzZXJ2ZXItc2lkZSByZW5kZXJpbmcgKExhbWJkYSkgYW5kIGNsaWVudC1zaWRlIGh5ZHJhdGlvbiAoYnJvd3NlcikuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIFB1cmVub3dSb3V0ZXJ9IGZvciByb3V0ZXIgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIHJvdXRlcjogbmV3IFB1cmVub3dSb3V0ZXIoe1xuICAgKiAgIHJvdXRlcjogW1xuICAgKiAgICAgeyBwYXRoOiAnLycsIGVsZW1lbnQ6IDxIb21lIC8+IH0sXG4gICAqICAgICB7IHBhdGg6ICcvYWJvdXQnLCBlbGVtZW50OiA8QWJvdXQgLz4gfVxuICAgKiAgIF0sXG4gICAqICAgZGVmYXVsdHM6IHt9XG4gICAqIH0pXG4gICAqIGBgYFxuICAgKi9cbiAgcm91dGVyOiBQdXJlbm93Um91dGVyO1xuXG4gIC8qKlxuICAgKiBTZXJ2aWNlIG5hbWUgaWRlbnRpZmllciBmb3IgdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBVc2VkIGFzIGEgcHJlZml4IGZvciBhbGwgQVdTIHJlc291cmNlcyAoTGFtYmRhIGZ1bmN0aW9ucywgQVBJIEdhdGV3YXksIFMzIGJ1Y2tldHMsIGV0Yy4pLlxuICAgKiBNdXN0IGJlIHVuaXF1ZSB3aXRoaW4geW91ciBBV1MgYWNjb3VudCBhbmQgcmVnaW9uLlxuICAgKlxuICAgKiAqKlZhbGlkYXRpb24gUnVsZXMqKjpcbiAgICogLSBNdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIgKGEteiwgQS1aKVxuICAgKiAtIENhbiBjb250YWluIGxldHRlcnMsIG51bWJlcnMsIGFuZCBoeXBoZW5zXG4gICAqIC0gTWF4aW11bSBsZW5ndGg6IDEyOCBjaGFyYWN0ZXJzXG4gICAqIC0gUGF0dGVybjogYC9eW2EtekEtWl1bYS16QS1aMC05LV17MCwxMjd9JC9gXG4gICAqXG4gICAqICoqRXhhbXBsZXMqKjpcbiAgICogLSBWYWxpZDogYG15LWFwcGAsIGBNeUFwcGAsIGBhcHAxMjNgLCBgbXktYXBwLXYyYFxuICAgKiAtIEludmFsaWQ6IGAxMjNhcHBgIChzdGFydHMgd2l0aCBudW1iZXIpLCBgbXlfYXBwYCAodW5kZXJzY29yZSksIGBteSBhcHBgIChzcGFjZSlcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBzZXJ2aWNlTmFtZTogJ215LWFwcGxpY2F0aW9uJ1xuICAgKiBgYGBcbiAgICovXG4gIHNlcnZpY2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlcGxveW1lbnQgc3RhZ2UvZW52aXJvbm1lbnQuXG4gICAqXG4gICAqIERldGVybWluZXMgdGhlIGVudmlyb25tZW50LXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gYW5kIHJlc291cmNlIG5hbWluZy5cbiAgICogVXNlZCB0byBjcmVhdGUgc2VwYXJhdGUgaW5mcmFzdHJ1Y3R1cmUgc3RhY2tzIGZvciBkaWZmZXJlbnQgZW52aXJvbm1lbnRzLlxuICAgKlxuICAgKiAqKlZhbHVlcyoqOlxuICAgKiAtIGBkZXZgOiBEZXZlbG9wbWVudCBlbnZpcm9ubWVudCAobG9jYWwgdGVzdGluZywgcmFwaWQgaXRlcmF0aW9uKVxuICAgKiAtIGBzdGFnaW5nYDogU3RhZ2luZy9wcmUtcHJvZHVjdGlvbiBlbnZpcm9ubWVudCAoUUEsIGludGVncmF0aW9uIHRlc3RpbmcpXG4gICAqIC0gYHByb2RgOiBQcm9kdWN0aW9uIGVudmlyb25tZW50IChsaXZlIHVzZXJzKVxuICAgKlxuICAgKiAqKkltcGFjdCoqOlxuICAgKiAtIFJlc291cmNlIG5hbWluZzogYHtzZXJ2aWNlTmFtZX0te3Jlc291cmNlfS17c3RhZ2V9YFxuICAgKiAtIEVudmlyb25tZW50IHZhcmlhYmxlczogRGlmZmVyZW50IGNvbmZpZ3MgcGVyIHN0YWdlXG4gICAqIC0gQ2FjaGUgVFRMOiBTaG9ydGVyIGluIGRldiwgbG9uZ2VyIGluIHByb2RcbiAgICogLSBMb2dnaW5nOiBNb3JlIHZlcmJvc2UgaW4gZGV2LCBzdHJ1Y3R1cmVkIGluIHByb2RcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBzdGFnZTogJ2RldidcbiAgICogYGBgXG4gICAqL1xuICBzdGFnZTogU3RhZ2U7XG5cbiAgLyoqXG4gICAqIE1pY3Jvc2VydmljZSByZWdpc3RyeSAocnVudGltZS1sZXZlbCBjb25maWd1cmF0aW9uKS5cbiAgICpcbiAgICogKipSZXF1aXJlZCoqOiBEZWZpbmVzIGFsbCBtaWNyb3NlcnZpY2VzLCB0aGVpciBESSBjb250YWluZXJzLCBhbmQgTGFtYmRhIGVuZHBvaW50cy5cbiAgICogKipVc2VkIGluIGFsbCBjb250ZXh0cyoqOiBCcm93c2VyIChmb3IgdHlwZSBnZW5lcmF0aW9uKSwgTGFtYmRhIChmb3IgREkpLCBDREsgKGZvciBpbmZyYXN0cnVjdHVyZSkuXG4gICAqICoqQXJjaGl0ZWN0dXJlKio6IFRoaXMgaXMgcnVudGltZSBjb25maWd1cmF0aW9uLCBzZXBhcmF0ZSBmcm9tIGluZnJhc3RydWN0dXJlIGNvbmNlcm5zLlxuICAgKlxuICAgKiBFYWNoIG1pY3Jvc2VydmljZSBnZXRzIGl0cyBvd24gUHVyZUNvbnRhaW5lciBpbnN0YW5jZSBidWlsdCBmcm9tIHRoZSBUaWVzIGNsYXNzZXMuXG4gICAqIExhbWJkYSBmdW5jdGlvbnMgYXJlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBhbmQgd2lyZWQgd2l0aCBkZXBlbmRlbmN5IGluamVjdGlvbi5cbiAgICpcbiAgICogKipUeXBlIFNhZmV0eSoqOiBTZXJ2aWNlIG5hbWVzIGFyZSBkZXJpdmVkIGZyb20gb2JqZWN0IGtleXMsIGVuc3VyaW5nIGNvbXBpbGUtdGltZSB2YWxpZGF0aW9uLlxuICAgKiAqKk5vIE1hZ2ljIFN0cmluZ3MqKjogQWxsIHNlcnZpY2UgaWRlbnRpZmllcnMgYXJlIHR5cGUtc2FmZSBhbmQgYXV0by1nZW5lcmF0ZWQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIE1pY3Jvc2VydmljZURlZmluaXRpb259IGZvciBtaWNyb3NlcnZpY2Ugc3RydWN0dXJlXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogcmVnaXN0ZXI6IHtcbiAgICogICBwYXltZW50czoge1xuICAgKiAgICAgdGllczogW1BheW1lbnRzVGllcywgQmlsbGluZ1RpZXNdLFxuICAgKiAgICAgbGFtYmRhczogW2NoYXJnZUhhbmRsZXIsIHJlZnVuZEhhbmRsZXIsIHdlYmhvb2tIYW5kbGVyXVxuICAgKiAgIH0sXG4gICAqICAgdXNlcnM6IHtcbiAgICogICAgIHRpZXM6IFtVc2Vyc1RpZXMsIEF1dGhUaWVzXSxcbiAgICogICAgIGxhbWJkYXM6IFtjcmVhdGVVc2VySGFuZGxlciwgZ2V0VXNlckhhbmRsZXIsIGxvZ2luSGFuZGxlcl1cbiAgICogICB9XG4gICAqIH0gYXMgY29uc3QgIC8vIFVzZSAnYXMgY29uc3QnIGZvciBiZXR0ZXIgdHlwZSBpbmZlcmVuY2VcbiAgICogYGBgXG4gICAqL1xuICByZWdpc3RlcjogVFJlZ2lzdGVyO1xuXG4gIC8qKlxuICAgKiBJbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uIGZvciBDREsgZGVwbG95bWVudC5cbiAgICpcbiAgICogKipPcHRpb25hbCoqOiBPbmx5IHJlcXVpcmVkIHdoZW4gcnVubmluZyBpbiBDREsgY29udGV4dCAoc3ludGhlc2l6aW5nIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlcykuXG4gICAqICoqTm90IHVzZWQqKjogSW4gYnJvd3NlciBhbmQgTGFtYmRhIGNvbnRleHRzIChydW50aW1lIGNvbmZpZ3VyYXRpb24gaXMgaW4gcmVnaXN0ZXIpLlxuICAgKiAqKlB1cmUgaW5mcmFzdHJ1Y3R1cmUqKjogQ29udGFpbnMgb25seSBBV1MgcmVzb3VyY2UgY29uZmlndXJhdGlvbiwgbm8gYnVzaW5lc3MgbG9naWMuXG4gICAqXG4gICAqIERlZmluZXM6XG4gICAqIC0gQVdTIGFjY291bnQgYW5kIHJlZ2lvblxuICAgKiAtIExhbWJkYSBjb25maWd1cmF0aW9uIChtZW1vcnksIHRpbWVvdXQsIFZQQylcbiAgICogLSBBUEkgR2F0ZXdheSBvciBMYW1iZGEgVVJMIG1vZGVcbiAgICogLSBDdXN0b20gZG9tYWluIGNvbmZpZ3VyYXRpb25cbiAgICogLSBSZWFjdCBlbnRyeSBwb2ludCBmb3IgU1NSIExhbWJkYVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBJbmZyYU9wdGlvbnN9IGZvciBkZXRhaWxlZCBjb25maWd1cmF0aW9uIG9wdGlvbnNcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBpbmZyYToge1xuICAgKiAgIGVudjogeyBhY2NvdW50OiAnMTIzNDU2Nzg5MDEyJywgcmVnaW9uOiAndXMtZWFzdC0xJyB9LFxuICAgKiAgIHN0YWdlOiAnZGV2JyxcbiAgICogICByZWFjdEVudHJ5OiAnLi9zcmMvaW5kZXgudHN4JyxcbiAgICogICBhcGlNb2RlOiAnYXBpR2F0ZXdheScsXG4gICAqICAgbGFtYmRhTWVtb3J5U2l6ZTogMTAyNCxcbiAgICogICBsYW1iZGFUaW1lb3V0OiAzMCxcbiAgICogICBkb21haW46IHtcbiAgICogICAgIHJvb3REb21haW46ICdteWFwcC5jb20nLFxuICAgKiAgICAgc3ViZG9tYWluOiAnYXBpJ1xuICAgKiAgIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGluZnJhPzogSW5mcmFPcHRpb25zO1xufVxuXG4vKipcbiAqIFR5cGUtc2FmZSBQdXJlbm93IGNvbmZpZ3VyYXRpb24gd2l0aCBpbmZlcnJlZCBzZXJ2aWNlIG5hbWVzLlxuICpcbiAqIFRoaXMgdHlwZSBwcm92aWRlcyBSdW50aW1lIENvcmUgdHlwZSBzYWZldHkgYnkgaW5mZXJyaW5nIHNlcnZpY2UgbmFtZXMgZnJvbSB0aGUgcmVnaXN0ZXJcbiAqIGNvbmZpZ3VyYXRpb24sIGVuYWJsaW5nIGNvbXBpbGUtdGltZSB2YWxpZGF0aW9uIG9mIHNlcnZpY2UgcmVmZXJlbmNlcy5cbiAqXG4gKiBAdGVtcGxhdGUgVFJlZ2lzdGVyIC0gVGhlIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb24gdHlwZVxuICovXG5leHBvcnQgdHlwZSBUeXBlU2FmZVB1cmVub3dDb25maWc8VFJlZ2lzdGVyIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgTWljcm9zZXJ2aWNlRGVmaW5pdGlvbj4+ID1cbiAgUnVudGltZVdlYkNvbmZpZzxUUmVnaXN0ZXI+ICYge1xuICAvKipcbiAgICogVHlwZS1zYWZlIHNlcnZpY2UgbmFtZXMgZGVyaXZlZCBmcm9tIHJlZ2lzdGVyIGtleXMuXG4gICAqIEF2YWlsYWJsZSBhdCBjb21waWxlLXRpbWUgZm9yIHR5cGUgY2hlY2tpbmcgYW5kIElERSBhdXRvY29tcGxldGUuXG4gICAqL1xuICByZWFkb25seSBzZXJ2aWNlTmFtZXM/OiBTZXJ2aWNlTmFtZXM8VFJlZ2lzdGVyPjtcblxuICAvKipcbiAgICogVHlwZS1zYWZlIExhbWJkYSBJRHMgZGVyaXZlZCBmcm9tIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb24uXG4gICAqIEF2YWlsYWJsZSBhdCBjb21waWxlLXRpbWUgZm9yIHR5cGUgY2hlY2tpbmcgYW5kIElERSBhdXRvY29tcGxldGUuXG4gICAqL1xuICByZWFkb25seSBsYW1iZGFJZHM/OiBMYW1iZGFJZHM8VFJlZ2lzdGVyPjtcbn07XG4iLCAiLypcbiAqIEVsYXN0aWMgTGljZW5zZSAyLjBcbiAqIENvcHlyaWdodCAoQykgMjAyNVx1MjAxM3ByZXNlbnQgUmFtYW4gTWFyb3phdSwgV29yayBUYXJnZXQgSW5zaWdodCBGdW5jdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIENvbnRhY3Q6IHJhbWFuQHdvcmt0aWYuY29tXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIExpY2Vuc2VkIFdvcms6IHdvcmt0aWYucHVyZW5vdy5jZGsgPHdvcmt0aWZfcHVyZW5vd19jZGs+LlxuICogVXNlIG9mIHRoaXMgc29mdHdhcmUgaXMgZ292ZXJuZWQgYnkgdGhlIEVsYXN0aWMgTGljZW5zZSAyLjA7IHNlZSB0aGUgTElDRU5TRSBmaWxlXG4gKiBvciBodHRwczovL3d3dy5lbGFzdGljLmNvL2xpY2Vuc2luZy9lbGFzdGljLWxpY2Vuc2UgZm9yIGRldGFpbHMuXG4gKlxuICogUmUtbGljZW5zaW5nIG5vdGljZTpcbiAqICAgVGhpcyBmaWxlIHdhcyBwcmV2aW91c2x5IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCdXNpbmVzcyBTb3VyY2UgTGljZW5zZSAxLjEgKEJVU0wtMS4xKS5cbiAqICAgQXMgb2YgMjAyNS0wOS0yMiwgaXQgaXMgcmUtbGljZW5zZWQgdW5kZXIgRWxhc3RpYyBMaWNlbnNlIDIuMC5cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRWxhc3RpYy0yLjBcbiAqL1xuXG5pbXBvcnQgeyBSdW50aW1lV2ViQ29uZmlnIH0gZnJvbSAnQGxpYi9ydW50aW1lLXdlYi90eXBlcyc7XG5cbi8vIER5bmFtaWMgaW1wb3J0cyB0byBhdm9pZCBidW5kbGluZyBAd29ya3RpZi9wdXJlbm93IGluIGJyb3dzZXJcbi8vIFRoZXNlIHdpbGwgYmUgcmVzb2x2ZWQgYXQgcnVudGltZSB3aGVuIHRoZSBmdW5jdGlvbnMgYXJlIGNhbGxlZFxuXG4vKipcbiAqIEVycm9yIHRocm93biB3aGVuIGNvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiBmYWlscy5cbiAqIEZvbGxvd3MgcHVyZW5vdyBlcnJvciBwYXR0ZXJucyB3aXRob3V0IGVtb2ppLlxuICovXG5leHBvcnQgY2xhc3MgQ29uZmlnVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAvKiogQXJyYXkgb2YgdmFsaWRhdGlvbiBlcnJvciBtZXNzYWdlcyAqL1xuICByZWFkb25seSBlcnJvcnM6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKGVycm9yczogc3RyaW5nW10pIHtcbiAgICBzdXBlcihgQ29uZmlndXJhdGlvbiB2YWxpZGF0aW9uIGZhaWxlZDpcXG4ke2Vycm9ycy5tYXAoZSA9PiBgICAtICR7ZX1gKS5qb2luKCdcXG4nKX1gKTtcbiAgICB0aGlzLm5hbWUgPSAnQ29uZmlnVmFsaWRhdGlvbkVycm9yJztcbiAgICB0aGlzLmVycm9ycyA9IGVycm9ycztcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCB0aGlzLmNvbnN0cnVjdG9yKTtcbiAgfVxufVxuXG4vKipcbiAqIEVycm9yIHRocm93biB3aGVuIGVudmlyb25tZW50IGRldGVjdGlvbiBmYWlscy5cbiAqIEZvbGxvd3MgcHVyZW5vdyBlcnJvciBwYXR0ZXJucyB3aXRob3V0IGVtb2ppLlxuICovXG5leHBvcnQgY2xhc3MgRW52aXJvbm1lbnREZXRlY3Rpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ0Vudmlyb25tZW50RGV0ZWN0aW9uRXJyb3InO1xuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpO1xuICB9XG59XG5cbi8qKlxuICogRGV0ZWN0IHRoZSBjdXJyZW50IHJ1bnRpbWUgZW52aXJvbm1lbnQuXG4gKiBUaGlzIGlzIGEgbGlnaHR3ZWlnaHQgZGV0ZWN0aW9uIHRoYXQgd29ya3MgaW4gYWxsIGVudmlyb25tZW50cy5cbiAqL1xuZnVuY3Rpb24gZGV0ZWN0RW52aXJvbm1lbnQoKTogJ2Jyb3dzZXInIHwgJ2xhbWJkYScgfCAnY2RrJyB7XG4gIC8vIEJyb3dzZXIgZGV0ZWN0aW9uXG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiAnYnJvd3Nlcic7XG4gIH1cblxuICAvLyBMYW1iZGEgZGV0ZWN0aW9uXG4gIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5lbnY/LkFXU19MQU1CREFfRlVOQ1RJT05fTkFNRSkge1xuICAgIHJldHVybiAnbGFtYmRhJztcbiAgfVxuXG4gIC8vIENESyBkZXRlY3Rpb25cbiAgaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJykge1xuICAgIGlmIChwcm9jZXNzLmVudj8uUFVSRU5PV19NT0RFID09PSAnY2RrJykge1xuICAgICAgcmV0dXJuICdjZGsnO1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnY/LkNES19ERUZBVUxUX0FDQ09VTlQgfHwgcHJvY2Vzcy5lbnY/LkNES19ERUZBVUxUX1JFR0lPTikge1xuICAgICAgcmV0dXJuICdjZGsnO1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5hcmd2Py5zb21lKGFyZyA9PiBhcmcuaW5jbHVkZXMoJ2NkaycpIHx8IGFyZy5pbmNsdWRlcygnc3ludGgnKSkpIHtcbiAgICAgIHJldHVybiAnY2RrJztcbiAgICB9XG4gIH1cblxuICAvLyBEZWZhdWx0IHRvIENESyBmb3IgTm9kZS5qcyBlbnZpcm9ubWVudHMgKGJ1aWxkIHRpbWUpXG4gIHJldHVybiAnY2RrJztcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBjb25maWd1cmF0aW9uIGZvciB0aGUgZ2l2ZW4gZW52aXJvbm1lbnQuXG4gKiBMaWdodHdlaWdodCB2YWxpZGF0aW9uIHRoYXQgd29ya3MgaW4gYWxsIGVudmlyb25tZW50cy5cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVDb25maWcoY29uZmlnOiBSdW50aW1lV2ViQ29uZmlnLCBpc0NES0NvbnRleHQ6IGJvb2xlYW4pOiB7IHZhbGlkOiBib29sZWFuOyBlcnJvcnM6IHN0cmluZ1tdIH0ge1xuICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgLy8gU2VydmljZSBuYW1lIHZhbGlkYXRpb25cbiAgaWYgKCFjb25maWcuc2VydmljZU5hbWUgfHwgIS9eW2EtekEtWl1bYS16QS1aMC05LV17MCwxMjd9JC8udGVzdChjb25maWcuc2VydmljZU5hbWUpKSB7XG4gICAgZXJyb3JzLnB1c2goJ3NlcnZpY2VOYW1lIG11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciwgY29udGFpbiBvbmx5IGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGFuZCBoeXBoZW5zLCBhbmQgYmUgbWF4IDEyOCBjaGFyYWN0ZXJzJyk7XG4gIH1cblxuICAvLyBTdGFnZSB2YWxpZGF0aW9uXG4gIGlmICghWydkZXYnLCAnc3RhZ2luZycsICdwcm9kJ10uaW5jbHVkZXMoY29uZmlnLnN0YWdlKSkge1xuICAgIGVycm9ycy5wdXNoKCdzdGFnZSBtdXN0IGJlIG9uZSBvZjogZGV2LCBzdGFnaW5nLCBwcm9kJyk7XG4gIH1cblxuICAvLyBJbmZyYSB2YWxpZGF0aW9uIGZvciBDREsgY29udGV4dFxuICBpZiAoaXNDREtDb250ZXh0ICYmICFjb25maWcuaW5mcmEpIHtcbiAgICBlcnJvcnMucHVzaCgnaW5mcmEgY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCBpbiBDREsgY29udGV4dCcpO1xuICB9XG5cbiAgcmV0dXJuIHsgdmFsaWQ6IGVycm9ycy5sZW5ndGggPT09IDAsIGVycm9ycyB9O1xufVxuXG4vKipcbiAqIFVuaWZpZWQgZW50cnkgcG9pbnQgZm9yIFJ1bnRpbWUgVGFyZ2V0IENvcmUuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBwcm92aWRlcyBhIHNpbmdsZSBBUEkgdGhhdCB3b3JrcyBhY3Jvc3MgYWxsIGV4ZWN1dGlvbiBjb250ZXh0czpcbiAqIC0gKipCcm93c2VyKio6IEh5ZHJhdGVzIFJlYWN0IGFwcGxpY2F0aW9uIHdpdGggY2xpZW50LXNpZGUgcm91dGluZ1xuICogLSAqKkxhbWJkYSoqOiBFeGVjdXRlcyBzZXJ2ZXItc2lkZSByZW5kZXJpbmcgYW5kIGJ1c2luZXNzIGxvZ2ljIHdpdGggRElcbiAqIC0gKipDREsqKjogU3ludGhlc2l6ZXMgQ2xvdWRGb3JtYXRpb24gaW5mcmFzdHJ1Y3R1cmUgdGVtcGxhdGVzXG4gKlxuICogVGhlIGZ1bmN0aW9uIGF1dG9tYXRpY2FsbHkgZGV0ZWN0cyB0aGUgcnVudGltZSBlbnZpcm9ubWVudCBhbmQgcm91dGVzXG4gKiBleGVjdXRpb24gdG8gdGhlIGFwcHJvcHJpYXRlIHBpcGVsaW5lIHdpdGhvdXQgdXNlciBpbnRlcnZlbnRpb24uXG4gKlxuICogKipOb3RlKio6IEZvciBMYW1iZGEgYW5kIENESyBjb250ZXh0cywgdXNlIHRoZSBzZXJ2ZXItc2lkZSBlbnRyeSBwb2ludFxuICogZnJvbSBgQGNvcmUvcnVudGltZS13ZWJgIGluc3RlYWQuIFRoaXMgYnJvd3Nlci1jb21wYXRpYmxlIHZlcnNpb25cbiAqIG9ubHkgc3VwcG9ydHMgYnJvd3NlciBoeWRyYXRpb24uXG4gKlxuICogQHBhcmFtIGNvbmZpZyAtIFVuaWZpZWQgY29uZmlndXJhdGlvbiBmb3IgYWxsIGNvbnRleHRzXG4gKiBAcmV0dXJucyBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBleGVjdXRpb24gY29tcGxldGVzXG4gKiBAdGhyb3dzIENvbmZpZ1ZhbGlkYXRpb25FcnJvciBpZiBjb25maWd1cmF0aW9uIGlzIGludmFsaWRcbiAqIEB0aHJvd3MgRW52aXJvbm1lbnREZXRlY3Rpb25FcnJvciBpZiBlbnZpcm9ubWVudCBjYW5ub3QgYmUgZGV0ZWN0ZWRcbiAqIEB0aHJvd3MgRXJyb3IgaWYgZXhlY3V0aW9uIGZhaWxzXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IHB1cmVub3cgfSBmcm9tICdAd29ya3RpZi9wdXJlbm93L3J1bnRpbWUtd2ViJztcbiAqIGltcG9ydCB7IFB1cmVub3dSb3V0ZXIgfSBmcm9tICdAd29ya3RpZi9wdXJlbm93JztcbiAqXG4gKiBwdXJlbm93KHtcbiAqICAgYXBwOiAoeyByb3V0ZXIgfSkgPT4gPEFwcCByb3V0ZXI9e3JvdXRlcn0gLz4sXG4gKiAgIHJvdXRlcjogbmV3IFB1cmVub3dSb3V0ZXIoeyByb3V0ZXMsIGRlZmF1bHRzOiB7fSB9KSxcbiAqICAgc2VydmljZU5hbWU6ICdteS1hcHAnLFxuICogICBzdGFnZTogJ2RldicsXG4gKiAgIHJlZ2lzdGVyOiB7XG4gKiAgICAgcGF5bWVudHM6IHtcbiAqICAgICAgIHRpZXM6IFtQYXltZW50c1RpZXNdLFxuICogICAgICAgbGFtYmRhczogW2NoYXJnZUhhbmRsZXIsIHJlZnVuZEhhbmRsZXJdXG4gKiAgICAgfVxuICogICB9LFxuICogICBpbmZyYToge1xuICogICAgIGVudjogeyBhY2NvdW50OiAnMTIzNDU2Nzg5MDEyJywgcmVnaW9uOiAndXMtZWFzdC0xJyB9LFxuICogICAgIHN0YWdlOiAnZGV2JyxcbiAqICAgICByZWFjdEVudHJ5OiAnLi9zcmMvaW5kZXgudHN4JyxcbiAqICAgICBhcGlNb2RlOiAnYXBpR2F0ZXdheSdcbiAqICAgfVxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHB1cmV3ZWIoY29uZmlnOiBSdW50aW1lV2ViQ29uZmlnKTogdm9pZCB7XG4gIC8vIDEuIERldGVjdCBydW50aW1lIGVudmlyb25tZW50IHVzaW5nIGxpZ2h0d2VpZ2h0IGRldGVjdGlvblxuICBjb25zdCBlbnZUeXBlID0gZGV0ZWN0RW52aXJvbm1lbnQoKTtcbiAgY29uc3QgaXNDREtDb250ZXh0ID0gZW52VHlwZSA9PT0gJ2Nkayc7XG5cbiAgLy8gMi4gVmFsaWRhdGUgY29uZmlndXJhdGlvblxuICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gdmFsaWRhdGVDb25maWcoY29uZmlnLCBpc0NES0NvbnRleHQpO1xuXG4gIGlmICghdmFsaWRhdGlvblJlc3VsdC52YWxpZCkge1xuICAgIHRocm93IG5ldyBDb25maWdWYWxpZGF0aW9uRXJyb3IodmFsaWRhdGlvblJlc3VsdC5lcnJvcnMpO1xuICB9XG5cbiAgLy8gMy4gUm91dGUgdG8gYXBwcm9wcmlhdGUgcGlwZWxpbmUgYmFzZWQgb24gZW52aXJvbm1lbnRcbiAgc3dpdGNoIChlbnZUeXBlKSB7XG4gICAgY2FzZSAnYnJvd3Nlcic6IHtcbiAgICAgIC8vIEJyb3dzZXIgcGlwZWxpbmUgLSBoeWRyYXRlIFJlYWN0IGFwcFxuICAgICAgLy8gVGhpcyBpcyB0aGUgb25seSBwYXRoIHRoYXQgcnVucyBpbiB0aGUgYnJvd3NlclxuICAgICAgLy8gRHluYW1pYyByZXF1aXJlIHRvIGF2b2lkIGJ1bmRsaW5nIEB3b3JrdGlmL3B1cmVub3dcbiAgICAgIGNvbnN0IHJlcXVpcmVGbiA9IChnbG9iYWxUaGlzIGFzIGFueSkucmVxdWlyZSB8fCByZXF1aXJlO1xuICAgICAgY29uc3QgcGFja2FnZU5hbWUgPSAnQHdvcmt0aWYvcHVyZW5vdyc7XG4gICAgICBjb25zdCBwdXJlbm93UGFja2FnZSA9IHJlcXVpcmVGbihwYWNrYWdlTmFtZSk7XG4gICAgICBjb25zdCB7IHB1cmVub3csIHB1cmVub3dSb3V0ZXIgfSA9IHB1cmVub3dQYWNrYWdlO1xuXG4gICAgICBwdXJlbm93KHtcbiAgICAgICAgYXBwOiAoeyByb3V0ZXIgfTogYW55KSA9PiBjb25maWcuYXBwKHsgcm91dGVyIH0pLFxuICAgICAgICByb3V0ZXI6IHB1cmVub3dSb3V0ZXIoe1xuICAgICAgICAgIHJvdXRlcjogY29uZmlnLnJvdXRlci5nZXRSb3V0ZXMoKSxcbiAgICAgICAgICBkZWZhdWx0czogY29uZmlnLnJvdXRlci5kZWZhdWx0cyxcbiAgICAgICAgfSksXG4gICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgIHNlcnZpY2VOYW1lOiBjb25maWcuc2VydmljZU5hbWUsXG4gICAgICAgICAgc3RhZ2U6IGNvbmZpZy5zdGFnZSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2FzZSAnbGFtYmRhJzpcbiAgICBjYXNlICdjZGsnOiB7XG4gICAgICAvLyBMYW1iZGEgYW5kIENESyBwaXBlbGluZXMgcmVxdWlyZSBzZXJ2ZXItc2lkZSBjb2RlXG4gICAgICAvLyBUaGVzZSBzaG91bGQgdXNlIHRoZSBzZXJ2ZXItc2lkZSBlbnRyeSBwb2ludCBmcm9tIEBjb3JlL3J1bnRpbWUtd2ViXG4gICAgICBjb25zb2xlLmxvZygnW1J1bnRpbWVdIFNlcnZlci1zaWRlIHBpcGVsaW5lIGRldGVjdGVkICglcyknLCBlbnZUeXBlKTtcblxuICAgICAgLy8gRHluYW1pYyByZXF1aXJlIHRvIGF2b2lkIGJ1bmRsaW5nIEB3b3JrdGlmL3B1cmVub3dcbiAgICAgIGNvbnN0IHJlcXVpcmVGbiA9IChnbG9iYWxUaGlzIGFzIGFueSkucmVxdWlyZSB8fCByZXF1aXJlO1xuICAgICAgY29uc3QgcGFja2FnZU5hbWUgPSAnQHdvcmt0aWYvcHVyZW5vdyc7XG4gICAgICBjb25zdCBwdXJlbm93UGFja2FnZSA9IHJlcXVpcmVGbihwYWNrYWdlTmFtZSk7XG4gICAgICBjb25zdCB7IHB1cmVub3csIHB1cmVub3dSb3V0ZXIgfSA9IHB1cmVub3dQYWNrYWdlO1xuXG4gICAgICBwdXJlbm93KHtcbiAgICAgICAgYXBwOiAoeyByb3V0ZXIgfTogYW55KSA9PiBjb25maWcuYXBwKHsgcm91dGVyIH0pLFxuICAgICAgICByb3V0ZXI6IHB1cmVub3dSb3V0ZXIoe1xuICAgICAgICAgIHJvdXRlcjogY29uZmlnLnJvdXRlci5nZXRSb3V0ZXMoKSxcbiAgICAgICAgICBkZWZhdWx0czogY29uZmlnLnJvdXRlci5kZWZhdWx0cyxcbiAgICAgICAgfSksXG4gICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgIHNlcnZpY2VOYW1lOiBjb25maWcuc2VydmljZU5hbWUsXG4gICAgICAgICAgc3RhZ2U6IGNvbmZpZy5zdGFnZSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgYnJlYWs7XG4gICAgICAvLyBjb25zb2xlLmxvZygnW1J1bnRpbWUgV2ViXSBMYW1iZGEgcnVudGltZSBkZXRlY3RlZCwgc2tpcHBpbmcgYnJvd3NlciByZW5kZXJpbmcgcGlwZWxpbmUnKTtcbiAgICAgIC8vIHRocm93IG5ldyBFbnZpcm9ubWVudERldGVjdGlvbkVycm9yKFxuICAgICAgLy8gICBgU2VydmVyLXNpZGUgZW52aXJvbm1lbnQgZGV0ZWN0ZWQgKCR7ZW52VHlwZX0pLiBgICtcbiAgICAgIC8vICAgYFVzZSB0aGUgc2VydmVyLXNpZGUgZW50cnkgcG9pbnQgZnJvbSAnQGNvcmUvcnVudGltZS13ZWInIGZvciBMYW1iZGEgYW5kIENESyBjb250ZXh0cy5gLFxuICAgICAgLy8gKTtcbiAgICB9XG5cbiAgICBkZWZhdWx0OlxuICAgICAgY29uc29sZS5sb2coJ1tSdW50aW1lIFdlYl0gVW5rbm93biBlbnZpcm9ubWVudCB0eXBlOiAlcycsIGVudlR5cGUpO1xuICAgICAgYnJlYWs7XG4gICAgLy8gdGhyb3cgbmV3IEVudmlyb25tZW50RGV0ZWN0aW9uRXJyb3IoXG4gICAgLy8gICBgVW5rbm93biBlbnZpcm9ubWVudCB0eXBlOiAke2VudlR5cGV9YCxcbiAgICAvLyApO1xuICB9XG59XG5cblxuIiwgIi8qXG4gKiBFbGFzdGljIExpY2Vuc2UgMi4wXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjVcdTIwMTNwcmVzZW50IFJhbWFuIE1hcm96YXUsIFdvcmsgVGFyZ2V0IEluc2lnaHQgRnVuY3Rpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBDb250YWN0OiByYW1hbkB3b3JrdGlmLmNvbVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBMaWNlbnNlZCBXb3JrOiB3b3JrdGlmLnB1cmVub3cuY2RrIDx3b3JrdGlmX3B1cmVub3dfY2RrPi5cbiAqIFVzZSBvZiB0aGlzIHNvZnR3YXJlIGlzIGdvdmVybmVkIGJ5IHRoZSBFbGFzdGljIExpY2Vuc2UgMi4wOyBzZWUgdGhlIExJQ0VOU0UgZmlsZVxuICogb3IgaHR0cHM6Ly93d3cuZWxhc3RpYy5jby9saWNlbnNpbmcvZWxhc3RpYy1saWNlbnNlIGZvciBkZXRhaWxzLlxuICpcbiAqIFJlLWxpY2Vuc2luZyBub3RpY2U6XG4gKiAgIFRoaXMgZmlsZSB3YXMgcHJldmlvdXNseSBkaXN0cmlidXRlZCB1bmRlciB0aGUgQnVzaW5lc3MgU291cmNlIExpY2Vuc2UgMS4xIChCVVNMLTEuMSkuXG4gKiAgIEFzIG9mIDIwMjUtMDktMjIsIGl0IGlzIHJlLWxpY2Vuc2VkIHVuZGVyIEVsYXN0aWMgTGljZW5zZSAyLjAuXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVsYXN0aWMtMi4wXG4gKi9cblxuXG5pbXBvcnQgdHlwZSB7IFB1cmVub3dDb25maWcgfSBmcm9tICdAd29ya3RpZi9wdXJlbm93JztcblxuLyoqXG4gKiBSdW50aW1lLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gdGhhdCBleHRlbmRzIFB1cmVub3dDb25maWcuXG4gKlxuICogVGhpcyBpbnRlcmZhY2UgYWRkcyBydW50aW1lIHdvcmtzcGFjZSBmdW5jdGlvbmFsaXR5IHdoaWxlIHByZXNlcnZpbmdcbiAqIGFsbCBleGlzdGluZyBwdXJlbm93IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhlIHJ1bnRpbWUgY29uZmlndXJhdGlvblxuICogaXMgbWVyZ2VkIHdpdGggcHVyZW5vdyBjb25maWd1cmF0aW9uIHJhdGhlciB0aGFuIHJlcGxhY2luZyBpdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW50aW1lQ29uZmlnIGV4dGVuZHMgUHVyZW5vd0NvbmZpZyB7XG4gIC8qKlxuICAgKiBSdW50aW1lLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAgICogVGhlc2Ugc2V0dGluZ3MgZXh0ZW5kIHB1cmVub3cgZnVuY3Rpb25hbGl0eSB3aXRob3V0IHJlcGxhY2luZyBpdC5cbiAgICovXG4gIHJ1bnRpbWU/OiB7XG4gICAgLyoqIEVuYWJsZSBSdW50aW1lIENvcmUgc3RhY2sgZGVwbG95bWVudCAoZXh0ZW5kcyBwdXJlbm93J3MgdHdvLXN0YWNrIGFyY2hpdGVjdHVyZSkgKi9cbiAgICBlbmFibGVUaGlyZFN0YWNrPzogYm9vbGVhbjtcblxuICAgIC8qKiBSdW50aW1lIHdlYiBtb2RlIGNvbmZpZ3VyYXRpb24gKi9cbiAgICBydW50aW1lV2ViTW9kZT86ICdkZXZlbG9wbWVudCcgfCAncHJvZHVjdGlvbic7XG5cbiAgICAvKiogQWRkaXRpb25hbCBydW50aW1lIGZlYXR1cmVzIHRvIGVuYWJsZSAqL1xuICAgIGFkZGl0aW9uYWxGZWF0dXJlcz86IHN0cmluZ1tdO1xuXG4gICAgLyoqIERldmVsb3BtZW50IHNlcnZlciBlbmhhbmNlbWVudHMgKi9cbiAgICBkZXZTZXJ2ZXJFbmhhbmNlbWVudHM/OiB7XG4gICAgICAvKiogRW5hYmxlIGhvdCBtb2R1bGUgcmVwbGFjZW1lbnQgKi9cbiAgICAgIGhvdFJlbG9hZD86IGJvb2xlYW47XG4gICAgICAvKiogRW5hYmxlIGRlYnVnIG1vZGUgd2l0aCBhZGRpdGlvbmFsIGxvZ2dpbmcgKi9cbiAgICAgIGRlYnVnTW9kZT86IGJvb2xlYW47XG4gICAgICAvKiogRW5hYmxlIHBlcmZvcm1hbmNlIG1vbml0b3JpbmcgKi9cbiAgICAgIHBlcmZvcm1hbmNlTW9uaXRvcmluZz86IGJvb2xlYW47XG4gICAgfTtcblxuICAgIC8qKiBCdWlsZCBvcHRpbWl6YXRpb25zICovXG4gICAgYnVpbGRPcHRpbWl6YXRpb25zPzoge1xuICAgICAgLyoqIEVuYWJsZSBidW5kbGUgYW5hbHlzaXMgKi9cbiAgICAgIGJ1bmRsZUFuYWx5c2lzPzogYm9vbGVhbjtcbiAgICAgIC8qKiBFbmFibGUgdHJlZSBzaGFraW5nICovXG4gICAgICB0cmVlc2hha2luZz86IGJvb2xlYW47XG4gICAgICAvKiogRW5hYmxlIGNvZGUgbWluaWZpY2F0aW9uICovXG4gICAgICBjb2RlTWluaWZpY2F0aW9uPzogYm9vbGVhbjtcbiAgICB9O1xuICB9O1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gbWVyZ2luZyB1dGlsaXR5IHRoYXQgcHJlc2VydmVzIGFsbCBwdXJlbm93IHNldHRpbmdzXG4gKiB3aGlsZSBhZGRpbmcgcnVudGltZS1zcGVjaWZpYyBleHRlbnNpb25zLlxuICpcbiAqIEBwYXJhbSBwdXJlbm93Q29uZmlnIC0gQmFzZSBwdXJlbm93IGNvbmZpZ3VyYXRpb25cbiAqIEBwYXJhbSBydW50aW1lQ29uZmlnIC0gUnVudGltZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIHRvIG1lcmdlXG4gKiBAcmV0dXJucyBNZXJnZWQgY29uZmlndXJhdGlvbiB3aXRoIGFsbCBwdXJlbm93IHNldHRpbmdzIHByZXNlcnZlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VSdW50aW1lQ29uZmlnKFxuICBwdXJlbm93Q29uZmlnOiBQdXJlbm93Q29uZmlnLFxuICBydW50aW1lQ29uZmlnPzogUGFydGlhbDxSdW50aW1lQ29uZmlnWydydW50aW1lJ10+LFxuKTogUnVudGltZUNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgLi4ucHVyZW5vd0NvbmZpZyxcbiAgICBydW50aW1lOiB7XG4gICAgICBlbmFibGVUaGlyZFN0YWNrOiBmYWxzZSxcbiAgICAgIHJ1bnRpbWVXZWJNb2RlOiAnZGV2ZWxvcG1lbnQnLFxuICAgICAgYWRkaXRpb25hbEZlYXR1cmVzOiBbXSxcblxuICAgICAgLy8gQHRvZG86IGNyaXRpYWwgdG8gaW1wcm92ZSB0aGlzIHNvbHV0aW9uLiBPdGhlcndpc2UgXHUyMDEzPiBVTk5FQ0VTU0FSWSBPUFRJT05TIFRPVEFMTFlcbiAgICAgIGRldlNlcnZlckVuaGFuY2VtZW50czoge1xuICAgICAgICBob3RSZWxvYWQ6IHRydWUsXG4gICAgICAgIGRlYnVnTW9kZTogZmFsc2UsXG4gICAgICAgIHBlcmZvcm1hbmNlTW9uaXRvcmluZzogZmFsc2UsXG4gICAgICB9LFxuICAgICAgYnVpbGRPcHRpbWl6YXRpb25zOiB7XG4gICAgICAgIGJ1bmRsZUFuYWx5c2lzOiBmYWxzZSxcbiAgICAgICAgdHJlZXNoYWtpbmc6IHRydWUsXG4gICAgICAgIGNvZGVNaW5pZmljYXRpb246IHRydWUsXG4gICAgICB9LFxuICAgICAgLi4ucnVudGltZUNvbmZpZyxcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIFR5cGUgZ3VhcmQgdG8gY2hlY2sgaWYgYSBjb25maWd1cmF0aW9uIGlzIGEgUnVudGltZUNvbmZpZy5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gQ29uZmlndXJhdGlvbiB0byBjaGVja1xuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgY29uZmlndXJhdGlvbiBoYXMgcnVudGltZS1zcGVjaWZpYyBwcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1J1bnRpbWVDb25maWcoY29uZmlnOiBhbnkpOiBjb25maWcgaXMgUnVudGltZUNvbmZpZyB7XG4gIHJldHVybiAhIShjb25maWcgJiYgdHlwZW9mIGNvbmZpZyA9PT0gJ29iamVjdCcgJiYgJ3J1bnRpbWUnIGluIGNvbmZpZyk7XG59XG5cbi8qKlxuICogRXh0cmFjdCBydW50aW1lLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZnJvbSBhIFJ1bnRpbWVDb25maWcuXG4gKlxuICogQHBhcmFtIGNvbmZpZyAtIFJ1bnRpbWVDb25maWcgdG8gZXh0cmFjdCBmcm9tXG4gKiBAcmV0dXJucyBSdW50aW1lLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3IgdW5kZWZpbmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0UnVudGltZUNvbmZpZyhjb25maWc6IFJ1bnRpbWVDb25maWcpOiBSdW50aW1lQ29uZmlnWydydW50aW1lJ10ge1xuICByZXR1cm4gY29uZmlnLnJ1bnRpbWU7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgUnVudGltZUNvbmZpZyBmcm9tIGEgYmFzZSBQdXJlbm93Q29uZmlnIHdpdGggZGVmYXVsdCBydW50aW1lIHNldHRpbmdzLlxuICpcbiAqIEBwYXJhbSBwdXJlbm93Q29uZmlnIC0gQmFzZSBwdXJlbm93IGNvbmZpZ3VyYXRpb25cbiAqIEByZXR1cm5zIFJ1bnRpbWVDb25maWcgd2l0aCBkZWZhdWx0IHJ1bnRpbWUgc2V0dGluZ3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJ1bnRpbWVDb25maWcocHVyZW5vd0NvbmZpZzogUHVyZW5vd0NvbmZpZyk6IFJ1bnRpbWVDb25maWcge1xuICByZXR1cm4gbWVyZ2VSdW50aW1lQ29uZmlnKHB1cmVub3dDb25maWcpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogInlQQWlITyxTQUFTQSxFQUFtQkMsRUFBc0QsQ0FDdkYsTUFBTyxnQ0FBZ0MsS0FBS0EsQ0FBVyxDQUN6RCxDQzFGTyxJQUFNQyxFQUFOLGNBQW9DLEtBQU0sQ0FJL0MsWUFBWUMsRUFBa0IsQ0FDNUIsTUFBTTtBQUFBLEVBQXFDQSxFQUFPLElBQUlDLEdBQUssT0FBT0EsQ0FBQyxFQUFFLEVBQUUsS0FBSztBQUFBLENBQUksQ0FBQyxFQUFFLEVBQ25GLEtBQUssS0FBTyx3QkFDWixLQUFLLE9BQVNELEVBQ2QsTUFBTSxrQkFBa0IsS0FBTSxLQUFLLFdBQVcsQ0FDaEQsQ0FDRixFQU1hRSxFQUFOLGNBQXdDLEtBQU0sQ0FDbkQs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R0FBVyxVQUFZLFlBQWFBLEVBQ2pFLENBUU8sU0FBU0MsRUFBcUJELEVBQWlELENBQ3BGLE9BQU9BLEVBQU8sT0FDaEIsQ0FRTyxTQUFTRSxFQUFvQkwsRUFBNkMsQ0FDL0UsT0FBT0QsRUFBbUJDLENBQWEsQ0FDekMiLAogICJuYW1lcyI6IFsiaXNWYWxpZFNlcnZpY2VOYW1lIiwgInNlcnZpY2VOYW1lIiwgIkNvbmZpZ1ZhbGlkYXRpb25FcnJvciIsICJlcnJvcnMiLCAiZSIsICJFbnZpcm9ubWVudERldGVjdGlvbkVycm9yIiwgIm1lc3NhZ2UiLCAiZGV0ZWN0RW52aXJvbm1lbnQiLCAiYXJnIiwgInZhbGlkYXRlQ29uZmlnIiwgImNvbmZpZyIsICJpc0NES0NvbnRleHQiLCAicHVyZXdlYiIsICJlbnZUeXBlIiwgInZhbGlkYXRpb25SZXN1bHQiLCAicHVyZW5vd1BhY2thZ2UiLCAiX19yZXF1aXJlIiwgInB1cmVub3ciLCAicHVyZW5vd1JvdXRlciIsICJyb3V0ZXIiLCAibWVyZ2VSdW50aW1lQ29uZmlnIiwgInB1cmVub3dDb25maWciLCAicnVudGltZUNvbmZpZyIsICJpc1J1bnRpbWVDb25maWciLCAiY29uZmlnIiwgImV4dHJhY3RSdW50aW1lQ29uZmlnIiwgImNyZWF0ZVJ1bnRpbWVDb25maWciXQp9Cg==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@worktif/runtime",
|
|
3
|
-
"version": "0.3.0-edge.
|
|
3
|
+
"version": "0.3.0-edge.16",
|
|
4
4
|
"description": "Serverless web framework running on AWS Lambda with support for server-side rendering, caching, and CI/CD.",
|
|
5
5
|
"repository": "git@bitbucket.org:worktif/runtime-target.git",
|
|
6
6
|
"author": "Raman Marozau <raman@worktif.com>",
|
|
@@ -32,6 +32,16 @@
|
|
|
32
32
|
"import": "./out/dist/lib/index.mjs",
|
|
33
33
|
"require": "./out/dist/lib/index.js"
|
|
34
34
|
},
|
|
35
|
+
"./browser": {
|
|
36
|
+
"types": "./out/dist/src/browser.d.ts",
|
|
37
|
+
"import": "./out/dist/src/browser.mjs",
|
|
38
|
+
"require": "./out/dist/src/browser.js"
|
|
39
|
+
},
|
|
40
|
+
"./minimal": {
|
|
41
|
+
"types": "./out/dist/src/minimal.d.ts",
|
|
42
|
+
"import": "./out/dist/src/minimal.mjs",
|
|
43
|
+
"require": "./out/dist/src/minimal.js"
|
|
44
|
+
},
|
|
35
45
|
"./infra": {
|
|
36
46
|
"types": "./out/dist/src/infra/index.d.ts",
|
|
37
47
|
"require": "./out/dist/infra/index.js"
|