@stemy/ngx-utils 13.0.1 → 13.0.4
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/esm2020/ngx-utils/common-types.mjs +1 -1
- package/esm2020/ngx-utils/ngx-utils.imports.mjs +163 -0
- package/esm2020/ngx-utils/ngx-utils.module.mjs +75 -234
- package/esm2020/ngx-utils/services/config.service.mjs +10 -14
- package/fesm2015/stemy-ngx-utils.mjs +39 -90
- package/fesm2015/stemy-ngx-utils.mjs.map +1 -1
- package/fesm2020/stemy-ngx-utils.mjs +39 -90
- package/fesm2020/stemy-ngx-utils.mjs.map +1 -1
- package/ngx-utils/common-types.d.ts +1 -0
- package/ngx-utils/ngx-utils.module.d.ts +50 -73
- package/ngx-utils/services/config.service.d.ts +3 -2
- package/package.json +1 -1
- package/bundles/stemy-ngx-utils.umd.js +0 -6121
- package/bundles/stemy-ngx-utils.umd.js.map +0 -1
- package/bundles/stemy-ngx-utils.umd.min.js +0 -16
- package/bundles/stemy-ngx-utils.umd.min.js.map +0 -1
- package/esm2015/ngx-utils/common-types.js +0 -116
- package/esm2015/ngx-utils/components/dynamic-table/dynamic-table.component.js +0 -139
- package/esm2015/ngx-utils/components/pagination-menu/pagination-menu.component.js +0 -96
- package/esm2015/ngx-utils/components/unordered-list/unordered-list.component.js +0 -51
- package/esm2015/ngx-utils/directives/async-method.base.js +0 -54
- package/esm2015/ngx-utils/directives/async-method.directive.js +0 -24
- package/esm2015/ngx-utils/directives/background.directive.js +0 -51
- package/esm2015/ngx-utils/directives/dynamic-table-template.directive.js +0 -19
- package/esm2015/ngx-utils/directives/global-template.directive.js +0 -27
- package/esm2015/ngx-utils/directives/icon.directive.js +0 -59
- package/esm2015/ngx-utils/directives/ngx-template-outlet.directive.js +0 -88
- package/esm2015/ngx-utils/directives/pagination-item.directive.js +0 -33
- package/esm2015/ngx-utils/directives/pagination.directive.js +0 -76
- package/esm2015/ngx-utils/directives/resource-if.directive.js +0 -51
- package/esm2015/ngx-utils/directives/sticky-class.directive.js +0 -35
- package/esm2015/ngx-utils/directives/sticky.directive.js +0 -48
- package/esm2015/ngx-utils/directives/unordered-list-item.directive.js +0 -70
- package/esm2015/ngx-utils/directives/unordered-list-template.directive.js +0 -26
- package/esm2015/ngx-utils/ngx-utils.module.js +0 -238
- package/esm2015/ngx-utils/pipes/chunk.pipe.js +0 -21
- package/esm2015/ngx-utils/pipes/entries.pipe.js +0 -24
- package/esm2015/ngx-utils/pipes/extra-item-properties.pipe.js +0 -27
- package/esm2015/ngx-utils/pipes/filter.pipe.js +0 -38
- package/esm2015/ngx-utils/pipes/find.pipe.js +0 -25
- package/esm2015/ngx-utils/pipes/format-number.pipe.js +0 -19
- package/esm2015/ngx-utils/pipes/get-offset.pipe.js +0 -13
- package/esm2015/ngx-utils/pipes/get-type.pipe.js +0 -12
- package/esm2015/ngx-utils/pipes/global-template.pipe.js +0 -37
- package/esm2015/ngx-utils/pipes/group-by.pipe.js +0 -23
- package/esm2015/ngx-utils/pipes/is-type.pipe.js +0 -12
- package/esm2015/ngx-utils/pipes/join.pipe.js +0 -15
- package/esm2015/ngx-utils/pipes/keys.pipe.js +0 -18
- package/esm2015/ngx-utils/pipes/map.pipe.js +0 -25
- package/esm2015/ngx-utils/pipes/max.pipe.js +0 -22
- package/esm2015/ngx-utils/pipes/min.pipe.js +0 -22
- package/esm2015/ngx-utils/pipes/reduce.pipe.js +0 -26
- package/esm2015/ngx-utils/pipes/remap.pipe.js +0 -28
- package/esm2015/ngx-utils/pipes/replace.pipe.js +0 -12
- package/esm2015/ngx-utils/pipes/reverse.pipe.js +0 -20
- package/esm2015/ngx-utils/pipes/round.pipe.js +0 -19
- package/esm2015/ngx-utils/pipes/safe-html.pipe.js +0 -32
- package/esm2015/ngx-utils/pipes/translate.pipe.js +0 -81
- package/esm2015/ngx-utils/pipes/values.pipe.js +0 -18
- package/esm2015/ngx-utils/plugins/resize-event.plugin.js +0 -56
- package/esm2015/ngx-utils/plugins/scroll-event.plugin.js +0 -36
- package/esm2015/ngx-utils/services/acl.service.js +0 -79
- package/esm2015/ngx-utils/services/api.service.js +0 -35
- package/esm2015/ngx-utils/services/auth.service.js +0 -14
- package/esm2015/ngx-utils/services/base-http.client.js +0 -46
- package/esm2015/ngx-utils/services/base-http.service.js +0 -285
- package/esm2015/ngx-utils/services/config.service.js +0 -122
- package/esm2015/ngx-utils/services/error-handler.service.js +0 -49
- package/esm2015/ngx-utils/services/events.service.js +0 -24
- package/esm2015/ngx-utils/services/formatter.service.js +0 -44
- package/esm2015/ngx-utils/services/global-template.service.js +0 -35
- package/esm2015/ngx-utils/services/icon.service.js +0 -24
- package/esm2015/ngx-utils/services/language.service.js +0 -117
- package/esm2015/ngx-utils/services/open-api.service.js +0 -41
- package/esm2015/ngx-utils/services/promise.service.js +0 -52
- package/esm2015/ngx-utils/services/state.service.js +0 -181
- package/esm2015/ngx-utils/services/static-language.service.js +0 -152
- package/esm2015/ngx-utils/services/storage.service.js +0 -48
- package/esm2015/ngx-utils/services/toaster.service.js +0 -29
- package/esm2015/ngx-utils/services/translated-url.serializer.js +0 -70
- package/esm2015/ngx-utils/services/universal.service.js +0 -75
- package/esm2015/ngx-utils/utils/ajax-request-handler.js +0 -40
- package/esm2015/ngx-utils/utils/array.utils.js +0 -100
- package/esm2015/ngx-utils/utils/auth.guard.js +0 -156
- package/esm2015/ngx-utils/utils/canvas.utils.js +0 -388
- package/esm2015/ngx-utils/utils/date.utils.js +0 -28
- package/esm2015/ngx-utils/utils/file.utils.js +0 -90
- package/esm2015/ngx-utils/utils/generic-value.js +0 -20
- package/esm2015/ngx-utils/utils/geometry.js +0 -132
- package/esm2015/ngx-utils/utils/initializer.js +0 -20
- package/esm2015/ngx-utils/utils/loader.utils.js +0 -55
- package/esm2015/ngx-utils/utils/math.utils.js +0 -15
- package/esm2015/ngx-utils/utils/object.utils.js +0 -263
- package/esm2015/ngx-utils/utils/observable.utils.js +0 -63
- package/esm2015/ngx-utils/utils/reflect.utils.js +0 -33
- package/esm2015/ngx-utils/utils/set.utils.js +0 -20
- package/esm2015/ngx-utils/utils/string.utils.js +0 -28
- package/esm2015/ngx-utils/utils/timer.utils.js +0 -52
- package/esm2015/ngx-utils/utils/unique.utils.js +0 -24
- package/esm2015/ngx-utils/utils/vector.js +0 -77
- package/esm2015/public_api.js +0 -84
- package/esm2015/stemy-ngx-utils.js +0 -7
- package/fesm2015/stemy-ngx-utils.js +0 -4860
- package/fesm2015/stemy-ngx-utils.js.map +0 -1
- package/stemy-ngx-utils.metadata.json +0 -1
|
@@ -113,4 +113,4 @@ export const GLOBAL_TEMPLATES = new InjectionToken("global-templates");
|
|
|
113
113
|
// --- Valued promise ---
|
|
114
114
|
export class ValuedPromise extends Promise {
|
|
115
115
|
}
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25neC11dGlscy9jb21tb24tdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGNBQWMsRUFBOEIsV0FBVyxFQUFPLE1BQU0sZUFBZSxDQUFDO0FBSTFHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFTakQsTUFBTSxPQUFPLFdBQVc7SUFDcEIsWUFBbUIsQ0FBUyxFQUFTLENBQVMsRUFBUyxDQUFTLEVBQVMsSUFBWSxHQUFHO1FBQXJFLE1BQUMsR0FBRCxDQUFDLENBQVE7UUFBUyxNQUFDLEdBQUQsQ0FBQyxDQUFRO1FBQVMsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUFTLE1BQUMsR0FBRCxDQUFDLENBQWM7SUFFeEYsQ0FBQztDQUNKO0FBU0QsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFpQyxJQUFJLGNBQWMsQ0FBZSxjQUFjLENBQUMsQ0FBQztBQW9DM0csTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQXFDLElBQUksY0FBYyxDQUFtQixrQkFBa0IsQ0FBQyxDQUFDO0FBb0IzSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQWlDLElBQUksY0FBYyxDQUFlLGNBQWMsQ0FBQyxDQUFDO0FBbUIzRywwQkFBMEI7QUFDMUIsTUFBTSxDQUFOLElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNuQiwrQ0FBSyxDQUFBO0lBQ0wsbURBQU8sQ0FBQTtBQUNYLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QjtBQVVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBb0MsSUFBSSxjQUFjLENBQWtCLGlCQUFpQixDQUFDLENBQUM7QUFjdkgsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUFrQixpQkFBaUIsQ0FBQyxDQUFD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QUFXLEdBQUcsSUFBSSxjQUFjLENBQWlCLGFBQWEsQ0FBQyxDQUFDO0FBRTdFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBTSxlQUFlLENBQUMsQ0FBQztBQUV0RSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQWdDLElBQUksY0FBYyxDQUFjLGtCQUFrQixDQUFDLENBQUM7QUFLN0csTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUF1Qix3QkFBd0IsQ0FBQyxDQUFDO0FBY2hHLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksY0FBYyxDQUF1QixrQkFBa0IsQ0FBQyxDQUFDO0FBaUI3Rix5QkFBeUI7QUFDekIsTUFBTSxPQUFPLGFBQWlCLFNBQVEsT0FBVTtDQUUvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXZlbnRFbWl0dGVyLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0b3IsIE5nWm9uZSwgUHJvdmlkZXIsIFRlbXBsYXRlUmVmLCBUeXBlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0h0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwSGVhZGVyc30gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7QWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgRGF0YSwgUm91dGUsIFVybFRyZWV9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHtSZXF1ZXN0fSBmcm9tIFwiZXhwcmVzc1wiO1xyXG5pbXBvcnQge1JlZmxlY3RVdGlsc30gZnJvbSBcIi4vdXRpbHMvcmVmbGVjdC51dGlsc1wiO1xyXG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi91dGlscy9vYmplY3QudXRpbHNcIjtcclxuXHJcbi8vIC0tLSBVdGlsc1xyXG5leHBvcnQgaW50ZXJmYWNlIElSZXNvbHZlRmFjdG9yeSB7XHJcbiAgICBmdW5jOiBGdW5jdGlvbjtcclxuICAgIHR5cGU/OiBhbnk7XHJcbiAgICBwYXJhbXM/OiBhbnlbXTtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENhbnZhc0NvbG9yIHtcclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByOiBudW1iZXIsIHB1YmxpYyBnOiBudW1iZXIsIHB1YmxpYyBiOiBudW1iZXIsIHB1YmxpYyBhOiBudW1iZXIgPSAyNTUpIHtcclxuXHJcbiAgICB9XHJcbn1cclxuXHJcbi8vIC0tLSBJY29uIHNlcnZpY2UgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUljb25TZXJ2aWNlIHtcclxuICAgIGlzRGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgICBpY29uc0xvYWRlZDogRXZlbnRFbWl0dGVyPGFueT47XHJcbiAgICBnZXRJY29uKGljb246IHN0cmluZywgYWN0aXZlSWNvbjogc3RyaW5nLCBhY3RpdmU6IGJvb2xlYW4pOiBQcm9taXNlPHN0cmluZz47XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBJQ09OX1NFUlZJQ0U6IEluamVjdGlvblRva2VuPElJY29uU2VydmljZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SUljb25TZXJ2aWNlPihcImljb24tc2VydmljZVwiKTtcclxuXHJcbi8vIC0tLSBMYW5ndWFnZSBzZXJ2aWNlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElUcmFuc2xhdGlvbiB7XHJcbiAgICBsYW5nOiBzdHJpbmc7XHJcbiAgICB0cmFuc2xhdGlvbjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUcmFuc2xhdGlvbnMge1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElMYW5ndWFnZVNldHRpbmdzIHtcclxuICAgIGxhbmd1YWdlczogc3RyaW5nW107XHJcbiAgICBkZXZMYW5ndWFnZXM6IHN0cmluZ1tdO1xyXG4gICAgZGVmYXVsdExhbmd1YWdlOiBzdHJpbmc7XHJcbiAgICBzZXR0aW5ncz86IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTGFuZ3VhZ2VTZXJ2aWNlIHtcclxuICAgIGN1cnJlbnRMYW5ndWFnZTogc3RyaW5nO1xyXG4gICAgZWRpdExhbmd1YWdlOiBzdHJpbmc7XHJcbiAgICBkaXNhYmxlVHJhbnNsYXRpb25zOiBib29sZWFuO1xyXG4gICAgZGVmYXVsdExhbmd1YWdlOiBzdHJpbmc7XHJcbiAgICBkaWN0aW9uYXJ5OiBJVHJhbnNsYXRpb25zO1xyXG4gICAgcmVhZG9ubHkgbGFuZ3VhZ2VzOiBSZWFkb25seUFycmF5PHN0cmluZz47XHJcbiAgICByZWFkb25seSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50O1xyXG4gICAgcmVwbGFjZUxhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZDtcclxuICAgIGFkZExhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZDtcclxuICAgIGdldFRyYW5zbGF0aW9uU3luYyhrZXk6IHN0cmluZywgcGFyYW1zPzogYW55KTogc3RyaW5nO1xyXG4gICAgZ2V0VHJhbnNsYXRpb24oa2V5OiBzdHJpbmcsIHBhcmFtcz86IGFueSk6IFByb21pc2U8c3RyaW5nPjtcclxuICAgIGdldFRyYW5zbGF0aW9ucyguLi5rZXlzOiBzdHJpbmdbXSk6IFByb21pc2U8SVRyYW5zbGF0aW9ucz47XHJcbiAgICBnZXRUcmFuc2xhdGlvbkZyb21PYmplY3QodHJhbnNsYXRpb25zOiBJVHJhbnNsYXRpb25zLCBwYXJhbXM/OiBhbnksIGxhbmc/OiBzdHJpbmcpOiBzdHJpbmc7XHJcbiAgICBnZXRUcmFuc2xhdGlvbkZyb21BcnJheSh0cmFuc2xhdGlvbnM6IElUcmFuc2xhdGlvbltdLCBwYXJhbXM/OiBhbnksIGxhbmc/OiBzdHJpbmcpOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBMQU5HVUFHRV9TRVJWSUNFOiBJbmplY3Rpb25Ub2tlbjxJTGFuZ3VhZ2VTZXJ2aWNlPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJTGFuZ3VhZ2VTZXJ2aWNlPihcImxhbmd1YWdlLXNlcnZpY2VcIik7XHJcblxyXG4vLyAtLS0gQXV0aCBTZXJ2aWNlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElBdXRoU2VydmljZSB7XHJcbiAgICBpc0F1dGhlbnRpY2F0ZWQ6IGJvb2xlYW47XHJcbiAgICB1c2VyQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT47XHJcbiAgICBjaGVja0F1dGhlbnRpY2F0ZWQoKTogUHJvbWlzZTxib29sZWFuPjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUm91dGVWYWxpZGF0b3IgPSAoYXV0aDogSUF1dGhTZXJ2aWNlLCByb3V0ZT86IElSb3V0ZSwgbmV4dD86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpID0+IFByb21pc2U8Ym9vbGVhbj47XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElSb3V0ZURhdGEgZXh0ZW5kcyBEYXRhIHtcclxuICAgIHJldHVyblN0YXRlPzogc3RyaW5nW107XHJcbiAgICBndWFyZHM/OiBBcnJheTxJUmVzb2x2ZUZhY3RvcnkgfCBSb3V0ZVZhbGlkYXRvcj47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJvdXRlIGV4dGVuZHMgUm91dGUge1xyXG4gICAgZGF0YT86IElSb3V0ZURhdGE7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBBVVRIX1NFUlZJQ0U6IEluamVjdGlvblRva2VuPElBdXRoU2VydmljZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SUF1dGhTZXJ2aWNlPihcImF1dGgtc2VydmljZVwiKTtcclxuXHJcbi8vIC0tLSBBY2wgU2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJQWNsQ29tcG9uZW50IHtcclxuICAgIG9uVXNlckluaXRpYWxpemVkKCk6IHZvaWQ7XHJcbiAgICBvblVzZXJDaGFuZ2VkKCk6IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJvdXRlU3RhdGVJbmZvIHtcclxuICAgIHJvdXRlOiBJUm91dGU7XHJcbiAgICBndWFyZDogYW55O1xyXG4gICAgZGlydHk6IGJvb2xlYW47XHJcbiAgICBmaXJzdDogYm9vbGVhbjtcclxuICAgIGNvbXBvbmVudD86IGFueTtcclxufVxyXG5cclxuLy8gLS0tIFN0YXRlIFNlcnZpY2UgLS0tXHJcbmV4cG9ydCB0eXBlIE5hdmlnYXRpb25VcmxQYXJhbSA9IGFueVtdIHwgc3RyaW5nIHwgVXJsVHJlZTtcclxuXHJcbi8vIC0tLSBTdG9yYWdlIFNlcnZpY2UgLS0tXHJcbmV4cG9ydCBlbnVtIFN0b3JhZ2VNb2RlIHtcclxuICAgIExvY2FsLFxyXG4gICAgU2Vzc2lvblxyXG59XHJcblxyXG4vLyAtLS0gVG9hc3RlciBTZXJ2aWNlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElUb2FzdGVyU2VydmljZSB7XHJcbiAgICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG4gICAgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG4gICAgc3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG4gICAgd2FybmluZyhtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgVE9BU1RFUl9TRVJWSUNFOiBJbmplY3Rpb25Ub2tlbjxJVG9hc3RlclNlcnZpY2U+ID0gbmV3IEluamVjdGlvblRva2VuPElUb2FzdGVyU2VydmljZT4oXCJ0b2FzdGVyLXNlcnZpY2VcIik7XHJcblxyXG4vLyAtLS0gUHJvbWlzZSBTZXJ2aWNlIC0tLVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUHJvbWlzZVNlcnZpY2Uge1xyXG4gICAgem9uZTogTmdab25lO1xyXG4gICAgY291bnQ6IG51bWJlcjtcclxuICAgIG9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPG51bWJlcj47XHJcbiAgICBjcmVhdGU8VD4oZXhlY3V0b3I6IChyZXNvbHZlOiAodmFsdWU/OiBUIHwgUHJvbWlzZUxpa2U8VD4pID0+IHZvaWQsIHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZCkgPT4gdm9pZCk6IFByb21pc2U8VD47XHJcbiAgICBhbGwocHJvbWlzZXM6IFByb21pc2U8YW55PltdKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgcmVzb2x2ZTxUPih2YWx1ZTogVCB8IFByb21pc2VMaWtlPFQ+KTogUHJvbWlzZTxUPjtcclxuICAgIHJlamVjdDxUPih2YWx1ZTogVCB8IFByb21pc2VMaWtlPFQ+KTogUHJvbWlzZTxUPjtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IFBST01JU0VfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJUHJvbWlzZVNlcnZpY2U+KFwicHJvbWlzZS1zZXJ2aWNlXCIpO1xyXG5cclxuLy8gLS0tIEFzeW5jIG1ldGhvZCAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJQXN5bmNNZXNzYWdlIHtcclxuICAgIG1lc3NhZ2U6IHN0cmluZztcclxuICAgIGNvbnRleHQ/OiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEFzeW5jTWV0aG9kID0gKGNvbnRleHQ/OiBhbnkpID0+IFByb21pc2U8SUFzeW5jTWVzc2FnZT47XHJcblxyXG4vLyAtLS0gVW5vcmRlcmVkIGxpc3QgLS0tXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBVbm9yZWRlcmVkTGlzdFRlbXBsYXRlIGV4dGVuZHMgVGVtcGxhdGVSZWY8YW55PiB7XHJcbiAgICBhYnN0cmFjdCB0eXBlOiBzdHJpbmc7XHJcbiAgICBhYnN0cmFjdCBzZWxlY3Rvcjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVub3JkZXJlZExpc3RUZW1wbGF0ZXMge1xyXG4gICAgW3R5cGU6IHN0cmluZ106IFRlbXBsYXRlUmVmPGFueT47XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFVub3JkZXJlZExpc3RTdHlsZSA9IFwidGFibGVcIiB8IFwibGlzdFwiO1xyXG5cclxuLy8gLS0tIEFqYXggcmVxdWVzdCAgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFqYXhSZXF1ZXN0RGV0YWlscyB7XHJcbiAgICByZXF1ZXN0OiBYTUxIdHRwUmVxdWVzdCxcclxuICAgIG1ldGhvZDogc3RyaW5nO1xyXG4gICAgdXJsOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEFqYXhSZXF1ZXN0Q2FsbGJhY2sgPSAoZGV0YWlsczogSUFqYXhSZXF1ZXN0RGV0YWlscywgcGFyYW1zOiBhbnkpID0+IHZvaWQ7XHJcblxyXG4vLyAtLS0gTG9hZGVyIHV0aWxzIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElTY3JpcHRQcm9taXNlcyB7XHJcbiAgICBbc3JjOiBzdHJpbmddOiBQcm9taXNlPEhUTUxTY3JpcHRFbGVtZW50PjtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIElTdHlsZVByb21pc2VzIHtcclxuICAgIFtzcmM6IHN0cmluZ106IFByb21pc2U8SFRNTExpbmtFbGVtZW50PjtcclxufVxyXG5cclxuLy8gLS0tIE9ic2VydmFibGUgdXRpbHMgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVNlYXJjaE9ic2VydmFibGUge1xyXG4gICAgc2VhcmNoOiBzdHJpbmc7XHJcbiAgICBnZXRTZWFyY2hSZXN1bHRzKHRva2VuOiBzdHJpbmcpOiBQcm9taXNlPGFueVtdPjtcclxufVxyXG5cclxuLy8gLS0tIFJlZmxlY3QgdXRpbHMgLS0tXHJcbmV4cG9ydCBmdW5jdGlvbiBGYWN0b3J5RGVwZW5kZW5jaWVzKC4uLmRlcGVuZGVuY2llczogQXJyYXk8SW5qZWN0aW9uVG9rZW48YW55PiB8IFByb3ZpZGVyPik6IE1ldGhvZERlY29yYXRvciB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogYW55LCBtZXRob2Q6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIFJlZmxlY3RVdGlscy5kZWZpbmVNZXRhZGF0YShcImZhY3RvcnlEZXBlbmRlbmNpZXNcIiwgZGVwZW5kZW5jaWVzLCB0YXJnZXQsIG1ldGhvZCk7XHJcbiAgICB9O1xyXG59XHJcblxyXG4vLyAtLS0gVGltZXIgdXRpbHMgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRpbWVyIHtcclxuICAgIGlkPzogYW55O1xyXG4gICAgZnVuYz86IEZ1bmN0aW9uO1xyXG4gICAgdGltZT86IG51bWJlcjtcclxuICAgIHJ1bj86ICgpID0+IHZvaWQ7XHJcbiAgICBzZXQ/OiAoZnVuYzogRnVuY3Rpb24sIHRpbWU6IG51bWJlcikgPT4gdm9pZDtcclxuICAgIGNsZWFyPzogKCkgPT4gdm9pZDtcclxufVxyXG5cclxuLy8gLS0tIEV4dHJhSXRlbVByb3BlcnRpZXMgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUV4dHJhUHJvcGVydGllcyB7XHJcbiAgICBbcHJvcDogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG4vLyAtLS0gR3JvdXAgYnkgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUdyb3VwTWFwIHtcclxuICAgIFtjb2x1bW46IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuLy8gLS0tIFRyYW5zbGF0ZSAtLS1cclxuZXhwb3J0IHR5cGUgVHJhbnNsYXRpb25RdWVyeSA9IHN0cmluZyB8IElUcmFuc2xhdGlvbnMgfCBJVHJhbnNsYXRpb25bXTtcclxuXHJcbi8vIC0tLSBQYWdpbmF0aW9uIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElQYWdlSW5mbyB7XHJcbiAgICB0ZXh0OiBzdHJpbmc7XHJcbiAgICBudW1iZXI6IG51bWJlcjtcclxuICAgIGFjdGl2ZTogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUGFnaW5hdGlvbkRhdGEge1xyXG4gICAgdG90YWw6IG51bWJlcjtcclxuICAgIGl0ZW1zOiBhbnlbXTtcclxuICAgIG1ldGE/OiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFBhZ2luYXRpb25EYXRhTG9hZGVyID0gKHBhZ2U6IG51bWJlciwgaXRlbXNQZXJQYWdlOiBudW1iZXIpID0+IFByb21pc2U8SVBhZ2luYXRpb25EYXRhPjtcclxuXHJcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uSXRlbUNvbnRleHQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBpdGVtOiBhbnksIHB1YmxpYyBwYXJhbGxlbEl0ZW06IGFueSwgcHVibGljIGNvdW50OiBudW1iZXIsIHB1YmxpYyBpbmRleDogbnVtYmVyLCBwdWJsaWMgZGF0YUluZGV4OiBudW1iZXIpIHtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZmlyc3QoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kZXggPT09IDA7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGxhc3QoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kZXggPT09IHRoaXMuY291bnQgLSAxO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBldmVuKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluZGV4ICUgMiA9PT0gMDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgb2RkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhdGhpcy5ldmVuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFN1cHBvcnQgZm9yIG9sZCBkeW5hbWljIHRhYmxlIGltcGxlbWVudGF0aW9uXHJcbiAgICBnZXQgcm93KCk6IGFueSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJEeW5hbWljVGFibGUgcm93IGlzIGRlcHJlY2F0ZWQgdXNlIGl0ZW0gaW5zdGVhZFwiKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5pdGVtO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFN1cHBvcnQgZm9yIG9sZCBkeW5hbWljIHRhYmxlIGltcGxlbWVudGF0aW9uXHJcbiAgICBnZXQgcGFyYWxsZWxSb3coKTogYW55IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkR5bmFtaWNUYWJsZSBwYXJhbGxlbFJvdyBpcyBkZXByZWNhdGVkIHVzZSBwYXJhbGxlbEl0ZW0gaW5zdGVhZFwiKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5wYXJhbGxlbEl0ZW07XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyKGZpbHRlclJ4OiBSZWdFeHApOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5pdGVtKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5pdGVtW2tleV07XHJcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc051bGxPclVuZGVmaW5lZCh2YWx1ZSkgfHwgT2JqZWN0VXRpbHMuaXNPYmplY3QodmFsdWUpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgY29uc3QgdGVzdFZhbHVlID0gT2JqZWN0VXRpbHMuaXNTdHJpbmcodmFsdWUpID8gdmFsdWUgOiB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICBpZiAodGVzdFZhbHVlLm1hdGNoKGZpbHRlclJ4KSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxufVxyXG5cclxuLy8gLS0tIEh0dHAgc2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJSHR0cEhlYWRlcnMge1xyXG4gICAgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUh0dHBQYXJhbXMge1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElSZXF1ZXN0T3B0aW9ucyB7XHJcbiAgICBtZXRob2Q/OiBzdHJpbmc7XHJcbiAgICBib2R5PzogYW55O1xyXG4gICAgaGVhZGVycz86IElIdHRwSGVhZGVycyB8IEh0dHBIZWFkZXJzO1xyXG4gICAgb3JpZ2luYWxIZWFkZXJzPzogSUh0dHBIZWFkZXJzO1xyXG4gICAgcGFyYW1zPzogSUh0dHBQYXJhbXM7XHJcbiAgICBvYnNlcnZlPzogXCJib2R5XCIgfCBcInJlc3BvbnNlXCI7XHJcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XHJcbiAgICByZXNwb25zZVR5cGU/OiBcImFycmF5YnVmZmVyXCIgfCBcImJsb2JcIiB8IFwianNvblwiIHwgXCJ0ZXh0XCI7XHJcbiAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xyXG4gICAgdGltZW91dD86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJSXNzdWVDb250ZXh0IHtcclxuICAgIHVybDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQcm9ncmVzcyB7XHJcbiAgICBwZXJjZW50YWdlPzogbnVtYmVyO1xyXG4gICAgbG9hZGVkPzogbnVtYmVyO1xyXG4gICAgdG90YWw/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFByb2dyZXNzTGlzdGVuZXIgPSAocHJvZ3Jlc3M6IElQcm9ncmVzcykgPT4gdm9pZDtcclxuXHJcbmV4cG9ydCB0eXBlIFByb21pc2VFeGVjdXRvciA9IChyZXNvbHZlOiAodmFsdWU/OiBhbnkgfCBQcm9taXNlTGlrZTxhbnk+KSA9PiB2b2lkLCByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQpID0+IHZvaWQ7XHJcblxyXG5leHBvcnQgY2xhc3MgSHR0cFByb21pc2UgZXh0ZW5kcyBQcm9taXNlPGFueT4ge1xyXG5cclxuICAgIHByb3RlY3RlZCByZWplY3RIYW5kbGVyOiAocmVhc29uPzogSHR0cEVycm9yUmVzcG9uc2UpID0+IHZvaWQ7XHJcbiAgICBwcm90ZWN0ZWQgaGFzUmVqZWN0SGFuZGxlcjogYm9vbGVhbjtcclxuICAgIHByb3RlY3RlZCBhdHRhY2hDb3VudDogbnVtYmVyO1xyXG4gICAgcHJvdGVjdGVkIHJ1bkNvdW50OiBudW1iZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVqZWN0SGFuZGxlcjogKHJlYXNvbj86IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB2b2lkLCBleGVjdXRvcjogUHJvbWlzZUV4ZWN1dG9yKSB7XHJcbiAgICAgICAgc3VwZXIoZXhlY3V0b3IpO1xyXG4gICAgICAgIHRoaXMucmVqZWN0SGFuZGxlciA9IHJlamVjdEhhbmRsZXI7XHJcbiAgICAgICAgdGhpcy5hdHRhY2hDb3VudCA9IDA7XHJcbiAgICAgICAgdGhpcy5ydW5Db3VudCA9IDA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhlbjxUUmVzdWx0MSwgVFJlc3VsdDI+KG9uRnVsZmlsbGVkPzogKCh2YWx1ZTogYW55KSA9PiAoUHJvbWlzZUxpa2U8VFJlc3VsdDE+IHwgVFJlc3VsdDEpKSB8IG51bGwgfCB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25SZWplY3RlZD86ICgocmVhc29uOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gKFByb21pc2VMaWtlPFRSZXN1bHQyPiB8IFRSZXN1bHQyKSkgfCBudWxsIHwgdW5kZWZpbmVkKTogUHJvbWlzZTxUUmVzdWx0MSB8IFRSZXN1bHQyPiB7XHJcbiAgICAgICAgdGhpcy5hdHRhY2hDb3VudCsrO1xyXG4gICAgICAgIHJldHVybiBzdXBlci50aGVuKHZhbHVlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5ydW5Db3VudCsrO1xyXG4gICAgICAgICAgICByZXR1cm4gb25GdWxmaWxsZWQgPyBvbkZ1bGZpbGxlZCh2YWx1ZSkgOiBudWxsO1xyXG4gICAgICAgIH0sIChyZWFzb246IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0gb25SZWplY3RlZCA/IG9uUmVqZWN0ZWQocmVhc29uKSA6IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMuaGFzUmVqZWN0SGFuZGxlciA9IHRoaXMuaGFzUmVqZWN0SGFuZGxlciB8fCAob25SZWplY3RlZCAmJiByZXN1bHQgIT09IGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5ydW5Db3VudCsrO1xyXG4gICAgICAgICAgICB0aGlzLnJlamVjdEhhbmRsZXIodGhpcy5ydW5Db3VudCA9PSB0aGlzLmF0dGFjaENvdW50ICYmICF0aGlzLmhhc1JlamVjdEhhbmRsZXIgPyByZWFzb24gOiBudWxsKTtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjYXRjaDxUUmVzdWx0ID0gbmV2ZXI+KG9uUmVqZWN0ZWQ/OiAoKHJlYXNvbjogSHR0cEVycm9yUmVzcG9uc2UpID0+IChQcm9taXNlTGlrZTxUUmVzdWx0PiB8IFRSZXN1bHQpKSB8IG51bGwgfCB1bmRlZmluZWQpOiBQcm9taXNlPGFueSB8IFRSZXN1bHQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy50aGVuKG51bGwsIG9uUmVqZWN0ZWQpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwU2VydmljZSB7XHJcbiAgICBsYW5ndWFnZTogSUxhbmd1YWdlU2VydmljZTtcclxuICAgIHVybCh1cmw6IHN0cmluZyk6IHN0cmluZztcclxuICAgIG1ha2VMaXN0UGFyYW1zKHBhZ2U6IG51bWJlciwgaXRlbXNQZXJQYWdlOiBudW1iZXIsIG9yZGVyQnk/OiBzdHJpbmcsIG9yZGVyRGVzY2VuZGluZz86IGJvb2xlYW4sIGZpbHRlcj86IHN0cmluZyk6IElIdHRwUGFyYW1zO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgRVhQUkVTU19SRVFVRVNUID0gbmV3IEluamVjdGlvblRva2VuPFJlcXVlc3Q+KFwiZXhwcmVzcy1yZXF1ZXN0XCIpO1xyXG5cclxuLy8gLS0tIEFwaSBzZXJ2aWNlIC0tLVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQXBpU2VydmljZSBleHRlbmRzIElIdHRwU2VydmljZSB7XHJcbiAgICBjYWNoZTogYW55O1xyXG4gICAgY2xpZW50OiBIdHRwQ2xpZW50O1xyXG4gICAgZ2V0KHVybDogc3RyaW5nLCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgZGVsZXRlKHVybDogc3RyaW5nLCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgcG9zdCh1cmw6IHN0cmluZywgYm9keT86IGFueSwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIHB1dCh1cmw6IHN0cmluZywgYm9keT86IGFueSwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIHBhdGNoKHVybDogc3RyaW5nLCBib2R5PzogYW55LCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgdXBsb2FkKHVybDogc3RyaW5nLCBib2R5OiBhbnksIGxpc3RlbmVyPzogUHJvZ3Jlc3NMaXN0ZW5lciwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIGxpc3QodXJsOiBzdHJpbmcsIHBhcmFtczogSUh0dHBQYXJhbXMpOiBQcm9taXNlPElQYWdpbmF0aW9uRGF0YT47XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBBUElfU0VSVklDRTogSW5qZWN0aW9uVG9rZW48SUFwaVNlcnZpY2U+ID0gbmV3IEluamVjdGlvblRva2VuPElBcGlTZXJ2aWNlPihcImFwaS1zZXJ2aWNlXCIpO1xyXG5cclxuLy8gLS0tIE9wZW5BcGkgc2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJT3BlbkFwaVNjaGVtYVByb3BlcnR5IHtcclxuICAgIGlkOiBzdHJpbmc7XHJcbiAgICB0eXBlPzogc3RyaW5nO1xyXG4gICAgZm9ybWF0Pzogc3RyaW5nO1xyXG4gICAgY29sdW1uPzogYm9vbGVhbjtcclxuICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzPzogYW55O1xyXG4gICAgJHJlZj86IHN0cmluZztcclxuICAgIGl0ZW1zPzogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eTtcclxuICAgIGVudW0/OiBzdHJpbmdbXTtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJT3BlbkFwaVNjaGVtYSB7XHJcbiAgICBwcm9wZXJ0aWVzOiB7XHJcbiAgICAgICAgW25hbWU6IHN0cmluZ106IElPcGVuQXBpU2NoZW1hUHJvcGVydHk7XHJcbiAgICB9O1xyXG4gICAgcmVxdWlyZWQ6IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElPcGVuQXBpU2NoZW1hcyB7XHJcbiAgICBbbmFtZTogc3RyaW5nXTogSU9wZW5BcGlTY2hlbWE7XHJcbn1cclxuXHJcbi8vIC0tLSBEeW5hbWljIHRhYmxlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZUNvbHVtbnMge1xyXG4gICAgW2NvbHVtbjogc3RyaW5nXTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZVRlbXBsYXRlIHtcclxuICAgIGNvbHVtbjogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgICBwdXJlOiBib29sZWFuO1xyXG4gICAgcmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZVRlbXBsYXRlcyB7XHJcbiAgICBbY29sdW1uOiBzdHJpbmddOiBJVGFibGVUZW1wbGF0ZTtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgVGFibGVEYXRhTG9hZGVyID0gKHBhZ2U6IG51bWJlciwgcm93c1BlclBhZ2U6IG51bWJlciwgb3JkZXJCeTogc3RyaW5nLCBvcmRlckRlc2NlbmRpbmc6IGJvb2xlYW4sIGZpbHRlcjogc3RyaW5nKSA9PiBQcm9taXNlPElQYWdpbmF0aW9uRGF0YT47XHJcblxyXG4vLyAtLS0gUmVzb3VyY2UgaWYgLS0tXHJcbmV4cG9ydCBjbGFzcyBSZXNvdXJjZUlmQ29udGV4dCB7XHJcbiAgICByZXNvdXJjZTogc3RyaW5nO1xyXG4gICAgdXJsOiBzdHJpbmc7XHJcbn1cclxuXHJcbi8vIC0tLSBDb25maWdTZXJ2aWNlIC0tLVxyXG5leHBvcnQgY2xhc3MgSUNvbmZpZ3VyYXRpb24ge1xyXG4gICAgYmFzZVVybD86IHN0cmluZztcclxuICAgIGJhc2VEb21haW4/OiBzdHJpbmc7XHJcbiAgICB0cmFuc2xhdGlvblVybD86IHN0cmluZztcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ29uZmlnU2VydmljZSB7XHJcbiAgICBjb25maWc6IElDb25maWd1cmF0aW9uO1xyXG4gICAgcmVhZG9ubHkgbG9hZDogKCkgPT4gUHJvbWlzZTxJQ29uZmlndXJhdGlvbj47XHJcbiAgICBwcmVwYXJlVXJsKHVybDogc3RyaW5nLCBlbmRpbmc6IHN0cmluZyk6IHN0cmluZztcclxuICAgIGdldENvbmZpZ1ZhbHVlKGtleTogc3RyaW5nKTogYW55O1xyXG4gICAgZ2V0UXVlcnlQYXJhbWV0ZXIobmFtZTogc3RyaW5nLCB1cmw/OiBzdHJpbmcpOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBDT05GSUdfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJQ29uZmlnU2VydmljZT4oXCJjb25maWctc2VydmljZVwiKTtcclxuXHJcbmV4cG9ydCBjb25zdCBCQVNFX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJQ29uZmlndXJhdGlvbj4oXCJiYXNlLWNvbmZpZ1wiKTtcclxuXHJcbmV4cG9ydCBjb25zdCBTQ1JJUFRfUEFSQU1TID0gbmV3IEluamVjdGlvblRva2VuPGFueT4oXCJzY3JpcHQtcGFyYW1zXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IFJPT1RfRUxFTUVOVDogSW5qZWN0aW9uVG9rZW48SFRNTEVsZW1lbnQ+ID0gbmV3IEluamVjdGlvblRva2VuPEhUTUxFbGVtZW50PihcImFwcC1yb290LWVsZW1lbnRcIik7XHJcblxyXG4vLyAtLS0gRXJyb3IgaGFuZGxlciBzZXJ2aWNlIC0tLVxyXG5leHBvcnQgdHlwZSBFcnJvckhhbmRsZXJDYWxsYmFjayA9IChlcnJvcjogc3RyaW5nKSA9PiBhbnk7XHJcblxyXG5leHBvcnQgY29uc3QgRVJST1JfSEFORExFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFcnJvckhhbmRsZXJDYWxsYmFjaz4oXCJlcnJvci1oYW5kbGVyLWNhbGxiYWNrXCIpO1xyXG5cclxuLy8gLS0tIEdsb2JhbCB0ZW1wbGF0ZXMgc2VydmljZVxyXG5cclxuZXhwb3J0IHR5cGUgR2xvYmFsQ29tcG9uZW50TW9kaWZpZXIgPSAoY29tcG9uZW50OiBhbnkpID0+IGFueTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUdsb2JhbFRlbXBsYXRlcyB7XHJcbiAgICByZWFkb25seSB0ZW1wbGF0ZXNVcGRhdGVkOiBFdmVudEVtaXR0ZXI8dm9pZD47XHJcbiAgICBnZXQoaWQ6IHN0cmluZywgY29tcG9uZW50PzogYW55KTogVGVtcGxhdGVSZWY8YW55PjtcclxuICAgIGFkZChpZDogc3RyaW5nLCB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pik6IHZvaWQ7XHJcbiAgICByZW1vdmUoaWQ6IHN0cmluZyk6IHZvaWQ7XHJcbiAgICBhZGRDb21wb25lbnRNb2RpZmllcihpZDogc3RyaW5nLCBtb2RpZmllcjogR2xvYmFsQ29tcG9uZW50TW9kaWZpZXIpOiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgR0xPQkFMX1RFTVBMQVRFUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFcnJvckhhbmRsZXJDYWxsYmFjaz4oXCJnbG9iYWwtdGVtcGxhdGVzXCIpO1xyXG5cclxuLy8gLS0tIE1vZHVsZSAtLS1cclxuZXhwb3J0IHR5cGUgQXBwSW5pdGlhbGl6ZXJGdW5jID0gKCkgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElNb2R1bGVDb25maWcge1xyXG4gICAgYXBpU2VydmljZT86IFR5cGU8SUFwaVNlcnZpY2U+XHJcbiAgICBhdXRoU2VydmljZT86IFR5cGU8SUF1dGhTZXJ2aWNlPjtcclxuICAgIGljb25TZXJ2aWNlPzogVHlwZTxJSWNvblNlcnZpY2U+O1xyXG4gICAgbGFuZ3VhZ2VTZXJ2aWNlPzogVHlwZTxJTGFuZ3VhZ2VTZXJ2aWNlPjtcclxuICAgIHRvYXN0ZXJTZXJ2aWNlPzogVHlwZTxJVG9hc3RlclNlcnZpY2U+O1xyXG4gICAgcHJvbWlzZVNlcnZpY2U/OiBUeXBlPElQcm9taXNlU2VydmljZT47XHJcbiAgICBjb25maWdTZXJ2aWNlPzogVHlwZTxJQ29uZmlnU2VydmljZT47XHJcbiAgICBnbG9iYWxUZW1wbGF0ZXM/OiBUeXBlPElHbG9iYWxUZW1wbGF0ZXM+O1xyXG4gICAgaW5pdGlhbGl6ZUFwcD86IChpbmplY3RvcjogSW5qZWN0b3IpID0+IEFwcEluaXRpYWxpemVyRnVuYztcclxufVxyXG5cclxuLy8gLS0tIFZhbHVlZCBwcm9taXNlIC0tLVxyXG5leHBvcnQgY2xhc3MgVmFsdWVkUHJvbWlzZTxUPiBleHRlbmRzIFByb21pc2U8VD4ge1xyXG4gICAgdmFsdWU6IFQ7XHJcbn1cclxuIl19
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25neC11dGlscy9jb21tb24tdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGNBQWMsRUFBOEIsV0FBVyxFQUFPLE1BQU0sZUFBZSxDQUFDO0FBSTFHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFTakQsTUFBTSxPQUFPLFdBQVc7SUFDcEIsWUFBbUIsQ0FBUyxFQUFTLENBQVMsRUFBUyxDQUFTLEVBQVMsSUFBWSxHQUFHO1FBQXJFLE1BQUMsR0FBRCxDQUFDLENBQVE7UUFBUyxNQUFDLEdBQUQsQ0FBQyxDQUFRO1FBQVMsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUFTLE1BQUMsR0FBRCxDQUFDLENBQWM7SUFFeEYsQ0FBQztDQUNKO0FBU0QsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFpQyxJQUFJLGNBQWMsQ0FBZSxjQUFjLENBQUMsQ0FBQztBQW9DM0csTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQXFDLElBQUksY0FBYyxDQUFtQixrQkFBa0IsQ0FBQyxDQUFDO0FBb0IzSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQWlDLElBQUksY0FBYyxDQUFlLGNBQWMsQ0FBQyxDQUFDO0FBbUIzRywwQkFBMEI7QUFDMUIsTUFBTSxDQUFOLElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNuQiwrQ0FBSyxDQUFBO0lBQ0wsbURBQU8sQ0FBQTtBQUNYLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QjtBQVVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBb0MsSUFBSSxjQUFjLENBQWtCLGlCQUFpQixDQUFDLENBQUM7QUFjdkgsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUFrQixpQkFBaUIsQ0FBQyxDQUFD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QUFXLEdBQUcsSUFBSSxjQUFjLENBQWlCLGFBQWEsQ0FBQyxDQUFDO0FBRTdFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBTSxlQUFlLENBQUMsQ0FBQztBQUV0RSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQWdDLElBQUksY0FBYyxDQUFjLGtCQUFrQixDQUFDLENBQUM7QUFLN0csTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUF1Qix3QkFBd0IsQ0FBQyxDQUFDO0FBY2hHLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksY0FBYyxDQUF1QixrQkFBa0IsQ0FBQyxDQUFDO0FBa0I3Rix5QkFBeUI7QUFDekIsTUFBTSxPQUFPLGFBQWlCLFNBQVEsT0FBVTtDQUUvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXZlbnRFbWl0dGVyLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0b3IsIE5nWm9uZSwgUHJvdmlkZXIsIFRlbXBsYXRlUmVmLCBUeXBlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0h0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwSGVhZGVyc30gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7QWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgRGF0YSwgUm91dGUsIFVybFRyZWV9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHtSZXF1ZXN0fSBmcm9tIFwiZXhwcmVzc1wiO1xyXG5pbXBvcnQge1JlZmxlY3RVdGlsc30gZnJvbSBcIi4vdXRpbHMvcmVmbGVjdC51dGlsc1wiO1xyXG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi91dGlscy9vYmplY3QudXRpbHNcIjtcclxuXHJcbi8vIC0tLSBVdGlsc1xyXG5leHBvcnQgaW50ZXJmYWNlIElSZXNvbHZlRmFjdG9yeSB7XHJcbiAgICBmdW5jOiBGdW5jdGlvbjtcclxuICAgIHR5cGU/OiBhbnk7XHJcbiAgICBwYXJhbXM/OiBhbnlbXTtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENhbnZhc0NvbG9yIHtcclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByOiBudW1iZXIsIHB1YmxpYyBnOiBudW1iZXIsIHB1YmxpYyBiOiBudW1iZXIsIHB1YmxpYyBhOiBudW1iZXIgPSAyNTUpIHtcclxuXHJcbiAgICB9XHJcbn1cclxuXHJcbi8vIC0tLSBJY29uIHNlcnZpY2UgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUljb25TZXJ2aWNlIHtcclxuICAgIGlzRGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgICBpY29uc0xvYWRlZDogRXZlbnRFbWl0dGVyPGFueT47XHJcbiAgICBnZXRJY29uKGljb246IHN0cmluZywgYWN0aXZlSWNvbjogc3RyaW5nLCBhY3RpdmU6IGJvb2xlYW4pOiBQcm9taXNlPHN0cmluZz47XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBJQ09OX1NFUlZJQ0U6IEluamVjdGlvblRva2VuPElJY29uU2VydmljZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SUljb25TZXJ2aWNlPihcImljb24tc2VydmljZVwiKTtcclxuXHJcbi8vIC0tLSBMYW5ndWFnZSBzZXJ2aWNlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElUcmFuc2xhdGlvbiB7XHJcbiAgICBsYW5nOiBzdHJpbmc7XHJcbiAgICB0cmFuc2xhdGlvbjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUcmFuc2xhdGlvbnMge1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElMYW5ndWFnZVNldHRpbmdzIHtcclxuICAgIGxhbmd1YWdlczogc3RyaW5nW107XHJcbiAgICBkZXZMYW5ndWFnZXM6IHN0cmluZ1tdO1xyXG4gICAgZGVmYXVsdExhbmd1YWdlOiBzdHJpbmc7XHJcbiAgICBzZXR0aW5ncz86IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTGFuZ3VhZ2VTZXJ2aWNlIHtcclxuICAgIGN1cnJlbnRMYW5ndWFnZTogc3RyaW5nO1xyXG4gICAgZWRpdExhbmd1YWdlOiBzdHJpbmc7XHJcbiAgICBkaXNhYmxlVHJhbnNsYXRpb25zOiBib29sZWFuO1xyXG4gICAgZGVmYXVsdExhbmd1YWdlOiBzdHJpbmc7XHJcbiAgICBkaWN0aW9uYXJ5OiBJVHJhbnNsYXRpb25zO1xyXG4gICAgcmVhZG9ubHkgbGFuZ3VhZ2VzOiBSZWFkb25seUFycmF5PHN0cmluZz47XHJcbiAgICByZWFkb25seSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50O1xyXG4gICAgcmVwbGFjZUxhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZDtcclxuICAgIGFkZExhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZDtcclxuICAgIGdldFRyYW5zbGF0aW9uU3luYyhrZXk6IHN0cmluZywgcGFyYW1zPzogYW55KTogc3RyaW5nO1xyXG4gICAgZ2V0VHJhbnNsYXRpb24oa2V5OiBzdHJpbmcsIHBhcmFtcz86IGFueSk6IFByb21pc2U8c3RyaW5nPjtcclxuICAgIGdldFRyYW5zbGF0aW9ucyguLi5rZXlzOiBzdHJpbmdbXSk6IFByb21pc2U8SVRyYW5zbGF0aW9ucz47XHJcbiAgICBnZXRUcmFuc2xhdGlvbkZyb21PYmplY3QodHJhbnNsYXRpb25zOiBJVHJhbnNsYXRpb25zLCBwYXJhbXM/OiBhbnksIGxhbmc/OiBzdHJpbmcpOiBzdHJpbmc7XHJcbiAgICBnZXRUcmFuc2xhdGlvbkZyb21BcnJheSh0cmFuc2xhdGlvbnM6IElUcmFuc2xhdGlvbltdLCBwYXJhbXM/OiBhbnksIGxhbmc/OiBzdHJpbmcpOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBMQU5HVUFHRV9TRVJWSUNFOiBJbmplY3Rpb25Ub2tlbjxJTGFuZ3VhZ2VTZXJ2aWNlPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJTGFuZ3VhZ2VTZXJ2aWNlPihcImxhbmd1YWdlLXNlcnZpY2VcIik7XHJcblxyXG4vLyAtLS0gQXV0aCBTZXJ2aWNlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElBdXRoU2VydmljZSB7XHJcbiAgICBpc0F1dGhlbnRpY2F0ZWQ6IGJvb2xlYW47XHJcbiAgICB1c2VyQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT47XHJcbiAgICBjaGVja0F1dGhlbnRpY2F0ZWQoKTogUHJvbWlzZTxib29sZWFuPjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUm91dGVWYWxpZGF0b3IgPSAoYXV0aDogSUF1dGhTZXJ2aWNlLCByb3V0ZT86IElSb3V0ZSwgbmV4dD86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpID0+IFByb21pc2U8Ym9vbGVhbj47XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElSb3V0ZURhdGEgZXh0ZW5kcyBEYXRhIHtcclxuICAgIHJldHVyblN0YXRlPzogc3RyaW5nW107XHJcbiAgICBndWFyZHM/OiBBcnJheTxJUmVzb2x2ZUZhY3RvcnkgfCBSb3V0ZVZhbGlkYXRvcj47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJvdXRlIGV4dGVuZHMgUm91dGUge1xyXG4gICAgZGF0YT86IElSb3V0ZURhdGE7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBBVVRIX1NFUlZJQ0U6IEluamVjdGlvblRva2VuPElBdXRoU2VydmljZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SUF1dGhTZXJ2aWNlPihcImF1dGgtc2VydmljZVwiKTtcclxuXHJcbi8vIC0tLSBBY2wgU2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJQWNsQ29tcG9uZW50IHtcclxuICAgIG9uVXNlckluaXRpYWxpemVkKCk6IHZvaWQ7XHJcbiAgICBvblVzZXJDaGFuZ2VkKCk6IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJvdXRlU3RhdGVJbmZvIHtcclxuICAgIHJvdXRlOiBJUm91dGU7XHJcbiAgICBndWFyZDogYW55O1xyXG4gICAgZGlydHk6IGJvb2xlYW47XHJcbiAgICBmaXJzdDogYm9vbGVhbjtcclxuICAgIGNvbXBvbmVudD86IGFueTtcclxufVxyXG5cclxuLy8gLS0tIFN0YXRlIFNlcnZpY2UgLS0tXHJcbmV4cG9ydCB0eXBlIE5hdmlnYXRpb25VcmxQYXJhbSA9IGFueVtdIHwgc3RyaW5nIHwgVXJsVHJlZTtcclxuXHJcbi8vIC0tLSBTdG9yYWdlIFNlcnZpY2UgLS0tXHJcbmV4cG9ydCBlbnVtIFN0b3JhZ2VNb2RlIHtcclxuICAgIExvY2FsLFxyXG4gICAgU2Vzc2lvblxyXG59XHJcblxyXG4vLyAtLS0gVG9hc3RlciBTZXJ2aWNlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElUb2FzdGVyU2VydmljZSB7XHJcbiAgICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG4gICAgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG4gICAgc3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG4gICAgd2FybmluZyhtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgVE9BU1RFUl9TRVJWSUNFOiBJbmplY3Rpb25Ub2tlbjxJVG9hc3RlclNlcnZpY2U+ID0gbmV3IEluamVjdGlvblRva2VuPElUb2FzdGVyU2VydmljZT4oXCJ0b2FzdGVyLXNlcnZpY2VcIik7XHJcblxyXG4vLyAtLS0gUHJvbWlzZSBTZXJ2aWNlIC0tLVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUHJvbWlzZVNlcnZpY2Uge1xyXG4gICAgem9uZTogTmdab25lO1xyXG4gICAgY291bnQ6IG51bWJlcjtcclxuICAgIG9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPG51bWJlcj47XHJcbiAgICBjcmVhdGU8VD4oZXhlY3V0b3I6IChyZXNvbHZlOiAodmFsdWU/OiBUIHwgUHJvbWlzZUxpa2U8VD4pID0+IHZvaWQsIHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZCkgPT4gdm9pZCk6IFByb21pc2U8VD47XHJcbiAgICBhbGwocHJvbWlzZXM6IFByb21pc2U8YW55PltdKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgcmVzb2x2ZTxUPih2YWx1ZTogVCB8IFByb21pc2VMaWtlPFQ+KTogUHJvbWlzZTxUPjtcclxuICAgIHJlamVjdDxUPih2YWx1ZTogVCB8IFByb21pc2VMaWtlPFQ+KTogUHJvbWlzZTxUPjtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IFBST01JU0VfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJUHJvbWlzZVNlcnZpY2U+KFwicHJvbWlzZS1zZXJ2aWNlXCIpO1xyXG5cclxuLy8gLS0tIEFzeW5jIG1ldGhvZCAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJQXN5bmNNZXNzYWdlIHtcclxuICAgIG1lc3NhZ2U6IHN0cmluZztcclxuICAgIGNvbnRleHQ/OiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEFzeW5jTWV0aG9kID0gKGNvbnRleHQ/OiBhbnkpID0+IFByb21pc2U8SUFzeW5jTWVzc2FnZT47XHJcblxyXG4vLyAtLS0gVW5vcmRlcmVkIGxpc3QgLS0tXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBVbm9yZWRlcmVkTGlzdFRlbXBsYXRlIGV4dGVuZHMgVGVtcGxhdGVSZWY8YW55PiB7XHJcbiAgICBhYnN0cmFjdCB0eXBlOiBzdHJpbmc7XHJcbiAgICBhYnN0cmFjdCBzZWxlY3Rvcjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVub3JkZXJlZExpc3RUZW1wbGF0ZXMge1xyXG4gICAgW3R5cGU6IHN0cmluZ106IFRlbXBsYXRlUmVmPGFueT47XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFVub3JkZXJlZExpc3RTdHlsZSA9IFwidGFibGVcIiB8IFwibGlzdFwiO1xyXG5cclxuLy8gLS0tIEFqYXggcmVxdWVzdCAgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFqYXhSZXF1ZXN0RGV0YWlscyB7XHJcbiAgICByZXF1ZXN0OiBYTUxIdHRwUmVxdWVzdCxcclxuICAgIG1ldGhvZDogc3RyaW5nO1xyXG4gICAgdXJsOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEFqYXhSZXF1ZXN0Q2FsbGJhY2sgPSAoZGV0YWlsczogSUFqYXhSZXF1ZXN0RGV0YWlscywgcGFyYW1zOiBhbnkpID0+IHZvaWQ7XHJcblxyXG4vLyAtLS0gTG9hZGVyIHV0aWxzIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElTY3JpcHRQcm9taXNlcyB7XHJcbiAgICBbc3JjOiBzdHJpbmddOiBQcm9taXNlPEhUTUxTY3JpcHRFbGVtZW50PjtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIElTdHlsZVByb21pc2VzIHtcclxuICAgIFtzcmM6IHN0cmluZ106IFByb21pc2U8SFRNTExpbmtFbGVtZW50PjtcclxufVxyXG5cclxuLy8gLS0tIE9ic2VydmFibGUgdXRpbHMgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVNlYXJjaE9ic2VydmFibGUge1xyXG4gICAgc2VhcmNoOiBzdHJpbmc7XHJcbiAgICBnZXRTZWFyY2hSZXN1bHRzKHRva2VuOiBzdHJpbmcpOiBQcm9taXNlPGFueVtdPjtcclxufVxyXG5cclxuLy8gLS0tIFJlZmxlY3QgdXRpbHMgLS0tXHJcbmV4cG9ydCBmdW5jdGlvbiBGYWN0b3J5RGVwZW5kZW5jaWVzKC4uLmRlcGVuZGVuY2llczogQXJyYXk8SW5qZWN0aW9uVG9rZW48YW55PiB8IFByb3ZpZGVyPik6IE1ldGhvZERlY29yYXRvciB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogYW55LCBtZXRob2Q6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIFJlZmxlY3RVdGlscy5kZWZpbmVNZXRhZGF0YShcImZhY3RvcnlEZXBlbmRlbmNpZXNcIiwgZGVwZW5kZW5jaWVzLCB0YXJnZXQsIG1ldGhvZCk7XHJcbiAgICB9O1xyXG59XHJcblxyXG4vLyAtLS0gVGltZXIgdXRpbHMgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRpbWVyIHtcclxuICAgIGlkPzogYW55O1xyXG4gICAgZnVuYz86IEZ1bmN0aW9uO1xyXG4gICAgdGltZT86IG51bWJlcjtcclxuICAgIHJ1bj86ICgpID0+IHZvaWQ7XHJcbiAgICBzZXQ/OiAoZnVuYzogRnVuY3Rpb24sIHRpbWU6IG51bWJlcikgPT4gdm9pZDtcclxuICAgIGNsZWFyPzogKCkgPT4gdm9pZDtcclxufVxyXG5cclxuLy8gLS0tIEV4dHJhSXRlbVByb3BlcnRpZXMgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUV4dHJhUHJvcGVydGllcyB7XHJcbiAgICBbcHJvcDogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG4vLyAtLS0gR3JvdXAgYnkgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUdyb3VwTWFwIHtcclxuICAgIFtjb2x1bW46IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuLy8gLS0tIFRyYW5zbGF0ZSAtLS1cclxuZXhwb3J0IHR5cGUgVHJhbnNsYXRpb25RdWVyeSA9IHN0cmluZyB8IElUcmFuc2xhdGlvbnMgfCBJVHJhbnNsYXRpb25bXTtcclxuXHJcbi8vIC0tLSBQYWdpbmF0aW9uIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElQYWdlSW5mbyB7XHJcbiAgICB0ZXh0OiBzdHJpbmc7XHJcbiAgICBudW1iZXI6IG51bWJlcjtcclxuICAgIGFjdGl2ZTogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUGFnaW5hdGlvbkRhdGEge1xyXG4gICAgdG90YWw6IG51bWJlcjtcclxuICAgIGl0ZW1zOiBhbnlbXTtcclxuICAgIG1ldGE/OiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFBhZ2luYXRpb25EYXRhTG9hZGVyID0gKHBhZ2U6IG51bWJlciwgaXRlbXNQZXJQYWdlOiBudW1iZXIpID0+IFByb21pc2U8SVBhZ2luYXRpb25EYXRhPjtcclxuXHJcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uSXRlbUNvbnRleHQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBpdGVtOiBhbnksIHB1YmxpYyBwYXJhbGxlbEl0ZW06IGFueSwgcHVibGljIGNvdW50OiBudW1iZXIsIHB1YmxpYyBpbmRleDogbnVtYmVyLCBwdWJsaWMgZGF0YUluZGV4OiBudW1iZXIpIHtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZmlyc3QoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kZXggPT09IDA7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGxhc3QoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kZXggPT09IHRoaXMuY291bnQgLSAxO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBldmVuKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluZGV4ICUgMiA9PT0gMDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgb2RkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhdGhpcy5ldmVuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFN1cHBvcnQgZm9yIG9sZCBkeW5hbWljIHRhYmxlIGltcGxlbWVudGF0aW9uXHJcbiAgICBnZXQgcm93KCk6IGFueSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJEeW5hbWljVGFibGUgcm93IGlzIGRlcHJlY2F0ZWQgdXNlIGl0ZW0gaW5zdGVhZFwiKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5pdGVtO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFN1cHBvcnQgZm9yIG9sZCBkeW5hbWljIHRhYmxlIGltcGxlbWVudGF0aW9uXHJcbiAgICBnZXQgcGFyYWxsZWxSb3coKTogYW55IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkR5bmFtaWNUYWJsZSBwYXJhbGxlbFJvdyBpcyBkZXByZWNhdGVkIHVzZSBwYXJhbGxlbEl0ZW0gaW5zdGVhZFwiKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5wYXJhbGxlbEl0ZW07XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyKGZpbHRlclJ4OiBSZWdFeHApOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5pdGVtKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5pdGVtW2tleV07XHJcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc051bGxPclVuZGVmaW5lZCh2YWx1ZSkgfHwgT2JqZWN0VXRpbHMuaXNPYmplY3QodmFsdWUpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgY29uc3QgdGVzdFZhbHVlID0gT2JqZWN0VXRpbHMuaXNTdHJpbmcodmFsdWUpID8gdmFsdWUgOiB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICBpZiAodGVzdFZhbHVlLm1hdGNoKGZpbHRlclJ4KSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxufVxyXG5cclxuLy8gLS0tIEh0dHAgc2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJSHR0cEhlYWRlcnMge1xyXG4gICAgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUh0dHBQYXJhbXMge1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElSZXF1ZXN0T3B0aW9ucyB7XHJcbiAgICBtZXRob2Q/OiBzdHJpbmc7XHJcbiAgICBib2R5PzogYW55O1xyXG4gICAgaGVhZGVycz86IElIdHRwSGVhZGVycyB8IEh0dHBIZWFkZXJzO1xyXG4gICAgb3JpZ2luYWxIZWFkZXJzPzogSUh0dHBIZWFkZXJzO1xyXG4gICAgcGFyYW1zPzogSUh0dHBQYXJhbXM7XHJcbiAgICBvYnNlcnZlPzogXCJib2R5XCIgfCBcInJlc3BvbnNlXCI7XHJcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XHJcbiAgICByZXNwb25zZVR5cGU/OiBcImFycmF5YnVmZmVyXCIgfCBcImJsb2JcIiB8IFwianNvblwiIHwgXCJ0ZXh0XCI7XHJcbiAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xyXG4gICAgdGltZW91dD86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJSXNzdWVDb250ZXh0IHtcclxuICAgIHVybDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQcm9ncmVzcyB7XHJcbiAgICBwZXJjZW50YWdlPzogbnVtYmVyO1xyXG4gICAgbG9hZGVkPzogbnVtYmVyO1xyXG4gICAgdG90YWw/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFByb2dyZXNzTGlzdGVuZXIgPSAocHJvZ3Jlc3M6IElQcm9ncmVzcykgPT4gdm9pZDtcclxuXHJcbmV4cG9ydCB0eXBlIFByb21pc2VFeGVjdXRvciA9IChyZXNvbHZlOiAodmFsdWU/OiBhbnkgfCBQcm9taXNlTGlrZTxhbnk+KSA9PiB2b2lkLCByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQpID0+IHZvaWQ7XHJcblxyXG5leHBvcnQgY2xhc3MgSHR0cFByb21pc2UgZXh0ZW5kcyBQcm9taXNlPGFueT4ge1xyXG5cclxuICAgIHByb3RlY3RlZCByZWplY3RIYW5kbGVyOiAocmVhc29uPzogSHR0cEVycm9yUmVzcG9uc2UpID0+IHZvaWQ7XHJcbiAgICBwcm90ZWN0ZWQgaGFzUmVqZWN0SGFuZGxlcjogYm9vbGVhbjtcclxuICAgIHByb3RlY3RlZCBhdHRhY2hDb3VudDogbnVtYmVyO1xyXG4gICAgcHJvdGVjdGVkIHJ1bkNvdW50OiBudW1iZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVqZWN0SGFuZGxlcjogKHJlYXNvbj86IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB2b2lkLCBleGVjdXRvcjogUHJvbWlzZUV4ZWN1dG9yKSB7XHJcbiAgICAgICAgc3VwZXIoZXhlY3V0b3IpO1xyXG4gICAgICAgIHRoaXMucmVqZWN0SGFuZGxlciA9IHJlamVjdEhhbmRsZXI7XHJcbiAgICAgICAgdGhpcy5hdHRhY2hDb3VudCA9IDA7XHJcbiAgICAgICAgdGhpcy5ydW5Db3VudCA9IDA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhlbjxUUmVzdWx0MSwgVFJlc3VsdDI+KG9uRnVsZmlsbGVkPzogKCh2YWx1ZTogYW55KSA9PiAoUHJvbWlzZUxpa2U8VFJlc3VsdDE+IHwgVFJlc3VsdDEpKSB8IG51bGwgfCB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25SZWplY3RlZD86ICgocmVhc29uOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gKFByb21pc2VMaWtlPFRSZXN1bHQyPiB8IFRSZXN1bHQyKSkgfCBudWxsIHwgdW5kZWZpbmVkKTogUHJvbWlzZTxUUmVzdWx0MSB8IFRSZXN1bHQyPiB7XHJcbiAgICAgICAgdGhpcy5hdHRhY2hDb3VudCsrO1xyXG4gICAgICAgIHJldHVybiBzdXBlci50aGVuKHZhbHVlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5ydW5Db3VudCsrO1xyXG4gICAgICAgICAgICByZXR1cm4gb25GdWxmaWxsZWQgPyBvbkZ1bGZpbGxlZCh2YWx1ZSkgOiBudWxsO1xyXG4gICAgICAgIH0sIChyZWFzb246IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0gb25SZWplY3RlZCA/IG9uUmVqZWN0ZWQocmVhc29uKSA6IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMuaGFzUmVqZWN0SGFuZGxlciA9IHRoaXMuaGFzUmVqZWN0SGFuZGxlciB8fCAob25SZWplY3RlZCAmJiByZXN1bHQgIT09IGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5ydW5Db3VudCsrO1xyXG4gICAgICAgICAgICB0aGlzLnJlamVjdEhhbmRsZXIodGhpcy5ydW5Db3VudCA9PSB0aGlzLmF0dGFjaENvdW50ICYmICF0aGlzLmhhc1JlamVjdEhhbmRsZXIgPyByZWFzb24gOiBudWxsKTtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjYXRjaDxUUmVzdWx0ID0gbmV2ZXI+KG9uUmVqZWN0ZWQ/OiAoKHJlYXNvbjogSHR0cEVycm9yUmVzcG9uc2UpID0+IChQcm9taXNlTGlrZTxUUmVzdWx0PiB8IFRSZXN1bHQpKSB8IG51bGwgfCB1bmRlZmluZWQpOiBQcm9taXNlPGFueSB8IFRSZXN1bHQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy50aGVuKG51bGwsIG9uUmVqZWN0ZWQpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwU2VydmljZSB7XHJcbiAgICBsYW5ndWFnZTogSUxhbmd1YWdlU2VydmljZTtcclxuICAgIHVybCh1cmw6IHN0cmluZyk6IHN0cmluZztcclxuICAgIG1ha2VMaXN0UGFyYW1zKHBhZ2U6IG51bWJlciwgaXRlbXNQZXJQYWdlOiBudW1iZXIsIG9yZGVyQnk/OiBzdHJpbmcsIG9yZGVyRGVzY2VuZGluZz86IGJvb2xlYW4sIGZpbHRlcj86IHN0cmluZyk6IElIdHRwUGFyYW1zO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgRVhQUkVTU19SRVFVRVNUID0gbmV3IEluamVjdGlvblRva2VuPFJlcXVlc3Q+KFwiZXhwcmVzcy1yZXF1ZXN0XCIpO1xyXG5cclxuLy8gLS0tIEFwaSBzZXJ2aWNlIC0tLVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQXBpU2VydmljZSBleHRlbmRzIElIdHRwU2VydmljZSB7XHJcbiAgICBjYWNoZTogYW55O1xyXG4gICAgY2xpZW50OiBIdHRwQ2xpZW50O1xyXG4gICAgZ2V0KHVybDogc3RyaW5nLCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgZGVsZXRlKHVybDogc3RyaW5nLCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgcG9zdCh1cmw6IHN0cmluZywgYm9keT86IGFueSwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIHB1dCh1cmw6IHN0cmluZywgYm9keT86IGFueSwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIHBhdGNoKHVybDogc3RyaW5nLCBib2R5PzogYW55LCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgdXBsb2FkKHVybDogc3RyaW5nLCBib2R5OiBhbnksIGxpc3RlbmVyPzogUHJvZ3Jlc3NMaXN0ZW5lciwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIGxpc3QodXJsOiBzdHJpbmcsIHBhcmFtczogSUh0dHBQYXJhbXMpOiBQcm9taXNlPElQYWdpbmF0aW9uRGF0YT47XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBBUElfU0VSVklDRTogSW5qZWN0aW9uVG9rZW48SUFwaVNlcnZpY2U+ID0gbmV3IEluamVjdGlvblRva2VuPElBcGlTZXJ2aWNlPihcImFwaS1zZXJ2aWNlXCIpO1xyXG5cclxuLy8gLS0tIE9wZW5BcGkgc2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJT3BlbkFwaVNjaGVtYVByb3BlcnR5IHtcclxuICAgIGlkOiBzdHJpbmc7XHJcbiAgICB0eXBlPzogc3RyaW5nO1xyXG4gICAgZm9ybWF0Pzogc3RyaW5nO1xyXG4gICAgY29sdW1uPzogYm9vbGVhbjtcclxuICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzPzogYW55O1xyXG4gICAgJHJlZj86IHN0cmluZztcclxuICAgIGl0ZW1zPzogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eTtcclxuICAgIGVudW0/OiBzdHJpbmdbXTtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJT3BlbkFwaVNjaGVtYSB7XHJcbiAgICBwcm9wZXJ0aWVzOiB7XHJcbiAgICAgICAgW25hbWU6IHN0cmluZ106IElPcGVuQXBpU2NoZW1hUHJvcGVydHk7XHJcbiAgICB9O1xyXG4gICAgcmVxdWlyZWQ6IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElPcGVuQXBpU2NoZW1hcyB7XHJcbiAgICBbbmFtZTogc3RyaW5nXTogSU9wZW5BcGlTY2hlbWE7XHJcbn1cclxuXHJcbi8vIC0tLSBEeW5hbWljIHRhYmxlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZUNvbHVtbnMge1xyXG4gICAgW2NvbHVtbjogc3RyaW5nXTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZVRlbXBsYXRlIHtcclxuICAgIGNvbHVtbjogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgICBwdXJlOiBib29sZWFuO1xyXG4gICAgcmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZVRlbXBsYXRlcyB7XHJcbiAgICBbY29sdW1uOiBzdHJpbmddOiBJVGFibGVUZW1wbGF0ZTtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgVGFibGVEYXRhTG9hZGVyID0gKHBhZ2U6IG51bWJlciwgcm93c1BlclBhZ2U6IG51bWJlciwgb3JkZXJCeTogc3RyaW5nLCBvcmRlckRlc2NlbmRpbmc6IGJvb2xlYW4sIGZpbHRlcjogc3RyaW5nKSA9PiBQcm9taXNlPElQYWdpbmF0aW9uRGF0YT47XHJcblxyXG4vLyAtLS0gUmVzb3VyY2UgaWYgLS0tXHJcbmV4cG9ydCBjbGFzcyBSZXNvdXJjZUlmQ29udGV4dCB7XHJcbiAgICByZXNvdXJjZTogc3RyaW5nO1xyXG4gICAgdXJsOiBzdHJpbmc7XHJcbn1cclxuXHJcbi8vIC0tLSBDb25maWdTZXJ2aWNlIC0tLVxyXG5leHBvcnQgY2xhc3MgSUNvbmZpZ3VyYXRpb24ge1xyXG4gICAgYmFzZVVybD86IHN0cmluZztcclxuICAgIGJhc2VEb21haW4/OiBzdHJpbmc7XHJcbiAgICB0cmFuc2xhdGlvblVybD86IHN0cmluZztcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ29uZmlnU2VydmljZSB7XHJcbiAgICBjb25maWc6IElDb25maWd1cmF0aW9uO1xyXG4gICAgcmVhZG9ubHkgbG9hZDogKCkgPT4gUHJvbWlzZTxJQ29uZmlndXJhdGlvbj47XHJcbiAgICBwcmVwYXJlVXJsKHVybDogc3RyaW5nLCBlbmRpbmc6IHN0cmluZyk6IHN0cmluZztcclxuICAgIGdldENvbmZpZ1ZhbHVlKGtleTogc3RyaW5nKTogYW55O1xyXG4gICAgZ2V0UXVlcnlQYXJhbWV0ZXIobmFtZTogc3RyaW5nLCB1cmw/OiBzdHJpbmcpOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBDT05GSUdfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJQ29uZmlnU2VydmljZT4oXCJjb25maWctc2VydmljZVwiKTtcclxuXHJcbmV4cG9ydCBjb25zdCBCQVNFX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJQ29uZmlndXJhdGlvbj4oXCJiYXNlLWNvbmZpZ1wiKTtcclxuXHJcbmV4cG9ydCBjb25zdCBTQ1JJUFRfUEFSQU1TID0gbmV3IEluamVjdGlvblRva2VuPGFueT4oXCJzY3JpcHQtcGFyYW1zXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IFJPT1RfRUxFTUVOVDogSW5qZWN0aW9uVG9rZW48SFRNTEVsZW1lbnQ+ID0gbmV3IEluamVjdGlvblRva2VuPEhUTUxFbGVtZW50PihcImFwcC1yb290LWVsZW1lbnRcIik7XHJcblxyXG4vLyAtLS0gRXJyb3IgaGFuZGxlciBzZXJ2aWNlIC0tLVxyXG5leHBvcnQgdHlwZSBFcnJvckhhbmRsZXJDYWxsYmFjayA9IChlcnJvcjogc3RyaW5nKSA9PiBhbnk7XHJcblxyXG5leHBvcnQgY29uc3QgRVJST1JfSEFORExFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFcnJvckhhbmRsZXJDYWxsYmFjaz4oXCJlcnJvci1oYW5kbGVyLWNhbGxiYWNrXCIpO1xyXG5cclxuLy8gLS0tIEdsb2JhbCB0ZW1wbGF0ZXMgc2VydmljZVxyXG5cclxuZXhwb3J0IHR5cGUgR2xvYmFsQ29tcG9uZW50TW9kaWZpZXIgPSAoY29tcG9uZW50OiBhbnkpID0+IGFueTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUdsb2JhbFRlbXBsYXRlcyB7XHJcbiAgICByZWFkb25seSB0ZW1wbGF0ZXNVcGRhdGVkOiBFdmVudEVtaXR0ZXI8dm9pZD47XHJcbiAgICBnZXQoaWQ6IHN0cmluZywgY29tcG9uZW50PzogYW55KTogVGVtcGxhdGVSZWY8YW55PjtcclxuICAgIGFkZChpZDogc3RyaW5nLCB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pik6IHZvaWQ7XHJcbiAgICByZW1vdmUoaWQ6IHN0cmluZyk6IHZvaWQ7XHJcbiAgICBhZGRDb21wb25lbnRNb2RpZmllcihpZDogc3RyaW5nLCBtb2RpZmllcjogR2xvYmFsQ29tcG9uZW50TW9kaWZpZXIpOiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgR0xPQkFMX1RFTVBMQVRFUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFcnJvckhhbmRsZXJDYWxsYmFjaz4oXCJnbG9iYWwtdGVtcGxhdGVzXCIpO1xyXG5cclxuLy8gLS0tIE1vZHVsZSAtLS1cclxuZXhwb3J0IHR5cGUgQXBwSW5pdGlhbGl6ZXJGdW5jID0gKCkgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElNb2R1bGVDb25maWcge1xyXG4gICAgYXBpU2VydmljZT86IFR5cGU8SUFwaVNlcnZpY2U+XHJcbiAgICBhdXRoU2VydmljZT86IFR5cGU8SUF1dGhTZXJ2aWNlPjtcclxuICAgIGljb25TZXJ2aWNlPzogVHlwZTxJSWNvblNlcnZpY2U+O1xyXG4gICAgbGFuZ3VhZ2VTZXJ2aWNlPzogVHlwZTxJTGFuZ3VhZ2VTZXJ2aWNlPjtcclxuICAgIHRvYXN0ZXJTZXJ2aWNlPzogVHlwZTxJVG9hc3RlclNlcnZpY2U+O1xyXG4gICAgcHJvbWlzZVNlcnZpY2U/OiBUeXBlPElQcm9taXNlU2VydmljZT47XHJcbiAgICBjb25maWdTZXJ2aWNlPzogVHlwZTxJQ29uZmlnU2VydmljZT47XHJcbiAgICBnbG9iYWxUZW1wbGF0ZXM/OiBUeXBlPElHbG9iYWxUZW1wbGF0ZXM+O1xyXG4gICAgaW5pdGlhbGl6ZUFwcD86IChpbmplY3RvcjogSW5qZWN0b3IpID0+IEFwcEluaXRpYWxpemVyRnVuYztcclxuICAgIGJhc2VIcmVmPzogKGluamVjdG9yOiBJbmplY3RvcikgPT4gc3RyaW5nO1xyXG59XHJcblxyXG4vLyAtLS0gVmFsdWVkIHByb21pc2UgLS0tXHJcbmV4cG9ydCBjbGFzcyBWYWx1ZWRQcm9taXNlPFQ+IGV4dGVuZHMgUHJvbWlzZTxUPiB7XHJcbiAgICB2YWx1ZTogVDtcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { ErrorHandler } from "@angular/core";
|
|
2
|
+
import { EVENT_MANAGER_PLUGINS } from "@angular/platform-browser";
|
|
3
|
+
import { UrlSerializer } from "@angular/router";
|
|
4
|
+
import { DeviceDetectorService } from "ngx-device-detector";
|
|
5
|
+
import { AuthGuard } from "./utils/auth.guard";
|
|
6
|
+
import { AclService } from "./services/acl.service";
|
|
7
|
+
import { ApiService } from "./services/api.service";
|
|
8
|
+
import { StaticAuthService } from "./services/auth.service";
|
|
9
|
+
import { BaseHttpClient } from "./services/base-http.client";
|
|
10
|
+
import { BaseHttpService } from "./services/base-http.service";
|
|
11
|
+
import { ConfigService } from "./services/config.service";
|
|
12
|
+
import { ErrorHandlerService } from "./services/error-handler.service";
|
|
13
|
+
import { EventsService } from "./services/events.service";
|
|
14
|
+
import { FormatterService } from "./services/formatter.service";
|
|
15
|
+
import { GlobalTemplateService } from "./services/global-template.service";
|
|
16
|
+
import { IconService } from "./services/icon.service";
|
|
17
|
+
import { LanguageService } from "./services/language.service";
|
|
18
|
+
import { PromiseService } from "./services/promise.service";
|
|
19
|
+
import { OpenApiService } from "./services/open-api.service";
|
|
20
|
+
import { StateService } from "./services/state.service";
|
|
21
|
+
import { StaticLanguageService } from "./services/static-language.service";
|
|
22
|
+
import { StorageService } from "./services/storage.service";
|
|
23
|
+
import { ConsoleToasterService } from "./services/toaster.service";
|
|
24
|
+
import { TranslatedUrlSerializer } from "./services/translated-url.serializer";
|
|
25
|
+
import { UniversalService } from "./services/universal.service";
|
|
26
|
+
import { ResizeEventPlugin } from "./plugins/resize-event.plugin";
|
|
27
|
+
import { ScrollEventPlugin } from "./plugins/scroll-event.plugin";
|
|
28
|
+
import { AsyncMethodDirective } from "./directives/async-method.directive";
|
|
29
|
+
import { BackgroundDirective } from "./directives/background.directive";
|
|
30
|
+
import { DynamicTableTemplateDirective } from "./directives/dynamic-table-template.directive";
|
|
31
|
+
import { GlobalTemplateDirective } from "./directives/global-template.directive";
|
|
32
|
+
import { IconDirective } from "./directives/icon.directive";
|
|
33
|
+
import { NgxTemplateOutletDirective } from "./directives/ngx-template-outlet.directive";
|
|
34
|
+
import { PaginationDirective } from "./directives/pagination.directive";
|
|
35
|
+
import { PaginationItemDirective } from "./directives/pagination-item.directive";
|
|
36
|
+
import { ResourceIfDirective } from "./directives/resource-if.directive";
|
|
37
|
+
import { StickyDirective } from "./directives/sticky.directive";
|
|
38
|
+
import { StickyClassDirective } from "./directives/sticky-class.directive";
|
|
39
|
+
import { UnorderedListItemDirective } from "./directives/unordered-list-item.directive";
|
|
40
|
+
import { UnorderedListTemplateDirective } from "./directives/unordered-list-template.directive";
|
|
41
|
+
import { ChunkPipe } from "./pipes/chunk.pipe";
|
|
42
|
+
import { EntriesPipe } from "./pipes/entries.pipe";
|
|
43
|
+
import { ExtraItemPropertiesPipe } from "./pipes/extra-item-properties.pipe";
|
|
44
|
+
import { FilterPipe } from "./pipes/filter.pipe";
|
|
45
|
+
import { FindPipe } from "./pipes/find.pipe";
|
|
46
|
+
import { FormatNumberPipe } from "./pipes/format-number.pipe";
|
|
47
|
+
import { GetOffsetPipe } from "./pipes/get-offset.pipe";
|
|
48
|
+
import { GetTypePipe } from "./pipes/get-type.pipe";
|
|
49
|
+
import { GlobalTemplatePipe } from "./pipes/global-template.pipe";
|
|
50
|
+
import { GroupByPipe } from "./pipes/group-by.pipe";
|
|
51
|
+
import { IsTypePipe } from "./pipes/is-type.pipe";
|
|
52
|
+
import { JoinPipe } from "./pipes/join.pipe";
|
|
53
|
+
import { KeysPipe } from "./pipes/keys.pipe";
|
|
54
|
+
import { MapPipe } from "./pipes/map.pipe";
|
|
55
|
+
import { MaxPipe } from "./pipes/max.pipe";
|
|
56
|
+
import { MinPipe } from "./pipes/min.pipe";
|
|
57
|
+
import { ReducePipe } from "./pipes/reduce.pipe";
|
|
58
|
+
import { RemapPipe } from "./pipes/remap.pipe";
|
|
59
|
+
import { ReplacePipe } from "./pipes/replace.pipe";
|
|
60
|
+
import { ReversePipe } from "./pipes/reverse.pipe";
|
|
61
|
+
import { RoundPipe } from "./pipes/round.pipe";
|
|
62
|
+
import { SafeHtmlPipe } from "./pipes/safe-html.pipe";
|
|
63
|
+
import { TranslatePipe } from "./pipes/translate.pipe";
|
|
64
|
+
import { ValuesPipe } from "./pipes/values.pipe";
|
|
65
|
+
import { DynamicTableComponent } from "./components/dynamic-table/dynamic-table.component";
|
|
66
|
+
import { PaginationMenuComponent } from "./components/pagination-menu/pagination-menu.component";
|
|
67
|
+
import { UnorderedListComponent } from "./components/unordered-list/unordered-list.component";
|
|
68
|
+
// --- Pipes ---
|
|
69
|
+
export const pipes = [
|
|
70
|
+
ChunkPipe,
|
|
71
|
+
EntriesPipe,
|
|
72
|
+
ExtraItemPropertiesPipe,
|
|
73
|
+
FilterPipe,
|
|
74
|
+
FindPipe,
|
|
75
|
+
FormatNumberPipe,
|
|
76
|
+
GetOffsetPipe,
|
|
77
|
+
GetTypePipe,
|
|
78
|
+
GlobalTemplatePipe,
|
|
79
|
+
GroupByPipe,
|
|
80
|
+
IsTypePipe,
|
|
81
|
+
JoinPipe,
|
|
82
|
+
KeysPipe,
|
|
83
|
+
MapPipe,
|
|
84
|
+
MaxPipe,
|
|
85
|
+
MinPipe,
|
|
86
|
+
ReducePipe,
|
|
87
|
+
RemapPipe,
|
|
88
|
+
ReplacePipe,
|
|
89
|
+
ReversePipe,
|
|
90
|
+
RoundPipe,
|
|
91
|
+
SafeHtmlPipe,
|
|
92
|
+
TranslatePipe,
|
|
93
|
+
ValuesPipe
|
|
94
|
+
];
|
|
95
|
+
// --- Directives ---
|
|
96
|
+
export const directives = [
|
|
97
|
+
AsyncMethodDirective,
|
|
98
|
+
BackgroundDirective,
|
|
99
|
+
DynamicTableTemplateDirective,
|
|
100
|
+
GlobalTemplateDirective,
|
|
101
|
+
IconDirective,
|
|
102
|
+
NgxTemplateOutletDirective,
|
|
103
|
+
PaginationDirective,
|
|
104
|
+
PaginationItemDirective,
|
|
105
|
+
ResourceIfDirective,
|
|
106
|
+
StickyDirective,
|
|
107
|
+
StickyClassDirective,
|
|
108
|
+
UnorderedListItemDirective,
|
|
109
|
+
UnorderedListTemplateDirective
|
|
110
|
+
];
|
|
111
|
+
// --- Components ---
|
|
112
|
+
export const components = [
|
|
113
|
+
DynamicTableComponent,
|
|
114
|
+
PaginationMenuComponent,
|
|
115
|
+
UnorderedListComponent
|
|
116
|
+
];
|
|
117
|
+
export const providers = [
|
|
118
|
+
...pipes,
|
|
119
|
+
BaseHttpClient,
|
|
120
|
+
BaseHttpService,
|
|
121
|
+
AuthGuard,
|
|
122
|
+
AclService,
|
|
123
|
+
ApiService,
|
|
124
|
+
StaticAuthService,
|
|
125
|
+
ConfigService,
|
|
126
|
+
ErrorHandlerService,
|
|
127
|
+
EventsService,
|
|
128
|
+
FormatterService,
|
|
129
|
+
GlobalTemplateService,
|
|
130
|
+
IconService,
|
|
131
|
+
LanguageService,
|
|
132
|
+
OpenApiService,
|
|
133
|
+
PromiseService,
|
|
134
|
+
StateService,
|
|
135
|
+
StaticLanguageService,
|
|
136
|
+
StorageService,
|
|
137
|
+
ConsoleToasterService,
|
|
138
|
+
TranslatedUrlSerializer,
|
|
139
|
+
UniversalService,
|
|
140
|
+
DeviceDetectorService,
|
|
141
|
+
{
|
|
142
|
+
provide: EVENT_MANAGER_PLUGINS,
|
|
143
|
+
useClass: ResizeEventPlugin,
|
|
144
|
+
multi: true
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
provide: EVENT_MANAGER_PLUGINS,
|
|
148
|
+
useClass: ScrollEventPlugin,
|
|
149
|
+
multi: true
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
provide: UrlSerializer,
|
|
153
|
+
useExisting: TranslatedUrlSerializer
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
provide: ErrorHandler,
|
|
157
|
+
useExisting: ErrorHandlerService
|
|
158
|
+
}
|
|
159
|
+
];
|
|
160
|
+
export function loadConfig(config) {
|
|
161
|
+
return config.load;
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXV0aWxzLmltcG9ydHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmd4LXV0aWxzL25neC11dGlscy5pbXBvcnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBa0IsWUFBWSxFQUFrRCxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUdoRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFjMUQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzlELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGNB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QUVGLHFCQUFxQjtBQUNyQixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDdEIscUJBQXFCO0lBQ3JCLHVCQUF1QjtJQUN2QixzQkFBc0I7Q0FDekIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUNyQixHQUFHLEtBQUs7SUFDUixjQUFjO0lBQ2QsZUFBZTtJQUNmLFNBQVM7SUFDVCxVQUFVO0lBQ1YsVUFBVTtJQUNWLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLGFBQWE7SUFDYixnQkFBZ0I7SUFDaEIscUJBQXFCO0lBQ3JCLFdBQVc7SUFDWCxlQUFlO0lBQ2YsY0FBYztJQUNkLGNBQWM7SUFDZCxZQUFZO0lBQ1oscUJBQXFCO0lBQ3JCLGNBQWM7SUFDZCxxQkFBcUI7SUFDckIsdUJBQXVCO0lBQ3ZCLGdCQUFnQjtJQUNoQixxQkFBcUI7SUFDckI7UUFDSSxPQUFPLEVBQUUscUJBQXFCO1FBQzlCLFFBQVEsRUFBRSxpQkFBaUI7UUFDM0IsS0FBSyxFQUFFLElBQUk7S0FDZDtJQUNEO1FBQ0ksT0FBTyxFQUFFLHFCQUFxQjtRQUM5QixRQUFRLEVBQUUsaUJBQWlCO1FBQzNCLEtBQUssRUFBRSxJQUFJO0tBQ2Q7SUFDRDtRQUNJLE9BQU8sRUFBRSxhQUFhO1FBQ3RCLFdBQVcsRUFBRSx1QkFBdUI7S0FDdkM7SUFDRDtRQUNJLE9BQU8sRUFBRSxZQUFZO1FBQ3JCLFdBQVcsRUFBRSxtQkFBbUI7S0FDbkM7Q0FFSixDQUFDO0FBRUYsTUFBTSxVQUFVLFVBQVUsQ0FBQyxNQUFzQjtJQUM3QyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QVBQX0lOSVRJQUxJWkVSLCBFcnJvckhhbmRsZXIsIEluamVjdCwgSW5qZWN0b3IsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0VWRU5UX01BTkFHRVJfUExVR0lOU30gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcclxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7VXJsU2VyaWFsaXplcn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQge0RldmljZURldGVjdG9yU2VydmljZX0gZnJvbSBcIm5neC1kZXZpY2UtZGV0ZWN0b3JcIjtcclxuXHJcbmltcG9ydCB7XHJcbiAgICBBUElfU0VSVklDRSxcclxuICAgIEFVVEhfU0VSVklDRSxcclxuICAgIENPTkZJR19TRVJWSUNFLCBHTE9CQUxfVEVNUExBVEVTLFxyXG4gICAgSUNPTl9TRVJWSUNFLFxyXG4gICAgSUNvbmZpZ1NlcnZpY2UsXHJcbiAgICBJTW9kdWxlQ29uZmlnLFxyXG4gICAgTEFOR1VBR0VfU0VSVklDRSxcclxuICAgIFBST01JU0VfU0VSVklDRSwgUk9PVF9FTEVNRU5ULFxyXG4gICAgVE9BU1RFUl9TRVJWSUNFXHJcbn0gZnJvbSBcIi4vY29tbW9uLXR5cGVzXCI7XHJcblxyXG5pbXBvcnQge0F1dGhHdWFyZH0gZnJvbSBcIi4vdXRpbHMvYXV0aC5ndWFyZFwiO1xyXG5pbXBvcnQge0FjbFNlcnZpY2V9IGZyb20gXCIuL3NlcnZpY2VzL2FjbC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7QXBpU2VydmljZX0gZnJvbSBcIi4vc2VydmljZXMvYXBpLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtTdGF0aWNBdXRoU2VydmljZX0gZnJvbSBcIi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7QmFzZUh0dHBDbGllbnR9IGZyb20gXCIuL3NlcnZpY2VzL2Jhc2UtaHR0cC5jbGllbnRcIjtcclxuaW1wb3J0IHtCYXNlSHR0cFNlcnZpY2V9IGZyb20gXCIuL3NlcnZpY2VzL2Jhc2UtaHR0cC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7Q29uZmlnU2VydmljZX0gZnJvbSBcIi4vc2VydmljZXMvY29uZmlnLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtFcnJvckhhbmRsZXJTZXJ2aWNlfSBmcm9tIFwiLi9zZXJ2aWNlcy9lcnJvci1oYW5kbGVyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtFdmVudHNTZXJ2aWNlfSBmcm9tIFwiLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZVwiO1xyXG5pbXBvcnQge0Zvcm1hdHRlclNlcnZpY2V9IGZyb20gXCIuL3NlcnZpY2VzL2Zvcm1hdHRlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7R2xvYmFsVGVtcGxhdGVTZXJ2aWNlfSBmcm9tIFwiLi9zZXJ2aWNlcy9nbG9iYWwtdGVtcGxhdGUuc2VydmljZVwiO1xyXG5pbXBvcnQge0ljb25TZXJ2aWNlfSBmcm9tIFwiLi9zZXJ2aWNlcy9pY29uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtMYW5ndWFnZVNlcnZpY2V9IGZyb20gXCIuL3NlcnZpY2VzL2xhbmd1YWdlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtQcm9taXNlU2VydmljZX0gZnJvbSBcIi4vc2VydmljZXMvcHJvbWlzZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7T3BlbkFwaVNlcnZpY2V9IGZyb20gXCIuL3NlcnZpY2VzL29wZW4tYXBpLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtTdGF0ZVNlcnZpY2V9IGZyb20gXCIuL3NlcnZpY2VzL3N0YXRlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtTdGF0aWNMYW5ndWFnZVNlcnZpY2V9IGZyb20gXCIuL3NlcnZpY2VzL3N0YXRpYy1sYW5ndWFnZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7U3RvcmFnZVNlcnZpY2V9IGZyb20gXCIuL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZVwiO1xyXG5pbXBvcnQge0NvbnNvbGVUb2FzdGVyU2VydmljZX0gZnJvbSBcIi4vc2VydmljZXMvdG9hc3Rlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7VHJhbnNsYXRlZFVybFNlcmlhbGl6ZXJ9IGZyb20gXCIuL3NlcnZpY2VzL3RyYW5zbGF0ZWQtdXJsLnNlcmlhbGl6ZXJcIjtcclxuaW1wb3J0IHtVbml2ZXJzYWxTZXJ2aWNlfSBmcm9tIFwiLi9zZXJ2aWNlcy91bml2ZXJzYWwuc2VydmljZVwiO1xyXG5pbXBvcnQge1Jlc2l6ZUV2ZW50UGx1Z2lufSBmcm9tIFwiLi9wbHVnaW5zL3Jlc2l6ZS1ldmVudC5wbHVnaW5cIjtcclxuaW1wb3J0IHtTY3JvbGxFdmVudFBsdWdpbn0gZnJvbSBcIi4vcGx1Z2lucy9zY3JvbGwtZXZlbnQucGx1Z2luXCI7XHJcbmltcG9ydCB7QXN5bmNNZXRob2REaXJlY3RpdmV9IGZyb20gXCIuL2RpcmVjdGl2ZXMvYXN5bmMtbWV0aG9kLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQge0JhY2tncm91bmREaXJlY3RpdmV9IGZyb20gXCIuL2RpcmVjdGl2ZXMvYmFja2dyb3VuZC5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHtEeW5hbWljVGFibGVUZW1wbGF0ZURpcmVjdGl2ZX0gZnJvbSBcIi4vZGlyZWN0aXZlcy9keW5hbWljLXRhYmxlLXRlbXBsYXRlLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQge0dsb2JhbFRlbXBsYXRlRGlyZWN0aXZlfSBmcm9tIFwiLi9kaXJlY3RpdmVzL2dsb2JhbC10ZW1wbGF0ZS5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHtJY29uRGlyZWN0aXZlfSBmcm9tIFwiLi9kaXJlY3RpdmVzL2ljb24uZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7Tmd4VGVtcGxhdGVPdXRsZXREaXJlY3RpdmV9IGZyb20gXCIuL2RpcmVjdGl2ZXMvbmd4LXRlbXBsYXRlLW91dGxldC5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHtQYWdpbmF0aW9uRGlyZWN0aXZlfSBmcm9tIFwiLi9kaXJlY3RpdmVzL3BhZ2luYXRpb24uZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7UGFnaW5hdGlvbkl0ZW1EaXJlY3RpdmV9IGZyb20gXCIuL2RpcmVjdGl2ZXMvcGFnaW5hdGlvbi1pdGVtLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQge1Jlc291cmNlSWZEaXJlY3RpdmV9IGZyb20gXCIuL2RpcmVjdGl2ZXMvcmVzb3VyY2UtaWYuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7U3RpY2t5RGlyZWN0aXZlfSBmcm9tIFwiLi9kaXJlY3RpdmVzL3N0aWNreS5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHtTdGlja3lDbGFzc0RpcmVjdGl2ZX0gZnJvbSBcIi4vZGlyZWN0aXZlcy9zdGlja3ktY2xhc3MuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7VW5vcmRlcmVkTGlzdEl0ZW1EaXJlY3RpdmV9IGZyb20gXCIuL2RpcmVjdGl2ZXMvdW5vcmRlcmVkLWxpc3QtaXRlbS5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHtVbm9yZGVyZWRMaXN0VGVtcGxhdGVEaXJlY3RpdmV9IGZyb20gXCIuL2RpcmVjdGl2ZXMvdW5vcmRlcmVkLWxpc3QtdGVtcGxhdGUuZGlyZWN0aXZlXCI7XHJcblxyXG5pbXBvcnQge0NodW5rUGlwZX0gZnJvbSBcIi4vcGlwZXMvY2h1bmsucGlwZVwiO1xyXG5pbXBvcnQge0VudHJpZXNQaXBlfSBmcm9tIFwiLi9waXBlcy9lbnRyaWVzLnBpcGVcIjtcclxuaW1wb3J0IHtFeHRyYUl0ZW1Qcm9wZXJ0aWVzUGlwZX0gZnJvbSBcIi4vcGlwZXMvZXh0cmEtaXRlbS1wcm9wZXJ0aWVzLnBpcGVcIjtcclxuaW1wb3J0IHtGaWx0ZXJQaXBlfSBmcm9tIFwiLi9waXBlcy9maWx0ZXIucGlwZVwiO1xyXG5pbXBvcnQge0ZpbmRQaXBlfSBmcm9tIFwiLi9waXBlcy9maW5kLnBpcGVcIjtcclxuaW1wb3J0IHtGb3JtYXROdW1iZXJQaXBlfSBmcm9tIFwiLi9waXBlcy9mb3JtYXQtbnVtYmVyLnBpcGVcIjtcclxuaW1wb3J0IHtHZXRPZmZzZXRQaXBlfSBmcm9tIFwiLi9waXBlcy9nZXQtb2Zmc2V0LnBpcGVcIjtcclxuaW1wb3J0IHtHZXRUeXBlUGlwZX0gZnJvbSBcIi4vcGlwZXMvZ2V0LXR5cGUucGlwZVwiO1xyXG5pbXBvcnQge0dsb2JhbFRlbXBsYXRlUGlwZX0gZnJvbSBcIi4vcGlwZXMvZ2xvYmFsLXRlbXBsYXRlLnBpcGVcIjtcclxuaW1wb3J0IHtHcm91cEJ5UGlwZX0gZnJvbSBcIi4vcGlwZXMvZ3JvdXAtYnkucGlwZVwiO1xyXG5pbXBvcnQge0lzVHlwZVBpcGV9IGZyb20gXCIuL3BpcGVzL2lzLXR5cGUucGlwZVwiO1xyXG5pbXBvcnQge0pvaW5QaXBlfSBmcm9tIFwiLi9waXBlcy9qb2luLnBpcGVcIjtcclxuaW1wb3J0IHtLZXlzUGlwZX0gZnJvbSBcIi4vcGlwZXMva2V5cy5waXBlXCI7XHJcbmltcG9ydCB7TWFwUGlwZX0gZnJvbSBcIi4vcGlwZXMvbWFwLnBpcGVcIjtcclxuaW1wb3J0IHtNYXhQaXBlfSBmcm9tIFwiLi9waXBlcy9tYXgucGlwZVwiO1xyXG5pbXBvcnQge01pblBpcGV9IGZyb20gXCIuL3BpcGVzL21pbi5waXBlXCI7XHJcbmltcG9ydCB7UmVkdWNlUGlwZX0gZnJvbSBcIi4vcGlwZXMvcmVkdWNlLnBpcGVcIjtcclxuaW1wb3J0IHtSZW1hcFBpcGV9IGZyb20gXCIuL3BpcGVzL3JlbWFwLnBpcGVcIjtcclxuaW1wb3J0IHtSZXBsYWNlUGlwZX0gZnJvbSBcIi4vcGlwZXMvcmVwbGFjZS5waXBlXCI7XHJcbmltcG9ydCB7UmV2ZXJzZVBpcGV9IGZyb20gXCIuL3BpcGVzL3JldmVyc2UucGlwZVwiO1xyXG5pbXBvcnQge1JvdW5kUGlwZX0gZnJvbSBcIi4vcGlwZXMvcm91bmQucGlwZVwiO1xyXG5pbXBvcnQge1NhZmVIdG1sUGlwZX0gZnJvbSBcIi4vcGlwZXMvc2FmZS1odG1sLnBpcGVcIjtcclxuaW1wb3J0IHtUcmFuc2xhdGVQaXBlfSBmcm9tIFwiLi9waXBlcy90cmFuc2xhdGUucGlwZVwiO1xyXG5pbXBvcnQge1ZhbHVlc1BpcGV9IGZyb20gXCIuL3BpcGVzL3ZhbHVlcy5waXBlXCI7XHJcblxyXG5pbXBvcnQge0R5bmFtaWNUYWJsZUNvbXBvbmVudH0gZnJvbSBcIi4vY29tcG9uZW50cy9keW5hbWljLXRhYmxlL2R5bmFtaWMtdGFibGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7UGFnaW5hdGlvbk1lbnVDb21wb25lbnR9IGZyb20gXCIuL2NvbXBvbmVudHMvcGFnaW5hdGlvbi1tZW51L3BhZ2luYXRpb24tbWVudS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtVbm9yZGVyZWRMaXN0Q29tcG9uZW50fSBmcm9tIFwiLi9jb21wb25lbnRzL3Vub3JkZXJlZC1saXN0L3Vub3JkZXJlZC1saXN0LmNvbXBvbmVudFwiO1xyXG5cclxuLy8gLS0tIFBpcGVzIC0tLVxyXG5leHBvcnQgY29uc3QgcGlwZXMgPSBbXHJcbiAgICBDaHVua1BpcGUsXHJcbiAgICBFbnRyaWVzUGlwZSxcclxuICAgIEV4dHJhSXRlbVByb3BlcnRpZXNQaXBlLFxyXG4gICAgRmlsdGVyUGlwZSxcclxuICAgIEZpbmRQaXBlLFxyXG4gICAgRm9ybWF0TnVtYmVyUGlwZSxcclxuICAgIEdldE9mZnNldFBpcGUsXHJcbiAgICBHZXRUeXBlUGlwZSxcclxuICAgIEdsb2JhbFRlbXBsYXRlUGlwZSxcclxuICAgIEdyb3VwQnlQaXBlLFxyXG4gICAgSXNUeXBlUGlwZSxcclxuICAgIEpvaW5QaXBlLFxyXG4gICAgS2V5c1BpcGUsXHJcbiAgICBNYXBQaXBlLFxyXG4gICAgTWF4UGlwZSxcclxuICAgIE1pblBpcGUsXHJcbiAgICBSZWR1Y2VQaXBlLFxyXG4gICAgUmVtYXBQaXBlLFxyXG4gICAgUmVwbGFjZVBpcGUsXHJcbiAgICBSZXZlcnNlUGlwZSxcclxuICAgIFJvdW5kUGlwZSxcclxuICAgIFNhZmVIdG1sUGlwZSxcclxuICAgIFRyYW5zbGF0ZVBpcGUsXHJcbiAgICBWYWx1ZXNQaXBlXHJcbl07XHJcblxyXG4vLyAtLS0gRGlyZWN0aXZlcyAtLS1cclxuZXhwb3J0IGNvbnN0IGRpcmVjdGl2ZXMgPSBbXHJcbiAgICBBc3luY01ldGhvZERpcmVjdGl2ZSxcclxuICAgIEJhY2tncm91bmREaXJlY3RpdmUsXHJcbiAgICBEeW5hbWljVGFibGVUZW1wbGF0ZURpcmVjdGl2ZSxcclxuICAgIEdsb2JhbFRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gICAgSWNvbkRpcmVjdGl2ZSxcclxuICAgIE5neFRlbXBsYXRlT3V0bGV0RGlyZWN0aXZlLFxyXG4gICAgUGFnaW5hdGlvbkRpcmVjdGl2ZSxcclxuICAgIFBhZ2luYXRpb25JdGVtRGlyZWN0aXZlLFxyXG4gICAgUmVzb3VyY2VJZkRpcmVjdGl2ZSxcclxuICAgIFN0aWNreURpcmVjdGl2ZSxcclxuICAgIFN0aWNreUNsYXNzRGlyZWN0aXZlLFxyXG4gICAgVW5vcmRlcmVkTGlzdEl0ZW1EaXJlY3RpdmUsXHJcbiAgICBVbm9yZGVyZWRMaXN0VGVtcGxhdGVEaXJlY3RpdmVcclxuXTtcclxuXHJcbi8vIC0tLSBDb21wb25lbnRzIC0tLVxyXG5leHBvcnQgY29uc3QgY29tcG9uZW50cyA9IFtcclxuICAgIER5bmFtaWNUYWJsZUNvbXBvbmVudCxcclxuICAgIFBhZ2luYXRpb25NZW51Q29tcG9uZW50LFxyXG4gICAgVW5vcmRlcmVkTGlzdENvbXBvbmVudFxyXG5dO1xyXG5cclxuZXhwb3J0IGNvbnN0IHByb3ZpZGVycyA9IFtcclxuICAgIC4uLnBpcGVzLFxyXG4gICAgQmFzZUh0dHBDbGllbnQsXHJcbiAgICBCYXNlSHR0cFNlcnZpY2UsXHJcbiAgICBBdXRoR3VhcmQsXHJcbiAgICBBY2xTZXJ2aWNlLFxyXG4gICAgQXBpU2VydmljZSxcclxuICAgIFN0YXRpY0F1dGhTZXJ2aWNlLFxyXG4gICAgQ29uZmlnU2VydmljZSxcclxuICAgIEVycm9ySGFuZGxlclNlcnZpY2UsXHJcbiAgICBFdmVudHNTZXJ2aWNlLFxyXG4gICAgRm9ybWF0dGVyU2VydmljZSxcclxuICAgIEdsb2JhbFRlbXBsYXRlU2VydmljZSxcclxuICAgIEljb25TZXJ2aWNlLFxyXG4gICAgTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgT3BlbkFwaVNlcnZpY2UsXHJcbiAgICBQcm9taXNlU2VydmljZSxcclxuICAgIFN0YXRlU2VydmljZSxcclxuICAgIFN0YXRpY0xhbmd1YWdlU2VydmljZSxcclxuICAgIFN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgQ29uc29sZVRvYXN0ZXJTZXJ2aWNlLFxyXG4gICAgVHJhbnNsYXRlZFVybFNlcmlhbGl6ZXIsXHJcbiAgICBVbml2ZXJzYWxTZXJ2aWNlLFxyXG4gICAgRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlLFxyXG4gICAge1xyXG4gICAgICAgIHByb3ZpZGU6IEVWRU5UX01BTkFHRVJfUExVR0lOUyxcclxuICAgICAgICB1c2VDbGFzczogUmVzaXplRXZlbnRQbHVnaW4sXHJcbiAgICAgICAgbXVsdGk6IHRydWVcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgcHJvdmlkZTogRVZFTlRfTUFOQUdFUl9QTFVHSU5TLFxyXG4gICAgICAgIHVzZUNsYXNzOiBTY3JvbGxFdmVudFBsdWdpbixcclxuICAgICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwcm92aWRlOiBVcmxTZXJpYWxpemVyLFxyXG4gICAgICAgIHVzZUV4aXN0aW5nOiBUcmFuc2xhdGVkVXJsU2VyaWFsaXplclxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwcm92aWRlOiBFcnJvckhhbmRsZXIsXHJcbiAgICAgICAgdXNlRXhpc3Rpbmc6IEVycm9ySGFuZGxlclNlcnZpY2VcclxuICAgIH1cclxuXHJcbl07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZENvbmZpZyhjb25maWc6IElDb25maWdTZXJ2aWNlKTogYW55IHtcclxuICAgIHJldHVybiBjb25maWcubG9hZDtcclxufVxyXG4iXX0=
|