ctt-babylon 0.25.1 → 0.25.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/core/babylon-booking-widget/babylon-booking-widget.component.mjs +142 -6
- package/esm2022/lib/services/mapper/mapper.service.mjs +2 -2
- package/fesm2022/ctt-babylon.mjs +142 -6
- package/fesm2022/ctt-babylon.mjs.map +1 -1
- package/lib/components/core/babylon-booking-widget/babylon-booking-widget.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -4291,7 +4291,7 @@ export class MapperService {
|
|
|
4291
4291
|
title: texts?.title?.color?.trim(),
|
|
4292
4292
|
subtitle: texts?.subtitle?.color?.trim(),
|
|
4293
4293
|
},
|
|
4294
|
-
|
|
4294
|
+
backgroundImage: this.getImageResponsive(props?.multimedia?.backgroundimage?.[0], false),
|
|
4295
4295
|
years,
|
|
4296
4296
|
};
|
|
4297
4297
|
}
|
|
@@ -4304,4 +4304,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
4304
4304
|
providedIn: 'root',
|
|
4305
4305
|
}]
|
|
4306
4306
|
}] });
|
|
4307
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvc2VydmljZXMvbWFwcGVyL21hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDSCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBRVgsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQXVHNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQTJCbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0gsMkJBQTJCLEVBQzNCLHlCQUF5QixHQUU1QixNQUFNLHdCQUF3QixDQUFDOztBQUtoQyxNQUFNLE9BQU8sYUFBYTtJQUgxQjtRQUlxQixZQUFPLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDNUMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN6QyxpQkFBWSxHQUFHLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBTXBFLGtCQUFhLEdBQUcsTUFBTSxDQUFxQyxTQUFTLENBQUMsQ0FBQztRQUV0RSxXQUFNLEdBQW1CLFFBQVEsQ0FDN0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENB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QUFFLEdBQUc7Z0JBQzlCLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7Z0JBQ3hCLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUc7YUFDakM7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDeEMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDbEMsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTthQUMzQztZQUNELGFBQWEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQ2xDLEtBQUssRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQ3ZDLEtBQUssQ0FDUjtZQUNELEtBQUs7U0FDVyxDQUFDO0lBQ3pCLENBQUM7K0dBbHRMUSxhQUFhO21IQUFiLGFBQWEsY0FGVixNQUFNOzs0RkFFVCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgY29tcHV0ZWQsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdGFibGUsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgU2lnbmFsLFxuICAgIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBCYWJ5bG9uNDA0SSxcbiAgICBCYWJ5bG9uQWN0aW9uQmFubmVySSxcbiAgICBCYWJ5bG9uQWRkcmVzc0l0ZW0sXG4gICAgQmFieWxvbkFkdmFudGFnZXNJLFxuICAgIEJhYnlsb25CYW5uZXJHYWxsZXJ5SSxcbiAgICBCYWJ5bG9uQmFubmVySW5mb0ksXG4gICAgQmFieWxvbkJhbm5lck5ld3NsZXR0ZXJJLFxuICAgIEJhYnlsb25CbG9nRGV0YWlsc0ksXG4gICAgQmFieWxvbkJsb2dMaXN0SSxcbiAgICBCYWJ5bG9uQnJlYWRjcnVtYkksXG4gICAgQmFieWxvbkNvbWluZ1Nvb25JLFxuICAgIEJhYnlsb25Db250YWN0QWRkcmVzc0ksXG4gICAgQmFieWxvbkNvbnRhY3RGb3JtSSxcbiAgICBCYWJ5bG9uQ29udGFjdEhvd0ksXG4gICAgQmFieWxvbkNvbnRhY3RNYXBhSSxcbiAgICBCYWJ5bG9uQ29udGFjdE1hcEl0ZW0sXG4gICAgQmFieWxvbkVuZ2luZUksXG4gICAgQmFieWxvbkVuZ2luZU1vZGFsSSxcbiAgICBCYWJ5bG9uRXF1aXBtZW50SXRlbSxcbiAgICBCYWJ5bG9uRXh0ZXJuYWxTY3JpcHRJLFxuICAgIEJhYnlsb25GYXFJLFxuICAgIEJhYnlsb25GZWF0dXJlc1NsaWRlckksXG4gICAgQmFieWxvbkZlYXR1cmVzU2xpZGVySXRlbSxcbiAgICBCYWJ5bG9uRm9vdGVyQ29udGFjdEksXG4gICAgQmFieWxvbkZvb3RlckxpbmtzSSxcbiAgICBCYWJ5bG9uRm9vdGVyTG9nb3NJLFxuICAgIEJhYnlsb25Gb290ZXJTb2NpYWxJLFxuICAgIEJhYnlsb25HYWxsZXJ5RmlsdGVyLFxuICAgIEJhYnlsb25HYWxsZXJ5SSxcbiAgICBCYWJ5bG9uR2FsbGVyeUl0ZW0sXG4gICAgQmFieWxvbkdyQzJJbWdJLFxuICAgIEJhYnlsb25IZWFkZXJCb29rU2hvd0ksXG4gICAgQmFieWxvbkhlYWRlckNsZWFySSxcbiAgICBCYWJ5bG9uSGVhZGVyTWVudUNlbnRlckksXG4gICAgQmFieWxvbkhlYWRlck1lbnVMb2dvQ2VudGVySSxcbiAgICBCYWJ5bG9uSGVhZGVyTWVudVNob3dJLFxuICAgIEJhYnlsb25IZWFkSW50cm9JLFxuICAgIEJhYnlsb25IaXN0b3J5SSxcbiAgICBCYWJ5bG9uSGlzdG9yeVllYXJJdGVtLFxuICAgIEJhYnlsb25Ib3RlbHNMaXN0SSxcbiAgICBCYWJ5bG9uSG90ZWxzU2xpZGVySSxcbiAgICBCYWJ5bG9uSWZyYW1lSSxcbiAgICBCYWJ5bG9uSW5mbzJDb2xJbWdJLFxuICAgIEJhYnlsb25JbmZvMmltZ0JpZ0ksXG4gICAgQmFieWxvbkluZm8yaW1nSSxcbiAgICBCYWJ5bG9uSW5mbzRpbWdJLFxuICAgIEJhYnlsb25JbmZvQmlnSSxcbiAgICBCYWJ5bG9uSW5mb0dyaWRJLFxuICAgIEJhYnlsb25JbmZvR3JpZEl0ZW1JLFxuICAgIEJhYnlsb25JbmZvSW1nSSxcbiAgICBCYWJ5bG9uSW5mb0ltZ1NsaWRlckksXG4gICAgQmFieWxvbkluZm9JbWdTbGlkZXJJdGVtSSxcbiAgICBCYWJ5bG9uSW5mb0ludHJvSSxcbiAgICBCYWJ5bG9uSW5mb1ppZ1phZ0NvdW50ZXJJLFxuICAgIEJhYnlsb25JbmZvWmlnemFnVjJJLFxuICAgIEJhYnlsb25JbmZvWmlnemFnVjJJdGVtLFxuICAgIEJhYnlsb25JdGVtc0dyaWRJLFxuICAgIEJhYnlsb25MYW5ndWFnZU1vZGFsSSxcbiAgICBCYWJ5bG9uTGVnYWxJLFxuICAgIEJhYnlsb25MaXNDNFR4dEljb0ksXG4gICAgQmFieWxvbk1hcExpc3RJLFxuICAgIEJhYnlsb25NYXBMaXN0SXRlbSxcbiAgICBCYWJ5bG9uTW9kYWxNdWx0aXBsZU1vdG9yc0ksXG4gICAgQmFieWxvbk5ld3NsZXR0ZXJJLFxuICAgIEJhYnlsb25PZmZlckRldGFpbEksXG4gICAgQmFieWxvbk9mZmVySSxcbiAgICBCYWJ5bG9uT2ZmZXJQb3B1cEksXG4gICAgQmFieWxvbk9mZmVyUG9wdXBWMkksXG4gICAgQmFieWxvbk9mZmVyU2xpZGVySSxcbiAgICBCYWJ5bG9uT2ZmZXJzTGlzdEksXG4gICAgQmFieWxvbk9mZmVyc0xpc3RJdGVtLFxuICAgIEJhYnlsb25QcmVzc0xpc3RJLFxuICAgIEJhYnlsb25Sb29tSW5mb0ksXG4gICAgQmFieWxvblJvb21zQ29sc0ksXG4gICAgQmFieWxvblJvb21zR3JpZEksXG4gICAgQmFieWxvblJvb21zTGlzdEVxdWlwbWVudCxcbiAgICBCYWJ5bG9uUm9vbXNMaXN0SSxcbiAgICBCYWJ5bG9uUm9vbXNMaXN0SXRlbSxcbiAgICBCYWJ5bG9uUm9vbXNTbGlkZXJJLFxuICAgIEJhYnlsb25TZXJ2aWNlc1NsaWRlckksXG4gICAgQmFieWxvblNsaWRlcjJDb2xJdGVtSSxcbiAgICBCYWJ5bG9uU2xpZGVyMml0ZW1zSSxcbiAgICBCYWJ5bG9uU2xpZGVyM0l0ZW1zSSxcbiAgICBCYWJ5bG9uU2xpZGVyNGNvbExhYmVscyxcbiAgICBCYWJ5bG9uU2xpZGVySXRlbSxcbiAgICBCYWJ5bG9uU3RhdGljRm9vdGVySSxcbiAgICBCYWJ5bG9uU3VibWVudUksXG4gICAgQmFieWxvblRoYW5rc0ksXG4gICAgQmFieWxvblRvcFNsaWRlckksXG4gICAgQmFieWxvblRvcFNsaWRlckl0ZW0sXG4gICAgQmFieWxvblRvcFNsaWRlclRodW1ic0ksXG4gICAgQmFieWxvblRvcFNsaWRlclYySSxcbiAgICBCYWJ5bG9uVG9wU2xpZGVyVmlkZW9JLFxuICAgIEJhYnlsb25XZWJtYXBJLFxuICAgIERyb3Bkb3duT3B0aW9uLFxufSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvcmUnO1xuaW1wb3J0IHsgQmFieWxvbkdsb2JhbE1vZGFsSSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY29yZS9iYWJ5bG9uLWdsb2JhbC1tb2RhbCc7XG5pbXBvcnQgeyBCYWJ5bG9uSXRlbUdyaWRJIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb3JlL2JhYnlsb24tbGlzdC1ncmlkL2JhYnlsb24tbGlzdC1ncmlkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYWJ5bG9uTGlzdEdyaWRJIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb3JlL2JhYnlsb24tbGlzdC1ncmlkL2JhYnlsb24tbGlzdC1ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWJ5bG9uTW9kYWxQb3B1cEkgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvcmUvYmFieWxvbi1tb2RhbC1wb3B1cCc7XG5pbXBvcnQgeyBCYWJ5bG9uU3RhdGljRm9vdGVyVjJJIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb3JlL2JhYnlsb24tc3RhdGljLWZvb3Rlci12Mi9iYWJ5bG9uLXN0YXRpYy1mb290ZXItdjIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJvb21TZXJ2aWNlVHlwZSB9IGZyb20gJy4uLy4uL0VudW0vc2VydmljZXMuZW51bSc7XG5pbXBvcnQgeyBWaWV3c1R5cGUgfSBmcm9tICcuLi8uLi9FbnVtL3ZpZXdzLmVudW0nO1xuaW1wb3J0IHtcbiAgICBCYWJ5bG9uQnV0dG9uSSxcbiAgICBCYWJ5bG9uQ29udGFjdEluZm9JLFxuICAgIEJhYnlsb25Ecm9wZG93bkksXG4gICAgQmFieWxvbkZsb2F0aW5nQnV0dG9uc0ksXG4gICAgQmFieWxvbkdsb2JhbEljb25JLFxuICAgIEJhYnlsb25JbWFnZUksXG4gICAgQmFieWxvbklucHV0SSxcbiAgICBCYWJ5bG9uTWVudUJ1dHRvbkksXG4gICAgQmFieWxvbk1lbnVJbmZvSSxcbiAgICBCYWJ5bG9uT2ZmZXJJdGVtSSxcbiAgICBCYWJ5bG9uUm9vbURldGFpbEksXG4gICAgQmFieWxvblRleHRJbmZvSSxcbiAgICBCb2R5Q29tcG9uZW50LFxuICAgIENPTVBPTkVOVFNfRVhUUkEsXG4gICAgQ29uc3VsdFR5cGVJLFxufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEJhYnlsb25BZHZhbnRhZ2VJdGVtSSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1hZHZhbnRhZ2VzLWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25EZXN0aW5hdGlvbkkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24tZGVzdGluYXRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25FdmVudEl0ZW1JIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWV2ZW50LWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25HbG9iYWxFeHBlcmllbmNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWdsb2JhbC1leHBlcmllbmNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWJ5bG9uR2xvYmFsIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWdsb2JhbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFieWxvbkdsb2JhbHNGYXFHcm91cCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1nbG9iYWxzLWZhcXMtZ3JvdXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25HbG9hYmxzR2FsbGVyeUZpbHRlciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1nbG9iYWxzLWdhbGxlcnktZmlsdGVycyc7XG5pbXBvcnQgeyBCYWJ5bG9uSG90ZWxHbG9iYWxJdGVtIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWhvdGVsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWJ5bG9uSXRlbUkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24taXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgY2xlYW5EZWVwIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xlYW4tcHJvcHMnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XG5pbXBvcnQgeyBTY3JlZW5TaXplclNlcnZpY2UgfSBmcm9tICcuLi9zY3JlZW4tc2l6ZXInO1xuaW1wb3J0IHtcbiAgICBCQUJZTE9OX01BUFBFUl9DT05GSUdfVE9LRU4sXG4gICAgU0lURV9DT05GSUdfU0VSVklDRV9UT0tFTixcbiAgICB0eXBlIEJhYnlsb25JbWFnZVRodW1ibmFpbFNpemUsXG59IGZyb20gJy4vbWFwcGVyLnNlcnZpY2UudG9rZW4nO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBNYXBwZXJTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNpdGVTdmMgPSBpbmplY3QoU0lURV9DT05GSUdfU0VSVklDRV9UT0tFTik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzY3JlZW5TaXplciA9IGluamVjdChTY3JlZW5TaXplclNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWFwcGVyQ29uZmlnID0gaW5qZWN0KEJBQllMT05fTUFQUEVSX0NPTkZJR19UT0tFTik7XG5cbiAgICBnZXQgaXNNaW5GdWxsVGFibGV0SW5zdGFudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NyZWVuU2l6ZXIubWluRnVsbFRhYmxldEluc3RhbnQoKTtcbiAgICB9XG5cbiAgICBoZWFkZXJCdXR0b25zID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgICBzaXRlSWQ6IFNpZ25hbDxudW1iZXI+ID0gY29tcHV0ZWQoXG4gICAgICAgICgpID0+IHRoaXMuc2l0ZVN2Yy53ZWJDb25maWdJbnN0YW50Py5zaXRlSURcbiAgICApO1xuXG4gICAgZmxvYXRpbmdCdXR0b25zPzogQmFieWxvbkZsb2F0aW5nQnV0dG9uc0k7XG5cbiAgICBwcml2YXRlIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcm9vbXNHcmlkTW9iaWxlVGh1bWJuYWlsU2l6ZTogQmFieWxvbkltYWdlVGh1bWJuYWlsU2l6ZSA9XG4gICAgICAgIHRoaXMubWFwcGVyQ29uZmlnLnJvb21zR3JpZE1vYmlsZVRodW1ibmFpbFNpemUgPz8gMzc1O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcm9vbXNHcmlkU21hbGxUYWJsZXRUaHVtYm5haWxTaXplOiBCYWJ5bG9uSW1hZ2VUaHVtYm5haWxTaXplID1cbiAgICAgICAgdGhpcy5tYXBwZXJDb25maWcucm9vbXNHcmlkU21hbGxUYWJsZXRUaHVtYm5haWxTaXplID8/IDU0MDtcblxuICAgIGdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgaW1hZ2U6IEltYWdlUmVzcG9uc2UgfCB1bmRlZmluZWQsXG4gICAgICAgIGlzRmlndXJlID0gdHJ1ZSxcbiAgICAgICAgbW9iaWxlVGh1bWJuYWlsU2l6ZTogQmFieWxvbkltYWdlVGh1bWJuYWlsU2l6ZSA9IDM3NSxcbiAgICAgICAgc21hbGxUYWJsZXRUaHVtYm5haWxTaXplOiBCYWJ5bG9uSW1hZ2VUaHVtYm5haWxTaXplID0gNTQwXG4gICAgKTogc3RyaW5nIHwgQmFieWxvbkltYWdlSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSW1hZ2UgPSB0aGlzLnBpY2tSZXNwb25zaXZlSW1hZ2UoaW1hZ2UsIHtcbiAgICAgICAgICAgIG1vYmlsZVRodW1ibmFpbFNpemUsXG4gICAgICAgICAgICBzbWFsbFRhYmxldFRodW1ibmFpbFNpemUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBzZWxlY3RlZEltYWdlXG4gICAgICAgICAgICA/IGlzRmlndXJlXG4gICAgICAgICAgICAgICAgPyBgJHt0aGlzLnNpdGVTdmMuY2RuSW1hZ2VzSW5zdGFudH0ke3NlbGVjdGVkSW1hZ2V9YFxuICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgIHNyYzogYCR7dGhpcy5zaXRlU3ZjLmNkbkltYWdlc0luc3RhbnR9JHtzZWxlY3RlZEltYWdlfWAsXG4gICAgICAgICAgICAgICAgICAgICAgYWx0OiBpbWFnZT8uYWx0LFxuICAgICAgICAgICAgICAgICAgICAgIG5kVGl0bGU6IGltYWdlPy5uZFRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWFnZT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGltYWdlPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1hZ2U/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWFnZT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpbWFnZT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaW1hZ2U/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaW1hZ2U/Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwaWNrUmVzcG9uc2l2ZUltYWdlKFxuICAgICAgICBpbWFnZTogSW1hZ2VSZXNwb25zZSB8IHVuZGVmaW5lZCxcbiAgICAgICAgc2l6ZXM6IHtcbiAgICAgICAgICAgIG1vYmlsZVRodW1ibmFpbFNpemU6IEJhYnlsb25JbWFnZVRodW1ibmFpbFNpemU7XG4gICAgICAgICAgICBzbWFsbFRhYmxldFRodW1ibmFpbFNpemU6IEJhYnlsb25JbWFnZVRodW1ibmFpbFNpemU7XG4gICAgICAgIH1cbiAgICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBwaWNrRmlyc3QgPSAoLi4udmFsdWVzOiBBcnJheTxzdHJpbmcgfCB1bmRlZmluZWQ+KSA9PlxuICAgICAgICAgICAgdmFsdWVzLmZpbmQoKHZhbHVlKSA9PiAhIXZhbHVlKTtcblxuICAgICAgICBjb25zdCBiYXNlQ2FuZGlkYXRlcyA9IFtcbiAgICAgICAgICAgIGltYWdlPy5wYXRoPy53ZWJwLFxuICAgICAgICAgICAgaW1hZ2U/LnBhdGg/Lm9yaWdpbmFsLFxuICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/LlsxMzY2XT8ud2VicCxcbiAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bMTM2Nl0/Lm9yaWdpbmFsLFxuICAgICAgICBdO1xuXG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHBpY2tGaXJzdCguLi5iYXNlQ2FuZGlkYXRlcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zY3JlZW5TaXplci5tb2JpbGUoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHBpY2tGaXJzdChcbiAgICAgICAgICAgICAgICBpbWFnZT8udGh1bWJuYWlscz8uW3NpemVzLm1vYmlsZVRodW1ibmFpbFNpemVdPy53ZWJwLFxuICAgICAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bc2l6ZXMubW9iaWxlVGh1bWJuYWlsU2l6ZV0/Lm9yaWdpbmFsLFxuICAgICAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bMzc1XT8ud2VicCxcbiAgICAgICAgICAgICAgICBpbWFnZT8udGh1bWJuYWlscz8uWzM3NV0/Lm9yaWdpbmFsLFxuICAgICAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bNTQwXT8ud2VicCxcbiAgICAgICAgICAgICAgICBpbWFnZT8udGh1bWJuYWlscz8uWzU0MF0/Lm9yaWdpbmFsLFxuICAgICAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bNzY4XT8ud2VicCxcbiAgICAgICAgICAgICAgICBpbWFnZT8udGh1bWJuYWlscz8uWzc2OF0/Lm9yaWdpbmFsLFxuICAgICAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bMTAyNF0/LndlYnAsXG4gICAgICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/LlsxMDI0XT8ub3JpZ2luYWwsXG4gICAgICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/LlsxMjgwXT8ud2VicCxcbiAgICAgICAgICAgICAgICBpbWFnZT8udGh1bWJuYWlscz8uWzEyODBdPy5vcmlnaW5hbCxcbiAgICAgICAgICAgICAgICAuLi5iYXNlQ2FuZGlkYXRlc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNjcmVlblNpemVyLmlzU21hbGxUYWJsZXRJbnN0YW50KCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwaWNrRmlyc3QoXG4gICAgICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/LltzaXplcy5zbWFsbFRhYmxldFRodW1ibmFpbFNpemVdPy53ZWJwLFxuICAgICAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bc2l6ZXMuc21hbGxUYWJsZXRUaHVtYm5haWxTaXplXT8ub3JpZ2luYWwsXG4gICAgICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/Lls1NDBdPy53ZWJwLFxuICAgICAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bNTQwXT8ub3JpZ2luYWwsXG4gICAgICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/Lls3NjhdPy53ZWJwLFxuICAgICAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bNzY4XT8ub3JpZ2luYWwsXG4gICAgICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/LlsxMDI0XT8ud2VicCxcbiAgICAgICAgICAgICAgICBpbWFnZT8udGh1bWJuYWlscz8uWzEwMjRdPy5vcmlnaW5hbCxcbiAgICAgICAgICAgICAgICBpbWFnZT8udGh1bWJuYWlscz8uWzEyODBdPy53ZWJwLFxuICAgICAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bMTI4MF0/Lm9yaWdpbmFsLFxuICAgICAgICAgICAgICAgIC4uLmJhc2VDYW5kaWRhdGVzXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2NyZWVuU2l6ZXIuaXNNZWRpdW1UYWJsZXRJbnN0YW50KCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwaWNrRmlyc3QoXG4gICAgICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/Lls3NjhdPy53ZWJwLFxuICAgICAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bNzY4XT8ub3JpZ2luYWwsXG4gICAgICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/LlsxMDI0XT8ud2VicCxcbiAgICAgICAgICAgICAgICBpbWFnZT8udGh1bWJuYWlscz8uWzEwMjRdPy5vcmlnaW5hbCxcbiAgICAgICAgICAgICAgICBpbWFnZT8udGh1bWJuYWlscz8uWzEyODBdPy53ZWJwLFxuICAgICAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bMTI4MF0/Lm9yaWdpbmFsLFxuICAgICAgICAgICAgICAgIC4uLmJhc2VDYW5kaWRhdGVzXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2NyZWVuU2l6ZXIuaXNGdWxsVGFibGV0SW5zdGFudCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGlja0ZpcnN0KFxuICAgICAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bMTAyNF0/LndlYnAsXG4gICAgICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/LlsxMDI0XT8ub3JpZ2luYWwsXG4gICAgICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/LlsxMjgwXT8ud2VicCxcbiAgICAgICAgICAgICAgICBpbWFnZT8udGh1bWJuYWlscz8uWzEyODBdPy5vcmlnaW5hbCxcbiAgICAgICAgICAgICAgICAuLi5iYXNlQ2FuZGlkYXRlc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNjcmVlblNpemVyLmlzU21hbGxEZXNrdG9wSW5zdGFudCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGlja0ZpcnN0KFxuICAgICAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bMTI4MF0/LndlYnAsXG4gICAgICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/LlsxMjgwXT8ub3JpZ2luYWwsXG4gICAgICAgICAgICAgICAgLi4uYmFzZUNhbmRpZGF0ZXNcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zY3JlZW5TaXplci5taW5NZWRpdW1EZXNrdG9wKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwaWNrRmlyc3QoXG4gICAgICAgICAgICAgICAgaW1hZ2U/LnBhdGg/LndlYnAsXG4gICAgICAgICAgICAgICAgaW1hZ2U/LnBhdGg/Lm9yaWdpbmFsLFxuICAgICAgICAgICAgICAgIC4uLmJhc2VDYW5kaWRhdGVzXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBpY2tGaXJzdCguLi5iYXNlQ2FuZGlkYXRlcyk7XG4gICAgfVxuXG4gICAgZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgIGltYWdlczogSW1hZ2VSZXNwb25zZVtdIHwgdW5kZWZpbmVkLFxuICAgICAgICBpc0ZpZ3VyZSA9IHRydWVcbiAgICApOiAoc3RyaW5nIHwgQmFieWxvbkltYWdlSSlbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBpbWFnZXM/Lm1hcCgoaW1nKSA9PiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcsIGlzRmlndXJlKSEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVBZ2VzT3B0aW9ucyhcbiAgICAgICAgbWF4TGVuZ3RoOiBudW1iZXIsXG4gICAgICAgIG1pbkxlbmd0aCA9IDBcbiAgICApOiBEcm9wZG93bk9wdGlvbltdIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uczogRHJvcGRvd25PcHRpb25bXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gbWluTGVuZ3RoOyBpIDw9IG1heExlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBvcHRpb25zLnB1c2goeyBjb2RlOiBpLCBuYW1lOiBpIDwgMTAgPyBgMCR7aX1gIDogYCR7aX1gIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QWdlVW5pdExhYmVsKHRleHRzOiBhbnkgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkaXJlY3RMYWJlbCA9XG4gICAgICAgICAgICB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubW90b3JBZ2VVbml0TGFiZWwpPy50cmltKCkgfHxcbiAgICAgICAgICAgIHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5tb3RvclllYXJzTGFiZWwpPy50cmltKCk7XG5cbiAgICAgICAgaWYgKGRpcmVjdExhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm4gZGlyZWN0TGFiZWw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmYWxsYmFja0xhYmVscyA9IFtcbiAgICAgICAgICAgIHRleHRzPy5tb3RvcktpZHNTbWFsbExhYmVsLFxuICAgICAgICAgICAgdGV4dHM/Lm1vdG9yQmFiaWVzU21hbGxUaXRsZSxcbiAgICAgICAgXTtcblxuICAgICAgICBmb3IgKGNvbnN0IGxhYmVsIG9mIGZhbGxiYWNrTGFiZWxzKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWRMYWJlbCA9IHRoaXMuZ2V0VGV4dFZhbHVlKGxhYmVsKT8udHJpbSgpO1xuXG4gICAgICAgICAgICBpZiAoIXBhcnNlZExhYmVsKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGxhYmVsV2l0aG91dFJhbmdlID0gcGFyc2VkTGFiZWxcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXlxccypcXGQrXFxzKi1cXHMqXFxkK1xccyovLCAnJylcbiAgICAgICAgICAgICAgICA/LnRyaW0oKTtcblxuICAgICAgICAgICAgaWYgKGxhYmVsV2l0aG91dFJhbmdlICYmIGxhYmVsV2l0aG91dFJhbmdlICE9PSBwYXJzZWRMYWJlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBsYWJlbFdpdGhvdXRSYW5nZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnYcOxb3MnO1xuICAgIH1cblxuICAgIG1hcEdsb2JhbHNCb2R5RXh0cmEocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IG5hbWVfSWRlbnRpZmllciA9XG4gICAgICAgICAgICB0eXBlb2YgcHJvcHMgPT0gJ3N0cmluZycgPyBwcm9wcyA6IHByb3BzPy5uYW1lSWRlbnRpZmllcjtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hbWVJZGVudGlmaWVyOiB0aGlzLmdldFRleHRWYWx1ZShuYW1lX0lkZW50aWZpZXIpLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcEJvZHlFeHRyYShcbiAgICAgICAgYm9keTogYW55W10gfCB1bmRlZmluZWRcbiAgICApOiBCb2R5Q29tcG9uZW50PENPTVBPTkVOVFNfRVhUUkE+W10gfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBib2R5TWFwcGVkOiBCb2R5Q29tcG9uZW50PENPTVBPTkVOVFNfRVhUUkE+W10gfCB1bmRlZmluZWQgPVxuICAgICAgICAgICAgYm9keT8ubWFwKChjb21wb25lbnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRNYXBwZWQ6IEJvZHlDb21wb25lbnQ8Q09NUE9ORU5UU19FWFRSQT4gPSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogY29tcG9uZW50Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczoge30sXG4gICAgICAgICAgICAgICAgfSBhcyBCb2R5Q29tcG9uZW50PENPTVBPTkVOVFNfRVhUUkE+O1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWVudSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFN1Ym1lbnUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIEJhYnlsb25TdWJtZW51STtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID0gJ21lbnUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hvdGVsdHlwZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdsb2JhbHNCb2R5RXh0cmEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIEJhYnlsb25HbG9iYWw7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9ICdob3RlbHR5cGUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hvdGVsY2F0ZWdvcnknOlxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHbG9iYWxzQm9keUV4dHJhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBCYWJ5bG9uR2xvYmFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPSAnaG90ZWxjYXRlZ29yeSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAndGlja2VyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR2xvYmFsc0JvZHlFeHRyYShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgQmFieWxvbkdsb2JhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID0gJ3RpY2tlcic7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcG9uZW50TWFwcGVkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBib2R5TWFwcGVkO1xuICAgIH1cblxuICAgIG1hcFN1Ym1lbnUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25TdWJtZW51SSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gcHJvcHM/Lml0ZW1zPy5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0uc2VsZWN0ZWQpO1xuICAgICAgICBjb25zdCBzdWJtZW51ID0ge1xuICAgICAgICAgICAgaG90ZWw6IHByb3BzPy5ob3RlbCxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaXRlbXNcbiAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLmFjdGl2ZSlcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxpbms/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsaW5rPy5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbms/LmxpbmtUeXBlID09PSAzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdjb21wb25lbnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxpbms/LmxpbmtUeXBlID09PSA0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2FuY2hvcl9zdWJtZW51J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdHlsZXM6IHByb3BzPy5zdHlsZXMsXG4gICAgICAgICAgICBzZWxlY3RlZDoge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBzZWxlY3RlZD8ubmFtZSxcbiAgICAgICAgICAgICAgICB1cmw6IHNlbGVjdGVkPy5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgc3R5bGVzOiBwcm9wcz8uc3R5bGVzLFxuICAgICAgICAgICAgfSBhcyBCYWJ5bG9uQnV0dG9uSSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uU3VibWVudUk7XG5cbiAgICAgICAgcmV0dXJuIHN1Ym1lbnU7XG4gICAgfVxuXG4gICAgbWFwQ29tcG9uZW50czxUPihcbiAgICAgICAgYm9keTogYW55W10sXG4gICAgICAgIGFkZG9ucz86IENvbXBvbmVudHNBZGRvbnNcbiAgICApOiBCb2R5Q29tcG9uZW50PFQ+W10ge1xuICAgICAgICBpZiAoIWJvZHkgfHwgIWJvZHkubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gW10gYXMgQm9keUNvbXBvbmVudDxUPltdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlYXJjaEhvdGVsU3R5bGVzID0gKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGJvZHk/LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLm5hbWUgPT09ICdzdHlsZXMnKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYm9keU1hcHBlZDogQm9keUNvbXBvbmVudDxUPltdID0gYm9keVxuICAgICAgICAgICAgPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGNvbXBvbmVudCkgPT4gY29tcG9uZW50ICE9PSBudWxsICYmIGNvbXBvbmVudCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICApXG4gICAgICAgICAgICA/Lm1hcCgoY29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50TWFwcGVkOiBCb2R5Q29tcG9uZW50PFQ+ID0ge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGNvbXBvbmVudC5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHt9LFxuICAgICAgICAgICAgICAgICAgICBhbGlhczogY29tcG9uZW50LmFsaWFzLFxuICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyOiBjb21wb25lbnQuaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yOiBjb21wb25lbnQudGV4dGNvbG9yLFxuICAgICAgICAgICAgICAgIH0gYXMgQm9keUNvbXBvbmVudDxUPjtcblxuICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnQucHJvcHMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy9JdCBpcyBuZWNlc3NhcnksIG90aGVyd2lzZSBpdCBnaXZlcyBhbiBlcnJvciBhbmQgZG9lcyBub3Qgc2hvdyBjb21wb25lbnRzXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbW9kdWxlNDA0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXA0MDQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLS0tLSBMQVlPVVQgQ09NUE9ORU5UUyAtLS0tLy9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0b3BzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRvcFNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RvcHNsaWRlcnZpZGVvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUb3BTbGlkZXJWaWRlbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndG9wc2xpZGVydjJsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0b3BzbGlkZXJ2MnJpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUb3BTbGlkZXJWMihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PSAndG9wc2xpZGVydjJyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW1nJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW1ncmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbWdsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvSW1nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPT09ICdpbmZvaW1ncmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnRleHRjb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5pZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2ltZ3NsaWRlcnJpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW1nc2xpZGVybGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0ltZ1NsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbmZvaW1nc2xpZGVycmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW50cm8nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9JbnRybyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm8yaW1nbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbzJpbWdyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mbzJpbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9PT0gJ2luZm8yaW1ncmlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbzJjb2xpbWdyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mbzJjb2xpbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9PT0gJ2luZm8yY29saW1ncmlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbzJjb2xpbWdsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvMmNvbGltZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PSAnaW5mbzJjb2xpbWdsZWZ0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm8zaW1nJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvSW1nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQudGV4dGNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvemlnemFnbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ppZ3phZ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBaaWd6YWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9PT0gJ2luZm96aWd6YWdyaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9ncmlkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvR3JpZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjJjb2xsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIyY29scmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNsaWRlckNvbGwyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPT09ICdzbGlkZXIyY29scmlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyM2NvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyQ29sbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5pZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyNGNvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyQ29sbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5pZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaXRlbXNncmlkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJdGVtc0dyaWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyb29tc3NsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUm9vbXNTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyb29tc2dyaWQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFJvb21zR3JpZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jhbm5lcmdhbGxlcnknOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lckdhbGxlcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkZ2FsbGVyeSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZEdhbGxlcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiYW5uZXJuZXdzbGV0dGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwQmFubmVyTmV3c2xldHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb2ZmZXJzc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlclNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLS0tLSBMQVlPVVQgQ09NUE9ORU5UUyBFTkQtLS0tLy9cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RoYW5rcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwVGhhbmtzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb250YWN0Zm9ybSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29udGFjdGZvcm12Mic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQ29udGFjdEZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRvbnM/LmNvbnRhY3RPZmZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRvbnM/LmNvbnN1bHRUeXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb250YWN0aG93JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBDb250YWN0SG93KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd3ZWJtYXAnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFdlYm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29udGFjdG1hcCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQ29udGFjdE1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGVnYWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcExlZ2FsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyb29tc2NvbHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFJvb21zQ29scyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncm9vbWRldGFpbHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFJvb21EZXRhaWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RvcHNsaWRlcnRodW1icyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwVG9wU2xpZGVyVGh1bWJzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmZWF0dXJlc3NsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRmVhdHVyZXNTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jhbm5lcmluZm8nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lckluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Jvb21zbGlzdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUm9vbXNMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb21pbmdzb29uJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBDb21pbmdTb29uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcmRldGFpbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJEZXRhaWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyc2xpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE9mZmVyc0xpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaXNIb21lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmYXEnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZhcShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3RhdGljZm9vdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTdGF0aWNGb290ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dhbGxlcnknOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dhbGxlcnl2Mic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzYzJpbWd2aWQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JhYnlsb25saXNjMmltZ3ZpZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR2FsbGVyeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbmF2JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBNZW51KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkb25zPy5tZW51U29jaWFsTWVkaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xhbmd1YWdlc21vZGFsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsYW5ndWFnZXNtb2RhdjInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcExhbmd1YWdlTW9kYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjNpdGVtcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM0l0ZW1zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hvdGVsc3NsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSG90ZWxzU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdob3RlbHNsaXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBIb3RlbHNMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvNGltZyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mbzRJbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NlcnZpY2Vzc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTZXJ2aWNlc1NsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xvY2F0aW9uYWRkcmVzcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29udGFjdGFkZHJlc3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENvbnRhY3RBZGRyZXNzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhZHZhbnRhZ2VzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBBZHZhbnRhZ2VzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvYmlnJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvQmlnKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvemlnemFndjJsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvWmlnWmFnVjIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ppZ3phZ3YycmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9aaWdaYWdWMihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5pZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJjb250YWN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJDb250YWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmltZ2JpZyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mbzJJbWdCaWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3RlcmxpbmtzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJMaW5rcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVybG9nb3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckxvZ29zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcnNsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3RlcnNvY2lhbHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlclNvY2lhbHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjJpdGVtcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyMml0ZW1zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzdGF0aWNmb290ZXJ2Mic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU3RhdGljRm9vdGVydjIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RncmlkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXN0R3JpZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbmV3c2xldHRlcm1vZGFsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBOZXdzbGV0dGVyTW9kYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hlYWRpbnRybyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSGVhZEludHJvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdicmVhZGNydW1icyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQnJlYWRjcnVtYnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcmJhbm5lcnYyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlckJhbm5lclYyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ2xvYmFsbW9kYWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dsb2JhbG1vZGFsMic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR2xvYmFsTW9kYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtZW51JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlYXJjaEhvdGVsU3R5bGVzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1snc3R5bGVzJ10gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEhvdGVsU3R5bGVzKClbMF0/LnByb3BzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU3VibWVudShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NwYWxvcGlhJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBFeHRlcm5hbFNjcmlwdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2lmcmFtZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSWZyYW1lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmxvZ2xpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJsb2dMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmxvZ2RldGFpbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQmxvZ0RldGFpbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyYmFubmVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlckJhbm5lcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21vZGFsbXVsdGlwbGVtb3RvcnMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBNb2RhbE11bHRpcGxlTW90b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtb2RhbHBvcHVwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBNb2RhbFBvcHVwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwcmVzc2xpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFByZXNzTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYWN0aW9uYmFubmVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBBY3Rpb25CYW5uZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ppZ3phZ2NvdW50ZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBJbmZvWmlnWmFnQ291bnRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ3JjMmltZyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JDMkltZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc2M0dHh0aWNvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXNDNFR4dEljbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21hcGxpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE1hcExpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hpc3RvcnknOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEhpc3RvcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR2xvYmFscyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8uY29udGFjdE9mZmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8uY29uc3VsdFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudE1hcHBlZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYm9keU1hcHBlZDtcbiAgICB9XG5cbiAgICBtYXBHbG9iYWxzKFxuICAgICAgICBjb21wb25lbnQ6IGFueSxcbiAgICAgICAgbmRQcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBuZFByb3BzQ29uc3VsdDogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogYW55IHtcbiAgICAgICAgaWYgKCFjb21wb25lbnQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGxldCB7IHByb3BzIH0gPSBjb21wb25lbnQ7XG4gICAgICAgIHByb3BzID0gcHJvcHMgPz8gY29tcG9uZW50O1xuXG4gICAgICAgIGNvbnN0IHZpZXdzID0gKGNvbXBvbmVudD8udmlld3MgYXMgQ29tcG9uZW50Vmlld1tdIHwgdW5kZWZpbmVkKT8uZmlsdGVyKFxuICAgICAgICAgICAgKHYpID0+ICEhdlxuICAgICAgICApO1xuXG4gICAgICAgIGxldCByaWdodFNpZGU6IGJvb2xlYW47XG4gICAgICAgIGxldCBsZWZ0U2lkZTogYm9vbGVhbjtcbiAgICAgICAgbGV0IGN1cnJlbnRWaWV3OiBudW1iZXIgPSAwO1xuICAgICAgICBsZXQgaWNvbnNMaWtlSW1hZ2VzID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHZpZXdzICYmIHZpZXdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZVZpZXcgPSB2aWV3cy5maW5kKCh2KSA9PiB2LmRlZmF1bHQpID8/IHZpZXdzWzBdO1xuXG4gICAgICAgICAgICByaWdodFNpZGUgPSBhY3RpdmVWaWV3Py5uYW1lID09PSBWaWV3c1R5cGUuUklHSFQ7XG4gICAgICAgICAgICBsZWZ0U2lkZSA9IGFjdGl2ZVZpZXc/Lm5hbWUgPT09IFZpZXdzVHlwZS5MRUZUO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKGFjdGl2ZVZpZXc/Lm5hbWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFZpZXdzVHlwZS5WSUVXMTpcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFZpZXcgPSAxO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFZpZXdzVHlwZS5WSUVXMjpcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFZpZXcgPSAyO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFZpZXdzVHlwZS5WSUVXMzpcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFZpZXcgPSAzO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWaWV3ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyDwn5SlIEZhbGxiYWNrIGN1YW5kbyB2aWV3cyBlcyB1bmRlZmluZWQgbyB2YWPDrW9cbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBjb21wb25lbnQ/Lm5hbWU/LnRvTG93ZXJDYXNlKCkgPz8gJyc7XG5cbiAgICAgICAgICAgIHJpZ2h0U2lkZSA9XG4gICAgICAgICAgICAgICAgbmFtZS5pbmNsdWRlcygncmlnaHQnKSB8fCBwcm9wcz8udGV4dHM/LnJpZ2h0ID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICAgICAgbGVmdFNpZGUgPVxuICAgICAgICAgICAgICAgIG5hbWUuaW5jbHVkZXMoJ2xlZnQnKSB8fCBwcm9wcz8udGV4dHM/LmxlZnQgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRGV0ZWN0IGJhY2tncm91bmRJY29uIChpY29ubyBjb21vIGJhY2tncm91bmQtaW1hZ2UgQ1NTKVxuICAgICAgICBpY29uc0xpa2VJbWFnZXMgPSBwcm9wcz8uaWNvbnNsaWtlaW1hZ2VzID8gdHJ1ZSA6IGZhbHNlO1xuXG4gICAgICAgIGxldCBzaG93RmlsdGVyczogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICBpZiAocHJvcHM/LnRleHRzPy5maWx0ZXJzKSBzaG93RmlsdGVycyA9IHRydWU7XG5cbiAgICAgICAgbGV0IGhpZGVTZXJ2aWNlc0ZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICBpZiAocHJvcHM/LnRleHRzPy5oaWRlU2VydmljZXNGaWx0ZXIpIGhpZGVTZXJ2aWNlc0ZpbHRlciA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgZ2V0TGlua3NBcnJheSA9IChsaW5rc09iajogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWxpbmtzT2JqKSByZXR1cm4gW107XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShsaW5rc09iaikpIHJldHVybiBsaW5rc09iajtcblxuICAgICAgICAgICAgLy8gU2kgZXMgdW4gb2JqZXRvLCBleHRyYWUgc3VzIHZhbG9yZXMgeSBmaWx0cmEgbG9zIHF1ZSB0ZW5nYW4gbGlua1ZhbHVlIChwYXJhIGV2aXRhciBjb2dlciBmb290ZXJMaW5rcyBwb3IgYWNjaWRlbnRlKVxuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMobGlua3NPYmopLmZpbHRlcihcbiAgICAgICAgICAgICAgICAodmFsOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgIHZhbCAmJlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgICAgICAgICAoJ2xpbmtWYWx1ZScgaW4gdmFsIHx8ICdsaW5rX3ZhbHVlJyBpbiB2YWwpXG4gICAgICAgICAgICApO1xuICAgICAgICB9O1xuXG4gICAgICAgIGxldCBoYXNCYWNrZ3JvdW5kOiBib29sZWFuID0gZmFsc2U7XG4gICAgICAgIGhhc0JhY2tncm91bmQgPSAhIShwcm9wcz8udGV4dHM/LmJhY2tncm91bmQgfHwgcHJvcHM/LnRleHRzPy5mb25kbyk7XG5cbiAgICAgICAgbGV0IG1heENvbHVtbnM6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgbWF4Q29sdW1ucyA9XG4gICAgICAgICAgICBOdW1iZXIocHJvcHM/LnRleHRzPy5tYXhjb2x1bW5zID8/IHByb3BzPy50ZXh0cz8ubWF4Q29sdW1ucykgfHxcbiAgICAgICAgICAgIHVuZGVmaW5lZDtcblxuICAgICAgICBsZXQgcmVzdWx0OiBhbnk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICAgICAgaWRlbnRpZmllcjogY29tcG9uZW50Py5pZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgIGhhc0JhY2tncm91bmQ6IGhhc0JhY2tncm91bmQsXG4gICAgICAgICAgICAgICAgYWN0aXZlVmlldzogY3VycmVudFZpZXcsXG4gICAgICAgICAgICAgICAgc2hvd0ZpbHRlcnM6IHNob3dGaWx0ZXJzLFxuICAgICAgICAgICAgICAgIGhpZGVTZXJ2aWNlc0ZpbHRlcjogaGlkZVNlcnZpY2VzRmlsdGVyLFxuICAgICAgICAgICAgICAgIG1heENvbHVtbnM6IG1heENvbHVtbnMsXG4gICAgICAgICAgICAgICAgYm9keWV4dHJhOiB0aGlzLm1hcEdsb2JhbHNCb2R5RXh0cmEocHJvcHMpLFxuICAgICAgICAgICAgICAgIHRleHRzOiB0aGlzLm1hcEdsb2JhbFRleHRzKHByb3BzPy50ZXh0cykgYXMgQmFieWxvblRleHRJbmZvSSxcbiAgICAgICAgICAgICAgICB2aWRlbzogcHJvcHMudmlkZW8gPz8gcHJvcHMuVmlkZW8gPz8gcHJvcHMudGV4dHM/LnZpZGVvLFxuICAgICAgICAgICAgICAgIGljb25zTGlrZUltYWdlczogcHJvcHM/Lmljb25zTGlrZUltYWdlcyA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICByaWdodFNpZGU6IHJpZ2h0U2lkZSxcbiAgICAgICAgICAgICAgICBsZWZ0U2lkZTogbGVmdFNpZGUsXG4gICAgICAgICAgICAgICAgaXRlbXM6IHRoaXMubWFwR2xvYmFsSXRlbXMocHJvcHMpLFxuICAgICAgICAgICAgICAgIGxpc3RzOiB0aGlzLm1hcEdsb2JhbHNGYXFzKHByb3BzPy5GYXFzKSxcbiAgICAgICAgICAgICAgICBzZXJ2aWNlczogdGhpcy5tYXBHbG9iYWxTZXJ2aWNlcyhcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnNlcnZpY2VzU2VydmljZSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmVxdWlwbWVudCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnNlcnZpY2VzU2VydmljZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZXZlbnRzOiB0aGlzLm1hcEV2ZW50c0dsb2JhbChwcm9wcz8uZXZlbnRzID8/IHByb3BzPy5ldmVudCksXG4gICAgICAgICAgICAgICAgb2ZmZXJzOiB0aGlzLm1hcE9mZmVyc0dsb2JhbChwcm9wcz8ub2ZmZXJzKSxcbiAgICAgICAgICAgICAgICBvZmZlcjogdGhpcy5tYXBPZmZlckRldGFpbChwcm9wcyksXG4gICAgICAgICAgICAgICAgbXVsdGltZWRpYTogdGhpcy5tYXBJbWFnZXMocHJvcHM/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHRoaXMubWFwQWRkcmVzcyhwcm9wcz8uYWRkcmVzcyksXG4gICAgICAgICAgICAgICAgYWRkcmVzc0hvdGVsczogdGhpcy5tYXBHbG9iYWxBZGRyZXNzSG90ZWxzKHByb3BzKSxcbiAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgZ2V0TGlua3NBcnJheShwcm9wcz8ubGlua3MpLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0TGlua3NBcnJheShwcm9wcz8ubGlua3MpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy5saW5rcz8uTGlua3M/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy5saW5rcz8uTGlua3M/LlswXVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy5saW5rcz8uY29udGFjdD8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjb250YWN0bGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5jb250YWN0Py5bMF0pLFxuICAgICAgICAgICAgICAgIGZvb3RlckxpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uZm9vdGVyTGlua3M/LlswXSksXG4gICAgICAgICAgICAgICAgcGFnZXM6IChcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnBhZ2VzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxpbms/LnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICAgICAgICAgKSBhcyBCYWJ5bG9uQnV0dG9uSVtdXG4gICAgICAgICAgICAgICAgKT8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAobGluaykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsudXJsPy5zcGxpdD8uKCcvJylbMV0gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmxvY2F0ZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuLmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGFkdmFudGFnZXM6IHRoaXMubWFwQWR2YW50YWdlc0dsb2JhbChcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LlZlbnRhamFzID8/XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8uQWR2YW50YWdlcyA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lmxpc3QgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5saXN0cyA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lkxpc3RzID8/XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8uTGlzdFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNlZU1vcmU6IHByb3BzPy50ZXh0cz8uYWR2YW50YWdlc3NlZW1vcmUsXG4gICAgICAgICAgICAgICAgc2VlTGVzczogcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2Vzc2VlbGVzcyxcbiAgICAgICAgICAgICAgICBpbWFnZTogcHJvcHMuYWR2YW50YWdlc2ltYWdlXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5hZHZhbnRhZ2VzaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcm9vbXM6IHRoaXMubWFwUm9vbURldGFpbHMoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5yb29tcyA/PyBwcm9wcz8ucm9vbSxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjb250YWN0SW5mbzogdGhpcy5tYXBDb250YWN0SW5mbyhwcm9wcz8udGV4dHMpLFxuICAgICAgICAgICAgICAgIHNvY2lhbE1lZGlhOiBwcm9wcz8uc29jaWFsTWVkaWE/Lm1hcCgoc206IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogc20/Lmljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBzbT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogc20/LnVybCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBob3RlbHM6IHRoaXMubWFwSG90ZWxzR2xvYmFsKHByb3BzPy5ob3RlbHMpLFxuICAgICAgICAgICAgICAgIGhvdGVsOiB0aGlzLm1hcEhvdGVsR2xvYmFsKHByb3BzPy5ob3RlbCA/PyBwcm9wcz8uaG90ZWxzPy5bMF0pLFxuICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uczogdGhpcy5tYXBHbG9iYWxEZXN0aW5hdGlvbnMocHJvcHM/LmRlc3RpbmF0aW9ucyksXG4gICAgICAgICAgICAgICAgZXhwZXJpZW5jZXM6IHRoaXMubWFwR2xvYmFsRXhwZXJpZW5jZXMoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5leHBlcmllbmNlID8/IHByb3BzPy5leHBlcmllbmNlc1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgY29uc3VsdFR5cGVzOiB0aGlzLm1hcEdsb2JhbENvbnN1bHRUeXBlcyhwcm9wcywgbmRQcm9wc0NvbnN1bHQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcnM6IHRoaXMubWFwR2xvYmFsc0ZpbHRlcnMocHJvcHM/LmZpbHRlcnMpLFxuICAgICAgICAgICAgICAgIGV4dHJhQ2xhc3M6IHByb3BzPy50ZXh0cz8uZXh0cmFDbGFzcyxcbiAgICAgICAgICAgIH0gYXMgQmFieWxvbkdsb2JhbDtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0VSUk9SIEZBVEFMIENSRUFORE8gUkVTVUxUIEVOIG1hcEdsb2JhbHM6JywgZXJyb3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW1wcmltZSB0YW50byBlbiBzZXJ2aWRvciAodGVybWluYWwpIGNvbW8gZW4gY2xpZW50ZSAobmF2ZWdhZG9yIHNpIGV4aXN0ZSB3aW5kb3cpXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnbWFwcGVyJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICBjb21wb25lbnQubmFtZSxcbiAgICAgICAgICAgICAgICBjbGVhbkRlZXAocmVzdWx0LCB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZU51bGw6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUVtcHR5U3RyaW5nOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBwcnVuZUVtcHR5OiB0cnVlLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNsZWFuRGVlcChyZXN1bHQsIHtcbiAgICAgICAgICAgIHJlbW92ZU51bGw6IHRydWUsXG4gICAgICAgICAgICByZW1vdmVFbXB0eVN0cmluZzogdHJ1ZSxcbiAgICAgICAgICAgIHBydW5lRW1wdHk6IHRydWUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG1hcEdsb2JhbEFkZHJlc3NIb3RlbHMocHJvcHM6IGFueSk6IEJhYnlsb25BZGRyZXNzSXRlbVtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgLy8gMS4gSW50ZW50YW1vcyBvYnRlbmVyIGxhIGZ1ZW50ZSBkZSBkYXRvcyAoY29udGVtcGxhbW9zIGFtYm9zIG5vbWJyZXMgZGUgcHJvcGllZGFkKVxuICAgICAgICBjb25zdCByYXdTb3VyY2UgPVxuICAgICAgICAgICAgcHJvcHM/LmhvdGVsQWRkcmVzc2VzID8/IHByb3BzPy5hZGRyZXNzSG90ZWxzID8/IHByb3BzPy5hZGRyZXNzO1xuXG4gICAgICAgIGlmIChyYXdTb3VyY2UpIHtcbiAgICAgICAgICAgIC8vIEFwbGFuYW1vcyBlbCBhcnJheSBzaW4gaW1wb3J0YXIgbGEgcHJvZnVuZGlkYWQgW1t7Li4ufV1dIC0+IFt7Li4ufV1cbiAgICAgICAgICAgIGNvbnN0IGZsYXRBZGRyZXNzZXMgPSBBcnJheS5pc0FycmF5KHJhd1NvdXJjZSlcbiAgICAgICAgICAgICAgICA/IHJhd1NvdXJjZS5mbGF0KEluZmluaXR5KVxuICAgICAgICAgICAgICAgIDogW3Jhd1NvdXJjZV07XG5cbiAgICAgICAgICAgIC8vIEZpbHRyYW1vcyBwYXJhIGFzZWd1cmFyIHF1ZSBzb2xvIHByb2Nlc2Ftb3Mgb2JqZXRvcyB2w6FsaWRvc1xuICAgICAgICAgICAgY29uc3QgdmFsaWRBZGRyZXNzZXMgPSBmbGF0QWRkcmVzc2VzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoYWRkcmVzczogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICBhZGRyZXNzICYmXG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBhZGRyZXNzID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgICAgICAgICAhQXJyYXkuaXNBcnJheShhZGRyZXNzKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKHZhbGlkQWRkcmVzc2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsaWRBZGRyZXNzZXMubWFwKFxuICAgICAgICAgICAgICAgICAgICAoYWRkcmVzczogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogYWRkcmVzcy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBhZGRyZXNzLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogYWRkcmVzcy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5OiBhZGRyZXNzLmNhdGVnb3J5TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaXR5OiBhZGRyZXNzLmNpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmluY2U6IGFkZHJlc3MucHJvdmluY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeTogYWRkcmVzcy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwOiBhZGRyZXNzLmNwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcExpbms6IGFkZHJlc3MubWFwTGluayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGFkZHJlc3MubGluayA/PyBhZGRyZXNzLnVybCwgLy8gU29wb3J0ZSBwYXJhIGFtYm9zIG5vbWJyZXMgZGUgbGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBob25lOiBhZGRyZXNzLnBob25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsOiBhZGRyZXNzLmVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxfYWRkcmVzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcy5mdWxsQWRkcmVzcyA/PyBhZGRyZXNzLmZ1bGxfYWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnczogYWRkcmVzcy5zbHVncyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25BZGRyZXNzSXRlbVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyAyLiBDYXNvIEZhbGxiYWNrOiBNYXBlbyBkaW7DoW1pY28gZGVzZGUgbG9zIHRleHRvcyAoYWRkcmVzc2xpc3RYWClcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwRHluYW1pY0FkZHJlc3Nlc0Zyb21UZXh0cyhwcm9wcz8udGV4dHMpO1xuICAgIH1cblxuICAgIC8qKiBIZWxwZXIgcGFyYSBsaW1waWFyIGVsIGPDs2RpZ28gcHJpbmNpcGFsICovXG4gICAgcHJpdmF0ZSBtYXBEeW5hbWljQWRkcmVzc2VzRnJvbVRleHRzKFxuICAgICAgICB0ZXh0czogYW55XG4gICAgKTogQmFieWxvbkFkZHJlc3NJdGVtW10gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXRleHRzKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIGNvbnN0IGFkZHJlc3Nlc01hcDogeyBba2V5OiBzdHJpbmddOiBQYXJ0aWFsPEJhYnlsb25BZGRyZXNzSXRlbT4gfSA9IHt9O1xuXG4gICAgICAgIE9iamVjdC5rZXlzKHRleHRzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aCgnYWRkcmVzc2xpc3QnKSAmJiB0ZXh0c1trZXldKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBrZXkubWF0Y2goL2FkZHJlc3NsaXN0KFxcZCspKC4qKS8pO1xuICAgICAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IG1hdGNoWzFdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IG1hdGNoWzJdO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghYWRkcmVzc2VzTWFwW2luZGV4XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzTWFwW2luZGV4XSA9IHsgaWQ6IGluZGV4IH07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRleHRzW2tleV07XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1RpdGxlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZXNNYXBbaW5kZXhdLm5hbWUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0FkZHJlc3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3Nlc01hcFtpbmRleF0uYWRkcmVzcyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3Nlc01hcFtpbmRleF0uZnVsbF9hZGRyZXNzID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdUZWxmJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZXNNYXBbaW5kZXhdLnBob25lID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdFbWFpbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzTWFwW2luZGV4XS5lbWFpbCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBPYmplY3QudmFsdWVzKGFkZHJlc3Nlc01hcCkgYXMgQmFieWxvbkFkZHJlc3NJdGVtW107XG4gICAgICAgIHJldHVybiByZXN1bHQubGVuZ3RoID4gMCA/IHJlc3VsdCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBHbG9iYWxFeHBlcmllbmNlcyhcbiAgICAgICAgZXhwZXJpZW5jZXM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25HbG9iYWxFeHBlcmllbmNlW10ge1xuICAgICAgICByZXR1cm4gZXhwZXJpZW5jZXNcbiAgICAgICAgICAgID8uZmlsdGVyKChleHBlcmllbmNlOiBhbnkpID0+IGV4cGVyaWVuY2UuYWN0aXZlKVxuICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgKGV4cGVyaWVuY2U6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogZXhwZXJpZW5jZS5hY3RpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhOiB0aGlzLm1hcE11bHRpbWVkaWEoZXhwZXJpZW5jZT8ubXVsdGltZWRpYSksXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhMjogdGhpcy5tYXBJbWFnZXMoZXhwZXJpZW5jZT8ubXVsdGltZWRpYSksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlcmllbmNlPy5saW5rID8/IGV4cGVyaWVuY2U/LmxpbmtzXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhleHBlcmllbmNlPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBleHBlcmllbmNlPy5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzOiB0aGlzLm1hcEdsb2JhbFRleHRzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVyaWVuY2U/LnRleHRzXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIEJhYnlsb25UZXh0SW5mb0ksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogZXhwZXJpZW5jZT8uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lSWRlbnRpZmllcjogZXhwZXJpZW5jZT8ubmFtZUlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGV4cGVyaWVuY2U/LnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGV4cGVyaWVuY2U/LnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3RlbHM6IGV4cGVyaWVuY2U/LmhvdGVscz8ubWFwKChob3RlbDogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBob3RlbD8uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZUlkZW50aWZpZXI6IGhvdGVsPy5uYW1lSWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkhvdGVsR2xvYmFsSXRlbVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBtYXBHbG9iYWxzRmlsdGVycyhcbiAgICAgICAgZmlsdGVyczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkdsb2FibHNHYWxsZXJ5RmlsdGVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZpbHRlcnM6IGZpbHRlcnM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsOiBpdGVtLmFsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb206IGl0ZW0ucm9vbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb21zOiBpdGVtLnJvb21zLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uR2FsbGVyeUZpbHRlclxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltYWdlczogZmlsdGVyc1xuICAgICAgICAgICAgICAgID8ucmVkdWNlKFxuICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICBhY2M6IHsgbXVsdGltZWRpYTogYW55W107IGZpbHRlckluZGV4OiBudW1iZXIgfVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBhbnksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJJbmRleDogbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlci5tdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXVsdGltZWRpYVdpdGhGaWx0ZXIgPSBmaWx0ZXIubXVsdGltZWRpYS5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBmaWx0ZXJJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYTogbXVsdGltZWRpYVdpdGhGaWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmZsYXRNYXAoKHsgbXVsdGltZWRpYSB9OiBhbnkpID0+IG11bHRpbWVkaWEpXG4gICAgICAgICAgICAgICAgLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGltZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBpbWc/LmZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb1VybDogaW1nLnZpZGVvVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkdhbGxlcnlJdGVtXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uR2xvYWJsc0dhbGxlcnlGaWx0ZXI7XG4gICAgfVxuXG4gICAgbWFwR2xvYmFsQ29uc3VsdFR5cGVzKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBuZFByb3BzQ29uc3VsdDogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogYW55IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgY29uc3VsdFR5cGVzID0gcHJvcHM/LmNvbnN1bHRUeXBlcz8uWzBdPy5jb25zdWx0VHlwZUlkXG4gICAgICAgICAgICA/IHByb3BzPy5jb25zdWx0VHlwZXNcbiAgICAgICAgICAgIDogcHJvcHM/Lmxlbmd0aCAmJiBwcm9wcz8uWzBdPy5jb25zdWx0VHlwZXNcbiAgICAgICAgICAgICAgPyBwcm9wc1xuICAgICAgICAgICAgICA6IG5kUHJvcHNDb25zdWx0O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgb3B0aW9uczogY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bHRUeXBlSWQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcC5jb25zdWx0X3R5cGVfaWQgPz8gcHJvcC5jb25zdWx0VHlwZUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogcHJvcC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByb3AubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5kcm9wZG93blBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JSZXF1aXJlZCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBHbG9iYWxEZXN0aW5hdGlvbnMoXG4gICAgICAgIGRlc3RpbmF0aW9uczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkRlc3RpbmF0aW9uSVtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFkZXN0aW5hdGlvbnMpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgICAgY29uc3Qgbm9ybWFsaXplRGVzdGluYXRpb24gPSAoXG4gICAgICAgICAgICBkOiBhbnksXG4gICAgICAgICAgICBpbmRleDogbnVtYmVyXG4gICAgICAgICk6IEJhYnlsb25EZXN0aW5hdGlvbkkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBkID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogZCxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFtdLFxuICAgICAgICAgICAgICAgICAgICBob3RlbHM6IFtdLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0czoge30sXG4gICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uRGVzdGluYXRpb25JO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGlkOiBkPy5pZCA/PyBpbmRleCxcbiAgICAgICAgICAgICAgICBuYW1lOiBkPy5uYW1lID8/IGQ/LnRpdGxlID8/ICcnLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoZD8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoZD8ubGlua3MpLFxuICAgICAgICAgICAgICAgIG11bHRpbWVkaWE6IHRoaXMubWFwSW1hZ2VzKGQ/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgICAgIGhvdGVsczogdGhpcy5tYXBIb3RlbHNHbG9iYWwoZD8uaG90ZWxzKSxcbiAgICAgICAgICAgICAgICB0ZXh0czogZD8udGV4dHNcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLm1hcEdsb2JhbFRleHRzKGQ/LnRleHRzKVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMubWFwR2xvYmFsVGV4dHMoZCksXG4gICAgICAgICAgICB9IGFzIEJhYnlsb25EZXN0aW5hdGlvbkk7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGVzdGluYXRpb25zKSkge1xuICAgICAgICAgICAgY29uc3QgbG9va3NMaWtlRmxhdExpc3QgPSBkZXN0aW5hdGlvbnMuZXZlcnkoXG4gICAgICAgICAgICAgICAgKHgpID0+XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiB4ID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgICAgICAgICAgICAoeCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKHguaWQgIT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgubmFtZSAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeC50aXRsZSAhPT0gdW5kZWZpbmVkKSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChsb29rc0xpa2VGbGF0TGlzdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbnMubWFwKG5vcm1hbGl6ZURlc3RpbmF0aW9uKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdG9MaXN0ID0gKGdyb3VwOiBhbnkpOiBhbnlbXSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZ3JvdXApKSByZXR1cm4gZ3JvdXA7XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZ3JvdXA/Lml0ZW1zKSkgcmV0dXJuIGdyb3VwLml0ZW1zO1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGdyb3VwPy5kZXN0aW5hdGlvbnMpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ3JvdXAuZGVzdGluYXRpb25zO1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbnMuZmxhdE1hcCgoZ3JvdXA6IGFueSkgPT5cbiAgICAgICAgICAgICAgICB0b0xpc3QoZ3JvdXApLm1hcChub3JtYWxpemVEZXN0aW5hdGlvbilcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkZXN0aW5hdGlvbnM/Lml0ZW1zKSlcbiAgICAgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbnMuaXRlbXMubWFwKG5vcm1hbGl6ZURlc3RpbmF0aW9uKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGVzdGluYXRpb25zPy5kZXN0aW5hdGlvbnMpKVxuICAgICAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9ucy5kZXN0aW5hdGlvbnMubWFwKG5vcm1hbGl6ZURlc3RpbmF0aW9uKTtcblxuICAgICAgICByZXR1cm4gW25vcm1hbGl6ZURlc3RpbmF0aW9uKGRlc3RpbmF0aW9ucywgMCldO1xuICAgIH1cblxuICAgIG1hcEdsb2JhbFRleHRzKHRleHRzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uVGV4dEluZm9JIHtcbiAgICAgICAgaWYgKCF0ZXh0cykgcmV0dXJuIHt9IGFzIEJhYnlsb25UZXh0SW5mb0k7XG5cbiAgICAgICAgY29uc3QgbG95YWx0eVRhYmxlVGV4dHMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyh0ZXh0cylcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChba2V5XSkgPT5cbiAgICAgICAgICAgICAgICAgICAgL150YWJsYWZpZGVsaXphY2luXyh0aXR1bG98ZGVzY3JpcGNpb258c3VidGl0dWxvfHRleHRvKVxcZCskLy50ZXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBba2V5LCB0aGlzLmdldFRleHRWYWx1ZSh2YWx1ZSldKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIEHDsWFkaXIgZGluw6FtaWNhbWVudGUgbGFzIGhlYWRpbmdfdGFnX3trZXl9IGRldGVjdGFkYXNcbiAgICAgICAgY29uc3QgaGVhZGluZ1RhZ3MgPSB0aGlzLmV4dHJhY3RIZWFkaW5nVGFncyh0ZXh0cyk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ucHJldGl0bGUgPz8gdGV4dHM/LlByZXRpdHVsbyksXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnRpdGxlID8/IHRleHRzPy5UaXR1bG8pLFxuICAgICAgICAgICAgdGl0bGUxOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udGl0bGUxKSxcbiAgICAgICAgICAgIHRpdGxlMjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnRpdGxlMiksXG4gICAgICAgICAgICB0aXRsZTM6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy50aXRsZTMpLFxuICAgICAgICAgICAgc3VidGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5zdWJ0aXRsZSksXG4gICAgICAgICAgICBuYW1lOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubmFtZSksXG4gICAgICAgICAgICBtb3JlSW5mb1RleHQ6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5tb3JlSW5mb1RleHQpLFxuICAgICAgICAgICAgb2ZmZXJUYWc6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5vZmZlclRhZyksXG4gICAgICAgICAgICB0ZXh0OiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udGV4dCA/PyB0ZXh0cz8uVGV4dG8pLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5kZXNjcmlwdGlvbiksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjE6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5kZXNjcmlwdGlvbjEpLFxuICAgICAgICAgICAgZGVzY3JpcHRpb24yOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uZGVzY3JpcHRpb24yKSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uMzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmRlc2NyaXB0aW9uMyksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbnRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uZGVzY3JpcHRpb250aXRsZSksXG4gICAgICAgICAgICBjb250ZW50Q2hhcmFjdGVyaXN0aWNzOiB0ZXh0cz8uY29udGVudENoYXJhY3RlcmlzdGljcyxcbiAgICAgICAgICAgIGhpZGVJbmZvVGV4dDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmhpZGVJbmZvVGV4dCksXG4gICAgICAgICAgICBoaWRlVGV4dDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmhpZGRlbiksXG4gICAgICAgICAgICBpdGVtMTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lml0ZW0xKSxcbiAgICAgICAgICAgIGl0ZW0xVGV4dDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lml0ZW0xVGV4dCksXG4gICAgICAgICAgICBtYW5kYXRvcnlUZXh0OiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubWFuZGF0b3J5VGV4dCksXG4gICAgICAgICAgICBub3RlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubm90ZSksXG4gICAgICAgICAgICBjb25kaXRpb25zVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5jb25kaXRpb25zVGl0bGUpLFxuICAgICAgICAgICAgYWRkaXRpb25hbDogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmFkZGl0aW9uYWwgPz8gdGV4dHM/LkFkZGl0aW9uYWxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBhZGRpdGlvbmFsMTogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmFkZGl0aW9uYWwxID8/IHRleHRzPy5BZGRpdGlvbmFsMVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWwyOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uYWRkaXRpb25hbDIgPz8gdGV4dHM/LkFkZGl0aW9uYWwyXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYWRkaXRpb25hbDM6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5hZGRpdGlvbmFsMyA/PyB0ZXh0cz8uQWRkaXRpb25hbDNcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5jb25kaXRpb25zKSxcbiAgICAgICAgICAgIGNvbmRpdGlvbnNFcnJvcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNvbmRpdGlvbnNFcnJvciksXG4gICAgICAgICAgICB1cmw6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy51cmwpLFxuXG4gICAgICAgICAgICBhZHZhbnRhZ2VzdGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5hZHZhbnRhZ2VzdGl0bGUpLFxuICAgICAgICAgICAgYWR2YW50YWdlc3N1YnRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uYWR2YW50YWdlc3N1YnRpdGxlKSxcblxuICAgICAgICAgICAgbGV2ZWwxOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubGV2ZWwxID8/IHRleHRzPy5sZXZlMSksXG4gICAgICAgICAgICBsZXZlbDI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5sZXZlbDIgPz8gdGV4dHM/LmxldmUyKSxcbiAgICAgICAgICAgIGxldmVsMzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmxldmVsMyA/PyB0ZXh0cz8ubGV2ZTMpLFxuICAgICAgICAgICAgbGV2ZTE6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5sZXZlMSksXG4gICAgICAgICAgICBsZXZlMjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmxldmUyKSxcbiAgICAgICAgICAgIGxldmUzOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubGV2ZTMpLFxuXG4gICAgICAgICAgICB3aGF0c2FwcDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LndoYXRzYXBwKSxcbiAgICAgICAgICAgIHNjcm9sbHRleHQ6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5zY3JvbGx0ZXh0ID8/IHRleHRzPy5zY3JvbGxEb3duXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBhZGRyZXNzOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uYWRkcmVzcyksXG4gICAgICAgICAgICBhZGRyZXNzdGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5hZGRyZXNzdGl0bGUgPz8gdGV4dHM/LmFkZHJlc3NUaXRsZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJhbm5lcnRleHQ6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5iYW5uZXJ0ZXh0KSxcbiAgICAgICAgICAgIGNvbnRhY3R0aXRsZTogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmNvbnRhY3R0aXRsZSA/PyB0ZXh0cz8uY29udGFjdFRpdGxlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29weXJpZ2h0dGV4dDogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmNvcHlyaWdodHRleHQgPz8gdGV4dHM/LmNvcHlyaWdodFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRvcEJ1dHRvbjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnRvcEJ1dHRvbiksXG4gICAgICAgICAgICBhYm91dFRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uYWJvdXRUaXRsZSksXG4gICAgICAgICAgICBncnVwb1RpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uZ3J1cG9UaXRsZSksXG4gICAgICAgICAgICBoZWxwVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5oZWxwVGl0bGUpLFxuICAgICAgICAgICAgY29udGFjdE9mZmljZVRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY29udGFjdE9mZmljZVRpdGxlKSxcblxuICAgICAgICAgICAgdGV4dEFkakN2OiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udGV4dEFkakN2KSxcbiAgICAgICAgICAgIHRleHRBZGpDdkVycm9yOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udGV4dEFkakN2RXJyb3IpLFxuICAgICAgICAgICAgU2VsZWN0SXRlbVRleHQ6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5TZWxlY3RJdGVtVGV4dCksXG5cbiAgICAgICAgICAgIC8vIFNWRyAvIGVzcGVjaWFsZXNcbiAgICAgICAgICAgIHN2ZzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnN2ZyksXG4gICAgICAgICAgICBzZWxlY3RvclRleHRzOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc2VsZWN0b3JUZXh0cyksXG5cbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z2ljb24xOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3ZnaWNvbjFcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBmZWF0dXJlcGlsbHNudW1iZXJTdmdpY29uMjogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z2ljb24yXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3ZnaWNvbjM6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5mZWF0dXJlcGlsbHNudW1iZXJTdmdpY29uM1xuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3ZnbnVtYmVyMTogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z251bWJlcjFcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBmZWF0dXJlcGlsbHNudW1iZXJTdmdudW1iZXIyOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3ZnbnVtYmVyMlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z251bWJlcjM6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5mZWF0dXJlcGlsbHNudW1iZXJTdmdudW1iZXIzXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBmZWF0dXJlcGlsbHNudW1iZXJTdmduYW1lMTogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z25hbWUxXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3ZnbmFtZTI6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5mZWF0dXJlcGlsbHNudW1iZXJTdmduYW1lMlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z25hbWUzOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3ZnbmFtZTNcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z3N1YnRpdGxlMTogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z3N1YnRpdGxlMVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z3N1YnRpdGxlMjogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z3N1YnRpdGxlMlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z3N1YnRpdGxlMzogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z3N1YnRpdGxlM1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHBvcnRhZGFob3RlbHYxdmlkZW86IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5wb3J0YWRhaG90ZWx2MXZpZGVvKSxcblxuICAgICAgICAgICAgdG9wc2xpZGVydmlkZW92MnN2ZzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnRvcHNsaWRlcnZpZGVvdjJzdmcpLFxuICAgICAgICAgICAgdG9wc2xpZGVydmlkZW92MnZpZGVvOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8udG9wc2xpZGVydmlkZW92MnZpZGVvXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBvbmx5QWR1bHRzOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ub25seUFkdWx0cyksXG4gICAgICAgICAgICBob3RlbENhdGVnb3J5OiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaG90ZWxDYXRlZ29yeSksXG4gICAgICAgICAgICBob3RlbFR5cGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ob3RlbFR5cGUpLFxuICAgICAgICAgICAgZGVzdGluYXRpb25zOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uZGVzdGluYXRpb25zKSxcbiAgICAgICAgICAgIGNsZWFuRmlsdGVyczogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNsZWFuRmlsdGVycyksXG4gICAgICAgICAgICBub3RGb3VuZDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm5vdEZvdW5kKSxcbiAgICAgICAgICAgIGNvbnRhY3RFbWFpbDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNvbnRhY3RFbWFpbCksXG4gICAgICAgICAgICBjb250YWN0T2ZmaWNlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY29udGFjdE9mZmljZSksXG4gICAgICAgICAgICBjb250YWN0VGVsOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY29udGFjdFRlbCksXG4gICAgICAgICAgICBtYXJjYTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm1hcmNhKSxcblxuICAgICAgICAgICAgZXJyb3JSZWdpc3RlclN1YnNjcmliZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5FcnJvclJlZ2lzdGVyU3Vic2NyaWJlclxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGVycm9yc3Vic2NyaWJlcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LkVycm9yc3Vic2NyaWJlciksXG4gICAgICAgICAgICBpbnB1dExhYmVsOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaW5wdXRMYWJlbCksXG4gICAgICAgICAgICBpbnB1dFBsYWNlaG9sZGVyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaW5wdXRQbGFjZWhvbGRlciksXG4gICAgICAgICAgICBuZXdzRXJyb3JFbWFpbDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm5ld3NFcnJvckVtYWlsKSxcbiAgICAgICAgICAgIHN1Y2Nlc3NzdWJzY3JpYmVyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc3VjY2Vzc3N1YnNjcmliZXIpLFxuXG4gICAgICAgICAgICBtYXBVcmw6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5tYXBVcmwgPz8gdGV4dHM/Lm1hcHVybCksXG4gICAgICAgICAgICByb29tczogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnJvb21zKSxcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5jYXRlZ29yaWVzKSxcbiAgICAgICAgICAgIGFsbDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmFsbCksXG5cbiAgICAgICAgICAgIGhvd0dldERlc2NyaXB0aW9uOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaG93R2V0RGVzY3JpcHRpb24pLFxuICAgICAgICAgICAgaG93R2V0RGVzY3JpcHRpb24yOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaG93R2V0RGVzY3JpcHRpb24yKSxcbiAgICAgICAgICAgIGhvd0dldFRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaG93R2V0VGl0bGUpLFxuICAgICAgICAgICAgaG93R2V0VGl0bGUyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaG93R2V0VGl0bGUyKSxcbiAgICAgICAgICAgIGNvbnRhY3REZXNjcmlwdGlvbjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNvbnRhY3REZXNjcmlwdGlvbiksXG4gICAgICAgICAgICBjb250YWN0VGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5jb250YWN0VGl0bGUpLFxuXG4gICAgICAgICAgICBuZXdzbGV0dGVyRXJyb3I6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5uZXdzbGV0dGVyRXJyb3IpLFxuICAgICAgICAgICAgbmV3c2xldHRlckZhaWw6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5uZXdzbGV0dGVyRmFpbCksXG4gICAgICAgICAgICBuZXdzbGV0dGVyU3VjY2Vzc2Z1bGw6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5uZXdzbGV0dGVyU3VjY2Vzc2Z1bGxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBuZXdzbGV0dGVyVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5uZXdzbGV0dGVyVGl0bGUpLFxuICAgICAgICAgICAgZXZlbnRzOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uZXZlbnRzKSxcblxuICAgICAgICAgICAgYWRkcmVzc1RpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uYWRkcmVzc1RpdGxlKSxcbiAgICAgICAgICAgIGFkZHJlc3NMaW5lczogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmFkZHJlc3NMaW5lcyksXG5cbiAgICAgICAgICAgIHJlY2VwdGlvblRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ucmVjZXB0aW9uVGl0bGUpLFxuICAgICAgICAgICAgZ3BzVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ncHNUaXRsZSksXG4gICAgICAgICAgICBmb2xsb3dUaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmZvbGxvd1RpdGxlKSxcbiAgICAgICAgICAgIGhvd1RvVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ob3dUb1RpdGxlKSxcbiAgICAgICAgICAgIGhvd1RvUHJldGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ob3dUb1ByZXRpdGxlKSxcbiAgICAgICAgICAgIGZpcnN0VGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5maXJzdFRpdGxlKSxcbiAgICAgICAgICAgIHNlY29uZFRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc2Vjb25kVGl0bGUpLFxuICAgICAgICAgICAgdGhpcmRUaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnRoaXJkVGl0bGUpLFxuICAgICAgICAgICAgZmlyc3REZXNjcmlwdGlvbjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmZpcnN0RGVzY3JpcHRpb24pLFxuICAgICAgICAgICAgc2Vjb25kRGVzY3JpcHRpb246IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5zZWNvbmREZXNjcmlwdGlvbiksXG4gICAgICAgICAgICB0aGlyZERlc2NyaXB0aW9uOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udGhpcmREZXNjcmlwdGlvbiksXG4gICAgICAgICAgICBjb250YWN0SW5mbzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNvbnRhY3RJbmZvKSxcbiAgICAgICAgICAgIHNvY2lhbFRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc29jaWFsVGl0bGUpLFxuICAgICAgICAgICAgbGF0aXR1ZGVUaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmxhdGl0dWRlVGl0bGUpLFxuICAgICAgICAgICAgbG9uZ2l0dWRlVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5sb25naXR1ZGVUaXRsZSksXG4gICAgICAgICAgICBzZWNvbmRhcnlUaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnNlY29uZGFyeVRpdGxlKSxcbiAgICAgICAgICAgIHNlY29uZGFyeVByZXRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc2Vjb25kYXJ5UHJldGl0bGUpLFxuICAgICAgICAgICAgc2NoZWR1bGVJbmZvOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc2NoZWR1bGVJbmZvKSxcbiAgICAgICAgICAgIG9uZUVsZW1lbnQ6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5vbmVFbGVtZW50KSxcbiAgICAgICAgICAgIHJlY2VwdGlvbjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnJlY2VwdGlvbiksXG5cbiAgICAgICAgICAgIHJvb21UaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnJvb21UaXRsZSksXG4gICAgICAgICAgICBjYW5jZWxUZXh0OiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY2FuY2VsVGV4dCksXG4gICAgICAgICAgICBkb3dubG9hZFNlbGVjdGVkVGV4dDogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmRvd25sb2FkU2VsZWN0ZWRUZXh0XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZXhpdFRleHQ6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5leGl0VGV4dCksXG4gICAgICAgICAgICBzZWxlY3RBbGxUZXh0OiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc2VsZWN0QWxsVGV4dCksXG4gICAgICAgICAgICBzaW5nbGVTZWxlY3RUZXh0OiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc2luZ2xlU2VsZWN0VGV4dCksXG4gICAgICAgICAgICBuZERlc2NyaXB0aW9uOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8ubmREZXNjcmlwdGlvbiA/PyB0ZXh0cz8ubmRkZXNjcmlwdGlvblxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgLy8gQ29tcGF0aWJpbGlkYWQgZXhwbMOtY2l0YSBwYXJhIG3Ds2R1bG9zIGxlZ2FjeSBjb24gY2xhdmVzIGVuIGNhc3RlbGxhbm9cbiAgICAgICAgICAgIFByZXRpdHVsbzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LlByZXRpdHVsbyksXG4gICAgICAgICAgICBUaXR1bG86IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5UaXR1bG8pLFxuICAgICAgICAgICAgVGV4dG86IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5UZXh0byksXG4gICAgICAgICAgICAnVGl0dWxvLW9mZXJ0YXMnOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uWydUaXR1bG8tb2ZlcnRhcyddKSxcbiAgICAgICAgICAgICdUaXR1bG8tZGV0YWxsZS0xJzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LlsnVGl0dWxvLWRldGFsbGUtMSddKSxcbiAgICAgICAgICAgICdUaXR1bG8tZGV0YWxsZS0yJzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LlsnVGl0dWxvLWRldGFsbGUtMiddKSxcbiAgICAgICAgICAgICdUaXR1bG8tZGV0YWxsZS0zJzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LlsnVGl0dWxvLWRldGFsbGUtMyddKSxcbiAgICAgICAgICAgICdUaXR1bG8tZGV0YWxsZS00JzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LlsnVGl0dWxvLWRldGFsbGUtNCddKSxcbiAgICAgICAgICAgICdUw610dWxvLWRldGFsbGUtMSc6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5bJ1TDrXR1bG8tZGV0YWxsZS0xJ10pLFxuICAgICAgICAgICAgJ1TDrXR1bG8tZGV0YWxsZS0yJzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LlsnVMOtdHVsby1kZXRhbGxlLTInXSksXG4gICAgICAgICAgICAnVMOtdHVsby1kZXRhbGxlLTMnOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uWydUw610dWxvLWRldGFsbGUtMyddKSxcbiAgICAgICAgICAgICdUw610dWxvLWRldGFsbGUtNCc6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5bJ1TDrXR1bG8tZGV0YWxsZS00J10pLFxuICAgICAgICAgICAgJ1N1YnRpdHVsby1kZXRhbGxlLTEnOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydTdWJ0aXR1bG8tZGV0YWxsZS0xJ11cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAnU3VidGl0dWxvLWRldGFsbGUtMic6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ1N1YnRpdHVsby1kZXRhbGxlLTInXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdTdWJ0aXR1bG8tZGV0YWxsZS0zJzogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LlsnU3VidGl0dWxvLWRldGFsbGUtMyddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ1N1YnRpdHVsby1kZXRhbGxlLTQnOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydTdWJ0aXR1bG8tZGV0YWxsZS00J11cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAnU3Viw610dWxvLWRldGFsbGUtMSc6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ1N1YsOtdHVsby1kZXRhbGxlLTEnXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdTdWLDrXR1bG8tZGV0YWxsZS0yJzogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LlsnU3Viw610dWxvLWRldGFsbGUtMiddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ1N1YsOtdHVsby1kZXRhbGxlLTMnOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydTdWLDrXR1bG8tZGV0YWxsZS0zJ11cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAnU3Viw610dWxvLWRldGFsbGUtNCc6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ1N1YsOtdHVsby1kZXRhbGxlLTQnXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdTdWJpdHVsby1kZXRhbGxlLTEnOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydTdWJpdHVsby1kZXRhbGxlLTEnXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdTdWJpdHVsby1kZXRhbGxlLTInOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydTdWJpdHVsby1kZXRhbGxlLTInXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdTdWJpdHVsby1kZXRhbGxlLTMnOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydTdWJpdHVsby1kZXRhbGxlLTMnXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdTdWJpdHVsby1kZXRhbGxlLTQnOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydTdWJpdHVsby1kZXRhbGxlLTQnXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdEZXNjcmlwY2lvbi1kZXRhbGxlLTEnOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydEZXNjcmlwY2lvbi1kZXRhbGxlLTEnXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdEZXNjcmlwY2lvbi1kZXRhbGxlLTInOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydEZXNjcmlwY2lvbi1kZXRhbGxlLTInXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdEZXNjcmlwY2lvbi1kZXRhbGxlLTMnOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydEZXNjcmlwY2lvbi1kZXRhbGxlLTMnXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdEZXNjcmlwY2lvbi1kZXRhbGxlLTQnOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydEZXNjcmlwY2lvbi1kZXRhbGxlLTQnXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdEZXNjcmlwY2nDs24tZGV0YWxsZS0xJzogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LlsnRGVzY3JpcGNpw7NuLWRldGFsbGUtMSddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ0Rlc2NyaXBjacOzbi1kZXRhbGxlLTInOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydEZXNjcmlwY2nDs24tZGV0YWxsZS0yJ11cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAnRGVzY3JpcGNpw7NuLWRldGFsbGUtMyc6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ0Rlc2NyaXBjacOzbi1kZXRhbGxlLTMnXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdEZXNjcmlwY2nDs24tZGV0YWxsZS00JzogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LlsnRGVzY3JpcGNpw7NuLWRldGFsbGUtNCddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaWNvbjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lmljb24pLFxuICAgICAgICAgICAgY29tcG9mZXJ0YXNfaWNvbjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNvbXBvZmVydGFzX2ljb24pLFxuICAgICAgICAgICAgLi4ubG95YWx0eVRhYmxlVGV4dHMsXG5cbiAgICAgICAgICAgIG5leHQ6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5uZXh0KSxcbiAgICAgICAgICAgIHByZXY6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5wcmV2KSxcbiAgICAgICAgICAgIGRvd25sb2FkOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uZG93bmxvYWQpLFxuICAgICAgICAgICAgbmRUaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm5kVGl0bGUgPz8gdGV4dHM/Lm5kdGl0bGUpLFxuICAgICAgICAgICAgbWFpblRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubWFhaW5UaXRsZSksXG5cbiAgICAgICAgICAgIGF0dGFjaEZpbGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5hdHRhY2hGaWxlKSxcbiAgICAgICAgICAgIGF0dGFjaG1lbnQ6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5hdHRhY2htZW50KSxcbiAgICAgICAgICAgIGF0dGFjaG1lbnRFcnJvcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmF0dGFjaG1lbnRFcnJvciksXG4gICAgICAgICAgICBhdHRhY2htZW50UGxhY2Vob2xkZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5hdHRhY2htZW50UGxhY2Vob2xkZXJcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjaGVja2JveDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNoZWNrYm94KSxcbiAgICAgICAgICAgIGNoZWNrYm94MjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNoZWNrYm94MiksXG4gICAgICAgICAgICBjaGVja2JveDJFcnJvcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNoZWNrYm94MkVycm9yKSxcbiAgICAgICAgICAgIGNoZWNrYm94RXJyb3I6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5jaGVja2JveEVycm9yKSxcbiAgICAgICAgICAgIGRyb3Bkb3duRXJyb3I6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5kcm9wZG93bkVycm9yKSxcbiAgICAgICAgICAgIGRyb3Bkb3duUGxhY2Vob2xkZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5kcm9wZG93blBsYWNlaG9sZGVyKSxcbiAgICAgICAgICAgIGRyb3Bkb3duUGxhY2Vob2xkZXIyOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZHJvcGRvd25QbGFjZWhvbGRlcjJcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBlbWFpbDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmVtYWlsKSxcbiAgICAgICAgICAgIGVtYWlsRXJyb3I6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5lbWFpbEVycm9yKSxcbiAgICAgICAgICAgIGVtYWlsUGxhY2Vob2xkZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5lbWFpbFBsYWNlaG9sZGVyKSxcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmVycm9yTWVzc2FnZSksXG4gICAgICAgICAgICBqb2luVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5qb2luVGl0bGUpLFxuICAgICAgICAgICAgbGFzdE5hbWU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5sYXN0TmFtZSksXG4gICAgICAgICAgICBsYXN0TmFtZUVycm9yOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubGFzdE5hbWVFcnJvciksXG4gICAgICAgICAgICBsYXN0TmFtZVBsYWNlaG9sZGVyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubGFzdE5hbWVQbGFjZWhvbGRlciksXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubWVzc2FnZSksXG4gICAgICAgICAgICBtZXNzYWdlRXJyb3I6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5tZXNzYWdlRXJyb3IpLFxuICAgICAgICAgICAgbWVzc2FnZVBsYWNlaG9sZGVyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubWVzc2FnZVBsYWNlaG9sZGVyKSxcbiAgICAgICAgICAgIG5hbWVFcnJvcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm5hbWVFcnJvciksXG4gICAgICAgICAgICBuYW1lUGxhY2Vob2xkZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5uYW1lUGxhY2Vob2xkZXIpLFxuICAgICAgICAgICAgcGhvbmU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5waG9uZSksXG4gICAgICAgICAgICBwaG9uZUVycm9yOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ucGhvbmVFcnJvciksXG4gICAgICAgICAgICBwaG9uZVBsYWNlaG9sZGVyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ucGhvbmVQbGFjZWhvbGRlciksXG4gICAgICAgICAgICBwcmVzZW50YWNpb246IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5wcmVzZW50YWNpb24pLFxuICAgICAgICAgICAgcHJlc2VudGFjaW9uUGxhY2Vob2xkZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5wcmVzZW50YWNpb25QbGFjZWhvbGRlclxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHJlcXVpcmVkRmllbGQ6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5yZXF1aXJlZEZpZWxkKSxcbiAgICAgICAgICAgIHN1Ym1pdDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnN1Ym1pdCksXG4gICAgICAgICAgICBzdWNjZXNzTWVzc2FnZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnN1Y2Nlc3NNZXNzYWdlKSxcblxuICAgICAgICAgICAgc2VydmljZXN0aXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnNlcnZpY2VzdGl0bGUpLFxuICAgICAgICAgICAgaGlkZXNlcnZpY2VzOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaGlkZXNlcnZpY2VzKSxcbiAgICAgICAgICAgIHNob3dzZXJ2aWNlczogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnNob3dzZXJ2aWNlcyksXG4gICAgICAgICAgICBzZXJ2aWNlc09uRmlsdGVyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc2VydmljZXNPbkZpbHRlciksXG5cbiAgICAgICAgICAgIGluZm9CdXR0b246IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5pbmZvQnV0dG9uKSxcbiAgICAgICAgICAgIGFsd2F5c29wZW46IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5hbHdheXNvcGVuKSxcbiAgICAgICAgICAgIG9wZW50ZXh0OiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ub3BlbnRleHQpLFxuXG4gICAgICAgICAgICAuLi5oZWFkaW5nVGFncyxcbiAgICAgICAgfSBhcyBCYWJ5bG9uVGV4dEluZm9JO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBCdXNjYSBlbiB0ZXh0cyB0b2RhcyBsYXMgcHJvcGllZGFkZXMgcXVlIHNlYW4gb2JqZXRvIHkgdGVuZ2FuIGNvbnRhaW4geS9vIHRhZyxcbiAgICAgKiB5IGRldnVlbHZlIHVuIG9iamV0byBjb24gY2xhdmVzIGhlYWRpbmdfdGFnX3trZXl9IHkgdmFsb3IgeyBjb250ZW50LCB0YWcgfVxuICAgICAqL1xuICAgIHByaXZhdGUgZXh0cmFjdEhlYWRpbmdUYWdzKFxuICAgICAgICB0ZXh0czogYW55XG4gICAgKTogUmVjb3JkPHN0cmluZywgeyBjb250ZW50OiBzdHJpbmc7IHRhZz86IHN0cmluZyB9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgeyBjb250ZW50OiBzdHJpbmc7IHRhZz86IHN0cmluZyB9PiA9IHt9O1xuICAgICAgICBpZiAoIXRleHRzIHx8IHR5cGVvZiB0ZXh0cyAhPT0gJ29iamVjdCcpIHJldHVybiByZXN1bHQ7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRleHRzKSkge1xuICAgICAgICAgICAgY29uc3QgdmFsID0gdGV4dHNba2V5XTtcbiAgICAgICAgICAgIGlmICh2YWwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgJ2NvbnRhaW4nIGluIHZhbCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtgaGVhZGluZ190YWdfJHtrZXl9YF0gPSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHZhbC5jb250YWluLFxuICAgICAgICAgICAgICAgICAgICB0YWc6IHZhbC50YWcsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VGV4dFZhbHVlKHRleHQ6IGFueSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghdGV4dCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICAvLyBzdHJpbmcgcGxhbm9cbiAgICAgICAgaWYgKHR5cGVvZiB0ZXh0ID09PSAnc3RyaW5nJykgcmV0dXJuIHRleHQ7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRleHQ/LnZhbHVlID8/XG4gICAgICAgICAgICB0ZXh0Py50ZXh0ID8/XG4gICAgICAgICAgICB0ZXh0Py5sYWJlbCA/P1xuICAgICAgICAgICAgdGV4dD8uY29udGFpbiA/P1xuICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNUZXh0VG9rZW5WYWx1ZSh0ZXh0OiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0ZXh0KSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgdmFsdWUgPVxuICAgICAgICAgICAgdHlwZW9mIHRleHQgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgPyB0ZXh0XG4gICAgICAgICAgICAgICAgOiAodGV4dD8uY29udGFpbiA/PyB0ZXh0Py52YWx1ZSA/PyB0ZXh0Py50ZXh0ID8/IHRleHQ/LmxhYmVsKTtcblxuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlPy50cmltKCkubGVuZ3RoID4gMCA6ICEhdmFsdWU7XG4gICAgfVxuXG4gICAgbWFwQ29uc3VsdFR5cGVzR2xvYmFsKGNvbnN1bHRzOiBhbnkgfCB1bmRlZmluZWQpOiBDb25zdWx0VHlwZUlbXSB7XG4gICAgICAgIHJldHVybiBjb25zdWx0cz8ubWFwKFxuICAgICAgICAgICAgKGNvbnN1bHQ6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICBpZDogY29uc3VsdD8uaWQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvbnN1bHQ/Lm5hbWUsXG4gICAgICAgICAgICAgICAgfSkgYXMgQ29uc3VsdFR5cGVJXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbWFwSG90ZWxHbG9iYWwoaG90ZWw6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Ib3RlbEdsb2JhbEl0ZW0ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWQ6IGhvdGVsPy5pZCxcbiAgICAgICAgICAgIG5hbWU6IGhvdGVsPy5uYW1lLFxuICAgICAgICAgICAgb3JkZXI6IGhvdGVsPy5vcmRlcixcbiAgICAgICAgICAgIHRleHRzOiB0aGlzLm1hcEdsb2JhbFRleHRzKGhvdGVsPy50ZXh0cykgYXMgQmFieWxvblRleHRJbmZvSSxcbiAgICAgICAgICAgIG11bHRpbWVkaWE6IHRoaXMubWFwTXVsdGltZWRpYShob3RlbD8ubXVsdGltZWRpYSksXG4gICAgICAgICAgICBpbWFnZXM6IGhvdGVsPy5tdWx0aW1lZGlhPy5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IHRoaXMubWFwTXVsdGltZWRpYShob3RlbD8ubXVsdGltZWRpYSlcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGhvdGVsPy5saW5rID8/IGhvdGVsPy5saW5rcyksXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGhvdGVsPy5idXR0b25zKSxcbiAgICAgICAgICAgIGVtYWlsOiBob3RlbD8uZW1haWwsXG4gICAgICAgICAgICBhZGRlc3M6IGhvdGVsPy5hZGRyZXNzLFxuXG4gICAgICAgICAgICBhbGxJbmNsdXNpdmU6IGhvdGVsPy5hbGxJbmNsdXNpdmUsXG4gICAgICAgICAgICBiZWFjaENsdWI6IGhvdGVsPy5iZWFjaENsdWIsXG4gICAgICAgICAgICBjaGVja0luVGltZTogaG90ZWw/LmNoZWNrSW5UaW1lLFxuICAgICAgICAgICAgY2hlY2tPdXRUaW1lOiBob3RlbD8uY2hlY2tPdXRUaW1lLFxuICAgICAgICAgICAgY2l0eTogaG90ZWw/LmNpdHksXG4gICAgICAgICAgICBjbG9zaW5nRnJvbTogaG90ZWw/LmNsb3NpbmdGcm9tLFxuICAgICAgICAgICAgY2xvc2luZ1RvOiBob3RlbD8uY2xvc2luZ1RvLFxuICAgICAgICAgICAgY291bnRyeTogaG90ZWw/LmNvdW50cnksXG4gICAgICAgICAgICBjcDogaG90ZWw/LmNwLFxuICAgICAgICAgICAgZGVzdGluYXRpb25zOiBob3RlbD8uZGVzdGluYXRpb25zLFxuICAgICAgICAgICAgaGlnaGxpZ2h0ZWQ6IGhvdGVsPy5oaWdobGlnaHRlZCxcbiAgICAgICAgICAgIGxhdDogaG90ZWw/LmxhdCxcbiAgICAgICAgICAgIGxvbjogaG90ZWw/LmxvbixcbiAgICAgICAgICAgIGxhdW5kcnk6IGhvdGVsPy5sYXVuZHJ5LFxuICAgICAgICAgICAgbG9jYWxpdHk6IGhvdGVsPy5sb2NhbGl0eSxcbiAgICAgICAgICAgIG1hcExpbms6IGhvdGVsPy5tYXBMaW5rLFxuICAgICAgICAgICAgb2ZmZXJzOiBob3RlbD8ub2ZmZXJzLFxuICAgICAgICAgICAgcGhvbmU6IGhvdGVsPy5waG9uZSxcbiAgICAgICAgICAgIHByb3ZpbmNlOiBob3RlbD8ucHJvdmluY2UsXG4gICAgICAgICAgICB0aWNrZXI6IGhvdGVsPy50aWNrZXIsXG4gICAgICAgICAgICBzaXRlSG90ZWxzOiBob3RlbD8uc2l0ZUhvdGVscyxcbiAgICAgICAgICAgIHNlcnZpY2VzQWR2YW50YWdlczogaG90ZWw/LnNlcnZpY2VzQWR2YW50YWdlcyxcbiAgICAgICAgICAgIHNlcnZpY2VzQ2hhcmFjdGVyaXN0aWNzOiBob3RlbD8uc2VydmljZXNDaGFyYWN0ZXJpc3RpY3MsXG4gICAgICAgICAgICBzZXJ2aWNlc0hvdGVsQXBwOiBob3RlbD8uc2VydmljZXNIb3RlbEFwcCxcbiAgICAgICAgICAgIHNlcnZpY2VzTGlzdDogaG90ZWw/LnNlcnZpY2VzTGlzdCxcbiAgICAgICAgICAgIHNlcnZpY2VzTG9jYXRpb246IGhvdGVsPy5zZXJ2aWNlc0xvY2F0aW9uLFxuICAgICAgICAgICAgc2VydmljZXNTZXJ2aWNlOiBob3RlbD8uc2VydmljZXNTZXJ2aWNlLFxuICAgICAgICAgICAgc3R5bGVzOiBob3RlbD8uc3R5bGVzLFxuICAgICAgICAgICAgb25seUFkdWx0czogaG90ZWw/Lm9ubHlBZHVsdHMsXG4gICAgICAgICAgICBldmVudHM6IHRoaXMubWFwR2xvYmFsSG90ZWxFdmVudHMoaG90ZWw/LmV2ZW50cyksXG4gICAgICAgICAgICBob3RlbGNhdGVnb3J5OiBob3RlbD8uaG90ZWxDYXRlZ29yeSA/PyBob3RlbD8uaG90ZWxjYXRlZ29yeSxcbiAgICAgICAgICAgIGhvdGVsdHlwZTogaG90ZWw/LmhvdGVsVHlwZSA/PyBob3RlbD8uaG90ZWx0eXBlLFxuICAgICAgICAgICAgbWFyY2E6IGhvdGVsPy5tYXJjYSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSG90ZWxHbG9iYWxJdGVtO1xuICAgIH1cblxuICAgIG1hcEhvdGVsc0dsb2JhbChob3RlbHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Ib3RlbEdsb2JhbEl0ZW1bXSB7XG4gICAgICAgIGlmICghaG90ZWxzKSByZXR1cm4gW107XG5cbiAgICAgICAgbGV0IGhvdGVsc0FycmF5OiBhbnlbXSA9IFtdO1xuXG4gICAgICAgIGNvbnN0IHJhd0hvdGVscyA9XG4gICAgICAgICAgICBob3RlbHM/LmRhdGEgJiYgQXJyYXkuaXNBcnJheShob3RlbHMuZGF0YSkgPyBob3RlbHMuZGF0YSA6IGhvdGVscztcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyYXdIb3RlbHMpKSB7XG4gICAgICAgICAgICBob3RlbHNBcnJheSA9IHJhd0hvdGVscztcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmF3SG90ZWxzID09PSAnb2JqZWN0JyAmJiByYXdIb3RlbHMgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICByYXdIb3RlbHNbMF0gfHxcbiAgICAgICAgICAgICAgICAoT2JqZWN0LmtleXMocmF3SG90ZWxzKS5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBPYmplY3QudmFsdWVzKHJhd0hvdGVscylbMF0gPT09ICdvYmplY3QnKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaG90ZWxzQXJyYXkgPSBPYmplY3QudmFsdWVzKHJhd0hvdGVscyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGhvdGVsc0FycmF5ID0gW3Jhd0hvdGVsc107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhvdGVsc0FycmF5XG4gICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgIChob3RlbDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGhvdGVsPy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGhvdGVsPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGhvdGVsPy5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzOiB0aGlzLm1hcEdsb2JhbFRleHRzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdGVsPy50ZXh0c1xuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBCYWJ5bG9uVGV4dEluZm9JLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYTogdGhpcy5tYXBNdWx0aW1lZGlhKGhvdGVsPy5tdWx0aW1lZGlhKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogaG90ZWw/Lm11bHRpbWVkaWE/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5tYXBNdWx0aW1lZGlhKGhvdGVsPy5tdWx0aW1lZGlhKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaG90ZWw/LmxpbmsgPz8gaG90ZWw/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaG90ZWw/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw6IGhvdGVsPy5lbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGVzczogaG90ZWw/LmFkZHJlc3MsXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbEluY2x1c2l2ZTogaG90ZWw/LmFsbEluY2x1c2l2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlYWNoQ2x1YjogaG90ZWw/LmJlYWNoQ2x1YixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSW5UaW1lOiBob3RlbD8uY2hlY2tJblRpbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja091dFRpbWU6IGhvdGVsPy5jaGVja091dFRpbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaXR5OiBob3RlbD8uY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NpbmdGcm9tOiBob3RlbD8uY2xvc2luZ0Zyb20sXG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9zaW5nVG86IGhvdGVsPy5jbG9zaW5nVG8sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiBob3RlbD8uY291bnRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNwOiBob3RlbD8uY3AsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbnM6IGhvdGVsPy5kZXN0aW5hdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRlZDogaG90ZWw/LmhpZ2hsaWdodGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGF0OiBob3RlbD8ubGF0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9uOiBob3RlbD8ubG9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGF1bmRyeTogaG90ZWw/LmxhdW5kcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGl0eTogaG90ZWw/LmxvY2FsaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwTGluazogaG90ZWw/Lm1hcExpbmssXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZlcnM6IGhvdGVsPy5vZmZlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBwaG9uZTogaG90ZWw/LnBob25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmluY2U6IGhvdGVsPy5wcm92aW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tlcjogaG90ZWw/LnRpY2tlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpdGVIb3RlbHM6IGhvdGVsPy5zaXRlSG90ZWxzLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZXNBZHZhbnRhZ2VzOiBob3RlbD8uc2VydmljZXNBZHZhbnRhZ2VzLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZXNDaGFyYWN0ZXJpc3RpY3M6IGhvdGVsPy5zZXJ2aWNlc0NoYXJhY3RlcmlzdGljcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzSG90ZWxBcHA6IGhvdGVsPy5zZXJ2aWNlc0hvdGVsQXBwLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZXNMaXN0OiBob3RlbD8uc2VydmljZXNMaXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZXNMb2NhdGlvbjogaG90ZWw/LnNlcnZpY2VzTG9jYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlc1NlcnZpY2U6IGhvdGVsPy5zZXJ2aWNlc1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM6IGhvdGVsPy5zdHlsZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbmx5QWR1bHRzOiBob3RlbD8ub25seUFkdWx0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50czogdGhpcy5tYXBHbG9iYWxIb3RlbEV2ZW50cyhob3RlbD8uZXZlbnRzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdGVsY2F0ZWdvcnk6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaG90ZWw/LmhvdGVsQ2F0ZWdvcnkgPz8gaG90ZWw/LmhvdGVsY2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBob3RlbHR5cGU6IGhvdGVsPy5ob3RlbFR5cGUgPz8gaG90ZWw/LmhvdGVsdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmNhOiBob3RlbD8ubWFyY2EsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Ib3RlbEdsb2JhbEl0ZW1cbiAgICAgICAgICAgIClcbiAgICAgICAgICAgID8uc29ydCgoYTogYW55LCBiOiBhbnkpID0+IChhLm9yZGVyIHx8IDk5OTkpIC0gKGIub3JkZXIgfHwgOTk5OSkpO1xuICAgIH1cblxuICAgIG1hcEdsb2JhbEhvdGVsRXZlbnRzKGV2ZW50czogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkV2ZW50SXRlbUlbXSB7XG4gICAgICAgIGlmICghZXZlbnRzKSByZXR1cm4gW107XG4gICAgICAgIGxldCBhcnI6IGFueVtdID0gW107XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGV2ZW50cykpIHtcbiAgICAgICAgICAgIGFyciA9IGV2ZW50cztcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZXZlbnRzID09PSAnb2JqZWN0JyAmJiBldmVudHMgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGFyciA9IE9iamVjdC52YWx1ZXMoZXZlbnRzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXJyXG4gICAgICAgICAgICAuZmlsdGVyKChldmVudDogYW55KSA9PiBldmVudCAmJiBldmVudC5uYW1lSWRlbnRpZmllcilcbiAgICAgICAgICAgIC5tYXAoKGV2ZW50OiBhbnkpID0+ICh7IG5hbWU6IGV2ZW50Lm5hbWVJZGVudGlmaWVyIH0pKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hcEdsb2JhbEl0ZW1zKHByb3BzOiBhbnkpOiBhbnkge1xuICAgICAgICAvLyBGdWVudGUgcHJpbmNpcGFsIGRlIGl0ZW1zXG4gICAgICAgIGNvbnN0IHJhd0l0ZW1zID1cbiAgICAgICAgICAgIHByb3BzPy5pdGVtcyA/P1xuICAgICAgICAgICAgcHJvcHM/Lkl0ZW1zID8/XG4gICAgICAgICAgICBwcm9wcz8uc2VydmljZXNTZXJ2aWNlID8/XG4gICAgICAgICAgICBwcm9wcz8udmVudGFqYXMgPz9cbiAgICAgICAgICAgIHByb3BzLlZlbnRhamFzID8/XG4gICAgICAgICAgICBwcm9wcy5hZHZhbnRhZ2VzID8/XG4gICAgICAgICAgICBwcm9wcy5BZHZhbnRhZ2VzID8/XG4gICAgICAgICAgICB1bmRlZmluZWQ7XG5cbiAgICAgICAgLy8gSW50ZW50YW1vcyBtYXBlYXIgaXRlbXMgaW1hZ2VuZXNcbiAgICAgICAgaWYgKCFyYXdJdGVtcyAmJiBwcm9wcz8ubXVsdGltZWRpYSkge1xuICAgICAgICAgICAgY29uc3QgbWFwcGVkSW1nID0gdGhpcy5tYXBJbWFnZXMocHJvcHM/Lm11bHRpbWVkaWEpO1xuICAgICAgICAgICAgaWYgKG1hcHBlZEltZyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hcHBlZEltZy5pbWFnZW5lcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEludGVudGFtb3MgbWFwZWFyIGl0ZW1zIGV4cGVyaWVuY2lhc1xuICAgICAgICBpZiAoIXJhd0l0ZW1zICYmIHByb3BzPy5leHBlcmllbmNlKSB7XG4gICAgICAgICAgICBjb25zdCBtYXBwZWRJdGVtcyA9IHRoaXMubWFwSXRlbXMocHJvcHM/LmV4cGVyaWVuY2UpO1xuICAgICAgICAgICAgaWYgKG1hcHBlZEl0ZW1zICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWFwcGVkSXRlbXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvL0ludGVudGFtb3MgbWFwZWFyIGl0ZW1zIOKAnG5vcm1hbGVz4oCdXG4gICAgICAgIGNvbnN0IG1hcHBlZEl0ZW1zID0gdGhpcy5tYXBJdGVtcyhyYXdJdGVtcyk7XG4gICAgICAgIGlmIChtYXBwZWRJdGVtcyAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFwcGVkSXRlbXM7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaSBubyBoYXkgaXRlbXMsIHByb2JhbW9zIGNvbiByb29tc1xuICAgICAgICBjb25zdCBtYXBwZWRSb29tcyA9IHRoaXMubWFwUm9vbURldGFpbHMocHJvcHM/LnJvb21zKTtcbiAgICAgICAgaWYgKG1hcHBlZFJvb21zICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBwZWRSb29tcztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIG9mZmVyc1xuICAgICAgICBjb25zdCBtYXBwZWRPZmZlcnMgPSB0aGlzLm1hcE9mZmVyc0dsb2JhbChwcm9wcz8ub2ZmZXJzKTtcbiAgICAgICAgaWYgKG1hcHBlZE9mZmVycyAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFwcGVkT2ZmZXJzO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gNSkgaG90ZWxlc1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBIb3RlbHNHbG9iYWwocHJvcHM/LmhvdGVscyk7XG4gICAgfVxuXG4gICAgbWFwQWRkcmVzcyhhZGRyZXNzOiBhbnkgfCBhbnlbXSB8IHVuZGVmaW5lZCk6IEJhYnlsb25BZGRyZXNzSXRlbVtdIHtcbiAgICAgICAgaWYgKCFhZGRyZXNzKSByZXR1cm4gW107XG5cbiAgICAgICAgY29uc3QgbGlzdCA9IEFycmF5LmlzQXJyYXkoYWRkcmVzcykgPyBhZGRyZXNzIDogW2FkZHJlc3NdO1xuXG4gICAgICAgIHJldHVybiBsaXN0Lm1hcCgoYTogYW55KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IGE/LmlkLFxuICAgICAgICAgICAgbmFtZTogYT8ubmFtZSxcbiAgICAgICAgICAgIGFkZHJlc3M6IGE/LmFkZHJlc3MsXG4gICAgICAgICAgICBjaXR5OiBhPy5jaXR5LFxuICAgICAgICAgICAgbG9jYWxpdHk6IGE/LmxvY2FsaXR5LFxuICAgICAgICAgICAgcHJvdmluY2U6IGE/LnByb3ZpbmNlLFxuICAgICAgICAgICAgY291bnRyeTogYT8uY291bnRyeSxcbiAgICAgICAgICAgIGNwOiBhPy5jcCxcbiAgICAgICAgICAgIHVybDogYT8ubGluayxcbiAgICAgICAgICAgIHBob25lOiBhPy5waG9uZSxcbiAgICAgICAgICAgIHBob25lMjogYT8ucGhvbmUyLFxuICAgICAgICAgICAgZW1haWw6IGE/LmVtYWlsLFxuICAgICAgICAgICAgZnVsbF9hZGRyZXNzOiBhPy5mdWxsQWRkcmVzcyxcbiAgICAgICAgICAgIGxhdDogYT8ubGF0LFxuICAgICAgICAgICAgbG9uOiBhPy5sb24sXG4gICAgICAgICAgICBsaW5rOiBhPy5saW5rLFxuICAgICAgICAgICAgc2x1Z3M6IGE/LnNsdWdzLFxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgbWFwU3RhdGljRm9vdGVydjMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25TdGF0aWNGb290ZXJJIHtcbiAgICAgICAgcmV0dXJuIHt9IGFzIGFueTtcbiAgICB9XG5cbiAgICBtYXBHbG9iYWxTZXJ2aWNlcyhcbiAgICAgICAgc2VydmljZXM6IEJhYnlsb25HbG9iYWxJY29uSVtdIHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkdsb2JhbEljb25JW10gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gc2VydmljZXM/Lm1hcChcbiAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tYCArIGl0ZW0/LmNsYXNzLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IGl0ZW0/LnR5cGUsXG4gICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkdsb2JhbEljb25JXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbWFwQ29udGFjdEluZm8odGV4dHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Db250YWN0SW5mb0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIG5vdGU6IHRleHRzPy5ub3RlLFxuICAgICAgICAgICAgdGV4dDogdGV4dHM/LnRleHQsXG4gICAgICAgICAgICBpY29uOiB0ZXh0cz8uaWNvbixcbiAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgY29uZGl0aW9uczogdGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICBjb25kaXRpb25zMjogdGV4dHM/LmNvbmRpdGlvbnMyLFxuICAgICAgICAgICAgZHJvcGRvd25QbGFjZWhvbGRlcjogdGV4dHM/LmRyb3Bkb3duUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICBkcm9wZG93blRpdGxlOiB0ZXh0cz8uZHJvcGRvd25UaXRsZSxcbiAgICAgICAgICAgIGhvdGVsRHJvcFRpdGxlOiB0ZXh0cz8uaG90ZWxEcm9wVGl0bGUsXG4gICAgICAgICAgICBob3RlbERyb3BQbGFjZWhvbGRlcjogdGV4dHM/LmhvdGVsRHJvcFBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgaG90ZWxEcm9wRXJyb3I6IHRleHRzPy5ob3RlbERyb3BFcnJvcixcbiAgICAgICAgICAgIGVycm9yRW1haWw6IHRleHRzPy5lcnJvckVtYWlsLFxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiB0ZXh0cz8uZXJyb3JNZXNzYWdlLFxuICAgICAgICAgICAgZXJyb3JOYW1lOiB0ZXh0cz8uZXJyb3JOYW1lLFxuICAgICAgICAgICAgZXJyb3JQaG9uZTogdGV4dHM/LmVycm9yUGhvbmUsXG4gICAgICAgICAgICBlcnJvclJlcXVpcmVkOiB0ZXh0cz8uZXJyb3JSZXF1aXJlZCxcbiAgICAgICAgICAgIGlucHV0RW1haWw6IHRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgaW5wdXRFbWFpbFBsYWNlSG9sZGVyOiB0ZXh0cz8uaW5wdXRFbWFpbFBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgaW5wdXRNZXNzYWdlOiB0ZXh0cz8uaW5wdXRNZXNzYWdlLFxuICAgICAgICAgICAgaW5wdXRNZXNzYWdlUGxhY2VIb2xkZXI6IHRleHRzPy5pbnB1dE1lc3NhZ2VQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIGlucHV0TmFtZTogdGV4dHM/LmlucHV0TmFtZSxcbiAgICAgICAgICAgIGlucHV0TmFtZVBsYWNlSG9sZGVyOiB0ZXh0cz8uaW5wdXROYW1lUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICBpbnB1dFBob25lOiB0ZXh0cz8uaW5wdXRQaG9uZSxcbiAgICAgICAgICAgIGlucHV0UGhvbmVQbGFjZUhvbGRlcjogdGV4dHM/LmlucHV0UGhvbmVQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIGlucHV0bGFzdG5hbWU6IHRleHRzPy5pbnB1dGxhc3RuYW1lLFxuICAgICAgICAgICAgaW5wdXRsYXN0bmFtZVBsYWNlSG9sZGVyOiB0ZXh0cz8uaW5wdXRsYXN0bmFtZVBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgaW5wdXRTdXJuYW1lczogdGV4dHM/LmlucHV0U3VybmFtZXMsXG4gICAgICAgICAgICBpbnB1dFN1cm5hbWVzUGxhY2VIb2xkZXI6IHRleHRzPy5pbnB1dFN1cm5hbWVzUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICBtYW5kYXRvcnl0ZXh0OiB0ZXh0cz8ubWFuZGF0b3J5dGV4dCxcbiAgICAgICAgICAgIHJlcXVpcmVkRmllbGRzTGFiZWw6IHRleHRzPy5yZXF1aXJlZEZpZWxkc0xhYmVsLFxuICAgICAgICAgICAgbGFuZ18xOiB0ZXh0cz8ubGFuZzEsXG4gICAgICAgICAgICBsYW5nXzI6IHRleHRzPy5sYW5nMixcbiAgICAgICAgICAgIGxhbmdfMzogdGV4dHM/LmxhbmczLFxuICAgICAgICAgICAgbGFuZ180OiB0ZXh0cz8ubGFuZzQsXG4gICAgICAgICAgICBuYXRpdm86IHRleHRzPy5uYXRpdm8sXG4gICAgICAgICAgICBiYXNpY286IHRleHRzPy5iYXNpY28sXG4gICAgICAgICAgICBmbHVpZG86IHRleHRzPy5mbHVpZG8sXG4gICAgICAgICAgICBpbnRlcm1lZGlvOiB0ZXh0cz8uaW50ZXJtZWRpbyxcbiAgICAgICAgICAgIGlucHV0RGlzcG9uaWJpbGl0eTogdGV4dHM/LmlucHV0RGlzcG9uaWJpbGl0eSxcbiAgICAgICAgICAgIGlucHV0TGFuZ3VhZ2VzOiB0ZXh0cz8uaW5wdXRMYW5ndWFnZXMsXG4gICAgICAgICAgICBjdklucHV0OiB0ZXh0cz8uY3ZJbnB1dCxcbiAgICAgICAgICAgIFNlbGVjdEl0ZW1UZXh0OiB0ZXh0cz8uU2VsZWN0SXRlbVRleHQsXG4gICAgICAgICAgICBhZGRMYW5nOiB0ZXh0cz8uYWRkTGFuZyxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQ29udGFjdEluZm9JO1xuICAgIH1cbiAgICBtYXBFdmVudHNHbG9iYWwoZXZlbnRzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSXRlbUlbXSB7XG4gICAgICAgIHJldHVybiBldmVudHM/Lm1hcChcbiAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtPy5uYW1lID8/IGl0ZW0/Lm5hbWVfaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0/LnByaWNlLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDI6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDM6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uczogaXRlbS50ZXh0cz8uY29uZGl0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXRlbS50ZXh0cz8ucmVzZXJ2YXRpb25VcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVBdDogaXRlbS50ZXh0cz8uY3JlYXRlQXQsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkQXQ6IGl0ZW0udGV4dHM/LnVwZGF0ZWRBdCxcbiAgICAgICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uVGV4dEluZm9JLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0/LnVybCxcbiAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSXRlbUlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgbWFwT2ZmZXJzR2xvYmFsKG9mZmVyczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbk9mZmVySXRlbUlbXSB7XG4gICAgICAgIHJldHVybiBvZmZlcnM/Lm1hcChcbiAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25Gcm9tOiBpdGVtPy5hcHBsaWNhdGlvbkZyb20sXG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uVG86IGl0ZW0/LmFwcGxpY2F0aW9uVG8sXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5OiBpdGVtPy5jdXJyZW5jeSxcbiAgICAgICAgICAgICAgICAgICAgZGlzY291bnQ6IGl0ZW0/LmRpc2NvdW50LFxuICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsRnJvbTogaXRlbT8ubGFiZWxGcm9tLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE6IHRoaXMubWFwTXVsdGltZWRpYShpdGVtPy5tdWx0aW1lZGlhKSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMzogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25zOiBpdGVtLnRleHRzPy5jb25kaXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uc1RpdGxlOiBpdGVtLnRleHRzPy5jb25kaXRpb25zVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0udGV4dHM/LnJlc2VydmF0aW9uVXJsLFxuICAgICAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25UZXh0SW5mb0ksXG4gICAgICAgICAgICAgICAgICAgIHVybDogaXRlbT8udXJsLFxuICAgICAgICAgICAgICAgICAgICB2aXNpYmxlRnJvbTogaXRlbT8udmlzaWJsZUZyb20sXG4gICAgICAgICAgICAgICAgICAgIHZpc2libGVUbzogaXRlbT8udmlzaWJsZVRvLFxuICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25PZmZlcklcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBtYXBBZHZhbnRhZ2VzR2xvYmFsKGFkdmFudGFnZXM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25BZHZhbnRhZ2VJdGVtSVtdIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFkdmFudGFnZXMpKSByZXR1cm4gW107XG4gICAgICAgIHJldHVybiBhZHZhbnRhZ2VzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUgPz8gaXRlbT8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaWNvbjogaXRlbT8uaWNvbiA/IGBpY29uLSR7aXRlbS5pY29ufWAgOiBpdGVtPy5pY29uLFxuICAgICAgICAgICAgdGV4dDogaXRlbT8udGV4dCA/PyBpdGVtPy50ZXh0cz8udGV4dCA/PyBpdGVtPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICBpdGVtPy5zdWJ0aXRsZSA/P1xuICAgICAgICAgICAgICAgIGl0ZW0/LnRleHRzPy5zdWJ0aXRsZSA/P1xuICAgICAgICAgICAgICAgIGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIGl0ZW0/LmRlc2NyaXB0aW9uID8/XG4gICAgICAgICAgICAgICAgaXRlbT8udGV4dHM/LmRlc2NyaXB0aW9uID8/XG4gICAgICAgICAgICAgICAgaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgYWRkaXRpb25hbDE6IGl0ZW0/LmFkZGl0aW9uYWwxID8/IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBpdGVtPy5hZGRpdGlvbmFsMiA/PyBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICBhZGRpdGlvbmFsMzogaXRlbT8uYWRkaXRpb25hbDMgPz8gaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgdGV4dHM6IGl0ZW0/LnRleHRzID8gdGhpcy5tYXBHbG9iYWxUZXh0cyhpdGVtLnRleHRzKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVybDogaXRlbS5saW5rVmFsdWUgPz8gaXRlbS51cmwsXG4gICAgICAgICAgICBsaW5rVHlwZTogaXRlbS5saW5rVHlwZSxcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIG1hcEl0ZW1zKGl0ZW1zOiBhbnkpOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoaXRlbXMpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBpdGVtcyA9IGl0ZW1zPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgIGxhYmVsOiBpdGVtPy50aXRsZSA/PyBpdGVtPy5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LnRleHQgPz8gaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICB0ZXh0czpcbiAgICAgICAgICAgICAgICBpdGVtPy50ZXh0cyA/P1xuICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBpdGVtPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uVGV4dEluZm9JKSxcbiAgICAgICAgICAgIG11bHRpbWVkaWE6IHRoaXMubWFwSW1hZ2VzKGl0ZW0/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgaWNvbjogYGljb24tYCArIChpdGVtLmljb24gPz8gaXRlbS5jbGFzcyksXG4gICAgICAgICAgICB0eXBlOiBpdGVtPy50eXBlLFxuICAgICAgICAgICAgbmFtZUlkZW50aWZpZXI6IGl0ZW0/Lm5hbWVJZGVudGlmaWVyLFxuICAgICAgICAgICAgdXJsOiBpdGVtPy51cmwgPz8gaXRlbT8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgbGlua1R5cGU6IGl0ZW0/LmxpbmtUeXBlLFxuICAgICAgICB9KSk7XG4gICAgICAgIHJldHVybiBpdGVtcyBhcyBCYWJ5bG9uSXRlbUk7XG4gICAgfVxuXG4gICAgbWFwR2xvYmFsc0ZhcXMocmF3OiBhbnkpOiBCYWJ5bG9uR2xvYmFsc0ZhcUdyb3VwW10gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkocmF3KSB8fCByYXcubGVuZ3RoID09PSAwKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIGNvbnN0IGlzR3JvdXBlZCA9IHJhdy5zb21lKFxuICAgICAgICAgICAgKHgpID0+IHggJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIEFycmF5LmlzQXJyYXkoeC5pdGVtcylcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBncm91cHM6IEFycmF5PHsgbGlzdElkOiBudW1iZXI7IGl0ZW1zOiBhbnlbXSB9PiA9IGlzR3JvdXBlZFxuICAgICAgICAgICAgPyByYXcubWFwKChnOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICBsaXN0SWQ6IE51bWJlcihnPy5saXN0SWQgPz8gMSksXG4gICAgICAgICAgICAgICAgICBpdGVtczogQXJyYXkuaXNBcnJheShnPy5pdGVtcykgPyBnLml0ZW1zIDogW10sXG4gICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgOiBbeyBsaXN0SWQ6IDEsIGl0ZW1zOiByYXcgfV07XG5cbiAgICAgICAgY29uc3QgbWFwcGVkR3JvdXBzOiBCYWJ5bG9uR2xvYmFsc0ZhcUdyb3VwW10gPSBncm91cHNcbiAgICAgICAgICAgIC5tYXAoKGcpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXBwZWRJdGVtcyA9IChnLml0ZW1zIHx8IFtdKVxuICAgICAgICAgICAgICAgICAgICAubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy50aXRsZSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnF1ZXN0aW9uID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubmFtZSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmxhYmVsID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8udGV4dCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmFuc3dlciA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmRlc2NyaXB0aW9uID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJyc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGFiZWwgJiYgIWRlc2NyaXB0aW9uKSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8udGV4dHMgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBpdGVtPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25UZXh0SW5mb0kpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE6IHRoaXMubWFwSW1hZ2VzKGl0ZW0/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uaWNvbiB8fCBpdGVtPy5jbGFzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBTdHJpbmcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmljb24gPz8gaXRlbS5jbGFzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLnN0YXJ0c1dpdGgoJ2ljb24tJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFN0cmluZyhpdGVtLmljb24gPz8gaXRlbS5jbGFzcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGBpY29uLSR7aXRlbS5pY29uID8/IGl0ZW0uY2xhc3N9YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogaXRlbT8uaWQgPz8gaXRlbT8uZmFxSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGFzIHVua25vd24gYXMgQmFieWxvbkl0ZW1JO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pIGFzIEJhYnlsb25JdGVtSVtdO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgbGlzdElkOiBnLmxpc3RJZCB8fCAxLFxuICAgICAgICAgICAgICAgICAgICBpdGVtczogbWFwcGVkSXRlbXMsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuZmlsdGVyKChnKSA9PiBnLml0ZW1zLmxlbmd0aCA+IDApO1xuXG4gICAgICAgIHJldHVybiBtYXBwZWRHcm91cHMubGVuZ3RoID8gbWFwcGVkR3JvdXBzIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcE11bHRpbWVkaWEoaW1hZ2VzQXJyYXk6IGFueSB8IHVuZGVmaW5lZCk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGltYWdlc0FycmF5KSAmJiBpbWFnZXNBcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBpbWFnZXNBcnJheVxuICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PiBpdGVtPy5hY3RpdmUgPT09IHRydWUpXG4gICAgICAgICAgICAgICAgPy5tYXAoKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgYWx0OiBpdGVtPy5hbHQsXG4gICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0/Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgdGFnOiBpdGVtPy50YWdzLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWx0OiBpdGVtPy5hbHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBuZFRpdGxlOiBpdGVtPy5uZFRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmRTdWJ0aXRsZTogaXRlbT8ubmRTdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBJbWFnZXMobXVsdGltZWRpYTogYW55IHwgdW5kZWZpbmVkKTogYW55IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKG11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaW1hZ2VuOiB0aGlzLm1hcE11bHRpbWVkaWEobXVsdGltZWRpYT8uaW1hZ2VuKSxcbiAgICAgICAgICAgICAgICBpbWFnZW5lczogdGhpcy5tYXBNdWx0aW1lZGlhKFxuICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhPy5pbWFnZW5lcyA/PyBtdWx0aW1lZGlhXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBpbWFnZW5lc2NvbnRleHQ6IHRoaXMubWFwTXVsdGltZWRpYShcbiAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYT8uaW1hZ2VuZXNjb250ZXh0XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBpbWFnZW5lc3BlcXVlYXM6IHRoaXMubWFwTXVsdGltZWRpYShcbiAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYT8uaW1hZ2VuZXNwZXF1ZWFzXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBtb2JpbGVJbWFnZW5lczogdGhpcy5tYXBNdWx0aW1lZGlhKG11bHRpbWVkaWE/LmltYWdlbmVzbW9iaWxlKSxcbiAgICAgICAgICAgICAgICBzdGF0aWNJbWFnZW5lczogdGhpcy5tYXBNdWx0aW1lZGlhKFxuICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhPy5zdGF0aWNpbWFnZW5lcyA/PyBtdWx0aW1lZGlhPy5zdGF0aWNpbWFnZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgbWFpbmltYWdlbmVzOiB0aGlzLm1hcE11bHRpbWVkaWEobXVsdGltZWRpYT8ubWFpbmltYWdlbmVzKSxcbiAgICAgICAgICAgICAgICBsaXN0YWRvSW1hZ2VuZXM6IHRoaXMubWFwTXVsdGltZWRpYShcbiAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYT8ubGlzdGFkb0ltYWdlbmVzID8/IG11bHRpbWVkaWE/Lmxpc3RpbWFnZXNcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRpbWFnZTogdGhpcy5tYXBNdWx0aW1lZGlhKFxuICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhPy5iYWNrZ3JvdW5kaW1hZ2VcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGxvZ286IHRoaXMubWFwTXVsdGltZWRpYShtdWx0aW1lZGlhPy5sb2dvKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBSb29tRGV0YWlscyhyb29tczogYW55IHwgdW5kZWZpbmVkLCB0ZXh0cz86IGFueSk6IGFueSB7XG4gICAgICAgIGxldCBhcnJheTogYW55W10gPSByb29tcz8ubGVuZ3RoID8gcm9vbXMgOiBbcm9vbXNdO1xuXG4gICAgICAgIHJldHVybiBhcnJheVxuICAgICAgICAgICAgPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKHJvb206IGFueSwgaW5kZXg6IG51bWJlciwgc2VsZjogYW55W10pID0+XG4gICAgICAgICAgICAgICAgICAgIHNlbGY/LmZpbmRJbmRleCgocikgPT4gcj8uaWQgPT09IHJvb20/LmlkKSA9PT0gaW5kZXhcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpdGVtPy5idXR0b25zPy5zbGljZSgpLnJldmVyc2UoKSBUT0RPOiBcIi5zbGljZSgpLnJldmVyc2UoKVwiICBlc3RvIHNlIGhhY2UgZW4gZWwgY29tcG9uZW50ZSBxdWUgbG8gdXNlICovXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1nUmVzcCA9IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+IGltZz8uY292ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfHwgaXRlbT8ubXVsdGltZWRpYT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3JkZXIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+IGltZz8uY292ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/Lm9yZGVyID8/IGl0ZW0/Lm11bHRpbWVkaWE/LlswXT8ub3JkZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbWdSZXNwICYmIHR5cGVvZiBpbWdSZXNwID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uaW1nUmVzcCwgb3JkZXIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGltZzogaW1nUmVzcCwgb3JkZXIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlbmVzOiBpdGVtPy5tdWx0aW1lZGlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChpbWc6IGFueSkgPT4gaW1nLmFjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoKGltZzogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzOiBpbWcudGV4dHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnOiBpbWcudGFncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGltZy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpbWcubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaW1nLm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiBpdGVtPy5tdWx0aW1lZGlhPy52aWRlbz8uc3JjLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGl0ZW0/Lm11bHRpbWVkaWE/LnZpZGVvPy5zcmNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAndmlkZW8vbXA0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZHM6IGl0ZW0/LnRleHRzPy5iZWRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpdGVtPy50ZXh0cz8ubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDM6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsNDogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyY2hlY2s6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMmNoZWNrID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzPy5hZGRpdGlvbmFsMmNoZWNrLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtPy5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpdGVtPy5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcmlzdGljczogQXJyYXkuaXNBcnJheShpdGVtPy5zZXJ2aWNlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW0/LnNlcnZpY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKHN2YzogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBzdmMudHlwZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHN2Yy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh0OiBzdHJpbmcpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ/LnRyaW0oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFjZXB0YSB0YW50byAnZXF1aXBtZW50JyBjb21vICdjaGFyYWN0ZXJpc3RpY3MnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc1ZhbGlkVHlwZSA9IHR5cGVzLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9vbVNlcnZpY2VUeXBlLmNoYXJhY3RlcmlzdGljc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYXNWYWxpZFR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKChzdmM6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogc3ZjPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBzdmM/LmNsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGBpY29uLSR7c3ZjPy5jbGFzc31gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXF1aXBtZW50czogQXJyYXkuaXNBcnJheShpdGVtPy5zZXJ2aWNlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW0/LnNlcnZpY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKHN2YzogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBzdmMudHlwZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHN2Yy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh0OiBzdHJpbmcpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ/LnRyaW0oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFjZXB0YSB0YW50byAnZXF1aXBtZW50JyBjb21vICdjaGFyYWN0ZXJpc3RpY3MnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc1ZhbGlkVHlwZSA9IHR5cGVzLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9vbVNlcnZpY2VUeXBlLkVxdWlwbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYXNWYWxpZFR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKChzdmM6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogc3ZjPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBzdmM/LmNsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGBpY29uLSR7c3ZjPy5jbGFzc31gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uUm9vbUluZm9JXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBtYXA0MDQocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb240MDRJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29udGFpbixcblxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbjQwNEk7XG4gICAgfVxuXG4gICAgLy8tLS0tIExBWU9VVCBDT01QT05FTlRTIC0tLS0vL1xuICAgIG1hcFRvcFNsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblRvcFNsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBhbGxJbWFnZXMgPSBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMgPz8gW107XG4gICAgICAgIGNvbnN0IHJhd01vdXNldXAgPSBwcm9wcz8udGV4dHM/Lm1vdXNldXAgPz8gcHJvcHM/LnRleHRzPy5tb3VzZVVwO1xuICAgICAgICBjb25zdCBtb3VzZXVwID0gdGhpcy5nZXRUZXh0VmFsdWUocmF3TW91c2V1cCk7XG5cbiAgICAgICAgY29uc3QgaW1hZ2VzV2l0aFRhZyA9IGFsbEltYWdlcy5maWx0ZXIoXG4gICAgICAgICAgICAoaW1hZ2U6IGFueSkgPT5cbiAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KGltYWdlPy50YWdzKSAmJlxuICAgICAgICAgICAgICAgIGltYWdlLnRhZ3Muc29tZShcbiAgICAgICAgICAgICAgICAgICAgKHRhZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiB0YWcgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnLmluY2x1ZGVzKCdUb3BTbGlkZXInKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlb2YgdGFnID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZz8ubmFtZT8uaW5jbHVkZXMoJ1RvcFNsaWRlcicpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBpbWFnZXMgPSBpbWFnZXNXaXRoVGFnLmxlbmd0aCA/IGltYWdlc1dpdGhUYWcgOiBhbGxJbWFnZXM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcyksXG4gICAgICAgICAgICBpdGVtczogaW1hZ2VzPy5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IGltYWdlcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbS5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWFnZXM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1hZ2VzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWFnZXMsIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpbWFnZXM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpbWFnZXM/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGl0ZW1zTW9iaWxlOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXNtb2JpbGU/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblRvcFNsaWRlckl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8ubG9nbz8uWzBdLCBmYWxzZSksXG4gICAgICAgICAgICBsb2dvVGl0bGU6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvdGl0bGU/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHZpZGVvRGF0YToge1xuICAgICAgICAgICAgICAgIC8vIHRpdGxlOiBwcm9wcz8udmlkZW8/LnRpdGxlLFxuICAgICAgICAgICAgICAgIHNyYzogcHJvcHM/LnRleHRzPy52aWRlbyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndmlkZW8vbXA0JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtb3VzZXVwLFxuICAgICAgICB9IGFzIEJhYnlsb25Ub3BTbGlkZXJJO1xuICAgIH1cblxuICAgIG1hcFRvcFNsaWRlclZpZGVvKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvblRvcFNsaWRlclZpZGVvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2aWRlb0RhdGE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnZpZGVvPy50aXRsZSxcbiAgICAgICAgICAgICAgICBzcmM6IHByb3BzPy52aWRlbz8uc3JjLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd2aWRlby9tcDQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNtYWxsVmlkZW9EYXRhOiBwcm9wcz8udmlkZW8/Lm1vYmlsZVxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udmlkZW8/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIHNyYzogcHJvcHM/LnZpZGVvPy5tb2JpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3ZpZGVvL21wNCcsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBsYWJlbEluZm9zOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW1vYmlsZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1nVGV4dHM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbW9iaWxlPy5bMF0ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW1vYmlsZT8uWzBdLnRpdGxlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGJ0bk5leHRTZWN0aW9uOiBwcm9wcz8udGV4dHM/LmJ0bk5leHRTZWN0aW9uLFxuICAgICAgICB9IGFzIEJhYnlsb25Ub3BTbGlkZXJWaWRlb0k7XG4gICAgfVxuXG4gICAgbWFwVG9wU2xpZGVyVjIoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHJpZ2h0U2lkZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgKTogQmFieWxvblRvcFNsaWRlclYySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBwcm9wc1xuICAgICAgICAgICAgPyAoe1xuICAgICAgICAgICAgICAgICAgcmlnaHRTaWRlOiByaWdodFNpZGUsXG4gICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25TbGlkZXI0Y29sTGFiZWxzXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uVG9wU2xpZGVyVjJJKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwSW5mb0ltZyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2UsXG4gICAgICAgIHRleHRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICBpZGVudGlmaWVyOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uSW5mb0ltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgICAgIHJpZ2h0U2lkZTogcmlnaHRTaWRlLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGJ1dHRvbnM6IHByb3BzPy5idXR0b25zXG4gICAgICAgICAgICAgICAgPyBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+IGxpbms/LmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy5jb250YWluLFxuICAgICAgICAgICAgdGV4dDpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIG5kdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ubmR0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/Lm5kdGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/Lm5kdGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBsZXNzQnRuOiBwcm9wcz8udGV4dHM/LnNlZUxlc3MsXG4gICAgICAgICAgICBtb3JlQnRuOiBwcm9wcz8udGV4dHM/LnNlZU1vcmUsXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzID8/IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXMsXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBhZHZhbnRhZ2VzOiBwcm9wcz8uVmVudGFqYXM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtPy50aXRsZSB8fCBpdGVtPy50ZXh0XG4gICAgICAgICAgICApPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgaWNvbjogaXRlbS5pY29uID8gYGljb24tJHtpdGVtLmljb259YCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvPy5bMF0sIGZhbHNlKSxcbiAgICAgICAgICAgIGFkdlRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRleHQgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50ZXh0XG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50ZXh0Py5jb250YWluLFxuICAgICAgICAgICAgdG9wQkc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy50b3BiZz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYm90dG9tQkc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5ib3R0b21iZz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdG9wQ29sb3I6IHByb3BzPy50ZXh0cz8udG9wQ29sb3IsXG4gICAgICAgICAgICBib3R0b21Db2xvcjogcHJvcHM/LnRleHRzPy5Cb3R0b21Db2xvcixcbiAgICAgICAgICAgIHRleHRDb2xvcjogdGV4dENvbG9yLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LnRhZyxcbiAgICAgICAgICAgICAgICBuZHRpdGxlOiBwcm9wcz8udGV4dHM/Lm5kdGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBhZHZUaXRsZTogcHJvcHM/LnRleHRzPy50ZXh0Py50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXh0cmFDbGFzczogcHJvcHM/LnRleHRzPy5leHRyYUNsYXNzLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvSW1nSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvSW1nU2xpZGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICByaWdodFNpZGU6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICAgICAgaWRlbnRpZmllcjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkluZm9JbWdTbGlkZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgLy8gVE9ETzogYWRkIHRvcEJHLCBib3R0b21CR1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgICAgIHJpZ2h0U2lkZTogcmlnaHRTaWRlLFxuICAgICAgICAgICAgdG9wQ29sb3I6IHByb3BzPy50ZXh0cz8udG9wQ29sb3IsXG4gICAgICAgICAgICBib3R0b21Db2xvcjogcHJvcHM/LnRleHRzPy5ib3R0b21Db2xvcixcbiAgICAgICAgICAgIGxlc3NCdG46IHByb3BzPy50ZXh0cz8uc2VlTGVzcyxcbiAgICAgICAgICAgIG1vcmVCdG46IHByb3BzPy50ZXh0cz8uc2VlTW9yZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmR0aXRsZTogaXRlbT8ubmRfdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkluZm9JbWdTbGlkZXJJdGVtSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb0ltZ1NsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwSW5mb0ludHJvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mb0ludHJvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbnRhaW4sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzID8/IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRvcEJHOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8udG9wYmc/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJvdHRvbUJHOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYm90dG9tYmc/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRvcENvbG9yOiBwcm9wcz8udGV4dHM/LnRvcENvbG9yLFxuICAgICAgICAgICAgYm90dG9tQ29sb3I6IHByb3BzPy50ZXh0cz8uQm90dG9tQ29sb3IsXG4gICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8ubG9nbz8uWzBdLCBmYWxzZSksXG4gICAgICAgICAgICBsb2dvMjogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmxvZ28yPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJ1dHRvbk1vZGFsOiBwcm9wcz8udGV4dHM/LnBvcHVwbW9kYWwsXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9JbnRyb0k7XG4gICAgfVxuXG4gICAgbWFwSGVhZGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBtZW51OiBhbnksXG4gICAgICAgIGhlYWRlcjogYW55IHwgdW5kZWZpbmVkXG4gICAgKTpcbiAgICAgICAgfCBCYWJ5bG9uSGVhZGVyQm9va1Nob3dJXG4gICAgICAgIHwgQmFieWxvbkhlYWRlckNsZWFySVxuICAgICAgICB8IEJhYnlsb25IZWFkZXJNZW51Q2VudGVySVxuICAgICAgICB8IEJhYnlsb25IZWFkZXJNZW51TG9nb0NlbnRlcklcbiAgICAgICAgfCBCYWJ5bG9uSGVhZGVyTWVudVNob3dJIHtcbiAgICAgICAgY29uc3QgbGluayA9IG1lbnU/LmxpbmtzPy5sb2dvTGluaz8uZmxhdCgpPy5bMF07XG4gICAgICAgIGNvbnN0IGhlYWRlckJ1dHRvbnMgPSBwcm9wcztcbiAgICAgICAgY29uc3QgYnV0dG9ucyA9IFV0aWxzLm1hcEJ1dHRvbnMobWVudT8uYnV0dG9ucyA/PyBbXSk7XG4gICAgICAgIGNvbnN0IGhlYWRlckJ1dHRvbnNNb2RhbEJ1dHRvbnMgPSBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgaGVhZGVyQnV0dG9ucz8uYnV0dG9ucyA/PyBbXVxuICAgICAgICApPy5maWx0ZXIoKGJ1dHRvbikgPT4gISFidXR0b24ubGFiZWwgJiYgISFidXR0b24udXJsKTtcbiAgICAgICAgY29uc3QgaGVhZGVyQnV0dG9uc01vZGFsSW1hZ2UgPVxuICAgICAgICAgICAgaGVhZGVyQnV0dG9ucz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSA/P1xuICAgICAgICAgICAgaGVhZGVyQnV0dG9ucz8ubXVsdGltZWRpYT8uaW1hZ2U/LlswXSA/P1xuICAgICAgICAgICAgaGVhZGVyQnV0dG9ucz8ubXVsdGltZWRpYT8uaW1hZ2VzPy5bMF07XG4gICAgICAgIGNvbnN0IGhlYWRlckJ1dHRvbnNNb2RhbFRpdGxlID1cbiAgICAgICAgICAgIGhlYWRlckJ1dHRvbnM/LnRleHRzPy5tb2RhbF90aXRsZSA/P1xuICAgICAgICAgICAgaGVhZGVyQnV0dG9ucz8udGV4dHM/Lm1vZGFsVGl0bGU7XG4gICAgICAgIGNvbnN0IGhlYWRlckJ1dHRvbnNNb2RhbEltYWdlU3JjID1cbiAgICAgICAgICAgIGhlYWRlckJ1dHRvbnM/LnRleHRzPy5tb2RhbF9pbWcgPz8gaGVhZGVyQnV0dG9ucz8udGV4dHM/Lm1vZGFsSW1nO1xuXG4gICAgICAgIGNvbnN0IHRleHRzID0gaGVhZGVyPy50ZXh0cyA/IGhlYWRlcj8udGV4dHMgOiBtZW51Py50ZXh0cztcblxuICAgICAgICBpZiAoaGVhZGVyQnV0dG9ucykge1xuICAgICAgICAgICAgdGhpcy5mbG9hdGluZ0J1dHRvbnMgPSB7XG4gICAgICAgICAgICAgICAgdGV4dHM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGJhYnlsb24tJHtoZWFkZXJCdXR0b25zLnRleHRzPy50cmFuc2Zlckljb259YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8udHJhbnNmZXIsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBiYWJ5bG9uLSR7aGVhZGVyQnV0dG9ucy50ZXh0cz8uY2hlY2tpbkljb259YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8uY2hlY2tpbixcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGJhYnlsb24tJHtoZWFkZXJCdXR0b25zLnRleHRzPy53aGF0c2FwcH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGhlYWRlckJ1dHRvbnM/LnRleHRzPy53aGF0c2FwcCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHRleHRzQnV0dG9uczoge1xuICAgICAgICAgICAgICAgICAgICBtZW51VGV4dDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckJ1dHRvbnM/LnRleHRzPy5tZW51dGV4dCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQnV0dG9ucz8udGV4dHM/Lm1lbnVUZXh0LFxuICAgICAgICAgICAgICAgICAgICBib29rdGV4dDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckJ1dHRvbnM/LnRleHRzPy5ib29rdGV4dCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQnV0dG9ucz8udGV4dHM/LmJvb2tUZXh0ID8/XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJCdXR0b25zPy50ZXh0cz8uYm9va05vdyxcbiAgICAgICAgICAgICAgICAgICAgYWdlbmNpYVRleHQ6IGhlYWRlckJ1dHRvbnM/LnRleHRzPy5hZ2VuY2lhLFxuICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZTogaGVhZGVyQnV0dG9ucz8udGV4dHM/Lmxhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgICBuZXdzbGV0dGVyOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8ubmV3c2xldHRlcixcbiAgICAgICAgICAgICAgICAgICAgc2hvcDogaGVhZGVyQnV0dG9ucz8udGV4dHM/LnNob3AsXG4gICAgICAgICAgICAgICAgICAgIHdoYXRzYXBwOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8ud2hhdHNhcHAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhoZWFkZXJCdXR0b25zPy5saW5rcyksXG4gICAgICAgICAgICAgICAgdXNlckxpbms6IFV0aWxzLm1hcEJ1dHRvbnMoaGVhZGVyQnV0dG9ucz8ubGlua3M/LnVzZXJMaW5rPy5bMF0pLFxuICAgICAgICAgICAgfSBhcyBCYWJ5bG9uRmxvYXRpbmdCdXR0b25zSTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b25zLFxuICAgICAgICAgICAgaGVhZGVyQnV0dG9uc01vZGFsQnV0dG9ucyxcbiAgICAgICAgICAgIGhlYWRlckJ1dHRvbnNNb2RhbFRpdGxlLFxuICAgICAgICAgICAgaGVhZGVyQnV0dG9uc01vZGFsSW1hZ2U6XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaGVhZGVyQnV0dG9uc01vZGFsSW1hZ2UpID8/XG4gICAgICAgICAgICAgICAgaGVhZGVyQnV0dG9uc01vZGFsSW1hZ2VTcmMsXG4gICAgICAgICAgICBoZWFkZXJGaXhlZDogZmFsc2UsXG4gICAgICAgICAgICB0ZXh0czogdGV4dHMsXG4gICAgICAgICAgICBmbG9hdGluZ0J1dHRvbnM6IHRoaXMuZmxvYXRpbmdCdXR0b25zLFxuICAgICAgICAgICAgbGFuZzogdGhpcy5zaXRlU3ZjLnNlbGVjdGVkTGFuZ3VhZ2VJbnN0YW50Py5sb2NhdGU/LnRvVXBwZXJDYXNlKCksXG4gICAgICAgICAgICBidG5Cb29rOiB7IGxhYmVsOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8uYm9va05vdyB9LFxuICAgICAgICAgICAgc2hvcDogaGVhZGVyQnV0dG9ucz8udGV4dHM/LnNob3BcbiAgICAgICAgICAgICAgICA/IGBpY29uLSR7aGVhZGVyQnV0dG9ucz8udGV4dHM/LnNob3B9YFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbmV3czogaGVhZGVyQnV0dG9ucz8udGV4dHM/Lm5ld3NsZXR0ZXJcbiAgICAgICAgICAgICAgICA/IGBpY29uLSR7aGVhZGVyQnV0dG9ucz8udGV4dHM/Lm5ld3NsZXR0ZXJ9YFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaGVhZGVyQnV0dG9ucz8ubGlua3MpLFxuICAgICAgICAgICAgdXNlckxpbms6IFV0aWxzLm1hcEJ1dHRvbnMoaGVhZGVyQnV0dG9ucz8ubGlua3M/LnVzZXJMaW5rPy5bMF0pLFxuICAgICAgICAgICAgbGlua0xvZ286IHtcbiAgICAgICAgICAgICAgICBsYWJlbDogbGluaz8ubGFiZWwsXG4gICAgICAgICAgICAgICAgdXJsOiBsaW5rPy5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgbGlua1R5cGU6IGxpbms/LmxpbmtUeXBlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1lbnU6IG1lbnU/Lm5hdj8ubWFwKFxuICAgICAgICAgICAgICAgIChtZW51OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBtZW51Py5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtZW51Py5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJzOiBtZW51Py5saW5rVmFycyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiBtZW51Py5saW5rVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBtZW51Py50cmFuc2xhdGlvbnM/LlswXT8ubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbWVudT8udHJhbnNsYXRpb25zPy5bMF0/Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG1lbnU/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogbWVudT8uY2hpbGRyZW4/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hpbGQ6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGNoaWxkPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBjaGlsZD8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyczogbWVudT8ubGlua1ZhcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogY2hpbGQ/LmxpbmtUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGNoaWxkPy50cmFuc2xhdGlvbnM/LlswXT8ubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY2hpbGQ/LnRyYW5zbGF0aW9ucz8uWzBdPy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjaGlsZD8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogbWVudT8ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25NZW51QnV0dG9uSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG1lbnVJbmZvOiB0aGlzLm1hcE1lbnUobWVudSwgdW5kZWZpbmVkKSxcbiAgICAgICAgfSBhc1xuICAgICAgICAgICAgfCBCYWJ5bG9uSGVhZGVyQm9va1Nob3dJXG4gICAgICAgICAgICB8IEJhYnlsb25IZWFkZXJDbGVhcklcbiAgICAgICAgICAgIHwgQmFieWxvbkhlYWRlck1lbnVDZW50ZXJJXG4gICAgICAgICAgICB8IEJhYnlsb25IZWFkZXJNZW51TG9nb0NlbnRlcklcbiAgICAgICAgICAgIHwgQmFieWxvbkhlYWRlck1lbnVTaG93STtcbiAgICB9XG5cbiAgICAvL1RPRE86IFdhaXQgZm9yIGJhY2sgaW5mb1xuICAgIG1hcE1lbnUoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHNvY2lhbE1lZGlhOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uTWVudUluZm9JIHtcbiAgICAgICAgY29uc3QgbGlua3MgPSBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgcHJvcHM/Lm5hdj8ubWFwKChsaW5rOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4ubGluayxcbiAgICAgICAgICAgICAgICBsYWJlbDogbGluay50cmFuc2xhdGlvbnM/LlswXT8ubmFtZSxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGNvbnRhY3QgPSAoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmF3ID0gVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3M/LmNvbnRhY3Q/LlswXSk7IC8vIHAuZWouIFt1bmRlZmluZWQsIHVuZGVmaW5lZF1cbiAgICAgICAgICAgIGNvbnN0IGxpbmtzID0gQXJyYXkuaXNBcnJheShyYXcpID8gcmF3LmZpbHRlcihCb29sZWFuKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgY29uc3QgcmF3VGl0bGUgPVxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uY29udGFjdFRpdGxlPy5jb250YWluO1xuXG4gICAgICAgICAgICBjb25zdCB0aXRsZSA9XG4gICAgICAgICAgICAgICAgdHlwZW9mIHJhd1RpdGxlID09PSAnc3RyaW5nJyAmJiByYXdUaXRsZT8udHJpbSgpLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IHJhd1RpdGxlPy50cmltKClcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIGlmICghbGlua3M/Lmxlbmd0aCAmJiAhdGl0bGUpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uKGxpbmtzPy5sZW5ndGggPyB7IGxpbmtzIH0gOiB7fSksXG4gICAgICAgICAgICAgICAgLi4uKHRpdGxlID8geyB0aXRsZSB9IDoge30pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSkoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxpbmtzOiBsaW5rcz8uc2xpY2UoMCwgNiksXG4gICAgICAgICAgICBib3R0b21MaW5rczogbGlua3M/LnNsaWNlKDYpLFxuICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHByb3BzPy5hZGRyZXNzPy5bMF0/LmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgY2l0eTogcHJvcHM/LmFkZHJlc3M/LlswXT8uY2l0eSxcbiAgICAgICAgICAgICAgICBjb3VudHJ5OiBwcm9wcz8uYWRkcmVzcz8uWzBdPy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgIGNwOiBwcm9wcz8uYWRkcmVzcz8uWzBdPy5jcCxcbiAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICBwcm92aW5jZTogcHJvcHM/LmFkZHJlc3M/LlswXT8ucHJvdmluY2UsXG4gICAgICAgICAgICAgICAgdXJsOiBwcm9wcz8uYWRkcmVzcz8uWzBdPy5saW5rLFxuICAgICAgICAgICAgICAgIGxpbmtzOiB7XG4gICAgICAgICAgICAgICAgICAgIHVybDogcHJvcHM/LmFkZHJlc3M/LlswXT8ubGluayxcbiAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb250YWN0OiBjb250YWN0LFxuICAgICAgICAgICAgc29jaWFsTWVkaWE6IHNvY2lhbE1lZGlhPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBiYWJ5bG9uLSR7aXRlbS5uYW1lPy50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0udXJsLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbj8uWzBdID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1nQmFja2dyb3VuZDogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmQ/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGxpbmtMb2dvOiB7XG4gICAgICAgICAgICAgICAgdXJsOiBwcm9wcz8ubGlua3M/LmxvZ29MaW5rPy5bMF0/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICBsaW5rVHlwZTogcHJvcHM/LmxpbmtzPy5sb2dvTGluaz8uWzBdPy5saW5rVHlwZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgY29udGFjdFRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGFkZHJlc3NUaXRsZTogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgY29udGFjdFRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBhZGRyZXNzVGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGltZ3M6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25NZW51SW5mb0k7XG4gICAgfVxuXG4gICAgbWFwSW5mbzJpbWcoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHJpZ2h0U2lkZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgKTogQmFieWxvbkluZm8yaW1nSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByaWdodFNpZGU6IHJpZ2h0U2lkZSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICAgICAgaXRlbTE6IHByb3BzPy50ZXh0cz8uaXRlbTEsXG4gICAgICAgICAgICAgICAgaXRlbTFUZXh0OiBwcm9wcz8udGV4dHM/Lml0ZW0xVGV4dCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltYWdlc3NtYWxsOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXNzbWFsbCxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGFkdmFudGFnZXM6IHByb3BzPy5WZW50YWphcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm8yaW1nSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvMmNvbGltZyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2VcbiAgICApOiBCYWJ5bG9uSW5mbzJDb2xJbWdJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJpZ2h0U2lkZTogcmlnaHRTaWRlLFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc21hbGxpbWFnZTogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uc21hbGxpbWFnZSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mbzJDb2xJbWdJO1xuICAgIH1cblxuICAgIG1hcFppZ3phZyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2UsXG4gICAgICAgIGlkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25JbmZvMmltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgaW1hZ2VzOiAoc3RyaW5nIHwgQmFieWxvbkltYWdlSSlbXSB8IHVuZGVmaW5lZCA9IFtdO1xuICAgICAgICBsZXQgdGV4dHMsIHRhZ3M7XG4gICAgICAgIGltYWdlcyA9IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMgPz8gcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlcyxcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgICAgIHRleHRzID0ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICh0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICh0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgY29udGVudHRpdGxlOlxuICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudHRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50dGl0bGUsXG4gICAgICAgICAgICBjb250ZW50c3VidGl0bGU6XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50c3VidGl0bGU/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnRzdWJ0aXRsZSxcbiAgICAgICAgICAgIGNvbnRlbnRkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnRkZXNjcmlwdGlvbj8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudGRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgbG9nbzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmxvZ28/LlswXSwgZmFsc2UpLFxuICAgICAgICAgICAgaWNvbnM6IHByb3BzPy5WZW50YWphcz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/LnRpdGxlIHx8IGl0ZW0/LnRleHRcbiAgICAgICAgICAgICk/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICBpY29uOiBpdGVtLmljb24gPyBgaWNvbi0ke2l0ZW0uaWNvbn1gIDogJycsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBpY29uVGl0bGU6XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pY29udGl0bGU/LmNvbnRhaW4gPz8gcHJvcHM/LnRleHRzPy5pY29udGl0bGUsXG4gICAgICAgIH07XG4gICAgICAgIHRhZ3MgPSB7XG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIGNvbnRlbnR0aXRsZTogcHJvcHM/LnRleHRzPy5jb250ZW50dGl0bGU/LnRhZyxcbiAgICAgICAgICAgIGNvbnRlbnRzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5jb250ZW50c3VidGl0bGU/LnRhZyxcbiAgICAgICAgICAgIGNvbnRlbnRkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5jb250ZW50ZGVzY3JpcHRpb24/LnRhZyxcbiAgICAgICAgICAgIGljb25UaXRsZTogcHJvcHM/LnRleHRzPy5pY29udGl0bGU/LnRhZyxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmlnaHRTaWRlOiByaWdodFNpZGUsXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zLmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGV4dHMsXG4gICAgICAgICAgICBpbWFnZXMsXG4gICAgICAgICAgICB0YWdzLFxuICAgICAgICAgICAgdmlkZW9EYXRhOiBwcm9wcz8udGV4dHM/LnZpZGVvVXJsLFxuICAgICAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mbzJpbWdJO1xuICAgIH1cblxuICAgIG1hcEdyaWRHYWxsZXJ5KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mb0ltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBpc0luRW51bSA9IDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4oXG4gICAgICAgICAgICBlbnVtT2JqOiBULFxuICAgICAgICAgICAgdmFsdWU6IGFueVxuICAgICAgICApOiB2YWx1ZSBpcyBUW2tleW9mIFRdID0+IE9iamVjdC52YWx1ZXMoZW51bU9iaikuaW5jbHVkZXModmFsdWUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgIGhvdmVyOiBwcm9wcz8udGV4dHM/LmhvdmVyLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgdmlldzogaXNJbkVudW0oVmlld3NUeXBlLCBwcm9wcz8ubXVsdGltZWRpYT8udmlldylcbiAgICAgICAgICAgICAgICA/IHByb3BzPy5tdWx0aW1lZGlhPy52aWV3XG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvSW1nSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvR3JpZChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm9HcmlkSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zLmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBpdGVtLmJ1dHRvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5idXR0b25zLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT4gbGluaz8ubGlua1ZhbHVlICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IGl0ZW0ubGlua3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5saW5rcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+IGxpbms/LmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/LlswXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSW5mb0dyaWRJdGVtSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb0dyaWRJO1xuICAgIH1cblxuICAgIG1hcEJhbm5lckdhbGxlcnkoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uQmFubmVyR2FsbGVyeUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaG92ZXI6IHByb3BzPy50ZXh0cz8uaG92ZXIsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQmFubmVyR2FsbGVyeUk7XG4gICAgfVxuXG4gICAgbWFwQmFubmVyTmV3c2xldHRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgaWRlbnRpZmllcjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkJhbm5lck5ld3NsZXR0ZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBob3ZlcjogcHJvcHM/LnRleHRzPy5ob3ZlcixcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgICAgICBpY29uOiBwcm9wcz8udGV4dHM/Lm1haWxJY29uLFxuICAgICAgICB9IGFzIEJhYnlsb25CYW5uZXJOZXdzbGV0dGVySTtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXJDb2xsMihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2VcbiAgICApOiBCYWJ5bG9uVG9wU2xpZGVyVjJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHByb3BzXG4gICAgICAgICAgICA/ICh7XG4gICAgICAgICAgICAgICAgICByaWdodFNpZGU6IHJpZ2h0U2lkZSxcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICAgICAgICBpbWFnZXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblNsaWRlcjJDb2xJdGVtSVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9IGFzIEJhYnlsb25Ub3BTbGlkZXJWMkkpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXJDb2xsKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBpZGVudGlmaWVyOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uVG9wU2xpZGVyVjJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IGltYWdlczogKHN0cmluZyB8IEJhYnlsb25JbWFnZUkpW10gfCB1bmRlZmluZWQgPSBbXTtcbiAgICAgICAgaWYgKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcykge1xuICAgICAgICAgICAgaW1hZ2VzID0gcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbWFnZVJlc3BvbnNlID0gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgc3JjOlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGltYWdlUmVzcG9uc2UgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWFnZVJlc3BvbnNlLnNyY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW1hZ2VSZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgYWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGltYWdlUmVzcG9uc2UgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWFnZVJlc3BvbnNlLmFsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuPy5saW5rVmFsdWUgIT09IG51bGwgfHwgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubGlua3M/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+IGJ0bi5saW5rVmFsdWUgIT09IG51bGwgfHwgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uSW1hZ2VJO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXMpIHtcbiAgICAgICAgICAgIGltYWdlcyA9IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXM/Lm1hcCgoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlUmVzcG9uc2UgPSB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBzcmM6XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgaW1hZ2VSZXNwb25zZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltYWdlUmVzcG9uc2Uuc3JjXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbWFnZVJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgICBhbHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgaW1hZ2VSZXNwb25zZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltYWdlUmVzcG9uc2UuYWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbCB8fCB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbCB8fCB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25JbWFnZUk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvcHNcbiAgICAgICAgICAgID8gKHtcbiAgICAgICAgICAgICAgICAgIGltYWdlczogaW1hZ2VzLFxuICAgICAgICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgdG9wQkc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy50b3BiZz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgYm90dG9tQkc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5ib3R0b21iZz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgdG9wQ29sb3I6IHByb3BzPy50ZXh0cz8udG9wQ29sb3IsXG4gICAgICAgICAgICAgICAgICBib3R0b21Db2xvcjogcHJvcHM/LnRleHRzPy5Cb3R0b21Db2xvcixcbiAgICAgICAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uVG9wU2xpZGVyVjJJKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwSXRlbXNHcmlkKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSXRlbXNHcmlkSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBwcm9wc1xuICAgICAgICAgICAgPyAoe1xuICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbWFnZVJlc3BvbnNlID0gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgaW1hZ2VSZXNwb25zZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWFnZVJlc3BvbnNlLnNyY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGltYWdlUmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGltYWdlUmVzcG9uc2UgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1hZ2VSZXNwb25zZS5hbHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5saW5rcz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+IGJ0bi5saW5rVmFsdWUgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25JbWFnZUk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH0gYXMgQmFieWxvbkl0ZW1zR3JpZEkpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBSb29tKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mbzJpbWdJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJvb21zOiBwcm9wcz8ucm9vbXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBpdGVtLm11bHRpbWVkaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PiBpbWcuY292ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpbWcucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1nLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JbWFnZUlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDI6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsNDogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZXM6IGl0ZW0/LnNlcnZpY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8udHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh2OiBzdHJpbmcpID0+IHY/LnRyaW0oKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhSb29tU2VydmljZVR5cGUuY2hhcmFjdGVyaXN0aWNzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblJvb21JbmZvSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mbzJpbWdJO1xuICAgIH1cblxuICAgIG1hcFJvb21zR3JpZChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblJvb21zR3JpZEkgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgcm9vbXMgPSBwcm9wcz8ucm9vbXNcbiAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRuPy5saW5rVHlwZT8uaW5jbHVkZXMoJ2ludGVybmFsJykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ0bj8ubGlua1R5cGU/LmluY2x1ZGVzKCdzZWxmX2xpbmsnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaXRlbT8ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IGl0ZW0ubXVsdGltZWRpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZykgPT4gdGFnLm5hbWUgPT09ICdSb29tc0dyaWQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpbWcucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1nLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcubmFtZSA9PT0gJ1Jvb21zR3JpZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvb21zR3JpZE1vYmlsZVRodW1ibmFpbFNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yb29tc0dyaWRTbWFsbFRhYmxldFRodW1ibmFpbFNpemVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZzogaW1nLnRhZ3M/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWc6IGFueSkgPT4gdGFnPy5maWx0ZXJhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JbWFnZUlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5zbGljZSgwLCAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMzogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDQ6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzOiBpdGVtPy5zZXJ2aWNlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodjogc3RyaW5nKSA9PiB2Py50cmltKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoUm9vbVNlcnZpY2VUeXBlLmNoYXJhY3RlcmlzdGljcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uY2xhc3N9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Sb29tSW5mb0lcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zb3J0KChhOiBCYWJ5bG9uUm9vbXNMaXN0SXRlbSwgYjogQmFieWxvblJvb21zTGlzdEl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKGEub3JkZXIgPz8gMCkgLSAoYi5vcmRlciA/PyAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcm9vbXM6IHByb3BzPy5idXR0b25zID8gcm9vbXM/LnNsaWNlKDAsIDUpIDogcm9vbXMsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uUm9vbXNHcmlkSTtcbiAgICB9XG5cbiAgICBtYXBSb29tc1NsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblJvb21zU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBoaWRlTW9kdWxlID1cbiAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaGlkZSAmJiBwcm9wcz8udGV4dHM/LmhpZGU/LnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJ1xuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgICAgICBoaWRlOiBoaWRlTW9kdWxlLFxuICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZUNvbnRhaW46IHtcbiAgICAgICAgICAgICAgICAgICAgdGFnOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0aXRsZUNvbnRhaW46IHtcbiAgICAgICAgICAgICAgICAgICAgdGFnOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJvb21zOiBwcm9wcz8ucm9vbXNcbiAgICAgICAgICAgICAgICA/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKHJvb206IGFueSwgaW5kZXg6IG51bWJlciwgc2VsZjogYW55W10pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZpbmRJbmRleCgocikgPT4gci5pZCA9PT0gcm9vbS5pZCkgPT09IGluZGV4XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5pZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmlkX2hhYml0YWNpb24gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5uYW1lSWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnM/LnNsaWNlKCkucmV2ZXJzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+IGltZz8uY292ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfHwgaXRlbT8ubXVsdGltZWRpYT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDQ6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0/Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVxdWlwbWVudHM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnNlcnZpY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoc3ZjOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBzdmMudHlwZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc3ZjLnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh0OiBzdHJpbmcpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdD8udHJpbSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzQ2hhcmFjdGVyaXN0aWMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlcy5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvb21TZXJ2aWNlVHlwZS5jaGFyYWN0ZXJpc3RpY3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNDbGFzcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhc3ZjLmNsYXNzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2Yy5jbGFzcy50b1N0cmluZygpPy50cmltKCkgIT09ICcnO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc0NoYXJhY3RlcmlzdGljICYmIGhhc0NsYXNzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubWFwKChzdmM6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBzdmMubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke3N2Yy5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpID8/IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblJvb21JbmZvSVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc29ydCgoYTogQmFieWxvblJvb21zTGlzdEl0ZW0sIGI6IEJhYnlsb25Sb29tc0xpc3RJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoYS5vcmRlciA/PyAwKSAtIChiLm9yZGVyID8/IDApO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICB9IGFzIEJhYnlsb25Sb29tc1NsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwT2ZmZXJTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25PZmZlclNsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGJhY2tncm91bmRJbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmRpbWFnZW5lcz8uWzBdIHx8XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5iYWNrZ3JvdW5kaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG9mZmVyczogcHJvcHM/Lm9mZmVycz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkZyb206IGl0ZW0/LmFwcGxpY2F0aW9uRnJvbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uVG86IGl0ZW0/LmFwcGxpY2F0aW9uVG8sXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeTogaXRlbT8uY3VycmVuY3ksXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNjb3VudDogaXRlbT8uZGlzY291bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDM6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbnM6IGl0ZW0udGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtLnRleHRzPy5yZXNlcnZhdGlvblVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgQmFieWxvblRleHRJbmZvSSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXRlbT8udXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZUZyb206IGl0ZW0/LnZpc2libGVGcm9tLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZVRvOiBpdGVtPy52aXNpYmxlVG8sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25PZmZlcklcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbk9mZmVyU2xpZGVySTtcbiAgICB9XG4gICAgLy8tLS0tIExBWU9VVCBDT01QT05FTlRTIEVORC0tLS0vL1xuXG4gICAgbWFwVGhhbmtzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uVGhhbmtzSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgIH0gYXMgQmFieWxvblRoYW5rc0k7XG4gICAgfVxuXG4gICAgbWFwQ29udGFjdEZvcm0oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5kUHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgbmRQcm9wc0NvbnN1bHQ6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25Db250YWN0Rm9ybUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy5jb250YWluLFxuICAgICAgICAgICAgc3VidGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uc3VidGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5zdWJ0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy50YWcsXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0czogdGhpcy5tYXBHbG9iYWxUZXh0cyhwcm9wcz8udGV4dHMpIGFzIEJhYnlsb25UZXh0SW5mb0ksXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICB0ZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIGlkOiAnbWVuc2FqZScsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRNZXNzYWdlLFxuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dE1lc3NhZ2UpLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0TWVzc2FnZVBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JSZXF1aXJlZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb25kaXRpb25zOiBwcm9wcz8udGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICBjb25kaXRpb25zMjogcHJvcHM/LnRleHRzPy5jb25kaXRpb25zMixcbiAgICAgICAgICAgIGRyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uZHJvcGRvd25UaXRsZSxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBuZFByb3BzQ29uc3VsdD8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdWx0VHlwZUlkOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wLmNvbnN1bHRfdHlwZV9pZCA/PyBwcm9wLmNvbnN1bHRUeXBlSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogcHJvcC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcm9wLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uZHJvcGRvd25QbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclJlcXVpcmVkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhvdGVsRHJvcDpcbiAgICAgICAgICAgICAgICBwcm9wcz8uaG90ZWxzPy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5ob3RlbERyb3BUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBwcm9wLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcm9wLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaG90ZWxEcm9wUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yUmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSBhcyBzdHJpbmcsXG4gICAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAnbm9tYnJlJyxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXROYW1lLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXROYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXROYW1lUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvck5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAnc3VybmFtZScsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dFN1cm5hbWVzID8/XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0bGFzdG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0U3VybmFtZXMgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0bGFzdG5hbWVcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0U3VybmFtZXNQbGFjZUhvbGRlciA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dGxhc3RuYW1lUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclN1cm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCksXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWxQbGFjZUhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yRW1haWwsXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAncGhvbmUnLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSksXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0UGhvbmVQbGFjZUhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGVsJyxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JQaG9uZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSBhcyBCYWJ5bG9uSW5wdXRJW10sXG4gICAgICAgICAgICBpbmZvOiB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgbmRQcm9wcz8udGV4dHM/LmFkZHJlc3NJY29uLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbmRQcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogbmRQcm9wcz8ubGlua3M/LmFkZHJlc3M/LlswXT8uWzBdPy5sYWJlbCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyBuZFByb3BzPy50ZXh0cz8uZW1haWxJY29uLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbmRQcm9wcz8udGV4dHM/LmVtYWlsVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKG5kUHJvcHM/LmxpbmtzPy5lbWFpbD8uWzBdKT8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5idG4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYG1haWx0bzoke2J0bj8udXJsfWxgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwaG9uZToge1xuICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgbmRQcm9wcz8udGV4dHM/LnBob25lSWNvbixcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG5kUHJvcHM/LnRleHRzPy5waG9uZVRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhuZFByb3BzPy5saW5rcz8ucGhvbmU/LlswXSk/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgIChidG4pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYnRuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGBwaG9uZToke2J0bj8udXJsfWxgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbkNvbnRhY3RGb3JtSTtcbiAgICB9XG5cbiAgICBtYXBDb250YWN0QWRkcmVzcyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25Db250YWN0QWRkcmVzc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBhZGRyZXNzU291cmNlID0gcHJvcHM/LmhvdGVsQWRkcmVzcyA/PyBwcm9wcz8uYWRkcmVzcz8uWzBdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW5mbzoge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIHByb3BzPy50ZXh0cz8uYWRkcmVzc0ljb24sXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBhZGRyZXNzU291cmNlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NTb3VyY2U/LmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWRkcmVzc1NvdXJjZT8uY3AsIGFkZHJlc3NTb3VyY2U/LmNpdHldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCcgJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzU291cmNlPy5sb2NhbGl0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthZGRyZXNzU291cmNlPy5wcm92aW5jZSwgYWRkcmVzc1NvdXJjZT8uY291bnRyeV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oJywgJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHBhcnQsIGlkeCwgYXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA9PT0gMCkgcmV0dXJuIHBhcnQgKyAnPGJyPic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA9PT0gMSAmJiBhcnJbMl0pIHJldHVybiBwYXJ0ICsgJywgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ID09PSAxKSByZXR1cm4gcGFydCArICc8YnI+JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ID09PSAyKSByZXR1cm4gcGFydCArICc8YnI+JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFydDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuam9pbignJylcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50ZXh0MSB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhZGRyZXNzU291cmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYWRkcmVzc1NvdXJjZS5saW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy51cmwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBhZGRyZXNzU291cmNlPy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSBhcyAoeyBzbWFsbFRleHQ/OiBzdHJpbmcgfSAmIEJhYnlsb25CdXR0b25JKVtdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZW1haWw6IHtcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIHByb3BzPy50ZXh0cz8uZW1haWxJY29uLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmVtYWlsVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmVtYWlsVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uZW1haWxUaXRsZT8uY29udGFpbiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc1NvdXJjZT8uZW1haWwsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzU291cmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgbWFpbHRvOiR7YWRkcmVzc1NvdXJjZT8uZW1haWx9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2V4dGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogYWRkcmVzc1NvdXJjZT8uZW1haWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxUZXh0OiBhZGRyZXNzU291cmNlPy5lbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHByb3BzPy50ZXh0cz8udXJsMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2V4dGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogcHJvcHM/LnRleHRzPy50ZXh0MixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbWFsbFRleHQ6IHByb3BzPy50ZXh0cz8udGV4dDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdIGFzICh7IHNtYWxsVGV4dD86IHN0cmluZyB9ICYgQmFieWxvbkJ1dHRvbkkpW10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwaG9uZToge1xuICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgcHJvcHM/LnRleHRzPy5yZXNlcnZhdGlvbnNJY29uLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnJlc2VydmF0aW9uc1RpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5yZXNlcnZhdGlvbnNUaXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5yZXNlcnZhdGlvbnNUaXRsZT8uY29udGFpbiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc1NvdXJjZT8ucGhvbmUsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBhZGRyZXNzU291cmNlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IChbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgdGVsOiR7YWRkcmVzc1NvdXJjZT8ucGhvbmV9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2V4dGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogYWRkcmVzc1NvdXJjZT8ucGhvbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxUZXh0OiBhZGRyZXNzU291cmNlPy5waG9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgdGVsOiR7YWRkcmVzc1NvdXJjZT8ucGhvbmV0d299YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2V4dGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogYWRkcmVzc1NvdXJjZT8ucGhvbmV0d28sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxUZXh0OiBhZGRyZXNzU291cmNlPy5waG9uZXR3byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0gYXMgKHsgc21hbGxUZXh0Pzogc3RyaW5nIH0gJiBCYWJ5bG9uQnV0dG9uSSlbXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYG1haWx0bzoke3Byb3BzPy50ZXh0cz8udXJsM31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcz8udGV4dHM/LnRleHQzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsVGV4dDogcHJvcHM/LnRleHRzPy50ZXh0MyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgdGVsOiR7cHJvcHM/LnRleHRzPy51cmw0fWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzPy50ZXh0cz8udGV4dDQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxUZXh0OiBwcm9wcz8udGV4dHM/LnRleHQ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBDb250YWN0TWFwKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQ29udGFjdE1hcGFJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbnRlbnRVcmw6IHByb3BzPy50ZXh0cz8ucGhvbmVJY29uLFxuICAgICAgICAgICAgbWFwSW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgbWFwSW1hZ2VNb2JpbGU6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lc21vYmlsZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25Db250YWN0TWFwYUk7XG4gICAgfVxuXG4gICAgbWFwQ29udGFjdEhvdyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkNvbnRhY3RIb3dJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/LlZlbnRhamFzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Db250YWN0TWFwSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQ29udGFjdEhvd0k7XG4gICAgfVxuXG4gICAgbWFwV2VibWFwKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uV2VibWFwSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaW5rczogKFxuICAgICAgICAgICAgICAgIHByb3BzPy5wYWdlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGluay5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbGluay51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgICAgICkgYXMgQmFieWxvbkJ1dHRvbklbXVxuICAgICAgICAgICAgKS5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGxpbmspID0+XG4gICAgICAgICAgICAgICAgICAgIGxpbmsudXJsPy5zcGxpdCgnLycpWzFdID09PVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmxvY2F0ZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICkgYXMgc3RyaW5nLFxuICAgICAgICAgICAgZ3JvdXBCeUNhdGVnb3J5OiB0aGlzLmhhc1RleHRUb2tlblZhbHVlKFxuICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uZ3JvdXBCeUNhdGVnb3J5XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbWFwTGVnYWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25MZWdhbEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy5jb250YWluLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25MZWdhbEk7XG4gICAgfVxuXG4gICAgbWFwQnJlYWRjcnVtYnMoY29tcG9uZW50OiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQnJlYWRjcnVtYkkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWRlbnRpZmllcjogY29tcG9uZW50Py5pZGVudGlmaWVyLFxuICAgICAgICAgICAgdGV4dGNvbG9yOiBjb21wb25lbnQ/LnRleHRjb2xvcixcbiAgICAgICAgICAgIGxpbmtzOiAoY29tcG9uZW50Py5wcm9wcz8uaXRlbXMgYXMgYW55W10pXG4gICAgICAgICAgICAgICAgPy5zb3J0KChhLCBiKSA9PiBhIC0gYilcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBpdGVtPy5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2ludGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0/LnVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW0/LnVybD8uY2hhckF0KGl0ZW0/LnVybD8ubGVuZ3RoIC0gMSkgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy8nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW0/LnVybD8uc2xpY2UoMCwgLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGl0ZW0/LnVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQnJlYWRjcnVtYkk7XG4gICAgfVxuXG4gICAgbWFwUm9vbXNDb2xzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uUm9vbXNDb2xzSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmaWx0ZXJzOiBwcm9wcz8uZmlsdGVycz8ubWFwKChmaWx0ZXI6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogZmlsdGVyLm5hbWUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogZmlsdGVyPy52YWx1ZXM/Lm1hcCgob3B0aW9uOiBzdHJpbmcpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IG9wdGlvbixcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogb3B0aW9uLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogZmlsdGVyLm5hbWUsXG4gICAgICAgICAgICAgICAgc21hbGx0aXRsZTogZmlsdGVyLnNtYWxsdGl0bGUsXG4gICAgICAgICAgICAgICAgZmlsdGVySWQ6IGZpbHRlci5maWx0ZXJJZCxcbiAgICAgICAgICAgIH0pKSBhcyBCYWJ5bG9uRHJvcGRvd25JW10sXG4gICAgICAgICAgICBzdEZpbHRlcnM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG5kRmlsdGVyczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5yb29tc1xuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWRyb29tRmlsdGVySWQ6IGl0ZW0/LnRleHRzPy5iZWRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcmlzdGljc0ZpbHRlcklkOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbS5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0/LnByaWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlVGV4dDogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0/Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVxdWlwbWVudDogaXRlbT8uc2VydmljZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh2OiBzdHJpbmcpID0+IHY/LnRyaW0oKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvb21TZXJ2aWNlVHlwZS5jaGFyYWN0ZXJpc3RpY3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Sb29tc0xpc3RFcXVpcG1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm11bHRpbWVkaWE/LmZpbmQoKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWcpID0+IHRhZy5uYW1lID09PSAnUm9vbXNDb2xzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA/PyBpdGVtLm11bHRpbWVkaWE/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5tdWx0aW1lZGlhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uUm9vbXNMaXN0SXRlbVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc29ydCgoYTogQmFieWxvblJvb21zTGlzdEl0ZW0sIGI6IEJhYnlsb25Sb29tc0xpc3RJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoYS5vcmRlciA/PyAwKSAtIChiLm9yZGVyID8/IDApO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICB9IGFzIEJhYnlsb25Sb29tc0NvbHNJO1xuICAgIH1cblxuICAgIG1hcEZlYXR1cmVzU2xpZGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkZlYXR1cmVzU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/LlZlbnRhamFzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25GZWF0dXJlc1NsaWRlckl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgIH0gYXMgQmFieWxvbkZlYXR1cmVzU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBCYW5uZXJJbmZvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQmFubmVySW5mb0kge1xuICAgICAgICBsZXQgaW1nID1cbiAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdID8/IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTogaW1nPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBpbWc/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICB2aWRlbzogcHJvcHM/LnRleHRzPy5bJ1ZpZGVvLWxpbmsnXSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpbWc/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZywgZmFsc2UpLFxuICAgICAgICAgICAgZXh0cmFDbGFzczogcHJvcHM/LnRleHRzPy5leHRyYUNsYXNzLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQmFubmVySW5mb0k7XG4gICAgfVxuXG4gICAgbWFwUm9vbURldGFpbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblJvb21EZXRhaWxJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFwcm9wcz8ucm9vbSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhLCBidXR0b25zIH0gPSBwcm9wcz8ucm9vbTtcbiAgICAgICAgbGV0IGRldGFpbEJ1dHRvbnMgPSBwcm9wcy5idXR0b25zPy5sZW5ndGggPyBwcm9wcy5idXR0b25zIDogYnV0dG9ucztcbiAgICAgICAgaWYgKGJ1dHRvbnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgZGV0YWlsQnV0dG9ucyA9IFtidXR0b25zWzBdXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHRleHRzPy5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgdGV4dHM/LmFkZGl0aW9uYWw0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICB0ZXh0cz8uYWRkaXRpb25hbDQgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICB0ZXh0cz8uYWRkaXRpb25hbDQgIT09ICcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LmFkZGl0aW9uYWw0XG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGVxdWlwbWVudFRpdGxlOiB0ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoZGV0YWlsQnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ucm9vbT8uc2VydmljZXNcbiAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICBpdGVtPy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICA/LnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHY6IHN0cmluZykgPT4gdj8udHJpbSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKFJvb21TZXJ2aWNlVHlwZS5FcXVpcG1lbnQpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbT8uY2xhc3N9YCxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIH0pKSBhcyBCYWJ5bG9uRXF1aXBtZW50SXRlbVtdLFxuICAgICAgICAgICAgc2hvd0xlc3M6IHByb3BzPy50ZXh0cz8uc2hvd0xlc3MsXG4gICAgICAgICAgICBzaG93TW9yZTogcHJvcHM/LnRleHRzPy5zaG93TW9yZSxcbiAgICAgICAgICAgIHNob3dBbGw6IHByb3BzPy50ZXh0cz8uc2hvd0FsbCA/IGZhbHNlIDogdHJ1ZSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcm9vbVRleHRzOiB0ZXh0cyxcbiAgICAgICAgfSBhcyBCYWJ5bG9uUm9vbURldGFpbEk7XG4gICAgfVxuXG4gICAgbWFwVG9wU2xpZGVyVGh1bWJzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uVG9wU2xpZGVyVGh1bWJzSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGZyb206IHByb3BzPy50ZXh0cz8uZnJvbSxcbiAgICAgICAgICAgIHByaWNlOiBwcm9wcz8udGV4dHM/LnByaWNlLFxuICAgICAgICAgICAgY3VycmVuY3k6IHByb3BzPy50ZXh0cz8uY3VycmVuY3ksXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBpbWFnZTogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbj8ubWFwKChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PiAoe1xuICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgQmFieWxvblRvcFNsaWRlclRodW1ic0k7XG4gICAgfVxuXG4gICAgbWFwUm9vbXNMaXN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uUm9vbXNMaXN0SSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdEZpbHRlcnM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG5kRmlsdGVyczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ucm9vbXNcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVkcm9vbUZpbHRlcklkOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcmlzdGljc0ZpbHRlcklkOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5zbGljZSgpLnJldmVyc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2VUZXh0OiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1aXBtZW50OiBpdGVtPy5zZXJ2aWNlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8udHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHY6IHN0cmluZykgPT4gdj8udHJpbSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9vbVNlcnZpY2VUeXBlLmNoYXJhY3RlcmlzdGljc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmNsYXNzfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblJvb21zTGlzdEVxdWlwbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubXVsdGltZWRpYT8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbWc6IGFueSkgPT4gaW1nPy5jb3ZlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHx8IGl0ZW0/Lm11bHRpbWVkaWE/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5tdWx0aW1lZGlhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0/Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblJvb21zTGlzdEl0ZW1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnNvcnQoKGE6IEJhYnlsb25Sb29tc0xpc3RJdGVtLCBiOiBCYWJ5bG9uUm9vbXNMaXN0SXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGEub3JkZXIgPz8gMCkgLSAoYi5vcmRlciA/PyAwKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uUm9vbXNDb2xzSTtcbiAgICB9XG5cbiAgICBtYXBDb21pbmdTb29uKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQ29taW5nU29vbkkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW1hZ2VzOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSW1hZ2VJXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbG9nbzogcHJvcHM/Lm11bHRpbWVkaWE/LmxvZ28/Lm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSW1hZ2VJXG4gICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgdGV4dHM6IHByb3BzPy50ZXh0cyxcbiAgICAgICAgICAgIHNvY2lhbE1lZGlhOiBwcm9wcz8uc29jaWFsTWVkaWEsXG4gICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcyk/LlswXSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQ29taW5nU29vbkk7XG4gICAgfVxuXG4gICAgbWFwT2ZmZXJEZXRhaWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25PZmZlckRldGFpbEkge1xuICAgICAgICBjb25zdCBvZmZlciA9IHByb3BzPy5vZmZlcj8uWzBdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IG9mZmVyPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogb2ZmZXI/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBvZmZlcj8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgbmRUaXRsZTogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGxhYmVsRGlzY291bnQ6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICBsYWJlbEZyb206IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICBjdXJyZW5jeTogb2ZmZXI/LmN1cnJlbmN5LFxuICAgICAgICAgICAgcHJpY2U6IG9mZmVyPy5wcmljZSxcbiAgICAgICAgICAgIGRpc2NvdW50OiBvZmZlcj8uZGlzY291bnQsXG4gICAgICAgICAgICBjb25kaXRpb25zOiBvZmZlcj8udGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICBjb25kaXRpb25zVGl0bGU6IG9mZmVyPy50ZXh0cz8uY29uZGl0aW9uc1RpdGxlLFxuICAgICAgICAgICAgYWRkaXRpb25hbDE6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICBhZGRpdGlvbmFsMjogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG9mZmVyPy5tdWx0aW1lZGlhPy5bMF0sIGZhbHNlKSxcbiAgICAgICAgICAgIG11bHRpbWVkaWE6IHRoaXMubWFwSW1hZ2VzKG9mZmVyPy5tdWx0aW1lZGlhKSxcbiAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzKT8uWzBdLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKG9mZmVyPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgc2VydmljZXM6IHRoaXMubWFwR2xvYmFsU2VydmljZXMob2ZmZXI/LnNlcnZpY2VzKSxcbiAgICAgICAgICAgIHRleHRzOiB0aGlzLm1hcEdsb2JhbFRleHRzKG9mZmVyPy50ZXh0cyksXG4gICAgICAgIH0gYXMgQmFieWxvbk9mZmVyRGV0YWlsSTtcbiAgICB9XG5cbiAgICBtYXBPZmZlcnNMaXN0KFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBpc0hvbWU6IGJvb2xlYW4gfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uT2ZmZXJzTGlzdEkge1xuICAgICAgICBjb25zdCBsaXN0ID0gcHJvcHM/Lm9mZmVycyA/PyBwcm9wcz8uZXZlbnRzID8/IHByb3BzLmV2ZW50O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGl0ZW1zOiBsaXN0Py5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtPy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHRoaXMubWFwR2xvYmFsVGV4dHMoaXRlbT8udGV4dHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2U6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ucHJpY2UgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5wcmljZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKHA6IGFueSkgPT4gcC5hY3RpdmUgPT09IDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHA6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlOiBwLnByaWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeTogaXRlbT8uY3VycmVuY3ksXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNjb3VudDogaXRlbT8uZGlzY291bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0OiBpdGVtPy5tdWx0aW1lZGlhPy5bMF0/LmFsdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlQnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWVPZmZlckJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyk/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsRnJvbTogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxEaXNjb3VudDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDIgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG9tZTogaXRlbT8uc2l0ZXM/LlswXT8uaG9tZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVwOiBpdGVtPy5zaXRlcz8uWzBdPy5wb3B1cCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbk9mZmVyc0xpc3RJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXJJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNIb21lOiBpc0hvbWUsXG4gICAgICAgIH0gYXMgQmFieWxvbk9mZmVyc0xpc3RJO1xuICAgIH1cblxuICAgIG1hcEZhcShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkZhcUkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5sb2NhdGlvbkhvd1xuICAgICAgICAgICAgICAgID8gcHJvcHM/LmxvY2F0aW9uSG93Py5pdGVtcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChmYXE6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBmYXEudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZmFxLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSXRlbUlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IHByb3BzPy5pdGVtcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChmYXE6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBmYXEudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZmFxLnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JdGVtSVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltZzogcHJvcHM/LmxvY2F0aW9uTWFwXG4gICAgICAgICAgICAgICAgPyB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubG9jYXRpb25NYXA/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmxvY2F0aW9uTWFwPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uRmFxSTtcbiAgICB9XG5cbiAgICBtYXBTdGF0aWNGb290ZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25TdGF0aWNGb290ZXJJIHtcbiAgICAgICAgLy8gRnVuY2lvbiB0ZW1wb3JhbCBoYXN0YSBxdWUgZWwgYmFjayBkZXZ1ZWx2YSBsYSBsaXN0YSBkZSBob3RlbGVzXG4gICAgICAgIGNvbnN0IGR5bmFtaWNIb3RlbHNBZHJlc3NlcyA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFkZHJlc3Nlc01hcDogeyBba2V5OiBzdHJpbmddOiBQYXJ0aWFsPEJhYnlsb25BZGRyZXNzSXRlbT4gfSA9XG4gICAgICAgICAgICAgICAge307XG4gICAgICAgICAgICBpZiAoIXByb3BzPy50ZXh0cykgcmV0dXJuO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMocHJvcHM/LnRleHRzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoJ2FkZHJlc3NsaXN0JykgJiYgcHJvcHM/LnRleHRzW2tleV0pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBrZXkubWF0Y2goL2FkZHJlc3NsaXN0KFxcZCspKC4qKS8pO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gbWF0Y2hbMV07XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IG1hdGNoWzJdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFkZHJlc3Nlc01hcFtpbmRleF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZXNNYXBbaW5kZXhdID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogcGFyc2VJbnQoaW5kZXgsIDEwKS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHByb3BzPy50ZXh0c1trZXldO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChmaWVsZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1RpdGxlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzTWFwW2luZGV4XS5uYW1lID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0FkZHJlc3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZXNNYXBbaW5kZXhdLmFkZHJlc3MgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzTWFwW2luZGV4XS5mdWxsX2FkZHJlc3MgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnVXJsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzTWFwW2luZGV4XS51cmwgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnVGVsZic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRyZXNzZXNNYXBbaW5kZXhdIGFzIGFueSkucGhvbmUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnRW1haWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkcmVzc2VzTWFwW2luZGV4XSBhcyBhbnkpLmVtYWlsID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhhZGRyZXNzZXNNYXApIGFzIEJhYnlsb25BZGRyZXNzSXRlbVtdO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBuZFRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgcmRUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5saW5rc1RpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ubGlua3NUaXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ubGlua3NUaXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRoVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ubG9jYXRpb25UaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmxvY2F0aW9uVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiAocHJvcHM/LnRleHRzPy5sb2NhdGlvblRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiBwcm9wcz8udGV4dHM/Lm5ld3NsZXR0ZXJUaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/Lm5ld3NsZXR0ZXJUaXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ubmV3c2xldHRlclRpdGxlPy5jb250YWluKSksXG5cbiAgICAgICAgICAgIGZpZnRoVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uYWRkaXRpb25hbEZvb3RlclRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uYWRkaXRpb25hbEZvb3RlclRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5hZGRpdGlvbmFsRm9vdGVyVGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBhaFRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LkFkZHJlc3NIb3RlbHNUaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LkFkZHJlc3NIb3RlbHNUaXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uQWRkcmVzc0hvdGVsc1RpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgbmR0aXRsZTogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICByZHRpdGxlOiBwcm9wcz8udGV4dHM/LmxpbmtzVGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmxvY2F0aW9uVGl0bGU/LnRhZyA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/Lm5ld3NsZXR0ZXJUaXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGZpZnRodGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkaXRpb25hbEZvb3RlclRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY29weXJpZ2h0OiBwcm9wcz8udGV4dHM/LmNvcHlyaWdodD8udGFnLFxuICAgICAgICAgICAgICAgIGFodGl0bGU6IHByb3BzPy50ZXh0cz8uQWRkcmVzc0hvdGVsc1RpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZnJhbWVVcmw6ICEhcHJvcHM/LnRleHRzPy5mcmFtZVVybFxuICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5mcmFtZVVybFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY29udGFjdEluZm86IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5jb250YWN0Py5bMF0pLFxuICAgICAgICAgICAgY29udGFjdExpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uY29udGFjdExpbmtzPy5bMF0pLFxuICAgICAgICAgICAgY29udGFjdFRleHQ6IHByb3BzPy50ZXh0cz8udGV4dHBob25lMixcbiAgICAgICAgICAgIGZvb3RlckxpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uZm9vdGVyTGlua3M/LlswXSksXG4gICAgICAgICAgICBhZGRyZXNzOiBBcnJheS5pc0FycmF5KHByb3BzPy5hZGRyZXNzKVxuICAgICAgICAgICAgICAgID8gcHJvcHM/LmFkZHJlc3MubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChhZGRyZXNzOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogYWRkcmVzcy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGFkZHJlc3MubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6IGFkZHJlc3MuYWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IGFkZHJlc3MuY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBhZGRyZXNzLnByb3ZpbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeTogYWRkcmVzcy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3A6IGFkZHJlc3MuY3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGFkZHJlc3MubGluayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxfYWRkcmVzczogYWRkcmVzcy5mdWxsQWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWdzOiBhZGRyZXNzLnNsdWdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQWRkcmVzc0l0ZW1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgYWRkcmVzc0hvdGVsczpcbiAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KHByb3BzPy5hZGRyZXNzSG90ZWxzKSAmJlxuICAgICAgICAgICAgICAgIHByb3BzPy5hZGRyZXNzSG90ZWxzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8uYWRkcmVzc0hvdGVscy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRyZXNzOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBhZGRyZXNzLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGFkZHJlc3MubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiBhZGRyZXNzLmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogYWRkcmVzcy5jaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBhZGRyZXNzLnByb3ZpbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IGFkZHJlc3MuY291bnRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcDogYWRkcmVzcy5jcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGFkZHJlc3MubGluayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaG9uZTogYWRkcmVzcy5waG9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogYWRkcmVzcy5lbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsX2FkZHJlc3M6IGFkZHJlc3MuZnVsbEFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Z3M6IGFkZHJlc3Muc2x1Z3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQWRkcmVzc0l0ZW1cbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIDogKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZHluYW1pY0FkZHJlc3NlcyA9IGR5bmFtaWNIb3RlbHNBZHJlc3NlcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZHluYW1pY0FkZHJlc3NlcyAmJiBkeW5hbWljQWRkcmVzc2VzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZHluYW1pY0FkZHJlc3Nlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgfSkoKSxcbiAgICAgICAgICAgIHNvY2lhbE1lZGlhOiBwcm9wcz8uc29jaWFsTWVkaWE/Lm1hcChcbiAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGJhYnlsb24tJHtsaW5rLm5hbWU/LnRvTG93ZXJDYXNlKCl9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbGluay51cmwsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29weXJpZ2h0OlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmNvcHlyaWdodCA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmNvcHlyaWdodFxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uY29weXJpZ2h0Py5jb250YWluLFxuICAgICAgICAgICAgbmF2OiBwcm9wcz8ubmF2Py5tYXAoXG4gICAgICAgICAgICAgICAgKG5hdjogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IG5hdi5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBuYXYudXJsLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltZzoge1xuICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5iYWNrZ3JvdW5kPy5bMF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGFsdDogcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmQ/LnRpdGxlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvPy5bMF0sIGZhbHNlKSxcbiAgICAgICAgICAgIC8vIGlucHV0OiBwcm9wcz8udGV4dHM/Lm5ld3NsZXR0ZXJEZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ25ld3NsZXR0ZXInLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0SG9sZGVyLFxuICAgICAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5uZXdzRXJyb3JFbWFpbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXF1aXJlZEZpZWxkOiBwcm9wcz8udGV4dHM/LnJlcXVpcmVkRmllbGQsXG4gICAgICAgICAgICBsZWdhbEFkdmlzZTogcHJvcHM/LnRleHRzPy5zdWJzY3JpYmVyLFxuICAgICAgICAgICAgYWRkaXRpb25hbExpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5saW5rcz8uYWRkaXRpb25hbEZvb3RlckxpbmtzWzBdPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gISFidG4/LmxhYmVsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uU3RhdGljRm9vdGVySTtcbiAgICB9XG5cbiAgICBtYXBHYWxsZXJ5KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uR2FsbGVyeUkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGV4dHM6IHRoaXMubWFwR2xvYmFsVGV4dHMocHJvcHM/LnRleHRzKSBhcyBCYWJ5bG9uVGV4dEluZm9JLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcm9vbXNCdG46IHtcbiAgICAgICAgICAgICAgICBsYWJlbDogcHJvcHM/LnRleHRzPy5maWx0ZXJSb29tcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWx0ZXJzQnRuOiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzPy50ZXh0cz8uZmlsdGVyQ2F0ZWdvcmllcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWx0ZXJNb2RhbEJ0bjpcbiAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LkZpbHRlck1vZGFsQnRuID8/IHByb3BzPy50ZXh0cz8uZmlsdGVyTW9kYWxCdG4sXG4gICAgICAgICAgICBmaWx0ZXJSb29tc0J0bjpcbiAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LkZpbHRlclJvb21Nb2RhbEJ0biA/P1xuICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uZmlsdGVyUm9vbU1vZGFsQnRuID8/XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5maWx0ZXJSb29tcyxcbiAgICAgICAgICAgIGZpbHRlcnM6IHByb3BzPy5maWx0ZXJzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbDogaXRlbS5hbGwsXG4gICAgICAgICAgICAgICAgICAgICAgICByb29tOiBpdGVtLnJvb20sXG4gICAgICAgICAgICAgICAgICAgICAgICByb29tczogaXRlbS5yb29tcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkdhbGxlcnlGaWx0ZXJcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZXM6IHByb3BzPy5maWx0ZXJzXG4gICAgICAgICAgICAgICAgPy5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjYzogeyBtdWx0aW1lZGlhOiBhbnlbXTsgZmlsdGVySW5kZXg6IG51bWJlciB9W10sXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGFueSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlckluZGV4OiBudW1iZXJcbiAgICAgICAgICAgICAgICAgICAgKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyLm11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtdWx0aW1lZGlhV2l0aEZpbHRlciA9IGZpbHRlci5tdWx0aW1lZGlhLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGZpbHRlckluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhOiBtdWx0aW1lZGlhV2l0aEZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlckluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZmxhdE1hcCgoeyBtdWx0aW1lZGlhIH06IGFueSkgPT4gbXVsdGltZWRpYSlcbiAgICAgICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcsIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGltZz8uZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvVXJsOiBpbWcudmlkZW9VcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uR2FsbGVyeUl0ZW1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25HYWxsZXJ5STtcbiAgICB9XG5cbiAgICBtYXBMYW5ndWFnZU1vZGFsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uTGFuZ3VhZ2VNb2RhbEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubGFuZ3VhZ2VzLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IHByb3BzPy5sYW5ndWFnZXM/LmZpbmQoXG4gICAgICAgICAgICAgICAgKGxuZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICBsbmcuaWQgPT09IHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8uaWRcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICB9IGFzIEJhYnlsb25MYW5ndWFnZU1vZGFsSTtcbiAgICB9XG5cbiAgICBtYXBFbmdpbmUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25FbmdpbmVJIHwgQmFieWxvbkVuZ2luZU1vZGFsSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvbmx5QWR1bHRzOiBwcm9wcz8ub25seUFkdWx0cyxcbiAgICAgICAgICAgIGRlZmF1bHRCdXR0b246IHByb3BzPy5kZWZhdWx0SW50ZXJuYWxCdXR0b24sXG4gICAgICAgICAgICBkZWZhdWx0UHJvbW9Db2RlOiBwcm9wcz8uZGVmYXVsdFByb21vQ29kZSxcbiAgICAgICAgICAgIGJ1dHRvbjogeyBsYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvclN1Ym1pdCwgdXJsOiBwcm9wcz8udXJsIH0sXG4gICAgICAgICAgICBkYXRlcGlja2VyRGF0YToge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm1vdG9yRGF0ZVRpdGxlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGd1ZXN0c0lucHV0OiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubW90b3JHdWVzdHNJbnB1dEhvbGRlcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcm9tb0lucHV0OiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubW90b3JQcm9tb0hvbGRlcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBndWVzdHM6IHtcbiAgICAgICAgICAgICAgICBidG46IHsgbGFiZWw6IHByb3BzPy50ZXh0cz8ubW90b3JBcHBseSB9LFxuICAgICAgICAgICAgICAgIGFkdWx0c0Ryb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yQWR1bHRzVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhwcm9wcz8ubWF4QWR1bHRzLCAxKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGp1bmlvcnNEcm9wZG93bjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm1heEp1bmlvciA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JKdW5pb3JUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsVGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JKdW5pb3JTbWFsbExhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZW5lcmF0ZUFnZXNPcHRpb25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tYXhKdW5pb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGtpZHNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvcktpZHNUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgc21hbGxUaXRsZTogcHJvcHM/LnRleHRzPy5tb3RvcktpZHNTbWFsbExhYmVsLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8ubWF4Q2hpbGRyZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhwcm9wcz8ubWF4Q2hpbGRyZW5zKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmdlbmVyYXRlQWdlc09wdGlvbnMocHJvcHM/Lm1heENoaWxkcmVuKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJhYmllc0Ryb3Bkb3duOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubWF4QmFiaWVzID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckJhYmllc1RpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxUaXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckJhYmllc1NtYWxsVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLmdlbmVyYXRlQWdlc09wdGlvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm1heEJhYmllc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgYmFiaWVzQWdlc0Ryb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhwcm9wcz8ubWF4QWdlQmFiaWVzID8/IDIpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYWdlc0Ryb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tYXhBZ2VDaGlsZHJlbixcbiAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcz8ubWF4QWdlQmFiaWVzID8/IDIpICsgMVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYWdlVW5pdExhYmVsOiB0aGlzLmdldEFnZVVuaXRMYWJlbChwcm9wcz8udGV4dHMpLFxuICAgICAgICAgICAgICAgIGFnZXNMYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvckFnZXNUaXRsZSxcbiAgICAgICAgICAgICAgICBraWRzTGFiZWw6IHByb3BzPy50ZXh0cz8ubW90b3JLaWRMYWJlbCxcbiAgICAgICAgICAgICAgICBiYWJpZXNMYWJlbDpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5tb3RvckJhYnlMYWJlbCA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/Lm1vdG9yQmFiaWVzTGFiZWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JUaXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yU3VidGl0bGUsXG4gICAgICAgICAgICB1cmw6IHByb3BzPy51cmwsXG4gICAgICAgICAgICBob3RlbDogcHJvcHM/LmhvdGVscz8uWzBdLFxuICAgICAgICAgICAgY29kaWdvOiBwcm9wcz8uY29kaWdvID8gcHJvcHM/LmNvZGlnbyA6ICdkZW1vX2MydF9jbGllbnRlcycsIC8vdG8gY2hhbmdlLCBkb250IGNvbWUgZnJvbSBiYWNrXG4gICAgICAgICAgICBnbFZhbHVlOiBwcm9wcz8uZ2xWYWx1ZSxcbiAgICAgICAgICAgIGhvdGVsc0lucHV0OiBwcm9wcz8udGV4dHM/Lm1vdG9yRHJvcERvd25OYW1lLFxuICAgICAgICAgICAgaG90ZWxzUGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubW90b3JEcm9wRG93bkhvbGRlcixcbiAgICAgICAgICAgIGhvdGVsczoge1xuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5ob3RlbHM/Lm1hcCgoaG90ZWw6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogaG90ZWw/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHRpY2tlcjogaG90ZWw/LnRpY2tlcixcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBob3RlbD8udXJsLFxuICAgICAgICAgICAgICAgICAgICBpZDogaG90ZWw/LmlkLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbkVuZ2luZU1vZGFsSSB8IEJhYnlsb25FbmdpbmVJO1xuICAgIH1cbiAgICBtYXBTbGlkZXIzSXRlbXMoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIGlkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25TbGlkZXIzSXRlbXNJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbS5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblNsaWRlckl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvblNsaWRlcjNJdGVtc0k7XG4gICAgfVxuXG4gICAgbWFwSG90ZWxzU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSG90ZWxzU2xpZGVySSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgaG90ZWxzOiBwcm9wcz8uaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0OiBpdGVtLm11bHRpbWVkaWE/LlswXT8uYWx0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbS5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbS5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblNsaWRlckl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkhvdGVsc1NsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwSG90ZWxzTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkhvdGVsc0xpc3RJIHtcbiAgICAgICAgLy8gVE9ETzogUmV2aXNhciBtYXBwZW8gZGUgaW3DoWdlbmVzXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgaG90ZWxzOiBwcm9wcz8uaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0TW9yZTogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtPy5tdWx0aW1lZGlhPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogaXRlbT8ubXVsdGltZWRpYT8uWzBdPy5hbHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBmVGl0bGU6IHByb3BzPy50ZXh0cz8uZm9vdGVyVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmU3VidGl0bGU6IHByb3BzPy50ZXh0cz8uZm9vdGVyUHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlczogaXRlbT8uc2VydmljZXNMaXN0Py5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbT8uY2xhc3N9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ0bkxlc3M6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ0bk1vcmU6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblNsaWRlckl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkhvdGVsc0xpc3RJO1xuICAgIH1cblxuICAgIG1hcEluZm80SW1nKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mbzRpbWdJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgaW1hZ2UxOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXNbMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZTI6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lc1sxXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltYWdlMzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzWzJdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1hZ2U0OiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXNbM10sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm80aW1nSTtcbiAgICB9XG5cbiAgICBtYXBTZXJ2aWNlc1NsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblNlcnZpY2VzU2xpZGVySSB7XG4gICAgICAgIGNvbnN0IGFkdmVudCA9IHByb3BzPy5zZXJ2aWNlc1NlcnZpY2UgPz8gcHJvcHM/LlZlbnRhamFzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWR2YW50YWdlczogYWR2ZW50Py5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5uYW1lID8/IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5jbGFzcyA/PyBpdGVtLmljb259YCxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uU2VydmljZXNTbGlkZXJJO1xuICAgIH1cblxuICAgIG1hcEFkdmFudGFnZXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25BZHZhbnRhZ2VzSSB7XG4gICAgICAgIGNvbnN0IHZlbnRhamFzID1cbiAgICAgICAgICAgIHByb3BzPy5WZW50YWphcyA/PyBwcm9wcz8ubGlzdHMgPz8gcHJvcHM/Lkxpc3RzID8/IHByb3BzPy5MaXN0O1xuICAgICAgICBjb25zdCBhZHYgPSB2ZW50YWphcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgIH0pKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgYWR2YW50YWdlczogYWR2LFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlZU1vcmU6IHByb3BzPy50ZXh0cz8uYWR2YW50YWdlc3NlZW1vcmUsXG4gICAgICAgICAgICBzZWVMZXNzOiBwcm9wcz8udGV4dHM/LmFkdmFudGFnZXNzZWVsZXNzLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5hZHZhbnRhZ2VzaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQWR2YW50YWdlc0k7XG4gICAgfVxuXG4gICAgbWFwSW5mb0JpZyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm9CaWdJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8ucHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LnRpdGxlLFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5idXR0b25zXG4gICAgICAgICAgICApPy5bMF0sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1nU21hbGw6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzFdID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5uZGltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9CaWdJO1xuICAgIH1cblxuICAgIG1hcEluZm9aaWdaYWdWMihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgaWRlbnRpZmllcjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkluZm9aaWd6YWdWMkkge1xuICAgICAgICBjb25zdCBbaW1hZ2VdID1cbiAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZSB8fCBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMgfHwgW107XG4gICAgICAgIGNvbnN0IFtpbWFnZTJdID1cbiAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZTIgfHwgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlc3NtYWxsIHx8IFtdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgICAgIGl0ZW1zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGltYWdlPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltYWdlLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpbWFnZT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWFnZT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGltYWdlPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpbWFnZTI/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1hZ2UyLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpbWFnZTI/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1hZ2UyPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogaW1hZ2UyPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXM6IHByb3BzPy5WZW50YWphcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGl0ZW0uaWNvbiA/IGBpY29uLSR7aXRlbS5pY29ufWAgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdIGFzIEJhYnlsb25JbmZvWmlnemFnVjJJdGVtW10sXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9aaWd6YWdWMkk7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVyQ29udGFjdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkZvb3RlckNvbnRhY3RJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgZXh0cmFUeHQ6IHByb3BzPy50ZXh0cz8uYWRkaXRpb25hbFRleHQxLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBhbHQ6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5hbHQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWR2YW50YWdlczogcHJvcHM/LlZlbnRhamFzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmljb259YCxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uY29udGFjdExpbmtzPy5bMF0pLFxuICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICAgIGxvY2FsaXR5OiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5sb2NhbGl0eSxcbiAgICAgICAgICAgICAgICBjaXR5OiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5jaXR5LFxuICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5wcm92aW5jZSxcbiAgICAgICAgICAgICAgICBjb3VudHJ5OiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgIGNwOiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5jcCxcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgIGxhdDogcHJvcHM/LmhvdGVsQWRkcmVzcz8ubGF0LFxuICAgICAgICAgICAgICAgIGxvbjogcHJvcHM/LmhvdGVsQWRkcmVzcz8ubG9uLFxuICAgICAgICAgICAgICAgIHBob25lOiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5waG9uZSxcbiAgICAgICAgICAgICAgICBlbWFpbDogcHJvcHM/LmhvdGVsQWRkcmVzcz8uZW1haWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25Gb290ZXJDb250YWN0STtcbiAgICB9XG5cbiAgICBtYXBJbmZvMkltZ0JpZyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm8yaW1nQmlnSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgcHJldGl0bGUyOiBwcm9wcz8udGV4dHM/Lm5kUHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTI6IHByb3BzPy50ZXh0cz8ubmRUaXRsZSxcbiAgICAgICAgICAgIHRleHQyOiBwcm9wcz8udGV4dHM/Lm5kRGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBidXR0b24yOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzFdLFxuICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBhbHQ6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5hbHQgPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF0uYWx0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGltZ1NtYWxsOiB7XG4gICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/Lm5kaW1hZ2VuZXM/LlswXSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/Lm5kaW1hZ2U/LlswXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYWx0OiBwcm9wcz8ubXVsdGltZWRpYT8ubmRpbWFnZW5lcz8uWzBdPy5hbHQsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvMmltZ0JpZ0k7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVyTG9nb3MocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Gb290ZXJMb2dvc0kge1xuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPz8gcHJvcHM/LnRleHRzPy50ZXh0O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgIC4uLnByb3BzPy50ZXh0cyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgICAgICBsb2dvczogcHJvcHM/Lm11bHRpbWVkaWE/LmxvZ29zPy5tYXAoKGxvZ286IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGxvZ28sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKGxvZ28/LmxpbmtzKT8uWzBdLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIEJhYnlsb25Gb290ZXJMb2dvc0k7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVyTGlua3MocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Gb290ZXJMaW5rc0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29weXJpZ2h0OiBwcm9wcz8udGV4dHM/LmNvcHlyaWdodCxcbiAgICAgICAgICAgIHllYXI6IHByb3BzPy50ZXh0cz8ueWVhcixcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICB9IGFzIEJhYnlsb25Gb290ZXJMaW5rc0k7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVyU29jaWFscyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkZvb3RlclNvY2lhbEkge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZExpbmtzID0gKHByb3BzPy5zb2NpYWxNZWRpYSB8fCBbXSkuZmlsdGVyKFxuICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICBsaW5rICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgbGluayAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgbGluay51cmwgIT09ICcnICYmXG4gICAgICAgICAgICAgICAgbGluay5pY29uICE9PSAnJ1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBsaW5rczogZmlsdGVyZWRMaW5rcy5tYXAoKGxpbms6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpY29uOiBgYmFieWxvbi0ke2xpbmsubmFtZT8udG9Mb3dlckNhc2UoKX1gLFxuICAgICAgICAgICAgICAgIHVybDogbGluay51cmwsXG4gICAgICAgICAgICAgICAgbGFiZWw6IGxpbmsubmFtZSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uRm9vdGVyU29jaWFsSTtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXIyaXRlbXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25TbGlkZXIyaXRlbXNJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcy5ob3RlbHNcbiAgICAgICAgICAgICAgICA/IHByb3BzPy5ob3RlbHM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5jaXR5LFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtPy5tdWx0aW1lZGlhPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6IGl0ZW0/Lm11bHRpbWVkaWE/LlswXT8uYWx0LFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlczogaXRlbT8uc2VydmljZXNMaXN0Py5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uY2xhc3N9YCxcbiAgICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICA6IHByb3BzPy5yb29tcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0OiBpdGVtPy5tdWx0aW1lZGlhPy5bMF0/LmFsdCxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIC8vIGxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlczogaXRlbT8uc2VydmljZXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uU2xpZGVyMml0ZW1zSTtcbiAgICB9XG5cbiAgICBtYXBTdGF0aWNGb290ZXJ2Mihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblN0YXRpY0Zvb3RlclYySSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIG5kVGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlLFxuICAgICAgICAgICAgcmRUaXRsZTogcHJvcHM/LnRleHRzPy5saW5rc1RpdGxlLFxuICAgICAgICAgICAgdGhUaXRsZTogcHJvcHM/LnRleHRzPy5sb2NhdGlvblRpdGxlLFxuICAgICAgICAgICAgZnJhbWVVcmw6IHByb3BzPy50ZXh0cz8uZnJhbWVVcmwsXG4gICAgICAgICAgICBpbWdVcmw6IHByb3BzPy5tdWx0aW1lZGlhPy5mb290ZXJpbWc/LlswXT8ubGlua3M/LlswXT8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgY29udGFjdEluZm86IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5jb250YWN0Py5bMF0pLFxuICAgICAgICAgICAgY29udGFjdExpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uY29udGFjdExpbmtzPy5bMF0pLFxuICAgICAgICAgICAgZm9vdGVyTGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5mb290ZXJMaW5rcz8uWzBdKSxcbiAgICAgICAgICAgIGFkZHJlc3M6IEFycmF5LmlzQXJyYXkocHJvcHM/LmFkZHJlc3MpXG4gICAgICAgICAgICAgICAgPyBwcm9wcz8uYWRkcmVzcy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgKGFkZHJlc3M6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBhZGRyZXNzPy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGFkZHJlc3M/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiBhZGRyZXNzPy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogYWRkcmVzcz8uY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBhZGRyZXNzPy5wcm92aW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IGFkZHJlc3M/LmNvdW50cnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcDogYWRkcmVzcz8uY3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25BZGRyZXNzSXRlbVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogW10sXG4gICAgICAgICAgICBzb2NpYWxNZWRpYTogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBwcm9wcz8uc29jaWFsTWVkaWE/LlswXT8udXJsLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogcHJvcHM/LnRleHRzPy5pbnN0YWdyYW1UaXRsZSxcbiAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25CdXR0b25JLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGNvcHlyaWdodDogcHJvcHM/LnRleHRzPy5jb3B5cmlnaHQsXG4gICAgICAgICAgICBuYXY6IHByb3BzPy5uYXY/Lm1hcChcbiAgICAgICAgICAgICAgICAobmF2OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbmF2Py5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBuYXY/LnVybCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5mb290ZXJpbWc/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uU3RhdGljRm9vdGVyVjJJO1xuICAgIH1cblxuICAgIG1hcExpc3RHcmlkKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uTGlzdEdyaWRJIHtcbiAgICAgICAgY29uc3QgeyBpbWFnZW5lcyB9ID0gcHJvcHM/Lm11bHRpbWVkaWEgfHwgW107XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpdGVtczogaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlczogW10sIC8vVE9ETzogcHRlIGJhY2ssXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JdGVtR3JpZElcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkxpc3RHcmlkSTtcbiAgICB9XG5cbiAgICBtYXBOZXdzbGV0dGVyTW9kYWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25OZXdzbGV0dGVySSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb25kaXRpb25zOiBwcm9wcz8udGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnbWFpbCcsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRIb2xkZXIsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/Lm5ld3NFcnJvckVtYWlsLFxuICAgICAgICAgICAgfSBhcyBCYWJ5bG9uSW5wdXRJLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2ViYWNrZ3JvdW5kPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbk5ld3NsZXR0ZXJJO1xuICAgIH1cblxuICAgIG1hcEdsb2JhbE1vZGFsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uR2xvYmFsTW9kYWxJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnMuZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpZnJhbWU6IHByb3BzPy50ZXh0cz8uaWZyYW1lLFxuICAgICAgICAgICAgLy8gaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgIH0gYXMgQmFieWxvbkdsb2JhbE1vZGFsSTtcbiAgICB9XG5cbiAgICBtYXBPZmZlckJhbm5lclYyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uT2ZmZXJQb3B1cFYySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBvZmZlckRhdGE7XG4gICAgICAgIGlmIChwcm9wcz8ub2ZmZXJzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBvZmZlciA9IHByb3BzPy5vZmZlcnM/LlswXTtcbiAgICAgICAgICAgIG9mZmVyRGF0YSA9IHtcbiAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogb2ZmZXI/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IG9mZmVyPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBvZmZlcj8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDI6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsNDogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhvZmZlcj8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIG9mZmVyPy5tdWx0aW1lZGlhPy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/IChvZmZlcj8ubXVsdGltZWRpYT8uZmluZCgoaW1nOiBhbnkpID0+IGltZy5jb3ZlcikgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZmVyPy5tdWx0aW1lZGlhPy5bMF0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IChvZmZlcj8ubXVsdGltZWRpYT8uWzBdID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uZGVmYXVsdGltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzY291bnQ6IG9mZmVyPy5kaXNjb3VudCxcbiAgICAgICAgICAgICAgICBwcmljZTogb2ZmZXI/LnByaWNlLFxuICAgICAgICAgICAgICAgIGN1cnJlbmN5OiBvZmZlcj8uY3VycmVuY3ksXG4gICAgICAgICAgICB9IGFzIEJhYnlsb25PZmZlclBvcHVwVjJJO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZmZlckRhdGEgPz8gb2ZmZXJEYXRhO1xuICAgIH1cblxuICAgIG1hcEhlYWRJbnRybyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgY29tcG9uZW50OiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uSGVhZEludHJvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBhZGRpdGlvbmFsVGV4dHMgPSB7XG4gICAgICAgICAgICBhZGRpdGlvbmFsMjogJycsXG4gICAgICAgICAgICBhZGRpdGlvbmFsMzogJycsXG4gICAgICAgICAgICBhZGRpdGlvbmFsNDogJycsXG4gICAgICAgIH07XG4gICAgICAgIGlmIChwcm9wcz8ucm9vbSkge1xuICAgICAgICAgICAgYWRkaXRpb25hbFRleHRzLmFkZGl0aW9uYWwyID0gcHJvcHMucm9vbS50ZXh0cz8uYWRkaXRpb25hbDIgPz8gJyc7XG4gICAgICAgICAgICBhZGRpdGlvbmFsVGV4dHMuYWRkaXRpb25hbDMgPSBwcm9wcy5yb29tLnRleHRzPy5hZGRpdGlvbmFsMyA/PyAnJztcbiAgICAgICAgICAgIGFkZGl0aW9uYWxUZXh0cy5hZGRpdGlvbmFsNCA9IHByb3BzLnJvb20udGV4dHM/LmFkZGl0aW9uYWw0ID8/ICcnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTogYWRkaXRpb25hbFRleHRzLmFkZGl0aW9uYWwyLmxlbmd0aFxuICAgICAgICAgICAgICAgID8gYWRkaXRpb25hbFRleHRzLmFkZGl0aW9uYWwyXG4gICAgICAgICAgICAgICAgOiB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6IGFkZGl0aW9uYWxUZXh0cy5hZGRpdGlvbmFsMy5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IGFkZGl0aW9uYWxUZXh0cy5hZGRpdGlvbmFsM1xuICAgICAgICAgICAgICAgIDogdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRleHQ6IGFkZGl0aW9uYWxUZXh0cy5hZGRpdGlvbmFsNC5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IGFkZGl0aW9uYWxUZXh0cy5hZGRpdGlvbmFsNFxuICAgICAgICAgICAgICAgIDogdHlwZW9mIHByb3BzPy50ZXh0cz8udGV4dCA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50ZXh0XG4gICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGV4dD8uY29udGFpbixcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQ/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCkgPz9cbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Py50ZXh0Y29sb3IsXG4gICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCkgPz8gY29tcG9uZW50Py50ZXh0Y29sb3IsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbG9yPy50cmltKCkgPz9cbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Py50ZXh0Y29sb3IsXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb2xvcj8udHJpbSgpID8/XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD8udGV4dGNvbG9yLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGNvbXBvbmVudD8uaWRlbnRpZmllcixcbiAgICAgICAgfSBhcyBCYWJ5bG9uSGVhZEludHJvSTtcbiAgICB9XG5cbiAgICBtYXBFeHRlcm5hbFNjcmlwdChcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25FeHRlcm5hbFNjcmlwdEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2NyaXB0OiBwcm9wcz8udGV4dHM/LkNvbnRhaW5lcixcbiAgICAgICAgICAgIG1zZ19sb2FkaW5nOiBwcm9wcz8udGV4dHM/LmxvYWRpbmcgPz8gJ0NhcmdhbmRvLi4uJyxcbiAgICAgICAgfSBhcyBCYWJ5bG9uRXh0ZXJuYWxTY3JpcHRJO1xuICAgIH1cblxuICAgIG1hcElmcmFtZShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbklmcmFtZUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZnJhbWVVcmw6XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5mcmFtZVVybCA/P1xuICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaWZyYW1lID8/XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy51cmwgPz9cbiAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LkNvbnRhaW5lcixcbiAgICAgICAgfSBhcyBCYWJ5bG9uSWZyYW1lSTtcbiAgICB9XG5cbiAgICBtYXBCbG9nTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkJsb2dMaXN0SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBwb3N0cyA9IHByb3BzPy5ibG9nPy5wb3N0cz8ubWFwKChwb3N0OiBhbnkpID0+ICh7XG4gICAgICAgICAgICBpZDogcG9zdD8uaWQsXG4gICAgICAgICAgICB0aXRsZTogcG9zdD8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHBvc3Q/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwb3N0Py50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBhZGRpdGlvbmFsMTogcG9zdD8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwb3N0Py5tdWx0aW1lZGlhPy5bMF0sIGZhbHNlKSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocG9zdD8uYnV0dG9ucyksXG4gICAgICAgICAgICBwb3N0VXJsOiBVdGlscy5tYXBCdXR0b25zKHBvc3Q/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBjYXRlZ29yeTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcG9zdD8uY2F0ZWdvcnkgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcG9zdC5jYXRlZ29yeVxuICAgICAgICAgICAgICAgICAgICA6IChwb3N0Py5jYXRlZ29yeT8ubmFtZV9pZGVudGlmaWVyID8/XG4gICAgICAgICAgICAgICAgICAgICAgcG9zdD8uY2F0ZWdvcnk/Lm5hbWVJZGVudGlmaWVyID8/XG4gICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkKSxcbiAgICAgICAgICAgIGRhdGU6IHBvc3Q/LmRhdGUgPyBuZXcgRGF0ZShwb3N0LmRhdGUpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgYWN0aXZlOiBwb3N0Py5hY3RpdmUsXG4gICAgICAgIH0pKTtcblxuICAgICAgICBwb3N0cyA9IHBvc3RzLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoYS5kYXRlICYmIGIuZGF0ZSkgcmV0dXJuIGIuZGF0ZSAtIGEuZGF0ZTsgLy8gYW1ib3MgY29uIGZlY2hhXG4gICAgICAgICAgICBpZiAoYS5kYXRlICYmICFiLmRhdGUpIHJldHVybiAtMTsgLy8gYSB0aWVuZSBmZWNoYSwgYiBub1xuICAgICAgICAgICAgaWYgKCFhLmRhdGUgJiYgYi5kYXRlKSByZXR1cm4gMTsgLy8gYiB0aWVuZSBmZWNoYSwgYSBub1xuICAgICAgICAgICAgcmV0dXJuIDA7IC8vIG5pbmd1bm8gdGllbmUgZmVjaGFcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gT2J0ZW5lciBsb3MgNCBwb3N0cyBtw6FzIHJlY2llbnRlc1xuICAgICAgICBwb3N0cyA9XG4gICAgICAgICAgICBwb3N0cz8uZmlsdGVyKChwb3N0OiB7IGFjdGl2ZTogYm9vbGVhbiB9KSA9PiBwb3N0LmFjdGl2ZSkgPz9cbiAgICAgICAgICAgIHBvc3RzID8/XG4gICAgICAgICAgICBbXTtcblxuICAgICAgICBjb25zdCBub3JtYWxpemVUb0FycmF5ID0gKHZhbHVlOiBhbnkpOiBhbnlbXSA9PiB7XG4gICAgICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm4gW107XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSByZXR1cm4gT2JqZWN0LnZhbHVlcyh2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgY2F0ZWdvcmllc0FycmF5ID0gbm9ybWFsaXplVG9BcnJheShwcm9wcz8ucG9zdENhdGVnb3JpZXMpO1xuICAgICAgICBjb25zdCBsYXRlc3RQb3N0cyA9IHBvc3RzPy5zbGljZSgwLCA0KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LnRhZyxcbiAgICAgICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlYXJjaFBsYWNlSG9sZGVyOiBwcm9wcz8udGV4dHM/LnNlYXJjaFBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgbm90Zm91bmRUZXh0OiBwcm9wcz8udGV4dHM/LnNlYXJjaE5vdEZvdW5kLFxuICAgICAgICAgICAgcG9zdHM6IHBvc3RzLFxuICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb250YWluLFxuICAgICAgICAgICAgY2F0ZWdvcmllczogY2F0ZWdvcmllc0FycmF5Lm1hcCgoY2F0ZWdvcnk6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpZDogY2F0ZWdvcnk/LmlkLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBjYXRlZ29yeT8ubmFtZSxcbiAgICAgICAgICAgICAgICBwb3N0czogY2F0ZWdvcnk/LnRvdGFsUG9zdHMgPz8gY2F0ZWdvcnk/LnRvdGFsX3Bvc3RzID8/IDAsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb250YWluLFxuICAgICAgICAgICAgbGF0ZXN0UG9zdHM6IGxhdGVzdFBvc3RzLFxuICAgICAgICAgICAgYW50ZXJpb3I6IHByb3BzPy50ZXh0cz8uYW50ZXJpb3IsXG4gICAgICAgICAgICBzaWd1aWVudGU6IHByb3BzPy50ZXh0cz8uc2lndWllbnRlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcEJsb2dEZXRhaWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25CbG9nRGV0YWlsc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBjdXJyZW50UG9zdElkID0gcHJvcHM/LnBvc3Q/LmlkO1xuICAgICAgICBjb25zdCBwb3N0cyA9IHByb3BzPy5yZWxhdGVkUG9zdHM/Lm1hcCgocG9zdDogYW55KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IHBvc3Q/LmlkLFxuICAgICAgICAgICAgdGl0bGU6IHBvc3Q/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwb3N0Py50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcG9zdD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwb3N0Py5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhwb3N0Py5idXR0b25zKSxcbiAgICAgICAgICAgIHBvc3RVcmw6IFV0aWxzLm1hcEJ1dHRvbnMocG9zdD8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGNhdGVnb3J5OlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwb3N0Py5jYXRlZ29yeSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwb3N0LmNhdGVnb3J5XG4gICAgICAgICAgICAgICAgICAgIDogKHBvc3Q/LmNhdGVnb3J5Py5uYW1lX2lkZW50aWZpZXIgPz9cbiAgICAgICAgICAgICAgICAgICAgICBwb3N0Py5jYXRlZ29yeT8ubmFtZUlkZW50aWZpZXIgPz9cbiAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQpLFxuICAgICAgICAgICAgZGF0ZTogcG9zdD8uZGF0ZSA/IG5ldyBEYXRlKHBvc3QuZGF0ZSkgOiB1bmRlZmluZWQsXG4gICAgICAgIH0pKTtcblxuICAgICAgICBjb25zdCBjYW5kaWRhdGVzID0gKHBvc3RzIHx8IFtdKS5maWx0ZXIoXG4gICAgICAgICAgICAocDogYW55KSA9PiBwPy5pZCAhPT0gY3VycmVudFBvc3RJZFxuICAgICAgICApO1xuXG4gICAgICAgIGxldCByZWxhdGVkUG9zdHNDb25zdCA9XG4gICAgICAgICAgICBjYW5kaWRhdGVzXG4gICAgICAgICAgICAgICAgLmZpbHRlcigocDogYW55KSA9PiBwPy5kYXRlKVxuICAgICAgICAgICAgICAgIC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gKGIuZGF0ZSBhcyBhbnkpIC0gKGEuZGF0ZSBhcyBhbnkpKVxuICAgICAgICAgICAgICAgIC5zbGljZSgwLCA0KSB8fCBbXTtcbiAgICAgICAgaWYgKHJlbGF0ZWRQb3N0c0NvbnN0Lmxlbmd0aCA8IDQpIHtcbiAgICAgICAgICAgIGNvbnN0IHdpdGhvdXREYXRlID0gY2FuZGlkYXRlcy5maWx0ZXIoKHA6IGFueSkgPT4gIXA/LmRhdGUpO1xuICAgICAgICAgICAgcmVsYXRlZFBvc3RzQ29uc3QgPSByZWxhdGVkUG9zdHNDb25zdC5jb25jYXQoXG4gICAgICAgICAgICAgICAgd2l0aG91dERhdGUuc2xpY2UoMCwgNCAtIHJlbGF0ZWRQb3N0c0NvbnN0Lmxlbmd0aClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy5wb3N0Py50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnBvc3Q/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8ucG9zdD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYWRkaXRpb25hbDE6IHByb3BzPy5wb3N0Py50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICBhZGRpdGlvbmFsMjogcHJvcHM/LnBvc3Q/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBwcm9wcz8ucG9zdD8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgYWRkaXRpb25hbDQ6IHByb3BzPy5wb3N0Py50ZXh0cz8uYWRkaXRpb25hbDQsXG4gICAgICAgICAgICBkYXRlOiBwcm9wcz8ucG9zdD8uZGF0ZSA/IG5ldyBEYXRlKHByb3BzPy5wb3N0Py5kYXRlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGNhdGVnb3J5OiBwcm9wcz8ucG9zdD8uY2F0ZWdvcnksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy50YWcsXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWFyY2hQbGFjZUhvbGRlcjogcHJvcHM/LnRleHRzPy5zZWFyY2hQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllc1xuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8uY29udGFpbixcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IEFycmF5LmlzQXJyYXkocHJvcHM/LnBvc3RDYXRlZ29yaWVzKVxuICAgICAgICAgICAgICAgID8gcHJvcHM/LnBvc3RDYXRlZ29yaWVzPy5tYXAoKGNhdGVnb3J5OiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgaWQ6IGNhdGVnb3J5Py5pZCxcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogY2F0ZWdvcnk/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgcG9zdHM6IGNhdGVnb3J5Py50b3RhbFBvc3RzLFxuICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgICAgIHJlbGF0ZWRQb3N0c1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb250YWluLFxuICAgICAgICAgICAgcmVsYXRlZFBvc3RzOiByZWxhdGVkUG9zdHNDb25zdCxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIHNoYXJlOiBwcm9wcz8udGV4dHM/LnNoYXJlLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ucG9zdD8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG1pZGRsZUltZzogcHJvcHM/LnRleHRzPy5taWRkbGVJbWcgPz8gZmFsc2UsXG4gICAgICAgICAgICB0b3BJbWc6IHByb3BzPy50ZXh0cz8udG9wSW1nID8/IGZhbHNlLFxuICAgICAgICB9IGFzIEJhYnlsb25CbG9nRGV0YWlsc0k7XG4gICAgfVxuXG4gICAgbWFwTW9kYWxNdWx0aXBsZU1vdG9ycyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25Nb2RhbE11bHRpcGxlTW90b3JzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5saW5rc1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy5saW5rcz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+IGJ0bj8ubGlua1ZhbHVlICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuPy5saW5rVmFsdWUgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25Nb2RhbE11bHRpcGxlTW90b3JzSTtcbiAgICB9XG4gICAgbWFwT2ZmZXJCYW5uZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25PZmZlclBvcHVwSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBvZmZlckRhdGE7XG4gICAgICAgIGlmIChwcm9wcz8ub2ZmZXJzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBvZmZlciA9IHByb3BzPy5vZmZlcnM/LlswXTtcbiAgICAgICAgICAgIG9mZmVyRGF0YSA9IHtcbiAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogb2ZmZXI/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IG9mZmVyPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBvZmZlcj8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDI6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsNDogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhvZmZlcj8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIG9mZmVyPy5tdWx0aW1lZGlhPy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/IChvZmZlcj8ubXVsdGltZWRpYT8uZmluZCgoaW1nOiBhbnkpID0+IGltZy5jb3ZlcikgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZmVyPy5tdWx0aW1lZGlhPy5bMF0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IChvZmZlcj8ubXVsdGltZWRpYT8uWzBdID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uZGVmYXVsdGltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYWRkaXRpb25hbEJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+IGJ0bj8ubGlua1ZhbHVlIHx8IGJ0bj8ubGlua192YWx1ZVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0gYXMgQmFieWxvbk9mZmVyUG9wdXBJO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZmZlckRhdGEgPz8gb2ZmZXJEYXRhO1xuICAgIH1cblxuICAgIG1hcE1vZGFsUG9wdXAocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Nb2RhbFBvcHVwSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRIb2xkZXIsXG4gICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgob3B0aW9uOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IG9wdGlvbj8udGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG9wdGlvbj8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgdGl0bGU6IG9wdGlvbj8udGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG9wdGlvbj8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG9wdGlvbiwgZmFsc2UpLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5tb2RhbGltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbk1vZGFsUG9wdXBJO1xuICAgIH1cblxuICAgIG1hcFByZXNzTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblByZXNzTGlzdEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKT8uWzBdLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgIH0gYXMgQmFieWxvblByZXNzTGlzdEk7XG4gICAgfVxuXG4gICAgbWFwQWN0aW9uQmFubmVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBpZGVudGlmaWVyOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uQWN0aW9uQmFubmVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmFjdGlvbmJhbm5lcmltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZTI6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5hY3Rpb25iYW5uZXJpbWFnZTI/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIHRhYmxlOiBwcm9wcz8udGV4dHM/LnRhYmxlLFxuICAgICAgICAgICAgc2FsYTE6XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5zYWxhMT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICh0eXBlb2YgcHJvcHM/LnRleHRzPy5zYWxhMSA9PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uc2FsYTFcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgc2FsYTI6IHByb3BzPy50ZXh0cz8uc2FsYTIsXG4gICAgICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHNhbGExOiBwcm9wcz8udGV4dHM/LnNhbGExPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25BY3Rpb25CYW5uZXJJO1xuICAgIH1cbiAgICBtYXBJbmZvWmlnWmFnQ291bnRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25JbmZvWmlnWmFnQ291bnRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgaW1hZ2VzOiAoc3RyaW5nIHwgQmFieWxvbkltYWdlSSlbXSB8IHVuZGVmaW5lZCA9IFtdO1xuICAgICAgICBsZXQgdGV4dHMsIHRhZ3M7XG4gICAgICAgIGNvbnN0IGRhdGVTdGFydCA9IHByb3BzPy50ZXh0cz8uZGF0ZXN0YXJ0O1xuICAgICAgICBjb25zdCBkYXRlRmluaXNoID0gcHJvcHM/LnRleHRzPy5kYXRlZmluaXNoO1xuICAgICAgICBpZiAocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzKSB7XG4gICAgICAgICAgICBpbWFnZXMgPSB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRleHRzID0ge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgICAgICh0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCksXG4gICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICBjb250ZW50dGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudHRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudHRpdGxlLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50c3VidGl0bGU/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50c3VidGl0bGUsXG4gICAgICAgICAgICAgICAgY29udGVudGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnRkZXNjcmlwdGlvbj8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnRkZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmxvZ28/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGljb25zOiBwcm9wcz8uVmVudGFqYXM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbT8udGl0bGUgfHwgaXRlbT8udGV4dFxuICAgICAgICAgICAgICAgICk/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uaWNvbn1gLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICBpY29uVGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaWNvbnRpdGxlPy5jb250YWluID8/IHByb3BzPy50ZXh0cz8uaWNvbnRpdGxlLFxuICAgICAgICAgICAgICAgIGRheXNUZXh0OiBwcm9wcz8udGV4dHM/LmRheXN0ZXh0LFxuICAgICAgICAgICAgICAgIGhvdXJzVGV4dDogcHJvcHM/LnRleHRzPy5ob3Vyc3RleHQsXG4gICAgICAgICAgICAgICAgbWludXRlc1RleHQ6IHByb3BzPy50ZXh0cz8ubWludXRlc3RleHQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGFncyA9IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY29udGVudHRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRlbnR0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5jb250ZW50c3VidGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjb250ZW50ZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uY29udGVudGRlc2NyaXB0aW9uPy50YWcsXG4gICAgICAgICAgICAgICAgaWNvblRpdGxlOiBwcm9wcz8udGV4dHM/Lmljb250aXRsZT8udGFnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9ucy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRleHRzLFxuICAgICAgICAgICAgaW1hZ2VzLFxuICAgICAgICAgICAgdGFncyxcbiAgICAgICAgICAgIGRhdGVTdGFydCxcbiAgICAgICAgICAgIGRhdGVGaW5pc2gsXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9aaWdaYWdDb3VudGVySTtcbiAgICB9XG4gICAgbWFwR3JDMkltZyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkdyQzJJbWdJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAodHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaG90ZWxzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtPy5tdWx0aW1lZGlhPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICBhbHQ6IGl0ZW0/Lm11bHRpbWVkaWE/LlswXT8uYWx0LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgQmFieWxvbkdyQzJJbWdJO1xuICAgIH1cbiAgICBtYXBMaXNDNFR4dEljbyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkxpc0M0VHh0SWNvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBwcm9wcztcbiAgICB9XG4gICAgbWFwTWFwTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbk1hcExpc3RJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgbXVsdGltZWRpYSwgaG90ZWxzIH0gPSBwcm9wcztcbiAgICAgICAgbGV0IGl0ZW1zOiBCYWJ5bG9uTWFwTGlzdEl0ZW1bXSA9IFtdO1xuICAgICAgICBpZiAoaG90ZWxzKSB7XG4gICAgICAgICAgICBpdGVtcyA9IGhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXI6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsNCA/PyBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5tdWx0aW1lZGlhPy5maWx0ZXIoKGltZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc/LnRhZ3M/LnNvbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnID09PSAnTWFwTGlzdFBob3RvJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZz8ubmFtZSA9PT0gJ01hcExpc3RQaG90bydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcEltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5tdWx0aW1lZGlhPy5maWx0ZXIoKGltZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc/LnRhZ3M/LnNvbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnID09PSAnTWFwTGlzdE1hcCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWc/Lm5hbWUgPT09ICdNYXBMaXN0TWFwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uTWFwTGlzdEl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAobXVsdGltZWRpYSkge1xuICAgICAgICAgICAgaXRlbXMgPSBtdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWc/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZywgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwSW1hZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbk1hcExpc3RJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0ZXh0czogdGhpcy5tYXBHbG9iYWxUZXh0cyhwcm9wcz8udGV4dHMpIGFzIEJhYnlsb25UZXh0SW5mb0ksXG4gICAgICAgICAgICBtYXBJbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/Lm1hcD8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYmFja2dyb3VuZEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmRpbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uTWFwTGlzdEk7XG4gICAgfVxuICAgIG1hcEhpc3RvcnkocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25IaXN0b3J5SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCB7IHRleHRzLCBtdWx0aW1lZGlhLCBpdGVtcyB9ID0gcHJvcHM7XG4gICAgICAgIGxldCB5ZWFyczogQmFieWxvbkhpc3RvcnlZZWFySXRlbVtdID0gW107XG4gICAgICAgIGlmIChpdGVtcykge1xuICAgICAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeWVhciA9IGl0ZW0/LnRpdGxlO1xuICAgICAgICAgICAgICAgIGlmICh5ZWFyICYmICF5ZWFycy5zb21lKCh5KSA9PiB5LnllYXIgPT09IHllYXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHllYXJzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgeWVhcjogeWVhcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh5ZWFyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nWWVhciA9IHllYXJzLmZpbmQoKHkpID0+IHkueWVhciA9PT0geWVhcik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ1llYXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nWWVhci5pdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB5ZWFycz8uc29ydCgoYSwgYikgPT4gTnVtYmVyKGEueWVhcikgLSBOdW1iZXIoYi55ZWFyKSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgKHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCksXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgKHR5cGVvZiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlID09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5zdWJ0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCksXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgKHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJhY2tncm91bmRJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5iYWNrZ3JvdW5kaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHllYXJzLFxuICAgICAgICB9IGFzIEJhYnlsb25IaXN0b3J5STtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VSZXNwb25zZSB7XG4gICAgcGF0aDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgdGh1bWJuYWlsczoge1xuICAgICAgICAzNzU6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICA1NDA6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICA3Njg6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICA4MDA6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICAxMDI0OiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICAgICAgMTI4MDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDEzNjY6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgIH07XG4gICAgY292ZXI6IG51bWJlcjtcbiAgICB0YWdzPzogYW55W107XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgcHJldGl0bGU/OiBzdHJpbmc7XG4gICAgc3VidGl0bGU/OiBzdHJpbmc7XG4gICAgbmRUaXRsZT86IHN0cmluZztcbiAgICBuZFN1YnRpdGxlPzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGxpbmtzPzogYW55W107XG4gICAgYnV0dG9ucz86IGFueVtdO1xuICAgIGFsdD86IHN0cmluZztcbiAgICBhY3RpdmU/OiBib29sZWFuO1xuICAgIG9yZGVyPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlUmVzcG9uc2VQYXRoIHtcbiAgICBvcmlnaW5hbDogc3RyaW5nO1xuICAgIHdlYnA6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRzQWRkb25zIHtcbiAgICBjb250YWN0T2ZmaWNlPzogYW55O1xuICAgIG1lbnVTb2NpYWxNZWRpYT86IHsgW2s6IHN0cmluZ106IHN0cmluZyB9W107XG4gICAgY29uc3VsdFR5cGU/OiBDb25zdWx0VHlwZUk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyT3B0aW9uIHtcbiAgICBpZD86IG51bWJlcjtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIGNoaWxkcmVuPzogRmlsdGVyT3B0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFZpZXcge1xuICAgIG5hbWU6IFZpZXdzVHlwZTtcbiAgICBkZWZhdWx0OiBib29sZWFuO1xufVxuIl19
|
|
4307
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvc2VydmljZXMvbWFwcGVyL21hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDSCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBRVgsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQXVHNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQTJCbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0gsMkJBQTJCLEVBQzNCLHlCQUF5QixHQUU1QixNQUFNLHdCQUF3QixDQUFDOztBQUtoQyxNQUFNLE9BQU8sYUFBYTtJQUgxQjtRQUlxQixZQUFPLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDNUMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN6QyxpQkFBWSxHQUFHLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBTXBFLGtCQUFhLEdBQUcsTUFBTSxDQUFxQyxTQUFTLENBQUMsQ0FBQztRQUV0RSxXQUFNLEdBQW1CLFFBQVEsQ0FDN0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQzlDLENBQUM7UUFJTSxlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hCLGlDQUE0QixHQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLDRCQUE0QixJQUFJLEdBQUcsQ0FBQztRQUN6QyxzQ0FBaUMsR0FDOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQ0FBaUMsSUFBSSxHQUFHLENBQUM7S0E4ckxsRTtJQTlzTEcsSUFBSSxzQkFBc0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDbkQsQ0FBQztJQWdCRCxrQkFBa0IsQ0FDZCxLQUFnQyxFQUNoQyxRQUFRLEdBQUcsSUFBSSxFQUNmLHNCQUFpRCxHQUFHLEVBQ3BELDJCQUFzRCxHQUFHO1FBRXpELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUU7WUFDbEQsbUJBQW1CO1lBQ25CLHdCQUF3QjtTQUMzQixDQUFDLENBQUM7UUFFSCxPQUFPLGFBQWE7WUFDaEIsQ0FBQyxDQUFDLFFBQVE7Z0JBQ04sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsR0FBRyxhQUFhLEVBQUU7Z0JBQ3BELENBQUMsQ0FBQztvQkFDSSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixHQUFHLGFBQWEsRUFBRTtvQkFDdkQsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHO29CQUNmLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTztvQkFDdkIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO29CQUNuQixRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVE7b0JBQ3pCLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUTtvQkFDekIsV0FBVyxFQUFFLEtBQUssRUFBRSxXQUFXO29CQUMvQixPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO29CQUN6QyxLQUFLLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO29CQUNyQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7aUJBQ3RCO1lBQ1AsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNwQixDQUFDO0lBRU8sbUJBQW1CLENBQ3ZCLEtBQWdDLEVBQ2hDLEtBR0M7UUFFRCxNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQUcsTUFBaUMsRUFBRSxFQUFFLENBQ3ZELE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVwQyxNQUFNLGNBQWMsR0FBRztZQUNuQixLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDakIsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRO1lBQ3JCLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJO1lBQy9CLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRO1NBQ3RDLENBQUM7UUFFRixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3JDLE9BQU8sU0FBUyxDQUFDLEdBQUcsY0FBYyxDQUFDLENBQUM7U0FDdkM7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDM0IsT0FBTyxTQUFTLENBQ1osS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLElBQUksRUFDcEQsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLFFBQVEsRUFDeEQsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFDOUIsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFDbEMsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFDOUIsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFDbEMsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFDOUIsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFDbEMsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFDL0IsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFDbkMsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFDL0IsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFDbkMsR0FBRyxjQUFjLENBQ3BCLENBQUM7U0FDTDtRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsRUFBRSxFQUFFO1lBQ3pDLE9BQU8sU0FBUyxDQUNaLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsd0JBQXdCLENBQUMsRUFBRSxJQUFJLEVBQ3pELEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsd0JBQXdCLENBQUMsRUFBRSxRQUFRLEVBQzdELEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQzlCLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQ2xDLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQzlCLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQ2xDLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQy9CLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQ25DLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQy9CLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQ25DLEdBQUcsY0FBYyxDQUNwQixDQUFDO1NBQ0w7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsRUFBRTtZQUMxQyxPQUFPLFNBQVMsQ0FDWixLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUM5QixLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUNsQyxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUMvQixLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUNuQyxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUMvQixLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUNuQyxHQUFHLGNBQWMsQ0FDcEIsQ0FBQztTQUNMO1FBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixFQUFFLEVBQUU7WUFDeEMsT0FBTyxTQUFTLENBQ1osS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFDL0IsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFDbkMsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFDL0IsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFDbkMsR0FBRyxjQUFjLENBQ3BCLENBQUM7U0FDTDtRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxFQUFFO1lBQzFDLE9BQU8sU0FBUyxDQUNaLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQy9CLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQ25DLEdBQUcsY0FBYyxDQUNwQixDQUFDO1NBQ0w7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtZQUNyQyxPQUFPLFNBQVMsQ0FDWixLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFDakIsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQ3JCLEdBQUcsY0FBYyxDQUNwQixDQUFDO1NBQ0w7UUFFRCxPQUFPLFNBQVMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCx1QkFBdUIsQ0FDbkIsTUFBbUMsRUFDbkMsUUFBUSxHQUFHLElBQUk7UUFFZixPQUFPLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFFLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU8sbUJBQW1CLENBQ3ZCLFNBQWlCLEVBQ2pCLFNBQVMsR0FBRyxDQUFDO1FBRWIsTUFBTSxPQUFPLEdBQXFCLEVBQUUsQ0FBQztRQUNyQyxLQUFLLElBQUksQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLElBQUksU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUM5RDtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFTyxlQUFlLENBQUMsS0FBc0I7UUFDMUMsTUFBTSxXQUFXLEdBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxJQUFJLEVBQUU7WUFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFFdEQsSUFBSSxXQUFXLEVBQUU7WUFDYixPQUFPLFdBQVcsQ0FBQztTQUN0QjtRQUVELE1BQU0sY0FBYyxHQUFHO1lBQ25CLEtBQUssRUFBRSxtQkFBbUI7WUFDMUIsS0FBSyxFQUFFLHFCQUFxQjtTQUMvQixDQUFDO1FBRUYsS0FBSyxNQUFNLEtBQUssSUFBSSxjQUFjLEVBQUU7WUFDaEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUVyRCxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNkLFNBQVM7YUFDWjtZQUVELE1BQU0saUJBQWlCLEdBQUcsV0FBVztpQkFDaEMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLEVBQUUsQ0FBQztnQkFDcEMsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUViLElBQUksaUJBQWlCLElBQUksaUJBQWlCLEtBQUssV0FBVyxFQUFFO2dCQUN4RCxPQUFPLGlCQUFpQixDQUFDO2FBQzVCO1NBQ0o7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBc0I7UUFDdEMsTUFBTSxlQUFlLEdBQ2pCLE9BQU8sS0FBSyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDO1FBQzdELE9BQU87WUFDSCxjQUFjLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUM7U0FDckQsQ0FBQztJQUNOLENBQUM7SUFFRCxZQUFZLENBQ1IsSUFBdUI7UUFFdkIsTUFBTSxVQUFVLEdBQ1osSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3BCLE1BQU0sZUFBZSxHQUFvQztnQkFDckQsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUNuQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUs7Z0JBQ3RCLEtBQUssRUFBRSxFQUFFO2FBQ3VCLENBQUM7WUFDckMsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFO2dCQUNuQyxLQUFLLE1BQU07b0JBQ1AsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUNuQyxTQUFTLENBQUMsS0FBSyxDQUNDLENBQUM7b0JBQ3JCLGVBQWUsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO29CQUM5QixNQUFNO2dCQUNWLEtBQUssV0FBVztvQkFDWixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FDNUMsU0FBUyxDQUFDLEtBQUssQ0FDRCxDQUFDO29CQUNuQixlQUFlLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQztvQkFDbkMsTUFBTTtnQkFDVixLQUFLLGVBQWU7b0JBQ2hCLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUM1QyxTQUFTLENBQUMsS0FBSyxDQUNELENBQUM7b0JBQ25CLGVBQWUsQ0FBQyxJQUFJLEdBQUcsZUFBZSxDQUFDO29CQUN2QyxNQUFNO2dCQUNWLEtBQUssUUFBUTtvQkFDVCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FDNUMsU0FBUyxDQUFDLEtBQUssQ0FDRCxDQUFDO29CQUNuQixlQUFlLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztvQkFDaEMsTUFBTTthQUNiO1lBRUQsT0FBTyxlQUFlLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFDUCxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQXNCO1FBQzdCLE1BQU0sUUFBUSxHQUFHLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEUsTUFBTSxPQUFPLEdBQUc7WUFDWixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7WUFDbkIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO2dCQUNmLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUNwQyxFQUFFLEdBQUcsQ0FDRCxDQUFDLElBQVMsRUFBRSxFQUFFLENBQ1YsQ0FBQztnQkFDRyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUk7Z0JBQ2pCLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUztnQkFDcEIsUUFBUSxFQUNKLElBQUksRUFBRSxRQUFRLEtBQUssQ0FBQztvQkFDaEIsQ0FBQyxDQUFDLFdBQVc7b0JBQ2IsQ0FBQyxDQUFDLElBQUksRUFBRSxRQUFRLEtBQUssQ0FBQzt3QkFDcEIsQ0FBQyxDQUFDLGdCQUFnQjt3QkFDbEIsQ0FBQyxDQUFDLFVBQVU7YUFDekIsQ0FBbUIsQ0FDM0I7WUFDTCxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU07WUFDckIsUUFBUSxFQUFFO2dCQUNOLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSTtnQkFDckIsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTO2dCQUN4QixNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU07YUFDTjtTQUNILENBQUM7UUFFckIsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVELGFBQWEsQ0FDVCxJQUFXLEVBQ1gsTUFBeUI7UUFFekIsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDdkIsT0FBTyxFQUF3QixDQUFDO1NBQ25DO1FBQ0QsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLEVBQUU7WUFDM0IsT0FBTyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQztRQUNGLE1BQU0sVUFBVSxHQUF1QixJQUFJO1lBQ3ZDLEVBQUUsTUFBTSxDQUNKLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLFNBQVMsS0FBSyxTQUFTLENBQy9EO1lBQ0QsRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNoQixNQUFNLGVBQWUsR0FBcUI7Z0JBQ3RDLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDbkMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLO2dCQUN0QixLQUFLLEVBQUUsRUFBRTtnQkFDVCxLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUs7Z0JBQ3RCLFVBQVUsRUFBRSxTQUFTLENBQUMsVUFBVTtnQkFDaEMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTO2FBQ2IsQ0FBQztZQUV0QixJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUU7Z0JBQ2pCLDJFQUEyRTtnQkFDM0UsSUFBSTtvQkFDQSxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUU7d0JBQ25DLEtBQUssV0FBVzs0QkFDWixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQy9CLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLCtCQUErQjt3QkFDL0IsS0FBSyxXQUFXOzRCQUNaLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FDckMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxnQkFBZ0I7NEJBQ2pCLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUMxQyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFFVixLQUFLLGlCQUFpQixDQUFDO3dCQUN2QixLQUFLLGtCQUFrQjs0QkFDbkIsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUN2QyxTQUFTLENBQUMsS0FBSyxFQUNmLGVBQWUsQ0FBQyxJQUFJLEtBQUssa0JBQWtCLENBQ3pDLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLFNBQVMsQ0FBQzt3QkFDZixLQUFLLGNBQWMsQ0FBQzt3QkFDcEIsS0FBSyxhQUFhOzRCQUNkLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FDbkMsU0FBUyxDQUFDLEtBQUssRUFDZixlQUFlLENBQUMsSUFBSSxLQUFLLGNBQWMsRUFDdkMsU0FBUyxDQUFDLFNBQVMsRUFDbkIsU0FBUyxDQUFDLFVBQVUsQ0FDbEIsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssb0JBQW9CLENBQUM7d0JBQzFCLEtBQUssbUJBQW1COzRCQUNwQixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FDekMsU0FBUyxDQUFDLEtBQUssRUFDZixlQUFlLENBQUMsSUFBSTtnQ0FDaEIsb0JBQW9CLEVBQ3hCLFNBQVMsQ0FBQyxVQUFVLENBQ2xCLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLFdBQVc7NEJBQ1osZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUNyQyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLGNBQWMsQ0FBQzt3QkFDcEIsS0FBSyxlQUFlOzRCQUNoQixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQ3BDLFNBQVMsQ0FBQyxLQUFLLEVBQ2YsZUFBZSxDQUFDLElBQUksS0FBSyxlQUFlLENBQ3RDLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLGtCQUFrQjs0QkFDbkIsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUN2QyxTQUFTLENBQUMsS0FBSyxFQUNmLGVBQWUsQ0FBQyxJQUFJLEtBQUssa0JBQWtCLENBQ3pDLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLGlCQUFpQjs0QkFDbEIsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUN2QyxTQUFTLENBQUMsS0FBSyxFQUNmLGVBQWUsQ0FBQyxJQUFJLEtBQUssaUJBQWlCLENBQ3hDLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLFVBQVU7NEJBQ1gsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUNuQyxTQUFTLENBQUMsS0FBSyxFQUNmLEtBQUssRUFDTCxTQUFTLENBQUMsU0FBUyxFQUNuQixTQUFTLENBQUMsVUFBVSxDQUNsQixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxnQkFBZ0IsQ0FBQzt3QkFDdEIsS0FBSyxpQkFBaUI7NEJBQ2xCLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FDbEMsU0FBUyxDQUFDLEtBQUssRUFDZixlQUFlLENBQUMsSUFBSSxLQUFLLGlCQUFpQixFQUMxQyxTQUFTLENBQUMsVUFBVSxDQUNsQixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxVQUFVOzRCQUNYLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FDcEMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxnQkFBZ0IsQ0FBQzt3QkFDdEIsS0FBSyxpQkFBaUI7NEJBQ2xCLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FDdkMsU0FBUyxDQUFDLEtBQUssRUFDZixlQUFlLENBQUMsSUFBSSxLQUFLLGlCQUFpQixDQUN4QyxDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxZQUFZOzRCQUNiLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FDdEMsU0FBUyxDQUFDLEtBQUssRUFDZixTQUFTLENBQUMsVUFBVSxDQUNsQixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxZQUFZOzRCQUNiLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FDdEMsU0FBUyxDQUFDLEtBQUssRUFDZixTQUFTLENBQUMsVUFBVSxDQUNsQixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxXQUFXOzRCQUNaLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FDckMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxhQUFhOzRCQUNkLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FDdkMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxXQUFXOzRCQUNaLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FDckMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxlQUFlOzRCQUNoQixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FDekMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxhQUFhOzRCQUNkLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FDdkMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxrQkFBa0I7NEJBQ25CLGVBQWUsQ0FBQyxLQUFLO2dDQUNqQixJQUFJLENBQUMsbUJBQW1CLENBQ3BCLFNBQVMsQ0FBQyxLQUFLLEVBQ2YsU0FBUyxDQUFDLFVBQVUsQ0FDbEIsQ0FBQzs0QkFDWCxNQUFNO3dCQUNWLEtBQUssY0FBYzs0QkFDZixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQ3ZDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLGtDQUFrQzt3QkFFbEMsS0FBSyxRQUFROzRCQUNULGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FDbEMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBRVYsS0FBSyxhQUFhLENBQUM7d0JBQ25CLEtBQUssZUFBZTs0QkFDaEIsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUN2QyxTQUFTLENBQUMsS0FBSyxFQUNmLE1BQU0sRUFBRSxhQUFhLEVBQ3JCLE1BQU0sRUFBRSxXQUFXLENBQ2pCLENBQUM7NEJBQ1AsTUFBTTt3QkFFVixLQUFLLFlBQVk7NEJBQ2IsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUN0QyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFFVixLQUFLLFFBQVE7NEJBQ1QsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUNsQyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFFVixLQUFLLFlBQVk7NEJBQ2IsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUN0QyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFFVixLQUFLLE9BQU87NEJBQ1IsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUNqQyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFFVixLQUFLLFdBQVc7NEJBQ1osZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUNyQyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFFVixLQUFLLGFBQWE7NEJBQ2QsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUN0QyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFFVixLQUFLLGlCQUFpQjs0QkFDbEIsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQzNDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssZ0JBQWdCOzRCQUNqQixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FDMUMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBRVYsS0FBSyxZQUFZOzRCQUNiLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FDdEMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBRVYsS0FBSyxXQUFXOzRCQUNaLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FDckMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBRVYsS0FBSyxZQUFZOzRCQUNiLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FDdEMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBRVYsS0FBSyxhQUFhOzRCQUNkLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FDdkMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBRVYsS0FBSyxZQUFZOzRCQUNiLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FDdEMsU0FBUyxDQUFDLEtBQUssRUFDZixTQUFTLENBQUMsTUFBTSxDQUNkLENBQUM7NEJBQ1AsTUFBTTt3QkFFVixLQUFLLEtBQUs7NEJBQ04sZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUMvQixTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFFVixLQUFLLGNBQWM7NEJBQ2YsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUN4QyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFFVixLQUFLLFNBQVMsQ0FBQzt3QkFDZixLQUFLLFdBQVcsQ0FBQzt3QkFDakIsS0FBSyxhQUFhLENBQUM7d0JBQ25CLEtBQUssb0JBQW9COzRCQUNyQixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQ25DLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssS0FBSzs0QkFDTixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQ2hDLFNBQVMsQ0FBQyxLQUFLLEVBQ2YsTUFBTSxFQUFFLGVBQWUsQ0FDckIsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssZ0JBQWdCLENBQUM7d0JBQ3RCLEtBQUssaUJBQWlCOzRCQUNsQixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FDekMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBRVYsS0FBSyxjQUFjOzRCQUNmLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FDeEMsU0FBUyxDQUFDLEtBQUssRUFDZixTQUFTLENBQUMsVUFBVSxDQUNsQixDQUFDOzRCQUNQLE1BQU07d0JBRVYsS0FBSyxjQUFjOzRCQUNmLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FDeEMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBRVYsS0FBSyxZQUFZOzRCQUNiLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FDdEMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBRVYsS0FBSyxVQUFVOzRCQUNYLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FDcEMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBRVYsS0FBSyxnQkFBZ0I7NEJBQ2pCLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUMxQyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLGlCQUFpQixDQUFDO3dCQUN2QixLQUFLLGdCQUFnQjs0QkFDakIsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQzFDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssWUFBWTs0QkFDYixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ3RDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssU0FBUzs0QkFDVixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQ25DLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssa0JBQWtCOzRCQUNuQixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQ3hDLFNBQVMsQ0FBQyxLQUFLLEVBQ2YsU0FBUyxDQUFDLFVBQVUsQ0FDbEIsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssbUJBQW1COzRCQUNwQixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQ3hDLFNBQVMsQ0FBQyxLQUFLLEVBQ2YsU0FBUyxDQUFDLFVBQVUsQ0FDbEIsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssZUFBZTs0QkFDaEIsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQ3pDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssYUFBYTs0QkFDZCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQ3ZDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssYUFBYTs0QkFDZCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQ3ZDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssYUFBYTs0QkFDZCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQ3ZDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssYUFBYTs0QkFDZCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQ3ZDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssZUFBZTs0QkFDaEIsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQ3pDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssY0FBYzs0QkFDZixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQ3hDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssZ0JBQWdCOzRCQUNqQixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FDMUMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBRVYsS0FBSyxVQUFVOzRCQUNYLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FDcEMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBRVYsS0FBSyxpQkFBaUI7NEJBQ2xCLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUMzQyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFFVixLQUFLLFdBQVc7NEJBQ1osZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUNyQyxTQUFTLENBQUMsS0FBSyxFQUNmLFNBQVMsQ0FDUCxDQUFDOzRCQUNQLE1BQU07d0JBRVYsS0FBSyxhQUFhOzRCQUNkLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FDdkMsU0FBUyxDQUNQLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLGVBQWU7NEJBQ2hCLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUN6QyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLGFBQWEsQ0FBQzt3QkFDbkIsS0FBSyxjQUFjOzRCQUNmLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FDdkMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxNQUFNOzRCQUNQLElBQUksaUJBQWlCLEVBQUUsRUFBRTtnQ0FDckIsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7b0NBQ3JCLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDOzZCQUNyQzs0QkFDRCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQ25DLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssVUFBVTs0QkFDWCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FDMUMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxRQUFROzRCQUNULGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FDbEMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxVQUFVOzRCQUNYLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FDcEMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxZQUFZOzRCQUNiLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FDdEMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxhQUFhOzRCQUNkLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FDdkMsU0FBUyxDQUFDLEtBQUssQ0FDYixDQUFDOzRCQUNQLE1BQU07d0JBQ1YsS0FBSyxxQkFBcUI7NEJBQ3RCLGVBQWUsQ0FBQyxLQUFLO2dDQUNqQixJQUFJLENBQUMsc0JBQXNCLENBQ3ZCLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDWCxNQUFNO3dCQUNWLEtBQUssWUFBWTs0QkFDYixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ3RDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssV0FBVzs0QkFDWixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQ3JDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssY0FBYzs0QkFDZixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQ3hDLFNBQVMsQ0FBQyxLQUFLLEVBQ2YsU0FBUyxDQUFDLFVBQVUsQ0FDbEIsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssbUJBQW1COzRCQUNwQixlQUFlLENBQUMsS0FBSztnQ0FDakIsSUFBSSxDQUFDLG9CQUFvQixDQUNyQixTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1gsTUFBTTt3QkFDVixLQUFLLFNBQVM7NEJBQ1YsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUNuQyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLGFBQWE7NEJBQ2QsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUN2QyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFDVixLQUFLLFNBQVM7NEJBQ1YsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUNuQyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFFVixLQUFLLFNBQVM7NEJBQ1YsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUNuQyxTQUFTLENBQUMsS0FBSyxDQUNiLENBQUM7NEJBQ1AsTUFBTTt3QkFFVjs0QkFDSSxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQ25DLFNBQVMsRUFDVCxNQUFNLEVBQUUsYUFBYSxFQUNyQixNQUFNLEVBQUUsV0FBVyxDQUNqQixDQUFDOzRCQUNQLE1BQU07cUJBQ2I7aUJBQ0o7Z0JBQUMsT0FBTyxLQUFLLEVBQUU7b0JBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDeEI7YUFDSjtZQUVELE9BQU8sZUFBZSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztJQUVELFVBQVUsQ0FDTixTQUFjLEVBQ2QsT0FBd0IsRUFDeEIsY0FBK0I7UUFFL0IsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUNqQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDO1FBQzFCLEtBQUssR0FBRyxLQUFLLElBQUksU0FBUyxDQUFDO1FBRTNCLE1BQU0sS0FBSyxHQUFJLFNBQVMsRUFBRSxLQUFxQyxFQUFFLE1BQU0sQ0FDbkUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2IsQ0FBQztRQUVGLElBQUksU0FBa0IsQ0FBQztRQUN2QixJQUFJLFFBQWlCLENBQUM7UUFDdEIsSUFBSSxXQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQzVCLElBQUksZUFBZSxHQUFHLEtBQUssQ0FBQztRQUU1QixJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMzQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTVELFNBQVMsR0FBRyxVQUFVLEVBQUUsSUFBSSxLQUFLLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFDakQsUUFBUSxHQUFHLFVBQVUsRUFBRSxJQUFJLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQztZQUUvQyxRQUFRLFVBQVUsRUFBRSxJQUFJLEVBQUU7Z0JBQ3RCLEtBQUssU0FBUyxDQUFDLEtBQUs7b0JBQ2hCLFdBQVcsR0FBRyxDQUFDLENBQUM7b0JBQ2hCLE1BQU07Z0JBQ1YsS0FBSyxTQUFTLENBQUMsS0FBSztvQkFDaEIsV0FBVyxHQUFHLENBQUMsQ0FBQztvQkFDaEIsTUFBTTtnQkFDVixLQUFLLFNBQVMsQ0FBQyxLQUFLO29CQUNoQixXQUFXLEdBQUcsQ0FBQyxDQUFDO29CQUNoQixNQUFNO2dCQUVWO29CQUNJLFdBQVcsR0FBRyxDQUFDLENBQUM7b0JBQ2hCLE1BQU07YUFDYjtTQUNKO2FBQU07WUFDSCxnREFBZ0Q7WUFDaEQsTUFBTSxJQUFJLEdBQUcsU0FBUyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFFbEQsU0FBUztnQkFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUNqRSxRQUFRO2dCQUNKLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1NBQ2xFO1FBQ0QsMERBQTBEO1FBQzFELGVBQWUsR0FBRyxLQUFLLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUV4RCxJQUFJLFdBQVcsR0FBWSxLQUFLLENBQUM7UUFDakMsSUFBSSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFBRSxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBRTlDLElBQUksa0JBQWtCLEdBQVksS0FBSyxDQUFDO1FBQ3hDLElBQUksS0FBSyxFQUFFLEtBQUssRUFBRSxrQkFBa0I7WUFBRSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFFaEUsTUFBTSxhQUFhLEdBQUcsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNwQyxJQUFJLENBQUMsUUFBUTtnQkFBRSxPQUFPLEVBQUUsQ0FBQztZQUN6QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO2dCQUFFLE9BQU8sUUFBUSxDQUFDO1lBRTdDLHNIQUFzSDtZQUN0SCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUNqQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQ1QsR0FBRztnQkFDSCxPQUFPLEdBQUcsS0FBSyxRQUFRO2dCQUN2QixDQUFDLFdBQVcsSUFBSSxHQUFHLElBQUksWUFBWSxJQUFJLEdBQUcsQ0FBQyxDQUNsRCxDQUFDO1FBQ04sQ0FBQyxDQUFDO1FBRUYsSUFBSSxhQUFhLEdBQVksS0FBSyxDQUFDO1FBQ25DLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsSUFBSSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXBFLElBQUksVUFBVSxHQUF1QixTQUFTLENBQUM7UUFDL0MsVUFBVTtZQUNOLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsSUFBSSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQztnQkFDNUQsU0FBUyxDQUFDO1FBRWQsSUFBSSxNQUFXLENBQUM7UUFDaEIsSUFBSTtZQUNBLE1BQU0sR0FBRztnQkFDTCxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVU7Z0JBQ2pDLGFBQWEsRUFBRSxhQUFhO2dCQUM1QixVQUFVLEVBQUUsV0FBVztnQkFDdkIsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLGtCQUFrQixFQUFFLGtCQUFrQjtnQkFDdEMsVUFBVSxFQUFFLFVBQVU7Z0JBQ3RCLFNBQVMsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDO2dCQUMxQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFxQjtnQkFDNUQsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUs7Z0JBQ3ZELGVBQWUsRUFBRSxLQUFLLEVBQUUsZUFBZSxJQUFJLEtBQUs7Z0JBQ2hELFNBQVMsRUFBRSxTQUFTO2dCQUNwQixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO2dCQUNqQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDO2dCQUN2QyxRQUFRLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUM1QixLQUFLLEVBQUUsZUFBZTtvQkFDbEIsS0FBSyxFQUFFLFNBQVM7b0JBQ2hCLEtBQUssRUFBRSxlQUFlLENBQzdCO2dCQUNELE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksS0FBSyxFQUFFLEtBQUssQ0FBQztnQkFDM0QsTUFBTSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztnQkFDM0MsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO2dCQUNqQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDO2dCQUM3QyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO2dCQUN4QyxhQUFhLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQztnQkFDakQsS0FBSyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQ25CLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUM7b0JBQ2xDLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztvQkFDN0IsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU07d0JBQzNCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDMUIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ3JDO2dCQUNELFlBQVksRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFELFdBQVcsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzdELEtBQUssRUFDRCxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FDYixDQUFDLElBQVMsRUFBRSxFQUFFLENBQ1YsQ0FBQztvQkFDRyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUk7b0JBQ2pCLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRztvQkFDZCxRQUFRLEVBQUUsVUFBVTtpQkFDdkIsQ0FBbUIsQ0FFL0IsRUFBRSxNQUFNLENBQ0wsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNMLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN6QixJQUFJLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLE1BQU0sQ0FDbkQ7Z0JBQ0QsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQ3JCLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUN4RDtnQkFDRCxVQUFVLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUNoQyxLQUFLLEVBQUUsUUFBUTtvQkFDWCxLQUFLLEVBQUUsVUFBVTtvQkFDakIsS0FBSyxFQUFFLElBQUk7b0JBQ1gsS0FBSyxFQUFFLEtBQUs7b0JBQ1osS0FBSyxFQUFFLEtBQUs7b0JBQ1osS0FBSyxFQUFFLElBQUksQ0FDbEI7Z0JBQ0QsSUFBSSxFQUFFO29CQUNGLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHO2lCQUNsQztnQkFDRCxVQUFVLEVBQUU7b0JBQ1IsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7aUJBQzVDO2dCQUNELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGlCQUFpQjtnQkFDeEMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsaUJBQWlCO2dCQUN4QyxLQUFLLEVBQUUsS0FBSyxDQUFDLGVBQWU7b0JBQ3hCLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQ25CLEtBQUssRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQ3ZDLEtBQUssQ0FDUjtvQkFDSCxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUNuQixLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUNoQyxLQUFLLENBQ1I7Z0JBQ1AsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQ3RCLEtBQUssRUFBRSxLQUFLLElBQUksS0FBSyxFQUFFLElBQUksRUFDM0IsS0FBSyxFQUFFLEtBQUssQ0FDZjtnQkFDRCxXQUFXLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO2dCQUM5QyxXQUFXLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFPLEVBQUUsRUFBRTtvQkFDN0MsT0FBTzt3QkFDSCxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUk7d0JBQ2QsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJO3dCQUNkLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRztxQkFDZixDQUFDO2dCQUNOLENBQUMsQ0FBQztnQkFDRixNQUFNLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDO2dCQUMzQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDOUQsWUFBWSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDO2dCQUM3RCxXQUFXLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUNsQyxLQUFLLEVBQUUsVUFBVSxJQUFJLEtBQUssRUFBRSxXQUFXLENBQzFDO2dCQUNELFlBQVksRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQztnQkFDL0QsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO2dCQUMvQyxVQUFVLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVO2FBQ3RCLENBQUM7U0FDdEI7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkNBQTJDLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDckU7UUFFRCxvRkFBb0Y7UUFDcEYsSUFDSSxPQUFPLE1BQU0sS0FBSyxXQUFXO1lBQzdCLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFDekM7WUFDRSxPQUFPLENBQUMsR0FBRyxDQUNQLFNBQVMsQ0FBQyxJQUFJLEVBQ2QsU0FBUyxDQUFDLE1BQU0sRUFBRTtnQkFDZCxVQUFVLEVBQUUsSUFBSTtnQkFDaEIsaUJBQWlCLEVBQUUsSUFBSTtnQkFDdkIsVUFBVSxFQUFFLElBQUk7YUFDbkIsQ0FBQyxDQUNMLENBQUM7U0FDTDtRQUVELE9BQU8sU0FBUyxDQUFDLE1BQU0sRUFBRTtZQUNyQixVQUFVLEVBQUUsSUFBSTtZQUNoQixpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLFVBQVUsRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxLQUFVO1FBQzdCLHFGQUFxRjtRQUNyRixNQUFNLFNBQVMsR0FDWCxLQUFLLEVBQUUsY0FBYyxJQUFJLEtBQUssRUFBRSxhQUFhLElBQUksS0FBSyxFQUFFLE9BQU8sQ0FBQztRQUVwRSxJQUFJLFNBQVMsRUFBRTtZQUNYLHNFQUFzRTtZQUN0RSxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztnQkFDMUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUMxQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUVsQiw4REFBOEQ7WUFDOUQsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FDdkMsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUNiLE9BQU87Z0JBQ1AsT0FBTyxPQUFPLEtBQUssUUFBUTtnQkFDM0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUM5QixDQUFDO1lBRUYsSUFBSSxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDM0IsT0FBTyxjQUFjLENBQUMsR0FBRyxDQUNyQixDQUFDLE9BQVksRUFBRSxFQUFFLENBQ2IsQ0FBQztvQkFDRyxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUU7b0JBQ2QsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87b0JBQ3hCLFFBQVEsRUFBRSxPQUFPLENBQUMsWUFBWTtvQkFDOUIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7b0JBQzFCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztvQkFDeEIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFO29CQUNkLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztvQkFDeEIsR0FBRyxFQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUc7b0JBQ2hDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztvQkFDcEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO29CQUNwQixZQUFZLEVBQ1IsT0FBTyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsWUFBWTtvQkFDL0MsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO2lCQUN2QixDQUF1QixDQUMvQixDQUFDO2FBQ0w7U0FDSjtRQUVELG9FQUFvRTtRQUNwRSxPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELDhDQUE4QztJQUN0Qyw0QkFBNEIsQ0FDaEMsS0FBVTtRQUVWLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFFN0IsTUFBTSxZQUFZLEdBQW1ELEVBQUUsQ0FBQztRQUV4RSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQy9CLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztnQkFDaEQsSUFBSSxLQUFLLEVBQUU7b0JBQ1AsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN2QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBRXZCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUU7d0JBQ3RCLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQztxQkFDdkM7b0JBRUQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUN6QixRQUFRLEtBQUssRUFBRTt3QkFDWCxLQUFLLE9BQU87NEJBQ1IsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7NEJBQ2pDLE1BQU07d0JBQ1YsS0FBSyxTQUFTOzRCQUNWLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDOzRCQUNwQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQzs0QkFDekMsTUFBTTt3QkFDVixLQUFLLE1BQU07NEJBQ1AsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7NEJBQ2xDLE1BQU07d0JBQ1YsS0FBSyxPQUFPOzRCQUNSLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDOzRCQUNsQyxNQUFNO3FCQUNiO2lCQUNKO2FBQ0o7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUF5QixDQUFDO1FBQ25FLE9BQU8sTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2xELENBQUM7SUFFRCxvQkFBb0IsQ0FDaEIsV0FBNEI7UUFFNUIsT0FBTyxXQUFXO1lBQ2QsRUFBRSxNQUFNLENBQUMsQ0FBQyxVQUFlLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDaEQsRUFBRSxHQUFHLENBQ0QsQ0FBQyxVQUFlLEVBQUUsRUFBRSxDQUNoQixDQUFDO1lBQ0csTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNO1lBQ3pCLFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUM7WUFDdEQsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQztZQUNuRCxLQUFLLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FDbkIsVUFBVSxFQUFFLElBQUksSUFBSSxVQUFVLEVBQUUsS0FBSyxDQUN4QztZQUNELE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUM7WUFDOUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLO1lBQ3hCLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUN0QixVQUFVLEVBQUUsS0FBSyxDQUNBO1lBQ3JCLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRTtZQUNsQixjQUFjLEVBQUUsVUFBVSxFQUFFLGNBQWM7WUFDMUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHO1lBQ3BCLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSTtZQUN0QixNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzdDLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDYixjQUFjLEVBQUUsS0FBSyxFQUFFLGNBQWM7YUFDeEMsQ0FBQyxDQUFDO1NBQ04sQ0FBMkIsQ0FDbkMsQ0FBQztJQUNWLENBQUM7SUFFRCxpQkFBaUIsQ0FDYixPQUF3QjtRQUV4QixPQUFPO1lBQ0gsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQ2pCLENBQUMsSUFBUyxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQ3pCLENBQUM7Z0JBQ0csRUFBRSxFQUFFLEtBQUs7Z0JBQ1QsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO2dCQUNiLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTthQUNsQixDQUF5QixDQUNqQztZQUNELE1BQU0sRUFBRSxPQUFPO2dCQUNYLEVBQUUsTUFBTSxDQUNKLENBQ0ksR0FBaUQsRUFDakQsTUFBVyxFQUNYLFdBQW1CLEVBQ3JCLEVBQUU7Z0JBQ0EsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFO29CQUNuQixNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUM5QyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDWixHQUFHLElBQUk7d0JBQ1AsTUFBTSxFQUFFLFdBQVc7cUJBQ3RCLENBQUMsQ0FDTCxDQUFDO29CQUNGLE9BQU87d0JBQ0gsR0FBRyxHQUFHO3dCQUNOOzRCQUNJLFVBQVUsRUFBRSxvQkFBb0I7NEJBQ2hDLFdBQVc7eUJBQ2Q7cUJBQ0osQ0FBQztpQkFDTDtnQkFDRCxPQUFPLEdBQUcsQ0FBQztZQUNmLENBQUMsRUFDRCxFQUFFLENBQ0w7aUJBQ0EsT0FBTyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDO2lCQUM1QyxHQUFHLENBQ0EsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUNULENBQUM7Z0JBQ0csS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO2dCQUNoQixHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUM7Z0JBQ3hDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTTtnQkFDbkIsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO2FBQ3pCLENBQXVCLENBQy9CO1NBQ3VCLENBQUM7SUFDckMsQ0FBQztJQUVELHFCQUFxQixDQUNqQixLQUFzQixFQUN0QixjQUErQjtRQUUvQixNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYTtZQUN4RCxDQUFDLENBQUMsS0FBSyxFQUFFLFlBQVk7WUFDckIsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWTtnQkFDekMsQ0FBQyxDQUFDLEtBQUs7Z0JBQ1AsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUN2QixPQUFPO1lBQ0gsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLENBQ3RCLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FDVixDQUFDO2dCQUNHLGFBQWEsRUFDVCxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxhQUFhO2dCQUM5QyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQ2IsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2FBQ2xCLENBQW1CLENBQzNCO1lBQ0QsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsbUJBQW1CO1lBQzlDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGFBQWE7U0FDckMsQ0FBQztJQUNOLENBQUM7SUFFRCxxQkFBcUIsQ0FDakIsWUFBNkI7UUFFN0IsSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUVwQyxNQUFNLG9CQUFvQixHQUFHLENBQ3pCLENBQU0sRUFDTixLQUFhLEVBQ00sRUFBRTtZQUNyQixJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRTtnQkFDdkIsT0FBTztvQkFDSCxFQUFFLEVBQUUsS0FBSztvQkFDVCxJQUFJLEVBQUUsQ0FBQztvQkFDUCxLQUFLLEVBQUUsRUFBRTtvQkFDVCxNQUFNLEVBQUUsRUFBRTtvQkFDVixLQUFLLEVBQUUsRUFBRTtpQkFDVyxDQUFDO2FBQzVCO1lBRUQsT0FBTztnQkFDSCxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLO2dCQUNsQixJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQy9CLE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUM7Z0JBQ3JDLEtBQUssRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7Z0JBQ2pDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUM7Z0JBQ3pDLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUM7Z0JBQ3ZDLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSztvQkFDWCxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO29CQUMvQixDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7YUFDUixDQUFDO1FBQzdCLENBQUMsQ0FBQztRQUVGLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUM3QixNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxLQUFLLENBQ3hDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDRixPQUFPLENBQUMsS0FBSyxRQUFRO2dCQUNyQixDQUFDLENBQUM7b0JBQ0UsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLFNBQVM7d0JBQ2YsQ0FBQyxDQUFDLElBQUksS0FBSyxTQUFTO3dCQUNwQixDQUFDLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQ3RDLENBQUM7WUFFRixJQUFJLGlCQUFpQixFQUFFO2dCQUNuQixPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQzthQUNqRDtZQUVELE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBVSxFQUFTLEVBQUU7Z0JBQ2pDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7b0JBQUUsT0FBTyxLQUFLLENBQUM7Z0JBQ3ZDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO29CQUFFLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFDcEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUM7b0JBQ2xDLE9BQU8sS0FBSyxDQUFDLFlBQVksQ0FBQztnQkFDOUIsT0FBTyxFQUFFLENBQUM7WUFDZCxDQUFDLENBQUM7WUFFRixPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUN2QyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQzFDLENBQUM7U0FDTDtRQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDO1lBQ2xDLE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN4RCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQztZQUN6QyxPQUFPLFlBQVksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFL0QsT0FBTyxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxjQUFjLENBQUMsS0FBc0I7UUFDakMsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLEVBQXNCLENBQUM7UUFFMUMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUN4QyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQzthQUNoQixNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FDZCw0REFBNEQsQ0FBQyxJQUFJLENBQzdELEdBQUcsQ0FDTixDQUNKO2FBQ0EsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUM5RCxDQUFDO1FBRUYsd0RBQXdEO1FBQ3hELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVuRCxPQUFPO1lBQ0gsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsSUFBSSxLQUFLLEVBQUUsU0FBUyxDQUFDO1lBQ2hFLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLElBQUksS0FBSyxFQUFFLE1BQU0sQ0FBQztZQUN2RCxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDO1lBQ3hDLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7WUFDeEMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztZQUN4QyxRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDO1lBQzVDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUM7WUFDcEMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQztZQUNwRCxRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDO1lBQzVDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLEtBQUssQ0FBQztZQUNwRCxXQUFXLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDO1lBQ2xELFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUM7WUFDcEQsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQztZQUNwRCxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDO1lBQ3BELGdCQUFnQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDO1lBQzVELHNCQUFzQixFQUFFLEtBQUssRUFBRSxzQkFBc0I7WUFDckQsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQztZQUNwRCxRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDO1lBQzFDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7WUFDdEMsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQztZQUM5QyxhQUFhLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDO1lBQ3RELElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUM7WUFDcEMsZUFBZSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQztZQUMxRCxVQUFVLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FDekIsS0FBSyxFQUFFLFVBQVUsSUFBSSxLQUFLLEVBQUUsVUFBVSxDQUN6QztZQUNELFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUMxQixLQUFLLEVBQUUsV0FBVyxJQUFJLEtBQUssRUFBRSxXQUFXLENBQzNDO1lBQ0QsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQzFCLEtBQUssRUFBRSxXQUFXLElBQUksS0FBSyxFQUFFLFdBQVcsQ0FDM0M7WUFDRCxXQUFXLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FDMUIsS0FBSyxFQUFFLFdBQVcsSUFBSSxLQUFLLEVBQUUsV0FBVyxDQUMzQztZQUVELFVBQVUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUM7WUFDaEQsZUFBZSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQztZQUMxRCxHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDO1lBRWxDLGVBQWUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxlQUFlLENBQUM7WUFDMUQsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLENBQUM7WUFFaEUsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxLQUFLLEVBQUUsS0FBSyxDQUFDO1lBQ3hELE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksS0FBSyxFQUFFLEtBQUssQ0FBQztZQUN4RCxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxJQUFJLEtBQUssRUFBRSxLQUFLLENBQUM7WUFDeEQsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztZQUN0QyxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO1lBQ3RDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7WUFFdEMsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQztZQUM1QyxVQUFVLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FDekIsS0FBSyxFQUFFLFVBQVUsSUFBSSxLQUFLLEVBQUUsVUFBVSxDQUN6QztZQUVELE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUM7WUFDMUMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQzNCLEtBQUssRUFBRSxZQUFZLElBQUksS0FBSyxFQUFFLFlBQVksQ0FDN0M7WUFDRCxVQUFVLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDO1lBQ2hELFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUMzQixLQUFLLEVBQUUsWUFBWSxJQUFJLEtBQUssRUFBRSxZQUFZLENBQzdDO1lBQ0QsYUFBYSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQzVCLEtBQUssRUFBRSxhQUFhLElBQUksS0FBSyxFQUFFLFNBQVMsQ0FDM0M7WUFDRCxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDO1lBQzlDLFVBQVUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUM7WUFDaEQsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQztZQUNoRCxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDO1lBQzlDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLGtCQUFrQixDQUFDO1lBRWhFLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUM7WUFDOUMsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQztZQUN4RCxjQUFjLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDO1lBRXhELG1CQUFtQjtZQUNuQixHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDO1lBQ2xDLGFBQWEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUM7WUFFdEQsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FDekMsS0FBSyxFQUFFLDBCQUEwQixDQUNwQztZQUNELDBCQUEwQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQ3pDLEtBQUssRUFBRSwwQkFBMEIsQ0FDcEM7WUFDRCwwQkFBMEIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUN6QyxLQUFLLEVBQUUsMEJBQTBCLENBQ3BDO1lBRUQsNEJBQTRCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FDM0MsS0FBSyxFQUFFLDRCQUE0QixDQUN0QztZQUNELDRCQUE0QixFQUFFLElBQUksQ0FBQyxZQUFZLENBQzNDLEtBQUssRUFBRSw0QkFBNEIsQ0FDdEM7WUFDRCw0QkFBNEIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUMzQyxLQUFLLEVBQUUsNEJBQTRCLENBQ3RDO1lBRUQsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FDekMsS0FBSyxFQUFFLDBCQUEwQixDQUNwQztZQUNELDBCQUEwQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQ3pDLEtBQUssRUFBRSwwQkFBMEIsQ0FDcEM7WUFDRCwwQkFBMEIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUN6QyxLQUFLLEVBQUUsMEJBQTBCLENBQ3BDO1lBRUQsOEJBQThCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FDN0MsS0FBSyxFQUFFLDhCQUE4QixDQUN4QztZQUNELDhCQUE4QixFQUFFLElBQUksQ0FBQyxZQUFZLENBQzdDLEtBQUssRUFBRSw4QkFBOEIsQ0FDeEM7WUFDRCw4QkFBOEIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUM3QyxLQUFLLEVBQUUsOEJBQThCLENBQ3hDO1lBQ0QsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLENBQUM7WUFFbEUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLENBQUM7WUFDbEUscUJBQXFCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FDcEMsS0FBSyxFQUFFLHFCQUFxQixDQUMvQjtZQUVELFVBQVUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUM7WUFDaEQsYUFBYSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQztZQUN0RCxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDO1lBQzlDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUM7WUFDcEQsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQztZQUNwRCxRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDO1lBQzVDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUM7WUFDcEQsYUFBYSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQztZQUN0RCxVQUFVLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDO1lBQ2hELEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7WUFFdEMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FDdEMsS0FBSyxFQUFFLHVCQUF1QixDQUNqQztZQUNELGVBQWUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxlQUFlLENBQUM7WUFDMUQsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQztZQUNoRCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQztZQUM1RCxjQUFjLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDO1lBQ3hELGlCQUFpQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLGlCQUFpQixDQUFDO1lBRTlELE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksS0FBSyxFQUFFLE1BQU0sQ0FBQztZQUN6RCxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO1lBQ3RDLFVBQVUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUM7WUFDaEQsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQztZQUVsQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxpQkFBaUIsQ0FBQztZQUM5RCxrQkFBa0IsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQztZQUNoRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDO1lBQ2xELFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUM7WUFDcEQsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLENBQUM7WUFDaEUsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQztZQUVwRCxlQUFlLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDO1lBQzFELGNBQWMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUM7WUFDeEQscUJBQXFCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FDcEMsS0FBSyxFQUFFLHFCQUFxQixDQUMvQjtZQUNELGVBQWUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxlQUFlLENBQUM7WUFDMUQsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztZQUV4QyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDO1lBQ3BELFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUM7WUFFcEQsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQztZQUN4RCxRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDO1lBQzVDLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUM7WUFDbEQsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQztZQUNoRCxhQUFhLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDO1lBQ3RELFVBQVUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUM7WUFDaEQsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQztZQUNsRCxVQUFVLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDO1lBQ2hELGdCQUFnQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDO1lBQzVELGlCQUFpQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLGlCQUFpQixDQUFDO1lBQzlELGdCQUFnQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDO1lBQzVELFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUM7WUFDbEQsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQztZQUNsRCxhQUFhLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDO1lBQ3RELGNBQWMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUM7WUFDeEQsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQztZQUN4RCxpQkFBaUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxpQkFBaUIsQ0FBQztZQUM5RCxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDO1lBQ3BELFVBQVUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUM7WUFDaEQsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQztZQUU5QyxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDO1lBQzlDLFVBQVUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUM7WUFDaEQsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FDbkMsS0FBSyxFQUFFLG9CQUFvQixDQUM5QjtZQUNELFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUM7WUFDNUMsYUFBYSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQztZQUN0RCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQztZQUM1RCxhQUFhLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FDNUIsS0FBSyxFQUFFLGFBQWEsSUFBSSxLQUFLLEVBQUUsYUFBYSxDQUMvQztZQUVELHdFQUF3RTtZQUN4RSxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDO1lBQzlDLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7WUFDeEMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztZQUN0QyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDOUQsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ2xFLGtCQUFrQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNsRSxrQkFBa0IsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDbEUsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ2xFLGtCQUFrQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNsRSxrQkFBa0IsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDbEUsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ2xFLGtCQUFrQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNsRSxxQkFBcUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUNwQyxLQUFLLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUNqQztZQUNELHFCQUFxQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQ3BDLEtBQUssRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQ2pDO1lBQ0QscUJBQXFCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FDcEMsS0FBSyxFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FDakM7WUFDRCxxQkFBcUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUNwQyxLQUFLLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUNqQztZQUNELG9CQUFvQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQ25DLEtBQUssRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQ2hDO1lBQ0Qsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FDbkMsS0FBSyxFQUFFLENBQUMsb0JBQW9CLENBQUMsQ0FDaEM7WUFDRCxvQkFBb0IsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUNuQyxLQUFLLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUNoQztZQUNELG9CQUFvQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQ25DLEtBQUssRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQ2hDO1lBQ0Qsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FDbkMsS0FBSyxFQUFFLENBQUMsb0JBQW9CLENBQUMsQ0FDaEM7WUFDRCxvQkFBb0IsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUNuQyxLQUFLLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUNoQztZQUNELG9CQUFvQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQ25DLEtBQUssRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQ2hDO1lBQ0Qsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FDbkMsS0FBSyxFQUFFLENBQUMsb0JBQW9CLENBQUMsQ0FDaEM7WUFDRCx1QkFBdUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUN0QyxLQUFLLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUNuQztZQUNELHVCQUF1QixFQUFFLElBQUksQ0FBQyxZQUFZLENBQ3RDLEtBQUssRUFBRSxDQUFDLHVCQUF1QixDQUFDLENBQ25DO1lBQ0QsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FDdEMsS0FBSyxFQUFFLENBQUMsdUJBQXVCLENBQUMsQ0FDbkM7WUFDRCx1QkFBdUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUN0QyxLQUFLLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUNuQztZQUNELHVCQUF1QixFQUFFLElBQUksQ0FBQyxZQUFZLENBQ3RDLEtBQUssRUFBRSxDQUFDLHVCQUF1QixDQUFDLENBQ25DO1lBQ0QsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FDdEMsS0FBSyxFQUFFLENBQUMsdUJBQXVCLENBQUMsQ0FDbkM7WUFDRCx1QkFBdUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUN0QyxLQUFLLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUNuQztZQUNELHVCQUF1QixFQUFFLElBQUksQ0FBQyxZQUFZLENBQ3RDLEtBQUssRUFBRSxDQUFDLHVCQUF1QixDQUFDLENBQ25DO1lBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQztZQUNwQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQztZQUM1RCxHQUFHLGlCQUFpQjtZQUVwQixJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDO1lBQ3BDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUM7WUFDcEMsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQztZQUM1QyxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsT0FBTyxJQUFJLEtBQUssRUFBRSxPQUFPLENBQUM7WUFDNUQsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQztZQUUvQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDO1lBQ2hELFVBQVUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUM7WUFDaEQsZUFBZSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQztZQUMxRCxxQkFBcUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUNwQyxLQUFLLEVBQUUscUJBQXFCLENBQy9CO1lBQ0QsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQztZQUM1QyxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDO1lBQzlDLGNBQWMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUM7WUFDeEQsYUFBYSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQztZQUN0RCxhQUFhLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDO1lBQ3RELG1CQUFtQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLG1CQUFtQixDQUFDO1lBQ2xFLG9CQUFvQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQ25DLEtBQUssRUFBRSxvQkFBb0IsQ0FDOUI7WUFDRCxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO1lBQ3RDLFVBQVUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUM7WUFDaEQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUM7WUFDNUQsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQztZQUNwRCxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDO1lBQzlDLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUM7WUFDNUMsYUFBYSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQztZQUN0RCxtQkFBbUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxtQkFBbUIsQ0FBQztZQUNsRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO1lBQzFDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUM7WUFDcEQsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLENBQUM7WUFDaEUsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQztZQUM5QyxlQUFlLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDO1lBQzFELEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7WUFDdEMsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQztZQUNoRCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQztZQUM1RCxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDO1lBQ3BELHVCQUF1QixFQUFFLElBQUksQ0FBQyxZQUFZLENBQ3RDLEtBQUssRUFBRSx1QkFBdUIsQ0FDakM7WUFDRCxhQUFhLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDO1lBQ3RELE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7WUFDeEMsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQztZQUV4RCxhQUFhLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDO1lBQ3RELFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUM7WUFDcEQsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQztZQUNwRCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQztZQUU1RCxVQUFVLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDO1lBQ2hELFVBQVUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUM7WUFDaEQsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQztZQUU1QyxHQUFHLFdBQVc7U0FDRyxDQUFDO0lBQzFCLENBQUM7SUFDRDs7O09BR0c7SUFDSyxrQkFBa0IsQ0FDdEIsS0FBVTtRQUVWLE1BQU0sTUFBTSxHQUFzRCxFQUFFLENBQUM7UUFDckUsSUFBSSxDQUFDLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1lBQUUsT0FBTyxNQUFNLENBQUM7UUFDdkQsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QixJQUFJLEdBQUcsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksU0FBUyxJQUFJLEdBQUcsRUFBRTtnQkFDcEQsTUFBTSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUMsR0FBRztvQkFDM0IsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO29CQUNwQixHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUc7aUJBQ2YsQ0FBQzthQUNMO1NBQ0o7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU8sWUFBWSxDQUFDLElBQVM7UUFDMUIsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUU1QixlQUFlO1FBQ2YsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFMUMsT0FBTyxDQUNILElBQUksRUFBRSxLQUFLO1lBQ1gsSUFBSSxFQUFFLElBQUk7WUFDVixJQUFJLEVBQUUsS0FBSztZQUNYLElBQUksRUFBRSxPQUFPO1lBQ2IsU0FBUyxDQUNaLENBQUM7SUFDTixDQUFDO0lBRU8saUJBQWlCLENBQUMsSUFBUztRQUMvQixJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRXhCLE1BQU0sS0FBSyxHQUNQLE9BQU8sSUFBSSxLQUFLLFFBQVE7WUFDcEIsQ0FBQyxDQUFDLElBQUk7WUFDTixDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxJQUFJLElBQUksRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFdEUsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzFFLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxRQUF5QjtRQUMzQyxPQUFPLFFBQVEsRUFBRSxHQUFHLENBQ2hCLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FDYixDQUFDO1lBQ0csRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2YsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJO1NBQ3RCLENBQWlCLENBQ3pCLENBQUM7SUFDTixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQXNCO1FBQ2pDLE9BQU87WUFDSCxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDYixJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUk7WUFDakIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQXFCO1lBQzVELFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUM7WUFDakQsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTTtnQkFDN0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQztnQkFDdkMsQ0FBQyxDQUFDLFNBQVM7WUFDZixLQUFLLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxJQUFJLEtBQUssRUFBRSxLQUFLLENBQUM7WUFDcEQsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztZQUN6QyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7WUFDbkIsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPO1lBRXRCLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWTtZQUNqQyxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVM7WUFDM0IsV0FBVyxFQUFFLEtBQUssRUFBRSxXQUFXO1lBQy9CLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWTtZQUNqQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUk7WUFDakIsV0FBVyxFQUFFLEtBQUssRUFBRSxXQUFXO1lBQy9CLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUztZQUMzQixPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFDdkIsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2IsWUFBWSxFQUFFLEtBQUssRUFBRSxZQUFZO1lBQ2pDLFdBQVcsRUFBRSxLQUFLLEVBQUUsV0FBVztZQUMvQixHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUc7WUFDZixHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUc7WUFDZixPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFDdkIsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRO1lBQ3pCLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTztZQUN2QixNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU07WUFDckIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQ25CLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUTtZQUN6QixNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU07WUFDckIsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVO1lBQzdCLGtCQUFrQixFQUFFLEtBQUssRUFBRSxrQkFBa0I7WUFDN0MsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLHVCQUF1QjtZQUN2RCxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCO1lBQ3pDLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWTtZQUNqQyxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCO1lBQ3pDLGVBQWUsRUFBRSxLQUFLLEVBQUUsZUFBZTtZQUN2QyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU07WUFDckIsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVO1lBQzdCLE1BQU0sRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztZQUNoRCxhQUFhLEVBQUUsS0FBSyxFQUFFLGFBQWEsSUFBSSxLQUFLLEVBQUUsYUFBYTtZQUMzRCxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsSUFBSSxLQUFLLEVBQUUsU0FBUztZQUMvQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7U0FDSSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxlQUFlLENBQUMsTUFBdUI7UUFDbkMsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUV2QixJQUFJLFdBQVcsR0FBVSxFQUFFLENBQUM7UUFFNUIsTUFBTSxTQUFTLEdBQ1gsTUFBTSxFQUFFLElBQUksSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBRXRFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUMxQixXQUFXLEdBQUcsU0FBUyxDQUFDO1NBQzNCO2FBQU0sSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLElBQUksU0FBUyxLQUFLLElBQUksRUFBRTtZQUM1RCxJQUNJLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQ1osQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO29CQUM5QixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxDQUFDLEVBQ3REO2dCQUNFLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQzFDO2lCQUFNO2dCQUNILFdBQVcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQzdCO1NBQ0o7UUFDRCxPQUFPLFdBQVc7YUFDYixHQUFHLENBQ0EsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUNYLENBQUM7WUFDRyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDYixJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUk7WUFDakIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUN0QixLQUFLLEVBQUUsS0FBSyxDQUNLO1lBQ3JCLFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUM7WUFDakQsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTTtnQkFDN0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQztnQkFDdkMsQ0FBQyxDQUFDLFNBQVM7WUFDZixLQUFLLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxJQUFJLEtBQUssRUFBRSxLQUFLLENBQUM7WUFDcEQsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztZQUN6QyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7WUFDbkIsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPO1lBRXRCLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWTtZQUNqQyxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVM7WUFDM0IsV0FBVyxFQUFFLEtBQUssRUFBRSxXQUFXO1lBQy9CLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWTtZQUNqQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUk7WUFDakIsV0FBVyxFQUFFLEtBQUssRUFBRSxXQUFXO1lBQy9CLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUztZQUMzQixPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFDdkIsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2IsWUFBWSxFQUFFLEtBQUssRUFBRSxZQUFZO1lBQ2pDLFdBQVcsRUFBRSxLQUFLLEVBQUUsV0FBVztZQUMvQixHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUc7WUFDZixHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUc7WUFDZixPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFDdkIsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRO1lBQ3pCLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTztZQUN2QixNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU07WUFDckIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQ25CLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUTtZQUN6QixNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU07WUFDckIsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVO1lBQzdCLGtCQUFrQixFQUFFLEtBQUssRUFBRSxrQkFBa0I7WUFDN0MsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLHVCQUF1QjtZQUN2RCxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCO1lBQ3pDLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWTtZQUNqQyxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCO1lBQ3pDLGVBQWUsRUFBRSxLQUFLLEVBQUUsZUFBZTtZQUN2QyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU07WUFDckIsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVO1lBQzdCLE1BQU0sRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztZQUNoRCxhQUFhLEVBQ1QsS0FBSyxFQUFFLGFBQWEsSUFBSSxLQUFLLEVBQUUsYUFBYTtZQUNoRCxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsSUFBSSxLQUFLLEVBQUUsU0FBUztZQUMvQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7U0FDdEIsQ0FBMkIsQ0FDbkM7WUFDRCxFQUFFLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsb0JBQW9CLENBQUMsTUFBdUI7UUFDeEMsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUN2QixJQUFJLEdBQUcsR0FBVSxFQUFFLENBQUM7UUFDcEIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3ZCLEdBQUcsR0FBRyxNQUFNLENBQUM7U0FDaEI7YUFBTSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO1lBQ3RELEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQy9CO1FBQ0QsT0FBTyxHQUFHO2FBQ0wsTUFBTSxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQzthQUNyRCxHQUFHLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQVU7UUFDN0IsNEJBQTRCO1FBQzVCLE1BQU0sUUFBUSxHQUNWLEtBQUssRUFBRSxLQUFLO1lBQ1osS0FBSyxFQUFFLEtBQUs7WUFDWixLQUFLLEVBQUUsZUFBZTtZQUN0QixLQUFLLEVBQUUsUUFBUTtZQUNmLEtBQUssQ0FBQyxRQUFRO1lBQ2QsS0FBSyxDQUFDLFVBQVU7WUFDaEIsS0FBSyxDQUFDLFVBQVU7WUFDaEIsU0FBUyxDQUFDO1FBRWQsbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxRQUFRLElBQUksS0FBSyxFQUFFLFVBQVUsRUFBRTtZQUNoQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNwRCxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUU7Z0JBQ25CLE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQzthQUM3QjtTQUNKO1FBRUQsdUNBQXVDO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLElBQUksS0FBSyxFQUFFLFVBQVUsRUFBRTtZQUNoQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNyRCxJQUFJLFdBQVcsSUFBSSxJQUFJLEVBQUU7Z0JBQ3JCLE9BQU8sV0FBVyxDQUFDO2FBQ3RCO1NBQ0o7UUFFRCxvQ0FBb0M7UUFDcEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QyxJQUFJLFdBQVcsSUFBSSxJQUFJLEVBQUU7WUFDckIsT0FBTyxXQUFXLENBQUM7U0FDdEI7UUFFRCxzQ0FBc0M7UUFDdEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEQsSUFBSSxXQUFXLElBQUksSUFBSSxFQUFFO1lBQ3JCLE9BQU8sV0FBVyxDQUFDO1NBQ3RCO1FBRUQsU0FBUztRQUNULE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3pELElBQUksWUFBWSxJQUFJLElBQUksRUFBRTtZQUN0QixPQUFPLFlBQVksQ0FBQztTQUN2QjtRQUVELGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBZ0M7UUFDdkMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUV4QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFMUQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNULElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSTtZQUNiLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTztZQUNuQixJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUk7WUFDYixRQUFRLEVBQUUsQ0FBQyxFQUFFLFFBQVE7WUFDckIsUUFBUSxFQUFFLENBQUMsRUFBRSxRQUFRO1lBQ3JCLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTztZQUNuQixFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDVCxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUk7WUFDWixLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUs7WUFDZixNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU07WUFDakIsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLO1lBQ2YsWUFBWSxFQUFFLENBQUMsRUFBRSxXQUFXO1lBQzVCLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRztZQUNYLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRztZQUNYLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSTtZQUNiLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSztTQUNsQixDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFzQjtRQUNwQyxPQUFPLEVBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUQsaUJBQWlCLENBQ2IsUUFBMEM7UUFFMUMsT0FBTyxRQUFRLEVBQUUsR0FBRyxDQUNoQixDQUFDLElBQVMsRUFBRSxFQUFFLENBQ1YsQ0FBQztZQUNHLElBQUksRUFBRSxPQUFPLEdBQUcsSUFBSSxFQUFFLEtBQUs7WUFDM0IsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO1lBQ2hCLFdBQVcsRUFBRSxJQUFJLEVBQUUsV0FBVztZQUM5QixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7U0FDbkIsQ0FBdUIsQ0FDL0IsQ0FBQztJQUNOLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBc0I7UUFDakMsT0FBTztZQUNILEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztZQUNuQixJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUk7WUFDakIsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJO1lBQ2pCLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSTtZQUNqQixRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVE7WUFDekIsV0FBVyxFQUFFLEtBQUssRUFBRSxXQUFXO1lBQy9CLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVTtZQUM3QixXQUFXLEVBQUUsS0FBSyxFQUFFLFdBQVc7WUFDL0IsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLG1CQUFtQjtZQUMvQyxhQUFhLEVBQUUsS0FBSyxFQUFFLGFBQWE7WUFDbkMsY0FBYyxFQUFFLEtBQUssRUFBRSxjQUFjO1lBQ3JDLG9CQUFvQixFQUFFLEtBQUssRUFBRSxvQkFBb0I7WUFDakQsY0FBYyxFQUFFLEtBQUssRUFBRSxjQUFjO1lBQ3JDLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVTtZQUM3QixZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVk7WUFDakMsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTO1lBQzNCLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVTtZQUM3QixhQUFhLEVBQUUsS0FBSyxFQUFFLGFBQWE7WUFDbkMsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVO1lBQzdCLHFCQUFxQixFQUFFLEtBQUssRUFBRSxxQkFBcUI7WUFDbkQsWUFBWSxFQUFFLEtBQUssRUFBRSxZQUFZO1lBQ2pDLHVCQUF1QixFQUFFLEtBQUssRUFBRSx1QkFBdUI7WUFDdkQsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTO1lBQzNCLG9CQUFvQixFQUFFLEtBQUssRUFBRSxvQkFBb0I7WUFDakQsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVO1lBQzdCLHFCQUFxQixFQUFFLEtBQUssRUFBRSxxQkFBcUI7WUFDbkQsYUFBYSxFQUFFLEtBQUssRUFBRSxhQUFhO1lBQ25DLHdCQUF3QixFQUFFLEtBQUssRUFBRSx3QkFBd0I7WUFDekQsYUFBYSxFQUFFLEtBQUssRUFBRSxhQUFhO1lBQ25DLHdCQUF3QixFQUFFLEtBQUssRUFBRSx3QkFBd0I7WUFDekQsYUFBYSxFQUFFLEtBQUssRUFBRSxhQUFhO1lBQ25DLG1CQUFtQixFQUFFLEtBQUssRUFBRSxtQkFBbUI7WUFDL0MsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQ3BCLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSztZQUNwQixNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUs7WUFDcEIsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQ3BCLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTTtZQUNyQixNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU07WUFDckIsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNO1lBQ3JCLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVTtZQUM3QixrQkFBa0IsRUFBRSxLQUFLLEVBQUUsa0JBQWtCO1lBQzdDLGNBQWMsRUFBRSxLQUFLLEVBQUUsY0FBYztZQUNyQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFDdkIsY0FBYyxFQUFFLEtBQUssRUFBRSxjQUFjO1lBQ3JDLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTztTQUNILENBQUM7SUFDN0IsQ0FBQztJQUNELGVBQWUsQ0FBQyxNQUF1QjtRQUNuQyxPQUFPLE1BQU0sRUFBRSxHQUFHLENBQ2QsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNWLENBQUM7WUFDRyxPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO1lBQ3hDLEtBQUssRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7WUFDcEMsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO1lBQzFELElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxlQUFlO1lBQ3pDLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztZQUNsQixLQUFLLEVBQUU7Z0JBQ0gsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSztnQkFDeEIsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUTtnQkFDOUIsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVztnQkFDcEMsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVztnQkFDcEMsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVztnQkFDcEMsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVztnQkFDcEMsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVTtnQkFDbEMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsY0FBYztnQkFDL0IsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUTtnQkFDOUIsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUzthQUNmO1lBQ3JCLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRztTQUNqQixDQUFpQixDQUN6QixDQUFDO0lBQ04sQ0FBQztJQUNELGVBQWUsQ0FBQyxNQUF1QjtRQUNuQyxPQUFPLE1BQU0sRUFBRSxHQUFHLENBQ2QsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNWLENBQUM7WUFDRyxlQUFlLEVBQUUsSUFBSSxFQUFFLGVBQWU7WUFDdEMsYUFBYSxFQUFFLElBQUksRUFBRSxhQUFhO1lBQ2xDLE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7WUFDeEMsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRO1lBQ3hCLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUTtZQUN4QixLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUs7WUFDbEIsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTO1lBQzFCLEtBQUssRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7WUFDcEMsVUFBVSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQztZQUNoRCxNQUFNLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUMzQixJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQ3JCLEtBQUssQ0FDUjtZQUNELElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUNoQixLQUFLLEVBQUU7Z0JBQ0gsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSztnQkFDeEIsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUTtnQkFDOUIsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVztnQkFDcEMsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVztnQkFDcEMsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVztnQkFDcEMsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVztnQkFDcEMsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVTtnQkFDbEMsZUFBZSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsZUFBZTtnQkFDNUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsY0FBYzthQUNkO1lBQ3JCLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRztZQUNkLFdBQVcsRUFBRSxJQUFJLEVBQUUsV0FBVztZQUM5QixTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVM7U0FDN0IsQ0FBa0IsQ0FDMUIsQ0FBQztJQUNOLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxVQUEyQjtRQUMzQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUMxQyxPQUFPLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkMsR0FBRyxJQUFJO1lBQ1AsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQ3hDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUk7WUFDbkQsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLEtBQUssRUFBRSxXQUFXO1lBQ2pFLFFBQVEsRUFDSixJQUFJLEVBQUUsUUFBUTtnQkFDZCxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVE7Z0JBQ3JCLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVztZQUM1QixXQUFXLEVBQ1AsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVztnQkFDeEIsSUFBSSxFQUFFLEtBQUssRUFBRSxXQUFXO1lBQzVCLFdBQVcsRUFBRSxJQUFJLEVBQUUsV0FBVyxJQUFJLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVztZQUMxRCxXQUFXLEVBQUUsSUFBSSxFQUFFLFdBQVcsSUFBSSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVc7WUFDMUQsV0FBVyxFQUFFLElBQUksRUFBRSxXQUFXLElBQUksSUFBSSxFQUFFLEtBQUssRUFBRSxXQUFXO1lBQzFELEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUNoRSxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsR0FBRztZQUMvQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDMUIsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVU7UUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUM1QyxLQUFLLEdBQUcsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMvQixLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsSUFBSTtZQUNoQyxXQUFXLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsV0FBVztZQUM1QyxLQUFLLEVBQ0QsSUFBSSxFQUFFLEtBQUs7Z0JBQ1Y7b0JBQ0csS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJO29CQUNqQixLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUs7b0JBQ2xCLFdBQVcsRUFBRSxJQUFJLEVBQUUsV0FBVztvQkFDOUIsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRO29CQUN4QixRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVE7aUJBQ047WUFDMUIsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQztZQUM1QyxPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO1lBQ3hDLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztZQUN6QyxJQUFJLEVBQUUsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3pDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUNoQixjQUFjLEVBQUUsSUFBSSxFQUFFLGNBQWM7WUFDcEMsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksSUFBSSxFQUFFLFNBQVM7WUFDakMsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRO1NBQzNCLENBQUMsQ0FBQyxDQUFDO1FBQ0osT0FBTyxLQUFxQixDQUFDO0lBQ2pDLENBQUM7SUFFRCxjQUFjLENBQUMsR0FBUTtRQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUU5RCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUN0QixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FDOUQsQ0FBQztRQUVGLE1BQU0sTUFBTSxHQUE0QyxTQUFTO1lBQzdELENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQixNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDO2dCQUM5QixLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7YUFDaEQsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBRWxDLE1BQU0sWUFBWSxHQUE2QixNQUFNO2FBQ2hELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ1AsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztpQkFDOUIsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQ2YsTUFBTSxLQUFLLEdBQ1AsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsSUFBSSxFQUFFLElBQUk7b0JBQ1YsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsRUFBRSxDQUFDO2dCQUNQLE1BQU0sV0FBVyxHQUNiLElBQUksRUFBRSxJQUFJO29CQUNWLElBQUksRUFBRSxNQUFNO29CQUNaLElBQUksRUFBRSxXQUFXO29CQUNqQixFQUFFLENBQUM7Z0JBRVAsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLFdBQVc7b0JBQUUsT0FBTyxJQUFJLENBQUM7Z0JBRXhDLE9BQU87b0JBQ0gsS0FBSztvQkFDTCxXQUFXO29CQUNYLEtBQUssRUFDRCxJQUFJLEVBQUUsS0FBSzt3QkFDVjs0QkFDRyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUk7NEJBQ2pCLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSzs0QkFDbEIsV0FBVyxFQUFFLElBQUksRUFBRSxXQUFXOzRCQUM5QixRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVE7NEJBQ3hCLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUTt5QkFDTjtvQkFDMUIsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQztvQkFDNUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztvQkFDeEMsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO29CQUN6QyxJQUFJLEVBQ0EsSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsS0FBSzt3QkFDckIsQ0FBQyxDQUFDLE1BQU0sQ0FDRixJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQzFCLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQzs0QkFDbkIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUM7NEJBQ2pDLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTt3QkFDdkMsQ0FBQyxDQUFDLFNBQVM7b0JBRW5CLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLElBQUksRUFBRSxLQUFLO2lCQUNILENBQUM7WUFDakMsQ0FBQyxDQUFDO2lCQUNELE1BQU0sQ0FBQyxPQUFPLENBQW1CLENBQUM7WUFFdkMsT0FBTztnQkFDSCxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDO2dCQUNyQixLQUFLLEVBQUUsV0FBVzthQUNyQixDQUFDO1FBQ04sQ0FBQyxDQUFDO2FBQ0QsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUV2QyxPQUFPLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzFELENBQUM7SUFFRCxhQUFhLENBQUMsV0FBNEI7UUFDdEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUU7WUFDbEQsT0FBTyxXQUFXO2dCQUNkLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBbUIsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLE1BQU0sS0FBSyxJQUFJLENBQUM7Z0JBQ3hELEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDNUIsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRO2dCQUN4QixHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUc7Z0JBQ2QsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO2dCQUN6QyxPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO2dCQUN4QyxLQUFLLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO2dCQUNwQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUs7Z0JBQ2xCLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztnQkFDbEIsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRO2dCQUN4QixXQUFXLEVBQUUsSUFBSSxFQUFFLFdBQVc7Z0JBQzlCLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSTtnQkFDZixLQUFLLEVBQUU7b0JBQ0gsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLO29CQUNsQixRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVE7b0JBQ3hCLFdBQVcsRUFBRSxJQUFJLEVBQUUsV0FBVztvQkFDOUIsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRO29CQUN4QixHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUc7b0JBQ2QsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPO29CQUN0QixVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVU7aUJBQy9CO2FBQ0osQ0FBQyxDQUFDLENBQUM7U0FDWDtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxTQUFTLENBQUMsVUFBMkI7UUFDakMsSUFBSSxVQUFVLEVBQUU7WUFDWixPQUFPO2dCQUNILE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUM7Z0JBQzlDLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUN4QixVQUFVLEVBQUUsUUFBUSxJQUFJLFVBQVUsQ0FDckM7Z0JBQ0QsZUFBZSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQy9CLFVBQVUsRUFBRSxlQUFlLENBQzlCO2dCQUNELGVBQWUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUMvQixVQUFVLEVBQUUsZUFBZSxDQUM5QjtnQkFDRCxjQUFjLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDO2dCQUM5RCxjQUFjLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FDOUIsVUFBVSxFQUFFLGNBQWMsSUFBSSxVQUFVLEVBQUUsV0FBVyxDQUN4RDtnQkFDRCxZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDO2dCQUMxRCxlQUFlLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FDL0IsVUFBVSxFQUFFLGVBQWUsSUFBSSxVQUFVLEVBQUUsVUFBVSxDQUN4RDtnQkFDRCxlQUFlLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FDL0IsVUFBVSxFQUFFLGVBQWUsQ0FDOUI7Z0JBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQzthQUM3QyxDQUFDO1NBQ0w7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQXNCLEVBQUUsS0FBVztRQUM5QyxJQUFJLEtBQUssR0FBVSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbkQsT0FBTyxLQUFLO1lBQ1IsRUFBRSxNQUFNLENBQ0osQ0FBQyxJQUFTLEVBQUUsS0FBYSxFQUFFLElBQVcsRUFBRSxFQUFFLENBQ3RDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssQ0FDM0Q7WUFDRCxFQUFFLEdBQUcsQ0FDRCxDQUFDLElBQVMsRUFBRSxFQUFFLENBQ1YsQ0FBQztZQUNHLE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUNyQixJQUFJLEVBQUUsT0FBTztZQUNiLDJHQUEyRzthQUM5RztZQUNELEtBQUssRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7WUFDcEMsTUFBTSxFQUFFO2dCQUNKLENBQUMsR0FBRyxFQUFFO29CQUNGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FDbkMsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQ2xCLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUMzQixJQUFJLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDMUIsS0FBSyxDQUNSLENBQUM7b0JBQ0YsTUFBTSxLQUFLLEdBQ1AsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQ2xCLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUMzQixFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO29CQUM3QyxJQUFJLE9BQU8sSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUU7d0JBQ3hDLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztxQkFDaEM7eUJBQU07d0JBQ0gsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7cUJBQ2xDO2dCQUNMLENBQUMsQ0FBQyxFQUFFO2FBQ1A7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsUUFBUSxFQUFFLElBQUksRUFBRSxVQUFVO29CQUN0QixFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztvQkFDbEMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDZixPQUFPO3dCQUNILEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQ3hCLEdBQUcsRUFDSCxLQUFLLENBQ1I7d0JBQ0QsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO3dCQUNoQixHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUk7d0JBQ2IsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQzt3QkFDdEMsS0FBSyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQzt3QkFDbEMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxLQUFLO3dCQUNmLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSztxQkFDbkIsQ0FBQztnQkFDTixDQUFDLENBQUM7YUFDVDtZQUNELE1BQU0sRUFBRTtnQkFDSixHQUFHLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsR0FBRztnQkFDakMsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEdBQUc7b0JBQzlCLENBQUMsQ0FBQyxXQUFXO29CQUNiLENBQUMsQ0FBQyxTQUFTO2FBQ2xCO1lBQ0QsS0FBSyxFQUFFO2dCQUNILElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUk7Z0JBQ3ZCLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUk7Z0JBQ3ZCLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVE7Z0JBQy9CLFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVc7Z0JBQ3JDLFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVc7Z0JBQ3JDLFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVc7Z0JBQ3JDLFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVc7Z0JBQ3JDLFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVc7Z0JBQ3JDLGdCQUFnQixFQUNaLElBQUksRUFBRSxLQUFLLEVBQUUsZ0JBQWdCO29CQUM3QixLQUFLLEVBQUUsZ0JBQWdCO2FBQzlCO1lBQ0QsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLO1lBQ2xCLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztZQUNsQixlQUFlLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDO2dCQUMxQyxDQUFDLENBQUMsSUFBSSxFQUFFLFFBQVE7b0JBQ1YsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDbEIsTUFBTSxLQUFLLEdBQ1AsT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVE7d0JBQ3hCLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSTs2QkFDSCxLQUFLLENBQUMsR0FBRyxDQUFDOzZCQUNWLEdBQUcsQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQ2YsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUNaO3dCQUNQLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBRWIsa0RBQWtEO29CQUNsRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsUUFBUSxDQUMvQixlQUFlLENBQUMsZUFBZSxDQUNsQyxDQUFDO29CQUVGLE9BQU8sWUFBWSxDQUFDO2dCQUN4QixDQUFDLENBQUM7cUJBQ0QsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNoQixJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUk7b0JBQ2YsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLO3dCQUNaLENBQUMsQ0FBQyxRQUFRLEdBQUcsRUFBRSxLQUFLLEVBQUU7d0JBQ3RCLENBQUMsQ0FBQyxTQUFTO2lCQUNsQixDQUFDLENBQUM7Z0JBQ1QsQ0FBQyxDQUFDLEVBQUU7WUFDUixVQUFVLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDO2dCQUNyQyxDQUFDLENBQUMsSUFBSSxFQUFFLFFBQVE7b0JBQ1YsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDbEIsTUFBTSxLQUFLLEdBQ1AsT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVE7d0JBQ3hCLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSTs2QkFDSCxLQUFLLENBQUMsR0FBRyxDQUFDOzZCQUNWLEdBQUcsQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQ2YsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUNaO3dCQUNQLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBRWIsa0RBQWtEO29CQUNsRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsUUFBUSxDQUMvQixlQUFlLENBQUMsU0FBUyxDQUM1QixDQUFDO29CQUVGLE9BQU8sWUFBWSxDQUFDO2dCQUN4QixDQUFDLENBQUM7cUJBQ0QsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNoQixJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUk7b0JBQ2YsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLO3dCQUNaLENBQUMsQ0FBQyxRQUFRLEdBQUcsRUFBRSxLQUFLLEVBQUU7d0JBQ3RCLENBQUMsQ0FBQyxTQUFTO2lCQUNsQixDQUFDLENBQUM7Z0JBQ1QsQ0FBQyxDQUFDLEVBQUU7U0FDWCxDQUFxQixDQUM3QixDQUFDO0lBQ1YsQ0FBQztJQUNELE1BQU0sQ0FBQyxLQUFzQjtRQUN6QixPQUFPO1lBQ0gsS0FBSyxFQUNELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEtBQUssUUFBUTtnQkFDbkMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztnQkFDckIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFDdEMsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztZQUN0QyxRQUFRLEVBQ0osT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsS0FBSyxRQUFRO2dCQUN0QyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO2dCQUN4QixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTztZQUV6QyxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0MsSUFBSSxFQUFFO2dCQUNGLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHO2dCQUNyQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRzthQUNsQztTQUNXLENBQUM7SUFDckIsQ0FBQztJQUVELCtCQUErQjtJQUMvQixZQUFZLENBQUMsS0FBc0I7UUFDL0IsTUFBTSxTQUFTLEdBQUcsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ3BELE1BQU0sVUFBVSxHQUFHLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxJQUFJLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDO1FBQ2xFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFOUMsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FDbEMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUNYLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQztZQUMxQixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDWCxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQ1QsQ0FBQyxPQUFPLEdBQUcsS0FBSyxRQUFRO2dCQUNwQixHQUFHLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUM5QixDQUFDLE9BQU8sR0FBRyxLQUFLLFFBQVE7b0JBQ3BCLEdBQUcsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQzVDLENBQ1IsQ0FBQztRQUVGLE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2hFLE9BQU87WUFDSCxPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO1lBQ3pDLEtBQUssRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7WUFDckMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNO2dCQUNqQixDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDeEIsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLO29CQUNsQixRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVE7b0JBQ3hCLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUTtvQkFDeEIsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO29CQUN6QyxPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO29CQUN4QyxLQUFLLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO29CQUNwQyxJQUFJLEVBQUU7d0JBQ0YsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRzt3QkFDNUIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRzt3QkFDNUIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRztxQkFDekI7aUJBQ0osQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FBQztvQkFDSTt3QkFDSSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUs7d0JBQ3BCLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUTt3QkFDMUIsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO3dCQUMzQyxPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDO3dCQUMxQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO3FCQUN6QztpQkFDSjtZQUNQLFdBQVcsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxHQUFHLENBQy9DLENBQUMsSUFBbUIsRUFBRSxFQUFFLENBQ3BCLENBQUM7Z0JBQ0csS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLO2dCQUNsQixRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVE7Z0JBQ3hCLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUTtnQkFDeEIsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO2dCQUN6QyxPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO2dCQUN4QyxLQUFLLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO2FBQ3ZDLENBQXlCLENBQ2pDO1lBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztZQUNsRSxTQUFTLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUM5QixLQUFLLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUNqQyxLQUFLLENBQ1I7WUFDRCxTQUFTLEVBQUU7Z0JBQ1AsOEJBQThCO2dCQUM5QixHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO2dCQUN4QixJQUFJLEVBQUUsV0FBVzthQUNwQjtZQUNELE9BQU87U0FDVyxDQUFDO0lBQzNCLENBQUM7SUFFRCxpQkFBaUIsQ0FDYixLQUFzQjtRQUV0QixPQUFPO1lBQ0gsU0FBUyxFQUFFO2dCQUNQLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7Z0JBQzFCLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7Z0JBQ3RCLElBQUksRUFBRSxXQUFXO2FBQ3BCO1lBQ0QsY0FBYyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTTtnQkFDaEMsQ0FBQyxDQUFDO29CQUNJLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7b0JBQzFCLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU07b0JBQ3pCLElBQUksRUFBRSxXQUFXO2lCQUNwQjtnQkFDSCxDQUFDLENBQUMsU0FBUztZQUNmLFVBQVUsRUFBRTtnQkFDUixRQUFRLEVBQ0osT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsS0FBSyxRQUFRO29CQUN0QyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO29CQUN4QixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTztnQkFDekMsS0FBSyxFQUNELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEtBQUssUUFBUTtvQkFDbkMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztvQkFDckIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU87YUFDekM7WUFDRCxJQUFJLEVBQUU7Z0JBQ0YsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUc7Z0JBQ3JDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHO2FBQ2xDO1lBQ0QsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FDeEIsS0FBSyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDbkMsS0FBSyxDQUNSO1lBQ0QsUUFBUSxFQUFFO2dCQUNOLFFBQVEsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVE7Z0JBQ3RELEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUs7YUFDbkQ7WUFDRCxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0MsY0FBYyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsY0FBYztTQUNyQixDQUFDO0lBQ2hDLENBQUM7SUFFRCxjQUFjLENBQ1YsS0FBc0IsRUFDdEIsWUFBcUIsS0FBSztRQUUxQixPQUFPLEtBQUs7WUFDUixDQUFDLENBQUU7Z0JBQ0csU0FBUyxFQUFFLFNBQVM7Z0JBQ3BCLE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDOUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FDbkMsQ0FBQyxJQUFtQixFQUFFLEVBQUUsQ0FDcEIsQ0FBQztvQkFDRyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7b0JBQ2pCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtvQkFDdkIsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7aUJBQ3JDLENBQTRCLENBQ3BDO2dCQUNELE1BQU0sRUFBRTtvQkFDSixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO29CQUMxQixRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO29CQUNoQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO29CQUNoQyxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXO29CQUN0QyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJO2lCQUMzQjthQUNvQjtZQUMzQixDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxVQUFVLENBQ04sS0FBc0IsRUFDdEIsWUFBcUIsS0FBSyxFQUMxQixTQUE2QixFQUM3QixVQUE4QjtRQUU5QixPQUFPO1lBQ0gsVUFBVSxFQUFFLFVBQVU7WUFDdEIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsS0FBSyxFQUNELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEtBQUssUUFBUTtnQkFDbkMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztnQkFDckIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFDdEMsUUFBUSxFQUNKLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEtBQUssUUFBUTtnQkFDdEMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtnQkFDeEIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU87WUFDekMsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPO2dCQUNuQixDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FDWixLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FDbEIsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLEtBQUssSUFBSSxDQUMxQyxDQUNKO2dCQUNILENBQUMsQ0FBQyxTQUFTO1lBQ2YsV0FBVyxFQUNQLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXLEtBQUssUUFBUTtnQkFDekMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztnQkFDM0IsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE9BQU87WUFDNUMsSUFBSSxFQUNBLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEtBQUssUUFBUTtnQkFDdEMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtnQkFDeEIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU87WUFDekMsT0FBTyxFQUNILE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEtBQUssUUFBUTtnQkFDckMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTztnQkFDdkIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU87WUFDeEMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTztZQUM5QixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBQzlCLE1BQU0sRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQ2hDLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxJQUFJLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUN4RCxLQUFLLENBQ1I7WUFDRCxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQy9CLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxJQUFJLENBQzNDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNuQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7YUFDcEQsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztZQUNsRSxRQUFRLEVBQ0osT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksS0FBSyxRQUFRO2dCQUNsQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJO2dCQUNwQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTztZQUNyQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUMxQixLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUM3QixLQUFLLENBQ1I7WUFDRCxRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUM3QixLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUNoQyxLQUFLLENBQ1I7WUFDRCxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO1lBQ2hDLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVc7WUFDdEMsU0FBUyxFQUFFLFNBQVM7WUFDcEIsSUFBSSxFQUFFO2dCQUNGLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHO2dCQUNyQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRztnQkFDL0IsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUc7Z0JBQ2pDLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxHQUFHO2dCQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRztnQkFDbkMsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUc7YUFDcEM7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQy9DLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dCQUN6QyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDM0MsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7YUFDeEQ7WUFDRCxVQUFVLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVO1NBQ3BCLENBQUM7SUFDekIsQ0FBQztJQUVELGdCQUFnQixDQUNaLEtBQXNCLEVBQ3RCLFlBQXFCLEtBQUssRUFDMUIsVUFBOEI7UUFFOUIsNEJBQTRCO1FBQzVCLE9BQU87WUFDSCxVQUFVLEVBQUUsVUFBVTtZQUN0QixTQUFTLEVBQUUsU0FBUztZQUNwQixRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO1lBQ2hDLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVc7WUFDdEMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTztZQUM5QixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBQzlCLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQ25DLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FDVixDQUFDO2dCQUNHLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztnQkFDbEIsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRO2dCQUN4QixRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVE7Z0JBQ3hCLFdBQVcsRUFBRSxJQUFJLEVBQUUsV0FBVztnQkFDOUIsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRO2dCQUN2QixLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7Z0JBQzNDLE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7Z0JBQ3hDLEtBQUssRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7YUFDdkMsQ0FBOEIsQ0FDdEM7U0FDcUIsQ0FBQztJQUMvQixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQXNCO1FBQy9CLE9BQU87WUFDSCxLQUFLLEVBQ0QsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssS0FBSyxRQUFRO2dCQUNuQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO2dCQUNyQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTztZQUN0QyxRQUFRLEVBQ0osT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsS0FBSyxRQUFRO2dCQUN0QyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO2dCQUN4QixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTztZQUN6QyxXQUFXLEVBQ1AsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsS0FBSyxRQUFRO2dCQUN6QyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXO2dCQUMzQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsT0FBTztZQUM1QyxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0MsTUFBTSxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FDaEMsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLElBQUksS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQ3ZELEtBQUssQ0FDUjtZQUNELEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQzFCLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQzdCLEtBQUssQ0FDUjtZQUNELFFBQVEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQzdCLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQ2hDLEtBQUssQ0FDUjtZQUNELFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7WUFDaEMsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztZQUN0QyxJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO1lBQ2xFLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQzFCLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQzdCLEtBQUssQ0FDUjtZQUNELElBQUksRUFBRTtnQkFDRixRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRztnQkFDckMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7Z0JBQy9CLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxHQUFHO2FBQzlDO1lBQ0QsVUFBVSxFQUFFO2dCQUNSLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dCQUMvQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDekMsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7YUFDeEQ7WUFDRCxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVO1NBQ25CLENBQUM7SUFDM0IsQ0FBQztJQUVELFNBQVMsQ0FDTCxLQUFzQixFQUN0QixJQUFTLEVBQ1QsTUFBdUI7UUFPdkIsTUFBTSxJQUFJLEdBQUcsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDNUIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELE1BQU0seUJBQXlCLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FDOUMsYUFBYSxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQy9CLEVBQUUsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sdUJBQXVCLEdBQ3pCLGFBQWEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLGFBQWEsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0MsTUFBTSx1QkFBdUIsR0FDekIsYUFBYSxFQUFFLEtBQUssRUFBRSxXQUFXO1lBQ2pDLGFBQWEsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDO1FBQ3JDLE1BQU0sMEJBQTBCLEdBQzVCLGFBQWEsRUFBRSxLQUFLLEVBQUUsU0FBUyxJQUFJLGFBQWEsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDO1FBRXRFLE1BQU0sS0FBSyxHQUFHLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7UUFFMUQsSUFBSSxhQUFhLEVBQUU7WUFDZixJQUFJLENBQUMsZUFBZSxHQUFHO2dCQUNuQixLQUFLLEVBQUU7b0JBQ0g7d0JBQ0ksSUFBSSxFQUFFLFdBQVcsYUFBYSxDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUU7d0JBQ3BELEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLFFBQVE7cUJBQ3hDO29CQUNEO3dCQUNJLElBQUksRUFBRSxXQUFXLGFBQWEsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFO3dCQUNuRCxLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxPQUFPO3FCQUN2QztvQkFDRDt3QkFDSSxJQUFJLEVBQUUsV0FBVyxhQUFhLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRTt3QkFDaEQsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsUUFBUTtxQkFDeEM7aUJBQ0o7Z0JBQ0QsWUFBWSxFQUFFO29CQUNWLFFBQVEsRUFDSixhQUFhLEVBQUUsS0FBSyxFQUFFLFFBQVE7d0JBQzlCLGFBQWEsRUFBRSxLQUFLLEVBQUUsUUFBUTtvQkFDbEMsUUFBUSxFQUNKLGFBQWEsRUFBRSxLQUFLLEVBQUUsUUFBUTt3QkFDOUIsYUFBYSxFQUFFLEtBQUssRUFBRSxRQUFRO3dCQUM5QixhQUFhLEVBQUUsS0FBSyxFQUFFLE9BQU87b0JBQ2pDLFdBQVcsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE9BQU87b0JBQzFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLFFBQVE7b0JBQ3hDLFVBQVUsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLFVBQVU7b0JBQzVDLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLElBQUk7b0JBQ2hDLFFBQVEsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLFFBQVE7aUJBQzNDO2dCQUNELEtBQUssRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUM7Z0JBQzdDLFFBQVEsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdkMsQ0FBQztTQUNoQztRQUVELE9BQU87WUFDSCxPQUFPO1lBQ1AseUJBQXlCO1lBQ3pCLHVCQUF1QjtZQUN2Qix1QkFBdUIsRUFDbkIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHVCQUF1QixDQUFDO2dCQUNoRCwwQkFBMEI7WUFDOUIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsS0FBSyxFQUFFLEtBQUs7WUFDWixlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDckMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRTtZQUNqRSxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7WUFDakQsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSTtnQkFDNUIsQ0FBQyxDQUFDLFFBQVEsYUFBYSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQ3RDLENBQUMsQ0FBQyxTQUFTO1lBQ2YsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsVUFBVTtnQkFDbEMsQ0FBQyxDQUFDLFFBQVEsYUFBYSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7Z0JBQzVDLENBQUMsQ0FBQyxTQUFTO1lBQ2YsS0FBSyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQztZQUM3QyxRQUFRLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9ELFFBQVEsRUFBRTtnQkFDTixLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUs7Z0JBQ2xCLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUztnQkFDcEIsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRO2FBQzNCO1lBQ0QsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUNoQixDQUFDLElBQVMsRUFBRSxFQUFFLENBQ1YsQ0FBQztnQkFDRyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7Z0JBQ2hCLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUztnQkFDcEIsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRO2dCQUNwQixRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVE7Z0JBQ3hCLEtBQUssRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSTtvQkFDaEMsQ0FBQyxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJO29CQUMvQixDQUFDLENBQUMsSUFBSSxFQUFFLElBQUk7Z0JBQ2hCLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FDekIsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUNYLENBQUM7b0JBQ0csSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJO29CQUNqQixHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVM7b0JBQ3JCLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUTtvQkFDcEIsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRO29CQUN6QixLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUk7d0JBQ2pDLENBQUMsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSTt3QkFDaEMsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJO2lCQUNwQixDQUFtQixDQUMzQjtnQkFDRCxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUs7YUFDckIsQ0FBdUIsQ0FDL0I7WUFDRCxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDO1NBTWYsQ0FBQztJQUNqQyxDQUFDO0lBRUQsMEJBQTBCO0lBQzFCLE9BQU8sQ0FDSCxLQUFzQixFQUN0QixXQUE0QjtRQUU1QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsVUFBVSxDQUMxQixLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM1QixHQUFHLElBQUk7WUFDUCxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUk7U0FDdEMsQ0FBQyxDQUFDLENBQ04sQ0FBQztRQUVGLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ2xCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsK0JBQStCO1lBQ3pGLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUVuRSxNQUFNLFFBQVEsR0FDVixPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBWSxLQUFLLFFBQVE7Z0JBQzFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVk7Z0JBQzVCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPLENBQUM7WUFFOUMsTUFBTSxLQUFLLEdBQ1AsT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxNQUFNO2dCQUNuRCxDQUFDLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDbEIsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUVwQixJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLEtBQUs7Z0JBQUUsT0FBTyxTQUFTLENBQUM7WUFFL0MsT0FBTztnQkFDSCxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNuQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDOUIsQ0FBQztRQUNOLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDTCxPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDNUIsT0FBTyxFQUFFO2dCQUNMLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTztnQkFDckMsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJO2dCQUMvQixPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU87Z0JBQ3JDLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDM0IsS0FBSyxFQUNELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLEtBQUssUUFBUTtvQkFDMUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBWTtvQkFDNUIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE9BQU87Z0JBQzdDLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUTtnQkFDdkMsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJO2dCQUM5QixLQUFLLEVBQUU7b0JBQ0gsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJO29CQUM5QixRQUFRLEVBQUUsVUFBVTtpQkFDdkI7YUFDSjtZQUNELE9BQU8sRUFBRSxPQUFPO1lBQ2hCLFdBQVcsRUFBRSxXQUFXLEVBQUUsR0FBRyxDQUN6QixDQUFDLElBQVMsRUFBRSxFQUFFLENBQ1YsQ0FBQztnQkFDRyxJQUFJLEVBQUUsV0FBVyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFO2dCQUMzQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7YUFDaEIsQ0FBbUIsQ0FDM0I7WUFDRCxHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUN4QixLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDMUIsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDcEMsS0FBSyxDQUNSO1lBQ0QsYUFBYSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FDbEMsS0FBSyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDbEMsS0FBSyxDQUNSO1lBQ0QsUUFBUSxFQUFFO2dCQUNOLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVM7Z0JBQzNDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVE7YUFDbEQ7WUFDRCxJQUFJLEVBQUU7Z0JBQ0YsWUFBWSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEdBQUc7Z0JBQzdDLFlBQVksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxHQUFHO2FBQ2hEO1lBQ0QsVUFBVSxFQUFFO2dCQUNSLFlBQVksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dCQUN2RCxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTthQUMxRDtZQUNELElBQUksRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQzlCLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUMzQixLQUFLLENBQ1I7U0FDZ0IsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVyxDQUNQLEtBQXNCLEVBQ3RCLFlBQXFCLEtBQUs7UUFFMUIsT0FBTztZQUNILFNBQVMsRUFBRSxTQUFTO1lBQ3BCLElBQUksRUFBRTtnQkFDRixRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRztnQkFDckMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7YUFDbEM7WUFDRCxLQUFLLEVBQUU7Z0JBQ0gsUUFBUSxFQUNKLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEtBQUssUUFBUTtvQkFDdEMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtvQkFDeEIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU87Z0JBQ3pDLEtBQUssRUFDRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUFLLFFBQVE7b0JBQ25DLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7b0JBQ3JCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO2dCQUN0QyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJO2dCQUN4QixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO2dCQUMxQixTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTO2FBQ3JDO1lBQ0QsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztZQUN4QyxNQUFNLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUNoQyxLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFDM0IsS0FBSyxDQUNSO1lBQ0QsV0FBVyxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FDckMsS0FBSyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQzlCLEtBQUssQ0FDUjtZQUNELFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDN0MsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsSUFBSSxFQUFFLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRTthQUM1QixDQUFDLENBQUM7U0FDYyxDQUFDO0lBQzFCLENBQUM7SUFFRCxjQUFjLENBQ1YsS0FBc0IsRUFDdEIsWUFBcUIsS0FBSztRQUUxQixPQUFPO1lBQ0gsU0FBUyxFQUFFLFNBQVM7WUFDcEIsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSTtZQUN4QixRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO1lBQ2hDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7WUFDaEMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztZQUMxQixVQUFVLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUNwQyxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFDN0IsS0FBSyxDQUNSO1lBQ0QsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDcEQsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLO2dCQUNsQixXQUFXLEVBQUUsSUFBSSxFQUFFLFdBQVc7Z0JBQzlCLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztnQkFDekMsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQzthQUMzQyxDQUFDLENBQUM7U0FDaUIsQ0FBQztJQUM3QixDQUFDO0lBRUQsU0FBUyxDQUNMLEtBQXNCLEVBQ3RCLFlBQXFCLEtBQUssRUFDMUIsVUFBOEI7UUFFOUIsSUFBSSxNQUFNLEdBQTJDLEVBQUUsQ0FBQztRQUN4RCxJQUFJLEtBQUssRUFBRSxJQUFJLENBQUM7UUFDaEIsTUFBTSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FDakMsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLElBQUksS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQ3hELEtBQUssQ0FDUixDQUFDO1FBQ0YsS0FBSyxHQUFHO1lBQ0osUUFBUSxFQUNKLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU87Z0JBQy9CLENBQUMsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsSUFBSSxRQUFRO29CQUN0QyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO29CQUN4QixDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3BCLEtBQUssRUFDRCxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO2dCQUM1QixDQUFDLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLElBQUksUUFBUTtvQkFDbkMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztvQkFDckIsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNwQixZQUFZLEVBQ1IsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsT0FBTztnQkFDbkMsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZO1lBQzlCLGVBQWUsRUFDWCxLQUFLLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxPQUFPO2dCQUN0QyxLQUFLLEVBQUUsS0FBSyxFQUFFLGVBQWU7WUFDakMsa0JBQWtCLEVBQ2QsS0FBSyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxPQUFPO2dCQUN6QyxLQUFLLEVBQUUsS0FBSyxFQUFFLGtCQUFrQjtZQUNwQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO1lBQ2xFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FDMUIsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLElBQUksQ0FDM0MsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFO2FBQzdDLENBQUMsQ0FBQztZQUNILFNBQVMsRUFDTCxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPLElBQUksS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTO1NBQ2xFLENBQUM7UUFDRixJQUFJLEdBQUc7WUFDSCxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRztZQUNyQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRztZQUMvQixZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsR0FBRztZQUM3QyxlQUFlLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsR0FBRztZQUNuRCxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLEdBQUc7WUFDekQsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUc7U0FDMUMsQ0FBQztRQUVGLE9BQU87WUFDSCxTQUFTLEVBQUUsU0FBUztZQUNwQixPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FDckIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQ3hEO1lBQ0QsS0FBSztZQUNMLE1BQU07WUFDTixJQUFJO1lBQ0osU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtZQUNqQyxVQUFVLEVBQUUsVUFBVTtTQUNMLENBQUM7SUFDMUIsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFzQjtRQUNqQyxNQUFNLFFBQVEsR0FBRyxDQUNiLE9BQVUsRUFDVixLQUFVLEVBQ1MsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLE9BQU87WUFDSCxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO1lBQ2hDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7WUFDMUIsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSTtZQUN4QixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQzFCLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVc7WUFDdEMsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztZQUN4QyxJQUFJLEVBQUUsUUFBUSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQztnQkFDOUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSTtnQkFDekIsQ0FBQyxDQUFDLFNBQVM7WUFDZixNQUFNLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUNoQyxLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFDM0IsS0FBSyxDQUNSO1NBQ2UsQ0FBQztJQUN6QixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXNCO1FBQzlCLE9BQU87WUFDSCxRQUFRLEVBQ0osT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsS0FBSyxRQUFRO2dCQUN0QyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO2dCQUN4QixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTztZQUN6QyxLQUFLLEVBQ0QsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssS0FBSyxRQUFRO2dCQUNuQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO2dCQUNyQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTztZQUN0QyxJQUFJLEVBQUU7Z0JBQ0YsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUc7Z0JBQ3JDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHO2FBQ2xDO1lBQ0QsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSTtZQUN4QixPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FDckIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQ3hEO1lBQ0QsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FDbkMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNWLENBQUM7Z0JBQ0csUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRO2dCQUN4QixLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUs7Z0JBQ2xCLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVztnQkFDdkIsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO2dCQUMzQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87b0JBQ2pCLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUNmLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxLQUFLLElBQUksQ0FDMUMsQ0FDSjtvQkFDSCxDQUFDLENBQUMsU0FBUztnQkFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7b0JBQ2IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQ1osSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ2IsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLEtBQUssSUFBSSxDQUMxQyxDQUNKLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ1IsQ0FBQyxDQUFDLFNBQVM7YUFDbEIsQ0FBeUIsQ0FDakM7U0FDZ0IsQ0FBQztJQUMxQixDQUFDO0lBRUQsZ0JBQWdCLENBQ1osS0FBc0I7UUFFdEIsT0FBTztZQUNILFFBQVEsRUFDSixPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxLQUFLLFFBQVE7Z0JBQ3RDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7Z0JBQ3hCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPO1lBQ3pDLEtBQUssRUFDRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUFLLFFBQVE7Z0JBQ25DLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7Z0JBQ3JCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBQ3RDLElBQUksRUFBRTtnQkFDRixRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRztnQkFDckMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7YUFDbEM7WUFDRCxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQzFCLE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUM7WUFDeEMsTUFBTSxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FDaEMsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQzNCLEtBQUssQ0FDUjtTQUNxQixDQUFDO0lBQy9CLENBQUM7SUFFRCxtQkFBbUIsQ0FDZixLQUFzQixFQUN0QixVQUE4QjtRQUU5QixPQUFPO1lBQ0gsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtZQUNoQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQzFCLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUk7WUFDeEIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztZQUMxQixXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXO1lBQ3RDLE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUM7WUFDeEMsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FDMUIsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQ2pDLEtBQUssQ0FDUjtZQUNELFVBQVUsRUFBRSxVQUFVO1lBQ3RCLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7U0FDSCxDQUFDO0lBQ2xDLENBQUM7SUFFRCxjQUFjLENBQ1YsS0FBc0IsRUFDdEIsWUFBcUIsS0FBSztRQUUxQixPQUFPLEtBQUs7WUFDUixDQUFDLENBQUU7Z0JBQ0csU0FBUyxFQUFFLFNBQVM7Z0JBQ3BCLE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDOUMsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FDcEMsQ0FBQyxJQUFtQixFQUFFLEVBQUUsQ0FDcEIsQ0FBQztvQkFDRyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7b0JBQ3ZCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztvQkFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUN2QixLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7b0JBQzNDLEtBQUssRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7aUJBQ3ZDLENBQTJCLENBQ25DO2dCQUNELE1BQU0sRUFBRTtvQkFDSixLQUFLLEVBQ0QsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssS0FBSyxRQUFRO3dCQUNuQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO3dCQUNyQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTztvQkFDdEMsUUFBUSxFQUNKLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEtBQUssUUFBUTt3QkFDdEMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTt3QkFDeEIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU87aUJBQzVDO2dCQUNELElBQUksRUFBRTtvQkFDRixRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRztvQkFDckMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7aUJBQ2xDO2FBQ29CO1lBQzNCLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDcEIsQ0FBQztJQUVELGFBQWEsQ0FDVCxLQUFzQixFQUN0QixVQUE4QjtRQUU5QixJQUFJLE1BQU0sR0FBMkMsRUFBRSxDQUFDO1FBQ3hELElBQUksS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUU7WUFDN0IsTUFBTSxHQUFHLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQW1CLEVBQUUsRUFBRTtnQkFDOUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDM0QsT0FBTztvQkFDSCxVQUFVLEVBQUUsVUFBVTtvQkFDdEIsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRO29CQUN4QixLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUs7b0JBQ2xCLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUTtvQkFDeEIsV0FBVyxFQUFFLElBQUksRUFBRSxXQUFXO29CQUM5QixHQUFHLEVBQ0MsT0FBTyxhQUFhLEtBQUssUUFBUTt3QkFDN0IsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFHO3dCQUNuQixDQUFDLENBQUMsYUFBYTtvQkFDdkIsR0FBRyxFQUNDLE9BQU8sYUFBYSxLQUFLLFFBQVE7d0JBQzdCLENBQUMsQ0FBQyxhQUFhLENBQUMsR0FBRzt3QkFDbkIsQ0FBQyxDQUFDLFNBQVM7b0JBQ25CLE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUNyQixJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FDakIsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxTQUFTLEtBQUssSUFBSSxJQUFJLFNBQVMsQ0FDckQsQ0FDSjtvQkFDRCxLQUFLLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FDbkIsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQ2YsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLFNBQVMsQ0FDcEQsQ0FDSjtpQkFDYSxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFDRCxJQUFJLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFO1lBQzNCLE1BQU0sR0FBRyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFtQixFQUFFLEVBQUU7Z0JBQzVELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQzNELE9BQU87b0JBQ0gsVUFBVSxFQUFFLFVBQVU7b0JBQ3RCLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUTtvQkFDeEIsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLO29CQUNsQixRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVE7b0JBQ3hCLFdBQVcsRUFBRSxJQUFJLEVBQUUsV0FBVztvQkFDOUIsR0FBRyxFQUNDLE9BQU8sYUFBYSxLQUFLLFFBQVE7d0JBQzdCLENBQUMsQ0FBQyxhQUFhLENBQUMsR0FBRzt3QkFDbkIsQ0FBQyxDQUFDLGFBQWE7b0JBQ3ZCLEdBQUcsRUFDQyxPQUFPLGFBQWEsS0FBSyxRQUFRO3dCQUM3QixDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUc7d0JBQ25CLENBQUMsQ0FBQyxTQUFTO29CQUNuQixPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FDckIsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQ2pCLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsU0FBUyxLQUFLLElBQUksSUFBSSxTQUFTLENBQ3JELENBQ0o7b0JBQ0QsS0FBSyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQ25CLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUNqQixDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLFNBQVMsS0FBSyxJQUFJLElBQUksU0FBUyxDQUNyRCxDQUNKO2lCQUNhLENBQUM7WUFDdkIsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUNELE9BQU8sS0FBSztZQUNSLENBQUMsQ0FBRTtnQkFDRyxNQUFNLEVBQUUsTUFBTTtnQkFDZCxNQUFNLEVBQUU7b0JBQ0osUUFBUSxFQUNKLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEtBQUssUUFBUTt3QkFDdEMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTt3QkFDeEIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU87b0JBQ3pDLEtBQUssRUFDRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUFLLFFBQVE7d0JBQ25DLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7d0JBQ3JCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO29CQUN0QyxRQUFRLEVBQ0osT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsS0FBSyxRQUFRO3dCQUN0QyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO3dCQUN4QixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTztvQkFDekMsV0FBVyxFQUNQLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXLEtBQUssUUFBUTt3QkFDekMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVzt3QkFDM0IsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE9BQU87aUJBQy9DO2dCQUNELEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQzFCLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQzdCLEtBQUssQ0FDUjtnQkFDRCxRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUM3QixLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUNoQyxLQUFLLENBQ1I7Z0JBQ0QsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtnQkFDaEMsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztnQkFDdEMsSUFBSSxFQUFFO29CQUNGLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHO29CQUNyQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRztpQkFDbEM7Z0JBQ0QsVUFBVSxFQUFFLFVBQVU7YUFDRDtZQUMzQixDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBc0I7UUFDL0IsT0FBTyxLQUFLO1lBQ1IsQ0FBQyxDQUFFO2dCQUNHLE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQ3BDLENBQUMsSUFBbUIsRUFBRSxFQUFFO29CQUNwQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQ3pDLElBQUksRUFDSixLQUFLLENBQ1IsQ0FBQztvQkFDRixPQUFPO3dCQUNILFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUTt3QkFDeEIsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLO3dCQUNsQixRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVE7d0JBQ3hCLFdBQVcsRUFBRSxJQUFJLEVBQUUsV0FBVzt3QkFDOUIsR0FBRyxFQUNDLE9BQU8sYUFBYSxLQUFLLFFBQVE7NEJBQzdCLENBQUMsQ0FBQyxhQUFhLENBQUMsR0FBRzs0QkFDbkIsQ0FBQyxDQUFDLGFBQWE7d0JBQ3ZCLEdBQUcsRUFDQyxPQUFPLGFBQWEsS0FBSyxRQUFROzRCQUM3QixDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUc7NEJBQ25CLENBQUMsQ0FBQyxTQUFTO3dCQUNuQixPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FDckIsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQ2pCLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsU0FBUyxLQUFLLElBQUksQ0FDeEMsQ0FDSjt3QkFDRCxLQUFLLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FDbkIsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQ2YsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUN2QyxDQUNKO3FCQUNhLENBQUM7Z0JBQ3ZCLENBQUMsQ0FDSjtnQkFDRCxNQUFNLEVBQUU7b0JBQ0osS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztvQkFDMUIsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtpQkFDbkM7Z0JBQ0QsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQ3JCLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUNsQixDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLFNBQVMsS0FBSyxJQUFJLENBQ3hDLENBQ0o7YUFDa0I7WUFDekIsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNwQixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQXNCO1FBQzFCLE9BQU87WUFDSCxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO1lBQ3hDLEtBQUssRUFBRTtnQkFDSCxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO2dCQUNoQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO2FBQzdCO1lBQ0QsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUNwQixDQUFDLElBQVMsRUFBRSxFQUFFLENBQ1YsQ0FBQztnQkFDRyxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO2dCQUN2QyxLQUFLLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO2dCQUNwQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVU7b0JBQ25CLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBa0IsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztvQkFDM0MsRUFBRSxHQUFHLENBQ0QsQ0FBQyxHQUFrQixFQUFFLEVBQUUsQ0FDbkIsQ0FBQztvQkFDRyxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVE7b0JBQ3RCLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSztvQkFDaEIsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO29CQUN0QixHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQztpQkFDcEMsQ0FBa0IsQ0FDMUI7Z0JBQ0wsS0FBSyxFQUFFO29CQUNILElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUk7b0JBQ3RCLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVc7b0JBQ3BDLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVc7b0JBQ3BDLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVc7b0JBQ3BDLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVc7b0JBQ3BDLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVc7aUJBQ3ZDO2dCQUNELFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUTtvQkFDcEIsRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNuQixJQUFJLEVBQUUsSUFBSTtvQkFDTixFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUM7cUJBQ1gsR0FBRyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7cUJBQzdCLFFBQVEsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLENBQ2pEO29CQUNELEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNsQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7b0JBQ2YsSUFBSSxFQUFFLFFBQVEsSUFBSSxDQUFDLEtBQUssRUFBRTtpQkFDN0IsQ0FBQyxDQUFDO2FBQ1YsQ0FBcUIsQ0FDN0I7U0FDZ0IsQ0FBQztJQUMxQixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQXNCO1FBQy9CLElBQUksS0FBSyxHQUFHLEtBQUssRUFBRSxLQUFLO1lBQ3BCLEVBQUUsR0FBRyxDQUNELENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FDVixDQUFDO1lBQ0csT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQ3JCLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUNqQixDQUFDLEdBQVEsRUFBRSxFQUFFLENBQ1QsR0FBRyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDO2dCQUNuQyxHQUFHLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FDM0MsQ0FDSjtZQUNELEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztZQUNsQixLQUFLLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO1lBQ3BDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDbkIsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFrQixFQUFFLEVBQUUsQ0FDNUIsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQ1YsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUNwQyxDQUNKO2dCQUNELEVBQUUsR0FBRyxDQUNELENBQUMsR0FBa0IsRUFBRSxFQUFFLENBQ25CLENBQUM7Z0JBQ0csUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO2dCQUN0QixLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7Z0JBQ2hCLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTtnQkFDdEIsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FDeEIsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQ1YsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNKLEdBQUcsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUMvQjtvQkFDRyxDQUFDLENBQUMsR0FBRztvQkFDTCxDQUFDLENBQUMsU0FBUyxFQUNmLElBQUksRUFDSixJQUFJLENBQUMsNEJBQTRCLEVBQ2pDLElBQUk7cUJBQ0MsaUNBQWlDLENBQ3pDO2dCQUNELEdBQUcsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FDZixDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FDaEMsRUFBRSxJQUFJO2FBQ1YsQ0FBa0IsQ0FDMUI7Z0JBQ0QsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNqQixLQUFLLEVBQUU7Z0JBQ0gsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSTtnQkFDdEIsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVztnQkFDcEMsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVztnQkFDcEMsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVztnQkFDcEMsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVztnQkFDcEMsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVzthQUN2QztZQUNELFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUTtnQkFDcEIsRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNuQixJQUFJLEVBQUUsSUFBSTtnQkFDTixFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUM7aUJBQ1gsR0FBRyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7aUJBQzdCLFFBQVEsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLENBQ2pEO2dCQUNELEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNsQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsSUFBSSxFQUFFLFFBQVEsSUFBSSxDQUFDLEtBQUssRUFBRTthQUM3QixDQUFDLENBQUM7U0FDVixDQUFxQixDQUM3QjthQUNBLElBQUksQ0FBQyxDQUFDLENBQXVCLEVBQUUsQ0FBdUIsRUFBRSxFQUFFO1lBQ3ZELE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztRQUNQLE9BQU87WUFDSCxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0MsTUFBTSxFQUFFO2dCQUNKLFFBQVEsRUFDSixPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxLQUFLLFFBQVE7b0JBQ3RDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7b0JBQ3hCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPO2dCQUN6QyxLQUFLLEVBQ0QsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssS0FBSyxRQUFRO29CQUNuQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO29CQUNyQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTzthQUN6QztZQUNELEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSztZQUNsRCxJQUFJLEVBQUU7Z0JBQ0YsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUc7Z0JBQ3JDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHO2FBQ2xDO1NBQ2lCLENBQUM7SUFDM0IsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFzQjtRQUNqQyxJQUFJLFVBQVUsR0FDVixLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxNQUFNO1lBQzlELENBQUMsQ0FBQyxJQUFJO1lBQ04sQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUVoQixPQUFPO1lBQ0gsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztZQUN4QyxJQUFJLEVBQUUsVUFBVTtZQUNoQixLQUFLLEVBQUU7Z0JBQ0gsZUFBZSxFQUFFO29CQUNiLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHO29CQUNoQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTztpQkFDM0M7Z0JBQ0QsWUFBWSxFQUFFO29CQUNWLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHO29CQUM3QixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTztpQkFDeEM7YUFDSjtZQUNELFFBQVEsRUFDSixPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxLQUFLLFFBQVE7Z0JBQ3RDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7Z0JBQ3hCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPO1lBQ3pDLEtBQUssRUFDRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUFLLFFBQVE7Z0JBQ25DLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7Z0JBQ3JCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBRXRDLElBQUksRUFBRTtnQkFDRixRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRztnQkFDckMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7YUFDbEM7WUFDRCxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7Z0JBQ2YsRUFBRSxNQUFNLENBQ0osQ0FBQyxJQUFTLEVBQUUsS0FBYSxFQUFFLElBQVcsRUFBRSxFQUFFLENBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssQ0FDeEQ7Z0JBQ0QsRUFBRSxHQUFHLENBQ0QsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNWLENBQUM7Z0JBQ0csRUFBRSxFQUNFLElBQUksQ0FBQyxFQUFFO29CQUNQLElBQUksQ0FBQyxhQUFhO29CQUNsQixJQUFJLENBQUMsTUFBTTtvQkFDWCxHQUFHO2dCQUNQLE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUNyQixJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUNuQztnQkFDRCxLQUFLLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO2dCQUNwQyxNQUFNLEVBQUU7b0JBQ0osSUFBSSxDQUFDLGtCQUFrQixDQUNuQixJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FDbEIsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQzNCLElBQUksSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUMxQixLQUFLLENBQ1I7aUJBQ0o7Z0JBQ0QsS0FBSyxFQUFFO29CQUNILElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUk7b0JBQ3RCLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVc7b0JBQ3BDLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVc7b0JBQ3BDLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVc7b0JBQ3BDLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVc7b0JBQ3BDLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVc7aUJBQ3ZDO2dCQUNELEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztnQkFDbEIsVUFBVSxFQUNOLElBQUksRUFBRSxRQUFRO29CQUNWLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7b0JBQ2xCLE1BQU0sS0FBSyxHQUNQLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRO3dCQUN4QixDQUFDLENBQUMsR0FBRyxDQUFDLElBQUk7NkJBQ0gsS0FBSyxDQUFDLEdBQUcsQ0FBQzs2QkFDVixHQUFHLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUNmLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FDWjt3QkFDUCxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUViLE1BQU0saUJBQWlCLEdBQ25CLEtBQUssQ0FBQyxRQUFRLENBQ1YsZUFBZSxDQUFDLGVBQWUsQ0FDbEMsQ0FBQztvQkFDTixNQUFNLFFBQVEsR0FDVixDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUs7d0JBQ1gsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7b0JBRXhDLE9BQU8saUJBQWlCLElBQUksUUFBUSxDQUFDO2dCQUN6QyxDQUFDLENBQUM7b0JBQ0YsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ2pCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtvQkFDZCxJQUFJLEVBQUUsUUFBUSxHQUFHLENBQUMsS0FBSyxFQUFFO2lCQUM1QixDQUFDLENBQUMsSUFBSSxFQUFFO2FBQ3BCLENBQXFCLENBQzdCO2lCQUNBLElBQUksQ0FBQyxDQUFDLENBQXVCLEVBQUUsQ0FBdUIsRUFBRSxFQUFFO2dCQUN2RCxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDM0MsQ0FBQyxDQUFDO1NBQ2MsQ0FBQztJQUM3QixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQXNCO1FBQ2pDLE9BQU87WUFDSCxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO1lBQ2hDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7WUFDMUIsZUFBZSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FDcEMsS0FBSyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDdEMsS0FBSyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDM0MsS0FBSyxDQUNSO1lBQ0QsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUN0QixDQUFDLElBQVMsRUFBRSxFQUFFLENBQ1YsQ0FBQztnQkFDRyxlQUFlLEVBQUUsSUFBSSxFQUFFLGVBQWU7Z0JBQ3RDLGFBQWEsRUFBRSxJQUFJLEVBQUUsYUFBYTtnQkFDbEMsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztnQkFDdkMsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRO2dCQUN4QixRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVE7Z0JBQ3hCLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztnQkFDbEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztnQkFDcEMsTUFBTSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FDM0IsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUNyQixLQUFLLENBQ1I7Z0JBQ0QsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO2dCQUNoQixLQUFLLEVBQUU7b0JBQ0gsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSztvQkFDeEIsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUTtvQkFDOUIsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVztvQkFDcEMsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVztvQkFDcEMsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVztvQkFDcEMsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVztvQkFDcEMsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVTtvQkFDbEMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsY0FBYztpQkFDZDtnQkFDckIsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHO2dCQUNkLFdBQVcsRUFBRSxJQUFJLEVBQUUsV0FBVztnQkFDOUIsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTO2FBQzdCLENBQWtCLENBQzFCO1NBQ21CLENBQUM7SUFDN0IsQ0FBQztJQUNELGtDQUFrQztJQUVsQyxTQUFTLENBQUMsS0FBc0I7UUFDNUIsT0FBTztZQUNILEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7WUFDMUIsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztZQUN0QyxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO1lBQ2hDLE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUM5QixDQUFDO0lBQ3hCLENBQUM7SUFFRCxjQUFjLENBQ1YsS0FBc0IsRUFDdEIsT0FBd0IsRUFDeEIsY0FBK0I7UUFFL0IsT0FBTztZQUNILFFBQVEsRUFDSixPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxLQUFLLFFBQVE7Z0JBQ3RDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7Z0JBQ3hCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPO1lBQ3pDLEtBQUssRUFDRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUFLLFFBQVE7Z0JBQ25DLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7Z0JBQ3JCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBQ3RDLFdBQVcsRUFDUCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxLQUFLLFFBQVE7Z0JBQ3pDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVc7Z0JBQzNCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxPQUFPO1lBQzVDLFFBQVEsRUFDSixPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxLQUFLLFFBQVE7Z0JBQ3RDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7Z0JBQ3hCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPO1lBQ3pDLElBQUksRUFBRTtnQkFDRixRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRztnQkFDckMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7Z0JBQy9CLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxHQUFHO2dCQUMzQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRzthQUN4QztZQUNELEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQXFCO1lBQzVELE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM3QyxRQUFRLEVBQUU7Z0JBQ04sRUFBRSxFQUFFLFNBQVM7Z0JBQ2IsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBWTtnQkFDakMsSUFBSSxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUM7Z0JBQ3JELFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLHVCQUF1QjtnQkFDbEQsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztnQkFDakMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYTthQUNyQztZQUNELFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVU7WUFDcEMsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztZQUN0QyxRQUFRLEVBQUU7Z0JBQ04sS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYTtnQkFDbEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxHQUFHLENBQ3hCLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FDVixDQUFDO29CQUNHLGFBQWEsRUFDVCxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxhQUFhO29CQUM5QyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUU7b0JBQ2IsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2lCQUNsQixDQUFtQixDQUMzQjtnQkFDRCxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxtQkFBbUI7Z0JBQzlDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGFBQWE7YUFDckM7WUFDRCxTQUFTLEVBQ0wsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQztnQkFDckIsQ0FBQyxDQUFDO29CQUNJLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGNBQWM7b0JBQ25DLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FDdkIsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNWLENBQUM7d0JBQ0csSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFO3dCQUNiLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtxQkFDbEIsQ0FBbUIsQ0FDM0I7b0JBQ0QsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsb0JBQW9CO29CQUMvQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhO2lCQUNyQztnQkFDSCxDQUFDLENBQUMsU0FBUztZQUNuQixLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUMxQixLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDNUIsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDakMsS0FBSyxDQUNFO1lBQ1gsTUFBTSxFQUFFO2dCQUNKO29CQUNJLEVBQUUsRUFBRSxRQUFRO29CQUNaLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVM7b0JBQzlCLElBQUksRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDO29CQUNsRCxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxvQkFBb0I7b0JBQy9DLEtBQUssRUFBRSxFQUFFO29CQUNULElBQUksRUFBRSxNQUFNO29CQUNaLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVM7b0JBQzlCLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7b0JBQ2pDLEtBQUssRUFBRSxJQUFJO2lCQUNkO2dCQUNEO29CQUNJLEVBQUUsRUFBRSxTQUFTO29CQUNiLEtBQUssRUFDRCxLQUFLLEVBQUUsS0FBSyxFQUFFLGFBQWE7d0JBQzNCLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYTtvQkFDL0IsSUFBSSxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQ3JCLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYTt3QkFDdkIsS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhLENBQ2xDO29CQUNELFdBQVcsRUFDUCxLQUFLLEVBQUUsS0FBSyxFQUFFLHdCQUF3Qjt3QkFDdEMsS0FBSyxFQUFFLEtBQUssRUFBRSx3QkFBd0I7b0JBQzFDLEtBQUssRUFBRSxFQUFFO29CQUNULElBQUksRUFBRSxNQUFNO29CQUNaLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVk7b0JBQ2pDLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7b0JBQ2pDLEtBQUssRUFBRSxJQUFJO2lCQUNkO2dCQUNEO29CQUNJLEVBQUUsRUFBRSxPQUFPO29CQUNYLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVU7b0JBQy9CLElBQUksRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDO29CQUNuRCxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxxQkFBcUI7b0JBQ2hELEtBQUssRUFBRSxFQUFFO29CQUNULElBQUksRUFBRSxNQUFNO29CQUNaLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVU7b0JBQy9CLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztvQkFDbkQsS0FBSyxFQUFFLElBQUk7aUJBQ2Q7Z0JBQ0Q7b0JBQ0ksRUFBRSxFQUFFLE9BQU87b0JBQ1gsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVTtvQkFDL0IsSUFBSSxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUM7b0JBQ25ELFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLHFCQUFxQjtvQkFDaEQsS0FBSyxFQUFFLEVBQUU7b0JBQ1QsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVTtvQkFDL0IsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztvQkFDakMsS0FBSyxFQUFFLElBQUk7aUJBQ2Q7YUFDZTtZQUNwQixJQUFJLEVBQUU7Z0JBQ0YsT0FBTyxFQUFFO29CQUNMLElBQUksRUFBRSxPQUFPLEdBQUcsT0FBTyxFQUFFLEtBQUssRUFBRSxXQUFXO29CQUMzQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZO29CQUNuQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUs7aUJBQ2pEO2dCQUNELEtBQUssRUFBRTtvQkFDSCxJQUFJLEVBQUUsT0FBTyxHQUFHLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUztvQkFDekMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVTtvQkFDakMsS0FBSyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FDcEQsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNKLENBQUM7d0JBQ0csR0FBRyxHQUFHO3dCQUNOLEdBQUcsRUFBRSxVQUFVLEdBQUcsRUFBRSxHQUFHLEdBQUc7cUJBQzdCLENBQW1CLENBQzNCO2lCQUNKO2dCQUNELEtBQUssRUFBRTtvQkFDSCxJQUFJLEVBQUUsT0FBTyxHQUFHLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUztvQkFDekMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVTtvQkFDakMsS0FBSyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FDcEQsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNKLENBQUM7d0JBQ0csR0FBRyxHQUFHO3dCQUNOLEdBQUcsRUFBRSxTQUFTLEdBQUcsRUFBRSxHQUFHLEdBQUc7cUJBQzVCLENBQW1CLENBQzNCO2lCQUNKO2FBQ0o7U0FDbUIsQ0FBQztJQUM3QixDQUFDO0lBRUQsaUJBQWlCLENBQ2IsS0FBc0I7UUFFdEIsTUFBTSxhQUFhLEdBQUcsS0FBSyxFQUFFLFlBQVksSUFBSSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakUsT0FBTztZQUNILElBQUksRUFBRTtnQkFDRixPQUFPLEVBQUU7b0JBQ0wsSUFBSSxFQUFFLE9BQU8sR0FBRyxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVc7b0JBQ3pDLEtBQUssRUFDRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBWSxLQUFLLFFBQVE7d0JBQzFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVk7d0JBQzVCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPO29CQUM3QyxJQUFJLEVBQUUsYUFBYTt3QkFDZixDQUFDLENBQUM7NEJBQ0ksYUFBYSxFQUFFLE9BQU87NEJBQ3RCLENBQUMsYUFBYSxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDO2lDQUNuQyxNQUFNLENBQUMsT0FBTyxDQUFDO2lDQUNmLElBQUksQ0FBQyxHQUFHLENBQUM7NEJBQ2QsYUFBYSxFQUFFLFFBQVE7NEJBQ3ZCLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDO2lDQUM1QyxNQUFNLENBQUMsT0FBTyxDQUFDO2lDQUNmLElBQUksQ0FBQyxJQUFJLENBQUM7eUJBQ2xCOzZCQUNJLE1BQU0sQ0FBQyxPQUFPLENBQUM7NkJBQ2YsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTs0QkFDcEIsSUFBSSxHQUFHLEtBQUssQ0FBQztnQ0FBRSxPQUFPLElBQUksR0FBRyxNQUFNLENBQUM7NEJBQ3BDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dDQUFFLE9BQU8sSUFBSSxHQUFHLElBQUksQ0FBQzs0QkFDNUMsSUFBSSxHQUFHLEtBQUssQ0FBQztnQ0FBRSxPQUFPLElBQUksR0FBRyxNQUFNLENBQUM7NEJBQ3BDLElBQUksR0FBRyxLQUFLLENBQUM7Z0NBQUUsT0FBTyxJQUFJLEdBQUcsTUFBTSxDQUFDOzRCQUNwQyxPQUFPLElBQUksQ0FBQzt3QkFDaEIsQ0FBQyxDQUFDOzZCQUNELElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQ2YsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxJQUFJLFNBQVM7b0JBQ3RDLEtBQUssRUFBRTt3QkFDSDs0QkFDSSxHQUFHLEVBQUUsYUFBYTtnQ0FDZCxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUk7Z0NBQ3BCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUk7NEJBQ3hCLFFBQVEsRUFBRSxVQUFVOzRCQUNwQixLQUFLLEVBQUUsYUFBYSxFQUFFLE9BQU87eUJBQ2hDO3FCQUMyQztpQkFDbkQ7Z0JBQ0QsS0FBSyxFQUFFO29CQUNILElBQUksRUFBRSxPQUFPLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTO29CQUN2QyxLQUFLLEVBQ0QsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsS0FBSyxRQUFRO3dCQUN4QyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVO3dCQUMxQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTzs0QkFDakMsYUFBYSxFQUFFLEtBQUs7b0JBQzlCLEtBQUssRUFBRTt3QkFDSCxhQUFhOzRCQUNULENBQUMsQ0FBQztnQ0FDSSxHQUFHLEVBQUUsVUFBVSxhQUFhLEVBQUUsS0FBSyxFQUFFO2dDQUNyQyxRQUFRLEVBQUUsVUFBVTtnQ0FDcEIsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLO2dDQUMzQixTQUFTLEVBQUUsYUFBYSxFQUFFLEtBQUs7NkJBQ2xDOzRCQUNILENBQUMsQ0FBQztnQ0FDSSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJO2dDQUN2QixRQUFRLEVBQUUsVUFBVTtnQ0FDcEIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztnQ0FDMUIsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSzs2QkFDakM7cUJBQ3FDO2lCQUNuRDtnQkFDRCxLQUFLLEVBQUU7b0JBQ0gsSUFBSSxFQUFFLE9BQU8sR0FBRyxLQUFLLEVBQUUsS0FBSyxFQUFFLGdCQUFnQjtvQkFDOUMsS0FBSyxFQUNELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsS0FBSyxRQUFRO3dCQUMvQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxpQkFBaUI7d0JBQ2pDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE9BQU87NEJBQ3hDLGFBQWEsRUFBRSxLQUFLO29CQUM5QixLQUFLLEVBQUUsYUFBYTt3QkFDaEIsQ0FBQyxDQUFFOzRCQUNHO2dDQUNJLEdBQUcsRUFBRSxPQUFPLGFBQWEsRUFBRSxLQUFLLEVBQUU7Z0NBQ2xDLFFBQVEsRUFBRSxVQUFVO2dDQUNwQixLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUs7Z0NBQzNCLFNBQVMsRUFBRSxhQUFhLEVBQUUsS0FBSzs2QkFDbEM7NEJBQ0Q7Z0NBQ0ksR0FBRyxFQUFFLE9BQU8sYUFBYSxFQUFFLFFBQVEsRUFBRTtnQ0FDckMsUUFBUSxFQUFFLFVBQVU7Z0NBQ3BCLEtBQUssRUFBRSxhQUFhLEVBQUUsUUFBUTtnQ0FDOUIsU0FBUyxFQUFFLGFBQWEsRUFBRSxRQUFROzZCQUNyQzt5QkFDNEM7d0JBQ25ELENBQUMsQ0FBQzs0QkFDSTtnQ0FDSSxHQUFHLEVBQUUsVUFBVSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQ0FDbkMsUUFBUSxFQUFFLFVBQVU7Z0NBQ3BCLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7Z0NBQzFCLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7NkJBQ2pDOzRCQUNEO2dDQUNJLEdBQUcsRUFBRSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dDQUNoQyxRQUFRLEVBQUUsVUFBVTtnQ0FDcEIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztnQ0FDMUIsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSzs2QkFDakM7eUJBQ0o7aUJBQ1Y7YUFDSjtTQUNKLENBQUM7SUFDTixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQXNCO1FBQ2hDLE9BQU87WUFDSCxVQUFVLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTO1lBQ25DLFFBQVEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQzdCLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM1QixLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUNqQyxLQUFLLENBQ1I7WUFDRCxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0MsY0FBYyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FDbkMsS0FBSyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDdEMsS0FBSyxDQUNSO1NBQ21CLENBQUM7SUFDN0IsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFzQjtRQUNoQyxPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztZQUMxQixRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO1lBQ2hDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FDdkIsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNWLENBQUM7Z0JBQ0csS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ3RCLElBQUksRUFBRSxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUU7YUFDNUIsQ0FBMEIsQ0FDbEM7U0FDa0IsQ0FBQztJQUM1QixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQXNCO1FBQzVCLE9BQU87WUFDSCxLQUFLLEVBQUUsQ0FDSCxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FDYixDQUFDLElBQVMsRUFBRSxFQUFFLENBQ1YsQ0FBQztnQkFDRyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2hCLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztnQkFDYixRQUFRLEVBQUUsVUFBVTthQUN2QixDQUFtQixDQUUvQixDQUFBLENBQUMsTUFBTSxDQUNKLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDTCxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsTUFBTSxDQUNuRDtZQUNELEtBQUssRUFDRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUFLLFFBQVE7Z0JBQ25DLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7Z0JBQ3JCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBQ3RDLFFBQVEsRUFDSixPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxLQUFLLFFBQVE7Z0JBQ3RDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7Z0JBQ3hCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPO1lBQ3pDLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQzFCLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM1QixLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUNqQyxLQUFLLENBQ0U7WUFDWCxlQUFlLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUNuQyxLQUFLLEVBQUUsS0FBSyxFQUFFLGVBQWUsQ0FDaEM7WUFDRCxJQUFJLEVBQUU7Z0JBQ0YsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUc7Z0JBQ3JDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHO2FBQ2xDO1NBQ0osQ0FBQztJQUNOLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBc0I7UUFDM0IsT0FBTztZQUNILFFBQVEsRUFDSixPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxLQUFLLFFBQVE7Z0JBQ3RDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7Z0JBQ3hCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPO1lBQ3pDLEtBQUssRUFDRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUFLLFFBQVE7Z0JBQ25DLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7Z0JBQ3JCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBQ3RDLFdBQVcsRUFDUCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxLQUFLLFFBQVE7Z0JBQ3pDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVc7Z0JBQzNCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxPQUFPO1lBQzVDLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQ3hCLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM1QixLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUNqQyxLQUFLLENBQ1I7WUFDRCxJQUFJLEVBQUU7Z0JBQ0YsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUc7Z0JBQ3JDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHO2dCQUMvQixXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsR0FBRzthQUM5QztZQUNELFVBQVUsRUFBRTtnQkFDUixRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDL0MsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQ3pDLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2FBQ3hEO1NBQ2EsQ0FBQztJQUN2QixDQUFDO0lBRUQsY0FBYyxDQUFDLFNBQTBCO1FBQ3JDLE9BQU87WUFDSCxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVU7WUFDakMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTO1lBQy9CLEtBQUssRUFBRyxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQWU7Z0JBQ3JDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkIsRUFBRSxHQUFHLENBQ0QsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNMLENBQUM7Z0JBQ0csS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLO2dCQUNsQixRQUFRLEVBQUUsVUFBVTtnQkFDcEIsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHO29CQUNWLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUM7d0JBQ3hDLEdBQUc7d0JBQ0QsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDekIsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHO29CQUNmLENBQUMsQ0FBQyxTQUFTO2FBQ2xCLENBQW1CLENBQzNCO1NBQ2MsQ0FBQztJQUM1QixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQXNCO1FBQy9CLE9BQU87WUFDSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzNDLFdBQVcsRUFBRSxNQUFNLENBQUMsSUFBSTtnQkFDeEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUM5QyxJQUFJLEVBQUUsTUFBTTtvQkFDWixJQUFJLEVBQUUsTUFBTTtpQkFDZixDQUFDLENBQUM7Z0JBQ0gsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJO2dCQUNsQixVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7Z0JBQzdCLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTthQUM1QixDQUFDLENBQXVCO1lBQ3pCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFFBQVEsRUFDSixPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxLQUFLLFFBQVE7Z0JBQ3RDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7Z0JBQ3hCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPO1lBQ3pDLEtBQUssRUFDRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUFLLFFBQVE7Z0JBQ25DLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7Z0JBQ3JCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBQ3RDLElBQUksRUFBRTtnQkFDRixRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRztnQkFDckMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7YUFDbEM7WUFDRCxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7Z0JBQ2YsRUFBRSxHQUFHLENBQ0QsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNWLENBQUM7Z0JBQ0csZUFBZSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSTtnQkFDbEMsdUJBQXVCLEVBQUUsQ0FBQztnQkFDMUIsS0FBSyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDbkMsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDdkMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSTtnQkFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVztnQkFDakMsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLO2dCQUNsQixTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxXQUFXO2dCQUNsQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUs7Z0JBQ2xCLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUTtvQkFDckIsRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNuQixJQUFJLEVBQUUsSUFBSTtvQkFDTixFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUM7cUJBQ1gsR0FBRyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7cUJBQzdCLFFBQVEsQ0FDTCxlQUFlLENBQUMsZUFBZSxDQUNsQyxDQUNSO29CQUNELEVBQUUsR0FBRyxDQUNELENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FDVixDQUFDO29CQUNHLElBQUksRUFBRSxRQUFRLElBQUksQ0FBQyxLQUFLLEVBQUU7b0JBQzFCLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSTtpQkFDbkIsQ0FBOEIsQ0FDdEM7Z0JBQ0wsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FDeEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFrQixFQUFFLEVBQUUsQ0FDekMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQ1YsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUNwQztvQkFDRyxDQUFDLENBQUMsR0FBRztvQkFDTCxDQUFDLENBQUMsU0FBUyxDQUNsQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDekIsS0FBSyxDQUNSO2dCQUNELE1BQU0sRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQ2hDLElBQUksQ0FBQyxVQUFVLEVBQ2YsS0FBSyxDQUNSO2FBQ0osQ0FBeUIsQ0FDakM7aUJBQ0EsSUFBSSxDQUFDLENBQUMsQ0FBdUIsRUFBRSxDQUF1QixFQUFFLEVBQUU7Z0JBQ3ZELE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMzQyxDQUFDLENBQUM7U0FDWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxpQkFBaUIsQ0FDYixLQUFzQjtRQUV0QixPQUFPO1lBQ0gsS0FBSyxFQUNELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEtBQUssUUFBUTtnQkFDbkMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztnQkFDckIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFDdEMsUUFBUSxFQUNKLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEtBQUssUUFBUTtnQkFDdEMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtnQkFDeEIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU87WUFDekMsSUFBSSxFQUFFO2dCQUNGLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHO2dCQUNyQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRzthQUNsQztZQUNELEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FDdkIsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNWLENBQUM7Z0JBQ0csS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ3RCLElBQUksRUFBRSxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUU7YUFDNUIsQ0FBOEIsQ0FDdEM7WUFDRCxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDdEIsQ0FBQztJQUNoQyxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQXNCO1FBQ2hDLElBQUksR0FBRyxHQUNILEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RSxPQUFPO1lBQ0gsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLO1lBQ2pCLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUTtZQUN2QixRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVE7WUFDdkIsV0FBVyxFQUFFLEdBQUcsRUFBRSxXQUFXO1lBQzdCLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsWUFBWSxDQUFDO1lBQ25DLE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUM7WUFDdEMsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDO1lBQzFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVU7WUFDcEMsSUFBSSxFQUFFO2dCQUNGLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHO2dCQUNyQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRztnQkFDL0IsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUc7YUFDeEM7U0FDa0IsQ0FBQztJQUM1QixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQXNCO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ2QsT0FBTyxTQUFTLENBQUM7U0FDcEI7UUFDRCxNQUFNLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxDQUFDO1FBQ25ELElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDcEUsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNwQixhQUFhLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNoQztRQUNELE9BQU87WUFDSCxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUk7WUFDbEIsV0FBVyxFQUNQLEtBQUssRUFBRSxXQUFXLEtBQUssU0FBUztnQkFDaEMsS0FBSyxFQUFFLFdBQVcsS0FBSyxJQUFJO2dCQUMzQixLQUFLLEVBQUUsV0FBVyxLQUFLLEVBQUU7Z0JBQ3JCLENBQUMsQ0FBQyxLQUFLLEVBQUUsV0FBVztnQkFDcEIsQ0FBQyxDQUFDLEtBQUssRUFBRSxXQUFXO1lBQzVCLFFBQVEsRUFBRSxLQUFLLEVBQUUsV0FBVztZQUM1QixjQUFjLEVBQUUsS0FBSyxFQUFFLFdBQVc7WUFDbEMsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDNUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUTtnQkFDeEIsRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNuQixJQUFJLEVBQUUsSUFBSTtnQkFDTixFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUM7aUJBQ1gsR0FBRyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7aUJBQzdCLFFBQVEsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQzNDO2lCQUNBLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDakIsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJO2dCQUNqQixJQUFJLEVBQUUsUUFBUSxJQUFJLEVBQUUsS0FBSyxFQUFFO2dCQUMzQixXQUFXLEVBQUUsSUFBSSxFQUFFLFdBQVc7YUFDakMsQ0FBQyxDQUEyQjtZQUNqQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO1lBQ2hDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7WUFDaEMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDN0MsSUFBSSxFQUFFO2dCQUNGLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHO2dCQUNyQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRzthQUNsQztZQUNELFNBQVMsRUFBRSxLQUFLO1NBQ0csQ0FBQztJQUM1QixDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBc0I7UUFDckMsT0FBTztZQUNILEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7WUFDMUIsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSTtZQUN4QixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQzFCLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7WUFDaEMsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM1RCxHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQzthQUNyQyxDQUFDLENBQUM7U0FDcUIsQ0FBQztJQUNqQyxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQXNCO1FBQy9CLE9BQU87WUFDSCxTQUFTLEVBQUUsU0FBUztZQUNwQixTQUFTLEVBQUUsU0FBUztZQUNwQixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQzFCLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7WUFDaEMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO2dCQUNmLEVBQUUsR0FBRyxDQUNELENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FDVixDQUFDO2dCQUNHLGVBQWUsRUFBRSxDQUFDO2dCQUNsQix1QkFBdUIsRUFBRSxDQUFDO2dCQUMxQixLQUFLLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO2dCQUNwQyxPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FDckIsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FDbkM7Z0JBQ0QsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSTtnQkFDeEIsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVztnQkFDbEMsV0FBVyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVztnQkFDckMsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLO2dCQUNsQixTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxXQUFXO2dCQUNuQyxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVE7b0JBQ3JCLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FDbkIsSUFBSSxFQUFFLElBQUk7b0JBQ04sRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDO3FCQUNYLEdBQUcsQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO3FCQUM3QixRQUFRLENBQ0wsZUFBZSxDQUFDLGVBQWUsQ0FDbEMsQ0FDUjtvQkFDRCxFQUFFLEdBQUcsQ0FDRCxDQUFDLElBQVMsRUFBRSxFQUFFLENBQ1YsQ0FBQztvQkFDRyxJQUFJLEVBQUUsUUFBUSxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUMxQixLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUk7aUJBQ25CLENBQThCLENBQ3RDO2dCQUNMLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQ3hCLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUNqQixDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FDM0IsSUFBSSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQzFCLEtBQUssQ0FDUjtnQkFDRCxNQUFNLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUNoQyxJQUFJLENBQUMsVUFBVSxFQUNmLEtBQUssQ0FDUjtnQkFDRCxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUs7YUFDckIsQ0FBeUIsQ0FDakM7aUJBQ0EsSUFBSSxDQUFDLENBQUMsQ0FBdUIsRUFBRSxDQUF1QixFQUFFLEVBQUU7Z0JBQ3ZELE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMzQyxDQUFDLENBQUM7U0FDWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBc0I7UUFDaEMsT0FBTztZQUNILE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQ3BDLENBQUMsR0FBa0IsRUFBRSxFQUFFLENBQ25CLENBQUM7Z0JBQ0csR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUM7YUFDcEMsQ0FBa0IsQ0FDMUI7WUFDRCxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUM5QixDQUFDLEdBQWtCLEVBQUUsRUFBRSxDQUNuQixDQUFDO2dCQUNHLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDO2FBQ3BDLENBQWtCLENBQzFCLENBQUMsQ0FBQyxDQUFDO1lBQ0osS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQ25CLFdBQVcsRUFBRSxLQUFLLEVBQUUsV0FBVztZQUMvQixJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDekMsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQzFCLENBQUM7SUFDNUIsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFzQjtRQUNqQyxNQUFNLEtBQUssR0FBRyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsT0FBTztZQUNILFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7WUFDaEMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztZQUMxQixXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXO1lBQ3RDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVc7WUFDbEMsYUFBYSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztZQUN4QyxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXO1lBQ3BDLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUTtZQUN6QixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7WUFDbkIsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRO1lBQ3pCLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVU7WUFDcEMsZUFBZSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsZUFBZTtZQUM5QyxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXO1lBQ3RDLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVc7WUFDdEMsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztZQUN0QyxLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDN0QsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQztZQUM3QyxJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDekMsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdDLFFBQVEsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQztZQUNqRCxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO1NBQ3BCLENBQUM7SUFDN0IsQ0FBQztJQUVELGFBQWEsQ0FDVCxLQUFzQixFQUN0QixNQUEyQjtRQUUzQixNQUFNLElBQUksR0FBRyxLQUFLLEVBQUUsTUFBTSxJQUFJLEtBQUssRUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQztRQUMzRCxPQUFPO1lBQ0gsS0FBSyxFQUNELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEtBQUssUUFBUTtnQkFDbkMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztnQkFDckIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFDdEMsUUFBUSxFQUNKLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEtBQUssUUFBUTtnQkFDdEMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtnQkFDeEIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU87WUFDekMsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLENBQ1osQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNWLENBQUM7Z0JBQ0csRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUNaLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVE7Z0JBQy9CLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUs7Z0JBQ3pCLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7Z0JBQ3ZDLEtBQUssRUFDRCxJQUFJLEVBQUUsS0FBSztvQkFDWCxJQUFJLEVBQUUsTUFBTTt3QkFDUixFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7eUJBQ25DLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDZCxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7d0JBQ2QsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO3FCQUNmLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDZCxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVE7Z0JBQ3hCLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUTtnQkFDeEIsR0FBRyxFQUFFO29CQUNELEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNuRCxHQUFHLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUc7aUJBQ2xDO2dCQUNELGFBQWEsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDbkQsY0FBYyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNsRCxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxXQUFXO2dCQUNuQyxhQUFhLEVBQ1QsSUFBSSxFQUFFLEtBQUssRUFBRSxXQUFXO29CQUN4QixLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVc7Z0JBQzdCLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSTtnQkFDNUIsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLO2FBQ2pDLENBQTBCLENBQ2xDO1lBQ0QsY0FBYyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FDbkMsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDaEMsS0FBSyxDQUNSO1lBQ0QsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdDLElBQUksRUFBRTtnQkFDRixRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRztnQkFDckMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7YUFDbEM7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQy9DLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2FBQzVDO1lBQ0QsTUFBTSxFQUFFLE1BQU07U0FDSyxDQUFDO0lBQzVCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBc0I7UUFDekIsT0FBTztZQUNILFFBQVEsRUFDSixPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxLQUFLLFFBQVE7Z0JBQ3RDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7Z0JBQ3hCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPO1lBQ3pDLEtBQUssRUFDRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUFLLFFBQVE7Z0JBQ25DLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7Z0JBQ3JCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBQ3RDLElBQUksRUFBRTtnQkFDRixRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRztnQkFDckMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7YUFDbEM7WUFDRCxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVc7Z0JBQ3JCLENBQUMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQzFCLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FDVCxDQUFDO29CQUNHLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSztvQkFDaEIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXO2lCQUMvQixDQUFpQixDQUN6QjtnQkFDSCxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQ2IsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUNULENBQUM7b0JBQ0csS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO29CQUNoQixXQUFXLEVBQUUsR0FBRyxDQUFDLElBQUk7aUJBQ3hCLENBQWlCLENBQ3pCO1lBQ1AsR0FBRyxFQUFFLEtBQUssRUFBRSxXQUFXO2dCQUNuQixDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUNuQixLQUFLLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ3pDLEtBQUssRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUM5QyxLQUFLLENBQ1I7Z0JBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FDbkIsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQzVCLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQ2pDLEtBQUssQ0FDUjtTQUNLLENBQUM7SUFDckIsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFzQjtRQUNsQyxrRUFBa0U7UUFDbEUsTUFBTSxxQkFBcUIsR0FBRyxHQUFHLEVBQUU7WUFDL0IsTUFBTSxZQUFZLEdBQ2QsRUFBRSxDQUFDO1lBQ1AsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLO2dCQUFFLE9BQU87WUFDMUIsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ3RDLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNwRCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7b0JBQ2hELElBQUksS0FBSyxFQUFFO3dCQUNQLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDdkIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUV2QixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFOzRCQUN0QixZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUc7Z0NBQ2xCLEVBQUUsRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRTs2QkFDckMsQ0FBQzt5QkFDTDt3QkFDRCxNQUFNLEtBQUssR0FBRyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUNoQyxRQUFRLEtBQUssRUFBRTs0QkFDWCxLQUFLLE9BQU87Z0NBQ1IsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7Z0NBQ2pDLE1BQU07NEJBQ1YsS0FBSyxTQUFTO2dDQUNWLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dDQUNwQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztnQ0FDekMsTUFBTTs0QkFDVixLQUFLLEtBQUs7Z0NBQ04sWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7Z0NBQ2hDLE1BQU07NEJBQ1YsS0FBSyxNQUFNO2dDQUNOLFlBQVksQ0FBQyxLQUFLLENBQVMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO2dDQUMzQyxNQUFNOzRCQUNWLEtBQUssT0FBTztnQ0FDUCxZQUFZLENBQUMsS0FBSyxDQUFTLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztnQ0FDM0MsTUFBTTt5QkFDYjtxQkFDSjtpQkFDSjtZQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBeUIsQ0FBQztRQUMvRCxDQUFDLENBQUM7UUFDRixPQUFPO1lBQ0gsS0FBSyxFQUNELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEtBQUssUUFBUTtnQkFDbkMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztnQkFDckIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFDdEMsT0FBTyxFQUNILE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLEtBQUssUUFBUTtnQkFDMUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBWTtnQkFDNUIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE9BQU87WUFDN0MsT0FBTyxFQUNILE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEtBQUssUUFBUTtnQkFDeEMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVTtnQkFDMUIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU87WUFDM0MsT0FBTyxFQUNILE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhLEtBQUssUUFBUTtnQkFDM0MsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYTtnQkFDN0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsT0FBTztvQkFDckMsQ0FBQyxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsZUFBZSxLQUFLLFFBQVE7d0JBQzlDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLGVBQWU7d0JBQy9CLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUV4RCxVQUFVLEVBQ04sT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixLQUFLLFFBQVE7Z0JBQ25ELENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLHFCQUFxQjtnQkFDckMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUscUJBQXFCLEVBQUUsT0FBTztZQUN0RCxPQUFPLEVBQ0gsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixLQUFLLFFBQVE7Z0JBQ2hELENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLGtCQUFrQjtnQkFDbEMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsT0FBTztZQUNuRCxJQUFJLEVBQUU7Z0JBQ0YsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7Z0JBQy9CLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxHQUFHO2dCQUN4QyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBRztnQkFDdEMsT0FBTyxFQUNILEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEdBQUc7b0JBQ2hDLEtBQUssRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLEdBQUc7Z0JBQ3RDLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixFQUFFLEdBQUc7Z0JBQ3BELFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHO2dCQUN2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxHQUFHO2FBQ2pEO1lBQ0QsUUFBUSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7Z0JBQzlCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7Z0JBQ3hCLENBQUMsQ0FBQyxTQUFTO1lBQ2YsV0FBVyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6RCxZQUFZLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9ELFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVU7WUFDckMsV0FBVyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3RCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO2dCQUNsQyxDQUFDLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQ2QsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUNiLENBQUM7b0JBQ0csRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFO29CQUNkLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO29CQUN4QixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7b0JBQ2xCLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtvQkFDMUIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO29CQUN4QixFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUU7b0JBQ2QsR0FBRyxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNqQixZQUFZLEVBQUUsT0FBTyxDQUFDLFdBQVc7b0JBQ2pDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztpQkFDdkIsQ0FBdUIsQ0FDL0I7Z0JBQ0gsQ0FBQyxDQUFDLEVBQUU7WUFDUixhQUFhLEVBQ1QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDO2dCQUNuQyxLQUFLLEVBQUUsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUMzQixDQUFDLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxHQUFHLENBQ3BCLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FDYixDQUFDO29CQUNHLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRTtvQkFDZCxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7b0JBQ2xCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztvQkFDeEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7b0JBQzFCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztvQkFDeEIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFO29CQUNkLEdBQUcsRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDakIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO29CQUNwQixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7b0JBQ3BCLFlBQVksRUFBRSxPQUFPLENBQUMsV0FBVztvQkFDakMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO2lCQUN2QixDQUF1QixDQUMvQjtnQkFDSCxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUU7b0JBQ0YsTUFBTSxnQkFBZ0IsR0FBRyxxQkFBcUIsRUFBRSxDQUFDO29CQUNqRCxPQUFPLGdCQUFnQixJQUFJLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDO3dCQUNsRCxDQUFDLENBQUMsZ0JBQWdCO3dCQUNsQixDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUNwQixDQUFDLENBQUMsRUFBRTtZQUNkLFdBQVcsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEdBQUcsQ0FDaEMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNWLENBQUM7Z0JBQ0csSUFBSSxFQUFFLFdBQVcsSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRTtnQkFDM0MsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO2FBQ2hCLENBQW1CLENBQzNCO1lBQ0QsU0FBUyxFQUNMLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEtBQUssUUFBUTtnQkFDdkMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUztnQkFDekIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU87WUFDMUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUNoQixDQUFDLEdBQVEsRUFBRSxFQUFFLENBQ1QsQ0FBQztnQkFDRyxLQUFLLEVBQUUsR0FBRyxDQUFDLElBQUk7Z0JBQ2YsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHO2FBQ2YsQ0FBbUIsQ0FDM0I7WUFDRCxHQUFHLEVBQUU7Z0JBQ0QsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FDeEIsS0FBSyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDckM7Z0JBQ0QsR0FBRyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEtBQUs7YUFDNUM7WUFDRCxJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO1lBQ2xFLDhDQUE4QztZQUM5QyxLQUFLLEVBQUU7Z0JBQ0gsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVc7Z0JBQ3RDLEtBQUssRUFBRSxJQUFJO2dCQUNYLEtBQUssRUFBRSxFQUFFO2dCQUNULEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGNBQWM7YUFDdEM7WUFDRCxhQUFhLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhO1lBQzFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVU7WUFDckMsZUFBZSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQzdCLEtBQUssRUFBRSxLQUFLLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUMxQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQzdCLENBQ0o7U0FDb0IsQ0FBQztJQUM5QixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQXNCO1FBQzdCLE9BQU87WUFDSCxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFxQjtZQUM1RCxRQUFRLEVBQ0osT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsS0FBSyxRQUFRO2dCQUN0QyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO2dCQUN4QixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTztZQUN6QyxLQUFLLEVBQ0QsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssS0FBSyxRQUFRO2dCQUNuQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO2dCQUNyQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTztZQUN0QyxJQUFJLEVBQUU7Z0JBQ0YsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUc7Z0JBQ3JDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHO2FBQ2xDO1lBQ0QsUUFBUSxFQUFFO2dCQUNOLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVc7YUFDbkM7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsZ0JBQWdCO2FBQ3hDO1lBQ0QsY0FBYyxFQUNWLEtBQUssRUFBRSxLQUFLLEVBQUUsY0FBYyxJQUFJLEtBQUssRUFBRSxLQUFLLEVBQUUsY0FBYztZQUNoRSxjQUFjLEVBQ1YsS0FBSyxFQUFFLEtBQUssRUFBRSxrQkFBa0I7Z0JBQ2hDLEtBQUssRUFBRSxLQUFLLEVBQUUsa0JBQWtCO2dCQUNoQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVc7WUFDN0IsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUN4QixDQUFDLElBQVMsRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUN6QixDQUFDO2dCQUNHLEVBQUUsRUFBRSxLQUFLO2dCQUNULEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztnQkFDYixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7YUFDbEIsQ0FBeUIsQ0FDakM7WUFDRCxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU87Z0JBQ2xCLEVBQUUsTUFBTSxDQUNKLENBQ0ksR0FBaUQsRUFDakQsTUFBVyxFQUNYLFdBQW1CLEVBQ3JCLEVBQUU7Z0JBQ0EsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFO29CQUNuQixNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUM5QyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDWixHQUFHLElBQUk7d0JBQ1AsTUFBTSxFQUFFLFdBQVc7cUJBQ3RCLENBQUMsQ0FDTCxDQUFDO29CQUNGLE9BQU87d0JBQ0gsR0FBRyxHQUFHO3dCQUNOOzRCQUNJLFVBQVUsRUFBRSxvQkFBb0I7NEJBQ2hDLFdBQVc7eUJBQ2Q7cUJBQ0osQ0FBQztpQkFDTDtnQkFDRCxPQUFPLEdBQUcsQ0FBQztZQUNmLENBQUMsRUFDRCxFQUFFLENBQ0w7aUJBQ0EsT0FBTyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDO2lCQUM1QyxHQUFHLENBQ0EsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUNULENBQUM7Z0JBQ0csS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO2dCQUNoQixHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUM7Z0JBQ3hDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTTtnQkFDbkIsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO2FBQ3pCLENBQXVCLENBQy9CO1NBQ1csQ0FBQztJQUN6QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBc0I7UUFDbkMsT0FBTztZQUNILEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7WUFDMUIsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtZQUNoQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVM7WUFDdkIsUUFBUSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUM1QixDQUFDLEdBQVEsRUFBRSxFQUFFLENBQ1QsR0FBRyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLEVBQUUsQ0FDMUQ7WUFDRCxLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDMUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQXNCO1FBQzVCLE9BQU87WUFDSCxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVU7WUFDN0IsYUFBYSxFQUFFLEtBQUssRUFBRSxxQkFBcUI7WUFDM0MsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLGdCQUFnQjtZQUN6QyxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7WUFDN0QsY0FBYyxFQUFFO2dCQUNaLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGNBQWM7YUFDNUM7WUFDRCxXQUFXLEVBQUU7Z0JBQ1QsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsc0JBQXNCO2FBQ3BEO1lBQ0QsVUFBVSxFQUFFO2dCQUNSLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGdCQUFnQjthQUM5QztZQUNELE1BQU0sRUFBRTtnQkFDSixHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7Z0JBQ3hDLGNBQWMsRUFBRTtvQkFDWixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxnQkFBZ0I7b0JBQ3JDLE9BQU8sRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7aUJBQ3pEO2dCQUNELGVBQWUsRUFDWCxLQUFLLEVBQUUsU0FBUyxHQUFHLENBQUM7b0JBQ2hCLENBQUMsQ0FBQzt3QkFDSSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxnQkFBZ0I7d0JBQ3JDLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLHFCQUFxQjt3QkFDL0MsT0FBTyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FDN0IsS0FBSyxFQUFFLFNBQVMsQ0FDbkI7cUJBQ0o7b0JBQ0gsQ0FBQyxDQUFDLFNBQVM7Z0JBQ25CLFlBQVksRUFBRTtvQkFDVixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxjQUFjO29CQUNuQyxVQUFVLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxtQkFBbUI7b0JBQzdDLE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWTt3QkFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDO3dCQUMvQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxXQUFXLENBQUM7aUJBQ3JEO2dCQUNELGNBQWMsRUFDVixLQUFLLEVBQUUsU0FBUyxHQUFHLENBQUM7b0JBQ2hCLENBQUMsQ0FBQzt3QkFDSSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxnQkFBZ0I7d0JBQ3JDLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLHFCQUFxQjt3QkFDL0MsT0FBTyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FDN0IsS0FBSyxFQUFFLFNBQVMsQ0FDbkI7cUJBQ0o7b0JBQ0gsQ0FBQyxDQUFDLFNBQVM7Z0JBQ25CLGtCQUFrQixFQUFFO29CQUNoQixPQUFPLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxZQUFZLElBQUksQ0FBQyxDQUFDO2lCQUM5RDtnQkFDRCxZQUFZLEVBQUU7b0JBQ1YsT0FBTyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FDN0IsS0FBSyxFQUFFLGNBQWMsRUFDckIsQ0FBQyxLQUFLLEVBQUUsWUFBWSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FDakM7aUJBQ0o7Z0JBQ0QsWUFBWSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztnQkFDaEQsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsY0FBYztnQkFDdkMsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYTtnQkFDdEMsV0FBVyxFQUNQLEtBQUssRUFBRSxLQUFLLEVBQUUsY0FBYztvQkFDNUIsS0FBSyxFQUFFLEtBQUssRUFBRSxnQkFBZ0I7YUFDckM7WUFDRCxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVO1lBQy9CLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGFBQWE7WUFDckMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHO1lBQ2YsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDekIsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLG1CQUFtQjtZQUMzRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFDdkIsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsaUJBQWlCO1lBQzVDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsbUJBQW1CO1lBQ3BELE1BQU0sRUFBRTtnQkFDSixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3pDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSTtvQkFDakIsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNO29CQUNyQixHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUc7b0JBQ2YsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFO2lCQUNoQixDQUFDLENBQUM7YUFDTjtTQUNvQyxDQUFDO0lBQzlDLENBQUM7SUFDRCxlQUFlLENBQ1gsS0FBc0IsRUFDdEIsVUFBOEI7UUFFOUIsT0FBTztZQUNILFVBQVUsRUFBRSxVQUFVO1lBQ3RCLFFBQVEsRUFDSixPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxLQUFLLFFBQVE7Z0JBQ3RDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7Z0JBQ3hCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPO1lBQ3pDLEtBQUssRUFDRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUFLLFFBQVE7Z0JBQ25DLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7Z0JBQ3JCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBQ3RDLElBQUksRUFBRTtnQkFDRixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRztnQkFDL0IsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUc7YUFDeEM7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQ3pDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2FBQ2xEO1lBQ0QsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FDbkMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNWLENBQUM7Z0JBQ0csUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztnQkFDekMsSUFBSSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN4QyxPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO2FBQzNDLENBQXNCLENBQzlCO1NBQ29CLENBQUM7SUFDOUIsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFzQjtRQUNsQyxPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztZQUMxQixRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO1lBQ2hDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FDdEIsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNWLENBQUM7Z0JBQ0csUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVztnQkFDakMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSTtnQkFDdkIsR0FBRyxFQUFFO29CQUNELEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNsRCxHQUFHLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUc7aUJBQ2pDO2dCQUNELElBQUksRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ2xDLE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDekMsQ0FBc0IsQ0FDOUI7U0FDb0IsQ0FBQztJQUM5QixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQXNCO1FBQ2hDLG1DQUFtQztRQUNuQyxPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztZQUMxQixRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO1lBQ2hDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FDdEIsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNWLENBQUM7Z0JBQ0csUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVztnQkFDbEMsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSTtnQkFDeEIsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVztnQkFDOUIsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVztnQkFDbEMsR0FBRyxFQUFFO29CQUNELEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNuRCxHQUFHLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUc7aUJBQ2xDO2dCQUNELElBQUksRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7Z0JBQ25DLE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7Z0JBQ3ZDLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztnQkFDbEIsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztnQkFDakMsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsY0FBYztnQkFDdkMsUUFBUSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUM5QyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRSxRQUFRLElBQUksRUFBRSxLQUFLLEVBQUU7aUJBQzlCLENBQUMsQ0FBQztnQkFDSCxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxXQUFXO2dCQUNqQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxXQUFXO2FBQ3BDLENBQXNCLENBQzlCO1NBQ2tCLENBQUM7SUFDNUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFzQjtRQUM5QixPQUFPO1lBQ0gsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtZQUNoQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQzFCLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVc7WUFDL0IsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQzNCLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUM5QixLQUFLLENBQ1I7WUFDRCxNQUFNLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUMzQixLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFDOUIsS0FBSyxDQUNSO1lBQ0QsTUFBTSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FDM0IsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQzlCLEtBQUssQ0FDUjtZQUNELE1BQU0sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQzNCLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUM5QixLQUFLLENBQ1I7U0FDZ0IsQ0FBQztJQUMxQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBc0I7UUFDcEMsTUFBTSxNQUFNLEdBQUcsS0FBSyxFQUFFLGVBQWUsSUFBSSxLQUFLLEVBQUUsUUFBUSxDQUFDO1FBQ3pELE9BQU87WUFDSCxRQUFRLEVBQ0osT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsS0FBSyxRQUFRO2dCQUN0QyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO2dCQUN4QixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTztZQUN6QyxLQUFLLEVBQ0QsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssS0FBSyxRQUFRO2dCQUNuQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO2dCQUNyQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTztZQUN0QyxJQUFJLEVBQUU7Z0JBQ0YsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUc7Z0JBQ3JDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHO2FBQ2xDO1lBQ0QsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3BDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLO2dCQUM5QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsSUFBSSxFQUFFLFFBQVEsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO2FBQzFDLENBQUMsQ0FBQztTQUNvQixDQUFDO0lBQ2hDLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBc0I7UUFDaEMsTUFBTSxRQUFRLEdBQ1YsS0FBSyxFQUFFLFFBQVEsSUFBSSxLQUFLLEVBQUUsS0FBSyxJQUFJLEtBQUssRUFBRSxLQUFLLElBQUksS0FBSyxFQUFFLElBQUksQ0FBQztRQUNuRSxNQUFNLEdBQUcsR0FBRyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixJQUFJLEVBQUUsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3pCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNsQixDQUFDLENBQUMsQ0FBQztRQUNKLE9BQU87WUFDSCxLQUFLLEVBQ0QsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssS0FBSyxRQUFRO2dCQUNuQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO2dCQUNyQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTztZQUN0QyxVQUFVLEVBQUUsR0FBRztZQUNmLElBQUksRUFBRTtnQkFDRixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRzthQUNsQztZQUNELFVBQVUsRUFBRTtnQkFDUixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTthQUM1QztZQUNELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGlCQUFpQjtZQUN4QyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxpQkFBaUI7WUFDeEMsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FDMUIsS0FBSyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDdkMsS0FBSyxDQUNSO1NBQ2tCLENBQUM7SUFDNUIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFzQjtRQUM3QixPQUFPO1lBQ0gsUUFBUSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUTtZQUNwRCxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLO1lBQzlDLElBQUksRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVc7WUFDbkQsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQ3BCLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUM1QyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ04sR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FDeEIsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDaEMsS0FBSyxDQUNSO1lBQ0QsUUFBUSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FDN0IsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQ25DLEtBQUssQ0FDUjtTQUNlLENBQUM7SUFDekIsQ0FBQztJQUVELGVBQWUsQ0FDWCxLQUFzQixFQUN0QixVQUE4QjtRQUU5QixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQ1QsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLElBQUksS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ2xFLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FDVixLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sSUFBSSxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDdEUsT0FBTztZQUNILFVBQVUsRUFBRSxVQUFVO1lBQ3RCLEtBQUssRUFBRTtnQkFDSDtvQkFDSSxPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO29CQUN6QyxRQUFRLEVBQUUsU0FBUztvQkFDbkIsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO29CQUM1QyxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVE7b0JBQ3pCLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztvQkFDbkIsSUFBSSxFQUFFLEtBQUssRUFBRSxXQUFXO2lCQUMzQjtnQkFDRDtvQkFDSSxPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDO29CQUMxQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7b0JBQzdDLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUTtvQkFDMUIsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLO29CQUNwQixJQUFJLEVBQUUsTUFBTSxFQUFFLFdBQVc7b0JBQ3pCLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDM0MsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO3dCQUNqQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7d0JBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFO3FCQUM3QyxDQUFDLENBQUM7aUJBQ047YUFDeUI7U0FDVCxDQUFDO0lBQzlCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFzQjtRQUNuQyxPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztZQUMxQixJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJO1lBQ3hCLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGVBQWU7WUFDdkMsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdDLEdBQUcsRUFBRTtnQkFDRCxHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUN4QixLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDNUIsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDcEM7Z0JBQ0QsR0FBRyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRzthQUM3QztZQUNELFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDN0MsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsSUFBSSxFQUFFLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRTthQUM1QixDQUFDLENBQUM7WUFDSCxLQUFLLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hELE9BQU8sRUFBRTtnQkFDTCxRQUFRLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxRQUFRO2dCQUN2QyxJQUFJLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJO2dCQUMvQixRQUFRLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxRQUFRO2dCQUN2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPO2dCQUNyQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxFQUFFO2dCQUMzQixPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPO2dCQUNyQyxHQUFHLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxHQUFHO2dCQUM3QixHQUFHLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxHQUFHO2dCQUM3QixLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLO2dCQUNqQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLO2FBQ3BDO1NBQ3FCLENBQUM7SUFDL0IsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFzQjtRQUNqQyxPQUFPO1lBQ0gsUUFBUSxFQUNKLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEtBQUssUUFBUTtnQkFDdEMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtnQkFDeEIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU87WUFDekMsS0FBSyxFQUNELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEtBQUssUUFBUTtnQkFDbkMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztnQkFDckIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFDdEMsSUFBSSxFQUFFO2dCQUNGLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHO2dCQUNyQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRzthQUNsQztZQUNELElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVc7WUFDL0IsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVTtZQUNuQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBQzdCLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGFBQWE7WUFDbEMsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdDLE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5QyxHQUFHLEVBQUU7Z0JBQ0QsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FDeEIsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQzVCLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ3BDO2dCQUNELEdBQUcsRUFDQyxLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUc7b0JBQ3JDLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRzthQUN4QztZQUNELFFBQVEsRUFBRTtnQkFDTixHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUN4QixLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDOUIsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDdEM7Z0JBQ0QsR0FBRyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRzthQUMvQztTQUNtQixDQUFDO0lBQzdCLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBc0I7UUFDakMsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXLElBQUksS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUM7UUFFcEUsT0FBTztZQUNILEtBQUssRUFBRTtnQkFDSCxHQUFHLEtBQUssRUFBRSxLQUFLO2dCQUNmLFdBQVcsRUFBRSxXQUFXO2FBQzNCO1lBQ0QsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztZQUN6QyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRCxHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7Z0JBQ3pDLElBQUksRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUMzQyxDQUFDLENBQUM7U0FDaUIsQ0FBQztJQUM3QixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQXNCO1FBQ2pDLE9BQU87WUFDSCxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTO1lBQ2xDLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUk7WUFDeEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztTQUNyQixDQUFDO0lBQzdCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFzQjtRQUNuQyxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUNuRCxDQUFDLElBQVMsRUFBRSxFQUFFLENBQ1YsSUFBSSxLQUFLLElBQUk7WUFDYixJQUFJLEtBQUssU0FBUztZQUNsQixJQUFJLENBQUMsR0FBRyxLQUFLLEVBQUU7WUFDZixJQUFJLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FDdkIsQ0FBQztRQUNGLE9BQU87WUFDSCxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQzFCLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUk7WUFDeEIsS0FBSyxFQUFFLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3JDLElBQUksRUFBRSxXQUFXLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUU7Z0JBQzNDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztnQkFDYixLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUk7YUFDbkIsQ0FBQyxDQUFDO1NBQ2tCLENBQUM7SUFDOUIsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFzQjtRQUNsQyxPQUFPO1lBQ0gsUUFBUSxFQUNKLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEtBQUssUUFBUTtnQkFDdEMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtnQkFDeEIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU87WUFDekMsS0FBSyxFQUNELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEtBQUssUUFBUTtnQkFDbkMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztnQkFDckIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFDdEMsSUFBSSxFQUFFO2dCQUNGLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHO2dCQUNyQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRzthQUNsQztZQUNELElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUk7WUFDeEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNO2dCQUNmLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDL0IsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJO29CQUNwQixLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJO29CQUN4QixHQUFHLEVBQUU7d0JBQ0QsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ25ELEdBQUcsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRztxQkFDbEM7b0JBQ0QsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztvQkFDeEMsUUFBUSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUM5QyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7d0JBQ2YsSUFBSSxFQUFFLFFBQVEsSUFBSSxDQUFDLEtBQUssRUFBRTtxQkFDN0IsQ0FBQyxDQUFDO2lCQUNOLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQzlCLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVc7b0JBQ2xDLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUk7b0JBQ3hCLEdBQUcsRUFBRTt3QkFDRCxHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDbkQsR0FBRyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHO3FCQUNsQztvQkFDRCxRQUFRO29CQUNSLE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7b0JBQ3hDLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDMUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO3dCQUNmLElBQUksRUFBRSxRQUFRLElBQUksQ0FBQyxLQUFLLEVBQUU7cUJBQzdCLENBQUMsQ0FBQztpQkFDTixDQUFDLENBQUM7U0FDWSxDQUFDO0lBQzlCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFzQjtRQUNwQyxPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztZQUMxQixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZO1lBQ25DLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVU7WUFDakMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYTtZQUNwQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO1lBQ2hDLE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVM7WUFDaEUsV0FBVyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6RCxZQUFZLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9ELFdBQVcsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0QsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztnQkFDbEMsQ0FBQyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUNkLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FDYixDQUFDO29CQUNHLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRTtvQkFDZixJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUk7b0JBQ25CLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTztvQkFDekIsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJO29CQUNuQixRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVE7b0JBQzNCLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTztvQkFDekIsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFO2lCQUNsQixDQUF1QixDQUMvQjtnQkFDSCxDQUFDLENBQUMsRUFBRTtZQUNSLFdBQVcsRUFBRTtnQkFDVDtvQkFDSSxHQUFHLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUc7b0JBQ2pDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGNBQWM7aUJBQ3BCO2FBQ3RCO1lBQ0QsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUztZQUNsQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQ2hCLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FDVCxDQUFDO2dCQUNHLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSTtnQkFDaEIsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO2FBQ2hCLENBQW1CLENBQzNCO1lBQ0QsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FDeEIsS0FBSyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDakMsS0FBSyxDQUNSO1NBQ3NCLENBQUM7SUFDaEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFzQjtRQUM5QixNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsS0FBSyxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFDN0MsT0FBTztZQUNILE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM3QyxNQUFNLEVBQUU7Z0JBQ0osUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtnQkFDaEMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSzthQUM3QjtZQUNELEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUNoQixDQUFDLElBQW1CLEVBQUUsRUFBRSxDQUNwQixDQUFDO2dCQUNHLE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7Z0JBQ3ZDLEtBQUssRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7Z0JBQ3BDLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDO2dCQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDdkIsUUFBUSxFQUFFLEVBQUUsRUFBRSxpQkFBaUI7YUFDbEMsQ0FBcUIsQ0FDN0I7U0FDZ0IsQ0FBQztJQUMxQixDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBc0I7UUFDckMsT0FBTztZQUNILFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVU7WUFDcEMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztZQUMxQixRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO1lBQ2hDLE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM3QyxLQUFLLEVBQUU7Z0JBQ0gsSUFBSSxFQUFFLE1BQU07Z0JBQ1osV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztnQkFDdEMsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsY0FBYzthQUNyQjtZQUNsQixHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUN4QixLQUFLLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUN2QyxLQUFLLENBQ1I7U0FDa0IsQ0FBQztJQUM1QixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQXNCO1FBQ2pDLE9BQU87WUFDSCxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQzFCLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7WUFDaEMsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztZQUN0QyxPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FDckIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQ3hEO1lBQ0QsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FDMUIsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDaEMsS0FBSyxDQUNSO1lBQ0QsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTTtZQUM1QixrRUFBa0U7U0FDOUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBc0I7UUFDbkMsSUFBSSxTQUFTLENBQUM7UUFDZCxJQUFJLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMzQixNQUFNLEtBQUssR0FBRyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakMsU0FBUyxHQUFHO2dCQUNSLEtBQUssRUFBRTtvQkFDSCxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO29CQUMxQixRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO29CQUNoQyxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXO29CQUN0QyxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXO29CQUN0QyxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXO29CQUN0QyxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXO29CQUN0QyxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXO2lCQUN6QztnQkFDRCxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzdDLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQzFCLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxHQUFHLENBQUM7b0JBQ3pCLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO3dCQUM3QyxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzdCLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQ25CLEtBQUssRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDbEQsS0FBSyxDQUNSO2dCQUNELFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUTtnQkFDekIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO2dCQUNuQixRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVE7YUFDSixDQUFDO1NBQzdCO1FBQ0QsT0FBTyxTQUFTLElBQUksU0FBUyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxZQUFZLENBQ1IsS0FBc0IsRUFDdEIsU0FBMEI7UUFFMUIsSUFBSSxlQUFlLEdBQUc7WUFDbEIsV0FBVyxFQUFFLEVBQUU7WUFDZixXQUFXLEVBQUUsRUFBRTtZQUNmLFdBQVcsRUFBRSxFQUFFO1NBQ2xCLENBQUM7UUFDRixJQUFJLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDYixlQUFlLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUM7WUFDbEUsZUFBZSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDO1lBQ2xFLGVBQWUsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxJQUFJLEVBQUUsQ0FBQztTQUNyRTtRQUNELE9BQU87WUFDSCxRQUFRLEVBQUUsZUFBZSxDQUFDLFdBQVcsQ0FBQyxNQUFNO2dCQUN4QyxDQUFDLENBQUMsZUFBZSxDQUFDLFdBQVc7Z0JBQzdCLENBQUMsQ0FBQyxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxLQUFLLFFBQVE7b0JBQzFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7b0JBQ3hCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPO1lBQ3ZDLEtBQUssRUFBRSxlQUFlLENBQUMsV0FBVyxDQUFDLE1BQU07Z0JBQ3JDLENBQUMsQ0FBQyxlQUFlLENBQUMsV0FBVztnQkFDN0IsQ0FBQyxDQUFDLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEtBQUssUUFBUTtvQkFDdkMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztvQkFDckIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFDcEMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxXQUFXLENBQUMsTUFBTTtnQkFDcEMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxXQUFXO2dCQUM3QixDQUFDLENBQUMsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksS0FBSyxRQUFRO29CQUN0QyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJO29CQUNwQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTztZQUNuQyxPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FDckIsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQ3pEO1lBQ0QsSUFBSSxFQUFFO2dCQUNGLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHO2dCQUNyQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRztnQkFDL0IsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUc7YUFDaEM7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsUUFBUSxFQUNKLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7b0JBQ3JDLFNBQVMsRUFBRSxTQUFTO2dCQUN4QixLQUFLLEVBQ0QsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLFNBQVMsRUFBRSxTQUFTO2dCQUM5RCxlQUFlLEVBQ1gsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtvQkFDdkMsU0FBUyxFQUFFLFNBQVM7Z0JBQ3hCLGdCQUFnQixFQUNaLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7b0JBQzFDLFNBQVMsRUFBRSxTQUFTO2FBQzNCO1lBQ0QsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVO1NBQ2YsQ0FBQztJQUMzQixDQUFDO0lBRUQsaUJBQWlCLENBQ2IsS0FBc0I7UUFFdEIsT0FBTztZQUNILE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVM7WUFDL0IsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxJQUFJLGFBQWE7U0FDNUIsQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQXNCO1FBQzVCLE9BQU87WUFDSCxRQUFRLEVBQ0osS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO2dCQUN0QixLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU07Z0JBQ3BCLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRztnQkFDakIsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTO1NBQ1osQ0FBQztJQUN4QixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXNCO1FBQzlCLElBQUksS0FBSyxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNoRCxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDWixLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQ3pCLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVE7WUFDL0IsV0FBVyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVztZQUNyQyxXQUFXLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxXQUFXO1lBQ3JDLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztZQUMxRCxPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO1lBQ3hDLE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM3QyxRQUFRLEVBQ0osT0FBTyxJQUFJLEVBQUUsUUFBUSxLQUFLLFFBQVE7Z0JBQzlCLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFDZixDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLGVBQWU7b0JBQ2hDLElBQUksRUFBRSxRQUFRLEVBQUUsY0FBYztvQkFDOUIsU0FBUyxDQUFDO1lBQ3BCLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDbEQsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNO1NBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBRUosS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsQ0FBTSxFQUFFLEVBQUU7WUFDbEMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJO2dCQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsa0JBQWtCO1lBQ2hFLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO2dCQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0I7WUFDeEQsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUk7Z0JBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxzQkFBc0I7WUFDdkQsT0FBTyxDQUFDLENBQUMsQ0FBQyxzQkFBc0I7UUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxvQ0FBb0M7UUFDcEMsS0FBSztZQUNELEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUF5QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUN6RCxLQUFLO2dCQUNMLEVBQUUsQ0FBQztRQUVQLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFVLEVBQVMsRUFBRTtZQUMzQyxJQUFJLENBQUMsS0FBSztnQkFBRSxPQUFPLEVBQUUsQ0FBQztZQUN0QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBQ3ZDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtnQkFBRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0QsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDLENBQUM7UUFFRixNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDaEUsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFdkMsT0FBTztZQUNILFFBQVEsRUFDSixPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxLQUFLLFFBQVE7Z0JBQ3RDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7Z0JBQ3hCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPO1lBQ3pDLEtBQUssRUFDRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUFLLFFBQVE7Z0JBQ25DLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7Z0JBQ3JCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBQ3RDLElBQUksRUFBRTtnQkFDRixRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRztnQkFDckMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7Z0JBQy9CLGVBQWUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxHQUFHO2dCQUM5QyxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxHQUFHO2FBQ3JEO1lBQ0QsVUFBVSxFQUFFO2dCQUNSLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dCQUMvQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDekMsZUFBZSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQ3hELGdCQUFnQixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7YUFDL0Q7WUFDRCxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGlCQUFpQjtZQUNsRCxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxjQUFjO1lBQzFDLEtBQUssRUFBRSxLQUFLO1lBQ1osZUFBZSxFQUNYLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEtBQUssUUFBUTtnQkFDeEMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVTtnQkFDMUIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU87WUFDM0MsVUFBVSxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2hELEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRTtnQkFDaEIsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJO2dCQUNyQixLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsSUFBSSxRQUFRLEVBQUUsV0FBVyxJQUFJLENBQUM7YUFDNUQsQ0FBQyxDQUFDO1lBQ0gsZ0JBQWdCLEVBQ1osT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLGFBQWEsS0FBSyxRQUFRO2dCQUMzQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhO2dCQUM3QixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsT0FBTztZQUM5QyxXQUFXLEVBQUUsV0FBVztZQUN4QixRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO1lBQ2hDLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVM7U0FDckMsQ0FBQztJQUNOLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBc0I7UUFDaEMsTUFBTSxhQUFhLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7UUFDdEMsTUFBTSxLQUFLLEdBQUcsS0FBSyxFQUFFLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkQsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ1osS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSztZQUN6QixRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRO1lBQy9CLFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVc7WUFDckMsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FDeEIsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDL0IsS0FBSyxDQUNSO1lBQ0QsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztZQUN4QyxPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0MsUUFBUSxFQUNKLE9BQU8sSUFBSSxFQUFFLFFBQVEsS0FBSyxRQUFRO2dCQUM5QixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVE7Z0JBQ2YsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxlQUFlO29CQUNoQyxJQUFJLEVBQUUsUUFBUSxFQUFFLGNBQWM7b0JBQzlCLFNBQVMsQ0FBQztZQUNwQixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQ3JELENBQUMsQ0FBQyxDQUFDO1FBRUosTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUNuQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxhQUFhLENBQ3RDLENBQUM7UUFFRixJQUFJLGlCQUFpQixHQUNqQixVQUFVO2FBQ0wsTUFBTSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDO2FBQzNCLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUUsRUFBRSxDQUFFLENBQUMsQ0FBQyxJQUFZLEdBQUksQ0FBQyxDQUFDLElBQVksQ0FBQzthQUMzRCxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDOUIsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDNUQsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUN4QyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQ3JELENBQUM7U0FDTDtRQUVELE9BQU87WUFDSCxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSztZQUNoQyxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUTtZQUN0QyxXQUFXLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVztZQUM1QyxXQUFXLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVztZQUM1QyxXQUFXLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVztZQUM1QyxXQUFXLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVztZQUM1QyxXQUFXLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVztZQUM1QyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDakUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUTtZQUMvQixJQUFJLEVBQUU7Z0JBQ0YsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUc7Z0JBQ3JDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHO2dCQUMvQixlQUFlLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBRztnQkFDOUMsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsR0FBRzthQUNyRDtZQUNELFVBQVUsRUFBRTtnQkFDUixRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDL0MsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQ3pDLGVBQWUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dCQUN4RCxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2FBQy9EO1lBQ0QsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxpQkFBaUI7WUFDbEQsZUFBZSxFQUNYLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEtBQUssUUFBUTtnQkFDeEMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVTtnQkFDMUIsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU87WUFDM0MsVUFBVSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQztnQkFDNUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUMzQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUU7b0JBQ2hCLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSTtvQkFDckIsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVO2lCQUM5QixDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLEVBQUU7WUFDUixpQkFBaUIsRUFDYixPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYSxLQUFLLFFBQVE7Z0JBQzNDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLGFBQWE7Z0JBQzdCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxPQUFPO1lBQzlDLFlBQVksRUFBRSxpQkFBaUI7WUFDL0IsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7WUFDMUIsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FDeEIsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQ3RDLEtBQUssQ0FDUjtZQUNELFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsSUFBSSxLQUFLO1lBQzNDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sSUFBSSxLQUFLO1NBQ2pCLENBQUM7SUFDN0IsQ0FBQztJQUVELHNCQUFzQixDQUNsQixLQUFzQjtRQUV0QixPQUFPO1lBQ0gsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FDekIsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDaEMsS0FBSyxDQUNSO1lBQ0QsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtZQUNoQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQzFCLE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUNyQixLQUFLLEVBQUUsS0FBSztnQkFDUixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQ2hCLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsU0FBUyxLQUFLLElBQUksQ0FDeEM7Z0JBQ0gsQ0FBQyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUNsQixDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLFNBQVMsS0FBSyxJQUFJLENBQ3hDLENBQ1Y7U0FDMkIsQ0FBQztJQUNyQyxDQUFDO0lBQ0QsY0FBYyxDQUFDLEtBQXNCO1FBQ2pDLElBQUksU0FBUyxDQUFDO1FBQ2QsSUFBSSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDM0IsTUFBTSxLQUFLLEdBQUcsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLFNBQVMsR0FBRztnQkFDUixLQUFLLEVBQUU7b0JBQ0gsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztvQkFDMUIsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtvQkFDaEMsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztvQkFDdEMsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztvQkFDdEMsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztvQkFDdEMsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztvQkFDdEMsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztpQkFDekM7Z0JBQ0QsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM3QyxLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUMxQixLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sR0FBRyxDQUFDO29CQUN6QixDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQzt3QkFDN0MsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM3QixDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUNuQixLQUFLLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2xELEtBQUssQ0FDUjtnQkFDRCxpQkFBaUIsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUMvQixLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FDbEIsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxTQUFTLElBQUksR0FBRyxFQUFFLFVBQVUsQ0FDbEQsQ0FDSjthQUNrQixDQUFDO1NBQzNCO1FBQ0QsT0FBTyxTQUFTLElBQUksU0FBUyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBc0I7UUFDaEMsT0FBTztZQUNILEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7WUFDMUIsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtZQUNoQyxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXO1lBQ3RDLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3hELEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSztnQkFDcEIsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRO2dCQUN2QixLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUs7Z0JBQ3BCLFdBQVcsRUFBRSxNQUFNLEVBQUUsV0FBVztnQkFDaEMsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO2FBQ2hELENBQUMsQ0FBQztZQUNILEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQzFCLEtBQUssRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQ2xDLEtBQUssQ0FDUjtTQUNrQixDQUFDO0lBQzVCLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBc0I7UUFDL0IsT0FBTztZQUNILEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7WUFDMUIsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVztZQUN0QyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNwRCxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUs7Z0JBQ2xCLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUTtnQkFDeEIsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO2dCQUMzQyxJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDM0MsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztTQUN2QixDQUFDO0lBQzNCLENBQUM7SUFFRCxlQUFlLENBQ1gsS0FBc0IsRUFDdEIsVUFBOEI7UUFFOUIsT0FBTztZQUNILEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQzFCLEtBQUssRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDekMsS0FBSyxDQUNSO1lBQ0QsTUFBTSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FDM0IsS0FBSyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUMxQyxLQUFLLENBQ1I7WUFDRCxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0MsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztZQUMxQixLQUFLLEVBQ0QsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTztnQkFDNUIsQ0FBQyxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxJQUFJLFFBQVE7b0JBQ25DLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7b0JBQ3JCLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDcEIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztZQUMxQixVQUFVLEVBQUUsVUFBVTtZQUN0QixJQUFJLEVBQUU7Z0JBQ0YsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7YUFDbEM7U0FDb0IsQ0FBQztJQUM5QixDQUFDO0lBQ0Qsb0JBQW9CLENBQ2hCLEtBQXNCO1FBRXRCLElBQUksTUFBTSxHQUEyQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxLQUFLLEVBQUUsSUFBSSxDQUFDO1FBQ2hCLE1BQU0sU0FBUyxHQUFHLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDO1FBQzFDLE1BQU0sVUFBVSxHQUFHLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDO1FBQzVDLElBQUksS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUU7WUFDN0IsTUFBTSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FDakMsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQzNCLEtBQUssQ0FDUixDQUFDO1lBQ0YsS0FBSyxHQUFHO2dCQUNKLFFBQVEsRUFDSixLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPO29CQUMvQixDQUFDLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLElBQUksUUFBUTt3QkFDdEMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTt3QkFDeEIsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDcEIsS0FBSyxFQUNELEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU87b0JBQzVCLENBQUMsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssSUFBSSxRQUFRO3dCQUNuQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO3dCQUNyQixDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUNwQixZQUFZLEVBQ1IsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsT0FBTztvQkFDbkMsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZO2dCQUM5QixlQUFlLEVBQ1gsS0FBSyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsT0FBTztvQkFDdEMsS0FBSyxFQUFFLEtBQUssRUFBRSxlQUFlO2dCQUNqQyxrQkFBa0IsRUFDZCxLQUFLLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLE9BQU87b0JBQ3pDLEtBQUssRUFBRSxLQUFLLEVBQUUsa0JBQWtCO2dCQUNwQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUN6QixLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUM1QixLQUFLLENBQ1I7Z0JBQ0QsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUMxQixDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsSUFBSSxDQUMzQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDbkIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO29CQUNqQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7b0JBQ2YsSUFBSSxFQUFFLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRTtpQkFDNUIsQ0FBQyxDQUFDO2dCQUNILFNBQVMsRUFDTCxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPLElBQUksS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTO2dCQUMvRCxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRO2dCQUNoQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTO2dCQUNsQyxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXO2FBQ3pDLENBQUM7WUFDRixJQUFJLEdBQUc7Z0JBQ0gsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUc7Z0JBQ3JDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHO2dCQUMvQixZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsR0FBRztnQkFDN0MsZUFBZSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLEdBQUc7Z0JBQ25ELGtCQUFrQixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsR0FBRztnQkFDekQsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUc7YUFDMUMsQ0FBQztTQUNMO1FBQ0QsT0FBTztZQUNILE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUNyQixLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FDeEQ7WUFDRCxLQUFLO1lBQ0wsTUFBTTtZQUNOLElBQUk7WUFDSixTQUFTO1lBQ1QsVUFBVTtTQUNnQixDQUFDO0lBQ25DLENBQUM7SUFDRCxVQUFVLENBQUMsS0FBc0I7UUFDN0IsT0FBTztZQUNILEtBQUssRUFDRCxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPO2dCQUM1QixDQUFDLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLElBQUksUUFBUTtvQkFDbkMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztvQkFDckIsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNwQixJQUFJLEVBQUU7Z0JBQ0YsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7YUFDbEM7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7YUFDNUM7WUFFRCxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3RDLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVc7Z0JBQ2xDLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUk7Z0JBQ3hCLEdBQUcsRUFBRTtvQkFDRCxHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDbkQsR0FBRyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHO2lCQUNsQztnQkFDRCxJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO2FBQ3RDLENBQUMsQ0FBQztTQUNhLENBQUM7SUFDekIsQ0FBQztJQUNELGNBQWMsQ0FBQyxLQUFzQjtRQUNqQyxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBQ0QsVUFBVSxDQUFDLEtBQXNCO1FBQzdCLE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQztRQUM1QyxJQUFJLEtBQUssR0FBeUIsRUFBRSxDQUFDO1FBQ3JDLElBQUksTUFBTSxFQUFFO1lBQ1IsS0FBSyxHQUFHLE1BQU0sRUFBRSxHQUFHLENBQ2YsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNWLENBQUM7Z0JBQ0csS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSTtnQkFDeEIsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxJQUFJLElBQUk7Z0JBQ3hDLFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVc7Z0JBQ3JDLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQzFCLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FDbEMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQ1gsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUNULEdBQUcsS0FBSyxjQUFjO29CQUN0QixHQUFHLEVBQUUsSUFBSSxLQUFLLGNBQWMsQ0FDbkMsQ0FDSixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQ04sS0FBSyxDQUNSO2dCQUNELFFBQVEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQzdCLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FDbEMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQ1gsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUNULEdBQUcsS0FBSyxZQUFZO29CQUNwQixHQUFHLEVBQUUsSUFBSSxLQUFLLFlBQVksQ0FDakMsQ0FDSixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQ04sS0FBSyxDQUNSO2FBQ0osQ0FBdUIsQ0FDL0IsQ0FBQztTQUNMO2FBQU0sSUFBSSxVQUFVLEVBQUU7WUFDbkIsS0FBSyxHQUFHLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUM3QixDQUFDLEdBQWtCLEVBQUUsRUFBRSxDQUNuQixDQUFDO2dCQUNHLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSztnQkFDakIsV0FBVyxFQUFFLEdBQUcsRUFBRSxXQUFXO2dCQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUM7Z0JBQzFDLFFBQVEsRUFBRSxTQUFTO2FBQ3RCLENBQXVCLENBQy9CLENBQUM7U0FDTDtRQUNELE9BQU87WUFDSCxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFxQjtZQUM1RCxRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUM3QixLQUFLLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUMzQixLQUFLLENBQ1I7WUFDRCxhQUFhLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUNsQyxLQUFLLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUN2QyxLQUFLLENBQ1I7WUFDRCxLQUFLO1lBQ0wsSUFBSSxFQUFFO2dCQUNGLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUc7Z0JBQzlCLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7YUFDM0I7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDeEMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTthQUNyQztTQUNlLENBQUM7SUFDekIsQ0FBQztJQUNELFVBQVUsQ0FBQyxLQUFzQjtRQUM3QixJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDekMsSUFBSSxLQUFLLEdBQTZCLEVBQUUsQ0FBQztRQUN6QyxJQUFJLEtBQUssRUFBRTtZQUNQLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDeEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxFQUFFLEtBQUssQ0FBQztnQkFDekIsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO29CQUM3QyxLQUFLLENBQUMsSUFBSSxDQUFDO3dCQUNQLElBQUksRUFBRSxJQUFJO3dCQUNWLEtBQUssRUFBRTs0QkFDSDtnQ0FDSSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVE7Z0NBQ3JCLFdBQVcsRUFBRSxJQUFJLEVBQUUsV0FBVzs2QkFDakM7eUJBQ0o7cUJBQ0osQ0FBQyxDQUFDO2lCQUNOO3FCQUFNLElBQUksSUFBSSxFQUFFO29CQUNiLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7b0JBQ3hELElBQUksWUFBWSxFQUFFO3dCQUNkLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDOzRCQUNwQixLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVE7NEJBQ3JCLFdBQVcsRUFBRSxJQUFJLEVBQUUsV0FBVzt5QkFDakMsQ0FBQyxDQUFDO3FCQUNOO2lCQUNKO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUNELEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN2RCxPQUFPO1lBQ0gsS0FBSyxFQUNELEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU87Z0JBQzVCLENBQUMsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssSUFBSSxRQUFRO29CQUNuQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO29CQUNyQixDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3BCLFFBQVEsRUFDSixLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPO2dCQUMvQixDQUFDLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLElBQUksUUFBUTtvQkFDdEMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUTtvQkFDeEIsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNwQixRQUFRLEVBQ0osS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTztnQkFDL0IsQ0FBQyxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxJQUFJLFFBQVE7b0JBQ3RDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7b0JBQ3hCLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDcEIsSUFBSSxFQUFFO2dCQUNGLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUc7Z0JBQzlCLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUc7Z0JBQ3hCLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUc7YUFDakM7WUFDRCxVQUFVLEVBQUU7Z0JBQ1IsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDeEMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDbEMsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTthQUMzQztZQUNELGVBQWUsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQ3BDLEtBQUssRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQ3ZDLEtBQUssQ0FDUjtZQUNELEtBQUs7U0FDVyxDQUFDO0lBQ3pCLENBQUM7K0dBbHRMUSxhQUFhO21IQUFiLGFBQWEsY0FGVixNQUFNOzs0RkFFVCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgY29tcHV0ZWQsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdGFibGUsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgU2lnbmFsLFxuICAgIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBCYWJ5bG9uNDA0SSxcbiAgICBCYWJ5bG9uQWN0aW9uQmFubmVySSxcbiAgICBCYWJ5bG9uQWRkcmVzc0l0ZW0sXG4gICAgQmFieWxvbkFkdmFudGFnZXNJLFxuICAgIEJhYnlsb25CYW5uZXJHYWxsZXJ5SSxcbiAgICBCYWJ5bG9uQmFubmVySW5mb0ksXG4gICAgQmFieWxvbkJhbm5lck5ld3NsZXR0ZXJJLFxuICAgIEJhYnlsb25CbG9nRGV0YWlsc0ksXG4gICAgQmFieWxvbkJsb2dMaXN0SSxcbiAgICBCYWJ5bG9uQnJlYWRjcnVtYkksXG4gICAgQmFieWxvbkNvbWluZ1Nvb25JLFxuICAgIEJhYnlsb25Db250YWN0QWRkcmVzc0ksXG4gICAgQmFieWxvbkNvbnRhY3RGb3JtSSxcbiAgICBCYWJ5bG9uQ29udGFjdEhvd0ksXG4gICAgQmFieWxvbkNvbnRhY3RNYXBhSSxcbiAgICBCYWJ5bG9uQ29udGFjdE1hcEl0ZW0sXG4gICAgQmFieWxvbkVuZ2luZUksXG4gICAgQmFieWxvbkVuZ2luZU1vZGFsSSxcbiAgICBCYWJ5bG9uRXF1aXBtZW50SXRlbSxcbiAgICBCYWJ5bG9uRXh0ZXJuYWxTY3JpcHRJLFxuICAgIEJhYnlsb25GYXFJLFxuICAgIEJhYnlsb25GZWF0dXJlc1NsaWRlckksXG4gICAgQmFieWxvbkZlYXR1cmVzU2xpZGVySXRlbSxcbiAgICBCYWJ5bG9uRm9vdGVyQ29udGFjdEksXG4gICAgQmFieWxvbkZvb3RlckxpbmtzSSxcbiAgICBCYWJ5bG9uRm9vdGVyTG9nb3NJLFxuICAgIEJhYnlsb25Gb290ZXJTb2NpYWxJLFxuICAgIEJhYnlsb25HYWxsZXJ5RmlsdGVyLFxuICAgIEJhYnlsb25HYWxsZXJ5SSxcbiAgICBCYWJ5bG9uR2FsbGVyeUl0ZW0sXG4gICAgQmFieWxvbkdyQzJJbWdJLFxuICAgIEJhYnlsb25IZWFkZXJCb29rU2hvd0ksXG4gICAgQmFieWxvbkhlYWRlckNsZWFySSxcbiAgICBCYWJ5bG9uSGVhZGVyTWVudUNlbnRlckksXG4gICAgQmFieWxvbkhlYWRlck1lbnVMb2dvQ2VudGVySSxcbiAgICBCYWJ5bG9uSGVhZGVyTWVudVNob3dJLFxuICAgIEJhYnlsb25IZWFkSW50cm9JLFxuICAgIEJhYnlsb25IaXN0b3J5SSxcbiAgICBCYWJ5bG9uSGlzdG9yeVllYXJJdGVtLFxuICAgIEJhYnlsb25Ib3RlbHNMaXN0SSxcbiAgICBCYWJ5bG9uSG90ZWxzU2xpZGVySSxcbiAgICBCYWJ5bG9uSWZyYW1lSSxcbiAgICBCYWJ5bG9uSW5mbzJDb2xJbWdJLFxuICAgIEJhYnlsb25JbmZvMmltZ0JpZ0ksXG4gICAgQmFieWxvbkluZm8yaW1nSSxcbiAgICBCYWJ5bG9uSW5mbzRpbWdJLFxuICAgIEJhYnlsb25JbmZvQmlnSSxcbiAgICBCYWJ5bG9uSW5mb0dyaWRJLFxuICAgIEJhYnlsb25JbmZvR3JpZEl0ZW1JLFxuICAgIEJhYnlsb25JbmZvSW1nSSxcbiAgICBCYWJ5bG9uSW5mb0ltZ1NsaWRlckksXG4gICAgQmFieWxvbkluZm9JbWdTbGlkZXJJdGVtSSxcbiAgICBCYWJ5bG9uSW5mb0ludHJvSSxcbiAgICBCYWJ5bG9uSW5mb1ppZ1phZ0NvdW50ZXJJLFxuICAgIEJhYnlsb25JbmZvWmlnemFnVjJJLFxuICAgIEJhYnlsb25JbmZvWmlnemFnVjJJdGVtLFxuICAgIEJhYnlsb25JdGVtc0dyaWRJLFxuICAgIEJhYnlsb25MYW5ndWFnZU1vZGFsSSxcbiAgICBCYWJ5bG9uTGVnYWxJLFxuICAgIEJhYnlsb25MaXNDNFR4dEljb0ksXG4gICAgQmFieWxvbk1hcExpc3RJLFxuICAgIEJhYnlsb25NYXBMaXN0SXRlbSxcbiAgICBCYWJ5bG9uTW9kYWxNdWx0aXBsZU1vdG9yc0ksXG4gICAgQmFieWxvbk5ld3NsZXR0ZXJJLFxuICAgIEJhYnlsb25PZmZlckRldGFpbEksXG4gICAgQmFieWxvbk9mZmVySSxcbiAgICBCYWJ5bG9uT2ZmZXJQb3B1cEksXG4gICAgQmFieWxvbk9mZmVyUG9wdXBWMkksXG4gICAgQmFieWxvbk9mZmVyU2xpZGVySSxcbiAgICBCYWJ5bG9uT2ZmZXJzTGlzdEksXG4gICAgQmFieWxvbk9mZmVyc0xpc3RJdGVtLFxuICAgIEJhYnlsb25QcmVzc0xpc3RJLFxuICAgIEJhYnlsb25Sb29tSW5mb0ksXG4gICAgQmFieWxvblJvb21zQ29sc0ksXG4gICAgQmFieWxvblJvb21zR3JpZEksXG4gICAgQmFieWxvblJvb21zTGlzdEVxdWlwbWVudCxcbiAgICBCYWJ5bG9uUm9vbXNMaXN0SSxcbiAgICBCYWJ5bG9uUm9vbXNMaXN0SXRlbSxcbiAgICBCYWJ5bG9uUm9vbXNTbGlkZXJJLFxuICAgIEJhYnlsb25TZXJ2aWNlc1NsaWRlckksXG4gICAgQmFieWxvblNsaWRlcjJDb2xJdGVtSSxcbiAgICBCYWJ5bG9uU2xpZGVyMml0ZW1zSSxcbiAgICBCYWJ5bG9uU2xpZGVyM0l0ZW1zSSxcbiAgICBCYWJ5bG9uU2xpZGVyNGNvbExhYmVscyxcbiAgICBCYWJ5bG9uU2xpZGVySXRlbSxcbiAgICBCYWJ5bG9uU3RhdGljRm9vdGVySSxcbiAgICBCYWJ5bG9uU3VibWVudUksXG4gICAgQmFieWxvblRoYW5rc0ksXG4gICAgQmFieWxvblRvcFNsaWRlckksXG4gICAgQmFieWxvblRvcFNsaWRlckl0ZW0sXG4gICAgQmFieWxvblRvcFNsaWRlclRodW1ic0ksXG4gICAgQmFieWxvblRvcFNsaWRlclYySSxcbiAgICBCYWJ5bG9uVG9wU2xpZGVyVmlkZW9JLFxuICAgIEJhYnlsb25XZWJtYXBJLFxuICAgIERyb3Bkb3duT3B0aW9uLFxufSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvcmUnO1xuaW1wb3J0IHsgQmFieWxvbkdsb2JhbE1vZGFsSSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY29yZS9iYWJ5bG9uLWdsb2JhbC1tb2RhbCc7XG5pbXBvcnQgeyBCYWJ5bG9uSXRlbUdyaWRJIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb3JlL2JhYnlsb24tbGlzdC1ncmlkL2JhYnlsb24tbGlzdC1ncmlkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYWJ5bG9uTGlzdEdyaWRJIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb3JlL2JhYnlsb24tbGlzdC1ncmlkL2JhYnlsb24tbGlzdC1ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWJ5bG9uTW9kYWxQb3B1cEkgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvcmUvYmFieWxvbi1tb2RhbC1wb3B1cCc7XG5pbXBvcnQgeyBCYWJ5bG9uU3RhdGljRm9vdGVyVjJJIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb3JlL2JhYnlsb24tc3RhdGljLWZvb3Rlci12Mi9iYWJ5bG9uLXN0YXRpYy1mb290ZXItdjIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJvb21TZXJ2aWNlVHlwZSB9IGZyb20gJy4uLy4uL0VudW0vc2VydmljZXMuZW51bSc7XG5pbXBvcnQgeyBWaWV3c1R5cGUgfSBmcm9tICcuLi8uLi9FbnVtL3ZpZXdzLmVudW0nO1xuaW1wb3J0IHtcbiAgICBCYWJ5bG9uQnV0dG9uSSxcbiAgICBCYWJ5bG9uQ29udGFjdEluZm9JLFxuICAgIEJhYnlsb25Ecm9wZG93bkksXG4gICAgQmFieWxvbkZsb2F0aW5nQnV0dG9uc0ksXG4gICAgQmFieWxvbkdsb2JhbEljb25JLFxuICAgIEJhYnlsb25JbWFnZUksXG4gICAgQmFieWxvbklucHV0SSxcbiAgICBCYWJ5bG9uTWVudUJ1dHRvbkksXG4gICAgQmFieWxvbk1lbnVJbmZvSSxcbiAgICBCYWJ5bG9uT2ZmZXJJdGVtSSxcbiAgICBCYWJ5bG9uUm9vbURldGFpbEksXG4gICAgQmFieWxvblRleHRJbmZvSSxcbiAgICBCb2R5Q29tcG9uZW50LFxuICAgIENPTVBPTkVOVFNfRVhUUkEsXG4gICAgQ29uc3VsdFR5cGVJLFxufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEJhYnlsb25BZHZhbnRhZ2VJdGVtSSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1hZHZhbnRhZ2VzLWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25EZXN0aW5hdGlvbkkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24tZGVzdGluYXRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25FdmVudEl0ZW1JIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWV2ZW50LWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25HbG9iYWxFeHBlcmllbmNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWdsb2JhbC1leHBlcmllbmNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWJ5bG9uR2xvYmFsIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWdsb2JhbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFieWxvbkdsb2JhbHNGYXFHcm91cCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1nbG9iYWxzLWZhcXMtZ3JvdXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25HbG9hYmxzR2FsbGVyeUZpbHRlciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1nbG9iYWxzLWdhbGxlcnktZmlsdGVycyc7XG5pbXBvcnQgeyBCYWJ5bG9uSG90ZWxHbG9iYWxJdGVtIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWhvdGVsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWJ5bG9uSXRlbUkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24taXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgY2xlYW5EZWVwIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xlYW4tcHJvcHMnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XG5pbXBvcnQgeyBTY3JlZW5TaXplclNlcnZpY2UgfSBmcm9tICcuLi9zY3JlZW4tc2l6ZXInO1xuaW1wb3J0IHtcbiAgICBCQUJZTE9OX01BUFBFUl9DT05GSUdfVE9LRU4sXG4gICAgU0lURV9DT05GSUdfU0VSVklDRV9UT0tFTixcbiAgICB0eXBlIEJhYnlsb25JbWFnZVRodW1ibmFpbFNpemUsXG59IGZyb20gJy4vbWFwcGVyLnNlcnZpY2UudG9rZW4nO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBNYXBwZXJTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNpdGVTdmMgPSBpbmplY3QoU0lURV9DT05GSUdfU0VSVklDRV9UT0tFTik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzY3JlZW5TaXplciA9IGluamVjdChTY3JlZW5TaXplclNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWFwcGVyQ29uZmlnID0gaW5qZWN0KEJBQllMT05fTUFQUEVSX0NPTkZJR19UT0tFTik7XG5cbiAgICBnZXQgaXNNaW5GdWxsVGFibGV0SW5zdGFudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NyZWVuU2l6ZXIubWluRnVsbFRhYmxldEluc3RhbnQoKTtcbiAgICB9XG5cbiAgICBoZWFkZXJCdXR0b25zID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgICBzaXRlSWQ6IFNpZ25hbDxudW1iZXI+ID0gY29tcHV0ZWQoXG4gICAgICAgICgpID0+IHRoaXMuc2l0ZVN2Yy53ZWJDb25maWdJbnN0YW50Py5zaXRlSURcbiAgICApO1xuXG4gICAgZmxvYXRpbmdCdXR0b25zPzogQmFieWxvbkZsb2F0aW5nQnV0dG9uc0k7XG5cbiAgICBwcml2YXRlIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcm9vbXNHcmlkTW9iaWxlVGh1bWJuYWlsU2l6ZTogQmFieWxvbkltYWdlVGh1bWJuYWlsU2l6ZSA9XG4gICAgICAgIHRoaXMubWFwcGVyQ29uZmlnLnJvb21zR3JpZE1vYmlsZVRodW1ibmFpbFNpemUgPz8gMzc1O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcm9vbXNHcmlkU21hbGxUYWJsZXRUaHVtYm5haWxTaXplOiBCYWJ5bG9uSW1hZ2VUaHVtYm5haWxTaXplID1cbiAgICAgICAgdGhpcy5tYXBwZXJDb25maWcucm9vbXNHcmlkU21hbGxUYWJsZXRUaHVtYm5haWxTaXplID8/IDU0MDtcblxuICAgIGdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgaW1hZ2U6IEltYWdlUmVzcG9uc2UgfCB1bmRlZmluZWQsXG4gICAgICAgIGlzRmlndXJlID0gdHJ1ZSxcbiAgICAgICAgbW9iaWxlVGh1bWJuYWlsU2l6ZTogQmFieWxvbkltYWdlVGh1bWJuYWlsU2l6ZSA9IDM3NSxcbiAgICAgICAgc21hbGxUYWJsZXRUaHVtYm5haWxTaXplOiBCYWJ5bG9uSW1hZ2VUaHVtYm5haWxTaXplID0gNTQwXG4gICAgKTogc3RyaW5nIHwgQmFieWxvbkltYWdlSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSW1hZ2UgPSB0aGlzLnBpY2tSZXNwb25zaXZlSW1hZ2UoaW1hZ2UsIHtcbiAgICAgICAgICAgIG1vYmlsZVRodW1ibmFpbFNpemUsXG4gICAgICAgICAgICBzbWFsbFRhYmxldFRodW1ibmFpbFNpemUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBzZWxlY3RlZEltYWdlXG4gICAgICAgICAgICA/IGlzRmlndXJlXG4gICAgICAgICAgICAgICAgPyBgJHt0aGlzLnNpdGVTdmMuY2RuSW1hZ2VzSW5zdGFudH0ke3NlbGVjdGVkSW1hZ2V9YFxuICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgIHNyYzogYCR7dGhpcy5zaXRlU3ZjLmNkbkltYWdlc0luc3RhbnR9JHtzZWxlY3RlZEltYWdlfWAsXG4gICAgICAgICAgICAgICAgICAgICAgYWx0OiBpbWFnZT8uYWx0LFxuICAgICAgICAgICAgICAgICAgICAgIG5kVGl0bGU6IGltYWdlPy5uZFRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWFnZT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGltYWdlPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1hZ2U/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWFnZT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpbWFnZT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaW1hZ2U/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaW1hZ2U/Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwaWNrUmVzcG9uc2l2ZUltYWdlKFxuICAgICAgICBpbWFnZTogSW1hZ2VSZXNwb25zZSB8IHVuZGVmaW5lZCxcbiAgICAgICAgc2l6ZXM6IHtcbiAgICAgICAgICAgIG1vYmlsZVRodW1ibmFpbFNpemU6IEJhYnlsb25JbWFnZVRodW1ibmFpbFNpemU7XG4gICAgICAgICAgICBzbWFsbFRhYmxldFRodW1ibmFpbFNpemU6IEJhYnlsb25JbWFnZVRodW1ibmFpbFNpemU7XG4gICAgICAgIH1cbiAgICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBwaWNrRmlyc3QgPSAoLi4udmFsdWVzOiBBcnJheTxzdHJpbmcgfCB1bmRlZmluZWQ+KSA9PlxuICAgICAgICAgICAgdmFsdWVzLmZpbmQoKHZhbHVlKSA9PiAhIXZhbHVlKTtcblxuICAgICAgICBjb25zdCBiYXNlQ2FuZGlkYXRlcyA9IFtcbiAgICAgICAgICAgIGltYWdlPy5wYXRoPy53ZWJwLFxuICAgICAgICAgICAgaW1hZ2U/LnBhdGg/Lm9yaWdpbmFsLFxuICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/LlsxMzY2XT8ud2VicCxcbiAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bMTM2Nl0/Lm9yaWdpbmFsLFxuICAgICAgICBdO1xuXG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHBpY2tGaXJzdCguLi5iYXNlQ2FuZGlkYXRlcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zY3JlZW5TaXplci5tb2JpbGUoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHBpY2tGaXJzdChcbiAgICAgICAgICAgICAgICBpbWFnZT8udGh1bWJuYWlscz8uW3NpemVzLm1vYmlsZVRodW1ibmFpbFNpemVdPy53ZWJwLFxuICAgICAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bc2l6ZXMubW9iaWxlVGh1bWJuYWlsU2l6ZV0/Lm9yaWdpbmFsLFxuICAgICAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bMzc1XT8ud2VicCxcbiAgICAgICAgICAgICAgICBpbWFnZT8udGh1bWJuYWlscz8uWzM3NV0/Lm9yaWdpbmFsLFxuICAgICAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bNTQwXT8ud2VicCxcbiAgICAgICAgICAgICAgICBpbWFnZT8udGh1bWJuYWlscz8uWzU0MF0/Lm9yaWdpbmFsLFxuICAgICAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bNzY4XT8ud2VicCxcbiAgICAgICAgICAgICAgICBpbWFnZT8udGh1bWJuYWlscz8uWzc2OF0/Lm9yaWdpbmFsLFxuICAgICAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bMTAyNF0/LndlYnAsXG4gICAgICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/LlsxMDI0XT8ub3JpZ2luYWwsXG4gICAgICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/LlsxMjgwXT8ud2VicCxcbiAgICAgICAgICAgICAgICBpbWFnZT8udGh1bWJuYWlscz8uWzEyODBdPy5vcmlnaW5hbCxcbiAgICAgICAgICAgICAgICAuLi5iYXNlQ2FuZGlkYXRlc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNjcmVlblNpemVyLmlzU21hbGxUYWJsZXRJbnN0YW50KCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwaWNrRmlyc3QoXG4gICAgICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/LltzaXplcy5zbWFsbFRhYmxldFRodW1ibmFpbFNpemVdPy53ZWJwLFxuICAgICAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bc2l6ZXMuc21hbGxUYWJsZXRUaHVtYm5haWxTaXplXT8ub3JpZ2luYWwsXG4gICAgICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/Lls1NDBdPy53ZWJwLFxuICAgICAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bNTQwXT8ub3JpZ2luYWwsXG4gICAgICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/Lls3NjhdPy53ZWJwLFxuICAgICAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bNzY4XT8ub3JpZ2luYWwsXG4gICAgICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/LlsxMDI0XT8ud2VicCxcbiAgICAgICAgICAgICAgICBpbWFnZT8udGh1bWJuYWlscz8uWzEwMjRdPy5vcmlnaW5hbCxcbiAgICAgICAgICAgICAgICBpbWFnZT8udGh1bWJuYWlscz8uWzEyODBdPy53ZWJwLFxuICAgICAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bMTI4MF0/Lm9yaWdpbmFsLFxuICAgICAgICAgICAgICAgIC4uLmJhc2VDYW5kaWRhdGVzXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2NyZWVuU2l6ZXIuaXNNZWRpdW1UYWJsZXRJbnN0YW50KCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwaWNrRmlyc3QoXG4gICAgICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/Lls3NjhdPy53ZWJwLFxuICAgICAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bNzY4XT8ub3JpZ2luYWwsXG4gICAgICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/LlsxMDI0XT8ud2VicCxcbiAgICAgICAgICAgICAgICBpbWFnZT8udGh1bWJuYWlscz8uWzEwMjRdPy5vcmlnaW5hbCxcbiAgICAgICAgICAgICAgICBpbWFnZT8udGh1bWJuYWlscz8uWzEyODBdPy53ZWJwLFxuICAgICAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bMTI4MF0/Lm9yaWdpbmFsLFxuICAgICAgICAgICAgICAgIC4uLmJhc2VDYW5kaWRhdGVzXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2NyZWVuU2l6ZXIuaXNGdWxsVGFibGV0SW5zdGFudCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGlja0ZpcnN0KFxuICAgICAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bMTAyNF0/LndlYnAsXG4gICAgICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/LlsxMDI0XT8ub3JpZ2luYWwsXG4gICAgICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/LlsxMjgwXT8ud2VicCxcbiAgICAgICAgICAgICAgICBpbWFnZT8udGh1bWJuYWlscz8uWzEyODBdPy5vcmlnaW5hbCxcbiAgICAgICAgICAgICAgICAuLi5iYXNlQ2FuZGlkYXRlc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNjcmVlblNpemVyLmlzU21hbGxEZXNrdG9wSW5zdGFudCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGlja0ZpcnN0KFxuICAgICAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bMTI4MF0/LndlYnAsXG4gICAgICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/LlsxMjgwXT8ub3JpZ2luYWwsXG4gICAgICAgICAgICAgICAgLi4uYmFzZUNhbmRpZGF0ZXNcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zY3JlZW5TaXplci5taW5NZWRpdW1EZXNrdG9wKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwaWNrRmlyc3QoXG4gICAgICAgICAgICAgICAgaW1hZ2U/LnBhdGg/LndlYnAsXG4gICAgICAgICAgICAgICAgaW1hZ2U/LnBhdGg/Lm9yaWdpbmFsLFxuICAgICAgICAgICAgICAgIC4uLmJhc2VDYW5kaWRhdGVzXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBpY2tGaXJzdCguLi5iYXNlQ2FuZGlkYXRlcyk7XG4gICAgfVxuXG4gICAgZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgIGltYWdlczogSW1hZ2VSZXNwb25zZVtdIHwgdW5kZWZpbmVkLFxuICAgICAgICBpc0ZpZ3VyZSA9IHRydWVcbiAgICApOiAoc3RyaW5nIHwgQmFieWxvbkltYWdlSSlbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBpbWFnZXM/Lm1hcCgoaW1nKSA9PiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcsIGlzRmlndXJlKSEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVBZ2VzT3B0aW9ucyhcbiAgICAgICAgbWF4TGVuZ3RoOiBudW1iZXIsXG4gICAgICAgIG1pbkxlbmd0aCA9IDBcbiAgICApOiBEcm9wZG93bk9wdGlvbltdIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uczogRHJvcGRvd25PcHRpb25bXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gbWluTGVuZ3RoOyBpIDw9IG1heExlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBvcHRpb25zLnB1c2goeyBjb2RlOiBpLCBuYW1lOiBpIDwgMTAgPyBgMCR7aX1gIDogYCR7aX1gIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QWdlVW5pdExhYmVsKHRleHRzOiBhbnkgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkaXJlY3RMYWJlbCA9XG4gICAgICAgICAgICB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubW90b3JBZ2VVbml0TGFiZWwpPy50cmltKCkgfHxcbiAgICAgICAgICAgIHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5tb3RvclllYXJzTGFiZWwpPy50cmltKCk7XG5cbiAgICAgICAgaWYgKGRpcmVjdExhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm4gZGlyZWN0TGFiZWw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmYWxsYmFja0xhYmVscyA9IFtcbiAgICAgICAgICAgIHRleHRzPy5tb3RvcktpZHNTbWFsbExhYmVsLFxuICAgICAgICAgICAgdGV4dHM/Lm1vdG9yQmFiaWVzU21hbGxUaXRsZSxcbiAgICAgICAgXTtcblxuICAgICAgICBmb3IgKGNvbnN0IGxhYmVsIG9mIGZhbGxiYWNrTGFiZWxzKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWRMYWJlbCA9IHRoaXMuZ2V0VGV4dFZhbHVlKGxhYmVsKT8udHJpbSgpO1xuXG4gICAgICAgICAgICBpZiAoIXBhcnNlZExhYmVsKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGxhYmVsV2l0aG91dFJhbmdlID0gcGFyc2VkTGFiZWxcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXlxccypcXGQrXFxzKi1cXHMqXFxkK1xccyovLCAnJylcbiAgICAgICAgICAgICAgICA/LnRyaW0oKTtcblxuICAgICAgICAgICAgaWYgKGxhYmVsV2l0aG91dFJhbmdlICYmIGxhYmVsV2l0aG91dFJhbmdlICE9PSBwYXJzZWRMYWJlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBsYWJlbFdpdGhvdXRSYW5nZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnYcOxb3MnO1xuICAgIH1cblxuICAgIG1hcEdsb2JhbHNCb2R5RXh0cmEocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IG5hbWVfSWRlbnRpZmllciA9XG4gICAgICAgICAgICB0eXBlb2YgcHJvcHMgPT0gJ3N0cmluZycgPyBwcm9wcyA6IHByb3BzPy5uYW1lSWRlbnRpZmllcjtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hbWVJZGVudGlmaWVyOiB0aGlzLmdldFRleHRWYWx1ZShuYW1lX0lkZW50aWZpZXIpLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcEJvZHlFeHRyYShcbiAgICAgICAgYm9keTogYW55W10gfCB1bmRlZmluZWRcbiAgICApOiBCb2R5Q29tcG9uZW50PENPTVBPTkVOVFNfRVhUUkE+W10gfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBib2R5TWFwcGVkOiBCb2R5Q29tcG9uZW50PENPTVBPTkVOVFNfRVhUUkE+W10gfCB1bmRlZmluZWQgPVxuICAgICAgICAgICAgYm9keT8ubWFwKChjb21wb25lbnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRNYXBwZWQ6IEJvZHlDb21wb25lbnQ8Q09NUE9ORU5UU19FWFRSQT4gPSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogY29tcG9uZW50Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczoge30sXG4gICAgICAgICAgICAgICAgfSBhcyBCb2R5Q29tcG9uZW50PENPTVBPTkVOVFNfRVhUUkE+O1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWVudSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFN1Ym1lbnUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIEJhYnlsb25TdWJtZW51STtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID0gJ21lbnUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hvdGVsdHlwZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdsb2JhbHNCb2R5RXh0cmEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIEJhYnlsb25HbG9iYWw7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9ICdob3RlbHR5cGUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hvdGVsY2F0ZWdvcnknOlxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHbG9iYWxzQm9keUV4dHJhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBCYWJ5bG9uR2xvYmFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPSAnaG90ZWxjYXRlZ29yeSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAndGlja2VyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR2xvYmFsc0JvZHlFeHRyYShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgQmFieWxvbkdsb2JhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID0gJ3RpY2tlcic7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcG9uZW50TWFwcGVkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBib2R5TWFwcGVkO1xuICAgIH1cblxuICAgIG1hcFN1Ym1lbnUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25TdWJtZW51SSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gcHJvcHM/Lml0ZW1zPy5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0uc2VsZWN0ZWQpO1xuICAgICAgICBjb25zdCBzdWJtZW51ID0ge1xuICAgICAgICAgICAgaG90ZWw6IHByb3BzPy5ob3RlbCxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaXRlbXNcbiAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLmFjdGl2ZSlcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxpbms/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsaW5rPy5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbms/LmxpbmtUeXBlID09PSAzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdjb21wb25lbnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxpbms/LmxpbmtUeXBlID09PSA0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2FuY2hvcl9zdWJtZW51J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdHlsZXM6IHByb3BzPy5zdHlsZXMsXG4gICAgICAgICAgICBzZWxlY3RlZDoge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBzZWxlY3RlZD8ubmFtZSxcbiAgICAgICAgICAgICAgICB1cmw6IHNlbGVjdGVkPy5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgc3R5bGVzOiBwcm9wcz8uc3R5bGVzLFxuICAgICAgICAgICAgfSBhcyBCYWJ5bG9uQnV0dG9uSSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uU3VibWVudUk7XG5cbiAgICAgICAgcmV0dXJuIHN1Ym1lbnU7XG4gICAgfVxuXG4gICAgbWFwQ29tcG9uZW50czxUPihcbiAgICAgICAgYm9keTogYW55W10sXG4gICAgICAgIGFkZG9ucz86IENvbXBvbmVudHNBZGRvbnNcbiAgICApOiBCb2R5Q29tcG9uZW50PFQ+W10ge1xuICAgICAgICBpZiAoIWJvZHkgfHwgIWJvZHkubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gW10gYXMgQm9keUNvbXBvbmVudDxUPltdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlYXJjaEhvdGVsU3R5bGVzID0gKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGJvZHk/LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLm5hbWUgPT09ICdzdHlsZXMnKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYm9keU1hcHBlZDogQm9keUNvbXBvbmVudDxUPltdID0gYm9keVxuICAgICAgICAgICAgPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGNvbXBvbmVudCkgPT4gY29tcG9uZW50ICE9PSBudWxsICYmIGNvbXBvbmVudCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICApXG4gICAgICAgICAgICA/Lm1hcCgoY29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50TWFwcGVkOiBCb2R5Q29tcG9uZW50PFQ+ID0ge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGNvbXBvbmVudC5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHt9LFxuICAgICAgICAgICAgICAgICAgICBhbGlhczogY29tcG9uZW50LmFsaWFzLFxuICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyOiBjb21wb25lbnQuaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yOiBjb21wb25lbnQudGV4dGNvbG9yLFxuICAgICAgICAgICAgICAgIH0gYXMgQm9keUNvbXBvbmVudDxUPjtcblxuICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnQucHJvcHMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy9JdCBpcyBuZWNlc3NhcnksIG90aGVyd2lzZSBpdCBnaXZlcyBhbiBlcnJvciBhbmQgZG9lcyBub3Qgc2hvdyBjb21wb25lbnRzXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbW9kdWxlNDA0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXA0MDQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLS0tLSBMQVlPVVQgQ09NUE9ORU5UUyAtLS0tLy9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0b3BzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRvcFNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RvcHNsaWRlcnZpZGVvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUb3BTbGlkZXJWaWRlbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndG9wc2xpZGVydjJsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0b3BzbGlkZXJ2MnJpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUb3BTbGlkZXJWMihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PSAndG9wc2xpZGVydjJyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW1nJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW1ncmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbWdsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvSW1nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPT09ICdpbmZvaW1ncmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnRleHRjb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5pZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2ltZ3NsaWRlcnJpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW1nc2xpZGVybGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0ltZ1NsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbmZvaW1nc2xpZGVycmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW50cm8nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9JbnRybyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm8yaW1nbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbzJpbWdyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mbzJpbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9PT0gJ2luZm8yaW1ncmlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbzJjb2xpbWdyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mbzJjb2xpbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9PT0gJ2luZm8yY29saW1ncmlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbzJjb2xpbWdsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvMmNvbGltZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PSAnaW5mbzJjb2xpbWdsZWZ0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm8zaW1nJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvSW1nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQudGV4dGNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvemlnemFnbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ppZ3phZ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBaaWd6YWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9PT0gJ2luZm96aWd6YWdyaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9ncmlkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvR3JpZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjJjb2xsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIyY29scmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNsaWRlckNvbGwyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPT09ICdzbGlkZXIyY29scmlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyM2NvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyQ29sbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5pZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyNGNvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyQ29sbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5pZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaXRlbXNncmlkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJdGVtc0dyaWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyb29tc3NsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUm9vbXNTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyb29tc2dyaWQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFJvb21zR3JpZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jhbm5lcmdhbGxlcnknOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lckdhbGxlcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkZ2FsbGVyeSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZEdhbGxlcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiYW5uZXJuZXdzbGV0dGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwQmFubmVyTmV3c2xldHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb2ZmZXJzc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlclNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLS0tLSBMQVlPVVQgQ09NUE9ORU5UUyBFTkQtLS0tLy9cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RoYW5rcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwVGhhbmtzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb250YWN0Zm9ybSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29udGFjdGZvcm12Mic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQ29udGFjdEZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRvbnM/LmNvbnRhY3RPZmZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRvbnM/LmNvbnN1bHRUeXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb250YWN0aG93JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBDb250YWN0SG93KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd3ZWJtYXAnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFdlYm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29udGFjdG1hcCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQ29udGFjdE1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGVnYWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcExlZ2FsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyb29tc2NvbHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFJvb21zQ29scyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncm9vbWRldGFpbHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFJvb21EZXRhaWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RvcHNsaWRlcnRodW1icyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwVG9wU2xpZGVyVGh1bWJzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmZWF0dXJlc3NsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRmVhdHVyZXNTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jhbm5lcmluZm8nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lckluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Jvb21zbGlzdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUm9vbXNMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb21pbmdzb29uJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBDb21pbmdTb29uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcmRldGFpbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJEZXRhaWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyc2xpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE9mZmVyc0xpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaXNIb21lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmYXEnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZhcShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3RhdGljZm9vdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTdGF0aWNGb290ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dhbGxlcnknOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dhbGxlcnl2Mic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzYzJpbWd2aWQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JhYnlsb25saXNjMmltZ3ZpZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR2FsbGVyeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbmF2JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBNZW51KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkb25zPy5tZW51U29jaWFsTWVkaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xhbmd1YWdlc21vZGFsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsYW5ndWFnZXNtb2RhdjInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcExhbmd1YWdlTW9kYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjNpdGVtcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM0l0ZW1zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hvdGVsc3NsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSG90ZWxzU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdob3RlbHNsaXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBIb3RlbHNMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvNGltZyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mbzRJbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NlcnZpY2Vzc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTZXJ2aWNlc1NsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xvY2F0aW9uYWRkcmVzcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29udGFjdGFkZHJlc3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENvbnRhY3RBZGRyZXNzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhZHZhbnRhZ2VzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBBZHZhbnRhZ2VzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvYmlnJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvQmlnKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvemlnemFndjJsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvWmlnWmFnVjIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ppZ3phZ3YycmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9aaWdaYWdWMihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5pZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJjb250YWN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJDb250YWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmltZ2JpZyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mbzJJbWdCaWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3RlcmxpbmtzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJMaW5rcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVybG9nb3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckxvZ29zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcnNsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3RlcnNvY2lhbHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlclNvY2lhbHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjJpdGVtcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyMml0ZW1zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzdGF0aWNmb290ZXJ2Mic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU3RhdGljRm9vdGVydjIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RncmlkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXN0R3JpZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbmV3c2xldHRlcm1vZGFsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBOZXdzbGV0dGVyTW9kYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hlYWRpbnRybyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSGVhZEludHJvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdicmVhZGNydW1icyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQnJlYWRjcnVtYnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcmJhbm5lcnYyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlckJhbm5lclYyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ2xvYmFsbW9kYWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dsb2JhbG1vZGFsMic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR2xvYmFsTW9kYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtZW51JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlYXJjaEhvdGVsU3R5bGVzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1snc3R5bGVzJ10gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEhvdGVsU3R5bGVzKClbMF0/LnByb3BzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU3VibWVudShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NwYWxvcGlhJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBFeHRlcm5hbFNjcmlwdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2lmcmFtZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSWZyYW1lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmxvZ2xpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJsb2dMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmxvZ2RldGFpbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQmxvZ0RldGFpbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyYmFubmVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlckJhbm5lcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21vZGFsbXVsdGlwbGVtb3RvcnMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBNb2RhbE11bHRpcGxlTW90b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtb2RhbHBvcHVwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBNb2RhbFBvcHVwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwcmVzc2xpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFByZXNzTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYWN0aW9uYmFubmVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBBY3Rpb25CYW5uZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ppZ3phZ2NvdW50ZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBJbmZvWmlnWmFnQ291bnRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ3JjMmltZyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JDMkltZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc2M0dHh0aWNvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXNDNFR4dEljbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21hcGxpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE1hcExpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hpc3RvcnknOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEhpc3RvcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR2xvYmFscyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8uY29udGFjdE9mZmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8uY29uc3VsdFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudE1hcHBlZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYm9keU1hcHBlZDtcbiAgICB9XG5cbiAgICBtYXBHbG9iYWxzKFxuICAgICAgICBjb21wb25lbnQ6IGFueSxcbiAgICAgICAgbmRQcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBuZFByb3BzQ29uc3VsdDogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogYW55IHtcbiAgICAgICAgaWYgKCFjb21wb25lbnQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGxldCB7IHByb3BzIH0gPSBjb21wb25lbnQ7XG4gICAgICAgIHByb3BzID0gcHJvcHMgPz8gY29tcG9uZW50O1xuXG4gICAgICAgIGNvbnN0IHZpZXdzID0gKGNvbXBvbmVudD8udmlld3MgYXMgQ29tcG9uZW50Vmlld1tdIHwgdW5kZWZpbmVkKT8uZmlsdGVyKFxuICAgICAgICAgICAgKHYpID0+ICEhdlxuICAgICAgICApO1xuXG4gICAgICAgIGxldCByaWdodFNpZGU6IGJvb2xlYW47XG4gICAgICAgIGxldCBsZWZ0U2lkZTogYm9vbGVhbjtcbiAgICAgICAgbGV0IGN1cnJlbnRWaWV3OiBudW1iZXIgPSAwO1xuICAgICAgICBsZXQgaWNvbnNMaWtlSW1hZ2VzID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHZpZXdzICYmIHZpZXdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZVZpZXcgPSB2aWV3cy5maW5kKCh2KSA9PiB2LmRlZmF1bHQpID8/IHZpZXdzWzBdO1xuXG4gICAgICAgICAgICByaWdodFNpZGUgPSBhY3RpdmVWaWV3Py5uYW1lID09PSBWaWV3c1R5cGUuUklHSFQ7XG4gICAgICAgICAgICBsZWZ0U2lkZSA9IGFjdGl2ZVZpZXc/Lm5hbWUgPT09IFZpZXdzVHlwZS5MRUZUO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKGFjdGl2ZVZpZXc/Lm5hbWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFZpZXdzVHlwZS5WSUVXMTpcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFZpZXcgPSAxO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFZpZXdzVHlwZS5WSUVXMjpcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFZpZXcgPSAyO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFZpZXdzVHlwZS5WSUVXMzpcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFZpZXcgPSAzO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWaWV3ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyDwn5SlIEZhbGxiYWNrIGN1YW5kbyB2aWV3cyBlcyB1bmRlZmluZWQgbyB2YWPDrW9cbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBjb21wb25lbnQ/Lm5hbWU/LnRvTG93ZXJDYXNlKCkgPz8gJyc7XG5cbiAgICAgICAgICAgIHJpZ2h0U2lkZSA9XG4gICAgICAgICAgICAgICAgbmFtZS5pbmNsdWRlcygncmlnaHQnKSB8fCBwcm9wcz8udGV4dHM/LnJpZ2h0ID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICAgICAgbGVmdFNpZGUgPVxuICAgICAgICAgICAgICAgIG5hbWUuaW5jbHVkZXMoJ2xlZnQnKSB8fCBwcm9wcz8udGV4dHM/LmxlZnQgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRGV0ZWN0IGJhY2tncm91bmRJY29uIChpY29ubyBjb21vIGJhY2tncm91bmQtaW1hZ2UgQ1NTKVxuICAgICAgICBpY29uc0xpa2VJbWFnZXMgPSBwcm9wcz8uaWNvbnNsaWtlaW1hZ2VzID8gdHJ1ZSA6IGZhbHNlO1xuXG4gICAgICAgIGxldCBzaG93RmlsdGVyczogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICBpZiAocHJvcHM/LnRleHRzPy5maWx0ZXJzKSBzaG93RmlsdGVycyA9IHRydWU7XG5cbiAgICAgICAgbGV0IGhpZGVTZXJ2aWNlc0ZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICBpZiAocHJvcHM/LnRleHRzPy5oaWRlU2VydmljZXNGaWx0ZXIpIGhpZGVTZXJ2aWNlc0ZpbHRlciA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgZ2V0TGlua3NBcnJheSA9IChsaW5rc09iajogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWxpbmtzT2JqKSByZXR1cm4gW107XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShsaW5rc09iaikpIHJldHVybiBsaW5rc09iajtcblxuICAgICAgICAgICAgLy8gU2kgZXMgdW4gb2JqZXRvLCBleHRyYWUgc3VzIHZhbG9yZXMgeSBmaWx0cmEgbG9zIHF1ZSB0ZW5nYW4gbGlua1ZhbHVlIChwYXJhIGV2aXRhciBjb2dlciBmb290ZXJMaW5rcyBwb3IgYWNjaWRlbnRlKVxuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMobGlua3NPYmopLmZpbHRlcihcbiAgICAgICAgICAgICAgICAodmFsOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgIHZhbCAmJlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgICAgICAgICAoJ2xpbmtWYWx1ZScgaW4gdmFsIHx8ICdsaW5rX3ZhbHVlJyBpbiB2YWwpXG4gICAgICAgICAgICApO1xuICAgICAgICB9O1xuXG4gICAgICAgIGxldCBoYXNCYWNrZ3JvdW5kOiBib29sZWFuID0gZmFsc2U7XG4gICAgICAgIGhhc0JhY2tncm91bmQgPSAhIShwcm9wcz8udGV4dHM/LmJhY2tncm91bmQgfHwgcHJvcHM/LnRleHRzPy5mb25kbyk7XG5cbiAgICAgICAgbGV0IG1heENvbHVtbnM6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgbWF4Q29sdW1ucyA9XG4gICAgICAgICAgICBOdW1iZXIocHJvcHM/LnRleHRzPy5tYXhjb2x1bW5zID8/IHByb3BzPy50ZXh0cz8ubWF4Q29sdW1ucykgfHxcbiAgICAgICAgICAgIHVuZGVmaW5lZDtcblxuICAgICAgICBsZXQgcmVzdWx0OiBhbnk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICAgICAgaWRlbnRpZmllcjogY29tcG9uZW50Py5pZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgIGhhc0JhY2tncm91bmQ6IGhhc0JhY2tncm91bmQsXG4gICAgICAgICAgICAgICAgYWN0aXZlVmlldzogY3VycmVudFZpZXcsXG4gICAgICAgICAgICAgICAgc2hvd0ZpbHRlcnM6IHNob3dGaWx0ZXJzLFxuICAgICAgICAgICAgICAgIGhpZGVTZXJ2aWNlc0ZpbHRlcjogaGlkZVNlcnZpY2VzRmlsdGVyLFxuICAgICAgICAgICAgICAgIG1heENvbHVtbnM6IG1heENvbHVtbnMsXG4gICAgICAgICAgICAgICAgYm9keWV4dHJhOiB0aGlzLm1hcEdsb2JhbHNCb2R5RXh0cmEocHJvcHMpLFxuICAgICAgICAgICAgICAgIHRleHRzOiB0aGlzLm1hcEdsb2JhbFRleHRzKHByb3BzPy50ZXh0cykgYXMgQmFieWxvblRleHRJbmZvSSxcbiAgICAgICAgICAgICAgICB2aWRlbzogcHJvcHMudmlkZW8gPz8gcHJvcHMuVmlkZW8gPz8gcHJvcHMudGV4dHM/LnZpZGVvLFxuICAgICAgICAgICAgICAgIGljb25zTGlrZUltYWdlczogcHJvcHM/Lmljb25zTGlrZUltYWdlcyA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICByaWdodFNpZGU6IHJpZ2h0U2lkZSxcbiAgICAgICAgICAgICAgICBsZWZ0U2lkZTogbGVmdFNpZGUsXG4gICAgICAgICAgICAgICAgaXRlbXM6IHRoaXMubWFwR2xvYmFsSXRlbXMocHJvcHMpLFxuICAgICAgICAgICAgICAgIGxpc3RzOiB0aGlzLm1hcEdsb2JhbHNGYXFzKHByb3BzPy5GYXFzKSxcbiAgICAgICAgICAgICAgICBzZXJ2aWNlczogdGhpcy5tYXBHbG9iYWxTZXJ2aWNlcyhcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnNlcnZpY2VzU2VydmljZSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmVxdWlwbWVudCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnNlcnZpY2VzU2VydmljZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZXZlbnRzOiB0aGlzLm1hcEV2ZW50c0dsb2JhbChwcm9wcz8uZXZlbnRzID8/IHByb3BzPy5ldmVudCksXG4gICAgICAgICAgICAgICAgb2ZmZXJzOiB0aGlzLm1hcE9mZmVyc0dsb2JhbChwcm9wcz8ub2ZmZXJzKSxcbiAgICAgICAgICAgICAgICBvZmZlcjogdGhpcy5tYXBPZmZlckRldGFpbChwcm9wcyksXG4gICAgICAgICAgICAgICAgbXVsdGltZWRpYTogdGhpcy5tYXBJbWFnZXMocHJvcHM/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHRoaXMubWFwQWRkcmVzcyhwcm9wcz8uYWRkcmVzcyksXG4gICAgICAgICAgICAgICAgYWRkcmVzc0hvdGVsczogdGhpcy5tYXBHbG9iYWxBZGRyZXNzSG90ZWxzKHByb3BzKSxcbiAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgZ2V0TGlua3NBcnJheShwcm9wcz8ubGlua3MpLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0TGlua3NBcnJheShwcm9wcz8ubGlua3MpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy5saW5rcz8uTGlua3M/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy5saW5rcz8uTGlua3M/LlswXVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy5saW5rcz8uY29udGFjdD8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjb250YWN0bGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5jb250YWN0Py5bMF0pLFxuICAgICAgICAgICAgICAgIGZvb3RlckxpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uZm9vdGVyTGlua3M/LlswXSksXG4gICAgICAgICAgICAgICAgcGFnZXM6IChcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnBhZ2VzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxpbms/LnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICAgICAgICAgKSBhcyBCYWJ5bG9uQnV0dG9uSVtdXG4gICAgICAgICAgICAgICAgKT8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAobGluaykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsudXJsPy5zcGxpdD8uKCcvJylbMV0gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmxvY2F0ZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuLmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGFkdmFudGFnZXM6IHRoaXMubWFwQWR2YW50YWdlc0dsb2JhbChcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LlZlbnRhamFzID8/XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8uQWR2YW50YWdlcyA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lmxpc3QgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5saXN0cyA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lkxpc3RzID8/XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8uTGlzdFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNlZU1vcmU6IHByb3BzPy50ZXh0cz8uYWR2YW50YWdlc3NlZW1vcmUsXG4gICAgICAgICAgICAgICAgc2VlTGVzczogcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2Vzc2VlbGVzcyxcbiAgICAgICAgICAgICAgICBpbWFnZTogcHJvcHMuYWR2YW50YWdlc2ltYWdlXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5hZHZhbnRhZ2VzaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcm9vbXM6IHRoaXMubWFwUm9vbURldGFpbHMoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5yb29tcyA/PyBwcm9wcz8ucm9vbSxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjb250YWN0SW5mbzogdGhpcy5tYXBDb250YWN0SW5mbyhwcm9wcz8udGV4dHMpLFxuICAgICAgICAgICAgICAgIHNvY2lhbE1lZGlhOiBwcm9wcz8uc29jaWFsTWVkaWE/Lm1hcCgoc206IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogc20/Lmljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBzbT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogc20/LnVybCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBob3RlbHM6IHRoaXMubWFwSG90ZWxzR2xvYmFsKHByb3BzPy5ob3RlbHMpLFxuICAgICAgICAgICAgICAgIGhvdGVsOiB0aGlzLm1hcEhvdGVsR2xvYmFsKHByb3BzPy5ob3RlbCA/PyBwcm9wcz8uaG90ZWxzPy5bMF0pLFxuICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uczogdGhpcy5tYXBHbG9iYWxEZXN0aW5hdGlvbnMocHJvcHM/LmRlc3RpbmF0aW9ucyksXG4gICAgICAgICAgICAgICAgZXhwZXJpZW5jZXM6IHRoaXMubWFwR2xvYmFsRXhwZXJpZW5jZXMoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5leHBlcmllbmNlID8/IHByb3BzPy5leHBlcmllbmNlc1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgY29uc3VsdFR5cGVzOiB0aGlzLm1hcEdsb2JhbENvbnN1bHRUeXBlcyhwcm9wcywgbmRQcm9wc0NvbnN1bHQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcnM6IHRoaXMubWFwR2xvYmFsc0ZpbHRlcnMocHJvcHM/LmZpbHRlcnMpLFxuICAgICAgICAgICAgICAgIGV4dHJhQ2xhc3M6IHByb3BzPy50ZXh0cz8uZXh0cmFDbGFzcyxcbiAgICAgICAgICAgIH0gYXMgQmFieWxvbkdsb2JhbDtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0VSUk9SIEZBVEFMIENSRUFORE8gUkVTVUxUIEVOIG1hcEdsb2JhbHM6JywgZXJyb3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW1wcmltZSB0YW50byBlbiBzZXJ2aWRvciAodGVybWluYWwpIGNvbW8gZW4gY2xpZW50ZSAobmF2ZWdhZG9yIHNpIGV4aXN0ZSB3aW5kb3cpXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnbWFwcGVyJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICBjb21wb25lbnQubmFtZSxcbiAgICAgICAgICAgICAgICBjbGVhbkRlZXAocmVzdWx0LCB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZU51bGw6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUVtcHR5U3RyaW5nOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBwcnVuZUVtcHR5OiB0cnVlLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNsZWFuRGVlcChyZXN1bHQsIHtcbiAgICAgICAgICAgIHJlbW92ZU51bGw6IHRydWUsXG4gICAgICAgICAgICByZW1vdmVFbXB0eVN0cmluZzogdHJ1ZSxcbiAgICAgICAgICAgIHBydW5lRW1wdHk6IHRydWUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG1hcEdsb2JhbEFkZHJlc3NIb3RlbHMocHJvcHM6IGFueSk6IEJhYnlsb25BZGRyZXNzSXRlbVtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgLy8gMS4gSW50ZW50YW1vcyBvYnRlbmVyIGxhIGZ1ZW50ZSBkZSBkYXRvcyAoY29udGVtcGxhbW9zIGFtYm9zIG5vbWJyZXMgZGUgcHJvcGllZGFkKVxuICAgICAgICBjb25zdCByYXdTb3VyY2UgPVxuICAgICAgICAgICAgcHJvcHM/LmhvdGVsQWRkcmVzc2VzID8/IHByb3BzPy5hZGRyZXNzSG90ZWxzID8/IHByb3BzPy5hZGRyZXNzO1xuXG4gICAgICAgIGlmIChyYXdTb3VyY2UpIHtcbiAgICAgICAgICAgIC8vIEFwbGFuYW1vcyBlbCBhcnJheSBzaW4gaW1wb3J0YXIgbGEgcHJvZnVuZGlkYWQgW1t7Li4ufV1dIC0+IFt7Li4ufV1cbiAgICAgICAgICAgIGNvbnN0IGZsYXRBZGRyZXNzZXMgPSBBcnJheS5pc0FycmF5KHJhd1NvdXJjZSlcbiAgICAgICAgICAgICAgICA/IHJhd1NvdXJjZS5mbGF0KEluZmluaXR5KVxuICAgICAgICAgICAgICAgIDogW3Jhd1NvdXJjZV07XG5cbiAgICAgICAgICAgIC8vIEZpbHRyYW1vcyBwYXJhIGFzZWd1cmFyIHF1ZSBzb2xvIHByb2Nlc2Ftb3Mgb2JqZXRvcyB2w6FsaWRvc1xuICAgICAgICAgICAgY29uc3QgdmFsaWRBZGRyZXNzZXMgPSBmbGF0QWRkcmVzc2VzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoYWRkcmVzczogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICBhZGRyZXNzICYmXG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBhZGRyZXNzID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgICAgICAgICAhQXJyYXkuaXNBcnJheShhZGRyZXNzKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKHZhbGlkQWRkcmVzc2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsaWRBZGRyZXNzZXMubWFwKFxuICAgICAgICAgICAgICAgICAgICAoYWRkcmVzczogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogYWRkcmVzcy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBhZGRyZXNzLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogYWRkcmVzcy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5OiBhZGRyZXNzLmNhdGVnb3J5TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaXR5OiBhZGRyZXNzLmNpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmluY2U6IGFkZHJlc3MucHJvdmluY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeTogYWRkcmVzcy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwOiBhZGRyZXNzLmNwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcExpbms6IGFkZHJlc3MubWFwTGluayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGFkZHJlc3MubGluayA/PyBhZGRyZXNzLnVybCwgLy8gU29wb3J0ZSBwYXJhIGFtYm9zIG5vbWJyZXMgZGUgbGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBob25lOiBhZGRyZXNzLnBob25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsOiBhZGRyZXNzLmVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxfYWRkcmVzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcy5mdWxsQWRkcmVzcyA/PyBhZGRyZXNzLmZ1bGxfYWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnczogYWRkcmVzcy5zbHVncyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25BZGRyZXNzSXRlbVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyAyLiBDYXNvIEZhbGxiYWNrOiBNYXBlbyBkaW7DoW1pY28gZGVzZGUgbG9zIHRleHRvcyAoYWRkcmVzc2xpc3RYWClcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwRHluYW1pY0FkZHJlc3Nlc0Zyb21UZXh0cyhwcm9wcz8udGV4dHMpO1xuICAgIH1cblxuICAgIC8qKiBIZWxwZXIgcGFyYSBsaW1waWFyIGVsIGPDs2RpZ28gcHJpbmNpcGFsICovXG4gICAgcHJpdmF0ZSBtYXBEeW5hbWljQWRkcmVzc2VzRnJvbVRleHRzKFxuICAgICAgICB0ZXh0czogYW55XG4gICAgKTogQmFieWxvbkFkZHJlc3NJdGVtW10gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXRleHRzKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIGNvbnN0IGFkZHJlc3Nlc01hcDogeyBba2V5OiBzdHJpbmddOiBQYXJ0aWFsPEJhYnlsb25BZGRyZXNzSXRlbT4gfSA9IHt9O1xuXG4gICAgICAgIE9iamVjdC5rZXlzKHRleHRzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aCgnYWRkcmVzc2xpc3QnKSAmJiB0ZXh0c1trZXldKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBrZXkubWF0Y2goL2FkZHJlc3NsaXN0KFxcZCspKC4qKS8pO1xuICAgICAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IG1hdGNoWzFdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IG1hdGNoWzJdO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghYWRkcmVzc2VzTWFwW2luZGV4XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzTWFwW2luZGV4XSA9IHsgaWQ6IGluZGV4IH07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRleHRzW2tleV07XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1RpdGxlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZXNNYXBbaW5kZXhdLm5hbWUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0FkZHJlc3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3Nlc01hcFtpbmRleF0uYWRkcmVzcyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3Nlc01hcFtpbmRleF0uZnVsbF9hZGRyZXNzID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdUZWxmJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZXNNYXBbaW5kZXhdLnBob25lID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdFbWFpbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzTWFwW2luZGV4XS5lbWFpbCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBPYmplY3QudmFsdWVzKGFkZHJlc3Nlc01hcCkgYXMgQmFieWxvbkFkZHJlc3NJdGVtW107XG4gICAgICAgIHJldHVybiByZXN1bHQubGVuZ3RoID4gMCA/IHJlc3VsdCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBHbG9iYWxFeHBlcmllbmNlcyhcbiAgICAgICAgZXhwZXJpZW5jZXM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25HbG9iYWxFeHBlcmllbmNlW10ge1xuICAgICAgICByZXR1cm4gZXhwZXJpZW5jZXNcbiAgICAgICAgICAgID8uZmlsdGVyKChleHBlcmllbmNlOiBhbnkpID0+IGV4cGVyaWVuY2UuYWN0aXZlKVxuICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgKGV4cGVyaWVuY2U6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogZXhwZXJpZW5jZS5hY3RpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhOiB0aGlzLm1hcE11bHRpbWVkaWEoZXhwZXJpZW5jZT8ubXVsdGltZWRpYSksXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhMjogdGhpcy5tYXBJbWFnZXMoZXhwZXJpZW5jZT8ubXVsdGltZWRpYSksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlcmllbmNlPy5saW5rID8/IGV4cGVyaWVuY2U/LmxpbmtzXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhleHBlcmllbmNlPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBleHBlcmllbmNlPy5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzOiB0aGlzLm1hcEdsb2JhbFRleHRzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVyaWVuY2U/LnRleHRzXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIEJhYnlsb25UZXh0SW5mb0ksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogZXhwZXJpZW5jZT8uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lSWRlbnRpZmllcjogZXhwZXJpZW5jZT8ubmFtZUlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGV4cGVyaWVuY2U/LnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGV4cGVyaWVuY2U/LnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3RlbHM6IGV4cGVyaWVuY2U/LmhvdGVscz8ubWFwKChob3RlbDogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBob3RlbD8uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZUlkZW50aWZpZXI6IGhvdGVsPy5uYW1lSWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkhvdGVsR2xvYmFsSXRlbVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBtYXBHbG9iYWxzRmlsdGVycyhcbiAgICAgICAgZmlsdGVyczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkdsb2FibHNHYWxsZXJ5RmlsdGVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZpbHRlcnM6IGZpbHRlcnM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsOiBpdGVtLmFsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb206IGl0ZW0ucm9vbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb21zOiBpdGVtLnJvb21zLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uR2FsbGVyeUZpbHRlclxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltYWdlczogZmlsdGVyc1xuICAgICAgICAgICAgICAgID8ucmVkdWNlKFxuICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICBhY2M6IHsgbXVsdGltZWRpYTogYW55W107IGZpbHRlckluZGV4OiBudW1iZXIgfVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBhbnksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJJbmRleDogbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlci5tdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXVsdGltZWRpYVdpdGhGaWx0ZXIgPSBmaWx0ZXIubXVsdGltZWRpYS5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBmaWx0ZXJJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYTogbXVsdGltZWRpYVdpdGhGaWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmZsYXRNYXAoKHsgbXVsdGltZWRpYSB9OiBhbnkpID0+IG11bHRpbWVkaWEpXG4gICAgICAgICAgICAgICAgLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGltZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBpbWc/LmZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb1VybDogaW1nLnZpZGVvVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkdhbGxlcnlJdGVtXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uR2xvYWJsc0dhbGxlcnlGaWx0ZXI7XG4gICAgfVxuXG4gICAgbWFwR2xvYmFsQ29uc3VsdFR5cGVzKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBuZFByb3BzQ29uc3VsdDogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogYW55IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgY29uc3VsdFR5cGVzID0gcHJvcHM/LmNvbnN1bHRUeXBlcz8uWzBdPy5jb25zdWx0VHlwZUlkXG4gICAgICAgICAgICA/IHByb3BzPy5jb25zdWx0VHlwZXNcbiAgICAgICAgICAgIDogcHJvcHM/Lmxlbmd0aCAmJiBwcm9wcz8uWzBdPy5jb25zdWx0VHlwZXNcbiAgICAgICAgICAgICAgPyBwcm9wc1xuICAgICAgICAgICAgICA6IG5kUHJvcHNDb25zdWx0O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgb3B0aW9uczogY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bHRUeXBlSWQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcC5jb25zdWx0X3R5cGVfaWQgPz8gcHJvcC5jb25zdWx0VHlwZUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogcHJvcC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByb3AubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5kcm9wZG93blBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JSZXF1aXJlZCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBHbG9iYWxEZXN0aW5hdGlvbnMoXG4gICAgICAgIGRlc3RpbmF0aW9uczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkRlc3RpbmF0aW9uSVtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFkZXN0aW5hdGlvbnMpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgICAgY29uc3Qgbm9ybWFsaXplRGVzdGluYXRpb24gPSAoXG4gICAgICAgICAgICBkOiBhbnksXG4gICAgICAgICAgICBpbmRleDogbnVtYmVyXG4gICAgICAgICk6IEJhYnlsb25EZXN0aW5hdGlvbkkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBkID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogZCxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFtdLFxuICAgICAgICAgICAgICAgICAgICBob3RlbHM6IFtdLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0czoge30sXG4gICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uRGVzdGluYXRpb25JO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGlkOiBkPy5pZCA/PyBpbmRleCxcbiAgICAgICAgICAgICAgICBuYW1lOiBkPy5uYW1lID8/IGQ/LnRpdGxlID8/ICcnLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoZD8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoZD8ubGlua3MpLFxuICAgICAgICAgICAgICAgIG11bHRpbWVkaWE6IHRoaXMubWFwSW1hZ2VzKGQ/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgICAgIGhvdGVsczogdGhpcy5tYXBIb3RlbHNHbG9iYWwoZD8uaG90ZWxzKSxcbiAgICAgICAgICAgICAgICB0ZXh0czogZD8udGV4dHNcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLm1hcEdsb2JhbFRleHRzKGQ/LnRleHRzKVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMubWFwR2xvYmFsVGV4dHMoZCksXG4gICAgICAgICAgICB9IGFzIEJhYnlsb25EZXN0aW5hdGlvbkk7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGVzdGluYXRpb25zKSkge1xuICAgICAgICAgICAgY29uc3QgbG9va3NMaWtlRmxhdExpc3QgPSBkZXN0aW5hdGlvbnMuZXZlcnkoXG4gICAgICAgICAgICAgICAgKHgpID0+XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiB4ID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgICAgICAgICAgICAoeCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKHguaWQgIT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgubmFtZSAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeC50aXRsZSAhPT0gdW5kZWZpbmVkKSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChsb29rc0xpa2VGbGF0TGlzdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbnMubWFwKG5vcm1hbGl6ZURlc3RpbmF0aW9uKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdG9MaXN0ID0gKGdyb3VwOiBhbnkpOiBhbnlbXSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZ3JvdXApKSByZXR1cm4gZ3JvdXA7XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZ3JvdXA/Lml0ZW1zKSkgcmV0dXJuIGdyb3VwLml0ZW1zO1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGdyb3VwPy5kZXN0aW5hdGlvbnMpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ3JvdXAuZGVzdGluYXRpb25zO1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbnMuZmxhdE1hcCgoZ3JvdXA6IGFueSkgPT5cbiAgICAgICAgICAgICAgICB0b0xpc3QoZ3JvdXApLm1hcChub3JtYWxpemVEZXN0aW5hdGlvbilcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkZXN0aW5hdGlvbnM/Lml0ZW1zKSlcbiAgICAgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbnMuaXRlbXMubWFwKG5vcm1hbGl6ZURlc3RpbmF0aW9uKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGVzdGluYXRpb25zPy5kZXN0aW5hdGlvbnMpKVxuICAgICAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9ucy5kZXN0aW5hdGlvbnMubWFwKG5vcm1hbGl6ZURlc3RpbmF0aW9uKTtcblxuICAgICAgICByZXR1cm4gW25vcm1hbGl6ZURlc3RpbmF0aW9uKGRlc3RpbmF0aW9ucywgMCldO1xuICAgIH1cblxuICAgIG1hcEdsb2JhbFRleHRzKHRleHRzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uVGV4dEluZm9JIHtcbiAgICAgICAgaWYgKCF0ZXh0cykgcmV0dXJuIHt9IGFzIEJhYnlsb25UZXh0SW5mb0k7XG5cbiAgICAgICAgY29uc3QgbG95YWx0eVRhYmxlVGV4dHMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyh0ZXh0cylcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChba2V5XSkgPT5cbiAgICAgICAgICAgICAgICAgICAgL150YWJsYWZpZGVsaXphY2luXyh0aXR1bG98ZGVzY3JpcGNpb258c3VidGl0dWxvfHRleHRvKVxcZCskLy50ZXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBba2V5LCB0aGlzLmdldFRleHRWYWx1ZSh2YWx1ZSldKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIEHDsWFkaXIgZGluw6FtaWNhbWVudGUgbGFzIGhlYWRpbmdfdGFnX3trZXl9IGRldGVjdGFkYXNcbiAgICAgICAgY29uc3QgaGVhZGluZ1RhZ3MgPSB0aGlzLmV4dHJhY3RIZWFkaW5nVGFncyh0ZXh0cyk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ucHJldGl0bGUgPz8gdGV4dHM/LlByZXRpdHVsbyksXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnRpdGxlID8/IHRleHRzPy5UaXR1bG8pLFxuICAgICAgICAgICAgdGl0bGUxOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udGl0bGUxKSxcbiAgICAgICAgICAgIHRpdGxlMjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnRpdGxlMiksXG4gICAgICAgICAgICB0aXRsZTM6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy50aXRsZTMpLFxuICAgICAgICAgICAgc3VidGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5zdWJ0aXRsZSksXG4gICAgICAgICAgICBuYW1lOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubmFtZSksXG4gICAgICAgICAgICBtb3JlSW5mb1RleHQ6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5tb3JlSW5mb1RleHQpLFxuICAgICAgICAgICAgb2ZmZXJUYWc6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5vZmZlclRhZyksXG4gICAgICAgICAgICB0ZXh0OiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udGV4dCA/PyB0ZXh0cz8uVGV4dG8pLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5kZXNjcmlwdGlvbiksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjE6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5kZXNjcmlwdGlvbjEpLFxuICAgICAgICAgICAgZGVzY3JpcHRpb24yOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uZGVzY3JpcHRpb24yKSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uMzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmRlc2NyaXB0aW9uMyksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbnRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uZGVzY3JpcHRpb250aXRsZSksXG4gICAgICAgICAgICBjb250ZW50Q2hhcmFjdGVyaXN0aWNzOiB0ZXh0cz8uY29udGVudENoYXJhY3RlcmlzdGljcyxcbiAgICAgICAgICAgIGhpZGVJbmZvVGV4dDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmhpZGVJbmZvVGV4dCksXG4gICAgICAgICAgICBoaWRlVGV4dDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmhpZGRlbiksXG4gICAgICAgICAgICBpdGVtMTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lml0ZW0xKSxcbiAgICAgICAgICAgIGl0ZW0xVGV4dDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lml0ZW0xVGV4dCksXG4gICAgICAgICAgICBtYW5kYXRvcnlUZXh0OiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubWFuZGF0b3J5VGV4dCksXG4gICAgICAgICAgICBub3RlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubm90ZSksXG4gICAgICAgICAgICBjb25kaXRpb25zVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5jb25kaXRpb25zVGl0bGUpLFxuICAgICAgICAgICAgYWRkaXRpb25hbDogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmFkZGl0aW9uYWwgPz8gdGV4dHM/LkFkZGl0aW9uYWxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBhZGRpdGlvbmFsMTogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmFkZGl0aW9uYWwxID8/IHRleHRzPy5BZGRpdGlvbmFsMVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWwyOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uYWRkaXRpb25hbDIgPz8gdGV4dHM/LkFkZGl0aW9uYWwyXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYWRkaXRpb25hbDM6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5hZGRpdGlvbmFsMyA/PyB0ZXh0cz8uQWRkaXRpb25hbDNcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5jb25kaXRpb25zKSxcbiAgICAgICAgICAgIGNvbmRpdGlvbnNFcnJvcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNvbmRpdGlvbnNFcnJvciksXG4gICAgICAgICAgICB1cmw6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy51cmwpLFxuXG4gICAgICAgICAgICBhZHZhbnRhZ2VzdGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5hZHZhbnRhZ2VzdGl0bGUpLFxuICAgICAgICAgICAgYWR2YW50YWdlc3N1YnRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uYWR2YW50YWdlc3N1YnRpdGxlKSxcblxuICAgICAgICAgICAgbGV2ZWwxOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubGV2ZWwxID8/IHRleHRzPy5sZXZlMSksXG4gICAgICAgICAgICBsZXZlbDI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5sZXZlbDIgPz8gdGV4dHM/LmxldmUyKSxcbiAgICAgICAgICAgIGxldmVsMzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmxldmVsMyA/PyB0ZXh0cz8ubGV2ZTMpLFxuICAgICAgICAgICAgbGV2ZTE6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5sZXZlMSksXG4gICAgICAgICAgICBsZXZlMjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmxldmUyKSxcbiAgICAgICAgICAgIGxldmUzOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubGV2ZTMpLFxuXG4gICAgICAgICAgICB3aGF0c2FwcDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LndoYXRzYXBwKSxcbiAgICAgICAgICAgIHNjcm9sbHRleHQ6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5zY3JvbGx0ZXh0ID8/IHRleHRzPy5zY3JvbGxEb3duXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBhZGRyZXNzOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uYWRkcmVzcyksXG4gICAgICAgICAgICBhZGRyZXNzdGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5hZGRyZXNzdGl0bGUgPz8gdGV4dHM/LmFkZHJlc3NUaXRsZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJhbm5lcnRleHQ6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5iYW5uZXJ0ZXh0KSxcbiAgICAgICAgICAgIGNvbnRhY3R0aXRsZTogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmNvbnRhY3R0aXRsZSA/PyB0ZXh0cz8uY29udGFjdFRpdGxlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29weXJpZ2h0dGV4dDogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmNvcHlyaWdodHRleHQgPz8gdGV4dHM/LmNvcHlyaWdodFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRvcEJ1dHRvbjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnRvcEJ1dHRvbiksXG4gICAgICAgICAgICBhYm91dFRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uYWJvdXRUaXRsZSksXG4gICAgICAgICAgICBncnVwb1RpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uZ3J1cG9UaXRsZSksXG4gICAgICAgICAgICBoZWxwVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5oZWxwVGl0bGUpLFxuICAgICAgICAgICAgY29udGFjdE9mZmljZVRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY29udGFjdE9mZmljZVRpdGxlKSxcblxuICAgICAgICAgICAgdGV4dEFkakN2OiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udGV4dEFkakN2KSxcbiAgICAgICAgICAgIHRleHRBZGpDdkVycm9yOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udGV4dEFkakN2RXJyb3IpLFxuICAgICAgICAgICAgU2VsZWN0SXRlbVRleHQ6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5TZWxlY3RJdGVtVGV4dCksXG5cbiAgICAgICAgICAgIC8vIFNWRyAvIGVzcGVjaWFsZXNcbiAgICAgICAgICAgIHN2ZzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnN2ZyksXG4gICAgICAgICAgICBzZWxlY3RvclRleHRzOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc2VsZWN0b3JUZXh0cyksXG5cbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z2ljb24xOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3ZnaWNvbjFcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBmZWF0dXJlcGlsbHNudW1iZXJTdmdpY29uMjogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z2ljb24yXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3ZnaWNvbjM6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5mZWF0dXJlcGlsbHNudW1iZXJTdmdpY29uM1xuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3ZnbnVtYmVyMTogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z251bWJlcjFcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBmZWF0dXJlcGlsbHNudW1iZXJTdmdudW1iZXIyOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3ZnbnVtYmVyMlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z251bWJlcjM6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5mZWF0dXJlcGlsbHNudW1iZXJTdmdudW1iZXIzXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBmZWF0dXJlcGlsbHNudW1iZXJTdmduYW1lMTogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z25hbWUxXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3ZnbmFtZTI6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5mZWF0dXJlcGlsbHNudW1iZXJTdmduYW1lMlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z25hbWUzOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3ZnbmFtZTNcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z3N1YnRpdGxlMTogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z3N1YnRpdGxlMVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z3N1YnRpdGxlMjogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z3N1YnRpdGxlMlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z3N1YnRpdGxlMzogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z3N1YnRpdGxlM1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHBvcnRhZGFob3RlbHYxdmlkZW86IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5wb3J0YWRhaG90ZWx2MXZpZGVvKSxcblxuICAgICAgICAgICAgdG9wc2xpZGVydmlkZW92MnN2ZzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnRvcHNsaWRlcnZpZGVvdjJzdmcpLFxuICAgICAgICAgICAgdG9wc2xpZGVydmlkZW92MnZpZGVvOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8udG9wc2xpZGVydmlkZW92MnZpZGVvXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBvbmx5QWR1bHRzOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ub25seUFkdWx0cyksXG4gICAgICAgICAgICBob3RlbENhdGVnb3J5OiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaG90ZWxDYXRlZ29yeSksXG4gICAgICAgICAgICBob3RlbFR5cGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ob3RlbFR5cGUpLFxuICAgICAgICAgICAgZGVzdGluYXRpb25zOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uZGVzdGluYXRpb25zKSxcbiAgICAgICAgICAgIGNsZWFuRmlsdGVyczogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNsZWFuRmlsdGVycyksXG4gICAgICAgICAgICBub3RGb3VuZDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm5vdEZvdW5kKSxcbiAgICAgICAgICAgIGNvbnRhY3RFbWFpbDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNvbnRhY3RFbWFpbCksXG4gICAgICAgICAgICBjb250YWN0T2ZmaWNlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY29udGFjdE9mZmljZSksXG4gICAgICAgICAgICBjb250YWN0VGVsOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY29udGFjdFRlbCksXG4gICAgICAgICAgICBtYXJjYTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm1hcmNhKSxcblxuICAgICAgICAgICAgZXJyb3JSZWdpc3RlclN1YnNjcmliZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5FcnJvclJlZ2lzdGVyU3Vic2NyaWJlclxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGVycm9yc3Vic2NyaWJlcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LkVycm9yc3Vic2NyaWJlciksXG4gICAgICAgICAgICBpbnB1dExhYmVsOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaW5wdXRMYWJlbCksXG4gICAgICAgICAgICBpbnB1dFBsYWNlaG9sZGVyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaW5wdXRQbGFjZWhvbGRlciksXG4gICAgICAgICAgICBuZXdzRXJyb3JFbWFpbDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm5ld3NFcnJvckVtYWlsKSxcbiAgICAgICAgICAgIHN1Y2Nlc3NzdWJzY3JpYmVyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc3VjY2Vzc3N1YnNjcmliZXIpLFxuXG4gICAgICAgICAgICBtYXBVcmw6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5tYXBVcmwgPz8gdGV4dHM/Lm1hcHVybCksXG4gICAgICAgICAgICByb29tczogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnJvb21zKSxcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5jYXRlZ29yaWVzKSxcbiAgICAgICAgICAgIGFsbDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmFsbCksXG5cbiAgICAgICAgICAgIGhvd0dldERlc2NyaXB0aW9uOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaG93R2V0RGVzY3JpcHRpb24pLFxuICAgICAgICAgICAgaG93R2V0RGVzY3JpcHRpb24yOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaG93R2V0RGVzY3JpcHRpb24yKSxcbiAgICAgICAgICAgIGhvd0dldFRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaG93R2V0VGl0bGUpLFxuICAgICAgICAgICAgaG93R2V0VGl0bGUyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaG93R2V0VGl0bGUyKSxcbiAgICAgICAgICAgIGNvbnRhY3REZXNjcmlwdGlvbjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNvbnRhY3REZXNjcmlwdGlvbiksXG4gICAgICAgICAgICBjb250YWN0VGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5jb250YWN0VGl0bGUpLFxuXG4gICAgICAgICAgICBuZXdzbGV0dGVyRXJyb3I6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5uZXdzbGV0dGVyRXJyb3IpLFxuICAgICAgICAgICAgbmV3c2xldHRlckZhaWw6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5uZXdzbGV0dGVyRmFpbCksXG4gICAgICAgICAgICBuZXdzbGV0dGVyU3VjY2Vzc2Z1bGw6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5uZXdzbGV0dGVyU3VjY2Vzc2Z1bGxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBuZXdzbGV0dGVyVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5uZXdzbGV0dGVyVGl0bGUpLFxuICAgICAgICAgICAgZXZlbnRzOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uZXZlbnRzKSxcblxuICAgICAgICAgICAgYWRkcmVzc1RpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uYWRkcmVzc1RpdGxlKSxcbiAgICAgICAgICAgIGFkZHJlc3NMaW5lczogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmFkZHJlc3NMaW5lcyksXG5cbiAgICAgICAgICAgIHJlY2VwdGlvblRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ucmVjZXB0aW9uVGl0bGUpLFxuICAgICAgICAgICAgZ3BzVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ncHNUaXRsZSksXG4gICAgICAgICAgICBmb2xsb3dUaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmZvbGxvd1RpdGxlKSxcbiAgICAgICAgICAgIGhvd1RvVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ob3dUb1RpdGxlKSxcbiAgICAgICAgICAgIGhvd1RvUHJldGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ob3dUb1ByZXRpdGxlKSxcbiAgICAgICAgICAgIGZpcnN0VGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5maXJzdFRpdGxlKSxcbiAgICAgICAgICAgIHNlY29uZFRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc2Vjb25kVGl0bGUpLFxuICAgICAgICAgICAgdGhpcmRUaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnRoaXJkVGl0bGUpLFxuICAgICAgICAgICAgZmlyc3REZXNjcmlwdGlvbjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmZpcnN0RGVzY3JpcHRpb24pLFxuICAgICAgICAgICAgc2Vjb25kRGVzY3JpcHRpb246IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5zZWNvbmREZXNjcmlwdGlvbiksXG4gICAgICAgICAgICB0aGlyZERlc2NyaXB0aW9uOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udGhpcmREZXNjcmlwdGlvbiksXG4gICAgICAgICAgICBjb250YWN0SW5mbzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNvbnRhY3RJbmZvKSxcbiAgICAgICAgICAgIHNvY2lhbFRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc29jaWFsVGl0bGUpLFxuICAgICAgICAgICAgbGF0aXR1ZGVUaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmxhdGl0dWRlVGl0bGUpLFxuICAgICAgICAgICAgbG9uZ2l0dWRlVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5sb25naXR1ZGVUaXRsZSksXG4gICAgICAgICAgICBzZWNvbmRhcnlUaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnNlY29uZGFyeVRpdGxlKSxcbiAgICAgICAgICAgIHNlY29uZGFyeVByZXRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc2Vjb25kYXJ5UHJldGl0bGUpLFxuICAgICAgICAgICAgc2NoZWR1bGVJbmZvOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc2NoZWR1bGVJbmZvKSxcbiAgICAgICAgICAgIG9uZUVsZW1lbnQ6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5vbmVFbGVtZW50KSxcbiAgICAgICAgICAgIHJlY2VwdGlvbjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnJlY2VwdGlvbiksXG5cbiAgICAgICAgICAgIHJvb21UaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnJvb21UaXRsZSksXG4gICAgICAgICAgICBjYW5jZWxUZXh0OiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY2FuY2VsVGV4dCksXG4gICAgICAgICAgICBkb3dubG9hZFNlbGVjdGVkVGV4dDogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmRvd25sb2FkU2VsZWN0ZWRUZXh0XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZXhpdFRleHQ6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5leGl0VGV4dCksXG4gICAgICAgICAgICBzZWxlY3RBbGxUZXh0OiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc2VsZWN0QWxsVGV4dCksXG4gICAgICAgICAgICBzaW5nbGVTZWxlY3RUZXh0OiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc2luZ2xlU2VsZWN0VGV4dCksXG4gICAgICAgICAgICBuZERlc2NyaXB0aW9uOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8ubmREZXNjcmlwdGlvbiA/PyB0ZXh0cz8ubmRkZXNjcmlwdGlvblxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgLy8gQ29tcGF0aWJpbGlkYWQgZXhwbMOtY2l0YSBwYXJhIG3Ds2R1bG9zIGxlZ2FjeSBjb24gY2xhdmVzIGVuIGNhc3RlbGxhbm9cbiAgICAgICAgICAgIFByZXRpdHVsbzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LlByZXRpdHVsbyksXG4gICAgICAgICAgICBUaXR1bG86IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5UaXR1bG8pLFxuICAgICAgICAgICAgVGV4dG86IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5UZXh0byksXG4gICAgICAgICAgICAnVGl0dWxvLW9mZXJ0YXMnOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uWydUaXR1bG8tb2ZlcnRhcyddKSxcbiAgICAgICAgICAgICdUaXR1bG8tZGV0YWxsZS0xJzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LlsnVGl0dWxvLWRldGFsbGUtMSddKSxcbiAgICAgICAgICAgICdUaXR1bG8tZGV0YWxsZS0yJzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LlsnVGl0dWxvLWRldGFsbGUtMiddKSxcbiAgICAgICAgICAgICdUaXR1bG8tZGV0YWxsZS0zJzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LlsnVGl0dWxvLWRldGFsbGUtMyddKSxcbiAgICAgICAgICAgICdUaXR1bG8tZGV0YWxsZS00JzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LlsnVGl0dWxvLWRldGFsbGUtNCddKSxcbiAgICAgICAgICAgICdUw610dWxvLWRldGFsbGUtMSc6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5bJ1TDrXR1bG8tZGV0YWxsZS0xJ10pLFxuICAgICAgICAgICAgJ1TDrXR1bG8tZGV0YWxsZS0yJzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LlsnVMOtdHVsby1kZXRhbGxlLTInXSksXG4gICAgICAgICAgICAnVMOtdHVsby1kZXRhbGxlLTMnOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uWydUw610dWxvLWRldGFsbGUtMyddKSxcbiAgICAgICAgICAgICdUw610dWxvLWRldGFsbGUtNCc6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5bJ1TDrXR1bG8tZGV0YWxsZS00J10pLFxuICAgICAgICAgICAgJ1N1YnRpdHVsby1kZXRhbGxlLTEnOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydTdWJ0aXR1bG8tZGV0YWxsZS0xJ11cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAnU3VidGl0dWxvLWRldGFsbGUtMic6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ1N1YnRpdHVsby1kZXRhbGxlLTInXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdTdWJ0aXR1bG8tZGV0YWxsZS0zJzogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LlsnU3VidGl0dWxvLWRldGFsbGUtMyddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ1N1YnRpdHVsby1kZXRhbGxlLTQnOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydTdWJ0aXR1bG8tZGV0YWxsZS00J11cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAnU3Viw610dWxvLWRldGFsbGUtMSc6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ1N1YsOtdHVsby1kZXRhbGxlLTEnXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdTdWLDrXR1bG8tZGV0YWxsZS0yJzogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LlsnU3Viw610dWxvLWRldGFsbGUtMiddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ1N1YsOtdHVsby1kZXRhbGxlLTMnOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydTdWLDrXR1bG8tZGV0YWxsZS0zJ11cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAnU3Viw610dWxvLWRldGFsbGUtNCc6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ1N1YsOtdHVsby1kZXRhbGxlLTQnXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdTdWJpdHVsby1kZXRhbGxlLTEnOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydTdWJpdHVsby1kZXRhbGxlLTEnXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdTdWJpdHVsby1kZXRhbGxlLTInOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydTdWJpdHVsby1kZXRhbGxlLTInXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdTdWJpdHVsby1kZXRhbGxlLTMnOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydTdWJpdHVsby1kZXRhbGxlLTMnXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdTdWJpdHVsby1kZXRhbGxlLTQnOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydTdWJpdHVsby1kZXRhbGxlLTQnXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdEZXNjcmlwY2lvbi1kZXRhbGxlLTEnOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydEZXNjcmlwY2lvbi1kZXRhbGxlLTEnXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdEZXNjcmlwY2lvbi1kZXRhbGxlLTInOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydEZXNjcmlwY2lvbi1kZXRhbGxlLTInXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdEZXNjcmlwY2lvbi1kZXRhbGxlLTMnOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydEZXNjcmlwY2lvbi1kZXRhbGxlLTMnXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdEZXNjcmlwY2lvbi1kZXRhbGxlLTQnOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydEZXNjcmlwY2lvbi1kZXRhbGxlLTQnXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdEZXNjcmlwY2nDs24tZGV0YWxsZS0xJzogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LlsnRGVzY3JpcGNpw7NuLWRldGFsbGUtMSddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ0Rlc2NyaXBjacOzbi1kZXRhbGxlLTInOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydEZXNjcmlwY2nDs24tZGV0YWxsZS0yJ11cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAnRGVzY3JpcGNpw7NuLWRldGFsbGUtMyc6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ0Rlc2NyaXBjacOzbi1kZXRhbGxlLTMnXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdEZXNjcmlwY2nDs24tZGV0YWxsZS00JzogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LlsnRGVzY3JpcGNpw7NuLWRldGFsbGUtNCddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaWNvbjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lmljb24pLFxuICAgICAgICAgICAgY29tcG9mZXJ0YXNfaWNvbjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNvbXBvZmVydGFzX2ljb24pLFxuICAgICAgICAgICAgLi4ubG95YWx0eVRhYmxlVGV4dHMsXG5cbiAgICAgICAgICAgIG5leHQ6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5uZXh0KSxcbiAgICAgICAgICAgIHByZXY6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5wcmV2KSxcbiAgICAgICAgICAgIGRvd25sb2FkOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uZG93bmxvYWQpLFxuICAgICAgICAgICAgbmRUaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm5kVGl0bGUgPz8gdGV4dHM/Lm5kdGl0bGUpLFxuICAgICAgICAgICAgbWFpblRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubWFhaW5UaXRsZSksXG5cbiAgICAgICAgICAgIGF0dGFjaEZpbGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5hdHRhY2hGaWxlKSxcbiAgICAgICAgICAgIGF0dGFjaG1lbnQ6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5hdHRhY2htZW50KSxcbiAgICAgICAgICAgIGF0dGFjaG1lbnRFcnJvcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmF0dGFjaG1lbnRFcnJvciksXG4gICAgICAgICAgICBhdHRhY2htZW50UGxhY2Vob2xkZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5hdHRhY2htZW50UGxhY2Vob2xkZXJcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjaGVja2JveDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNoZWNrYm94KSxcbiAgICAgICAgICAgIGNoZWNrYm94MjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNoZWNrYm94MiksXG4gICAgICAgICAgICBjaGVja2JveDJFcnJvcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNoZWNrYm94MkVycm9yKSxcbiAgICAgICAgICAgIGNoZWNrYm94RXJyb3I6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5jaGVja2JveEVycm9yKSxcbiAgICAgICAgICAgIGRyb3Bkb3duRXJyb3I6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5kcm9wZG93bkVycm9yKSxcbiAgICAgICAgICAgIGRyb3Bkb3duUGxhY2Vob2xkZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5kcm9wZG93blBsYWNlaG9sZGVyKSxcbiAgICAgICAgICAgIGRyb3Bkb3duUGxhY2Vob2xkZXIyOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZHJvcGRvd25QbGFjZWhvbGRlcjJcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBlbWFpbDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmVtYWlsKSxcbiAgICAgICAgICAgIGVtYWlsRXJyb3I6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5lbWFpbEVycm9yKSxcbiAgICAgICAgICAgIGVtYWlsUGxhY2Vob2xkZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5lbWFpbFBsYWNlaG9sZGVyKSxcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmVycm9yTWVzc2FnZSksXG4gICAgICAgICAgICBqb2luVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5qb2luVGl0bGUpLFxuICAgICAgICAgICAgbGFzdE5hbWU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5sYXN0TmFtZSksXG4gICAgICAgICAgICBsYXN0TmFtZUVycm9yOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubGFzdE5hbWVFcnJvciksXG4gICAgICAgICAgICBsYXN0TmFtZVBsYWNlaG9sZGVyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubGFzdE5hbWVQbGFjZWhvbGRlciksXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubWVzc2FnZSksXG4gICAgICAgICAgICBtZXNzYWdlRXJyb3I6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5tZXNzYWdlRXJyb3IpLFxuICAgICAgICAgICAgbWVzc2FnZVBsYWNlaG9sZGVyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubWVzc2FnZVBsYWNlaG9sZGVyKSxcbiAgICAgICAgICAgIG5hbWVFcnJvcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm5hbWVFcnJvciksXG4gICAgICAgICAgICBuYW1lUGxhY2Vob2xkZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5uYW1lUGxhY2Vob2xkZXIpLFxuICAgICAgICAgICAgcGhvbmU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5waG9uZSksXG4gICAgICAgICAgICBwaG9uZUVycm9yOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ucGhvbmVFcnJvciksXG4gICAgICAgICAgICBwaG9uZVBsYWNlaG9sZGVyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ucGhvbmVQbGFjZWhvbGRlciksXG4gICAgICAgICAgICBwcmVzZW50YWNpb246IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5wcmVzZW50YWNpb24pLFxuICAgICAgICAgICAgcHJlc2VudGFjaW9uUGxhY2Vob2xkZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5wcmVzZW50YWNpb25QbGFjZWhvbGRlclxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHJlcXVpcmVkRmllbGQ6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5yZXF1aXJlZEZpZWxkKSxcbiAgICAgICAgICAgIHN1Ym1pdDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnN1Ym1pdCksXG4gICAgICAgICAgICBzdWNjZXNzTWVzc2FnZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnN1Y2Nlc3NNZXNzYWdlKSxcblxuICAgICAgICAgICAgc2VydmljZXN0aXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnNlcnZpY2VzdGl0bGUpLFxuICAgICAgICAgICAgaGlkZXNlcnZpY2VzOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaGlkZXNlcnZpY2VzKSxcbiAgICAgICAgICAgIHNob3dzZXJ2aWNlczogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnNob3dzZXJ2aWNlcyksXG4gICAgICAgICAgICBzZXJ2aWNlc09uRmlsdGVyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc2VydmljZXNPbkZpbHRlciksXG5cbiAgICAgICAgICAgIGluZm9CdXR0b246IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5pbmZvQnV0dG9uKSxcbiAgICAgICAgICAgIGFsd2F5c29wZW46IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5hbHdheXNvcGVuKSxcbiAgICAgICAgICAgIG9wZW50ZXh0OiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ub3BlbnRleHQpLFxuXG4gICAgICAgICAgICAuLi5oZWFkaW5nVGFncyxcbiAgICAgICAgfSBhcyBCYWJ5bG9uVGV4dEluZm9JO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBCdXNjYSBlbiB0ZXh0cyB0b2RhcyBsYXMgcHJvcGllZGFkZXMgcXVlIHNlYW4gb2JqZXRvIHkgdGVuZ2FuIGNvbnRhaW4geS9vIHRhZyxcbiAgICAgKiB5IGRldnVlbHZlIHVuIG9iamV0byBjb24gY2xhdmVzIGhlYWRpbmdfdGFnX3trZXl9IHkgdmFsb3IgeyBjb250ZW50LCB0YWcgfVxuICAgICAqL1xuICAgIHByaXZhdGUgZXh0cmFjdEhlYWRpbmdUYWdzKFxuICAgICAgICB0ZXh0czogYW55XG4gICAgKTogUmVjb3JkPHN0cmluZywgeyBjb250ZW50OiBzdHJpbmc7IHRhZz86IHN0cmluZyB9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgeyBjb250ZW50OiBzdHJpbmc7IHRhZz86IHN0cmluZyB9PiA9IHt9O1xuICAgICAgICBpZiAoIXRleHRzIHx8IHR5cGVvZiB0ZXh0cyAhPT0gJ29iamVjdCcpIHJldHVybiByZXN1bHQ7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRleHRzKSkge1xuICAgICAgICAgICAgY29uc3QgdmFsID0gdGV4dHNba2V5XTtcbiAgICAgICAgICAgIGlmICh2YWwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgJ2NvbnRhaW4nIGluIHZhbCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtgaGVhZGluZ190YWdfJHtrZXl9YF0gPSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHZhbC5jb250YWluLFxuICAgICAgICAgICAgICAgICAgICB0YWc6IHZhbC50YWcsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VGV4dFZhbHVlKHRleHQ6IGFueSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghdGV4dCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICAvLyBzdHJpbmcgcGxhbm9cbiAgICAgICAgaWYgKHR5cGVvZiB0ZXh0ID09PSAnc3RyaW5nJykgcmV0dXJuIHRleHQ7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRleHQ/LnZhbHVlID8/XG4gICAgICAgICAgICB0ZXh0Py50ZXh0ID8/XG4gICAgICAgICAgICB0ZXh0Py5sYWJlbCA/P1xuICAgICAgICAgICAgdGV4dD8uY29udGFpbiA/P1xuICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNUZXh0VG9rZW5WYWx1ZSh0ZXh0OiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0ZXh0KSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgdmFsdWUgPVxuICAgICAgICAgICAgdHlwZW9mIHRleHQgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgPyB0ZXh0XG4gICAgICAgICAgICAgICAgOiAodGV4dD8uY29udGFpbiA/PyB0ZXh0Py52YWx1ZSA/PyB0ZXh0Py50ZXh0ID8/IHRleHQ/LmxhYmVsKTtcblxuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlPy50cmltKCkubGVuZ3RoID4gMCA6ICEhdmFsdWU7XG4gICAgfVxuXG4gICAgbWFwQ29uc3VsdFR5cGVzR2xvYmFsKGNvbnN1bHRzOiBhbnkgfCB1bmRlZmluZWQpOiBDb25zdWx0VHlwZUlbXSB7XG4gICAgICAgIHJldHVybiBjb25zdWx0cz8ubWFwKFxuICAgICAgICAgICAgKGNvbnN1bHQ6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICBpZDogY29uc3VsdD8uaWQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvbnN1bHQ/Lm5hbWUsXG4gICAgICAgICAgICAgICAgfSkgYXMgQ29uc3VsdFR5cGVJXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbWFwSG90ZWxHbG9iYWwoaG90ZWw6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Ib3RlbEdsb2JhbEl0ZW0ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWQ6IGhvdGVsPy5pZCxcbiAgICAgICAgICAgIG5hbWU6IGhvdGVsPy5uYW1lLFxuICAgICAgICAgICAgb3JkZXI6IGhvdGVsPy5vcmRlcixcbiAgICAgICAgICAgIHRleHRzOiB0aGlzLm1hcEdsb2JhbFRleHRzKGhvdGVsPy50ZXh0cykgYXMgQmFieWxvblRleHRJbmZvSSxcbiAgICAgICAgICAgIG11bHRpbWVkaWE6IHRoaXMubWFwTXVsdGltZWRpYShob3RlbD8ubXVsdGltZWRpYSksXG4gICAgICAgICAgICBpbWFnZXM6IGhvdGVsPy5tdWx0aW1lZGlhPy5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IHRoaXMubWFwTXVsdGltZWRpYShob3RlbD8ubXVsdGltZWRpYSlcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGhvdGVsPy5saW5rID8/IGhvdGVsPy5saW5rcyksXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGhvdGVsPy5idXR0b25zKSxcbiAgICAgICAgICAgIGVtYWlsOiBob3RlbD8uZW1haWwsXG4gICAgICAgICAgICBhZGRlc3M6IGhvdGVsPy5hZGRyZXNzLFxuXG4gICAgICAgICAgICBhbGxJbmNsdXNpdmU6IGhvdGVsPy5hbGxJbmNsdXNpdmUsXG4gICAgICAgICAgICBiZWFjaENsdWI6IGhvdGVsPy5iZWFjaENsdWIsXG4gICAgICAgICAgICBjaGVja0luVGltZTogaG90ZWw/LmNoZWNrSW5UaW1lLFxuICAgICAgICAgICAgY2hlY2tPdXRUaW1lOiBob3RlbD8uY2hlY2tPdXRUaW1lLFxuICAgICAgICAgICAgY2l0eTogaG90ZWw/LmNpdHksXG4gICAgICAgICAgICBjbG9zaW5nRnJvbTogaG90ZWw/LmNsb3NpbmdGcm9tLFxuICAgICAgICAgICAgY2xvc2luZ1RvOiBob3RlbD8uY2xvc2luZ1RvLFxuICAgICAgICAgICAgY291bnRyeTogaG90ZWw/LmNvdW50cnksXG4gICAgICAgICAgICBjcDogaG90ZWw/LmNwLFxuICAgICAgICAgICAgZGVzdGluYXRpb25zOiBob3RlbD8uZGVzdGluYXRpb25zLFxuICAgICAgICAgICAgaGlnaGxpZ2h0ZWQ6IGhvdGVsPy5oaWdobGlnaHRlZCxcbiAgICAgICAgICAgIGxhdDogaG90ZWw/LmxhdCxcbiAgICAgICAgICAgIGxvbjogaG90ZWw/LmxvbixcbiAgICAgICAgICAgIGxhdW5kcnk6IGhvdGVsPy5sYXVuZHJ5LFxuICAgICAgICAgICAgbG9jYWxpdHk6IGhvdGVsPy5sb2NhbGl0eSxcbiAgICAgICAgICAgIG1hcExpbms6IGhvdGVsPy5tYXBMaW5rLFxuICAgICAgICAgICAgb2ZmZXJzOiBob3RlbD8ub2ZmZXJzLFxuICAgICAgICAgICAgcGhvbmU6IGhvdGVsPy5waG9uZSxcbiAgICAgICAgICAgIHByb3ZpbmNlOiBob3RlbD8ucHJvdmluY2UsXG4gICAgICAgICAgICB0aWNrZXI6IGhvdGVsPy50aWNrZXIsXG4gICAgICAgICAgICBzaXRlSG90ZWxzOiBob3RlbD8uc2l0ZUhvdGVscyxcbiAgICAgICAgICAgIHNlcnZpY2VzQWR2YW50YWdlczogaG90ZWw/LnNlcnZpY2VzQWR2YW50YWdlcyxcbiAgICAgICAgICAgIHNlcnZpY2VzQ2hhcmFjdGVyaXN0aWNzOiBob3RlbD8uc2VydmljZXNDaGFyYWN0ZXJpc3RpY3MsXG4gICAgICAgICAgICBzZXJ2aWNlc0hvdGVsQXBwOiBob3RlbD8uc2VydmljZXNIb3RlbEFwcCxcbiAgICAgICAgICAgIHNlcnZpY2VzTGlzdDogaG90ZWw/LnNlcnZpY2VzTGlzdCxcbiAgICAgICAgICAgIHNlcnZpY2VzTG9jYXRpb246IGhvdGVsPy5zZXJ2aWNlc0xvY2F0aW9uLFxuICAgICAgICAgICAgc2VydmljZXNTZXJ2aWNlOiBob3RlbD8uc2VydmljZXNTZXJ2aWNlLFxuICAgICAgICAgICAgc3R5bGVzOiBob3RlbD8uc3R5bGVzLFxuICAgICAgICAgICAgb25seUFkdWx0czogaG90ZWw/Lm9ubHlBZHVsdHMsXG4gICAgICAgICAgICBldmVudHM6IHRoaXMubWFwR2xvYmFsSG90ZWxFdmVudHMoaG90ZWw/LmV2ZW50cyksXG4gICAgICAgICAgICBob3RlbGNhdGVnb3J5OiBob3RlbD8uaG90ZWxDYXRlZ29yeSA/PyBob3RlbD8uaG90ZWxjYXRlZ29yeSxcbiAgICAgICAgICAgIGhvdGVsdHlwZTogaG90ZWw/LmhvdGVsVHlwZSA/PyBob3RlbD8uaG90ZWx0eXBlLFxuICAgICAgICAgICAgbWFyY2E6IGhvdGVsPy5tYXJjYSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSG90ZWxHbG9iYWxJdGVtO1xuICAgIH1cblxuICAgIG1hcEhvdGVsc0dsb2JhbChob3RlbHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Ib3RlbEdsb2JhbEl0ZW1bXSB7XG4gICAgICAgIGlmICghaG90ZWxzKSByZXR1cm4gW107XG5cbiAgICAgICAgbGV0IGhvdGVsc0FycmF5OiBhbnlbXSA9IFtdO1xuXG4gICAgICAgIGNvbnN0IHJhd0hvdGVscyA9XG4gICAgICAgICAgICBob3RlbHM/LmRhdGEgJiYgQXJyYXkuaXNBcnJheShob3RlbHMuZGF0YSkgPyBob3RlbHMuZGF0YSA6IGhvdGVscztcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyYXdIb3RlbHMpKSB7XG4gICAgICAgICAgICBob3RlbHNBcnJheSA9IHJhd0hvdGVscztcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmF3SG90ZWxzID09PSAnb2JqZWN0JyAmJiByYXdIb3RlbHMgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICByYXdIb3RlbHNbMF0gfHxcbiAgICAgICAgICAgICAgICAoT2JqZWN0LmtleXMocmF3SG90ZWxzKS5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBPYmplY3QudmFsdWVzKHJhd0hvdGVscylbMF0gPT09ICdvYmplY3QnKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaG90ZWxzQXJyYXkgPSBPYmplY3QudmFsdWVzKHJhd0hvdGVscyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGhvdGVsc0FycmF5ID0gW3Jhd0hvdGVsc107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhvdGVsc0FycmF5XG4gICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgIChob3RlbDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGhvdGVsPy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGhvdGVsPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGhvdGVsPy5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzOiB0aGlzLm1hcEdsb2JhbFRleHRzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdGVsPy50ZXh0c1xuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBCYWJ5bG9uVGV4dEluZm9JLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYTogdGhpcy5tYXBNdWx0aW1lZGlhKGhvdGVsPy5tdWx0aW1lZGlhKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogaG90ZWw/Lm11bHRpbWVkaWE/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5tYXBNdWx0aW1lZGlhKGhvdGVsPy5tdWx0aW1lZGlhKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaG90ZWw/LmxpbmsgPz8gaG90ZWw/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaG90ZWw/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw6IGhvdGVsPy5lbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGVzczogaG90ZWw/LmFkZHJlc3MsXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbEluY2x1c2l2ZTogaG90ZWw/LmFsbEluY2x1c2l2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlYWNoQ2x1YjogaG90ZWw/LmJlYWNoQ2x1YixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSW5UaW1lOiBob3RlbD8uY2hlY2tJblRpbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja091dFRpbWU6IGhvdGVsPy5jaGVja091dFRpbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaXR5OiBob3RlbD8uY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NpbmdGcm9tOiBob3RlbD8uY2xvc2luZ0Zyb20sXG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9zaW5nVG86IGhvdGVsPy5jbG9zaW5nVG8sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiBob3RlbD8uY291bnRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNwOiBob3RlbD8uY3AsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbnM6IGhvdGVsPy5kZXN0aW5hdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRlZDogaG90ZWw/LmhpZ2hsaWdodGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGF0OiBob3RlbD8ubGF0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9uOiBob3RlbD8ubG9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGF1bmRyeTogaG90ZWw/LmxhdW5kcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGl0eTogaG90ZWw/LmxvY2FsaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwTGluazogaG90ZWw/Lm1hcExpbmssXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZlcnM6IGhvdGVsPy5vZmZlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBwaG9uZTogaG90ZWw/LnBob25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmluY2U6IGhvdGVsPy5wcm92aW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tlcjogaG90ZWw/LnRpY2tlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpdGVIb3RlbHM6IGhvdGVsPy5zaXRlSG90ZWxzLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZXNBZHZhbnRhZ2VzOiBob3RlbD8uc2VydmljZXNBZHZhbnRhZ2VzLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZXNDaGFyYWN0ZXJpc3RpY3M6IGhvdGVsPy5zZXJ2aWNlc0NoYXJhY3RlcmlzdGljcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzSG90ZWxBcHA6IGhvdGVsPy5zZXJ2aWNlc0hvdGVsQXBwLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZXNMaXN0OiBob3RlbD8uc2VydmljZXNMaXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZXNMb2NhdGlvbjogaG90ZWw/LnNlcnZpY2VzTG9jYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlc1NlcnZpY2U6IGhvdGVsPy5zZXJ2aWNlc1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM6IGhvdGVsPy5zdHlsZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbmx5QWR1bHRzOiBob3RlbD8ub25seUFkdWx0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50czogdGhpcy5tYXBHbG9iYWxIb3RlbEV2ZW50cyhob3RlbD8uZXZlbnRzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdGVsY2F0ZWdvcnk6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaG90ZWw/LmhvdGVsQ2F0ZWdvcnkgPz8gaG90ZWw/LmhvdGVsY2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBob3RlbHR5cGU6IGhvdGVsPy5ob3RlbFR5cGUgPz8gaG90ZWw/LmhvdGVsdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmNhOiBob3RlbD8ubWFyY2EsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Ib3RlbEdsb2JhbEl0ZW1cbiAgICAgICAgICAgIClcbiAgICAgICAgICAgID8uc29ydCgoYTogYW55LCBiOiBhbnkpID0+IChhLm9yZGVyIHx8IDk5OTkpIC0gKGIub3JkZXIgfHwgOTk5OSkpO1xuICAgIH1cblxuICAgIG1hcEdsb2JhbEhvdGVsRXZlbnRzKGV2ZW50czogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkV2ZW50SXRlbUlbXSB7XG4gICAgICAgIGlmICghZXZlbnRzKSByZXR1cm4gW107XG4gICAgICAgIGxldCBhcnI6IGFueVtdID0gW107XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGV2ZW50cykpIHtcbiAgICAgICAgICAgIGFyciA9IGV2ZW50cztcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZXZlbnRzID09PSAnb2JqZWN0JyAmJiBldmVudHMgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGFyciA9IE9iamVjdC52YWx1ZXMoZXZlbnRzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXJyXG4gICAgICAgICAgICAuZmlsdGVyKChldmVudDogYW55KSA9PiBldmVudCAmJiBldmVudC5uYW1lSWRlbnRpZmllcilcbiAgICAgICAgICAgIC5tYXAoKGV2ZW50OiBhbnkpID0+ICh7IG5hbWU6IGV2ZW50Lm5hbWVJZGVudGlmaWVyIH0pKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hcEdsb2JhbEl0ZW1zKHByb3BzOiBhbnkpOiBhbnkge1xuICAgICAgICAvLyBGdWVudGUgcHJpbmNpcGFsIGRlIGl0ZW1zXG4gICAgICAgIGNvbnN0IHJhd0l0ZW1zID1cbiAgICAgICAgICAgIHByb3BzPy5pdGVtcyA/P1xuICAgICAgICAgICAgcHJvcHM/Lkl0ZW1zID8/XG4gICAgICAgICAgICBwcm9wcz8uc2VydmljZXNTZXJ2aWNlID8/XG4gICAgICAgICAgICBwcm9wcz8udmVudGFqYXMgPz9cbiAgICAgICAgICAgIHByb3BzLlZlbnRhamFzID8/XG4gICAgICAgICAgICBwcm9wcy5hZHZhbnRhZ2VzID8/XG4gICAgICAgICAgICBwcm9wcy5BZHZhbnRhZ2VzID8/XG4gICAgICAgICAgICB1bmRlZmluZWQ7XG5cbiAgICAgICAgLy8gSW50ZW50YW1vcyBtYXBlYXIgaXRlbXMgaW1hZ2VuZXNcbiAgICAgICAgaWYgKCFyYXdJdGVtcyAmJiBwcm9wcz8ubXVsdGltZWRpYSkge1xuICAgICAgICAgICAgY29uc3QgbWFwcGVkSW1nID0gdGhpcy5tYXBJbWFnZXMocHJvcHM/Lm11bHRpbWVkaWEpO1xuICAgICAgICAgICAgaWYgKG1hcHBlZEltZyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hcHBlZEltZy5pbWFnZW5lcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEludGVudGFtb3MgbWFwZWFyIGl0ZW1zIGV4cGVyaWVuY2lhc1xuICAgICAgICBpZiAoIXJhd0l0ZW1zICYmIHByb3BzPy5leHBlcmllbmNlKSB7XG4gICAgICAgICAgICBjb25zdCBtYXBwZWRJdGVtcyA9IHRoaXMubWFwSXRlbXMocHJvcHM/LmV4cGVyaWVuY2UpO1xuICAgICAgICAgICAgaWYgKG1hcHBlZEl0ZW1zICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWFwcGVkSXRlbXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvL0ludGVudGFtb3MgbWFwZWFyIGl0ZW1zIOKAnG5vcm1hbGVz4oCdXG4gICAgICAgIGNvbnN0IG1hcHBlZEl0ZW1zID0gdGhpcy5tYXBJdGVtcyhyYXdJdGVtcyk7XG4gICAgICAgIGlmIChtYXBwZWRJdGVtcyAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFwcGVkSXRlbXM7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaSBubyBoYXkgaXRlbXMsIHByb2JhbW9zIGNvbiByb29tc1xuICAgICAgICBjb25zdCBtYXBwZWRSb29tcyA9IHRoaXMubWFwUm9vbURldGFpbHMocHJvcHM/LnJvb21zKTtcbiAgICAgICAgaWYgKG1hcHBlZFJvb21zICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBwZWRSb29tcztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIG9mZmVyc1xuICAgICAgICBjb25zdCBtYXBwZWRPZmZlcnMgPSB0aGlzLm1hcE9mZmVyc0dsb2JhbChwcm9wcz8ub2ZmZXJzKTtcbiAgICAgICAgaWYgKG1hcHBlZE9mZmVycyAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFwcGVkT2ZmZXJzO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gNSkgaG90ZWxlc1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBIb3RlbHNHbG9iYWwocHJvcHM/LmhvdGVscyk7XG4gICAgfVxuXG4gICAgbWFwQWRkcmVzcyhhZGRyZXNzOiBhbnkgfCBhbnlbXSB8IHVuZGVmaW5lZCk6IEJhYnlsb25BZGRyZXNzSXRlbVtdIHtcbiAgICAgICAgaWYgKCFhZGRyZXNzKSByZXR1cm4gW107XG5cbiAgICAgICAgY29uc3QgbGlzdCA9IEFycmF5LmlzQXJyYXkoYWRkcmVzcykgPyBhZGRyZXNzIDogW2FkZHJlc3NdO1xuXG4gICAgICAgIHJldHVybiBsaXN0Lm1hcCgoYTogYW55KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IGE/LmlkLFxuICAgICAgICAgICAgbmFtZTogYT8ubmFtZSxcbiAgICAgICAgICAgIGFkZHJlc3M6IGE/LmFkZHJlc3MsXG4gICAgICAgICAgICBjaXR5OiBhPy5jaXR5LFxuICAgICAgICAgICAgbG9jYWxpdHk6IGE/LmxvY2FsaXR5LFxuICAgICAgICAgICAgcHJvdmluY2U6IGE/LnByb3ZpbmNlLFxuICAgICAgICAgICAgY291bnRyeTogYT8uY291bnRyeSxcbiAgICAgICAgICAgIGNwOiBhPy5jcCxcbiAgICAgICAgICAgIHVybDogYT8ubGluayxcbiAgICAgICAgICAgIHBob25lOiBhPy5waG9uZSxcbiAgICAgICAgICAgIHBob25lMjogYT8ucGhvbmUyLFxuICAgICAgICAgICAgZW1haWw6IGE/LmVtYWlsLFxuICAgICAgICAgICAgZnVsbF9hZGRyZXNzOiBhPy5mdWxsQWRkcmVzcyxcbiAgICAgICAgICAgIGxhdDogYT8ubGF0LFxuICAgICAgICAgICAgbG9uOiBhPy5sb24sXG4gICAgICAgICAgICBsaW5rOiBhPy5saW5rLFxuICAgICAgICAgICAgc2x1Z3M6IGE/LnNsdWdzLFxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgbWFwU3RhdGljRm9vdGVydjMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25TdGF0aWNGb290ZXJJIHtcbiAgICAgICAgcmV0dXJuIHt9IGFzIGFueTtcbiAgICB9XG5cbiAgICBtYXBHbG9iYWxTZXJ2aWNlcyhcbiAgICAgICAgc2VydmljZXM6IEJhYnlsb25HbG9iYWxJY29uSVtdIHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkdsb2JhbEljb25JW10gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gc2VydmljZXM/Lm1hcChcbiAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tYCArIGl0ZW0/LmNsYXNzLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IGl0ZW0/LnR5cGUsXG4gICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkdsb2JhbEljb25JXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbWFwQ29udGFjdEluZm8odGV4dHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Db250YWN0SW5mb0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIG5vdGU6IHRleHRzPy5ub3RlLFxuICAgICAgICAgICAgdGV4dDogdGV4dHM/LnRleHQsXG4gICAgICAgICAgICBpY29uOiB0ZXh0cz8uaWNvbixcbiAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgY29uZGl0aW9uczogdGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICBjb25kaXRpb25zMjogdGV4dHM/LmNvbmRpdGlvbnMyLFxuICAgICAgICAgICAgZHJvcGRvd25QbGFjZWhvbGRlcjogdGV4dHM/LmRyb3Bkb3duUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICBkcm9wZG93blRpdGxlOiB0ZXh0cz8uZHJvcGRvd25UaXRsZSxcbiAgICAgICAgICAgIGhvdGVsRHJvcFRpdGxlOiB0ZXh0cz8uaG90ZWxEcm9wVGl0bGUsXG4gICAgICAgICAgICBob3RlbERyb3BQbGFjZWhvbGRlcjogdGV4dHM/LmhvdGVsRHJvcFBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgaG90ZWxEcm9wRXJyb3I6IHRleHRzPy5ob3RlbERyb3BFcnJvcixcbiAgICAgICAgICAgIGVycm9yRW1haWw6IHRleHRzPy5lcnJvckVtYWlsLFxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiB0ZXh0cz8uZXJyb3JNZXNzYWdlLFxuICAgICAgICAgICAgZXJyb3JOYW1lOiB0ZXh0cz8uZXJyb3JOYW1lLFxuICAgICAgICAgICAgZXJyb3JQaG9uZTogdGV4dHM/LmVycm9yUGhvbmUsXG4gICAgICAgICAgICBlcnJvclJlcXVpcmVkOiB0ZXh0cz8uZXJyb3JSZXF1aXJlZCxcbiAgICAgICAgICAgIGlucHV0RW1haWw6IHRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgaW5wdXRFbWFpbFBsYWNlSG9sZGVyOiB0ZXh0cz8uaW5wdXRFbWFpbFBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgaW5wdXRNZXNzYWdlOiB0ZXh0cz8uaW5wdXRNZXNzYWdlLFxuICAgICAgICAgICAgaW5wdXRNZXNzYWdlUGxhY2VIb2xkZXI6IHRleHRzPy5pbnB1dE1lc3NhZ2VQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIGlucHV0TmFtZTogdGV4dHM/LmlucHV0TmFtZSxcbiAgICAgICAgICAgIGlucHV0TmFtZVBsYWNlSG9sZGVyOiB0ZXh0cz8uaW5wdXROYW1lUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICBpbnB1dFBob25lOiB0ZXh0cz8uaW5wdXRQaG9uZSxcbiAgICAgICAgICAgIGlucHV0UGhvbmVQbGFjZUhvbGRlcjogdGV4dHM/LmlucHV0UGhvbmVQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIGlucHV0bGFzdG5hbWU6IHRleHRzPy5pbnB1dGxhc3RuYW1lLFxuICAgICAgICAgICAgaW5wdXRsYXN0bmFtZVBsYWNlSG9sZGVyOiB0ZXh0cz8uaW5wdXRsYXN0bmFtZVBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgaW5wdXRTdXJuYW1lczogdGV4dHM/LmlucHV0U3VybmFtZXMsXG4gICAgICAgICAgICBpbnB1dFN1cm5hbWVzUGxhY2VIb2xkZXI6IHRleHRzPy5pbnB1dFN1cm5hbWVzUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICBtYW5kYXRvcnl0ZXh0OiB0ZXh0cz8ubWFuZGF0b3J5dGV4dCxcbiAgICAgICAgICAgIHJlcXVpcmVkRmllbGRzTGFiZWw6IHRleHRzPy5yZXF1aXJlZEZpZWxkc0xhYmVsLFxuICAgICAgICAgICAgbGFuZ18xOiB0ZXh0cz8ubGFuZzEsXG4gICAgICAgICAgICBsYW5nXzI6IHRleHRzPy5sYW5nMixcbiAgICAgICAgICAgIGxhbmdfMzogdGV4dHM/LmxhbmczLFxuICAgICAgICAgICAgbGFuZ180OiB0ZXh0cz8ubGFuZzQsXG4gICAgICAgICAgICBuYXRpdm86IHRleHRzPy5uYXRpdm8sXG4gICAgICAgICAgICBiYXNpY286IHRleHRzPy5iYXNpY28sXG4gICAgICAgICAgICBmbHVpZG86IHRleHRzPy5mbHVpZG8sXG4gICAgICAgICAgICBpbnRlcm1lZGlvOiB0ZXh0cz8uaW50ZXJtZWRpbyxcbiAgICAgICAgICAgIGlucHV0RGlzcG9uaWJpbGl0eTogdGV4dHM/LmlucHV0RGlzcG9uaWJpbGl0eSxcbiAgICAgICAgICAgIGlucHV0TGFuZ3VhZ2VzOiB0ZXh0cz8uaW5wdXRMYW5ndWFnZXMsXG4gICAgICAgICAgICBjdklucHV0OiB0ZXh0cz8uY3ZJbnB1dCxcbiAgICAgICAgICAgIFNlbGVjdEl0ZW1UZXh0OiB0ZXh0cz8uU2VsZWN0SXRlbVRleHQsXG4gICAgICAgICAgICBhZGRMYW5nOiB0ZXh0cz8uYWRkTGFuZyxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQ29udGFjdEluZm9JO1xuICAgIH1cbiAgICBtYXBFdmVudHNHbG9iYWwoZXZlbnRzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSXRlbUlbXSB7XG4gICAgICAgIHJldHVybiBldmVudHM/Lm1hcChcbiAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtPy5uYW1lID8/IGl0ZW0/Lm5hbWVfaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0/LnByaWNlLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDI6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDM6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uczogaXRlbS50ZXh0cz8uY29uZGl0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXRlbS50ZXh0cz8ucmVzZXJ2YXRpb25VcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVBdDogaXRlbS50ZXh0cz8uY3JlYXRlQXQsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkQXQ6IGl0ZW0udGV4dHM/LnVwZGF0ZWRBdCxcbiAgICAgICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uVGV4dEluZm9JLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0/LnVybCxcbiAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSXRlbUlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgbWFwT2ZmZXJzR2xvYmFsKG9mZmVyczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbk9mZmVySXRlbUlbXSB7XG4gICAgICAgIHJldHVybiBvZmZlcnM/Lm1hcChcbiAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25Gcm9tOiBpdGVtPy5hcHBsaWNhdGlvbkZyb20sXG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uVG86IGl0ZW0/LmFwcGxpY2F0aW9uVG8sXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5OiBpdGVtPy5jdXJyZW5jeSxcbiAgICAgICAgICAgICAgICAgICAgZGlzY291bnQ6IGl0ZW0/LmRpc2NvdW50LFxuICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsRnJvbTogaXRlbT8ubGFiZWxGcm9tLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE6IHRoaXMubWFwTXVsdGltZWRpYShpdGVtPy5tdWx0aW1lZGlhKSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMzogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25zOiBpdGVtLnRleHRzPy5jb25kaXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uc1RpdGxlOiBpdGVtLnRleHRzPy5jb25kaXRpb25zVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0udGV4dHM/LnJlc2VydmF0aW9uVXJsLFxuICAgICAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25UZXh0SW5mb0ksXG4gICAgICAgICAgICAgICAgICAgIHVybDogaXRlbT8udXJsLFxuICAgICAgICAgICAgICAgICAgICB2aXNpYmxlRnJvbTogaXRlbT8udmlzaWJsZUZyb20sXG4gICAgICAgICAgICAgICAgICAgIHZpc2libGVUbzogaXRlbT8udmlzaWJsZVRvLFxuICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25PZmZlcklcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBtYXBBZHZhbnRhZ2VzR2xvYmFsKGFkdmFudGFnZXM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25BZHZhbnRhZ2VJdGVtSVtdIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFkdmFudGFnZXMpKSByZXR1cm4gW107XG4gICAgICAgIHJldHVybiBhZHZhbnRhZ2VzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUgPz8gaXRlbT8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaWNvbjogaXRlbT8uaWNvbiA/IGBpY29uLSR7aXRlbS5pY29ufWAgOiBpdGVtPy5pY29uLFxuICAgICAgICAgICAgdGV4dDogaXRlbT8udGV4dCA/PyBpdGVtPy50ZXh0cz8udGV4dCA/PyBpdGVtPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICBpdGVtPy5zdWJ0aXRsZSA/P1xuICAgICAgICAgICAgICAgIGl0ZW0/LnRleHRzPy5zdWJ0aXRsZSA/P1xuICAgICAgICAgICAgICAgIGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIGl0ZW0/LmRlc2NyaXB0aW9uID8/XG4gICAgICAgICAgICAgICAgaXRlbT8udGV4dHM/LmRlc2NyaXB0aW9uID8/XG4gICAgICAgICAgICAgICAgaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgYWRkaXRpb25hbDE6IGl0ZW0/LmFkZGl0aW9uYWwxID8/IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBpdGVtPy5hZGRpdGlvbmFsMiA/PyBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICBhZGRpdGlvbmFsMzogaXRlbT8uYWRkaXRpb25hbDMgPz8gaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgdGV4dHM6IGl0ZW0/LnRleHRzID8gdGhpcy5tYXBHbG9iYWxUZXh0cyhpdGVtLnRleHRzKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVybDogaXRlbS5saW5rVmFsdWUgPz8gaXRlbS51cmwsXG4gICAgICAgICAgICBsaW5rVHlwZTogaXRlbS5saW5rVHlwZSxcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIG1hcEl0ZW1zKGl0ZW1zOiBhbnkpOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoaXRlbXMpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBpdGVtcyA9IGl0ZW1zPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgIGxhYmVsOiBpdGVtPy50aXRsZSA/PyBpdGVtPy5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LnRleHQgPz8gaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICB0ZXh0czpcbiAgICAgICAgICAgICAgICBpdGVtPy50ZXh0cyA/P1xuICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBpdGVtPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uVGV4dEluZm9JKSxcbiAgICAgICAgICAgIG11bHRpbWVkaWE6IHRoaXMubWFwSW1hZ2VzKGl0ZW0/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgaWNvbjogYGljb24tYCArIChpdGVtLmljb24gPz8gaXRlbS5jbGFzcyksXG4gICAgICAgICAgICB0eXBlOiBpdGVtPy50eXBlLFxuICAgICAgICAgICAgbmFtZUlkZW50aWZpZXI6IGl0ZW0/Lm5hbWVJZGVudGlmaWVyLFxuICAgICAgICAgICAgdXJsOiBpdGVtPy51cmwgPz8gaXRlbT8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgbGlua1R5cGU6IGl0ZW0/LmxpbmtUeXBlLFxuICAgICAgICB9KSk7XG4gICAgICAgIHJldHVybiBpdGVtcyBhcyBCYWJ5bG9uSXRlbUk7XG4gICAgfVxuXG4gICAgbWFwR2xvYmFsc0ZhcXMocmF3OiBhbnkpOiBCYWJ5bG9uR2xvYmFsc0ZhcUdyb3VwW10gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkocmF3KSB8fCByYXcubGVuZ3RoID09PSAwKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIGNvbnN0IGlzR3JvdXBlZCA9IHJhdy5zb21lKFxuICAgICAgICAgICAgKHgpID0+IHggJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIEFycmF5LmlzQXJyYXkoeC5pdGVtcylcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBncm91cHM6IEFycmF5PHsgbGlzdElkOiBudW1iZXI7IGl0ZW1zOiBhbnlbXSB9PiA9IGlzR3JvdXBlZFxuICAgICAgICAgICAgPyByYXcubWFwKChnOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICBsaXN0SWQ6IE51bWJlcihnPy5saXN0SWQgPz8gMSksXG4gICAgICAgICAgICAgICAgICBpdGVtczogQXJyYXkuaXNBcnJheShnPy5pdGVtcykgPyBnLml0ZW1zIDogW10sXG4gICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgOiBbeyBsaXN0SWQ6IDEsIGl0ZW1zOiByYXcgfV07XG5cbiAgICAgICAgY29uc3QgbWFwcGVkR3JvdXBzOiBCYWJ5bG9uR2xvYmFsc0ZhcUdyb3VwW10gPSBncm91cHNcbiAgICAgICAgICAgIC5tYXAoKGcpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXBwZWRJdGVtcyA9IChnLml0ZW1zIHx8IFtdKVxuICAgICAgICAgICAgICAgICAgICAubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy50aXRsZSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnF1ZXN0aW9uID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubmFtZSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmxhYmVsID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8udGV4dCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmFuc3dlciA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmRlc2NyaXB0aW9uID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJyc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGFiZWwgJiYgIWRlc2NyaXB0aW9uKSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8udGV4dHMgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBpdGVtPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25UZXh0SW5mb0kpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE6IHRoaXMubWFwSW1hZ2VzKGl0ZW0/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uaWNvbiB8fCBpdGVtPy5jbGFzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBTdHJpbmcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmljb24gPz8gaXRlbS5jbGFzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLnN0YXJ0c1dpdGgoJ2ljb24tJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFN0cmluZyhpdGVtLmljb24gPz8gaXRlbS5jbGFzcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGBpY29uLSR7aXRlbS5pY29uID8/IGl0ZW0uY2xhc3N9YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogaXRlbT8uaWQgPz8gaXRlbT8uZmFxSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGFzIHVua25vd24gYXMgQmFieWxvbkl0ZW1JO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pIGFzIEJhYnlsb25JdGVtSVtdO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgbGlzdElkOiBnLmxpc3RJZCB8fCAxLFxuICAgICAgICAgICAgICAgICAgICBpdGVtczogbWFwcGVkSXRlbXMsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuZmlsdGVyKChnKSA9PiBnLml0ZW1zLmxlbmd0aCA+IDApO1xuXG4gICAgICAgIHJldHVybiBtYXBwZWRHcm91cHMubGVuZ3RoID8gbWFwcGVkR3JvdXBzIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcE11bHRpbWVkaWEoaW1hZ2VzQXJyYXk6IGFueSB8IHVuZGVmaW5lZCk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGltYWdlc0FycmF5KSAmJiBpbWFnZXNBcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBpbWFnZXNBcnJheVxuICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PiBpdGVtPy5hY3RpdmUgPT09IHRydWUpXG4gICAgICAgICAgICAgICAgPy5tYXAoKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgYWx0OiBpdGVtPy5hbHQsXG4gICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0/Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgdGFnOiBpdGVtPy50YWdzLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWx0OiBpdGVtPy5hbHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBuZFRpdGxlOiBpdGVtPy5uZFRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmRTdWJ0aXRsZTogaXRlbT8ubmRTdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBJbWFnZXMobXVsdGltZWRpYTogYW55IHwgdW5kZWZpbmVkKTogYW55IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKG11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaW1hZ2VuOiB0aGlzLm1hcE11bHRpbWVkaWEobXVsdGltZWRpYT8uaW1hZ2VuKSxcbiAgICAgICAgICAgICAgICBpbWFnZW5lczogdGhpcy5tYXBNdWx0aW1lZGlhKFxuICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhPy5pbWFnZW5lcyA/PyBtdWx0aW1lZGlhXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBpbWFnZW5lc2NvbnRleHQ6IHRoaXMubWFwTXVsdGltZWRpYShcbiAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYT8uaW1hZ2VuZXNjb250ZXh0XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBpbWFnZW5lc3BlcXVlYXM6IHRoaXMubWFwTXVsdGltZWRpYShcbiAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYT8uaW1hZ2VuZXNwZXF1ZWFzXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBtb2JpbGVJbWFnZW5lczogdGhpcy5tYXBNdWx0aW1lZGlhKG11bHRpbWVkaWE/LmltYWdlbmVzbW9iaWxlKSxcbiAgICAgICAgICAgICAgICBzdGF0aWNJbWFnZW5lczogdGhpcy5tYXBNdWx0aW1lZGlhKFxuICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhPy5zdGF0aWNpbWFnZW5lcyA/PyBtdWx0aW1lZGlhPy5zdGF0aWNpbWFnZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgbWFpbmltYWdlbmVzOiB0aGlzLm1hcE11bHRpbWVkaWEobXVsdGltZWRpYT8ubWFpbmltYWdlbmVzKSxcbiAgICAgICAgICAgICAgICBsaXN0YWRvSW1hZ2VuZXM6IHRoaXMubWFwTXVsdGltZWRpYShcbiAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYT8ubGlzdGFkb0ltYWdlbmVzID8/IG11bHRpbWVkaWE/Lmxpc3RpbWFnZXNcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRpbWFnZTogdGhpcy5tYXBNdWx0aW1lZGlhKFxuICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhPy5iYWNrZ3JvdW5kaW1hZ2VcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGxvZ286IHRoaXMubWFwTXVsdGltZWRpYShtdWx0aW1lZGlhPy5sb2dvKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBSb29tRGV0YWlscyhyb29tczogYW55IHwgdW5kZWZpbmVkLCB0ZXh0cz86IGFueSk6IGFueSB7XG4gICAgICAgIGxldCBhcnJheTogYW55W10gPSByb29tcz8ubGVuZ3RoID8gcm9vbXMgOiBbcm9vbXNdO1xuXG4gICAgICAgIHJldHVybiBhcnJheVxuICAgICAgICAgICAgPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKHJvb206IGFueSwgaW5kZXg6IG51bWJlciwgc2VsZjogYW55W10pID0+XG4gICAgICAgICAgICAgICAgICAgIHNlbGY/LmZpbmRJbmRleCgocikgPT4gcj8uaWQgPT09IHJvb20/LmlkKSA9PT0gaW5kZXhcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpdGVtPy5idXR0b25zPy5zbGljZSgpLnJldmVyc2UoKSBUT0RPOiBcIi5zbGljZSgpLnJldmVyc2UoKVwiICBlc3RvIHNlIGhhY2UgZW4gZWwgY29tcG9uZW50ZSBxdWUgbG8gdXNlICovXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1nUmVzcCA9IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+IGltZz8uY292ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfHwgaXRlbT8ubXVsdGltZWRpYT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3JkZXIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+IGltZz8uY292ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/Lm9yZGVyID8/IGl0ZW0/Lm11bHRpbWVkaWE/LlswXT8ub3JkZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbWdSZXNwICYmIHR5cGVvZiBpbWdSZXNwID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uaW1nUmVzcCwgb3JkZXIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGltZzogaW1nUmVzcCwgb3JkZXIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlbmVzOiBpdGVtPy5tdWx0aW1lZGlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChpbWc6IGFueSkgPT4gaW1nLmFjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoKGltZzogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzOiBpbWcudGV4dHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnOiBpbWcudGFncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGltZy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpbWcubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaW1nLm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiBpdGVtPy5tdWx0aW1lZGlhPy52aWRlbz8uc3JjLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGl0ZW0/Lm11bHRpbWVkaWE/LnZpZGVvPy5zcmNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAndmlkZW8vbXA0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZHM6IGl0ZW0/LnRleHRzPy5iZWRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpdGVtPy50ZXh0cz8ubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDM6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsNDogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyY2hlY2s6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMmNoZWNrID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzPy5hZGRpdGlvbmFsMmNoZWNrLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtPy5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpdGVtPy5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcmlzdGljczogQXJyYXkuaXNBcnJheShpdGVtPy5zZXJ2aWNlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW0/LnNlcnZpY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKHN2YzogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBzdmMudHlwZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHN2Yy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh0OiBzdHJpbmcpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ/LnRyaW0oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFjZXB0YSB0YW50byAnZXF1aXBtZW50JyBjb21vICdjaGFyYWN0ZXJpc3RpY3MnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc1ZhbGlkVHlwZSA9IHR5cGVzLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9vbVNlcnZpY2VUeXBlLmNoYXJhY3RlcmlzdGljc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYXNWYWxpZFR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKChzdmM6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogc3ZjPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBzdmM/LmNsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGBpY29uLSR7c3ZjPy5jbGFzc31gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXF1aXBtZW50czogQXJyYXkuaXNBcnJheShpdGVtPy5zZXJ2aWNlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW0/LnNlcnZpY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKHN2YzogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBzdmMudHlwZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHN2Yy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh0OiBzdHJpbmcpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ/LnRyaW0oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFjZXB0YSB0YW50byAnZXF1aXBtZW50JyBjb21vICdjaGFyYWN0ZXJpc3RpY3MnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc1ZhbGlkVHlwZSA9IHR5cGVzLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9vbVNlcnZpY2VUeXBlLkVxdWlwbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYXNWYWxpZFR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKChzdmM6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogc3ZjPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBzdmM/LmNsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGBpY29uLSR7c3ZjPy5jbGFzc31gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uUm9vbUluZm9JXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBtYXA0MDQocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb240MDRJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29udGFpbixcblxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbjQwNEk7XG4gICAgfVxuXG4gICAgLy8tLS0tIExBWU9VVCBDT01QT05FTlRTIC0tLS0vL1xuICAgIG1hcFRvcFNsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblRvcFNsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBhbGxJbWFnZXMgPSBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMgPz8gW107XG4gICAgICAgIGNvbnN0IHJhd01vdXNldXAgPSBwcm9wcz8udGV4dHM/Lm1vdXNldXAgPz8gcHJvcHM/LnRleHRzPy5tb3VzZVVwO1xuICAgICAgICBjb25zdCBtb3VzZXVwID0gdGhpcy5nZXRUZXh0VmFsdWUocmF3TW91c2V1cCk7XG5cbiAgICAgICAgY29uc3QgaW1hZ2VzV2l0aFRhZyA9IGFsbEltYWdlcy5maWx0ZXIoXG4gICAgICAgICAgICAoaW1hZ2U6IGFueSkgPT5cbiAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KGltYWdlPy50YWdzKSAmJlxuICAgICAgICAgICAgICAgIGltYWdlLnRhZ3Muc29tZShcbiAgICAgICAgICAgICAgICAgICAgKHRhZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiB0YWcgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnLmluY2x1ZGVzKCdUb3BTbGlkZXInKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlb2YgdGFnID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZz8ubmFtZT8uaW5jbHVkZXMoJ1RvcFNsaWRlcicpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBpbWFnZXMgPSBpbWFnZXNXaXRoVGFnLmxlbmd0aCA/IGltYWdlc1dpdGhUYWcgOiBhbGxJbWFnZXM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcyksXG4gICAgICAgICAgICBpdGVtczogaW1hZ2VzPy5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IGltYWdlcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbS5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWFnZXM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1hZ2VzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWFnZXMsIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpbWFnZXM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpbWFnZXM/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGl0ZW1zTW9iaWxlOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXNtb2JpbGU/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblRvcFNsaWRlckl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8ubG9nbz8uWzBdLCBmYWxzZSksXG4gICAgICAgICAgICBsb2dvVGl0bGU6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvdGl0bGU/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHZpZGVvRGF0YToge1xuICAgICAgICAgICAgICAgIC8vIHRpdGxlOiBwcm9wcz8udmlkZW8/LnRpdGxlLFxuICAgICAgICAgICAgICAgIHNyYzogcHJvcHM/LnRleHRzPy52aWRlbyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndmlkZW8vbXA0JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtb3VzZXVwLFxuICAgICAgICB9IGFzIEJhYnlsb25Ub3BTbGlkZXJJO1xuICAgIH1cblxuICAgIG1hcFRvcFNsaWRlclZpZGVvKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvblRvcFNsaWRlclZpZGVvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2aWRlb0RhdGE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnZpZGVvPy50aXRsZSxcbiAgICAgICAgICAgICAgICBzcmM6IHByb3BzPy52aWRlbz8uc3JjLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd2aWRlby9tcDQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNtYWxsVmlkZW9EYXRhOiBwcm9wcz8udmlkZW8/Lm1vYmlsZVxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udmlkZW8/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIHNyYzogcHJvcHM/LnZpZGVvPy5tb2JpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3ZpZGVvL21wNCcsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBsYWJlbEluZm9zOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW1vYmlsZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1nVGV4dHM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbW9iaWxlPy5bMF0ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW1vYmlsZT8uWzBdLnRpdGxlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGJ0bk5leHRTZWN0aW9uOiBwcm9wcz8udGV4dHM/LmJ0bk5leHRTZWN0aW9uLFxuICAgICAgICB9IGFzIEJhYnlsb25Ub3BTbGlkZXJWaWRlb0k7XG4gICAgfVxuXG4gICAgbWFwVG9wU2xpZGVyVjIoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHJpZ2h0U2lkZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgKTogQmFieWxvblRvcFNsaWRlclYySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBwcm9wc1xuICAgICAgICAgICAgPyAoe1xuICAgICAgICAgICAgICAgICAgcmlnaHRTaWRlOiByaWdodFNpZGUsXG4gICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25TbGlkZXI0Y29sTGFiZWxzXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uVG9wU2xpZGVyVjJJKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwSW5mb0ltZyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2UsXG4gICAgICAgIHRleHRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICBpZGVudGlmaWVyOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uSW5mb0ltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgICAgIHJpZ2h0U2lkZTogcmlnaHRTaWRlLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGJ1dHRvbnM6IHByb3BzPy5idXR0b25zXG4gICAgICAgICAgICAgICAgPyBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+IGxpbms/LmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy5jb250YWluLFxuICAgICAgICAgICAgdGV4dDpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIG5kdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ubmR0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/Lm5kdGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/Lm5kdGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBsZXNzQnRuOiBwcm9wcz8udGV4dHM/LnNlZUxlc3MsXG4gICAgICAgICAgICBtb3JlQnRuOiBwcm9wcz8udGV4dHM/LnNlZU1vcmUsXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzID8/IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXMsXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBhZHZhbnRhZ2VzOiBwcm9wcz8uVmVudGFqYXM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtPy50aXRsZSB8fCBpdGVtPy50ZXh0XG4gICAgICAgICAgICApPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgaWNvbjogaXRlbS5pY29uID8gYGljb24tJHtpdGVtLmljb259YCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvPy5bMF0sIGZhbHNlKSxcbiAgICAgICAgICAgIGFkdlRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRleHQgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50ZXh0XG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50ZXh0Py5jb250YWluLFxuICAgICAgICAgICAgdG9wQkc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy50b3BiZz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYm90dG9tQkc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5ib3R0b21iZz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdG9wQ29sb3I6IHByb3BzPy50ZXh0cz8udG9wQ29sb3IsXG4gICAgICAgICAgICBib3R0b21Db2xvcjogcHJvcHM/LnRleHRzPy5Cb3R0b21Db2xvcixcbiAgICAgICAgICAgIHRleHRDb2xvcjogdGV4dENvbG9yLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LnRhZyxcbiAgICAgICAgICAgICAgICBuZHRpdGxlOiBwcm9wcz8udGV4dHM/Lm5kdGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBhZHZUaXRsZTogcHJvcHM/LnRleHRzPy50ZXh0Py50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXh0cmFDbGFzczogcHJvcHM/LnRleHRzPy5leHRyYUNsYXNzLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvSW1nSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvSW1nU2xpZGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICByaWdodFNpZGU6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICAgICAgaWRlbnRpZmllcjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkluZm9JbWdTbGlkZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgLy8gVE9ETzogYWRkIHRvcEJHLCBib3R0b21CR1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgICAgIHJpZ2h0U2lkZTogcmlnaHRTaWRlLFxuICAgICAgICAgICAgdG9wQ29sb3I6IHByb3BzPy50ZXh0cz8udG9wQ29sb3IsXG4gICAgICAgICAgICBib3R0b21Db2xvcjogcHJvcHM/LnRleHRzPy5ib3R0b21Db2xvcixcbiAgICAgICAgICAgIGxlc3NCdG46IHByb3BzPy50ZXh0cz8uc2VlTGVzcyxcbiAgICAgICAgICAgIG1vcmVCdG46IHByb3BzPy50ZXh0cz8uc2VlTW9yZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmR0aXRsZTogaXRlbT8ubmRfdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkluZm9JbWdTbGlkZXJJdGVtSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb0ltZ1NsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwSW5mb0ludHJvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mb0ludHJvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbnRhaW4sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzID8/IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRvcEJHOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8udG9wYmc/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJvdHRvbUJHOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYm90dG9tYmc/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRvcENvbG9yOiBwcm9wcz8udGV4dHM/LnRvcENvbG9yLFxuICAgICAgICAgICAgYm90dG9tQ29sb3I6IHByb3BzPy50ZXh0cz8uQm90dG9tQ29sb3IsXG4gICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8ubG9nbz8uWzBdLCBmYWxzZSksXG4gICAgICAgICAgICBsb2dvMjogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmxvZ28yPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJ1dHRvbk1vZGFsOiBwcm9wcz8udGV4dHM/LnBvcHVwbW9kYWwsXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9JbnRyb0k7XG4gICAgfVxuXG4gICAgbWFwSGVhZGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBtZW51OiBhbnksXG4gICAgICAgIGhlYWRlcjogYW55IHwgdW5kZWZpbmVkXG4gICAgKTpcbiAgICAgICAgfCBCYWJ5bG9uSGVhZGVyQm9va1Nob3dJXG4gICAgICAgIHwgQmFieWxvbkhlYWRlckNsZWFySVxuICAgICAgICB8IEJhYnlsb25IZWFkZXJNZW51Q2VudGVySVxuICAgICAgICB8IEJhYnlsb25IZWFkZXJNZW51TG9nb0NlbnRlcklcbiAgICAgICAgfCBCYWJ5bG9uSGVhZGVyTWVudVNob3dJIHtcbiAgICAgICAgY29uc3QgbGluayA9IG1lbnU/LmxpbmtzPy5sb2dvTGluaz8uZmxhdCgpPy5bMF07XG4gICAgICAgIGNvbnN0IGhlYWRlckJ1dHRvbnMgPSBwcm9wcztcbiAgICAgICAgY29uc3QgYnV0dG9ucyA9IFV0aWxzLm1hcEJ1dHRvbnMobWVudT8uYnV0dG9ucyA/PyBbXSk7XG4gICAgICAgIGNvbnN0IGhlYWRlckJ1dHRvbnNNb2RhbEJ1dHRvbnMgPSBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgaGVhZGVyQnV0dG9ucz8uYnV0dG9ucyA/PyBbXVxuICAgICAgICApPy5maWx0ZXIoKGJ1dHRvbikgPT4gISFidXR0b24ubGFiZWwgJiYgISFidXR0b24udXJsKTtcbiAgICAgICAgY29uc3QgaGVhZGVyQnV0dG9uc01vZGFsSW1hZ2UgPVxuICAgICAgICAgICAgaGVhZGVyQnV0dG9ucz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSA/P1xuICAgICAgICAgICAgaGVhZGVyQnV0dG9ucz8ubXVsdGltZWRpYT8uaW1hZ2U/LlswXSA/P1xuICAgICAgICAgICAgaGVhZGVyQnV0dG9ucz8ubXVsdGltZWRpYT8uaW1hZ2VzPy5bMF07XG4gICAgICAgIGNvbnN0IGhlYWRlckJ1dHRvbnNNb2RhbFRpdGxlID1cbiAgICAgICAgICAgIGhlYWRlckJ1dHRvbnM/LnRleHRzPy5tb2RhbF90aXRsZSA/P1xuICAgICAgICAgICAgaGVhZGVyQnV0dG9ucz8udGV4dHM/Lm1vZGFsVGl0bGU7XG4gICAgICAgIGNvbnN0IGhlYWRlckJ1dHRvbnNNb2RhbEltYWdlU3JjID1cbiAgICAgICAgICAgIGhlYWRlckJ1dHRvbnM/LnRleHRzPy5tb2RhbF9pbWcgPz8gaGVhZGVyQnV0dG9ucz8udGV4dHM/Lm1vZGFsSW1nO1xuXG4gICAgICAgIGNvbnN0IHRleHRzID0gaGVhZGVyPy50ZXh0cyA/IGhlYWRlcj8udGV4dHMgOiBtZW51Py50ZXh0cztcblxuICAgICAgICBpZiAoaGVhZGVyQnV0dG9ucykge1xuICAgICAgICAgICAgdGhpcy5mbG9hdGluZ0J1dHRvbnMgPSB7XG4gICAgICAgICAgICAgICAgdGV4dHM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGJhYnlsb24tJHtoZWFkZXJCdXR0b25zLnRleHRzPy50cmFuc2Zlckljb259YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8udHJhbnNmZXIsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBiYWJ5bG9uLSR7aGVhZGVyQnV0dG9ucy50ZXh0cz8uY2hlY2tpbkljb259YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8uY2hlY2tpbixcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGJhYnlsb24tJHtoZWFkZXJCdXR0b25zLnRleHRzPy53aGF0c2FwcH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGhlYWRlckJ1dHRvbnM/LnRleHRzPy53aGF0c2FwcCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHRleHRzQnV0dG9uczoge1xuICAgICAgICAgICAgICAgICAgICBtZW51VGV4dDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckJ1dHRvbnM/LnRleHRzPy5tZW51dGV4dCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQnV0dG9ucz8udGV4dHM/Lm1lbnVUZXh0LFxuICAgICAgICAgICAgICAgICAgICBib29rdGV4dDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckJ1dHRvbnM/LnRleHRzPy5ib29rdGV4dCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQnV0dG9ucz8udGV4dHM/LmJvb2tUZXh0ID8/XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJCdXR0b25zPy50ZXh0cz8uYm9va05vdyxcbiAgICAgICAgICAgICAgICAgICAgYWdlbmNpYVRleHQ6IGhlYWRlckJ1dHRvbnM/LnRleHRzPy5hZ2VuY2lhLFxuICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZTogaGVhZGVyQnV0dG9ucz8udGV4dHM/Lmxhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgICBuZXdzbGV0dGVyOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8ubmV3c2xldHRlcixcbiAgICAgICAgICAgICAgICAgICAgc2hvcDogaGVhZGVyQnV0dG9ucz8udGV4dHM/LnNob3AsXG4gICAgICAgICAgICAgICAgICAgIHdoYXRzYXBwOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8ud2hhdHNhcHAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhoZWFkZXJCdXR0b25zPy5saW5rcyksXG4gICAgICAgICAgICAgICAgdXNlckxpbms6IFV0aWxzLm1hcEJ1dHRvbnMoaGVhZGVyQnV0dG9ucz8ubGlua3M/LnVzZXJMaW5rPy5bMF0pLFxuICAgICAgICAgICAgfSBhcyBCYWJ5bG9uRmxvYXRpbmdCdXR0b25zSTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b25zLFxuICAgICAgICAgICAgaGVhZGVyQnV0dG9uc01vZGFsQnV0dG9ucyxcbiAgICAgICAgICAgIGhlYWRlckJ1dHRvbnNNb2RhbFRpdGxlLFxuICAgICAgICAgICAgaGVhZGVyQnV0dG9uc01vZGFsSW1hZ2U6XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaGVhZGVyQnV0dG9uc01vZGFsSW1hZ2UpID8/XG4gICAgICAgICAgICAgICAgaGVhZGVyQnV0dG9uc01vZGFsSW1hZ2VTcmMsXG4gICAgICAgICAgICBoZWFkZXJGaXhlZDogZmFsc2UsXG4gICAgICAgICAgICB0ZXh0czogdGV4dHMsXG4gICAgICAgICAgICBmbG9hdGluZ0J1dHRvbnM6IHRoaXMuZmxvYXRpbmdCdXR0b25zLFxuICAgICAgICAgICAgbGFuZzogdGhpcy5zaXRlU3ZjLnNlbGVjdGVkTGFuZ3VhZ2VJbnN0YW50Py5sb2NhdGU/LnRvVXBwZXJDYXNlKCksXG4gICAgICAgICAgICBidG5Cb29rOiB7IGxhYmVsOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8uYm9va05vdyB9LFxuICAgICAgICAgICAgc2hvcDogaGVhZGVyQnV0dG9ucz8udGV4dHM/LnNob3BcbiAgICAgICAgICAgICAgICA/IGBpY29uLSR7aGVhZGVyQnV0dG9ucz8udGV4dHM/LnNob3B9YFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbmV3czogaGVhZGVyQnV0dG9ucz8udGV4dHM/Lm5ld3NsZXR0ZXJcbiAgICAgICAgICAgICAgICA/IGBpY29uLSR7aGVhZGVyQnV0dG9ucz8udGV4dHM/Lm5ld3NsZXR0ZXJ9YFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaGVhZGVyQnV0dG9ucz8ubGlua3MpLFxuICAgICAgICAgICAgdXNlckxpbms6IFV0aWxzLm1hcEJ1dHRvbnMoaGVhZGVyQnV0dG9ucz8ubGlua3M/LnVzZXJMaW5rPy5bMF0pLFxuICAgICAgICAgICAgbGlua0xvZ286IHtcbiAgICAgICAgICAgICAgICBsYWJlbDogbGluaz8ubGFiZWwsXG4gICAgICAgICAgICAgICAgdXJsOiBsaW5rPy5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgbGlua1R5cGU6IGxpbms/LmxpbmtUeXBlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1lbnU6IG1lbnU/Lm5hdj8ubWFwKFxuICAgICAgICAgICAgICAgIChtZW51OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBtZW51Py5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtZW51Py5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJzOiBtZW51Py5saW5rVmFycyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiBtZW51Py5saW5rVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBtZW51Py50cmFuc2xhdGlvbnM/LlswXT8ubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbWVudT8udHJhbnNsYXRpb25zPy5bMF0/Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG1lbnU/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogbWVudT8uY2hpbGRyZW4/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hpbGQ6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGNoaWxkPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBjaGlsZD8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyczogbWVudT8ubGlua1ZhcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogY2hpbGQ/LmxpbmtUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGNoaWxkPy50cmFuc2xhdGlvbnM/LlswXT8ubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY2hpbGQ/LnRyYW5zbGF0aW9ucz8uWzBdPy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjaGlsZD8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogbWVudT8ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25NZW51QnV0dG9uSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG1lbnVJbmZvOiB0aGlzLm1hcE1lbnUobWVudSwgdW5kZWZpbmVkKSxcbiAgICAgICAgfSBhc1xuICAgICAgICAgICAgfCBCYWJ5bG9uSGVhZGVyQm9va1Nob3dJXG4gICAgICAgICAgICB8IEJhYnlsb25IZWFkZXJDbGVhcklcbiAgICAgICAgICAgIHwgQmFieWxvbkhlYWRlck1lbnVDZW50ZXJJXG4gICAgICAgICAgICB8IEJhYnlsb25IZWFkZXJNZW51TG9nb0NlbnRlcklcbiAgICAgICAgICAgIHwgQmFieWxvbkhlYWRlck1lbnVTaG93STtcbiAgICB9XG5cbiAgICAvL1RPRE86IFdhaXQgZm9yIGJhY2sgaW5mb1xuICAgIG1hcE1lbnUoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHNvY2lhbE1lZGlhOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uTWVudUluZm9JIHtcbiAgICAgICAgY29uc3QgbGlua3MgPSBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgcHJvcHM/Lm5hdj8ubWFwKChsaW5rOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4ubGluayxcbiAgICAgICAgICAgICAgICBsYWJlbDogbGluay50cmFuc2xhdGlvbnM/LlswXT8ubmFtZSxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGNvbnRhY3QgPSAoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmF3ID0gVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3M/LmNvbnRhY3Q/LlswXSk7IC8vIHAuZWouIFt1bmRlZmluZWQsIHVuZGVmaW5lZF1cbiAgICAgICAgICAgIGNvbnN0IGxpbmtzID0gQXJyYXkuaXNBcnJheShyYXcpID8gcmF3LmZpbHRlcihCb29sZWFuKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgY29uc3QgcmF3VGl0bGUgPVxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uY29udGFjdFRpdGxlPy5jb250YWluO1xuXG4gICAgICAgICAgICBjb25zdCB0aXRsZSA9XG4gICAgICAgICAgICAgICAgdHlwZW9mIHJhd1RpdGxlID09PSAnc3RyaW5nJyAmJiByYXdUaXRsZT8udHJpbSgpLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IHJhd1RpdGxlPy50cmltKClcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIGlmICghbGlua3M/Lmxlbmd0aCAmJiAhdGl0bGUpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uKGxpbmtzPy5sZW5ndGggPyB7IGxpbmtzIH0gOiB7fSksXG4gICAgICAgICAgICAgICAgLi4uKHRpdGxlID8geyB0aXRsZSB9IDoge30pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSkoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxpbmtzOiBsaW5rcz8uc2xpY2UoMCwgNiksXG4gICAgICAgICAgICBib3R0b21MaW5rczogbGlua3M/LnNsaWNlKDYpLFxuICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHByb3BzPy5hZGRyZXNzPy5bMF0/LmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgY2l0eTogcHJvcHM/LmFkZHJlc3M/LlswXT8uY2l0eSxcbiAgICAgICAgICAgICAgICBjb3VudHJ5OiBwcm9wcz8uYWRkcmVzcz8uWzBdPy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgIGNwOiBwcm9wcz8uYWRkcmVzcz8uWzBdPy5jcCxcbiAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICBwcm92aW5jZTogcHJvcHM/LmFkZHJlc3M/LlswXT8ucHJvdmluY2UsXG4gICAgICAgICAgICAgICAgdXJsOiBwcm9wcz8uYWRkcmVzcz8uWzBdPy5saW5rLFxuICAgICAgICAgICAgICAgIGxpbmtzOiB7XG4gICAgICAgICAgICAgICAgICAgIHVybDogcHJvcHM/LmFkZHJlc3M/LlswXT8ubGluayxcbiAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb250YWN0OiBjb250YWN0LFxuICAgICAgICAgICAgc29jaWFsTWVkaWE6IHNvY2lhbE1lZGlhPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBiYWJ5bG9uLSR7aXRlbS5uYW1lPy50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0udXJsLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbj8uWzBdID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1nQmFja2dyb3VuZDogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmQ/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGxpbmtMb2dvOiB7XG4gICAgICAgICAgICAgICAgdXJsOiBwcm9wcz8ubGlua3M/LmxvZ29MaW5rPy5bMF0/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICBsaW5rVHlwZTogcHJvcHM/LmxpbmtzPy5sb2dvTGluaz8uWzBdPy5saW5rVHlwZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgY29udGFjdFRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGFkZHJlc3NUaXRsZTogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgY29udGFjdFRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBhZGRyZXNzVGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGltZ3M6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25NZW51SW5mb0k7XG4gICAgfVxuXG4gICAgbWFwSW5mbzJpbWcoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHJpZ2h0U2lkZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgKTogQmFieWxvbkluZm8yaW1nSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByaWdodFNpZGU6IHJpZ2h0U2lkZSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICAgICAgaXRlbTE6IHByb3BzPy50ZXh0cz8uaXRlbTEsXG4gICAgICAgICAgICAgICAgaXRlbTFUZXh0OiBwcm9wcz8udGV4dHM/Lml0ZW0xVGV4dCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltYWdlc3NtYWxsOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXNzbWFsbCxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGFkdmFudGFnZXM6IHByb3BzPy5WZW50YWphcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm8yaW1nSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvMmNvbGltZyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2VcbiAgICApOiBCYWJ5bG9uSW5mbzJDb2xJbWdJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJpZ2h0U2lkZTogcmlnaHRTaWRlLFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc21hbGxpbWFnZTogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uc21hbGxpbWFnZSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mbzJDb2xJbWdJO1xuICAgIH1cblxuICAgIG1hcFppZ3phZyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2UsXG4gICAgICAgIGlkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25JbmZvMmltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgaW1hZ2VzOiAoc3RyaW5nIHwgQmFieWxvbkltYWdlSSlbXSB8IHVuZGVmaW5lZCA9IFtdO1xuICAgICAgICBsZXQgdGV4dHMsIHRhZ3M7XG4gICAgICAgIGltYWdlcyA9IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMgPz8gcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlcyxcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgICAgIHRleHRzID0ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICh0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICh0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgY29udGVudHRpdGxlOlxuICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudHRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50dGl0bGUsXG4gICAgICAgICAgICBjb250ZW50c3VidGl0bGU6XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50c3VidGl0bGU/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnRzdWJ0aXRsZSxcbiAgICAgICAgICAgIGNvbnRlbnRkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnRkZXNjcmlwdGlvbj8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudGRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgbG9nbzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmxvZ28/LlswXSwgZmFsc2UpLFxuICAgICAgICAgICAgaWNvbnM6IHByb3BzPy5WZW50YWphcz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/LnRpdGxlIHx8IGl0ZW0/LnRleHRcbiAgICAgICAgICAgICk/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICBpY29uOiBpdGVtLmljb24gPyBgaWNvbi0ke2l0ZW0uaWNvbn1gIDogJycsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBpY29uVGl0bGU6XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pY29udGl0bGU/LmNvbnRhaW4gPz8gcHJvcHM/LnRleHRzPy5pY29udGl0bGUsXG4gICAgICAgIH07XG4gICAgICAgIHRhZ3MgPSB7XG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIGNvbnRlbnR0aXRsZTogcHJvcHM/LnRleHRzPy5jb250ZW50dGl0bGU/LnRhZyxcbiAgICAgICAgICAgIGNvbnRlbnRzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5jb250ZW50c3VidGl0bGU/LnRhZyxcbiAgICAgICAgICAgIGNvbnRlbnRkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5jb250ZW50ZGVzY3JpcHRpb24/LnRhZyxcbiAgICAgICAgICAgIGljb25UaXRsZTogcHJvcHM/LnRleHRzPy5pY29udGl0bGU/LnRhZyxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmlnaHRTaWRlOiByaWdodFNpZGUsXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zLmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGV4dHMsXG4gICAgICAgICAgICBpbWFnZXMsXG4gICAgICAgICAgICB0YWdzLFxuICAgICAgICAgICAgdmlkZW9EYXRhOiBwcm9wcz8udGV4dHM/LnZpZGVvVXJsLFxuICAgICAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mbzJpbWdJO1xuICAgIH1cblxuICAgIG1hcEdyaWRHYWxsZXJ5KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mb0ltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBpc0luRW51bSA9IDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4oXG4gICAgICAgICAgICBlbnVtT2JqOiBULFxuICAgICAgICAgICAgdmFsdWU6IGFueVxuICAgICAgICApOiB2YWx1ZSBpcyBUW2tleW9mIFRdID0+IE9iamVjdC52YWx1ZXMoZW51bU9iaikuaW5jbHVkZXModmFsdWUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgIGhvdmVyOiBwcm9wcz8udGV4dHM/LmhvdmVyLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgdmlldzogaXNJbkVudW0oVmlld3NUeXBlLCBwcm9wcz8ubXVsdGltZWRpYT8udmlldylcbiAgICAgICAgICAgICAgICA/IHByb3BzPy5tdWx0aW1lZGlhPy52aWV3XG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvSW1nSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvR3JpZChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm9HcmlkSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zLmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBpdGVtLmJ1dHRvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5idXR0b25zLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT4gbGluaz8ubGlua1ZhbHVlICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IGl0ZW0ubGlua3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5saW5rcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+IGxpbms/LmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/LlswXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSW5mb0dyaWRJdGVtSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb0dyaWRJO1xuICAgIH1cblxuICAgIG1hcEJhbm5lckdhbGxlcnkoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uQmFubmVyR2FsbGVyeUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaG92ZXI6IHByb3BzPy50ZXh0cz8uaG92ZXIsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQmFubmVyR2FsbGVyeUk7XG4gICAgfVxuXG4gICAgbWFwQmFubmVyTmV3c2xldHRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgaWRlbnRpZmllcjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkJhbm5lck5ld3NsZXR0ZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBob3ZlcjogcHJvcHM/LnRleHRzPy5ob3ZlcixcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgICAgICBpY29uOiBwcm9wcz8udGV4dHM/Lm1haWxJY29uLFxuICAgICAgICB9IGFzIEJhYnlsb25CYW5uZXJOZXdzbGV0dGVySTtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXJDb2xsMihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2VcbiAgICApOiBCYWJ5bG9uVG9wU2xpZGVyVjJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHByb3BzXG4gICAgICAgICAgICA/ICh7XG4gICAgICAgICAgICAgICAgICByaWdodFNpZGU6IHJpZ2h0U2lkZSxcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICAgICAgICBpbWFnZXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblNsaWRlcjJDb2xJdGVtSVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9IGFzIEJhYnlsb25Ub3BTbGlkZXJWMkkpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXJDb2xsKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBpZGVudGlmaWVyOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uVG9wU2xpZGVyVjJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IGltYWdlczogKHN0cmluZyB8IEJhYnlsb25JbWFnZUkpW10gfCB1bmRlZmluZWQgPSBbXTtcbiAgICAgICAgaWYgKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcykge1xuICAgICAgICAgICAgaW1hZ2VzID0gcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbWFnZVJlc3BvbnNlID0gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgc3JjOlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGltYWdlUmVzcG9uc2UgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWFnZVJlc3BvbnNlLnNyY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW1hZ2VSZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgYWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGltYWdlUmVzcG9uc2UgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWFnZVJlc3BvbnNlLmFsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuPy5saW5rVmFsdWUgIT09IG51bGwgfHwgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubGlua3M/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+IGJ0bi5saW5rVmFsdWUgIT09IG51bGwgfHwgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uSW1hZ2VJO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXMpIHtcbiAgICAgICAgICAgIGltYWdlcyA9IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXM/Lm1hcCgoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlUmVzcG9uc2UgPSB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBzcmM6XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgaW1hZ2VSZXNwb25zZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltYWdlUmVzcG9uc2Uuc3JjXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbWFnZVJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgICBhbHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgaW1hZ2VSZXNwb25zZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltYWdlUmVzcG9uc2UuYWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbCB8fCB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbCB8fCB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25JbWFnZUk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvcHNcbiAgICAgICAgICAgID8gKHtcbiAgICAgICAgICAgICAgICAgIGltYWdlczogaW1hZ2VzLFxuICAgICAgICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgdG9wQkc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy50b3BiZz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgYm90dG9tQkc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5ib3R0b21iZz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgdG9wQ29sb3I6IHByb3BzPy50ZXh0cz8udG9wQ29sb3IsXG4gICAgICAgICAgICAgICAgICBib3R0b21Db2xvcjogcHJvcHM/LnRleHRzPy5Cb3R0b21Db2xvcixcbiAgICAgICAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uVG9wU2xpZGVyVjJJKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwSXRlbXNHcmlkKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSXRlbXNHcmlkSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBwcm9wc1xuICAgICAgICAgICAgPyAoe1xuICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbWFnZVJlc3BvbnNlID0gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgaW1hZ2VSZXNwb25zZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWFnZVJlc3BvbnNlLnNyY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGltYWdlUmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGltYWdlUmVzcG9uc2UgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1hZ2VSZXNwb25zZS5hbHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5saW5rcz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+IGJ0bi5saW5rVmFsdWUgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25JbWFnZUk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH0gYXMgQmFieWxvbkl0ZW1zR3JpZEkpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBSb29tKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mbzJpbWdJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJvb21zOiBwcm9wcz8ucm9vbXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBpdGVtLm11bHRpbWVkaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PiBpbWcuY292ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpbWcucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1nLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JbWFnZUlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDI6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsNDogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZXM6IGl0ZW0/LnNlcnZpY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8udHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh2OiBzdHJpbmcpID0+IHY/LnRyaW0oKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhSb29tU2VydmljZVR5cGUuY2hhcmFjdGVyaXN0aWNzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblJvb21JbmZvSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mbzJpbWdJO1xuICAgIH1cblxuICAgIG1hcFJvb21zR3JpZChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblJvb21zR3JpZEkgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgcm9vbXMgPSBwcm9wcz8ucm9vbXNcbiAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRuPy5saW5rVHlwZT8uaW5jbHVkZXMoJ2ludGVybmFsJykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ0bj8ubGlua1R5cGU/LmluY2x1ZGVzKCdzZWxmX2xpbmsnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaXRlbT8ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IGl0ZW0ubXVsdGltZWRpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZykgPT4gdGFnLm5hbWUgPT09ICdSb29tc0dyaWQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpbWcucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1nLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcubmFtZSA9PT0gJ1Jvb21zR3JpZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvb21zR3JpZE1vYmlsZVRodW1ibmFpbFNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yb29tc0dyaWRTbWFsbFRhYmxldFRodW1ibmFpbFNpemVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZzogaW1nLnRhZ3M/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWc6IGFueSkgPT4gdGFnPy5maWx0ZXJhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JbWFnZUlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5zbGljZSgwLCAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMzogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDQ6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzOiBpdGVtPy5zZXJ2aWNlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodjogc3RyaW5nKSA9PiB2Py50cmltKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoUm9vbVNlcnZpY2VUeXBlLmNoYXJhY3RlcmlzdGljcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uY2xhc3N9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Sb29tSW5mb0lcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zb3J0KChhOiBCYWJ5bG9uUm9vbXNMaXN0SXRlbSwgYjogQmFieWxvblJvb21zTGlzdEl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKGEub3JkZXIgPz8gMCkgLSAoYi5vcmRlciA/PyAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcm9vbXM6IHByb3BzPy5idXR0b25zID8gcm9vbXM/LnNsaWNlKDAsIDUpIDogcm9vbXMsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uUm9vbXNHcmlkSTtcbiAgICB9XG5cbiAgICBtYXBSb29tc1NsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblJvb21zU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBoaWRlTW9kdWxlID1cbiAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaGlkZSAmJiBwcm9wcz8udGV4dHM/LmhpZGU/LnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJ1xuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgICAgICBoaWRlOiBoaWRlTW9kdWxlLFxuICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZUNvbnRhaW46IHtcbiAgICAgICAgICAgICAgICAgICAgdGFnOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0aXRsZUNvbnRhaW46IHtcbiAgICAgICAgICAgICAgICAgICAgdGFnOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJvb21zOiBwcm9wcz8ucm9vbXNcbiAgICAgICAgICAgICAgICA/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKHJvb206IGFueSwgaW5kZXg6IG51bWJlciwgc2VsZjogYW55W10pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZpbmRJbmRleCgocikgPT4gci5pZCA9PT0gcm9vbS5pZCkgPT09IGluZGV4XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5pZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmlkX2hhYml0YWNpb24gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5uYW1lSWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnM/LnNsaWNlKCkucmV2ZXJzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+IGltZz8uY292ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfHwgaXRlbT8ubXVsdGltZWRpYT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDQ6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0/Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVxdWlwbWVudHM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnNlcnZpY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoc3ZjOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBzdmMudHlwZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc3ZjLnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh0OiBzdHJpbmcpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdD8udHJpbSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzQ2hhcmFjdGVyaXN0aWMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlcy5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvb21TZXJ2aWNlVHlwZS5jaGFyYWN0ZXJpc3RpY3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNDbGFzcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhc3ZjLmNsYXNzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2Yy5jbGFzcy50b1N0cmluZygpPy50cmltKCkgIT09ICcnO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc0NoYXJhY3RlcmlzdGljICYmIGhhc0NsYXNzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubWFwKChzdmM6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBzdmMubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke3N2Yy5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpID8/IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblJvb21JbmZvSVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc29ydCgoYTogQmFieWxvblJvb21zTGlzdEl0ZW0sIGI6IEJhYnlsb25Sb29tc0xpc3RJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoYS5vcmRlciA/PyAwKSAtIChiLm9yZGVyID8/IDApO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICB9IGFzIEJhYnlsb25Sb29tc1NsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwT2ZmZXJTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25PZmZlclNsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGJhY2tncm91bmRJbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmRpbWFnZW5lcz8uWzBdIHx8XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5iYWNrZ3JvdW5kaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG9mZmVyczogcHJvcHM/Lm9mZmVycz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkZyb206IGl0ZW0/LmFwcGxpY2F0aW9uRnJvbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uVG86IGl0ZW0/LmFwcGxpY2F0aW9uVG8sXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeTogaXRlbT8uY3VycmVuY3ksXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNjb3VudDogaXRlbT8uZGlzY291bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDM6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbnM6IGl0ZW0udGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtLnRleHRzPy5yZXNlcnZhdGlvblVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgQmFieWxvblRleHRJbmZvSSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXRlbT8udXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZUZyb206IGl0ZW0/LnZpc2libGVGcm9tLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZVRvOiBpdGVtPy52aXNpYmxlVG8sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25PZmZlcklcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbk9mZmVyU2xpZGVySTtcbiAgICB9XG4gICAgLy8tLS0tIExBWU9VVCBDT01QT05FTlRTIEVORC0tLS0vL1xuXG4gICAgbWFwVGhhbmtzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uVGhhbmtzSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgIH0gYXMgQmFieWxvblRoYW5rc0k7XG4gICAgfVxuXG4gICAgbWFwQ29udGFjdEZvcm0oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5kUHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgbmRQcm9wc0NvbnN1bHQ6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25Db250YWN0Rm9ybUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy5jb250YWluLFxuICAgICAgICAgICAgc3VidGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uc3VidGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5zdWJ0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy50YWcsXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0czogdGhpcy5tYXBHbG9iYWxUZXh0cyhwcm9wcz8udGV4dHMpIGFzIEJhYnlsb25UZXh0SW5mb0ksXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICB0ZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIGlkOiAnbWVuc2FqZScsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRNZXNzYWdlLFxuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dE1lc3NhZ2UpLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0TWVzc2FnZVBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JSZXF1aXJlZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb25kaXRpb25zOiBwcm9wcz8udGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICBjb25kaXRpb25zMjogcHJvcHM/LnRleHRzPy5jb25kaXRpb25zMixcbiAgICAgICAgICAgIGRyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uZHJvcGRvd25UaXRsZSxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBuZFByb3BzQ29uc3VsdD8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdWx0VHlwZUlkOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wLmNvbnN1bHRfdHlwZV9pZCA/PyBwcm9wLmNvbnN1bHRUeXBlSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogcHJvcC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcm9wLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uZHJvcGRvd25QbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclJlcXVpcmVkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhvdGVsRHJvcDpcbiAgICAgICAgICAgICAgICBwcm9wcz8uaG90ZWxzPy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5ob3RlbERyb3BUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBwcm9wLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcm9wLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaG90ZWxEcm9wUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yUmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSBhcyBzdHJpbmcsXG4gICAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAnbm9tYnJlJyxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXROYW1lLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXROYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXROYW1lUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvck5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAnc3VybmFtZScsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dFN1cm5hbWVzID8/XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0bGFzdG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0U3VybmFtZXMgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0bGFzdG5hbWVcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0U3VybmFtZXNQbGFjZUhvbGRlciA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dGxhc3RuYW1lUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclN1cm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCksXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWxQbGFjZUhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yRW1haWwsXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAncGhvbmUnLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSksXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0UGhvbmVQbGFjZUhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGVsJyxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JQaG9uZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSBhcyBCYWJ5bG9uSW5wdXRJW10sXG4gICAgICAgICAgICBpbmZvOiB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgbmRQcm9wcz8udGV4dHM/LmFkZHJlc3NJY29uLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbmRQcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogbmRQcm9wcz8ubGlua3M/LmFkZHJlc3M/LlswXT8uWzBdPy5sYWJlbCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyBuZFByb3BzPy50ZXh0cz8uZW1haWxJY29uLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbmRQcm9wcz8udGV4dHM/LmVtYWlsVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKG5kUHJvcHM/LmxpbmtzPy5lbWFpbD8uWzBdKT8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5idG4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYG1haWx0bzoke2J0bj8udXJsfWxgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwaG9uZToge1xuICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgbmRQcm9wcz8udGV4dHM/LnBob25lSWNvbixcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG5kUHJvcHM/LnRleHRzPy5waG9uZVRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhuZFByb3BzPy5saW5rcz8ucGhvbmU/LlswXSk/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgIChidG4pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYnRuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGBwaG9uZToke2J0bj8udXJsfWxgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbkNvbnRhY3RGb3JtSTtcbiAgICB9XG5cbiAgICBtYXBDb250YWN0QWRkcmVzcyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25Db250YWN0QWRkcmVzc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBhZGRyZXNzU291cmNlID0gcHJvcHM/LmhvdGVsQWRkcmVzcyA/PyBwcm9wcz8uYWRkcmVzcz8uWzBdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW5mbzoge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIHByb3BzPy50ZXh0cz8uYWRkcmVzc0ljb24sXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBhZGRyZXNzU291cmNlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NTb3VyY2U/LmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWRkcmVzc1NvdXJjZT8uY3AsIGFkZHJlc3NTb3VyY2U/LmNpdHldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCcgJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzU291cmNlPy5sb2NhbGl0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthZGRyZXNzU291cmNlPy5wcm92aW5jZSwgYWRkcmVzc1NvdXJjZT8uY291bnRyeV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oJywgJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHBhcnQsIGlkeCwgYXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA9PT0gMCkgcmV0dXJuIHBhcnQgKyAnPGJyPic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA9PT0gMSAmJiBhcnJbMl0pIHJldHVybiBwYXJ0ICsgJywgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ID09PSAxKSByZXR1cm4gcGFydCArICc8YnI+JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ID09PSAyKSByZXR1cm4gcGFydCArICc8YnI+JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFydDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuam9pbignJylcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50ZXh0MSB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhZGRyZXNzU291cmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYWRkcmVzc1NvdXJjZS5saW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy51cmwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBhZGRyZXNzU291cmNlPy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSBhcyAoeyBzbWFsbFRleHQ/OiBzdHJpbmcgfSAmIEJhYnlsb25CdXR0b25JKVtdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZW1haWw6IHtcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIHByb3BzPy50ZXh0cz8uZW1haWxJY29uLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmVtYWlsVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmVtYWlsVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uZW1haWxUaXRsZT8uY29udGFpbiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc1NvdXJjZT8uZW1haWwsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzU291cmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgbWFpbHRvOiR7YWRkcmVzc1NvdXJjZT8uZW1haWx9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2V4dGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogYWRkcmVzc1NvdXJjZT8uZW1haWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxUZXh0OiBhZGRyZXNzU291cmNlPy5lbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHByb3BzPy50ZXh0cz8udXJsMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2V4dGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogcHJvcHM/LnRleHRzPy50ZXh0MixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbWFsbFRleHQ6IHByb3BzPy50ZXh0cz8udGV4dDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdIGFzICh7IHNtYWxsVGV4dD86IHN0cmluZyB9ICYgQmFieWxvbkJ1dHRvbkkpW10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwaG9uZToge1xuICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgcHJvcHM/LnRleHRzPy5yZXNlcnZhdGlvbnNJY29uLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnJlc2VydmF0aW9uc1RpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5yZXNlcnZhdGlvbnNUaXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5yZXNlcnZhdGlvbnNUaXRsZT8uY29udGFpbiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc1NvdXJjZT8ucGhvbmUsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBhZGRyZXNzU291cmNlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IChbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgdGVsOiR7YWRkcmVzc1NvdXJjZT8ucGhvbmV9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2V4dGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogYWRkcmVzc1NvdXJjZT8ucGhvbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxUZXh0OiBhZGRyZXNzU291cmNlPy5waG9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgdGVsOiR7YWRkcmVzc1NvdXJjZT8ucGhvbmV0d299YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2V4dGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogYWRkcmVzc1NvdXJjZT8ucGhvbmV0d28sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxUZXh0OiBhZGRyZXNzU291cmNlPy5waG9uZXR3byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0gYXMgKHsgc21hbGxUZXh0Pzogc3RyaW5nIH0gJiBCYWJ5bG9uQnV0dG9uSSlbXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYG1haWx0bzoke3Byb3BzPy50ZXh0cz8udXJsM31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcz8udGV4dHM/LnRleHQzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsVGV4dDogcHJvcHM/LnRleHRzPy50ZXh0MyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgdGVsOiR7cHJvcHM/LnRleHRzPy51cmw0fWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzPy50ZXh0cz8udGV4dDQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxUZXh0OiBwcm9wcz8udGV4dHM/LnRleHQ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBDb250YWN0TWFwKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQ29udGFjdE1hcGFJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbnRlbnRVcmw6IHByb3BzPy50ZXh0cz8ucGhvbmVJY29uLFxuICAgICAgICAgICAgbWFwSW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgbWFwSW1hZ2VNb2JpbGU6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lc21vYmlsZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25Db250YWN0TWFwYUk7XG4gICAgfVxuXG4gICAgbWFwQ29udGFjdEhvdyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkNvbnRhY3RIb3dJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/LlZlbnRhamFzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Db250YWN0TWFwSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQ29udGFjdEhvd0k7XG4gICAgfVxuXG4gICAgbWFwV2VibWFwKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uV2VibWFwSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaW5rczogKFxuICAgICAgICAgICAgICAgIHByb3BzPy5wYWdlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGluay5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbGluay51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgICAgICkgYXMgQmFieWxvbkJ1dHRvbklbXVxuICAgICAgICAgICAgKS5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGxpbmspID0+XG4gICAgICAgICAgICAgICAgICAgIGxpbmsudXJsPy5zcGxpdCgnLycpWzFdID09PVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmxvY2F0ZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICkgYXMgc3RyaW5nLFxuICAgICAgICAgICAgZ3JvdXBCeUNhdGVnb3J5OiB0aGlzLmhhc1RleHRUb2tlblZhbHVlKFxuICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uZ3JvdXBCeUNhdGVnb3J5XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbWFwTGVnYWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25MZWdhbEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy5jb250YWluLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25MZWdhbEk7XG4gICAgfVxuXG4gICAgbWFwQnJlYWRjcnVtYnMoY29tcG9uZW50OiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQnJlYWRjcnVtYkkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWRlbnRpZmllcjogY29tcG9uZW50Py5pZGVudGlmaWVyLFxuICAgICAgICAgICAgdGV4dGNvbG9yOiBjb21wb25lbnQ/LnRleHRjb2xvcixcbiAgICAgICAgICAgIGxpbmtzOiAoY29tcG9uZW50Py5wcm9wcz8uaXRlbXMgYXMgYW55W10pXG4gICAgICAgICAgICAgICAgPy5zb3J0KChhLCBiKSA9PiBhIC0gYilcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBpdGVtPy5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2ludGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0/LnVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW0/LnVybD8uY2hhckF0KGl0ZW0/LnVybD8ubGVuZ3RoIC0gMSkgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy8nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW0/LnVybD8uc2xpY2UoMCwgLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGl0ZW0/LnVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQnJlYWRjcnVtYkk7XG4gICAgfVxuXG4gICAgbWFwUm9vbXNDb2xzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uUm9vbXNDb2xzSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmaWx0ZXJzOiBwcm9wcz8uZmlsdGVycz8ubWFwKChmaWx0ZXI6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogZmlsdGVyLm5hbWUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogZmlsdGVyPy52YWx1ZXM/Lm1hcCgob3B0aW9uOiBzdHJpbmcpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IG9wdGlvbixcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogb3B0aW9uLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogZmlsdGVyLm5hbWUsXG4gICAgICAgICAgICAgICAgc21hbGx0aXRsZTogZmlsdGVyLnNtYWxsdGl0bGUsXG4gICAgICAgICAgICAgICAgZmlsdGVySWQ6IGZpbHRlci5maWx0ZXJJZCxcbiAgICAgICAgICAgIH0pKSBhcyBCYWJ5bG9uRHJvcGRvd25JW10sXG4gICAgICAgICAgICBzdEZpbHRlcnM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG5kRmlsdGVyczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5yb29tc1xuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWRyb29tRmlsdGVySWQ6IGl0ZW0/LnRleHRzPy5iZWRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcmlzdGljc0ZpbHRlcklkOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbS5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0/LnByaWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlVGV4dDogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0/Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVxdWlwbWVudDogaXRlbT8uc2VydmljZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh2OiBzdHJpbmcpID0+IHY/LnRyaW0oKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvb21TZXJ2aWNlVHlwZS5jaGFyYWN0ZXJpc3RpY3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Sb29tc0xpc3RFcXVpcG1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm11bHRpbWVkaWE/LmZpbmQoKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWcpID0+IHRhZy5uYW1lID09PSAnUm9vbXNDb2xzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA/PyBpdGVtLm11bHRpbWVkaWE/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5tdWx0aW1lZGlhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uUm9vbXNMaXN0SXRlbVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc29ydCgoYTogQmFieWxvblJvb21zTGlzdEl0ZW0sIGI6IEJhYnlsb25Sb29tc0xpc3RJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoYS5vcmRlciA/PyAwKSAtIChiLm9yZGVyID8/IDApO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICB9IGFzIEJhYnlsb25Sb29tc0NvbHNJO1xuICAgIH1cblxuICAgIG1hcEZlYXR1cmVzU2xpZGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkZlYXR1cmVzU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/LlZlbnRhamFzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25GZWF0dXJlc1NsaWRlckl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgIH0gYXMgQmFieWxvbkZlYXR1cmVzU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBCYW5uZXJJbmZvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQmFubmVySW5mb0kge1xuICAgICAgICBsZXQgaW1nID1cbiAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdID8/IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTogaW1nPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBpbWc/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICB2aWRlbzogcHJvcHM/LnRleHRzPy5bJ1ZpZGVvLWxpbmsnXSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpbWc/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZywgZmFsc2UpLFxuICAgICAgICAgICAgZXh0cmFDbGFzczogcHJvcHM/LnRleHRzPy5leHRyYUNsYXNzLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQmFubmVySW5mb0k7XG4gICAgfVxuXG4gICAgbWFwUm9vbURldGFpbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblJvb21EZXRhaWxJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFwcm9wcz8ucm9vbSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhLCBidXR0b25zIH0gPSBwcm9wcz8ucm9vbTtcbiAgICAgICAgbGV0IGRldGFpbEJ1dHRvbnMgPSBwcm9wcy5idXR0b25zPy5sZW5ndGggPyBwcm9wcy5idXR0b25zIDogYnV0dG9ucztcbiAgICAgICAgaWYgKGJ1dHRvbnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgZGV0YWlsQnV0dG9ucyA9IFtidXR0b25zWzBdXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHRleHRzPy5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgdGV4dHM/LmFkZGl0aW9uYWw0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICB0ZXh0cz8uYWRkaXRpb25hbDQgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICB0ZXh0cz8uYWRkaXRpb25hbDQgIT09ICcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LmFkZGl0aW9uYWw0XG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGVxdWlwbWVudFRpdGxlOiB0ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoZGV0YWlsQnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ucm9vbT8uc2VydmljZXNcbiAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICBpdGVtPy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICA/LnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHY6IHN0cmluZykgPT4gdj8udHJpbSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKFJvb21TZXJ2aWNlVHlwZS5FcXVpcG1lbnQpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbT8uY2xhc3N9YCxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIH0pKSBhcyBCYWJ5bG9uRXF1aXBtZW50SXRlbVtdLFxuICAgICAgICAgICAgc2hvd0xlc3M6IHByb3BzPy50ZXh0cz8uc2hvd0xlc3MsXG4gICAgICAgICAgICBzaG93TW9yZTogcHJvcHM/LnRleHRzPy5zaG93TW9yZSxcbiAgICAgICAgICAgIHNob3dBbGw6IHByb3BzPy50ZXh0cz8uc2hvd0FsbCA/IGZhbHNlIDogdHJ1ZSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcm9vbVRleHRzOiB0ZXh0cyxcbiAgICAgICAgfSBhcyBCYWJ5bG9uUm9vbURldGFpbEk7XG4gICAgfVxuXG4gICAgbWFwVG9wU2xpZGVyVGh1bWJzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uVG9wU2xpZGVyVGh1bWJzSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGZyb206IHByb3BzPy50ZXh0cz8uZnJvbSxcbiAgICAgICAgICAgIHByaWNlOiBwcm9wcz8udGV4dHM/LnByaWNlLFxuICAgICAgICAgICAgY3VycmVuY3k6IHByb3BzPy50ZXh0cz8uY3VycmVuY3ksXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBpbWFnZTogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbj8ubWFwKChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PiAoe1xuICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgQmFieWxvblRvcFNsaWRlclRodW1ic0k7XG4gICAgfVxuXG4gICAgbWFwUm9vbXNMaXN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uUm9vbXNMaXN0SSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdEZpbHRlcnM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG5kRmlsdGVyczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ucm9vbXNcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVkcm9vbUZpbHRlcklkOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcmlzdGljc0ZpbHRlcklkOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5zbGljZSgpLnJldmVyc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2VUZXh0OiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1aXBtZW50OiBpdGVtPy5zZXJ2aWNlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8udHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHY6IHN0cmluZykgPT4gdj8udHJpbSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9vbVNlcnZpY2VUeXBlLmNoYXJhY3RlcmlzdGljc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmNsYXNzfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblJvb21zTGlzdEVxdWlwbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubXVsdGltZWRpYT8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbWc6IGFueSkgPT4gaW1nPy5jb3ZlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHx8IGl0ZW0/Lm11bHRpbWVkaWE/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5tdWx0aW1lZGlhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0/Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblJvb21zTGlzdEl0ZW1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnNvcnQoKGE6IEJhYnlsb25Sb29tc0xpc3RJdGVtLCBiOiBCYWJ5bG9uUm9vbXNMaXN0SXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGEub3JkZXIgPz8gMCkgLSAoYi5vcmRlciA/PyAwKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uUm9vbXNDb2xzSTtcbiAgICB9XG5cbiAgICBtYXBDb21pbmdTb29uKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQ29taW5nU29vbkkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW1hZ2VzOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSW1hZ2VJXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbG9nbzogcHJvcHM/Lm11bHRpbWVkaWE/LmxvZ28/Lm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSW1hZ2VJXG4gICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgdGV4dHM6IHByb3BzPy50ZXh0cyxcbiAgICAgICAgICAgIHNvY2lhbE1lZGlhOiBwcm9wcz8uc29jaWFsTWVkaWEsXG4gICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcyk/LlswXSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQ29taW5nU29vbkk7XG4gICAgfVxuXG4gICAgbWFwT2ZmZXJEZXRhaWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25PZmZlckRldGFpbEkge1xuICAgICAgICBjb25zdCBvZmZlciA9IHByb3BzPy5vZmZlcj8uWzBdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IG9mZmVyPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogb2ZmZXI/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBvZmZlcj8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgbmRUaXRsZTogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGxhYmVsRGlzY291bnQ6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICBsYWJlbEZyb206IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICBjdXJyZW5jeTogb2ZmZXI/LmN1cnJlbmN5LFxuICAgICAgICAgICAgcHJpY2U6IG9mZmVyPy5wcmljZSxcbiAgICAgICAgICAgIGRpc2NvdW50OiBvZmZlcj8uZGlzY291bnQsXG4gICAgICAgICAgICBjb25kaXRpb25zOiBvZmZlcj8udGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICBjb25kaXRpb25zVGl0bGU6IG9mZmVyPy50ZXh0cz8uY29uZGl0aW9uc1RpdGxlLFxuICAgICAgICAgICAgYWRkaXRpb25hbDE6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICBhZGRpdGlvbmFsMjogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG9mZmVyPy5tdWx0aW1lZGlhPy5bMF0sIGZhbHNlKSxcbiAgICAgICAgICAgIG11bHRpbWVkaWE6IHRoaXMubWFwSW1hZ2VzKG9mZmVyPy5tdWx0aW1lZGlhKSxcbiAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzKT8uWzBdLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKG9mZmVyPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgc2VydmljZXM6IHRoaXMubWFwR2xvYmFsU2VydmljZXMob2ZmZXI/LnNlcnZpY2VzKSxcbiAgICAgICAgICAgIHRleHRzOiB0aGlzLm1hcEdsb2JhbFRleHRzKG9mZmVyPy50ZXh0cyksXG4gICAgICAgIH0gYXMgQmFieWxvbk9mZmVyRGV0YWlsSTtcbiAgICB9XG5cbiAgICBtYXBPZmZlcnNMaXN0KFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBpc0hvbWU6IGJvb2xlYW4gfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uT2ZmZXJzTGlzdEkge1xuICAgICAgICBjb25zdCBsaXN0ID0gcHJvcHM/Lm9mZmVycyA/PyBwcm9wcz8uZXZlbnRzID8/IHByb3BzLmV2ZW50O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGl0ZW1zOiBsaXN0Py5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtPy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHRoaXMubWFwR2xvYmFsVGV4dHMoaXRlbT8udGV4dHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2U6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ucHJpY2UgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5wcmljZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKHA6IGFueSkgPT4gcC5hY3RpdmUgPT09IDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHA6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlOiBwLnByaWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeTogaXRlbT8uY3VycmVuY3ksXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNjb3VudDogaXRlbT8uZGlzY291bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0OiBpdGVtPy5tdWx0aW1lZGlhPy5bMF0/LmFsdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlQnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWVPZmZlckJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyk/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsRnJvbTogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxEaXNjb3VudDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDIgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG9tZTogaXRlbT8uc2l0ZXM/LlswXT8uaG9tZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVwOiBpdGVtPy5zaXRlcz8uWzBdPy5wb3B1cCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbk9mZmVyc0xpc3RJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXJJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNIb21lOiBpc0hvbWUsXG4gICAgICAgIH0gYXMgQmFieWxvbk9mZmVyc0xpc3RJO1xuICAgIH1cblxuICAgIG1hcEZhcShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkZhcUkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5sb2NhdGlvbkhvd1xuICAgICAgICAgICAgICAgID8gcHJvcHM/LmxvY2F0aW9uSG93Py5pdGVtcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChmYXE6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBmYXEudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZmFxLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSXRlbUlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IHByb3BzPy5pdGVtcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChmYXE6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBmYXEudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZmFxLnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JdGVtSVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltZzogcHJvcHM/LmxvY2F0aW9uTWFwXG4gICAgICAgICAgICAgICAgPyB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubG9jYXRpb25NYXA/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmxvY2F0aW9uTWFwPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uRmFxSTtcbiAgICB9XG5cbiAgICBtYXBTdGF0aWNGb290ZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25TdGF0aWNGb290ZXJJIHtcbiAgICAgICAgLy8gRnVuY2lvbiB0ZW1wb3JhbCBoYXN0YSBxdWUgZWwgYmFjayBkZXZ1ZWx2YSBsYSBsaXN0YSBkZSBob3RlbGVzXG4gICAgICAgIGNvbnN0IGR5bmFtaWNIb3RlbHNBZHJlc3NlcyA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFkZHJlc3Nlc01hcDogeyBba2V5OiBzdHJpbmddOiBQYXJ0aWFsPEJhYnlsb25BZGRyZXNzSXRlbT4gfSA9XG4gICAgICAgICAgICAgICAge307XG4gICAgICAgICAgICBpZiAoIXByb3BzPy50ZXh0cykgcmV0dXJuO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMocHJvcHM/LnRleHRzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoJ2FkZHJlc3NsaXN0JykgJiYgcHJvcHM/LnRleHRzW2tleV0pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBrZXkubWF0Y2goL2FkZHJlc3NsaXN0KFxcZCspKC4qKS8pO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gbWF0Y2hbMV07XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IG1hdGNoWzJdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFkZHJlc3Nlc01hcFtpbmRleF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZXNNYXBbaW5kZXhdID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogcGFyc2VJbnQoaW5kZXgsIDEwKS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHByb3BzPy50ZXh0c1trZXldO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChmaWVsZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1RpdGxlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzTWFwW2luZGV4XS5uYW1lID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0FkZHJlc3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZXNNYXBbaW5kZXhdLmFkZHJlc3MgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzTWFwW2luZGV4XS5mdWxsX2FkZHJlc3MgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnVXJsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzTWFwW2luZGV4XS51cmwgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnVGVsZic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRyZXNzZXNNYXBbaW5kZXhdIGFzIGFueSkucGhvbmUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnRW1haWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkcmVzc2VzTWFwW2luZGV4XSBhcyBhbnkpLmVtYWlsID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhhZGRyZXNzZXNNYXApIGFzIEJhYnlsb25BZGRyZXNzSXRlbVtdO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBuZFRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgcmRUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5saW5rc1RpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ubGlua3NUaXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ubGlua3NUaXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRoVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ubG9jYXRpb25UaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmxvY2F0aW9uVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiAocHJvcHM/LnRleHRzPy5sb2NhdGlvblRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiBwcm9wcz8udGV4dHM/Lm5ld3NsZXR0ZXJUaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/Lm5ld3NsZXR0ZXJUaXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ubmV3c2xldHRlclRpdGxlPy5jb250YWluKSksXG5cbiAgICAgICAgICAgIGZpZnRoVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uYWRkaXRpb25hbEZvb3RlclRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uYWRkaXRpb25hbEZvb3RlclRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5hZGRpdGlvbmFsRm9vdGVyVGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBhaFRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LkFkZHJlc3NIb3RlbHNUaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LkFkZHJlc3NIb3RlbHNUaXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uQWRkcmVzc0hvdGVsc1RpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgbmR0aXRsZTogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICByZHRpdGxlOiBwcm9wcz8udGV4dHM/LmxpbmtzVGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmxvY2F0aW9uVGl0bGU/LnRhZyA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/Lm5ld3NsZXR0ZXJUaXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGZpZnRodGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkaXRpb25hbEZvb3RlclRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY29weXJpZ2h0OiBwcm9wcz8udGV4dHM/LmNvcHlyaWdodD8udGFnLFxuICAgICAgICAgICAgICAgIGFodGl0bGU6IHByb3BzPy50ZXh0cz8uQWRkcmVzc0hvdGVsc1RpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZnJhbWVVcmw6ICEhcHJvcHM/LnRleHRzPy5mcmFtZVVybFxuICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5mcmFtZVVybFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY29udGFjdEluZm86IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5jb250YWN0Py5bMF0pLFxuICAgICAgICAgICAgY29udGFjdExpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uY29udGFjdExpbmtzPy5bMF0pLFxuICAgICAgICAgICAgY29udGFjdFRleHQ6IHByb3BzPy50ZXh0cz8udGV4dHBob25lMixcbiAgICAgICAgICAgIGZvb3RlckxpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uZm9vdGVyTGlua3M/LlswXSksXG4gICAgICAgICAgICBhZGRyZXNzOiBBcnJheS5pc0FycmF5KHByb3BzPy5hZGRyZXNzKVxuICAgICAgICAgICAgICAgID8gcHJvcHM/LmFkZHJlc3MubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChhZGRyZXNzOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogYWRkcmVzcy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGFkZHJlc3MubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6IGFkZHJlc3MuYWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IGFkZHJlc3MuY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBhZGRyZXNzLnByb3ZpbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeTogYWRkcmVzcy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3A6IGFkZHJlc3MuY3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGFkZHJlc3MubGluayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxfYWRkcmVzczogYWRkcmVzcy5mdWxsQWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWdzOiBhZGRyZXNzLnNsdWdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQWRkcmVzc0l0ZW1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgYWRkcmVzc0hvdGVsczpcbiAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KHByb3BzPy5hZGRyZXNzSG90ZWxzKSAmJlxuICAgICAgICAgICAgICAgIHByb3BzPy5hZGRyZXNzSG90ZWxzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8uYWRkcmVzc0hvdGVscy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRyZXNzOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBhZGRyZXNzLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGFkZHJlc3MubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiBhZGRyZXNzLmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogYWRkcmVzcy5jaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBhZGRyZXNzLnByb3ZpbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IGFkZHJlc3MuY291bnRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcDogYWRkcmVzcy5jcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGFkZHJlc3MubGluayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaG9uZTogYWRkcmVzcy5waG9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogYWRkcmVzcy5lbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsX2FkZHJlc3M6IGFkZHJlc3MuZnVsbEFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Z3M6IGFkZHJlc3Muc2x1Z3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQWRkcmVzc0l0ZW1cbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIDogKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZHluYW1pY0FkZHJlc3NlcyA9IGR5bmFtaWNIb3RlbHNBZHJlc3NlcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZHluYW1pY0FkZHJlc3NlcyAmJiBkeW5hbWljQWRkcmVzc2VzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZHluYW1pY0FkZHJlc3Nlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgfSkoKSxcbiAgICAgICAgICAgIHNvY2lhbE1lZGlhOiBwcm9wcz8uc29jaWFsTWVkaWE/Lm1hcChcbiAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGJhYnlsb24tJHtsaW5rLm5hbWU/LnRvTG93ZXJDYXNlKCl9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbGluay51cmwsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29weXJpZ2h0OlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmNvcHlyaWdodCA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmNvcHlyaWdodFxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uY29weXJpZ2h0Py5jb250YWluLFxuICAgICAgICAgICAgbmF2OiBwcm9wcz8ubmF2Py5tYXAoXG4gICAgICAgICAgICAgICAgKG5hdjogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IG5hdi5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBuYXYudXJsLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltZzoge1xuICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5iYWNrZ3JvdW5kPy5bMF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGFsdDogcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmQ/LnRpdGxlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvPy5bMF0sIGZhbHNlKSxcbiAgICAgICAgICAgIC8vIGlucHV0OiBwcm9wcz8udGV4dHM/Lm5ld3NsZXR0ZXJEZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ25ld3NsZXR0ZXInLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0SG9sZGVyLFxuICAgICAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5uZXdzRXJyb3JFbWFpbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXF1aXJlZEZpZWxkOiBwcm9wcz8udGV4dHM/LnJlcXVpcmVkRmllbGQsXG4gICAgICAgICAgICBsZWdhbEFkdmlzZTogcHJvcHM/LnRleHRzPy5zdWJzY3JpYmVyLFxuICAgICAgICAgICAgYWRkaXRpb25hbExpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5saW5rcz8uYWRkaXRpb25hbEZvb3RlckxpbmtzWzBdPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gISFidG4/LmxhYmVsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uU3RhdGljRm9vdGVySTtcbiAgICB9XG5cbiAgICBtYXBHYWxsZXJ5KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uR2FsbGVyeUkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGV4dHM6IHRoaXMubWFwR2xvYmFsVGV4dHMocHJvcHM/LnRleHRzKSBhcyBCYWJ5bG9uVGV4dEluZm9JLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcm9vbXNCdG46IHtcbiAgICAgICAgICAgICAgICBsYWJlbDogcHJvcHM/LnRleHRzPy5maWx0ZXJSb29tcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWx0ZXJzQnRuOiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzPy50ZXh0cz8uZmlsdGVyQ2F0ZWdvcmllcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWx0ZXJNb2RhbEJ0bjpcbiAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LkZpbHRlck1vZGFsQnRuID8/IHByb3BzPy50ZXh0cz8uZmlsdGVyTW9kYWxCdG4sXG4gICAgICAgICAgICBmaWx0ZXJSb29tc0J0bjpcbiAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LkZpbHRlclJvb21Nb2RhbEJ0biA/P1xuICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uZmlsdGVyUm9vbU1vZGFsQnRuID8/XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5maWx0ZXJSb29tcyxcbiAgICAgICAgICAgIGZpbHRlcnM6IHByb3BzPy5maWx0ZXJzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbDogaXRlbS5hbGwsXG4gICAgICAgICAgICAgICAgICAgICAgICByb29tOiBpdGVtLnJvb20sXG4gICAgICAgICAgICAgICAgICAgICAgICByb29tczogaXRlbS5yb29tcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkdhbGxlcnlGaWx0ZXJcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZXM6IHByb3BzPy5maWx0ZXJzXG4gICAgICAgICAgICAgICAgPy5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjYzogeyBtdWx0aW1lZGlhOiBhbnlbXTsgZmlsdGVySW5kZXg6IG51bWJlciB9W10sXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGFueSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlckluZGV4OiBudW1iZXJcbiAgICAgICAgICAgICAgICAgICAgKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyLm11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtdWx0aW1lZGlhV2l0aEZpbHRlciA9IGZpbHRlci5tdWx0aW1lZGlhLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGZpbHRlckluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhOiBtdWx0aW1lZGlhV2l0aEZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlckluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZmxhdE1hcCgoeyBtdWx0aW1lZGlhIH06IGFueSkgPT4gbXVsdGltZWRpYSlcbiAgICAgICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcsIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGltZz8uZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvVXJsOiBpbWcudmlkZW9VcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uR2FsbGVyeUl0ZW1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25HYWxsZXJ5STtcbiAgICB9XG5cbiAgICBtYXBMYW5ndWFnZU1vZGFsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uTGFuZ3VhZ2VNb2RhbEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubGFuZ3VhZ2VzLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IHByb3BzPy5sYW5ndWFnZXM/LmZpbmQoXG4gICAgICAgICAgICAgICAgKGxuZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICBsbmcuaWQgPT09IHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8uaWRcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICB9IGFzIEJhYnlsb25MYW5ndWFnZU1vZGFsSTtcbiAgICB9XG5cbiAgICBtYXBFbmdpbmUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25FbmdpbmVJIHwgQmFieWxvbkVuZ2luZU1vZGFsSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvbmx5QWR1bHRzOiBwcm9wcz8ub25seUFkdWx0cyxcbiAgICAgICAgICAgIGRlZmF1bHRCdXR0b246IHByb3BzPy5kZWZhdWx0SW50ZXJuYWxCdXR0b24sXG4gICAgICAgICAgICBkZWZhdWx0UHJvbW9Db2RlOiBwcm9wcz8uZGVmYXVsdFByb21vQ29kZSxcbiAgICAgICAgICAgIGJ1dHRvbjogeyBsYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvclN1Ym1pdCwgdXJsOiBwcm9wcz8udXJsIH0sXG4gICAgICAgICAgICBkYXRlcGlja2VyRGF0YToge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm1vdG9yRGF0ZVRpdGxlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGd1ZXN0c0lucHV0OiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubW90b3JHdWVzdHNJbnB1dEhvbGRlcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcm9tb0lucHV0OiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubW90b3JQcm9tb0hvbGRlcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBndWVzdHM6IHtcbiAgICAgICAgICAgICAgICBidG46IHsgbGFiZWw6IHByb3BzPy50ZXh0cz8ubW90b3JBcHBseSB9LFxuICAgICAgICAgICAgICAgIGFkdWx0c0Ryb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yQWR1bHRzVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhwcm9wcz8ubWF4QWR1bHRzLCAxKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGp1bmlvcnNEcm9wZG93bjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm1heEp1bmlvciA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JKdW5pb3JUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsVGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JKdW5pb3JTbWFsbExhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZW5lcmF0ZUFnZXNPcHRpb25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tYXhKdW5pb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGtpZHNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvcktpZHNUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgc21hbGxUaXRsZTogcHJvcHM/LnRleHRzPy5tb3RvcktpZHNTbWFsbExhYmVsLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8ubWF4Q2hpbGRyZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhwcm9wcz8ubWF4Q2hpbGRyZW5zKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmdlbmVyYXRlQWdlc09wdGlvbnMocHJvcHM/Lm1heENoaWxkcmVuKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJhYmllc0Ryb3Bkb3duOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubWF4QmFiaWVzID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckJhYmllc1RpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxUaXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckJhYmllc1NtYWxsVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLmdlbmVyYXRlQWdlc09wdGlvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm1heEJhYmllc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgYmFiaWVzQWdlc0Ryb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhwcm9wcz8ubWF4QWdlQmFiaWVzID8/IDIpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYWdlc0Ryb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tYXhBZ2VDaGlsZHJlbixcbiAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wcz8ubWF4QWdlQmFiaWVzID8/IDIpICsgMVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYWdlVW5pdExhYmVsOiB0aGlzLmdldEFnZVVuaXRMYWJlbChwcm9wcz8udGV4dHMpLFxuICAgICAgICAgICAgICAgIGFnZXNMYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvckFnZXNUaXRsZSxcbiAgICAgICAgICAgICAgICBraWRzTGFiZWw6IHByb3BzPy50ZXh0cz8ubW90b3JLaWRMYWJlbCxcbiAgICAgICAgICAgICAgICBiYWJpZXNMYWJlbDpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5tb3RvckJhYnlMYWJlbCA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/Lm1vdG9yQmFiaWVzTGFiZWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JUaXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yU3VidGl0bGUsXG4gICAgICAgICAgICB1cmw6IHByb3BzPy51cmwsXG4gICAgICAgICAgICBob3RlbDogcHJvcHM/LmhvdGVscz8uWzBdLFxuICAgICAgICAgICAgY29kaWdvOiBwcm9wcz8uY29kaWdvID8gcHJvcHM/LmNvZGlnbyA6ICdkZW1vX2MydF9jbGllbnRlcycsIC8vdG8gY2hhbmdlLCBkb250IGNvbWUgZnJvbSBiYWNrXG4gICAgICAgICAgICBnbFZhbHVlOiBwcm9wcz8uZ2xWYWx1ZSxcbiAgICAgICAgICAgIGhvdGVsc0lucHV0OiBwcm9wcz8udGV4dHM/Lm1vdG9yRHJvcERvd25OYW1lLFxuICAgICAgICAgICAgaG90ZWxzUGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubW90b3JEcm9wRG93bkhvbGRlcixcbiAgICAgICAgICAgIGhvdGVsczoge1xuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5ob3RlbHM/Lm1hcCgoaG90ZWw6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogaG90ZWw/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHRpY2tlcjogaG90ZWw/LnRpY2tlcixcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBob3RlbD8udXJsLFxuICAgICAgICAgICAgICAgICAgICBpZDogaG90ZWw/LmlkLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbkVuZ2luZU1vZGFsSSB8IEJhYnlsb25FbmdpbmVJO1xuICAgIH1cbiAgICBtYXBTbGlkZXIzSXRlbXMoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIGlkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25TbGlkZXIzSXRlbXNJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbS5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblNsaWRlckl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvblNsaWRlcjNJdGVtc0k7XG4gICAgfVxuXG4gICAgbWFwSG90ZWxzU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSG90ZWxzU2xpZGVySSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgaG90ZWxzOiBwcm9wcz8uaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0OiBpdGVtLm11bHRpbWVkaWE/LlswXT8uYWx0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbS5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbS5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblNsaWRlckl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkhvdGVsc1NsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwSG90ZWxzTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkhvdGVsc0xpc3RJIHtcbiAgICAgICAgLy8gVE9ETzogUmV2aXNhciBtYXBwZW8gZGUgaW3DoWdlbmVzXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgaG90ZWxzOiBwcm9wcz8uaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0TW9yZTogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtPy5tdWx0aW1lZGlhPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogaXRlbT8ubXVsdGltZWRpYT8uWzBdPy5hbHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBmVGl0bGU6IHByb3BzPy50ZXh0cz8uZm9vdGVyVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmU3VidGl0bGU6IHByb3BzPy50ZXh0cz8uZm9vdGVyUHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlczogaXRlbT8uc2VydmljZXNMaXN0Py5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbT8uY2xhc3N9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ0bkxlc3M6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ0bk1vcmU6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblNsaWRlckl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkhvdGVsc0xpc3RJO1xuICAgIH1cblxuICAgIG1hcEluZm80SW1nKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mbzRpbWdJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgaW1hZ2UxOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXNbMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZTI6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lc1sxXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltYWdlMzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzWzJdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1hZ2U0OiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXNbM10sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm80aW1nSTtcbiAgICB9XG5cbiAgICBtYXBTZXJ2aWNlc1NsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblNlcnZpY2VzU2xpZGVySSB7XG4gICAgICAgIGNvbnN0IGFkdmVudCA9IHByb3BzPy5zZXJ2aWNlc1NlcnZpY2UgPz8gcHJvcHM/LlZlbnRhamFzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWR2YW50YWdlczogYWR2ZW50Py5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5uYW1lID8/IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5jbGFzcyA/PyBpdGVtLmljb259YCxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uU2VydmljZXNTbGlkZXJJO1xuICAgIH1cblxuICAgIG1hcEFkdmFudGFnZXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25BZHZhbnRhZ2VzSSB7XG4gICAgICAgIGNvbnN0IHZlbnRhamFzID1cbiAgICAgICAgICAgIHByb3BzPy5WZW50YWphcyA/PyBwcm9wcz8ubGlzdHMgPz8gcHJvcHM/Lkxpc3RzID8/IHByb3BzPy5MaXN0O1xuICAgICAgICBjb25zdCBhZHYgPSB2ZW50YWphcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgIH0pKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgYWR2YW50YWdlczogYWR2LFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlZU1vcmU6IHByb3BzPy50ZXh0cz8uYWR2YW50YWdlc3NlZW1vcmUsXG4gICAgICAgICAgICBzZWVMZXNzOiBwcm9wcz8udGV4dHM/LmFkdmFudGFnZXNzZWVsZXNzLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5hZHZhbnRhZ2VzaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQWR2YW50YWdlc0k7XG4gICAgfVxuXG4gICAgbWFwSW5mb0JpZyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm9CaWdJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8ucHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LnRpdGxlLFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5idXR0b25zXG4gICAgICAgICAgICApPy5bMF0sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1nU21hbGw6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzFdID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5uZGltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9CaWdJO1xuICAgIH1cblxuICAgIG1hcEluZm9aaWdaYWdWMihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgaWRlbnRpZmllcjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkluZm9aaWd6YWdWMkkge1xuICAgICAgICBjb25zdCBbaW1hZ2VdID1cbiAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZSB8fCBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMgfHwgW107XG4gICAgICAgIGNvbnN0IFtpbWFnZTJdID1cbiAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZTIgfHwgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlc3NtYWxsIHx8IFtdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgICAgIGl0ZW1zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGltYWdlPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltYWdlLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpbWFnZT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWFnZT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGltYWdlPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpbWFnZTI/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1hZ2UyLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpbWFnZTI/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1hZ2UyPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogaW1hZ2UyPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXM6IHByb3BzPy5WZW50YWphcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGl0ZW0uaWNvbiA/IGBpY29uLSR7aXRlbS5pY29ufWAgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdIGFzIEJhYnlsb25JbmZvWmlnemFnVjJJdGVtW10sXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9aaWd6YWdWMkk7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVyQ29udGFjdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkZvb3RlckNvbnRhY3RJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgZXh0cmFUeHQ6IHByb3BzPy50ZXh0cz8uYWRkaXRpb25hbFRleHQxLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBhbHQ6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5hbHQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWR2YW50YWdlczogcHJvcHM/LlZlbnRhamFzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmljb259YCxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uY29udGFjdExpbmtzPy5bMF0pLFxuICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICAgIGxvY2FsaXR5OiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5sb2NhbGl0eSxcbiAgICAgICAgICAgICAgICBjaXR5OiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5jaXR5LFxuICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5wcm92aW5jZSxcbiAgICAgICAgICAgICAgICBjb3VudHJ5OiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgIGNwOiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5jcCxcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgIGxhdDogcHJvcHM/LmhvdGVsQWRkcmVzcz8ubGF0LFxuICAgICAgICAgICAgICAgIGxvbjogcHJvcHM/LmhvdGVsQWRkcmVzcz8ubG9uLFxuICAgICAgICAgICAgICAgIHBob25lOiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5waG9uZSxcbiAgICAgICAgICAgICAgICBlbWFpbDogcHJvcHM/LmhvdGVsQWRkcmVzcz8uZW1haWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25Gb290ZXJDb250YWN0STtcbiAgICB9XG5cbiAgICBtYXBJbmZvMkltZ0JpZyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm8yaW1nQmlnSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgcHJldGl0bGUyOiBwcm9wcz8udGV4dHM/Lm5kUHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTI6IHByb3BzPy50ZXh0cz8ubmRUaXRsZSxcbiAgICAgICAgICAgIHRleHQyOiBwcm9wcz8udGV4dHM/Lm5kRGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBidXR0b24yOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzFdLFxuICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBhbHQ6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5hbHQgPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF0uYWx0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGltZ1NtYWxsOiB7XG4gICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/Lm5kaW1hZ2VuZXM/LlswXSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/Lm5kaW1hZ2U/LlswXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYWx0OiBwcm9wcz8ubXVsdGltZWRpYT8ubmRpbWFnZW5lcz8uWzBdPy5hbHQsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvMmltZ0JpZ0k7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVyTG9nb3MocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Gb290ZXJMb2dvc0kge1xuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPz8gcHJvcHM/LnRleHRzPy50ZXh0O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgIC4uLnByb3BzPy50ZXh0cyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgICAgICBsb2dvczogcHJvcHM/Lm11bHRpbWVkaWE/LmxvZ29zPy5tYXAoKGxvZ286IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGxvZ28sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKGxvZ28/LmxpbmtzKT8uWzBdLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIEJhYnlsb25Gb290ZXJMb2dvc0k7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVyTGlua3MocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Gb290ZXJMaW5rc0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29weXJpZ2h0OiBwcm9wcz8udGV4dHM/LmNvcHlyaWdodCxcbiAgICAgICAgICAgIHllYXI6IHByb3BzPy50ZXh0cz8ueWVhcixcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICB9IGFzIEJhYnlsb25Gb290ZXJMaW5rc0k7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVyU29jaWFscyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkZvb3RlclNvY2lhbEkge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZExpbmtzID0gKHByb3BzPy5zb2NpYWxNZWRpYSB8fCBbXSkuZmlsdGVyKFxuICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICBsaW5rICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgbGluayAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgbGluay51cmwgIT09ICcnICYmXG4gICAgICAgICAgICAgICAgbGluay5pY29uICE9PSAnJ1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBsaW5rczogZmlsdGVyZWRMaW5rcy5tYXAoKGxpbms6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpY29uOiBgYmFieWxvbi0ke2xpbmsubmFtZT8udG9Mb3dlckNhc2UoKX1gLFxuICAgICAgICAgICAgICAgIHVybDogbGluay51cmwsXG4gICAgICAgICAgICAgICAgbGFiZWw6IGxpbmsubmFtZSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uRm9vdGVyU29jaWFsSTtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXIyaXRlbXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25TbGlkZXIyaXRlbXNJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcy5ob3RlbHNcbiAgICAgICAgICAgICAgICA/IHByb3BzPy5ob3RlbHM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5jaXR5LFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtPy5tdWx0aW1lZGlhPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6IGl0ZW0/Lm11bHRpbWVkaWE/LlswXT8uYWx0LFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlczogaXRlbT8uc2VydmljZXNMaXN0Py5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uY2xhc3N9YCxcbiAgICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICA6IHByb3BzPy5yb29tcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0OiBpdGVtPy5tdWx0aW1lZGlhPy5bMF0/LmFsdCxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIC8vIGxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlczogaXRlbT8uc2VydmljZXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uU2xpZGVyMml0ZW1zSTtcbiAgICB9XG5cbiAgICBtYXBTdGF0aWNGb290ZXJ2Mihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblN0YXRpY0Zvb3RlclYySSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIG5kVGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlLFxuICAgICAgICAgICAgcmRUaXRsZTogcHJvcHM/LnRleHRzPy5saW5rc1RpdGxlLFxuICAgICAgICAgICAgdGhUaXRsZTogcHJvcHM/LnRleHRzPy5sb2NhdGlvblRpdGxlLFxuICAgICAgICAgICAgZnJhbWVVcmw6IHByb3BzPy50ZXh0cz8uZnJhbWVVcmwsXG4gICAgICAgICAgICBpbWdVcmw6IHByb3BzPy5tdWx0aW1lZGlhPy5mb290ZXJpbWc/LlswXT8ubGlua3M/LlswXT8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgY29udGFjdEluZm86IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5jb250YWN0Py5bMF0pLFxuICAgICAgICAgICAgY29udGFjdExpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uY29udGFjdExpbmtzPy5bMF0pLFxuICAgICAgICAgICAgZm9vdGVyTGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5mb290ZXJMaW5rcz8uWzBdKSxcbiAgICAgICAgICAgIGFkZHJlc3M6IEFycmF5LmlzQXJyYXkocHJvcHM/LmFkZHJlc3MpXG4gICAgICAgICAgICAgICAgPyBwcm9wcz8uYWRkcmVzcy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgKGFkZHJlc3M6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBhZGRyZXNzPy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGFkZHJlc3M/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiBhZGRyZXNzPy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogYWRkcmVzcz8uY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBhZGRyZXNzPy5wcm92aW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IGFkZHJlc3M/LmNvdW50cnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcDogYWRkcmVzcz8uY3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25BZGRyZXNzSXRlbVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogW10sXG4gICAgICAgICAgICBzb2NpYWxNZWRpYTogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBwcm9wcz8uc29jaWFsTWVkaWE/LlswXT8udXJsLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogcHJvcHM/LnRleHRzPy5pbnN0YWdyYW1UaXRsZSxcbiAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25CdXR0b25JLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGNvcHlyaWdodDogcHJvcHM/LnRleHRzPy5jb3B5cmlnaHQsXG4gICAgICAgICAgICBuYXY6IHByb3BzPy5uYXY/Lm1hcChcbiAgICAgICAgICAgICAgICAobmF2OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbmF2Py5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBuYXY/LnVybCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5mb290ZXJpbWc/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uU3RhdGljRm9vdGVyVjJJO1xuICAgIH1cblxuICAgIG1hcExpc3RHcmlkKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uTGlzdEdyaWRJIHtcbiAgICAgICAgY29uc3QgeyBpbWFnZW5lcyB9ID0gcHJvcHM/Lm11bHRpbWVkaWEgfHwgW107XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpdGVtczogaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlczogW10sIC8vVE9ETzogcHRlIGJhY2ssXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JdGVtR3JpZElcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkxpc3RHcmlkSTtcbiAgICB9XG5cbiAgICBtYXBOZXdzbGV0dGVyTW9kYWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25OZXdzbGV0dGVySSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb25kaXRpb25zOiBwcm9wcz8udGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnbWFpbCcsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRIb2xkZXIsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/Lm5ld3NFcnJvckVtYWlsLFxuICAgICAgICAgICAgfSBhcyBCYWJ5bG9uSW5wdXRJLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2ViYWNrZ3JvdW5kPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbk5ld3NsZXR0ZXJJO1xuICAgIH1cblxuICAgIG1hcEdsb2JhbE1vZGFsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uR2xvYmFsTW9kYWxJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnMuZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpZnJhbWU6IHByb3BzPy50ZXh0cz8uaWZyYW1lLFxuICAgICAgICAgICAgLy8gaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgIH0gYXMgQmFieWxvbkdsb2JhbE1vZGFsSTtcbiAgICB9XG5cbiAgICBtYXBPZmZlckJhbm5lclYyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uT2ZmZXJQb3B1cFYySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBvZmZlckRhdGE7XG4gICAgICAgIGlmIChwcm9wcz8ub2ZmZXJzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBvZmZlciA9IHByb3BzPy5vZmZlcnM/LlswXTtcbiAgICAgICAgICAgIG9mZmVyRGF0YSA9IHtcbiAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogb2ZmZXI/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IG9mZmVyPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBvZmZlcj8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDI6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsNDogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhvZmZlcj8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIG9mZmVyPy5tdWx0aW1lZGlhPy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/IChvZmZlcj8ubXVsdGltZWRpYT8uZmluZCgoaW1nOiBhbnkpID0+IGltZy5jb3ZlcikgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZmVyPy5tdWx0aW1lZGlhPy5bMF0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IChvZmZlcj8ubXVsdGltZWRpYT8uWzBdID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uZGVmYXVsdGltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzY291bnQ6IG9mZmVyPy5kaXNjb3VudCxcbiAgICAgICAgICAgICAgICBwcmljZTogb2ZmZXI/LnByaWNlLFxuICAgICAgICAgICAgICAgIGN1cnJlbmN5OiBvZmZlcj8uY3VycmVuY3ksXG4gICAgICAgICAgICB9IGFzIEJhYnlsb25PZmZlclBvcHVwVjJJO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZmZlckRhdGEgPz8gb2ZmZXJEYXRhO1xuICAgIH1cblxuICAgIG1hcEhlYWRJbnRybyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgY29tcG9uZW50OiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uSGVhZEludHJvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBhZGRpdGlvbmFsVGV4dHMgPSB7XG4gICAgICAgICAgICBhZGRpdGlvbmFsMjogJycsXG4gICAgICAgICAgICBhZGRpdGlvbmFsMzogJycsXG4gICAgICAgICAgICBhZGRpdGlvbmFsNDogJycsXG4gICAgICAgIH07XG4gICAgICAgIGlmIChwcm9wcz8ucm9vbSkge1xuICAgICAgICAgICAgYWRkaXRpb25hbFRleHRzLmFkZGl0aW9uYWwyID0gcHJvcHMucm9vbS50ZXh0cz8uYWRkaXRpb25hbDIgPz8gJyc7XG4gICAgICAgICAgICBhZGRpdGlvbmFsVGV4dHMuYWRkaXRpb25hbDMgPSBwcm9wcy5yb29tLnRleHRzPy5hZGRpdGlvbmFsMyA/PyAnJztcbiAgICAgICAgICAgIGFkZGl0aW9uYWxUZXh0cy5hZGRpdGlvbmFsNCA9IHByb3BzLnJvb20udGV4dHM/LmFkZGl0aW9uYWw0ID8/ICcnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTogYWRkaXRpb25hbFRleHRzLmFkZGl0aW9uYWwyLmxlbmd0aFxuICAgICAgICAgICAgICAgID8gYWRkaXRpb25hbFRleHRzLmFkZGl0aW9uYWwyXG4gICAgICAgICAgICAgICAgOiB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6IGFkZGl0aW9uYWxUZXh0cy5hZGRpdGlvbmFsMy5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IGFkZGl0aW9uYWxUZXh0cy5hZGRpdGlvbmFsM1xuICAgICAgICAgICAgICAgIDogdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRleHQ6IGFkZGl0aW9uYWxUZXh0cy5hZGRpdGlvbmFsNC5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IGFkZGl0aW9uYWxUZXh0cy5hZGRpdGlvbmFsNFxuICAgICAgICAgICAgICAgIDogdHlwZW9mIHByb3BzPy50ZXh0cz8udGV4dCA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50ZXh0XG4gICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGV4dD8uY29udGFpbixcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQ/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCkgPz9cbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Py50ZXh0Y29sb3IsXG4gICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCkgPz8gY29tcG9uZW50Py50ZXh0Y29sb3IsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbG9yPy50cmltKCkgPz9cbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Py50ZXh0Y29sb3IsXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb2xvcj8udHJpbSgpID8/XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD8udGV4dGNvbG9yLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGNvbXBvbmVudD8uaWRlbnRpZmllcixcbiAgICAgICAgfSBhcyBCYWJ5bG9uSGVhZEludHJvSTtcbiAgICB9XG5cbiAgICBtYXBFeHRlcm5hbFNjcmlwdChcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25FeHRlcm5hbFNjcmlwdEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2NyaXB0OiBwcm9wcz8udGV4dHM/LkNvbnRhaW5lcixcbiAgICAgICAgICAgIG1zZ19sb2FkaW5nOiBwcm9wcz8udGV4dHM/LmxvYWRpbmcgPz8gJ0NhcmdhbmRvLi4uJyxcbiAgICAgICAgfSBhcyBCYWJ5bG9uRXh0ZXJuYWxTY3JpcHRJO1xuICAgIH1cblxuICAgIG1hcElmcmFtZShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbklmcmFtZUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZnJhbWVVcmw6XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5mcmFtZVVybCA/P1xuICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaWZyYW1lID8/XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy51cmwgPz9cbiAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LkNvbnRhaW5lcixcbiAgICAgICAgfSBhcyBCYWJ5bG9uSWZyYW1lSTtcbiAgICB9XG5cbiAgICBtYXBCbG9nTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkJsb2dMaXN0SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBwb3N0cyA9IHByb3BzPy5ibG9nPy5wb3N0cz8ubWFwKChwb3N0OiBhbnkpID0+ICh7XG4gICAgICAgICAgICBpZDogcG9zdD8uaWQsXG4gICAgICAgICAgICB0aXRsZTogcG9zdD8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHBvc3Q/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwb3N0Py50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBhZGRpdGlvbmFsMTogcG9zdD8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwb3N0Py5tdWx0aW1lZGlhPy5bMF0sIGZhbHNlKSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocG9zdD8uYnV0dG9ucyksXG4gICAgICAgICAgICBwb3N0VXJsOiBVdGlscy5tYXBCdXR0b25zKHBvc3Q/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBjYXRlZ29yeTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcG9zdD8uY2F0ZWdvcnkgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcG9zdC5jYXRlZ29yeVxuICAgICAgICAgICAgICAgICAgICA6IChwb3N0Py5jYXRlZ29yeT8ubmFtZV9pZGVudGlmaWVyID8/XG4gICAgICAgICAgICAgICAgICAgICAgcG9zdD8uY2F0ZWdvcnk/Lm5hbWVJZGVudGlmaWVyID8/XG4gICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkKSxcbiAgICAgICAgICAgIGRhdGU6IHBvc3Q/LmRhdGUgPyBuZXcgRGF0ZShwb3N0LmRhdGUpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgYWN0aXZlOiBwb3N0Py5hY3RpdmUsXG4gICAgICAgIH0pKTtcblxuICAgICAgICBwb3N0cyA9IHBvc3RzLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoYS5kYXRlICYmIGIuZGF0ZSkgcmV0dXJuIGIuZGF0ZSAtIGEuZGF0ZTsgLy8gYW1ib3MgY29uIGZlY2hhXG4gICAgICAgICAgICBpZiAoYS5kYXRlICYmICFiLmRhdGUpIHJldHVybiAtMTsgLy8gYSB0aWVuZSBmZWNoYSwgYiBub1xuICAgICAgICAgICAgaWYgKCFhLmRhdGUgJiYgYi5kYXRlKSByZXR1cm4gMTsgLy8gYiB0aWVuZSBmZWNoYSwgYSBub1xuICAgICAgICAgICAgcmV0dXJuIDA7IC8vIG5pbmd1bm8gdGllbmUgZmVjaGFcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gT2J0ZW5lciBsb3MgNCBwb3N0cyBtw6FzIHJlY2llbnRlc1xuICAgICAgICBwb3N0cyA9XG4gICAgICAgICAgICBwb3N0cz8uZmlsdGVyKChwb3N0OiB7IGFjdGl2ZTogYm9vbGVhbiB9KSA9PiBwb3N0LmFjdGl2ZSkgPz9cbiAgICAgICAgICAgIHBvc3RzID8/XG4gICAgICAgICAgICBbXTtcblxuICAgICAgICBjb25zdCBub3JtYWxpemVUb0FycmF5ID0gKHZhbHVlOiBhbnkpOiBhbnlbXSA9PiB7XG4gICAgICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm4gW107XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSByZXR1cm4gT2JqZWN0LnZhbHVlcyh2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgY2F0ZWdvcmllc0FycmF5ID0gbm9ybWFsaXplVG9BcnJheShwcm9wcz8ucG9zdENhdGVnb3JpZXMpO1xuICAgICAgICBjb25zdCBsYXRlc3RQb3N0cyA9IHBvc3RzPy5zbGljZSgwLCA0KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LnRhZyxcbiAgICAgICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlYXJjaFBsYWNlSG9sZGVyOiBwcm9wcz8udGV4dHM/LnNlYXJjaFBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgbm90Zm91bmRUZXh0OiBwcm9wcz8udGV4dHM/LnNlYXJjaE5vdEZvdW5kLFxuICAgICAgICAgICAgcG9zdHM6IHBvc3RzLFxuICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb250YWluLFxuICAgICAgICAgICAgY2F0ZWdvcmllczogY2F0ZWdvcmllc0FycmF5Lm1hcCgoY2F0ZWdvcnk6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpZDogY2F0ZWdvcnk/LmlkLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBjYXRlZ29yeT8ubmFtZSxcbiAgICAgICAgICAgICAgICBwb3N0czogY2F0ZWdvcnk/LnRvdGFsUG9zdHMgPz8gY2F0ZWdvcnk/LnRvdGFsX3Bvc3RzID8/IDAsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb250YWluLFxuICAgICAgICAgICAgbGF0ZXN0UG9zdHM6IGxhdGVzdFBvc3RzLFxuICAgICAgICAgICAgYW50ZXJpb3I6IHByb3BzPy50ZXh0cz8uYW50ZXJpb3IsXG4gICAgICAgICAgICBzaWd1aWVudGU6IHByb3BzPy50ZXh0cz8uc2lndWllbnRlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcEJsb2dEZXRhaWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25CbG9nRGV0YWlsc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBjdXJyZW50UG9zdElkID0gcHJvcHM/LnBvc3Q/LmlkO1xuICAgICAgICBjb25zdCBwb3N0cyA9IHByb3BzPy5yZWxhdGVkUG9zdHM/Lm1hcCgocG9zdDogYW55KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IHBvc3Q/LmlkLFxuICAgICAgICAgICAgdGl0bGU6IHBvc3Q/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwb3N0Py50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcG9zdD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwb3N0Py5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhwb3N0Py5idXR0b25zKSxcbiAgICAgICAgICAgIHBvc3RVcmw6IFV0aWxzLm1hcEJ1dHRvbnMocG9zdD8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGNhdGVnb3J5OlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwb3N0Py5jYXRlZ29yeSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwb3N0LmNhdGVnb3J5XG4gICAgICAgICAgICAgICAgICAgIDogKHBvc3Q/LmNhdGVnb3J5Py5uYW1lX2lkZW50aWZpZXIgPz9cbiAgICAgICAgICAgICAgICAgICAgICBwb3N0Py5jYXRlZ29yeT8ubmFtZUlkZW50aWZpZXIgPz9cbiAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQpLFxuICAgICAgICAgICAgZGF0ZTogcG9zdD8uZGF0ZSA/IG5ldyBEYXRlKHBvc3QuZGF0ZSkgOiB1bmRlZmluZWQsXG4gICAgICAgIH0pKTtcblxuICAgICAgICBjb25zdCBjYW5kaWRhdGVzID0gKHBvc3RzIHx8IFtdKS5maWx0ZXIoXG4gICAgICAgICAgICAocDogYW55KSA9PiBwPy5pZCAhPT0gY3VycmVudFBvc3RJZFxuICAgICAgICApO1xuXG4gICAgICAgIGxldCByZWxhdGVkUG9zdHNDb25zdCA9XG4gICAgICAgICAgICBjYW5kaWRhdGVzXG4gICAgICAgICAgICAgICAgLmZpbHRlcigocDogYW55KSA9PiBwPy5kYXRlKVxuICAgICAgICAgICAgICAgIC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gKGIuZGF0ZSBhcyBhbnkpIC0gKGEuZGF0ZSBhcyBhbnkpKVxuICAgICAgICAgICAgICAgIC5zbGljZSgwLCA0KSB8fCBbXTtcbiAgICAgICAgaWYgKHJlbGF0ZWRQb3N0c0NvbnN0Lmxlbmd0aCA8IDQpIHtcbiAgICAgICAgICAgIGNvbnN0IHdpdGhvdXREYXRlID0gY2FuZGlkYXRlcy5maWx0ZXIoKHA6IGFueSkgPT4gIXA/LmRhdGUpO1xuICAgICAgICAgICAgcmVsYXRlZFBvc3RzQ29uc3QgPSByZWxhdGVkUG9zdHNDb25zdC5jb25jYXQoXG4gICAgICAgICAgICAgICAgd2l0aG91dERhdGUuc2xpY2UoMCwgNCAtIHJlbGF0ZWRQb3N0c0NvbnN0Lmxlbmd0aClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy5wb3N0Py50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnBvc3Q/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8ucG9zdD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYWRkaXRpb25hbDE6IHByb3BzPy5wb3N0Py50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICBhZGRpdGlvbmFsMjogcHJvcHM/LnBvc3Q/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBwcm9wcz8ucG9zdD8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgYWRkaXRpb25hbDQ6IHByb3BzPy5wb3N0Py50ZXh0cz8uYWRkaXRpb25hbDQsXG4gICAgICAgICAgICBkYXRlOiBwcm9wcz8ucG9zdD8uZGF0ZSA/IG5ldyBEYXRlKHByb3BzPy5wb3N0Py5kYXRlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGNhdGVnb3J5OiBwcm9wcz8ucG9zdD8uY2F0ZWdvcnksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy50YWcsXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWFyY2hQbGFjZUhvbGRlcjogcHJvcHM/LnRleHRzPy5zZWFyY2hQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllc1xuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8uY29udGFpbixcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IEFycmF5LmlzQXJyYXkocHJvcHM/LnBvc3RDYXRlZ29yaWVzKVxuICAgICAgICAgICAgICAgID8gcHJvcHM/LnBvc3RDYXRlZ29yaWVzPy5tYXAoKGNhdGVnb3J5OiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgaWQ6IGNhdGVnb3J5Py5pZCxcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogY2F0ZWdvcnk/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgcG9zdHM6IGNhdGVnb3J5Py50b3RhbFBvc3RzLFxuICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgICAgIHJlbGF0ZWRQb3N0c1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb250YWluLFxuICAgICAgICAgICAgcmVsYXRlZFBvc3RzOiByZWxhdGVkUG9zdHNDb25zdCxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIHNoYXJlOiBwcm9wcz8udGV4dHM/LnNoYXJlLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ucG9zdD8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG1pZGRsZUltZzogcHJvcHM/LnRleHRzPy5taWRkbGVJbWcgPz8gZmFsc2UsXG4gICAgICAgICAgICB0b3BJbWc6IHByb3BzPy50ZXh0cz8udG9wSW1nID8/IGZhbHNlLFxuICAgICAgICB9IGFzIEJhYnlsb25CbG9nRGV0YWlsc0k7XG4gICAgfVxuXG4gICAgbWFwTW9kYWxNdWx0aXBsZU1vdG9ycyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25Nb2RhbE11bHRpcGxlTW90b3JzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5saW5rc1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy5saW5rcz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+IGJ0bj8ubGlua1ZhbHVlICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuPy5saW5rVmFsdWUgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25Nb2RhbE11bHRpcGxlTW90b3JzSTtcbiAgICB9XG4gICAgbWFwT2ZmZXJCYW5uZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25PZmZlclBvcHVwSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBvZmZlckRhdGE7XG4gICAgICAgIGlmIChwcm9wcz8ub2ZmZXJzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBvZmZlciA9IHByb3BzPy5vZmZlcnM/LlswXTtcbiAgICAgICAgICAgIG9mZmVyRGF0YSA9IHtcbiAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogb2ZmZXI/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IG9mZmVyPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBvZmZlcj8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDI6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsNDogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhvZmZlcj8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIG9mZmVyPy5tdWx0aW1lZGlhPy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/IChvZmZlcj8ubXVsdGltZWRpYT8uZmluZCgoaW1nOiBhbnkpID0+IGltZy5jb3ZlcikgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZmVyPy5tdWx0aW1lZGlhPy5bMF0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IChvZmZlcj8ubXVsdGltZWRpYT8uWzBdID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uZGVmYXVsdGltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYWRkaXRpb25hbEJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+IGJ0bj8ubGlua1ZhbHVlIHx8IGJ0bj8ubGlua192YWx1ZVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0gYXMgQmFieWxvbk9mZmVyUG9wdXBJO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZmZlckRhdGEgPz8gb2ZmZXJEYXRhO1xuICAgIH1cblxuICAgIG1hcE1vZGFsUG9wdXAocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Nb2RhbFBvcHVwSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRIb2xkZXIsXG4gICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgob3B0aW9uOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IG9wdGlvbj8udGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG9wdGlvbj8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgdGl0bGU6IG9wdGlvbj8udGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG9wdGlvbj8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG9wdGlvbiwgZmFsc2UpLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5tb2RhbGltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbk1vZGFsUG9wdXBJO1xuICAgIH1cblxuICAgIG1hcFByZXNzTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblByZXNzTGlzdEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKT8uWzBdLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgIH0gYXMgQmFieWxvblByZXNzTGlzdEk7XG4gICAgfVxuXG4gICAgbWFwQWN0aW9uQmFubmVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBpZGVudGlmaWVyOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uQWN0aW9uQmFubmVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmFjdGlvbmJhbm5lcmltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZTI6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5hY3Rpb25iYW5uZXJpbWFnZTI/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIHRhYmxlOiBwcm9wcz8udGV4dHM/LnRhYmxlLFxuICAgICAgICAgICAgc2FsYTE6XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5zYWxhMT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICh0eXBlb2YgcHJvcHM/LnRleHRzPy5zYWxhMSA9PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uc2FsYTFcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgc2FsYTI6IHByb3BzPy50ZXh0cz8uc2FsYTIsXG4gICAgICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHNhbGExOiBwcm9wcz8udGV4dHM/LnNhbGExPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25BY3Rpb25CYW5uZXJJO1xuICAgIH1cbiAgICBtYXBJbmZvWmlnWmFnQ291bnRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25JbmZvWmlnWmFnQ291bnRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgaW1hZ2VzOiAoc3RyaW5nIHwgQmFieWxvbkltYWdlSSlbXSB8IHVuZGVmaW5lZCA9IFtdO1xuICAgICAgICBsZXQgdGV4dHMsIHRhZ3M7XG4gICAgICAgIGNvbnN0IGRhdGVTdGFydCA9IHByb3BzPy50ZXh0cz8uZGF0ZXN0YXJ0O1xuICAgICAgICBjb25zdCBkYXRlRmluaXNoID0gcHJvcHM/LnRleHRzPy5kYXRlZmluaXNoO1xuICAgICAgICBpZiAocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzKSB7XG4gICAgICAgICAgICBpbWFnZXMgPSB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRleHRzID0ge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgICAgICh0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCksXG4gICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICBjb250ZW50dGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudHRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudHRpdGxlLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50c3VidGl0bGU/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50c3VidGl0bGUsXG4gICAgICAgICAgICAgICAgY29udGVudGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnRkZXNjcmlwdGlvbj8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnRkZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmxvZ28/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGljb25zOiBwcm9wcz8uVmVudGFqYXM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbT8udGl0bGUgfHwgaXRlbT8udGV4dFxuICAgICAgICAgICAgICAgICk/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uaWNvbn1gLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICBpY29uVGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaWNvbnRpdGxlPy5jb250YWluID8/IHByb3BzPy50ZXh0cz8uaWNvbnRpdGxlLFxuICAgICAgICAgICAgICAgIGRheXNUZXh0OiBwcm9wcz8udGV4dHM/LmRheXN0ZXh0LFxuICAgICAgICAgICAgICAgIGhvdXJzVGV4dDogcHJvcHM/LnRleHRzPy5ob3Vyc3RleHQsXG4gICAgICAgICAgICAgICAgbWludXRlc1RleHQ6IHByb3BzPy50ZXh0cz8ubWludXRlc3RleHQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGFncyA9IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY29udGVudHRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRlbnR0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5jb250ZW50c3VidGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjb250ZW50ZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uY29udGVudGRlc2NyaXB0aW9uPy50YWcsXG4gICAgICAgICAgICAgICAgaWNvblRpdGxlOiBwcm9wcz8udGV4dHM/Lmljb250aXRsZT8udGFnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9ucy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRleHRzLFxuICAgICAgICAgICAgaW1hZ2VzLFxuICAgICAgICAgICAgdGFncyxcbiAgICAgICAgICAgIGRhdGVTdGFydCxcbiAgICAgICAgICAgIGRhdGVGaW5pc2gsXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9aaWdaYWdDb3VudGVySTtcbiAgICB9XG4gICAgbWFwR3JDMkltZyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkdyQzJJbWdJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAodHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaG90ZWxzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtPy5tdWx0aW1lZGlhPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICBhbHQ6IGl0ZW0/Lm11bHRpbWVkaWE/LlswXT8uYWx0LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgQmFieWxvbkdyQzJJbWdJO1xuICAgIH1cbiAgICBtYXBMaXNDNFR4dEljbyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkxpc0M0VHh0SWNvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBwcm9wcztcbiAgICB9XG4gICAgbWFwTWFwTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbk1hcExpc3RJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgbXVsdGltZWRpYSwgaG90ZWxzIH0gPSBwcm9wcztcbiAgICAgICAgbGV0IGl0ZW1zOiBCYWJ5bG9uTWFwTGlzdEl0ZW1bXSA9IFtdO1xuICAgICAgICBpZiAoaG90ZWxzKSB7XG4gICAgICAgICAgICBpdGVtcyA9IGhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXI6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsNCA/PyBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5tdWx0aW1lZGlhPy5maWx0ZXIoKGltZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc/LnRhZ3M/LnNvbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnID09PSAnTWFwTGlzdFBob3RvJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZz8ubmFtZSA9PT0gJ01hcExpc3RQaG90bydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcEltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5tdWx0aW1lZGlhPy5maWx0ZXIoKGltZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc/LnRhZ3M/LnNvbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnID09PSAnTWFwTGlzdE1hcCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWc/Lm5hbWUgPT09ICdNYXBMaXN0TWFwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uTWFwTGlzdEl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAobXVsdGltZWRpYSkge1xuICAgICAgICAgICAgaXRlbXMgPSBtdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWc/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZywgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwSW1hZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbk1hcExpc3RJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0ZXh0czogdGhpcy5tYXBHbG9iYWxUZXh0cyhwcm9wcz8udGV4dHMpIGFzIEJhYnlsb25UZXh0SW5mb0ksXG4gICAgICAgICAgICBtYXBJbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/Lm1hcD8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYmFja2dyb3VuZEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmRpbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uTWFwTGlzdEk7XG4gICAgfVxuICAgIG1hcEhpc3RvcnkocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25IaXN0b3J5SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCB7IHRleHRzLCBtdWx0aW1lZGlhLCBpdGVtcyB9ID0gcHJvcHM7XG4gICAgICAgIGxldCB5ZWFyczogQmFieWxvbkhpc3RvcnlZZWFySXRlbVtdID0gW107XG4gICAgICAgIGlmIChpdGVtcykge1xuICAgICAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeWVhciA9IGl0ZW0/LnRpdGxlO1xuICAgICAgICAgICAgICAgIGlmICh5ZWFyICYmICF5ZWFycy5zb21lKCh5KSA9PiB5LnllYXIgPT09IHllYXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHllYXJzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgeWVhcjogeWVhcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh5ZWFyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nWWVhciA9IHllYXJzLmZpbmQoKHkpID0+IHkueWVhciA9PT0geWVhcik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ1llYXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nWWVhci5pdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB5ZWFycz8uc29ydCgoYSwgYikgPT4gTnVtYmVyKGEueWVhcikgLSBOdW1iZXIoYi55ZWFyKSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgKHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCksXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgKHR5cGVvZiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlID09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5zdWJ0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCksXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgKHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJhY2tncm91bmRJbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmRpbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgeWVhcnMsXG4gICAgICAgIH0gYXMgQmFieWxvbkhpc3RvcnlJO1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbWFnZVJlc3BvbnNlIHtcbiAgICBwYXRoOiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICB0aHVtYm5haWxzOiB7XG4gICAgICAgIDM3NTogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDU0MDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDc2ODogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDgwMDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDEwMjQ6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICAxMjgwOiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICAgICAgMTM2NjogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgfTtcbiAgICBjb3ZlcjogbnVtYmVyO1xuICAgIHRhZ3M/OiBhbnlbXTtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBwcmV0aXRsZT86IHN0cmluZztcbiAgICBzdWJ0aXRsZT86IHN0cmluZztcbiAgICBuZFRpdGxlPzogc3RyaW5nO1xuICAgIG5kU3VidGl0bGU/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgbGlua3M/OiBhbnlbXTtcbiAgICBidXR0b25zPzogYW55W107XG4gICAgYWx0Pzogc3RyaW5nO1xuICAgIGFjdGl2ZT86IGJvb2xlYW47XG4gICAgb3JkZXI/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VSZXNwb25zZVBhdGgge1xuICAgIG9yaWdpbmFsOiBzdHJpbmc7XG4gICAgd2VicDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudHNBZGRvbnMge1xuICAgIGNvbnRhY3RPZmZpY2U/OiBhbnk7XG4gICAgbWVudVNvY2lhbE1lZGlhPzogeyBbazogc3RyaW5nXTogc3RyaW5nIH1bXTtcbiAgICBjb25zdWx0VHlwZT86IENvbnN1bHRUeXBlSTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJPcHRpb24ge1xuICAgIGlkPzogbnVtYmVyO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgY2hpbGRyZW4/OiBGaWx0ZXJPcHRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50VmlldyB7XG4gICAgbmFtZTogVmlld3NUeXBlO1xuICAgIGRlZmF1bHQ6IGJvb2xlYW47XG59XG4iXX0=
|