@hestia-earth/ui-components 0.21.2 → 0.21.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/common/index.d.ts +1 -0
- package/esm2022/common/index.mjs +2 -1
- package/esm2022/common/remove-markdown.pipe.mjs +2 -2
- package/esm2022/files/files-form.model.mjs +10 -6
- package/esm2022/node/node-logs-models/node-logs-models.component.mjs +6 -5
- package/fesm2022/hestia-earth-ui-components.mjs +16 -12
- package/fesm2022/hestia-earth-ui-components.mjs.map +1 -1
- package/node/node-logs-models/node-logs-models.component.d.ts +1 -1
- package/package.json +2 -2
package/common/index.d.ts
CHANGED
|
@@ -42,6 +42,7 @@ export { KeysPipe } from './keys.pipe';
|
|
|
42
42
|
export { NoExtPipe } from './no-ext.pipe';
|
|
43
43
|
export { PluralizePipe } from './pluralize.pipe';
|
|
44
44
|
export { PrecisionPipe } from './precision.pipe';
|
|
45
|
+
export { RemoveMarkdownPipe } from './remove-markdown.pipe';
|
|
45
46
|
export { TagsInputDirective } from './tags-input.directive';
|
|
46
47
|
export { TimesPipe } from './times.pipe';
|
|
47
48
|
export { SortByPipe } from './sort-by.pipe';
|
package/esm2022/common/index.mjs
CHANGED
|
@@ -42,7 +42,8 @@ export { KeysPipe } from './keys.pipe';
|
|
|
42
42
|
export { NoExtPipe } from './no-ext.pipe';
|
|
43
43
|
export { PluralizePipe } from './pluralize.pipe';
|
|
44
44
|
export { PrecisionPipe } from './precision.pipe';
|
|
45
|
+
export { RemoveMarkdownPipe } from './remove-markdown.pipe';
|
|
45
46
|
export { TagsInputDirective } from './tags-input.directive';
|
|
46
47
|
export { TimesPipe } from './times.pipe';
|
|
47
48
|
export { SortByPipe } from './sort-by.pipe';
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLFNBQVMsQ0FBQztBQUV4QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM1RyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbG9yJztcbmV4cG9ydCAqIGZyb20gJy4vY29tbW9uLmxpZ2h0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1vbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21tb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvdW5kJztcbmV4cG9ydCAqIGZyb20gJy4vdG9hc3Quc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2QzLXV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vZGVsdGEtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2dzLXV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbmF2aWdhdGlvbi1tZW51LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9tYXBzLXV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vcGx1cmFsaXplJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgeyBCbGFua05vZGVTdGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vYmxhbmstbm9kZS1zdGF0ZS9ibGFuay1ub2RlLXN0YXRlLmNvbXBvbmVudCc7XG5leHBvcnQgeyBCbGFua05vZGVTdGF0ZU5vdGljZUNvbXBvbmVudCB9IGZyb20gJy4vYmxhbmstbm9kZS1zdGF0ZS1ub3RpY2UvYmxhbmstbm9kZS1zdGF0ZS1ub3RpY2UuY29tcG9uZW50JztcbmV4cG9ydCB7IEJsYW5rTm9kZVZhbHVlRGVsdGFDb21wb25lbnQgfSBmcm9tICcuL2JsYW5rLW5vZGUtdmFsdWUtZGVsdGEvYmxhbmstbm9kZS12YWx1ZS1kZWx0YS5jb21wb25lbnQnO1xuZXhwb3J0IHsgQ2xpcGJvYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9jbGlwYm9hcmQvY2xpcGJvYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgeyBEYXRhVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQnO1xuZXhwb3J0IHsgSXNzdWVDb25maXJtQ29tcG9uZW50IH0gZnJvbSAnLi9pc3N1ZS1jb25maXJtL2lzc3VlLWNvbmZpcm0uY29tcG9uZW50JztcbmV4cG9ydCB7IExpbmtLZXlWYWx1ZUNvbXBvbmVudCB9IGZyb20gJy4vbGluay1rZXktdmFsdWUvbGluay1rZXktdmFsdWUuY29tcG9uZW50JztcbmV4cG9ydCB7IE1hcHNEcmF3aW5nQ29uZmlybUNvbXBvbmVudCB9IGZyb20gJy4vbWFwcy1kcmF3aW5nLWNvbmZpcm0vbWFwcy1kcmF3aW5nLWNvbmZpcm0uY29tcG9uZW50JztcbmV4cG9ydCB7IE5hdmlnYXRpb25NZW51Q29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uLW1lbnUvbmF2aWdhdGlvbi1tZW51LmNvbXBvbmVudCc7XG5leHBvcnQgeyBQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50JztcbmV4cG9ydCB7IFBvcG92ZXJDb25maXJtQ29tcG9uZW50IH0gZnJvbSAnLi9wb3BvdmVyLWNvbmZpcm0vcG9wb3Zlci1jb25maXJtLmNvbXBvbmVudCc7XG5leHBvcnQgeyBTY2hlbWFWZXJzaW9uTGlua0NvbXBvbmVudCB9IGZyb20gJy4vc2NoZW1hLXZlcnNpb24tbGluay9zY2hlbWEtdmVyc2lvbi1saW5rLmNvbXBvbmVudCc7XG5leHBvcnQgeyBTa2VsZXRvblRleHRDb21wb25lbnQgfSBmcm9tICcuL3NrZWxldG9uLXRleHQvc2tlbGV0b24tdGV4dC5jb21wb25lbnQnO1xuZXhwb3J0IHsgU29jaWFsVGFnc0NvbXBvbmVudCB9IGZyb20gJy4vc29jaWFsLXRhZ3Mvc29jaWFsLXRhZ3MuY29tcG9uZW50JztcbmV4cG9ydCB7IFRvYXN0Q29tcG9uZW50IH0gZnJvbSAnLi90b2FzdC90b2FzdC5jb21wb25lbnQnO1xuZXhwb3J0IHsgVW5pdENvbnZlcnRlckNvbXBvbmVudCB9IGZyb20gJy4vdW5pdC1jb252ZXJ0ZXIvdW5pdC1jb252ZXJ0ZXIuY29tcG9uZW50JztcbmV4cG9ydCB7IEFwcGx5UHVyZVBpcGUgfSBmcm9tICcuL2FwcGx5LXB1cmUucGlwZSc7XG5leHBvcnQgeyBCaW5kT25jZURpcmVjdGl2ZSB9IGZyb20gJy4vYmluZC1vbmNlLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBDbGlja091dHNpZGVEaXJlY3RpdmUgfSBmcm9tICcuL2NsaWNrLW91dHNpZGUuZGlyZWN0aXZlJztcbmV4cG9ydCB7IENvbXBvdW5kRGlyZWN0aXZlIH0gZnJvbSAnLi9jb21wb3VuZC5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgQ29tcG91bmRQaXBlIH0gZnJvbSAnLi9jb21wb3VuZC5waXBlJztcbmV4cG9ydCB7IERlZmF1bHRQaXBlIH0gZnJvbSAnLi9kZWZhdWx0LnBpcGUnO1xuZXhwb3J0IHsgRWxsaXBzaXNQaXBlIH0gZnJvbSAnLi9lbGxpcHNpcy5waXBlJztcbmV4cG9ydCB7IEdldFBpcGUgfSBmcm9tICcuL2dldC5waXBlJztcbmV4cG9ydCB7IElzQXJyYXlQaXBlIH0gZnJvbSAnLi9pcy1hcnJheS5waXBlJztcbmV4cG9ydCB7IElzT2JqZWN0UGlwZSB9IGZyb20gJy4vaXMtb2JqZWN0LnBpcGUnO1xuZXhwb3J0IHsgS2V5VG9MYWJlbFBpcGUgfSBmcm9tICcuL2tleS10by1sYWJlbC5waXBlJztcbmV4cG9ydCB7IEtleXNQaXBlIH0gZnJvbSAnLi9rZXlzLnBpcGUnO1xuZXhwb3J0IHsgTm9FeHRQaXBlIH0gZnJvbSAnLi9uby1leHQucGlwZSc7XG5leHBvcnQgeyBQbHVyYWxpemVQaXBlIH0gZnJvbSAnLi9wbHVyYWxpemUucGlwZSc7XG5leHBvcnQgeyBQcmVjaXNpb25QaXBlIH0gZnJvbSAnLi9wcmVjaXNpb24ucGlwZSc7XG5leHBvcnQgeyBSZW1vdmVNYXJrZG93blBpcGUgfSBmcm9tICcuL3JlbW92ZS1tYXJrZG93bi5waXBlJztcbmV4cG9ydCB7IFRhZ3NJbnB1dERpcmVjdGl2ZSB9IGZyb20gJy4vdGFncy1pbnB1dC5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgVGltZXNQaXBlIH0gZnJvbSAnLi90aW1lcy5waXBlJztcbmV4cG9ydCB7IFNvcnRCeVBpcGUgfSBmcm9tICcuL3NvcnQtYnkucGlwZSc7XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Pipe } from '@angular/core';
|
|
2
|
-
import
|
|
2
|
+
import removeMd from 'remove-markdown';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class RemoveMarkdownPipe {
|
|
5
5
|
transform(value) {
|
|
@@ -14,4 +14,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.8", ngImpor
|
|
|
14
14
|
name: 'removeMarkdown'
|
|
15
15
|
}]
|
|
16
16
|
}] });
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLW1hcmtkb3duLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL3JlbW92ZS1tYXJrZG93bi5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sUUFBUSxNQUFNLGlCQUFpQixDQUFDOztBQUt2QyxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7OEdBSFUsa0JBQWtCOzRHQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBSDlCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGdCQUFnQjtpQkFDdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgcmVtb3ZlTWQgZnJvbSAncmVtb3ZlLW1hcmtkb3duJztcblxuQFBpcGUoe1xuICBuYW1lOiAncmVtb3ZlTWFya2Rvd24nXG59KVxuZXhwb3J0IGNsYXNzIFJlbW92ZU1hcmtkb3duUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJlbW92ZU1kKHZhbHVlKTtcbiAgfVxufVxuIl19
|
|
@@ -219,7 +219,7 @@ const schemaPlacholder = (schema, fullKey) => {
|
|
|
219
219
|
const propertyPlaceholder = (schema, valueType, fullKey = '', parentSchema) => schema.type === 'array' ?
|
|
220
220
|
arrayPlaceholder(valueType) : (parentSchema && fullKey?.length ? schemaPlacholder(parentSchema, fullKey) : null) || defaultPlaceholder(schema, valueType);
|
|
221
221
|
const propertyTypeValue = {
|
|
222
|
-
object:
|
|
222
|
+
object: safeJSONStringify,
|
|
223
223
|
array: (val, schema) => {
|
|
224
224
|
const { items } = schema;
|
|
225
225
|
return '$ref' in items ? val : (Array.isArray(val) ?
|
|
@@ -232,10 +232,14 @@ const propertyTypeValue = {
|
|
|
232
232
|
integer: val => +(`${val}` || '0'),
|
|
233
233
|
boolean: val => (`${val}` || '').toLowerCase() === 'true'
|
|
234
234
|
};
|
|
235
|
-
const propertyValue = (schema, value) =>
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
235
|
+
const propertyValue = (schema, value) => {
|
|
236
|
+
const valueType = schema.type
|
|
237
|
+
? Array.isArray(schema.type) && typeof value in propertyTypeValue
|
|
238
|
+
? typeof value
|
|
239
|
+
: schema.type
|
|
240
|
+
: 'object';
|
|
241
|
+
return propertyTypeValue[valueType in propertyTypeValue ? valueType : 'string'](value, schema);
|
|
242
|
+
};
|
|
239
243
|
const propertyValueType = (schema, value) => (schema.type ? (Array.isArray(schema.type) ?
|
|
240
244
|
schema.type[0] :
|
|
241
245
|
schema.type === 'array' ?
|
|
@@ -563,4 +567,4 @@ export const calculateCycleStartDate = (properties, property) => {
|
|
|
563
567
|
const endDate = siblingProperty(properties, property, 'endDate');
|
|
564
568
|
return moment(endDate.value).locale('en-gb').subtract(cycleDuration.value, 'days').format('YYYY-MM-DD');
|
|
565
569
|
};
|
|
566
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZm9ybS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9maWxlcy9maWxlcy1mb3JtLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRCxPQUFPLEVBQ2UsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFDM0QsZ0JBQWdCLEVBQ3JDLE1BQU0sc0JBQXNCLENBQUM7QUFLOUIsT0FBTyxFQUNhLHdCQUF3QixFQUFFLFdBQVcsRUFDdkQsc0JBQXNCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFDdEQsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQ2hGLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLHdCQUF3QixFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUN6RixrQkFBa0IsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFDakUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFckgsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJ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QixFQUFFLFFBQXVCLEVBQUUsRUFBRTtJQUM5RixNQUFNLGFBQWEsR0FBRyxlQUFlLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxlQUFlLENBQUUsQ0FBQztJQUM5RSxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUUsQ0FBQztJQUNsRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUMxRyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC5nZXQnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0ICdtb21lbnQvbG9jYWxlL2VuLWdiJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgZGlmZkluRGF5cywgaXNOdW1iZXIgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3V0aWxzJztcbmltcG9ydCB7XG4gIEpTT04gYXMgSGVzdGlhSnNvbiwgU2NoZW1hVHlwZSwgTm9kZVR5cGUsIGlzVHlwZU5vZGUsIGlzVHlwZVZhbGlkLCBpc0V4cGFuZGFibGUsXG4gIFNpdGUsIE9yZ2FuaXNhdGlvbiwgdHlwZVRvU2NoZW1hVHlwZVxufSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQge1xuICBkZWZpbml0aW9ucywgZGVmaW5pdGlvbiwgSURlZmluaXRpb25PYmplY3QsIElEZWZpbml0aW9uQXJyYXksIGdlbmVyaWNUeXBlXG59IGZyb20gJ0BoZXN0aWEtZWFydGgvanNvbi1zY2hlbWEnO1xuXG5pbXBvcnQge1xuICBJVmFsaWRhdGlvbkVycm9yLCBmb3JtYXRDdXN0b21FcnJvck1lc3NhZ2UsIGZvcm1hdEVycm9yLFxuICBpc01pc3NpbmdQcm9wZXJ0eUVycm9yLCBlcnJvckhhc0Vycm9yLCBlcnJvckhhc1dhcm5pbmcsIHZhbGlkYXRpb25FcnJvckxldmVsLFxuICBtaXNzaW5nTm9kZUVycm9ycywgaXNNaXNzaW5nT25lT2ZFcnJvciwgaXNNaWdyYXRpb25FcnJvciwgbWlncmF0aW9uRXJyb3JNZXNzYWdlXG59IGZyb20gJy4vZmlsZXMtZXJyb3IubW9kZWwnO1xuaW1wb3J0IHtcbiAgc2NoZW1hUmVxdWlyZWRQcm9wZXJ0aWVzLCB2YWx1ZVR5cGVUb0RlZmF1bHQsIGRlZmluaXRpb25Ub1NjaGVtYVR5cGUsIGF2YWlsYWJsZVByb3BlcnRpZXMsXG4gIG5lc3RpbmdUeXBlRW5hYmxlZCwgbmVzdGluZ0VuYWJsZWQsIGxpbmtUeXBlRW5hYmxlZCwgaXNTY2hlbWFJcmlcbn0gZnJvbSAnLi4vc2NoZW1hL3NjaGVtYS5zZXJ2aWNlJztcbmltcG9ydCB7IG1hdGNoQ291bnRyeSB9IGZyb20gJy4uL3NlYXJjaC9zZWFyY2gubW9kZWwnO1xuaW1wb3J0IHsgYmFzZVVybCwgY29kZSwgZ2xvc3NhcnlMaW5rLCBtYXBzVXJsLCBzYWZlSlNPTlBhcnNlLCBzYWZlSlNPTlN0cmluZ2lmeSwgc2NoZW1hTGluayB9IGZyb20gJy4uL2NvbW1vbi91dGlscyc7XG5cbmNvbnN0IG1pc3NpbmdOb2RlRXJyb3JNZXNzYWdlID0gKHsgJ0B0eXBlJzogX3QsIHR5cGUsIG5hbWUgfTogYW55LCBtaXNzaW5nSWRFcnJvcj86IElWYWxpZGF0aW9uRXJyb3IpID0+XG4gIChfdCB8fCB0eXBlKSA9PT0gJ1Rlcm0nXG4gICAgLy8gbWlncmF0ZWQgZnJvbSBhIHZhbHVlIHRvIGFub3RoZXJcbiAgICA/IGlzTWlncmF0aW9uRXJyb3IobWlzc2luZ0lkRXJyb3IpXG4gICAgICA/IG1pZ3JhdGlvbkVycm9yTWVzc2FnZShtaXNzaW5nSWRFcnJvcilcbiAgICAgIDogYCR7bmFtZSA/IGBUaGUgdGVybSBcIiR7bmFtZX1cImAgOiAnVGhpcyB0ZXJtJ30gZG9lc24ndCBtYXRjaCBhIHRlcm0gaW4gdGhlICR7Z2xvc3NhcnlMaW5rKCdHbG9zc2FyeSBvZiBUZXJtcycpfS5cbiAgICAgIFBsZWFzZSBjaGVjayB0aGUgJHtnbG9zc2FyeUxpbmsoJ0dsb3NzYXJ5Jyl9IGZvciB0aGUgY29ycmVjdCAke2NvZGUoJ0BpZCcpfSBvciAke2NvZGUoJ25hbWUnKX0gYW5kIHNwZWxsaW5nLmBcbiAgICA6IGBUaGlzICR7c2NoZW1hTGluayhfdCB8fCB0eXBlKX0gZG9lcyBub3QgZXhpc3QgaW4gSGVzdGlhLiBJZiB5b3UgYXJlIHRyeWluZyB0byBsaW5rIHRvIGFuIGV4aXN0aW5nXG4gICAgJHtzY2hlbWFMaW5rKF90IHx8IHR5cGUpfSBpbiBIZXN0aWEsIHBsZWFzZSBjaGVjayB0aGUgJHtjb2RlKCduYW1lJyl9IG9yICR7Y29kZSgnQGlkJyl9IGlzIGNvcnJlY3QuXG4gICAgSWYgeW91IGFyZSB0cnlpbmcgdG8gY3JlYXRlIGEgbmV3ICR7c2NoZW1hTGluayhfdCB8fCB0eXBlKX0sIHBsZWFzZSBpZGVudGlmeSBpdCB3aXRoIGFuICR7Y29kZSgnaWQnKX0gZmllbGQuYDtcblxuZXhwb3J0IGNvbnN0IEFSUkFZX0RFTElNSVRFUiA9ICc7JztcbmNvbnN0IHByaXZhdGVLZXlzID0gW1xuICAnZmlsZXBhdGgnXG5dO1xuXG5leHBvcnQgdHlwZSBzdWdnZXN0aW9uVHlwZSA9IE5vZGVUeXBlIHwgJ3NlbGVjdCcgfCAnZGVmYXVsdCc7XG5leHBvcnQgY29uc3QgZGVmYXVsdFN1Z2dlc3Rpb25UeXBlOiBzdWdnZXN0aW9uVHlwZSA9ICdkZWZhdWx0JztcblxuaW50ZXJmYWNlIElOb2RlUHJvcGVydHlTdWdnZXN0aW9uIHtcbiAgdHlwZT86IHN1Z2dlc3Rpb25UeXBlO1xuICBxdWVyaWVzPzogYW55W107XG4gIHZhbHVlcz86IHN0cmluZ1tdO1xuICBwYXJlbnRMZXZlbD86IG51bWJlcjtcbiAgaXNMaW5rTm9kZT86IGJvb2xlYW47XG4gIGlzVW5pcXVlS2V5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElOZXdQcm9wZXJ0eSB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHByb3A/OiBkZWZpbml0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElFcnJvclByb3BlcnR5IHtcbiAgbGV2ZWw/OiB2YWxpZGF0aW9uRXJyb3JMZXZlbDtcbiAgbWVzc2FnZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTm9kZVByb3BlcnR5IHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoaXMgcHJvcGVydHkgd2FzIGFkZGVkIGJ5IHRoZSB1c2VyXG4gICAqL1xuICBpZDogc3RyaW5nO1xuICBpc0FkZGVkPzogYm9vbGVhbjtcbiAgc2NoZW1hVHlwZTogU2NoZW1hVHlwZTtcbiAga2V5OiBzdHJpbmc7XG4gIGZ1bGxLZXk6IHN0cmluZztcbiAgdmFsdWU6IGFueTtcbiAgYWRkUHJvcGVydHlFbmFibGVkOiBib29sZWFuO1xuICBzdWdnZXN0aW9ucz86IElOb2RlUHJvcGVydHlTdWdnZXN0aW9uO1xuICBzY2hlbWE/OiBkZWZpbml0aW9uO1xuICBlcnJvcj86IElWYWxpZGF0aW9uRXJyb3I7XG4gIGhhc0Vycm9yPzogYm9vbGVhbjtcbiAgaGFzV2FybmluZz86IGJvb2xlYW47XG4gIGVkaXRhYmxlPzogYm9vbGVhbjtcbiAgY2xvc2VkVmlzaWJsZT86IGJvb2xlYW47XG4gIG5ld1Byb3BlcnR5PzogSU5ld1Byb3BlcnR5O1xuICBuZXdFcnJvcj86IElFcnJvclByb3BlcnR5O1xuICBpc1JlcXVpcmVkPzogYm9vbGVhbjtcbiAgaXNIaWRkZW4/OiBib29sZWFuO1xuICBpc0FycmF5PzogYm9vbGVhbjtcbiAgaXNFeHBhbmRhYmxlPzogYm9vbGVhbjtcbiAgaXNPcGVuPzogYm9vbGVhbjtcbiAgcHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgZXh0ZXJuYWxVcmw/OiB7XG4gICAgdXJsPzogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgLy8gZGVmYXVsdCBpcyBleHRlcm5hbC1saW5rLWFsdFxuICAgIGljb24/OiBzdHJpbmc7XG4gICAgdXJsUGFyYW1WYWx1ZT86IGJvb2xlYW47XG4gIH07XG4gIC8vIG1ha2luZyBjaGFuZ2VzIG9uIHRoZSBwcm9wZXJ0eVxuICBsb2FkaW5nPzogYm9vbGVhbjtcbiAgLy8gdXNlciBtYWRlIGNoYW5nZXMgdG8gdGhlIG9yaWdpbmFsIHZhbHVlXG4gIGNoYW5nZWQ/OiBib29sZWFuO1xuICBmb3JtYXR0ZXI6ICh2YWx1ZTogYW55KSA9PiBzdHJpbmc7XG59XG5cbmNvbnN0IHN0cmluZ1ZhbHVlID0gKHZhbHVlOiBhbnkpID0+ICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnIHx8IHZhbHVlID09PSBudWxsID8gJycgOiB2YWx1ZSkudG9TdHJpbmcoKTtcbmNvbnN0IG5vbkV4cGFuZGFibGVBcnJheURhdGFQYXRoID0gKGtleTogc3RyaW5nKSA9PiBrZXkucmVwbGFjZSgvXFxbXFxkK1xcXSQvLCAnJyk7XG5leHBvcnQgY29uc3Qga2V5VG9EYXRhUGF0aCA9IChrZXk6IHN0cmluZykgPT4ga2V5Py5sZW5ndGggPyBgLiR7a2V5fWAgOiAnJztcbmV4cG9ydCBjb25zdCBkYXRhUGF0aFRvS2V5ID0gKGRhdGFQYXRoID0gJycsIHRyaW1BcnJheSA9IGZhbHNlKSA9PlxuICB0cmltQXJyYXkgPyBub25FeHBhbmRhYmxlQXJyYXlEYXRhUGF0aChkYXRhUGF0aC5zdWJzdHJpbmcoMSkpIDogZGF0YVBhdGguc3Vic3RyaW5nKDEpO1xuZXhwb3J0IGNvbnN0IHBhcmVudEtleSA9IChrZXk6IHN0cmluZykgPT4ge1xuICBjb25zdCBrZXlzID0gKGtleS5zdGFydHNXaXRoKCcuJykgPyBrZXkuc3Vic3RyaW5nKDEpIDoga2V5KS5zcGxpdCgnLicpO1xuICBrZXlzLnBvcCgpO1xuICByZXR1cm4ga2V5cy5qb2luKCcuJyk7XG59O1xuXG4vKipcbiAqIFNvcnQgcHJvcGVydGllcyBoYXZpbmcgZXJyb3JzLCB0eXBlLCBpZCwgLi4ucHJvcGVydGllcyAoc2ltcGxlKSwgYW5kIGZpbmFsbHkgdGhlIGdyb3Vwc1xuICpcbiAqIEBwYXJhbSBhIHtJTm9kZVByb3BlcnR5fVxuICogQHBhcmFtIGIge0lOb2RlUHJvcGVydHl9XG4gKi9cbmV4cG9ydCBjb25zdCBzb3J0UHJvcGVydGllcyA9IChhOiBJTm9kZVByb3BlcnR5LCBiOiBJTm9kZVByb3BlcnR5KSA9PiB7XG4gIGlmIChpc051bWJlcihhLmtleSkgJiYgaXNOdW1iZXIoYi5rZXkpKSB7XG4gICAgcmV0dXJuICthLmtleSAtICtiLmtleTtcbiAgfVxuICBpZiAoYS5pc0V4cGFuZGFibGUpIHtcbiAgICByZXR1cm4gYi5pc0V4cGFuZGFibGUgPyBhLmtleS5sb2NhbGVDb21wYXJlKGIua2V5KSA6IDE7XG4gIH1cbiAgaWYgKGIuaXNFeHBhbmRhYmxlKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIGlmICghYS5rZXkpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgY29uc3QgYUtleSA9IGEua2V5LnJlcGxhY2UoJ0AnLCAnJyk7XG4gIGNvbnN0IGJLZXkgPSBiLmtleS5yZXBsYWNlKCdAJywgJycpO1xuICBpZiAoYUtleSA9PT0gJ3R5cGUnKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIGlmIChiS2V5ID09PSAndHlwZScpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICBpZiAoYUtleSA9PT0gJ2lkJyAmJiBiS2V5ICE9PSAndHlwZScpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgaWYgKGEuaGFzRXJyb3IgfHwgYS5oYXNXYXJuaW5nKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIHJldHVybiBhLmtleS5sb2NhbGVDb21wYXJlKGIua2V5KTtcbn07XG5cbmNvbnN0IGRlZmF1bHRQcm9wZXJ0eUVycm9yOiB7XG4gIFtrZXk6IHN0cmluZ106IChlcnJvcjogYW55LCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkO1xufSA9IHtcbiAgbWF4OiAoeyBtYXggfSkgPT4gYHNob3VsZCBiZSA8PSAke21heH1gLFxuICBtaW46ICh7IG1pbiB9KSA9PiBgc2hvdWxkIGJlID49ICR7bWlufWAsXG4gIHBhdHRlcm46ICh7IHJlcXVpcmVkUGF0dGVybiB9KSA9PiBgc2hvdWxkIG1hdGNoIHBhdHRlcm4gXCIke3JlcXVpcmVkUGF0dGVybn1cImAsXG4gIHJlcXVpcmVkOiAoX2UsIHsgc2NoZW1hVHlwZSB9KSA9PiBzY2hlbWFUeXBlID8gYHNob3VsZCBiZSBzZXQgb3IgbGlua2VkIHRvIGFub3RoZXIgJHtzY2hlbWFUeXBlfWAgOiB1bmRlZmluZWRcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRQcm9wZXJ0eUVycm9yID0gKGVycm9yczogYW55LCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkgPT4ge1xuICBjb25zdCBrZXkgPSBPYmplY3Qua2V5cyhlcnJvcnMpWzBdO1xuICByZXR1cm4ga2V5IGluIGRlZmF1bHRQcm9wZXJ0eUVycm9yID8gZm9ybWF0Q3VzdG9tRXJyb3JNZXNzYWdlKGRlZmF1bHRQcm9wZXJ0eUVycm9yW2tleV0oZXJyb3JzW2tleV0sIHByb3BlcnR5KSkgOiAnJztcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXR0ZXIgPSAoa2V5OiBzdHJpbmcpID0+ICh2YWx1ZTogYW55KSA9PlxuICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnID8gKHZhbHVlLmJpYmxpb2dyYXBoeT8udGl0bGUgfHwgdmFsdWVba2V5XSB8fCB2YWx1ZS5uYW1lKSA6IHZhbHVlO1xuXG5leHBvcnQgY29uc3QgaGFzRXJyb3IgPSB2YWx1ZSA9PiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLnNvbWUoaGFzRXJyb3IpIDogdmFsdWUuaGFzRXJyb3I7XG5cbmV4cG9ydCBjb25zdCBoYXNXYXJuaW5nID0gdmFsdWUgPT4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5zb21lKGhhc1dhcm5pbmcpIDogdmFsdWUuaGFzV2FybmluZztcblxuY29uc3QgY29tcGlsZVN1Z2dlc3Rpb25RdWVyaWVzID0gKGtleTogc3RyaW5nLCBhbGxPZjogYW55W10pID0+IHtcbiAgY29uc3QgY29uZGl0aW9ucyA9IChhbGxPZiB8fCBbXSlcbiAgICAuZmlsdGVyKHYgPT4gKHYuaWY/LnJlcXVpcmVkIHx8IFtdKS5pbmNsdWRlcyhrZXkpKVxuICAgIC5tYXAodiA9PiB2LnRoZW4/LnByb3BlcnRpZXM/LltrZXldKVxuICAgIC5tYXAodiA9PiB2Py5pdGVtcz8ucHJvcGVydGllcyB8fCB2Py5wcm9wZXJ0aWVzKVxuICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gIHJldHVybiBjb25kaXRpb25zLmxlbmd0aCA/IFt7XG4gICAgYm9vbDoge1xuICAgICAgc2hvdWxkOiBjb25kaXRpb25zLmZsYXRNYXAoY29uZCA9PiBPYmplY3Qua2V5cyhjb25kKS5mbGF0TWFwKGsgPT4gKGNvbmRba10uZW51bSB8fCBbXSkubWFwKHYgPT4gKHtcbiAgICAgICAgbWF0Y2g6IHsgW2tdOiB2IH1cbiAgICAgIH0pKSkpLFxuICAgICAgbWluaW11bV9zaG91bGRfbWF0Y2g6IDFcbiAgICB9XG4gIH1dIDogW107XG59O1xuXG4vLyBkZWZhdWx0IHN1Z2dlc3QgZm9yIGxpbmtpbmcgbm9kZXMgdG9nZXRoZXIgdXNpbmcgdGhlIGBpZGAgZmllbGRcbmNvbnN0IHN1Z2dlc3RMaW5rTm9kZXMgPSAodHlwZTogTm9kZVR5cGUsIGZ1bGxLZXk6IHN0cmluZyk6IElOb2RlUHJvcGVydHlTdWdnZXN0aW9uIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3Qga2V5cyA9IGZ1bGxLZXkuc3BsaXQoJy4nKTtcbiAgY29uc3Qga2V5ID0ga2V5cy5wb3AoKTtcbiAgcmV0dXJuIGtleSA9PT0gJ2lkJyAmJiBrZXlzLmxlbmd0aCA+PSAxID8geyB0eXBlLCBpc0xpbmtOb2RlOiB0cnVlIH0gOiB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBzdWdnZXN0RXhpc3RpbmdOb2RlID0gKHR5cGU6IE5vZGVUeXBlLCBmdWxsS2V5OiBzdHJpbmcpOiBJTm9kZVByb3BlcnR5U3VnZ2VzdGlvbiB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGtleXMgPSBmdWxsS2V5LnNwbGl0KCcuJyk7XG4gIGNvbnN0IGtleSA9IGtleXMucG9wKCkhO1xuICByZXR1cm4ga2V5cy5sZW5ndGggPj0gMSAmJiBbJ0BpZCcsICdvcGVuTENBSWQnXS5pbmNsdWRlcyhrZXkpID8geyB0eXBlLCBpc1VuaXF1ZUtleTogJ0BpZCcgfSA6IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IGRlZmF1bHROb2RlVHlwZVN1Z2dlc3Rpb24gPSAodHlwZTogTm9kZVR5cGUpID0+IChmdWxsS2V5OiBzdHJpbmcpID0+XG4gIHN1Z2dlc3RMaW5rTm9kZXModHlwZSwgZnVsbEtleSkgfHwgc3VnZ2VzdEV4aXN0aW5nTm9kZSh0eXBlLCBmdWxsS2V5KTtcblxuY29uc3QgdGVybVN1Z2dlc3Rpb25zID0gKHBhcmVudDogc3RyaW5nLCB7IGFsbE9mIH06IElEZWZpbml0aW9uT2JqZWN0KSA9PiAoe1xuICB0eXBlOiBOb2RlVHlwZS5UZXJtLFxuICBxdWVyaWVzOiBbXG4gICAgLi4uY29tcGlsZVN1Z2dlc3Rpb25RdWVyaWVzKG5vbkV4cGFuZGFibGVBcnJheURhdGFQYXRoKHBhcmVudCksIGFsbE9mISksXG4gICAgLi4uKFsnY291bnRyeSddLmluY2x1ZGVzKHBhcmVudCkgPyBbbWF0Y2hDb3VudHJ5XSA6IFtdKVxuICBdXG59KTtcblxuY29uc3QgdHlwZVRvU3VnZ2VzdGlvbjoge1xuICBbdHlwZSBpbiBTY2hlbWFUeXBlfE5vZGVUeXBlfGdlbmVyaWNUeXBlfCdpbnRlZ2VyJ10/OiAoXG4gICAgZnVsbEtleTogc3RyaW5nLCBwYXJlbnRTY2hlbWE/OiBkZWZpbml0aW9uLCBzY2hlbWE/OiBkZWZpbml0aW9uXG4gICkgPT4gSU5vZGVQcm9wZXJ0eVN1Z2dlc3Rpb258YW55O1xufSA9IHtcbiAgW05vZGVUeXBlLkFjdG9yXTogZGVmYXVsdE5vZGVUeXBlU3VnZ2VzdGlvbihOb2RlVHlwZS5BY3RvciksXG4gIFtOb2RlVHlwZS5DeWNsZV06IGRlZmF1bHROb2RlVHlwZVN1Z2dlc3Rpb24oTm9kZVR5cGUuQ3ljbGUpLFxuICBbTm9kZVR5cGUuSW1wYWN0QXNzZXNzbWVudF06IGRlZmF1bHROb2RlVHlwZVN1Z2dlc3Rpb24oTm9kZVR5cGUuSW1wYWN0QXNzZXNzbWVudCksXG4gIFtOb2RlVHlwZS5PcmdhbmlzYXRpb25dOiBkZWZhdWx0Tm9kZVR5cGVTdWdnZXN0aW9uKE5vZGVUeXBlLk9yZ2FuaXNhdGlvbiksXG4gIFtOb2RlVHlwZS5TaXRlXTogZGVmYXVsdE5vZGVUeXBlU3VnZ2VzdGlvbihOb2RlVHlwZS5TaXRlKSxcbiAgW05vZGVUeXBlLlNvdXJjZV06IGRlZmF1bHROb2RlVHlwZVN1Z2dlc3Rpb24oTm9kZVR5cGUuU291cmNlKSxcbiAgW05vZGVUeXBlLlRlcm1dOiAoZnVsbEtleSwgcGFyZW50U2NoZW1hKSA9PiB7XG4gICAgY29uc3Qga2V5cyA9IGZ1bGxLZXkuc3BsaXQoJy4nKTtcbiAgICBjb25zdCBrZXkgPSBrZXlzLnBvcCgpITtcbiAgICByZXR1cm4gWyduYW1lJ10uaW5jbHVkZXMoa2V5KSAmJiBrZXlzLmxlbmd0aCA+PSAxID9cbiAgICAgIHRlcm1TdWdnZXN0aW9ucyhrZXlzLnBvcCgpISwgcGFyZW50U2NoZW1hIGFzIElEZWZpbml0aW9uT2JqZWN0KSA6XG4gICAgICBkZWZhdWx0Tm9kZVR5cGVTdWdnZXN0aW9uKE5vZGVUeXBlLlRlcm0pKGZ1bGxLZXkpO1xuICB9LFxuICBbU2NoZW1hVHlwZS5CaWJsaW9ncmFwaHldOiAoZnVsbEtleSkgPT4ge1xuICAgIGNvbnN0IGtleXMgPSBmdWxsS2V5LnNwbGl0KCcuJyk7XG4gICAgY29uc3Qga2V5ID0ga2V5cy5wb3AoKSE7XG4gICAgY29uc3QgcGFyZW50ID0ga2V5cy5wb3AoKSE7XG4gICAgLy8gcHJldmVudCByZXBsYWNpbmcgYSB0b3AtbGV2ZWwgc291cmNlXG4gICAgcmV0dXJuIFsndGl0bGUnLCAnZG9jdW1lbnRET0knLCAnc2NvcHVzJ10uaW5jbHVkZXMoa2V5KSAmJiBwYXJlbnQgPT09ICdiaWJsaW9ncmFwaHknICYmIGtleXMubGVuZ3RoID49IDEgPyB7XG4gICAgICB0eXBlOiBOb2RlVHlwZS5Tb3VyY2UsXG4gICAgICBwYXJlbnRMZXZlbDogMVxuICAgIH0gOiB1bmRlZmluZWQ7XG4gIH0sXG4gIG51bWJlcjogKF9hLCBfYiwgc2NoZW1hKSA9PiB7XG4gICAgY29uc3QgdmFsdWVzID0gKHNjaGVtYSBhcyBhbnkpLmNvbnN0ID8gWyhzY2hlbWEgYXMgYW55KS5jb25zdF0gOiBbXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogdmFsdWVzLmxlbmd0aCA+IDAgPyAnc2VsZWN0JyA6IGRlZmF1bHRTdWdnZXN0aW9uVHlwZSxcbiAgICAgIC8vIGV4Y2x1ZGUgc3VnZ2VzdGluZyBTY2hlbWFUeXBlXG4gICAgICB2YWx1ZXNcbiAgICB9O1xuICB9LFxuICBpbnRlZ2VyOiAoX2EsIF9iLCBzY2hlbWEpID0+IHtcbiAgICBjb25zdCB2YWx1ZXMgPSAoc2NoZW1hIGFzIGFueSkuY29uc3QgPyBbKHNjaGVtYSBhcyBhbnkpLmNvbnN0XSA6IFtdO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiB2YWx1ZXMubGVuZ3RoID4gMCA/ICdzZWxlY3QnIDogZGVmYXVsdFN1Z2dlc3Rpb25UeXBlLFxuICAgICAgLy8gZXhjbHVkZSBzdWdnZXN0aW5nIFNjaGVtYVR5cGVcbiAgICAgIHZhbHVlc1xuICAgIH07XG4gIH0sXG4gIHN0cmluZzogKGZ1bGxLZXksIF9iLCBzY2hlbWEpID0+IHtcbiAgICAvLyBleGNsdWRlIHN1Z2dlc3RpbmcgU2NoZW1hVHlwZVxuICAgIGNvbnN0IHZhbHVlcyA9IChzY2hlbWEgYXMgYW55KS5jb25zdCA/XG4gICAgICBbKHNjaGVtYSBhcyBhbnkpLmNvbnN0XSA6XG4gICAgICAoKHNjaGVtYSBhcyBhbnkpLmVudW0gfHwgW10pLmZpbHRlcih2YWwgPT4gIU9iamVjdC52YWx1ZXMoU2NoZW1hVHlwZSkuaW5jbHVkZXModmFsKSk7XG4gICAgY29uc3Qga2V5ID0gZnVsbEtleS5zcGxpdCgnLicpLnBvcCgpO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiB2YWx1ZXMubGVuZ3RoID4gMCAmJiBrZXkgIT09ICd0eXBlJyA/ICdzZWxlY3QnIDogZGVmYXVsdFN1Z2dlc3Rpb25UeXBlLFxuICAgICAgdmFsdWVzXG4gICAgfTtcbiAgfSxcbiAgYm9vbGVhbjogKF9hKSA9PiAoe1xuICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgIHZhbHVlczogWyd0cnVlJywgJ2ZhbHNlJ11cbiAgfSlcbn07XG5cbmNvbnN0IGVuYWJsZVN1Z2dlc3Rpb25zID0gKFxuICBwYXJlbnRTY2hlbWE6IGRlZmluaXRpb24sIHR5cGU6IFNjaGVtYVR5cGUgfCBOb2RlVHlwZSB8IGdlbmVyaWNUeXBlLCBmdWxsS2V5OiBzdHJpbmcsIHNjaGVtYT86IGRlZmluaXRpb25cbikgPT4ge1xuICBjb25zdCBzdWdnZXN0aW9uID0gdHlwZSBpbiB0eXBlVG9TdWdnZXN0aW9uID8gdHlwZVRvU3VnZ2VzdGlvblt0eXBlXSEoZnVsbEtleSwgcGFyZW50U2NoZW1hKSA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIHN1Z2dlc3Rpb24gfHwgKFxuICAgIHNjaGVtYSAmJiBzY2hlbWEudHlwZSBhcyBnZW5lcmljVHlwZSBpbiB0eXBlVG9TdWdnZXN0aW9uID9cbiAgICAgIHR5cGVUb1N1Z2dlc3Rpb25bc2NoZW1hLnR5cGUgYXMgZ2VuZXJpY1R5cGVdIShmdWxsS2V5LCBwYXJlbnRTY2hlbWEsIHNjaGVtYSkgOlxuICAgICAgdW5kZWZpbmVkXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3Qgbm9kZUF2YWlsYWJsZVByb3BlcnRpZXMgPSAoXG4gIG5vZGU6IEhlc3RpYUpzb248U2NoZW1hVHlwZT4sIHsgZnVsbEtleSwgc2NoZW1hLCBzY2hlbWFUeXBlIH06IFBhcnRpYWw8SU5vZGVQcm9wZXJ0eT5cbikgPT4gYXZhaWxhYmxlUHJvcGVydGllcyhzY2hlbWEhLCBzY2hlbWFUeXBlISwgZnVsbEtleSA/IGdldChub2RlLCBmdWxsS2V5LCB7fSkgOiBub2RlLCBmdWxsS2V5IS5sZW5ndGggPiAwKTtcblxuZXhwb3J0IGNvbnN0IGlzQWRkUHJvcGVydHlFbmFibGVkID0gKFxuICBub2RlOiBIZXN0aWFKc29uPFNjaGVtYVR5cGU+LCBzY2hlbWFUeXBlOiBTY2hlbWFUeXBlLCBzY2hlbWE6IGRlZmluaXRpb24sIGZ1bGxLZXkgPSAnJ1xuKSA9PiAhIXNjaGVtYSAmJlxuICAhIU9iamVjdC5rZXlzKG5vZGVBdmFpbGFibGVQcm9wZXJ0aWVzKG5vZGUsIHsgZnVsbEtleSwgc2NoZW1hIH0pKS5sZW5ndGggJiZcbiAgKCFmdWxsS2V5IHx8IG5lc3RpbmdUeXBlRW5hYmxlZChzY2hlbWFUeXBlKSk7XG5cbmNvbnN0IGVkaXRhYmxlS2V5ID0gKGtleTogc3RyaW5nKSA9PiAhWyd0eXBlJywgJ0B0eXBlJywgJ3Rlcm1UeXBlJ10uaW5jbHVkZXMoa2V5KTtcblxuZXhwb3J0IGNvbnN0IHByb3BlcnR5SWQgPSAoKSA9PiB1dWlkdjQoKTtcblxuY29uc3QgcHJvcGVydHlVcmwgPSAobm9kZTogSGVzdGlhSnNvbjxTY2hlbWFUeXBlPiwga2V5OiBzdHJpbmcpID0+XG4gIFsnQGlkJywgJ25hbWUnXS5pbmNsdWRlcyhrZXkpICYmIGxpbmtUeXBlRW5hYmxlZChub2RlWydAdHlwZSddKVxuICAgID8gbm9kZVsnQGlkJ11cbiAgICAgID8ge1xuICAgICAgICB1cmw6IGAke2Jhc2VVcmwoKX0vJHtub2RlWydAdHlwZSddLnRvTG93ZXJDYXNlKCl9LyR7bm9kZVsnQGlkJ119YCxcbiAgICAgICAgdGl0bGU6ICdPcGVuJ1xuICAgICAgfVxuICAgICAgOiBub2RlWydAdHlwZSddID09PSBTY2hlbWFUeXBlLlRlcm1cbiAgICAgICAgPyB7XG4gICAgICAgICAgdXJsOiBgJHtiYXNlVXJsKCl9L2dsb3NzYXJ5P3F1ZXJ5PWAsXG4gICAgICAgICAgdXJsUGFyYW1WYWx1ZTogdHJ1ZSxcbiAgICAgICAgICB0aXRsZTogJ1NlYXJjaCBpbiBHbG9zc2FyeSdcbiAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZFxuICAgIDogdW5kZWZpbmVkO1xuXG5jb25zdCBwcm9wZXJ0eU1hcHNVcmwgPSAobm9kZTogU2l0ZSB8IE9yZ2FuaXNhdGlvbiwga2V5OiBzdHJpbmcsIHZhbHVlKSA9PlxuICBbJ3R5cGUnXS5pbmNsdWRlcyhrZXkpICYmIFtcbiAgICBTY2hlbWFUeXBlLlNpdGUudG9TdHJpbmcoKSxcbiAgICBTY2hlbWFUeXBlLk9yZ2FuaXNhdGlvbi50b1N0cmluZygpXG4gIF0uaW5jbHVkZXMoc3RyaW5nVmFsdWUodmFsdWUpIHx8IG5vZGUudHlwZSkgP1xuICAgIHtcbiAgICAgIHVybDogbWFwc1VybCh7IGxhdDogbm9kZS5sYXRpdHVkZSwgbG5nOiBub2RlLmxvbmdpdHVkZSB9KSxcbiAgICAgIHRpdGxlOiAnVmlldyBvbiBtYXBzJyxcbiAgICAgIGljb246ICdtYXAnXG4gICAgfSA6XG4gICAgdW5kZWZpbmVkO1xuXG5jb25zdCBwcm9wZXJ0eUV4dGVybmFsVXJsID0gKG5vZGU6IEhlc3RpYUpzb248U2NoZW1hVHlwZT4sIGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PlxuICBwcm9wZXJ0eVVybChub2RlLCBrZXkpIHx8XG4gIHByb3BlcnR5TWFwc1VybChub2RlIGFzIGFueSwga2V5LCB2YWx1ZSk7XG5cbmNvbnN0IGFycmF5UGxhY2Vob2xkZXIgPSAodmFsdWVUeXBlOiBnZW5lcmljVHlwZSkgPT4gYFR5cGUgYSAke3ZhbHVlVHlwZX0gdGhlbiBwcmVzcyBFbnRlcmA7XG5cbmNvbnN0IGRlZmF1bHRQbGFjZWhvbGRlciA9ICh7IHR5cGUsIGV4YW1wbGVzIH06IGFueSwgdmFsdWVUeXBlOiBnZW5lcmljVHlwZSkgPT4gZXhhbXBsZXM/Lmxlbmd0aCA/IChcbiAgQXJyYXkuaXNBcnJheShleGFtcGxlc1swXSkgPyBhcnJheVBsYWNlaG9sZGVyKHZhbHVlVHlwZSkgOiBleGFtcGxlc1swXVxuKSA6IGBNdXN0IGJlIG9mIHR5cGUgJHt0eXBlIHx8IHZhbHVlVHlwZX1gO1xuXG5jb25zdCBzY2hlbWFQbGFjaG9sZGVyID0gKHNjaGVtYTogYW55LCBmdWxsS2V5OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgW3BhcmVudCwgLi4ua2V5c10gPSBmdWxsS2V5LnNwbGl0KCcuJyk7XG4gIGNvbnN0IHByb3BlcnRpZXMgPSBzY2hlbWEucHJvcGVydGllcyB8fCB7fTtcbiAgY29uc3QgeyBleGFtcGxlcyB9ID0gcGFyZW50IGluIHByb3BlcnRpZXMgPyBwcm9wZXJ0aWVzW3BhcmVudF0gOiB7IGV4YW1wbGVzOiBbXSB9O1xuICByZXR1cm4gZXhhbXBsZXM/Lmxlbmd0aCAmJiB0eXBlb2YgZXhhbXBsZXNbMF0gPT09ICdvYmplY3QnID8gZ2V0KGV4YW1wbGVzWzBdLCBrZXlzLmpvaW4oJy4nKSwgbnVsbCk6IG51bGw7XG59O1xuXG5jb25zdCBwcm9wZXJ0eVBsYWNlaG9sZGVyID0gKHNjaGVtYTogYW55LCB2YWx1ZVR5cGU6IGdlbmVyaWNUeXBlLCBmdWxsS2V5ID0gJycsIHBhcmVudFNjaGVtYT86IGFueSkgPT5cbiAgc2NoZW1hLnR5cGUgPT09ICdhcnJheScgP1xuICAgIGFycmF5UGxhY2Vob2xkZXIodmFsdWVUeXBlKSA6IChcbiAgICAgIHBhcmVudFNjaGVtYSAmJiBmdWxsS2V5Py5sZW5ndGggPyBzY2hlbWFQbGFjaG9sZGVyKHBhcmVudFNjaGVtYSwgZnVsbEtleSkgOiBudWxsXG4gICAgKSB8fCBkZWZhdWx0UGxhY2Vob2xkZXIoc2NoZW1hLCB2YWx1ZVR5cGUpO1xuXG5jb25zdCBwcm9wZXJ0eVR5cGVWYWx1ZToge1xuICBbdHlwZTogc3RyaW5nXTogKHZhbHVlOiBhbnksIHNjaGVtYTogZGVmaW5pdGlvbikgPT4gYW55O1xufSA9IHtcbiAgb2JqZWN0OiB2YWwgPT4gc2FmZUpTT05TdHJpbmdpZnkodmFsKSxcbiAgYXJyYXk6ICh2YWwsIHNjaGVtYSkgPT4ge1xuICAgIGNvbnN0IHsgaXRlbXMgfSA9IHNjaGVtYSBhcyBJRGVmaW5pdGlvbkFycmF5O1xuICAgIHJldHVybiAnJHJlZicgaW4gaXRlbXMgPyB2YWwgOiAoXG4gICAgICBBcnJheS5pc0FycmF5KHZhbCkgP1xuICAgICAgICB2YWwubWFwKHZhbHVlID0+IHByb3BlcnR5VmFsdWUoaXRlbXMsIHZhbHVlKSkuam9pbihBUlJBWV9ERUxJTUlURVIpIDpcbiAgICAgICAgdmFsXG4gICAgKTtcbiAgfSxcbiAganNvbjogdmFsID0+IHZhbCB8fCAnJyxcbiAgc3RyaW5nOiB2YWwgPT4gKGAke3ZhbH1gIHx8ICcnKS50cmltKCksXG4gIG51bWJlcjogdmFsID0+ICsoYCR7dmFsfWAgfHwgJzAnKSxcbiAgaW50ZWdlcjogdmFsID0+ICsoYCR7dmFsfWAgfHwgJzAnKSxcbiAgYm9vbGVhbjogdmFsID0+IChgJHt2YWx9YCB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnXG59O1xuXG5jb25zdCBwcm9wZXJ0eVZhbHVlID0gKHNjaGVtYTogZGVmaW5pdGlvbiwgdmFsdWU6IGFueSkgPT5cbiAgc2NoZW1hLnR5cGUgPyAoXG4gICAgQXJyYXkuaXNBcnJheShzY2hlbWEudHlwZSkgJiYgdHlwZW9mIHZhbHVlIGluIHByb3BlcnR5VHlwZVZhbHVlID9cbiAgICAgIHByb3BlcnR5VHlwZVZhbHVlW3R5cGVvZiB2YWx1ZV0odmFsdWUsIHNjaGVtYSkgOlxuICAgICAgcHJvcGVydHlUeXBlVmFsdWVbc2NoZW1hLnR5cGUgYXMgc3RyaW5nXSh2YWx1ZSwgc2NoZW1hKVxuICApIDpcbiAgc2FmZUpTT05TdHJpbmdpZnkodmFsdWUpO1xuXG5jb25zdCBwcm9wZXJ0eVZhbHVlVHlwZSA9IChzY2hlbWE6IGRlZmluaXRpb24sIHZhbHVlPzogYW55KSA9PlxuICAoc2NoZW1hLnR5cGUgPyAoXG4gICAgQXJyYXkuaXNBcnJheShzY2hlbWEudHlwZSkgP1xuICAgICAgc2NoZW1hLnR5cGVbMF0gOlxuICAgICAgc2NoZW1hLnR5cGUgPT09ICdhcnJheScgP1xuICAgICAgICBwcm9wZXJ0eVZhbHVlVHlwZSh7IC4uLnNjaGVtYSwgdHlwZTogW3NjaGVtYS5pdGVtcy50eXBlIGFzIGdlbmVyaWNUeXBlXSB9KSA6XG4gICAgICAgIHNjaGVtYS50eXBlXG4gICkgOiB0eXBlb2YgdmFsdWUpIGFzIGdlbmVyaWNUeXBlO1xuXG5jb25zdCBwcm9wZXJ0eVR5cGVQYXJzZVZhbHVlOiB7XG4gIFt0eXBlOiBzdHJpbmddOiAodmFsdWU6IGFueSwgc2NoZW1hOiBkZWZpbml0aW9uKSA9PiBhbnk7XG59ID0ge1xuICB1bmRlZmluZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgb2JqZWN0OiB2YWwgPT4gc2FmZUpTT05QYXJzZSh2YWwpLFxuICBhcnJheTogKHZhbCwgc2NoZW1hKSA9PiB7XG4gICAgY29uc3QgeyBpdGVtcyB9ID0gc2NoZW1hIGFzIElEZWZpbml0aW9uQXJyYXk7XG4gICAgcmV0dXJuICckcmVmJyBpbiBpdGVtcyA/IHZhbCA6IChcbiAgICAgICF2YWwgfHwgQXJyYXkuaXNBcnJheSh2YWwpID8gdmFsIDogdmFsLnNwbGl0KEFSUkFZX0RFTElNSVRFUikubWFwKHZhbHVlID0+IHBhcnNlTmV3VmFsdWUoaXRlbXMsIHZhbHVlKSlcbiAgICApO1xuICB9LFxuICBqc29uOiB2YWwgPT4gdmFsIHx8ICcnLFxuICBzdHJpbmc6IHZhbCA9PiAoYCR7dmFsfWAgfHwgJycpLnRyaW0oKSxcbiAgbnVtYmVyOiB2YWwgPT4gKyhgJHt2YWx9YCB8fCAnMCcpLFxuICBpbnRlZ2VyOiB2YWwgPT4gKyhgJHt2YWx9YCB8fCAnMCcpLFxuICBib29sZWFuOiB2YWwgPT4gKGAke3ZhbH1gIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSdcbn07XG5cbi8qKlxuICogQ29udmVydCB2YWx1ZSB0byB0aGUgZmluYWwgdHlwZSBpbiB0aGUgc2NoZW1hLlxuICpcbiAqIEBwYXJhbSBzY2hlbWEgRGVmaW5pdGlvbiBvZiB0aGUgdmFsdWUuXG4gKiBAcGFyYW0gdmFsdWVcbiAqIEByZXR1cm5zIFZhbHVlIGluIHRoZSBjb3JyZWN0IGZvcm1hdC5cbiAqL1xuZXhwb3J0IGNvbnN0IHBhcnNlTmV3VmFsdWUgPSAoc2NoZW1hOiBkZWZpbml0aW9uLCB2YWx1ZTogYW55KSA9PlxuICBzY2hlbWEudHlwZSA/IChcbiAgICBBcnJheS5pc0FycmF5KHNjaGVtYS50eXBlKSA/XG4gICAgICBwcm9wZXJ0eVR5cGVQYXJzZVZhbHVlW3R5cGVvZiB2YWx1ZV0odmFsdWUsIHNjaGVtYSkgOlxuICAgICAgcHJvcGVydHlUeXBlUGFyc2VWYWx1ZVtzY2hlbWEudHlwZSBhcyBzdHJpbmddKHZhbHVlLCBzY2hlbWEpXG4gICkgOiB2YWx1ZTtcblxuY29uc3QgaXNPcGVuRGVmYXVsdCA9IChzY2hlbWFUeXBlOiBTY2hlbWFUeXBlKSA9PiBbXG4gIFNjaGVtYVR5cGUuVGVybVxuXS5pbmNsdWRlcyhzY2hlbWFUeXBlKTtcblxuLy8gY2FuIHRoZSBwcm9wZXJ0eSBiZSBzZWVuIHdoZW4gdGhlIGdyb3VwIGlzIGNsb3NlZFxuY29uc3QgaXNLZXlDbG9zZWRWaXNpYmxlID0gKGtleTogc3RyaW5nKSA9PiBbJ3R5cGUnLCAnaWQnLCAnQHR5cGUnLCAnQGlkJ10uaW5jbHVkZXMoa2V5KTtcblxuY29uc3QgaXNLZXlIaWRkZW4gPSAoa2V5OiBzdHJpbmcpID0+IFsndHlwZScsICdAdHlwZSddLmluY2x1ZGVzKGtleSk7XG5cbmNvbnN0IGlzS2V5UmVxdWlyZWQgPSAoa2V5OiBzdHJpbmcsIGRlZj86IElEZWZpbml0aW9uT2JqZWN0KSA9PlxuICBbJ3R5cGUnLCAnaWQnXS5pbmNsdWRlcyhrZXkpIHx8IChkZWY/LnJlcXVpcmVkIHx8IFtdKS5pbmNsdWRlcyhrZXkpO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydHlFcnJvciA9IChlcnJvcnM6IElWYWxpZGF0aW9uRXJyb3JbXSkgPT4gKGRhdGFQYXRoOiBzdHJpbmcsIG5vbkV4cGFuZGFibGVBcnJheSA9IGZhbHNlKSA9PlxuICBlcnJvcnMuZmluZChlcnJvciA9PlxuICAgIChcbiAgICAgIGVycm9yLmRhdGFQYXRoID09PSBkYXRhUGF0aCB8fCAoXG4gICAgICAgIG5vbkV4cGFuZGFibGVBcnJheSAmJiBub25FeHBhbmRhYmxlQXJyYXlEYXRhUGF0aChlcnJvci5kYXRhUGF0aCEpID09PSBub25FeHBhbmRhYmxlQXJyYXlEYXRhUGF0aChkYXRhUGF0aClcbiAgICAgIClcbiAgICApICYmIChkYXRhUGF0aC5sZW5ndGggPiAwIHx8ICFpc01pc3NpbmdQcm9wZXJ0eUVycm9yKGVycm9yKSlcbiAgKTtcblxuY29uc3QgbWlzc2luZ1Byb3BlcnR5RXJyb3JzID0gKFxuICBub2RlOiBIZXN0aWFKc29uPFNjaGVtYVR5cGU+LCBlcnJvcnM6IElWYWxpZGF0aW9uRXJyb3JbXSwgcGFyZW50ID0gJydcbik6IElOb2RlUHJvcGVydHlbXSA9PiB7XG4gIGNvbnN0IGFsbEVycm9ycyA9IGVycm9ycy5maWx0ZXIoZXJyb3IgPT5cbiAgICBlcnJvci5kYXRhUGF0aCA9PT0ga2V5VG9EYXRhUGF0aChwYXJlbnQpICYmIGlzTWlzc2luZ1Byb3BlcnR5RXJyb3IoZXJyb3IpXG4gICk7XG4gIC8vIGNoZWNrIGZvciBub2RlIG5vdCBmb3VuZCBlcnJvcnNcbiAgY29uc3QgbWlzc2luZ05vZGUgPSBtaXNzaW5nTm9kZUVycm9ycyhhbGxFcnJvcnMpO1xuICByZXR1cm4gbWlzc2luZ05vZGUubGVuZ3RoID09PSAyID8gW3tcbiAgICBpZDogcHJvcGVydHlJZCgpLFxuICAgIHNjaGVtYVR5cGU6IG5vZGUudHlwZSxcbiAgICBzdWdnZXN0aW9uczogeyB0eXBlOiBkZWZhdWx0U3VnZ2VzdGlvblR5cGUgfSxcbiAgICBrZXk6ICcnLFxuICAgIGZ1bGxLZXk6IHBhcmVudCxcbiAgICB2YWx1ZTogJycsXG4gICAgZXJyb3I6IHtcbiAgICAgIGxldmVsOiAnZXJyb3InLFxuICAgICAgbWVzc2FnZTogbWlzc2luZ05vZGVFcnJvck1lc3NhZ2Uobm9kZSwgbWlzc2luZ05vZGUuZmluZCgoeyBwYXJhbXMgfSkgPT4gcGFyYW1zPy5taXNzaW5nUHJvcGVydHkgPT09ICdAaWQnKSlcbiAgICB9LFxuICAgIGhhc0Vycm9yOiB0cnVlLFxuICAgIHByb3BlcnRpZXM6IFtdLFxuICAgIGFkZFByb3BlcnR5RW5hYmxlZDogZmFsc2UsXG4gICAgZm9ybWF0dGVyOiBmb3JtYXR0ZXIoJycpXG4gIH1dIDogYWxsRXJyb3JzLm1hcChlcnJvciA9PiB7XG4gICAgY29uc3QgeyBtaXNzaW5nUHJvcGVydHkgfSA9IGVycm9yLnBhcmFtcyE7XG4gICAgY29uc3QgZnVsbEtleSA9IHBhcmVudCA/IGAke3BhcmVudH0uJHttaXNzaW5nUHJvcGVydHl9YCA6IG1pc3NpbmdQcm9wZXJ0eTtcbiAgICBjb25zdCBtaXNzaW5nT25lT2YgPSBpc01pc3NpbmdPbmVPZkVycm9yKGVycm9yKTtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHByb3BlcnR5SWQoKSxcbiAgICAgIHNjaGVtYVR5cGU6IG5vZGUudHlwZSxcbiAgICAgIHN1Z2dlc3Rpb25zOiB7IHR5cGU6IGRlZmF1bHRTdWdnZXN0aW9uVHlwZSB9LFxuICAgICAga2V5OiBtaXNzaW5nUHJvcGVydHksXG4gICAgICBmdWxsS2V5LFxuICAgICAgdmFsdWU6ICdBZGQgZmllbGQgdG8gZml4JyxcbiAgICAgIGVkaXRhYmxlOiBmYWxzZSxcbiAgICAgIGVycm9yOiBmb3JtYXRFcnJvcihlcnJvciksXG4gICAgICBoYXNFcnJvcjogbWlzc2luZ09uZU9mID8gZmFsc2UgOiBlcnJvckhhc0Vycm9yKGVycm9yKSxcbiAgICAgIGhhc1dhcm5pbmc6IG1pc3NpbmdPbmVPZiB8fCBlcnJvckhhc1dhcm5pbmcoZXJyb3IpLFxuICAgICAgcHJvcGVydGllczogW10sXG4gICAgICBhZGRQcm9wZXJ0eUVuYWJsZWQ6IHRydWUsXG4gICAgICBmb3JtYXR0ZXI6IGZvcm1hdHRlcihtaXNzaW5nUHJvcGVydHkpXG4gICAgfTtcbiAgfSk7XG59O1xuXG5jb25zdCBwcm9wZXJ0eUZyb21Ob2RlID0gKFxuICBzY2hlbWFzOiBkZWZpbml0aW9ucywgZXJyb3JzOiBJVmFsaWRhdGlvbkVycm9yW10sIG5vZGVTY2hlbWE6IGRlZmluaXRpb24sIGRlZXBFZGl0YWJsZTogYm9vbGVhbiwgcGFyZW50ID0gJycsIG5vZGU6IGFueVxuKSA9PiAoa2V5OiBzdHJpbmcpOiBJTm9kZVByb3BlcnR5ID0+IHtcbiAgY29uc3QgdmFsdWUgPSBub2RlW2tleV07XG4gIGNvbnN0IGV4cGFuZGFibGUgPSBpc0V4cGFuZGFibGUodmFsdWUpO1xuICBjb25zdCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG4gIGNvbnN0IG5vbkV4cGFuZGFibGVBcnJheSA9IGlzQXJyYXkgJiYgIWV4cGFuZGFibGU7XG4gIGNvbnN0IGZ1bGxLZXkgPSBBcnJheS5pc0FycmF5KG5vZGUpID8gYCR7cGFyZW50fVske2tleX1dYCA6IFtcbiAgICBwYXJlbnQsXG4gICAga2V5XG4gIF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJy4nKTtcbiAgY29uc3Qgbm9kZVR5cGUgPSBub2RlLnR5cGUgfHwgbm9kZVsnQHR5cGUnXTtcbiAgY29uc3Qgc2NoZW1hVHlwZSA9IGV4cGFuZGFibGUgPyAoXG4gICAgaXNBcnJheSAmJiB2YWx1ZS5sZW5ndGggPyB2YWx1ZVswXS50eXBlIHx8IHZhbHVlWzBdWydAdHlwZSddIDogdmFsdWUudHlwZSB8fCB2YWx1ZVsnQHR5cGUnXVxuICApIDogbm9kZVR5cGU7XG4gIGNvbnN0IHNjaGVtYSA9IChzY2hlbWFzICYmIGlzVHlwZVZhbGlkKHsgdHlwZTogc2NoZW1hVHlwZSB9KSA/IChcbiAgICBleHBhbmRhYmxlID8gc2NoZW1hc1tzY2hlbWFUeXBlXSA6IHNjaGVtYXNbc2NoZW1hVHlwZV0ucHJvcGVydGllc1trZXldXG4gICkgOiBudWxsKSB8fCB7fTtcbiAgY29uc3QgaXNJcmkgPSBpc1NjaGVtYUlyaShzY2hlbWEpO1xuICBjb25zdCBlcnJvciA9IHByb3BlcnR5RXJyb3IoZXJyb3JzKShrZXlUb0RhdGFQYXRoKGZ1bGxLZXkpLCBub25FeHBhbmRhYmxlQXJyYXkpO1xuICBjb25zdCBwYXJlbnRTY2hlbWEgPSBleHBhbmRhYmxlID8gKFxuICAgIC8vIFRPRE86IGZvciBub24tYXJyYXksIHNob3VsZCBiZSBzY2hlbWEgdW5sZXNzIGxhc3QgcmVjdXJzaW9uXG4gICAgaXNBcnJheSA/IHNjaGVtYSA6IG5vZGVTY2hlbWFcbiAgKSA6IG5vZGVTY2hlbWE7XG4gIGNvbnN0IHByb3BlcnRpZXMgPSBleHBhbmRhYmxlIHx8IGlzSXJpID9cbiAgICByZWN1cnNpdmVQcm9wZXJ0aWVzKHNjaGVtYXMsIGVycm9ycywgcGFyZW50U2NoZW1hLCBkZWVwRWRpdGFibGUsIGZ1bGxLZXkpKHZhbHVlKSA6IFtdO1xuICBjb25zdCBpbkVycm9yID0gZXJyb3JIYXNFcnJvcihlcnJvcikgfHwgaGFzRXJyb3IocHJvcGVydGllcyk7XG4gIGNvbnN0IGluV2FybmluZyA9IGVycm9ySGFzV2FybmluZyhlcnJvcikgfHwgaGFzV2FybmluZyhwcm9wZXJ0aWVzKTtcbiAgY29uc3QgZWRpdGFibGUgPSBpc1R5cGVOb2RlKG5vZGVbJ0B0eXBlJ10pIHx8IChleHBhbmRhYmxlICYmIGlzVHlwZU5vZGUodmFsdWVbJ0B0eXBlJ10pKSA/XG4gICAgZmFsc2UgOlxuICAgIChcbiAgICAgIC8vIHByZXZlbnQgZWRpdGluZy9hZGRpbmcgbmV3IHByb3BlcnRpZXMgb24gZXhpc3Rpbmcgc3ViLW5vZGVzXG4gICAgICAhZGVlcEVkaXRhYmxlICYmIGlzVHlwZU5vZGUoc2NoZW1hVHlwZSkgJiYgKFxuICAgICAgICBleHBhbmRhYmxlID8gdmFsdWUudHlwZSAhPT0gTm9kZVR5cGUuVGVybSA6IHBhcmVudCAmJiBub2RlLnR5cGUgIT09IE5vZGVUeXBlLlRlcm1cbiAgICAgICkgP1xuICAgICAgICBmYWxzZSA6XG4gICAgICAgIC8vIGhhbmRsZSBJUklcbiAgICAgICAgKCFzY2hlbWFUeXBlICYmIGtleSA9PT0gJ0BpZCcpIHx8IGVkaXRhYmxlS2V5KGtleSlcbiAgICApO1xuICBjb25zdCB2YWx1ZVR5cGUgPSBwcm9wZXJ0eVZhbHVlVHlwZShzY2hlbWEsIHZhbHVlKTtcbiAgcmV0dXJuIHtcbiAgICBpZDogcHJvcGVydHlJZCgpLFxuICAgIHNjaGVtYVR5cGU6IGlzSXJpID8gbnVsbCA6IHNjaGVtYVR5cGUsXG4gICAgc2NoZW1hLFxuICAgIGtleSxcbiAgICBmdWxsS2V5LFxuICAgIHZhbHVlOiBwcm9wZXJ0eVZhbHVlKHNjaGVtYSwgdmFsdWUpLFxuICAgIGVkaXRhYmxlOiBpbkVycm9yIHx8IGVkaXRhYmxlLFxuICAgIHN1Z2dlc3Rpb25zOiBlbmFibGVTdWdnZXN0aW9ucyhub2RlU2NoZW1hLCBub2RlLnR5cGUsIGZ1bGxLZXksIHNjaGVtYSksXG4gICAgYWRkUHJvcGVydHlFbmFibGVkOiBpc0FkZFByb3BlcnR5RW5hYmxlZChub2RlLCBzY2hlbWFUeXBlLCBzY2hlbWEsIGZ1bGxLZXkpLFxuICAgIG5ld1Byb3BlcnR5OiB7fSxcbiAgICBuZXdFcnJvcjogeyBsZXZlbDogJ3dhcm5pbmcnIH0sXG4gICAgZXJyb3I6IGZvcm1hdEVycm9yKGVycm9yKSxcbiAgICBpc0hpZGRlbjogcGFyZW50ICYmIGlzS2V5SGlkZGVuKGtleSksXG4gICAgY2xvc2VkVmlzaWJsZTogaXNLZXlDbG9zZWRWaXNpYmxlKGtleSksXG4gICAgaGFzRXJyb3I6IGluRXJyb3IsXG4gICAgaGFzV2FybmluZzogaW5XYXJuaW5nLFxuICAgIGlzUmVxdWlyZWQ6IGlzS2V5UmVxdWlyZWQoa2V5LCBzY2hlbWFzW25vZGVUeXBlXSksXG4gICAgaXNBcnJheSxcbiAgICBpc0V4cGFuZGFibGU6IGV4cGFuZGFibGUsXG4gICAgaXNPcGVuOiBpc09wZW5EZWZhdWx0KHNjaGVtYVR5cGUpLFxuICAgIHByb3BlcnRpZXMsXG4gICAgcGxhY2Vob2xkZXI6IHByb3BlcnR5UGxhY2Vob2xkZXIoc2NoZW1hLCB2YWx1ZVR5cGUsIGZ1bGxLZXksIHBhcmVudFNjaGVtYSksXG4gICAgZXh0ZXJuYWxVcmw6IHByb3BlcnR5RXh0ZXJuYWxVcmwobm9kZSwga2V5LCB2YWx1ZSksXG4gICAgZm9ybWF0dGVyOiBmb3JtYXR0ZXIoa2V5KVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNpbmdsZVByb3BlcnR5ID0gKHNjaGVtYXM6IGRlZmluaXRpb25zLCBlcnJvcnM6IElWYWxpZGF0aW9uRXJyb3JbXSwgbm9kZTogYW55LCBmdWxsS2V5OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgW190LCAuLi5rZXlzXSA9IGZ1bGxLZXkuc3BsaXQoJy4nKTtcbiAgY29uc3Qga2V5ID0ga2V5cy5wb3AoKSE7XG4gIGNvbnN0IHBhcmVudCA9IGtleXMuam9pbignLicpO1xuICBjb25zdCBwYXJlbnROb2RlID0gcGFyZW50Lmxlbmd0aCA/IGdldChub2RlLCBwYXJlbnQpIDogbm9kZTtcbiAgY29uc3Qgc2NoZW1hVHlwZSA9IHR5cGVUb1NjaGVtYVR5cGUocGFyZW50Tm9kZS50eXBlIHx8IHBhcmVudE5vZGVbJ0B0eXBlJ10pO1xuICBjb25zdCBwYXJlbnRTY2hlbWEgPSBzY2hlbWFzW3NjaGVtYVR5cGVdO1xuICByZXR1cm4gcHJvcGVydHlGcm9tTm9kZShzY2hlbWFzLCBlcnJvcnMsIHBhcmVudFNjaGVtYSwgdHJ1ZSwgcGFyZW50LCBwYXJlbnROb2RlKShrZXkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlY3Vyc2l2ZVByb3BlcnRpZXMgPSAoXG4gIHNjaGVtYXM6IGRlZmluaXRpb25zLCBlcnJvcnM6IElWYWxpZGF0aW9uRXJyb3JbXSwgbm9kZVNjaGVtYTogZGVmaW5pdGlvbiwgZGVlcEVkaXRhYmxlOiBib29sZWFuLCBwYXJlbnQgPSAnJ1xuKSA9PiAobm9kZTogYW55KTogSU5vZGVQcm9wZXJ0eVtdID0+XG4gIE9iamVjdC5rZXlzKG5vZGUpXG4gICAgLmZpbHRlcihrZXkgPT4gIXByaXZhdGVLZXlzLmluY2x1ZGVzKGtleSkpXG4gICAgLm1hcChwcm9wZXJ0eUZyb21Ob2RlKHNjaGVtYXMsIGVycm9ycywgbm9kZVNjaGVtYSwgZGVlcEVkaXRhYmxlLCBwYXJlbnQsIG5vZGUpKVxuICAgIC5jb25jYXQoLi4ubWlzc2luZ1Byb3BlcnR5RXJyb3JzKG5vZGUsIGVycm9ycywgcGFyZW50KSlcbiAgICAuc29ydChzb3J0UHJvcGVydGllcyk7XG5cbmNvbnN0IGZ1bGxLZXlQYXJ0cyA9IChmdWxsS2V5OiBzdHJpbmcpID0+IGZ1bGxLZXkuc3BsaXQoJy4nKS5mbGF0TWFwKHZhbCA9PiB7XG4gIGlmICh2YWwuZW5kc1dpdGgoJ10nKSkge1xuICAgIGNvbnN0IFtrZXksIGluZGV4XSA9IHZhbC5zcGxpdCgnWycpO1xuICAgIHJldHVybiBba2V5LCBpbmRleC5yZXBsYWNlKCddJywgJycpXTtcbiAgfVxuICByZXR1cm4gdmFsO1xufSk7XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVQcm9wZXJ0aWVzID0gKHsgcHJvcGVydGllcyB9OiBQYXJ0aWFsPElOb2RlUHJvcGVydHk+LCB1cGRhdGVyOiAocHJvcDogSU5vZGVQcm9wZXJ0eSkgPT4gSU5vZGVQcm9wZXJ0eSkgPT5cbiAgKHByb3BlcnRpZXMgfHwgW10pLm1hcChwcm9wID0+IHVwZGF0ZVByb3BlcnRpZXModXBkYXRlcihwcm9wKSwgdXBkYXRlcikpO1xuXG5leHBvcnQgY29uc3QgdHlwZVRvTmV3UHJvcGVydHkgPSAoXG4gIHNjaGVtYXM6IGRlZmluaXRpb25zLCBzY2hlbWE6IGRlZmluaXRpb24sIG5vZGVTY2hlbWE6IGRlZmluaXRpb24sIG5vZGU6IGFueSwgZnVsbEtleTogc3RyaW5nXG4pOiBJTm9kZVByb3BlcnR5ID0+IHtcbiAgY29uc3Qga2V5ID0gZnVsbEtleVBhcnRzKGZ1bGxLZXkpLnBvcCgpITtcbiAgY29uc3QgbWFwcGluZ3M6IHtcbiAgICBba2V5OiBzdHJpbmddOiAoKSA9PiBJTm9kZVByb3BlcnR5O1xuICB9ID0ge1xuICAgIG9iamVjdDogKCkgPT4ge1xuICAgICAgY29uc3QgeyBzY2hlbWFUeXBlLCBwcm9wZXJ0aWVzIH0gPSBzY2hlbWFSZXF1aXJlZFByb3BlcnRpZXMoc2NoZW1hcywgc2NoZW1hIGFzIElEZWZpbml0aW9uT2JqZWN0KTtcbiAgICAgIG5vZGVba2V5XSA9IG5vZGVba2V5XSB8fCB7fTtcbiAgICAgIG5vZGVba2V5XS50eXBlID0gc2NoZW1hVHlwZTtcbiAgICAgIC8vIFRPRE86IGhhbmRsZSBsb2FkIHNjaGVtYXMgZnJvbSBodHRwIHNvdXJjZVxuICAgICAgaWYgKHNjaGVtYVR5cGUuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XG4gICAgICAgIHJldHVybiB0eXBlVG9OZXdQcm9wZXJ0eShzY2hlbWFzLCB7IHR5cGU6ICdqc29uJyB9IGFzIGFueSwgbm9kZVNjaGVtYSwgbm9kZSwgZnVsbEtleSk7XG4gICAgICB9XG4gICAgICAvLyBUT0RPOiBoYW5kbGUgbm9kZVNjaGVtYSBzaG91bGQgYmUgc2NoZW1hIHVubGVzcyBsYXN0IHJlY3Vyc2lvblxuICAgICAgY29uc3QgcHJvcHMgPSBwcm9wZXJ0aWVzXG4gICAgICAgIC5maWx0ZXIocHJvcCA9PiBuZXN0aW5nRW5hYmxlZChzY2hlbWFUeXBlLCBwcm9wLmtleSkgJiYgISFwcm9wLnZhbHVlKVxuICAgICAgICAubWFwKFxuICAgICAgICAgIHYgPT4gKHtcbiAgICAgICAgICAgIC4uLnR5cGVUb05ld1Byb3BlcnR5KHNjaGVtYXMsIHYudmFsdWUsIG5vZGVTY2hlbWEsIG5vZGVba2V5XSwgYCR7ZnVsbEtleX0uJHt2LmtleX1gKSxcbiAgICAgICAgICAgIGlzUmVxdWlyZWQ6IHRydWVcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgY29uc3QgdmFsdWUgPSBwcm9wcy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+ICh7IC4uLnByZXYsIFtjdXJyLmtleV06IGN1cnIudmFsdWUgfSksIHt9KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBwcm9wZXJ0eUlkKCksXG4gICAgICAgIGlzQWRkZWQ6IHRydWUsXG4gICAgICAgIHNjaGVtYTogc2NoZW1hc1tzY2hlbWFUeXBlXSxcbiAgICAgICAgc2NoZW1hVHlwZSxcbiAgICAgICAga2V5LFxuICAgICAgICBmdWxsS2V5LFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgZWRpdGFibGU6IGVkaXRhYmxlS2V5KGtleSksXG4gICAgICAgIGlzSGlkZGVuOiBpc0tleUhpZGRlbihrZXkpLFxuICAgICAgICBjbG9zZWRWaXNpYmxlOiBpc0tleUNsb3NlZFZpc2libGUoa2V5KSxcbiAgICAgICAgc3VnZ2VzdGlvbnM6IGVuYWJsZVN1Z2dlc3Rpb25zKG5vZGVTY2hlbWEsIHNjaGVtYVR5cGUsIGZ1bGxLZXkpLFxuICAgICAgICBwcm9wZXJ0aWVzOiBwcm9wcy5zb3J0KHNvcnRQcm9wZXJ0aWVzKSxcbiAgICAgICAgYWRkUHJvcGVydHlFbmFibGVkOiBpc0FkZFByb3BlcnR5RW5hYmxlZChub2RlLCBzY2hlbWFUeXBlLCBzY2hlbWFzW3NjaGVtYVR5cGVdLCBrZXkpLFxuICAgICAgICBuZXdQcm9wZXJ0eToge30sXG4gICAgICAgIG5ld0Vycm9yOiB7IGxldmVsOiAnd2FybmluZycgfSxcbiAgICAgICAgaXNSZXF1aXJlZDogaXNLZXlSZXF1aXJlZChrZXksIHNjaGVtYSBhcyBhbnkpLFxuICAgICAgICBpc0FycmF5OiBmYWxzZSxcbiAgICAgICAgaXNFeHBhbmRhYmxlOiB0cnVlLFxuICAgICAgICBpc09wZW46IGlzT3BlbkRlZmF1bHQoc2NoZW1hVHlwZSksXG4gICAgICAgIGZvcm1hdHRlcjogZm9ybWF0dGVyKGtleSlcbiAgICAgIH07XG4gICAgfSxcbiAgICBhcnJheTogKCkgPT4ge1xuICAgICAgY29uc3QgeyBpdGVtcyB9ID0gc2NoZW1hIGFzIElEZWZpbml0aW9uQXJyYXk7XG4gICAgICAvLyBhcnJheSBvZiBzdHJpbmcsIG51bWJlciBhbmQgYm9vbGVhblxuICAgICAgaWYgKGl0ZW1zLnR5cGUpIHtcbiAgICAgICAgcmV0dXJuIG1hcHBpbmdzLmRlZmF1bHQoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNjaGVtYVR5cGUgPSBkZWZpbml0aW9uVG9TY2hlbWFUeXBlKGl0ZW1zIGFzIElEZWZpbml0aW9uT2JqZWN0KTtcbiAgICAgIG5vZGVba2V5XSA9IG5vZGVba2V5XSB8fCBbXTtcbiAgICAgIG5vZGVba2V5XS5wdXNoKHsgfSk7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IHR5cGVUb05ld1Byb3BlcnR5KHNjaGVtYXMsIGl0ZW1zLCBzY2hlbWFzW3NjaGVtYVR5cGVdLCBub2RlW2tleV1bMF0sIGAke2Z1bGxLZXl9WzBdYCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogcHJvcGVydHlJZCgpLFxuICAgICAgICBpc0FkZGVkOiB0cnVlLFxuICAgICAgICBzY2hlbWEsXG4gICAgICAgIHNjaGVtYVR5cGUsXG4gICAgICAgIGtleSxcbiAgICAgICAgZnVsbEtleSxcbiAgICAgICAgdmFsdWU6IFtwcm9wZXJ0eS52YWx1ZV0sXG4gICAgICAgIGVkaXRhYmxlOiBlZGl0YWJsZUtleShrZXkpLFxuICAgICAgICBpc0hpZGRlbjogaXNLZXlIaWRkZW4oa2V5KSxcbiAgICAgICAgY2xvc2VkVmlzaWJsZTogaXNLZXlDbG9zZWRWaXNpYmxlKGtleSksXG4gICAgICAgIHN1Z2dlc3Rpb25zOiB1bmRlZmluZWQsXG4gICAgICAgIHByb3BlcnRpZXM6IFtwcm9wZXJ0eV0sXG4gICAgICAgIG5ld1Byb3BlcnR5OiB7fSxcbiAgICAgICAgbmV3RXJyb3I6IHsgbGV2ZWw6ICd3YXJuaW5nJyB9LFxuICAgICAgICBpc0FycmF5OiB0cnVlLFxuICAgICAgICBpc0V4cGFuZGFibGU6IHRydWUsXG4gICAgICAgIGFkZFByb3BlcnR5RW5hYmxlZDogZmFsc2UsXG4gICAgICAgIGZvcm1hdHRlcjogZm9ybWF0dGVyKGtleSlcbiAgICAgIH07XG4gICAgfSxcbiAgICBkZWZhdWx0OiAoKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZVR5cGUgPSBwcm9wZXJ0eVZhbHVlVHlwZShzY2hlbWEpO1xuICAgICAgY29uc3QgdmFsdWUgPSBzY2hlbWEuZGVmYXVsdCB8fCAoc2NoZW1hIGFzIGFueSkuY29uc3QgfHwgdmFsdWVUeXBlVG9EZWZhdWx0W3ZhbHVlVHlwZV07XG4gICAgICBub2RlW2tleV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBwcm9wZXJ0eUlkKCksXG4gICAgICAgIGlzQWRkZWQ6IHRydWUsXG4gICAgICAgIHNjaGVtYSxcbiAgICAgICAgc2NoZW1hVHlwZTogbm9kZS50eXBlLFxuICAgICAgICBrZXksXG4gICAgICAgIGZ1bGxLZXksXG4gICAgICAgIHZhbHVlOiBwcm9wZXJ0eVZhbHVlKHNjaGVtYSwgdmFsdWUpLFxuICAgICAgICBlZGl0YWJsZTogZWRpdGFibGVLZXkoa2V5KSxcbiAgICAgICAgaXNIaWRkZW46IGlzS2V5SGlkZGVuKGtleSksXG4gICAgICAgIGNsb3NlZFZpc2libGU6IGlzS2V5Q2xvc2VkVmlzaWJsZShrZXkpLFxuICAgICAgICBzdWdnZXN0aW9uczogZW5hYmxlU3VnZ2VzdGlvbnMobm9kZVNjaGVtYSwgbm9kZS50eXBlLCBmdWxsS2V5LCBzY2hlbWEpLFxuICAgICAgICBwbGFjZWhvbGRlcjogcHJvcGVydHlQbGFjZWhvbGRlcihzY2hlbWEsIHZhbHVlVHlwZSwgZnVsbEtleSwgbm9kZVNjaGVtYSksXG4gICAgICAgIGV4dGVybmFsVXJsOiBwcm9wZXJ0eUV4dGVybmFsVXJsKG5vZGUsIGtleSwgdmFsdWUpLFxuICAgICAgICBwcm9wZXJ0aWVzOiBbXSxcbiAgICAgICAgYWRkUHJvcGVydHlFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgZm9ybWF0dGVyOiBmb3JtYXR0ZXIoa2V5KVxuICAgICAgfTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG1hcHBlZCA9ICFzY2hlbWEudHlwZSA/IG1hcHBpbmdzLm9iamVjdCA6IChcbiAgICBzY2hlbWEudHlwZSBhcyBzdHJpbmcgaW4gbWFwcGluZ3MgPyBtYXBwaW5nc1tzY2hlbWEudHlwZSBhcyBzdHJpbmddIDogbWFwcGluZ3MuZGVmYXVsdFxuICApO1xuICByZXR1cm4gbWFwcGVkKCk7XG59O1xuXG5leHBvcnQgY29uc3QgZmluZFByb3BlcnR5ID0gKHByb3BlcnRpZXM6IElOb2RlUHJvcGVydHlbXSwgZnVsbEtleTogc3RyaW5nKSA9PiB7XG4gIGZvciAoY29uc3QgcCBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgaWYgKHAuZnVsbEtleSA9PT0gZnVsbEtleSkge1xuICAgICAgcmV0dXJuIHA7XG4gICAgfVxuICAgIGNvbnN0IGNoaWxkUCA9IGZpbmRQcm9wZXJ0eShwLnByb3BlcnRpZXMsIGZ1bGxLZXkpO1xuICAgIGlmIChjaGlsZFApIHtcbiAgICAgIHJldHVybiBjaGlsZFA7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcmVudFByb3BlcnR5ID0gKHByb3BlcnRpZXM6IElOb2RlUHJvcGVydHlbXSwgcHJvcGVydHk6IElOb2RlUHJvcGVydHkpID0+IHtcbiAgY29uc3QgYWxsS2V5cyA9IHByb3BlcnR5LmZ1bGxLZXkuc3BsaXQoJy4nKTtcbiAgWy4uLm5ldyBBcnJheShwcm9wZXJ0eS5zdWdnZXN0aW9ucz8ucGFyZW50TGV2ZWwgfHwgMCldLm1hcCgoKSA9PiBhbGxLZXlzLnBvcCgpKTtcbiAgY29uc3QgcGFyZW50S2V5cyA9IGZ1bGxLZXlQYXJ0cyhhbGxLZXlzLmpvaW4oJy4nKSk7XG4gIHBhcmVudEtleXMucG9wKCk7XG4gIGNvbnN0IHBhcmVudCA9IChwYXJlbnRLZXlzLnJlZHVjZSgocHJldiwgY3VyciwgY3VyckluZGV4KTogYW55ID0+IHtcbiAgICBjb25zdCBwcm9wID0gcHJldi5maW5kKHYgPT4gdi5rZXkgPT09IGN1cnIpO1xuICAgIHJldHVybiBjdXJySW5kZXggPT09IHBhcmVudEtleXMubGVuZ3RoIC0gMSA/IChwcm9wIHx8IHt9IGFzIElOb2RlUHJvcGVydHkpIDogKHByb3AhLnByb3BlcnRpZXMgfHwgW10pO1xuICB9LCBwcm9wZXJ0aWVzKSBhcyBhbnkpIGFzIElOb2RlUHJvcGVydHk7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHBhcmVudCkgPyBwcm9wZXJ0eSA6IHBhcmVudDtcbn07XG5cbmV4cG9ydCBjb25zdCBuZXN0ZWRQcm9wZXJ0eSA9ICh7IHByb3BlcnRpZXMgfTogSU5vZGVQcm9wZXJ0eSwgbmVzdGVkS2V5OiBzdHJpbmcpID0+XG4gIHByb3BlcnRpZXMuZmluZCgoeyBrZXkgfSkgPT4ga2V5ID09PSBuZXN0ZWRLZXkpO1xuXG5leHBvcnQgY29uc3Qgc2libGluZ1Byb3BlcnR5ID0gKHByb3BlcnRpZXM6IElOb2RlUHJvcGVydHlbXSwgcHJvcGVydHk6IElOb2RlUHJvcGVydHksIHNpYmxpbmdLZXk6IHN0cmluZykgPT4ge1xuICBjb25zdCBwYXJlbnQgPSBwYXJlbnRQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSk7XG4gIGNvbnN0IHBhcmVudFByb3BlcnRpZXMgPSBwYXJlbnQgPT09IHByb3BlcnR5ID8gcHJvcGVydGllcyA6IHBhcmVudC5wcm9wZXJ0aWVzO1xuICByZXR1cm4gcGFyZW50UHJvcGVydGllcy5maW5kKHByb3AgPT4gcHJvcC5rZXkgPT09IHNpYmxpbmdLZXkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdyb3VwQ2hhbmdlZCA9IChwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W10sIGtleTogc3RyaW5nLCB2YWx1ZT86IGFueSkgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHBhcmVudEtleXMgPSBmdWxsS2V5UGFydHMoa2V5KTtcbiAgICBwYXJlbnRLZXlzLnJlZHVjZSgocHJldiwgY3VyciwgY3VyckluZGV4KSA9PiB7XG4gICAgICBpZiAoY3VyckluZGV4ID09PSBwYXJlbnRLZXlzLmxlbmd0aCAtIDEgJiYgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHByZXYuc3BsaWNlKHByZXYuZmluZEluZGV4KHYgPT4gdi5rZXkgPT09IGN1cnIpLCAxKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBwcm9wID0gcHJldi5maW5kKHYgPT4gdi5rZXkgPT09IGN1cnIpITtcbiAgICAgICAgcHJvcC5jaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHByb3AucHJvcGVydGllcztcbiAgICAgIH1cbiAgICB9LCBwcm9wZXJ0aWVzKTtcbiAgfVxuICBjYXRjaCAoX2Vycikge1xuICAgIC8vIGlnbm9yZSBlcnJvclxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcmVmcmVzaFByb3BlcnR5S2V5cyA9IChwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkgPT5cbiAgcHJvcGVydHkucHJvcGVydGllcy5tYXAoKHByb3AsIGkpID0+IHtcbiAgICBwcm9wLmZ1bGxLZXkgPSBgJHtwcm9wZXJ0eS5mdWxsS2V5fSR7cHJvcGVydHkuaXNBcnJheSA/IGBbJHtpfV1gIDogYC4ke3Byb3Aua2V5fWB9YDtcbiAgICBwcm9wLmtleSA9IHByb3BlcnR5LmlzQXJyYXkgPyBgJHtpfWAgOiBwcm9wLmtleTtcbiAgICByZXR1cm4gcmVmcmVzaFByb3BlcnR5S2V5cyhwcm9wKTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVDeWNsZUR1cmF0aW9uRW5hYmxlZCA9IChwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W10sIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiB7XG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ3N0YXJ0RGF0ZScpO1xuICBjb25zdCBlbmREYXRlID0gc2libGluZ1Byb3BlcnR5KHByb3BlcnRpZXMsIHByb3BlcnR5LCAnZW5kRGF0ZScpO1xuICByZXR1cm4gISFzdGFydERhdGU/LnZhbHVlICYmICEhZW5kRGF0ZT8udmFsdWU7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlQ3ljbGVEdXJhdGlvbiA9IChwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W10sIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiB7XG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ3N0YXJ0RGF0ZScpITtcbiAgY29uc3QgZW5kRGF0ZSA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ2VuZERhdGUnKSE7XG4gIHJldHVybiBkaWZmSW5EYXlzKHN0YXJ0RGF0ZS52YWx1ZSwgZW5kRGF0ZS52YWx1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlQ3ljbGVTdGFydERhdGVFbmFibGVkID0gKHByb3BlcnRpZXM6IElOb2RlUHJvcGVydHlbXSwgcHJvcGVydHk6IElOb2RlUHJvcGVydHkpID0+IHtcbiAgY29uc3QgY3ljbGVEdXJhdGlvbiA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ2N5Y2xlRHVyYXRpb24nKTtcbiAgY29uc3QgZW5kRGF0ZSA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ2VuZERhdGUnKTtcbiAgcmV0dXJuICEhY3ljbGVEdXJhdGlvbj8udmFsdWUgJiYgISFlbmREYXRlPy52YWx1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVDeWNsZVN0YXJ0RGF0ZSA9IChwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W10sIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiB7XG4gIGNvbnN0IGN5Y2xlRHVyYXRpb24gPSBzaWJsaW5nUHJvcGVydHkocHJvcGVydGllcywgcHJvcGVydHksICdjeWNsZUR1cmF0aW9uJykhO1xuICBjb25zdCBlbmREYXRlID0gc2libGluZ1Byb3BlcnR5KHByb3BlcnRpZXMsIHByb3BlcnR5LCAnZW5kRGF0ZScpITtcbiAgcmV0dXJuIG1vbWVudChlbmREYXRlLnZhbHVlKS5sb2NhbGUoJ2VuLWdiJykuc3VidHJhY3QoY3ljbGVEdXJhdGlvbi52YWx1ZSwgJ2RheXMnKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcbn07XG4iXX0=
|
|
570
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZm9ybS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9maWxlcy9maWxlcy1mb3JtLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRCxPQUFPLEVBQ2UsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFDM0QsZ0JBQWdCLEVBQ3JDLE1BQU0sc0JBQXNCLENBQUM7QUFLOUIsT0FBTyxFQUNhLHdCQUF3QixFQUFFLFdBQVcsRUFDdkQsc0JBQXNCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFDdEQsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQ2hGLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLHdCQUF3QixFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUN6RixrQkFBa0IsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFDakUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFckgsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJ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RUFBRSxRQUF1QixFQUFFLEVBQUU7SUFDOUYsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsZUFBZSxDQUFFLENBQUM7SUFDOUUsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFFLENBQUM7SUFDbEUsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDMUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2guZ2V0JztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCAnbW9tZW50L2xvY2FsZS9lbi1nYic7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IGRpZmZJbkRheXMsIGlzTnVtYmVyIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5pbXBvcnQge1xuICBKU09OIGFzIEhlc3RpYUpzb24sIFNjaGVtYVR5cGUsIE5vZGVUeXBlLCBpc1R5cGVOb2RlLCBpc1R5cGVWYWxpZCwgaXNFeHBhbmRhYmxlLFxuICBTaXRlLCBPcmdhbmlzYXRpb24sIHR5cGVUb1NjaGVtYVR5cGVcbn0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHtcbiAgZGVmaW5pdGlvbnMsIGRlZmluaXRpb24sIElEZWZpbml0aW9uT2JqZWN0LCBJRGVmaW5pdGlvbkFycmF5LCBnZW5lcmljVHlwZVxufSBmcm9tICdAaGVzdGlhLWVhcnRoL2pzb24tc2NoZW1hJztcblxuaW1wb3J0IHtcbiAgSVZhbGlkYXRpb25FcnJvciwgZm9ybWF0Q3VzdG9tRXJyb3JNZXNzYWdlLCBmb3JtYXRFcnJvcixcbiAgaXNNaXNzaW5nUHJvcGVydHlFcnJvciwgZXJyb3JIYXNFcnJvciwgZXJyb3JIYXNXYXJuaW5nLCB2YWxpZGF0aW9uRXJyb3JMZXZlbCxcbiAgbWlzc2luZ05vZGVFcnJvcnMsIGlzTWlzc2luZ09uZU9mRXJyb3IsIGlzTWlncmF0aW9uRXJyb3IsIG1pZ3JhdGlvbkVycm9yTWVzc2FnZVxufSBmcm9tICcuL2ZpbGVzLWVycm9yLm1vZGVsJztcbmltcG9ydCB7XG4gIHNjaGVtYVJlcXVpcmVkUHJvcGVydGllcywgdmFsdWVUeXBlVG9EZWZhdWx0LCBkZWZpbml0aW9uVG9TY2hlbWFUeXBlLCBhdmFpbGFibGVQcm9wZXJ0aWVzLFxuICBuZXN0aW5nVHlwZUVuYWJsZWQsIG5lc3RpbmdFbmFibGVkLCBsaW5rVHlwZUVuYWJsZWQsIGlzU2NoZW1hSXJpXG59IGZyb20gJy4uL3NjaGVtYS9zY2hlbWEuc2VydmljZSc7XG5pbXBvcnQgeyBtYXRjaENvdW50cnkgfSBmcm9tICcuLi9zZWFyY2gvc2VhcmNoLm1vZGVsJztcbmltcG9ydCB7IGJhc2VVcmwsIGNvZGUsIGdsb3NzYXJ5TGluaywgbWFwc1VybCwgc2FmZUpTT05QYXJzZSwgc2FmZUpTT05TdHJpbmdpZnksIHNjaGVtYUxpbmsgfSBmcm9tICcuLi9jb21tb24vdXRpbHMnO1xuXG5jb25zdCBtaXNzaW5nTm9kZUVycm9yTWVzc2FnZSA9ICh7ICdAdHlwZSc6IF90LCB0eXBlLCBuYW1lIH06IGFueSwgbWlzc2luZ0lkRXJyb3I/OiBJVmFsaWRhdGlvbkVycm9yKSA9PlxuICAoX3QgfHwgdHlwZSkgPT09ICdUZXJtJ1xuICAgIC8vIG1pZ3JhdGVkIGZyb20gYSB2YWx1ZSB0byBhbm90aGVyXG4gICAgPyBpc01pZ3JhdGlvbkVycm9yKG1pc3NpbmdJZEVycm9yKVxuICAgICAgPyBtaWdyYXRpb25FcnJvck1lc3NhZ2UobWlzc2luZ0lkRXJyb3IpXG4gICAgICA6IGAke25hbWUgPyBgVGhlIHRlcm0gXCIke25hbWV9XCJgIDogJ1RoaXMgdGVybSd9IGRvZXNuJ3QgbWF0Y2ggYSB0ZXJtIGluIHRoZSAke2dsb3NzYXJ5TGluaygnR2xvc3Nhcnkgb2YgVGVybXMnKX0uXG4gICAgICBQbGVhc2UgY2hlY2sgdGhlICR7Z2xvc3NhcnlMaW5rKCdHbG9zc2FyeScpfSBmb3IgdGhlIGNvcnJlY3QgJHtjb2RlKCdAaWQnKX0gb3IgJHtjb2RlKCduYW1lJyl9IGFuZCBzcGVsbGluZy5gXG4gICAgOiBgVGhpcyAke3NjaGVtYUxpbmsoX3QgfHwgdHlwZSl9IGRvZXMgbm90IGV4aXN0IGluIEhlc3RpYS4gSWYgeW91IGFyZSB0cnlpbmcgdG8gbGluayB0byBhbiBleGlzdGluZ1xuICAgICR7c2NoZW1hTGluayhfdCB8fCB0eXBlKX0gaW4gSGVzdGlhLCBwbGVhc2UgY2hlY2sgdGhlICR7Y29kZSgnbmFtZScpfSBvciAke2NvZGUoJ0BpZCcpfSBpcyBjb3JyZWN0LlxuICAgIElmIHlvdSBhcmUgdHJ5aW5nIHRvIGNyZWF0ZSBhIG5ldyAke3NjaGVtYUxpbmsoX3QgfHwgdHlwZSl9LCBwbGVhc2UgaWRlbnRpZnkgaXQgd2l0aCBhbiAke2NvZGUoJ2lkJyl9IGZpZWxkLmA7XG5cbmV4cG9ydCBjb25zdCBBUlJBWV9ERUxJTUlURVIgPSAnOyc7XG5jb25zdCBwcml2YXRlS2V5cyA9IFtcbiAgJ2ZpbGVwYXRoJ1xuXTtcblxuZXhwb3J0IHR5cGUgc3VnZ2VzdGlvblR5cGUgPSBOb2RlVHlwZSB8ICdzZWxlY3QnIHwgJ2RlZmF1bHQnO1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRTdWdnZXN0aW9uVHlwZTogc3VnZ2VzdGlvblR5cGUgPSAnZGVmYXVsdCc7XG5cbmludGVyZmFjZSBJTm9kZVByb3BlcnR5U3VnZ2VzdGlvbiB7XG4gIHR5cGU/OiBzdWdnZXN0aW9uVHlwZTtcbiAgcXVlcmllcz86IGFueVtdO1xuICB2YWx1ZXM/OiBzdHJpbmdbXTtcbiAgcGFyZW50TGV2ZWw/OiBudW1iZXI7XG4gIGlzTGlua05vZGU/OiBib29sZWFuO1xuICBpc1VuaXF1ZUtleT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTmV3UHJvcGVydHkge1xuICBuYW1lPzogc3RyaW5nO1xuICBwcm9wPzogZGVmaW5pdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRXJyb3JQcm9wZXJ0eSB7XG4gIGxldmVsPzogdmFsaWRhdGlvbkVycm9yTGV2ZWw7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5vZGVQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGlzIHByb3BlcnR5IHdhcyBhZGRlZCBieSB0aGUgdXNlclxuICAgKi9cbiAgaWQ6IHN0cmluZztcbiAgaXNBZGRlZD86IGJvb2xlYW47XG4gIHNjaGVtYVR5cGU6IFNjaGVtYVR5cGU7XG4gIGtleTogc3RyaW5nO1xuICBmdWxsS2V5OiBzdHJpbmc7XG4gIHZhbHVlOiBhbnk7XG4gIGFkZFByb3BlcnR5RW5hYmxlZDogYm9vbGVhbjtcbiAgc3VnZ2VzdGlvbnM/OiBJTm9kZVByb3BlcnR5U3VnZ2VzdGlvbjtcbiAgc2NoZW1hPzogZGVmaW5pdGlvbjtcbiAgZXJyb3I/OiBJVmFsaWRhdGlvbkVycm9yO1xuICBoYXNFcnJvcj86IGJvb2xlYW47XG4gIGhhc1dhcm5pbmc/OiBib29sZWFuO1xuICBlZGl0YWJsZT86IGJvb2xlYW47XG4gIGNsb3NlZFZpc2libGU/OiBib29sZWFuO1xuICBuZXdQcm9wZXJ0eT86IElOZXdQcm9wZXJ0eTtcbiAgbmV3RXJyb3I/OiBJRXJyb3JQcm9wZXJ0eTtcbiAgaXNSZXF1aXJlZD86IGJvb2xlYW47XG4gIGlzSGlkZGVuPzogYm9vbGVhbjtcbiAgaXNBcnJheT86IGJvb2xlYW47XG4gIGlzRXhwYW5kYWJsZT86IGJvb2xlYW47XG4gIGlzT3Blbj86IGJvb2xlYW47XG4gIHByb3BlcnRpZXM6IElOb2RlUHJvcGVydHlbXTtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIGV4dGVybmFsVXJsPzoge1xuICAgIHVybD86IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIC8vIGRlZmF1bHQgaXMgZXh0ZXJuYWwtbGluay1hbHRcbiAgICBpY29uPzogc3RyaW5nO1xuICAgIHVybFBhcmFtVmFsdWU/OiBib29sZWFuO1xuICB9O1xuICAvLyBtYWtpbmcgY2hhbmdlcyBvbiB0aGUgcHJvcGVydHlcbiAgbG9hZGluZz86IGJvb2xlYW47XG4gIC8vIHVzZXIgbWFkZSBjaGFuZ2VzIHRvIHRoZSBvcmlnaW5hbCB2YWx1ZVxuICBjaGFuZ2VkPzogYm9vbGVhbjtcbiAgZm9ybWF0dGVyOiAodmFsdWU6IGFueSkgPT4gc3RyaW5nO1xufVxuXG5jb25zdCBzdHJpbmdWYWx1ZSA9ICh2YWx1ZTogYW55KSA9PiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyB8fCB2YWx1ZSA9PT0gbnVsbCA/ICcnIDogdmFsdWUpLnRvU3RyaW5nKCk7XG5jb25zdCBub25FeHBhbmRhYmxlQXJyYXlEYXRhUGF0aCA9IChrZXk6IHN0cmluZykgPT4ga2V5LnJlcGxhY2UoL1xcW1xcZCtcXF0kLywgJycpO1xuZXhwb3J0IGNvbnN0IGtleVRvRGF0YVBhdGggPSAoa2V5OiBzdHJpbmcpID0+IGtleT8ubGVuZ3RoID8gYC4ke2tleX1gIDogJyc7XG5leHBvcnQgY29uc3QgZGF0YVBhdGhUb0tleSA9IChkYXRhUGF0aCA9ICcnLCB0cmltQXJyYXkgPSBmYWxzZSkgPT5cbiAgdHJpbUFycmF5ID8gbm9uRXhwYW5kYWJsZUFycmF5RGF0YVBhdGgoZGF0YVBhdGguc3Vic3RyaW5nKDEpKSA6IGRhdGFQYXRoLnN1YnN0cmluZygxKTtcbmV4cG9ydCBjb25zdCBwYXJlbnRLZXkgPSAoa2V5OiBzdHJpbmcpID0+IHtcbiAgY29uc3Qga2V5cyA9IChrZXkuc3RhcnRzV2l0aCgnLicpID8ga2V5LnN1YnN0cmluZygxKSA6IGtleSkuc3BsaXQoJy4nKTtcbiAga2V5cy5wb3AoKTtcbiAgcmV0dXJuIGtleXMuam9pbignLicpO1xufTtcblxuLyoqXG4gKiBTb3J0IHByb3BlcnRpZXMgaGF2aW5nIGVycm9ycywgdHlwZSwgaWQsIC4uLnByb3BlcnRpZXMgKHNpbXBsZSksIGFuZCBmaW5hbGx5IHRoZSBncm91cHNcbiAqXG4gKiBAcGFyYW0gYSB7SU5vZGVQcm9wZXJ0eX1cbiAqIEBwYXJhbSBiIHtJTm9kZVByb3BlcnR5fVxuICovXG5leHBvcnQgY29uc3Qgc29ydFByb3BlcnRpZXMgPSAoYTogSU5vZGVQcm9wZXJ0eSwgYjogSU5vZGVQcm9wZXJ0eSkgPT4ge1xuICBpZiAoaXNOdW1iZXIoYS5rZXkpICYmIGlzTnVtYmVyKGIua2V5KSkge1xuICAgIHJldHVybiArYS5rZXkgLSArYi5rZXk7XG4gIH1cbiAgaWYgKGEuaXNFeHBhbmRhYmxlKSB7XG4gICAgcmV0dXJuIGIuaXNFeHBhbmRhYmxlID8gYS5rZXkubG9jYWxlQ29tcGFyZShiLmtleSkgOiAxO1xuICB9XG4gIGlmIChiLmlzRXhwYW5kYWJsZSkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICBpZiAoIWEua2V5KSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIGNvbnN0IGFLZXkgPSBhLmtleS5yZXBsYWNlKCdAJywgJycpO1xuICBjb25zdCBiS2V5ID0gYi5rZXkucmVwbGFjZSgnQCcsICcnKTtcbiAgaWYgKGFLZXkgPT09ICd0eXBlJykge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICBpZiAoYktleSA9PT0gJ3R5cGUnKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgaWYgKGFLZXkgPT09ICdpZCcgJiYgYktleSAhPT0gJ3R5cGUnKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIGlmIChhLmhhc0Vycm9yIHx8IGEuaGFzV2FybmluZykge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICByZXR1cm4gYS5rZXkubG9jYWxlQ29tcGFyZShiLmtleSk7XG59O1xuXG5jb25zdCBkZWZhdWx0UHJvcGVydHlFcnJvcjoge1xuICBba2V5OiBzdHJpbmddOiAoZXJyb3I6IGFueSwgcHJvcGVydHk6IElOb2RlUHJvcGVydHkpID0+IHN0cmluZyB8IHVuZGVmaW5lZDtcbn0gPSB7XG4gIG1heDogKHsgbWF4IH0pID0+IGBzaG91bGQgYmUgPD0gJHttYXh9YCxcbiAgbWluOiAoeyBtaW4gfSkgPT4gYHNob3VsZCBiZSA+PSAke21pbn1gLFxuICBwYXR0ZXJuOiAoeyByZXF1aXJlZFBhdHRlcm4gfSkgPT4gYHNob3VsZCBtYXRjaCBwYXR0ZXJuIFwiJHtyZXF1aXJlZFBhdHRlcm59XCJgLFxuICByZXF1aXJlZDogKF9lLCB7IHNjaGVtYVR5cGUgfSkgPT4gc2NoZW1hVHlwZSA/IGBzaG91bGQgYmUgc2V0IG9yIGxpbmtlZCB0byBhbm90aGVyICR7c2NoZW1hVHlwZX1gIDogdW5kZWZpbmVkXG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0UHJvcGVydHlFcnJvciA9IChlcnJvcnM6IGFueSwgcHJvcGVydHk6IElOb2RlUHJvcGVydHkpID0+IHtcbiAgY29uc3Qga2V5ID0gT2JqZWN0LmtleXMoZXJyb3JzKVswXTtcbiAgcmV0dXJuIGtleSBpbiBkZWZhdWx0UHJvcGVydHlFcnJvciA/IGZvcm1hdEN1c3RvbUVycm9yTWVzc2FnZShkZWZhdWx0UHJvcGVydHlFcnJvcltrZXldKGVycm9yc1trZXldLCBwcm9wZXJ0eSkpIDogJyc7XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0dGVyID0gKGtleTogc3RyaW5nKSA9PiAodmFsdWU6IGFueSkgPT5cbiAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyA/ICh2YWx1ZS5iaWJsaW9ncmFwaHk/LnRpdGxlIHx8IHZhbHVlW2tleV0gfHwgdmFsdWUubmFtZSkgOiB2YWx1ZTtcblxuZXhwb3J0IGNvbnN0IGhhc0Vycm9yID0gdmFsdWUgPT4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5zb21lKGhhc0Vycm9yKSA6IHZhbHVlLmhhc0Vycm9yO1xuXG5leHBvcnQgY29uc3QgaGFzV2FybmluZyA9IHZhbHVlID0+IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUuc29tZShoYXNXYXJuaW5nKSA6IHZhbHVlLmhhc1dhcm5pbmc7XG5cbmNvbnN0IGNvbXBpbGVTdWdnZXN0aW9uUXVlcmllcyA9IChrZXk6IHN0cmluZywgYWxsT2Y6IGFueVtdKSA9PiB7XG4gIGNvbnN0IGNvbmRpdGlvbnMgPSAoYWxsT2YgfHwgW10pXG4gICAgLmZpbHRlcih2ID0+ICh2LmlmPy5yZXF1aXJlZCB8fCBbXSkuaW5jbHVkZXMoa2V5KSlcbiAgICAubWFwKHYgPT4gdi50aGVuPy5wcm9wZXJ0aWVzPy5ba2V5XSlcbiAgICAubWFwKHYgPT4gdj8uaXRlbXM/LnByb3BlcnRpZXMgfHwgdj8ucHJvcGVydGllcylcbiAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICByZXR1cm4gY29uZGl0aW9ucy5sZW5ndGggPyBbe1xuICAgIGJvb2w6IHtcbiAgICAgIHNob3VsZDogY29uZGl0aW9ucy5mbGF0TWFwKGNvbmQgPT4gT2JqZWN0LmtleXMoY29uZCkuZmxhdE1hcChrID0+IChjb25kW2tdLmVudW0gfHwgW10pLm1hcCh2ID0+ICh7XG4gICAgICAgIG1hdGNoOiB7IFtrXTogdiB9XG4gICAgICB9KSkpKSxcbiAgICAgIG1pbmltdW1fc2hvdWxkX21hdGNoOiAxXG4gICAgfVxuICB9XSA6IFtdO1xufTtcblxuLy8gZGVmYXVsdCBzdWdnZXN0IGZvciBsaW5raW5nIG5vZGVzIHRvZ2V0aGVyIHVzaW5nIHRoZSBgaWRgIGZpZWxkXG5jb25zdCBzdWdnZXN0TGlua05vZGVzID0gKHR5cGU6IE5vZGVUeXBlLCBmdWxsS2V5OiBzdHJpbmcpOiBJTm9kZVByb3BlcnR5U3VnZ2VzdGlvbiB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGtleXMgPSBmdWxsS2V5LnNwbGl0KCcuJyk7XG4gIGNvbnN0IGtleSA9IGtleXMucG9wKCk7XG4gIHJldHVybiBrZXkgPT09ICdpZCcgJiYga2V5cy5sZW5ndGggPj0gMSA/IHsgdHlwZSwgaXNMaW5rTm9kZTogdHJ1ZSB9IDogdW5kZWZpbmVkO1xufTtcblxuY29uc3Qgc3VnZ2VzdEV4aXN0aW5nTm9kZSA9ICh0eXBlOiBOb2RlVHlwZSwgZnVsbEtleTogc3RyaW5nKTogSU5vZGVQcm9wZXJ0eVN1Z2dlc3Rpb24gfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBrZXlzID0gZnVsbEtleS5zcGxpdCgnLicpO1xuICBjb25zdCBrZXkgPSBrZXlzLnBvcCgpITtcbiAgcmV0dXJuIGtleXMubGVuZ3RoID49IDEgJiYgWydAaWQnLCAnb3BlbkxDQUlkJ10uaW5jbHVkZXMoa2V5KSA/IHsgdHlwZSwgaXNVbmlxdWVLZXk6ICdAaWQnIH0gOiB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBkZWZhdWx0Tm9kZVR5cGVTdWdnZXN0aW9uID0gKHR5cGU6IE5vZGVUeXBlKSA9PiAoZnVsbEtleTogc3RyaW5nKSA9PlxuICBzdWdnZXN0TGlua05vZGVzKHR5cGUsIGZ1bGxLZXkpIHx8IHN1Z2dlc3RFeGlzdGluZ05vZGUodHlwZSwgZnVsbEtleSk7XG5cbmNvbnN0IHRlcm1TdWdnZXN0aW9ucyA9IChwYXJlbnQ6IHN0cmluZywgeyBhbGxPZiB9OiBJRGVmaW5pdGlvbk9iamVjdCkgPT4gKHtcbiAgdHlwZTogTm9kZVR5cGUuVGVybSxcbiAgcXVlcmllczogW1xuICAgIC4uLmNvbXBpbGVTdWdnZXN0aW9uUXVlcmllcyhub25FeHBhbmRhYmxlQXJyYXlEYXRhUGF0aChwYXJlbnQpLCBhbGxPZiEpLFxuICAgIC4uLihbJ2NvdW50cnknXS5pbmNsdWRlcyhwYXJlbnQpID8gW21hdGNoQ291bnRyeV0gOiBbXSlcbiAgXVxufSk7XG5cbmNvbnN0IHR5cGVUb1N1Z2dlc3Rpb246IHtcbiAgW3R5cGUgaW4gU2NoZW1hVHlwZXxOb2RlVHlwZXxnZW5lcmljVHlwZXwnaW50ZWdlciddPzogKFxuICAgIGZ1bGxLZXk6IHN0cmluZywgcGFyZW50U2NoZW1hPzogZGVmaW5pdGlvbiwgc2NoZW1hPzogZGVmaW5pdGlvblxuICApID0+IElOb2RlUHJvcGVydHlTdWdnZXN0aW9ufGFueTtcbn0gPSB7XG4gIFtOb2RlVHlwZS5BY3Rvcl06IGRlZmF1bHROb2RlVHlwZVN1Z2dlc3Rpb24oTm9kZVR5cGUuQWN0b3IpLFxuICBbTm9kZVR5cGUuQ3ljbGVdOiBkZWZhdWx0Tm9kZVR5cGVTdWdnZXN0aW9uKE5vZGVUeXBlLkN5Y2xlKSxcbiAgW05vZGVUeXBlLkltcGFjdEFzc2Vzc21lbnRdOiBkZWZhdWx0Tm9kZVR5cGVTdWdnZXN0aW9uKE5vZGVUeXBlLkltcGFjdEFzc2Vzc21lbnQpLFxuICBbTm9kZVR5cGUuT3JnYW5pc2F0aW9uXTogZGVmYXVsdE5vZGVUeXBlU3VnZ2VzdGlvbihOb2RlVHlwZS5PcmdhbmlzYXRpb24pLFxuICBbTm9kZVR5cGUuU2l0ZV06IGRlZmF1bHROb2RlVHlwZVN1Z2dlc3Rpb24oTm9kZVR5cGUuU2l0ZSksXG4gIFtOb2RlVHlwZS5Tb3VyY2VdOiBkZWZhdWx0Tm9kZVR5cGVTdWdnZXN0aW9uKE5vZGVUeXBlLlNvdXJjZSksXG4gIFtOb2RlVHlwZS5UZXJtXTogKGZ1bGxLZXksIHBhcmVudFNjaGVtYSkgPT4ge1xuICAgIGNvbnN0IGtleXMgPSBmdWxsS2V5LnNwbGl0KCcuJyk7XG4gICAgY29uc3Qga2V5ID0ga2V5cy5wb3AoKSE7XG4gICAgcmV0dXJuIFsnbmFtZSddLmluY2x1ZGVzKGtleSkgJiYga2V5cy5sZW5ndGggPj0gMSA/XG4gICAgICB0ZXJtU3VnZ2VzdGlvbnMoa2V5cy5wb3AoKSEsIHBhcmVudFNjaGVtYSBhcyBJRGVmaW5pdGlvbk9iamVjdCkgOlxuICAgICAgZGVmYXVsdE5vZGVUeXBlU3VnZ2VzdGlvbihOb2RlVHlwZS5UZXJtKShmdWxsS2V5KTtcbiAgfSxcbiAgW1NjaGVtYVR5cGUuQmlibGlvZ3JhcGh5XTogKGZ1bGxLZXkpID0+IHtcbiAgICBjb25zdCBrZXlzID0gZnVsbEtleS5zcGxpdCgnLicpO1xuICAgIGNvbnN0IGtleSA9IGtleXMucG9wKCkhO1xuICAgIGNvbnN0IHBhcmVudCA9IGtleXMucG9wKCkhO1xuICAgIC8vIHByZXZlbnQgcmVwbGFjaW5nIGEgdG9wLWxldmVsIHNvdXJjZVxuICAgIHJldHVybiBbJ3RpdGxlJywgJ2RvY3VtZW50RE9JJywgJ3Njb3B1cyddLmluY2x1ZGVzKGtleSkgJiYgcGFyZW50ID09PSAnYmlibGlvZ3JhcGh5JyAmJiBrZXlzLmxlbmd0aCA+PSAxID8ge1xuICAgICAgdHlwZTogTm9kZVR5cGUuU291cmNlLFxuICAgICAgcGFyZW50TGV2ZWw6IDFcbiAgICB9IDogdW5kZWZpbmVkO1xuICB9LFxuICBudW1iZXI6IChfYSwgX2IsIHNjaGVtYSkgPT4ge1xuICAgIGNvbnN0IHZhbHVlcyA9IChzY2hlbWEgYXMgYW55KS5jb25zdCA/IFsoc2NoZW1hIGFzIGFueSkuY29uc3RdIDogW107XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHZhbHVlcy5sZW5ndGggPiAwID8gJ3NlbGVjdCcgOiBkZWZhdWx0U3VnZ2VzdGlvblR5cGUsXG4gICAgICAvLyBleGNsdWRlIHN1Z2dlc3RpbmcgU2NoZW1hVHlwZVxuICAgICAgdmFsdWVzXG4gICAgfTtcbiAgfSxcbiAgaW50ZWdlcjogKF9hLCBfYiwgc2NoZW1hKSA9PiB7XG4gICAgY29uc3QgdmFsdWVzID0gKHNjaGVtYSBhcyBhbnkpLmNvbnN0ID8gWyhzY2hlbWEgYXMgYW55KS5jb25zdF0gOiBbXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogdmFsdWVzLmxlbmd0aCA+IDAgPyAnc2VsZWN0JyA6IGRlZmF1bHRTdWdnZXN0aW9uVHlwZSxcbiAgICAgIC8vIGV4Y2x1ZGUgc3VnZ2VzdGluZyBTY2hlbWFUeXBlXG4gICAgICB2YWx1ZXNcbiAgICB9O1xuICB9LFxuICBzdHJpbmc6IChmdWxsS2V5LCBfYiwgc2NoZW1hKSA9PiB7XG4gICAgLy8gZXhjbHVkZSBzdWdnZXN0aW5nIFNjaGVtYVR5cGVcbiAgICBjb25zdCB2YWx1ZXMgPSAoc2NoZW1hIGFzIGFueSkuY29uc3QgP1xuICAgICAgWyhzY2hlbWEgYXMgYW55KS5jb25zdF0gOlxuICAgICAgKChzY2hlbWEgYXMgYW55KS5lbnVtIHx8IFtdKS5maWx0ZXIodmFsID0+ICFPYmplY3QudmFsdWVzKFNjaGVtYVR5cGUpLmluY2x1ZGVzKHZhbCkpO1xuICAgIGNvbnN0IGtleSA9IGZ1bGxLZXkuc3BsaXQoJy4nKS5wb3AoKTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogdmFsdWVzLmxlbmd0aCA+IDAgJiYga2V5ICE9PSAndHlwZScgPyAnc2VsZWN0JyA6IGRlZmF1bHRTdWdnZXN0aW9uVHlwZSxcbiAgICAgIHZhbHVlc1xuICAgIH07XG4gIH0sXG4gIGJvb2xlYW46IChfYSkgPT4gKHtcbiAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICB2YWx1ZXM6IFsndHJ1ZScsICdmYWxzZSddXG4gIH0pXG59O1xuXG5jb25zdCBlbmFibGVTdWdnZXN0aW9ucyA9IChcbiAgcGFyZW50U2NoZW1hOiBkZWZpbml0aW9uLCB0eXBlOiBTY2hlbWFUeXBlIHwgTm9kZVR5cGUgfCBnZW5lcmljVHlwZSwgZnVsbEtleTogc3RyaW5nLCBzY2hlbWE/OiBkZWZpbml0aW9uXG4pID0+IHtcbiAgY29uc3Qgc3VnZ2VzdGlvbiA9IHR5cGUgaW4gdHlwZVRvU3VnZ2VzdGlvbiA/IHR5cGVUb1N1Z2dlc3Rpb25bdHlwZV0hKGZ1bGxLZXksIHBhcmVudFNjaGVtYSkgOiB1bmRlZmluZWQ7XG4gIHJldHVybiBzdWdnZXN0aW9uIHx8IChcbiAgICBzY2hlbWEgJiYgc2NoZW1hLnR5cGUgYXMgZ2VuZXJpY1R5cGUgaW4gdHlwZVRvU3VnZ2VzdGlvbiA/XG4gICAgICB0eXBlVG9TdWdnZXN0aW9uW3NjaGVtYS50eXBlIGFzIGdlbmVyaWNUeXBlXSEoZnVsbEtleSwgcGFyZW50U2NoZW1hLCBzY2hlbWEpIDpcbiAgICAgIHVuZGVmaW5lZFxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IG5vZGVBdmFpbGFibGVQcm9wZXJ0aWVzID0gKFxuICBub2RlOiBIZXN0aWFKc29uPFNjaGVtYVR5cGU+LCB7IGZ1bGxLZXksIHNjaGVtYSwgc2NoZW1hVHlwZSB9OiBQYXJ0aWFsPElOb2RlUHJvcGVydHk+XG4pID0+IGF2YWlsYWJsZVByb3BlcnRpZXMoc2NoZW1hISwgc2NoZW1hVHlwZSEsIGZ1bGxLZXkgPyBnZXQobm9kZSwgZnVsbEtleSwge30pIDogbm9kZSwgZnVsbEtleSEubGVuZ3RoID4gMCk7XG5cbmV4cG9ydCBjb25zdCBpc0FkZFByb3BlcnR5RW5hYmxlZCA9IChcbiAgbm9kZTogSGVzdGlhSnNvbjxTY2hlbWFUeXBlPiwgc2NoZW1hVHlwZTogU2NoZW1hVHlwZSwgc2NoZW1hOiBkZWZpbml0aW9uLCBmdWxsS2V5ID0gJydcbikgPT4gISFzY2hlbWEgJiZcbiAgISFPYmplY3Qua2V5cyhub2RlQXZhaWxhYmxlUHJvcGVydGllcyhub2RlLCB7IGZ1bGxLZXksIHNjaGVtYSB9KSkubGVuZ3RoICYmXG4gICghZnVsbEtleSB8fCBuZXN0aW5nVHlwZUVuYWJsZWQoc2NoZW1hVHlwZSkpO1xuXG5jb25zdCBlZGl0YWJsZUtleSA9IChrZXk6IHN0cmluZykgPT4gIVsndHlwZScsICdAdHlwZScsICd0ZXJtVHlwZSddLmluY2x1ZGVzKGtleSk7XG5cbmV4cG9ydCBjb25zdCBwcm9wZXJ0eUlkID0gKCkgPT4gdXVpZHY0KCk7XG5cbmNvbnN0IHByb3BlcnR5VXJsID0gKG5vZGU6IEhlc3RpYUpzb248U2NoZW1hVHlwZT4sIGtleTogc3RyaW5nKSA9PlxuICBbJ0BpZCcsICduYW1lJ10uaW5jbHVkZXMoa2V5KSAmJiBsaW5rVHlwZUVuYWJsZWQobm9kZVsnQHR5cGUnXSlcbiAgICA/IG5vZGVbJ0BpZCddXG4gICAgICA/IHtcbiAgICAgICAgdXJsOiBgJHtiYXNlVXJsKCl9LyR7bm9kZVsnQHR5cGUnXS50b0xvd2VyQ2FzZSgpfS8ke25vZGVbJ0BpZCddfWAsXG4gICAgICAgIHRpdGxlOiAnT3BlbidcbiAgICAgIH1cbiAgICAgIDogbm9kZVsnQHR5cGUnXSA9PT0gU2NoZW1hVHlwZS5UZXJtXG4gICAgICAgID8ge1xuICAgICAgICAgIHVybDogYCR7YmFzZVVybCgpfS9nbG9zc2FyeT9xdWVyeT1gLFxuICAgICAgICAgIHVybFBhcmFtVmFsdWU6IHRydWUsXG4gICAgICAgICAgdGl0bGU6ICdTZWFyY2ggaW4gR2xvc3NhcnknXG4gICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWRcbiAgICA6IHVuZGVmaW5lZDtcblxuY29uc3QgcHJvcGVydHlNYXBzVXJsID0gKG5vZGU6IFNpdGUgfCBPcmdhbmlzYXRpb24sIGtleTogc3RyaW5nLCB2YWx1ZSkgPT5cbiAgWyd0eXBlJ10uaW5jbHVkZXMoa2V5KSAmJiBbXG4gICAgU2NoZW1hVHlwZS5TaXRlLnRvU3RyaW5nKCksXG4gICAgU2NoZW1hVHlwZS5PcmdhbmlzYXRpb24udG9TdHJpbmcoKVxuICBdLmluY2x1ZGVzKHN0cmluZ1ZhbHVlKHZhbHVlKSB8fCBub2RlLnR5cGUpID9cbiAgICB7XG4gICAgICB1cmw6IG1hcHNVcmwoeyBsYXQ6IG5vZGUubGF0aXR1ZGUsIGxuZzogbm9kZS5sb25naXR1ZGUgfSksXG4gICAgICB0aXRsZTogJ1ZpZXcgb24gbWFwcycsXG4gICAgICBpY29uOiAnbWFwJ1xuICAgIH0gOlxuICAgIHVuZGVmaW5lZDtcblxuY29uc3QgcHJvcGVydHlFeHRlcm5hbFVybCA9IChub2RlOiBIZXN0aWFKc29uPFNjaGVtYVR5cGU+LCBrZXk6IHN0cmluZywgdmFsdWU6IGFueSkgPT5cbiAgcHJvcGVydHlVcmwobm9kZSwga2V5KSB8fFxuICBwcm9wZXJ0eU1hcHNVcmwobm9kZSBhcyBhbnksIGtleSwgdmFsdWUpO1xuXG5jb25zdCBhcnJheVBsYWNlaG9sZGVyID0gKHZhbHVlVHlwZTogZ2VuZXJpY1R5cGUpID0+IGBUeXBlIGEgJHt2YWx1ZVR5cGV9IHRoZW4gcHJlc3MgRW50ZXJgO1xuXG5jb25zdCBkZWZhdWx0UGxhY2Vob2xkZXIgPSAoeyB0eXBlLCBleGFtcGxlcyB9OiBhbnksIHZhbHVlVHlwZTogZ2VuZXJpY1R5cGUpID0+IGV4YW1wbGVzPy5sZW5ndGggPyAoXG4gIEFycmF5LmlzQXJyYXkoZXhhbXBsZXNbMF0pID8gYXJyYXlQbGFjZWhvbGRlcih2YWx1ZVR5cGUpIDogZXhhbXBsZXNbMF1cbikgOiBgTXVzdCBiZSBvZiB0eXBlICR7dHlwZSB8fCB2YWx1ZVR5cGV9YDtcblxuY29uc3Qgc2NoZW1hUGxhY2hvbGRlciA9IChzY2hlbWE6IGFueSwgZnVsbEtleTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IFtwYXJlbnQsIC4uLmtleXNdID0gZnVsbEtleS5zcGxpdCgnLicpO1xuICBjb25zdCBwcm9wZXJ0aWVzID0gc2NoZW1hLnByb3BlcnRpZXMgfHwge307XG4gIGNvbnN0IHsgZXhhbXBsZXMgfSA9IHBhcmVudCBpbiBwcm9wZXJ0aWVzID8gcHJvcGVydGllc1twYXJlbnRdIDogeyBleGFtcGxlczogW10gfTtcbiAgcmV0dXJuIGV4YW1wbGVzPy5sZW5ndGggJiYgdHlwZW9mIGV4YW1wbGVzWzBdID09PSAnb2JqZWN0JyA/IGdldChleGFtcGxlc1swXSwga2V5cy5qb2luKCcuJyksIG51bGwpOiBudWxsO1xufTtcblxuY29uc3QgcHJvcGVydHlQbGFjZWhvbGRlciA9IChzY2hlbWE6IGFueSwgdmFsdWVUeXBlOiBnZW5lcmljVHlwZSwgZnVsbEtleSA9ICcnLCBwYXJlbnRTY2hlbWE/OiBhbnkpID0+XG4gIHNjaGVtYS50eXBlID09PSAnYXJyYXknID9cbiAgICBhcnJheVBsYWNlaG9sZGVyKHZhbHVlVHlwZSkgOiAoXG4gICAgICBwYXJlbnRTY2hlbWEgJiYgZnVsbEtleT8ubGVuZ3RoID8gc2NoZW1hUGxhY2hvbGRlcihwYXJlbnRTY2hlbWEsIGZ1bGxLZXkpIDogbnVsbFxuICAgICkgfHwgZGVmYXVsdFBsYWNlaG9sZGVyKHNjaGVtYSwgdmFsdWVUeXBlKTtcblxuY29uc3QgcHJvcGVydHlUeXBlVmFsdWU6IHtcbiAgW3R5cGU6IHN0cmluZ106ICh2YWx1ZTogYW55LCBzY2hlbWE6IGRlZmluaXRpb24pID0+IGFueTtcbn0gPSB7XG4gIG9iamVjdDogc2FmZUpTT05TdHJpbmdpZnksXG4gIGFycmF5OiAodmFsLCBzY2hlbWEpID0+IHtcbiAgICBjb25zdCB7IGl0ZW1zIH0gPSBzY2hlbWEgYXMgSURlZmluaXRpb25BcnJheTtcbiAgICByZXR1cm4gJyRyZWYnIGluIGl0ZW1zID8gdmFsIDogKFxuICAgICAgQXJyYXkuaXNBcnJheSh2YWwpID9cbiAgICAgICAgdmFsLm1hcCh2YWx1ZSA9PiBwcm9wZXJ0eVZhbHVlKGl0ZW1zLCB2YWx1ZSkpLmpvaW4oQVJSQVlfREVMSU1JVEVSKSA6XG4gICAgICAgIHZhbFxuICAgICk7XG4gIH0sXG4gIGpzb246IHZhbCA9PiB2YWwgfHwgJycsXG4gIHN0cmluZzogdmFsID0+IChgJHt2YWx9YCB8fCAnJykudHJpbSgpLFxuICBudW1iZXI6IHZhbCA9PiArKGAke3ZhbH1gIHx8ICcwJyksXG4gIGludGVnZXI6IHZhbCA9PiArKGAke3ZhbH1gIHx8ICcwJyksXG4gIGJvb2xlYW46IHZhbCA9PiAoYCR7dmFsfWAgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJ1xufTtcblxuY29uc3QgcHJvcGVydHlWYWx1ZSA9IChzY2hlbWE6IGRlZmluaXRpb24sIHZhbHVlOiBhbnkpID0+IHtcbiAgY29uc3QgdmFsdWVUeXBlID0gc2NoZW1hLnR5cGVcbiAgICA/IEFycmF5LmlzQXJyYXkoc2NoZW1hLnR5cGUpICYmIHR5cGVvZiB2YWx1ZSBpbiBwcm9wZXJ0eVR5cGVWYWx1ZVxuICAgICAgPyB0eXBlb2YgdmFsdWVcbiAgICAgIDogc2NoZW1hLnR5cGUgYXMgc3RyaW5nXG4gICAgOiAnb2JqZWN0JztcbiAgcmV0dXJuIHByb3BlcnR5VHlwZVZhbHVlW3ZhbHVlVHlwZSBpbiBwcm9wZXJ0eVR5cGVWYWx1ZSA/IHZhbHVlVHlwZSA6ICdzdHJpbmcnXSh2YWx1ZSwgc2NoZW1hKTtcbn07XG5cbmNvbnN0IHByb3BlcnR5VmFsdWVUeXBlID0gKHNjaGVtYTogZGVmaW5pdGlvbiwgdmFsdWU/OiBhbnkpID0+XG4gIChzY2hlbWEudHlwZSA/IChcbiAgICBBcnJheS5pc0FycmF5KHNjaGVtYS50eXBlKSA/XG4gICAgICBzY2hlbWEudHlwZVswXSA6XG4gICAgICBzY2hlbWEudHlwZSA9PT0gJ2FycmF5JyA/XG4gICAgICAgIHByb3BlcnR5VmFsdWVUeXBlKHsgLi4uc2NoZW1hLCB0eXBlOiBbc2NoZW1hLml0ZW1zLnR5cGUgYXMgZ2VuZXJpY1R5cGVdIH0pIDpcbiAgICAgICAgc2NoZW1hLnR5cGVcbiAgKSA6IHR5cGVvZiB2YWx1ZSkgYXMgZ2VuZXJpY1R5cGU7XG5cbmNvbnN0IHByb3BlcnR5VHlwZVBhcnNlVmFsdWU6IHtcbiAgW3R5cGU6IHN0cmluZ106ICh2YWx1ZTogYW55LCBzY2hlbWE6IGRlZmluaXRpb24pID0+IGFueTtcbn0gPSB7XG4gIHVuZGVmaW5lZDogKCkgPT4gdW5kZWZpbmVkLFxuICBvYmplY3Q6IHZhbCA9PiBzYWZlSlNPTlBhcnNlKHZhbCksXG4gIGFycmF5OiAodmFsLCBzY2hlbWEpID0+IHtcbiAgICBjb25zdCB7IGl0ZW1zIH0gPSBzY2hlbWEgYXMgSURlZmluaXRpb25BcnJheTtcbiAgICByZXR1cm4gJyRyZWYnIGluIGl0ZW1zID8gdmFsIDogKFxuICAgICAgIXZhbCB8fCBBcnJheS5pc0FycmF5KHZhbCkgPyB2YWwgOiB2YWwuc3BsaXQoQVJSQVlfREVMSU1JVEVSKS5tYXAodmFsdWUgPT4gcGFyc2VOZXdWYWx1ZShpdGVtcywgdmFsdWUpKVxuICAgICk7XG4gIH0sXG4gIGpzb246IHZhbCA9PiB2YWwgfHwgJycsXG4gIHN0cmluZzogdmFsID0+IChgJHt2YWx9YCB8fCAnJykudHJpbSgpLFxuICBudW1iZXI6IHZhbCA9PiArKGAke3ZhbH1gIHx8ICcwJyksXG4gIGludGVnZXI6IHZhbCA9PiArKGAke3ZhbH1gIHx8ICcwJyksXG4gIGJvb2xlYW46IHZhbCA9PiAoYCR7dmFsfWAgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJ1xufTtcblxuLyoqXG4gKiBDb252ZXJ0IHZhbHVlIHRvIHRoZSBmaW5hbCB0eXBlIGluIHRoZSBzY2hlbWEuXG4gKlxuICogQHBhcmFtIHNjaGVtYSBEZWZpbml0aW9uIG9mIHRoZSB2YWx1ZS5cbiAqIEBwYXJhbSB2YWx1ZVxuICogQHJldHVybnMgVmFsdWUgaW4gdGhlIGNvcnJlY3QgZm9ybWF0LlxuICovXG5leHBvcnQgY29uc3QgcGFyc2VOZXdWYWx1ZSA9IChzY2hlbWE6IGRlZmluaXRpb24sIHZhbHVlOiBhbnkpID0+XG4gIHNjaGVtYS50eXBlID8gKFxuICAgIEFycmF5LmlzQXJyYXkoc2NoZW1hLnR5cGUpID9cbiAgICAgIHByb3BlcnR5VHlwZVBhcnNlVmFsdWVbdHlwZW9mIHZhbHVlXSh2YWx1ZSwgc2NoZW1hKSA6XG4gICAgICBwcm9wZXJ0eVR5cGVQYXJzZVZhbHVlW3NjaGVtYS50eXBlIGFzIHN0cmluZ10odmFsdWUsIHNjaGVtYSlcbiAgKSA6IHZhbHVlO1xuXG5jb25zdCBpc09wZW5EZWZhdWx0ID0gKHNjaGVtYVR5cGU6IFNjaGVtYVR5cGUpID0+IFtcbiAgU2NoZW1hVHlwZS5UZXJtXG5dLmluY2x1ZGVzKHNjaGVtYVR5cGUpO1xuXG4vLyBjYW4gdGhlIHByb3BlcnR5IGJlIHNlZW4gd2hlbiB0aGUgZ3JvdXAgaXMgY2xvc2VkXG5jb25zdCBpc0tleUNsb3NlZFZpc2libGUgPSAoa2V5OiBzdHJpbmcpID0+IFsndHlwZScsICdpZCcsICdAdHlwZScsICdAaWQnXS5pbmNsdWRlcyhrZXkpO1xuXG5jb25zdCBpc0tleUhpZGRlbiA9IChrZXk6IHN0cmluZykgPT4gWyd0eXBlJywgJ0B0eXBlJ10uaW5jbHVkZXMoa2V5KTtcblxuY29uc3QgaXNLZXlSZXF1aXJlZCA9IChrZXk6IHN0cmluZywgZGVmPzogSURlZmluaXRpb25PYmplY3QpID0+XG4gIFsndHlwZScsICdpZCddLmluY2x1ZGVzKGtleSkgfHwgKGRlZj8ucmVxdWlyZWQgfHwgW10pLmluY2x1ZGVzKGtleSk7XG5cbmV4cG9ydCBjb25zdCBwcm9wZXJ0eUVycm9yID0gKGVycm9yczogSVZhbGlkYXRpb25FcnJvcltdKSA9PiAoZGF0YVBhdGg6IHN0cmluZywgbm9uRXhwYW5kYWJsZUFycmF5ID0gZmFsc2UpID0+XG4gIGVycm9ycy5maW5kKGVycm9yID0+XG4gICAgKFxuICAgICAgZXJyb3IuZGF0YVBhdGggPT09IGRhdGFQYXRoIHx8IChcbiAgICAgICAgbm9uRXhwYW5kYWJsZUFycmF5ICYmIG5vbkV4cGFuZGFibGVBcnJheURhdGFQYXRoKGVycm9yLmRhdGFQYXRoISkgPT09IG5vbkV4cGFuZGFibGVBcnJheURhdGFQYXRoKGRhdGFQYXRoKVxuICAgICAgKVxuICAgICkgJiYgKGRhdGFQYXRoLmxlbmd0aCA+IDAgfHwgIWlzTWlzc2luZ1Byb3BlcnR5RXJyb3IoZXJyb3IpKVxuICApO1xuXG5jb25zdCBtaXNzaW5nUHJvcGVydHlFcnJvcnMgPSAoXG4gIG5vZGU6IEhlc3RpYUpzb248U2NoZW1hVHlwZT4sIGVycm9yczogSVZhbGlkYXRpb25FcnJvcltdLCBwYXJlbnQgPSAnJ1xuKTogSU5vZGVQcm9wZXJ0eVtdID0+IHtcbiAgY29uc3QgYWxsRXJyb3JzID0gZXJyb3JzLmZpbHRlcihlcnJvciA9PlxuICAgIGVycm9yLmRhdGFQYXRoID09PSBrZXlUb0RhdGFQYXRoKHBhcmVudCkgJiYgaXNNaXNzaW5nUHJvcGVydHlFcnJvcihlcnJvcilcbiAgKTtcbiAgLy8gY2hlY2sgZm9yIG5vZGUgbm90IGZvdW5kIGVycm9yc1xuICBjb25zdCBtaXNzaW5nTm9kZSA9IG1pc3NpbmdOb2RlRXJyb3JzKGFsbEVycm9ycyk7XG4gIHJldHVybiBtaXNzaW5nTm9kZS5sZW5ndGggPT09IDIgPyBbe1xuICAgIGlkOiBwcm9wZXJ0eUlkKCksXG4gICAgc2NoZW1hVHlwZTogbm9kZS50eXBlLFxuICAgIHN1Z2dlc3Rpb25zOiB7IHR5cGU6IGRlZmF1bHRTdWdnZXN0aW9uVHlwZSB9LFxuICAgIGtleTogJycsXG4gICAgZnVsbEtleTogcGFyZW50LFxuICAgIHZhbHVlOiAnJyxcbiAgICBlcnJvcjoge1xuICAgICAgbGV2ZWw6ICdlcnJvcicsXG4gICAgICBtZXNzYWdlOiBtaXNzaW5nTm9kZUVycm9yTWVzc2FnZShub2RlLCBtaXNzaW5nTm9kZS5maW5kKCh7IHBhcmFtcyB9KSA9PiBwYXJhbXM/Lm1pc3NpbmdQcm9wZXJ0eSA9PT0gJ0BpZCcpKVxuICAgIH0sXG4gICAgaGFzRXJyb3I6IHRydWUsXG4gICAgcHJvcGVydGllczogW10sXG4gICAgYWRkUHJvcGVydHlFbmFibGVkOiBmYWxzZSxcbiAgICBmb3JtYXR0ZXI6IGZvcm1hdHRlcignJylcbiAgfV0gOiBhbGxFcnJvcnMubWFwKGVycm9yID0+IHtcbiAgICBjb25zdCB7IG1pc3NpbmdQcm9wZXJ0eSB9ID0gZXJyb3IucGFyYW1zITtcbiAgICBjb25zdCBmdWxsS2V5ID0gcGFyZW50ID8gYCR7cGFyZW50fS4ke21pc3NpbmdQcm9wZXJ0eX1gIDogbWlzc2luZ1Byb3BlcnR5O1xuICAgIGNvbnN0IG1pc3NpbmdPbmVPZiA9IGlzTWlzc2luZ09uZU9mRXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogcHJvcGVydHlJZCgpLFxuICAgICAgc2NoZW1hVHlwZTogbm9kZS50eXBlLFxuICAgICAgc3VnZ2VzdGlvbnM6IHsgdHlwZTogZGVmYXVsdFN1Z2dlc3Rpb25UeXBlIH0sXG4gICAgICBrZXk6IG1pc3NpbmdQcm9wZXJ0eSxcbiAgICAgIGZ1bGxLZXksXG4gICAgICB2YWx1ZTogJ0FkZCBmaWVsZCB0byBmaXgnLFxuICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgZXJyb3I6IGZvcm1hdEVycm9yKGVycm9yKSxcbiAgICAgIGhhc0Vycm9yOiBtaXNzaW5nT25lT2YgPyBmYWxzZSA6IGVycm9ySGFzRXJyb3IoZXJyb3IpLFxuICAgICAgaGFzV2FybmluZzogbWlzc2luZ09uZU9mIHx8IGVycm9ySGFzV2FybmluZyhlcnJvciksXG4gICAgICBwcm9wZXJ0aWVzOiBbXSxcbiAgICAgIGFkZFByb3BlcnR5RW5hYmxlZDogdHJ1ZSxcbiAgICAgIGZvcm1hdHRlcjogZm9ybWF0dGVyKG1pc3NpbmdQcm9wZXJ0eSlcbiAgICB9O1xuICB9KTtcbn07XG5cbmNvbnN0IHByb3BlcnR5RnJvbU5vZGUgPSAoXG4gIHNjaGVtYXM6IGRlZmluaXRpb25zLCBlcnJvcnM6IElWYWxpZGF0aW9uRXJyb3JbXSwgbm9kZVNjaGVtYTogZGVmaW5pdGlvbiwgZGVlcEVkaXRhYmxlOiBib29sZWFuLCBwYXJlbnQgPSAnJywgbm9kZTogYW55XG4pID0+IChrZXk6IHN0cmluZyk6IElOb2RlUHJvcGVydHkgPT4ge1xuICBjb25zdCB2YWx1ZSA9IG5vZGVba2V5XTtcbiAgY29uc3QgZXhwYW5kYWJsZSA9IGlzRXhwYW5kYWJsZSh2YWx1ZSk7XG4gIGNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KHZhbHVlKTtcbiAgY29uc3Qgbm9uRXhwYW5kYWJsZUFycmF5ID0gaXNBcnJheSAmJiAhZXhwYW5kYWJsZTtcbiAgY29uc3QgZnVsbEtleSA9IEFycmF5LmlzQXJyYXkobm9kZSkgPyBgJHtwYXJlbnR9WyR7a2V5fV1gIDogW1xuICAgIHBhcmVudCxcbiAgICBrZXlcbiAgXS5maWx0ZXIoQm9vbGVhbikuam9pbignLicpO1xuICBjb25zdCBub2RlVHlwZSA9IG5vZGUudHlwZSB8fCBub2RlWydAdHlwZSddO1xuICBjb25zdCBzY2hlbWFUeXBlID0gZXhwYW5kYWJsZSA/IChcbiAgICBpc0FycmF5ICYmIHZhbHVlLmxlbmd0aCA/IHZhbHVlWzBdLnR5cGUgfHwgdmFsdWVbMF1bJ0B0eXBlJ10gOiB2YWx1ZS50eXBlIHx8IHZhbHVlWydAdHlwZSddXG4gICkgOiBub2RlVHlwZTtcbiAgY29uc3Qgc2NoZW1hID0gKHNjaGVtYXMgJiYgaXNUeXBlVmFsaWQoeyB0eXBlOiBzY2hlbWFUeXBlIH0pID8gKFxuICAgIGV4cGFuZGFibGUgPyBzY2hlbWFzW3NjaGVtYVR5cGVdIDogc2NoZW1hc1tzY2hlbWFUeXBlXS5wcm9wZXJ0aWVzW2tleV1cbiAgKSA6IG51bGwpIHx8IHt9O1xuICBjb25zdCBpc0lyaSA9IGlzU2NoZW1hSXJpKHNjaGVtYSk7XG4gIGNvbnN0IGVycm9yID0gcHJvcGVydHlFcnJvcihlcnJvcnMpKGtleVRvRGF0YVBhdGgoZnVsbEtleSksIG5vbkV4cGFuZGFibGVBcnJheSk7XG4gIGNvbnN0IHBhcmVudFNjaGVtYSA9IGV4cGFuZGFibGUgPyAoXG4gICAgLy8gVE9ETzogZm9yIG5vbi1hcnJheSwgc2hvdWxkIGJlIHNjaGVtYSB1bmxlc3MgbGFzdCByZWN1cnNpb25cbiAgICBpc0FycmF5ID8gc2NoZW1hIDogbm9kZVNjaGVtYVxuICApIDogbm9kZVNjaGVtYTtcbiAgY29uc3QgcHJvcGVydGllcyA9IGV4cGFuZGFibGUgfHwgaXNJcmkgP1xuICAgIHJlY3Vyc2l2ZVByb3BlcnRpZXMoc2NoZW1hcywgZXJyb3JzLCBwYXJlbnRTY2hlbWEsIGRlZXBFZGl0YWJsZSwgZnVsbEtleSkodmFsdWUpIDogW107XG4gIGNvbnN0IGluRXJyb3IgPSBlcnJvckhhc0Vycm9yKGVycm9yKSB8fCBoYXNFcnJvcihwcm9wZXJ0aWVzKTtcbiAgY29uc3QgaW5XYXJuaW5nID0gZXJyb3JIYXNXYXJuaW5nKGVycm9yKSB8fCBoYXNXYXJuaW5nKHByb3BlcnRpZXMpO1xuICBjb25zdCBlZGl0YWJsZSA9IGlzVHlwZU5vZGUobm9kZVsnQHR5cGUnXSkgfHwgKGV4cGFuZGFibGUgJiYgaXNUeXBlTm9kZSh2YWx1ZVsnQHR5cGUnXSkpID9cbiAgICBmYWxzZSA6XG4gICAgKFxuICAgICAgLy8gcHJldmVudCBlZGl0aW5nL2FkZGluZyBuZXcgcHJvcGVydGllcyBvbiBleGlzdGluZyBzdWItbm9kZXNcbiAgICAgICFkZWVwRWRpdGFibGUgJiYgaXNUeXBlTm9kZShzY2hlbWFUeXBlKSAmJiAoXG4gICAgICAgIGV4cGFuZGFibGUgPyB2YWx1ZS50eXBlICE9PSBOb2RlVHlwZS5UZXJtIDogcGFyZW50ICYmIG5vZGUudHlwZSAhPT0gTm9kZVR5cGUuVGVybVxuICAgICAgKSA/XG4gICAgICAgIGZhbHNlIDpcbiAgICAgICAgLy8gaGFuZGxlIElSSVxuICAgICAgICAoIXNjaGVtYVR5cGUgJiYga2V5ID09PSAnQGlkJykgfHwgZWRpdGFibGVLZXkoa2V5KVxuICAgICk7XG4gIGNvbnN0IHZhbHVlVHlwZSA9IHByb3BlcnR5VmFsdWVUeXBlKHNjaGVtYSwgdmFsdWUpO1xuICByZXR1cm4ge1xuICAgIGlkOiBwcm9wZXJ0eUlkKCksXG4gICAgc2NoZW1hVHlwZTogaXNJcmkgPyBudWxsIDogc2NoZW1hVHlwZSxcbiAgICBzY2hlbWEsXG4gICAga2V5LFxuICAgIGZ1bGxLZXksXG4gICAgdmFsdWU6IHByb3BlcnR5VmFsdWUoc2NoZW1hLCB2YWx1ZSksXG4gICAgZWRpdGFibGU6IGluRXJyb3IgfHwgZWRpdGFibGUsXG4gICAgc3VnZ2VzdGlvbnM6IGVuYWJsZVN1Z2dlc3Rpb25zKG5vZGVTY2hlbWEsIG5vZGUudHlwZSwgZnVsbEtleSwgc2NoZW1hKSxcbiAgICBhZGRQcm9wZXJ0eUVuYWJsZWQ6IGlzQWRkUHJvcGVydHlFbmFibGVkKG5vZGUsIHNjaGVtYVR5cGUsIHNjaGVtYSwgZnVsbEtleSksXG4gICAgbmV3UHJvcGVydHk6IHt9LFxuICAgIG5ld0Vycm9yOiB7IGxldmVsOiAnd2FybmluZycgfSxcbiAgICBlcnJvcjogZm9ybWF0RXJyb3IoZXJyb3IpLFxuICAgIGlzSGlkZGVuOiBwYXJlbnQgJiYgaXNLZXlIaWRkZW4oa2V5KSxcbiAgICBjbG9zZWRWaXNpYmxlOiBpc0tleUNsb3NlZFZpc2libGUoa2V5KSxcbiAgICBoYXNFcnJvcjogaW5FcnJvcixcbiAgICBoYXNXYXJuaW5nOiBpbldhcm5pbmcsXG4gICAgaXNSZXF1aXJlZDogaXNLZXlSZXF1aXJlZChrZXksIHNjaGVtYXNbbm9kZVR5cGVdKSxcbiAgICBpc0FycmF5LFxuICAgIGlzRXhwYW5kYWJsZTogZXhwYW5kYWJsZSxcbiAgICBpc09wZW46IGlzT3BlbkRlZmF1bHQoc2NoZW1hVHlwZSksXG4gICAgcHJvcGVydGllcyxcbiAgICBwbGFjZWhvbGRlcjogcHJvcGVydHlQbGFjZWhvbGRlcihzY2hlbWEsIHZhbHVlVHlwZSwgZnVsbEtleSwgcGFyZW50U2NoZW1hKSxcbiAgICBleHRlcm5hbFVybDogcHJvcGVydHlFeHRlcm5hbFVybChub2RlLCBrZXksIHZhbHVlKSxcbiAgICBmb3JtYXR0ZXI6IGZvcm1hdHRlcihrZXkpXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3Qgc2luZ2xlUHJvcGVydHkgPSAoc2NoZW1hczogZGVmaW5pdGlvbnMsIGVycm9yczogSVZhbGlkYXRpb25FcnJvcltdLCBub2RlOiBhbnksIGZ1bGxLZXk6IHN0cmluZykgPT4ge1xuICBjb25zdCBbX3QsIC4uLmtleXNdID0gZnVsbEtleS5zcGxpdCgnLicpO1xuICBjb25zdCBrZXkgPSBrZXlzLnBvcCgpITtcbiAgY29uc3QgcGFyZW50ID0ga2V5cy5qb2luKCcuJyk7XG4gIGNvbnN0IHBhcmVudE5vZGUgPSBwYXJlbnQubGVuZ3RoID8gZ2V0KG5vZGUsIHBhcmVudCkgOiBub2RlO1xuICBjb25zdCBzY2hlbWFUeXBlID0gdHlwZVRvU2NoZW1hVHlwZShwYXJlbnROb2RlLnR5cGUgfHwgcGFyZW50Tm9kZVsnQHR5cGUnXSk7XG4gIGNvbnN0IHBhcmVudFNjaGVtYSA9IHNjaGVtYXNbc2NoZW1hVHlwZV07XG4gIHJldHVybiBwcm9wZXJ0eUZyb21Ob2RlKHNjaGVtYXMsIGVycm9ycywgcGFyZW50U2NoZW1hLCB0cnVlLCBwYXJlbnQsIHBhcmVudE5vZGUpKGtleSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVjdXJzaXZlUHJvcGVydGllcyA9IChcbiAgc2NoZW1hczogZGVmaW5pdGlvbnMsIGVycm9yczogSVZhbGlkYXRpb25FcnJvcltdLCBub2RlU2NoZW1hOiBkZWZpbml0aW9uLCBkZWVwRWRpdGFibGU6IGJvb2xlYW4sIHBhcmVudCA9ICcnXG4pID0+IChub2RlOiBhbnkpOiBJTm9kZVByb3BlcnR5W10gPT5cbiAgT2JqZWN0LmtleXMobm9kZSlcbiAgICAuZmlsdGVyKGtleSA9PiAhcHJpdmF0ZUtleXMuaW5jbHVkZXMoa2V5KSlcbiAgICAubWFwKHByb3BlcnR5RnJvbU5vZGUoc2NoZW1hcywgZXJyb3JzLCBub2RlU2NoZW1hLCBkZWVwRWRpdGFibGUsIHBhcmVudCwgbm9kZSkpXG4gICAgLmNvbmNhdCguLi5taXNzaW5nUHJvcGVydHlFcnJvcnMobm9kZSwgZXJyb3JzLCBwYXJlbnQpKVxuICAgIC5zb3J0KHNvcnRQcm9wZXJ0aWVzKTtcblxuY29uc3QgZnVsbEtleVBhcnRzID0gKGZ1bGxLZXk6IHN0cmluZykgPT4gZnVsbEtleS5zcGxpdCgnLicpLmZsYXRNYXAodmFsID0+IHtcbiAgaWYgKHZhbC5lbmRzV2l0aCgnXScpKSB7XG4gICAgY29uc3QgW2tleSwgaW5kZXhdID0gdmFsLnNwbGl0KCdbJyk7XG4gICAgcmV0dXJuIFtrZXksIGluZGV4LnJlcGxhY2UoJ10nLCAnJyldO1xuICB9XG4gIHJldHVybiB2YWw7XG59KTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZVByb3BlcnRpZXMgPSAoeyBwcm9wZXJ0aWVzIH06IFBhcnRpYWw8SU5vZGVQcm9wZXJ0eT4sIHVwZGF0ZXI6IChwcm9wOiBJTm9kZVByb3BlcnR5KSA9PiBJTm9kZVByb3BlcnR5KSA9PlxuICAocHJvcGVydGllcyB8fCBbXSkubWFwKHByb3AgPT4gdXBkYXRlUHJvcGVydGllcyh1cGRhdGVyKHByb3ApLCB1cGRhdGVyKSk7XG5cbmV4cG9ydCBjb25zdCB0eXBlVG9OZXdQcm9wZXJ0eSA9IChcbiAgc2NoZW1hczogZGVmaW5pdGlvbnMsIHNjaGVtYTogZGVmaW5pdGlvbiwgbm9kZVNjaGVtYTogZGVmaW5pdGlvbiwgbm9kZTogYW55LCBmdWxsS2V5OiBzdHJpbmdcbik6IElOb2RlUHJvcGVydHkgPT4ge1xuICBjb25zdCBrZXkgPSBmdWxsS2V5UGFydHMoZnVsbEtleSkucG9wKCkhO1xuICBjb25zdCBtYXBwaW5nczoge1xuICAgIFtrZXk6IHN0cmluZ106ICgpID0+IElOb2RlUHJvcGVydHk7XG4gIH0gPSB7XG4gICAgb2JqZWN0OiAoKSA9PiB7XG4gICAgICBjb25zdCB7IHNjaGVtYVR5cGUsIHByb3BlcnRpZXMgfSA9IHNjaGVtYVJlcXVpcmVkUHJvcGVydGllcyhzY2hlbWFzLCBzY2hlbWEgYXMgSURlZmluaXRpb25PYmplY3QpO1xuICAgICAgbm9kZVtrZXldID0gbm9kZVtrZXldIHx8IHt9O1xuICAgICAgbm9kZVtrZXldLnR5cGUgPSBzY2hlbWFUeXBlO1xuICAgICAgLy8gVE9ETzogaGFuZGxlIGxvYWQgc2NoZW1hcyBmcm9tIGh0dHAgc291cmNlXG4gICAgICBpZiAoc2NoZW1hVHlwZS5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVUb05ld1Byb3BlcnR5KHNjaGVtYXMsIHsgdHlwZTogJ2pzb24nIH0gYXMgYW55LCBub2RlU2NoZW1hLCBub2RlLCBmdWxsS2V5KTtcbiAgICAgIH1cbiAgICAgIC8vIFRPRE86IGhhbmRsZSBub2RlU2NoZW1hIHNob3VsZCBiZSBzY2hlbWEgdW5sZXNzIGxhc3QgcmVjdXJzaW9uXG4gICAgICBjb25zdCBwcm9wcyA9IHByb3BlcnRpZXNcbiAgICAgICAgLmZpbHRlcihwcm9wID0+IG5lc3RpbmdFbmFibGVkKHNjaGVtYVR5cGUsIHByb3Aua2V5KSAmJiAhIXByb3AudmFsdWUpXG4gICAgICAgIC5tYXAoXG4gICAgICAgICAgdiA9PiAoe1xuICAgICAgICAgICAgLi4udHlwZVRvTmV3UHJvcGVydHkoc2NoZW1hcywgdi52YWx1ZSwgbm9kZVNjaGVtYSwgbm9kZVtrZXldLCBgJHtmdWxsS2V5fS4ke3Yua2V5fWApLFxuICAgICAgICAgICAgaXNSZXF1aXJlZDogdHJ1ZVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICBjb25zdCB2YWx1ZSA9IHByb3BzLnJlZHVjZSgocHJldiwgY3VycikgPT4gKHsgLi4ucHJldiwgW2N1cnIua2V5XTogY3Vyci52YWx1ZSB9KSwge30pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHByb3BlcnR5SWQoKSxcbiAgICAgICAgaXNBZGRlZDogdHJ1ZSxcbiAgICAgICAgc2NoZW1hOiBzY2hlbWFzW3NjaGVtYVR5cGVdLFxuICAgICAgICBzY2hlbWFUeXBlLFxuICAgICAgICBrZXksXG4gICAgICAgIGZ1bGxLZXksXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBlZGl0YWJsZTogZWRpdGFibGVLZXkoa2V5KSxcbiAgICAgICAgaXNIaWRkZW46IGlzS2V5SGlkZGVuKGtleSksXG4gICAgICAgIGNsb3NlZFZpc2libGU6IGlzS2V5Q2xvc2VkVmlzaWJsZShrZXkpLFxuICAgICAgICBzdWdnZXN0aW9uczogZW5hYmxlU3VnZ2VzdGlvbnMobm9kZVNjaGVtYSwgc2NoZW1hVHlwZSwgZnVsbEtleSksXG4gICAgICAgIHByb3BlcnRpZXM6IHByb3BzLnNvcnQoc29ydFByb3BlcnRpZXMpLFxuICAgICAgICBhZGRQcm9wZXJ0eUVuYWJsZWQ6IGlzQWRkUHJvcGVydHlFbmFibGVkKG5vZGUsIHNjaGVtYVR5cGUsIHNjaGVtYXNbc2NoZW1hVHlwZV0sIGtleSksXG4gICAgICAgIG5ld1Byb3BlcnR5OiB7fSxcbiAgICAgICAgbmV3RXJyb3I6IHsgbGV2ZWw6ICd3YXJuaW5nJyB9LFxuICAgICAgICBpc1JlcXVpcmVkOiBpc0tleVJlcXVpcmVkKGtleSwgc2NoZW1hIGFzIGFueSksXG4gICAgICAgIGlzQXJyYXk6IGZhbHNlLFxuICAgICAgICBpc0V4cGFuZGFibGU6IHRydWUsXG4gICAgICAgIGlzT3BlbjogaXNPcGVuRGVmYXVsdChzY2hlbWFUeXBlKSxcbiAgICAgICAgZm9ybWF0dGVyOiBmb3JtYXR0ZXIoa2V5KVxuICAgICAgfTtcbiAgICB9LFxuICAgIGFycmF5OiAoKSA9PiB7XG4gICAgICBjb25zdCB7IGl0ZW1zIH0gPSBzY2hlbWEgYXMgSURlZmluaXRpb25BcnJheTtcbiAgICAgIC8vIGFycmF5IG9mIHN0cmluZywgbnVtYmVyIGFuZCBib29sZWFuXG4gICAgICBpZiAoaXRlbXMudHlwZSkge1xuICAgICAgICByZXR1cm4gbWFwcGluZ3MuZGVmYXVsdCgpO1xuICAgICAgfVxuICAgICAgY29uc3Qgc2NoZW1hVHlwZSA9IGRlZmluaXRpb25Ub1NjaGVtYVR5cGUoaXRlbXMgYXMgSURlZmluaXRpb25PYmplY3QpO1xuICAgICAgbm9kZVtrZXldID0gbm9kZVtrZXldIHx8IFtdO1xuICAgICAgbm9kZVtrZXldLnB1c2goeyB9KTtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gdHlwZVRvTmV3UHJvcGVydHkoc2NoZW1hcywgaXRlbXMsIHNjaGVtYXNbc2NoZW1hVHlwZV0sIG5vZGVba2V5XVswXSwgYCR7ZnVsbEtleX1bMF1gKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBwcm9wZXJ0eUlkKCksXG4gICAgICAgIGlzQWRkZWQ6IHRydWUsXG4gICAgICAgIHNjaGVtYSxcbiAgICAgICAgc2NoZW1hVHlwZSxcbiAgICAgICAga2V5LFxuICAgICAgICBmdWxsS2V5LFxuICAgICAgICB2YWx1ZTogW3Byb3BlcnR5LnZhbHVlXSxcbiAgICAgICAgZWRpdGFibGU6IGVkaXRhYmxlS2V5KGtleSksXG4gICAgICAgIGlzSGlkZGVuOiBpc0tleUhpZGRlbihrZXkpLFxuICAgICAgICBjbG9zZWRWaXNpYmxlOiBpc0tleUNsb3NlZFZpc2libGUoa2V5KSxcbiAgICAgICAgc3VnZ2VzdGlvbnM6IHVuZGVmaW5lZCxcbiAgICAgICAgcHJvcGVydGllczogW3Byb3BlcnR5XSxcbiAgICAgICAgbmV3UHJvcGVydHk6IHt9LFxuICAgICAgICBuZXdFcnJvcjogeyBsZXZlbDogJ3dhcm5pbmcnIH0sXG4gICAgICAgIGlzQXJyYXk6IHRydWUsXG4gICAgICAgIGlzRXhwYW5kYWJsZTogdHJ1ZSxcbiAgICAgICAgYWRkUHJvcGVydHlFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgZm9ybWF0dGVyOiBmb3JtYXR0ZXIoa2V5KVxuICAgICAgfTtcbiAgICB9LFxuICAgIGRlZmF1bHQ6ICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlVHlwZSA9IHByb3BlcnR5VmFsdWVUeXBlKHNjaGVtYSk7XG4gICAgICBjb25zdCB2YWx1ZSA9IHNjaGVtYS5kZWZhdWx0IHx8IChzY2hlbWEgYXMgYW55KS5jb25zdCB8fCB2YWx1ZVR5cGVUb0RlZmF1bHRbdmFsdWVUeXBlXTtcbiAgICAgIG5vZGVba2V5XSA9IHZhbHVlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHByb3BlcnR5SWQoKSxcbiAgICAgICAgaXNBZGRlZDogdHJ1ZSxcbiAgICAgICAgc2NoZW1hLFxuICAgICAgICBzY2hlbWFUeXBlOiBub2RlLnR5cGUsXG4gICAgICAgIGtleSxcbiAgICAgICAgZnVsbEtleSxcbiAgICAgICAgdmFsdWU6IHByb3BlcnR5VmFsdWUoc2NoZW1hLCB2YWx1ZSksXG4gICAgICAgIGVkaXRhYmxlOiBlZGl0YWJsZUtleShrZXkpLFxuICAgICAgICBpc0hpZGRlbjogaXNLZXlIaWRkZW4oa2V5KSxcbiAgICAgICAgY2xvc2VkVmlzaWJsZTogaXNLZXlDbG9zZWRWaXNpYmxlKGtleSksXG4gICAgICAgIHN1Z2dlc3Rpb25zOiBlbmFibGVTdWdnZXN0aW9ucyhub2RlU2NoZW1hLCBub2RlLnR5cGUsIGZ1bGxLZXksIHNjaGVtYSksXG4gICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wZXJ0eVBsYWNlaG9sZGVyKHNjaGVtYSwgdmFsdWVUeXBlLCBmdWxsS2V5LCBub2RlU2NoZW1hKSxcbiAgICAgICAgZXh0ZXJuYWxVcmw6IHByb3BlcnR5RXh0ZXJuYWxVcmwobm9kZSwga2V5LCB2YWx1ZSksXG4gICAgICAgIHByb3BlcnRpZXM6IFtdLFxuICAgICAgICBhZGRQcm9wZXJ0eUVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICBmb3JtYXR0ZXI6IGZvcm1hdHRlcihrZXkpXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgY29uc3QgbWFwcGVkID0gIXNjaGVtYS50eXBlID8gbWFwcGluZ3Mub2JqZWN0IDogKFxuICAgIHNjaGVtYS50eXBlIGFzIHN0cmluZyBpbiBtYXBwaW5ncyA/IG1hcHBpbmdzW3NjaGVtYS50eXBlIGFzIHN0cmluZ10gOiBtYXBwaW5ncy5kZWZhdWx0XG4gICk7XG4gIHJldHVybiBtYXBwZWQoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kUHJvcGVydHkgPSAocHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdLCBmdWxsS2V5OiBzdHJpbmcpID0+IHtcbiAgZm9yIChjb25zdCBwIG9mIHByb3BlcnRpZXMpIHtcbiAgICBpZiAocC5mdWxsS2V5ID09PSBmdWxsS2V5KSB7XG4gICAgICByZXR1cm4gcDtcbiAgICB9XG4gICAgY29uc3QgY2hpbGRQID0gZmluZFByb3BlcnR5KHAucHJvcGVydGllcywgZnVsbEtleSk7XG4gICAgaWYgKGNoaWxkUCkge1xuICAgICAgcmV0dXJuIGNoaWxkUDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgcGFyZW50UHJvcGVydHkgPSAocHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdLCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkgPT4ge1xuICBjb25zdCBhbGxLZXlzID0gcHJvcGVydHkuZnVsbEtleS5zcGxpdCgnLicpO1xuICBbLi4ubmV3IEFycmF5KHByb3BlcnR5LnN1Z2dlc3Rpb25zPy5wYXJlbnRMZXZlbCB8fCAwKV0ubWFwKCgpID0+IGFsbEtleXMucG9wKCkpO1xuICBjb25zdCBwYXJlbnRLZXlzID0gZnVsbEtleVBhcnRzKGFsbEtleXMuam9pbignLicpKTtcbiAgcGFyZW50S2V5cy5wb3AoKTtcbiAgY29uc3QgcGFyZW50ID0gKHBhcmVudEtleXMucmVkdWNlKChwcmV2LCBjdXJyLCBjdXJySW5kZXgpOiBhbnkgPT4ge1xuICAgIGNvbnN0IHByb3AgPSBwcmV2LmZpbmQodiA9PiB2LmtleSA9PT0gY3Vycik7XG4gICAgcmV0dXJuIGN1cnJJbmRleCA9PT0gcGFyZW50S2V5cy5sZW5ndGggLSAxID8gKHByb3AgfHwge30gYXMgSU5vZGVQcm9wZXJ0eSkgOiAocHJvcCEucHJvcGVydGllcyB8fCBbXSk7XG4gIH0sIHByb3BlcnRpZXMpIGFzIGFueSkgYXMgSU5vZGVQcm9wZXJ0eTtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkocGFyZW50KSA/IHByb3BlcnR5IDogcGFyZW50O1xufTtcblxuZXhwb3J0IGNvbnN0IG5lc3RlZFByb3BlcnR5ID0gKHsgcHJvcGVydGllcyB9OiBJTm9kZVByb3BlcnR5LCBuZXN0ZWRLZXk6IHN0cmluZykgPT5cbiAgcHJvcGVydGllcy5maW5kKCh7IGtleSB9KSA9PiBrZXkgPT09IG5lc3RlZEtleSk7XG5cbmV4cG9ydCBjb25zdCBzaWJsaW5nUHJvcGVydHkgPSAocHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdLCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSwgc2libGluZ0tleTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IHBhcmVudCA9IHBhcmVudFByb3BlcnR5KHByb3BlcnRpZXMsIHByb3BlcnR5KTtcbiAgY29uc3QgcGFyZW50UHJvcGVydGllcyA9IHBhcmVudCA9PT0gcHJvcGVydHkgPyBwcm9wZXJ0aWVzIDogcGFyZW50LnByb3BlcnRpZXM7XG4gIHJldHVybiBwYXJlbnRQcm9wZXJ0aWVzLmZpbmQocHJvcCA9PiBwcm9wLmtleSA9PT0gc2libGluZ0tleSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ3JvdXBDaGFuZ2VkID0gKHByb3BlcnRpZXM6IElOb2RlUHJvcGVydHlbXSwga2V5OiBzdHJpbmcsIHZhbHVlPzogYW55KSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGFyZW50S2V5cyA9IGZ1bGxLZXlQYXJ0cyhrZXkpO1xuICAgIHBhcmVudEtleXMucmVkdWNlKChwcmV2LCBjdXJyLCBjdXJySW5kZXgpID0+IHtcbiAgICAgIGlmIChjdXJySW5kZXggPT09IHBhcmVudEtleXMubGVuZ3RoIC0gMSAmJiB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcHJldi5zcGxpY2UocHJldi5maW5kSW5kZXgodiA9PiB2LmtleSA9PT0gY3VyciksIDEpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IHByb3AgPSBwcmV2LmZpbmQodiA9PiB2LmtleSA9PT0gY3VycikhO1xuICAgICAgICBwcm9wLmNoYW5nZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gcHJvcC5wcm9wZXJ0aWVzO1xuICAgICAgfVxuICAgIH0sIHByb3BlcnRpZXMpO1xuICB9XG4gIGNhdGNoIChfZXJyKSB7XG4gICAgLy8gaWdub3JlIGVycm9yXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCByZWZyZXNoUHJvcGVydHlLZXlzID0gKHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PlxuICBwcm9wZXJ0eS5wcm9wZXJ0aWVzLm1hcCgocHJvcCwgaSkgPT4ge1xuICAgIHByb3AuZnVsbEtleSA9IGAke3Byb3BlcnR5LmZ1bGxLZXl9JHtwcm9wZXJ0eS5pc0FycmF5ID8gYFske2l9XWAgOiBgLiR7cHJvcC5rZXl9YH1gO1xuICAgIHByb3Aua2V5ID0gcHJvcGVydHkuaXNBcnJheSA/IGAke2l9YCA6IHByb3Aua2V5O1xuICAgIHJldHVybiByZWZyZXNoUHJvcGVydHlLZXlzKHByb3ApO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZUN5Y2xlRHVyYXRpb25FbmFibGVkID0gKHByb3BlcnRpZXM6IElOb2RlUHJvcGVydHlbXSwgcHJvcGVydHk6IElOb2RlUHJvcGVydHkpID0+IHtcbiAgY29uc3Qgc3RhcnREYXRlID0gc2libGluZ1Byb3BlcnR5KHByb3BlcnRpZXMsIHByb3BlcnR5LCAnc3RhcnREYXRlJyk7XG4gIGNvbnN0IGVuZERhdGUgPSBzaWJsaW5nUHJvcGVydHkocHJvcGVydGllcywgcHJvcGVydHksICdlbmREYXRlJyk7XG4gIHJldHVybiAhIXN0YXJ0RGF0ZT8udmFsdWUgJiYgISFlbmREYXRlPy52YWx1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVDeWNsZUR1cmF0aW9uID0gKHByb3BlcnRpZXM6IElOb2RlUHJvcGVydHlbXSwgcHJvcGVydHk6IElOb2RlUHJvcGVydHkpID0+IHtcbiAgY29uc3Qgc3RhcnREYXRlID0gc2libGluZ1Byb3BlcnR5KHByb3BlcnRpZXMsIHByb3BlcnR5LCAnc3RhcnREYXRlJykhO1xuICBjb25zdCBlbmREYXRlID0gc2libGluZ1Byb3BlcnR5KHByb3BlcnRpZXMsIHByb3BlcnR5LCAnZW5kRGF0ZScpITtcbiAgcmV0dXJuIGRpZmZJbkRheXMoc3RhcnREYXRlLnZhbHVlLCBlbmREYXRlLnZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVDeWNsZVN0YXJ0RGF0ZUVuYWJsZWQgPSAocHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdLCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkgPT4ge1xuICBjb25zdCBjeWNsZUR1cmF0aW9uID0gc2libGluZ1Byb3BlcnR5KHByb3BlcnRpZXMsIHByb3BlcnR5LCAnY3ljbGVEdXJhdGlvbicpO1xuICBjb25zdCBlbmREYXRlID0gc2libGluZ1Byb3BlcnR5KHByb3BlcnRpZXMsIHByb3BlcnR5LCAnZW5kRGF0ZScpO1xuICByZXR1cm4gISFjeWNsZUR1cmF0aW9uPy52YWx1ZSAmJiAhIWVuZERhdGU/LnZhbHVlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZUN5Y2xlU3RhcnREYXRlID0gKHByb3BlcnRpZXM6IElOb2RlUHJvcGVydHlbXSwgcHJvcGVydHk6IElOb2RlUHJvcGVydHkpID0+IHtcbiAgY29uc3QgY3ljbGVEdXJhdGlvbiA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ2N5Y2xlRHVyYXRpb24nKSE7XG4gIGNvbnN0IGVuZERhdGUgPSBzaWJsaW5nUHJvcGVydHkocHJvcGVydGllcywgcHJvcGVydHksICdlbmREYXRlJykhO1xuICByZXR1cm4gbW9tZW50KGVuZERhdGUudmFsdWUpLmxvY2FsZSgnZW4tZ2InKS5zdWJ0cmFjdChjeWNsZUR1cmF0aW9uLnZhbHVlLCAnZGF5cycpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xufTtcbiJdfQ==
|