@eo-sdk/client 7.12.0-rc.1 → 7.13.0-rc.2
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/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts +3 -1
- package/app/eo-framework/stored-query/stored-query/stored-query.component.d.ts +3 -1
- package/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.d.ts +3 -1
- package/app/eo-framework/ui/query-scope-select/query-scope-select.component.d.ts +11 -0
- package/app/eo-framework-core/search/app-search.service.d.ts +2 -1
- package/assets/_default/config/main.json +2 -1
- package/assets/_default/i18n/de.json +7 -4
- package/assets/_default/i18n/en.json +158 -155
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js +26 -4
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js.map +1 -1
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js +2 -2
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js.map +1 -1
- package/bundles/eo-sdk-client.umd.js +133 -76
- package/bundles/eo-sdk-client.umd.js.map +1 -1
- package/bundles/eo-sdk-client.umd.min.js +1 -1
- package/bundles/eo-sdk-client.umd.min.js.map +1 -1
- package/eo-sdk-client.d.ts +63 -62
- package/eo-sdk-client.metadata.json +1 -1
- package/esm2015/app/eo-client/about-state/about-state.component.js +3 -3
- package/esm2015/app/eo-framework/app-shell/app-bar/app-search/app-search.component.js +7 -3
- package/esm2015/app/eo-framework/form-elements/checkbox/checkbox.component.js +2 -2
- package/esm2015/app/eo-framework/grid/extensions/filter/text/text-filter.component.js +5 -5
- package/esm2015/app/eo-framework/stored-query/stored-query/stored-query.component.js +9 -3
- package/esm2015/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.js +7 -2
- package/esm2015/app/eo-framework/ui/query-scope-select/query-scope-select.component.js +31 -0
- package/esm2015/app/eo-framework/ui/ui.module.js +6 -3
- package/esm2015/app/eo-framework-core/search/app-search.service.js +6 -1
- package/esm2015/eo-sdk-client.js +64 -63
- package/esm2015/projects/eo-sdk/core/lib/service/auth/auth.service.js +13 -5
- package/esm2015/projects/eo-sdk/core/lib/service/config/config.service.js +5 -1
- package/esm2015/projects/eo-sdk/core/lib/service/search/search-query.model.js +10 -1
- package/esm2015/projects/eo-sdk/core/lib/service/search/search.service.js +2 -1
- package/esm2015/projects/eo-sdk/core/lib/service/stored-queries/stored-query.model.js +2 -1
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js +28 -5
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js.map +1 -1
- package/fesm2015/eo-sdk-client.js +67 -16
- package/fesm2015/eo-sdk-client.js.map +1 -1
- package/package.json +2 -2
- package/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.metadata.json +1 -1
- package/projects/eo-sdk/core/lib/service/auth/auth.service.d.ts +1 -0
- package/projects/eo-sdk/core/lib/service/config/config.service.d.ts +1 -0
- package/projects/eo-sdk/core/lib/service/search/search-query.model.d.ts +9 -0
- package/projects/eo-sdk/core/package.json +1 -1
|
@@ -104,6 +104,7 @@ export class SearchService {
|
|
|
104
104
|
if (qObj.options) {
|
|
105
105
|
q.suggest = qObj.options.suggest || false;
|
|
106
106
|
q.expertMode = qObj.options.expertmode || false;
|
|
107
|
+
q.scope = qObj.options.scope;
|
|
107
108
|
q.resolveReference = qObj.options.resolveReference || true;
|
|
108
109
|
q.searchMode =
|
|
109
110
|
qObj.options.searchmode || SearchQuery.DEFAULT_SEARCH_MODE;
|
|
@@ -458,4 +459,4 @@ SearchService.ctorParameters = () => [
|
|
|
458
459
|
{ type: BackendService },
|
|
459
460
|
{ type: Config }
|
|
460
461
|
];
|
|
461
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2Uvc2VhcmNoL3NlYXJjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxLQUFLLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFFeEMsT0FBTyxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDekQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN2QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUV2RCxPQUFPLEVBQ0wsZUFBZSxFQUNmLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLFdBQVcsRUFDWixNQUFNLHNCQUFzQixDQUFDO0FBRTlCOzs7R0FHRztBQUVILE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFlBQ1UsTUFBcUIsRUFDckIsT0FBdUIsRUFDdkIsTUFBYztRQUZkLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUNyQixDQUFDO0lBRUo7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQVU7UUFDbkMsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLEtBQUssWUFB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RyxDQUFDLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQixDQUFDOzs7WUF4bEJGLFVBQVU7OztZQWRILGFBQWE7WUFGYixjQUFjO1lBQ2QsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cFJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIEZpbGVTYXZlciBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHttYXAsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge09iamVjdFR5cGV9IGZyb20gJy4uLy4uL21vZGVsL29iamVjdC10eXBlLm1vZGVsJztcclxuaW1wb3J0IHtSYW5nZVZhbHVlfSBmcm9tICcuLi8uLi9tb2RlbC9yYW5nZS12YWx1ZS5tb2RlbCc7XHJcbmltcG9ydCB7VXRpbHN9IGZyb20gJy4uLy4uL3V0aWwvdXRpbHMnO1xyXG5pbXBvcnQge0JhY2tlbmRTZXJ2aWNlfSBmcm9tICcuLi9iYWNrZW5kL2JhY2tlbmQuc2VydmljZSc7XHJcbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcvY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQge1N5c3RlbVNlcnZpY2V9IGZyb20gJy4uL3N5c3RlbS9zeXN0ZW0uc2VydmljZSc7XHJcbmltcG9ydCB7U2VhcmNoRmlsdGVyVHlwZX0gZnJvbSAnLi9zZWFyY2gtZmlsdGVyLXR5cGUuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtcclxuICBGaWVsZERlZmluaXRpb24sXHJcbiAgU2VhcmNoRmlsdGVyLFxyXG4gIFNlYXJjaFF1ZXJ5LFxyXG4gIFNlYXJjaFJlc3VsdCxcclxuICBTZWFyY2hTdGF0ZVxyXG59IGZyb20gJy4vc2VhcmNoLXF1ZXJ5Lm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBDb2xsZWN0aW9uIG9mIFNlYXJjaCBTZXJ2aWNlc1xyXG4gKiBTZWUge0BsaW5rIFNlYXJjaFF1ZXJ5fSBmb3IgUXVlcnkgRGVmaW5pdGlvblxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2VhcmNoU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHN5c3RlbTogU3lzdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpZzogQ29uZmlnXHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgUmFuZ2VWYWx1ZSBpbnN0YW5jZSBmcm9tIHRoZSBnaXZlbiB2YWx1ZSBvYmplY3QuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIG9iamVjdCB0byBiZVxyXG4gICAqIEByZXR1cm5zIFJhbmdlVmFsdWVcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIHRvUmFuZ2VWYWx1ZSh2YWx1ZTogYW55KTogUmFuZ2VWYWx1ZSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgUmFuZ2VWYWx1ZSkge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICB2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnb3BlcmF0b3InKSAmJlxyXG4gICAgICAgIHZhbHVlLmhhc093blByb3BlcnR5KCdmaXJzdFZhbHVlJylcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBSYW5nZVZhbHVlKFxyXG4gICAgICAgICAgdmFsdWUub3BlcmF0b3IsXHJcbiAgICAgICAgICB2YWx1ZS5maXJzdFZhbHVlLFxyXG4gICAgICAgICAgdmFsdWUuc2Vjb25kVmFsdWVcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgZnJvbWF0ZWQgc2VhcmNoIFF1ZXJ5XHJcbiAgICpcclxuICAgKiBAcGFyYW0gcXVlcnlcclxuICAgKiBAcmV0dXJucyBTZWFyY2hRdWVyeVxyXG4gICAqL1xyXG4gIHB1YmxpYyBidWlsZFF1ZXJ5KHF1ZXJ5OiBhbnkpOiBTZWFyY2hRdWVyeSB7XHJcbiAgICBsZXQgcTogU2VhcmNoUXVlcnk7XHJcbiAgICBpZiAocXVlcnkgaW5zdGFuY2VvZiBTZWFyY2hRdWVyeSkge1xyXG4gICAgICBxID0gcXVlcnk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgcU9iajtcclxuICAgICAgLyoqXHJcbiAgICAgICAqIGlmIHdlIGdvdCBhIHN0cmluZywgd2UnbGwgYXNzdW1lIHRoYXQgaXQncyBhIEpTT05cclxuICAgICAgICovXHJcbiAgICAgIGlmICh0eXBlb2YgcXVlcnkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgcU9iaiA9IEpTT04ucGFyc2UocXVlcnkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHFPYmogPSBxdWVyeTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcSA9IG5ldyBTZWFyY2hRdWVyeSgpO1xyXG4gICAgICBxLnRlcm0gPSBxT2JqLnRlcm07XHJcbiAgICAgIGlmIChxT2JqLmZpbHRlcnMpIHtcclxuICAgICAgICBPYmplY3Qua2V5cyhxT2JqLmZpbHRlcnMpLmZvckVhY2goayA9PiB7XHJcbiAgICAgICAgICBxLmZpbHRlcnMucHVzaChcclxuICAgICAgICAgICAgbmV3IFNlYXJjaEZpbHRlcihcclxuICAgICAgICAgICAgICBrLFxyXG4gICAgICAgICAgICAgIHFPYmouZmlsdGVyc1trXS5vLFxyXG4gICAgICAgICAgICAgIHFPYmouZmlsdGVyc1trXS52MSxcclxuICAgICAgICAgICAgICBxT2JqLmZpbHRlcnNba10udjJcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocU9iai50eXBlcykge1xyXG4gICAgICAgIHFPYmoudHlwZXMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLnN5c3RlbS5nZXRPYmplY3RUeXBlKHQpKSB7XHJcbiAgICAgICAgICAgIHEudHlwZXMucHVzaCh0aGlzLnN5c3RlbS5nZXRPYmplY3RUeXBlKHQpKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHEudHlwZXMucHVzaCh0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocU9iai5jb250ZXh0Zm9sZGVydHlwZXMpIHtcclxuICAgICAgICBxT2JqLmNvbnRleHRmb2xkZXJ0eXBlcy5mb3JFYWNoKHQgPT4ge1xyXG4gICAgICAgICAgaWYgKHQgPT09ICdzeXNyb290Jykge1xyXG4gICAgICAgICAgICAvLyAnc3lzcm9vdCcgaXMgbm90IGEgcmVhbCBvYmplY3QgdHlwZSwgc28gd2UgaGF2ZSB0byBjcmVhdGUgYSBmYWtlIHR5cGUuXHJcbiAgICAgICAgICAgIGNvbnN0IHN5c3Jvb3RGYWtlT2JqZWN0VHlwZSA9IG5ldyBPYmplY3RUeXBlKHtcclxuICAgICAgICAgICAgICBpZDogJ2EnLFxyXG4gICAgICAgICAgICAgIGZvbGRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgICBuYW1lOiAnc3lzcm9vdCcsXHJcbiAgICAgICAgICAgICAgcW5hbWU6ICdzeXNyb290JyxcclxuICAgICAgICAgICAgICBsYWJlbDogJ3N5c3Jvb3QnLFxyXG4gICAgICAgICAgICAgIGlzY29udGV4dGZvbGRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgICBhYnN0cmFjdDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgZWxlbWVudHM6IFtdLFxyXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcclxuICAgICAgICAgICAgICBzaGFyZWFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIG1pbmZpbGVzOiAwLFxyXG4gICAgICAgICAgICAgIG1heGZpbGVzOiAxXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBxLmNvbnRleHRGb2xkZXJUeXBlcy5wdXNoKHN5c3Jvb3RGYWtlT2JqZWN0VHlwZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBxLmNvbnRleHRGb2xkZXJUeXBlcy5wdXNoKHRoaXMuc3lzdGVtLmdldE9iamVjdFR5cGUodCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHEuZmllbGRzID0gcU9iai5maWVsZHM7XHJcbiAgICAgIGlmIChxT2JqLm9wdGlvbnMpIHtcclxuICAgICAgICBxLnN1Z2dlc3QgPSBxT2JqLm9wdGlvbnMuc3VnZ2VzdCB8fCBmYWxzZTtcclxuICAgICAgICBxLmV4cGVydE1vZGUgPSBxT2JqLm9wdGlvbnMuZXhwZXJ0bW9kZSB8fCBmYWxzZTtcclxuICAgICAgICBxLnJlc29sdmVSZWZlcmVuY2UgPSBxT2JqLm9wdGlvbnMucmVzb2x2ZVJlZmVyZW5jZSB8fCB0cnVlO1xyXG4gICAgICAgIHEuc2VhcmNoTW9kZSA9XHJcbiAgICAgICAgICBxT2JqLm9wdGlvbnMuc2VhcmNobW9kZSB8fCBTZWFyY2hRdWVyeS5ERUZBVUxUX1NFQVJDSF9NT0RFO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHE7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeGVjdXRlcyBhIHF1ZXJ5LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHF1ZXJ5IFRoZSBxdWVyeSB0byBiZSBleGVjdXRlZFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8U2VhcmNoUmVzdWx0PlxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZWFyY2gocXVlcnk6IFNlYXJjaFF1ZXJ5KTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHQ+IHtcclxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVRdWVyeShxdWVyeS5nZXRRdWVyeUpzb24oKSkucGlwZShcclxuICAgICAgbWFwKHJlcyA9PiB0aGlzLmNyZWF0ZVJlc3VsdEZyb21SZXNwb25zZShyZXMpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlIFNlYXJjaCByZXN1bHRzXHJcbiAgICovXHJcbiAgcHVibGljIGdldFNlYXJjaFN0YXRlKHF1ZXJ5OiBhbnkpOiBPYnNlcnZhYmxlPFNlYXJjaFN0YXRlPiB7XHJcbiAgICBcclxuICAgIGlmKHF1ZXJ5IGluc3RhbmNlb2YgU2VhcmNoUXVlcnkpIHtcclxuICAgICAgcXVlcnkgPSBxdWVyeS5nZXRRdWVyeUpzb24oKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVRdWVyeShxdWVyeSwgdHJ1ZSkucGlwZShcclxuICAgICAgbWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHN0YXRlID0gbmV3IFNlYXJjaFN0YXRlKCk7XHJcbiAgICAgICAgc3RhdGUuY291bnQgPSByZXMuaGl0cy50b3RhbDtcclxuICAgICAgICBPYmplY3Qua2V5cyhTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUykuZm9yRWFjaChrID0+IHtcclxuICAgICAgICAgIGNvbnN0IGJhc2VQYXJhbSA9IFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TW2tdO1xyXG4gICAgICAgICAgY29uc3QgYWdncmVnYXRpb25zID0gcmVzLmFnZ3JlZ2F0aW9uc1tiYXNlUGFyYW1dXHJcbiAgICAgICAgICAgID8gcmVzLmFnZ3JlZ2F0aW9uc1tiYXNlUGFyYW1dLmJ1Y2tldHNcclxuICAgICAgICAgICAgOiBbXTtcclxuICAgICAgICAgIGFnZ3JlZ2F0aW9ucy5mb3JFYWNoKGFnZ3JlZ2F0aW9uID0+IHtcclxuICAgICAgICAgICAgY29uc3Qge2tleSwgZG9jX2NvdW50LCBjb250ZXh0Zm9sZGVydHlwZX0gPSBhZ2dyZWdhdGlvbjtcclxuICAgICAgICAgICAgc3RhdGUuYWRkQWdncmVnYXRpb25zKGJhc2VQYXJhbSwga2V5LCBkb2NfY291bnQsIGFnZ3JlZ2F0aW9uKTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIHR5cGUgYWdncmVnYXRpb25zIG1heSBhbHNvIGNvbnRhaW4gYnVja2V0cyBmb3IgdGhlaXIgY29udGV4dCB0eXBlc1xyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIGJhc2VQYXJhbSA9PT0gU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuVFlQRSAmJlxyXG4gICAgICAgICAgICAgIGNvbnRleHRmb2xkZXJ0eXBlXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGNvbnRleHRmb2xkZXJ0eXBlLmJ1Y2tldHMuZm9yRWFjaChjdHhBZ2cgPT4ge1xyXG4gICAgICAgICAgICAgICAgc3RhdGUuYWRkQWdncmVnYXRpb25zKFxyXG4gICAgICAgICAgICAgICAgICAnY29udGV4dHR5cGUnLFxyXG4gICAgICAgICAgICAgICAgICBjdHhBZ2cua2V5LFxyXG4gICAgICAgICAgICAgICAgICBjdHhBZ2cuZG9jX2NvdW50LFxyXG4gICAgICAgICAgICAgICAgICBjdHhBZ2dcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gc3RhdGU7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyBhIHBhcnQgb2YgYSBxdWVyaWVzIHJlc3VsdC4gVGhpcyBjYW4gYmUgdXNlZCBmb3IgcGFnaW5nIG9mIHJlc3VsdHNcclxuICAgKiBvciBsYXp5IGxvYWRpbmcgbGFyZ2UgcmVzdWx0cy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBxdWVyeSBUaGUgcXVlcnkgdG8gYmUgZXhlY3V0ZWRcclxuICAgKiBAcGFyYW0gZnJvbUluZGV4IFRoZSBpbmRleCBmcm9tIHdoZXJlIHRvIGZldGNoIHJlc3VsdHNcclxuICAgKiBAcGFyYW0gY2h1bmtTaXplIFNpemUgb2YgdGhlIGNodW5rIHRvIGJlIGZldGNoZWRcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPFNlYXJjaFJlc3VsdD5cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0Q2h1bmtlZFJlc3VsdChcclxuICAgIHF1ZXJ5OiBTZWFyY2hRdWVyeSxcclxuICAgIGZyb21JbmRleDogbnVtYmVyLFxyXG4gICAgY2h1bmtTaXplOiBudW1iZXJcclxuICApOiBPYnNlcnZhYmxlPFNlYXJjaFJlc3VsdD4ge1xyXG4gICAgY29uc3QgcSA9IHF1ZXJ5LmdldFF1ZXJ5SnNvbigpO1xyXG5cclxuICAgIHEuZnJvbSA9IGZyb21JbmRleDtcclxuICAgIGNvbnN0IHF1ZXJ5VXJpID0gYHNlYXJjaCFjaHVuazoke2NodW5rU2l6ZX0hJHtKU09OLnN0cmluZ2lmeShxKX1gO1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRWaWFUZW1wQ2FjaGUocXVlcnlVcmksICgpID0+XHJcbiAgICAgIHRoaXMuZXhlY3V0ZVF1ZXJ5KHEsIGZhbHNlLCBjaHVua1NpemUpLnBpcGUoXHJcbiAgICAgICAgbWFwKHJlcyA9PiB0aGlzLmNyZWF0ZVJlc3VsdEZyb21SZXNwb25zZShyZXMpKVxyXG4gICAgICApXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZXMgYSBxdWVyeVxyXG4gICAqXHJcbiAgICogQHBhcmFtIHF1ZXJ5SnNvbiBUaGUgcXVlcnkgSlNPTiB0byBiZSBleGVjdXRlZFxyXG4gICAqIEBwYXJhbSBhZ2dyZWdhdGVTZWFyY2ggRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IHRvIGV4ZWN1dGUgYW4gYWdncmVnYXRpb24gc2VhcmNoIChubyBhY3R1YWwgcmVzdWx0cylcclxuICAgKiBAcGFyYW0gY3VzdG9tU2l6ZSBDdXN0b20gbnVtYmVyIG9mIHJlc3VsdHMgdG8gYmUgZmV0Y2hlZCwgaWYgbm90IHNldCB0aGUgZGVmYXVsdCBzaXplIHdpbGwgYmUgYXBwbGllZFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxyXG4gICAqL1xyXG4gIHB1YmxpYyBleGVjdXRlUXVlcnkoXHJcbiAgICBxdWVyeUpzb246IGFueSxcclxuICAgIGFnZ3JlZ2F0ZVNlYXJjaD86IGJvb2xlYW4sXHJcbiAgICBjdXN0b21TaXplPzogbnVtYmVyXHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGxldCB1cmk6IHN0cmluZztcclxuICAgIGxldCBxdWVyeSA9IHF1ZXJ5SnNvbjtcclxuICAgIGlmIChhZ2dyZWdhdGVTZWFyY2gpIHtcclxuICAgICAgdXJpID0gYC9hZ2dyZWdhdGVgO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3Qgc2l6ZSA9IGN1c3RvbVNpemUgfHwgdGhpcy5jb25maWcuZ2V0UmF3KCdzZWFyY2gubGltaXQnKTtcclxuICAgICAgdXJpID0gYC8/c2l6ZT0ke3NpemV9YDtcclxuICAgIH1cclxuICAgIHF1ZXJ5Lm9wdGlvbnMgPSB7Li4ucXVlcnkub3B0aW9ucywgdHJhY2t0b3RhbGhpdHM6IHRoaXMuY29uZmlnLmdldFJhdygnc2VhcmNoLnRyYWNrVG90YWxIaXRzJykgfHwgZmFsc2UsIHRpbWV6b25lOiBVdGlscy5nZXRUaW1lem9uZU9mZnNldCgpfTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldFZpYVRlbXBDYWNoZSh1cmkgKyBKU09OLnN0cmluZ2lmeShxdWVyeSksICgpID0+IHRoaXMuYmFja2VuZC5wb3N0KHVyaSwgcXVlcnksIHRoaXMuYmFja2VuZC5nZXRTZWFyY2hCYXNlKCkpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERvd25sb2FkcyBhIGNzdi1maWxlIG9mIHRoZSByZXN1bHRzIG9mIGEgZ2l2ZW4gc2VhcmNoLXF1ZXJ5XHJcbiAgICpcclxuICAgKiBAcGFyYW0gcXVlcnlKc29uIFRoZSBxdWVyeSBKU09OIHRvIGJlIGV4ZWN1dGVkXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICovXHJcbiAgcHVibGljIGRvd25sb2FkQ3N2RnJvbVF1ZXJ5KHF1ZXJ5SnNvbjogb2JqZWN0KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcclxuICAgICAgLnBvc3QoJy9leHBvcnQnLCBxdWVyeUpzb24sIHRoaXMuYmFja2VuZC5nZXRTZWFyY2hCYXNlKCksIHtcclxuICAgICAgICBvYnNlcnZlOiAncmVzcG9uc2UnLFxyXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRhcChyZXMgPT4ge1xyXG4gICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtyZXMuYm9keV0sIHtcclxuICAgICAgICAgICAgdHlwZTogJ3RleHQvcGxhaW47Y2hhcnNldD11dGYtOCdcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgRmlsZVNhdmVyLnNhdmVBcyhibG9iLCB0aGlzLmdldEZpbGVOYW1lRnJvbUh0dHBSZXNwb25zZShyZXMpKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGaWxlTmFtZUZyb21IdHRwUmVzcG9uc2UocmVzOiBIdHRwUmVzcG9uc2U8YW55Pikge1xyXG4gICAgY29uc3QgY29udGVudERpc3Bvc2l0aW9uSGVhZGVyID1cclxuICAgICAgcmVzLmhlYWRlcnMuZ2V0KCdDb250ZW50LURpc3Bvc2l0aW9uJykgfHwgJyc7XHJcbiAgICByZXR1cm4gY29udGVudERpc3Bvc2l0aW9uSGVhZGVyLnNwbGl0KCdmaWxlbmFtZT0nKVsxXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4ZWN1dGVzIGEgc2VhcmNoIGZvciBmZXRjaGluZyBzdWdnZXN0aW9ucyBvbiBhIGdpdmVuIHNlYXJjaCB0ZXJtLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHRlcm0gVGhlIHNlYXJjaCB0ZXJtXHJcbiAgICogQHJldHVyblxyXG4gICAqL1xyXG4gIHB1YmxpYyBhdXRvY29tcGxldGUodGVybTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldEpzb24oXHJcbiAgICAgIGAvYXV0b2NvbXBsZXRlP3ByZWZpeD0ke2VuY29kZVVSSUNvbXBvbmVudCh0ZXJtKX1gLFxyXG4gICAgICB0aGlzLmJhY2tlbmQuZ2V0U2VhcmNoQmFzZSgpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXNlIHRoaXMgbWV0aG9kIHRvIGNyZWF0ZSBhIFNlYXJjaEZpbHRlciBmb3IgYSBmb3JtIGVsZW1lbnQuIEJhc2VkIG9uIHRoZSB0YXJnZXQgdHlwZXNcclxuICAgKiBpdCdsbCBjcmVhdGUgdGhlIHJpZ2h0IGtpbmQgb2YgZmlsdGVyIHRoYXQgeW91IHRoZW4gY2FuIGFkZCB0byBhIFNlYXJjaFF1ZXJ5XHJcbiAgICpcclxuICAgKiBAcGFyYW0gdGFyZ2V0VHlwZXNcclxuICAgKiBAcGFyYW0gZm9ybUVsZW1lbnROYW1lXHJcbiAgICogQHBhcmFtIGVsZW1lbnRWYWx1ZVxyXG4gICAqIEByZXR1cm5zIFNlYXJjaEZpbHRlcltdIEFuIGFycmF5IG9mIHNlYXJjaCBmaWx0ZXJzIG1vc3Qgb2YgdGhlIHRpbWUgY29udGFpbmluZyBvbmx5IG9uZSBlbnRyeSwgYnV0XHJcbiAgICogZm9yIHRhYmxlIGVsZW1lbnRzIHRoaXMgY291bGQgYmUgbW9yZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRTZWFyY2hGaWx0ZXIoXHJcbiAgICB0YXJnZXRUeXBlczogT2JqZWN0VHlwZVtdLFxyXG4gICAgZm9ybUVsZW1lbnROYW1lOiBzdHJpbmcsXHJcbiAgICBlbGVtZW50VmFsdWU6IGFueVxyXG4gICk6IFNlYXJjaEZpbHRlcltdIHtcclxuICAgIGNvbnN0IGZpbHRlcjogU2VhcmNoRmlsdGVyW10gPSBbXTtcclxuICAgIGNvbnN0IGZpbHRlclR5cGU6IFNlYXJjaEZpbHRlclR5cGUgPSB0aGlzLmlkZW50aWZ5U2VhcmNoRmlsdGVyKFxyXG4gICAgICB0YXJnZXRUeXBlcyxcclxuICAgICAgZm9ybUVsZW1lbnROYW1lXHJcbiAgICApO1xyXG4gICAgY29uc3QgZm9ybUVsZW1lbnQgPSB0YXJnZXRUeXBlc1swXS5lbGVtZW50cy5maW5kKGVsID0+IGVsLnFuYW1lID09PSBmb3JtRWxlbWVudE5hbWUpO1xyXG5cclxuICAgIGlmIChlbGVtZW50VmFsdWUgPT09IG51bGwpIHtcclxuICAgICAgZmlsdGVyLnB1c2goXHJcbiAgICAgICAgbmV3IFNlYXJjaEZpbHRlcihmb3JtRWxlbWVudE5hbWUsIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5FUVVBTCwgbnVsbClcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSBpZiAoZm9ybUVsZW1lbnQgJiYgZm9ybUVsZW1lbnQuY2xhc3NpZmljYXRpb24gPT09ICdwYXRoJykge1xyXG4gICAgICBmaWx0ZXIucHVzaChcclxuICAgICAgICBuZXcgU2VhcmNoRmlsdGVyKFxyXG4gICAgICAgICAgZm9ybUVsZW1lbnROYW1lLFxyXG4gICAgICAgICAgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLk1BVENILFxyXG4gICAgICAgICAgZWxlbWVudFZhbHVlXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmIChlbGVtZW50VmFsdWUgaW5zdGFuY2VvZiBSYW5nZVZhbHVlKSB7XHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBjcmVhdGUgZmlsdGVyIGZvciBlbGVtZW50cyB0aGF0IHN1cHBvcnQgcmFuZ2VzIGxpa2UgREFURVRJTUUgYW5kIE5VTUJFUlxyXG4gICAgICAgKi9cclxuICAgICAgaWYgKFxyXG4gICAgICAgIGVsZW1lbnRWYWx1ZS5maXJzdFZhbHVlICE9PSBudWxsICYmXHJcbiAgICAgICAgZWxlbWVudFZhbHVlLmZpcnN0VmFsdWUgIT09IHVuZGVmaW5lZFxyXG4gICAgICApIHtcclxuICAgICAgICBmaWx0ZXIucHVzaChcclxuICAgICAgICAgIG5ldyBTZWFyY2hGaWx0ZXIoXHJcbiAgICAgICAgICAgIGZvcm1FbGVtZW50TmFtZSxcclxuICAgICAgICAgICAgZWxlbWVudFZhbHVlLm9wZXJhdG9yLFxyXG4gICAgICAgICAgICBlbGVtZW50VmFsdWUuZmlyc3RWYWx1ZSxcclxuICAgICAgICAgICAgZWxlbWVudFZhbHVlLnNlY29uZFZhbHVlLFxyXG4gICAgICAgICAgICBmaWx0ZXJUeXBlLmRhdGV0aW1lID8ge3RpbWU6IGZpbHRlclR5cGUud2l0aHRpbWV9IDogdW5kZWZpbmVkXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICgoZmlsdGVyVHlwZS5tdWx0aXNlbGVjdCB8fCBBcnJheS5pc0FycmF5KGVsZW1lbnRWYWx1ZSkpICYmICFmaWx0ZXJUeXBlLnRhYmxlKSB7XHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBjcmVhdGUgZmlsdGVyIGZvciBtdWx0aXNlbGVjdCBlbGVtZW50cyBsaWtlIENPREVTWVNURU0gYW5kIE9SR0FOSVpBVElPTlxyXG4gICAgICAgKi9cclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZWxlbWVudFZhbHVlKSAmJiBlbGVtZW50VmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgICAgZmlsdGVyLnB1c2goXHJcbiAgICAgICAgICBuZXcgU2VhcmNoRmlsdGVyKFxyXG4gICAgICAgICAgICBmb3JtRWxlbWVudE5hbWUsXHJcbiAgICAgICAgICAgIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5JTixcclxuICAgICAgICAgICAgZWxlbWVudFZhbHVlXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChmaWx0ZXJUeXBlLnRhYmxlKSB7XHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBjcmVhdGUgZmlsdGVyKHMpIGZvciB0YWJsZSBlbGVtZW50c1xyXG4gICAgICAgKi9cclxuICAgICAgY29uc3QgcXVlcnlSb3cgPSBlbGVtZW50VmFsdWVbMF07XHJcbiAgICAgIE9iamVjdC5rZXlzKHF1ZXJ5Um93KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICBpZihxdWVyeVJvd1trZXldICE9PSB1bmRlZmluZWQpe1xyXG4gICAgICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gYCR7Zm9ybUVsZW1lbnROYW1lfS4ke2tleX1gO1xyXG4gICAgICAgICAgaWYgKHF1ZXJ5Um93W2tleV0gaW5zdGFuY2VvZiBSYW5nZVZhbHVlKSB7XHJcbiAgICAgICAgICAgIGZpbHRlci5wdXNoKFxyXG4gICAgICAgICAgICAgIG5ldyBTZWFyY2hGaWx0ZXIoXHJcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWUsXHJcbiAgICAgICAgICAgICAgICBxdWVyeVJvd1trZXldLm9wZXJhdG9yLFxyXG4gICAgICAgICAgICAgICAgcXVlcnlSb3dba2V5XS5maXJzdFZhbHVlLFxyXG4gICAgICAgICAgICAgICAgcXVlcnlSb3dba2V5XS5zZWNvbmRWYWx1ZVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGZpbHRlci5wdXNoKFxyXG4gICAgICAgICAgICAgIG5ldyBTZWFyY2hGaWx0ZXIoXHJcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWUsXHJcbiAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KHF1ZXJ5Um93W2tleV0pID8gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLklOIDogU2VhcmNoRmlsdGVyLk9QRVJBVE9SLkVRVUFMLFxyXG4gICAgICAgICAgICAgICAgcXVlcnlSb3dba2V5XVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLyoqXHJcbiAgICAgICAqIGRlZmF1bHQgd2lsbCB1c2UgZXF1YWxpdHkgb3BlcmF0b3JcclxuICAgICAgICovXHJcbiAgICAgIGZpbHRlci5wdXNoKFxyXG4gICAgICAgIG5ldyBTZWFyY2hGaWx0ZXIoXHJcbiAgICAgICAgICBmb3JtRWxlbWVudE5hbWUsXHJcbiAgICAgICAgICBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuRVFVQUwsXHJcbiAgICAgICAgICBlbGVtZW50VmFsdWVcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmlsdGVyO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogaWRlbnRpZmllcyBmb3JtIGVsZW1lbnRzIHRoYXQgYXJlIGVuYWJsZWQgdG8gY29udGFpbiBtdWx0aXBsZSB2YWx1ZXNcclxuICAgKiB0cnkgdG8gZmluZCB0aGUgZm9ybSBlbGVtZW50IGluc2lkZSBvZiB0aGUgcHJvdmlkZWQgb2JqZWN0IHR5cGVzIHRvIGdldCBpdHMgdHlwZVxyXG4gICAqXHJcbiAgICogQHBhcmFtIE9iamVjdFR5cGVbXSB0YXJnZXRUeXBlc1xyXG4gICAqIEBwYXJhbSBzdHJpbmcgZm9ybUVsZW1lbnROYW1lXHJcbiAgICogQHJldHVybiBTZWFyY2hGaWx0ZXJUeXBlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpZGVudGlmeVNlYXJjaEZpbHRlcihcclxuICAgIHRhcmdldFR5cGVzOiBPYmplY3RUeXBlW10sXHJcbiAgICBmb3JtRWxlbWVudE5hbWU6IHN0cmluZ1xyXG4gICk6IFNlYXJjaEZpbHRlclR5cGUge1xyXG4gICAgbGV0IGkgPSAwO1xyXG4gICAgbGV0IG1hdGNoO1xyXG4gICAgd2hpbGUgKCFtYXRjaCAmJiBpIDwgdGFyZ2V0VHlwZXMubGVuZ3RoKSB7XHJcbiAgICAgIG1hdGNoID0gdGFyZ2V0VHlwZXNbaV0uZWxlbWVudHMuZmluZChcclxuICAgICAgICBlbGVtZW50ID0+IGVsZW1lbnQucW5hbWUgPT09IGZvcm1FbGVtZW50TmFtZVxyXG4gICAgICApO1xyXG4gICAgICBpKys7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbXVsdGlzZWxlY3Q6IHRoaXMuaXNNdWx0aXNlbGVjdFNlYXJjaEZpbHRlcihtYXRjaCksXHJcbiAgICAgIHRhYmxlOiBtYXRjaCAmJiBtYXRjaC50eXBlID09PSAnVEFCTEUnLFxyXG4gICAgICBkYXRldGltZTogbWF0Y2ggJiYgbWF0Y2gudHlwZSA9PT0gJ0RBVEVUSU1FJyxcclxuICAgICAgd2l0aHRpbWU6IG1hdGNoICYmIG1hdGNoLndpdGh0aW1lXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogaWRlbnRpZmllcyBmb3JtIGVsZW1lbnRzIHRoYXQgYXJlIGVuYWJsZWQgdG8gY29udGFpbiBtdWx0aXBsZSB2YWx1ZXNcclxuICAgKlxyXG4gICAqIEBwYXJhbSBmb3JtRWxlbWVudFxyXG4gICAqIEByZXR1cm4gYm9vbGVhblxyXG4gICAqL1xyXG4gIHByaXZhdGUgaXNNdWx0aXNlbGVjdFNlYXJjaEZpbHRlcihmb3JtRWxlbWVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBmb3JtRWxlbWVudCAmJlxyXG4gICAgICAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ09SR0FOSVpBVElPTicgfHxcclxuICAgICAgICBmb3JtRWxlbWVudC50eXBlID09PSAnQ09ERVNZU1RFTScgfHxcclxuICAgICAgICAvLyAuLi5cclxuICAgICAgICAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ1NUUklORycgJiZcclxuICAgICAgICAgIGZvcm1FbGVtZW50LmNsYXNzaWZpY2F0aW9uID09PSAnc2VsZWN0b3InKSB8fFxyXG4gICAgICAgIC8vIG11bHRpc2VsZWN0IHJlZmVyZW5jZSBmaWVsZHNcclxuICAgICAgICAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ1NUUklORycgJiYgZm9ybUVsZW1lbnQubXVsdGlzZWxlY3QpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBTZWFyY2hSZXN1bHQgZnJvbSB0aGUgcmVzcG9uc2Ugc2VudCBieSB0aGUgc2VydmVyXHJcbiAgICpcclxuICAgKiBAcGFyYW0gYmFja2VuZFJlc3BvbnNlIFNlcnZlciByZXNwb25zZVxyXG4gICAqIEByZXR1cm5UaGUgU2VhcmNoUmVzdWx0IFNlYXJjaFJlc3VsdCBvYmplY3QgY3JlYXRlZCBmcm9tIHRoZSBzZXJ2ZXIgcmVzcG9uc2VcclxuICAgKi9cclxuICBwdWJsaWMgY3JlYXRlUmVzdWx0RnJvbVJlc3BvbnNlKGJhY2tlbmRSZXNwb25zZSk6IFNlYXJjaFJlc3VsdCB7XHJcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgU2VhcmNoUmVzdWx0KCk7XHJcbiAgICByZXN1bHQuc3VnZ2VzdHMgPSBiYWNrZW5kUmVzcG9uc2Uuc3VnZ2VzdDtcclxuICAgIHJlc3VsdC5maWVsZHMgPSBiYWNrZW5kUmVzcG9uc2UuY29uZmlnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogdXNlIGhpdHMgX2lkIGZpZWxkIGFzIGlkIHByb3BlcnR5LCBiZWNhdXNlIG90aGVyd2lzZSBlbXB0eSByZXN1bHQgaGl0cyB3b3VsZCBub3QgY29udGFpbiBhbiBpZFxyXG4gICAgICovXHJcbiAgICBjb25zdCBoaXRzID0gYmFja2VuZFJlc3BvbnNlLmhpdHMuaGl0cy5tYXAoaCA9PiAoe1xyXG4gICAgICAuLi5oLl9zb3VyY2UsXHJcbiAgICAgIGlkOiBoLl9pZCxcclxuICAgICAgLi4uKGguc25pcHBldHMgJiYge3NuaXBwZXRzOiBoLnNuaXBwZXRzfSksXHJcbiAgICAgIC8vIGhhdmluZyByZXF1ZXN0ZWQgYSByZXNvbHZlZCByZWZlcmVuY2UgKG9wdGlvbnMpIHdlIGFsc28gcGFzcyBgX3JlZmVyZW5jZWAgaW4gdGhlIHJlc3VsdCBpdGVtXHJcbiAgICAgIC4uLihoLnJlZmVyZW5jZXMgJiYge19yZWZlcmVuY2VzOiBoLnJlZmVyZW5jZXN9KSxcclxuICAgICAgLi4uKGguY29udGV4dCAmJiB7Y29udGV4dDogaC5jb250ZXh0fSlcclxuICAgIH0pKTtcclxuXHJcbiAgICByZXN1bHQuY291bnQgPSBiYWNrZW5kUmVzcG9uc2UuaGl0cy50b3RhbDtcclxuICAgIHJlc3VsdC5oaXRzID0gaGl0cyB8fCBbXTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcm92aWRlcyB0aGUgUmVzdWwgdEZpZWxkIERlZmluaXRpb24gQ29uZmlnXHJcbiAgICpcclxuICAgKiBAcGFyYW0gU2VhcmNoUXVlcnkgcXVlcnlcclxuICAgKiBAcmV0dXJuICh7dHlwZTogT2JqZWN0VHlwZTsgY29udGV4dFR5cGU6IE9iamVjdFR5cGV9KVxyXG4gICAqL1xyXG4gIGdldFJlc3VsdEZpZWxkRGVmaW5pdGlvbkNvbmZpZyhxdWVyeTogU2VhcmNoUXVlcnkpIHtcclxuICAgIGNvbnN0IHR5cGUgPSAocXVlcnkudHlwZXMgfHwgW10pLmxlbmd0aCA9PT0gMSA/IHF1ZXJ5LnR5cGVzWzBdIDogbnVsbDtcclxuICAgIGNvbnN0IGNvbnRleHRUeXBlID1cclxuICAgICAgKHF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlcyB8fCBbXSkubGVuZ3RoID09PSAxXHJcbiAgICAgICAgPyBxdWVyeS5jb250ZXh0Rm9sZGVyVHlwZXNbMF1cclxuICAgICAgICA6IG51bGw7XHJcbiAgICByZXR1cm4ge3R5cGUsIGNvbnRleHRUeXBlfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzb2x2ZUNvbmZpZ1R5cGVOYW1lcyhcclxuICAgIHR5cGU6IE9iamVjdFR5cGUgfCBudWxsLFxyXG4gICAgY29udGV4dFR5cGU6IE9iamVjdFR5cGUgfCBudWxsXHJcbiAgKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0eXBlTmFtZTogdHlwZSA/IHR5cGUucW5hbWUgOiAnc3lzb2JqZWN0JyxcclxuICAgICAgY29udGV4dFR5cGVOYW1lOiB0eXBlICYmIGNvbnRleHRUeXBlID8gY29udGV4dFR5cGUucW5hbWUgOiB1bmRlZmluZWRcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSByZXN1bHQgZmllbGQgZGVmaW5pdGlvbiBmb3IgYSBnaXZlbiBvYmplY3QgdHlwZVxyXG4gICAqIFVTRVI6IChkZWZhdWx0KSB0aGUgcmVzdWx0IGxpc3QgY29uZmlndXJhdGlvbiBzYXZlZCBieSB0aGUgY3VycmVudCB1c2VyXHJcbiAgICogREVGQVVMVDogdGhlIGRlZmF1bHQgcmVzdWx0IGxpc3QgY29uZmlndXJhdGlvbiAoYWxzbyByZXR1cm5lZCB3aGVuIHRoZXJlIGlzIG5vIHVzZXIgY29uZmlndXJhdGlvbilcclxuICAgKiBBTEw6IGFsbCBhdmFpbGFibGUgcmVzdWx0IGZpZWxkcyBmb3IgdGhlIGdpdmVuIHR5cGUgKGFuZCBjb250ZXh0KVxyXG4gICAqXHJcbiAgICogQHBhcmFtIE9iamVjdFR5cGUgfCBudWxsIHR5cGUgVGhlIG9iamVjdCB0eXBlXHJcbiAgICogQHBhcmFtIE9iamVjdFR5cGUgfCBudWxsIGNvbnRleHRUeXBlIE9iamVjdCB0eXBlIHRhcmdldCB0eXBlcyBhbGxvd2VkIGNvbnRleHQgdHlwZVxyXG4gICAqIEBwYXJhbSBtb2RlIFRoZSByZXN1bHQgbGlzdHMgY29uZmlndXJhdGlvbiBtb2RlOlxyXG4gICAqIEByZXR1cm4gT2JzZXJ2YWJsZTxGaWVsZERlZmluaXRpb24+XHJcbiAgICovXHJcbiAgZmV0Y2hSZXN1bHRGaWVsZERlZmluaXRpb24oXHJcbiAgICB0eXBlOiBPYmplY3RUeXBlIHwgbnVsbCxcclxuICAgIGNvbnRleHRUeXBlOiBPYmplY3RUeXBlIHwgbnVsbCxcclxuICAgIG1vZGVcclxuICApIHtcclxuICAgIGNvbnN0IHt0eXBlTmFtZSwgY29udGV4dFR5cGVOYW1lfSA9IHRoaXMucmVzb2x2ZUNvbmZpZ1R5cGVOYW1lcyhcclxuICAgICAgdHlwZSxcclxuICAgICAgY29udGV4dFR5cGVcclxuICAgICk7XHJcbiAgICBjb25zdCB1cmwgPSBVdGlscy5idWlsZFVyaShgL3VzZXIvY29uZmlnL3Jlc3VsdC8ke3R5cGVOYW1lfWAsIHtcclxuICAgICAgY29udGV4dHR5cGU6IGNvbnRleHRUeXBlTmFtZSxcclxuICAgICAgbW9kZVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5nZXRKc29uKHVybClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKFxyXG4gICAgICAgICAgKHJlczogYW55KSA9PlxyXG4gICAgICAgICAgICBuZXcgRmllbGREZWZpbml0aW9uKFxyXG4gICAgICAgICAgICAgIHJlcy5lbGVtZW50cyxcclxuICAgICAgICAgICAgICByZXMuc29ydG9yZGVyLFxyXG4gICAgICAgICAgICAgIHJlcy5ncm91cG9yZGVyLFxyXG4gICAgICAgICAgICAgIHJlcy5waW5uZWQsXHJcbiAgICAgICAgICAgICAgcmVzLm1vZGVcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNhdmVzIGEgY29sdW1uIGRlZmluaXRpb24gYXMgcmVzdWx0IG9yIGNvbW1vbiByZXN1bHQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gT2JqZWN0VHlwZSB8IG51bGwgdHlwZSBUaGUgb2JqZWN0IHR5cGVcclxuICAgKiBAcGFyYW0gT2JqZWN0VHlwZSB8IG51bGwgY29udGV4dFR5cGUgT2JqZWN0IHR5cGUgdGFyZ2V0IHR5cGVzIGFsbG93ZWQgY29udGV4dCB0eXBlXHJcbiAgICogQHBhcmFtIEZpZWxkRGVmaW5pdGlvbiBkYXRhIFRoZSByZXN1bHQgbGlzdCBjb25maWd1cmF0aW9uIHRvIGJlIHBlcnNpc3RlZFxyXG4gICAqIEBwYXJhbSBib29sZWFuIGNvbW1vbiBGbGFnIGVuYWJsZXMgdG8gc2V0IGNvbmZpZyBhcyBkZWZhdWx0IC8gY29tbW9uIHJlc3VsdFxyXG4gICAqIEByZXR1cm4gT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICovXHJcbiAgc2F2ZVJlc3VsdEZpZWxkRGVmaW5pdGlvbihcclxuICAgIHR5cGU6IE9iamVjdFR5cGUgfCBudWxsLFxyXG4gICAgY29udGV4dFR5cGU6IE9iamVjdFR5cGUgfCBudWxsLFxyXG4gICAgZGF0YTogRmllbGREZWZpbml0aW9uLFxyXG4gICAgY29tbW9uID0gZmFsc2VcclxuICApIHtcclxuICAgIGNvbnN0IGJhc2VVcmkgPSBjb21tb25cclxuICAgICAgPyAnL3VzZXIvY29uZmlnL2NvbW1vbnJlc3VsdC8nXHJcbiAgICAgIDogJy91c2VyL2NvbmZpZy9yZXN1bHQvJztcclxuICAgIGNvbnN0IHt0eXBlTmFtZSwgY29udGV4dFR5cGVOYW1lfSA9IHRoaXMucmVzb2x2ZUNvbmZpZ1R5cGVOYW1lcyhcclxuICAgICAgdHlwZSxcclxuICAgICAgY29udGV4dFR5cGVcclxuICAgICk7XHJcbiAgICBjb25zdCB1cmwgPSBVdGlscy5idWlsZFVyaShiYXNlVXJpICsgdHlwZU5hbWUsIHtcclxuICAgICAgY29udGV4dHR5cGU6IGNvbnRleHRUeXBlTmFtZVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnBvc3QodXJsLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZXMgYSBjb2x1bW4gZGVmaW5pdGlvbi5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBPYmplY3RUeXBlIHwgbnVsbCB0eXBlIFRoZSBvYmplY3QgdHlwZVxyXG4gICAqIEBwYXJhbSBPYmplY3RUeXBlIHwgbnVsbCBjb250ZXh0VHlwZSBPYmplY3QgdHlwZSB0YXJnZXQgdHlwZXMgYWxsb3dlZCBjb250ZXh0IHR5cGVcclxuICAgKiBAcmV0dXJuIE9ic2VydmFibGU8YW55PlxyXG4gICAqL1xyXG4gIHJlbW92ZVJlc3VsdEZpZWxkRGVmaW5pdGlvbihcclxuICAgIHR5cGU6IE9iamVjdFR5cGUgfCBudWxsLFxyXG4gICAgY29udGV4dFR5cGU6IE9iamVjdFR5cGUgfCBudWxsXHJcbiAgKSB7XHJcbiAgICBjb25zdCB7dHlwZU5hbWUsIGNvbnRleHRUeXBlTmFtZX0gPSB0aGlzLnJlc29sdmVDb25maWdUeXBlTmFtZXMoXHJcbiAgICAgIHR5cGUsXHJcbiAgICAgIGNvbnRleHRUeXBlXHJcbiAgICApO1xyXG4gICAgY29uc3QgdXJsID0gVXRpbHMuYnVpbGRVcmkoYC91c2VyL2NvbmZpZy9yZXN1bHQvJHt0eXBlTmFtZX1gLCB7XHJcbiAgICAgIGNvbnRleHR0eXBlOiBjb250ZXh0VHlwZU5hbWVcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5kZWwodXJsKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHZhbHVlIHRvIGJlIGFkZGVkIHRvIGEgZm9ybSBlbGVtZW50IGJ5IGV4dHJhY3RpbmcgaXQgZnJvbSBhXHJcbiAgICogc2VhcmNoIGZpbHRlci4gVGhlIGtpbmQgb2YgdmFsdWUgZGlmZmVycyBiYXNlZCBvbiB0aGUgZm9ybSBlbGVtZW50cyB0eXBlLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGZpbHRlciBUaGUgZmlsdGVyIHRvIGV4dHJhY3QgdmFsdWUgZnJvbVxyXG4gICAqIEBwYXJhbSBmb3JtRWxlbWVudFR5cGUgRm9ybSBlbGVtZW50cyB0eXBlICgnU1RSSU5HJywgJ0RBVEUnLCAnQ09ERVNZU1RFTScsIC4uLilcclxuICAgKiBAcmV0dXJucyB0aGUgZXh0cmFjdGVkIHZhbHVlXHJcbiAgICovXHJcbiAgZmlsdGVyVG9FbGVtZW50VmFsdWUoZmlsdGVyOiBTZWFyY2hGaWx0ZXIsIGZvcm1FbGVtZW50VHlwZTogc3RyaW5nKSB7XHJcbiAgICBsZXQgdmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICBpZiAoZmlsdGVyKSB7XHJcbiAgICAgIC8vIHR5cGVzIHRoYXQgc3VwcG9ydCByYW5nZXNcclxuICAgICAgaWYgKChmb3JtRWxlbWVudFR5cGUgPT09ICdOVU1CRVInIHx8IGZvcm1FbGVtZW50VHlwZSA9PT0gJ0RBVEVUSU1FJykgJiYgZmlsdGVyLmZpcnN0VmFsdWUpIHtcclxuICAgICAgICB2YWx1ZSA9IG5ldyBSYW5nZVZhbHVlKFxyXG4gICAgICAgICAgZmlsdGVyLm9wZXJhdG9yLFxyXG4gICAgICAgICAgZmlsdGVyLmZpcnN0VmFsdWUsXHJcbiAgICAgICAgICBmaWx0ZXIuc2Vjb25kVmFsdWVcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhbHVlID0gZmlsdGVyLmZpcnN0VmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSB0YWJsZSB2YWx1ZSBieSBleHRyYWN0aW5nIHRoZSBkYXRhIGZyb20gdGhlIGNvcnJlc3BvbmRpbmdcclxuICAgKiBzZWFyY2ggZmlsdGVycy5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gZmlsdGVycyBUaGUgZmlsdGVycyB0byBleHRyYWN0IHZhbHVlIGZyb21cclxuICAgKiBAcGFyYW0gdGFibGVFbGVtZW50cyB0aGUgZm9ybSBlbGVtZW50cyBvZiB0aGUgdGFibGVcclxuICAgKiBAcmV0dXJucyB0aGUgdGFibGUgdmFsdWUgZXh0cmFjdGVkIGZyb20gYWxsIGZpbHRlcnNcclxuICAgKi9cclxuICB0YWJsZUZpbHRlcnNUb0VsZW1lbnRWYWx1ZShmaWx0ZXJzOiBTZWFyY2hGaWx0ZXJbXSwgdGFibGVFbGVtZW50cyl7XHJcbiAgICBsZXQgdmFsdWUgPSB7fTtcclxuICAgIGZpbHRlcnMuZm9yRWFjaChmID0+IHtcclxuICAgICAgbGV0IGtleSA9IHRhYmxlRWxlbWVudHMuZmluZChlID0+IGUucW5hbWUgPT09IGYucHJvcGVydHkpLm5hbWU7XHJcbiAgICAgIGxldCB0eXBlID0gdGFibGVFbGVtZW50cy5maW5kKGUgPT4gZS5xbmFtZSA9PT0gZi5wcm9wZXJ0eSkudHlwZTtcclxuICAgICAgdmFsdWVba2V5XSA9IHRoaXMuZmlsdGVyVG9FbGVtZW50VmFsdWUoZiwgdHlwZSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBbdmFsdWVdO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
462
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2Uvc2VhcmNoL3NlYXJjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxLQUFLLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFFeEMsT0FBTyxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDekQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN2QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUV2RCxPQUFPLEVBQ0wsZUFBZSxFQUNmLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLFdBQVcsRUFDWixNQUFNLHNCQUFzQixDQUFDO0FBRTlCOzs7R0FHRztBQUVILE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFlBQ1UsTUFBcUIsRUFDckIsT0FBdUIsRUFDdkIsTUFBYztRQUZkLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUNyQixDQUFDO0lBRUo7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQVU7UUFDbkMsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLEtBQUssWUFB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QUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNoRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQixDQUFDOzs7WUF6bEJGLFVBQVU7OztZQWRILGFBQWE7WUFGYixjQUFjO1lBQ2QsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cFJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIEZpbGVTYXZlciBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHttYXAsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge09iamVjdFR5cGV9IGZyb20gJy4uLy4uL21vZGVsL29iamVjdC10eXBlLm1vZGVsJztcclxuaW1wb3J0IHtSYW5nZVZhbHVlfSBmcm9tICcuLi8uLi9tb2RlbC9yYW5nZS12YWx1ZS5tb2RlbCc7XHJcbmltcG9ydCB7VXRpbHN9IGZyb20gJy4uLy4uL3V0aWwvdXRpbHMnO1xyXG5pbXBvcnQge0JhY2tlbmRTZXJ2aWNlfSBmcm9tICcuLi9iYWNrZW5kL2JhY2tlbmQuc2VydmljZSc7XHJcbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcvY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQge1N5c3RlbVNlcnZpY2V9IGZyb20gJy4uL3N5c3RlbS9zeXN0ZW0uc2VydmljZSc7XHJcbmltcG9ydCB7U2VhcmNoRmlsdGVyVHlwZX0gZnJvbSAnLi9zZWFyY2gtZmlsdGVyLXR5cGUuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtcclxuICBGaWVsZERlZmluaXRpb24sXHJcbiAgU2VhcmNoRmlsdGVyLFxyXG4gIFNlYXJjaFF1ZXJ5LFxyXG4gIFNlYXJjaFJlc3VsdCxcclxuICBTZWFyY2hTdGF0ZVxyXG59IGZyb20gJy4vc2VhcmNoLXF1ZXJ5Lm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBDb2xsZWN0aW9uIG9mIFNlYXJjaCBTZXJ2aWNlc1xyXG4gKiBTZWUge0BsaW5rIFNlYXJjaFF1ZXJ5fSBmb3IgUXVlcnkgRGVmaW5pdGlvblxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2VhcmNoU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHN5c3RlbTogU3lzdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpZzogQ29uZmlnXHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgUmFuZ2VWYWx1ZSBpbnN0YW5jZSBmcm9tIHRoZSBnaXZlbiB2YWx1ZSBvYmplY3QuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIG9iamVjdCB0byBiZVxyXG4gICAqIEByZXR1cm5zIFJhbmdlVmFsdWVcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIHRvUmFuZ2VWYWx1ZSh2YWx1ZTogYW55KTogUmFuZ2VWYWx1ZSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgUmFuZ2VWYWx1ZSkge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICB2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnb3BlcmF0b3InKSAmJlxyXG4gICAgICAgIHZhbHVlLmhhc093blByb3BlcnR5KCdmaXJzdFZhbHVlJylcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBSYW5nZVZhbHVlKFxyXG4gICAgICAgICAgdmFsdWUub3BlcmF0b3IsXHJcbiAgICAgICAgICB2YWx1ZS5maXJzdFZhbHVlLFxyXG4gICAgICAgICAgdmFsdWUuc2Vjb25kVmFsdWVcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgZnJvbWF0ZWQgc2VhcmNoIFF1ZXJ5XHJcbiAgICpcclxuICAgKiBAcGFyYW0gcXVlcnlcclxuICAgKiBAcmV0dXJucyBTZWFyY2hRdWVyeVxyXG4gICAqL1xyXG4gIHB1YmxpYyBidWlsZFF1ZXJ5KHF1ZXJ5OiBhbnkpOiBTZWFyY2hRdWVyeSB7XHJcbiAgICBsZXQgcTogU2VhcmNoUXVlcnk7XHJcbiAgICBpZiAocXVlcnkgaW5zdGFuY2VvZiBTZWFyY2hRdWVyeSkge1xyXG4gICAgICBxID0gcXVlcnk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgcU9iajtcclxuICAgICAgLyoqXHJcbiAgICAgICAqIGlmIHdlIGdvdCBhIHN0cmluZywgd2UnbGwgYXNzdW1lIHRoYXQgaXQncyBhIEpTT05cclxuICAgICAgICovXHJcbiAgICAgIGlmICh0eXBlb2YgcXVlcnkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgcU9iaiA9IEpTT04ucGFyc2UocXVlcnkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHFPYmogPSBxdWVyeTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcSA9IG5ldyBTZWFyY2hRdWVyeSgpO1xyXG4gICAgICBxLnRlcm0gPSBxT2JqLnRlcm07XHJcbiAgICAgIGlmIChxT2JqLmZpbHRlcnMpIHtcclxuICAgICAgICBPYmplY3Qua2V5cyhxT2JqLmZpbHRlcnMpLmZvckVhY2goayA9PiB7XHJcbiAgICAgICAgICBxLmZpbHRlcnMucHVzaChcclxuICAgICAgICAgICAgbmV3IFNlYXJjaEZpbHRlcihcclxuICAgICAgICAgICAgICBrLFxyXG4gICAgICAgICAgICAgIHFPYmouZmlsdGVyc1trXS5vLFxyXG4gICAgICAgICAgICAgIHFPYmouZmlsdGVyc1trXS52MSxcclxuICAgICAgICAgICAgICBxT2JqLmZpbHRlcnNba10udjJcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocU9iai50eXBlcykge1xyXG4gICAgICAgIHFPYmoudHlwZXMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLnN5c3RlbS5nZXRPYmplY3RUeXBlKHQpKSB7XHJcbiAgICAgICAgICAgIHEudHlwZXMucHVzaCh0aGlzLnN5c3RlbS5nZXRPYmplY3RUeXBlKHQpKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHEudHlwZXMucHVzaCh0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocU9iai5jb250ZXh0Zm9sZGVydHlwZXMpIHtcclxuICAgICAgICBxT2JqLmNvbnRleHRmb2xkZXJ0eXBlcy5mb3JFYWNoKHQgPT4ge1xyXG4gICAgICAgICAgaWYgKHQgPT09ICdzeXNyb290Jykge1xyXG4gICAgICAgICAgICAvLyAnc3lzcm9vdCcgaXMgbm90IGEgcmVhbCBvYmplY3QgdHlwZSwgc28gd2UgaGF2ZSB0byBjcmVhdGUgYSBmYWtlIHR5cGUuXHJcbiAgICAgICAgICAgIGNvbnN0IHN5c3Jvb3RGYWtlT2JqZWN0VHlwZSA9IG5ldyBPYmplY3RUeXBlKHtcclxuICAgICAgICAgICAgICBpZDogJ2EnLFxyXG4gICAgICAgICAgICAgIGZvbGRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgICBuYW1lOiAnc3lzcm9vdCcsXHJcbiAgICAgICAgICAgICAgcW5hbWU6ICdzeXNyb290JyxcclxuICAgICAgICAgICAgICBsYWJlbDogJ3N5c3Jvb3QnLFxyXG4gICAgICAgICAgICAgIGlzY29udGV4dGZvbGRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgICBhYnN0cmFjdDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgZWxlbWVudHM6IFtdLFxyXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcclxuICAgICAgICAgICAgICBzaGFyZWFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIG1pbmZpbGVzOiAwLFxyXG4gICAgICAgICAgICAgIG1heGZpbGVzOiAxXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBxLmNvbnRleHRGb2xkZXJUeXBlcy5wdXNoKHN5c3Jvb3RGYWtlT2JqZWN0VHlwZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBxLmNvbnRleHRGb2xkZXJUeXBlcy5wdXNoKHRoaXMuc3lzdGVtLmdldE9iamVjdFR5cGUodCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHEuZmllbGRzID0gcU9iai5maWVsZHM7XHJcbiAgICAgIGlmIChxT2JqLm9wdGlvbnMpIHtcclxuICAgICAgICBxLnN1Z2dlc3QgPSBxT2JqLm9wdGlvbnMuc3VnZ2VzdCB8fCBmYWxzZTtcclxuICAgICAgICBxLmV4cGVydE1vZGUgPSBxT2JqLm9wdGlvbnMuZXhwZXJ0bW9kZSB8fCBmYWxzZTtcclxuICAgICAgICBxLnNjb3BlID0gcU9iai5vcHRpb25zLnNjb3BlO1xyXG4gICAgICAgIHEucmVzb2x2ZVJlZmVyZW5jZSA9IHFPYmoub3B0aW9ucy5yZXNvbHZlUmVmZXJlbmNlIHx8IHRydWU7XHJcbiAgICAgICAgcS5zZWFyY2hNb2RlID1cclxuICAgICAgICAgIHFPYmoub3B0aW9ucy5zZWFyY2htb2RlIHx8IFNlYXJjaFF1ZXJ5LkRFRkFVTFRfU0VBUkNIX01PREU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4ZWN1dGVzIGEgcXVlcnkuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gcXVlcnkgVGhlIHF1ZXJ5IHRvIGJlIGV4ZWN1dGVkXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHQ+XHJcbiAgICovXHJcbiAgcHVibGljIHNlYXJjaChxdWVyeTogU2VhcmNoUXVlcnkpOiBPYnNlcnZhYmxlPFNlYXJjaFJlc3VsdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVF1ZXJ5KHF1ZXJ5LmdldFF1ZXJ5SnNvbigpKS5waXBlKFxyXG4gICAgICBtYXAocmVzID0+IHRoaXMuY3JlYXRlUmVzdWx0RnJvbVJlc3BvbnNlKHJlcykpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmUgU2VhcmNoIHJlc3VsdHNcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0U2VhcmNoU3RhdGUocXVlcnk6IGFueSk6IE9ic2VydmFibGU8U2VhcmNoU3RhdGU+IHtcclxuICAgIFxyXG4gICAgaWYocXVlcnkgaW5zdGFuY2VvZiBTZWFyY2hRdWVyeSkge1xyXG4gICAgICBxdWVyeSA9IHF1ZXJ5LmdldFF1ZXJ5SnNvbigpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVF1ZXJ5KHF1ZXJ5LCB0cnVlKS5waXBlKFxyXG4gICAgICBtYXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBuZXcgU2VhcmNoU3RhdGUoKTtcclxuICAgICAgICBzdGF0ZS5jb3VudCA9IHJlcy5oaXRzLnRvdGFsO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TKS5mb3JFYWNoKGsgPT4ge1xyXG4gICAgICAgICAgY29uc3QgYmFzZVBhcmFtID0gU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVNba107XHJcbiAgICAgICAgICBjb25zdCBhZ2dyZWdhdGlvbnMgPSByZXMuYWdncmVnYXRpb25zW2Jhc2VQYXJhbV1cclxuICAgICAgICAgICAgPyByZXMuYWdncmVnYXRpb25zW2Jhc2VQYXJhbV0uYnVja2V0c1xyXG4gICAgICAgICAgICA6IFtdO1xyXG4gICAgICAgICAgYWdncmVnYXRpb25zLmZvckVhY2goYWdncmVnYXRpb24gPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB7a2V5LCBkb2NfY291bnQsIGNvbnRleHRmb2xkZXJ0eXBlfSA9IGFnZ3JlZ2F0aW9uO1xyXG4gICAgICAgICAgICBzdGF0ZS5hZGRBZ2dyZWdhdGlvbnMoYmFzZVBhcmFtLCBrZXksIGRvY19jb3VudCwgYWdncmVnYXRpb24pO1xyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogdHlwZSBhZ2dyZWdhdGlvbnMgbWF5IGFsc28gY29udGFpbiBidWNrZXRzIGZvciB0aGVpciBjb250ZXh0IHR5cGVzXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgYmFzZVBhcmFtID09PSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5UWVBFICYmXHJcbiAgICAgICAgICAgICAgY29udGV4dGZvbGRlcnR5cGVcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgY29udGV4dGZvbGRlcnR5cGUuYnVja2V0cy5mb3JFYWNoKGN0eEFnZyA9PiB7XHJcbiAgICAgICAgICAgICAgICBzdGF0ZS5hZGRBZ2dyZWdhdGlvbnMoXHJcbiAgICAgICAgICAgICAgICAgICdjb250ZXh0dHlwZScsXHJcbiAgICAgICAgICAgICAgICAgIGN0eEFnZy5rZXksXHJcbiAgICAgICAgICAgICAgICAgIGN0eEFnZy5kb2NfY291bnQsXHJcbiAgICAgICAgICAgICAgICAgIGN0eEFnZ1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBzdGF0ZTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIGEgcGFydCBvZiBhIHF1ZXJpZXMgcmVzdWx0LiBUaGlzIGNhbiBiZSB1c2VkIGZvciBwYWdpbmcgb2YgcmVzdWx0c1xyXG4gICAqIG9yIGxhenkgbG9hZGluZyBsYXJnZSByZXN1bHRzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHF1ZXJ5IFRoZSBxdWVyeSB0byBiZSBleGVjdXRlZFxyXG4gICAqIEBwYXJhbSBmcm9tSW5kZXggVGhlIGluZGV4IGZyb20gd2hlcmUgdG8gZmV0Y2ggcmVzdWx0c1xyXG4gICAqIEBwYXJhbSBjaHVua1NpemUgU2l6ZSBvZiB0aGUgY2h1bmsgdG8gYmUgZmV0Y2hlZFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8U2VhcmNoUmVzdWx0PlxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRDaHVua2VkUmVzdWx0KFxyXG4gICAgcXVlcnk6IFNlYXJjaFF1ZXJ5LFxyXG4gICAgZnJvbUluZGV4OiBudW1iZXIsXHJcbiAgICBjaHVua1NpemU6IG51bWJlclxyXG4gICk6IE9ic2VydmFibGU8U2VhcmNoUmVzdWx0PiB7XHJcbiAgICBjb25zdCBxID0gcXVlcnkuZ2V0UXVlcnlKc29uKCk7XHJcblxyXG4gICAgcS5mcm9tID0gZnJvbUluZGV4O1xyXG4gICAgY29uc3QgcXVlcnlVcmkgPSBgc2VhcmNoIWNodW5rOiR7Y2h1bmtTaXplfSEke0pTT04uc3RyaW5naWZ5KHEpfWA7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldFZpYVRlbXBDYWNoZShxdWVyeVVyaSwgKCkgPT5cclxuICAgICAgdGhpcy5leGVjdXRlUXVlcnkocSwgZmFsc2UsIGNodW5rU2l6ZSkucGlwZShcclxuICAgICAgICBtYXAocmVzID0+IHRoaXMuY3JlYXRlUmVzdWx0RnJvbVJlc3BvbnNlKHJlcykpXHJcbiAgICAgIClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeGVjdXRlcyBhIHF1ZXJ5XHJcbiAgICpcclxuICAgKiBAcGFyYW0gcXVlcnlKc29uIFRoZSBxdWVyeSBKU09OIHRvIGJlIGV4ZWN1dGVkXHJcbiAgICogQHBhcmFtIGFnZ3JlZ2F0ZVNlYXJjaCBGbGFnIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdG8gZXhlY3V0ZSBhbiBhZ2dyZWdhdGlvbiBzZWFyY2ggKG5vIGFjdHVhbCByZXN1bHRzKVxyXG4gICAqIEBwYXJhbSBjdXN0b21TaXplIEN1c3RvbSBudW1iZXIgb2YgcmVzdWx0cyB0byBiZSBmZXRjaGVkLCBpZiBub3Qgc2V0IHRoZSBkZWZhdWx0IHNpemUgd2lsbCBiZSBhcHBsaWVkXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICovXHJcbiAgcHVibGljIGV4ZWN1dGVRdWVyeShcclxuICAgIHF1ZXJ5SnNvbjogYW55LFxyXG4gICAgYWdncmVnYXRlU2VhcmNoPzogYm9vbGVhbixcclxuICAgIGN1c3RvbVNpemU/OiBudW1iZXJcclxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgbGV0IHVyaTogc3RyaW5nO1xyXG4gICAgbGV0IHF1ZXJ5ID0gcXVlcnlKc29uO1xyXG4gICAgaWYgKGFnZ3JlZ2F0ZVNlYXJjaCkge1xyXG4gICAgICB1cmkgPSBgL2FnZ3JlZ2F0ZWA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBzaXplID0gY3VzdG9tU2l6ZSB8fCB0aGlzLmNvbmZpZy5nZXRSYXcoJ3NlYXJjaC5saW1pdCcpO1xyXG4gICAgICB1cmkgPSBgLz9zaXplPSR7c2l6ZX1gO1xyXG4gICAgfVxyXG4gICAgcXVlcnkub3B0aW9ucyA9IHsuLi5xdWVyeS5vcHRpb25zLCB0cmFja3RvdGFsaGl0czogdGhpcy5jb25maWcuZ2V0UmF3KCdzZWFyY2gudHJhY2tUb3RhbEhpdHMnKSB8fCBmYWxzZSwgdGltZXpvbmU6IFV0aWxzLmdldFRpbWV6b25lT2Zmc2V0KCl9O1xyXG5cclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0VmlhVGVtcENhY2hlKHVyaSArIEpTT04uc3RyaW5naWZ5KHF1ZXJ5KSwgKCkgPT4gdGhpcy5iYWNrZW5kLnBvc3QodXJpLCBxdWVyeSwgdGhpcy5iYWNrZW5kLmdldFNlYXJjaEJhc2UoKSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRG93bmxvYWRzIGEgY3N2LWZpbGUgb2YgdGhlIHJlc3VsdHMgb2YgYSBnaXZlbiBzZWFyY2gtcXVlcnlcclxuICAgKlxyXG4gICAqIEBwYXJhbSBxdWVyeUpzb24gVGhlIHF1ZXJ5IEpTT04gdG8gYmUgZXhlY3V0ZWRcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cclxuICAgKi9cclxuICBwdWJsaWMgZG93bmxvYWRDc3ZGcm9tUXVlcnkocXVlcnlKc29uOiBvYmplY3QpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAucG9zdCgnL2V4cG9ydCcsIHF1ZXJ5SnNvbiwgdGhpcy5iYWNrZW5kLmdldFNlYXJjaEJhc2UoKSwge1xyXG4gICAgICAgIG9ic2VydmU6ICdyZXNwb25zZScsXHJcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCdcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFwKHJlcyA9PiB7XHJcbiAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3Jlcy5ib2R5XSwge1xyXG4gICAgICAgICAgICB0eXBlOiAndGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04J1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBGaWxlU2F2ZXIuc2F2ZUFzKGJsb2IsIHRoaXMuZ2V0RmlsZU5hbWVGcm9tSHR0cFJlc3BvbnNlKHJlcykpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpbGVOYW1lRnJvbUh0dHBSZXNwb25zZShyZXM6IEh0dHBSZXNwb25zZTxhbnk+KSB7XHJcbiAgICBjb25zdCBjb250ZW50RGlzcG9zaXRpb25IZWFkZXIgPVxyXG4gICAgICByZXMuaGVhZGVycy5nZXQoJ0NvbnRlbnQtRGlzcG9zaXRpb24nKSB8fCAnJztcclxuICAgIHJldHVybiBjb250ZW50RGlzcG9zaXRpb25IZWFkZXIuc3BsaXQoJ2ZpbGVuYW1lPScpWzFdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZXMgYSBzZWFyY2ggZm9yIGZldGNoaW5nIHN1Z2dlc3Rpb25zIG9uIGEgZ2l2ZW4gc2VhcmNoIHRlcm0uXHJcbiAgICpcclxuICAgKiBAcGFyYW0gdGVybSBUaGUgc2VhcmNoIHRlcm1cclxuICAgKiBAcmV0dXJuXHJcbiAgICovXHJcbiAgcHVibGljIGF1dG9jb21wbGV0ZSh0ZXJtOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0SnNvbihcclxuICAgICAgYC9hdXRvY29tcGxldGU/cHJlZml4PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHRlcm0pfWAsXHJcbiAgICAgIHRoaXMuYmFja2VuZC5nZXRTZWFyY2hCYXNlKClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVc2UgdGhpcyBtZXRob2QgdG8gY3JlYXRlIGEgU2VhcmNoRmlsdGVyIGZvciBhIGZvcm0gZWxlbWVudC4gQmFzZWQgb24gdGhlIHRhcmdldCB0eXBlc1xyXG4gICAqIGl0J2xsIGNyZWF0ZSB0aGUgcmlnaHQga2luZCBvZiBmaWx0ZXIgdGhhdCB5b3UgdGhlbiBjYW4gYWRkIHRvIGEgU2VhcmNoUXVlcnlcclxuICAgKlxyXG4gICAqIEBwYXJhbSB0YXJnZXRUeXBlc1xyXG4gICAqIEBwYXJhbSBmb3JtRWxlbWVudE5hbWVcclxuICAgKiBAcGFyYW0gZWxlbWVudFZhbHVlXHJcbiAgICogQHJldHVybnMgU2VhcmNoRmlsdGVyW10gQW4gYXJyYXkgb2Ygc2VhcmNoIGZpbHRlcnMgbW9zdCBvZiB0aGUgdGltZSBjb250YWluaW5nIG9ubHkgb25lIGVudHJ5LCBidXRcclxuICAgKiBmb3IgdGFibGUgZWxlbWVudHMgdGhpcyBjb3VsZCBiZSBtb3JlXHJcbiAgICovXHJcbiAgcHVibGljIGdldFNlYXJjaEZpbHRlcihcclxuICAgIHRhcmdldFR5cGVzOiBPYmplY3RUeXBlW10sXHJcbiAgICBmb3JtRWxlbWVudE5hbWU6IHN0cmluZyxcclxuICAgIGVsZW1lbnRWYWx1ZTogYW55XHJcbiAgKTogU2VhcmNoRmlsdGVyW10ge1xyXG4gICAgY29uc3QgZmlsdGVyOiBTZWFyY2hGaWx0ZXJbXSA9IFtdO1xyXG4gICAgY29uc3QgZmlsdGVyVHlwZTogU2VhcmNoRmlsdGVyVHlwZSA9IHRoaXMuaWRlbnRpZnlTZWFyY2hGaWx0ZXIoXHJcbiAgICAgIHRhcmdldFR5cGVzLFxyXG4gICAgICBmb3JtRWxlbWVudE5hbWVcclxuICAgICk7XHJcbiAgICBjb25zdCBmb3JtRWxlbWVudCA9IHRhcmdldFR5cGVzWzBdLmVsZW1lbnRzLmZpbmQoZWwgPT4gZWwucW5hbWUgPT09IGZvcm1FbGVtZW50TmFtZSk7XHJcblxyXG4gICAgaWYgKGVsZW1lbnRWYWx1ZSA9PT0gbnVsbCkge1xyXG4gICAgICBmaWx0ZXIucHVzaChcclxuICAgICAgICBuZXcgU2VhcmNoRmlsdGVyKGZvcm1FbGVtZW50TmFtZSwgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLkVRVUFMLCBudWxsKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmIChmb3JtRWxlbWVudCAmJiBmb3JtRWxlbWVudC5jbGFzc2lmaWNhdGlvbiA9PT0gJ3BhdGgnKSB7XHJcbiAgICAgIGZpbHRlci5wdXNoKFxyXG4gICAgICAgIG5ldyBTZWFyY2hGaWx0ZXIoXHJcbiAgICAgICAgICBmb3JtRWxlbWVudE5hbWUsXHJcbiAgICAgICAgICBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuTUFUQ0gsXHJcbiAgICAgICAgICBlbGVtZW50VmFsdWVcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnRWYWx1ZSBpbnN0YW5jZW9mIFJhbmdlVmFsdWUpIHtcclxuICAgICAgLyoqXHJcbiAgICAgICAqIGNyZWF0ZSBmaWx0ZXIgZm9yIGVsZW1lbnRzIHRoYXQgc3VwcG9ydCByYW5nZXMgbGlrZSBEQVRFVElNRSBhbmQgTlVNQkVSXHJcbiAgICAgICAqL1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgZWxlbWVudFZhbHVlLmZpcnN0VmFsdWUgIT09IG51bGwgJiZcclxuICAgICAgICBlbGVtZW50VmFsdWUuZmlyc3RWYWx1ZSAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICkge1xyXG4gICAgICAgIGZpbHRlci5wdXNoKFxyXG4gICAgICAgICAgbmV3IFNlYXJjaEZpbHRlcihcclxuICAgICAgICAgICAgZm9ybUVsZW1lbnROYW1lLFxyXG4gICAgICAgICAgICBlbGVtZW50VmFsdWUub3BlcmF0b3IsXHJcbiAgICAgICAgICAgIGVsZW1lbnRWYWx1ZS5maXJzdFZhbHVlLFxyXG4gICAgICAgICAgICBlbGVtZW50VmFsdWUuc2Vjb25kVmFsdWUsXHJcbiAgICAgICAgICAgIGZpbHRlclR5cGUuZGF0ZXRpbWUgPyB7dGltZTogZmlsdGVyVHlwZS53aXRodGltZX0gOiB1bmRlZmluZWRcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKChmaWx0ZXJUeXBlLm11bHRpc2VsZWN0IHx8IEFycmF5LmlzQXJyYXkoZWxlbWVudFZhbHVlKSkgJiYgIWZpbHRlclR5cGUudGFibGUpIHtcclxuICAgICAgLyoqXHJcbiAgICAgICAqIGNyZWF0ZSBmaWx0ZXIgZm9yIG11bHRpc2VsZWN0IGVsZW1lbnRzIGxpa2UgQ09ERVNZU1RFTSBhbmQgT1JHQU5JWkFUSU9OXHJcbiAgICAgICAqL1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShlbGVtZW50VmFsdWUpICYmIGVsZW1lbnRWYWx1ZS5sZW5ndGgpIHtcclxuICAgICAgICBmaWx0ZXIucHVzaChcclxuICAgICAgICAgIG5ldyBTZWFyY2hGaWx0ZXIoXHJcbiAgICAgICAgICAgIGZvcm1FbGVtZW50TmFtZSxcclxuICAgICAgICAgICAgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLklOLFxyXG4gICAgICAgICAgICBlbGVtZW50VmFsdWVcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGZpbHRlclR5cGUudGFibGUpIHtcclxuICAgICAgLyoqXHJcbiAgICAgICAqIGNyZWF0ZSBmaWx0ZXIocykgZm9yIHRhYmxlIGVsZW1lbnRzXHJcbiAgICAgICAqL1xyXG4gICAgICBjb25zdCBxdWVyeVJvdyA9IGVsZW1lbnRWYWx1ZVswXTtcclxuICAgICAgT2JqZWN0LmtleXMocXVlcnlSb3cpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICAgIGlmKHF1ZXJ5Um93W2tleV0gIT09IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgJHtmb3JtRWxlbWVudE5hbWV9LiR7a2V5fWA7XHJcbiAgICAgICAgICBpZiAocXVlcnlSb3dba2V5XSBpbnN0YW5jZW9mIFJhbmdlVmFsdWUpIHtcclxuICAgICAgICAgICAgZmlsdGVyLnB1c2goXHJcbiAgICAgICAgICAgICAgbmV3IFNlYXJjaEZpbHRlcihcclxuICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZSxcclxuICAgICAgICAgICAgICAgIHF1ZXJ5Um93W2tleV0ub3BlcmF0b3IsXHJcbiAgICAgICAgICAgICAgICBxdWVyeVJvd1trZXldLmZpcnN0VmFsdWUsXHJcbiAgICAgICAgICAgICAgICBxdWVyeVJvd1trZXldLnNlY29uZFZhbHVlXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZmlsdGVyLnB1c2goXHJcbiAgICAgICAgICAgICAgbmV3IFNlYXJjaEZpbHRlcihcclxuICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZSxcclxuICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkocXVlcnlSb3dba2V5XSkgPyBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuSU4gOiBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuRVFVQUwsXHJcbiAgICAgICAgICAgICAgICBxdWVyeVJvd1trZXldXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvKipcclxuICAgICAgICogZGVmYXVsdCB3aWxsIHVzZSBlcXVhbGl0eSBvcGVyYXRvclxyXG4gICAgICAgKi9cclxuICAgICAgZmlsdGVyLnB1c2goXHJcbiAgICAgICAgbmV3IFNlYXJjaEZpbHRlcihcclxuICAgICAgICAgIGZvcm1FbGVtZW50TmFtZSxcclxuICAgICAgICAgIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5FUVVBTCxcclxuICAgICAgICAgIGVsZW1lbnRWYWx1ZVxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmaWx0ZXI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBpZGVudGlmaWVzIGZvcm0gZWxlbWVudHMgdGhhdCBhcmUgZW5hYmxlZCB0byBjb250YWluIG11bHRpcGxlIHZhbHVlc1xyXG4gICAqIHRyeSB0byBmaW5kIHRoZSBmb3JtIGVsZW1lbnQgaW5zaWRlIG9mIHRoZSBwcm92aWRlZCBvYmplY3QgdHlwZXMgdG8gZ2V0IGl0cyB0eXBlXHJcbiAgICpcclxuICAgKiBAcGFyYW0gT2JqZWN0VHlwZVtdIHRhcmdldFR5cGVzXHJcbiAgICogQHBhcmFtIHN0cmluZyBmb3JtRWxlbWVudE5hbWVcclxuICAgKiBAcmV0dXJuIFNlYXJjaEZpbHRlclR5cGVcclxuICAgKi9cclxuICBwcml2YXRlIGlkZW50aWZ5U2VhcmNoRmlsdGVyKFxyXG4gICAgdGFyZ2V0VHlwZXM6IE9iamVjdFR5cGVbXSxcclxuICAgIGZvcm1FbGVtZW50TmFtZTogc3RyaW5nXHJcbiAgKTogU2VhcmNoRmlsdGVyVHlwZSB7XHJcbiAgICBsZXQgaSA9IDA7XHJcbiAgICBsZXQgbWF0Y2g7XHJcbiAgICB3aGlsZSAoIW1hdGNoICYmIGkgPCB0YXJnZXRUeXBlcy5sZW5ndGgpIHtcclxuICAgICAgbWF0Y2ggPSB0YXJnZXRUeXBlc1tpXS5lbGVtZW50cy5maW5kKFxyXG4gICAgICAgIGVsZW1lbnQgPT4gZWxlbWVudC5xbmFtZSA9PT0gZm9ybUVsZW1lbnROYW1lXHJcbiAgICAgICk7XHJcbiAgICAgIGkrKztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBtdWx0aXNlbGVjdDogdGhpcy5pc011bHRpc2VsZWN0U2VhcmNoRmlsdGVyKG1hdGNoKSxcclxuICAgICAgdGFibGU6IG1hdGNoICYmIG1hdGNoLnR5cGUgPT09ICdUQUJMRScsXHJcbiAgICAgIGRhdGV0aW1lOiBtYXRjaCAmJiBtYXRjaC50eXBlID09PSAnREFURVRJTUUnLFxyXG4gICAgICB3aXRodGltZTogbWF0Y2ggJiYgbWF0Y2gud2l0aHRpbWVcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBpZGVudGlmaWVzIGZvcm0gZWxlbWVudHMgdGhhdCBhcmUgZW5hYmxlZCB0byBjb250YWluIG11bHRpcGxlIHZhbHVlc1xyXG4gICAqXHJcbiAgICogQHBhcmFtIGZvcm1FbGVtZW50XHJcbiAgICogQHJldHVybiBib29sZWFuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpc011bHRpc2VsZWN0U2VhcmNoRmlsdGVyKGZvcm1FbGVtZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIGZvcm1FbGVtZW50ICYmXHJcbiAgICAgIChmb3JtRWxlbWVudC50eXBlID09PSAnT1JHQU5JWkFUSU9OJyB8fFxyXG4gICAgICAgIGZvcm1FbGVtZW50LnR5cGUgPT09ICdDT0RFU1lTVEVNJyB8fFxyXG4gICAgICAgIC8vIC4uLlxyXG4gICAgICAgIChmb3JtRWxlbWVudC50eXBlID09PSAnU1RSSU5HJyAmJlxyXG4gICAgICAgICAgZm9ybUVsZW1lbnQuY2xhc3NpZmljYXRpb24gPT09ICdzZWxlY3RvcicpIHx8XHJcbiAgICAgICAgLy8gbXVsdGlzZWxlY3QgcmVmZXJlbmNlIGZpZWxkc1xyXG4gICAgICAgIChmb3JtRWxlbWVudC50eXBlID09PSAnU1RSSU5HJyAmJiBmb3JtRWxlbWVudC5tdWx0aXNlbGVjdCkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIFNlYXJjaFJlc3VsdCBmcm9tIHRoZSByZXNwb25zZSBzZW50IGJ5IHRoZSBzZXJ2ZXJcclxuICAgKlxyXG4gICAqIEBwYXJhbSBiYWNrZW5kUmVzcG9uc2UgU2VydmVyIHJlc3BvbnNlXHJcbiAgICogQHJldHVyblRoZSBTZWFyY2hSZXN1bHQgU2VhcmNoUmVzdWx0IG9iamVjdCBjcmVhdGVkIGZyb20gdGhlIHNlcnZlciByZXNwb25zZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBjcmVhdGVSZXN1bHRGcm9tUmVzcG9uc2UoYmFja2VuZFJlc3BvbnNlKTogU2VhcmNoUmVzdWx0IHtcclxuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBTZWFyY2hSZXN1bHQoKTtcclxuICAgIHJlc3VsdC5zdWdnZXN0cyA9IGJhY2tlbmRSZXNwb25zZS5zdWdnZXN0O1xyXG4gICAgcmVzdWx0LmZpZWxkcyA9IGJhY2tlbmRSZXNwb25zZS5jb25maWc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiB1c2UgaGl0cyBfaWQgZmllbGQgYXMgaWQgcHJvcGVydHksIGJlY2F1c2Ugb3RoZXJ3aXNlIGVtcHR5IHJlc3VsdCBoaXRzIHdvdWxkIG5vdCBjb250YWluIGFuIGlkXHJcbiAgICAgKi9cclxuICAgIGNvbnN0IGhpdHMgPSBiYWNrZW5kUmVzcG9uc2UuaGl0cy5oaXRzLm1hcChoID0+ICh7XHJcbiAgICAgIC4uLmguX3NvdXJjZSxcclxuICAgICAgaWQ6IGguX2lkLFxyXG4gICAgICAuLi4oaC5zbmlwcGV0cyAmJiB7c25pcHBldHM6IGguc25pcHBldHN9KSxcclxuICAgICAgLy8gaGF2aW5nIHJlcXVlc3RlZCBhIHJlc29sdmVkIHJlZmVyZW5jZSAob3B0aW9ucykgd2UgYWxzbyBwYXNzIGBfcmVmZXJlbmNlYCBpbiB0aGUgcmVzdWx0IGl0ZW1cclxuICAgICAgLi4uKGgucmVmZXJlbmNlcyAmJiB7X3JlZmVyZW5jZXM6IGgucmVmZXJlbmNlc30pLFxyXG4gICAgICAuLi4oaC5jb250ZXh0ICYmIHtjb250ZXh0OiBoLmNvbnRleHR9KVxyXG4gICAgfSkpO1xyXG5cclxuICAgIHJlc3VsdC5jb3VudCA9IGJhY2tlbmRSZXNwb25zZS5oaXRzLnRvdGFsO1xyXG4gICAgcmVzdWx0LmhpdHMgPSBoaXRzIHx8IFtdO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByb3ZpZGVzIHRoZSBSZXN1bCB0RmllbGQgRGVmaW5pdGlvbiBDb25maWdcclxuICAgKlxyXG4gICAqIEBwYXJhbSBTZWFyY2hRdWVyeSBxdWVyeVxyXG4gICAqIEByZXR1cm4gKHt0eXBlOiBPYmplY3RUeXBlOyBjb250ZXh0VHlwZTogT2JqZWN0VHlwZX0pXHJcbiAgICovXHJcbiAgZ2V0UmVzdWx0RmllbGREZWZpbml0aW9uQ29uZmlnKHF1ZXJ5OiBTZWFyY2hRdWVyeSkge1xyXG4gICAgY29uc3QgdHlwZSA9IChxdWVyeS50eXBlcyB8fCBbXSkubGVuZ3RoID09PSAxID8gcXVlcnkudHlwZXNbMF0gOiBudWxsO1xyXG4gICAgY29uc3QgY29udGV4dFR5cGUgPVxyXG4gICAgICAocXVlcnkuY29udGV4dEZvbGRlclR5cGVzIHx8IFtdKS5sZW5ndGggPT09IDFcclxuICAgICAgICA/IHF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlc1swXVxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIHJldHVybiB7dHlwZSwgY29udGV4dFR5cGV9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNvbHZlQ29uZmlnVHlwZU5hbWVzKFxyXG4gICAgdHlwZTogT2JqZWN0VHlwZSB8IG51bGwsXHJcbiAgICBjb250ZXh0VHlwZTogT2JqZWN0VHlwZSB8IG51bGxcclxuICApIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHR5cGVOYW1lOiB0eXBlID8gdHlwZS5xbmFtZSA6ICdzeXNvYmplY3QnLFxyXG4gICAgICBjb250ZXh0VHlwZU5hbWU6IHR5cGUgJiYgY29udGV4dFR5cGUgPyBjb250ZXh0VHlwZS5xbmFtZSA6IHVuZGVmaW5lZFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIHJlc3VsdCBmaWVsZCBkZWZpbml0aW9uIGZvciBhIGdpdmVuIG9iamVjdCB0eXBlXHJcbiAgICogVVNFUjogKGRlZmF1bHQpIHRoZSByZXN1bHQgbGlzdCBjb25maWd1cmF0aW9uIHNhdmVkIGJ5IHRoZSBjdXJyZW50IHVzZXJcclxuICAgKiBERUZBVUxUOiB0aGUgZGVmYXVsdCByZXN1bHQgbGlzdCBjb25maWd1cmF0aW9uIChhbHNvIHJldHVybmVkIHdoZW4gdGhlcmUgaXMgbm8gdXNlciBjb25maWd1cmF0aW9uKVxyXG4gICAqIEFMTDogYWxsIGF2YWlsYWJsZSByZXN1bHQgZmllbGRzIGZvciB0aGUgZ2l2ZW4gdHlwZSAoYW5kIGNvbnRleHQpXHJcbiAgICpcclxuICAgKiBAcGFyYW0gT2JqZWN0VHlwZSB8IG51bGwgdHlwZSBUaGUgb2JqZWN0IHR5cGVcclxuICAgKiBAcGFyYW0gT2JqZWN0VHlwZSB8IG51bGwgY29udGV4dFR5cGUgT2JqZWN0IHR5cGUgdGFyZ2V0IHR5cGVzIGFsbG93ZWQgY29udGV4dCB0eXBlXHJcbiAgICogQHBhcmFtIG1vZGUgVGhlIHJlc3VsdCBsaXN0cyBjb25maWd1cmF0aW9uIG1vZGU6XHJcbiAgICogQHJldHVybiBPYnNlcnZhYmxlPEZpZWxkRGVmaW5pdGlvbj5cclxuICAgKi9cclxuICBmZXRjaFJlc3VsdEZpZWxkRGVmaW5pdGlvbihcclxuICAgIHR5cGU6IE9iamVjdFR5cGUgfCBudWxsLFxyXG4gICAgY29udGV4dFR5cGU6IE9iamVjdFR5cGUgfCBudWxsLFxyXG4gICAgbW9kZVxyXG4gICkge1xyXG4gICAgY29uc3Qge3R5cGVOYW1lLCBjb250ZXh0VHlwZU5hbWV9ID0gdGhpcy5yZXNvbHZlQ29uZmlnVHlwZU5hbWVzKFxyXG4gICAgICB0eXBlLFxyXG4gICAgICBjb250ZXh0VHlwZVxyXG4gICAgKTtcclxuICAgIGNvbnN0IHVybCA9IFV0aWxzLmJ1aWxkVXJpKGAvdXNlci9jb25maWcvcmVzdWx0LyR7dHlwZU5hbWV9YCwge1xyXG4gICAgICBjb250ZXh0dHlwZTogY29udGV4dFR5cGVOYW1lLFxyXG4gICAgICBtb2RlXHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcclxuICAgICAgLmdldEpzb24odXJsKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoXHJcbiAgICAgICAgICAocmVzOiBhbnkpID0+XHJcbiAgICAgICAgICAgIG5ldyBGaWVsZERlZmluaXRpb24oXHJcbiAgICAgICAgICAgICAgcmVzLmVsZW1lbnRzLFxyXG4gICAgICAgICAgICAgIHJlcy5zb3J0b3JkZXIsXHJcbiAgICAgICAgICAgICAgcmVzLmdyb3Vwb3JkZXIsXHJcbiAgICAgICAgICAgICAgcmVzLnBpbm5lZCxcclxuICAgICAgICAgICAgICByZXMubW9kZVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2F2ZXMgYSBjb2x1bW4gZGVmaW5pdGlvbiBhcyByZXN1bHQgb3IgY29tbW9uIHJlc3VsdC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBPYmplY3RUeXBlIHwgbnVsbCB0eXBlIFRoZSBvYmplY3QgdHlwZVxyXG4gICAqIEBwYXJhbSBPYmplY3RUeXBlIHwgbnVsbCBjb250ZXh0VHlwZSBPYmplY3QgdHlwZSB0YXJnZXQgdHlwZXMgYWxsb3dlZCBjb250ZXh0IHR5cGVcclxuICAgKiBAcGFyYW0gRmllbGREZWZpbml0aW9uIGRhdGEgVGhlIHJlc3VsdCBsaXN0IGNvbmZpZ3VyYXRpb24gdG8gYmUgcGVyc2lzdGVkXHJcbiAgICogQHBhcmFtIGJvb2xlYW4gY29tbW9uIEZsYWcgZW5hYmxlcyB0byBzZXQgY29uZmlnIGFzIGRlZmF1bHQgLyBjb21tb24gcmVzdWx0XHJcbiAgICogQHJldHVybiBPYnNlcnZhYmxlPGFueT5cclxuICAgKi9cclxuICBzYXZlUmVzdWx0RmllbGREZWZpbml0aW9uKFxyXG4gICAgdHlwZTogT2JqZWN0VHlwZSB8IG51bGwsXHJcbiAgICBjb250ZXh0VHlwZTogT2JqZWN0VHlwZSB8IG51bGwsXHJcbiAgICBkYXRhOiBGaWVsZERlZmluaXRpb24sXHJcbiAgICBjb21tb24gPSBmYWxzZVxyXG4gICkge1xyXG4gICAgY29uc3QgYmFzZVVyaSA9IGNvbW1vblxyXG4gICAgICA/ICcvdXNlci9jb25maWcvY29tbW9ucmVzdWx0LydcclxuICAgICAgOiAnL3VzZXIvY29uZmlnL3Jlc3VsdC8nO1xyXG4gICAgY29uc3Qge3R5cGVOYW1lLCBjb250ZXh0VHlwZU5hbWV9ID0gdGhpcy5yZXNvbHZlQ29uZmlnVHlwZU5hbWVzKFxyXG4gICAgICB0eXBlLFxyXG4gICAgICBjb250ZXh0VHlwZVxyXG4gICAgKTtcclxuICAgIGNvbnN0IHVybCA9IFV0aWxzLmJ1aWxkVXJpKGJhc2VVcmkgKyB0eXBlTmFtZSwge1xyXG4gICAgICBjb250ZXh0dHlwZTogY29udGV4dFR5cGVOYW1lXHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdCh1cmwsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlcyBhIGNvbHVtbiBkZWZpbml0aW9uLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIE9iamVjdFR5cGUgfCBudWxsIHR5cGUgVGhlIG9iamVjdCB0eXBlXHJcbiAgICogQHBhcmFtIE9iamVjdFR5cGUgfCBudWxsIGNvbnRleHRUeXBlIE9iamVjdCB0eXBlIHRhcmdldCB0eXBlcyBhbGxvd2VkIGNvbnRleHQgdHlwZVxyXG4gICAqIEByZXR1cm4gT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICovXHJcbiAgcmVtb3ZlUmVzdWx0RmllbGREZWZpbml0aW9uKFxyXG4gICAgdHlwZTogT2JqZWN0VHlwZSB8IG51bGwsXHJcbiAgICBjb250ZXh0VHlwZTogT2JqZWN0VHlwZSB8IG51bGxcclxuICApIHtcclxuICAgIGNvbnN0IHt0eXBlTmFtZSwgY29udGV4dFR5cGVOYW1lfSA9IHRoaXMucmVzb2x2ZUNvbmZpZ1R5cGVOYW1lcyhcclxuICAgICAgdHlwZSxcclxuICAgICAgY29udGV4dFR5cGVcclxuICAgICk7XHJcbiAgICBjb25zdCB1cmwgPSBVdGlscy5idWlsZFVyaShgL3VzZXIvY29uZmlnL3Jlc3VsdC8ke3R5cGVOYW1lfWAsIHtcclxuICAgICAgY29udGV4dHR5cGU6IGNvbnRleHRUeXBlTmFtZVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmRlbCh1cmwpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgdmFsdWUgdG8gYmUgYWRkZWQgdG8gYSBmb3JtIGVsZW1lbnQgYnkgZXh0cmFjdGluZyBpdCBmcm9tIGFcclxuICAgKiBzZWFyY2ggZmlsdGVyLiBUaGUga2luZCBvZiB2YWx1ZSBkaWZmZXJzIGJhc2VkIG9uIHRoZSBmb3JtIGVsZW1lbnRzIHR5cGUuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZmlsdGVyIFRoZSBmaWx0ZXIgdG8gZXh0cmFjdCB2YWx1ZSBmcm9tXHJcbiAgICogQHBhcmFtIGZvcm1FbGVtZW50VHlwZSBGb3JtIGVsZW1lbnRzIHR5cGUgKCdTVFJJTkcnLCAnREFURScsICdDT0RFU1lTVEVNJywgLi4uKVxyXG4gICAqIEByZXR1cm5zIHRoZSBleHRyYWN0ZWQgdmFsdWVcclxuICAgKi9cclxuICBmaWx0ZXJUb0VsZW1lbnRWYWx1ZShmaWx0ZXI6IFNlYXJjaEZpbHRlciwgZm9ybUVsZW1lbnRUeXBlOiBzdHJpbmcpIHtcclxuICAgIGxldCB2YWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgIGlmIChmaWx0ZXIpIHtcclxuICAgICAgLy8gdHlwZXMgdGhhdCBzdXBwb3J0IHJhbmdlc1xyXG4gICAgICBpZiAoKGZvcm1FbGVtZW50VHlwZSA9PT0gJ05VTUJFUicgfHwgZm9ybUVsZW1lbnRUeXBlID09PSAnREFURVRJTUUnKSAmJiBmaWx0ZXIuZmlyc3RWYWx1ZSkge1xyXG4gICAgICAgIHZhbHVlID0gbmV3IFJhbmdlVmFsdWUoXHJcbiAgICAgICAgICBmaWx0ZXIub3BlcmF0b3IsXHJcbiAgICAgICAgICBmaWx0ZXIuZmlyc3RWYWx1ZSxcclxuICAgICAgICAgIGZpbHRlci5zZWNvbmRWYWx1ZVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdmFsdWUgPSBmaWx0ZXIuZmlyc3RWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHRhYmxlIHZhbHVlIGJ5IGV4dHJhY3RpbmcgdGhlIGRhdGEgZnJvbSB0aGUgY29ycmVzcG9uZGluZ1xyXG4gICAqIHNlYXJjaCBmaWx0ZXJzLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBmaWx0ZXJzIFRoZSBmaWx0ZXJzIHRvIGV4dHJhY3QgdmFsdWUgZnJvbVxyXG4gICAqIEBwYXJhbSB0YWJsZUVsZW1lbnRzIHRoZSBmb3JtIGVsZW1lbnRzIG9mIHRoZSB0YWJsZVxyXG4gICAqIEByZXR1cm5zIHRoZSB0YWJsZSB2YWx1ZSBleHRyYWN0ZWQgZnJvbSBhbGwgZmlsdGVyc1xyXG4gICAqL1xyXG4gIHRhYmxlRmlsdGVyc1RvRWxlbWVudFZhbHVlKGZpbHRlcnM6IFNlYXJjaEZpbHRlcltdLCB0YWJsZUVsZW1lbnRzKXtcclxuICAgIGxldCB2YWx1ZSA9IHt9O1xyXG4gICAgZmlsdGVycy5mb3JFYWNoKGYgPT4ge1xyXG4gICAgICBsZXQga2V5ID0gdGFibGVFbGVtZW50cy5maW5kKGUgPT4gZS5xbmFtZSA9PT0gZi5wcm9wZXJ0eSkubmFtZTtcclxuICAgICAgbGV0IHR5cGUgPSB0YWJsZUVsZW1lbnRzLmZpbmQoZSA9PiBlLnFuYW1lID09PSBmLnByb3BlcnR5KS50eXBlO1xyXG4gICAgICB2YWx1ZVtrZXldID0gdGhpcy5maWx0ZXJUb0VsZW1lbnRWYWx1ZShmLCB0eXBlKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIFt2YWx1ZV07XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -59,6 +59,7 @@ export class StoredQuery extends SearchQuery {
|
|
|
59
59
|
this.filters = searchQuery ? searchQuery.filters : [];
|
|
60
60
|
this.suggest = searchQuery ? searchQuery.suggest : false;
|
|
61
61
|
this.expertMode = searchQuery ? searchQuery.expertMode : false;
|
|
62
|
+
this.scope = searchQuery ? searchQuery.scope : null;
|
|
62
63
|
this.searchMode = searchQuery ? searchQuery.searchMode : 'idx';
|
|
63
64
|
}
|
|
64
65
|
/**
|
|
@@ -94,4 +95,4 @@ export class StoredQuery extends SearchQuery {
|
|
|
94
95
|
* temporary id for new stored queries
|
|
95
96
|
*/
|
|
96
97
|
StoredQuery.ID_NEW = 'new';
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVkLXF1ZXJ5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL3N0b3JlZC1xdWVyaWVzL3N0b3JlZC1xdWVyeS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUErQnpEOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sV0FBWSxTQUFRLFdBQVc7SUF1QjFDLFlBQVksSUFBbUI7UUFDN0IsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsSUFBSSxDQUFDLEVBQUUsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO1lBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1NBQ3JCO2FBQU07WUFDTCxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBQ3BCOzs7ZUFHRztZQUNILElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQy9D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QUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U2VhcmNoUXVlcnl9IGZyb20gJy4uL3NlYXJjaC9zZWFyY2gtcXVlcnkubW9kZWwnO1xyXG5cclxuLyoqXHJcbiAqIEBpZ25vcmVcclxuICogSW50ZXJmYWNlIGZvciB0aGUgZGF0YSB1c2VkIGZvciBiYWNrZW5kIGNvbW11bmljYXRpb24uXHJcbiAqIFRoaXMgaXMgdGhlIGtpbmQgb2YgZGF0YSB3ZSdsbCBnZXQgZnJvbSB0aGUgc2VydmVyIGFuZCB3ZVxyXG4gKiBoYXZlIHRvIHByb3ZpZGUgd2hlbiBzZW5kaW5nIHN0b3JlZCBxdWVyaWVzIHRvIHRoZSBzZXJ2ZXIuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIElTdG9yZWRRdWVyeSB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgcXVlcnk6IHN0cmluZztcclxuICBmYXZvcml0ZT86IGJvb2xlYW47XHJcbiAgc2hhcmVkPzogYm9vbGVhbjtcclxuICB1c2VyPzogc3RyaW5nO1xyXG4gIHZlcnNpb24/OiBudW1iZXI7XHJcbiAgcm9sZXM/OiBzdHJpbmdbXTtcclxuICBwYXJhbWV0ZXI/OiBzdHJpbmdbXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEBpZ25vcmVcclxuICogSW50ZXJmYWNlIGZvciBkeW5hbWljIHBhcmFtZXRlciBwcm9wZXJ0aWVzLlxyXG4gKiBGb3JtIGVsZW1lbnRzIHdpbGwgYmUgdHJhbnNmb3JtZWQgdG8gdGhpcyBmb3JtYXQgdG8gc2F2ZSBvbmx5XHJcbiAqIHJlcXVpcmVkIHByb3BlcnRpZXNcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVN0b3JlZFF1ZXJ5UGFyYW0ge1xyXG4gIHFuYW1lOiBzdHJpbmc7XHJcbiAgdHlwZTogc3RyaW5nO1xyXG59XHJcblxyXG4vKipcclxuICogU3RvcmVkIHF1ZXJ5IGlzIGFuIGV4dGVuc2lvbiBvZiBhIFNlYXJjaFF1ZXJ5LiBJdCBhZGRzIHByb3BlcnRpZXMgbGlrZVxyXG4gKiBuYW1lIGFuZCBhIGxpc3Qgb2YgZHluYW1pYyBmaWx0ZXIgcHJvcGVydGllcyBhbmQgdGhlIGFiaWxpdHkgdG8gZ2VuZXJhdGVcclxuICogYW4gb2JqZWN0IGZyb20gaXRzIHByb3BlcnRpZXMgdGhhdCBjb3VsZCBiZSBwd2Vyc2lzdGVkIG9uIHRoZSBiYWNrZW5kIHNpZGUuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU3RvcmVkUXVlcnkgZXh0ZW5kcyBTZWFyY2hRdWVyeSB7XHJcblxyXG4gIC8qKlxyXG4gICAqIHRlbXBvcmFyeSBpZCBmb3IgbmV3IHN0b3JlZCBxdWVyaWVzXHJcbiAgICovXHJcbiAgc3RhdGljIElEX05FVyA9ICduZXcnO1xyXG5cclxuICBpZDogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBmYXZvcml0ZTogYm9vbGVhbjtcclxuICBzaGFyZWQ6IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogdGhlIHVzZXJuYW1lIG9mIHRoZSB1c2VyIHRoYXQgY3JlYXRlZCB0aGlzIHF1ZXJ5XHJcbiAgICovXHJcbiAgdXNlcjogc3RyaW5nO1xyXG4gIHZlcnNpb246IG51bWJlcjtcclxuICByb2xlczogc3RyaW5nW107XHJcbiAgcGFyYW1ldGVyOiBJU3RvcmVkUXVlcnlQYXJhbVtdO1xyXG5cclxuICBnZXQgdGl0bGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5uYW1lIHx8ICcnO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoaXRlbT86IElTdG9yZWRRdWVyeSkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIGlmICghaXRlbSkge1xyXG4gICAgICB0aGlzLmlkID0gU3RvcmVkUXVlcnkuSURfTkVXO1xyXG4gICAgICB0aGlzLnBhcmFtZXRlciA9IFtdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pZCA9IGl0ZW0uaWQ7XHJcbiAgICAgIHRoaXMubmFtZSA9IGl0ZW0ubmFtZTtcclxuICAgICAgdGhpcy5mYXZvcml0ZSA9IGl0ZW0uZmF2b3JpdGU7XHJcbiAgICAgIHRoaXMuc2hhcmVkID0gaXRlbS5zaGFyZWQ7XHJcbiAgICAgIHRoaXMudXNlciA9IGl0ZW0udXNlcjtcclxuICAgICAgdGhpcy52ZXJzaW9uID0gaXRlbS52ZXJzaW9uO1xyXG4gICAgICB0aGlzLnJvbGVzID0gaXRlbS5yb2xlcyB8fCBbXTtcclxuICAgICAgdGhpcy5wYXJhbWV0ZXIgPSBbXTtcclxuICAgICAgLyoqXHJcbiAgICAgICAqIHBhcmFtZXRlcnMgY29udGFpbiBtZXRhIGRhdGEgZm9yIHRoZSBkeW5hbWljIGZpZWxkcyBvZiB0aGUgc3RvcmVkIHF1ZXJ5XHJcbiAgICAgICAqIHRoZSB2YWx1ZXMgb2YgdGhvc2UgZmllbGRzIChpZiBzZXQpIGFyZSBwYXJ0IG9mIHRoZSBxdWVyaWVzIGZpbHRlcnNcclxuICAgICAgICovXHJcbiAgICAgIGlmIChpdGVtLnBhcmFtZXRlciAmJiBpdGVtLnBhcmFtZXRlci5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgZm9yIChsZXQgcCBvZiBpdGVtLnBhcmFtZXRlcikge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgcE9iaiA9IEpTT04ucGFyc2UocCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtOiBJU3RvcmVkUXVlcnlQYXJhbSA9IHtcclxuICAgICAgICAgICAgICBxbmFtZTogcE9iai5xbmFtZSxcclxuICAgICAgICAgICAgICB0eXBlOiBwT2JqLnR5cGUsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMucGFyYW1ldGVyLnB1c2gocGFyYW0pO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgcGFyc2luZyBzdG9yZWQgcXVlcnkgcGFyYW1ldGVyJywgZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGRzIHRoZSBwcm9wZXJ0aWVzIG9mIGEgU2VhcmNoUXVlcnkgdG8gdGhlIGN1cnJlbnQgU3RvcmVkUXVlcnkgaW5zdGFuY2UuXHJcbiAgICogVGhpcyBpcyB1c2VkIHdoZW4gbG9hZGluZyBzdG9yZWQgcXVlcmllcyBmcm9tIHRoZSBzZWFyY2ggc2VydmljZSBhbmQgd2hlbiB5b3VcclxuICAgKiB3YW50IHRvIGNyZWF0ZSBhIFN0b3JlZFF1ZXJ5IGZyb20gYSBTZWFyY2hRdWVyeS5cclxuICAgKiBza2lwIGBmaWVsZHNgIGFuZCBgc29ydE9wdGlvbnNgIHByb3BlcnRpZXMgYXMgdGhleSBtYWtlIG5vIHNlbnNlIGZvciBzdG9yZWQgcXVlcmllc1xyXG4gICAqXHJcbiAgICogQHBhcmFtIHNlYXJjaFF1ZXJ5IFRoZSBzZWFyY2ggcXVlcnkgdG8gY29weSBwcm9wZXJ0aWVzIGZyb21cclxuICAgKi9cclxuICBwdWJsaWMgc2V0UXVlcnkoc2VhcmNoUXVlcnk6IFNlYXJjaFF1ZXJ5KSB7XHJcbiAgICAgIHRoaXMudGVybSA9IHNlYXJjaFF1ZXJ5ID8gc2VhcmNoUXVlcnkudGVybSA6ICcnO1xyXG4gICAgICB0aGlzLnR5cGVzID0gc2VhcmNoUXVlcnkgPyBzZWFyY2hRdWVyeS50eXBlcyA6IFtdO1xyXG4gICAgICB0aGlzLmNvbnRleHRGb2xkZXJUeXBlcyA9IHNlYXJjaFF1ZXJ5ID8gc2VhcmNoUXVlcnkuY29udGV4dEZvbGRlclR5cGVzIDogW107XHJcbiAgICAgIHRoaXMuZmlsdGVycyA9IHNlYXJjaFF1ZXJ5ID8gc2VhcmNoUXVlcnkuZmlsdGVycyA6IFtdO1xyXG4gICAgICB0aGlzLnN1Z2dlc3QgPSBzZWFyY2hRdWVyeSA/IHNlYXJjaFF1ZXJ5LnN1Z2dlc3QgOiBmYWxzZTtcclxuICAgICAgdGhpcy5leHBlcnRNb2RlID0gc2VhcmNoUXVlcnkgPyBzZWFyY2hRdWVyeS5leHBlcnRNb2RlIDogZmFsc2U7XHJcbiAgICAgIHRoaXMuc2NvcGUgPSBzZWFyY2hRdWVyeSA/IHNlYXJjaFF1ZXJ5LnNjb3BlIDogbnVsbDtcclxuICAgICAgdGhpcy5zZWFyY2hNb2RlID0gc2VhcmNoUXVlcnkgPyBzZWFyY2hRdWVyeS5zZWFyY2hNb2RlIDogJ2lkeCc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb252ZXJ0IElTdG9yZWRRdWVyeVBhcmFtIG9iamVjdHMgdG8gYXJyYXkgb2Ygc3RyaW5nc1xyXG4gICAqXHJcbiAgICogQHJldHVybnMgSVN0b3JlZFF1ZXJ5XHJcbiAgICovXHJcbiAgdG9QZXJzaXN0YWJsZVN0b3JlZFF1ZXJ5KCk6IElTdG9yZWRRdWVyeSB7XHJcblxyXG4gICAgY29uc3Qgc3RyaW5nUGFyYW1ldGVyID0gW107XHJcbiAgICB0aGlzLnBhcmFtZXRlci5mb3JFYWNoKHAgPT4gc3RyaW5nUGFyYW1ldGVyLnB1c2goSlNPTi5zdHJpbmdpZnkocCkpKTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBpZDogdGhpcy5pZCxcclxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxyXG4gICAgICBmYXZvcml0ZTogdGhpcy5mYXZvcml0ZSxcclxuICAgICAgc2hhcmVkOiB0aGlzLnNoYXJlZCxcclxuICAgICAgdXNlcjogdGhpcy51c2VyLFxyXG4gICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb24sXHJcbiAgICAgIHJvbGVzOiB0aGlzLnJvbGVzLFxyXG4gICAgICBwYXJhbWV0ZXI6IHN0cmluZ1BhcmFtZXRlcixcclxuICAgICAgcXVlcnk6IEpTT04uc3RyaW5naWZ5KHRoaXMuZ2V0UXVlcnlKc29uKCkpXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgUXVlcnkgaXMgbmV3IG9yIGFsbHJlYWR5IFN0b3JlZFxyXG4gICAqXHJcbiAgICogQHJldHVybnMgYm9vbGVhblxyXG4gICAqL1xyXG4gIGlzTmV3KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaWQgPT09IFN0b3JlZFF1ZXJ5LklEX05FVztcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -538,6 +538,10 @@ class Config {
|
|
|
538
538
|
this.translate.setDefaultLang(this.getDefaultClientLocale());
|
|
539
539
|
this.initializeGrid();
|
|
540
540
|
}
|
|
541
|
+
getLoginBase() {
|
|
542
|
+
let lb = this.getUri('loginBase');
|
|
543
|
+
return (lb && lb !== '/') ? lb : '';
|
|
544
|
+
}
|
|
541
545
|
/**
|
|
542
546
|
* Returns nested property of config | complete config by default
|
|
543
547
|
* @param property The name of the property to be retrieved
|
|
@@ -3036,6 +3040,7 @@ class AuthService {
|
|
|
3036
3040
|
this.TOKEN_STORAGE_KEY = 'eo.auth.cloud.credentials';
|
|
3037
3041
|
this.userProfileUri = this.userService.USER_FETCH_URI;
|
|
3038
3042
|
this.authSource = new BehaviorSubject(false);
|
|
3043
|
+
this.loggedInCacheKey = 'eo.user.loggedIn';
|
|
3039
3044
|
/**
|
|
3040
3045
|
* Observable to subscribe to for getting the state of being authenticated. Will emit true when a user logged in,
|
|
3041
3046
|
* false when the user logged out or the gateways session timed out.
|
|
@@ -3054,6 +3059,12 @@ class AuthService {
|
|
|
3054
3059
|
auth: null,
|
|
3055
3060
|
active: false
|
|
3056
3061
|
};
|
|
3062
|
+
window.addEventListener('storage', evt => {
|
|
3063
|
+
if (evt.key === this.loggedInCacheKey) {
|
|
3064
|
+
const host = JSON.parse(evt.newValue).host;
|
|
3065
|
+
this.initUser(host).subscribe();
|
|
3066
|
+
}
|
|
3067
|
+
});
|
|
3057
3068
|
}
|
|
3058
3069
|
/**
|
|
3059
3070
|
* Login a user using form based login.
|
|
@@ -3070,7 +3081,7 @@ class AuthService {
|
|
|
3070
3081
|
const loginHeader = new HttpHeaders({
|
|
3071
3082
|
'Content-Type': 'application/x-www-form-urlencoded'
|
|
3072
3083
|
});
|
|
3073
|
-
return this.http.post(host + '/login', `username=${encodeURIComponent(username)}&password=${encodeURIComponent(password)}`, {
|
|
3084
|
+
return this.http.post(host + this.config.getLoginBase() + '/login', `username=${encodeURIComponent(username)}&password=${encodeURIComponent(password)}`, {
|
|
3074
3085
|
headers: loginHeader,
|
|
3075
3086
|
responseType: 'text'
|
|
3076
3087
|
}).pipe(switchMap(() => this.initUser(host)));
|
|
@@ -3202,7 +3213,7 @@ class AuthService {
|
|
|
3202
3213
|
'Content-Type': 'application/json'
|
|
3203
3214
|
});
|
|
3204
3215
|
return this.http
|
|
3205
|
-
.get(`${host || ''}/auth/info`, { headers })
|
|
3216
|
+
.get(`${host || ''}${this.config.getLoginBase()}/auth/info`, { headers })
|
|
3206
3217
|
.pipe(switchMap((info) => {
|
|
3207
3218
|
this.gatewayInfo = info;
|
|
3208
3219
|
this.envService.cloudEnvironment = (this.gatewayInfo && this.gatewayInfo.oauth2);
|
|
@@ -3243,6 +3254,7 @@ class AuthService {
|
|
|
3243
3254
|
if (host) {
|
|
3244
3255
|
this.addHostConfig(host);
|
|
3245
3256
|
}
|
|
3257
|
+
window.localStorage.setItem(this.loggedInCacheKey, JSON.stringify({ userId: user.user.id, host: host }));
|
|
3246
3258
|
return this.initApp(user, gatewayInfo.ntlm);
|
|
3247
3259
|
}), tap(() => this.authSource.next(this.isLoggedIn())));
|
|
3248
3260
|
}
|
|
@@ -3263,14 +3275,14 @@ class AuthService {
|
|
|
3263
3275
|
// remove stored access data
|
|
3264
3276
|
this.storage.removeItem(this.TOKEN_STORAGE_KEY).subscribe();
|
|
3265
3277
|
if (this.coreConfig.environment.production && EnvironmentEnaio.isWebEnvironment()) {
|
|
3266
|
-
window.location.href = '/logout';
|
|
3278
|
+
window.location.href = this.config.getLoginBase() + '/logout';
|
|
3267
3279
|
return;
|
|
3268
3280
|
}
|
|
3269
3281
|
}
|
|
3270
3282
|
if (gatewayLogout) {
|
|
3271
3283
|
// by default we are just resetting internal state to 'logged out' and in
|
|
3272
3284
|
// some cases call gateways logout endpoint to do logout stuff there silently
|
|
3273
|
-
this.http.get(`${this.profile.host || ''}/logout`).subscribe();
|
|
3285
|
+
this.http.get(`${this.profile.host || ''}${this.config.getLoginBase()}/logout`).subscribe();
|
|
3274
3286
|
}
|
|
3275
3287
|
this.backend.setAuthProfile(this.profile);
|
|
3276
3288
|
this.eventService.trigger(EnaioEvent.LOGOUT);
|
|
@@ -4049,6 +4061,13 @@ DmsService.ctorParameters = () => [
|
|
|
4049
4061
|
{ type: EventService }
|
|
4050
4062
|
];
|
|
4051
4063
|
|
|
4064
|
+
//export type QueryScope = 'indexdate' | 'content' | 'all';
|
|
4065
|
+
var QueryScope;
|
|
4066
|
+
(function (QueryScope) {
|
|
4067
|
+
QueryScope["ALL"] = "all";
|
|
4068
|
+
QueryScope["CONTENT"] = "content";
|
|
4069
|
+
QueryScope["INDEX_DATA"] = "indexdata";
|
|
4070
|
+
})(QueryScope || (QueryScope = {}));
|
|
4052
4071
|
/**
|
|
4053
4072
|
* The SearchQuery Class
|
|
4054
4073
|
*
|
|
@@ -4229,6 +4248,7 @@ class SearchQuery {
|
|
|
4229
4248
|
// add options when they differ from the default values
|
|
4230
4249
|
if (this.applyOptions()) {
|
|
4231
4250
|
queryJson.options = {};
|
|
4251
|
+
queryJson.options.scope = this.scope;
|
|
4232
4252
|
if (this.suggest) {
|
|
4233
4253
|
queryJson.options.suggest = true;
|
|
4234
4254
|
}
|
|
@@ -4261,6 +4281,7 @@ class SearchQuery {
|
|
|
4261
4281
|
// determines whether or not the query send to the search service should contain options
|
|
4262
4282
|
applyOptions() {
|
|
4263
4283
|
return (this.expertMode ||
|
|
4284
|
+
!!this.scope ||
|
|
4264
4285
|
this.suggest ||
|
|
4265
4286
|
this.highlighting ||
|
|
4266
4287
|
this.resolveReference ||
|
|
@@ -4595,6 +4616,7 @@ class StoredQuery extends SearchQuery {
|
|
|
4595
4616
|
this.filters = searchQuery ? searchQuery.filters : [];
|
|
4596
4617
|
this.suggest = searchQuery ? searchQuery.suggest : false;
|
|
4597
4618
|
this.expertMode = searchQuery ? searchQuery.expertMode : false;
|
|
4619
|
+
this.scope = searchQuery ? searchQuery.scope : null;
|
|
4598
4620
|
this.searchMode = searchQuery ? searchQuery.searchMode : 'idx';
|
|
4599
4621
|
}
|
|
4600
4622
|
/**
|
|
@@ -4771,6 +4793,7 @@ class SearchService {
|
|
|
4771
4793
|
if (qObj.options) {
|
|
4772
4794
|
q.suggest = qObj.options.suggest || false;
|
|
4773
4795
|
q.expertMode = qObj.options.expertmode || false;
|
|
4796
|
+
q.scope = qObj.options.scope;
|
|
4774
4797
|
q.resolveReference = qObj.options.resolveReference || true;
|
|
4775
4798
|
q.searchMode =
|
|
4776
4799
|
qObj.options.searchmode || SearchQuery.DEFAULT_SEARCH_MODE;
|
|
@@ -5814,5 +5837,5 @@ class UploadFileItem {
|
|
|
5814
5837
|
* Generated bundle index. Do not edit.
|
|
5815
5838
|
*/
|
|
5816
5839
|
|
|
5817
|
-
export { AppCacheService, AuthService, BackendService, BpmService, CORE_CONFIG, CUSTOM_CONFIG, CapabilitiesService, ClipboardAction, ClipboardService, Config, CoreConfig, CoreInit, Direction, DmsObject, DmsObjectAttachment, DmsObjectHistoryEntry, DmsService, EnaioEvent, EnvironmentEnaio, EnvironmentService, EoCoreModule, EoError, EoSharedModule, EoUser, EoxMissingTranslationHandler, EoxTranslateJsonLoader, EventService, FieldDefinition, InboxItem, InboxService, LocalStorageService, Logger, NotificationsService, ObjectType, PrepareService, PreparedItem, Process, RangeValue, SearchFilter, SearchQuery, SearchResult, SearchService, SearchState, SortOption, StoredQueriesService, StoredQuery, SubscriptionMode, SystemService, SystemStatusEnum, UploadFileItem, UploadRegistryService, UploadService, UploadTarget, UserService, Utils, WorkItem, WorkItemHistoryEntry, init_module, SystemStatusService as ɵa, ConsoleLogService as ɵb, AuthInterceptor as ɵc };
|
|
5840
|
+
export { AppCacheService, AuthService, BackendService, BpmService, CORE_CONFIG, CUSTOM_CONFIG, CapabilitiesService, ClipboardAction, ClipboardService, Config, CoreConfig, CoreInit, Direction, DmsObject, DmsObjectAttachment, DmsObjectHistoryEntry, DmsService, EnaioEvent, EnvironmentEnaio, EnvironmentService, EoCoreModule, EoError, EoSharedModule, EoUser, EoxMissingTranslationHandler, EoxTranslateJsonLoader, EventService, FieldDefinition, InboxItem, InboxService, LocalStorageService, Logger, NotificationsService, ObjectType, PrepareService, PreparedItem, Process, QueryScope, RangeValue, SearchFilter, SearchQuery, SearchResult, SearchService, SearchState, SortOption, StoredQueriesService, StoredQuery, SubscriptionMode, SystemService, SystemStatusEnum, UploadFileItem, UploadRegistryService, UploadService, UploadTarget, UserService, Utils, WorkItem, WorkItemHistoryEntry, init_module, SystemStatusService as ɵa, ConsoleLogService as ɵb, AuthInterceptor as ɵc };
|
|
5818
5841
|
//# sourceMappingURL=eo-sdk-client-projects-eo-sdk-core.js.map
|