@techextensor/tab-core-utility 2.2.172 → 2.2.173
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/esm2022/index.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/constants/api-constants.mjs +4 -2
- package/esm2022/lib/tab-core-utility/app/constants/app-object-constants.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/crud/tab-blueprint.service.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/crud/tab-crud.service.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/crud/tab-formio.service.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/crud/tab-release.service.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/enums/common.enum.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/helpers/common/app.helpers.mjs +20 -1
- package/esm2022/lib/tab-core-utility/app/helpers/common/meta-data.helpers.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/helpers/common/template.helpers.mjs +181 -15
- package/esm2022/lib/tab-core-utility/app/helpers/common/user-personalization.helper.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/interfaces/auth.interface.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/interfaces/common.interface.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/interfaces/grid.interface.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/interfaces/orgInfo.interface.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/interfaces/schema.interface.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/interfaces/user.interface.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/models/app-field.model.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/models/app-menu.model.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/models/app-object.model.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/models/app-screen.model.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/models/data-source-query.model.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/models/filter.model.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/models/orgInfo.model.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/models/parameter.model.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/models/sort.model.mjs +1 -1
- package/esm2022/lib/tab-core-utility/auth/auth.service.mjs +1 -1
- package/esm2022/lib/tab-core-utility/auth/idb-storage.service.mjs +1 -1
- package/esm2022/lib/tab-core-utility/auth/local-storage.service.mjs +1 -1
- package/esm2022/lib/tab-core-utility/auth/session-storage.service.mjs +1 -1
- package/esm2022/lib/tab-core-utility/core/http-client/api-url.token.mjs +1 -1
- package/esm2022/lib/tab-core-utility/core/http-client/api.service.mjs +1 -1
- package/esm2022/lib/tab-core-utility/core/pipe/translate.pipe.mjs +1 -1
- package/esm2022/lib/tab-core-utility/core/provider/notification.provider.mjs +1 -1
- package/esm2022/lib/tab-core-utility/core/provider/translation.provider.mjs +1 -1
- package/esm2022/lib/tab-core-utility/core/service/confirmation.service.mjs +1 -1
- package/esm2022/lib/tab-core-utility/core/service/encryption.service.mjs +1 -1
- package/esm2022/lib/tab-core-utility/core/service/notification.service.mjs +1 -1
- package/esm2022/lib/tab-core-utility/core/service/translation.service.mjs +1 -1
- package/lib/tab-core-utility/app/constants/api-constants.d.ts +2 -0
- package/lib/tab-core-utility/app/helpers/common/app.helpers.d.ts +13 -0
- package/lib/tab-core-utility/app/helpers/common/template.helpers.d.ts +44 -1
- package/lib/tab-core-utility/app/interfaces/common.interface.d.ts +1 -1
- package/package.json +1 -1
|
@@ -277,4 +277,4 @@ export class MetadataHelper {
|
|
|
277
277
|
type: Injectable,
|
|
278
278
|
args: [{ providedIn: 'root' }]
|
|
279
279
|
}], null, null); })();
|
|
280
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS1kYXRhLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vbWV0YS1kYXRhLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUcvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFHckUsTUFBTSxPQUFPLGNBQWM7SUFEM0I7UUFFVSxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBQ3hELGtCQUFhLEdBQTRCLElBQUksQ0FBQztRQUU5QyxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBQ3hELGtCQUFhLEdBQTRCLElBQUksQ0FBQztRQUU5QyxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQStCLENBQUM7UUFDcEQsZ0JBQVcsR0FBMEIsSUFBSSxDQUFDO1FBRTFDLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBK0IsQ0FBQztRQUNwRCxnQkFBVyxHQUEwQixJQUFJLENBQUM7UUFFakMs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LEVBQUUsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FDekIsQ0FBQztRQUVGLHNFQUFzRTtRQUN0RSxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pELENBQUM7K0VBeFdVLGNBQWM7dUVBQWQsY0FBYyxXQUFkLGNBQWMsbUJBREQsTUFBTTs7aUZBQ25CLGNBQWM7Y0FEMUIsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENvbW1vbiB9IGZyb20gXCIuLi8uLi9jb25zdGFudHMvY29tbW9uXCI7XHJcbmltcG9ydCB7IEFwcE9iamVjdE1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy9hcHAtb2JqZWN0Lm1vZGVsXCI7XHJcbmltcG9ydCB7IEFwcEZpZWxkTW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2FwcC1maWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBEYXRhU291cmNlUXVlcnlNb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvZGF0YS1zb3VyY2UtcXVlcnkubW9kZWxcIjtcclxuaW1wb3J0IHsgTWV0YWRhdGFFbnRpdHlUeXBlIH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvc2NoZW1hLmludGVyZmFjZVwiO1xyXG5pbXBvcnQgeyBBcHBTY3JlZW5Nb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvYXBwLXNjcmVlbi5tb2RlbFwiO1xyXG5pbXBvcnQgeyBPcmdJbmZvTW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL29yZ0luZm8ubW9kZWxcIjtcclxuaW1wb3J0IHsgQXBwTWVudU1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy9hcHAtbWVudS5tb2RlbFwiO1xyXG5pbXBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vYXV0aC9zZXNzaW9uLXN0b3JhZ2Uuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTdG9yYWdlQ29uc3RhbnRzIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50cy9zdG9yYWdlLWNvbnN0YW50c1wiO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIE1ldGFkYXRhSGVscGVyIHtcclxuICBwcml2YXRlIGFwcE9iamVjdE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBBcHBPYmplY3RNb2RlbCB8IG51bGw+KCk7XHJcbiAgcHJpdmF0ZSBhbGxBcHBPYmplY3RzOiBBcHBPYmplY3RNb2RlbFtdIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgYXBwU2NyZWVuTWFwID0gbmV3IE1hcDxzdHJpbmcsIEFwcFNjcmVlbk1vZGVsIHwgbnVsbD4oKTtcclxuICBwcml2YXRlIGFsbEFwcFNjcmVlbnM6IEFwcFNjcmVlbk1vZGVsW10gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBvcmdJbmZvTWFwID0gbmV3IE1hcDxzdHJpbmcsIE9yZ0luZm9Nb2RlbCB8IG51bGw+KCk7XHJcbiAgcHJpdmF0ZSBhbGxPcmdJbmZvczogT3JnSW5mb01vZGVsW10gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBhcHBNZW51TWFwID0gbmV3IE1hcDxzdHJpbmcsIEFwcE1lbnVNb2RlbCB8IG51bGw+KCk7XHJcbiAgcHJpdmF0ZSBhbGxBcHBNZW51czogQXBwTWVudU1vZGVsW10gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZSA9IGluamVjdChTZXNzaW9uU3RvcmFnZVNlcnZpY2UpO1xyXG5cclxuICAvKipcclxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGdldCBjdXJyZW50IGFwcCBJRCBmcm9tIHNlc3Npb25cclxuICAgKiBAcmV0dXJucyBDdXJyZW50IGFwcCBJRCBvciBudWxsIGlmIG5vdCBhdmFpbGFibGVcclxuICAgKi9cclxuICBwcml2YXRlIGdldEN1cnJlbnRBcHBJZCgpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGFwcEluZm8gPSB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRTZXNzaW9uU3RvcmFnZShTdG9yYWdlQ29uc3RhbnRzLmFwcEluZm8pO1xyXG4gICAgICBjb25zdCBwYXJzZWRBcHBJbmZvID0gYXBwSW5mbyA/IEpTT04ucGFyc2UoYXBwSW5mbykgOiBudWxsO1xyXG4gICAgICByZXR1cm4gcGFyc2VkQXBwSW5mbz8uSWQgfHwgbnVsbDtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIGdldCBjdXJyZW50IGFwcCBJRCBmcm9tIHNlc3Npb246JywgZXJyb3IpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4ga2V5IGZyb20gdGhlIGdpdmVuIG1hcC5cclxuICAgKiBJZiB0aGUga2V5IGRvZXMgbm90IGV4aXN0IGluIHRoZSBtYXAsIGFuZCB0aGUgc291cmNlIGxpc3QgY29udGFpbnMgYW4gaXRlbSB0aGF0IG1hdGNoZXNcclxuICAgKiB0aGUgZ2l2ZW4gY29uZGl0aW9uLCBpdCBjcmVhdGVzIGEgbmV3IG1vZGVsIHVzaW5nIHRoZSBnaXZlbiBtb2RlbCBmYWN0b3J5IGFuZCBhZGRzIGl0IHRvIHRoZSBtYXAuXHJcbiAgICogQHBhcmFtIG1hcCBUaGUgbWFwIHRvIHNlYXJjaCBpbi5cclxuICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci5cclxuICAgKiBAcGFyYW0gc291cmNlTGlzdCBUaGUgbGlzdCBvZiBpdGVtcyB0byBzZWFyY2ggaW4uXHJcbiAgICogQHBhcmFtIG1hdGNoRm4gVGhlIGNvbmRpdGlvbiB0byBtYXRjaC5cclxuICAgKiBAcGFyYW0gbW9kZWxGYWN0b3J5IFRoZSBmYWN0b3J5IHRvIGNyZWF0ZSBhIG5ldyBtb2RlbCBpZiB0aGUga2V5IGRvZXMgbm90IGV4aXN0LlxyXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGtleSwgb3IgbnVsbCBpZiBubyBtYXRjaCBpcyBmb3VuZC5cclxuICAgKi9cclxuICBwcml2YXRlIGdldEZyb21NYXBPckNyZWF0ZTxUPihcclxuICAgIG1hcDogTWFwPHN0cmluZywgVCB8IG51bGw+LFxyXG4gICAga2V5OiBzdHJpbmcsXHJcbiAgICBzb3VyY2VMaXN0OiBUW10sXHJcbiAgICBtYXRjaEZuOiAoaXRlbTogVCkgPT4gYm9vbGVhbixcclxuICAgIG1vZGVsRmFjdG9yeTogKGl0ZW06IFQpID0+IFRcclxuICApOiBUIHwgbnVsbCB7XHJcbiAgICBpZiAoIWtleSkgcmV0dXJuIG51bGw7XHJcbiAgICBpZiAobWFwLmhhcyhrZXkpKSByZXR1cm4gbWFwLmdldChrZXkpIHx8IG51bGw7XHJcblxyXG4gICAgY29uc3QgaXRlbSA9IHNvdXJjZUxpc3QuZmluZChtYXRjaEZuKTtcclxuICAgIGNvbnN0IG1vZGVsID0gaXRlbSA/IG1vZGVsRmFjdG9yeShpdGVtKSA6IG51bGw7XHJcbiAgICBtYXAuc2V0KGtleSwgbW9kZWwpO1xyXG4gICAgcmV0dXJuIG1vZGVsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTGF6aWx5IGluaXRpYWxpemVzIGEgbGlzdCBvZiBtb2RlbHMgZnJvbSBhIHNvdXJjZSBsaXN0LlxyXG4gICAqIEl0IGNyZWF0ZXMgYSBuZXcgbW9kZWwgZm9yIGVhY2ggaXRlbSBpbiB0aGUgc291cmNlIGxpc3QgYW5kIGFkZHMgaXQgdG8gdGhlIGdpdmVuIG1hcC5cclxuICAgKiBJdCBhbHNvIHNldHMgdGhlIGxpc3Qgb2YgbW9kZWxzIHRvIHRoZSBnaXZlbiBzZXR0ZXIuXHJcbiAgICogQHBhcmFtIGxpc3RSZWYgVGhlIHJlZmVyZW5jZSB0byB0aGUgbGlzdCBvZiBtb2RlbHMuXHJcbiAgICogQHBhcmFtIHNldHRlciBUaGUgc2V0dGVyIHRvIHNldCB0aGUgbGlzdCBvZiBtb2RlbHMuXHJcbiAgICogQHBhcmFtIHNvdXJjZUxpc3QgVGhlIHNvdXJjZSBsaXN0IG9mIGl0ZW1zLlxyXG4gICAqIEBwYXJhbSBtYXAgVGhlIG1hcCB0byBzdG9yZSB0aGUgbW9kZWxzLlxyXG4gICAqIEBwYXJhbSBnZXRLZXlzIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgZm9yIHRoZSBnaXZlbiBpdGVtLlxyXG4gICAqIEBwYXJhbSBtb2RlbEZhY3RvcnkgVGhlIGZhY3RvcnkgdG8gY3JlYXRlIGEgbmV3IG1vZGVsIGZvciB0aGUgZ2l2ZW4gaXRlbS5cclxuICAgKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBtb2RlbHMuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsYXp5SW5pdExpc3Q8VCwgTT4oXHJcbiAgICBsaXN0UmVmOiBNW10gfCBudWxsLFxyXG4gICAgc2V0dGVyOiAobGlzdDogTVtdKSA9PiB2b2lkLFxyXG4gICAgc291cmNlTGlzdDogVFtdLFxyXG4gICAgbWFwOiBNYXA8c3RyaW5nLCBNIHwgbnVsbD4sXHJcbiAgICBnZXRLZXlzOiAoaXRlbTogVCkgPT4gc3RyaW5nW10sXHJcbiAgICBtb2RlbEZhY3Rvcnk6IChpdGVtOiBUKSA9PiBNXHJcbiAgKTogTVtdIHtcclxuICAgIC8vIElmIHRoZSBsaXN0IGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQsIHJldHVybiBpdC5cclxuICAgIGlmIChsaXN0UmVmKSByZXR1cm4gbGlzdFJlZjtcclxuXHJcbiAgICAvLyBDcmVhdGUgYSBuZXcgbW9kZWwgZm9yIGVhY2ggaXRlbSBpbiB0aGUgc291cmNlIGxpc3QgYW5kIGFkZCBpdCB0byB0aGUgbWFwLlxyXG4gICAgY29uc3QgbW9kZWxzID0gc291cmNlTGlzdC5tYXAoKGl0ZW06IFQpID0+IHtcclxuICAgICAgY29uc3QgbW9kZWwgPSBtb2RlbEZhY3RvcnkoaXRlbSk7XHJcbiAgICAgIGdldEtleXMoaXRlbSkuZm9yRWFjaChrZXkgPT4gbWFwLnNldChrZXksIG1vZGVsKSk7XHJcbiAgICAgIHJldHVybiBtb2RlbDtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFNldCB0aGUgbGlzdCBvZiBtb2RlbHMgdG8gdGhlIGdpdmVuIHNldHRlci5cclxuICAgIHNldHRlcihtb2RlbHMpO1xyXG5cclxuICAgIC8vIFJldHVybiB0aGUgbGlzdCBvZiBtb2RlbHMuXHJcbiAgICByZXR1cm4gbW9kZWxzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmluZHMgYW4gYXBwIG9iamVjdCBpbiB0aGUgbWFwIGJ5IGl0cyBuYW1lIG9yIGlkLlxyXG4gICAqIElmIHRoZSBhcHAgb2JqZWN0IGlzIG5vdCBmb3VuZCwgaXQgY3JlYXRlcyBhIG5ldyBvbmUgYW5kIGFkZHMgaXQgdG8gdGhlIG1hcC5cclxuICAgKiBAcGFyYW0gbmFtZU9ySWQgVGhlIG5hbWUgb3IgaWQgb2YgdGhlIGFwcCBvYmplY3QgdG8gZmluZC5cclxuICAgKiBAcmV0dXJucyBUaGUgYXBwIG9iamVjdCBpZiBmb3VuZCwgb3IgbnVsbCBpZiBub3QgZm91bmQuXHJcbiAgICovXHJcbiAgZ2V0QXBwT2JqZWN0QnlJZE9yTmFtZShuYW1lT3JJZDogc3RyaW5nKTogQXBwT2JqZWN0TW9kZWwgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmdldEZyb21NYXBPckNyZWF0ZShcclxuICAgICAgdGhpcy5hcHBPYmplY3RNYXAsXHJcbiAgICAgIG5hbWVPcklkLFxyXG4gICAgICBDb21tb24udGFiSnNvbi5BcHBPYmplY3RzLFxyXG4gICAgICBvYmogPT4gb2JqLk9iamVjdE5hbWUgPT09IG5hbWVPcklkIHx8IG9iai5JRD8udG9Mb3dlckNhc2UoKSA9PT0gbmFtZU9ySWQ/LnRvTG93ZXJDYXNlKCksXHJcbiAgICAgIG9iaiA9PiBuZXcgQXBwT2JqZWN0TW9kZWwob2JqLCB0aGlzKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIGFwcCBvYmplY3RzIGluIHRoZSBtZXRhZGF0YS5cclxuICAgKiBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgaXQgaXMgYXBwbGllZCB0byBlYWNoIGFwcCBvYmplY3QuXHJcbiAgICogQHBhcmFtIGZpbHRlckZuIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGFwcCBvYmplY3RzLlxyXG4gICAqIEByZXR1cm5zIFRoZSBsaXN0IG9mIGFwcCBvYmplY3RzLlxyXG4gICAqL1xyXG4gIGdldEFsbEFwcE9iamVjdHMoZmlsdGVyRm4/OiAob2JqOiBBcHBPYmplY3RNb2RlbCkgPT4gYm9vbGVhbiwgaW5jbHVkZVN5c3RlbURhdGEgPSBmYWxzZSk6IEFwcE9iamVjdE1vZGVsW10ge1xyXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgbGlzdCBvZiBhcHAgb2JqZWN0cyBsYXppbHkuXHJcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5sYXp5SW5pdExpc3QoXHJcbiAgICAgIHRoaXMuYWxsQXBwT2JqZWN0cyxcclxuICAgICAgdmFsID0+ICh0aGlzLmFsbEFwcE9iamVjdHMgPSB2YWwpLFxyXG4gICAgICBDb21tb24udGFiSnNvbi5BcHBPYmplY3RzLFxyXG4gICAgICB0aGlzLmFwcE9iamVjdE1hcCxcclxuICAgICAgKG9iajogYW55KSA9PiBbb2JqLklEPy50b0xvd2VyQ2FzZSgpLCBvYmouT2JqZWN0TmFtZV0sXHJcbiAgICAgIG9iaiA9PiBuZXcgQXBwT2JqZWN0TW9kZWwob2JqLCB0aGlzKVxyXG4gICAgKTtcclxuXHJcbiAgICBsZXQgZmlsdGVyZWRMaXN0OiBBcHBPYmplY3RNb2RlbFtdID0gbGlzdDtcclxuICAgIGlmICghaW5jbHVkZVN5c3RlbURhdGEpIHtcclxuICAgICAgY29uc3QgY3VycmVudEFwcElkID0gdGhpcy5nZXRDdXJyZW50QXBwSWQoKT8udG9Mb3dlckNhc2UoKTtcclxuICAgICAgZmlsdGVyZWRMaXN0ID0gbGlzdC5maWx0ZXIob2JqID0+IFxyXG4gICAgICAgICFvYmouQXBwSWQgfHwgICAgICAgICAgICAgICAgICAgIC8vIEdsb2JhbCBkYXRhIChhcHAgPSBudWxsKVxyXG4gICAgICAgIG9iai5BcHBJZCA9PT0gY3VycmVudEFwcElkICAgICAgIC8vIEN1cnJlbnQgYXBwIGRhdGFcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgYXBwbHkgaXQgdG8gdGhlIGxpc3Qgb2YgYXBwIG9iamVjdHMuXHJcbiAgICByZXR1cm4gZmlsdGVyRm4gPyBmaWx0ZXJlZExpc3QuZmlsdGVyKGZpbHRlckZuKSA6IGZpbHRlcmVkTGlzdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIGZpZWxkcyBpbiB0aGUgbWV0YWRhdGEuXHJcbiAgICogSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGl0IGlzIGFwcGxpZWQgdG8gZWFjaCBmaWVsZC5cclxuICAgKiBAcGFyYW0gZmlsdGVyRm4gVGhlIGZpbHRlciBmdW5jdGlvbiB0byBhcHBseSB0byB0aGUgZmllbGRzLlxyXG4gICAqIEByZXR1cm5zIFRoZSBsaXN0IG9mIGZpZWxkcy5cclxuICAgKi9cclxuICBnZXRBbGxGaWVsZHMoZmlsdGVyRm4/OiAoZmllbGQ6IEFwcEZpZWxkTW9kZWwpID0+IGJvb2xlYW4sIGluY2x1ZGVTeXN0ZW1EYXRhID0gZmFsc2UpOiBBcHBGaWVsZE1vZGVsW10ge1xyXG4gICAgLy8gR2V0IGEgbGlzdCBvZiBhbGwgZmllbGRzIGZyb20gYWxsIGFwcCBvYmplY3RzLlxyXG4gICAgY29uc3QgYWxsRmllbGRzID0gdGhpcy5nZXRBbGxBcHBPYmplY3RzKHVuZGVmaW5lZCwgaW5jbHVkZVN5c3RlbURhdGEpLmZsYXRNYXAob2JqID0+IG9iai5maWVsZHMoKSk7XHJcblxyXG4gICAgLy8gSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGFwcGx5IGl0IHRvIHRoZSBsaXN0IG9mIGZpZWxkcy5cclxuICAgIHJldHVybiBmaWx0ZXJGbiA/IGFsbEZpZWxkcy5maWx0ZXIoZmlsdGVyRm4pIDogYWxsRmllbGRzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmluZHMgYSBmaWVsZCBieSBpdHMgSUQgYWNyb3NzIGFsbCBhcHAgb2JqZWN0c1xyXG4gICAqIEBwYXJhbSBmaWVsZElkIFRoZSBJRCBvZiB0aGUgZmllbGQgdG8gZmluZFxyXG4gICAqIEByZXR1cm5zIFRoZSBmaWVsZCBpZiBmb3VuZCwgb3IgbnVsbCBpZiBub3QgZm91bmRcclxuICAgKi9cclxuICBnZXRGaWVsZEJ5SWRPck5hbWUobmFtZU9ySWQ6IHN0cmluZyk6IEFwcEZpZWxkTW9kZWwgfCBudWxsIHtcclxuICAgIGlmICghbmFtZU9ySWQpIHJldHVybiBudWxsO1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsRmllbGRzKGZpZWxkID0+IFxyXG4gICAgICBmaWVsZC5JRD8udG9Mb3dlckNhc2UoKSA9PT0gbmFtZU9ySWQ/LnRvTG93ZXJDYXNlKCkgfHwgXHJcbiAgICAgIGZpZWxkLkZpZWxkTmFtZSA9PT0gbmFtZU9ySWQsXHJcbiAgICAgIHRydWVcclxuICAgIClbMF0gfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIGRhdGEgc291cmNlIHF1ZXJpZXMgaW4gdGhlIG1ldGFkYXRhLlxyXG4gICAqIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBpdCBpcyBhcHBsaWVkIHRvIGVhY2ggZGF0YSBzb3VyY2UgcXVlcnkuXHJcbiAgICogQHBhcmFtIGZpbHRlckZuIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGRhdGEgc291cmNlIHF1ZXJpZXMuXHJcbiAgICogQHJldHVybnMgVGhlIGxpc3Qgb2YgZGF0YSBzb3VyY2UgcXVlcmllcy5cclxuICAgKi9cclxuICBnZXRBbGxEYXRhU291cmNlUXVlcmllcyhmaWx0ZXJGbj86IChkc3E6IERhdGFTb3VyY2VRdWVyeU1vZGVsKSA9PiBib29sZWFuLGluY2x1ZGVTeXN0ZW1EYXRhID0gZmFsc2UpOiBEYXRhU291cmNlUXVlcnlNb2RlbFtdIHtcclxuICAgIC8vIEdldCBhIGxpc3Qgb2YgYWxsIGRhdGEgc291cmNlIHF1ZXJpZXMgZnJvbSBhbGwgYXBwIG9iamVjdHMuXHJcbiAgICBjb25zdCBhbGxEU1FzID0gdGhpcy5nZXRBbGxBcHBPYmplY3RzKHVuZGVmaW5lZCwgaW5jbHVkZVN5c3RlbURhdGEpLmZsYXRNYXAob2JqID0+IG9iai5kYXRhU291cmNlUXVlcmllcygpKTtcclxuXHJcbiAgICAvLyBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgYXBwbHkgaXQgdG8gdGhlIGxpc3Qgb2YgZGF0YSBzb3VyY2UgcXVlcmllcy5cclxuICAgIHJldHVybiBmaWx0ZXJGbiA/IGFsbERTUXMuZmlsdGVyKGZpbHRlckZuKSA6IGFsbERTUXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBkYXRhIHNvdXJjZSBxdWVyeSBieSBpdHMgSUQsIFF1ZXJ5TmFtZSwgb3IgRGlzcGxheU5hbWUuXHJcbiAgICogU2VhcmNoZXMgdGhyb3VnaCBhbGwgZGF0YSBzb3VyY2UgcXVlcmllcyBhbmQgcmV0dXJucyB0aGUgZmlyc3QgbWF0Y2guXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVPcklkIC0gVGhlIElELCBRdWVyeU5hbWUsIG9yIERpc3BsYXlOYW1lIG9mIHRoZSBkYXRhIHNvdXJjZSBxdWVyeSB0byByZXRyaWV2ZS5cclxuICAgKiBAcmV0dXJucyB7RGF0YVNvdXJjZVF1ZXJ5TW9kZWwgfCBudWxsfSAtIFRoZSBkYXRhIHNvdXJjZSBxdWVyeSBtb2RlbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIG51bGwuXHJcbiAgICovXHJcbiAgZ2V0RGF0YVNvdXJjZVF1ZXJ5QnlJZE9yTmFtZShuYW1lT3JJZDogc3RyaW5nKTogRGF0YVNvdXJjZVF1ZXJ5TW9kZWwgfCBudWxsIHtcclxuICAgIC8vIFNlYXJjaCBmb3IgdGhlIGRhdGEgc291cmNlIHF1ZXJ5IGJ5IElELCBRdWVyeU5hbWUsIG9yIERpc3BsYXlOYW1lXHJcbiAgICByZXR1cm4gdGhpcy5nZXRBbGxEYXRhU291cmNlUXVlcmllcyh1bmRlZmluZWQsdHJ1ZSkuZmluZChcclxuICAgICAgZHNxID0+IGRzcT8uSUQ/LnRvTG93ZXJDYXNlKCkgPT09IG5hbWVPcklkPy50b0xvd2VyQ2FzZSgpIHx8IGRzcT8uUXVlcnlOYW1lID09PSBuYW1lT3JJZCB8fCBkc3E/LkRpc3BsYXlOYW1lID09PSBuYW1lT3JJZFxyXG4gICAgKSB8fCBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGFuIGFwcCBzY3JlZW4gYnkgaXRzIElELCBOYW1lLCBvciBEaXNwbGF5TmFtZS5cclxuICAgKiBTZWFyY2hlcyB0aHJvdWdoIGFsbCBhcHAgc2NyZWVucyBhbmQgcmV0dXJucyB0aGUgZmlyc3QgbWF0Y2guXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVPcklkIC0gVGhlIElELCBOYW1lLCBvciBEaXNwbGF5TmFtZSBvZiB0aGUgYXBwIHNjcmVlbiB0byByZXRyaWV2ZS5cclxuICAgKiBAcmV0dXJucyB7QXBwU2NyZWVuTW9kZWwgfCBudWxsfSAtIFRoZSBhcHAgc2NyZWVuIG1vZGVsIGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbC5cclxuICAgKi9cclxuICBnZXRBcHBTY3JlZW5CeUlkT3JOYW1lKG5hbWVPcklkOiBzdHJpbmcpOiBBcHBTY3JlZW5Nb2RlbCB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0RnJvbU1hcE9yQ3JlYXRlKFxyXG4gICAgICB0aGlzLmFwcFNjcmVlbk1hcCxcclxuICAgICAgbmFtZU9ySWQsXHJcbiAgICAgIENvbW1vbi50YWJKc29uLkFwcFNjcmVlbnMsXHJcbiAgICAgIHNjcmVlbiA9PiBzY3JlZW4/LklEPy50b0xvd2VyQ2FzZSgpID09PSBuYW1lT3JJZD8udG9Mb3dlckNhc2UoKSB8fCBzY3JlZW4/Lk5hbWUgPT09IG5hbWVPcklkLFxyXG4gICAgICBzY3JlZW4gPT4gbmV3IEFwcFNjcmVlbk1vZGVsKHNjcmVlbilcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIGFsbCBhcHAgc2NyZWVucy5cclxuICAgKiBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgaXQgaXMgYXBwbGllZCB0byB0aGUgbGlzdCBvZiBhcHAgc2NyZWVucy5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBmaWx0ZXJGbiAtIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGFwcCBzY3JlZW5zLlxyXG4gICAqIEByZXR1cm5zIHtBcHBTY3JlZW5Nb2RlbFtdfSAtIFRoZSBsaXN0IG9mIGFwcCBzY3JlZW5zLlxyXG4gICAqL1xyXG4gIGdldEFsbEFwcFNjcmVlbnMoZmlsdGVyRm4/OiAoc2NyZWVuOiBBcHBTY3JlZW5Nb2RlbCkgPT4gYm9vbGVhbik6IEFwcFNjcmVlbk1vZGVsW10ge1xyXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgbGlzdCBvZiBhcHAgc2NyZWVucyBsYXppbHkuXHJcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5sYXp5SW5pdExpc3QoXHJcbiAgICAgIHRoaXMuYWxsQXBwU2NyZWVucyxcclxuICAgICAgdmFsID0+ICh0aGlzLmFsbEFwcFNjcmVlbnMgPSB2YWwpLFxyXG4gICAgICBDb21tb24udGFiSnNvbi5BcHBTY3JlZW5zLFxyXG4gICAgICB0aGlzLmFwcFNjcmVlbk1hcCxcclxuICAgICAgKHM6IGFueSkgPT4gW3M/LklEPy50b0xvd2VyQ2FzZSgpLCBzPy5OYW1lXSxcclxuICAgICAgcyA9PiBuZXcgQXBwU2NyZWVuTW9kZWwocylcclxuICAgICk7XHJcblxyXG4gICAgLy8gSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGFwcGx5IGl0IHRvIHRoZSBsaXN0IG9mIGFwcCBzY3JlZW5zLlxyXG4gICAgcmV0dXJuIGZpbHRlckZuID8gbGlzdC5maWx0ZXIoZmlsdGVyRm4pIDogbGlzdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhbiBvcmdhbml6YXRpb24gaW5mbyBieSBpdHMgSUQgb3IgVGVuYW50Q29kZS5cclxuICAgKiBTZWFyY2hlcyB0aHJvdWdoIGFsbCBvcmdhbml6YXRpb24gaW5mbyBhbmQgcmV0dXJucyB0aGUgZmlyc3QgbWF0Y2guXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVPclRlbmFudENvZGUgLSBUaGUgSUQgb3IgVGVuYW50Q29kZSBvZiB0aGUgb3JnYW5pemF0aW9uIGluZm8gdG8gcmV0cmlldmUuXHJcbiAgICogQHJldHVybnMge09yZ0luZm9Nb2RlbCB8IG51bGx9IC0gVGhlIG9yZ2FuaXphdGlvbiBpbmZvIG1vZGVsIGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbC5cclxuICAgKi9cclxuICBnZXRPcmdJbmZvQnlJZE9yVGVuYW50Q29kZShuYW1lT3JUZW5hbnRDb2RlOiBzdHJpbmcpOiBPcmdJbmZvTW9kZWwgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmdldEZyb21NYXBPckNyZWF0ZShcclxuICAgICAgdGhpcy5vcmdJbmZvTWFwLFxyXG4gICAgICBuYW1lT3JUZW5hbnRDb2RlLFxyXG4gICAgICBDb21tb24udGFiSnNvbi5PcmdJbmZvcyxcclxuICAgICAgLy8gU2VhcmNoIGZvciB0aGUgb3JnYW5pemF0aW9uIGluZm8gYnkgSUQgb3IgVGVuYW50Q29kZVxyXG4gICAgICBvcmcgPT4gb3JnLklEPy50b0xvd2VyQ2FzZSgpID09PSBuYW1lT3JUZW5hbnRDb2RlPy50b0xvd2VyQ2FzZSgpIHx8IG9yZy5UZW5hbnRDb2RlID09PSBuYW1lT3JUZW5hbnRDb2RlLFxyXG4gICAgICAvLyBDcmVhdGUgYSBuZXcgT3JnSW5mb01vZGVsIGlmIHRoZSBvcmdhbml6YXRpb24gaW5mbyBpcyBmb3VuZFxyXG4gICAgICBvcmcgPT4gbmV3IE9yZ0luZm9Nb2RlbChvcmcpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBhbGwgb3JnYW5pemF0aW9uIGluZm8uXHJcbiAgICogSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGl0IGlzIGFwcGxpZWQgdG8gdGhlIGxpc3Qgb2Ygb3JnYW5pemF0aW9uIGluZm8uXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZmlsdGVyRm4gLSBUaGUgZmlsdGVyIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBvcmdhbml6YXRpb24gaW5mby5cclxuICAgKiBAcmV0dXJucyB7T3JnSW5mb01vZGVsW119IC0gVGhlIGxpc3Qgb2Ygb3JnYW5pemF0aW9uIGluZm8uXHJcbiAgICovXHJcbiAgZ2V0QWxsT3JnSW5mb3MoZmlsdGVyRm4/OiAob3JnOiBPcmdJbmZvTW9kZWwpID0+IGJvb2xlYW4pOiBPcmdJbmZvTW9kZWxbXSB7XHJcbiAgICAvLyBJbml0aWFsaXplIHRoZSBsaXN0IG9mIG9yZ2FuaXphdGlvbiBpbmZvIGxhemlseS5cclxuICAgIGNvbnN0IGxpc3QgPSB0aGlzLmxhenlJbml0TGlzdChcclxuICAgICAgdGhpcy5hbGxPcmdJbmZvcyxcclxuICAgICAgdmFsID0+ICh0aGlzLmFsbE9yZ0luZm9zID0gdmFsKSxcclxuICAgICAgQ29tbW9uLnRhYkpzb24uT3JnSW5mb3MsXHJcbiAgICAgIHRoaXMub3JnSW5mb01hcCxcclxuICAgICAgKG9yZzogYW55KSA9PiBbb3JnPy5JRD8udG9Mb3dlckNhc2UoKSwgb3JnPy5UZW5hbnRDb2RlXSxcclxuICAgICAgb3JnID0+IG5ldyBPcmdJbmZvTW9kZWwob3JnKVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgYXBwbHkgaXQgdG8gdGhlIGxpc3Qgb2Ygb3JnYW5pemF0aW9uIGluZm8uXHJcbiAgICByZXR1cm4gZmlsdGVyRm4gPyBsaXN0LmZpbHRlcihmaWx0ZXJGbikgOiBsaXN0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGVyZm9ybXMgYSBnbG9iYWwgc2VhcmNoIGFjcm9zcyBhbGwgbWV0YWRhdGEgZm9yIGEgZ2l2ZW4gc2VhcmNoIHRlcm0uXHJcbiAgICogWW91IGNhbiBuYXJyb3cgdGhlIHNlYXJjaCBieSBwcm92aWRpbmcgYSBsaXN0IG9mIGVudGl0eSB0eXBlcyB0byBzZWFyY2ggd2l0aGluLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXJtIC0gVGhlIHNlYXJjaCB0ZXJtIHRvIHNlYXJjaCBmb3IuXHJcbiAgICogQHBhcmFtIHtNZXRhZGF0YUVudGl0eVR5cGVbXX0gZW50aXR5VHlwZXMgLSBUaGUgbGlzdCBvZiBlbnRpdHkgdHlwZXMgdG8gc2VhcmNoIHdpdGhpbi4gSWYgb21pdHRlZCwgYWxsIGVudGl0eSB0eXBlcyBhcmUgc2VhcmNoZWQuXHJcbiAgICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIGFueVtdPn0gLSBBIGRpY3Rpb25hcnkgd2l0aCByZXN1bHRzIGdyb3VwZWQgYnkgZW50aXR5IHR5cGUuXHJcbiAgICovXHJcbiAgc2VhcmNoTWV0YWRhdGEodGVybTogc3RyaW5nLCBlbnRpdHlUeXBlcz86IE1ldGFkYXRhRW50aXR5VHlwZVtdKTogUmVjb3JkPHN0cmluZywgYW55W10+IHtcclxuICAgIGNvbnN0IHNlYXJjaFRlcm0gPSB0ZXJtLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIGFueVtdPiA9IHt9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGVscGVyIGZ1bmN0aW9uIHRvIGRldGVybWluZSBpZiBhIGdpdmVuIGVudGl0eSB0eXBlIHNob3VsZCBiZSBzZWFyY2hlZC5cclxuICAgICAqIEBwYXJhbSB7TWV0YWRhdGFFbnRpdHlUeXBlfSB0eXBlIC0gVGhlIGVudGl0eSB0eXBlIHRvIGNoZWNrLlxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IC0gV2hldGhlciB0aGUgZW50aXR5IHR5cGUgc2hvdWxkIGJlIHNlYXJjaGVkLlxyXG4gICAgICovXHJcbiAgICBjb25zdCBzaG91bGRTZWFyY2ggPSAodHlwZTogTWV0YWRhdGFFbnRpdHlUeXBlKSA9PiAhZW50aXR5VHlwZXMgfHwgZW50aXR5VHlwZXMuaW5jbHVkZXModHlwZSk7XHJcblxyXG4gICAgaWYgKHNob3VsZFNlYXJjaChNZXRhZGF0YUVudGl0eVR5cGUuQVBQX09CSkVDVFMpKSB7XHJcbiAgICAgIC8vIFNlYXJjaCBmb3IgYXBwIG9iamVjdHMgYnkgSUQsIE9iamVjdE5hbWUsIERpc3BsYXlOYW1lLCBvciBTeXN0ZW1EQlRhYmxlTmFtZVxyXG4gICAgICByZXN1bHRbTWV0YWRhdGFFbnRpdHlUeXBlLkFQUF9PQkpFQ1RTXSA9IHRoaXMuZ2V0QWxsQXBwT2JqZWN0cyhvYmogPT5cclxuICAgICAgICBbb2JqPy5JRCwgb2JqPy5PYmplY3ROYW1lLCBvYmo/LkRpc3BsYXlOYW1lLCBvYmo/LlN5c3RlbURCVGFibGVOYW1lXVxyXG4gICAgICAgICAgLnNvbWUodmFsID0+IHZhbCA9PT0gc2VhcmNoVGVybSB8fCB2YWw/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSkpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNob3VsZFNlYXJjaChNZXRhZGF0YUVudGl0eVR5cGUuQVBQX0ZJRUxEUykpIHtcclxuICAgICAgLy8gU2VhcmNoIGZvciBhcHAgZmllbGRzIGJ5IHVzaW5nIHRoZSBzZWFyY2ggbWV0aG9kXHJcbiAgICAgIHJlc3VsdFtNZXRhZGF0YUVudGl0eVR5cGUuQVBQX0ZJRUxEU10gPSB0aGlzLmdldEFsbEZpZWxkcyhmaWVsZCA9PiBmaWVsZC5zZWFyY2goc2VhcmNoVGVybSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzaG91bGRTZWFyY2goTWV0YWRhdGFFbnRpdHlUeXBlLkRBVEFfU09VUkNFX1FVRVJJRVMpKSB7XHJcbiAgICAgIC8vIFNlYXJjaCBmb3IgZGF0YSBzb3VyY2UgcXVlcmllcyBieSB1c2luZyB0aGUgc2VhcmNoIG1ldGhvZFxyXG4gICAgICByZXN1bHRbTWV0YWRhdGFFbnRpdHlUeXBlLkRBVEFfU09VUkNFX1FVRVJJRVNdID0gdGhpcy5nZXRBbGxEYXRhU291cmNlUXVlcmllcyhkc3EgPT4gZHNxLnNlYXJjaChzZWFyY2hUZXJtKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNob3VsZFNlYXJjaChNZXRhZGF0YUVudGl0eVR5cGUuQVBQX1NDUkVFTlMpKSB7XHJcbiAgICAgIC8vIFNlYXJjaCBmb3IgYXBwIHNjcmVlbnMgYnkgdXNpbmcgdGhlIHNlYXJjaCBtZXRob2RcclxuICAgICAgcmVzdWx0W01ldGFkYXRhRW50aXR5VHlwZS5BUFBfU0NSRUVOU10gPSB0aGlzLmdldEFsbEFwcFNjcmVlbnMoc2NyZWVuID0+IHNjcmVlbi5zZWFyY2goc2VhcmNoVGVybSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYW4gYXBwIG1lbnUgYnkgaXRzIElEIG9yIG5hbWUuXHJcbiAgICogU2VhcmNoZXMgdGhyb3VnaCBhbGwgYXBwIG1lbnVzIGFuZCByZXR1cm5zIHRoZSBmaXJzdCBtYXRjaC5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZU9ySWQgLSBUaGUgSUQgb3IgbmFtZSBvZiB0aGUgYXBwIG1lbnUgdG8gcmV0cmlldmUuXHJcbiAgICogQHJldHVybnMge0FwcE1lbnVNb2RlbCB8IG51bGx9IC0gVGhlIGFwcCBtZW51IG1vZGVsIGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbC5cclxuICAgKi9cclxuICBnZXRBcHBNZW51QnlJZE9yTmFtZShuYW1lT3JJZDogc3RyaW5nKTogQXBwTWVudU1vZGVsIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRGcm9tTWFwT3JDcmVhdGUoXHJcbiAgICAgIHRoaXMuYXBwTWVudU1hcCxcclxuICAgICAgbmFtZU9ySWQsXHJcbiAgICAgIENvbW1vbi50YWJKc29uLk1lbnVzLFxyXG4gICAgICAvLyBTZWFyY2ggZm9yIHRoZSBhcHAgbWVudSBieSBJRCBvciBuYW1lXHJcbiAgICAgIG1lbnUgPT4gbWVudT8uSWQ/LnRvTG93ZXJDYXNlKCkgPT09IG5hbWVPcklkPy50b0xvd2VyQ2FzZSgpIHx8IG1lbnU/Lk1lbnVOYW1lID09PSBuYW1lT3JJZCxcclxuICAgICAgLy8gQ3JlYXRlIGEgbmV3IEFwcE1lbnVNb2RlbCBpZiB0aGUgYXBwIG1lbnUgaXMgZm91bmRcclxuICAgICAgbWVudSA9PiBuZXcgQXBwTWVudU1vZGVsKG1lbnUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBhbGwgYXBwIG1lbnVzLlxyXG4gICAqIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBpdCBpcyBhcHBsaWVkIHRvIHRoZSBsaXN0IG9mIGFwcCBtZW51cy5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBmaWx0ZXJGbiAtIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGFwcCBtZW51cy5cclxuICAgKiBAcmV0dXJucyB7QXBwTWVudU1vZGVsW119IC0gVGhlIGxpc3Qgb2YgYXBwIG1lbnVzLlxyXG4gICAqL1xyXG4gIGdldEFsbEFwcE1lbnVzKGZpbHRlckZuPzogKG1lbnU6IEFwcE1lbnVNb2RlbCkgPT4gYm9vbGVhbik6IEFwcE1lbnVNb2RlbFtdIHtcclxuICAgIC8vIEluaXRpYWxpemUgdGhlIGxpc3Qgb2YgYXBwIHNjcmVlbnMgbGF6aWx5LlxyXG4gICAgY29uc3QgbGlzdCA9IHRoaXMubGF6eUluaXRMaXN0KFxyXG4gICAgICB0aGlzLmFsbEFwcE1lbnVzLFxyXG4gICAgICB2YWwgPT4gKHRoaXMuYWxsQXBwTWVudXMgPSB2YWwpLFxyXG4gICAgICBDb21tb24udGFiSnNvbi5NZW51cyxcclxuICAgICAgdGhpcy5hcHBNZW51TWFwLFxyXG4gICAgICAobTogYW55KSA9PiBbbT8uSWQ/LnRvTG93ZXJDYXNlKCksIG0/Lk5hbWVdLFxyXG4gICAgICBzID0+IG5ldyBBcHBNZW51TW9kZWwocylcclxuICAgICk7XHJcblxyXG4gICAgLy8gSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGFwcGx5IGl0IHRvIHRoZSBsaXN0IG9mIGFwcCBzY3JlZW5zLlxyXG4gICAgcmV0dXJuIGZpbHRlckZuID8gbGlzdC5maWx0ZXIoZmlsdGVyRm4pIDogbGlzdDtcclxuICB9XHJcbn0iXX0=
|
|
280
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS1kYXRhLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vbWV0YS1kYXRhLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUcvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFHckUsTUFBTSxPQUFPLGNBQWM7SUFEM0I7UUFFVSxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBQ3hELGtCQUFhLEdBQTRCLElBQUksQ0FBQztRQUU5QyxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBQ3hELGtCQUFhLEdBQTRCLElBQUksQ0FBQztRQUU5QyxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQStCLENBQUM7UUFDcEQsZ0JBQVcsR0FBMEIsSUFBSSxDQUFDO1FBRTFDLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBK0IsQ0FBQztRQUNwRCxnQkFBVyxHQUEwQixJQUFJLENBQUM7UUFFakMs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LEVBQUUsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FDekIsQ0FBQztRQUVGLHNFQUFzRTtRQUN0RSxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pELENBQUM7K0VBeFdVLGNBQWM7dUVBQWQsY0FBYyxXQUFkLGNBQWMsbUJBREQsTUFBTTs7aUZBQ25CLGNBQWM7Y0FEMUIsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb21tb24gfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzL2NvbW1vblwiO1xuaW1wb3J0IHsgQXBwT2JqZWN0TW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2FwcC1vYmplY3QubW9kZWxcIjtcbmltcG9ydCB7IEFwcEZpZWxkTW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2FwcC1maWVsZC5tb2RlbFwiO1xuaW1wb3J0IHsgRGF0YVNvdXJjZVF1ZXJ5TW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2RhdGEtc291cmNlLXF1ZXJ5Lm1vZGVsXCI7XG5pbXBvcnQgeyBNZXRhZGF0YUVudGl0eVR5cGUgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9zY2hlbWEuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBBcHBTY3JlZW5Nb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvYXBwLXNjcmVlbi5tb2RlbFwiO1xuaW1wb3J0IHsgT3JnSW5mb01vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy9vcmdJbmZvLm1vZGVsXCI7XG5pbXBvcnQgeyBBcHBNZW51TW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2FwcC1tZW51Lm1vZGVsXCI7XG5pbXBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vYXV0aC9zZXNzaW9uLXN0b3JhZ2Uuc2VydmljZVwiO1xuaW1wb3J0IHsgU3RvcmFnZUNvbnN0YW50cyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHMvc3RvcmFnZS1jb25zdGFudHNcIjtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBNZXRhZGF0YUhlbHBlciB7XG4gIHByaXZhdGUgYXBwT2JqZWN0TWFwID0gbmV3IE1hcDxzdHJpbmcsIEFwcE9iamVjdE1vZGVsIHwgbnVsbD4oKTtcbiAgcHJpdmF0ZSBhbGxBcHBPYmplY3RzOiBBcHBPYmplY3RNb2RlbFtdIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBhcHBTY3JlZW5NYXAgPSBuZXcgTWFwPHN0cmluZywgQXBwU2NyZWVuTW9kZWwgfCBudWxsPigpO1xuICBwcml2YXRlIGFsbEFwcFNjcmVlbnM6IEFwcFNjcmVlbk1vZGVsW10gfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIG9yZ0luZm9NYXAgPSBuZXcgTWFwPHN0cmluZywgT3JnSW5mb01vZGVsIHwgbnVsbD4oKTtcbiAgcHJpdmF0ZSBhbGxPcmdJbmZvczogT3JnSW5mb01vZGVsW10gfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIGFwcE1lbnVNYXAgPSBuZXcgTWFwPHN0cmluZywgQXBwTWVudU1vZGVsIHwgbnVsbD4oKTtcbiAgcHJpdmF0ZSBhbGxBcHBNZW51czogQXBwTWVudU1vZGVsW10gfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlID0gaW5qZWN0KFNlc3Npb25TdG9yYWdlU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gZ2V0IGN1cnJlbnQgYXBwIElEIGZyb20gc2Vzc2lvblxuICAgKiBAcmV0dXJucyBDdXJyZW50IGFwcCBJRCBvciBudWxsIGlmIG5vdCBhdmFpbGFibGVcbiAgICovXG4gIHByaXZhdGUgZ2V0Q3VycmVudEFwcElkKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhcHBJbmZvID0gdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0U2Vzc2lvblN0b3JhZ2UoU3RvcmFnZUNvbnN0YW50cy5hcHBJbmZvKTtcbiAgICAgIGNvbnN0IHBhcnNlZEFwcEluZm8gPSBhcHBJbmZvID8gSlNPTi5wYXJzZShhcHBJbmZvKSA6IG51bGw7XG4gICAgICByZXR1cm4gcGFyc2VkQXBwSW5mbz8uSWQgfHwgbnVsbDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gZ2V0IGN1cnJlbnQgYXBwIElEIGZyb20gc2Vzc2lvbjonLCBlcnJvcik7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBrZXkgZnJvbSB0aGUgZ2l2ZW4gbWFwLlxuICAgKiBJZiB0aGUga2V5IGRvZXMgbm90IGV4aXN0IGluIHRoZSBtYXAsIGFuZCB0aGUgc291cmNlIGxpc3QgY29udGFpbnMgYW4gaXRlbSB0aGF0IG1hdGNoZXNcbiAgICogdGhlIGdpdmVuIGNvbmRpdGlvbiwgaXQgY3JlYXRlcyBhIG5ldyBtb2RlbCB1c2luZyB0aGUgZ2l2ZW4gbW9kZWwgZmFjdG9yeSBhbmQgYWRkcyBpdCB0byB0aGUgbWFwLlxuICAgKiBAcGFyYW0gbWFwIFRoZSBtYXAgdG8gc2VhcmNoIGluLlxuICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHNvdXJjZUxpc3QgVGhlIGxpc3Qgb2YgaXRlbXMgdG8gc2VhcmNoIGluLlxuICAgKiBAcGFyYW0gbWF0Y2hGbiBUaGUgY29uZGl0aW9uIHRvIG1hdGNoLlxuICAgKiBAcGFyYW0gbW9kZWxGYWN0b3J5IFRoZSBmYWN0b3J5IHRvIGNyZWF0ZSBhIG5ldyBtb2RlbCBpZiB0aGUga2V5IGRvZXMgbm90IGV4aXN0LlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBrZXksIG9yIG51bGwgaWYgbm8gbWF0Y2ggaXMgZm91bmQuXG4gICAqL1xuICBwcml2YXRlIGdldEZyb21NYXBPckNyZWF0ZTxUPihcbiAgICBtYXA6IE1hcDxzdHJpbmcsIFQgfCBudWxsPixcbiAgICBrZXk6IHN0cmluZyxcbiAgICBzb3VyY2VMaXN0OiBUW10sXG4gICAgbWF0Y2hGbjogKGl0ZW06IFQpID0+IGJvb2xlYW4sXG4gICAgbW9kZWxGYWN0b3J5OiAoaXRlbTogVCkgPT4gVFxuICApOiBUIHwgbnVsbCB7XG4gICAgaWYgKCFrZXkpIHJldHVybiBudWxsO1xuICAgIGlmIChtYXAuaGFzKGtleSkpIHJldHVybiBtYXAuZ2V0KGtleSkgfHwgbnVsbDtcblxuICAgIGNvbnN0IGl0ZW0gPSBzb3VyY2VMaXN0LmZpbmQobWF0Y2hGbik7XG4gICAgY29uc3QgbW9kZWwgPSBpdGVtID8gbW9kZWxGYWN0b3J5KGl0ZW0pIDogbnVsbDtcbiAgICBtYXAuc2V0KGtleSwgbW9kZWwpO1xuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBMYXppbHkgaW5pdGlhbGl6ZXMgYSBsaXN0IG9mIG1vZGVscyBmcm9tIGEgc291cmNlIGxpc3QuXG4gICAqIEl0IGNyZWF0ZXMgYSBuZXcgbW9kZWwgZm9yIGVhY2ggaXRlbSBpbiB0aGUgc291cmNlIGxpc3QgYW5kIGFkZHMgaXQgdG8gdGhlIGdpdmVuIG1hcC5cbiAgICogSXQgYWxzbyBzZXRzIHRoZSBsaXN0IG9mIG1vZGVscyB0byB0aGUgZ2l2ZW4gc2V0dGVyLlxuICAgKiBAcGFyYW0gbGlzdFJlZiBUaGUgcmVmZXJlbmNlIHRvIHRoZSBsaXN0IG9mIG1vZGVscy5cbiAgICogQHBhcmFtIHNldHRlciBUaGUgc2V0dGVyIHRvIHNldCB0aGUgbGlzdCBvZiBtb2RlbHMuXG4gICAqIEBwYXJhbSBzb3VyY2VMaXN0IFRoZSBzb3VyY2UgbGlzdCBvZiBpdGVtcy5cbiAgICogQHBhcmFtIG1hcCBUaGUgbWFwIHRvIHN0b3JlIHRoZSBtb2RlbHMuXG4gICAqIEBwYXJhbSBnZXRLZXlzIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgZm9yIHRoZSBnaXZlbiBpdGVtLlxuICAgKiBAcGFyYW0gbW9kZWxGYWN0b3J5IFRoZSBmYWN0b3J5IHRvIGNyZWF0ZSBhIG5ldyBtb2RlbCBmb3IgdGhlIGdpdmVuIGl0ZW0uXG4gICAqIEByZXR1cm5zIFRoZSBsaXN0IG9mIG1vZGVscy5cbiAgICovXG4gIHByaXZhdGUgbGF6eUluaXRMaXN0PFQsIE0+KFxuICAgIGxpc3RSZWY6IE1bXSB8IG51bGwsXG4gICAgc2V0dGVyOiAobGlzdDogTVtdKSA9PiB2b2lkLFxuICAgIHNvdXJjZUxpc3Q6IFRbXSxcbiAgICBtYXA6IE1hcDxzdHJpbmcsIE0gfCBudWxsPixcbiAgICBnZXRLZXlzOiAoaXRlbTogVCkgPT4gc3RyaW5nW10sXG4gICAgbW9kZWxGYWN0b3J5OiAoaXRlbTogVCkgPT4gTVxuICApOiBNW10ge1xuICAgIC8vIElmIHRoZSBsaXN0IGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQsIHJldHVybiBpdC5cbiAgICBpZiAobGlzdFJlZikgcmV0dXJuIGxpc3RSZWY7XG5cbiAgICAvLyBDcmVhdGUgYSBuZXcgbW9kZWwgZm9yIGVhY2ggaXRlbSBpbiB0aGUgc291cmNlIGxpc3QgYW5kIGFkZCBpdCB0byB0aGUgbWFwLlxuICAgIGNvbnN0IG1vZGVscyA9IHNvdXJjZUxpc3QubWFwKChpdGVtOiBUKSA9PiB7XG4gICAgICBjb25zdCBtb2RlbCA9IG1vZGVsRmFjdG9yeShpdGVtKTtcbiAgICAgIGdldEtleXMoaXRlbSkuZm9yRWFjaChrZXkgPT4gbWFwLnNldChrZXksIG1vZGVsKSk7XG4gICAgICByZXR1cm4gbW9kZWw7XG4gICAgfSk7XG5cbiAgICAvLyBTZXQgdGhlIGxpc3Qgb2YgbW9kZWxzIHRvIHRoZSBnaXZlbiBzZXR0ZXIuXG4gICAgc2V0dGVyKG1vZGVscyk7XG5cbiAgICAvLyBSZXR1cm4gdGhlIGxpc3Qgb2YgbW9kZWxzLlxuICAgIHJldHVybiBtb2RlbHM7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgYW4gYXBwIG9iamVjdCBpbiB0aGUgbWFwIGJ5IGl0cyBuYW1lIG9yIGlkLlxuICAgKiBJZiB0aGUgYXBwIG9iamVjdCBpcyBub3QgZm91bmQsIGl0IGNyZWF0ZXMgYSBuZXcgb25lIGFuZCBhZGRzIGl0IHRvIHRoZSBtYXAuXG4gICAqIEBwYXJhbSBuYW1lT3JJZCBUaGUgbmFtZSBvciBpZCBvZiB0aGUgYXBwIG9iamVjdCB0byBmaW5kLlxuICAgKiBAcmV0dXJucyBUaGUgYXBwIG9iamVjdCBpZiBmb3VuZCwgb3IgbnVsbCBpZiBub3QgZm91bmQuXG4gICAqL1xuICBnZXRBcHBPYmplY3RCeUlkT3JOYW1lKG5hbWVPcklkOiBzdHJpbmcpOiBBcHBPYmplY3RNb2RlbCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmdldEZyb21NYXBPckNyZWF0ZShcbiAgICAgIHRoaXMuYXBwT2JqZWN0TWFwLFxuICAgICAgbmFtZU9ySWQsXG4gICAgICBDb21tb24udGFiSnNvbi5BcHBPYmplY3RzLFxuICAgICAgb2JqID0+IG9iai5PYmplY3ROYW1lID09PSBuYW1lT3JJZCB8fCBvYmouSUQ/LnRvTG93ZXJDYXNlKCkgPT09IG5hbWVPcklkPy50b0xvd2VyQ2FzZSgpLFxuICAgICAgb2JqID0+IG5ldyBBcHBPYmplY3RNb2RlbChvYmosIHRoaXMpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBhcHAgb2JqZWN0cyBpbiB0aGUgbWV0YWRhdGEuXG4gICAqIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBpdCBpcyBhcHBsaWVkIHRvIGVhY2ggYXBwIG9iamVjdC5cbiAgICogQHBhcmFtIGZpbHRlckZuIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGFwcCBvYmplY3RzLlxuICAgKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBhcHAgb2JqZWN0cy5cbiAgICovXG4gIGdldEFsbEFwcE9iamVjdHMoZmlsdGVyRm4/OiAob2JqOiBBcHBPYmplY3RNb2RlbCkgPT4gYm9vbGVhbiwgaW5jbHVkZVN5c3RlbURhdGEgPSBmYWxzZSk6IEFwcE9iamVjdE1vZGVsW10ge1xuICAgIC8vIEluaXRpYWxpemUgdGhlIGxpc3Qgb2YgYXBwIG9iamVjdHMgbGF6aWx5LlxuICAgIGNvbnN0IGxpc3QgPSB0aGlzLmxhenlJbml0TGlzdChcbiAgICAgIHRoaXMuYWxsQXBwT2JqZWN0cyxcbiAgICAgIHZhbCA9PiAodGhpcy5hbGxBcHBPYmplY3RzID0gdmFsKSxcbiAgICAgIENvbW1vbi50YWJKc29uLkFwcE9iamVjdHMsXG4gICAgICB0aGlzLmFwcE9iamVjdE1hcCxcbiAgICAgIChvYmo6IGFueSkgPT4gW29iai5JRD8udG9Mb3dlckNhc2UoKSwgb2JqLk9iamVjdE5hbWVdLFxuICAgICAgb2JqID0+IG5ldyBBcHBPYmplY3RNb2RlbChvYmosIHRoaXMpXG4gICAgKTtcblxuICAgIGxldCBmaWx0ZXJlZExpc3Q6IEFwcE9iamVjdE1vZGVsW10gPSBsaXN0O1xuICAgIGlmICghaW5jbHVkZVN5c3RlbURhdGEpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRBcHBJZCA9IHRoaXMuZ2V0Q3VycmVudEFwcElkKCk/LnRvTG93ZXJDYXNlKCk7XG4gICAgICBmaWx0ZXJlZExpc3QgPSBsaXN0LmZpbHRlcihvYmogPT4gXG4gICAgICAgICFvYmouQXBwSWQgfHwgICAgICAgICAgICAgICAgICAgIC8vIEdsb2JhbCBkYXRhIChhcHAgPSBudWxsKVxuICAgICAgICBvYmouQXBwSWQgPT09IGN1cnJlbnRBcHBJZCAgICAgICAvLyBDdXJyZW50IGFwcCBkYXRhXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBhcHBseSBpdCB0byB0aGUgbGlzdCBvZiBhcHAgb2JqZWN0cy5cbiAgICByZXR1cm4gZmlsdGVyRm4gPyBmaWx0ZXJlZExpc3QuZmlsdGVyKGZpbHRlckZuKSA6IGZpbHRlcmVkTGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBmaWVsZHMgaW4gdGhlIG1ldGFkYXRhLlxuICAgKiBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgaXQgaXMgYXBwbGllZCB0byBlYWNoIGZpZWxkLlxuICAgKiBAcGFyYW0gZmlsdGVyRm4gVGhlIGZpbHRlciBmdW5jdGlvbiB0byBhcHBseSB0byB0aGUgZmllbGRzLlxuICAgKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBmaWVsZHMuXG4gICAqL1xuICBnZXRBbGxGaWVsZHMoZmlsdGVyRm4/OiAoZmllbGQ6IEFwcEZpZWxkTW9kZWwpID0+IGJvb2xlYW4sIGluY2x1ZGVTeXN0ZW1EYXRhID0gZmFsc2UpOiBBcHBGaWVsZE1vZGVsW10ge1xuICAgIC8vIEdldCBhIGxpc3Qgb2YgYWxsIGZpZWxkcyBmcm9tIGFsbCBhcHAgb2JqZWN0cy5cbiAgICBjb25zdCBhbGxGaWVsZHMgPSB0aGlzLmdldEFsbEFwcE9iamVjdHModW5kZWZpbmVkLCBpbmNsdWRlU3lzdGVtRGF0YSkuZmxhdE1hcChvYmogPT4gb2JqLmZpZWxkcygpKTtcblxuICAgIC8vIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBhcHBseSBpdCB0byB0aGUgbGlzdCBvZiBmaWVsZHMuXG4gICAgcmV0dXJuIGZpbHRlckZuID8gYWxsRmllbGRzLmZpbHRlcihmaWx0ZXJGbikgOiBhbGxGaWVsZHM7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgYSBmaWVsZCBieSBpdHMgSUQgYWNyb3NzIGFsbCBhcHAgb2JqZWN0c1xuICAgKiBAcGFyYW0gZmllbGRJZCBUaGUgSUQgb2YgdGhlIGZpZWxkIHRvIGZpbmRcbiAgICogQHJldHVybnMgVGhlIGZpZWxkIGlmIGZvdW5kLCBvciBudWxsIGlmIG5vdCBmb3VuZFxuICAgKi9cbiAgZ2V0RmllbGRCeUlkT3JOYW1lKG5hbWVPcklkOiBzdHJpbmcpOiBBcHBGaWVsZE1vZGVsIHwgbnVsbCB7XG4gICAgaWYgKCFuYW1lT3JJZCkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsRmllbGRzKGZpZWxkID0+IFxuICAgICAgZmllbGQuSUQ/LnRvTG93ZXJDYXNlKCkgPT09IG5hbWVPcklkPy50b0xvd2VyQ2FzZSgpIHx8IFxuICAgICAgZmllbGQuRmllbGROYW1lID09PSBuYW1lT3JJZCxcbiAgICAgIHRydWVcbiAgICApWzBdIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgZGF0YSBzb3VyY2UgcXVlcmllcyBpbiB0aGUgbWV0YWRhdGEuXG4gICAqIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBpdCBpcyBhcHBsaWVkIHRvIGVhY2ggZGF0YSBzb3VyY2UgcXVlcnkuXG4gICAqIEBwYXJhbSBmaWx0ZXJGbiBUaGUgZmlsdGVyIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBkYXRhIHNvdXJjZSBxdWVyaWVzLlxuICAgKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBkYXRhIHNvdXJjZSBxdWVyaWVzLlxuICAgKi9cbiAgZ2V0QWxsRGF0YVNvdXJjZVF1ZXJpZXMoZmlsdGVyRm4/OiAoZHNxOiBEYXRhU291cmNlUXVlcnlNb2RlbCkgPT4gYm9vbGVhbixpbmNsdWRlU3lzdGVtRGF0YSA9IGZhbHNlKTogRGF0YVNvdXJjZVF1ZXJ5TW9kZWxbXSB7XG4gICAgLy8gR2V0IGEgbGlzdCBvZiBhbGwgZGF0YSBzb3VyY2UgcXVlcmllcyBmcm9tIGFsbCBhcHAgb2JqZWN0cy5cbiAgICBjb25zdCBhbGxEU1FzID0gdGhpcy5nZXRBbGxBcHBPYmplY3RzKHVuZGVmaW5lZCwgaW5jbHVkZVN5c3RlbURhdGEpLmZsYXRNYXAob2JqID0+IG9iai5kYXRhU291cmNlUXVlcmllcygpKTtcblxuICAgIC8vIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBhcHBseSBpdCB0byB0aGUgbGlzdCBvZiBkYXRhIHNvdXJjZSBxdWVyaWVzLlxuICAgIHJldHVybiBmaWx0ZXJGbiA/IGFsbERTUXMuZmlsdGVyKGZpbHRlckZuKSA6IGFsbERTUXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGEgZGF0YSBzb3VyY2UgcXVlcnkgYnkgaXRzIElELCBRdWVyeU5hbWUsIG9yIERpc3BsYXlOYW1lLlxuICAgKiBTZWFyY2hlcyB0aHJvdWdoIGFsbCBkYXRhIHNvdXJjZSBxdWVyaWVzIGFuZCByZXR1cm5zIHRoZSBmaXJzdCBtYXRjaC5cbiAgICogXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lT3JJZCAtIFRoZSBJRCwgUXVlcnlOYW1lLCBvciBEaXNwbGF5TmFtZSBvZiB0aGUgZGF0YSBzb3VyY2UgcXVlcnkgdG8gcmV0cmlldmUuXG4gICAqIEByZXR1cm5zIHtEYXRhU291cmNlUXVlcnlNb2RlbCB8IG51bGx9IC0gVGhlIGRhdGEgc291cmNlIHF1ZXJ5IG1vZGVsIGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbC5cbiAgICovXG4gIGdldERhdGFTb3VyY2VRdWVyeUJ5SWRPck5hbWUobmFtZU9ySWQ6IHN0cmluZyk6IERhdGFTb3VyY2VRdWVyeU1vZGVsIHwgbnVsbCB7XG4gICAgLy8gU2VhcmNoIGZvciB0aGUgZGF0YSBzb3VyY2UgcXVlcnkgYnkgSUQsIFF1ZXJ5TmFtZSwgb3IgRGlzcGxheU5hbWVcbiAgICByZXR1cm4gdGhpcy5nZXRBbGxEYXRhU291cmNlUXVlcmllcyh1bmRlZmluZWQsdHJ1ZSkuZmluZChcbiAgICAgIGRzcSA9PiBkc3E/LklEPy50b0xvd2VyQ2FzZSgpID09PSBuYW1lT3JJZD8udG9Mb3dlckNhc2UoKSB8fCBkc3E/LlF1ZXJ5TmFtZSA9PT0gbmFtZU9ySWQgfHwgZHNxPy5EaXNwbGF5TmFtZSA9PT0gbmFtZU9ySWRcbiAgICApIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGFuIGFwcCBzY3JlZW4gYnkgaXRzIElELCBOYW1lLCBvciBEaXNwbGF5TmFtZS5cbiAgICogU2VhcmNoZXMgdGhyb3VnaCBhbGwgYXBwIHNjcmVlbnMgYW5kIHJldHVybnMgdGhlIGZpcnN0IG1hdGNoLlxuICAgKiBcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVPcklkIC0gVGhlIElELCBOYW1lLCBvciBEaXNwbGF5TmFtZSBvZiB0aGUgYXBwIHNjcmVlbiB0byByZXRyaWV2ZS5cbiAgICogQHJldHVybnMge0FwcFNjcmVlbk1vZGVsIHwgbnVsbH0gLSBUaGUgYXBwIHNjcmVlbiBtb2RlbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIG51bGwuXG4gICAqL1xuICBnZXRBcHBTY3JlZW5CeUlkT3JOYW1lKG5hbWVPcklkOiBzdHJpbmcpOiBBcHBTY3JlZW5Nb2RlbCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmdldEZyb21NYXBPckNyZWF0ZShcbiAgICAgIHRoaXMuYXBwU2NyZWVuTWFwLFxuICAgICAgbmFtZU9ySWQsXG4gICAgICBDb21tb24udGFiSnNvbi5BcHBTY3JlZW5zLFxuICAgICAgc2NyZWVuID0+IHNjcmVlbj8uSUQ/LnRvTG93ZXJDYXNlKCkgPT09IG5hbWVPcklkPy50b0xvd2VyQ2FzZSgpIHx8IHNjcmVlbj8uTmFtZSA9PT0gbmFtZU9ySWQsXG4gICAgICBzY3JlZW4gPT4gbmV3IEFwcFNjcmVlbk1vZGVsKHNjcmVlbilcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhIGxpc3Qgb2YgYWxsIGFwcCBzY3JlZW5zLlxuICAgKiBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgaXQgaXMgYXBwbGllZCB0byB0aGUgbGlzdCBvZiBhcHAgc2NyZWVucy5cbiAgICogXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZpbHRlckZuIC0gVGhlIGZpbHRlciBmdW5jdGlvbiB0byBhcHBseSB0byB0aGUgYXBwIHNjcmVlbnMuXG4gICAqIEByZXR1cm5zIHtBcHBTY3JlZW5Nb2RlbFtdfSAtIFRoZSBsaXN0IG9mIGFwcCBzY3JlZW5zLlxuICAgKi9cbiAgZ2V0QWxsQXBwU2NyZWVucyhmaWx0ZXJGbj86IChzY3JlZW46IEFwcFNjcmVlbk1vZGVsKSA9PiBib29sZWFuKTogQXBwU2NyZWVuTW9kZWxbXSB7XG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgbGlzdCBvZiBhcHAgc2NyZWVucyBsYXppbHkuXG4gICAgY29uc3QgbGlzdCA9IHRoaXMubGF6eUluaXRMaXN0KFxuICAgICAgdGhpcy5hbGxBcHBTY3JlZW5zLFxuICAgICAgdmFsID0+ICh0aGlzLmFsbEFwcFNjcmVlbnMgPSB2YWwpLFxuICAgICAgQ29tbW9uLnRhYkpzb24uQXBwU2NyZWVucyxcbiAgICAgIHRoaXMuYXBwU2NyZWVuTWFwLFxuICAgICAgKHM6IGFueSkgPT4gW3M/LklEPy50b0xvd2VyQ2FzZSgpLCBzPy5OYW1lXSxcbiAgICAgIHMgPT4gbmV3IEFwcFNjcmVlbk1vZGVsKHMpXG4gICAgKTtcblxuICAgIC8vIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBhcHBseSBpdCB0byB0aGUgbGlzdCBvZiBhcHAgc2NyZWVucy5cbiAgICByZXR1cm4gZmlsdGVyRm4gPyBsaXN0LmZpbHRlcihmaWx0ZXJGbikgOiBsaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhbiBvcmdhbml6YXRpb24gaW5mbyBieSBpdHMgSUQgb3IgVGVuYW50Q29kZS5cbiAgICogU2VhcmNoZXMgdGhyb3VnaCBhbGwgb3JnYW5pemF0aW9uIGluZm8gYW5kIHJldHVybnMgdGhlIGZpcnN0IG1hdGNoLlxuICAgKiBcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVPclRlbmFudENvZGUgLSBUaGUgSUQgb3IgVGVuYW50Q29kZSBvZiB0aGUgb3JnYW5pemF0aW9uIGluZm8gdG8gcmV0cmlldmUuXG4gICAqIEByZXR1cm5zIHtPcmdJbmZvTW9kZWwgfCBudWxsfSAtIFRoZSBvcmdhbml6YXRpb24gaW5mbyBtb2RlbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIG51bGwuXG4gICAqL1xuICBnZXRPcmdJbmZvQnlJZE9yVGVuYW50Q29kZShuYW1lT3JUZW5hbnRDb2RlOiBzdHJpbmcpOiBPcmdJbmZvTW9kZWwgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGcm9tTWFwT3JDcmVhdGUoXG4gICAgICB0aGlzLm9yZ0luZm9NYXAsXG4gICAgICBuYW1lT3JUZW5hbnRDb2RlLFxuICAgICAgQ29tbW9uLnRhYkpzb24uT3JnSW5mb3MsXG4gICAgICAvLyBTZWFyY2ggZm9yIHRoZSBvcmdhbml6YXRpb24gaW5mbyBieSBJRCBvciBUZW5hbnRDb2RlXG4gICAgICBvcmcgPT4gb3JnLklEPy50b0xvd2VyQ2FzZSgpID09PSBuYW1lT3JUZW5hbnRDb2RlPy50b0xvd2VyQ2FzZSgpIHx8IG9yZy5UZW5hbnRDb2RlID09PSBuYW1lT3JUZW5hbnRDb2RlLFxuICAgICAgLy8gQ3JlYXRlIGEgbmV3IE9yZ0luZm9Nb2RlbCBpZiB0aGUgb3JnYW5pemF0aW9uIGluZm8gaXMgZm91bmRcbiAgICAgIG9yZyA9PiBuZXcgT3JnSW5mb01vZGVsKG9yZylcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhIGxpc3Qgb2YgYWxsIG9yZ2FuaXphdGlvbiBpbmZvLlxuICAgKiBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgaXQgaXMgYXBwbGllZCB0byB0aGUgbGlzdCBvZiBvcmdhbml6YXRpb24gaW5mby5cbiAgICogXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZpbHRlckZuIC0gVGhlIGZpbHRlciBmdW5jdGlvbiB0byBhcHBseSB0byB0aGUgb3JnYW5pemF0aW9uIGluZm8uXG4gICAqIEByZXR1cm5zIHtPcmdJbmZvTW9kZWxbXX0gLSBUaGUgbGlzdCBvZiBvcmdhbml6YXRpb24gaW5mby5cbiAgICovXG4gIGdldEFsbE9yZ0luZm9zKGZpbHRlckZuPzogKG9yZzogT3JnSW5mb01vZGVsKSA9PiBib29sZWFuKTogT3JnSW5mb01vZGVsW10ge1xuICAgIC8vIEluaXRpYWxpemUgdGhlIGxpc3Qgb2Ygb3JnYW5pemF0aW9uIGluZm8gbGF6aWx5LlxuICAgIGNvbnN0IGxpc3QgPSB0aGlzLmxhenlJbml0TGlzdChcbiAgICAgIHRoaXMuYWxsT3JnSW5mb3MsXG4gICAgICB2YWwgPT4gKHRoaXMuYWxsT3JnSW5mb3MgPSB2YWwpLFxuICAgICAgQ29tbW9uLnRhYkpzb24uT3JnSW5mb3MsXG4gICAgICB0aGlzLm9yZ0luZm9NYXAsXG4gICAgICAob3JnOiBhbnkpID0+IFtvcmc/LklEPy50b0xvd2VyQ2FzZSgpLCBvcmc/LlRlbmFudENvZGVdLFxuICAgICAgb3JnID0+IG5ldyBPcmdJbmZvTW9kZWwob3JnKVxuICAgICk7XG5cbiAgICAvLyBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgYXBwbHkgaXQgdG8gdGhlIGxpc3Qgb2Ygb3JnYW5pemF0aW9uIGluZm8uXG4gICAgcmV0dXJuIGZpbHRlckZuID8gbGlzdC5maWx0ZXIoZmlsdGVyRm4pIDogbGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtcyBhIGdsb2JhbCBzZWFyY2ggYWNyb3NzIGFsbCBtZXRhZGF0YSBmb3IgYSBnaXZlbiBzZWFyY2ggdGVybS5cbiAgICogWW91IGNhbiBuYXJyb3cgdGhlIHNlYXJjaCBieSBwcm92aWRpbmcgYSBsaXN0IG9mIGVudGl0eSB0eXBlcyB0byBzZWFyY2ggd2l0aGluLlxuICAgKiBcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRlcm0gLSBUaGUgc2VhcmNoIHRlcm0gdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtNZXRhZGF0YUVudGl0eVR5cGVbXX0gZW50aXR5VHlwZXMgLSBUaGUgbGlzdCBvZiBlbnRpdHkgdHlwZXMgdG8gc2VhcmNoIHdpdGhpbi4gSWYgb21pdHRlZCwgYWxsIGVudGl0eSB0eXBlcyBhcmUgc2VhcmNoZWQuXG4gICAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCBhbnlbXT59IC0gQSBkaWN0aW9uYXJ5IHdpdGggcmVzdWx0cyBncm91cGVkIGJ5IGVudGl0eSB0eXBlLlxuICAgKi9cbiAgc2VhcmNoTWV0YWRhdGEodGVybTogc3RyaW5nLCBlbnRpdHlUeXBlcz86IE1ldGFkYXRhRW50aXR5VHlwZVtdKTogUmVjb3JkPHN0cmluZywgYW55W10+IHtcbiAgICBjb25zdCBzZWFyY2hUZXJtID0gdGVybS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgYW55W10+ID0ge307XG5cbiAgICAvKipcbiAgICAgKiBIZWxwZXIgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGlmIGEgZ2l2ZW4gZW50aXR5IHR5cGUgc2hvdWxkIGJlIHNlYXJjaGVkLlxuICAgICAqIEBwYXJhbSB7TWV0YWRhdGFFbnRpdHlUeXBlfSB0eXBlIC0gVGhlIGVudGl0eSB0eXBlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSAtIFdoZXRoZXIgdGhlIGVudGl0eSB0eXBlIHNob3VsZCBiZSBzZWFyY2hlZC5cbiAgICAgKi9cbiAgICBjb25zdCBzaG91bGRTZWFyY2ggPSAodHlwZTogTWV0YWRhdGFFbnRpdHlUeXBlKSA9PiAhZW50aXR5VHlwZXMgfHwgZW50aXR5VHlwZXMuaW5jbHVkZXModHlwZSk7XG5cbiAgICBpZiAoc2hvdWxkU2VhcmNoKE1ldGFkYXRhRW50aXR5VHlwZS5BUFBfT0JKRUNUUykpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgYXBwIG9iamVjdHMgYnkgSUQsIE9iamVjdE5hbWUsIERpc3BsYXlOYW1lLCBvciBTeXN0ZW1EQlRhYmxlTmFtZVxuICAgICAgcmVzdWx0W01ldGFkYXRhRW50aXR5VHlwZS5BUFBfT0JKRUNUU10gPSB0aGlzLmdldEFsbEFwcE9iamVjdHMob2JqID0+XG4gICAgICAgIFtvYmo/LklELCBvYmo/Lk9iamVjdE5hbWUsIG9iaj8uRGlzcGxheU5hbWUsIG9iaj8uU3lzdGVtREJUYWJsZU5hbWVdXG4gICAgICAgICAgLnNvbWUodmFsID0+IHZhbCA9PT0gc2VhcmNoVGVybSB8fCB2YWw/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSkpXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChzaG91bGRTZWFyY2goTWV0YWRhdGFFbnRpdHlUeXBlLkFQUF9GSUVMRFMpKSB7XG4gICAgICAvLyBTZWFyY2ggZm9yIGFwcCBmaWVsZHMgYnkgdXNpbmcgdGhlIHNlYXJjaCBtZXRob2RcbiAgICAgIHJlc3VsdFtNZXRhZGF0YUVudGl0eVR5cGUuQVBQX0ZJRUxEU10gPSB0aGlzLmdldEFsbEZpZWxkcyhmaWVsZCA9PiBmaWVsZC5zZWFyY2goc2VhcmNoVGVybSkpO1xuICAgIH1cblxuICAgIGlmIChzaG91bGRTZWFyY2goTWV0YWRhdGFFbnRpdHlUeXBlLkRBVEFfU09VUkNFX1FVRVJJRVMpKSB7XG4gICAgICAvLyBTZWFyY2ggZm9yIGRhdGEgc291cmNlIHF1ZXJpZXMgYnkgdXNpbmcgdGhlIHNlYXJjaCBtZXRob2RcbiAgICAgIHJlc3VsdFtNZXRhZGF0YUVudGl0eVR5cGUuREFUQV9TT1VSQ0VfUVVFUklFU10gPSB0aGlzLmdldEFsbERhdGFTb3VyY2VRdWVyaWVzKGRzcSA9PiBkc3Euc2VhcmNoKHNlYXJjaFRlcm0pKTtcbiAgICB9XG5cbiAgICBpZiAoc2hvdWxkU2VhcmNoKE1ldGFkYXRhRW50aXR5VHlwZS5BUFBfU0NSRUVOUykpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgYXBwIHNjcmVlbnMgYnkgdXNpbmcgdGhlIHNlYXJjaCBtZXRob2RcbiAgICAgIHJlc3VsdFtNZXRhZGF0YUVudGl0eVR5cGUuQVBQX1NDUkVFTlNdID0gdGhpcy5nZXRBbGxBcHBTY3JlZW5zKHNjcmVlbiA9PiBzY3JlZW4uc2VhcmNoKHNlYXJjaFRlcm0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhbiBhcHAgbWVudSBieSBpdHMgSUQgb3IgbmFtZS5cbiAgICogU2VhcmNoZXMgdGhyb3VnaCBhbGwgYXBwIG1lbnVzIGFuZCByZXR1cm5zIHRoZSBmaXJzdCBtYXRjaC5cbiAgICogXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lT3JJZCAtIFRoZSBJRCBvciBuYW1lIG9mIHRoZSBhcHAgbWVudSB0byByZXRyaWV2ZS5cbiAgICogQHJldHVybnMge0FwcE1lbnVNb2RlbCB8IG51bGx9IC0gVGhlIGFwcCBtZW51IG1vZGVsIGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbC5cbiAgICovXG4gIGdldEFwcE1lbnVCeUlkT3JOYW1lKG5hbWVPcklkOiBzdHJpbmcpOiBBcHBNZW51TW9kZWwgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGcm9tTWFwT3JDcmVhdGUoXG4gICAgICB0aGlzLmFwcE1lbnVNYXAsXG4gICAgICBuYW1lT3JJZCxcbiAgICAgIENvbW1vbi50YWJKc29uLk1lbnVzLFxuICAgICAgLy8gU2VhcmNoIGZvciB0aGUgYXBwIG1lbnUgYnkgSUQgb3IgbmFtZVxuICAgICAgbWVudSA9PiBtZW51Py5JZD8udG9Mb3dlckNhc2UoKSA9PT0gbmFtZU9ySWQ/LnRvTG93ZXJDYXNlKCkgfHwgbWVudT8uTWVudU5hbWUgPT09IG5hbWVPcklkLFxuICAgICAgLy8gQ3JlYXRlIGEgbmV3IEFwcE1lbnVNb2RlbCBpZiB0aGUgYXBwIG1lbnUgaXMgZm91bmRcbiAgICAgIG1lbnUgPT4gbmV3IEFwcE1lbnVNb2RlbChtZW51KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBhbGwgYXBwIG1lbnVzLlxuICAgKiBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgaXQgaXMgYXBwbGllZCB0byB0aGUgbGlzdCBvZiBhcHAgbWVudXMuXG4gICAqIFxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBmaWx0ZXJGbiAtIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGFwcCBtZW51cy5cbiAgICogQHJldHVybnMge0FwcE1lbnVNb2RlbFtdfSAtIFRoZSBsaXN0IG9mIGFwcCBtZW51cy5cbiAgICovXG4gIGdldEFsbEFwcE1lbnVzKGZpbHRlckZuPzogKG1lbnU6IEFwcE1lbnVNb2RlbCkgPT4gYm9vbGVhbik6IEFwcE1lbnVNb2RlbFtdIHtcbiAgICAvLyBJbml0aWFsaXplIHRoZSBsaXN0IG9mIGFwcCBzY3JlZW5zIGxhemlseS5cbiAgICBjb25zdCBsaXN0ID0gdGhpcy5sYXp5SW5pdExpc3QoXG4gICAgICB0aGlzLmFsbEFwcE1lbnVzLFxuICAgICAgdmFsID0+ICh0aGlzLmFsbEFwcE1lbnVzID0gdmFsKSxcbiAgICAgIENvbW1vbi50YWJKc29uLk1lbnVzLFxuICAgICAgdGhpcy5hcHBNZW51TWFwLFxuICAgICAgKG06IGFueSkgPT4gW20/LklkPy50b0xvd2VyQ2FzZSgpLCBtPy5OYW1lXSxcbiAgICAgIHMgPT4gbmV3IEFwcE1lbnVNb2RlbChzKVxuICAgICk7XG5cbiAgICAvLyBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgYXBwbHkgaXQgdG8gdGhlIGxpc3Qgb2YgYXBwIHNjcmVlbnMuXG4gICAgcmV0dXJuIGZpbHRlckZuID8gbGlzdC5maWx0ZXIoZmlsdGVyRm4pIDogbGlzdDtcbiAgfVxufSJdfQ==
|
|
@@ -3,13 +3,15 @@ import { Injectable, inject } from '@angular/core';
|
|
|
3
3
|
import { ApiService } from '../../../core/http-client/api.service';
|
|
4
4
|
import { API } from '../../constants/api-constants';
|
|
5
5
|
import { Liquid } from 'liquidjs';
|
|
6
|
-
import { of } from 'rxjs';
|
|
6
|
+
import { catchError, from, map, of } from 'rxjs';
|
|
7
7
|
import { getHeaders } from '../../utils/req-res.util';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
export class TemplateHelper {
|
|
10
10
|
constructor() {
|
|
11
11
|
this.apiService = inject(ApiService);
|
|
12
12
|
this.engine = new Liquid();
|
|
13
|
+
this.registerCallFilter();
|
|
14
|
+
this.registerPropFilter();
|
|
13
15
|
}
|
|
14
16
|
/**
|
|
15
17
|
* Parses the template using local rendering.
|
|
@@ -19,7 +21,11 @@ export class TemplateHelper {
|
|
|
19
21
|
* @returns The rendered template result.
|
|
20
22
|
*/
|
|
21
23
|
templateParseLocally(template, templateVariables) {
|
|
22
|
-
|
|
24
|
+
const data = {
|
|
25
|
+
...(templateVariables?.length ? JSON.parse(templateVariables) : {}),
|
|
26
|
+
TabSdk: this.createSdkProxy(),
|
|
27
|
+
};
|
|
28
|
+
return this.engine.parseAndRender(template ?? '', data);
|
|
23
29
|
}
|
|
24
30
|
/**
|
|
25
31
|
* Parses the template universally, either using local rendering or server-side rendering.
|
|
@@ -29,27 +35,187 @@ export class TemplateHelper {
|
|
|
29
35
|
* @returns An observable that emits the parsed template result.
|
|
30
36
|
*/
|
|
31
37
|
templateParseUniversal(data, onFailedParseOnServer = true) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
catch (error) {
|
|
37
|
-
console.log('Local parse failed', error);
|
|
38
|
-
if (onFailedParseOnServer) {
|
|
39
|
-
return this.templateParse(data);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return of({ Result: html });
|
|
38
|
+
return from(this.templateParseLocally(data.Value, data.Templatevariables)).pipe(map((html) => ({ Result: html })), catchError((error) => {
|
|
39
|
+
console.error('Local parse failed', error);
|
|
40
|
+
return onFailedParseOnServer ? this.templateParse(data) : of({ Result: '' });
|
|
41
|
+
}));
|
|
43
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Parses the template using server-side rendering.
|
|
45
|
+
*
|
|
46
|
+
* @param data - The data to be used for template parsing.
|
|
47
|
+
* @returns An observable that emits the parsed template result.
|
|
48
|
+
*/
|
|
44
49
|
templateParse(data) {
|
|
45
50
|
const headers = getHeaders();
|
|
51
|
+
// Makes a POST request to the server to parse the template.
|
|
46
52
|
return this.apiService.post(API.templateParse, data, headers);
|
|
47
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Creates a proxy for the TabSdk object to expose its properties and methods.
|
|
56
|
+
* This allows templates to access SDK services and their properties.
|
|
57
|
+
*
|
|
58
|
+
* @returns An object containing the resolved SDK services.
|
|
59
|
+
*/
|
|
60
|
+
createSdkProxy() {
|
|
61
|
+
const sdkRoot = window?.TabSdk;
|
|
62
|
+
if (!sdkRoot)
|
|
63
|
+
return {};
|
|
64
|
+
const resolvedSdk = {};
|
|
65
|
+
// Get static properties and resolve their values
|
|
66
|
+
Object.getOwnPropertyNames(sdkRoot).forEach(serviceName => {
|
|
67
|
+
if (serviceName === 'length' || serviceName === 'name' || serviceName === 'prototype')
|
|
68
|
+
return;
|
|
69
|
+
const service = sdkRoot[serviceName];
|
|
70
|
+
if (!service)
|
|
71
|
+
return;
|
|
72
|
+
// Create resolved service object
|
|
73
|
+
resolvedSdk[serviceName] = this.resolveServiceValues(service);
|
|
74
|
+
});
|
|
75
|
+
return resolvedSdk;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Resolves the properties and methods of a service object.
|
|
79
|
+
* This includes both static properties and methods, as well as prototype properties.
|
|
80
|
+
*
|
|
81
|
+
* @param service - The service object to resolve.
|
|
82
|
+
* @returns An object containing the resolved properties and methods.
|
|
83
|
+
*/
|
|
84
|
+
resolveServiceValues(service) {
|
|
85
|
+
const resolved = {};
|
|
86
|
+
try {
|
|
87
|
+
const deny = new Set(['__proto__', 'prototype', 'constructor']);
|
|
88
|
+
const seen = new Set();
|
|
89
|
+
// walk the whole prototype chain (instance → base prototypes), stop at Object.prototype
|
|
90
|
+
let obj = service;
|
|
91
|
+
while (obj && obj !== Object.prototype) {
|
|
92
|
+
for (const prop of Object.getOwnPropertyNames(obj)) {
|
|
93
|
+
if (deny.has(prop) || seen.has(prop))
|
|
94
|
+
continue;
|
|
95
|
+
seen.add(prop);
|
|
96
|
+
let value;
|
|
97
|
+
try {
|
|
98
|
+
// always read off the original instance so getters see correct `this`
|
|
99
|
+
value = Reflect.get(service, prop);
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
if (typeof value === 'function') {
|
|
105
|
+
// expose a handle so Liquid passes it through to the `call` filter
|
|
106
|
+
resolved[prop] = this.makeMethodHandle(service, prop);
|
|
107
|
+
}
|
|
108
|
+
else if (value !== undefined) {
|
|
109
|
+
resolved[prop] = value;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
obj = Object.getPrototypeOf(obj);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch (e) {
|
|
116
|
+
console.warn('TemplateHelper: resolveServiceValues failed', e);
|
|
117
|
+
}
|
|
118
|
+
return resolved;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Creates a special handle object that wraps a function or method reference.
|
|
122
|
+
* The handle is used as a placeholder for the function or method in the
|
|
123
|
+
* template context, and is used by the `call` filter to invoke the
|
|
124
|
+
* function or method with provided arguments.
|
|
125
|
+
*
|
|
126
|
+
* @param parent - The object that the method belongs to.
|
|
127
|
+
* @param name - The name of the method.
|
|
128
|
+
* @returns A handle object that wraps the function or method.
|
|
129
|
+
*/
|
|
130
|
+
makeMethodHandle(parent, name) {
|
|
131
|
+
const handle = Object.create(null);
|
|
132
|
+
Object.defineProperties(handle, {
|
|
133
|
+
__sdkHandle: { value: 'method', enumerable: false, writable: false, configurable: false },
|
|
134
|
+
__parent: { value: parent, enumerable: false, writable: false, configurable: false },
|
|
135
|
+
__name: { value: name, enumerable: false, writable: false, configurable: false }
|
|
136
|
+
});
|
|
137
|
+
return handle;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Registers a filter to call a function or method with provided arguments.
|
|
141
|
+
* This allows templates to invoke functions or methods dynamically.
|
|
142
|
+
*/
|
|
143
|
+
registerCallFilter() {
|
|
144
|
+
this.engine.registerFilter('call', async (input, ...args) => {
|
|
145
|
+
try {
|
|
146
|
+
// case A: input is our method handle (from resolveServiceValues)
|
|
147
|
+
if (input && input.__sdkHandle === 'method' && input.__parent && input.__name) {
|
|
148
|
+
const fn = Reflect.get(input.__parent, input.__name);
|
|
149
|
+
if (typeof fn !== 'function') {
|
|
150
|
+
return '';
|
|
151
|
+
}
|
|
152
|
+
const res = fn.apply(input.__parent, args);
|
|
153
|
+
return await res; // sync or async
|
|
154
|
+
}
|
|
155
|
+
// case B: input is an object and first arg is the method name
|
|
156
|
+
if (input && typeof input === 'object' && typeof args[0] === 'string') {
|
|
157
|
+
const methodName = args[0];
|
|
158
|
+
if (methodName === '__proto__' || methodName === 'prototype' || methodName === 'constructor')
|
|
159
|
+
return '';
|
|
160
|
+
const method = Reflect.get(input, methodName);
|
|
161
|
+
const rest = args.slice(1);
|
|
162
|
+
if (typeof method === 'function') {
|
|
163
|
+
const res = method.apply(input, rest);
|
|
164
|
+
return await res;
|
|
165
|
+
}
|
|
166
|
+
// not a function → treat as property fallback
|
|
167
|
+
return method ?? '';
|
|
168
|
+
}
|
|
169
|
+
// (fallback) functions should not reach Liquid, but keep for safety
|
|
170
|
+
if (typeof input === 'function') {
|
|
171
|
+
const res = input(...args);
|
|
172
|
+
return await res;
|
|
173
|
+
}
|
|
174
|
+
return '';
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
return '';
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Registers a filter to access properties of an object using dot or bracket notation.
|
|
183
|
+
* This allows templates to access nested properties safely.
|
|
184
|
+
*/
|
|
185
|
+
registerPropFilter() {
|
|
186
|
+
this.engine.registerFilter('prop', (input, path) => {
|
|
187
|
+
if (input == null)
|
|
188
|
+
return '';
|
|
189
|
+
if (typeof path !== 'string' || !path.trim())
|
|
190
|
+
return '';
|
|
191
|
+
// support dot & simple bracket notation: a.b, a[0], a[key]
|
|
192
|
+
const segments = path
|
|
193
|
+
.replace(/\[(\d+)\]/g, '.$1') // [0] -> .0
|
|
194
|
+
.replace(/\[(\w+)\]/g, '.$1') // [key] -> .key
|
|
195
|
+
.split('.')
|
|
196
|
+
.map(s => s.trim())
|
|
197
|
+
.filter(Boolean);
|
|
198
|
+
let cur = input;
|
|
199
|
+
for (const seg of segments) {
|
|
200
|
+
if (cur == null)
|
|
201
|
+
return '';
|
|
202
|
+
const idx = Number(seg);
|
|
203
|
+
const key = Number.isNaN(idx) ? seg : idx;
|
|
204
|
+
try {
|
|
205
|
+
cur = Reflect.get(cur, key);
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
return '';
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return cur ?? '';
|
|
212
|
+
});
|
|
213
|
+
}
|
|
48
214
|
static { this.ɵfac = function TemplateHelper_Factory(t) { return new (t || TemplateHelper)(); }; }
|
|
49
215
|
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: TemplateHelper, factory: TemplateHelper.ɵfac, providedIn: 'root' }); }
|
|
50
216
|
}
|
|
51
217
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TemplateHelper, [{
|
|
52
218
|
type: Injectable,
|
|
53
219
|
args: [{ providedIn: 'root' }]
|
|
54
|
-
}],
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9oZWxwZXJzL2NvbW1vbi90ZW1wbGF0ZS5oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBSXRELE1BQU0sT0FBTyxjQUFjO0lBRDNCO1FBRW1CLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekMsV0FBTSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7S0EwQy9CO0lBeENDOzs7Ozs7T0FNRztJQUNILG9CQUFvQixDQUFDLFFBQWdCLEVBQUUsaUJBQXlCO1FBQzlELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FDbkMsUUFBUSxJQUFJLEVBQUUsRUFDZCxpQkFBaUIsSUFBSSxpQkFBaUIsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNuRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILHNCQUFzQixDQUFDLElBQTBCLEVBQUUscUJBQXFCLEdBQUcsSUFBSTtRQUM3RSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7UUFFZCxJQUFJLENBQUM7WUFDSCxJQUFJLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdkUsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLElBQUkscUJBQXFCLEVBQUUsQ0FBQztnQkFDMUIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xDLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU8sYUFBYSxDQUFDLElBQTBCO1FBQzlDLE1BQU0sT0FBTyxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEUsQ0FBQzsrRUEzQ1UsY0FBYzt1RUFBZCxjQUFjLFdBQWQsY0FBYyxtQkFERCxNQUFNOztpRkFDbkIsY0FBYztjQUQxQixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2h0dHAtY2xpZW50L2FwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQVBJIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2FwaS1jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBMaXF1aWQgfSBmcm9tICdsaXF1aWRqcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGdldEhlYWRlcnMgfSBmcm9tICcuLi8uLi91dGlscy9yZXEtcmVzLnV0aWwnO1xyXG5pbXBvcnQgeyBDb21tb25BcGlSZXNwb25zZSwgVGVtcGxhdGVQYXJzZVBheWxvYWQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2NvbW1vbi5pbnRlcmZhY2UnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlSGVscGVyIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGFwaVNlcnZpY2UgPSBpbmplY3QoQXBpU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBlbmdpbmUgPSBuZXcgTGlxdWlkKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhcnNlcyB0aGUgdGVtcGxhdGUgdXNpbmcgbG9jYWwgcmVuZGVyaW5nLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHRlbXBsYXRlIC0gVGhlIHRlbXBsYXRlIHRvIGJlIHBhcnNlZC5cclxuICAgKiBAcGFyYW0gdGVtcGxhdGVWYXJpYWJsZXMgLSBUaGUgdmFyaWFibGVzIHRvIGJlIHVzZWQgZm9yIHRlbXBsYXRlIHJlbmRlcmluZy5cclxuICAgKiBAcmV0dXJucyBUaGUgcmVuZGVyZWQgdGVtcGxhdGUgcmVzdWx0LlxyXG4gICAqL1xyXG4gIHRlbXBsYXRlUGFyc2VMb2NhbGx5KHRlbXBsYXRlOiBzdHJpbmcsIHRlbXBsYXRlVmFyaWFibGVzOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZW5naW5lLnBhcnNlQW5kUmVuZGVyU3luYyhcclxuICAgICAgdGVtcGxhdGUgPz8gJycsXHJcbiAgICAgIHRlbXBsYXRlVmFyaWFibGVzICYmIHRlbXBsYXRlVmFyaWFibGVzICE9PSAnJyA/IEpTT04ucGFyc2UodGVtcGxhdGVWYXJpYWJsZXMpIDoge31cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQYXJzZXMgdGhlIHRlbXBsYXRlIHVuaXZlcnNhbGx5LCBlaXRoZXIgdXNpbmcgbG9jYWwgcmVuZGVyaW5nIG9yIHNlcnZlci1zaWRlIHJlbmRlcmluZy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBkYXRhIC0gVGhlIGRhdGEgdG8gYmUgdXNlZCBmb3IgdGVtcGxhdGUgcGFyc2luZy5cclxuICAgKiBAcGFyYW0gc2hvdWxkRmFpbE9uU2VydmVyUGFyc2UgLSBJbmRpY2F0ZXMgd2hldGhlciB0byBmYWlsIG9uIHNlcnZlci1zaWRlIHBhcnNlIGlmIGxvY2FsIHBhcnNpbmcgZmFpbHMuXHJcbiAgICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBwYXJzZWQgdGVtcGxhdGUgcmVzdWx0LlxyXG4gICAqL1xyXG4gIHRlbXBsYXRlUGFyc2VVbml2ZXJzYWwoZGF0YTogVGVtcGxhdGVQYXJzZVBheWxvYWQsIG9uRmFpbGVkUGFyc2VPblNlcnZlciA9IHRydWUpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgbGV0IGh0bWwgPSAnJztcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBodG1sID0gdGhpcy50ZW1wbGF0ZVBhcnNlTG9jYWxseShkYXRhLlZhbHVlLCBkYXRhLlRlbXBsYXRldmFyaWFibGVzKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdMb2NhbCBwYXJzZSBmYWlsZWQnLCBlcnJvcik7XHJcbiAgICAgIGlmIChvbkZhaWxlZFBhcnNlT25TZXJ2ZXIpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZVBhcnNlKGRhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG9mKHsgUmVzdWx0OiBodG1sIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0ZW1wbGF0ZVBhcnNlKGRhdGE6IFRlbXBsYXRlUGFyc2VQYXlsb2FkKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChBUEkudGVtcGxhdGVQYXJzZSwgZGF0YSwgaGVhZGVycyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
220
|
+
}], () => [], null); })();
|
|
221
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9oZWxwZXJzL2NvbW1vbi90ZW1wbGF0ZS5oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBSXRELE1BQU0sT0FBTyxjQUFjO0lBSXpCO1FBSGlCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekMsV0FBTSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7UUFHNUIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILG9CQUFvQixDQUFDLFFBQWdCLEVBQUUsaUJBQXlCO1FBQzlELE1BQU0sSUFBSSxHQUFHO1lBQ1gsR0FBRyxDQUFDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbkUsTUFBTSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUU7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QUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFLLFlBQVk7aUJBQzdDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUssZ0JBQWdCO2lCQUNqRCxLQUFLLENBQUMsR0FBRyxDQUFDO2lCQUNWLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztpQkFDbEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRW5CLElBQUksR0FBRyxHQUFRLEtBQUssQ0FBQztZQUVyQixLQUFLLE1BQU0sR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUMzQixJQUFJLEdBQUcsSUFBSSxJQUFJO29CQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUUzQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3hCLE1BQU0sR0FBRyxHQUFRLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUUvQyxJQUFJLENBQUM7b0JBQ0gsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QixDQUFDO2dCQUFDLE1BQU0sQ0FBQztvQkFDUCxPQUFPLEVBQUUsQ0FBQztnQkFDWixDQUFDO1lBQ0gsQ0FBQztZQUVELE9BQU8sR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0VBNU5VLGNBQWM7dUVBQWQsY0FBYyxXQUFkLGNBQWMsbUJBREQsTUFBTTs7aUZBQ25CLGNBQWM7Y0FEMUIsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2h0dHAtY2xpZW50L2FwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQVBJIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2FwaS1jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBMaXF1aWQgfSBmcm9tICdsaXF1aWRqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZyb20sIG1hcCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZ2V0SGVhZGVycyB9IGZyb20gJy4uLy4uL3V0aWxzL3JlcS1yZXMudXRpbCc7XHJcbmltcG9ydCB7IENvbW1vbkFwaVJlc3BvbnNlLCBUZW1wbGF0ZVBhcnNlUGF5bG9hZCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvY29tbW9uLmludGVyZmFjZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVIZWxwZXIge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpU2VydmljZSA9IGluamVjdChBcGlTZXJ2aWNlKTtcclxuICBwcml2YXRlIGVuZ2luZSA9IG5ldyBMaXF1aWQoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLnJlZ2lzdGVyQ2FsbEZpbHRlcigpO1xyXG4gICAgdGhpcy5yZWdpc3RlclByb3BGaWx0ZXIoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhcnNlcyB0aGUgdGVtcGxhdGUgdXNpbmcgbG9jYWwgcmVuZGVyaW5nLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHRlbXBsYXRlIC0gVGhlIHRlbXBsYXRlIHRvIGJlIHBhcnNlZC5cclxuICAgKiBAcGFyYW0gdGVtcGxhdGVWYXJpYWJsZXMgLSBUaGUgdmFyaWFibGVzIHRvIGJlIHVzZWQgZm9yIHRlbXBsYXRlIHJlbmRlcmluZy5cclxuICAgKiBAcmV0dXJucyBUaGUgcmVuZGVyZWQgdGVtcGxhdGUgcmVzdWx0LlxyXG4gICAqL1xyXG4gIHRlbXBsYXRlUGFyc2VMb2NhbGx5KHRlbXBsYXRlOiBzdHJpbmcsIHRlbXBsYXRlVmFyaWFibGVzOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgLi4uKHRlbXBsYXRlVmFyaWFibGVzPy5sZW5ndGggPyBKU09OLnBhcnNlKHRlbXBsYXRlVmFyaWFibGVzKSA6IHt9KSxcclxuICAgICAgVGFiU2RrOiB0aGlzLmNyZWF0ZVNka1Byb3h5KCksXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMuZW5naW5lLnBhcnNlQW5kUmVuZGVyKHRlbXBsYXRlID8/ICcnLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhcnNlcyB0aGUgdGVtcGxhdGUgdW5pdmVyc2FsbHksIGVpdGhlciB1c2luZyBsb2NhbCByZW5kZXJpbmcgb3Igc2VydmVyLXNpZGUgcmVuZGVyaW5nLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGRhdGEgLSBUaGUgZGF0YSB0byBiZSB1c2VkIGZvciB0ZW1wbGF0ZSBwYXJzaW5nLlxyXG4gICAqIEBwYXJhbSBzaG91bGRGYWlsT25TZXJ2ZXJQYXJzZSAtIEluZGljYXRlcyB3aGV0aGVyIHRvIGZhaWwgb24gc2VydmVyLXNpZGUgcGFyc2UgaWYgbG9jYWwgcGFyc2luZyBmYWlscy5cclxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHBhcnNlZCB0ZW1wbGF0ZSByZXN1bHQuXHJcbiAgICovXHJcbiAgdGVtcGxhdGVQYXJzZVVuaXZlcnNhbChkYXRhOiBUZW1wbGF0ZVBhcnNlUGF5bG9hZCwgb25GYWlsZWRQYXJzZU9uU2VydmVyID0gdHJ1ZSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLnRlbXBsYXRlUGFyc2VMb2NhbGx5KGRhdGEuVmFsdWUsIGRhdGEuVGVtcGxhdGV2YXJpYWJsZXMpKS5waXBlKFxyXG4gICAgICBtYXAoKGh0bWwpID0+ICh7IFJlc3VsdDogaHRtbCB9KSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignTG9jYWwgcGFyc2UgZmFpbGVkJywgZXJyb3IpO1xyXG4gICAgICAgIHJldHVybiBvbkZhaWxlZFBhcnNlT25TZXJ2ZXIgPyB0aGlzLnRlbXBsYXRlUGFyc2UoZGF0YSkgOiBvZih7IFJlc3VsdDogJycgfSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGFyc2VzIHRoZSB0ZW1wbGF0ZSB1c2luZyBzZXJ2ZXItc2lkZSByZW5kZXJpbmcuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZGF0YSAtIFRoZSBkYXRhIHRvIGJlIHVzZWQgZm9yIHRlbXBsYXRlIHBhcnNpbmcuXHJcbiAgICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBwYXJzZWQgdGVtcGxhdGUgcmVzdWx0LlxyXG4gICAqL1xyXG4gIHByaXZhdGUgdGVtcGxhdGVQYXJzZShkYXRhOiBUZW1wbGF0ZVBhcnNlUGF5bG9hZCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcblxyXG4gICAgLy8gTWFrZXMgYSBQT1NUIHJlcXVlc3QgdG8gdGhlIHNlcnZlciB0byBwYXJzZSB0aGUgdGVtcGxhdGUuXHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoQVBJLnRlbXBsYXRlUGFyc2UsIGRhdGEsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHByb3h5IGZvciB0aGUgVGFiU2RrIG9iamVjdCB0byBleHBvc2UgaXRzIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMuXHJcbiAgICogVGhpcyBhbGxvd3MgdGVtcGxhdGVzIHRvIGFjY2VzcyBTREsgc2VydmljZXMgYW5kIHRoZWlyIHByb3BlcnRpZXMuXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgcmVzb2x2ZWQgU0RLIHNlcnZpY2VzLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgY3JlYXRlU2RrUHJveHkoKTogYW55IHtcclxuICAgIGNvbnN0IHNka1Jvb3QgPSAod2luZG93IGFzIGFueSk/LlRhYlNkaztcclxuICAgIGlmICghc2RrUm9vdCkgcmV0dXJuIHt9O1xyXG5cclxuICAgIGNvbnN0IHJlc29sdmVkU2RrOiBhbnkgPSB7fTtcclxuICAgIC8vIEdldCBzdGF0aWMgcHJvcGVydGllcyBhbmQgcmVzb2x2ZSB0aGVpciB2YWx1ZXNcclxuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHNka1Jvb3QpLmZvckVhY2goc2VydmljZU5hbWUgPT4ge1xyXG4gICAgICBpZiAoc2VydmljZU5hbWUgPT09ICdsZW5ndGgnIHx8IHNlcnZpY2VOYW1lID09PSAnbmFtZScgfHwgc2VydmljZU5hbWUgPT09ICdwcm90b3R5cGUnKSByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCBzZXJ2aWNlID0gc2RrUm9vdFtzZXJ2aWNlTmFtZV07XHJcbiAgICAgIGlmICghc2VydmljZSkgcmV0dXJuO1xyXG5cclxuICAgICAgLy8gQ3JlYXRlIHJlc29sdmVkIHNlcnZpY2Ugb2JqZWN0XHJcbiAgICAgIHJlc29sdmVkU2RrW3NlcnZpY2VOYW1lXSA9IHRoaXMucmVzb2x2ZVNlcnZpY2VWYWx1ZXMoc2VydmljZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcmVzb2x2ZWRTZGs7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNvbHZlcyB0aGUgcHJvcGVydGllcyBhbmQgbWV0aG9kcyBvZiBhIHNlcnZpY2Ugb2JqZWN0LlxyXG4gICAqIFRoaXMgaW5jbHVkZXMgYm90aCBzdGF0aWMgcHJvcGVydGllcyBhbmQgbWV0aG9kcywgYXMgd2VsbCBhcyBwcm90b3R5cGUgcHJvcGVydGllcy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBzZXJ2aWNlIC0gVGhlIHNlcnZpY2Ugb2JqZWN0IHRvIHJlc29sdmUuXHJcbiAgICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJlc29sdmVkIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZXNvbHZlU2VydmljZVZhbHVlcyhzZXJ2aWNlOiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgcmVzb2x2ZWQ6IGFueSA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgZGVueSA9IG5ldyBTZXQoWydfX3Byb3RvX18nLCAncHJvdG90eXBlJywgJ2NvbnN0cnVjdG9yJ10pO1xyXG4gICAgICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XHJcblxyXG4gICAgICAvLyB3YWxrIHRoZSB3aG9sZSBwcm90b3R5cGUgY2hhaW4gKGluc3RhbmNlIOKGkiBiYXNlIHByb3RvdHlwZXMpLCBzdG9wIGF0IE9iamVjdC5wcm90b3R5cGVcclxuICAgICAgbGV0IG9iajogYW55ID0gc2VydmljZTtcclxuICAgICAgd2hpbGUgKG9iaiAmJiBvYmogIT09IE9iamVjdC5wcm90b3R5cGUpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IHByb3Agb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKSkge1xyXG4gICAgICAgICAgaWYgKGRlbnkuaGFzKHByb3ApIHx8IHNlZW4uaGFzKHByb3ApKSBjb250aW51ZTtcclxuICAgICAgICAgIHNlZW4uYWRkKHByb3ApO1xyXG5cclxuICAgICAgICAgIGxldCB2YWx1ZTogYW55O1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgLy8gYWx3YXlzIHJlYWQgb2ZmIHRoZSBvcmlnaW5hbCBpbnN0YW5jZSBzbyBnZXR0ZXJzIHNlZSBjb3JyZWN0IGB0aGlzYFxyXG4gICAgICAgICAgICB2YWx1ZSA9IFJlZmxlY3QuZ2V0KHNlcnZpY2UsIHByb3ApO1xyXG4gICAgICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgLy8gZXhwb3NlIGEgaGFuZGxlIHNvIExpcXVpZCBwYXNzZXMgaXQgdGhyb3VnaCB0byB0aGUgYGNhbGxgIGZpbHRlclxyXG4gICAgICAgICAgICByZXNvbHZlZFtwcm9wXSA9IHRoaXMubWFrZU1ldGhvZEhhbmRsZShzZXJ2aWNlLCBwcm9wKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXNvbHZlZFtwcm9wXSA9IHZhbHVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBvYmogPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ1RlbXBsYXRlSGVscGVyOiByZXNvbHZlU2VydmljZVZhbHVlcyBmYWlsZWQnLCBlKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXNvbHZlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBzcGVjaWFsIGhhbmRsZSBvYmplY3QgdGhhdCB3cmFwcyBhIGZ1bmN0aW9uIG9yIG1ldGhvZCByZWZlcmVuY2UuXHJcbiAgICogVGhlIGhhbmRsZSBpcyB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHRoZSBmdW5jdGlvbiBvciBtZXRob2QgaW4gdGhlXHJcbiAgICogdGVtcGxhdGUgY29udGV4dCwgYW5kIGlzIHVzZWQgYnkgdGhlIGBjYWxsYCBmaWx0ZXIgdG8gaW52b2tlIHRoZVxyXG4gICAqIGZ1bmN0aW9uIG9yIG1ldGhvZCB3aXRoIHByb3ZpZGVkIGFyZ3VtZW50cy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBwYXJlbnQgLSBUaGUgb2JqZWN0IHRoYXQgdGhlIG1ldGhvZCBiZWxvbmdzIHRvLlxyXG4gICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIG1ldGhvZC5cclxuICAgKiBAcmV0dXJucyBBIGhhbmRsZSBvYmplY3QgdGhhdCB3cmFwcyB0aGUgZnVuY3Rpb24gb3IgbWV0aG9kLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgbWFrZU1ldGhvZEhhbmRsZShwYXJlbnQ6IGFueSwgbmFtZTogc3RyaW5nKTogYW55IHtcclxuICAgIGNvbnN0IGhhbmRsZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhoYW5kbGUsIHtcclxuICAgICAgX19zZGtIYW5kbGU6IHsgdmFsdWU6ICdtZXRob2QnLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IGZhbHNlLCBjb25maWd1cmFibGU6IGZhbHNlIH0sXHJcbiAgICAgIF9fcGFyZW50OiB7IHZhbHVlOiBwYXJlbnQsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogZmFsc2UsIGNvbmZpZ3VyYWJsZTogZmFsc2UgfSxcclxuICAgICAgX19uYW1lOiB7IHZhbHVlOiBuYW1lLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IGZhbHNlLCBjb25maWd1cmFibGU6IGZhbHNlIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGhhbmRsZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZ2lzdGVycyBhIGZpbHRlciB0byBjYWxsIGEgZnVuY3Rpb24gb3IgbWV0aG9kIHdpdGggcHJvdmlkZWQgYXJndW1lbnRzLlxyXG4gICAqIFRoaXMgYWxsb3dzIHRlbXBsYXRlcyB0byBpbnZva2UgZnVuY3Rpb25zIG9yIG1ldGhvZHMgZHluYW1pY2FsbHkuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZWdpc3RlckNhbGxGaWx0ZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVuZ2luZS5yZWdpc3RlckZpbHRlcignY2FsbCcsIGFzeW5jIChpbnB1dDogYW55LCAuLi5hcmdzOiBhbnlbXSkgPT4ge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIC8vIGNhc2UgQTogaW5wdXQgaXMgb3VyIG1ldGhvZCBoYW5kbGUgKGZyb20gcmVzb2x2ZVNlcnZpY2VWYWx1ZXMpXHJcbiAgICAgICAgaWYgKGlucHV0ICYmIGlucHV0Ll9fc2RrSGFuZGxlID09PSAnbWV0aG9kJyAmJiBpbnB1dC5fX3BhcmVudCAmJiBpbnB1dC5fX25hbWUpIHtcclxuICAgICAgICAgIGNvbnN0IGZuID0gUmVmbGVjdC5nZXQoaW5wdXQuX19wYXJlbnQsIGlucHV0Ll9fbmFtZSk7XHJcbiAgICAgICAgICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IHJlcyA9IGZuLmFwcGx5KGlucHV0Ll9fcGFyZW50LCBhcmdzKTtcclxuICAgICAgICAgIHJldHVybiBhd2FpdCByZXM7IC8vIHN5bmMgb3IgYXN5bmNcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGNhc2UgQjogaW5wdXQgaXMgYW4gb2JqZWN0IGFuZCBmaXJzdCBhcmcgaXMgdGhlIG1ldGhvZCBuYW1lXHJcbiAgICAgICAgaWYgKGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGFyZ3NbMF0gPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICBjb25zdCBtZXRob2ROYW1lID0gYXJnc1swXTtcclxuICAgICAgICAgIGlmIChtZXRob2ROYW1lID09PSAnX19wcm90b19fJyB8fCBtZXRob2ROYW1lID09PSAncHJvdG90eXBlJyB8fCBtZXRob2ROYW1lID09PSAnY29uc3RydWN0b3InKSByZXR1cm4gJyc7XHJcbiAgICAgICAgICBjb25zdCBtZXRob2QgPSBSZWZsZWN0LmdldChpbnB1dCwgbWV0aG9kTmFtZSk7XHJcbiAgICAgICAgICBjb25zdCByZXN0ID0gYXJncy5zbGljZSgxKTtcclxuICAgICAgICAgIGlmICh0eXBlb2YgbWV0aG9kID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IG1ldGhvZC5hcHBseShpbnB1dCwgcmVzdCk7XHJcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCByZXM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBub3QgYSBmdW5jdGlvbiDihpIgdHJlYXQgYXMgcHJvcGVydHkgZmFsbGJhY2tcclxuICAgICAgICAgIHJldHVybiBtZXRob2QgPz8gJyc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyAoZmFsbGJhY2spIGZ1bmN0aW9ucyBzaG91bGQgbm90IHJlYWNoIExpcXVpZCwgYnV0IGtlZXAgZm9yIHNhZmV0eVxyXG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgIGNvbnN0IHJlcyA9IGlucHV0KC4uLmFyZ3MpO1xyXG4gICAgICAgICAgcmV0dXJuIGF3YWl0IHJlcztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZ2lzdGVycyBhIGZpbHRlciB0byBhY2Nlc3MgcHJvcGVydGllcyBvZiBhbiBvYmplY3QgdXNpbmcgZG90IG9yIGJyYWNrZXQgbm90YXRpb24uXHJcbiAgICogVGhpcyBhbGxvd3MgdGVtcGxhdGVzIHRvIGFjY2VzcyBuZXN0ZWQgcHJvcGVydGllcyBzYWZlbHkuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZWdpc3RlclByb3BGaWx0ZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVuZ2luZS5yZWdpc3RlckZpbHRlcigncHJvcCcsIChpbnB1dDogYW55LCBwYXRoOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGlucHV0ID09IG51bGwpIHJldHVybiAnJztcclxuICAgICAgaWYgKHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJyB8fCAhcGF0aC50cmltKCkpIHJldHVybiAnJztcclxuXHJcbiAgICAgIC8vIHN1cHBvcnQgZG90ICYgc2ltcGxlIGJyYWNrZXQgbm90YXRpb246IGEuYiwgYVswXSwgYVtrZXldXHJcbiAgICAgIGNvbnN0IHNlZ21lbnRzID0gcGF0aFxyXG4gICAgICAgIC5yZXBsYWNlKC9cXFsoXFxkKylcXF0vZywgJy4kMScpICAgICAvLyBbMF0gLT4gLjBcclxuICAgICAgICAucmVwbGFjZSgvXFxbKFxcdyspXFxdL2csICcuJDEnKSAgICAgLy8gW2tleV0gLT4gLmtleVxyXG4gICAgICAgIC5zcGxpdCgnLicpXHJcbiAgICAgICAgLm1hcChzID0+IHMudHJpbSgpKVxyXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbik7XHJcblxyXG4gICAgICBsZXQgY3VyOiBhbnkgPSBpbnB1dDtcclxuXHJcbiAgICAgIGZvciAoY29uc3Qgc2VnIG9mIHNlZ21lbnRzKSB7XHJcbiAgICAgICAgaWYgKGN1ciA9PSBudWxsKSByZXR1cm4gJyc7XHJcblxyXG4gICAgICAgIGNvbnN0IGlkeCA9IE51bWJlcihzZWcpO1xyXG4gICAgICAgIGNvbnN0IGtleTogYW55ID0gTnVtYmVyLmlzTmFOKGlkeCkgPyBzZWcgOiBpZHg7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBjdXIgPSBSZWZsZWN0LmdldChjdXIsIGtleSk7XHJcbiAgICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gY3VyID8/ICcnO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -73,4 +73,4 @@ export class UserPersonalizationHelper {
|
|
|
73
73
|
type: Injectable,
|
|
74
74
|
args: [{ providedIn: 'root' }]
|
|
75
75
|
}], null, null); })();
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wZXJzb25hbGl6YXRpb24uaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2hlbHBlcnMvY29tbW9uL3VzZXItcGVyc29uYWxpemF0aW9uLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFHckUsTUFBTSxPQUFPLHlCQUF5QjtJQUR0QztRQUdtQixlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBc0VsRDtJQXBFQyx1QkFBdUIsQ0FBQyxJQUFTO1FBQy9CLE1BQU0sQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7UUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELHVCQUF1QixDQUFDLFFBQWdCLEVBQUUsV0FBbUIsRUFBRSxJQUFZLEVBQUUsTUFBcUIsRUFBRSxHQUFtQixFQUFFLFFBQXdCO1FBQy9JLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sRUFBRSx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzlILENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxJQUFTLEVBQUUsUUFBZ0IsRUFBRSxXQUFtQixFQUFF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Q1YsQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssTUFBTSxFQUFFLFdBQVcsRUFBRTtZQUN2RCxDQUFDLENBQUMsSUFBSSxDQUNUO2FBQ0EsSUFBSSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxLQUFLLEdBQUcsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRXhFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzswRkF0RVUseUJBQXlCO3VFQUF6Qix5QkFBeUIsV0FBekIseUJBQXlCLG1CQURaLE1BQU07O2lGQUNuQix5QkFBeUI7Y0FEckMsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZGJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXV0aC9pZGItc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vbiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jb21tb24nO1xuaW1wb3J0IHsgU3RvcmFnZUNvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9zdG9yYWdlLWNvbnN0YW50cyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVXNlclBlcnNvbmFsaXphdGlvbkhlbHBlciB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpZGJTZXJ2aWNlID0gaW5qZWN0KElkYlNlcnZpY2UpO1xuXG4gIHNldFVzZXJQZXJzb25hbGl6ZWREYXRhKGRhdGE6IGFueSkge1xuICAgIENvbW1vbi50YWJVc2VyUGVyc29uYWxpemVkRGF0YSA9IGRhdGE7XG4gICAgdGhpcy5pZGJTZXJ2aWNlLnNldEl0ZW0oU3RvcmFnZUNvbnN0YW50cy50YWJVc2VyUGVyc29uYWxpemVkRGF0YSwgZGF0YSk7XG4gIH1cblxuICBnZXRVc2VyUGVyc29uYWxpemVkRGF0YShzY3JlZW5JZDogc3RyaW5nLCBjb21wb25lbnRJZDogc3RyaW5nLCB0eXBlOiBudW1iZXIsIHVzZXJJZDogc3RyaW5nIHwgbnVsbCwga2V5Pzogc3RyaW5nIHwgbnVsbCwgdGVuYW50SWQ/OiBzdHJpbmcgfCBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyVXNlclBlcnNvbmFsaXplZERhdGEoQ29tbW9uPy50YWJVc2VyUGVyc29uYWxpemVkRGF0YSwgc2NyZWVuSWQsIGNvbXBvbmVudElkLCB0eXBlLCB1c2VySWQsIGtleSwgdGVuYW50SWQpO1xuICB9XG5cbiAgZmlsdGVyVXNlclBlcnNvbmFsaXplZERhdGEoZGF0YTogYW55LCBzY3JlZW5JZDogc3RyaW5nLCBjb21wb25lbnRJZDogc3RyaW5nLCB0eXBlOiBudW1iZXIsIHVzZXJJZDogc3RyaW5nIHwgbnVsbCwga2V5Pzogc3RyaW5nIHwgbnVsbCwgdGVuYW50SWQ/OiBzdHJpbmcgfCBudWxsKSB7XG4gICAgbGV0IGZpbHRlcmVkRGF0YSA9IGRhdGE/LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtPy5TY3JlZW5JZD8udG9Mb3dlckNhc2UoKSA9PT0gc2NyZWVuSWQ/LnRvTG93ZXJDYXNlKCkgJiYgaXRlbT8uQ29tcG9uZW50SWQgPT09IGNvbXBvbmVudElkICYmIGl0ZW0/LlR5cGUgPT09IHR5cGUpO1xuXG4gICAgY29uc3Qga2V5RmlsdGVyZWREYXRhID0gZmlsdGVyZWREYXRhPy5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbT8uS2V5Py50b0xvd2VyQ2FzZSgpID09PSBrZXk/LnRvTG93ZXJDYXNlKCkpO1xuICAgIGlmIChrZXlGaWx0ZXJlZERhdGE/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGZpbHRlcmVkRGF0YSA9IGtleUZpbHRlcmVkRGF0YTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmlsdGVyZWREYXRhID0gZmlsdGVyZWREYXRhPy5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbT8uS2V5ID09PSBudWxsKTtcbiAgICB9XG5cbiAgICBjb25zdCB1c2VyRmlsdGVyZWREYXRhID0gZmlsdGVyZWREYXRhPy5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbT8uVXNlcklkPy50b0xvd2VyQ2FzZSgpID09PSB1c2VySWQ/LnRvTG93ZXJDYXNlKCkpO1xuICAgIGlmICh1c2VyRmlsdGVyZWREYXRhPy5sZW5ndGggPiAwKSB7XG4gICAgICBmaWx0ZXJlZERhdGEgPSB1c2VyRmlsdGVyZWREYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0ZW5hbnREZWZhdWx0RGF0YSA9IGZpbHRlcmVkRGF0YT8uZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0/LlVzZXJJZCA9PT0gbnVsbCAmJiBpdGVtPy5SZWNvcmRJbmZvPy5UZW5hbnRJZD8udG9Mb3dlckNhc2UoKSA9PT0gdGVuYW50SWQ/LnRvTG93ZXJDYXNlKCkpO1xuICAgICAgaWYgKHRlbmFudElkICYmIHRlbmFudERlZmF1bHREYXRhPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZpbHRlcmVkRGF0YSA9IHRlbmFudERlZmF1bHREYXRhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmlsdGVyZWREYXRhID0gZmlsdGVyZWREYXRhPy5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbT8uVXNlcklkID09PSBudWxsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmlsdGVyZWREYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIGEgdXNlcidzIHBlcnNvbmFsaXplZCBkYXRhIGZvciBhIGdpdmVuIGtleSBhbmQgdHlwZS5cbiAgICogRXhlY3V0ZXMgdGhlIGZvbGxvd2luZyBzdGVwczpcbiAgICogMS4gRmlsdGVycyBvdXQgcmVjb3JkcyB3aGVyZSB0aGUgVHlwZSBkb2VzIG5vdCBtYXRjaCB0aGUgc3BlY2lmaWVkIHR5cGUuXG4gICAqIDIuIFNvcnRzIHRoZSBkYXRhIGluIGRlc2NlbmRpbmcgb3JkZXIgYmFzZWQgb24gdGhlIFVzZXJJZCBmaWVsZC4gSWYgdGhlIFVzZXJJZFxuICAgKiAgICBpcyBudWxsLCBpdCBpcyBwbGFjZWQgYXQgdGhlIGVuZCBvZiB0aGUgc29ydGVkIGFycmF5LlxuICAgKiAzLiBGaWx0ZXJzIG91dCByZWNvcmRzIHdoZXJlIHRoZSBVc2VySWQgZG9lcyBub3QgbWF0Y2ggdGhlIHNwZWNpZmllZCB1c2VySWQuXG4gICAqICAgIElmIHRoZSBVc2VySWQgaXMgbnVsbCwgdGhlIHJlY29yZCBpcyBub3QgZmlsdGVyZWQgb3V0LlxuICAgKiA0LiBGaW5kcyB0aGUgZmlyc3QgcmVjb3JkIHdoZXJlIHRoZSBLZXkgbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIGtleS5cbiAgICogQHBhcmFtIGtleSBUaGUga2V5IHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB0eXBlIFRoZSB0eXBlIG9mIGRhdGEgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHVzZXJJZCBUaGUgSUQgb2YgdGhlIHVzZXIgdG8gc2VhcmNoIGZvci5cbiAgICogQHJldHVybnMgVGhlIHVzZXIncyBwZXJzb25hbGl6ZWQgZGF0YSwgb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZC5cbiAgICogQGF1dGhvciBQYXJ0aCBCIFRoYWtrYXJcbiAgICogQGRhdGUgMjAyMy0xMS0yOFxuICAgKi9cbiAgZ2V0VXNlclBlcnNvbmFsaXplZERhdGFGcm9tS2V5KGtleTogc3RyaW5nLCB0eXBlOiBudW1iZXIsIHVzZXJJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgZGF0YSA9IChDb21tb24/LnRhYlVzZXJQZXJzb25hbGl6ZWREYXRhIHx8IFtdKVxuICAgICAgLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtPy5UeXBlID09PSB0eXBlKVxuICAgICAgLnNvcnQoXG4gICAgICAgIChhOiBhbnksIGI6IGFueSkgPT5cbiAgICAgICAgICAoYT8uVXNlcklkID09PSBudWxsID8gMSA6IDApIC0gKGI/LlVzZXJJZCA9PT0gbnVsbCA/IDEgOiAwKSB8fFxuICAgICAgICAgIChhPy5Vc2VySWQ/LnRvTG93ZXJDYXNlKCkgPT09IHVzZXJJZD8udG9Mb3dlckNhc2UoKSA/IC0xIDogMSlcbiAgICAgIClcbiAgICAgIC5maWx0ZXIoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgaXRlbT8uVXNlcklkXG4gICAgICAgICAgPyBpdGVtPy5Vc2VySWQ/LnRvTG93ZXJDYXNlKCkgPT09IHVzZXJJZD8udG9Mb3dlckNhc2UoKVxuICAgICAgICAgIDogdHJ1ZVxuICAgICAgKVxuICAgICAgLmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbT8uS2V5Py50b0xvd2VyQ2FzZSgpID09PSBrZXk/LnRvTG93ZXJDYXNlKCkpO1xuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxufSJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaW50ZXJmYWNlcy9hdXRoLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBOZXdVc2VyUmVxdWVzdCB7XG4gIHVzZXJuYW1lPzogc3RyaW5nO1xuICBlbWFpbDogc3RyaW5nO1xuICBwYXNzd29yZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2luVXNlclJlcXVlc3Qge1xuICBlbWFpbDogc3RyaW5nO1xuICBwYXNzd29yZDogc3RyaW5nO1xufVxuXG4vLyBleHBvcnQgaW50ZXJmYWNlIEZvcmdvdFBhc3N3b3JkVXNlclJlcXVlc3Qge1xuLy8gICBlbWFpbDogc3RyaW5nO1xuLy8gfVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc2V0UGFzc3dvcmRVc2VyUmVxdWVzdCB7XG4gIEVtYWlsOiBzdHJpbmcsXG4gIE5ld1Bhc3N3b3JkOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VQYXNzd29yZFVzZXJSZXF1ZXN0IHtcbiAgRW1haWw6IHN0cmluZyxcbiAgTmV3UGFzc3dvcmQ6IHN0cmluZztcbiAgQ3VycmVudFBhc3N3b3JkOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RlclRlbmFudCB7XG4gIEFkbWluRmlyc3ROYW1lOiBzdHJpbmcsXG4gIEFkbWluTGFzdE5hbWU6IHN0cmluZyxcbiAgQWRtaW5FbWFpbDogc3RyaW5nLFxuICBQYXNzd29yZDogc3RyaW5nLFxuICBUZW5hbnROYW1lOiBzdHJpbmcsXG4gIHRlcm1zOiBib29sZWFuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVmcmVzaFRva2VuUmVxdWVzdCB7XG4gIFRva2VuOiBzdHJpbmc7XG4gIFJlZnJlc2hUb2tlbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJEZXRhaWxzUmVxdWVzdCB7XG4gIFVzZXJuYW1lPzogc3RyaW5nOyBcbiAgVXNlcklkPzogc3RyaW5nXG59Il19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9pbnRlcmZhY2VzL2NvbW1vbi5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluZGl2aWR1YWxDb25maWcgfSBmcm9tIFwibmd4LXRvYXN0clwiO1xuaW1wb3J0IHsgSHR0cFJlcXVlc3RUeXBlLCBKc29uVHlwZSwgTm90aWZpY2F0aW9uVHlwZSwgUHJvY2VkdXJlT2JqZWN0VHlwZSB9IGZyb20gXCIuLi9lbnVtcy9jb21tb24uZW51bVwiO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5leHBvcnQgaW50ZXJmYWNlIEFwaVJlc3BvbnNlIHtcbiAgcmVxdWVzdElkOiBzdHJpbmc7XG4gIGlzU3VjY2VzczogYm9vbGVhbjtcbiAgcmVzdWx0OiBhbnk7XG4gIGVycm9yczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVjb3JkSW5mbyB7XG4gIGlzU3lzdGVtUmVjb3JkOiBib29sZWFuIHwgbnVsbDtcbiAgYmx1ZXByaW50SWQ6IHN0cmluZyB8IG51bGw7XG4gIGJsdWVwcmludFN0YXR1c0lkOiBzdHJpbmcgfCBudWxsO1xuICByZWNvcmRJZDogc3RyaW5nO1xuICBwcmltYXJ5S2V5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uQXBpUmVzcG9uc2Uge1xuICBSZXF1ZXN0SWQ6IHN0cmluZ1xuICBJc1N1Y2Nlc3M6IGJvb2xlYW5cbiAgUmVzdWx0OiBhbnlcbiAgU3RhdHVzQ29kZTogc3RyaW5nXG4gIFJlY29yZEFmZmVjdHRlZDogbnVtYmVyXG4gIFRvdGFsUmVjb3JkczogbnVtYmVyXG4gIFRvdGFsRXhlY3V0aW9uVGltZTogbnVtYmVyXG4gIExvZzogYW55W11cbiAgRXJyb3JzOiBhbnlbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldFNjcmVlbkNvbmZpZyB7XG4gIGxheW91dElkPzogc3RyaW5nO1xuICB2ZXJzaW9uPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc1JlcXVlc3RQYXlsb2FkIHtcbiAgU2NyZWVuSWQ6IHN0cmluZyxcbiAgRGF0YTogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGVQYXJzZVBheWxvYWQge1xuICBEYXRhU291cmNlTW9kZT86IG51bWJlcixcbiAgVmFsdWU6IHN0cmluZyxcbiAgVGVtcGxhdGV2YXJpYWJsZXM6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5leHRTdGF0dXNQYXlsb2FkIHtcbiAgcmVjb3JkSWQ6IHN0cmluZyxcbiAgYXBwT2JqZWN0SWQ/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVTdGF0dXNQYXlsb2FkIGV4dGVuZHMgTmV4dFN0YXR1c1BheWxvYWQge1xuICBuZXh0UG9zc2libGVTdGF0dXNJZDogc3RyaW5nLFxuICBvcHRpb25zPzogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0ZXJBcHBPYmplY3RzUGF5bG9hZCB7XG4gIENvbm5lY3Rpb25JZDogc3RyaW5nLFxuICBUYWJsZXM6IHN0cmluZ1tdLFxuICBWaWV3czogc3RyaW5nW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbG9uZURzcVBheWxvYWQge1xuICBEU1FJZDogc3RyaW5nLFxuICBRdWVyeU5hbWU6IHN0cmluZyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXREYXRhSnNvbkJ5VHlwZVBheWxvYWQge1xuICBKc29uVHlwZTogSnNvblR5cGUsXG4gIFJlcXRva2Vucz86IGFueVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN5bmNBcHBGaWVsZHNQYXlsb2FkIHtcbiAgQ29ubmVjdGlvbklkOiBzdHJpbmc7XG4gIEFwcE9iamVjdElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVmcmVzaEdsb2JhbFNlYXJjaERhdGFQYXlsb2FkIHtcbiAgUXVlcnlPYmplY3RJRDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlZnJlc2hSZWNvcmRJbmZvRGF0YVBheWxvYWQge1xuICBRdWVyeU9iamVjdElEOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBsb2FkTWVkaWFGaWxlUGF5bG9hZCB7XG4gIEJhc2U2NFN0cmluZzogc3RyaW5nO1xuICBGaWxlTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwbG9hZE1lZGlhRmlsZXNQYXlsb2FkIHtcbiAgVXBsb2FkRmlsZXM6IFVwbG9hZE1lZGlhRmlsZVBheWxvYWRbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFBheWxvYWQge1xuICBEYXRhUmVwb3J0SWQ6IHN0cmluZyxcbiAgUmVxdG9rZW5zOiBhbnlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZXJmb3JtYW5jZUFuYWx5dGljc1BheWxvYWQge1xuICB0eXBlOiBzdHJpbmcsXG4gIHZhbHVlOiBzdHJpbmcsXG4gIGZyb21EYXRlOiBzdHJpbmcsXG4gIHRvRGF0ZTogc3RyaW5nLFxuICBsaW1pdD86IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmVlblBlcmZvcm1hbmNlUGF5bG9hZCB7XG4gIHZhbHVlOiBzdHJpbmcsXG4gIGxvYWRUaW1lOiBudW1iZXIsXG4gIHRhZ3M6IHtcbiAgICBkc3FJZHM6IHN0cmluZ1tdLFxuICAgIGFwcE9iamVjdElkczogc3RyaW5nW11cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIHRyYW5zbGF0ZVBheWxvYWQge1xuICBsYW5ndWFnZTogc3RyaW5nO1xuICBsYW5ndWFnZUNvZGU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlTm90aWZpY2F0aW9uT3B0aW9ucyB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIGNvbmZpZ3VyYXRpb24/OiBQYXJ0aWFsPEluZGl2aWR1YWxDb25maWc8YW55Pj4gfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uT3B0aW9ucyBleHRlbmRzIEJhc2VOb3RpZmljYXRpb25PcHRpb25zIHtcbiAgdHlwZTogTm90aWZpY2F0aW9uVHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25maXJtYXRpb25PcHRpb25zIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBwcmltYXJ5T3B0aW9uPzogc3RyaW5nO1xuICBzZWNvbmRhcnlPcHRpb24/OiBzdHJpbmc7XG4gIGRpc3BsYXlIZWFkZXI/OiBib29sZWFuO1xuICBkaXNwbGF5Rm9vdGVyPzogYm9vbGVhbjtcbiAgZGlzcGxheUJvZHk/OiBib29sZWFuO1xuICBkaXNwbGF5UHJpbWFyeUJ1dHRvbj86IGJvb2xlYW47XG4gIGRpc3BsYXlTZWNvbmRhcnlCdXR0b24/OiBib29sZWFuO1xuICBkaXNwbGF5Q2xvc2VCdXR0b24/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENydWRCYXNlUGF5bG9hZCB7XG4gIGFwcE9iamVjdElkT3JOYW1lPzogc3RyaW5nO1xuICBkYXRhU291cmNlUXVlcnlJZE9yTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnNlcnRQYXlsb2FkIGV4dGVuZHMgQ3J1ZEJhc2VQYXlsb2FkIHtcbiAgZGF0YTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVBheWxvYWQgZXh0ZW5kcyBJbnNlcnRQYXlsb2FkIHtcbiAgY3JpdGVyaWE6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZWxldGVQYXlsb2FkIGV4dGVuZHMgQ3J1ZEJhc2VQYXlsb2FkIHtcbiAgY3JpdGVyaWE6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRQYXlsb2FkIHtcbiAgZGF0YVNvdXJjZVF1ZXJ5SWRPck5hbWU6IHN0cmluZztcbiAgY3JpdGVyaWE6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbXByb3REYXRhUGF5bG9hZCB7XG4gIEltcG9ydE9iamVjdE1hcHBpbmdJZDogc3RyaW5nO1xuICBGaWxlOiBzdHJpbmc7XG4gIEltcG9ydFR5cGU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hEYXRhUGF5bG9hZCB7XG4gIHNlYXJjaFF1ZXJ5OiBzdHJpbmc7XG4gIGxpbWl0OiBudW1iZXI7XG4gIGFwcE9iamVjdElkPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmNvcmRIaXN0b3J5UGF5bG9hZCB7XG4gIGFwcE9iamVjdElkOiBzdHJpbmc7XG4gIHJlY29yZElkczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cEV4ZWN1dGVSZXF1ZXN0UGF5bG9hZCB7XG4gIGZ1bGxVcmw6IHN0cmluZyxcbiAgbWV0aG9kOiBIdHRwUmVxdWVzdFR5cGUsXG4gIGhlYWRlcnM/OiBhbnksXG4gIGJvZHk/OiBhbnlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBleGVjdXRlU3RvcmVkUHJvY2VkdXJlUGF5bG9hZCB7XG4gIE9iamVjdE5hbWU6IHN0cmluZztcbiAgT2JqZWN0VHlwZTogUHJvY2VkdXJlT2JqZWN0VHlwZVxuICBQYXJhbWV0ZXJzPzogYW55O1xufVxuIl19
|