@techextensor/tab-core-utility 2.2.176 → 2.2.179
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/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/meta-data.helpers.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/helpers/common/template.helpers.mjs +2 -2
- 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/package.json +10 -10
package/esm2022/index.mjs
CHANGED
|
@@ -80,4 +80,4 @@ export * from './lib/tab-core-utility/core/pipe/translate.pipe';
|
|
|
80
80
|
// Provider
|
|
81
81
|
export * from './lib/tab-core-utility/core/provider/translation.provider';
|
|
82
82
|
export * from './lib/tab-core-utility/core/provider/notification.provider';
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQkFBa0I7QUFDbEIsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyx3REFBd0QsQ0FBQztBQUV2RSxhQUFhO0FBQ2IsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLG9EQUFvRCxDQUFDO0FBQ25FLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMscURBQXFELENBQUM7QUFFcEUsYUFBYTtBQUNiLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLGdEQUFnRCxDQUFDO0FBRS9ELGdCQUFnQjtBQUNoQixjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsdUVBQXVFLENBQUM7QUFDdEYsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLDJEQUEyRCxDQUFDO0FBQzFFLGNBQWMsZ0VBQWdFLENBQUM7QUFDL0UsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLDZEQUE2RCxDQUFDO0FBRTVFLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyxvRUFBb0UsQ0FBQztBQUNuRixjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsZ0VBQWdFLENBQUM7QUFDL0UsY0FBYywwREFBMEQsQ0FBQztBQUN6RSxjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLHNGQUFzRjtBQUV0RixtQkFBbUI7QUFDbkIsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsc0RBQXNELENBQUM7QUFFckUsZUFBZTtBQUNmLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsNkRBQTZELENBQUM7QUFFNUUsY0FBYztBQUNkLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLCtDQUErQyxDQUFDO0FBRTlELE9BQU87QUFDUCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLGlEQUFpRCxDQUFDO0FBRWhFLE9BQU87QUFDUCwrRkFBK0Y7QUFDL0YsaUZBQWlGO0FBQ2pGLHdGQUF3RjtBQUV4RixjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMscURBQXFELENBQUM7QUFFcEUsK0RBQStEO0FBRy9ELFFBQVE7QUFFUiw2REFBNkQ7QUFDN0QsNERBQTREO0FBQzVELDBEQUEwRDtBQUUxRCxVQUFVO0FBQ1YsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYyx3REFBd0QsQ0FBQztBQUV2RSxPQUFPO0FBQ1AsY0FBYyxpREFBaUQsQ0FBQztBQUVoRSxXQUFXO0FBQ1gsY0FBYywyREFBMkQsQ0FBQztBQUMxRSxjQUFjLDREQUE0RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQXBwIC8gY29uc3RhbnRzXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9jb25zdGFudHMvYXBpLWNvbnN0YW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9jb25zdGFudHMvY29tbW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2NvbnN0YW50cy9lcnJvci1tZXNzYWdlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9jb25zdGFudHMvc3RvcmFnZS1jb25zdGFudHMnO1xuXG4vLyBBcHAgLyBjcnVkXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9jcnVkL3RhYi1jcnVkLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvY3J1ZC90YWItZ2V0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvY3J1ZC90YWItZm9ybWlvLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvY3J1ZC90YWItaW5zZXJ0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvY3J1ZC90YWItZGVsZXRlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvY3J1ZC90YWItdXBkYXRlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvY3J1ZC90YWItd29ya2Zsb3cuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9jcnVkL3RhYi1ibHVlcHJpbnQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9jcnVkL3RhYi1yZWxlYXNlLnNlcnZpY2UnO1xuXG4vLyBBcHAgLyBlbnVtXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9lbnVtcy9jb21tb24uZW51bSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9lbnVtcy9jb250cm9sbGVycy5lbnVtJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2VudW1zL2RzcS5lbnVtJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2VudW1zL3Blcm1pc3Npb24uZW51bSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9lbnVtcy9xdWVyeS5lbnVtJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2VudW1zL3dvcmtmbG93LmVudW0nO1xuXG4vLyBBcHAgLyBoZWxwZXJzXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9oZWxwZXJzL2NvbW1vbi9hcHAuaGVscGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9oZWxwZXJzL2NvbW1vbi91c2VyLXBlcnNvbmFsaXphdGlvbi5oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vZHNxLmhlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vcmVxLXJlcy5oZWxwZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2hlbHBlcnMvY29tbW9uL3doZXJlLWNsYXVzZS5oZWxwZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2hlbHBlcnMvY29tbW9uL3RlbXBsYXRlLmhlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vbWV0YS1kYXRhLmhlbHBlcnMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9oZWxwZXJzL3NjcmVlbi9mb3Jtcy5oZWxwZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2hlbHBlcnMvc2NyZWVuL2dyaWQtY29sdW1uLWRhdGEuaGVscGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9oZWxwZXJzL3NjcmVlbi9ncmlkLmhlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9zY3JlZW4vbWVkaWEtdXBsb2FkLmhlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9zY3JlZW4vcGx1Z2luLmhlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9zY3JlZW4vc2NyZWVuLmhlbHBlcnMnO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9zY3JlZW4vZnRwLW1lZGlhLXVwbG9hZC5oZWxwZXJzJztcblxuLy8gQXBwIC8gaW50ZXJmYWNlc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaW50ZXJmYWNlcy9hdXRoLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9pbnRlcmZhY2VzL2NvbW1vbi5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaW50ZXJmYWNlcy91c2VyLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9pbnRlcmZhY2VzL29yZ0luZm8uaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2ludGVyZmFjZXMvc2NoZW1hLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9pbnRlcmZhY2VzL2dyaWQuaW50ZXJmYWNlJztcblxuLy8gQXBwIC8gbW9kZWxzXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9tb2RlbHMvYXBpLXF1ZXJ5LmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL21vZGVscy9hcHAtb2JqZWN0LmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL21vZGVscy9jb21tb24uY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvbW9kZWxzL2RhdGEtc291cmNlLXF1ZXJpZXMuY2xhc3MnO1xuXG4vLyBBcHAgLyB1dGlsc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvdXRpbHMvZmlsdGVyLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvdXRpbHMvZm9ybS1idWlsZGVyLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvdXRpbHMvanNvbi51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL3V0aWxzL29wZXJhdG9ycy51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL3V0aWxzL3JlcS1yZXMudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC91dGlscy90YWItYXBwLnV0aWwnO1xuXG4vLyBBdXRoXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2F1dGgvYXV0aC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXV0aC9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hdXRoL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXV0aC9pZGItc3RvcmFnZS5zZXJ2aWNlJztcblxuLy8gQ29yZVxuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9jb3JlL2Vycm9yLWhhbmRsZXIvZXJyb3ItaGFuZGxlci1pbnRlcmNlcHRvci5zZXJ2aWNlJztcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvY29yZS9lcnJvci1oYW5kbGVyL2Vycm9yLWhhbmRsZXIuc3RvcmUnO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9jb3JlL2Vycm9yLWhhbmRsZXIvbW9kZWxzL2Vycm9yLWhhbmRsZXIuc3RhdGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvaHR0cC1jbGllbnQvYXBpLXVybC50b2tlbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvaHR0cC1jbGllbnQvYXBpLnNlcnZpY2UnO1xuXG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvdXRpbC9hdXRoLnV0aWxzJztcblxuXG4vLyBzdG9yZVxuXG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L3N0b3JlL29yZ2luZm8uc3RvcmUnXG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L3N0b3JlL3NjaGVtYS5zdG9yZSdcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvc3RvcmUvYXV0aC5zdG9yZSdcblxuLy8gU2VydmljZVxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9jb3JlL3NlcnZpY2UvdHJhbnNsYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvc2VydmljZS9ub3RpZmljYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvc2VydmljZS9jb25maXJtYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvc2VydmljZS9lbmNyeXB0aW9uLnNlcnZpY2UnO1xuXG4vLyBQaXBlXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvcGlwZS90cmFuc2xhdGUucGlwZSc7XG5cbi8vIFByb3ZpZGVyXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvcHJvdmlkZXIvdHJhbnNsYXRpb24ucHJvdmlkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9jb3JlL3Byb3ZpZGVyL25vdGlmaWNhdGlvbi5wcm92aWRlcic7XG5cbiJdfQ==
|
|
@@ -4,4 +4,4 @@ export const AppObjectsConstants = {
|
|
|
4
4
|
export const DataSourceQueriesConstants = {
|
|
5
5
|
Detail_TABD_Queries: 'Detail_TABD_Queries',
|
|
6
6
|
};
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLW9iamVjdC1jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvY29uc3RhbnRzL2FwcC1vYmplY3QtY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQ2pDLFlBQVksRUFBRSxjQUFjO0NBQzdCLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRztJQUN4QyxtQkFBbUIsRUFBRSxxQkFBcUI7Q0FDM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBBcHBPYmplY3RzQ29uc3RhbnRzID0ge1xuICBUQUJEX1F1ZXJpZXM6ICdUQUJEX1F1ZXJpZXMnLFxufTtcbmV4cG9ydCBjb25zdCBEYXRhU291cmNlUXVlcmllc0NvbnN0YW50cyA9IHtcbiAgRGV0YWlsX1RBQkRfUXVlcmllczogJ0RldGFpbF9UQUJEX1F1ZXJpZXMnLFxufTtcbiJdfQ==
|
|
@@ -35,4 +35,4 @@ export class TabBlueprintService {
|
|
|
35
35
|
type: Injectable,
|
|
36
36
|
args: [{ providedIn: 'root' }]
|
|
37
37
|
}], null, null); })();
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWJsdWVwcmludC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2NydWQvdGFiLWJsdWVwcmludC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFNakQsTUFBTSxPQUFPLG1CQUFtQjtJQURoQztRQUVtQixlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBK0JsRDtJQTdCQzs7Ozs7T0FLRztJQUNILGFBQWEsQ0FBQyxPQUEwQixFQUFFLE1BQVk7UUFDcEQsTUFBTSxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUMsQ0FBQyxrQ0FBa0M7UUFDaEUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FDeEIsR0FBRyxHQUFHLENBQUMsYUFBYSxhQUFhLE9BQU8sQ0FBQyxRQUFRLEdBQUksT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixPQUFPLENBQUMsV0FBVyxFQUFFLENBQUEsQ0FBQyxDQUFDLEVBQUcsRUFBRSxFQUNoSSxNQUFNLEVBQ04sT0FBTyxDQUNSLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxZQUFZLENBQUMsT0FBNEIsRUFBRSxNQUFZO1FBQ3JELE1BQU0sT0FBTyxHQUFHLFVBQVUsRUFBRSxDQUFDLENBQUMsa0NBQWtDO1FBQ2hFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLEdBQUcsR0FBRyxDQUFDLFlBQVksYUFBYSxPQUFPLENBQUMsUUFBUSx5QkFBeUIsT0FBTyxDQUFDLG9CQUFvQixHQUFJLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFBLENBQUMsQ0FBQyxFQUFHLEVBQUUsRUFDcEwsTUFBTSxFQUNOLE9BQU8sQ0FDUixDQUFDO0lBQ0osQ0FBQztvRkEvQlUsbUJBQW1CO3VFQUFuQixtQkFBbUIsV0FBbkIsbUJBQW1CLG1CQUROLE1BQU07O2lGQUNuQixtQkFBbUI7Y0FEL0IsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvaHR0cC1jbGllbnQvYXBpLnNlcnZpY2VcIjtcbmltcG9ydCB7IGdldEhlYWRlcnMgfSBmcm9tIFwiLi4vdXRpbHMvcmVxLXJlcy51dGlsXCI7XG5pbXBvcnQgeyBBUEkgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2FwaS1jb25zdGFudHNcIjtcbmltcG9ydCB7IENvbW1vbkFwaVJlc3BvbnNlLCBOZXh0U3RhdHVzUGF5bG9hZCwgVXBkYXRlU3RhdHVzUGF5bG9hZCB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL2NvbW1vbi5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuXG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVGFiQmx1ZXByaW50U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpU2VydmljZSA9IGluamVjdChBcGlTZXJ2aWNlKTtcblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBuZXh0IHN0YXR1cyBvZiBhIHJlY29yZC5cbiAgICogQHBhcmFtIHBheWxvYWQgLSBPYmplY3QgY29udGFpbmluZyB0aGUgcmVjb3JkSWQgYW5kIGFwcE9iamVjdElkLlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gT3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIEFQSSBjYWxsLlxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIG9mIHRoZSBBUEkgcmVzcG9uc2UuXG4gICAqL1xuICBnZXROZXh0U3RhdHVzKHBheWxvYWQ6IE5leHRTdGF0dXNQYXlsb2FkLCBwYXJhbXM/OiBhbnkpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTsgLy8gR2V0IGhlYWRlcnMgZm9yIHRoZSBBUEkgcmVxdWVzdFxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0KFxuICAgICAgYCR7QVBJLmdldE5leHRTdGF0dXN9P1JlY29yZElkPSR7cGF5bG9hZC5yZWNvcmRJZH0keyBwYXlsb2FkPy5hcHBPYmplY3RJZD8ubGVuZ3RoID8gYCZBcHBPYmplY3RJZD0ke3BheWxvYWQuYXBwT2JqZWN0SWR9YDogJycgfWAsXG4gICAgICBwYXJhbXMsXG4gICAgICBoZWFkZXJzXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBzdGF0dXMgb2YgYSByZWNvcmQuXG4gICAqIEBwYXJhbSBwYXlsb2FkIC0gT2JqZWN0IGNvbnRhaW5pbmcgdGhlIG5leHQgcG9zc2libGUgc3RhdHVzIElELlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gT3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIEFQSSBjYWxsLlxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIG9mIHRoZSBBUEkgcmVzcG9uc2UuXG4gICAqL1xuICB1cGRhdGVTdGF0dXMocGF5bG9hZDogVXBkYXRlU3RhdHVzUGF5bG9hZCwgcGFyYW1zPzogYW55KTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7IC8vIEdldCBoZWFkZXJzIGZvciB0aGUgQVBJIHJlcXVlc3RcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldChcbiAgICAgIGAke0FQSS51cGRhdGVTdGF0dXN9P1JlY29yZElkPSR7cGF5bG9hZC5yZWNvcmRJZH0mTmV4dFBvc3NpYmxlU3RhdHVzSWQ9JHtwYXlsb2FkLm5leHRQb3NzaWJsZVN0YXR1c0lkfSR7IHBheWxvYWQ/LmFwcE9iamVjdElkPy5sZW5ndGggPyBgJkFwcE9iamVjdElkPSR7cGF5bG9hZC5hcHBPYmplY3RJZH1gOiAnJyB9YCxcbiAgICAgIHBhcmFtcyxcbiAgICAgIGhlYWRlcnNcbiAgICApO1xuICB9XG59Il19
|
|
@@ -237,4 +237,4 @@ export class TabCrudService {
|
|
|
237
237
|
type: Injectable,
|
|
238
238
|
args: [{ providedIn: 'root' }]
|
|
239
239
|
}], null, null); })();
|
|
240
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWNydWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9jcnVkL3RhYi1jcnVkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuSCxPQUFPLEVBQWdDLGlCQUFpQixFQUFnQixNQUFNLDJCQUEyQixDQUFDO0FBQzFHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRzFGLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQUdoRSxNQUFNLE9BQU8sY0FBYztJQUQzQjtRQUVxQixvQkFBZSxHQUFtQixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDekQsMkJBQXNCLEdBQTBCLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzlFLGVBQVUsR0FBYyxNQUFNLENBQUMsU0FBUyxD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RUQsdURBQXVEO1FBQ3ZELE1BQU0sTUFBTSxHQUFRLEVBQUUsQ0FBQztRQUN2QixJQUFJLE9BQU8sT0FBTyxFQUFFLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMxQyw2REFBNkQ7WUFDN0QsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pELE1BQU0sQ0FBQyxJQUFJLENBQUM7b0JBQ1IsSUFBSSxFQUFFLEdBQUc7b0JBQ1QsS0FBSyxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO2lCQUNqQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFFRCwrQkFBK0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFO1lBQ3RDLEdBQUcsT0FBTztZQUNWLFVBQVUsRUFBRSxNQUFNO1NBQ3JCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEIsQ0FBQzsrRUFoUVEsY0FBYzt1RUFBZCxjQUFjLFdBQWQsY0FBYyxtQkFERCxNQUFNOztpRkFDbkIsY0FBYztjQUQxQixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb21tb25BcGlSZXNwb25zZSwgQ3J1ZEJhc2VQYXlsb2FkLCBEZWxldGVQYXlsb2FkLCBleGVjdXRlU3RvcmVkUHJvY2VkdXJlUGF5bG9hZCwgR2V0UGF5bG9hZCwgSW5zZXJ0UGF5bG9hZCwgVXBkYXRlUGF5bG9hZCB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL2NvbW1vbi5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHsgQXBwT2JqZWN0TW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL2FwcC1vYmplY3QubW9kZWxcIjtcclxuaW1wb3J0IHsgTWV0YWRhdGFIZWxwZXIgfSBmcm9tIFwiLi4vaGVscGVycy9jb21tb24vbWV0YS1kYXRhLmhlbHBlcnNcIjtcclxuaW1wb3J0IHsgY3JlYXRlRHluYW1pY0RhdGEsIGdldEJ1bGtJbnNlcnRGaWVsZHMsIGdldEJ1bGtJbnNlcnRWYWx1ZXMsIHJlbW92ZUJsYW5rVmFsdWUgfSBmcm9tIFwiLi4vdXRpbHMvanNvbi51dGlsXCI7XHJcbmltcG9ydCB7IEFQSUJ1bGtJbnNlcnRGaWVsZHNWYWx1ZVNldHMsIEFQSUZpbHRlckNyaXRlcmlhLCBBUElWYWx1ZVNldHMgfSBmcm9tIFwiLi4vbW9kZWxzL2FwaS1xdWVyeS5jbGFzc1wiO1xyXG5pbXBvcnQgeyBSZXF1ZXN0UmVzcG9uc2VIZWxwZXIgfSBmcm9tIFwiLi4vaGVscGVycy9jb21tb24vcmVxLXJlcy5oZWxwZXJzXCI7XHJcbmltcG9ydCB7IERTUUhlbHBlciB9IGZyb20gXCIuLi9oZWxwZXJzL2NvbW1vbi9kc3EuaGVscGVyc1wiO1xyXG5pbXBvcnQgeyBRdWVyeVR5cGUgfSBmcm9tIFwiLi4vZW51bXMvcXVlcnkuZW51bVwiO1xyXG5pbXBvcnQgeyBDb25qdWN0aW9uQ2xhdXNlLCBGaWx0ZXJWYWx1ZVR5cGUsIFJlbGF0aW9uYWxPcGVyYXRvciB9IGZyb20gXCIuLi9lbnVtcy9kc3EuZW51bVwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgRGF0YVNvdXJjZVF1ZXJ5TW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL2RhdGEtc291cmNlLXF1ZXJ5Lm1vZGVsXCI7XHJcbmltcG9ydCB7IEFQSSB9IGZyb20gXCIuLi9jb25zdGFudHMvYXBpLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBnZXRIZWFkZXJzIH0gZnJvbSBcIi4uL3V0aWxzL3JlcS1yZXMudXRpbFwiO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvaHR0cC1jbGllbnQvYXBpLnNlcnZpY2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBUYWJDcnVkU2VydmljZSB7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9tZXRhZGF0YUhlbHBlcjogTWV0YWRhdGFIZWxwZXIgPSBpbmplY3QoTWV0YWRhdGFIZWxwZXIpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcmVxdWVzdFJlc3BvbnNlSGVscGVyOiBSZXF1ZXN0UmVzcG9uc2VIZWxwZXIgPSBpbmplY3QoUmVxdWVzdFJlc3BvbnNlSGVscGVyKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2RzcUhlbHBlcjogRFNRSGVscGVyID0gaW5qZWN0KERTUUhlbHBlcik7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9hcGlTZXJ2aWNlID0gaW5qZWN0KEFwaVNlcnZpY2UpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGUgQXBwT2JqZWN0TW9kZWwgZnJvbSB0aGUgZ2l2ZW4gcGF5bG9hZC5cclxuICAgICAqIEBwYXJhbSBwYXlsb2FkIFRoZSBwYXlsb2FkIHdpdGggZWl0aGVyIGRhdGFTb3VyY2VRdWVyeUlkT3JOYW1lIG9yIGFwcE9iamVjdElkT3JOYW1lLlxyXG4gICAgICogQHJldHVybnMgVGhlIEFwcE9iamVjdE1vZGVsLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldEFwcE9iamVjdEZyb21QYXlsb2FkKHBheWxvYWQ6IENydWRCYXNlUGF5bG9hZCk6IEFwcE9iamVjdE1vZGVsIHtcclxuICAgICAgICBsZXQgYXBwT2JqZWN0O1xyXG5cclxuICAgICAgICBpZiAocGF5bG9hZD8uZGF0YVNvdXJjZVF1ZXJ5SWRPck5hbWUpIHtcclxuICAgICAgICAgICAgLy8gSWYgZGF0YVNvdXJjZVF1ZXJ5SWRPck5hbWUgaXMgZ2l2ZW4sIGdldCB0aGUgQXBwT2JqZWN0TW9kZWwgZnJvbSB0aGUgZGF0YSBzb3VyY2UgcXVlcnlcclxuICAgICAgICAgICAgYXBwT2JqZWN0ID0gdGhpcy5fbWV0YWRhdGFIZWxwZXIuZ2V0RGF0YVNvdXJjZVF1ZXJ5QnlJZE9yTmFtZShwYXlsb2FkLmRhdGFTb3VyY2VRdWVyeUlkT3JOYW1lKT8ucGFyZW50QXBwT2JqZWN0O1xyXG5cclxuICAgICAgICB9IGVsc2UgaWYgKHBheWxvYWQ/LmFwcE9iamVjdElkT3JOYW1lKSB7XHJcbiAgICAgICAgICAgIC8vIElmIGFwcE9iamVjdElkT3JOYW1lIGlzIGdpdmVuLCBnZXQgdGhlIEFwcE9iamVjdE1vZGVsIGRpcmVjdGx5XHJcbiAgICAgICAgICAgIGFwcE9iamVjdCA9IHRoaXMuX21ldGFkYXRhSGVscGVyLmdldEFwcE9iamVjdEJ5SWRPck5hbWUocGF5bG9hZC5hcHBPYmplY3RJZE9yTmFtZSk7XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFhcHBPYmplY3Q/LklEKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXBwT2JqZWN0IG5vdCBmb3VuZCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGFwcE9iamVjdDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpbHRlcnMgb3V0IGludmFsaWQgZmllbGRzIGZyb20gdGhlIHByb3ZpZGVkIGRhdGEgYmFzZWQgb24gdGhlIEFwcE9iamVjdE1vZGVsLlxyXG4gICAgICogT3B0aW9uYWxseSByZXRhaW5zIHByaW1hcnkga2V5IGZpZWxkcy5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIGRhdGEgVGhlIGRhdGEgb2JqZWN0IHRvIGZpbHRlci5cclxuICAgICAqIEBwYXJhbSBhcHBPYmplY3QgVGhlIEFwcE9iamVjdE1vZGVsIHVzZWQgdG8gdmFsaWRhdGUgdGhlIGZpZWxkcy5cclxuICAgICAqIEBwYXJhbSBrZWVwUHJpbWFyeUtleSBPcHRpb25hbCBmbGFnIHRvIHJldGFpbiBwcmltYXJ5IGtleSBmaWVsZHMuIERlZmF1bHRzIHRvIGZhbHNlLlxyXG4gICAgICogQHJldHVybnMgQSBuZXcgb2JqZWN0IHdpdGggb25seSB2YWxpZCBmaWVsZHMuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZmlsdGVyVmFsaWRBcHBPYmplY3RGaWVsZHMoZGF0YTogYW55LCBhcHBPYmplY3Q6IEFwcE9iamVjdE1vZGVsLCBrZWVwUHJpbWFyeUtleSA9IGZhbHNlKSB7XHJcbiAgICAgICAgaWYgKCFkYXRhIHx8IHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0JykgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGRhdGEnKTtcclxuXHJcbiAgICAgICAgY29uc3QgZmlsdGVyZWREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcblxyXG4gICAgICAgIC8vIFJlbW92ZSBmaWVsZHMgd2l0aCBibGFuayB2YWx1ZXNcclxuICAgICAgICByZW1vdmVCbGFua1ZhbHVlKGZpbHRlcmVkRGF0YSk7XHJcblxyXG4gICAgICAgIC8vIEl0ZXJhdGUgb3ZlciBlYWNoIGtleSBpbiB0aGUgZmlsdGVyZWQgZGF0YVxyXG4gICAgICAgIE9iamVjdC5rZXlzKGZpbHRlcmVkRGF0YSk/LmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBhcHBGaWVsZCA9IGFwcE9iamVjdC5maWVsZChrZXkpO1xyXG4gICAgICAgICAgICBjb25zdCBjaGlsZEZpZWxkID0gYXBwT2JqZWN0LkNoaWxkUmVsYXRpb25TaGlwcz8uc29tZSgoeCkgPT4geD8uY2hpbGREZXRhaWxzPy5Mb29rdXBPYmplY3QgPT09IGtleSk7XHJcblxyXG4gICAgICAgICAgICAvLyBEZWxldGUgdGhlIGZpZWxkIGlmIGl0IGlzIG5vdCB2YWxpZCBvciBpZiBwcmltYXJ5IGtleXMgc2hvdWxkIG5vdCBiZSBrZXB0XHJcbiAgICAgICAgICAgIGlmICghKGFwcEZpZWxkIHx8IGNoaWxkRmllbGQpIHx8ICgha2VlcFByaW1hcnlLZXkgJiYgYXBwRmllbGQ/LklzUHJpbWFyeUtleSkpIHtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSBmaWx0ZXJlZERhdGFba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gZmlsdGVyZWREYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2VuZXJhdGVzIGEgd2hlcmUgY2xhdXNlIGJhc2VkIG9uIHRoZSBjcml0ZXJpYSBwcm92aWRlZC5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIGNyaXRlcmlhIFRoZSBjcml0ZXJpYSBvYmplY3QgdG8gZ2VuZXJhdGUgdGhlIHdoZXJlIGNsYXVzZSBmcm9tLlxyXG4gICAgICogQHBhcmFtIGNydWRUYWJsZU5hbWUgVGhlIENSVUQgdGFibGUgbmFtZSB0byB1c2UgaW4gdGhlIHdoZXJlIGNsYXVzZS5cclxuICAgICAqIEByZXR1cm5zIEEgbmV3IEFQSUZpbHRlckNyaXRlcmlhIG9iamVjdCB3aXRoIHRoZSBnZW5lcmF0ZWQgd2hlcmUgY2xhdXNlLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdlbmVyYXRlV2hlcmVDbGF1c2UoY3JpdGVyaWE6IGFueSwgY3J1ZFRhYmxlTmFtZTogc3RyaW5nLCBwcm92aWRlRW1wdHlXaGVyZUNsYXVzZSA9IGZhbHNlKTogQVBJRmlsdGVyQ3JpdGVyaWEge1xyXG4gICAgICAgIGlmICghcHJvdmlkZUVtcHR5V2hlcmVDbGF1c2UgJiYgKCFjcml0ZXJpYSB8fCB0eXBlb2YgY3JpdGVyaWEgIT09ICdvYmplY3QnIHx8ICFPYmplY3Qua2V5cyhjcml0ZXJpYSkpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY3JpdGVyaWEnKTtcclxuXHJcbiAgICAgICAgLy8gUmVtb3ZlIGJsYW5rIHZhbHVlcyBmcm9tIHRoZSBjcml0ZXJpYVxyXG4gICAgICAgIHJlbW92ZUJsYW5rVmFsdWUoY3JpdGVyaWEpO1xyXG5cclxuICAgICAgICAvLyBDcmVhdGUgYSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEgb2JqZWN0XHJcbiAgICAgICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgICAgICB3aGVyZUNsYXVzZS5GaWx0ZXJzID0gW107XHJcblxyXG4gICAgICAgIC8vIEl0ZXJhdGUgb3ZlciBlYWNoIGtleSBpbiB0aGUgY3JpdGVyaWEgYW5kIGFkZCBpdCB0byB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICAgICAgT2JqZWN0LmtleXMoY3JpdGVyaWEpPy5mb3JFYWNoKChrZXk6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXIgPSB7XHJcbiAgICAgICAgICAgICAgICBDb25qdWN0aW9uQ2xhdXNlOiBDb25qdWN0aW9uQ2xhdXNlLkFORCwgLy8gY29uanVjdGlvbiBjbGF1c2UgaXMgQU5EIGJ5IGRlZmF1bHRcclxuICAgICAgICAgICAgICAgIEZpZWxkSUQ6IGNydWRUYWJsZU5hbWUgKyAnLicgKyBrZXksIC8vIGNvbWJpbmUgdGhlIENSVUQgdGFibGUgbmFtZSB3aXRoIHRoZSBmaWVsZCBuYW1lXHJcbiAgICAgICAgICAgICAgICBSZWxhdGlvbmFsT3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5FcXVhbFRvLCAvLyByZWxhdGlvbmFsIG9wZXJhdG9yIGlzIEVxdWFsVG8gYnkgZGVmYXVsdFxyXG4gICAgICAgICAgICAgICAgVmFsdWVUeXBlOiBGaWx0ZXJWYWx1ZVR5cGUuTGl0ZXJhbCwgLy8gdmFsdWUgdHlwZSBpcyBMaXRlcmFsIGJ5IGRlZmF1bHRcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBjcml0ZXJpYVtrZXldLCAvLyBzZXQgdGhlIHZhbHVlIG9mIHRoZSBmaWx0ZXJcclxuICAgICAgICAgICAgICAgIFNlcXVlbmNlOiAwLCAvLyBzZXQgdGhlIHNlcXVlbmNlIHRvIDAgYnkgZGVmYXVsdFxyXG4gICAgICAgICAgICAgICAgR3JvdXBJRDogMCAvLyBzZXQgdGhlIGdyb3VwIElEIHRvIDAgYnkgZGVmYXVsdFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB3aGVyZUNsYXVzZS5GaWx0ZXJzLnB1c2goZmlsdGVyKTsgLy8gYWRkIHRoZSBmaWx0ZXIgdG8gdGhlIGFycmF5IG9mIGZpbHRlcnNcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gU2V0IHRoZSBmaWx0ZXIgbG9naWMgdG8gJzEnXHJcbiAgICAgICAgd2hlcmVDbGF1c2UuRmlsdGVyTG9naWMgPSAnMSc7XHJcblxyXG4gICAgICAgIC8vIFJldHVybiB0aGUgZ2VuZXJhdGVkIHdoZXJlIGNsYXVzZVxyXG4gICAgICAgIHJldHVybiB3aGVyZUNsYXVzZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV4ZWN1dGVzIGEgR0VUIHJlcXVlc3QgdG8gcmV0cmlldmUgZGF0YSBmcm9tIHRoZSBzcGVjaWZpZWQgZGF0YSBzb3VyY2UgcXVlcnkuXHJcbiAgICAgKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZCBjb250YWluaW5nIHRoZSBjcml0ZXJpYSBmb3IgdGhlIHF1ZXJ5IGFuZCB0aGUgQXBwT2JqZWN0TW9kZWwgSUQuXHJcbiAgICAgKiBAcGFyYW0gaGVhZGVycyBPcHRpb25hbCBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdC5cclxuICAgICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgdGhlIHJlc3BvbnNlIGZyb20gdGhlIEFQSS5cclxuICAgICAqL1xyXG4gICAgZ2V0KHBheWxvYWQ6IEdldFBheWxvYWQsIGhlYWRlcnM/OiBhbnkpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICAgICAgLy8gR2V0IHRoZSBBcHBPYmplY3RNb2RlbCBmcm9tIHRoZSBwYXlsb2FkXHJcbiAgICAgICAgY29uc3QgYXBwT2JqZWN0OiBBcHBPYmplY3RNb2RlbCA9IHRoaXMuZ2V0QXBwT2JqZWN0RnJvbVBheWxvYWQocGF5bG9hZCk7XHJcblxyXG4gICAgICAgIC8vIEdldCB0aGUgRGF0YVNvdXJjZVF1ZXJ5TW9kZWwgZnJvbSB0aGUgQXBwT2JqZWN0TW9kZWxcclxuICAgICAgICBjb25zdCBkc3E6IERhdGFTb3VyY2VRdWVyeU1vZGVsIHwgdW5kZWZpbmVkID0gYXBwT2JqZWN0LmRhdGFTb3VyY2VRdWVyeShwYXlsb2FkLmRhdGFTb3VyY2VRdWVyeUlkT3JOYW1lKTtcclxuXHJcbiAgICAgICAgLy8gVmFsaWRhdGUgdGhlIEFwcE9iamVjdE1vZGVsIGFuZCBEYXRhU291cmNlUXVlcnlNb2RlbFxyXG4gICAgICAgIGlmICghYXBwT2JqZWN0IHx8ICFkc3EpIHRocm93IG5ldyBFcnJvcignQXBwT2JqZWN0IG9yIERhdGFTb3VyY2VRdWVyeSBub3QgZm91bmQnKTtcclxuXHJcbiAgICAgICAgLy8gR2V0IHRoZSBoZWFkZXJzIGZyb20gdGhlIHBheWxvYWRcclxuICAgICAgICBjb25zdCBoZWFkZXIgPSBnZXRIZWFkZXJzKGhlYWRlcnMpO1xyXG5cclxuICAgICAgICAvLyBFeGVjdXRlIHRoZSBHRVQgcmVxdWVzdFxyXG4gICAgICAgIHJldHVybiB0aGlzLl9hcGlTZXJ2aWNlLnBvc3QoXHJcbiAgICAgICAgICAgIC8vIFRoZSBVUkwgZm9yIHRoZSBHRVQgcmVxdWVzdFxyXG4gICAgICAgICAgICBgJHtBUEkuZ2V0RFNRfS8ke2FwcE9iamVjdD8uT2JqZWN0TmFtZX0vJHtkc3E/LlF1ZXJ5TmFtZX1gLFxyXG4gICAgICAgICAgICAvLyBUaGUgY3JpdGVyaWEgZm9yIHRoZSBxdWVyeVxyXG4gICAgICAgICAgICBwYXlsb2FkLmNyaXRlcmlhLFxyXG4gICAgICAgICAgICAvLyBUaGUgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3RcclxuICAgICAgICAgICAgaGVhZGVyXHJcbiAgICAgICAgKSBhcyBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluc2VydHMgZGF0YSBpbnRvIHRoZSBzcGVjaWZpZWQgdGFibGUuXHJcbiAgICAgKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZCBjb250YWluaW5nIHRoZSBkYXRhIHRvIGluc2VydCBhbmQgdGhlIEFwcE9iamVjdE1vZGVsIElELlxyXG4gICAgICogQHBhcmFtIGhlYWRlcnMgT3B0aW9uYWwgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3QuXHJcbiAgICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIG9mIHRoZSByZXNwb25zZSBmcm9tIHRoZSBBUEkuXHJcbiAgICAgKi9cclxuICAgIGluc2VydChwYXlsb2FkOiBJbnNlcnRQYXlsb2FkLCBoZWFkZXJzPzogYW55KTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgICAgIGNvbnN0IGFwcE9iamVjdDogQXBwT2JqZWN0TW9kZWwgPSB0aGlzLmdldEFwcE9iamVjdEZyb21QYXlsb2FkKHBheWxvYWQpO1xyXG5cclxuICAgICAgICAvLyBGaWx0ZXIgb3V0IGludmFsaWQgZmllbGRzIGZyb20gdGhlIGRhdGEgYmFzZWQgb24gdGhlIEFwcE9iamVjdE1vZGVsXHJcbiAgICAgICAgY29uc3QgZmlsdGVyZWREYXRhOiBhbnkgPSB0aGlzLmZpbHRlclZhbGlkQXBwT2JqZWN0RmllbGRzKHBheWxvYWQuZGF0YSwgYXBwT2JqZWN0KTtcclxuXHJcbiAgICAgICAgLy8gQ3JlYXRlIGEgd2hlcmUgY2xhdXNlIGZvciB0aGUgaW5zZXJ0IG9wZXJhdGlvblxyXG4gICAgICAgIGNvbnN0IHdoZXJlQ2xhdXNlOiBBUElGaWx0ZXJDcml0ZXJpYSA9IHRoaXMuZ2VuZXJhdGVXaGVyZUNsYXVzZSh7fSwgYXBwT2JqZWN0LlN5c3RlbURCVGFibGVOYW1lLCB0cnVlKTtcclxuXHJcbiAgICAgICAgLy8gVHJhbnNmb3JtIHRoZSBkYXRhIGludG8gdGhlIGZvcm1hdCByZXF1aXJlZCBieSB0aGUgQVBJXHJcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtZWREYXRhOiBBUElWYWx1ZVNldHNbXSA9IGNyZWF0ZUR5bmFtaWNEYXRhKGZpbHRlcmVkRGF0YSk7XHJcblxyXG4gICAgICAgIC8vIEdlbmVyYXRlIHRoZSBwYXlsb2FkIGZvciB0aGUgQVBJIHJlcXVlc3RcclxuICAgICAgICBjb25zdCBhcGlQYXlsb2FkID0gdGhpcy5fcmVxdWVzdFJlc3BvbnNlSGVscGVyLmluc2VydFBheWxvYWQoYXBwT2JqZWN0LlN5c3RlbURCVGFibGVOYW1lLCB3aGVyZUNsYXVzZSwgdHJhbnNmb3JtZWREYXRhKTtcclxuXHJcbiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgcXVlcnlcclxuICAgICAgICByZXR1cm4gdGhpcy5fZHNxSGVscGVyLmV4ZWN1dGVRdWVyeShhcGlQYXlsb2FkLCBRdWVyeVR5cGUuSW5zZXJ0LCBoZWFkZXJzKSBhcyBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPjtcclxuICAgIH1cclxuICAgIGJ1bGtJbnNlcnQocGF5bG9hZDogSW5zZXJ0UGF5bG9hZCwgaGVhZGVycz86IGFueSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgICAgICBjb25zdCBhcHBPYmplY3Q6IEFwcE9iamVjdE1vZGVsID0gdGhpcy5nZXRBcHBPYmplY3RGcm9tUGF5bG9hZChwYXlsb2FkKTtcclxuICAgICAgICAvLyBDcmVhdGUgYSB3aGVyZSBjbGF1c2UgZm9yIHRoZSBpbnNlcnQgb3BlcmF0aW9uXHJcbiAgICAgICAgY29uc3Qgd2hlcmVDbGF1c2U6IEFQSUZpbHRlckNyaXRlcmlhID0gdGhpcy5nZW5lcmF0ZVdoZXJlQ2xhdXNlKHt9LCBhcHBPYmplY3QuU3lzdGVtREJUYWJsZU5hbWUsIHRydWUpO1xyXG5cclxuICAgICAgICAvLyBUcmFuc2Zvcm0gdGhlIGRhdGEgaW50byB0aGUgZm9ybWF0IHJlcXVpcmVkIGJ5IHRoZSBBUElcclxuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZEZpZWxkczogc3RyaW5nW10gPSBnZXRCdWxrSW5zZXJ0RmllbGRzKHBheWxvYWQuZGF0YSk7XHJcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtZWRWYWx1ZXM6IEFQSUJ1bGtJbnNlcnRGaWVsZHNWYWx1ZVNldHNbXSA9IGdldEJ1bGtJbnNlcnRWYWx1ZXMocGF5bG9hZC5kYXRhKTtcclxuICAgICAgICAvLyBHZW5lcmF0ZSB0aGUgcGF5bG9hZCBmb3IgdGhlIEFQSSByZXF1ZXN0XHJcbiAgICAgICAgY29uc3QgYXBpUGF5bG9hZCA9IHRoaXMuX3JlcXVlc3RSZXNwb25zZUhlbHBlci5idWxrSW5zZXJ0UGF5bG9hZChhcHBPYmplY3QuU3lzdGVtREJUYWJsZU5hbWUsIHdoZXJlQ2xhdXNlLCB0cmFuc2Zvcm1lZFZhbHVlcywgdHJhbnNmb3JtZWRGaWVsZHMpO1xyXG4gICAgICAgIC8vIEV4ZWN1dGUgdGhlIHF1ZXJ5XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RzcUhlbHBlci5leGVjdXRlUXVlcnkoYXBpUGF5bG9hZCwgUXVlcnlUeXBlLkJ1bGtJbnNlcnQsIGhlYWRlcnMpIGFzIE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+O1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGVzIGRhdGEgaW4gdGhlIHNwZWNpZmllZCB0YWJsZS5cclxuICAgICAqIEBwYXJhbSBwYXlsb2FkIFRoZSBwYXlsb2FkIGNvbnRhaW5pbmcgdGhlIGRhdGEgdG8gdXBkYXRlLCB0aGUgY3JpdGVyaWEgZm9yIHRoZSB1cGRhdGUsIGFuZCB0aGUgQXBwT2JqZWN0TW9kZWwgSUQuXHJcbiAgICAgKiBAcGFyYW0gaGVhZGVycyBPcHRpb25hbCBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdC5cclxuICAgICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgdGhlIHJlc3BvbnNlIGZyb20gdGhlIEFQSS5cclxuICAgICAqL1xyXG4gICAgdXBkYXRlKHBheWxvYWQ6IFVwZGF0ZVBheWxvYWQsIGhlYWRlcnM/OiBhbnkpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICAgICAgY29uc3QgYXBwT2JqZWN0OiBBcHBPYmplY3RNb2RlbCA9IHRoaXMuZ2V0QXBwT2JqZWN0RnJvbVBheWxvYWQocGF5bG9hZCk7XHJcblxyXG4gICAgICAgIC8vIEZpbHRlciBvdXQgaW52YWxpZCBmaWVsZHMgZnJvbSB0aGUgZGF0YSBiYXNlZCBvbiB0aGUgQXBwT2JqZWN0TW9kZWxcclxuICAgICAgICBjb25zdCBmaWx0ZXJlZERhdGE6IGFueSA9IHRoaXMuZmlsdGVyVmFsaWRBcHBPYmplY3RGaWVsZHMocGF5bG9hZC5kYXRhLCBhcHBPYmplY3QpO1xyXG5cclxuICAgICAgICAvLyBHZW5lcmF0ZSBhIHdoZXJlIGNsYXVzZSBiYXNlZCBvbiB0aGUgY3JpdGVyaWEgcHJvdmlkZWRcclxuICAgICAgICBjb25zdCB3aGVyZUNsYXVzZTogQVBJRmlsdGVyQ3JpdGVyaWEgPSB0aGlzLmdlbmVyYXRlV2hlcmVDbGF1c2UocGF5bG9hZC5jcml0ZXJpYSwgYXBwT2JqZWN0LlN5c3RlbURCVGFibGVOYW1lKTtcclxuICAgICAgICBpZiAoIXdoZXJlQ2xhdXNlPy5GaWx0ZXJzPy5sZW5ndGgpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjcml0ZXJpYScpO1xyXG5cclxuICAgICAgICAvLyBUcmFuc2Zvcm0gdGhlIGRhdGEgaW50byB0aGUgZm9ybWF0IHJlcXVpcmVkIGJ5IHRoZSBBUElcclxuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZERhdGE6IEFQSVZhbHVlU2V0c1tdID0gY3JlYXRlRHluYW1pY0RhdGEoZmlsdGVyZWREYXRhKTtcclxuXHJcbiAgICAgICAgLy8gR2VuZXJhdGUgdGhlIHBheWxvYWQgZm9yIHRoZSBBUEkgcmVxdWVzdFxyXG4gICAgICAgIGNvbnN0IGFwaVBheWxvYWQgPSB0aGlzLl9yZXF1ZXN0UmVzcG9uc2VIZWxwZXIudXBkYXRlUmVxdWVzdFBheWxvYWQoYXBwT2JqZWN0LlN5c3RlbURCVGFibGVOYW1lLCB3aGVyZUNsYXVzZSwgdHJhbnNmb3JtZWREYXRhKTtcclxuXHJcbiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgcXVlcnlcclxuICAgICAgICByZXR1cm4gdGhpcy5fZHNxSGVscGVyLmV4ZWN1dGVRdWVyeShhcGlQYXlsb2FkLCBRdWVyeVR5cGUuVXBkYXRlLCBoZWFkZXJzKSBhcyBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlbGV0ZXMgZGF0YSBmcm9tIHRoZSBzcGVjaWZpZWQgdGFibGUuXHJcbiAgICAgKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZCBjb250YWluaW5nIHRoZSBjcml0ZXJpYSBmb3IgdGhlIGRlbGV0ZSBhbmQgdGhlIEFwcE9iamVjdE1vZGVsIElELlxyXG4gICAgICogQHBhcmFtIGhlYWRlcnMgT3B0aW9uYWwgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3QuXHJcbiAgICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIG9mIHRoZSByZXNwb25zZSBmcm9tIHRoZSBBUEkuXHJcbiAgICAgKi9cclxuICAgIGRlbGV0ZShwYXlsb2FkOiBEZWxldGVQYXlsb2FkLCBoZWFkZXJzPzogYW55KTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgICAgIGNvbnN0IGFwcE9iamVjdDogQXBwT2JqZWN0TW9kZWwgPSB0aGlzLmdldEFwcE9iamVjdEZyb21QYXlsb2FkKHBheWxvYWQpO1xyXG5cclxuICAgICAgICAvLyBHZW5lcmF0ZSBhIHdoZXJlIGNsYXVzZSBiYXNlZCBvbiB0aGUgY3JpdGVyaWEgcHJvdmlkZWRcclxuICAgICAgICBjb25zdCB3aGVyZUNsYXVzZTogQVBJRmlsdGVyQ3JpdGVyaWEgPSB0aGlzLmdlbmVyYXRlV2hlcmVDbGF1c2UocGF5bG9hZC5jcml0ZXJpYSwgYXBwT2JqZWN0LlN5c3RlbURCVGFibGVOYW1lKTtcclxuICAgICAgICBpZiAoIXdoZXJlQ2xhdXNlPy5GaWx0ZXJzPy5sZW5ndGgpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjcml0ZXJpYScpO1xyXG5cclxuICAgICAgICAvLyBHZW5lcmF0ZSB0aGUgcGF5bG9hZCBmb3IgdGhlIEFQSSByZXF1ZXN0XHJcbiAgICAgICAgY29uc3QgYXBpUGF5bG9hZCA9IHRoaXMuX3JlcXVlc3RSZXNwb25zZUhlbHBlci5kZWxldGVQYXlsb2FkKGFwcE9iamVjdC5TeXN0ZW1EQlRhYmxlTmFtZSwgd2hlcmVDbGF1c2UpO1xyXG5cclxuICAgICAgICAvLyBFeGVjdXRlIHRoZSBxdWVyeVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9kc3FIZWxwZXIuZXhlY3V0ZVF1ZXJ5KGFwaVBheWxvYWQsIFF1ZXJ5VHlwZS5EZWxldGUsIGhlYWRlcnMpIGFzIE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIC8qKlxyXG4gICAgLy8gICogRXhlY3V0ZXMgYSBzdG9yZWQgcHJvY2VkdXJlIHVzaW5nIHJhdyBTUUwuXHJcbiAgICAvLyAgKiBAcGFyYW0gc3AgVGhlIHN0b3JlZCBwcm9jZWR1cmUgcXVlcnkgc3RyaW5nLlxyXG4gICAgLy8gICogQHBhcmFtIGhlYWRlcnMgT3B0aW9uYWwgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3QuXHJcbiAgICAvLyAgKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBBUEkgUE9TVCByZXF1ZXN0LlxyXG4gICAgLy8gICovXHJcbiAgICAvLyBleGVjdXRlU3Aoc3A6IHN0cmluZywgaGVhZGVycz86IGFueSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIC8vICAgICAvLyBSZXRyaWV2ZSBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdFxyXG4gICAgLy8gICAgIGNvbnN0IGhlYWRlciA9IGdldEhlYWRlcnMoaGVhZGVycyk7XHJcblxyXG4gICAgLy8gICAgIC8vIEV4ZWN1dGUgdGhlIHN0b3JlZCBwcm9jZWR1cmUgdXNpbmcgYSBQT1NUIHJlcXVlc3RcclxuICAgIC8vICAgICByZXR1cm4gdGhpcy5fYXBpU2VydmljZS5wb3N0KGAke0FQSS5yYXdTUUx9P3F1ZXJ5PSR7c3B9YCwge30sIGhlYWRlcikgYXMgT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT47XHJcbiAgICAvLyB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXhlY3V0ZXMgYSBzdG9yZWQgcHJvY2VkdXJlIGJhc2VkIG9uIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLlxyXG4gICAgICogQHBhcmFtIHBheWxvYWQgVGhlIHBheWxvYWQgY29udGFpbmluZyB0aGUgb2JqZWN0IG5hbWUsIG9iamVjdCB0eXBlLCBhbmQgcGFyYW1ldGVycyBmb3IgdGhlIHN0b3JlZCBwcm9jZWR1cmUuXHJcbiAgICAgKiBAcGFyYW0gaGVhZGVycyBPcHRpb25hbCBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdC5cclxuICAgICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgdGhlIHJlc3BvbnNlIGZyb20gdGhlIEFQSS5cclxuICAgICAqL1xyXG4gICAgZXhlY3V0ZVN0b3JlZFByb2NlZHVyZShwYXlsb2FkOiBleGVjdXRlU3RvcmVkUHJvY2VkdXJlUGF5bG9hZCwgaGVhZGVycz86IGFueSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgICAgICBpZiAoIWhlYWRlcnMpIHtcclxuICAgICAgICAgICAgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENvbnZlcnQgdGhlIHBhcmFtZXRlcnMgb2JqZWN0IHRvIHRoZSByZXF1aXJlZCBmb3JtYXRcclxuICAgICAgICBjb25zdCBwYXJhbXM6IGFueSA9IFtdO1xyXG4gICAgICAgIGlmICh0eXBlb2YgcGF5bG9hZD8uUGFyYW1ldGVycyA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBwYXJhbWV0ZXJzIGFuZCBjcmVhdGUgdGhlIHJlcXVpcmVkIGZvcm1hdFxyXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhwYXlsb2FkLlBhcmFtZXRlcnMpLmZvckVhY2goKGtleTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgTmFtZToga2V5LFxyXG4gICAgICAgICAgICAgICAgICAgIFZhbHVlOiBwYXlsb2FkLlBhcmFtZXRlcnNba2V5XVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgc3RvcmVkIHByb2NlZHVyZVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9hcGlTZXJ2aWNlLnBvc3QoQVBJLkV4ZWN1dGUsIHtcclxuICAgICAgICAgICAgLi4ucGF5bG9hZCxcclxuICAgICAgICAgICAgUGFyYW1ldGVyczogcGFyYW1zLFxyXG4gICAgICAgIH0sIGhlYWRlcnMpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
240
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWNydWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9jcnVkL3RhYi1jcnVkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuSCxPQUFPLEVBQWdDLGlCQUFpQixFQUFnQixNQUFNLDJCQUEyQixDQUFDO0FBQzFHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRzFGLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQUdoRSxNQUFNLE9BQU8sY0FBYztJQUQzQjtRQUVxQixvQkFBZSxHQUFtQixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDekQsMkJBQXNCLEdBQTBCLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzlFLGVBQVUsR0FBYyxNQUFNLENBQUMsU0FBUyxD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RUQsdURBQXVEO1FBQ3ZELE1BQU0sTUFBTSxHQUFRLEVBQUUsQ0FBQztRQUN2QixJQUFJLE9BQU8sT0FBTyxFQUFFLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMxQyw2REFBNkQ7WUFDN0QsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pELE1BQU0sQ0FBQyxJQUFJLENBQUM7b0JBQ1IsSUFBSSxFQUFFLEdBQUc7b0JBQ1QsS0FBSyxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO2lCQUNqQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFFRCwrQkFBK0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFO1lBQ3RDLEdBQUcsT0FBTztZQUNWLFVBQVUsRUFBRSxNQUFNO1NBQ3JCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEIsQ0FBQzsrRUFoUVEsY0FBYzt1RUFBZCxjQUFjLFdBQWQsY0FBYyxtQkFERCxNQUFNOztpRkFDbkIsY0FBYztjQUQxQixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbkFwaVJlc3BvbnNlLCBDcnVkQmFzZVBheWxvYWQsIERlbGV0ZVBheWxvYWQsIGV4ZWN1dGVTdG9yZWRQcm9jZWR1cmVQYXlsb2FkLCBHZXRQYXlsb2FkLCBJbnNlcnRQYXlsb2FkLCBVcGRhdGVQYXlsb2FkIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvY29tbW9uLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgQXBwT2JqZWN0TW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL2FwcC1vYmplY3QubW9kZWxcIjtcbmltcG9ydCB7IE1ldGFkYXRhSGVscGVyIH0gZnJvbSBcIi4uL2hlbHBlcnMvY29tbW9uL21ldGEtZGF0YS5oZWxwZXJzXCI7XG5pbXBvcnQgeyBjcmVhdGVEeW5hbWljRGF0YSwgZ2V0QnVsa0luc2VydEZpZWxkcywgZ2V0QnVsa0luc2VydFZhbHVlcywgcmVtb3ZlQmxhbmtWYWx1ZSB9IGZyb20gXCIuLi91dGlscy9qc29uLnV0aWxcIjtcbmltcG9ydCB7IEFQSUJ1bGtJbnNlcnRGaWVsZHNWYWx1ZVNldHMsIEFQSUZpbHRlckNyaXRlcmlhLCBBUElWYWx1ZVNldHMgfSBmcm9tIFwiLi4vbW9kZWxzL2FwaS1xdWVyeS5jbGFzc1wiO1xuaW1wb3J0IHsgUmVxdWVzdFJlc3BvbnNlSGVscGVyIH0gZnJvbSBcIi4uL2hlbHBlcnMvY29tbW9uL3JlcS1yZXMuaGVscGVyc1wiO1xuaW1wb3J0IHsgRFNRSGVscGVyIH0gZnJvbSBcIi4uL2hlbHBlcnMvY29tbW9uL2RzcS5oZWxwZXJzXCI7XG5pbXBvcnQgeyBRdWVyeVR5cGUgfSBmcm9tIFwiLi4vZW51bXMvcXVlcnkuZW51bVwiO1xuaW1wb3J0IHsgQ29uanVjdGlvbkNsYXVzZSwgRmlsdGVyVmFsdWVUeXBlLCBSZWxhdGlvbmFsT3BlcmF0b3IgfSBmcm9tIFwiLi4vZW51bXMvZHNxLmVudW1cIjtcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgRGF0YVNvdXJjZVF1ZXJ5TW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL2RhdGEtc291cmNlLXF1ZXJ5Lm1vZGVsXCI7XG5pbXBvcnQgeyBBUEkgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2FwaS1jb25zdGFudHNcIjtcbmltcG9ydCB7IGdldEhlYWRlcnMgfSBmcm9tIFwiLi4vdXRpbHMvcmVxLXJlcy51dGlsXCI7XG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvaHR0cC1jbGllbnQvYXBpLnNlcnZpY2VcIjtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBUYWJDcnVkU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfbWV0YWRhdGFIZWxwZXI6IE1ldGFkYXRhSGVscGVyID0gaW5qZWN0KE1ldGFkYXRhSGVscGVyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9yZXF1ZXN0UmVzcG9uc2VIZWxwZXI6IFJlcXVlc3RSZXNwb25zZUhlbHBlciA9IGluamVjdChSZXF1ZXN0UmVzcG9uc2VIZWxwZXIpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2RzcUhlbHBlcjogRFNRSGVscGVyID0gaW5qZWN0KERTUUhlbHBlcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfYXBpU2VydmljZSA9IGluamVjdChBcGlTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIEFwcE9iamVjdE1vZGVsIGZyb20gdGhlIGdpdmVuIHBheWxvYWQuXG4gICAgICogQHBhcmFtIHBheWxvYWQgVGhlIHBheWxvYWQgd2l0aCBlaXRoZXIgZGF0YVNvdXJjZVF1ZXJ5SWRPck5hbWUgb3IgYXBwT2JqZWN0SWRPck5hbWUuXG4gICAgICogQHJldHVybnMgVGhlIEFwcE9iamVjdE1vZGVsLlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0QXBwT2JqZWN0RnJvbVBheWxvYWQocGF5bG9hZDogQ3J1ZEJhc2VQYXlsb2FkKTogQXBwT2JqZWN0TW9kZWwge1xuICAgICAgICBsZXQgYXBwT2JqZWN0O1xuXG4gICAgICAgIGlmIChwYXlsb2FkPy5kYXRhU291cmNlUXVlcnlJZE9yTmFtZSkge1xuICAgICAgICAgICAgLy8gSWYgZGF0YVNvdXJjZVF1ZXJ5SWRPck5hbWUgaXMgZ2l2ZW4sIGdldCB0aGUgQXBwT2JqZWN0TW9kZWwgZnJvbSB0aGUgZGF0YSBzb3VyY2UgcXVlcnlcbiAgICAgICAgICAgIGFwcE9iamVjdCA9IHRoaXMuX21ldGFkYXRhSGVscGVyLmdldERhdGFTb3VyY2VRdWVyeUJ5SWRPck5hbWUocGF5bG9hZC5kYXRhU291cmNlUXVlcnlJZE9yTmFtZSk/LnBhcmVudEFwcE9iamVjdDtcblxuICAgICAgICB9IGVsc2UgaWYgKHBheWxvYWQ/LmFwcE9iamVjdElkT3JOYW1lKSB7XG4gICAgICAgICAgICAvLyBJZiBhcHBPYmplY3RJZE9yTmFtZSBpcyBnaXZlbiwgZ2V0IHRoZSBBcHBPYmplY3RNb2RlbCBkaXJlY3RseVxuICAgICAgICAgICAgYXBwT2JqZWN0ID0gdGhpcy5fbWV0YWRhdGFIZWxwZXIuZ2V0QXBwT2JqZWN0QnlJZE9yTmFtZShwYXlsb2FkLmFwcE9iamVjdElkT3JOYW1lKTtcblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFhcHBPYmplY3Q/LklEKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FwcE9iamVjdCBub3QgZm91bmQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhcHBPYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmlsdGVycyBvdXQgaW52YWxpZCBmaWVsZHMgZnJvbSB0aGUgcHJvdmlkZWQgZGF0YSBiYXNlZCBvbiB0aGUgQXBwT2JqZWN0TW9kZWwuXG4gICAgICogT3B0aW9uYWxseSByZXRhaW5zIHByaW1hcnkga2V5IGZpZWxkcy5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSBvYmplY3QgdG8gZmlsdGVyLlxuICAgICAqIEBwYXJhbSBhcHBPYmplY3QgVGhlIEFwcE9iamVjdE1vZGVsIHVzZWQgdG8gdmFsaWRhdGUgdGhlIGZpZWxkcy5cbiAgICAgKiBAcGFyYW0ga2VlcFByaW1hcnlLZXkgT3B0aW9uYWwgZmxhZyB0byByZXRhaW4gcHJpbWFyeSBrZXkgZmllbGRzLiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgKiBAcmV0dXJucyBBIG5ldyBvYmplY3Qgd2l0aCBvbmx5IHZhbGlkIGZpZWxkcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIGZpbHRlclZhbGlkQXBwT2JqZWN0RmllbGRzKGRhdGE6IGFueSwgYXBwT2JqZWN0OiBBcHBPYmplY3RNb2RlbCwga2VlcFByaW1hcnlLZXkgPSBmYWxzZSkge1xuICAgICAgICBpZiAoIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZGF0YScpO1xuXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuXG4gICAgICAgIC8vIFJlbW92ZSBmaWVsZHMgd2l0aCBibGFuayB2YWx1ZXNcbiAgICAgICAgcmVtb3ZlQmxhbmtWYWx1ZShmaWx0ZXJlZERhdGEpO1xuXG4gICAgICAgIC8vIEl0ZXJhdGUgb3ZlciBlYWNoIGtleSBpbiB0aGUgZmlsdGVyZWQgZGF0YVxuICAgICAgICBPYmplY3Qua2V5cyhmaWx0ZXJlZERhdGEpPy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFwcEZpZWxkID0gYXBwT2JqZWN0LmZpZWxkKGtleSk7XG4gICAgICAgICAgICBjb25zdCBjaGlsZEZpZWxkID0gYXBwT2JqZWN0LkNoaWxkUmVsYXRpb25TaGlwcz8uc29tZSgoeCkgPT4geD8uY2hpbGREZXRhaWxzPy5Mb29rdXBPYmplY3QgPT09IGtleSk7XG5cbiAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgZmllbGQgaWYgaXQgaXMgbm90IHZhbGlkIG9yIGlmIHByaW1hcnkga2V5cyBzaG91bGQgbm90IGJlIGtlcHRcbiAgICAgICAgICAgIGlmICghKGFwcEZpZWxkIHx8IGNoaWxkRmllbGQpIHx8ICgha2VlcFByaW1hcnlLZXkgJiYgYXBwRmllbGQ/LklzUHJpbWFyeUtleSkpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgZmlsdGVyZWREYXRhW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZERhdGE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2VuZXJhdGVzIGEgd2hlcmUgY2xhdXNlIGJhc2VkIG9uIHRoZSBjcml0ZXJpYSBwcm92aWRlZC5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gY3JpdGVyaWEgVGhlIGNyaXRlcmlhIG9iamVjdCB0byBnZW5lcmF0ZSB0aGUgd2hlcmUgY2xhdXNlIGZyb20uXG4gICAgICogQHBhcmFtIGNydWRUYWJsZU5hbWUgVGhlIENSVUQgdGFibGUgbmFtZSB0byB1c2UgaW4gdGhlIHdoZXJlIGNsYXVzZS5cbiAgICAgKiBAcmV0dXJucyBBIG5ldyBBUElGaWx0ZXJDcml0ZXJpYSBvYmplY3Qgd2l0aCB0aGUgZ2VuZXJhdGVkIHdoZXJlIGNsYXVzZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdlbmVyYXRlV2hlcmVDbGF1c2UoY3JpdGVyaWE6IGFueSwgY3J1ZFRhYmxlTmFtZTogc3RyaW5nLCBwcm92aWRlRW1wdHlXaGVyZUNsYXVzZSA9IGZhbHNlKTogQVBJRmlsdGVyQ3JpdGVyaWEge1xuICAgICAgICBpZiAoIXByb3ZpZGVFbXB0eVdoZXJlQ2xhdXNlICYmICghY3JpdGVyaWEgfHwgdHlwZW9mIGNyaXRlcmlhICE9PSAnb2JqZWN0JyB8fCAhT2JqZWN0LmtleXMoY3JpdGVyaWEpKSkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNyaXRlcmlhJyk7XG5cbiAgICAgICAgLy8gUmVtb3ZlIGJsYW5rIHZhbHVlcyBmcm9tIHRoZSBjcml0ZXJpYVxuICAgICAgICByZW1vdmVCbGFua1ZhbHVlKGNyaXRlcmlhKTtcblxuICAgICAgICAvLyBDcmVhdGUgYSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEgb2JqZWN0XG4gICAgICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gbmV3IEFQSUZpbHRlckNyaXRlcmlhKCk7XG4gICAgICAgIHdoZXJlQ2xhdXNlLkZpbHRlcnMgPSBbXTtcblxuICAgICAgICAvLyBJdGVyYXRlIG92ZXIgZWFjaCBrZXkgaW4gdGhlIGNyaXRlcmlhIGFuZCBhZGQgaXQgdG8gdGhlIHdoZXJlIGNsYXVzZVxuICAgICAgICBPYmplY3Qua2V5cyhjcml0ZXJpYSk/LmZvckVhY2goKGtleTogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXIgPSB7XG4gICAgICAgICAgICAgICAgQ29uanVjdGlvbkNsYXVzZTogQ29uanVjdGlvbkNsYXVzZS5BTkQsIC8vIGNvbmp1Y3Rpb24gY2xhdXNlIGlzIEFORCBieSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgRmllbGRJRDogY3J1ZFRhYmxlTmFtZSArICcuJyArIGtleSwgLy8gY29tYmluZSB0aGUgQ1JVRCB0YWJsZSBuYW1lIHdpdGggdGhlIGZpZWxkIG5hbWVcbiAgICAgICAgICAgICAgICBSZWxhdGlvbmFsT3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5FcXVhbFRvLCAvLyByZWxhdGlvbmFsIG9wZXJhdG9yIGlzIEVxdWFsVG8gYnkgZGVmYXVsdFxuICAgICAgICAgICAgICAgIFZhbHVlVHlwZTogRmlsdGVyVmFsdWVUeXBlLkxpdGVyYWwsIC8vIHZhbHVlIHR5cGUgaXMgTGl0ZXJhbCBieSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgdmFsdWU6IGNyaXRlcmlhW2tleV0sIC8vIHNldCB0aGUgdmFsdWUgb2YgdGhlIGZpbHRlclxuICAgICAgICAgICAgICAgIFNlcXVlbmNlOiAwLCAvLyBzZXQgdGhlIHNlcXVlbmNlIHRvIDAgYnkgZGVmYXVsdFxuICAgICAgICAgICAgICAgIEdyb3VwSUQ6IDAgLy8gc2V0IHRoZSBncm91cCBJRCB0byAwIGJ5IGRlZmF1bHRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB3aGVyZUNsYXVzZS5GaWx0ZXJzLnB1c2goZmlsdGVyKTsgLy8gYWRkIHRoZSBmaWx0ZXIgdG8gdGhlIGFycmF5IG9mIGZpbHRlcnNcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU2V0IHRoZSBmaWx0ZXIgbG9naWMgdG8gJzEnXG4gICAgICAgIHdoZXJlQ2xhdXNlLkZpbHRlckxvZ2ljID0gJzEnO1xuXG4gICAgICAgIC8vIFJldHVybiB0aGUgZ2VuZXJhdGVkIHdoZXJlIGNsYXVzZVxuICAgICAgICByZXR1cm4gd2hlcmVDbGF1c2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhlY3V0ZXMgYSBHRVQgcmVxdWVzdCB0byByZXRyaWV2ZSBkYXRhIGZyb20gdGhlIHNwZWNpZmllZCBkYXRhIHNvdXJjZSBxdWVyeS5cbiAgICAgKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZCBjb250YWluaW5nIHRoZSBjcml0ZXJpYSBmb3IgdGhlIHF1ZXJ5IGFuZCB0aGUgQXBwT2JqZWN0TW9kZWwgSUQuXG4gICAgICogQHBhcmFtIGhlYWRlcnMgT3B0aW9uYWwgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3QuXG4gICAgICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSBvZiB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgQVBJLlxuICAgICAqL1xuICAgIGdldChwYXlsb2FkOiBHZXRQYXlsb2FkLCBoZWFkZXJzPzogYW55KTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xuICAgICAgICAvLyBHZXQgdGhlIEFwcE9iamVjdE1vZGVsIGZyb20gdGhlIHBheWxvYWRcbiAgICAgICAgY29uc3QgYXBwT2JqZWN0OiBBcHBPYmplY3RNb2RlbCA9IHRoaXMuZ2V0QXBwT2JqZWN0RnJvbVBheWxvYWQocGF5bG9hZCk7XG5cbiAgICAgICAgLy8gR2V0IHRoZSBEYXRhU291cmNlUXVlcnlNb2RlbCBmcm9tIHRoZSBBcHBPYmplY3RNb2RlbFxuICAgICAgICBjb25zdCBkc3E6IERhdGFTb3VyY2VRdWVyeU1vZGVsIHwgdW5kZWZpbmVkID0gYXBwT2JqZWN0LmRhdGFTb3VyY2VRdWVyeShwYXlsb2FkLmRhdGFTb3VyY2VRdWVyeUlkT3JOYW1lKTtcblxuICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgQXBwT2JqZWN0TW9kZWwgYW5kIERhdGFTb3VyY2VRdWVyeU1vZGVsXG4gICAgICAgIGlmICghYXBwT2JqZWN0IHx8ICFkc3EpIHRocm93IG5ldyBFcnJvcignQXBwT2JqZWN0IG9yIERhdGFTb3VyY2VRdWVyeSBub3QgZm91bmQnKTtcblxuICAgICAgICAvLyBHZXQgdGhlIGhlYWRlcnMgZnJvbSB0aGUgcGF5bG9hZFxuICAgICAgICBjb25zdCBoZWFkZXIgPSBnZXRIZWFkZXJzKGhlYWRlcnMpO1xuXG4gICAgICAgIC8vIEV4ZWN1dGUgdGhlIEdFVCByZXF1ZXN0XG4gICAgICAgIHJldHVybiB0aGlzLl9hcGlTZXJ2aWNlLnBvc3QoXG4gICAgICAgICAgICAvLyBUaGUgVVJMIGZvciB0aGUgR0VUIHJlcXVlc3RcbiAgICAgICAgICAgIGAke0FQSS5nZXREU1F9LyR7YXBwT2JqZWN0Py5PYmplY3ROYW1lfS8ke2RzcT8uUXVlcnlOYW1lfWAsXG4gICAgICAgICAgICAvLyBUaGUgY3JpdGVyaWEgZm9yIHRoZSBxdWVyeVxuICAgICAgICAgICAgcGF5bG9hZC5jcml0ZXJpYSxcbiAgICAgICAgICAgIC8vIFRoZSBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdFxuICAgICAgICAgICAgaGVhZGVyXG4gICAgICAgICkgYXMgT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5zZXJ0cyBkYXRhIGludG8gdGhlIHNwZWNpZmllZCB0YWJsZS5cbiAgICAgKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZCBjb250YWluaW5nIHRoZSBkYXRhIHRvIGluc2VydCBhbmQgdGhlIEFwcE9iamVjdE1vZGVsIElELlxuICAgICAqIEBwYXJhbSBoZWFkZXJzIE9wdGlvbmFsIGhlYWRlcnMgZm9yIHRoZSByZXF1ZXN0LlxuICAgICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgdGhlIHJlc3BvbnNlIGZyb20gdGhlIEFQSS5cbiAgICAgKi9cbiAgICBpbnNlcnQocGF5bG9hZDogSW5zZXJ0UGF5bG9hZCwgaGVhZGVycz86IGFueSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgYXBwT2JqZWN0OiBBcHBPYmplY3RNb2RlbCA9IHRoaXMuZ2V0QXBwT2JqZWN0RnJvbVBheWxvYWQocGF5bG9hZCk7XG5cbiAgICAgICAgLy8gRmlsdGVyIG91dCBpbnZhbGlkIGZpZWxkcyBmcm9tIHRoZSBkYXRhIGJhc2VkIG9uIHRoZSBBcHBPYmplY3RNb2RlbFxuICAgICAgICBjb25zdCBmaWx0ZXJlZERhdGE6IGFueSA9IHRoaXMuZmlsdGVyVmFsaWRBcHBPYmplY3RGaWVsZHMocGF5bG9hZC5kYXRhLCBhcHBPYmplY3QpO1xuXG4gICAgICAgIC8vIENyZWF0ZSBhIHdoZXJlIGNsYXVzZSBmb3IgdGhlIGluc2VydCBvcGVyYXRpb25cbiAgICAgICAgY29uc3Qgd2hlcmVDbGF1c2U6IEFQSUZpbHRlckNyaXRlcmlhID0gdGhpcy5nZW5lcmF0ZVdoZXJlQ2xhdXNlKHt9LCBhcHBPYmplY3QuU3lzdGVtREJUYWJsZU5hbWUsIHRydWUpO1xuXG4gICAgICAgIC8vIFRyYW5zZm9ybSB0aGUgZGF0YSBpbnRvIHRoZSBmb3JtYXQgcmVxdWlyZWQgYnkgdGhlIEFQSVxuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZERhdGE6IEFQSVZhbHVlU2V0c1tdID0gY3JlYXRlRHluYW1pY0RhdGEoZmlsdGVyZWREYXRhKTtcblxuICAgICAgICAvLyBHZW5lcmF0ZSB0aGUgcGF5bG9hZCBmb3IgdGhlIEFQSSByZXF1ZXN0XG4gICAgICAgIGNvbnN0IGFwaVBheWxvYWQgPSB0aGlzLl9yZXF1ZXN0UmVzcG9uc2VIZWxwZXIuaW5zZXJ0UGF5bG9hZChhcHBPYmplY3QuU3lzdGVtREJUYWJsZU5hbWUsIHdoZXJlQ2xhdXNlLCB0cmFuc2Zvcm1lZERhdGEpO1xuXG4gICAgICAgIC8vIEV4ZWN1dGUgdGhlIHF1ZXJ5XG4gICAgICAgIHJldHVybiB0aGlzLl9kc3FIZWxwZXIuZXhlY3V0ZVF1ZXJ5KGFwaVBheWxvYWQsIFF1ZXJ5VHlwZS5JbnNlcnQsIGhlYWRlcnMpIGFzIE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+O1xuICAgIH1cbiAgICBidWxrSW5zZXJ0KHBheWxvYWQ6IEluc2VydFBheWxvYWQsIGhlYWRlcnM/OiBhbnkpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IGFwcE9iamVjdDogQXBwT2JqZWN0TW9kZWwgPSB0aGlzLmdldEFwcE9iamVjdEZyb21QYXlsb2FkKHBheWxvYWQpO1xuICAgICAgICAvLyBDcmVhdGUgYSB3aGVyZSBjbGF1c2UgZm9yIHRoZSBpbnNlcnQgb3BlcmF0aW9uXG4gICAgICAgIGNvbnN0IHdoZXJlQ2xhdXNlOiBBUElGaWx0ZXJDcml0ZXJpYSA9IHRoaXMuZ2VuZXJhdGVXaGVyZUNsYXVzZSh7fSwgYXBwT2JqZWN0LlN5c3RlbURCVGFibGVOYW1lLCB0cnVlKTtcblxuICAgICAgICAvLyBUcmFuc2Zvcm0gdGhlIGRhdGEgaW50byB0aGUgZm9ybWF0IHJlcXVpcmVkIGJ5IHRoZSBBUElcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtZWRGaWVsZHM6IHN0cmluZ1tdID0gZ2V0QnVsa0luc2VydEZpZWxkcyhwYXlsb2FkLmRhdGEpO1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZFZhbHVlczogQVBJQnVsa0luc2VydEZpZWxkc1ZhbHVlU2V0c1tdID0gZ2V0QnVsa0luc2VydFZhbHVlcyhwYXlsb2FkLmRhdGEpO1xuICAgICAgICAvLyBHZW5lcmF0ZSB0aGUgcGF5bG9hZCBmb3IgdGhlIEFQSSByZXF1ZXN0XG4gICAgICAgIGNvbnN0IGFwaVBheWxvYWQgPSB0aGlzLl9yZXF1ZXN0UmVzcG9uc2VIZWxwZXIuYnVsa0luc2VydFBheWxvYWQoYXBwT2JqZWN0LlN5c3RlbURCVGFibGVOYW1lLCB3aGVyZUNsYXVzZSwgdHJhbnNmb3JtZWRWYWx1ZXMsIHRyYW5zZm9ybWVkRmllbGRzKTtcbiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgcXVlcnlcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RzcUhlbHBlci5leGVjdXRlUXVlcnkoYXBpUGF5bG9hZCwgUXVlcnlUeXBlLkJ1bGtJbnNlcnQsIGhlYWRlcnMpIGFzIE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIGRhdGEgaW4gdGhlIHNwZWNpZmllZCB0YWJsZS5cbiAgICAgKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZCBjb250YWluaW5nIHRoZSBkYXRhIHRvIHVwZGF0ZSwgdGhlIGNyaXRlcmlhIGZvciB0aGUgdXBkYXRlLCBhbmQgdGhlIEFwcE9iamVjdE1vZGVsIElELlxuICAgICAqIEBwYXJhbSBoZWFkZXJzIE9wdGlvbmFsIGhlYWRlcnMgZm9yIHRoZSByZXF1ZXN0LlxuICAgICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgdGhlIHJlc3BvbnNlIGZyb20gdGhlIEFQSS5cbiAgICAgKi9cbiAgICB1cGRhdGUocGF5bG9hZDogVXBkYXRlUGF5bG9hZCwgaGVhZGVycz86IGFueSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgYXBwT2JqZWN0OiBBcHBPYmplY3RNb2RlbCA9IHRoaXMuZ2V0QXBwT2JqZWN0RnJvbVBheWxvYWQocGF5bG9hZCk7XG5cbiAgICAgICAgLy8gRmlsdGVyIG91dCBpbnZhbGlkIGZpZWxkcyBmcm9tIHRoZSBkYXRhIGJhc2VkIG9uIHRoZSBBcHBPYmplY3RNb2RlbFxuICAgICAgICBjb25zdCBmaWx0ZXJlZERhdGE6IGFueSA9IHRoaXMuZmlsdGVyVmFsaWRBcHBPYmplY3RGaWVsZHMocGF5bG9hZC5kYXRhLCBhcHBPYmplY3QpO1xuXG4gICAgICAgIC8vIEdlbmVyYXRlIGEgd2hlcmUgY2xhdXNlIGJhc2VkIG9uIHRoZSBjcml0ZXJpYSBwcm92aWRlZFxuICAgICAgICBjb25zdCB3aGVyZUNsYXVzZTogQVBJRmlsdGVyQ3JpdGVyaWEgPSB0aGlzLmdlbmVyYXRlV2hlcmVDbGF1c2UocGF5bG9hZC5jcml0ZXJpYSwgYXBwT2JqZWN0LlN5c3RlbURCVGFibGVOYW1lKTtcbiAgICAgICAgaWYgKCF3aGVyZUNsYXVzZT8uRmlsdGVycz8ubGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY3JpdGVyaWEnKTtcblxuICAgICAgICAvLyBUcmFuc2Zvcm0gdGhlIGRhdGEgaW50byB0aGUgZm9ybWF0IHJlcXVpcmVkIGJ5IHRoZSBBUElcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtZWREYXRhOiBBUElWYWx1ZVNldHNbXSA9IGNyZWF0ZUR5bmFtaWNEYXRhKGZpbHRlcmVkRGF0YSk7XG5cbiAgICAgICAgLy8gR2VuZXJhdGUgdGhlIHBheWxvYWQgZm9yIHRoZSBBUEkgcmVxdWVzdFxuICAgICAgICBjb25zdCBhcGlQYXlsb2FkID0gdGhpcy5fcmVxdWVzdFJlc3BvbnNlSGVscGVyLnVwZGF0ZVJlcXVlc3RQYXlsb2FkKGFwcE9iamVjdC5TeXN0ZW1EQlRhYmxlTmFtZSwgd2hlcmVDbGF1c2UsIHRyYW5zZm9ybWVkRGF0YSk7XG5cbiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgcXVlcnlcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RzcUhlbHBlci5leGVjdXRlUXVlcnkoYXBpUGF5bG9hZCwgUXVlcnlUeXBlLlVwZGF0ZSwgaGVhZGVycykgYXMgT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVsZXRlcyBkYXRhIGZyb20gdGhlIHNwZWNpZmllZCB0YWJsZS5cbiAgICAgKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZCBjb250YWluaW5nIHRoZSBjcml0ZXJpYSBmb3IgdGhlIGRlbGV0ZSBhbmQgdGhlIEFwcE9iamVjdE1vZGVsIElELlxuICAgICAqIEBwYXJhbSBoZWFkZXJzIE9wdGlvbmFsIGhlYWRlcnMgZm9yIHRoZSByZXF1ZXN0LlxuICAgICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgdGhlIHJlc3BvbnNlIGZyb20gdGhlIEFQSS5cbiAgICAgKi9cbiAgICBkZWxldGUocGF5bG9hZDogRGVsZXRlUGF5bG9hZCwgaGVhZGVycz86IGFueSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgYXBwT2JqZWN0OiBBcHBPYmplY3RNb2RlbCA9IHRoaXMuZ2V0QXBwT2JqZWN0RnJvbVBheWxvYWQocGF5bG9hZCk7XG5cbiAgICAgICAgLy8gR2VuZXJhdGUgYSB3aGVyZSBjbGF1c2UgYmFzZWQgb24gdGhlIGNyaXRlcmlhIHByb3ZpZGVkXG4gICAgICAgIGNvbnN0IHdoZXJlQ2xhdXNlOiBBUElGaWx0ZXJDcml0ZXJpYSA9IHRoaXMuZ2VuZXJhdGVXaGVyZUNsYXVzZShwYXlsb2FkLmNyaXRlcmlhLCBhcHBPYmplY3QuU3lzdGVtREJUYWJsZU5hbWUpO1xuICAgICAgICBpZiAoIXdoZXJlQ2xhdXNlPy5GaWx0ZXJzPy5sZW5ndGgpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjcml0ZXJpYScpO1xuXG4gICAgICAgIC8vIEdlbmVyYXRlIHRoZSBwYXlsb2FkIGZvciB0aGUgQVBJIHJlcXVlc3RcbiAgICAgICAgY29uc3QgYXBpUGF5bG9hZCA9IHRoaXMuX3JlcXVlc3RSZXNwb25zZUhlbHBlci5kZWxldGVQYXlsb2FkKGFwcE9iamVjdC5TeXN0ZW1EQlRhYmxlTmFtZSwgd2hlcmVDbGF1c2UpO1xuXG4gICAgICAgIC8vIEV4ZWN1dGUgdGhlIHF1ZXJ5XG4gICAgICAgIHJldHVybiB0aGlzLl9kc3FIZWxwZXIuZXhlY3V0ZVF1ZXJ5KGFwaVBheWxvYWQsIFF1ZXJ5VHlwZS5EZWxldGUsIGhlYWRlcnMpIGFzIE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+O1xuICAgIH1cblxuICAgIC8vIC8qKlxuICAgIC8vICAqIEV4ZWN1dGVzIGEgc3RvcmVkIHByb2NlZHVyZSB1c2luZyByYXcgU1FMLlxuICAgIC8vICAqIEBwYXJhbSBzcCBUaGUgc3RvcmVkIHByb2NlZHVyZSBxdWVyeSBzdHJpbmcuXG4gICAgLy8gICogQHBhcmFtIGhlYWRlcnMgT3B0aW9uYWwgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3QuXG4gICAgLy8gICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgQVBJIFBPU1QgcmVxdWVzdC5cbiAgICAvLyAgKi9cbiAgICAvLyBleGVjdXRlU3Aoc3A6IHN0cmluZywgaGVhZGVycz86IGFueSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcbiAgICAvLyAgICAgLy8gUmV0cmlldmUgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3RcbiAgICAvLyAgICAgY29uc3QgaGVhZGVyID0gZ2V0SGVhZGVycyhoZWFkZXJzKTtcblxuICAgIC8vICAgICAvLyBFeGVjdXRlIHRoZSBzdG9yZWQgcHJvY2VkdXJlIHVzaW5nIGEgUE9TVCByZXF1ZXN0XG4gICAgLy8gICAgIHJldHVybiB0aGlzLl9hcGlTZXJ2aWNlLnBvc3QoYCR7QVBJLnJhd1NRTH0/cXVlcnk9JHtzcH1gLCB7fSwgaGVhZGVyKSBhcyBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPjtcbiAgICAvLyB9XG5cblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIGEgc3RvcmVkIHByb2NlZHVyZSBiYXNlZCBvbiB0aGUgZ2l2ZW4gcGFyYW1ldGVycy5cbiAgICAgKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZCBjb250YWluaW5nIHRoZSBvYmplY3QgbmFtZSwgb2JqZWN0IHR5cGUsIGFuZCBwYXJhbWV0ZXJzIGZvciB0aGUgc3RvcmVkIHByb2NlZHVyZS5cbiAgICAgKiBAcGFyYW0gaGVhZGVycyBPcHRpb25hbCBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdC5cbiAgICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIG9mIHRoZSByZXNwb25zZSBmcm9tIHRoZSBBUEkuXG4gICAgICovXG4gICAgZXhlY3V0ZVN0b3JlZFByb2NlZHVyZShwYXlsb2FkOiBleGVjdXRlU3RvcmVkUHJvY2VkdXJlUGF5bG9hZCwgaGVhZGVycz86IGFueSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcbiAgICAgICAgaWYgKCFoZWFkZXJzKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29udmVydCB0aGUgcGFyYW1ldGVycyBvYmplY3QgdG8gdGhlIHJlcXVpcmVkIGZvcm1hdFxuICAgICAgICBjb25zdCBwYXJhbXM6IGFueSA9IFtdO1xuICAgICAgICBpZiAodHlwZW9mIHBheWxvYWQ/LlBhcmFtZXRlcnMgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIHBhcmFtZXRlcnMgYW5kIGNyZWF0ZSB0aGUgcmVxdWlyZWQgZm9ybWF0XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhwYXlsb2FkLlBhcmFtZXRlcnMpLmZvckVhY2goKGtleTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBOYW1lOiBrZXksXG4gICAgICAgICAgICAgICAgICAgIFZhbHVlOiBwYXlsb2FkLlBhcmFtZXRlcnNba2V5XVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBFeGVjdXRlIHRoZSBzdG9yZWQgcHJvY2VkdXJlXG4gICAgICAgIHJldHVybiB0aGlzLl9hcGlTZXJ2aWNlLnBvc3QoQVBJLkV4ZWN1dGUsIHtcbiAgICAgICAgICAgIC4uLnBheWxvYWQsXG4gICAgICAgICAgICBQYXJhbWV0ZXJzOiBwYXJhbXMsXG4gICAgICAgIH0sIGhlYWRlcnMpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -56,4 +56,4 @@ export class TabFormioService {
|
|
|
56
56
|
type: Injectable,
|
|
57
57
|
args: [{ providedIn: 'root' }]
|
|
58
58
|
}], null, null); })();
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWZvcm1pby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2NydWQvdGFiLWZvcm1pby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQU1qRCxNQUFNLE9BQU8sZ0JBQWdCO0lBRDdCO1FBRW1CLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7S0ErRGxEO0lBN0RDOzs7Ozs7O09BT0c7SUFDSCxTQUFTLENBQUMsUUFBZ0IsRUFBRSxNQUF3QixFQUFFLE1BQVk7UUFDaEUsdUNBQXVDO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBQzdCLDBFQUEwRTtRQUMxRSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUN4QixHQUFHLEdBQUcsQ0FBQyxTQUFTLGFBQWEsUUFBUSxHQUFHLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLGFBQWEsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsWUFBWSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUN4SixNQUFNLEVBQ04sT0FBTyxDQUNSLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGFBQWEsQ0FBQyxRQUFnQixFQUFFLGNBQW1CO1FBQ2pELE1BQU0sT0FBTyxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3pCLEdBQUcsR0FBRyxDQUFDLGFBQWEsSUFBSSxRQUFRLEVBQUUsRUFDbEMsY0FBYyxFQUNkLE9BQU8sQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7TUFHRTtJQUNGLGNBQWMsQ0FBQyxJQUEyQjtRQUN4QyxNQUFNLE9BQU8sR0FBRyxVQUFVLEVBQUUsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN6QixHQUFHLEdBQUcsQ0FBQyxjQUFjLEVBQUUsRUFDdkIsSUFBSSxFQUNKLE9BQU8sQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILHFCQUFxQixDQUFDLFdBQW1CLEVBQUUsSUFBNEIsRUFBRSxNQUFZO1FBQ25GLE1BQU0sT0FBTyxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLEdBQUcsR0FBRyxDQUFDLHFCQUFxQixnQkFBZ0IsV0FBVyxTQUFTLElBQUksRUFBRSxFQUN0RSxNQUFNLEVBQ04sT0FBTyxDQUNSLENBQUM7SUFDSixDQUFDO2lGQS9EVSxnQkFBZ0I7dUVBQWhCLGdCQUFnQixXQUFoQixnQkFBZ0IsbUJBREgsTUFBTTs7aUZBQ25CLGdCQUFnQjtjQUQ1QixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9odHRwLWNsaWVudC9hcGkuc2VydmljZVwiO1xuaW1wb3J0IHsgZ2V0SGVhZGVycyB9IGZyb20gXCIuLi91dGlscy9yZXEtcmVzLnV0aWxcIjtcbmltcG9ydCB7IEFQSSB9IGZyb20gXCIuLi9jb25zdGFudHMvYXBpLWNvbnN0YW50c1wiO1xuaW1wb3J0IHsgQ29tbW9uQXBpUmVzcG9uc2UsIEdldFNjcmVlbkNvbmZpZywgUHJvY2Vzc1JlcXVlc3RQYXlsb2FkIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvY29tbW9uLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBCdWlsZEZvcm1Db21wb25lbnRUeXBlIH0gZnJvbSBcIi4uL2VudW1zL2NvbW1vbi5lbnVtXCI7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVGFiRm9ybWlvU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpU2VydmljZSA9IGluamVjdChBcGlTZXJ2aWNlKTtcblxuICAvKipcbiAgICogRmV0Y2hlcyBzY3JlZW4gZGF0YSBmcm9tIHRoZSBzZXJ2ZXIgYmFzZWQgb24gdGhlIHNjcmVlbiBJRCBhbmQgb3B0aW9uYWwgY29uZmlndXJhdGlvbi5cbiAgICogXG4gICAqIEBwYXJhbSBzY3JlZW5JZCAtIFRoZSBJRCBvZiB0aGUgc2NyZWVuIHRvIHJldHJpZXZlLlxuICAgKiBAcGFyYW0gY29uZmlnIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBpbmNsdWRpbmcgbGF5b3V0SWQgYW5kIHZlcnNpb24uXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBBZGRpdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHRoZSBBUEkgY2FsbC5cbiAgICogQHJldHVybnMgVGhlIHNjcmVlbiBkYXRhIGlmIGhlYWRlcnMgYXJlIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIG51bGwuXG4gICAqL1xuICBnZXRTY3JlZW4oc2NyZWVuSWQ6IHN0cmluZywgY29uZmlnPzogR2V0U2NyZWVuQ29uZmlnLCBwYXJhbXM/OiBhbnkpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XG4gICAgLy8gUmV0cmlldmUgaGVhZGVycyBmb3IgdGhlIEFQSSByZXF1ZXN0XG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcbiAgICAvLyBDb25zdHJ1Y3QgdGhlIEFQSSBlbmRwb2ludCB3aXRoIHRoZSBzY3JlZW5JZCBhbmQgb3B0aW9uYWwgY29uZmlndXJhdGlvblxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0KFxuICAgICAgYCR7QVBJLmdldFNjcmVlbn0/c2NyZWVuSWQ9JHtzY3JlZW5JZH0ke2NvbmZpZz8ubGF5b3V0SWQgPyBgJmxheW91dElkPSR7Y29uZmlnPy5sYXlvdXRJZH1gIDogJyd9JHtjb25maWc/LnZlcnNpb24gPyBgJnZlcnNpb249JHtjb25maWc/LnZlcnNpb259YCA6ICcnfWAsXG4gICAgICBwYXJhbXMsXG4gICAgICBoZWFkZXJzXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIHN1Ym1pc3Npb24gZGF0YSBmcm9tIHRoZSBzZXJ2ZXIuXG4gICAqIEBwYXJhbSBkYXRhIC0gT2JqZWN0IGNvbnRhaW5pbmcgc2NyZWVuSWQgYW5kIHJlcXRva2Vuc1xuICAgKiBAcmV0dXJucyBBIFN1YmplY3QgZW1pdHRpbmcgdGhlIHN1Ym1pc3Npb24gZGF0YSBvciB1bmRlZmluZWQuXG4gICAqL1xuICBnZXRTY3JlZW5EYXRhKHNjcmVlbklkOiBzdHJpbmcsIHJlcXVlc3RQYXlsb2FkOiBhbnkpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoXG4gICAgICBgJHtBUEkuZ2V0U2NyZWVuRGF0YX0vJHtzY3JlZW5JZH1gLFxuICAgICAgcmVxdWVzdFBheWxvYWQsXG4gICAgICBoZWFkZXJzXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAqIENhbGxlZCB3aGVuIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZC5cbiAgKiBAcGFyYW0gZGF0YSBPYmplY3QgY29udGFpbmluZyBzdWJtaXNzaW9uIGRhdGEuXG4gICovXG4gIHByb2Nlc3NSZXF1ZXN0KGRhdGE6IFByb2Nlc3NSZXF1ZXN0UGF5bG9hZCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChcbiAgICAgIGAke0FQSS5wcm9jZXNzUmVxdWVzdH1gLFxuICAgICAgZGF0YSxcbiAgICAgIGhlYWRlcnNcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgZm9ybUlPIGNvbXBvbmVudHMgZm9yIHRoZSBnaXZlbiBhcHBPYmplY3RJZCBhbmQgdHlwZS5cbiAgICogQHBhcmFtIGFwcE9iamVjdElkIC0gVGhlIElEIG9mIHRoZSBhcHAgb2JqZWN0LlxuICAgKiBAcGFyYW0gdHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBjb21wb25lbnRzIHRvIHJldHJpZXZlLiBDYW4gYmUgZWl0aGVyICdDb21tb25GaWx0ZXInIG9yICdCdWxrVXBkYXRlJ1xuICAgKiBAcGFyYW0gcGFyYW1zIC0gQWRkaXRpb25hbCBwYXJhbWV0ZXJzIGZvciB0aGUgQVBJIGNhbGwuXG4gICAqIEByZXR1cm5zIFRoZSBmb3JtSU8gY29tcG9uZW50cyBpbiB0aGUgcmVzcG9uc2UgYm9keS5cbiAgICovXG4gIGJ1aWxkRm9ybUlPQ29tcG9uZW50cyhhcHBPYmplY3RJZDogc3RyaW5nLCB0eXBlOiBCdWlsZEZvcm1Db21wb25lbnRUeXBlLCBwYXJhbXM/OiBhbnkpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldChcbiAgICAgIGAke0FQSS5CdWlsZEZvcm1JT0NvbXBvbmVudHN9P2FwcE9iamVjdElkPSR7YXBwT2JqZWN0SWR9JlR5cGU9JHt0eXBlfWAsXG4gICAgICBwYXJhbXMsXG4gICAgICBoZWFkZXJzXG4gICAgKTtcbiAgfVxufSJdfQ==
|
|
@@ -31,4 +31,4 @@ export class TabReleaseService {
|
|
|
31
31
|
type: Injectable,
|
|
32
32
|
args: [{ providedIn: 'root' }]
|
|
33
33
|
}], null, null); })();
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXJlbGVhc2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9jcnVkL3RhYi1yZWxlYXNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQU1qRCxNQUFNLE9BQU8saUJBQWlCO0lBRDlCO1FBRW1CLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7S0FtQmxEO0lBakJDOzs7T0FHRztJQUNILG1CQUFtQjtRQUNqQixNQUFNLE1BQU0sR0FBRyxVQUFVLEVBQUUsQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLHdCQUF3QixFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlO1FBQ2IsTUFBTSxNQUFNLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN0RSxDQUFDO2tGQW5CVSxpQkFBaUI7dUVBQWpCLGlCQUFpQixXQUFqQixpQkFBaUIsbUJBREosTUFBTTs7aUZBQ25CLGlCQUFpQjtjQUQ3QixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9odHRwLWNsaWVudC9hcGkuc2VydmljZVwiO1xuaW1wb3J0IHsgZ2V0SGVhZGVycyB9IGZyb20gXCIuLi91dGlscy9yZXEtcmVzLnV0aWxcIjtcbmltcG9ydCB7IEFQSSB9IGZyb20gXCIuLi9jb25zdGFudHMvYXBpLWNvbnN0YW50c1wiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBDb21tb25BcGlSZXNwb25zZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL2NvbW1vbi5pbnRlcmZhY2VcIjtcblxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFRhYlJlbGVhc2VTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlTZXJ2aWNlID0gaW5qZWN0KEFwaVNlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgbWV0YWRhdGEgSlNPTnMgb2YgdHdvIHJlbGVhc2VzLlxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHRoZSBBUEkgcmVzcG9uc2VcbiAgICovXG4gIGdldE1ldGFEYXRhSnNvbkRpZmYoKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xuICAgIGNvbnN0IGhlYWRlciA9IGdldEhlYWRlcnMoKTtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoYCR7QVBJLkdldFJlbGVhc2VKU09ORGlmZmVyZW5jZX1gLCB7fSwgaGVhZGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgZGF0YSBKU09OcyBvZiB0d28gcmVsZWFzZXMuXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2YgdGhlIEFQSSByZXNwb25zZVxuICAgKi9cbiAgZ2V0RGF0YUpzb25EaWZmKCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcbiAgICBjb25zdCBoZWFkZXIgPSBnZXRIZWFkZXJzKCk7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KGAke0FQSS5HZXREYXRhRGlmZmVyZW5jZX1gLCB7fSwgaGVhZGVyKTtcbiAgfVxufSJdfQ==
|
|
@@ -51,4 +51,4 @@ export var ProcedureObjectType;
|
|
|
51
51
|
ProcedureObjectType[ProcedureObjectType["StoredProcedure"] = 1] = "StoredProcedure";
|
|
52
52
|
ProcedureObjectType[ProcedureObjectType["Function"] = 2] = "Function";
|
|
53
53
|
})(ProcedureObjectType || (ProcedureObjectType = {}));
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvZW51bXMvY29tbW9uLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksVUFLWDtBQUxELFdBQVksVUFBVTtJQUNsQiwyQ0FBUSxDQUFBO0lBQ1IsK0NBQVUsQ0FBQTtJQUNWLCtDQUFVLENBQUE7SUFDViwrQ0FBVSxDQUFBO0FBQ2QsQ0FBQyxFQUxXLFVBQVUsS0FBVixVQUFVLFFBS3JCO0FBRUQsTUFBTSxDQUFOLElBQVksVUFHWDtBQUhELFdBQVksVUFBVTtJQUNsQiw2Q0FBUyxDQUFBO0lBQ1QsMkNBQVEsQ0FBQTtBQUNaLENBQUMsRUFIVyxVQUFVLEtBQVYsVUFBVSxRQUdyQjtBQUVELE1BQU0sQ0FBTixJQUFZLFlBSVg7QUFKRCxXQUFZLFlBQVk7SUFDcEIsbUVBQWtCLENBQUE7SUFDbEIsNkVBQXVCLENBQUE7SUFDdkIsdURBQVksQ0FBQTtBQUNoQixDQUFDLEVBSlcsWUFBWSxLQUFaLFlBQVksUUFJdkI7QUFFRCxNQUFNLENBQU4sSUFBWSxrQkFJWDtBQUpELFdBQVksa0JBQWtCO0lBQzFCLG1FQUFZLENBQUE7SUFDWiwyREFBUSxDQUFBO0lBQ1IsK0RBQVUsQ0FBQTtBQUNkLENBQUMsRUFKVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBSTdCO0FBRUQsTUFBTSxDQUFOLElBQVksc0JBR1g7QUFIRCxXQUFZLHNCQUFzQjtJQUM5Qix1REFBNkIsQ0FBQTtJQUM3QixtREFBeUIsQ0FBQTtBQUM3QixDQUFDLEVBSFcsc0JBQXNCLEtBQXRCLHNCQUFzQixRQUdqQztBQUVELE1BQU0sQ0FBTixJQUFZLFFBR1g7QUFIRCxXQUFZLFFBQVE7SUFDaEIsNkRBQW1CLENBQUE7SUFDbkIsK0NBQVksQ0FBQTtBQUNoQixDQUFDLEVBSFcsUUFBUSxLQUFSLFFBQVEsUUFHbkI7QUFFRCxNQUFNLENBQU4sSUFBWSxnQkFLWDtBQUxELFdBQVksZ0JBQWdCO0lBQ3hCLHVDQUFtQixDQUFBO0lBQ25CLHVDQUFtQixDQUFBO0lBQ25CLG1DQUFlLENBQUE7SUFDZixpQ0FBYSxDQUFBO0FBQ2pCLENBQUMsRUFMVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBSzNCO0FBRUQsTUFBTSxDQUFOLElBQVksZUFLWDtBQUxELFdBQVksZUFBZTtJQUN2Qiw4QkFBVyxDQUFBO0lBQ1gsZ0NBQWEsQ0FBQTtJQUNiLDhCQUFXLENBQUE7SUFDWCxvQ0FBaUIsQ0FBQTtBQUNyQixDQUFDLEVBTFcsZUFBZSxLQUFmLGVBQWUsUUFLMUI7QUFFRCxNQUFNLENBQU4sSUFBWSxtQkFHWDtBQUhELFdBQVksbUJBQW1CO0lBQzdCLG1GQUFtQixDQUFBO0lBQ25CLHFFQUFZLENBQUE7QUFDZCxDQUFDLEVBSFcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQUc5QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFNjcmVlblR5cGUge1xuICAgIExpc3QgPSAxLFxuICAgIERldGFpbCA9IDIsXG4gICAgTGF5b3V0ID0gMyxcbiAgICBGaWx0ZXIgPSA0LFxufVxuXG5leHBvcnQgZW51bSBPYmplY3RUeXBlIHtcbiAgICBUYWJsZSA9IDEsXG4gICAgVmlldyA9IDJcbn1cblxuZXhwb3J0IGVudW0gUmVzb3VyY2VUeXBlIHtcbiAgICBFbWFpbFRlYW1wbGF0ZSA9IDEsXG4gICAgTGFuZ3VhZ2VUcmFuc2xhdGlvbiA9IDIsXG4gICAgU2V0dGluZ3MgPSAzXG59XG5cbmV4cG9ydCBlbnVtIFJlbGVhc2VDb250ZW50VHlwZSB7XG4gICAgTWV0YURhdGEgPSAxLFxuICAgIERhdGEgPSAyLFxuICAgIFNjcmlwdCA9IDNcbn1cblxuZXhwb3J0IGVudW0gQnVpbGRGb3JtQ29tcG9uZW50VHlwZSB7XG4gICAgQ29tbW9uRmlsdGVyID0gJ0NvbW1vbkZpbHRlcicsXG4gICAgQnVsa1VwZGF0ZSA9ICdCdWxrVXBkYXRlJ1xufVxuXG5leHBvcnQgZW51bSBKc29uVHlwZSB7XG4gICAgQXBwT2JqZWN0QWNjZXNzID0gMSxcbiAgICBMYW5ndWFnZSA9IDJcbn1cblxuZXhwb3J0IGVudW0gTm90aWZpY2F0aW9uVHlwZSB7XG4gICAgU3VjY2VzcyA9ICdzdWNjZXNzJyxcbiAgICBXYXJuaW5nID0gJ3dhcm5pbmcnLFxuICAgIEVycm9yID0gJ2Vycm9yJyxcbiAgICBJbmZvID0gJ2luZm8nXG59XG5cbmV4cG9ydCBlbnVtIEh0dHBSZXF1ZXN0VHlwZSB7XG4gICAgR0VUID0gJ0dFVCcsXG4gICAgUE9TVCA9ICdQT1NUJyxcbiAgICBQVVQgPSAnUFVUJyxcbiAgICBERUxFVEUgPSAnREVMRVRFJ1xufVxuXG5leHBvcnQgZW51bSBQcm9jZWR1cmVPYmplY3RUeXBlIHtcbiAgU3RvcmVkUHJvY2VkdXJlID0gMSxcbiAgRnVuY3Rpb24gPSAyXG59Il19
|
|
@@ -298,4 +298,4 @@ export class MetadataHelper {
|
|
|
298
298
|
type: Injectable,
|
|
299
299
|
args: [{ providedIn: 'root' }]
|
|
300
300
|
}], null, null); })();
|
|
301
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS1kYXRhLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vbWV0YS1kYXRhLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUcvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFHckUsTUFBTSxPQUFPLGNBQWM7SUFEM0I7UUFFVSxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBQ3hELGtCQUFhLEdBQTRCLElBQUksQ0FBQztRQUU5QyxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBQ3hELGtCQUFhLEdBQTRCLElBQUksQ0FBQztRQUU5QyxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQStCLENBQUM7UUFDcEQsZ0JBQVcsR0FBMEIsSUFBSSxDQUFDO1FBRTFDLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBK0IsQ0FBQztRQUNwRCxnQkFBVyxHQUEwQixJQUFJLENBQUM7UUFFakMs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LEVBQUUsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FDekIsQ0FBQztRQUVGLHNFQUFzRTtRQUN0RSxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pELENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVO1FBQ1IsSUFBSSxDQUFDO1lBQ0gsYUFBYTtZQUNiLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFeEIsY0FBYztZQUNkLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBRTFCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvRCxDQUFDO0lBQ0gsQ0FBQzsrRUEvWFUsY0FBYzt1RUFBZCxjQUFjLFdBQWQsY0FBYyxtQkFERCxNQUFNOztpRkFDbkIsY0FBYztjQUQxQixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ29tbW9uIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50cy9jb21tb25cIjtcclxuaW1wb3J0IHsgQXBwT2JqZWN0TW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2FwcC1vYmplY3QubW9kZWxcIjtcclxuaW1wb3J0IHsgQXBwRmllbGRNb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvYXBwLWZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IERhdGFTb3VyY2VRdWVyeU1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy9kYXRhLXNvdXJjZS1xdWVyeS5tb2RlbFwiO1xyXG5pbXBvcnQgeyBNZXRhZGF0YUVudGl0eVR5cGUgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9zY2hlbWEuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7IEFwcFNjcmVlbk1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy9hcHAtc2NyZWVuLm1vZGVsXCI7XHJcbmltcG9ydCB7IE9yZ0luZm9Nb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvb3JnSW5mby5tb2RlbFwiO1xyXG5pbXBvcnQgeyBBcHBNZW51TW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2FwcC1tZW51Lm1vZGVsXCI7XHJcbmltcG9ydCB7IFNlc3Npb25TdG9yYWdlU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9hdXRoL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFN0b3JhZ2VDb25zdGFudHMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzL3N0b3JhZ2UtY29uc3RhbnRzXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgTWV0YWRhdGFIZWxwZXIge1xyXG4gIHByaXZhdGUgYXBwT2JqZWN0TWFwID0gbmV3IE1hcDxzdHJpbmcsIEFwcE9iamVjdE1vZGVsIHwgbnVsbD4oKTtcclxuICBwcml2YXRlIGFsbEFwcE9iamVjdHM6IEFwcE9iamVjdE1vZGVsW10gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBhcHBTY3JlZW5NYXAgPSBuZXcgTWFwPHN0cmluZywgQXBwU2NyZWVuTW9kZWwgfCBudWxsPigpO1xyXG4gIHByaXZhdGUgYWxsQXBwU2NyZWVuczogQXBwU2NyZWVuTW9kZWxbXSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIG9yZ0luZm9NYXAgPSBuZXcgTWFwPHN0cmluZywgT3JnSW5mb01vZGVsIHwgbnVsbD4oKTtcclxuICBwcml2YXRlIGFsbE9yZ0luZm9zOiBPcmdJbmZvTW9kZWxbXSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIGFwcE1lbnVNYXAgPSBuZXcgTWFwPHN0cmluZywgQXBwTWVudU1vZGVsIHwgbnVsbD4oKTtcclxuICBwcml2YXRlIGFsbEFwcE1lbnVzOiBBcHBNZW51TW9kZWxbXSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlID0gaW5qZWN0KFNlc3Npb25TdG9yYWdlU2VydmljZSk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEhlbHBlciBtZXRob2QgdG8gZ2V0IGN1cnJlbnQgYXBwIElEIGZyb20gc2Vzc2lvblxyXG4gICAqIEByZXR1cm5zIEN1cnJlbnQgYXBwIElEIG9yIG51bGwgaWYgbm90IGF2YWlsYWJsZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0Q3VycmVudEFwcElkKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgYXBwSW5mbyA9IHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldFNlc3Npb25TdG9yYWdlKFN0b3JhZ2VDb25zdGFudHMuYXBwSW5mbyk7XHJcbiAgICAgIGNvbnN0IHBhcnNlZEFwcEluZm8gPSBhcHBJbmZvID8gSlNPTi5wYXJzZShhcHBJbmZvKSA6IG51bGw7XHJcbiAgICAgIHJldHVybiBwYXJzZWRBcHBJbmZvPy5JZCB8fCBudWxsO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gZ2V0IGN1cnJlbnQgYXBwIElEIGZyb20gc2Vzc2lvbjonLCBlcnJvcik7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBrZXkgZnJvbSB0aGUgZ2l2ZW4gbWFwLlxyXG4gICAqIElmIHRoZSBrZXkgZG9lcyBub3QgZXhpc3QgaW4gdGhlIG1hcCwgYW5kIHRoZSBzb3VyY2UgbGlzdCBjb250YWlucyBhbiBpdGVtIHRoYXQgbWF0Y2hlc1xyXG4gICAqIHRoZSBnaXZlbiBjb25kaXRpb24sIGl0IGNyZWF0ZXMgYSBuZXcgbW9kZWwgdXNpbmcgdGhlIGdpdmVuIG1vZGVsIGZhY3RvcnkgYW5kIGFkZHMgaXQgdG8gdGhlIG1hcC5cclxuICAgKiBAcGFyYW0gbWFwIFRoZSBtYXAgdG8gc2VhcmNoIGluLlxyXG4gICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxyXG4gICAqIEBwYXJhbSBzb3VyY2VMaXN0IFRoZSBsaXN0IG9mIGl0ZW1zIHRvIHNlYXJjaCBpbi5cclxuICAgKiBAcGFyYW0gbWF0Y2hGbiBUaGUgY29uZGl0aW9uIHRvIG1hdGNoLlxyXG4gICAqIEBwYXJhbSBtb2RlbEZhY3RvcnkgVGhlIGZhY3RvcnkgdG8gY3JlYXRlIGEgbmV3IG1vZGVsIGlmIHRoZSBrZXkgZG9lcyBub3QgZXhpc3QuXHJcbiAgICogQHJldHVybnMgVGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4ga2V5LCBvciBudWxsIGlmIG5vIG1hdGNoIGlzIGZvdW5kLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0RnJvbU1hcE9yQ3JlYXRlPFQ+KFxyXG4gICAgbWFwOiBNYXA8c3RyaW5nLCBUIHwgbnVsbD4sXHJcbiAgICBrZXk6IHN0cmluZyxcclxuICAgIHNvdXJjZUxpc3Q6IFRbXSxcclxuICAgIG1hdGNoRm46IChpdGVtOiBUKSA9PiBib29sZWFuLFxyXG4gICAgbW9kZWxGYWN0b3J5OiAoaXRlbTogVCkgPT4gVFxyXG4gICk6IFQgfCBudWxsIHtcclxuICAgIGlmICgha2V5KSByZXR1cm4gbnVsbDtcclxuICAgIGlmIChtYXAuaGFzKGtleSkpIHJldHVybiBtYXAuZ2V0KGtleSkgfHwgbnVsbDtcclxuXHJcbiAgICBjb25zdCBpdGVtID0gc291cmNlTGlzdC5maW5kKG1hdGNoRm4pO1xyXG4gICAgY29uc3QgbW9kZWwgPSBpdGVtID8gbW9kZWxGYWN0b3J5KGl0ZW0pIDogbnVsbDtcclxuICAgIG1hcC5zZXQoa2V5LCBtb2RlbCk7XHJcbiAgICByZXR1cm4gbW9kZWw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMYXppbHkgaW5pdGlhbGl6ZXMgYSBsaXN0IG9mIG1vZGVscyBmcm9tIGEgc291cmNlIGxpc3QuXHJcbiAgICogSXQgY3JlYXRlcyBhIG5ldyBtb2RlbCBmb3IgZWFjaCBpdGVtIGluIHRoZSBzb3VyY2UgbGlzdCBhbmQgYWRkcyBpdCB0byB0aGUgZ2l2ZW4gbWFwLlxyXG4gICAqIEl0IGFsc28gc2V0cyB0aGUgbGlzdCBvZiBtb2RlbHMgdG8gdGhlIGdpdmVuIHNldHRlci5cclxuICAgKiBAcGFyYW0gbGlzdFJlZiBUaGUgcmVmZXJlbmNlIHRvIHRoZSBsaXN0IG9mIG1vZGVscy5cclxuICAgKiBAcGFyYW0gc2V0dGVyIFRoZSBzZXR0ZXIgdG8gc2V0IHRoZSBsaXN0IG9mIG1vZGVscy5cclxuICAgKiBAcGFyYW0gc291cmNlTGlzdCBUaGUgc291cmNlIGxpc3Qgb2YgaXRlbXMuXHJcbiAgICogQHBhcmFtIG1hcCBUaGUgbWFwIHRvIHN0b3JlIHRoZSBtb2RlbHMuXHJcbiAgICogQHBhcmFtIGdldEtleXMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBmb3IgdGhlIGdpdmVuIGl0ZW0uXHJcbiAgICogQHBhcmFtIG1vZGVsRmFjdG9yeSBUaGUgZmFjdG9yeSB0byBjcmVhdGUgYSBuZXcgbW9kZWwgZm9yIHRoZSBnaXZlbiBpdGVtLlxyXG4gICAqIEByZXR1cm5zIFRoZSBsaXN0IG9mIG1vZGVscy5cclxuICAgKi9cclxuICBwcml2YXRlIGxhenlJbml0TGlzdDxULCBNPihcclxuICAgIGxpc3RSZWY6IE1bXSB8IG51bGwsXHJcbiAgICBzZXR0ZXI6IChsaXN0OiBNW10pID0+IHZvaWQsXHJcbiAgICBzb3VyY2VMaXN0OiBUW10sXHJcbiAgICBtYXA6IE1hcDxzdHJpbmcsIE0gfCBudWxsPixcclxuICAgIGdldEtleXM6IChpdGVtOiBUKSA9PiBzdHJpbmdbXSxcclxuICAgIG1vZGVsRmFjdG9yeTogKGl0ZW06IFQpID0+IE1cclxuICApOiBNW10ge1xyXG4gICAgLy8gSWYgdGhlIGxpc3QgaXMgYWxyZWFkeSBpbml0aWFsaXplZCwgcmV0dXJuIGl0LlxyXG4gICAgaWYgKGxpc3RSZWYpIHJldHVybiBsaXN0UmVmO1xyXG5cclxuICAgIC8vIENyZWF0ZSBhIG5ldyBtb2RlbCBmb3IgZWFjaCBpdGVtIGluIHRoZSBzb3VyY2UgbGlzdCBhbmQgYWRkIGl0IHRvIHRoZSBtYXAuXHJcbiAgICBjb25zdCBtb2RlbHMgPSBzb3VyY2VMaXN0Lm1hcCgoaXRlbTogVCkgPT4ge1xyXG4gICAgICBjb25zdCBtb2RlbCA9IG1vZGVsRmFjdG9yeShpdGVtKTtcclxuICAgICAgZ2V0S2V5cyhpdGVtKS5mb3JFYWNoKGtleSA9PiBtYXAuc2V0KGtleSwgbW9kZWwpKTtcclxuICAgICAgcmV0dXJuIG1vZGVsO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gU2V0IHRoZSBsaXN0IG9mIG1vZGVscyB0byB0aGUgZ2l2ZW4gc2V0dGVyLlxyXG4gICAgc2V0dGVyKG1vZGVscyk7XHJcblxyXG4gICAgLy8gUmV0dXJuIHRoZSBsaXN0IG9mIG1vZGVscy5cclxuICAgIHJldHVybiBtb2RlbHM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaW5kcyBhbiBhcHAgb2JqZWN0IGluIHRoZSBtYXAgYnkgaXRzIG5hbWUgb3IgaWQuXHJcbiAgICogSWYgdGhlIGFwcCBvYmplY3QgaXMgbm90IGZvdW5kLCBpdCBjcmVhdGVzIGEgbmV3IG9uZSBhbmQgYWRkcyBpdCB0byB0aGUgbWFwLlxyXG4gICAqIEBwYXJhbSBuYW1lT3JJZCBUaGUgbmFtZSBvciBpZCBvZiB0aGUgYXBwIG9iamVjdCB0byBmaW5kLlxyXG4gICAqIEByZXR1cm5zIFRoZSBhcHAgb2JqZWN0IGlmIGZvdW5kLCBvciBudWxsIGlmIG5vdCBmb3VuZC5cclxuICAgKi9cclxuICBnZXRBcHBPYmplY3RCeUlkT3JOYW1lKG5hbWVPcklkOiBzdHJpbmcpOiBBcHBPYmplY3RNb2RlbCB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0RnJvbU1hcE9yQ3JlYXRlKFxyXG4gICAgICB0aGlzLmFwcE9iamVjdE1hcCxcclxuICAgICAgbmFtZU9ySWQsXHJcbiAgICAgIENvbW1vbi50YWJKc29uLkFwcE9iamVjdHMsXHJcbiAgICAgIG9iaiA9PiBvYmouT2JqZWN0TmFtZSA9PT0gbmFtZU9ySWQgfHwgb2JqLklEPy50b0xvd2VyQ2FzZSgpID09PSBuYW1lT3JJZD8udG9Mb3dlckNhc2UoKSxcclxuICAgICAgb2JqID0+IG5ldyBBcHBPYmplY3RNb2RlbChvYmosIHRoaXMpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgYXBwIG9iamVjdHMgaW4gdGhlIG1ldGFkYXRhLlxyXG4gICAqIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBpdCBpcyBhcHBsaWVkIHRvIGVhY2ggYXBwIG9iamVjdC5cclxuICAgKiBAcGFyYW0gZmlsdGVyRm4gVGhlIGZpbHRlciBmdW5jdGlvbiB0byBhcHBseSB0byB0aGUgYXBwIG9iamVjdHMuXHJcbiAgICogQHJldHVybnMgVGhlIGxpc3Qgb2YgYXBwIG9iamVjdHMuXHJcbiAgICovXHJcbiAgZ2V0QWxsQXBwT2JqZWN0cyhmaWx0ZXJGbj86IChvYmo6IEFwcE9iamVjdE1vZGVsKSA9PiBib29sZWFuLCBpbmNsdWRlU3lzdGVtRGF0YSA9IGZhbHNlKTogQXBwT2JqZWN0TW9kZWxbXSB7XHJcbiAgICAvLyBJbml0aWFsaXplIHRoZSBsaXN0IG9mIGFwcCBvYmplY3RzIGxhemlseS5cclxuICAgIGNvbnN0IGxpc3QgPSB0aGlzLmxhenlJbml0TGlzdChcclxuICAgICAgdGhpcy5hbGxBcHBPYmplY3RzLFxyXG4gICAgICB2YWwgPT4gKHRoaXMuYWxsQXBwT2JqZWN0cyA9IHZhbCksXHJcbiAgICAgIENvbW1vbi50YWJKc29uLkFwcE9iamVjdHMsXHJcbiAgICAgIHRoaXMuYXBwT2JqZWN0TWFwLFxyXG4gICAgICAob2JqOiBhbnkpID0+IFtvYmouSUQ/LnRvTG93ZXJDYXNlKCksIG9iai5PYmplY3ROYW1lXSxcclxuICAgICAgb2JqID0+IG5ldyBBcHBPYmplY3RNb2RlbChvYmosIHRoaXMpXHJcbiAgICApO1xyXG5cclxuICAgIGxldCBmaWx0ZXJlZExpc3Q6IEFwcE9iamVjdE1vZGVsW10gPSBsaXN0O1xyXG4gICAgaWYgKCFpbmNsdWRlU3lzdGVtRGF0YSkge1xyXG4gICAgICBjb25zdCBjdXJyZW50QXBwSWQgPSB0aGlzLmdldEN1cnJlbnRBcHBJZCgpPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICBmaWx0ZXJlZExpc3QgPSBsaXN0LmZpbHRlcihvYmogPT5cclxuICAgICAgICAhb2JqLkFwcElkIHx8ICAgICAgICAgICAgICAgICAgICAvLyBHbG9iYWwgZGF0YSAoYXBwID0gbnVsbClcclxuICAgICAgICBvYmouQXBwSWQgPT09IGN1cnJlbnRBcHBJZCAgICAgICAvLyBDdXJyZW50IGFwcCBkYXRhXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGFwcGx5IGl0IHRvIHRoZSBsaXN0IG9mIGFwcCBvYmplY3RzLlxyXG4gICAgcmV0dXJuIGZpbHRlckZuID8gZmlsdGVyZWRMaXN0LmZpbHRlcihmaWx0ZXJGbikgOiBmaWx0ZXJlZExpc3Q7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBmaWVsZHMgaW4gdGhlIG1ldGFkYXRhLlxyXG4gICAqIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBpdCBpcyBhcHBsaWVkIHRvIGVhY2ggZmllbGQuXHJcbiAgICogQHBhcmFtIGZpbHRlckZuIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGZpZWxkcy5cclxuICAgKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBmaWVsZHMuXHJcbiAgICovXHJcbiAgZ2V0QWxsRmllbGRzKGZpbHRlckZuPzogKGZpZWxkOiBBcHBGaWVsZE1vZGVsKSA9PiBib29sZWFuLCBpbmNsdWRlU3lzdGVtRGF0YSA9IGZhbHNlKTogQXBwRmllbGRNb2RlbFtdIHtcclxuICAgIC8vIEdldCBhIGxpc3Qgb2YgYWxsIGZpZWxkcyBmcm9tIGFsbCBhcHAgb2JqZWN0cy5cclxuICAgIGNvbnN0IGFsbEZpZWxkcyA9IHRoaXMuZ2V0QWxsQXBwT2JqZWN0cyh1bmRlZmluZWQsIGluY2x1ZGVTeXN0ZW1EYXRhKS5mbGF0TWFwKG9iaiA9PiBvYmouZmllbGRzKCkpO1xyXG5cclxuICAgIC8vIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBhcHBseSBpdCB0byB0aGUgbGlzdCBvZiBmaWVsZHMuXHJcbiAgICByZXR1cm4gZmlsdGVyRm4gPyBhbGxGaWVsZHMuZmlsdGVyKGZpbHRlckZuKSA6IGFsbEZpZWxkcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbmRzIGEgZmllbGQgYnkgaXRzIElEIGFjcm9zcyBhbGwgYXBwIG9iamVjdHNcclxuICAgKiBAcGFyYW0gZmllbGRJZCBUaGUgSUQgb2YgdGhlIGZpZWxkIHRvIGZpbmRcclxuICAgKiBAcmV0dXJucyBUaGUgZmllbGQgaWYgZm91bmQsIG9yIG51bGwgaWYgbm90IGZvdW5kXHJcbiAgICovXHJcbiAgZ2V0RmllbGRCeUlkT3JOYW1lKG5hbWVPcklkOiBzdHJpbmcpOiBBcHBGaWVsZE1vZGVsIHwgbnVsbCB7XHJcbiAgICBpZiAoIW5hbWVPcklkKSByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiB0aGlzLmdldEFsbEZpZWxkcyhmaWVsZCA9PlxyXG4gICAgICBmaWVsZC5JRD8udG9Mb3dlckNhc2UoKSA9PT0gbmFtZU9ySWQ/LnRvTG93ZXJDYXNlKCkgfHxcclxuICAgICAgZmllbGQuRmllbGROYW1lID09PSBuYW1lT3JJZCxcclxuICAgICAgdHJ1ZVxyXG4gICAgKVswXSB8fCBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgZGF0YSBzb3VyY2UgcXVlcmllcyBpbiB0aGUgbWV0YWRhdGEuXHJcbiAgICogSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGl0IGlzIGFwcGxpZWQgdG8gZWFjaCBkYXRhIHNvdXJjZSBxdWVyeS5cclxuICAgKiBAcGFyYW0gZmlsdGVyRm4gVGhlIGZpbHRlciBmdW5jdGlvbiB0byBhcHBseSB0byB0aGUgZGF0YSBzb3VyY2UgcXVlcmllcy5cclxuICAgKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBkYXRhIHNvdXJjZSBxdWVyaWVzLlxyXG4gICAqL1xyXG4gIGdldEFsbERhdGFTb3VyY2VRdWVyaWVzKGZpbHRlckZuPzogKGRzcTogRGF0YVNvdXJjZVF1ZXJ5TW9kZWwpID0+IGJvb2xlYW4sIGluY2x1ZGVTeXN0ZW1EYXRhID0gZmFsc2UpOiBEYXRhU291cmNlUXVlcnlNb2RlbFtdIHtcclxuICAgIC8vIEdldCBhIGxpc3Qgb2YgYWxsIGRhdGEgc291cmNlIHF1ZXJpZXMgZnJvbSBhbGwgYXBwIG9iamVjdHMuXHJcbiAgICBjb25zdCBhbGxEU1FzID0gdGhpcy5nZXRBbGxBcHBPYmplY3RzKHVuZGVmaW5lZCwgaW5jbHVkZVN5c3RlbURhdGEpLmZsYXRNYXAob2JqID0+IG9iai5kYXRhU291cmNlUXVlcmllcygpKTtcclxuXHJcbiAgICAvLyBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgYXBwbHkgaXQgdG8gdGhlIGxpc3Qgb2YgZGF0YSBzb3VyY2UgcXVlcmllcy5cclxuICAgIHJldHVybiBmaWx0ZXJGbiA/IGFsbERTUXMuZmlsdGVyKGZpbHRlckZuKSA6IGFsbERTUXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBkYXRhIHNvdXJjZSBxdWVyeSBieSBpdHMgSUQsIFF1ZXJ5TmFtZSwgb3IgRGlzcGxheU5hbWUuXHJcbiAgICogU2VhcmNoZXMgdGhyb3VnaCBhbGwgZGF0YSBzb3VyY2UgcXVlcmllcyBhbmQgcmV0dXJucyB0aGUgZmlyc3QgbWF0Y2guXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVPcklkIC0gVGhlIElELCBRdWVyeU5hbWUsIG9yIERpc3BsYXlOYW1lIG9mIHRoZSBkYXRhIHNvdXJjZSBxdWVyeSB0byByZXRyaWV2ZS5cclxuICAgKiBAcmV0dXJucyB7RGF0YVNvdXJjZVF1ZXJ5TW9kZWwgfCBudWxsfSAtIFRoZSBkYXRhIHNvdXJjZSBxdWVyeSBtb2RlbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIG51bGwuXHJcbiAgICovXHJcbiAgZ2V0RGF0YVNvdXJjZVF1ZXJ5QnlJZE9yTmFtZShuYW1lT3JJZDogc3RyaW5nKTogRGF0YVNvdXJjZVF1ZXJ5TW9kZWwgfCBudWxsIHtcclxuICAgIC8vIFNlYXJjaCBmb3IgdGhlIGRhdGEgc291cmNlIHF1ZXJ5IGJ5IElELCBRdWVyeU5hbWUsIG9yIERpc3BsYXlOYW1lXHJcbiAgICByZXR1cm4gdGhpcy5nZXRBbGxEYXRhU291cmNlUXVlcmllcyh1bmRlZmluZWQsIHRydWUpLmZpbmQoXHJcbiAgICAgIGRzcSA9PiBkc3E/LklEPy50b0xvd2VyQ2FzZSgpID09PSBuYW1lT3JJZD8udG9Mb3dlckNhc2UoKSB8fCBkc3E/LlF1ZXJ5TmFtZSA9PT0gbmFtZU9ySWQgfHwgZHNxPy5EaXNwbGF5TmFtZSA9PT0gbmFtZU9ySWRcclxuICAgICkgfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhbiBhcHAgc2NyZWVuIGJ5IGl0cyBJRCwgTmFtZSwgb3IgRGlzcGxheU5hbWUuXHJcbiAgICogU2VhcmNoZXMgdGhyb3VnaCBhbGwgYXBwIHNjcmVlbnMgYW5kIHJldHVybnMgdGhlIGZpcnN0IG1hdGNoLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lT3JJZCAtIFRoZSBJRCwgTmFtZSwgb3IgRGlzcGxheU5hbWUgb2YgdGhlIGFwcCBzY3JlZW4gdG8gcmV0cmlldmUuXHJcbiAgICogQHJldHVybnMge0FwcFNjcmVlbk1vZGVsIHwgbnVsbH0gLSBUaGUgYXBwIHNjcmVlbiBtb2RlbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIG51bGwuXHJcbiAgICovXHJcbiAgZ2V0QXBwU2NyZWVuQnlJZE9yTmFtZShuYW1lT3JJZDogc3RyaW5nKTogQXBwU2NyZWVuTW9kZWwgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmdldEZyb21NYXBPckNyZWF0ZShcclxuICAgICAgdGhpcy5hcHBTY3JlZW5NYXAsXHJcbiAgICAgIG5hbWVPcklkLFxyXG4gICAgICBDb21tb24udGFiSnNvbi5BcHBTY3JlZW5zLFxyXG4gICAgICBzY3JlZW4gPT4gc2NyZWVuPy5JRD8udG9Mb3dlckNhc2UoKSA9PT0gbmFtZU9ySWQ/LnRvTG93ZXJDYXNlKCkgfHwgc2NyZWVuPy5OYW1lID09PSBuYW1lT3JJZCxcclxuICAgICAgc2NyZWVuID0+IG5ldyBBcHBTY3JlZW5Nb2RlbChzY3JlZW4pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBhbGwgYXBwIHNjcmVlbnMuXHJcbiAgICogSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGl0IGlzIGFwcGxpZWQgdG8gdGhlIGxpc3Qgb2YgYXBwIHNjcmVlbnMuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZmlsdGVyRm4gLSBUaGUgZmlsdGVyIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBhcHAgc2NyZWVucy5cclxuICAgKiBAcmV0dXJucyB7QXBwU2NyZWVuTW9kZWxbXX0gLSBUaGUgbGlzdCBvZiBhcHAgc2NyZWVucy5cclxuICAgKi9cclxuICBnZXRBbGxBcHBTY3JlZW5zKGZpbHRlckZuPzogKHNjcmVlbjogQXBwU2NyZWVuTW9kZWwpID0+IGJvb2xlYW4pOiBBcHBTY3JlZW5Nb2RlbFtdIHtcclxuICAgIC8vIEluaXRpYWxpemUgdGhlIGxpc3Qgb2YgYXBwIHNjcmVlbnMgbGF6aWx5LlxyXG4gICAgY29uc3QgbGlzdCA9IHRoaXMubGF6eUluaXRMaXN0KFxyXG4gICAgICB0aGlzLmFsbEFwcFNjcmVlbnMsXHJcbiAgICAgIHZhbCA9PiAodGhpcy5hbGxBcHBTY3JlZW5zID0gdmFsKSxcclxuICAgICAgQ29tbW9uLnRhYkpzb24uQXBwU2NyZWVucyxcclxuICAgICAgdGhpcy5hcHBTY3JlZW5NYXAsXHJcbiAgICAgIChzOiBhbnkpID0+IFtzPy5JRD8udG9Mb3dlckNhc2UoKSwgcz8uTmFtZV0sXHJcbiAgICAgIHMgPT4gbmV3IEFwcFNjcmVlbk1vZGVsKHMpXHJcbiAgICApO1xyXG5cclxuICAgIC8vIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBhcHBseSBpdCB0byB0aGUgbGlzdCBvZiBhcHAgc2NyZWVucy5cclxuICAgIHJldHVybiBmaWx0ZXJGbiA/IGxpc3QuZmlsdGVyKGZpbHRlckZuKSA6IGxpc3Q7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYW4gb3JnYW5pemF0aW9uIGluZm8gYnkgaXRzIElEIG9yIFRlbmFudENvZGUuXHJcbiAgICogU2VhcmNoZXMgdGhyb3VnaCBhbGwgb3JnYW5pemF0aW9uIGluZm8gYW5kIHJldHVybnMgdGhlIGZpcnN0IG1hdGNoLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lT3JUZW5hbnRDb2RlIC0gVGhlIElEIG9yIFRlbmFudENvZGUgb2YgdGhlIG9yZ2FuaXphdGlvbiBpbmZvIHRvIHJldHJpZXZlLlxyXG4gICAqIEByZXR1cm5zIHtPcmdJbmZvTW9kZWwgfCBudWxsfSAtIFRoZSBvcmdhbml6YXRpb24gaW5mbyBtb2RlbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIG51bGwuXHJcbiAgICovXHJcbiAgZ2V0T3JnSW5mb0J5SWRPclRlbmFudENvZGUobmFtZU9yVGVuYW50Q29kZTogc3RyaW5nKTogT3JnSW5mb01vZGVsIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRGcm9tTWFwT3JDcmVhdGUoXHJcbiAgICAgIHRoaXMub3JnSW5mb01hcCxcclxuICAgICAgbmFtZU9yVGVuYW50Q29kZSxcclxuICAgICAgQ29tbW9uLnRhYkpzb24uT3JnSW5mb3MsXHJcbiAgICAgIC8vIFNlYXJjaCBmb3IgdGhlIG9yZ2FuaXphdGlvbiBpbmZvIGJ5IElEIG9yIFRlbmFudENvZGVcclxuICAgICAgb3JnID0+IG9yZy5JRD8udG9Mb3dlckNhc2UoKSA9PT0gbmFtZU9yVGVuYW50Q29kZT8udG9Mb3dlckNhc2UoKSB8fCBvcmcuVGVuYW50Q29kZSA9PT0gbmFtZU9yVGVuYW50Q29kZSxcclxuICAgICAgLy8gQ3JlYXRlIGEgbmV3IE9yZ0luZm9Nb2RlbCBpZiB0aGUgb3JnYW5pemF0aW9uIGluZm8gaXMgZm91bmRcclxuICAgICAgb3JnID0+IG5ldyBPcmdJbmZvTW9kZWwob3JnKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhIGxpc3Qgb2YgYWxsIG9yZ2FuaXphdGlvbiBpbmZvLlxyXG4gICAqIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBpdCBpcyBhcHBsaWVkIHRvIHRoZSBsaXN0IG9mIG9yZ2FuaXphdGlvbiBpbmZvLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZpbHRlckZuIC0gVGhlIGZpbHRlciBmdW5jdGlvbiB0byBhcHBseSB0byB0aGUgb3JnYW5pemF0aW9uIGluZm8uXHJcbiAgICogQHJldHVybnMge09yZ0luZm9Nb2RlbFtdfSAtIFRoZSBsaXN0IG9mIG9yZ2FuaXphdGlvbiBpbmZvLlxyXG4gICAqL1xyXG4gIGdldEFsbE9yZ0luZm9zKGZpbHRlckZuPzogKG9yZzogT3JnSW5mb01vZGVsKSA9PiBib29sZWFuKTogT3JnSW5mb01vZGVsW10ge1xyXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgbGlzdCBvZiBvcmdhbml6YXRpb24gaW5mbyBsYXppbHkuXHJcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5sYXp5SW5pdExpc3QoXHJcbiAgICAgIHRoaXMuYWxsT3JnSW5mb3MsXHJcbiAgICAgIHZhbCA9PiAodGhpcy5hbGxPcmdJbmZvcyA9IHZhbCksXHJcbiAgICAgIENvbW1vbi50YWJKc29uLk9yZ0luZm9zLFxyXG4gICAgICB0aGlzLm9yZ0luZm9NYXAsXHJcbiAgICAgIChvcmc6IGFueSkgPT4gW29yZz8uSUQ/LnRvTG93ZXJDYXNlKCksIG9yZz8uVGVuYW50Q29kZV0sXHJcbiAgICAgIG9yZyA9PiBuZXcgT3JnSW5mb01vZGVsKG9yZylcclxuICAgICk7XHJcblxyXG4gICAgLy8gSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGFwcGx5IGl0IHRvIHRoZSBsaXN0IG9mIG9yZ2FuaXphdGlvbiBpbmZvLlxyXG4gICAgcmV0dXJuIGZpbHRlckZuID8gbGlzdC5maWx0ZXIoZmlsdGVyRm4pIDogbGlzdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBlcmZvcm1zIGEgZ2xvYmFsIHNlYXJjaCBhY3Jvc3MgYWxsIG1ldGFkYXRhIGZvciBhIGdpdmVuIHNlYXJjaCB0ZXJtLlxyXG4gICAqIFlvdSBjYW4gbmFycm93IHRoZSBzZWFyY2ggYnkgcHJvdmlkaW5nIGEgbGlzdCBvZiBlbnRpdHkgdHlwZXMgdG8gc2VhcmNoIHdpdGhpbi5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGVybSAtIFRoZSBzZWFyY2ggdGVybSB0byBzZWFyY2ggZm9yLlxyXG4gICAqIEBwYXJhbSB7TWV0YWRhdGFFbnRpdHlUeXBlW119IGVudGl0eVR5cGVzIC0gVGhlIGxpc3Qgb2YgZW50aXR5IHR5cGVzIHRvIHNlYXJjaCB3aXRoaW4uIElmIG9taXR0ZWQsIGFsbCBlbnRpdHkgdHlwZXMgYXJlIHNlYXJjaGVkLlxyXG4gICAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCBhbnlbXT59IC0gQSBkaWN0aW9uYXJ5IHdpdGggcmVzdWx0cyBncm91cGVkIGJ5IGVudGl0eSB0eXBlLlxyXG4gICAqL1xyXG4gIHNlYXJjaE1ldGFkYXRhKHRlcm06IHN0cmluZywgZW50aXR5VHlwZXM/OiBNZXRhZGF0YUVudGl0eVR5cGVbXSk6IFJlY29yZDxzdHJpbmcsIGFueVtdPiB7XHJcbiAgICBjb25zdCBzZWFyY2hUZXJtID0gdGVybS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBhbnlbXT4gPSB7fTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEhlbHBlciBmdW5jdGlvbiB0byBkZXRlcm1pbmUgaWYgYSBnaXZlbiBlbnRpdHkgdHlwZSBzaG91bGQgYmUgc2VhcmNoZWQuXHJcbiAgICAgKiBAcGFyYW0ge01ldGFkYXRhRW50aXR5VHlwZX0gdHlwZSAtIFRoZSBlbnRpdHkgdHlwZSB0byBjaGVjay5cclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSAtIFdoZXRoZXIgdGhlIGVudGl0eSB0eXBlIHNob3VsZCBiZSBzZWFyY2hlZC5cclxuICAgICAqL1xyXG4gICAgY29uc3Qgc2hvdWxkU2VhcmNoID0gKHR5cGU6IE1ldGFkYXRhRW50aXR5VHlwZSkgPT4gIWVudGl0eVR5cGVzIHx8IGVudGl0eVR5cGVzLmluY2x1ZGVzKHR5cGUpO1xyXG5cclxuICAgIGlmIChzaG91bGRTZWFyY2goTWV0YWRhdGFFbnRpdHlUeXBlLkFQUF9PQkpFQ1RTKSkge1xyXG4gICAgICAvLyBTZWFyY2ggZm9yIGFwcCBvYmplY3RzIGJ5IElELCBPYmplY3ROYW1lLCBEaXNwbGF5TmFtZSwgb3IgU3lzdGVtREJUYWJsZU5hbWVcclxuICAgICAgcmVzdWx0W01ldGFkYXRhRW50aXR5VHlwZS5BUFBfT0JKRUNUU10gPSB0aGlzLmdldEFsbEFwcE9iamVjdHMob2JqID0+XHJcbiAgICAgICAgW29iaj8uSUQsIG9iaj8uT2JqZWN0TmFtZSwgb2JqPy5EaXNwbGF5TmFtZSwgb2JqPy5TeXN0ZW1EQlRhYmxlTmFtZV1cclxuICAgICAgICAgIC5zb21lKHZhbCA9PiB2YWwgPT09IHNlYXJjaFRlcm0gfHwgdmFsPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0pKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzaG91bGRTZWFyY2goTWV0YWRhdGFFbnRpdHlUeXBlLkFQUF9GSUVMRFMpKSB7XHJcbiAgICAgIC8vIFNlYXJjaCBmb3IgYXBwIGZpZWxkcyBieSB1c2luZyB0aGUgc2VhcmNoIG1ldGhvZFxyXG4gICAgICByZXN1bHRbTWV0YWRhdGFFbnRpdHlUeXBlLkFQUF9GSUVMRFNdID0gdGhpcy5nZXRBbGxGaWVsZHMoZmllbGQgPT4gZmllbGQuc2VhcmNoKHNlYXJjaFRlcm0pKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2hvdWxkU2VhcmNoKE1ldGFkYXRhRW50aXR5VHlwZS5EQVRBX1NPVVJDRV9RVUVSSUVTKSkge1xyXG4gICAgICAvLyBTZWFyY2ggZm9yIGRhdGEgc291cmNlIHF1ZXJpZXMgYnkgdXNpbmcgdGhlIHNlYXJjaCBtZXRob2RcclxuICAgICAgcmVzdWx0W01ldGFkYXRhRW50aXR5VHlwZS5EQVRBX1NPVVJDRV9RVUVSSUVTXSA9IHRoaXMuZ2V0QWxsRGF0YVNvdXJjZVF1ZXJpZXMoZHNxID0+IGRzcS5zZWFyY2goc2VhcmNoVGVybSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzaG91bGRTZWFyY2goTWV0YWRhdGFFbnRpdHlUeXBlLkFQUF9TQ1JFRU5TKSkge1xyXG4gICAgICAvLyBTZWFyY2ggZm9yIGFwcCBzY3JlZW5zIGJ5IHVzaW5nIHRoZSBzZWFyY2ggbWV0aG9kXHJcbiAgICAgIHJlc3VsdFtNZXRhZGF0YUVudGl0eVR5cGUuQVBQX1NDUkVFTlNdID0gdGhpcy5nZXRBbGxBcHBTY3JlZW5zKHNjcmVlbiA9PiBzY3JlZW4uc2VhcmNoKHNlYXJjaFRlcm0pKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGFuIGFwcCBtZW51IGJ5IGl0cyBJRCBvciBuYW1lLlxyXG4gICAqIFNlYXJjaGVzIHRocm91Z2ggYWxsIGFwcCBtZW51cyBhbmQgcmV0dXJucyB0aGUgZmlyc3QgbWF0Y2guXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVPcklkIC0gVGhlIElEIG9yIG5hbWUgb2YgdGhlIGFwcCBtZW51IHRvIHJldHJpZXZlLlxyXG4gICAqIEByZXR1cm5zIHtBcHBNZW51TW9kZWwgfCBudWxsfSAtIFRoZSBhcHAgbWVudSBtb2RlbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIG51bGwuXHJcbiAgICovXHJcbiAgZ2V0QXBwTWVudUJ5SWRPck5hbWUobmFtZU9ySWQ6IHN0cmluZyk6IEFwcE1lbnVNb2RlbCB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0RnJvbU1hcE9yQ3JlYXRlKFxyXG4gICAgICB0aGlzLmFwcE1lbnVNYXAsXHJcbiAgICAgIG5hbWVPcklkLFxyXG4gICAgICBDb21tb24udGFiSnNvbi5NZW51cyxcclxuICAgICAgLy8gU2VhcmNoIGZvciB0aGUgYXBwIG1lbnUgYnkgSUQgb3IgbmFtZVxyXG4gICAgICBtZW51ID0+IG1lbnU/LklkPy50b0xvd2VyQ2FzZSgpID09PSBuYW1lT3JJZD8udG9Mb3dlckNhc2UoKSB8fCBtZW51Py5NZW51TmFtZSA9PT0gbmFtZU9ySWQsXHJcbiAgICAgIC8vIENyZWF0ZSBhIG5ldyBBcHBNZW51TW9kZWwgaWYgdGhlIGFwcCBtZW51IGlzIGZvdW5kXHJcbiAgICAgIG1lbnUgPT4gbmV3IEFwcE1lbnVNb2RlbChtZW51KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhIGxpc3Qgb2YgYWxsIGFwcCBtZW51cy5cclxuICAgKiBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgaXQgaXMgYXBwbGllZCB0byB0aGUgbGlzdCBvZiBhcHAgbWVudXMuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZmlsdGVyRm4gLSBUaGUgZmlsdGVyIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBhcHAgbWVudXMuXHJcbiAgICogQHJldHVybnMge0FwcE1lbnVNb2RlbFtdfSAtIFRoZSBsaXN0IG9mIGFwcCBtZW51cy5cclxuICAgKi9cclxuICBnZXRBbGxBcHBNZW51cyhmaWx0ZXJGbj86IChtZW51OiBBcHBNZW51TW9kZWwpID0+IGJvb2xlYW4pOiBBcHBNZW51TW9kZWxbXSB7XHJcbiAgICAvLyBJbml0aWFsaXplIHRoZSBsaXN0IG9mIGFwcCBzY3JlZW5zIGxhemlseS5cclxuICAgIGNvbnN0IGxpc3QgPSB0aGlzLmxhenlJbml0TGlzdChcclxuICAgICAgdGhpcy5hbGxBcHBNZW51cyxcclxuICAgICAgdmFsID0+ICh0aGlzLmFsbEFwcE1lbnVzID0gdmFsKSxcclxuICAgICAgQ29tbW9uLnRhYkpzb24uTWVudXMsXHJcbiAgICAgIHRoaXMuYXBwTWVudU1hcCxcclxuICAgICAgKG06IGFueSkgPT4gW20/LklkPy50b0xvd2VyQ2FzZSgpLCBtPy5OYW1lXSxcclxuICAgICAgcyA9PiBuZXcgQXBwTWVudU1vZGVsKHMpXHJcbiAgICApO1xyXG5cclxuICAgIC8vIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBhcHBseSBpdCB0byB0aGUgbGlzdCBvZiBhcHAgc2NyZWVucy5cclxuICAgIHJldHVybiBmaWx0ZXJGbiA/IGxpc3QuZmlsdGVyKGZpbHRlckZuKSA6IGxpc3Q7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhcnMgYWxsIGNhY2hlZCBtZXRhZGF0YSBzYWZlbHkuXHJcbiAgICogVGhpcyBzaG91bGQgYmUgY2FsbGVkIG9uIGNvbnRleHQgY2hhbmdlcyAoZS5nLiwgd2hlbiBhcHAsIG9yZywgb3Igc2Vzc2lvbiBjaGFuZ2VzKS5cclxuICAgKi9cclxuICBjbGVhckNhY2hlKCk6IHZvaWQge1xyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gQ2xlYXIgbWFwc1xyXG4gICAgICB0aGlzLmFwcE9iamVjdE1hcC5jbGVhcigpO1xyXG4gICAgICB0aGlzLmFwcFNjcmVlbk1hcC5jbGVhcigpO1xyXG4gICAgICB0aGlzLm9yZ0luZm9NYXAuY2xlYXIoKTtcclxuICAgICAgdGhpcy5hcHBNZW51TWFwLmNsZWFyKCk7XHJcblxyXG4gICAgICAvLyBSZXNldCBsaXN0c1xyXG4gICAgICB0aGlzLmFsbEFwcE9iamVjdHMgPSBudWxsO1xyXG4gICAgICB0aGlzLmFsbEFwcFNjcmVlbnMgPSBudWxsO1xyXG4gICAgICB0aGlzLmFsbE9yZ0luZm9zID0gbnVsbDtcclxuICAgICAgdGhpcy5hbGxBcHBNZW51cyA9IG51bGw7XHJcblxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS53YXJuKCdNZXRhZGF0YUhlbHBlciBGYWlsZWQgdG8gY2xlYXIgY2FjaGU6JywgZXJyb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn0iXX0=
|
|
301
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS1kYXRhLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vbWV0YS1kYXRhLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUcvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFHckUsTUFBTSxPQUFPLGNBQWM7SUFEM0I7UUFFVSxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBQ3hELGtCQUFhLEdBQTRCLElBQUksQ0FBQztRQUU5QyxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBQ3hELGtCQUFhLEdBQTRCLElBQUksQ0FBQztRQUU5QyxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQStCLENBQUM7UUFDcEQsZ0JBQVcsR0FBMEIsSUFBSSxDQUFDO1FBRTFDLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBK0IsQ0FBQztRQUNwRCxnQkFBVyxHQUEwQixJQUFJLENBQUM7UUFFakMs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LEVBQUUsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FDekIsQ0FBQztRQUVGLHNFQUFzRTtRQUN0RSxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pELENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVO1FBQ1IsSUFBSSxDQUFDO1lBQ0gsYUFBYTtZQUNiLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFeEIsY0FBYztZQUNkLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBRTFCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvRCxDQUFDO0lBQ0gsQ0FBQzsrRUEvWFUsY0FBYzt1RUFBZCxjQUFjLFdBQWQsY0FBYyxtQkFERCxNQUFNOztpRkFDbkIsY0FBYztjQUQxQixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbiB9IGZyb20gXCIuLi8uLi9jb25zdGFudHMvY29tbW9uXCI7XG5pbXBvcnQgeyBBcHBPYmplY3RNb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvYXBwLW9iamVjdC5tb2RlbFwiO1xuaW1wb3J0IHsgQXBwRmllbGRNb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvYXBwLWZpZWxkLm1vZGVsXCI7XG5pbXBvcnQgeyBEYXRhU291cmNlUXVlcnlNb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvZGF0YS1zb3VyY2UtcXVlcnkubW9kZWxcIjtcbmltcG9ydCB7IE1ldGFkYXRhRW50aXR5VHlwZSB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL3NjaGVtYS5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IEFwcFNjcmVlbk1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy9hcHAtc2NyZWVuLm1vZGVsXCI7XG5pbXBvcnQgeyBPcmdJbmZvTW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL29yZ0luZm8ubW9kZWxcIjtcbmltcG9ydCB7IEFwcE1lbnVNb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvYXBwLW1lbnUubW9kZWxcIjtcbmltcG9ydCB7IFNlc3Npb25TdG9yYWdlU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9hdXRoL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBTdG9yYWdlQ29uc3RhbnRzIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50cy9zdG9yYWdlLWNvbnN0YW50c1wiO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE1ldGFkYXRhSGVscGVyIHtcbiAgcHJpdmF0ZSBhcHBPYmplY3RNYXAgPSBuZXcgTWFwPHN0cmluZywgQXBwT2JqZWN0TW9kZWwgfCBudWxsPigpO1xuICBwcml2YXRlIGFsbEFwcE9iamVjdHM6IEFwcE9iamVjdE1vZGVsW10gfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIGFwcFNjcmVlbk1hcCA9IG5ldyBNYXA8c3RyaW5nLCBBcHBTY3JlZW5Nb2RlbCB8IG51bGw+KCk7XG4gIHByaXZhdGUgYWxsQXBwU2NyZWVuczogQXBwU2NyZWVuTW9kZWxbXSB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgb3JnSW5mb01hcCA9IG5ldyBNYXA8c3RyaW5nLCBPcmdJbmZvTW9kZWwgfCBudWxsPigpO1xuICBwcml2YXRlIGFsbE9yZ0luZm9zOiBPcmdJbmZvTW9kZWxbXSB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgYXBwTWVudU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBBcHBNZW51TW9kZWwgfCBudWxsPigpO1xuICBwcml2YXRlIGFsbEFwcE1lbnVzOiBBcHBNZW51TW9kZWxbXSB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgPSBpbmplY3QoU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlKTtcblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byBnZXQgY3VycmVudCBhcHAgSUQgZnJvbSBzZXNzaW9uXG4gICAqIEByZXR1cm5zIEN1cnJlbnQgYXBwIElEIG9yIG51bGwgaWYgbm90IGF2YWlsYWJsZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRDdXJyZW50QXBwSWQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGFwcEluZm8gPSB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRTZXNzaW9uU3RvcmFnZShTdG9yYWdlQ29uc3RhbnRzLmFwcEluZm8pO1xuICAgICAgY29uc3QgcGFyc2VkQXBwSW5mbyA9IGFwcEluZm8gPyBKU09OLnBhcnNlKGFwcEluZm8pIDogbnVsbDtcbiAgICAgIHJldHVybiBwYXJzZWRBcHBJbmZvPy5JZCB8fCBudWxsO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBnZXQgY3VycmVudCBhcHAgSUQgZnJvbSBzZXNzaW9uOicsIGVycm9yKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGtleSBmcm9tIHRoZSBnaXZlbiBtYXAuXG4gICAqIElmIHRoZSBrZXkgZG9lcyBub3QgZXhpc3QgaW4gdGhlIG1hcCwgYW5kIHRoZSBzb3VyY2UgbGlzdCBjb250YWlucyBhbiBpdGVtIHRoYXQgbWF0Y2hlc1xuICAgKiB0aGUgZ2l2ZW4gY29uZGl0aW9uLCBpdCBjcmVhdGVzIGEgbmV3IG1vZGVsIHVzaW5nIHRoZSBnaXZlbiBtb2RlbCBmYWN0b3J5IGFuZCBhZGRzIGl0IHRvIHRoZSBtYXAuXG4gICAqIEBwYXJhbSBtYXAgVGhlIG1hcCB0byBzZWFyY2ggaW4uXG4gICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0gc291cmNlTGlzdCBUaGUgbGlzdCBvZiBpdGVtcyB0byBzZWFyY2ggaW4uXG4gICAqIEBwYXJhbSBtYXRjaEZuIFRoZSBjb25kaXRpb24gdG8gbWF0Y2guXG4gICAqIEBwYXJhbSBtb2RlbEZhY3RvcnkgVGhlIGZhY3RvcnkgdG8gY3JlYXRlIGEgbmV3IG1vZGVsIGlmIHRoZSBrZXkgZG9lcyBub3QgZXhpc3QuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGtleSwgb3IgbnVsbCBpZiBubyBtYXRjaCBpcyBmb3VuZC5cbiAgICovXG4gIHByaXZhdGUgZ2V0RnJvbU1hcE9yQ3JlYXRlPFQ+KFxuICAgIG1hcDogTWFwPHN0cmluZywgVCB8IG51bGw+LFxuICAgIGtleTogc3RyaW5nLFxuICAgIHNvdXJjZUxpc3Q6IFRbXSxcbiAgICBtYXRjaEZuOiAoaXRlbTogVCkgPT4gYm9vbGVhbixcbiAgICBtb2RlbEZhY3Rvcnk6IChpdGVtOiBUKSA9PiBUXG4gICk6IFQgfCBudWxsIHtcbiAgICBpZiAoIWtleSkgcmV0dXJuIG51bGw7XG4gICAgaWYgKG1hcC5oYXMoa2V5KSkgcmV0dXJuIG1hcC5nZXQoa2V5KSB8fCBudWxsO1xuXG4gICAgY29uc3QgaXRlbSA9IHNvdXJjZUxpc3QuZmluZChtYXRjaEZuKTtcbiAgICBjb25zdCBtb2RlbCA9IGl0ZW0gPyBtb2RlbEZhY3RvcnkoaXRlbSkgOiBudWxsO1xuICAgIG1hcC5zZXQoa2V5LCBtb2RlbCk7XG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgLyoqXG4gICAqIExhemlseSBpbml0aWFsaXplcyBhIGxpc3Qgb2YgbW9kZWxzIGZyb20gYSBzb3VyY2UgbGlzdC5cbiAgICogSXQgY3JlYXRlcyBhIG5ldyBtb2RlbCBmb3IgZWFjaCBpdGVtIGluIHRoZSBzb3VyY2UgbGlzdCBhbmQgYWRkcyBpdCB0byB0aGUgZ2l2ZW4gbWFwLlxuICAgKiBJdCBhbHNvIHNldHMgdGhlIGxpc3Qgb2YgbW9kZWxzIHRvIHRoZSBnaXZlbiBzZXR0ZXIuXG4gICAqIEBwYXJhbSBsaXN0UmVmIFRoZSByZWZlcmVuY2UgdG8gdGhlIGxpc3Qgb2YgbW9kZWxzLlxuICAgKiBAcGFyYW0gc2V0dGVyIFRoZSBzZXR0ZXIgdG8gc2V0IHRoZSBsaXN0IG9mIG1vZGVscy5cbiAgICogQHBhcmFtIHNvdXJjZUxpc3QgVGhlIHNvdXJjZSBsaXN0IG9mIGl0ZW1zLlxuICAgKiBAcGFyYW0gbWFwIFRoZSBtYXAgdG8gc3RvcmUgdGhlIG1vZGVscy5cbiAgICogQHBhcmFtIGdldEtleXMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBmb3IgdGhlIGdpdmVuIGl0ZW0uXG4gICAqIEBwYXJhbSBtb2RlbEZhY3RvcnkgVGhlIGZhY3RvcnkgdG8gY3JlYXRlIGEgbmV3IG1vZGVsIGZvciB0aGUgZ2l2ZW4gaXRlbS5cbiAgICogQHJldHVybnMgVGhlIGxpc3Qgb2YgbW9kZWxzLlxuICAgKi9cbiAgcHJpdmF0ZSBsYXp5SW5pdExpc3Q8VCwgTT4oXG4gICAgbGlzdFJlZjogTVtdIHwgbnVsbCxcbiAgICBzZXR0ZXI6IChsaXN0OiBNW10pID0+IHZvaWQsXG4gICAgc291cmNlTGlzdDogVFtdLFxuICAgIG1hcDogTWFwPHN0cmluZywgTSB8IG51bGw+LFxuICAgIGdldEtleXM6IChpdGVtOiBUKSA9PiBzdHJpbmdbXSxcbiAgICBtb2RlbEZhY3Rvcnk6IChpdGVtOiBUKSA9PiBNXG4gICk6IE1bXSB7XG4gICAgLy8gSWYgdGhlIGxpc3QgaXMgYWxyZWFkeSBpbml0aWFsaXplZCwgcmV0dXJuIGl0LlxuICAgIGlmIChsaXN0UmVmKSByZXR1cm4gbGlzdFJlZjtcblxuICAgIC8vIENyZWF0ZSBhIG5ldyBtb2RlbCBmb3IgZWFjaCBpdGVtIGluIHRoZSBzb3VyY2UgbGlzdCBhbmQgYWRkIGl0IHRvIHRoZSBtYXAuXG4gICAgY29uc3QgbW9kZWxzID0gc291cmNlTGlzdC5tYXAoKGl0ZW06IFQpID0+IHtcbiAgICAgIGNvbnN0IG1vZGVsID0gbW9kZWxGYWN0b3J5KGl0ZW0pO1xuICAgICAgZ2V0S2V5cyhpdGVtKS5mb3JFYWNoKGtleSA9PiBtYXAuc2V0KGtleSwgbW9kZWwpKTtcbiAgICAgIHJldHVybiBtb2RlbDtcbiAgICB9KTtcblxuICAgIC8vIFNldCB0aGUgbGlzdCBvZiBtb2RlbHMgdG8gdGhlIGdpdmVuIHNldHRlci5cbiAgICBzZXR0ZXIobW9kZWxzKTtcblxuICAgIC8vIFJldHVybiB0aGUgbGlzdCBvZiBtb2RlbHMuXG4gICAgcmV0dXJuIG1vZGVscztcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyBhbiBhcHAgb2JqZWN0IGluIHRoZSBtYXAgYnkgaXRzIG5hbWUgb3IgaWQuXG4gICAqIElmIHRoZSBhcHAgb2JqZWN0IGlzIG5vdCBmb3VuZCwgaXQgY3JlYXRlcyBhIG5ldyBvbmUgYW5kIGFkZHMgaXQgdG8gdGhlIG1hcC5cbiAgICogQHBhcmFtIG5hbWVPcklkIFRoZSBuYW1lIG9yIGlkIG9mIHRoZSBhcHAgb2JqZWN0IHRvIGZpbmQuXG4gICAqIEByZXR1cm5zIFRoZSBhcHAgb2JqZWN0IGlmIGZvdW5kLCBvciBudWxsIGlmIG5vdCBmb3VuZC5cbiAgICovXG4gIGdldEFwcE9iamVjdEJ5SWRPck5hbWUobmFtZU9ySWQ6IHN0cmluZyk6IEFwcE9iamVjdE1vZGVsIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RnJvbU1hcE9yQ3JlYXRlKFxuICAgICAgdGhpcy5hcHBPYmplY3RNYXAsXG4gICAgICBuYW1lT3JJZCxcbiAgICAgIENvbW1vbi50YWJKc29uLkFwcE9iamVjdHMsXG4gICAgICBvYmogPT4gb2JqLk9iamVjdE5hbWUgPT09IG5hbWVPcklkIHx8IG9iai5JRD8udG9Mb3dlckNhc2UoKSA9PT0gbmFtZU9ySWQ/LnRvTG93ZXJDYXNlKCksXG4gICAgICBvYmogPT4gbmV3IEFwcE9iamVjdE1vZGVsKG9iaiwgdGhpcylcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIGFwcCBvYmplY3RzIGluIHRoZSBtZXRhZGF0YS5cbiAgICogSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGl0IGlzIGFwcGxpZWQgdG8gZWFjaCBhcHAgb2JqZWN0LlxuICAgKiBAcGFyYW0gZmlsdGVyRm4gVGhlIGZpbHRlciBmdW5jdGlvbiB0byBhcHBseSB0byB0aGUgYXBwIG9iamVjdHMuXG4gICAqIEByZXR1cm5zIFRoZSBsaXN0IG9mIGFwcCBvYmplY3RzLlxuICAgKi9cbiAgZ2V0QWxsQXBwT2JqZWN0cyhmaWx0ZXJGbj86IChvYmo6IEFwcE9iamVjdE1vZGVsKSA9PiBib29sZWFuLCBpbmNsdWRlU3lzdGVtRGF0YSA9IGZhbHNlKTogQXBwT2JqZWN0TW9kZWxbXSB7XG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgbGlzdCBvZiBhcHAgb2JqZWN0cyBsYXppbHkuXG4gICAgY29uc3QgbGlzdCA9IHRoaXMubGF6eUluaXRMaXN0KFxuICAgICAgdGhpcy5hbGxBcHBPYmplY3RzLFxuICAgICAgdmFsID0+ICh0aGlzLmFsbEFwcE9iamVjdHMgPSB2YWwpLFxuICAgICAgQ29tbW9uLnRhYkpzb24uQXBwT2JqZWN0cyxcbiAgICAgIHRoaXMuYXBwT2JqZWN0TWFwLFxuICAgICAgKG9iajogYW55KSA9PiBbb2JqLklEPy50b0xvd2VyQ2FzZSgpLCBvYmouT2JqZWN0TmFtZV0sXG4gICAgICBvYmogPT4gbmV3IEFwcE9iamVjdE1vZGVsKG9iaiwgdGhpcylcbiAgICApO1xuXG4gICAgbGV0IGZpbHRlcmVkTGlzdDogQXBwT2JqZWN0TW9kZWxbXSA9IGxpc3Q7XG4gICAgaWYgKCFpbmNsdWRlU3lzdGVtRGF0YSkge1xuICAgICAgY29uc3QgY3VycmVudEFwcElkID0gdGhpcy5nZXRDdXJyZW50QXBwSWQoKT8udG9Mb3dlckNhc2UoKTtcbiAgICAgIGZpbHRlcmVkTGlzdCA9IGxpc3QuZmlsdGVyKG9iaiA9PlxuICAgICAgICAhb2JqLkFwcElkIHx8ICAgICAgICAgICAgICAgICAgICAvLyBHbG9iYWwgZGF0YSAoYXBwID0gbnVsbClcbiAgICAgICAgb2JqLkFwcElkID09PSBjdXJyZW50QXBwSWQgICAgICAgLy8gQ3VycmVudCBhcHAgZGF0YVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgYXBwbHkgaXQgdG8gdGhlIGxpc3Qgb2YgYXBwIG9iamVjdHMuXG4gICAgcmV0dXJuIGZpbHRlckZuID8gZmlsdGVyZWRMaXN0LmZpbHRlcihmaWx0ZXJGbikgOiBmaWx0ZXJlZExpc3Q7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgZmllbGRzIGluIHRoZSBtZXRhZGF0YS5cbiAgICogSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGl0IGlzIGFwcGxpZWQgdG8gZWFjaCBmaWVsZC5cbiAgICogQHBhcmFtIGZpbHRlckZuIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGZpZWxkcy5cbiAgICogQHJldHVybnMgVGhlIGxpc3Qgb2YgZmllbGRzLlxuICAgKi9cbiAgZ2V0QWxsRmllbGRzKGZpbHRlckZuPzogKGZpZWxkOiBBcHBGaWVsZE1vZGVsKSA9PiBib29sZWFuLCBpbmNsdWRlU3lzdGVtRGF0YSA9IGZhbHNlKTogQXBwRmllbGRNb2RlbFtdIHtcbiAgICAvLyBHZXQgYSBsaXN0IG9mIGFsbCBmaWVsZHMgZnJvbSBhbGwgYXBwIG9iamVjdHMuXG4gICAgY29uc3QgYWxsRmllbGRzID0gdGhpcy5nZXRBbGxBcHBPYmplY3RzKHVuZGVmaW5lZCwgaW5jbHVkZVN5c3RlbURhdGEpLmZsYXRNYXAob2JqID0+IG9iai5maWVsZHMoKSk7XG5cbiAgICAvLyBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgYXBwbHkgaXQgdG8gdGhlIGxpc3Qgb2YgZmllbGRzLlxuICAgIHJldHVybiBmaWx0ZXJGbiA/IGFsbEZpZWxkcy5maWx0ZXIoZmlsdGVyRm4pIDogYWxsRmllbGRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIGEgZmllbGQgYnkgaXRzIElEIGFjcm9zcyBhbGwgYXBwIG9iamVjdHNcbiAgICogQHBhcmFtIGZpZWxkSWQgVGhlIElEIG9mIHRoZSBmaWVsZCB0byBmaW5kXG4gICAqIEByZXR1cm5zIFRoZSBmaWVsZCBpZiBmb3VuZCwgb3IgbnVsbCBpZiBub3QgZm91bmRcbiAgICovXG4gIGdldEZpZWxkQnlJZE9yTmFtZShuYW1lT3JJZDogc3RyaW5nKTogQXBwRmllbGRNb2RlbCB8IG51bGwge1xuICAgIGlmICghbmFtZU9ySWQpIHJldHVybiBudWxsO1xuICAgIHJldHVybiB0aGlzLmdldEFsbEZpZWxkcyhmaWVsZCA9PlxuICAgICAgZmllbGQuSUQ/LnRvTG93ZXJDYXNlKCkgPT09IG5hbWVPcklkPy50b0xvd2VyQ2FzZSgpIHx8XG4gICAgICBmaWVsZC5GaWVsZE5hbWUgPT09IG5hbWVPcklkLFxuICAgICAgdHJ1ZVxuICAgIClbMF0gfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBkYXRhIHNvdXJjZSBxdWVyaWVzIGluIHRoZSBtZXRhZGF0YS5cbiAgICogSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGl0IGlzIGFwcGxpZWQgdG8gZWFjaCBkYXRhIHNvdXJjZSBxdWVyeS5cbiAgICogQHBhcmFtIGZpbHRlckZuIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGRhdGEgc291cmNlIHF1ZXJpZXMuXG4gICAqIEByZXR1cm5zIFRoZSBsaXN0IG9mIGRhdGEgc291cmNlIHF1ZXJpZXMuXG4gICAqL1xuICBnZXRBbGxEYXRhU291cmNlUXVlcmllcyhmaWx0ZXJGbj86IChkc3E6IERhdGFTb3VyY2VRdWVyeU1vZGVsKSA9PiBib29sZWFuLCBpbmNsdWRlU3lzdGVtRGF0YSA9IGZhbHNlKTogRGF0YVNvdXJjZVF1ZXJ5TW9kZWxbXSB7XG4gICAgLy8gR2V0IGEgbGlzdCBvZiBhbGwgZGF0YSBzb3VyY2UgcXVlcmllcyBmcm9tIGFsbCBhcHAgb2JqZWN0cy5cbiAgICBjb25zdCBhbGxEU1FzID0gdGhpcy5nZXRBbGxBcHBPYmplY3RzKHVuZGVmaW5lZCwgaW5jbHVkZVN5c3RlbURhdGEpLmZsYXRNYXAob2JqID0+IG9iai5kYXRhU291cmNlUXVlcmllcygpKTtcblxuICAgIC8vIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBhcHBseSBpdCB0byB0aGUgbGlzdCBvZiBkYXRhIHNvdXJjZSBxdWVyaWVzLlxuICAgIHJldHVybiBmaWx0ZXJGbiA/IGFsbERTUXMuZmlsdGVyKGZpbHRlckZuKSA6IGFsbERTUXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGEgZGF0YSBzb3VyY2UgcXVlcnkgYnkgaXRzIElELCBRdWVyeU5hbWUsIG9yIERpc3BsYXlOYW1lLlxuICAgKiBTZWFyY2hlcyB0aHJvdWdoIGFsbCBkYXRhIHNvdXJjZSBxdWVyaWVzIGFuZCByZXR1cm5zIHRoZSBmaXJzdCBtYXRjaC5cbiAgICogXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lT3JJZCAtIFRoZSBJRCwgUXVlcnlOYW1lLCBvciBEaXNwbGF5TmFtZSBvZiB0aGUgZGF0YSBzb3VyY2UgcXVlcnkgdG8gcmV0cmlldmUuXG4gICAqIEByZXR1cm5zIHtEYXRhU291cmNlUXVlcnlNb2RlbCB8IG51bGx9IC0gVGhlIGRhdGEgc291cmNlIHF1ZXJ5IG1vZGVsIGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbC5cbiAgICovXG4gIGdldERhdGFTb3VyY2VRdWVyeUJ5SWRPck5hbWUobmFtZU9ySWQ6IHN0cmluZyk6IERhdGFTb3VyY2VRdWVyeU1vZGVsIHwgbnVsbCB7XG4gICAgLy8gU2VhcmNoIGZvciB0aGUgZGF0YSBzb3VyY2UgcXVlcnkgYnkgSUQsIFF1ZXJ5TmFtZSwgb3IgRGlzcGxheU5hbWVcbiAgICByZXR1cm4gdGhpcy5nZXRBbGxEYXRhU291cmNlUXVlcmllcyh1bmRlZmluZWQsIHRydWUpLmZpbmQoXG4gICAgICBkc3EgPT4gZHNxPy5JRD8udG9Mb3dlckNhc2UoKSA9PT0gbmFtZU9ySWQ/LnRvTG93ZXJDYXNlKCkgfHwgZHNxPy5RdWVyeU5hbWUgPT09IG5hbWVPcklkIHx8IGRzcT8uRGlzcGxheU5hbWUgPT09IG5hbWVPcklkXG4gICAgKSB8fCBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhbiBhcHAgc2NyZWVuIGJ5IGl0cyBJRCwgTmFtZSwgb3IgRGlzcGxheU5hbWUuXG4gICAqIFNlYXJjaGVzIHRocm91Z2ggYWxsIGFwcCBzY3JlZW5zIGFuZCByZXR1cm5zIHRoZSBmaXJzdCBtYXRjaC5cbiAgICogXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lT3JJZCAtIFRoZSBJRCwgTmFtZSwgb3IgRGlzcGxheU5hbWUgb2YgdGhlIGFwcCBzY3JlZW4gdG8gcmV0cmlldmUuXG4gICAqIEByZXR1cm5zIHtBcHBTY3JlZW5Nb2RlbCB8IG51bGx9IC0gVGhlIGFwcCBzY3JlZW4gbW9kZWwgaWYgZm91bmQsIG90aGVyd2lzZSBudWxsLlxuICAgKi9cbiAgZ2V0QXBwU2NyZWVuQnlJZE9yTmFtZShuYW1lT3JJZDogc3RyaW5nKTogQXBwU2NyZWVuTW9kZWwgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGcm9tTWFwT3JDcmVhdGUoXG4gICAgICB0aGlzLmFwcFNjcmVlbk1hcCxcbiAgICAgIG5hbWVPcklkLFxuICAgICAgQ29tbW9uLnRhYkpzb24uQXBwU2NyZWVucyxcbiAgICAgIHNjcmVlbiA9PiBzY3JlZW4/LklEPy50b0xvd2VyQ2FzZSgpID09PSBuYW1lT3JJZD8udG9Mb3dlckNhc2UoKSB8fCBzY3JlZW4/Lk5hbWUgPT09IG5hbWVPcklkLFxuICAgICAgc2NyZWVuID0+IG5ldyBBcHBTY3JlZW5Nb2RlbChzY3JlZW4pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIGFsbCBhcHAgc2NyZWVucy5cbiAgICogSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGl0IGlzIGFwcGxpZWQgdG8gdGhlIGxpc3Qgb2YgYXBwIHNjcmVlbnMuXG4gICAqIFxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBmaWx0ZXJGbiAtIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGFwcCBzY3JlZW5zLlxuICAgKiBAcmV0dXJucyB7QXBwU2NyZWVuTW9kZWxbXX0gLSBUaGUgbGlzdCBvZiBhcHAgc2NyZWVucy5cbiAgICovXG4gIGdldEFsbEFwcFNjcmVlbnMoZmlsdGVyRm4/OiAoc2NyZWVuOiBBcHBTY3JlZW5Nb2RlbCkgPT4gYm9vbGVhbik6IEFwcFNjcmVlbk1vZGVsW10ge1xuICAgIC8vIEluaXRpYWxpemUgdGhlIGxpc3Qgb2YgYXBwIHNjcmVlbnMgbGF6aWx5LlxuICAgIGNvbnN0IGxpc3QgPSB0aGlzLmxhenlJbml0TGlzdChcbiAgICAgIHRoaXMuYWxsQXBwU2NyZWVucyxcbiAgICAgIHZhbCA9PiAodGhpcy5hbGxBcHBTY3JlZW5zID0gdmFsKSxcbiAgICAgIENvbW1vbi50YWJKc29uLkFwcFNjcmVlbnMsXG4gICAgICB0aGlzLmFwcFNjcmVlbk1hcCxcbiAgICAgIChzOiBhbnkpID0+IFtzPy5JRD8udG9Mb3dlckNhc2UoKSwgcz8uTmFtZV0sXG4gICAgICBzID0+IG5ldyBBcHBTY3JlZW5Nb2RlbChzKVxuICAgICk7XG5cbiAgICAvLyBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgYXBwbHkgaXQgdG8gdGhlIGxpc3Qgb2YgYXBwIHNjcmVlbnMuXG4gICAgcmV0dXJuIGZpbHRlckZuID8gbGlzdC5maWx0ZXIoZmlsdGVyRm4pIDogbGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYW4gb3JnYW5pemF0aW9uIGluZm8gYnkgaXRzIElEIG9yIFRlbmFudENvZGUuXG4gICAqIFNlYXJjaGVzIHRocm91Z2ggYWxsIG9yZ2FuaXphdGlvbiBpbmZvIGFuZCByZXR1cm5zIHRoZSBmaXJzdCBtYXRjaC5cbiAgICogXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lT3JUZW5hbnRDb2RlIC0gVGhlIElEIG9yIFRlbmFudENvZGUgb2YgdGhlIG9yZ2FuaXphdGlvbiBpbmZvIHRvIHJldHJpZXZlLlxuICAgKiBAcmV0dXJucyB7T3JnSW5mb01vZGVsIHwgbnVsbH0gLSBUaGUgb3JnYW5pemF0aW9uIGluZm8gbW9kZWwgaWYgZm91bmQsIG90aGVyd2lzZSBudWxsLlxuICAgKi9cbiAgZ2V0T3JnSW5mb0J5SWRPclRlbmFudENvZGUobmFtZU9yVGVuYW50Q29kZTogc3RyaW5nKTogT3JnSW5mb01vZGVsIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RnJvbU1hcE9yQ3JlYXRlKFxuICAgICAgdGhpcy5vcmdJbmZvTWFwLFxuICAgICAgbmFtZU9yVGVuYW50Q29kZSxcbiAgICAgIENvbW1vbi50YWJKc29uLk9yZ0luZm9zLFxuICAgICAgLy8gU2VhcmNoIGZvciB0aGUgb3JnYW5pemF0aW9uIGluZm8gYnkgSUQgb3IgVGVuYW50Q29kZVxuICAgICAgb3JnID0+IG9yZy5JRD8udG9Mb3dlckNhc2UoKSA9PT0gbmFtZU9yVGVuYW50Q29kZT8udG9Mb3dlckNhc2UoKSB8fCBvcmcuVGVuYW50Q29kZSA9PT0gbmFtZU9yVGVuYW50Q29kZSxcbiAgICAgIC8vIENyZWF0ZSBhIG5ldyBPcmdJbmZvTW9kZWwgaWYgdGhlIG9yZ2FuaXphdGlvbiBpbmZvIGlzIGZvdW5kXG4gICAgICBvcmcgPT4gbmV3IE9yZ0luZm9Nb2RlbChvcmcpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIGFsbCBvcmdhbml6YXRpb24gaW5mby5cbiAgICogSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGl0IGlzIGFwcGxpZWQgdG8gdGhlIGxpc3Qgb2Ygb3JnYW5pemF0aW9uIGluZm8uXG4gICAqIFxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBmaWx0ZXJGbiAtIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIG9yZ2FuaXphdGlvbiBpbmZvLlxuICAgKiBAcmV0dXJucyB7T3JnSW5mb01vZGVsW119IC0gVGhlIGxpc3Qgb2Ygb3JnYW5pemF0aW9uIGluZm8uXG4gICAqL1xuICBnZXRBbGxPcmdJbmZvcyhmaWx0ZXJGbj86IChvcmc6IE9yZ0luZm9Nb2RlbCkgPT4gYm9vbGVhbik6IE9yZ0luZm9Nb2RlbFtdIHtcbiAgICAvLyBJbml0aWFsaXplIHRoZSBsaXN0IG9mIG9yZ2FuaXphdGlvbiBpbmZvIGxhemlseS5cbiAgICBjb25zdCBsaXN0ID0gdGhpcy5sYXp5SW5pdExpc3QoXG4gICAgICB0aGlzLmFsbE9yZ0luZm9zLFxuICAgICAgdmFsID0+ICh0aGlzLmFsbE9yZ0luZm9zID0gdmFsKSxcbiAgICAgIENvbW1vbi50YWJKc29uLk9yZ0luZm9zLFxuICAgICAgdGhpcy5vcmdJbmZvTWFwLFxuICAgICAgKG9yZzogYW55KSA9PiBbb3JnPy5JRD8udG9Mb3dlckNhc2UoKSwgb3JnPy5UZW5hbnRDb2RlXSxcbiAgICAgIG9yZyA9PiBuZXcgT3JnSW5mb01vZGVsKG9yZylcbiAgICApO1xuXG4gICAgLy8gSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGFwcGx5IGl0IHRvIHRoZSBsaXN0IG9mIG9yZ2FuaXphdGlvbiBpbmZvLlxuICAgIHJldHVybiBmaWx0ZXJGbiA/IGxpc3QuZmlsdGVyKGZpbHRlckZuKSA6IGxpc3Q7XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybXMgYSBnbG9iYWwgc2VhcmNoIGFjcm9zcyBhbGwgbWV0YWRhdGEgZm9yIGEgZ2l2ZW4gc2VhcmNoIHRlcm0uXG4gICAqIFlvdSBjYW4gbmFycm93IHRoZSBzZWFyY2ggYnkgcHJvdmlkaW5nIGEgbGlzdCBvZiBlbnRpdHkgdHlwZXMgdG8gc2VhcmNoIHdpdGhpbi5cbiAgICogXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXJtIC0gVGhlIHNlYXJjaCB0ZXJtIHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB7TWV0YWRhdGFFbnRpdHlUeXBlW119IGVudGl0eVR5cGVzIC0gVGhlIGxpc3Qgb2YgZW50aXR5IHR5cGVzIHRvIHNlYXJjaCB3aXRoaW4uIElmIG9taXR0ZWQsIGFsbCBlbnRpdHkgdHlwZXMgYXJlIHNlYXJjaGVkLlxuICAgKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgYW55W10+fSAtIEEgZGljdGlvbmFyeSB3aXRoIHJlc3VsdHMgZ3JvdXBlZCBieSBlbnRpdHkgdHlwZS5cbiAgICovXG4gIHNlYXJjaE1ldGFkYXRhKHRlcm06IHN0cmluZywgZW50aXR5VHlwZXM/OiBNZXRhZGF0YUVudGl0eVR5cGVbXSk6IFJlY29yZDxzdHJpbmcsIGFueVtdPiB7XG4gICAgY29uc3Qgc2VhcmNoVGVybSA9IHRlcm0udG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIGFueVtdPiA9IHt9O1xuXG4gICAgLyoqXG4gICAgICogSGVscGVyIGZ1bmN0aW9uIHRvIGRldGVybWluZSBpZiBhIGdpdmVuIGVudGl0eSB0eXBlIHNob3VsZCBiZSBzZWFyY2hlZC5cbiAgICAgKiBAcGFyYW0ge01ldGFkYXRhRW50aXR5VHlwZX0gdHlwZSAtIFRoZSBlbnRpdHkgdHlwZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBXaGV0aGVyIHRoZSBlbnRpdHkgdHlwZSBzaG91bGQgYmUgc2VhcmNoZWQuXG4gICAgICovXG4gICAgY29uc3Qgc2hvdWxkU2VhcmNoID0gKHR5cGU6IE1ldGFkYXRhRW50aXR5VHlwZSkgPT4gIWVudGl0eVR5cGVzIHx8IGVudGl0eVR5cGVzLmluY2x1ZGVzKHR5cGUpO1xuXG4gICAgaWYgKHNob3VsZFNlYXJjaChNZXRhZGF0YUVudGl0eVR5cGUuQVBQX09CSkVDVFMpKSB7XG4gICAgICAvLyBTZWFyY2ggZm9yIGFwcCBvYmplY3RzIGJ5IElELCBPYmplY3ROYW1lLCBEaXNwbGF5TmFtZSwgb3IgU3lzdGVtREJUYWJsZU5hbWVcbiAgICAgIHJlc3VsdFtNZXRhZGF0YUVudGl0eVR5cGUuQVBQX09CSkVDVFNdID0gdGhpcy5nZXRBbGxBcHBPYmplY3RzKG9iaiA9PlxuICAgICAgICBbb2JqPy5JRCwgb2JqPy5PYmplY3ROYW1lLCBvYmo/LkRpc3BsYXlOYW1lLCBvYmo/LlN5c3RlbURCVGFibGVOYW1lXVxuICAgICAgICAgIC5zb21lKHZhbCA9PiB2YWwgPT09IHNlYXJjaFRlcm0gfHwgdmFsPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0pKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoc2hvdWxkU2VhcmNoKE1ldGFkYXRhRW50aXR5VHlwZS5BUFBfRklFTERTKSkge1xuICAgICAgLy8gU2VhcmNoIGZvciBhcHAgZmllbGRzIGJ5IHVzaW5nIHRoZSBzZWFyY2ggbWV0aG9kXG4gICAgICByZXN1bHRbTWV0YWRhdGFFbnRpdHlUeXBlLkFQUF9GSUVMRFNdID0gdGhpcy5nZXRBbGxGaWVsZHMoZmllbGQgPT4gZmllbGQuc2VhcmNoKHNlYXJjaFRlcm0pKTtcbiAgICB9XG5cbiAgICBpZiAoc2hvdWxkU2VhcmNoKE1ldGFkYXRhRW50aXR5VHlwZS5EQVRBX1NPVVJDRV9RVUVSSUVTKSkge1xuICAgICAgLy8gU2VhcmNoIGZvciBkYXRhIHNvdXJjZSBxdWVyaWVzIGJ5IHVzaW5nIHRoZSBzZWFyY2ggbWV0aG9kXG4gICAgICByZXN1bHRbTWV0YWRhdGFFbnRpdHlUeXBlLkRBVEFfU09VUkNFX1FVRVJJRVNdID0gdGhpcy5nZXRBbGxEYXRhU291cmNlUXVlcmllcyhkc3EgPT4gZHNxLnNlYXJjaChzZWFyY2hUZXJtKSk7XG4gICAgfVxuXG4gICAgaWYgKHNob3VsZFNlYXJjaChNZXRhZGF0YUVudGl0eVR5cGUuQVBQX1NDUkVFTlMpKSB7XG4gICAgICAvLyBTZWFyY2ggZm9yIGFwcCBzY3JlZW5zIGJ5IHVzaW5nIHRoZSBzZWFyY2ggbWV0aG9kXG4gICAgICByZXN1bHRbTWV0YWRhdGFFbnRpdHlUeXBlLkFQUF9TQ1JFRU5TXSA9IHRoaXMuZ2V0QWxsQXBwU2NyZWVucyhzY3JlZW4gPT4gc2NyZWVuLnNlYXJjaChzZWFyY2hUZXJtKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYW4gYXBwIG1lbnUgYnkgaXRzIElEIG9yIG5hbWUuXG4gICAqIFNlYXJjaGVzIHRocm91Z2ggYWxsIGFwcCBtZW51cyBhbmQgcmV0dXJucyB0aGUgZmlyc3QgbWF0Y2guXG4gICAqIFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZU9ySWQgLSBUaGUgSUQgb3IgbmFtZSBvZiB0aGUgYXBwIG1lbnUgdG8gcmV0cmlldmUuXG4gICAqIEByZXR1cm5zIHtBcHBNZW51TW9kZWwgfCBudWxsfSAtIFRoZSBhcHAgbWVudSBtb2RlbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIG51bGwuXG4gICAqL1xuICBnZXRBcHBNZW51QnlJZE9yTmFtZShuYW1lT3JJZDogc3RyaW5nKTogQXBwTWVudU1vZGVsIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RnJvbU1hcE9yQ3JlYXRlKFxuICAgICAgdGhpcy5hcHBNZW51TWFwLFxuICAgICAgbmFtZU9ySWQsXG4gICAgICBDb21tb24udGFiSnNvbi5NZW51cyxcbiAgICAgIC8vIFNlYXJjaCBmb3IgdGhlIGFwcCBtZW51IGJ5IElEIG9yIG5hbWVcbiAgICAgIG1lbnUgPT4gbWVudT8uSWQ/LnRvTG93ZXJDYXNlKCkgPT09IG5hbWVPcklkPy50b0xvd2VyQ2FzZSgpIHx8IG1lbnU/Lk1lbnVOYW1lID09PSBuYW1lT3JJZCxcbiAgICAgIC8vIENyZWF0ZSBhIG5ldyBBcHBNZW51TW9kZWwgaWYgdGhlIGFwcCBtZW51IGlzIGZvdW5kXG4gICAgICBtZW51ID0+IG5ldyBBcHBNZW51TW9kZWwobWVudSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhIGxpc3Qgb2YgYWxsIGFwcCBtZW51cy5cbiAgICogSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGl0IGlzIGFwcGxpZWQgdG8gdGhlIGxpc3Qgb2YgYXBwIG1lbnVzLlxuICAgKiBcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZmlsdGVyRm4gLSBUaGUgZmlsdGVyIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBhcHAgbWVudXMuXG4gICAqIEByZXR1cm5zIHtBcHBNZW51TW9kZWxbXX0gLSBUaGUgbGlzdCBvZiBhcHAgbWVudXMuXG4gICAqL1xuICBnZXRBbGxBcHBNZW51cyhmaWx0ZXJGbj86IChtZW51OiBBcHBNZW51TW9kZWwpID0+IGJvb2xlYW4pOiBBcHBNZW51TW9kZWxbXSB7XG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgbGlzdCBvZiBhcHAgc2NyZWVucyBsYXppbHkuXG4gICAgY29uc3QgbGlzdCA9IHRoaXMubGF6eUluaXRMaXN0KFxuICAgICAgdGhpcy5hbGxBcHBNZW51cyxcbiAgICAgIHZhbCA9PiAodGhpcy5hbGxBcHBNZW51cyA9IHZhbCksXG4gICAgICBDb21tb24udGFiSnNvbi5NZW51cyxcbiAgICAgIHRoaXMuYXBwTWVudU1hcCxcbiAgICAgIChtOiBhbnkpID0+IFttPy5JZD8udG9Mb3dlckNhc2UoKSwgbT8uTmFtZV0sXG4gICAgICBzID0+IG5ldyBBcHBNZW51TW9kZWwocylcbiAgICApO1xuXG4gICAgLy8gSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGFwcGx5IGl0IHRvIHRoZSBsaXN0IG9mIGFwcCBzY3JlZW5zLlxuICAgIHJldHVybiBmaWx0ZXJGbiA/IGxpc3QuZmlsdGVyKGZpbHRlckZuKSA6IGxpc3Q7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIGFsbCBjYWNoZWQgbWV0YWRhdGEgc2FmZWx5LlxuICAgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgb24gY29udGV4dCBjaGFuZ2VzIChlLmcuLCB3aGVuIGFwcCwgb3JnLCBvciBzZXNzaW9uIGNoYW5nZXMpLlxuICAgKi9cbiAgY2xlYXJDYWNoZSgpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgLy8gQ2xlYXIgbWFwc1xuICAgICAgdGhpcy5hcHBPYmplY3RNYXAuY2xlYXIoKTtcbiAgICAgIHRoaXMuYXBwU2NyZWVuTWFwLmNsZWFyKCk7XG4gICAgICB0aGlzLm9yZ0luZm9NYXAuY2xlYXIoKTtcbiAgICAgIHRoaXMuYXBwTWVudU1hcC5jbGVhcigpO1xuXG4gICAgICAvLyBSZXNldCBsaXN0c1xuICAgICAgdGhpcy5hbGxBcHBPYmplY3RzID0gbnVsbDtcbiAgICAgIHRoaXMuYWxsQXBwU2NyZWVucyA9IG51bGw7XG4gICAgICB0aGlzLmFsbE9yZ0luZm9zID0gbnVsbDtcbiAgICAgIHRoaXMuYWxsQXBwTWVudXMgPSBudWxsO1xuXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignTWV0YWRhdGFIZWxwZXIgRmFpbGVkIHRvIGNsZWFyIGNhY2hlOicsIGVycm9yKTtcbiAgICB9XG4gIH1cblxufSJdfQ==
|
|
@@ -115,7 +115,7 @@ export class TemplateHelper {
|
|
|
115
115
|
}
|
|
116
116
|
obj = Object.getPrototypeOf(obj);
|
|
117
117
|
}
|
|
118
|
-
if (service?.
|
|
118
|
+
if (service?._isProxy) {
|
|
119
119
|
// Probe the context directly
|
|
120
120
|
const ctx = service._context;
|
|
121
121
|
if (ctx) {
|
|
@@ -252,4 +252,4 @@ export class TemplateHelper {
|
|
|
252
252
|
type: Injectable,
|
|
253
253
|
args: [{ providedIn: 'root' }]
|
|
254
254
|
}], () => [], null); })();
|
|
255
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9oZWxwZXJzL2NvbW1vbi90ZW1wbGF0ZS5oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBSXRELE1BQU0sT0FBTyxjQUFjO0lBS3pCO1FBSmlCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBWSxDQUFDO1FBQ2hELFdBQU0sR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBRzVCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxvQkFBb0IsQ0FBQyxRQUFnQixFQUFFLGlCQUF5QjtRQUM5RCxNQUFNLElBQUksR0FBRztZQUNYLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFD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bkIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytFQWhRVSxjQUFjO3VFQUFkLGNBQWMsV0FBZCxjQUFjLG1CQURELE1BQU07O2lGQUNuQixjQUFjO2NBRDFCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9odHRwLWNsaWVudC9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IEFQSSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9hcGktY29uc3RhbnRzJztcclxuaW1wb3J0IHsgTGlxdWlkIH0gZnJvbSAnbGlxdWlkanMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmcm9tLCBtYXAsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGdldEhlYWRlcnMgfSBmcm9tICcuLi8uLi91dGlscy9yZXEtcmVzLnV0aWwnO1xyXG5pbXBvcnQgeyBDb21tb25BcGlSZXNwb25zZSwgVGVtcGxhdGVQYXJzZVBheWxvYWQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2NvbW1vbi5pbnRlcmZhY2UnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlSGVscGVyIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGFwaVNlcnZpY2UgPSBpbmplY3QoQXBpU2VydmljZSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBzZXJ2aWNlQ2FjaGUgPSBuZXcgV2Vha01hcDxhbnksIGFueT4oKTtcclxuICBwcml2YXRlIGVuZ2luZSA9IG5ldyBMaXF1aWQoKTtcclxuICBcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMucmVnaXN0ZXJDYWxsRmlsdGVyKCk7XHJcbiAgICB0aGlzLnJlZ2lzdGVyUHJvcEZpbHRlcigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGFyc2VzIHRoZSB0ZW1wbGF0ZSB1c2luZyBsb2NhbCByZW5kZXJpbmcuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gdGVtcGxhdGUgLSBUaGUgdGVtcGxhdGUgdG8gYmUgcGFyc2VkLlxyXG4gICAqIEBwYXJhbSB0ZW1wbGF0ZVZhcmlhYmxlcyAtIFRoZSB2YXJpYWJsZXMgdG8gYmUgdXNlZCBmb3IgdGVtcGxhdGUgcmVuZGVyaW5nLlxyXG4gICAqIEByZXR1cm5zIFRoZSByZW5kZXJlZCB0ZW1wbGF0ZSByZXN1bHQuXHJcbiAgICovXHJcbiAgdGVtcGxhdGVQYXJzZUxvY2FsbHkodGVtcGxhdGU6IHN0cmluZywgdGVtcGxhdGVWYXJpYWJsZXM6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICAuLi4odGVtcGxhdGVWYXJpYWJsZXM/Lmxlbmd0aCA/IEpTT04ucGFyc2UodGVtcGxhdGVWYXJpYWJsZXMpIDoge30pLFxyXG4gICAgICBUYWJTZGs6IHRoaXMuY3JlYXRlU2RrUHJveHkoKSxcclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5lbmdpbmUucGFyc2VBbmRSZW5kZXIodGVtcGxhdGUgPz8gJycsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGFyc2VzIHRoZSB0ZW1wbGF0ZSB1bml2ZXJzYWxseSwgZWl0aGVyIHVzaW5nIGxvY2FsIHJlbmRlcmluZyBvciBzZXJ2ZXItc2lkZSByZW5kZXJpbmcuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZGF0YSAtIFRoZSBkYXRhIHRvIGJlIHVzZWQgZm9yIHRlbXBsYXRlIHBhcnNpbmcuXHJcbiAgICogQHBhcmFtIHNob3VsZEZhaWxPblNlcnZlclBhcnNlIC0gSW5kaWNhdGVzIHdoZXRoZXIgdG8gZmFpbCBvbiBzZXJ2ZXItc2lkZSBwYXJzZSBpZiBsb2NhbCBwYXJzaW5nIGZhaWxzLlxyXG4gICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgcGFyc2VkIHRlbXBsYXRlIHJlc3VsdC5cclxuICAgKi9cclxuICB0ZW1wbGF0ZVBhcnNlVW5pdmVyc2FsKGRhdGE6IFRlbXBsYXRlUGFyc2VQYXlsb2FkLCBvbkZhaWxlZFBhcnNlT25TZXJ2ZXIgPSB0cnVlKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiBmcm9tKHRoaXMudGVtcGxhdGVQYXJzZUxvY2FsbHkoZGF0YS5WYWx1ZSwgZGF0YS5UZW1wbGF0ZXZhcmlhYmxlcykpLnBpcGUoXHJcbiAgICAgIG1hcCgoaHRtbCkgPT4gKHsgUmVzdWx0OiBodG1sIH0pKSxcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdMb2NhbCBwYXJzZSBmYWlsZWQnLCBlcnJvcik7XHJcbiAgICAgICAgcmV0dXJuIG9uRmFpbGVkUGFyc2VPblNlcnZlciA/IHRoaXMudGVtcGxhdGVQYXJzZShkYXRhKSA6IG9mKHsgUmVzdWx0OiAnJyB9KTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQYXJzZXMgdGhlIHRlbXBsYXRlIHVzaW5nIHNlcnZlci1zaWRlIHJlbmRlcmluZy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBkYXRhIC0gVGhlIGRhdGEgdG8gYmUgdXNlZCBmb3IgdGVtcGxhdGUgcGFyc2luZy5cclxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHBhcnNlZCB0ZW1wbGF0ZSByZXN1bHQuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB0ZW1wbGF0ZVBhcnNlKGRhdGE6IFRlbXBsYXRlUGFyc2VQYXlsb2FkKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuXHJcbiAgICAvLyBNYWtlcyBhIFBPU1QgcmVxdWVzdCB0byB0aGUgc2VydmVyIHRvIHBhcnNlIHRoZSB0ZW1wbGF0ZS5cclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChBUEkudGVtcGxhdGVQYXJzZSwgZGF0YSwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgcHJveHkgZm9yIHRoZSBUYWJTZGsgb2JqZWN0IHRvIGV4cG9zZSBpdHMgcHJvcGVydGllcyBhbmQgbWV0aG9kcy5cclxuICAgKiBUaGlzIGFsbG93cyB0ZW1wbGF0ZXMgdG8gYWNjZXNzIFNESyBzZXJ2aWNlcyBhbmQgdGhlaXIgcHJvcGVydGllcy5cclxuICAgKlxyXG4gICAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSByZXNvbHZlZCBTREsgc2VydmljZXMuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjcmVhdGVTZGtQcm94eSgpOiBhbnkge1xyXG4gICAgY29uc3Qgc2RrUm9vdCA9ICh3aW5kb3cgYXMgYW55KT8uVGFiU2RrO1xyXG4gICAgaWYgKCFzZGtSb290KSByZXR1cm4ge307XHJcblxyXG4gICAgY29uc3QgcmVzb2x2ZWRTZGs6IGFueSA9IHt9O1xyXG4gICAgLy8gR2V0IHN0YXRpYyBwcm9wZXJ0aWVzIGFuZCByZXNvbHZlIHRoZWlyIHZhbHVlc1xyXG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoc2RrUm9vdCkuZm9yRWFjaChzZXJ2aWNlTmFtZSA9PiB7XHJcbiAgICAgIGlmIChzZXJ2aWNlTmFtZSA9PT0gJ2xlbmd0aCcgfHwgc2VydmljZU5hbWUgPT09ICduYW1lJyB8fCBzZXJ2aWNlTmFtZSA9PT0gJ3Byb3RvdHlwZScpIHJldHVybjtcclxuXHJcbiAgICAgIGNvbnN0IHNlcnZpY2UgPSBzZGtSb290W3NlcnZpY2VOYW1lXTtcclxuICAgICAgaWYgKCFzZXJ2aWNlKSByZXR1cm47XHJcblxyXG4gICAgICAvLyBDcmVhdGUgcmVzb2x2ZWQgc2VydmljZSBvYmplY3RcclxuICAgICAgcmVzb2x2ZWRTZGtbc2VydmljZU5hbWVdID0gdGhpcy5yZXNvbHZlU2VydmljZVZhbHVlcyhzZXJ2aWNlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiByZXNvbHZlZFNkaztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc29sdmVzIHRoZSBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIG9mIGEgc2VydmljZSBvYmplY3QuXHJcbiAgICogVGhpcyBpbmNsdWRlcyBib3RoIHN0YXRpYyBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzLCBhcyB3ZWxsIGFzIHByb3RvdHlwZSBwcm9wZXJ0aWVzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHNlcnZpY2UgLSBUaGUgc2VydmljZSBvYmplY3QgdG8gcmVzb2x2ZS5cclxuICAgKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgcmVzb2x2ZWQgcHJvcGVydGllcyBhbmQgbWV0aG9kcy5cclxuICAgKi9cclxuICBwcml2YXRlIHJlc29sdmVTZXJ2aWNlVmFsdWVzKHNlcnZpY2U6IGFueSk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5zZXJ2aWNlQ2FjaGUuaGFzKHNlcnZpY2UpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VDYWNoZS5nZXQoc2VydmljZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVzb2x2ZWQ6IGFueSA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgZGVueSA9IG5ldyBTZXQoWydfX3Byb3RvX18nLCAncHJvdG90eXBlJywgJ2NvbnN0cnVjdG9yJ10pO1xyXG4gICAgICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XHJcblxyXG4gICAgICAvLyB3YWxrIHRoZSB3aG9sZSBwcm90b3R5cGUgY2hhaW4gKGluc3RhbmNlIOKGkiBiYXNlIHByb3RvdHlwZXMpLCBzdG9wIGF0IE9iamVjdC5wcm90b3R5cGVcclxuICAgICAgbGV0IG9iajogYW55ID0gc2VydmljZTtcclxuICAgICAgd2hpbGUgKG9iaiAmJiBvYmogIT09IE9iamVjdC5wcm90b3R5cGUpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IHByb3Agb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKSkge1xyXG4gICAgICAgICAgaWYgKGRlbnkuaGFzKHByb3ApIHx8IHNlZW4uaGFzKHByb3ApKSBjb250aW51ZTtcclxuICAgICAgICAgIHNlZW4uYWRkKHByb3ApO1xyXG5cclxuICAgICAgICAgIGxldCB2YWx1ZTogYW55O1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgLy8gYWx3YXlzIHJlYWQgb2ZmIHRoZSBvcmlnaW5hbCBpbnN0YW5jZSBzbyBnZXR0ZXJzIHNlZSBjb3JyZWN0IGB0aGlzYFxyXG4gICAgICAgICAgICB2YWx1ZSA9IFJlZmxlY3QuZ2V0KHNlcnZpY2UsIHByb3ApO1xyXG4gICAgICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgLy8gZXhwb3NlIGEgaGFuZGxlIHNvIExpcXVpZCBwYXNzZXMgaXQgdGhyb3VnaCB0byB0aGUgYGNhbGxgIGZpbHRlclxyXG4gICAgICAgICAgICByZXNvbHZlZFtwcm9wXSA9IHRoaXMubWFrZU1ldGhvZEhhbmRsZShzZXJ2aWNlLCBwcm9wKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXNvbHZlZFtwcm9wXSA9IHZhbHVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBvYmogPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHNlcnZpY2U/LmNvbnN0cnVjdG9yPy5uYW1lID09PSAnVXRpbFNlcnZpY2UnKSB7XHJcbiAgICAgICAgLy8gUHJvYmUgdGhlIGNvbnRleHQgZGlyZWN0bHlcclxuICAgICAgICBjb25zdCBjdHggPSAoc2VydmljZSBhcyBhbnkpLl9jb250ZXh0O1xyXG4gICAgICAgIGlmIChjdHgpIHtcclxuICAgICAgICAgIGZvciAoY29uc3Qgc3ZjTmFtZSBvZiBPYmplY3Qua2V5cyhjdHgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN2YyA9IGN0eFtzdmNOYW1lXTtcclxuICAgICAgICAgICAgaWYgKCFzdmMpIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHN2Yy5fX3Byb3RvX18gfHwgc3ZjKSkge1xyXG4gICAgICAgICAgICAgIGlmIChkZW55Lmhhcyhwcm9wKSB8fCBzZWVuLmhhcyhwcm9wKSkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgc2Vlbi5hZGQocHJvcCk7XHJcblxyXG4gICAgICAgICAgICAgIGxldCB2YWx1ZTogYW55O1xyXG4gICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IFJlZmxlY3QuZ2V0KHNlcnZpY2UsIHByb3ApOyAvLyBmb3JjZXMgcHJveHkgdG8gcmVzb2x2ZVxyXG4gICAgICAgICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlZFtwcm9wXSA9IHRoaXMubWFrZU1ldGhvZEhhbmRsZShzZXJ2aWNlLCBwcm9wKTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmVkW3Byb3BdID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybignVGVtcGxhdGVIZWxwZXI6IHJlc29sdmVTZXJ2aWNlVmFsdWVzIGZhaWxlZCcsIGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VydmljZUNhY2hlLnNldChzZXJ2aWNlLCByZXNvbHZlZCk7XHJcbiAgICByZXR1cm4gcmVzb2x2ZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgc3BlY2lhbCBoYW5kbGUgb2JqZWN0IHRoYXQgd3JhcHMgYSBmdW5jdGlvbiBvciBtZXRob2QgcmVmZXJlbmNlLlxyXG4gICAqIFRoZSBoYW5kbGUgaXMgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciB0aGUgZnVuY3Rpb24gb3IgbWV0aG9kIGluIHRoZVxyXG4gICAqIHRlbXBsYXRlIGNvbnRleHQsIGFuZCBpcyB1c2VkIGJ5IHRoZSBgY2FsbGAgZmlsdGVyIHRvIGludm9rZSB0aGVcclxuICAgKiBmdW5jdGlvbiBvciBtZXRob2Qgd2l0aCBwcm92aWRlZCBhcmd1bWVudHMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gcGFyZW50IC0gVGhlIG9iamVjdCB0aGF0IHRoZSBtZXRob2QgYmVsb25ncyB0by5cclxuICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBtZXRob2QuXHJcbiAgICogQHJldHVybnMgQSBoYW5kbGUgb2JqZWN0IHRoYXQgd3JhcHMgdGhlIGZ1bmN0aW9uIG9yIG1ldGhvZC5cclxuICAgKi9cclxuICBwcml2YXRlIG1ha2VNZXRob2RIYW5kbGUocGFyZW50OiBhbnksIG5hbWU6IHN0cmluZyk6IGFueSB7XHJcbiAgICBjb25zdCBoYW5kbGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoaGFuZGxlLCB7XHJcbiAgICAgIF9fc2RrSGFuZGxlOiB7IHZhbHVlOiAnbWV0aG9kJywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiBmYWxzZSwgY29uZmlndXJhYmxlOiBmYWxzZSB9LFxyXG4gICAgICBfX3BhcmVudDogeyB2YWx1ZTogcGFyZW50LCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IGZhbHNlLCBjb25maWd1cmFibGU6IGZhbHNlIH0sXHJcbiAgICAgIF9fbmFtZTogeyB2YWx1ZTogbmFtZSwgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiBmYWxzZSwgY29uZmlndXJhYmxlOiBmYWxzZSB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBoYW5kbGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWdpc3RlcnMgYSBmaWx0ZXIgdG8gY2FsbCBhIGZ1bmN0aW9uIG9yIG1ldGhvZCB3aXRoIHByb3ZpZGVkIGFyZ3VtZW50cy5cclxuICAgKiBUaGlzIGFsbG93cyB0ZW1wbGF0ZXMgdG8gaW52b2tlIGZ1bmN0aW9ucyBvciBtZXRob2RzIGR5bmFtaWNhbGx5LlxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVnaXN0ZXJDYWxsRmlsdGVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lbmdpbmUucmVnaXN0ZXJGaWx0ZXIoJ2NhbGwnLCBhc3luYyAoaW5wdXQ6IGFueSwgLi4uYXJnczogYW55W10pID0+IHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICAvLyBjYXNlIEE6IGlucHV0IGlzIG91ciBtZXRob2QgaGFuZGxlIChmcm9tIHJlc29sdmVTZXJ2aWNlVmFsdWVzKVxyXG4gICAgICAgIGlmIChpbnB1dCAmJiBpbnB1dC5fX3Nka0hhbmRsZSA9PT0gJ21ldGhvZCcgJiYgaW5wdXQuX19wYXJlbnQgJiYgaW5wdXQuX19uYW1lKSB7XHJcbiAgICAgICAgICBjb25zdCBmbiA9IFJlZmxlY3QuZ2V0KGlucHV0Ll9fcGFyZW50LCBpbnB1dC5fX25hbWUpO1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCByZXMgPSBmbi5hcHBseShpbnB1dC5fX3BhcmVudCwgYXJncyk7XHJcbiAgICAgICAgICByZXR1cm4gYXdhaXQgcmVzOyAvLyBzeW5jIG9yIGFzeW5jXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBjYXNlIEI6IGlucHV0IGlzIGFuIG9iamVjdCBhbmQgZmlyc3QgYXJnIGlzIHRoZSBtZXRob2QgbmFtZVxyXG4gICAgICAgIGlmIChpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdvYmplY3QnICYmIHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgY29uc3QgbWV0aG9kTmFtZSA9IGFyZ3NbMF07XHJcbiAgICAgICAgICBpZiAobWV0aG9kTmFtZSA9PT0gJ19fcHJvdG9fXycgfHwgbWV0aG9kTmFtZSA9PT0gJ3Byb3RvdHlwZScgfHwgbWV0aG9kTmFtZSA9PT0gJ2NvbnN0cnVjdG9yJykgcmV0dXJuICcnO1xyXG4gICAgICAgICAgY29uc3QgbWV0aG9kID0gUmVmbGVjdC5nZXQoaW5wdXQsIG1ldGhvZE5hbWUpO1xyXG4gICAgICAgICAgY29uc3QgcmVzdCA9IGFyZ3Muc2xpY2UoMSk7XHJcbiAgICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICBjb25zdCByZXMgPSBtZXRob2QuYXBwbHkoaW5wdXQsIHJlc3QpO1xyXG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgcmVzO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gbm90IGEgZnVuY3Rpb24g4oaSIHRyZWF0IGFzIHByb3BlcnR5IGZhbGxiYWNrXHJcbiAgICAgICAgICByZXR1cm4gbWV0aG9kID8/ICcnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gKGZhbGxiYWNrKSBmdW5jdGlvbnMgc2hvdWxkIG5vdCByZWFjaCBMaXF1aWQsIGJ1dCBrZWVwIGZvciBzYWZldHlcclxuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICBjb25zdCByZXMgPSBpbnB1dCguLi5hcmdzKTtcclxuICAgICAgICAgIHJldHVybiBhd2FpdCByZXM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWdpc3RlcnMgYSBmaWx0ZXIgdG8gYWNjZXNzIHByb3BlcnRpZXMgb2YgYW4gb2JqZWN0IHVzaW5nIGRvdCBvciBicmFja2V0IG5vdGF0aW9uLlxyXG4gICAqIFRoaXMgYWxsb3dzIHRlbXBsYXRlcyB0byBhY2Nlc3MgbmVzdGVkIHByb3BlcnRpZXMgc2FmZWx5LlxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVnaXN0ZXJQcm9wRmlsdGVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lbmdpbmUucmVnaXN0ZXJGaWx0ZXIoJ3Byb3AnLCAoaW5wdXQ6IGFueSwgcGF0aDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChpbnB1dCA9PSBudWxsKSByZXR1cm4gJyc7XHJcbiAgICAgIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycgfHwgIXBhdGgudHJpbSgpKSByZXR1cm4gJyc7XHJcblxyXG4gICAgICAvLyBzdXBwb3J0IGRvdCAmIHNpbXBsZSBicmFja2V0IG5vdGF0aW9uOiBhLmIsIGFbMF0sIGFba2V5XVxyXG4gICAgICBjb25zdCBzZWdtZW50cyA9IHBhdGhcclxuICAgICAgICAucmVwbGFjZSgvXFxbKFxcZCspXFxdL2csICcuJDEnKSAgICAgLy8gWzBdIC0+IC4wXHJcbiAgICAgICAgLnJlcGxhY2UoL1xcWyhcXHcrKVxcXS9nLCAnLiQxJykgICAgIC8vIFtrZXldIC0+IC5rZXlcclxuICAgICAgICAuc3BsaXQoJy4nKVxyXG4gICAgICAgIC5tYXAocyA9PiBzLnRyaW0oKSlcclxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xyXG5cclxuICAgICAgbGV0IGN1cjogYW55ID0gaW5wdXQ7XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IHNlZyBvZiBzZWdtZW50cykge1xyXG4gICAgICAgIGlmIChjdXIgPT0gbnVsbCkgcmV0dXJuICcnO1xyXG5cclxuICAgICAgICBjb25zdCBpZHggPSBOdW1iZXIoc2VnKTtcclxuICAgICAgICBjb25zdCBrZXk6IGFueSA9IE51bWJlci5pc05hTihpZHgpID8gc2VnIDogaWR4O1xyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgY3VyID0gUmVmbGVjdC5nZXQoY3VyLCBrZXkpO1xyXG4gICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIGN1ciA/PyAnJztcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
255
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9oZWxwZXJzL2NvbW1vbi90ZW1wbGF0ZS5oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBSXRELE1BQU0sT0FBTyxjQUFjO0lBS3pCO1FBSmlCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBWSxDQUFDO1FBQ2hELFdBQU0sR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBRzVCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxvQkFBb0IsQ0FBQyxRQUFnQixFQUFFLGlCQUF5QjtRQUM5RCxNQUFNLElBQUksR0FBRztZQUNYLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ25FLE1BQU0sRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFO1NBQzlCLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILHNCQUFzQixDQUFDLElBQTBCLEVBQUUscUJBQXFCLEdBQUcsSUFBSTtRQUM3RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDN0UsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFDakMsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMzQyxPQUFPLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvRSxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssYUFBYSxDQUFDLElBQTBCO1FBQzlDLE1BQU0sT0FBTyxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBRTdCLDREQUE0RDtRQUM1RCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLGNBQWM7UUFDcEIsTUFBTSxPQUFPLEdBQUksTUFBYyxFQUFFLE1BQU0sQ0FBQztRQUN4QyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRXhCLE1BQU0sV0FBVyxHQUFRLEVBQUUsQ0FBQztRQUM1QixpREFBaUQ7UUFDakQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUN4RCxJQUFJLFdBQVcsS0FBSyxRQUFRLElBQUksV0FBVyxLQUFLLE1BQU0sSUFBSSxXQUFXLEtBQUssV0FBVztnQkFBRSxPQUFPO1lBRTlGLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsT0FBTztnQkFBRSxPQUFPO1lBRXJCLGlDQUFpQztZQUNqQyxXQUFXLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hFLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLG9CQUFvQixDQUFDLE9BQVk7UUFDdkMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ25DLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUNoRSxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1lBRS9CLHdGQUF3RjtZQUN4RixJQUFJLEdBQUcsR0FBUSxPQUFPLENBQUM7WUFDdkIsT0FBTyxHQUFHLElBQUksR0FBRyxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDdkMsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDbkQsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO3dCQUFFLFNBQVM7b0JBQy9DLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBRWYsSUFBSSxLQUFVLENBQUM7b0JBQ2YsSUFBSSxDQUFDO3dCQUNILHNFQUFzRTt3QkFDdEUsS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUNyQyxDQUFDO29CQUFDLE1BQU0sQ0FBQzt3QkFDUCxTQUFTO29CQUNYLENBQUM7b0JBRUQsSUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVLEVBQUUsQ0FBQzt3QkFDaEMsbUVBQW1FO3dCQUNuRSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDeEQsQ0FBQzt5QkFBTSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQzt3QkFDL0IsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztvQkFDekIsQ0FBQztnQkFDSCxDQUFDO2dCQUNELEdBQUcsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLENBQUM7WUFFRCxJQUFJLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQztnQkFDdEIsNkJBQTZCO2dCQUM3QixNQUFNLEdBQUcsR0FBSSxPQUFlLENBQUMsUUFBUSxDQUFDO2dCQUN0QyxJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUNSLEtBQUssTUFBTSxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUN2QyxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBQ3pCLElBQUksQ0FBQyxHQUFHOzRCQUFFLFNBQVM7d0JBRW5CLEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQzs0QkFDcEUsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO2dDQUFFLFNBQVM7NEJBQy9DLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7NEJBRWYsSUFBSSxLQUFVLENBQUM7NEJBQ2YsSUFBSSxDQUFDO2dDQUNILEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLDBCQUEwQjs0QkFDaEUsQ0FBQzs0QkFBQyxNQUFNLENBQUM7Z0NBQ1AsU0FBUzs0QkFDWCxDQUFDOzRCQUVELElBQUksT0FBTyxLQUFLLEtBQUssVUFBVSxFQUFFLENBQUM7Z0NBQ2hDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDOzRCQUN4RCxDQUFDO2lDQUFNLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dDQUMvQixRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDOzRCQUN6QixDQUFDO3dCQUNILENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyw2Q0FBNkMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSyxnQkFBZ0IsQ0FBQyxNQUFXLEVBQUUsSUFBWTtRQUNoRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUU7WUFDOUIsV0FBVyxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRTtZQUN6RixRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFO1lBQ3BGLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUU7U0FDakYsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQVUsRUFBRSxHQUFHLElBQVcsRUFBRSxFQUFFO1lBQ3RFLElBQUksQ0FBQztnQkFDSCxpRUFBaUU7Z0JBQ2pFLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUM5RSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNyRCxJQUFJLE9BQU8sRUFBRSxLQUFLLFVBQVUsRUFBRSxDQUFDO3dCQUM3QixPQUFPLEVBQUUsQ0FBQztvQkFDWixDQUFDO29CQUNELE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDM0MsT0FBTyxNQUFNLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQjtnQkFDcEMsQ0FBQztnQkFFRCw4REFBOEQ7Z0JBQzlELElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDdEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUMzQixJQUFJLFVBQVUsS0FBSyxXQUFXLElBQUksVUFBVSxLQUFLLFdBQVcsSUFBSSxVQUFVLEtBQUssYUFBYTt3QkFBRSxPQUFPLEVBQUUsQ0FBQztvQkFDeEcsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7b0JBQzlDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzNCLElBQUksT0FBTyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7d0JBQ2pDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO3dCQUN0QyxPQUFPLE1BQU0sR0FBRyxDQUFDO29CQUNuQixDQUFDO29CQUNELDhDQUE4QztvQkFDOUMsT0FBTyxNQUFNLElBQUksRUFBRSxDQUFDO2dCQUN0QixDQUFDO2dCQUVELG9FQUFvRTtnQkFDcEUsSUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVLEVBQUUsQ0FBQztvQkFDaEMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7b0JBQzNCLE9BQU8sTUFBTSxHQUFHLENBQUM7Z0JBQ25CLENBQUM7Z0JBRUQsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFVLEVBQUUsSUFBUyxFQUFFLEVBQUU7WUFDM0QsSUFBSSxLQUFLLElBQUksSUFBSTtnQkFBRSxPQUFPLEVBQUUsQ0FBQztZQUM3QixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQUUsT0FBTyxFQUFFLENBQUM7WUFFeEQsMkRBQTJEO1lBQzNELE1BQU0sUUFBUSxHQUFHLElBQUk7aUJBQ2xCLE9BQU8sQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUssWUFBWTtpQkFDN0MsT0FBTyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBSyxnQkFBZ0I7aUJBQ2pELEtBQUssQ0FBQyxHQUFHLENBQUM7aUJBQ1YsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUNsQixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFbkIsSUFBSSxHQUFHLEdBQVEsS0FBSyxDQUFDO1lBRXJCLEtBQUssTUFBTSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQzNCLElBQUksR0FBRyxJQUFJLElBQUk7b0JBQUUsT0FBTyxFQUFFLENBQUM7Z0JBRTNCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDeEIsTUFBTSxHQUFHLEdBQVEsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7Z0JBRS9DLElBQUksQ0FBQztvQkFDSCxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQzlCLENBQUM7Z0JBQUMsTUFBTSxDQUFDO29CQUNQLE9BQU8sRUFBRSxDQUFDO2dCQUNaLENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTyxHQUFHLElBQUksRUFBRSxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrRUFoUVUsY0FBYzt1RUFBZCxjQUFjLFdBQWQsY0FBYyxtQkFERCxNQUFNOztpRkFDbkIsY0FBYztjQUQxQixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvaHR0cC1jbGllbnQvYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBUEkgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvYXBpLWNvbnN0YW50cyc7XHJcbmltcG9ydCB7IExpcXVpZCB9IGZyb20gJ2xpcXVpZGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZnJvbSwgbWFwLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBnZXRIZWFkZXJzIH0gZnJvbSAnLi4vLi4vdXRpbHMvcmVxLXJlcy51dGlsJztcclxuaW1wb3J0IHsgQ29tbW9uQXBpUmVzcG9uc2UsIFRlbXBsYXRlUGFyc2VQYXlsb2FkIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jb21tb24uaW50ZXJmYWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZUhlbHBlciB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlTZXJ2aWNlID0gaW5qZWN0KEFwaVNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VydmljZUNhY2hlID0gbmV3IFdlYWtNYXA8YW55LCBhbnk+KCk7XHJcbiAgcHJpdmF0ZSBlbmdpbmUgPSBuZXcgTGlxdWlkKCk7XHJcbiAgXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLnJlZ2lzdGVyQ2FsbEZpbHRlcigpO1xyXG4gICAgdGhpcy5yZWdpc3RlclByb3BGaWx0ZXIoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhcnNlcyB0aGUgdGVtcGxhdGUgdXNpbmcgbG9jYWwgcmVuZGVyaW5nLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHRlbXBsYXRlIC0gVGhlIHRlbXBsYXRlIHRvIGJlIHBhcnNlZC5cclxuICAgKiBAcGFyYW0gdGVtcGxhdGVWYXJpYWJsZXMgLSBUaGUgdmFyaWFibGVzIHRvIGJlIHVzZWQgZm9yIHRlbXBsYXRlIHJlbmRlcmluZy5cclxuICAgKiBAcmV0dXJucyBUaGUgcmVuZGVyZWQgdGVtcGxhdGUgcmVzdWx0LlxyXG4gICAqL1xyXG4gIHRlbXBsYXRlUGFyc2VMb2NhbGx5KHRlbXBsYXRlOiBzdHJpbmcsIHRlbXBsYXRlVmFyaWFibGVzOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgLi4uKHRlbXBsYXRlVmFyaWFibGVzPy5sZW5ndGggPyBKU09OLnBhcnNlKHRlbXBsYXRlVmFyaWFibGVzKSA6IHt9KSxcclxuICAgICAgVGFiU2RrOiB0aGlzLmNyZWF0ZVNka1Byb3h5KCksXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMuZW5naW5lLnBhcnNlQW5kUmVuZGVyKHRlbXBsYXRlID8/ICcnLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhcnNlcyB0aGUgdGVtcGxhdGUgdW5pdmVyc2FsbHksIGVpdGhlciB1c2luZyBsb2NhbCByZW5kZXJpbmcgb3Igc2VydmVyLXNpZGUgcmVuZGVyaW5nLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGRhdGEgLSBUaGUgZGF0YSB0byBiZSB1c2VkIGZvciB0ZW1wbGF0ZSBwYXJzaW5nLlxyXG4gICAqIEBwYXJhbSBzaG91bGRGYWlsT25TZXJ2ZXJQYXJzZSAtIEluZGljYXRlcyB3aGV0aGVyIHRvIGZhaWwgb24gc2VydmVyLXNpZGUgcGFyc2UgaWYgbG9jYWwgcGFyc2luZyBmYWlscy5cclxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHBhcnNlZCB0ZW1wbGF0ZSByZXN1bHQuXHJcbiAgICovXHJcbiAgdGVtcGxhdGVQYXJzZVVuaXZlcnNhbChkYXRhOiBUZW1wbGF0ZVBhcnNlUGF5bG9hZCwgb25GYWlsZWRQYXJzZU9uU2VydmVyID0gdHJ1ZSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLnRlbXBsYXRlUGFyc2VMb2NhbGx5KGRhdGEuVmFsdWUsIGRhdGEuVGVtcGxhdGV2YXJpYWJsZXMpKS5waXBlKFxyXG4gICAgICBtYXAoKGh0bWwpID0+ICh7IFJlc3VsdDogaHRtbCB9KSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignTG9jYWwgcGFyc2UgZmFpbGVkJywgZXJyb3IpO1xyXG4gICAgICAgIHJldHVybiBvbkZhaWxlZFBhcnNlT25TZXJ2ZXIgPyB0aGlzLnRlbXBsYXRlUGFyc2UoZGF0YSkgOiBvZih7IFJlc3VsdDogJycgfSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGFyc2VzIHRoZSB0ZW1wbGF0ZSB1c2luZyBzZXJ2ZXItc2lkZSByZW5kZXJpbmcuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZGF0YSAtIFRoZSBkYXRhIHRvIGJlIHVzZWQgZm9yIHRlbXBsYXRlIHBhcnNpbmcuXHJcbiAgICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBwYXJzZWQgdGVtcGxhdGUgcmVzdWx0LlxyXG4gICAqL1xyXG4gIHByaXZhdGUgdGVtcGxhdGVQYXJzZShkYXRhOiBUZW1wbGF0ZVBhcnNlUGF5bG9hZCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcblxyXG4gICAgLy8gTWFrZXMgYSBQT1NUIHJlcXVlc3QgdG8gdGhlIHNlcnZlciB0byBwYXJzZSB0aGUgdGVtcGxhdGUuXHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoQVBJLnRlbXBsYXRlUGFyc2UsIGRhdGEsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHByb3h5IGZvciB0aGUgVGFiU2RrIG9iamVjdCB0byBleHBvc2UgaXRzIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMuXHJcbiAgICogVGhpcyBhbGxvd3MgdGVtcGxhdGVzIHRvIGFjY2VzcyBTREsgc2VydmljZXMgYW5kIHRoZWlyIHByb3BlcnRpZXMuXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgcmVzb2x2ZWQgU0RLIHNlcnZpY2VzLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgY3JlYXRlU2RrUHJveHkoKTogYW55IHtcclxuICAgIGNvbnN0IHNka1Jvb3QgPSAod2luZG93IGFzIGFueSk/LlRhYlNkaztcclxuICAgIGlmICghc2RrUm9vdCkgcmV0dXJuIHt9O1xyXG5cclxuICAgIGNvbnN0IHJlc29sdmVkU2RrOiBhbnkgPSB7fTtcclxuICAgIC8vIEdldCBzdGF0aWMgcHJvcGVydGllcyBhbmQgcmVzb2x2ZSB0aGVpciB2YWx1ZXNcclxuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHNka1Jvb3QpLmZvckVhY2goc2VydmljZU5hbWUgPT4ge1xyXG4gICAgICBpZiAoc2VydmljZU5hbWUgPT09ICdsZW5ndGgnIHx8IHNlcnZpY2VOYW1lID09PSAnbmFtZScgfHwgc2VydmljZU5hbWUgPT09ICdwcm90b3R5cGUnKSByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCBzZXJ2aWNlID0gc2RrUm9vdFtzZXJ2aWNlTmFtZV07XHJcbiAgICAgIGlmICghc2VydmljZSkgcmV0dXJuO1xyXG5cclxuICAgICAgLy8gQ3JlYXRlIHJlc29sdmVkIHNlcnZpY2Ugb2JqZWN0XHJcbiAgICAgIHJlc29sdmVkU2RrW3NlcnZpY2VOYW1lXSA9IHRoaXMucmVzb2x2ZVNlcnZpY2VWYWx1ZXMoc2VydmljZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcmVzb2x2ZWRTZGs7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNvbHZlcyB0aGUgcHJvcGVydGllcyBhbmQgbWV0aG9kcyBvZiBhIHNlcnZpY2Ugb2JqZWN0LlxyXG4gICAqIFRoaXMgaW5jbHVkZXMgYm90aCBzdGF0aWMgcHJvcGVydGllcyBhbmQgbWV0aG9kcywgYXMgd2VsbCBhcyBwcm90b3R5cGUgcHJvcGVydGllcy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBzZXJ2aWNlIC0gVGhlIHNlcnZpY2Ugb2JqZWN0IHRvIHJlc29sdmUuXHJcbiAgICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJlc29sdmVkIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZXNvbHZlU2VydmljZVZhbHVlcyhzZXJ2aWNlOiBhbnkpOiBhbnkge1xyXG4gICAgaWYgKHRoaXMuc2VydmljZUNhY2hlLmhhcyhzZXJ2aWNlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlQ2FjaGUuZ2V0KHNlcnZpY2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJlc29sdmVkOiBhbnkgPSB7fTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGRlbnkgPSBuZXcgU2V0KFsnX19wcm90b19fJywgJ3Byb3RvdHlwZScsICdjb25zdHJ1Y3RvciddKTtcclxuICAgICAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG5cclxuICAgICAgLy8gd2FsayB0aGUgd2hvbGUgcHJvdG90eXBlIGNoYWluIChpbnN0YW5jZSDihpIgYmFzZSBwcm90b3R5cGVzKSwgc3RvcCBhdCBPYmplY3QucHJvdG90eXBlXHJcbiAgICAgIGxldCBvYmo6IGFueSA9IHNlcnZpY2U7XHJcbiAgICAgIHdoaWxlIChvYmogJiYgb2JqICE9PSBPYmplY3QucHJvdG90eXBlKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikpIHtcclxuICAgICAgICAgIGlmIChkZW55Lmhhcyhwcm9wKSB8fCBzZWVuLmhhcyhwcm9wKSkgY29udGludWU7XHJcbiAgICAgICAgICBzZWVuLmFkZChwcm9wKTtcclxuXHJcbiAgICAgICAgICBsZXQgdmFsdWU6IGFueTtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8vIGFsd2F5cyByZWFkIG9mZiB0aGUgb3JpZ2luYWwgaW5zdGFuY2Ugc28gZ2V0dGVycyBzZWUgY29ycmVjdCBgdGhpc2BcclxuICAgICAgICAgICAgdmFsdWUgPSBSZWZsZWN0LmdldChzZXJ2aWNlLCBwcm9wKTtcclxuICAgICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIC8vIGV4cG9zZSBhIGhhbmRsZSBzbyBMaXF1aWQgcGFzc2VzIGl0IHRocm91Z2ggdG8gdGhlIGBjYWxsYCBmaWx0ZXJcclxuICAgICAgICAgICAgcmVzb2x2ZWRbcHJvcF0gPSB0aGlzLm1ha2VNZXRob2RIYW5kbGUoc2VydmljZSwgcHJvcCk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmVzb2x2ZWRbcHJvcF0gPSB2YWx1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgb2JqID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChzZXJ2aWNlPy5faXNQcm94eSkge1xyXG4gICAgICAgIC8vIFByb2JlIHRoZSBjb250ZXh0IGRpcmVjdGx5XHJcbiAgICAgICAgY29uc3QgY3R4ID0gKHNlcnZpY2UgYXMgYW55KS5fY29udGV4dDtcclxuICAgICAgICBpZiAoY3R4KSB7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IHN2Y05hbWUgb2YgT2JqZWN0LmtleXMoY3R4KSkge1xyXG4gICAgICAgICAgICBjb25zdCBzdmMgPSBjdHhbc3ZjTmFtZV07XHJcbiAgICAgICAgICAgIGlmICghc3ZjKSBjb250aW51ZTtcclxuXHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhzdmMuX19wcm90b19fIHx8IHN2YykpIHtcclxuICAgICAgICAgICAgICBpZiAoZGVueS5oYXMocHJvcCkgfHwgc2Vlbi5oYXMocHJvcCkpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgIHNlZW4uYWRkKHByb3ApO1xyXG5cclxuICAgICAgICAgICAgICBsZXQgdmFsdWU6IGFueTtcclxuICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSBSZWZsZWN0LmdldChzZXJ2aWNlLCBwcm9wKTsgLy8gZm9yY2VzIHByb3h5IHRvIHJlc29sdmVcclxuICAgICAgICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZWRbcHJvcF0gPSB0aGlzLm1ha2VNZXRob2RIYW5kbGUoc2VydmljZSwgcHJvcCk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlZFtwcm9wXSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ1RlbXBsYXRlSGVscGVyOiByZXNvbHZlU2VydmljZVZhbHVlcyBmYWlsZWQnLCBlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlcnZpY2VDYWNoZS5zZXQoc2VydmljZSwgcmVzb2x2ZWQpO1xyXG4gICAgcmV0dXJuIHJlc29sdmVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHNwZWNpYWwgaGFuZGxlIG9iamVjdCB0aGF0IHdyYXBzIGEgZnVuY3Rpb24gb3IgbWV0aG9kIHJlZmVyZW5jZS5cclxuICAgKiBUaGUgaGFuZGxlIGlzIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgdGhlIGZ1bmN0aW9uIG9yIG1ldGhvZCBpbiB0aGVcclxuICAgKiB0ZW1wbGF0ZSBjb250ZXh0LCBhbmQgaXMgdXNlZCBieSB0aGUgYGNhbGxgIGZpbHRlciB0byBpbnZva2UgdGhlXHJcbiAgICogZnVuY3Rpb24gb3IgbWV0aG9kIHdpdGggcHJvdmlkZWQgYXJndW1lbnRzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHBhcmVudCAtIFRoZSBvYmplY3QgdGhhdCB0aGUgbWV0aG9kIGJlbG9uZ3MgdG8uXHJcbiAgICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgbWV0aG9kLlxyXG4gICAqIEByZXR1cm5zIEEgaGFuZGxlIG9iamVjdCB0aGF0IHdyYXBzIHRoZSBmdW5jdGlvbiBvciBtZXRob2QuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBtYWtlTWV0aG9kSGFuZGxlKHBhcmVudDogYW55LCBuYW1lOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgY29uc3QgaGFuZGxlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGhhbmRsZSwge1xyXG4gICAgICBfX3Nka0hhbmRsZTogeyB2YWx1ZTogJ21ldGhvZCcsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogZmFsc2UsIGNvbmZpZ3VyYWJsZTogZmFsc2UgfSxcclxuICAgICAgX19wYXJlbnQ6IHsgdmFsdWU6IHBhcmVudCwgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiBmYWxzZSwgY29uZmlndXJhYmxlOiBmYWxzZSB9LFxyXG4gICAgICBfX25hbWU6IHsgdmFsdWU6IG5hbWUsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogZmFsc2UsIGNvbmZpZ3VyYWJsZTogZmFsc2UgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gaGFuZGxlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXJzIGEgZmlsdGVyIHRvIGNhbGwgYSBmdW5jdGlvbiBvciBtZXRob2Qgd2l0aCBwcm92aWRlZCBhcmd1bWVudHMuXHJcbiAgICogVGhpcyBhbGxvd3MgdGVtcGxhdGVzIHRvIGludm9rZSBmdW5jdGlvbnMgb3IgbWV0aG9kcyBkeW5hbWljYWxseS5cclxuICAgKi9cclxuICBwcml2YXRlIHJlZ2lzdGVyQ2FsbEZpbHRlcigpOiB2b2lkIHtcclxuICAgIHRoaXMuZW5naW5lLnJlZ2lzdGVyRmlsdGVyKCdjYWxsJywgYXN5bmMgKGlucHV0OiBhbnksIC4uLmFyZ3M6IGFueVtdKSA9PiB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgLy8gY2FzZSBBOiBpbnB1dCBpcyBvdXIgbWV0aG9kIGhhbmRsZSAoZnJvbSByZXNvbHZlU2VydmljZVZhbHVlcylcclxuICAgICAgICBpZiAoaW5wdXQgJiYgaW5wdXQuX19zZGtIYW5kbGUgPT09ICdtZXRob2QnICYmIGlucHV0Ll9fcGFyZW50ICYmIGlucHV0Ll9fbmFtZSkge1xyXG4gICAgICAgICAgY29uc3QgZm4gPSBSZWZsZWN0LmdldChpbnB1dC5fX3BhcmVudCwgaW5wdXQuX19uYW1lKTtcclxuICAgICAgICAgIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgcmVzID0gZm4uYXBwbHkoaW5wdXQuX19wYXJlbnQsIGFyZ3MpO1xyXG4gICAgICAgICAgcmV0dXJuIGF3YWl0IHJlczsgLy8gc3luYyBvciBhc3luY1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gY2FzZSBCOiBpbnB1dCBpcyBhbiBvYmplY3QgYW5kIGZpcnN0IGFyZyBpcyB0aGUgbWV0aG9kIG5hbWVcclxuICAgICAgICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBhcmdzWzBdO1xyXG4gICAgICAgICAgaWYgKG1ldGhvZE5hbWUgPT09ICdfX3Byb3RvX18nIHx8IG1ldGhvZE5hbWUgPT09ICdwcm90b3R5cGUnIHx8IG1ldGhvZE5hbWUgPT09ICdjb25zdHJ1Y3RvcicpIHJldHVybiAnJztcclxuICAgICAgICAgIGNvbnN0IG1ldGhvZCA9IFJlZmxlY3QuZ2V0KGlucHV0LCBtZXRob2ROYW1lKTtcclxuICAgICAgICAgIGNvbnN0IHJlc3QgPSBhcmdzLnNsaWNlKDEpO1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgY29uc3QgcmVzID0gbWV0aG9kLmFwcGx5KGlucHV0LCByZXN0KTtcclxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHJlcztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIG5vdCBhIGZ1bmN0aW9uIOKGkiB0cmVhdCBhcyBwcm9wZXJ0eSBmYWxsYmFja1xyXG4gICAgICAgICAgcmV0dXJuIG1ldGhvZCA/PyAnJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIChmYWxsYmFjaykgZnVuY3Rpb25zIHNob3VsZCBub3QgcmVhY2ggTGlxdWlkLCBidXQga2VlcCBmb3Igc2FmZXR5XHJcbiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgY29uc3QgcmVzID0gaW5wdXQoLi4uYXJncyk7XHJcbiAgICAgICAgICByZXR1cm4gYXdhaXQgcmVzO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICB9IGNhdGNoIHtcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXJzIGEgZmlsdGVyIHRvIGFjY2VzcyBwcm9wZXJ0aWVzIG9mIGFuIG9iamVjdCB1c2luZyBkb3Qgb3IgYnJhY2tldCBub3RhdGlvbi5cclxuICAgKiBUaGlzIGFsbG93cyB0ZW1wbGF0ZXMgdG8gYWNjZXNzIG5lc3RlZCBwcm9wZXJ0aWVzIHNhZmVseS5cclxuICAgKi9cclxuICBwcml2YXRlIHJlZ2lzdGVyUHJvcEZpbHRlcigpOiB2b2lkIHtcclxuICAgIHRoaXMuZW5naW5lLnJlZ2lzdGVyRmlsdGVyKCdwcm9wJywgKGlucHV0OiBhbnksIHBhdGg6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaW5wdXQgPT0gbnVsbCkgcmV0dXJuICcnO1xyXG4gICAgICBpZiAodHlwZW9mIHBhdGggIT09ICdzdHJpbmcnIHx8ICFwYXRoLnRyaW0oKSkgcmV0dXJuICcnO1xyXG5cclxuICAgICAgLy8gc3VwcG9ydCBkb3QgJiBzaW1wbGUgYnJhY2tldCBub3RhdGlvbjogYS5iLCBhWzBdLCBhW2tleV1cclxuICAgICAgY29uc3Qgc2VnbWVudHMgPSBwYXRoXHJcbiAgICAgICAgLnJlcGxhY2UoL1xcWyhcXGQrKVxcXS9nLCAnLiQxJykgICAgIC8vIFswXSAtPiAuMFxyXG4gICAgICAgIC5yZXBsYWNlKC9cXFsoXFx3KylcXF0vZywgJy4kMScpICAgICAvLyBba2V5XSAtPiAua2V5XHJcbiAgICAgICAgLnNwbGl0KCcuJylcclxuICAgICAgICAubWFwKHMgPT4gcy50cmltKCkpXHJcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcclxuXHJcbiAgICAgIGxldCBjdXI6IGFueSA9IGlucHV0O1xyXG5cclxuICAgICAgZm9yIChjb25zdCBzZWcgb2Ygc2VnbWVudHMpIHtcclxuICAgICAgICBpZiAoY3VyID09IG51bGwpIHJldHVybiAnJztcclxuXHJcbiAgICAgICAgY29uc3QgaWR4ID0gTnVtYmVyKHNlZyk7XHJcbiAgICAgICAgY29uc3Qga2V5OiBhbnkgPSBOdW1iZXIuaXNOYU4oaWR4KSA/IHNlZyA6IGlkeDtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGN1ciA9IFJlZmxlY3QuZ2V0KGN1ciwga2V5KTtcclxuICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBjdXIgPz8gJyc7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
|