@messaia/cdk 15.0.0-rc74 → 15.0.0-rc75
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/base/components/base.component.mjs +1 -1
- package/esm2020/lib/forms/components/generic-form/generic-form.component.mjs +4 -3
- package/fesm2015/messaia-cdk.mjs +3 -2
- package/fesm2015/messaia-cdk.mjs.map +1 -1
- package/fesm2020/messaia-cdk.mjs +3 -2
- package/fesm2020/messaia-cdk.mjs.map +1 -1
- package/lib/base/components/base.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -571,4 +571,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
|
|
|
571
571
|
type: ViewChildren,
|
|
572
572
|
args: [MatExpansionPanel]
|
|
573
573
|
}] } });
|
|
574
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9iYXNlL2NvbXBvbmVudHMvYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQWlCLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFRLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1SixPQUFPLEVBQUUsU0FBUyxFQUFtQixNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBMEIsYUFBYSxFQUFFLE1BQU0sRUFBdUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNySCxPQUFPLEVBQWMsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXBFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIs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LENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEQsT0FBTyxNQUFNLENBQUM7UUFDZixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVCxDQUFDO0lBUUQ7OztPQUdHO0lBQ0gsV0FBVztRQUNWLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNuRSxDQUFDOzs2SEEzc0JvQixhQUFhO2lIQUFiLGFBQWEsdUxBNExwQixpQkFBaUIsMkJBQVUsVUFBVSw2REFNckMsaUJBQWlCOzJGQWxNVixhQUFhO2tCQURsQyxTQUFTO3FJQThDRiwyQkFBMkI7c0JBRGpDLEtBQUs7Z0JBNkdDLE1BQU07c0JBRFosTUFBTTtnQkFxQ0csaUNBQWlDO3NCQUQxQyxZQUFZO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFPM0MsMEJBQTBCO3NCQURuQyxZQUFZO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QsIFR5cGUsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ0NvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdEV4cGFuc2lvblBhbmVsIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcclxuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgTmF2aWdhdGlvbkVuZCwgUm91dGVyLCBVcmxTZWdtZW50LCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb250ZXh0SGVscGVyIH0gZnJvbSAnLi4vLi4vY29tbW9uL2NvbW1vbi5tb2R1bGUnO1xyXG5pbXBvcnQgeyBBcHBTZXR0aW5nIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9hcHAtc2V0dGluZyc7XHJcbmltcG9ydCB7IFNlcnZpY2VMb2NhdG9yIH0gZnJvbSAnLi4vLi4vY29tbW9uL3NlcnZpY2VzL3NlcnZpY2UtbG9jYXRvcic7XHJcbmltcG9ydCB7IFZkRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uL2RpYWxvZ3Mvc2VydmljZXMvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBWZE1lZGlhU2VydmljZSB9IGZyb20gJy4uLy4uL21lZGlhL3NlcnZpY2VzL21lZGlhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNZW51IH0gZnJvbSAnLi4vLi4vbWVudS9tb2RlbHMvbWVudSc7XHJcbmltcG9ydCB7IENvbW1vbiB9IGZyb20gJy4uL2NvbnN0YW50cy9jb21tb24nO1xyXG5pbXBvcnQgeyBHbG9iYWxSb2xlcyB9IGZyb20gJy4uL2NvbnN0YW50cy9nbG9iYWwtcm9sZXMnO1xyXG5pbXBvcnQgeyBNZXNzYWdlVHlwZSB9IGZyb20gJy4uL2VudW1zL21lc3NhZ2UtdHlwZSc7XHJcbmltcG9ydCB7IEF1dGhIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXJzL2F1dGgtaGVscGVyJztcclxuaW1wb3J0IHsgSUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2liYXNlLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEF1dGhVc2VyIH0gZnJvbSAnLi4vbW9kZWxzL2F1dGgtdXNlcic7XHJcblxyXG4vKipcclxuICogQSBiYXNlIGxpc3QgY29tcG9uZW50IGZvciBjb21wb25lbnRzIHdpdGggcGFnaW5hdGlvbiBzdXBwb3J0XHJcbiAqL1xyXG4vLyBAZHluYW1pY1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBJQmFzZUNvbXBvbmVudCwgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuXHQvKipcclxuXHQgKiBBcHAgc2V0dGluZ3NcclxuXHQgKi9cclxuXHRwdWJsaWMgYXBwU2V0dGluZzogQXBwU2V0dGluZztcclxuXHJcblx0LyoqXHJcblx0ICogc2V0dGluZ3M6IEFueVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZXR0aW5nczogYW55ID0ge307XHJcblxyXG5cdC8qKlxyXG5cdCAqIE1lbnUgaXRlbXNcclxuXHQgKi9cclxuXHRwdWJsaWMgbWVudTogTWVudTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIG5hbWUgb2YgdGhlIHByb2plY3RcclxuXHQgKi9cclxuXHRwdWJsaWMgcHJvamVjdE5hbWU6IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIHRpdGxlIG9mIHRoZSBjdXJyZW50IHBhZ2VcclxuXHQgKi9cclxuXHRwdWJsaWMgdGl0bGU6IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIHN1YnRpdGxlIG9mIHRoZSBjdXJyZW50IG91dGxldFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzdWJ0aXRsZTogc3RyaW5nID0gJyc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIElmIHRydWUsIHVzZSBzb21lIGR1bW15IGRhdGEgYW5kIHNob3cgZGVidWcgbG9nc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBkZWJ1ZzogYm9vbGVhbjtcclxuXHJcblx0LyoqXHQgXHJcblx0ICogTG9hZGluZyBzdGF0dXNcclxuXHQgKi9cclxuXHRwdWJsaWMgaXNMb2FkaW5nOiBib29sZWFuO1xyXG5cclxuXHQvKipcclxuXHQgKiBoYW5kbGVFeHBhbnNpb25QYW5lbENoYW5nZXM6IGJvb2xlYW5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBoYW5kbGVFeHBhbnNpb25QYW5lbENoYW5nZXM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBTYXZpbmcgc3RhdHVzXHJcblx0ICovXHJcblx0cHVibGljIF9pc1NhdmluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdHB1YmxpYyBnZXQgaXNTYXZpbmcoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9pc1NhdmluZyB8fCB0aGlzLmlzTG9hZGluZzsgfVxyXG5cdHB1YmxpYyBzZXQgaXNTYXZpbmcoaXNTYXZpbmc6IGJvb2xlYW4pIHsgdGhpcy5pc0xvYWRpbmcgPSB0aGlzLl9pc1NhdmluZyA9IGlzU2F2aW5nOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgZmxhZyBlaW5kaWNhdGVzIHRoYXQgdGhlIGVkaXRvciBpcyBpbml0ZWRcclxuXHQgKi9cclxuXHRwdWJsaWMgaXNFZGl0b3JJbml0aWFsemVkOiBib29sZWFuO1xyXG5cclxuXHQvKipcclxuXHQgKiBSZXByZXNlbnRzIHRoZSByZXF1ZXN0IGVycm9yc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBlcnJvcnM6IEFycmF5PHN0cmluZz4gPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBVc2VkIHRvIGV2YWx1YXRlIHdoZXRoZXIgYSBnaXZlbiBtZWRpYSBxdWVyeSBpcyB0cnVlIG9yIGZhbHNlIGdpdmVuIHRoZSBjdXJyZW50IGRldmljZSdzIHNjcmVlbiAvIHdpbmRvdyBzaXplLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBtZWRpYTogVmRNZWRpYVNlcnZpY2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFsbG93ZWQgZmlsZSBleHRlbnNpb25zXHJcblx0ICovXHJcblx0cHVibGljIGFsbG93ZWRFeHRlbnNpb25zOiBzdHJpbmdbXSA9IENvbW1vbi5hbGxvd2VkRXh0ZW5zaW9ucztcclxuXHJcblx0LyoqXHJcblx0ICogdGlueU1DRSBwbHVnaW5zXHJcblx0ICovXHJcblx0cHVibGljIGVkaXRvclBsdWdpbnM6IHN0cmluZyA9IENvbW1vbi5lZGl0b3JQbHVnaW5zO1xyXG5cclxuXHQvKipcclxuXHQgKiB0aW55TUNFIGVkaXRvclxyXG5cdCAqL1xyXG5cdHB1YmxpYyBlZGl0b3JUb29sYmFyOiBzdHJpbmcgPSBDb21tb24uZWRpdG9yVG9vbGJhcjtcclxuXHJcblx0LyoqXHJcblx0ICogRWRpdG9yIGNvbmZpZ3VyYXRpb25cclxuXHQgKi9cclxuXHRwdWJsaWMgZWRpdG9yQ29uZmlnOiBhbnkgPSB7fTtcclxuXHJcblx0LyoqXHJcblx0ICogUHJvdmlkZXMgdGhlIG5hdmlnYXRpb24gYW5kIHVybCBtYW5pcHVsYXRpb24gY2FwYWJpbGl0aWVzLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyByb3V0ZXI6IFJvdXRlcjtcclxuXHJcblx0LyoqXHJcblx0ICogdXJsSGFzaDogc3RyaW5nXHJcblx0ICovXHJcblx0cHVibGljIHVybEhhc2g6IHN0cmluZyA9IG51bGw7XHJcblxyXG5cdC8qKlxyXG5cdCAqIENsYXNzIG5hbWVcclxuXHQgKi9cclxuXHRwdWJsaWMgY2xhc3NOYW1lOiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIENyZWF0ZSBwZXJtaXNzaW9uXHJcblx0ICovXHJcblx0cHVibGljIGNhbkNyZWF0ZTogYm9vbGVhbjtcclxuXHJcblx0LyoqXHJcblx0ICogVXBkYXRlIHBlcm1pc3Npb25cclxuXHQgKi9cclxuXHRwdWJsaWMgY2FuVXBkYXRlOiBib29sZWFuO1xyXG5cclxuXHQvKipcclxuXHQgKiBDdXJyZW50IHJvdXRlXHJcblx0ICovXHJcblx0cHVibGljIGN1cnJlbnRSb3V0ZTogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBDdXJyZW50IGJhc2Ugcm91dGVcclxuXHQgKi9cclxuXHRwdWJsaWMgY3VycmVudEJhc2VSb3V0ZTogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHVybCB0byByZXR1cm4gdG8gYWZ0ZXIgc2F2ZVxyXG5cdCAqL1xyXG5cdHB1YmxpYyByZXR1cm5Vcmw6IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogQ3VycmVudCB1c2VyIG9iamVjdFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjdXJyZW50VXNlcjogQXV0aFVzZXIgPSBBdXRoSGVscGVyLnVzZXI7XHJcblxyXG5cdC8qKlxyXG5cdCAqIElzIHRoZSBjdXJyZW50IHVzZXIgYSBjbGllbnQgYWRtaW5cclxuXHQgKi9cclxuXHRwdWJsaWMgaXNBZG1pbiA9IEF1dGhIZWxwZXIuaGFzUm9sZShHbG9iYWxSb2xlcy5BZG1pbmlzdHJhdG9yKTtcclxuXHJcblx0LyoqXHJcblx0ICogSXMgdGhlIGN1cnJlbnQgdXNlciBhIGNsaWVudCBhZG1pblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBpc0NsaWVudEFkbWluID0gQXV0aEhlbHBlci5oYXNSb2xlKEdsb2JhbFJvbGVzLkNsaWVudEFkbWluaXN0cmF0b3IpO1xyXG5cclxuXHQvKipcclxuXHQgKiBJcyB0aGUgY3VycmVudCB1c2VyIGEgZGVwYXJ0bWVudCBhZG1pblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBpc0RlcGFydG1lbnRBZG1pbiA9IEF1dGhIZWxwZXIuaGFzUm9sZShHbG9iYWxSb2xlcy5EZXBhcnRtZW50QWRtaW5pc3RyYXRvcik7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHJlbG9hZD86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QE91dHB1dCgpXHJcblx0cHVibGljIHJlbG9hZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogQSBzZXJ2aWNlIHRoYXQgY2FuIGJlIHVzZWQgdG8gZ2V0IGFuZCBzZXQgdGhlIHRpdGxlIG9mIGEgY3VycmVudCBIVE1MIGRvY3VtZW50LlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCB0aXRsZVNlcnZpY2U6IFRpdGxlO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHNlcnZpY2UgdG8gZGlzcGF0Y2ggTWF0ZXJpYWwgRGVzaWduIHNuYWNrIGJhciBtZXNzYWdlcy5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc25hY2tCYXJTZXJ2aWNlOiBNYXRTbmFja0JhcjtcclxuXHJcblx0LyoqXHJcblx0ICogQSBzZXJ2aWNlIHRvIHNob3cgY29uaXJtIGFuZCBwcm9tcHQgZGlhbG9ncy5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgZGlhbG9nU2VydmljZTogVmREaWFsb2dTZXJ2aWNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHNlcnZpY2UgdG8gc2hvdyBjb25pcm0gYW5kIHByb21wdCBkaWFsb2dzLlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBkaWFsb2c6IE1hdERpYWxvZztcclxuXHJcblx0LyoqXHJcblx0ICogbG9jYXRpb246IExvY2F0aW9uXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGxvY2F0aW9uOiBMb2NhdGlvbjtcclxuXHJcblx0LyoqXHJcblx0ICogSWYgdHJ1ZSwgc2V0IHVybCBoYXNoXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHNldFVybEhhc2g6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBNYXRFeHBhbnNpb25QYW5lbCByZWZcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkcmVuKE1hdEV4cGFuc2lvblBhbmVsLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcclxuXHRwcm90ZWN0ZWQgbWF0RXhwYW5zaW9uUGFuZWxFbGVtZW50UXVlcnlMaXN0OiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XHJcblxyXG5cdC8qKlxyXG5cdCAqIE1hdEV4cGFuc2lvblBhbmVsIHJlZlxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGRyZW4oTWF0RXhwYW5zaW9uUGFuZWwpXHJcblx0cHJvdGVjdGVkIG1hdEV4cGFuc2lvblBhbmVsUXVlcnlMaXN0OiBRdWVyeUxpc3Q8TWF0RXhwYW5zaW9uUGFuZWw+O1xyXG5cclxuXHQvKipcclxuXHQgKiBtYXRFeHBhbnNpb25QYW5lbFN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG1hdEV4cGFuc2lvblBhbmVsU3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3JcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcblx0XHR0aGlzLnRpdGxlU2VydmljZSA9IHRoaXMuZ2V0U2VydmljZShUaXRsZSk7XHJcblx0XHR0aGlzLmRpYWxvZ1NlcnZpY2UgPSB0aGlzLmdldFNlcnZpY2UoVmREaWFsb2dTZXJ2aWNlKTtcclxuXHRcdHRoaXMuZGlhbG9nID0gdGhpcy5nZXRTZXJ2aWNlKE1hdERpYWxvZyk7XHJcblx0XHR0aGlzLm1lZGlhID0gdGhpcy5nZXRTZXJ2aWNlKFZkTWVkaWFTZXJ2aWNlKTtcclxuXHRcdHRoaXMuc25hY2tCYXJTZXJ2aWNlID0gdGhpcy5nZXRTZXJ2aWNlKE1hdFNuYWNrQmFyKTtcclxuXHRcdHRoaXMucm91dGVyID0gdGhpcy5nZXRTZXJ2aWNlKFJvdXRlcik7XHJcblx0XHR0aGlzLmFwcFNldHRpbmcgPSB0aGlzLmdldFNlcnZpY2UoQXBwU2V0dGluZyk7XHJcblx0XHR0aGlzLmxvY2F0aW9uID0gdGhpcy5nZXRTZXJ2aWNlKExvY2F0aW9uKTtcclxuXHJcblx0XHRDb250ZXh0SGVscGVyLmFjdGl2YXRlZFJvdXRlID0gcm91dGU7XHJcblx0XHRDb250ZXh0SGVscGVyLnJvdXRlciA9IHRoaXMucm91dGVyO1xyXG5cdFx0Q29udGV4dEhlbHBlci5hcHBTZXR0aW5nID0gdGhpcy5hcHBTZXR0aW5nO1xyXG5cclxuXHRcdHRoaXMuaW5pdEVkaXRvcigpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgYWZ0ZXIgZGF0YS1ib3VuZCBwcm9wZXJ0aWVzIFxyXG5cdCAqIG9mIGEgZGlyZWN0aXZlIGFyZSBpbml0aWFsaXplZC5cclxuXHQgKi9cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHRcdC8qIEdldCBtZW51IGl0ZW1zIGZyb20gcm91dGUgc25hcHNob3QgKi9cclxuXHRcdHZhciBtYWluUm91dGUgPSB0aGlzLmdldE1haW5Sb3V0ZSh0aGlzLnJvdXRlLnNuYXBzaG90KTtcclxuXHRcdGlmIChtYWluUm91dGUpIHtcclxuXHRcdFx0dGhpcy5tZW51ID0gbWFpblJvdXRlLmRhdGEubWVudTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBTZXQgcHJvamVjdCBuYW1lICYgZGVidWcgbW9kZSAqL1xyXG5cdFx0dGhpcy5wcm9qZWN0TmFtZSA9IHRoaXMuYXBwU2V0dGluZy5wcm9qZWN0TmFtZTtcclxuXHRcdHRoaXMuZGVidWcgPSB0aGlzLmFwcFNldHRpbmcuZGVidWc7XHJcblxyXG5cdFx0LyogR2V0IHRoZSBoYXNoIGZyb20gdGhlIHVybCAqL1xyXG5cdFx0dGhpcy5yb3V0ZS5mcmFnbWVudC5zdWJzY3JpYmUoKGZyYWdtZW50OiBzdHJpbmcpID0+IHRoaXMudXJsSGFzaCA9IGZyYWdtZW50KTtcclxuXHJcblx0XHQvKipcclxuXHRcdCAqIENoZWNrIHBlcm1pc3Npb25zXHJcblx0XHQgKi9cclxuXHRcdGlmICh0aGlzLnJvdXRlLnBhcmVudCkge1xyXG5cdFx0XHR0aGlzLnJvdXRlLnBhcmVudC51cmwuc3Vic2NyaWJlKCh1cmw6IFVybFNlZ21lbnRbXSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuY2xhc3NOYW1lID8/PSB1cmwubGVuZ3RoID8gdXJsWzBdLnBhdGgucmVwbGFjZSgvKC4qKXMkLywgJyQxJykucmVwbGFjZSgvXi4vLCAodXJsWzBdLnBhdGhbMF0gfHwgJycpLnRvVXBwZXJDYXNlKCkpIDogJyc7XHJcblx0XHRcdFx0dGhpcy5jYW5DcmVhdGUgPSBBdXRoSGVscGVyLmlzUGVybWl0dGVkKCdDcmVhdGUnLCBgQ3JlYXRlJHt0aGlzLmNsYXNzTmFtZX1gKTtcclxuXHRcdFx0XHR0aGlzLmNhblVwZGF0ZSA9IEF1dGhIZWxwZXIuaXNQZXJtaXR0ZWQoJ1VwZGF0ZScsIGBVcGRhdGUke3RoaXMuY2xhc3NOYW1lfWApO1xyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBTZXQgY3VycmVudCByb3V0ZSAqL1xyXG5cdFx0dGhpcy5jdXJyZW50Um91dGUgPSBidG9hKHRoaXMucm91dGVyLnVybCk7XHJcblx0XHR0aGlzLmN1cnJlbnRCYXNlUm91dGUgPSB0aGlzLnJvdXRlci51cmw/LnNwbGl0KCc/JylbMF0/LnNwbGl0KCc7JylbMF07XHJcblxyXG5cdFx0LyoqXHJcblx0XHQgKiBTZXQgcGFnZSB0aXRsZVxyXG5cdFx0ICovXHJcblx0XHR0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKHggPT4ge1xyXG5cdFx0XHRpZiAoeCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuXHRcdFx0XHR0aGlzLnNldFRpdGxlcygpO1xyXG5cdFx0XHRcdHRoaXMuY3VycmVudFJvdXRlID0gYnRvYSh4LnVybCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdC8qIEdldCB0aGUgcmV0dXJuIHVybCBpZiBhbnkgKi9cclxuXHRcdHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHggPT4gdGhpcy5zZXRSZXR1cm5VcmwoeC5yZXR1cm5VcmwpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGEgY29tcG9uZW50J3MgdmlldyBoYXMgYmVlbiBmdWxseSBpbml0aWFsaXplZC5cclxuXHQgKi9cclxuXHRuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblx0XHQvKiBCcm9hZGNhc3QgdG8gYWxsIGxpc3RlbmVyIG9ic2VydmFibGVzIHdoZW4gbG9hZGluZyB0aGUgcGFnZSAqL1xyXG5cdFx0dGhpcy5tZWRpYS5icm9hZGNhc3QoKTtcclxuXHJcblx0XHQvKiBTZXQgdGl0bGVzICovXHJcblx0XHR0aGlzLnNldFRpdGxlcygpO1xyXG5cclxuXHRcdC8qIFxyXG5cdFx0ICogRm9yY2UgYSBuZXcgY2hhbmdlIGRldGVjdGlvbiBjeWNsZSBzaW5jZSBjaGFuZ2UgZGV0ZWN0aW9ucyBcclxuXHRcdCAqIGhhdmUgZmluaXNoZWQgd2hlbiBgbmdBZnRlclZpZXdJbml0YCBpcyBleGVjdXRlZFxyXG5cdFx0ICovXHJcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcblx0XHQvKiBMaXN0ZW4gZm9yIGV4cGFuc2lvbiBwYW5lbCBjaGFuZ2VzICovXHJcblx0XHRpZiAodGhpcy5oYW5kbGVFeHBhbnNpb25QYW5lbENoYW5nZXMpIHtcclxuXHRcdFx0dGhpcy5vbkV4cGFuc2lvblBhbmVsQ2hhbmdlcygpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVmcmVzaHMgdGhpcyBwYWdlL2NvbXBvbmVudFxyXG5cdCAqL1xyXG5cdHB1YmxpYyByZWxvYWRQYWdlKCk6IHZvaWQge1xyXG5cdFx0bGV0IGN1cnJlbnRVcmwgPSB0aGlzLnJvdXRlci51cmw7XHJcblx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJywgeyByZXBsYWNlVXJsOiB0cnVlIH0pLnRoZW4oKCkgPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChjdXJyZW50VXJsLCB7IHJlcGxhY2VVcmw6IHRydWUgfSkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTmF2aWdhdGVzIGJhY2sgdG8gcmV0dXJuIHVybFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBuYXZpZ2F0ZVRvUmV0dXJuVXJsKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMucmV0dXJuVXJsKSB7XHJcblx0XHRcdGxldCB1cmxUcmVlOiBVcmxUcmVlID0gdGhpcy5yb3V0ZXIucGFyc2VVcmwodGhpcy5yZXR1cm5VcmwpO1xyXG5cdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybFRyZWUudG9TdHJpbmcoKSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiBcclxuXHQgKiBGb3JjZSBhIG5ldyBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlIHNpbmNlIGNoYW5nZSBkZXRlY3Rpb25zIFxyXG5cdCAqIGhhdmUgZmluaXNoZWQgd2hlbiBgbmdBZnRlclZpZXdJbml0YCBpcyBleGVjdXRlZFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBkZXRlY3RDaGFuZ2VzKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTZXRzIHJldHVybiB1cmxcclxuXHQgKiBAcGFyYW0gcmV0dXJuVXJsIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBzZXRSZXR1cm5VcmwocmV0dXJuVXJsOiBzdHJpbmcpOiB2b2lkIHtcclxuXHRcdHRyeSB7IHRoaXMucmV0dXJuVXJsID0gcmV0dXJuVXJsID8gZGVjb2RlVVJJQ29tcG9uZW50KGF0b2IocmV0dXJuVXJsKSkgOiBudWxsOyB9XHJcblx0XHRjYXRjaCAoZXJyb3IpIHsgfVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTGlzdGVuIGZvciBleHBhbnNpb24gcGFuZWwgY2hhbmdlc1xyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBvbkV4cGFuc2lvblBhbmVsQ2hhbmdlcygpOiB2b2lkIHtcclxuXHRcdC8qIExpc3RlbiBmb3IgZXhwYW5zaW9uIHBhbmVsIGNoYW5nZXMgKi9cclxuXHRcdHRoaXMubWF0RXhwYW5zaW9uUGFuZWxRdWVyeUxpc3Q/LmNoYW5nZXMuc3Vic2NyaWJlKF8gPT4ge1xyXG5cdFx0XHQvKiBVbnN1YnNjcmliZSBmcm9tIG9sZCAnb3BlbmVkJyBhbmQgJ2Nsb3NlZCcgc3Vic2NyaXB0aW9ucyAqL1xyXG5cdFx0XHR0aGlzLm1hdEV4cGFuc2lvblBhbmVsU3Vic2NyaXB0aW9ucy5mb3JFYWNoKHggPT4geC51bnN1YnNjcmliZSgpKTtcclxuXHJcblx0XHRcdC8qIERldGVjdCBjaGFuZ2VzICovXHJcblx0XHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuXHRcdFx0LyogR2V0IHRoZSBwYW5lbCBlbmRzIHdpdGggdGhlIElEICduZXcnICovXHJcblx0XHRcdHZhciBuZXdFeHBhbnNpb25QYW5lbEluZGV4ID0gdGhpcy5tYXRFeHBhbnNpb25QYW5lbEVsZW1lbnRRdWVyeUxpc3Q/LnRvQXJyYXkoKT8uZmluZEluZGV4KHggPT4geC5uYXRpdmVFbGVtZW50Py5pZD8uZW5kc1dpdGgoJy5uZXcnKSk7XHJcblx0XHRcdGlmIChuZXdFeHBhbnNpb25QYW5lbEluZGV4ID49IDApIHtcclxuXHRcdFx0XHQvKiBDbG9zZSBhbGwgcGFuZWxzICovXHJcblx0XHRcdFx0dGhpcy5tYXRFeHBhbnNpb25QYW5lbFF1ZXJ5TGlzdD8uZmlyc3Q/LmFjY29yZGlvbj8uY2xvc2VBbGwoKTtcclxuXHJcblx0XHRcdFx0LyogT3BlbiB0aGUgbmV3IHBhbmVsICovXHJcblx0XHRcdFx0dGhpcy5tYXRFeHBhbnNpb25QYW5lbFF1ZXJ5TGlzdD8udG9BcnJheSgpW25ld0V4cGFuc2lvblBhbmVsSW5kZXhdPy5vcGVuKCk7XHJcblxyXG5cdFx0XHRcdC8qIERldGVjdCBjaGFuZ2VzICovXHJcblx0XHRcdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0LyogRmluZCB0aGUgaW5kZXggb2YgdGhlIHBhbmVsIHdpdGggdGhlIHNwZWNpZmllZCBlbGVtZW50IElEICovXHJcblx0XHRcdFx0dGhpcy51cmxIYXNoPy5zcGxpdCgnLicpXHJcblx0XHRcdFx0XHQ/LnJlZHVjZSgoYWNjdW11bGF0b3IsIGN1cnJlbnRWYWx1ZSwgaW5kZXgpID0+IGFjY3VtdWxhdG9yLmNvbmNhdCgoaW5kZXggPiAwID8gKGFjY3VtdWxhdG9yLnNsaWNlKC0xKS5qb2luKCcuJykgKyAnLicpIDogJycpICsgY3VycmVudFZhbHVlKSwgW10pXHJcblx0XHRcdFx0XHQ/LmZvckVhY2goKGhhc2g6IHN0cmluZykgPT4ge1xyXG5cdFx0XHRcdFx0XHR2YXIgZXhwYW5zaW9uUGFuZWxJbmRleCA9IHRoaXMubWF0RXhwYW5zaW9uUGFuZWxFbGVtZW50UXVlcnlMaXN0Py50b0FycmF5KCk/LmZpbmRJbmRleCh4ID0+IHgubmF0aXZlRWxlbWVudC5pZCA9PSBoYXNoKTtcclxuXHRcdFx0XHRcdFx0aWYgKGV4cGFuc2lvblBhbmVsSW5kZXggPj0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMubWF0RXhwYW5zaW9uUGFuZWxRdWVyeUxpc3Q/LnRvQXJyYXkoKVtleHBhbnNpb25QYW5lbEluZGV4XT8ub3BlbigpO1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogRGV0ZWN0IGNoYW5nZXMgZm9yIG9wZW5lZCBwYW5lbHMgKi9cclxuXHRcdFx0dGhpcy5tYXRFeHBhbnNpb25QYW5lbFF1ZXJ5TGlzdD8uZm9yRWFjaCh5ID0+IHtcclxuXHRcdFx0XHR0aGlzLm1hdEV4cGFuc2lvblBhbmVsU3Vic2NyaXB0aW9ucy5wdXNoKHkub3BlbmVkLnN1YnNjcmliZShfID0+IHtcclxuXHRcdFx0XHRcdGlmICh0aGlzLnNldFVybEhhc2gpIHtcclxuXHRcdFx0XHRcdFx0LyogR2V0IHRoZSBpZCBvZiB0aGUgY3VycmVudCBvcGVuZWQgcGFuZWwgKi9cclxuXHRcdFx0XHRcdFx0dmFyIGN1cnJlbnRQYW5lbElkID0geVsnX3ZpZXdDb250YWluZXJSZWYnXT8uZWxlbWVudD8ubmF0aXZlRWxlbWVudD8uaWQ7XHJcblxyXG5cdFx0XHRcdFx0XHQvKiBJZiB0aGUgcGFuZWwgSUQgaXMgc2V0LCBzZXQgaXQgYXMgdXJsIHNlZ21lbnQgKGhhc2gpICovXHJcblx0XHRcdFx0XHRcdGlmIChjdXJyZW50UGFuZWxJZCkge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7IGZyYWdtZW50OiBjdXJyZW50UGFuZWxJZCwgcmVwbGFjZVVybDogdHJ1ZSB9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0LyogT3RoZXJ3aXNlIHJlbW92ZSB0aGUgc2VnbWVudCBmcm9tIHRoZSB1cmwgKi9cclxuXHRcdFx0XHRcdFx0ZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHsgcmVwbGFjZVVybDogdHJ1ZSB9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdC8qIERldGVjdCBjaGFuZ2VzICovXHJcblx0XHRcdFx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHRcdFx0XHR9KSk7XHJcblxyXG5cdFx0XHRcdC8qIERldGVjdCBjaGFuZ2VzIGZvciBjbG9zZWQgcGFuZWxzICovXHJcblx0XHRcdFx0dGhpcy5tYXRFeHBhbnNpb25QYW5lbFN1YnNjcmlwdGlvbnMucHVzaCh5LmNsb3NlZC5zdWJzY3JpYmUoXyA9PiB7XHJcblx0XHRcdFx0XHRpZiAodGhpcy5zZXRVcmxIYXNoKSB7XHJcblx0XHRcdFx0XHRcdC8qIEdldCB0aGUgaWQgb2YgdGhlIGN1cnJlbnQgb3BlbmVkIHBhbmVsICovXHJcblx0XHRcdFx0XHRcdHZhciBjdXJyZW50UGFuZWxJZFBhcnRzID0geVsnX3ZpZXdDb250YWluZXJSZWYnXT8uZWxlbWVudD8ubmF0aXZlRWxlbWVudD8uaWQ/LnNwbGl0KCcuJyk7XHJcblxyXG5cdFx0XHRcdFx0XHQvKiBJZiB0aGUgcGFuZWwgSUQgaXMgc2V0LCBzZXQgaXQgYXMgdXJsIHNlZ21lbnQgKGhhc2gpICovXHJcblx0XHRcdFx0XHRcdGlmIChjdXJyZW50UGFuZWxJZFBhcnRzLmxlbmd0aCA+IDEpIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwgeyBmcmFnbWVudDogY3VycmVudFBhbmVsSWRQYXJ0cy5zbGljZSgwLCAtMSkuam9pbignLicpLCByZXBsYWNlVXJsOiB0cnVlIH0pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0LyogRGV0ZWN0IGNoYW5nZXMgKi9cclxuXHRcdFx0XHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0XHRcdH0pKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHJcblx0XHQvKiBOb3RpZnkgZXhwYW5zaW9uIHBhbmVsIGxpc3QgY2hhbmdlcyAqL1xyXG5cdFx0dGhpcy5tYXRFeHBhbnNpb25QYW5lbFF1ZXJ5TGlzdC5ub3RpZnlPbkNoYW5nZXMoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJldHJpZXZlcyBhbiBpbnN0YW5jZSBmcm9tIHRoZSBpbmplY3RvciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdG9rZW4uXHJcblx0ICogSWYgbm90IGZvdW5kOlxyXG5cdCAqIC0gVGhyb3dzIHtAbGluayBOb1Byb3ZpZGVyRXJyb3J9IGlmIG5vIGBub3RGb3VuZFZhbHVlYCB0aGF0IGlzIG5vdCBlcXVhbCB0b1xyXG5cdCAqIEluamVjdG9yLlRIUk9XX0lGX05PVF9GT1VORCBpcyBnaXZlblxyXG5cdCAqIC0gUmV0dXJucyB0aGUgYG5vdEZvdW5kVmFsdWVgIG90aGVyd2lzZVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBnZXRTZXJ2aWNlPFQ+KHRva2VuOiBUeXBlPFQ+KTogVCB7XHJcblx0XHRyZXR1cm4gU2VydmljZUxvY2F0b3IuZ2V0U2VydmljZSh0b2tlbik7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIGJhc2Ugcm91dGVcclxuXHQgKiBAcGFyYW0gc25hcHNob3QgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGdldE1haW5Sb3V0ZShzbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IEFjdGl2YXRlZFJvdXRlU25hcHNob3Qge1xyXG5cdFx0aWYgKHNuYXBzaG90ICYmICFzbmFwc2hvdC5kYXRhLm1lbnUpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuZ2V0TWFpblJvdXRlKHNuYXBzaG90LnBhcmVudCk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHNuYXBzaG90O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2hvd3MgYSBjb25maXJtIGRpYWxvZyB0byBkZWxldGUgYW4gaXRlbSBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc2hvd0RlbGV0ZUl0ZW1EaWFsb2coKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbkNvbmZpcm0oe1xyXG5cdFx0XHRtZXNzYWdlOiAkbG9jYWxpemVgOkBAZGlhbG9nLm1lc3NhZ2UuZGVsZXRlLm9uZTpBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgaXRlbT9gLFxyXG5cdFx0XHR0aXRsZTogJGxvY2FsaXplYDpAQGRpYWxvZy50aXRsZS5kZWxldGU6Q29uZmlybSBEZWxldGVgLFxyXG5cdFx0XHRjYW5jZWxCdXR0b246ICRsb2NhbGl6ZWA6QEBjYW5jZWw6Q2FuY2VsYCxcclxuXHRcdFx0YWNjZXB0QnV0dG9uOiAkbG9jYWxpemVgOkBAZGVsZXRlOkRlbGV0ZWAsXHJcblx0XHR9KS5hZnRlckNsb3NlZCgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2hvd3MgYSBjb25maXJtIGRpYWxvZyB0byBkZWxldGUgbXVsdGlwbGUgaXRlbXNcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc2hvd0RlbGV0ZUl0ZW1zRGlhbG9nKCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW5Db25maXJtKHtcclxuXHRcdFx0bWVzc2FnZTogJGxvY2FsaXplYDpAQGRpYWxvZy5tZXNzYWdlLmRlbGV0ZS5saXN0OkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhlIHNlbGVjdGVkIGl0ZW1zP2AsXHJcblx0XHRcdHRpdGxlOiAkbG9jYWxpemVgOkBAZGlhbG9nLnRpdGxlLmRlbGV0ZTpDb25maXJtIERlbGV0ZWAsXHJcblx0XHRcdGNhbmNlbEJ1dHRvbjogJGxvY2FsaXplYDpAQGNhbmNlbDpDYW5jZWxgLFxyXG5cdFx0XHRhY2NlcHRCdXR0b246ICRsb2NhbGl6ZWA6QEBkZWxldGU6RGVsZXRlYCxcclxuXHRcdH0pLmFmdGVyQ2xvc2VkKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTaG93cyBhIGNvbmZpcm0gZGlhbG9nIHRvIHNlbmQgc29tZSBkYXRhXHJcblx0ICogQHBhcmFtIG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gZGlzcGxheVxyXG5cdCAqIEBwYXJhbSBvYnNlcnZhYmUgVGhlIG9ic2VydmFibGUgaW5zdGFuY2VcclxuXHQgKiBAcGFyYW0gc3VjY2Vzc0NhbGxiYWNrIEEgc3VjY2VzcyBjYWxsYmFja1xyXG5cdCAqIEBwYXJhbSBlcnJvckNhbGxiYWNrIEFuIGVycm9yIGNhbGxiYWNrXHJcblx0ICovXHJcblx0cHVibGljIHNob3dDb25maXJtYXRpb25EaWFsb2cobWVzc2FnZTogc3RyaW5nLCBvYnNlcnZhYmU6IE9ic2VydmFibGU8YW55Piwgc3VjY2Vzc0NhbGxiYWNrOiBGdW5jdGlvbiA9IG51bGwsIGVycm9yQ2FsbGJhY2s6IEZ1bmN0aW9uID0gbnVsbCk6IHZvaWQge1xyXG5cdFx0dGhpcy5kaWFsb2dTZXJ2aWNlXHJcblx0XHRcdC5vcGVuQ29uZmlybSh7XHJcblx0XHRcdFx0bWVzc2FnZTogbWVzc2FnZSxcclxuXHRcdFx0XHR0aXRsZTogJGxvY2FsaXplYDpAQGRpYWxvZy50aXRsZS5jb25maXJtOkNvbmZpcm1gLFxyXG5cdFx0XHRcdGNhbmNlbEJ1dHRvbjogJGxvY2FsaXplYDpAQGNhbmNlbDpDYW5jZWxgLFxyXG5cdFx0XHRcdGFjY2VwdEJ1dHRvbjogJGxvY2FsaXplYDpAQG9rOk9rYCxcclxuXHRcdFx0fSlcclxuXHRcdFx0LmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChhY2NlcHQ6IGJvb2xlYW4pID0+IHtcclxuXHRcdFx0XHRpZiAoYWNjZXB0KSB7XHJcblx0XHRcdFx0XHRvYnNlcnZhYmUuc3Vic2NyaWJlKHggPT4ge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNob3dNZXNzYWdlKCRsb2NhbGl6ZWA6QEBzbmFja2Jhci5zZW5kLnN1Y2Nlc3M6RGF0YSBzZW50IHN1Y2Nlc3NmdWxseS5gKTtcclxuXHJcblx0XHRcdFx0XHRcdGlmIChzdWNjZXNzQ2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdFx0XHRzdWNjZXNzQ2FsbGJhY2soeCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sIGVycm9ycyA9PiB7XHJcblx0XHRcdFx0XHRcdHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRcdFx0aWYgKGVycm9yQ2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdFx0XHRlcnJvckNhbGxiYWNrKGVycm9ycyk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBOYXZpZ2F0ZXMgdG8gdGhlIGFkZCBwYWdlLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBvcGVuRGlhbG9nPFQsIEQgPSBhbnk+KGRpYWxvZ1R5cGU6IFR5cGU8VD4sIGNvbmZpZzogTWF0RGlhbG9nQ29uZmlnPEQ+LCBjYWxsYmFjazogRnVuY3Rpb24pOiB2b2lkIHtcclxuXHRcdHRoaXMuZGlhbG9nLm9wZW4oZGlhbG9nVHlwZSwgT2JqZWN0LmFzc2lnbih7IHdpZHRoOiAnNjUwcHgnLCBkYXRhOiB7fSwgcGFuZWxDbGFzczogWydkaWFsb2ctZnVsbC1zY3JlZW4nXSB9LCBjb25maWcpKVxyXG5cdFx0XHQuYWZ0ZXJDbG9zZWQoKVxyXG5cdFx0XHQuc3Vic2NyaWJlKF8gPT4gY2FsbGJhY2soKSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTaG93cyBhIG1lc3NhZ2VcclxuXHQgKiBAcGFyYW0gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBkaXNwbGF5XHJcblx0ICogQHBhcmFtIHR5cGUgVGhlIHR5cGUgb2YgdGhlIG1lc3NhZ2VcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc2hvd01lc3NhZ2UobWVzc2FnZT86IHN0cmluZywgdHlwZTogTWVzc2FnZVR5cGUgPSBNZXNzYWdlVHlwZS5TdWNjZXNzKTogdm9pZCB7XHJcblx0XHR2YXIgc25hY2tCYXJDbGFzcyA9ICdwcmltYXJ5JztcclxuXHRcdHN3aXRjaCAodHlwZSkge1xyXG5cdFx0XHRjYXNlIE1lc3NhZ2VUeXBlLlN1Y2Nlc3M6XHJcblx0XHRcdFx0c25hY2tCYXJDbGFzcyA9ICdwcmltYXJ5JztcclxuXHRcdFx0XHRicmVhaztcclxuXHJcblx0XHRcdGNhc2UgTWVzc2FnZVR5cGUuV2FybmluZzpcclxuXHRcdFx0XHRzbmFja0JhckNsYXNzID0gJ3dhcm4nO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cclxuXHRcdFx0Y2FzZSBNZXNzYWdlVHlwZS5FcnJvcjpcclxuXHRcdFx0XHRzbmFja0JhckNsYXNzID0gJ2Vycm9yJztcclxuXHRcdFx0XHRicmVhaztcclxuXHJcblx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5zbmFja0JhclNlcnZpY2Uub3BlbihtZXNzYWdlIHx8ICRsb2NhbGl6ZWA6QEBzbmFja2Jhci5zZW5kLnN1Y2Nlc3M6RGF0YSBzZW50IHN1Y2Nlc3NmdWxseS5gLCBudWxsLCB7XHJcblx0XHRcdGR1cmF0aW9uOiAzMDAwLFxyXG5cdFx0XHRwYW5lbENsYXNzOiBbc25hY2tCYXJDbGFzc11cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSW5pdG9hbGl6ZXMgdGhlIHRpbnltY2UgZWRpdG9yXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGluaXRFZGl0b3IoZWRpdG9yQ29uZmlnOiBhbnkgPSB7fSkge1xyXG5cdFx0T2JqZWN0LmFzc2lnbih0aGlzLmVkaXRvckNvbmZpZywge1xyXG5cdFx0XHRzdWZmaXg6ICcubWluJyxcclxuXHRcdFx0c2tpbjogZmFsc2UsXHJcblx0XHRcdGhlaWdodDogJzE3MHB4JyxcclxuXHRcdFx0Y29udGVudF9jc3M6IGZhbHNlLFxyXG5cdFx0XHRwbHVnaW5zOiB0aGlzLmVkaXRvclBsdWdpbnMsXHJcblx0XHRcdHRvb2xiYXI6IHRoaXMuZWRpdG9yVG9vbGJhcixcclxuXHRcdFx0cGFzdGVfYXNfdGV4dDogdHJ1ZSxcclxuXHRcdFx0bGFuZ3VhZ2U6ICdkZScsXHJcblx0XHRcdGxhbmd1YWdlX3VybDogJy9hc3NldHMvdGlueW1jZS9sYW5ncy9kZS5qcycsXHJcblx0XHRcdGRvY3VtZW50X2Jhc2VfdXJsOiBgJHt0aGlzLmFwcFNldHRpbmcuYXBpVXJsfWZpbGUvYCxcclxuXHRcdFx0YXV0b21hdGljX3VwbG9hZHM6IHRydWUsXHJcblx0XHRcdHJlbGF0aXZlX3VybHM6IHRydWUsXHJcblx0XHRcdGNvbnZlcnRfdXJsczogZmFsc2UsXHJcblx0XHRcdGV4dGVuZGVkX3ZhbGlkX2VsZW1lbnRzOiAnc3BhbltpZHxjbGFzc3xzdHlsZV0sK0BbZGF0YS1vcHRpb25zXScsXHJcblx0XHRcdGFsbG93X2h0bWxfaW5fbmFtZWRfYW5jaG9yOiB0cnVlXHJcblx0XHR9LCBlZGl0b3JDb25maWcpO1xyXG5cclxuXHRcdHRoaXMuaXNFZGl0b3JJbml0aWFsemVkID0gdHJ1ZTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldHMgc3VidGl0bGUgZnJvbSBjdXJyZW4gbWVudVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBzZXRUaXRsZXMoKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5tZW51KSB7XHJcblx0XHRcdHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKHRoaXMubWVudS50aXRsZSk7XHJcblx0XHRcdHRoaXMudGl0bGUgPSB0aGlzLnRpdGxlU2VydmljZS5nZXRUaXRsZSgpO1xyXG5cclxuXHRcdFx0aWYgKCF0aGlzLm1lbnUuaXRlbXMpIHtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIEdldCBzdWJ0aXRsZSBmcm9tIHVybCBwYXJhbXMgKi9cclxuXHRcdFx0dmFyIHN1YnRpdGxlID0gdGhpcy5yb3V0ZT8uc25hcHNob3Q/LnBhcmFtTWFwPy5nZXQoJ3N1YnRpdGxlJyk7XHJcblx0XHRcdGlmIChzdWJ0aXRsZSkge1xyXG5cdFx0XHRcdHRyeSB7IHRoaXMuc3VidGl0bGUgPSBhdG9iKHN1YnRpdGxlKTsgfVxyXG5cdFx0XHRcdGNhdGNoIChlKSB7IHRoaXMuc3VidGl0bGUgPSBzdWJ0aXRsZTsgfVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdC8qIEdldCBjdXJyZW50IHJvdXRlICovXHJcblx0XHRcdFx0bGV0IGN1cnJlbnRSb3V0ZSA9IHRoaXMucm91dGVyLnVybC5zcGxpdCgnPycpWzBdPy5zcGxpdCgnOycpWzBdO1xyXG5cdFx0XHRcdHZhciBzdWJtZW51ID0gdGhpcy5tZW51Lml0ZW1zLmZpbHRlcih4ID0+IHgucGF0aCA9PSBjdXJyZW50Um91dGUpWzBdO1xyXG5cdFx0XHRcdGlmIChzdWJtZW51KSB7XHJcblx0XHRcdFx0XHR0aGlzLnN1YnRpdGxlID0gc3VibWVudS50aXRsZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIE5hdmlnYXRlIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBhcnJheSBvZiBjb21tYW5kcyBhbmQgYSBzdGFydGluZyBwb2ludC5cclxuXHQgKiBAcGFyYW0gY29tbWFuZHMgXHJcblx0ICovXHJcblx0cHVibGljIG5hdmlnYXRlKGNvbW1hbmRzOiBhbnlbXSwgcXVlcnlQYXJhbXM/OiBhbnksIGZyYWdtZW50Pzogc3RyaW5nLCBwcmVzZXJ2ZUZyYWdtZW50PzogYm9vbGVhbik6IHZvaWQge1xyXG5cdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoY29tbWFuZHMsIHtcclxuXHRcdFx0cXVlcnlQYXJhbXM6IE9iamVjdC5hc3NpZ24oeyByZXR1cm5Vcmw6IHRoaXMuY3VycmVudFJvdXRlIH0sIHF1ZXJ5UGFyYW1zIHx8IHt9KSxcclxuXHRcdFx0ZnJhZ21lbnQ6IGZyYWdtZW50LFxyXG5cdFx0XHRwcmVzZXJ2ZUZyYWdtZW50OiBwcmVzZXJ2ZUZyYWdtZW50LFxyXG5cdFx0XHRyZWxhdGl2ZVRvOiB0aGlzLnJvdXRlXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbnZlcnQgT2JqZWN0IHRvIEh0dHBIZWFkZXJzXHJcblx0ICogXHJcblx0ICogQHBhcmFtIGJvZHlcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgdG9IdHRwSGVhZGVycyhib2R5OiBPYmplY3QpOiBIdHRwSGVhZGVycyB7XHJcblx0XHRpZiAoIWJvZHkpIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBIdHRwSGVhZGVycygpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhib2R5KVxyXG5cdFx0XHQuZmlsdGVyKGtleSA9PiBib2R5W2tleV0gIT0gbnVsbCAmJiBib2R5W2tleV0gIT0gJycpXHJcblx0XHRcdC5yZWR1Y2UoKHAsIGtleSkgPT4gcC5zZXQoa2V5LCBib2R5W2tleV0pLCBuZXcgSHR0cEhlYWRlcnMoKSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBQYXJzZXMgaHR0cCByZXNwb25zZSBlcnJvcnNcclxuXHQgKiBAcGFyYW0gZXJyb3JzIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBwYXJzZUVycm9ycyhlcnJvcnM6IE9iamVjdCk6IHZvaWQge1xyXG5cdFx0dGhpcy5lcnJvcnMgPSBbXTtcclxuXHRcdHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcblx0XHR0aGlzLmlzU2F2aW5nID0gZmFsc2U7XHJcblxyXG5cdFx0aWYgKGVycm9ycykge1xyXG5cdFx0XHRPYmplY3Qua2V5cyhlcnJvcnMpLmZvckVhY2goZWwgPT4ge1xyXG5cdFx0XHRcdGxldCBlcnJvciA9IGVycm9yc1tlbF07XHJcblx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoZXJyb3IpKSB7XHJcblx0XHRcdFx0XHRlcnJvci5mb3JFYWNoKGVyciA9PiB7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXJyb3JzLnB1c2goZXJyKTtcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGVycm9yID09PSBcInN0cmluZ1wiKSB7XHJcblx0XHRcdFx0XHR0aGlzLmVycm9ycy5wdXNoKGVycm9yKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSGFuZGxlIEh0dHAgb3BlcmF0aW9uIHRoYXQgZmFpbGVkLlxyXG5cdCAqIExldCB0aGUgYXBwIGNvbnRpbnVlLlxyXG5cdCAqIEBwYXJhbSBvcGVyYXRpb24gLSBuYW1lIG9mIHRoZSBvcGVyYXRpb24gdGhhdCBmYWlsZWRcclxuXHQgKiBAcGFyYW0gcmVzdWx0IC0gb3B0aW9uYWwgdmFsdWUgdG8gcmV0dXJuIGFzIHRoZSBvYnNlcnZhYmxlIHJlc3VsdFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBoYW5kbGVFcnJvcjxUPihvcGVyYXRpb24gPSAnb3BlcmF0aW9uJywgcmVzdWx0PzogVCkge1xyXG5cdFx0cmV0dXJuIChlcnJvcjogYW55KTogT2JzZXJ2YWJsZTxUPiA9PiB7XHJcblxyXG5cdFx0XHQvKiBQYXJzZSB0aGUgZXJyb3IgbWVzc2FnZXMgKi9cclxuXHRcdFx0dGhpcy5wYXJzZUVycm9ycyhlcnJvcik7XHJcblxyXG5cdFx0XHQvKiBMb2cgdG8gY29uc29sZSAqL1xyXG5cdFx0XHR0aGlzLndhcm4oYCR7b3BlcmF0aW9ufSBmYWlsZWQ6ICR7ZXJyb3IubWVzc2FnZX1gKTtcclxuXHJcblx0XHRcdC8qIExldCB0aGUgYXBwIGtlZXAgcnVubmluZyBieSByZXR1cm5pbmcgYW4gZW1wdHkgcmVzdWx0ICovXHJcblx0XHRcdHJldHVybiBvZihyZXN1bHQgYXMgVCk7XHJcblx0XHR9O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTG9nIHRvIGNvbnNvbGVcclxuXHQgKiBAcGFyYW0gbWVzc2FnZSBcclxuXHQgKiBAcGFyYW0gb3B0aW9uYWxQYXJhbXMgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGxvZyhtZXNzYWdlOiBzdHJpbmcsIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSkge1xyXG5cdFx0aWYgKHRoaXMuZGVidWcpIHtcclxuXHRcdFx0Y29uc29sZS5sb2cobWVzc2FnZSwgb3B0aW9uYWxQYXJhbXMpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTG9nIHRvIGNvbnNvbGVcclxuXHQgKiBAcGFyYW0gbWVzc2FnZSBcclxuXHQgKiBAcGFyYW0gb3B0aW9uYWxQYXJhbXMgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHdhcm4obWVzc2FnZTogc3RyaW5nLCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pIHtcclxuXHRcdGlmICh0aGlzLmRlYnVnKSB7XHJcblx0XHRcdGNvbnNvbGUud2FybihtZXNzYWdlLCBvcHRpb25hbFBhcmFtcyk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDbGVhbnMgdGhlIG9iamVjdHNcclxuXHQgKiBSZW1vdmVzIGVtcHR5IHByb3BlcnRpZXNcclxuXHQgKiBAcGFyYW0gb2JqIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBjbGVhbihvYmo6IGFueSk6IGFueSB7XHJcblx0XHR0cnkge1xyXG5cdFx0XHRmb3IgKHZhciBwcm9wTmFtZSBpbiBvYmopIHtcclxuXHRcdFx0XHRpZiAob2JqW3Byb3BOYW1lXSA9PT0gbnVsbCB8fCBvYmpbcHJvcE5hbWVdID09PSB1bmRlZmluZWQgfHwgb2JqW3Byb3BOYW1lXSA9PT0gXCJcIikge1xyXG5cdFx0XHRcdFx0ZGVsZXRlIG9ialtwcm9wTmFtZV07XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9IGNhdGNoIChlcnJvcikgeyB9XHJcblxyXG5cdFx0cmV0dXJuIG9iajtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNhbml0aXplcyB0aGUgc3BlY2lmaWVkIG9iamVjdFxyXG5cdCAqIEBwYXJhbSBvYmogXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHNhbml0aXplT2JqZWN0KG9iajogYW55LCAuLi5pZ25vcmU6IHN0cmluZ1tdKTogYW55IHtcclxuXHRcdHJldHVybiBPYmplY3Qua2V5cyhvYmopXHJcblx0XHRcdC5maWx0ZXIoeCA9PiBvYmpbeF0pXHJcblx0XHRcdC5maWx0ZXIoeCA9PiAhKGlnbm9yZSB8fCBbXSkubWFwKHggPT4geC50b0xvd2VyQ2FzZSgpKS5pbmNsdWRlcyh4LnRvTG93ZXJDYXNlKCkpKVxyXG5cdFx0XHQucmVkdWNlKChyZXN1bHQsIGtleSkgPT4ge1xyXG5cdFx0XHRcdHJlc3VsdFtrZXldID0gaXNOYU4oK29ialtrZXldKSA/IG9ialtrZXldIDogK29ialtrZXldO1xyXG5cdFx0XHRcdHJldHVybiByZXN1bHQ7XHJcblx0XHRcdH0sIHt9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENoZWNrcyBpZiB0aGUgdXNlciBzZWxlY2V0ZWQgYW55IHRleHQgaW4gdGhlIGRvY3VtZW50XHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGlzVGV4dFNlbGVjdGVkID0gKCk6IGJvb2xlYW4gPT4gd2luZG93Py5nZXRTZWxlY3Rpb24oKT8udG9TdHJpbmcoKT8ubGVuZ3RoID4gMDtcclxuXHJcblx0LyoqXHJcblx0ICogQSBjYWxsYmFjayB1c2VkIGZvciBhbnkgY3VzdG9tIGNsZWFudXAgdGhhdCBuZWVkcyB0byBvY2N1clxyXG5cdCAqIHdoZW4gdGhlIGluc3RhbmNlIGlzIGRlc3Ryb3llZC5cclxuXHQgKi9cclxuXHRuZ09uRGVzdHJveSgpIHtcclxuXHRcdHRoaXMubWF0RXhwYW5zaW9uUGFuZWxTdWJzY3JpcHRpb25zLmZvckVhY2goeCA9PiB4LnVuc3Vic2NyaWJlKCkpO1xyXG5cdH1cclxufSJdfQ==
|
|
574
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9iYXNlL2NvbXBvbmVudHMvYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQWlCLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFRLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1SixPQUFPLEVBQUUsU0FBUyxFQUFtQixNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBMEIsYUFBYSxFQUFFLE1BQU0sRUFBdUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNySCxPQUFPLEVBQTRCLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXBFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIs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LENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEQsT0FBTyxNQUFNLENBQUM7UUFDZixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVCxDQUFDO0lBUUQ7OztPQUdHO0lBQ0gsV0FBVztRQUNWLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNuRSxDQUFDOzs2SEEzc0JvQixhQUFhO2lIQUFiLGFBQWEsdUxBNExwQixpQkFBaUIsMkJBQVUsVUFBVSw2REFNckMsaUJBQWlCOzJGQWxNVixhQUFhO2tCQURsQyxTQUFTO3FJQThDRiwyQkFBMkI7c0JBRGpDLEtBQUs7Z0JBNkdDLE1BQU07c0JBRFosTUFBTTtnQkFxQ0csaUNBQWlDO3NCQUQxQyxZQUFZO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFPM0MsMEJBQTBCO3NCQURuQyxZQUFZO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QsIFR5cGUsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ0NvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdEV4cGFuc2lvblBhbmVsIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcclxuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgTmF2aWdhdGlvbkVuZCwgUm91dGVyLCBVcmxTZWdtZW50LCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb250ZXh0SGVscGVyIH0gZnJvbSAnLi4vLi4vY29tbW9uL2NvbW1vbi5tb2R1bGUnO1xyXG5pbXBvcnQgeyBBcHBTZXR0aW5nIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9hcHAtc2V0dGluZyc7XHJcbmltcG9ydCB7IFNlcnZpY2VMb2NhdG9yIH0gZnJvbSAnLi4vLi4vY29tbW9uL3NlcnZpY2VzL3NlcnZpY2UtbG9jYXRvcic7XHJcbmltcG9ydCB7IFZkRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uL2RpYWxvZ3Mvc2VydmljZXMvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBWZE1lZGlhU2VydmljZSB9IGZyb20gJy4uLy4uL21lZGlhL3NlcnZpY2VzL21lZGlhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNZW51IH0gZnJvbSAnLi4vLi4vbWVudS9tb2RlbHMvbWVudSc7XHJcbmltcG9ydCB7IENvbW1vbiB9IGZyb20gJy4uL2NvbnN0YW50cy9jb21tb24nO1xyXG5pbXBvcnQgeyBHbG9iYWxSb2xlcyB9IGZyb20gJy4uL2NvbnN0YW50cy9nbG9iYWwtcm9sZXMnO1xyXG5pbXBvcnQgeyBNZXNzYWdlVHlwZSB9IGZyb20gJy4uL2VudW1zL21lc3NhZ2UtdHlwZSc7XHJcbmltcG9ydCB7IEF1dGhIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXJzL2F1dGgtaGVscGVyJztcclxuaW1wb3J0IHsgSUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2liYXNlLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEF1dGhVc2VyIH0gZnJvbSAnLi4vbW9kZWxzL2F1dGgtdXNlcic7XHJcblxyXG4vKipcclxuICogQSBiYXNlIGxpc3QgY29tcG9uZW50IGZvciBjb21wb25lbnRzIHdpdGggcGFnaW5hdGlvbiBzdXBwb3J0XHJcbiAqL1xyXG4vLyBAZHluYW1pY1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBJQmFzZUNvbXBvbmVudCwgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuXHQvKipcclxuXHQgKiBBcHAgc2V0dGluZ3NcclxuXHQgKi9cclxuXHRwdWJsaWMgYXBwU2V0dGluZzogQXBwU2V0dGluZztcclxuXHJcblx0LyoqXHJcblx0ICogc2V0dGluZ3M6IEFueVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZXR0aW5nczogYW55ID0ge307XHJcblxyXG5cdC8qKlxyXG5cdCAqIE1lbnUgaXRlbXNcclxuXHQgKi9cclxuXHRwdWJsaWMgbWVudTogTWVudTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIG5hbWUgb2YgdGhlIHByb2plY3RcclxuXHQgKi9cclxuXHRwdWJsaWMgcHJvamVjdE5hbWU6IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIHRpdGxlIG9mIHRoZSBjdXJyZW50IHBhZ2VcclxuXHQgKi9cclxuXHRwdWJsaWMgdGl0bGU6IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIHN1YnRpdGxlIG9mIHRoZSBjdXJyZW50IG91dGxldFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzdWJ0aXRsZTogc3RyaW5nID0gJyc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIElmIHRydWUsIHVzZSBzb21lIGR1bW15IGRhdGEgYW5kIHNob3cgZGVidWcgbG9nc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBkZWJ1ZzogYm9vbGVhbjtcclxuXHJcblx0LyoqXHQgXHJcblx0ICogTG9hZGluZyBzdGF0dXNcclxuXHQgKi9cclxuXHRwdWJsaWMgaXNMb2FkaW5nOiBib29sZWFuO1xyXG5cclxuXHQvKipcclxuXHQgKiBoYW5kbGVFeHBhbnNpb25QYW5lbENoYW5nZXM6IGJvb2xlYW5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBoYW5kbGVFeHBhbnNpb25QYW5lbENoYW5nZXM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBTYXZpbmcgc3RhdHVzXHJcblx0ICovXHJcblx0cHVibGljIF9pc1NhdmluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdHB1YmxpYyBnZXQgaXNTYXZpbmcoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9pc1NhdmluZyB8fCB0aGlzLmlzTG9hZGluZzsgfVxyXG5cdHB1YmxpYyBzZXQgaXNTYXZpbmcoaXNTYXZpbmc6IGJvb2xlYW4pIHsgdGhpcy5pc0xvYWRpbmcgPSB0aGlzLl9pc1NhdmluZyA9IGlzU2F2aW5nOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgZmxhZyBlaW5kaWNhdGVzIHRoYXQgdGhlIGVkaXRvciBpcyBpbml0ZWRcclxuXHQgKi9cclxuXHRwdWJsaWMgaXNFZGl0b3JJbml0aWFsemVkOiBib29sZWFuO1xyXG5cclxuXHQvKipcclxuXHQgKiBSZXByZXNlbnRzIHRoZSByZXF1ZXN0IGVycm9yc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBlcnJvcnM6IEFycmF5PHN0cmluZz4gPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBVc2VkIHRvIGV2YWx1YXRlIHdoZXRoZXIgYSBnaXZlbiBtZWRpYSBxdWVyeSBpcyB0cnVlIG9yIGZhbHNlIGdpdmVuIHRoZSBjdXJyZW50IGRldmljZSdzIHNjcmVlbiAvIHdpbmRvdyBzaXplLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBtZWRpYTogVmRNZWRpYVNlcnZpY2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFsbG93ZWQgZmlsZSBleHRlbnNpb25zXHJcblx0ICovXHJcblx0cHVibGljIGFsbG93ZWRFeHRlbnNpb25zOiBzdHJpbmdbXSA9IENvbW1vbi5hbGxvd2VkRXh0ZW5zaW9ucztcclxuXHJcblx0LyoqXHJcblx0ICogdGlueU1DRSBwbHVnaW5zXHJcblx0ICovXHJcblx0cHVibGljIGVkaXRvclBsdWdpbnM6IHN0cmluZyA9IENvbW1vbi5lZGl0b3JQbHVnaW5zO1xyXG5cclxuXHQvKipcclxuXHQgKiB0aW55TUNFIGVkaXRvclxyXG5cdCAqL1xyXG5cdHB1YmxpYyBlZGl0b3JUb29sYmFyOiBzdHJpbmcgPSBDb21tb24uZWRpdG9yVG9vbGJhcjtcclxuXHJcblx0LyoqXHJcblx0ICogRWRpdG9yIGNvbmZpZ3VyYXRpb25cclxuXHQgKi9cclxuXHRwdWJsaWMgZWRpdG9yQ29uZmlnOiBhbnkgPSB7fTtcclxuXHJcblx0LyoqXHJcblx0ICogUHJvdmlkZXMgdGhlIG5hdmlnYXRpb24gYW5kIHVybCBtYW5pcHVsYXRpb24gY2FwYWJpbGl0aWVzLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyByb3V0ZXI6IFJvdXRlcjtcclxuXHJcblx0LyoqXHJcblx0ICogdXJsSGFzaDogc3RyaW5nXHJcblx0ICovXHJcblx0cHVibGljIHVybEhhc2g6IHN0cmluZyA9IG51bGw7XHJcblxyXG5cdC8qKlxyXG5cdCAqIENsYXNzIG5hbWVcclxuXHQgKi9cclxuXHRwdWJsaWMgY2xhc3NOYW1lOiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIENyZWF0ZSBwZXJtaXNzaW9uXHJcblx0ICovXHJcblx0cHVibGljIGNhbkNyZWF0ZTogYm9vbGVhbjtcclxuXHJcblx0LyoqXHJcblx0ICogVXBkYXRlIHBlcm1pc3Npb25cclxuXHQgKi9cclxuXHRwdWJsaWMgY2FuVXBkYXRlOiBib29sZWFuO1xyXG5cclxuXHQvKipcclxuXHQgKiBDdXJyZW50IHJvdXRlXHJcblx0ICovXHJcblx0cHVibGljIGN1cnJlbnRSb3V0ZTogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBDdXJyZW50IGJhc2Ugcm91dGVcclxuXHQgKi9cclxuXHRwdWJsaWMgY3VycmVudEJhc2VSb3V0ZTogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHVybCB0byByZXR1cm4gdG8gYWZ0ZXIgc2F2ZVxyXG5cdCAqL1xyXG5cdHB1YmxpYyByZXR1cm5Vcmw6IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogQ3VycmVudCB1c2VyIG9iamVjdFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjdXJyZW50VXNlcjogQXV0aFVzZXIgPSBBdXRoSGVscGVyLnVzZXI7XHJcblxyXG5cdC8qKlxyXG5cdCAqIElzIHRoZSBjdXJyZW50IHVzZXIgYSBjbGllbnQgYWRtaW5cclxuXHQgKi9cclxuXHRwdWJsaWMgaXNBZG1pbiA9IEF1dGhIZWxwZXIuaGFzUm9sZShHbG9iYWxSb2xlcy5BZG1pbmlzdHJhdG9yKTtcclxuXHJcblx0LyoqXHJcblx0ICogSXMgdGhlIGN1cnJlbnQgdXNlciBhIGNsaWVudCBhZG1pblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBpc0NsaWVudEFkbWluID0gQXV0aEhlbHBlci5oYXNSb2xlKEdsb2JhbFJvbGVzLkNsaWVudEFkbWluaXN0cmF0b3IpO1xyXG5cclxuXHQvKipcclxuXHQgKiBJcyB0aGUgY3VycmVudCB1c2VyIGEgZGVwYXJ0bWVudCBhZG1pblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBpc0RlcGFydG1lbnRBZG1pbiA9IEF1dGhIZWxwZXIuaGFzUm9sZShHbG9iYWxSb2xlcy5EZXBhcnRtZW50QWRtaW5pc3RyYXRvcik7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHJlbG9hZD86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QE91dHB1dCgpXHJcblx0cHVibGljIHJlbG9hZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogQSBzZXJ2aWNlIHRoYXQgY2FuIGJlIHVzZWQgdG8gZ2V0IGFuZCBzZXQgdGhlIHRpdGxlIG9mIGEgY3VycmVudCBIVE1MIGRvY3VtZW50LlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCB0aXRsZVNlcnZpY2U6IFRpdGxlO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHNlcnZpY2UgdG8gZGlzcGF0Y2ggTWF0ZXJpYWwgRGVzaWduIHNuYWNrIGJhciBtZXNzYWdlcy5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc25hY2tCYXJTZXJ2aWNlOiBNYXRTbmFja0JhcjtcclxuXHJcblx0LyoqXHJcblx0ICogQSBzZXJ2aWNlIHRvIHNob3cgY29uaXJtIGFuZCBwcm9tcHQgZGlhbG9ncy5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgZGlhbG9nU2VydmljZTogVmREaWFsb2dTZXJ2aWNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHNlcnZpY2UgdG8gc2hvdyBjb25pcm0gYW5kIHByb21wdCBkaWFsb2dzLlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBkaWFsb2c6IE1hdERpYWxvZztcclxuXHJcblx0LyoqXHJcblx0ICogbG9jYXRpb246IExvY2F0aW9uXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGxvY2F0aW9uOiBMb2NhdGlvbjtcclxuXHJcblx0LyoqXHJcblx0ICogSWYgdHJ1ZSwgc2V0IHVybCBoYXNoXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHNldFVybEhhc2g6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBNYXRFeHBhbnNpb25QYW5lbCByZWZcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkcmVuKE1hdEV4cGFuc2lvblBhbmVsLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcclxuXHRwcm90ZWN0ZWQgbWF0RXhwYW5zaW9uUGFuZWxFbGVtZW50UXVlcnlMaXN0OiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XHJcblxyXG5cdC8qKlxyXG5cdCAqIE1hdEV4cGFuc2lvblBhbmVsIHJlZlxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGRyZW4oTWF0RXhwYW5zaW9uUGFuZWwpXHJcblx0cHJvdGVjdGVkIG1hdEV4cGFuc2lvblBhbmVsUXVlcnlMaXN0OiBRdWVyeUxpc3Q8TWF0RXhwYW5zaW9uUGFuZWw+O1xyXG5cclxuXHQvKipcclxuXHQgKiBtYXRFeHBhbnNpb25QYW5lbFN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG1hdEV4cGFuc2lvblBhbmVsU3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3JcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcblx0XHR0aGlzLnRpdGxlU2VydmljZSA9IHRoaXMuZ2V0U2VydmljZShUaXRsZSk7XHJcblx0XHR0aGlzLmRpYWxvZ1NlcnZpY2UgPSB0aGlzLmdldFNlcnZpY2UoVmREaWFsb2dTZXJ2aWNlKTtcclxuXHRcdHRoaXMuZGlhbG9nID0gdGhpcy5nZXRTZXJ2aWNlKE1hdERpYWxvZyk7XHJcblx0XHR0aGlzLm1lZGlhID0gdGhpcy5nZXRTZXJ2aWNlKFZkTWVkaWFTZXJ2aWNlKTtcclxuXHRcdHRoaXMuc25hY2tCYXJTZXJ2aWNlID0gdGhpcy5nZXRTZXJ2aWNlKE1hdFNuYWNrQmFyKTtcclxuXHRcdHRoaXMucm91dGVyID0gdGhpcy5nZXRTZXJ2aWNlKFJvdXRlcik7XHJcblx0XHR0aGlzLmFwcFNldHRpbmcgPSB0aGlzLmdldFNlcnZpY2UoQXBwU2V0dGluZyk7XHJcblx0XHR0aGlzLmxvY2F0aW9uID0gdGhpcy5nZXRTZXJ2aWNlKExvY2F0aW9uKTtcclxuXHJcblx0XHRDb250ZXh0SGVscGVyLmFjdGl2YXRlZFJvdXRlID0gcm91dGU7XHJcblx0XHRDb250ZXh0SGVscGVyLnJvdXRlciA9IHRoaXMucm91dGVyO1xyXG5cdFx0Q29udGV4dEhlbHBlci5hcHBTZXR0aW5nID0gdGhpcy5hcHBTZXR0aW5nO1xyXG5cclxuXHRcdHRoaXMuaW5pdEVkaXRvcigpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgYWZ0ZXIgZGF0YS1ib3VuZCBwcm9wZXJ0aWVzIFxyXG5cdCAqIG9mIGEgZGlyZWN0aXZlIGFyZSBpbml0aWFsaXplZC5cclxuXHQgKi9cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHRcdC8qIEdldCBtZW51IGl0ZW1zIGZyb20gcm91dGUgc25hcHNob3QgKi9cclxuXHRcdHZhciBtYWluUm91dGUgPSB0aGlzLmdldE1haW5Sb3V0ZSh0aGlzLnJvdXRlLnNuYXBzaG90KTtcclxuXHRcdGlmIChtYWluUm91dGUpIHtcclxuXHRcdFx0dGhpcy5tZW51ID0gbWFpblJvdXRlLmRhdGEubWVudTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBTZXQgcHJvamVjdCBuYW1lICYgZGVidWcgbW9kZSAqL1xyXG5cdFx0dGhpcy5wcm9qZWN0TmFtZSA9IHRoaXMuYXBwU2V0dGluZy5wcm9qZWN0TmFtZTtcclxuXHRcdHRoaXMuZGVidWcgPSB0aGlzLmFwcFNldHRpbmcuZGVidWc7XHJcblxyXG5cdFx0LyogR2V0IHRoZSBoYXNoIGZyb20gdGhlIHVybCAqL1xyXG5cdFx0dGhpcy5yb3V0ZS5mcmFnbWVudC5zdWJzY3JpYmUoKGZyYWdtZW50OiBzdHJpbmcpID0+IHRoaXMudXJsSGFzaCA9IGZyYWdtZW50KTtcclxuXHJcblx0XHQvKipcclxuXHRcdCAqIENoZWNrIHBlcm1pc3Npb25zXHJcblx0XHQgKi9cclxuXHRcdGlmICh0aGlzLnJvdXRlLnBhcmVudCkge1xyXG5cdFx0XHR0aGlzLnJvdXRlLnBhcmVudC51cmwuc3Vic2NyaWJlKCh1cmw6IFVybFNlZ21lbnRbXSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuY2xhc3NOYW1lID8/PSB1cmwubGVuZ3RoID8gdXJsWzBdLnBhdGgucmVwbGFjZSgvKC4qKXMkLywgJyQxJykucmVwbGFjZSgvXi4vLCAodXJsWzBdLnBhdGhbMF0gfHwgJycpLnRvVXBwZXJDYXNlKCkpIDogJyc7XHJcblx0XHRcdFx0dGhpcy5jYW5DcmVhdGUgPSBBdXRoSGVscGVyLmlzUGVybWl0dGVkKCdDcmVhdGUnLCBgQ3JlYXRlJHt0aGlzLmNsYXNzTmFtZX1gKTtcclxuXHRcdFx0XHR0aGlzLmNhblVwZGF0ZSA9IEF1dGhIZWxwZXIuaXNQZXJtaXR0ZWQoJ1VwZGF0ZScsIGBVcGRhdGUke3RoaXMuY2xhc3NOYW1lfWApO1xyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBTZXQgY3VycmVudCByb3V0ZSAqL1xyXG5cdFx0dGhpcy5jdXJyZW50Um91dGUgPSBidG9hKHRoaXMucm91dGVyLnVybCk7XHJcblx0XHR0aGlzLmN1cnJlbnRCYXNlUm91dGUgPSB0aGlzLnJvdXRlci51cmw/LnNwbGl0KCc/JylbMF0/LnNwbGl0KCc7JylbMF07XHJcblxyXG5cdFx0LyoqXHJcblx0XHQgKiBTZXQgcGFnZSB0aXRsZVxyXG5cdFx0ICovXHJcblx0XHR0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKHggPT4ge1xyXG5cdFx0XHRpZiAoeCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuXHRcdFx0XHR0aGlzLnNldFRpdGxlcygpO1xyXG5cdFx0XHRcdHRoaXMuY3VycmVudFJvdXRlID0gYnRvYSh4LnVybCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdC8qIEdldCB0aGUgcmV0dXJuIHVybCBpZiBhbnkgKi9cclxuXHRcdHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHggPT4gdGhpcy5zZXRSZXR1cm5VcmwoeC5yZXR1cm5VcmwpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGEgY29tcG9uZW50J3MgdmlldyBoYXMgYmVlbiBmdWxseSBpbml0aWFsaXplZC5cclxuXHQgKi9cclxuXHRuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblx0XHQvKiBCcm9hZGNhc3QgdG8gYWxsIGxpc3RlbmVyIG9ic2VydmFibGVzIHdoZW4gbG9hZGluZyB0aGUgcGFnZSAqL1xyXG5cdFx0dGhpcy5tZWRpYS5icm9hZGNhc3QoKTtcclxuXHJcblx0XHQvKiBTZXQgdGl0bGVzICovXHJcblx0XHR0aGlzLnNldFRpdGxlcygpO1xyXG5cclxuXHRcdC8qIFxyXG5cdFx0ICogRm9yY2UgYSBuZXcgY2hhbmdlIGRldGVjdGlvbiBjeWNsZSBzaW5jZSBjaGFuZ2UgZGV0ZWN0aW9ucyBcclxuXHRcdCAqIGhhdmUgZmluaXNoZWQgd2hlbiBgbmdBZnRlclZpZXdJbml0YCBpcyBleGVjdXRlZFxyXG5cdFx0ICovXHJcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcblx0XHQvKiBMaXN0ZW4gZm9yIGV4cGFuc2lvbiBwYW5lbCBjaGFuZ2VzICovXHJcblx0XHRpZiAodGhpcy5oYW5kbGVFeHBhbnNpb25QYW5lbENoYW5nZXMpIHtcclxuXHRcdFx0dGhpcy5vbkV4cGFuc2lvblBhbmVsQ2hhbmdlcygpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVmcmVzaHMgdGhpcyBwYWdlL2NvbXBvbmVudFxyXG5cdCAqL1xyXG5cdHB1YmxpYyByZWxvYWRQYWdlKCk6IHZvaWQge1xyXG5cdFx0bGV0IGN1cnJlbnRVcmwgPSB0aGlzLnJvdXRlci51cmw7XHJcblx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJywgeyByZXBsYWNlVXJsOiB0cnVlIH0pLnRoZW4oKCkgPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChjdXJyZW50VXJsLCB7IHJlcGxhY2VVcmw6IHRydWUgfSkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTmF2aWdhdGVzIGJhY2sgdG8gcmV0dXJuIHVybFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBuYXZpZ2F0ZVRvUmV0dXJuVXJsKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMucmV0dXJuVXJsKSB7XHJcblx0XHRcdGxldCB1cmxUcmVlOiBVcmxUcmVlID0gdGhpcy5yb3V0ZXIucGFyc2VVcmwodGhpcy5yZXR1cm5VcmwpO1xyXG5cdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybFRyZWUudG9TdHJpbmcoKSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiBcclxuXHQgKiBGb3JjZSBhIG5ldyBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlIHNpbmNlIGNoYW5nZSBkZXRlY3Rpb25zIFxyXG5cdCAqIGhhdmUgZmluaXNoZWQgd2hlbiBgbmdBZnRlclZpZXdJbml0YCBpcyBleGVjdXRlZFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBkZXRlY3RDaGFuZ2VzKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTZXRzIHJldHVybiB1cmxcclxuXHQgKiBAcGFyYW0gcmV0dXJuVXJsIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBzZXRSZXR1cm5VcmwocmV0dXJuVXJsOiBzdHJpbmcpOiB2b2lkIHtcclxuXHRcdHRyeSB7IHRoaXMucmV0dXJuVXJsID0gcmV0dXJuVXJsID8gZGVjb2RlVVJJQ29tcG9uZW50KGF0b2IocmV0dXJuVXJsKSkgOiBudWxsOyB9XHJcblx0XHRjYXRjaCAoZXJyb3IpIHsgfVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTGlzdGVuIGZvciBleHBhbnNpb24gcGFuZWwgY2hhbmdlc1xyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBvbkV4cGFuc2lvblBhbmVsQ2hhbmdlcygpOiB2b2lkIHtcclxuXHRcdC8qIExpc3RlbiBmb3IgZXhwYW5zaW9uIHBhbmVsIGNoYW5nZXMgKi9cclxuXHRcdHRoaXMubWF0RXhwYW5zaW9uUGFuZWxRdWVyeUxpc3Q/LmNoYW5nZXMuc3Vic2NyaWJlKF8gPT4ge1xyXG5cdFx0XHQvKiBVbnN1YnNjcmliZSBmcm9tIG9sZCAnb3BlbmVkJyBhbmQgJ2Nsb3NlZCcgc3Vic2NyaXB0aW9ucyAqL1xyXG5cdFx0XHR0aGlzLm1hdEV4cGFuc2lvblBhbmVsU3Vic2NyaXB0aW9ucy5mb3JFYWNoKHggPT4geC51bnN1YnNjcmliZSgpKTtcclxuXHJcblx0XHRcdC8qIERldGVjdCBjaGFuZ2VzICovXHJcblx0XHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuXHRcdFx0LyogR2V0IHRoZSBwYW5lbCBlbmRzIHdpdGggdGhlIElEICduZXcnICovXHJcblx0XHRcdHZhciBuZXdFeHBhbnNpb25QYW5lbEluZGV4ID0gdGhpcy5tYXRFeHBhbnNpb25QYW5lbEVsZW1lbnRRdWVyeUxpc3Q/LnRvQXJyYXkoKT8uZmluZEluZGV4KHggPT4geC5uYXRpdmVFbGVtZW50Py5pZD8uZW5kc1dpdGgoJy5uZXcnKSk7XHJcblx0XHRcdGlmIChuZXdFeHBhbnNpb25QYW5lbEluZGV4ID49IDApIHtcclxuXHRcdFx0XHQvKiBDbG9zZSBhbGwgcGFuZWxzICovXHJcblx0XHRcdFx0dGhpcy5tYXRFeHBhbnNpb25QYW5lbFF1ZXJ5TGlzdD8uZmlyc3Q/LmFjY29yZGlvbj8uY2xvc2VBbGwoKTtcclxuXHJcblx0XHRcdFx0LyogT3BlbiB0aGUgbmV3IHBhbmVsICovXHJcblx0XHRcdFx0dGhpcy5tYXRFeHBhbnNpb25QYW5lbFF1ZXJ5TGlzdD8udG9BcnJheSgpW25ld0V4cGFuc2lvblBhbmVsSW5kZXhdPy5vcGVuKCk7XHJcblxyXG5cdFx0XHRcdC8qIERldGVjdCBjaGFuZ2VzICovXHJcblx0XHRcdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0LyogRmluZCB0aGUgaW5kZXggb2YgdGhlIHBhbmVsIHdpdGggdGhlIHNwZWNpZmllZCBlbGVtZW50IElEICovXHJcblx0XHRcdFx0dGhpcy51cmxIYXNoPy5zcGxpdCgnLicpXHJcblx0XHRcdFx0XHQ/LnJlZHVjZSgoYWNjdW11bGF0b3IsIGN1cnJlbnRWYWx1ZSwgaW5kZXgpID0+IGFjY3VtdWxhdG9yLmNvbmNhdCgoaW5kZXggPiAwID8gKGFjY3VtdWxhdG9yLnNsaWNlKC0xKS5qb2luKCcuJykgKyAnLicpIDogJycpICsgY3VycmVudFZhbHVlKSwgW10pXHJcblx0XHRcdFx0XHQ/LmZvckVhY2goKGhhc2g6IHN0cmluZykgPT4ge1xyXG5cdFx0XHRcdFx0XHR2YXIgZXhwYW5zaW9uUGFuZWxJbmRleCA9IHRoaXMubWF0RXhwYW5zaW9uUGFuZWxFbGVtZW50UXVlcnlMaXN0Py50b0FycmF5KCk/LmZpbmRJbmRleCh4ID0+IHgubmF0aXZlRWxlbWVudC5pZCA9PSBoYXNoKTtcclxuXHRcdFx0XHRcdFx0aWYgKGV4cGFuc2lvblBhbmVsSW5kZXggPj0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMubWF0RXhwYW5zaW9uUGFuZWxRdWVyeUxpc3Q/LnRvQXJyYXkoKVtleHBhbnNpb25QYW5lbEluZGV4XT8ub3BlbigpO1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogRGV0ZWN0IGNoYW5nZXMgZm9yIG9wZW5lZCBwYW5lbHMgKi9cclxuXHRcdFx0dGhpcy5tYXRFeHBhbnNpb25QYW5lbFF1ZXJ5TGlzdD8uZm9yRWFjaCh5ID0+IHtcclxuXHRcdFx0XHR0aGlzLm1hdEV4cGFuc2lvblBhbmVsU3Vic2NyaXB0aW9ucy5wdXNoKHkub3BlbmVkLnN1YnNjcmliZShfID0+IHtcclxuXHRcdFx0XHRcdGlmICh0aGlzLnNldFVybEhhc2gpIHtcclxuXHRcdFx0XHRcdFx0LyogR2V0IHRoZSBpZCBvZiB0aGUgY3VycmVudCBvcGVuZWQgcGFuZWwgKi9cclxuXHRcdFx0XHRcdFx0dmFyIGN1cnJlbnRQYW5lbElkID0geVsnX3ZpZXdDb250YWluZXJSZWYnXT8uZWxlbWVudD8ubmF0aXZlRWxlbWVudD8uaWQ7XHJcblxyXG5cdFx0XHRcdFx0XHQvKiBJZiB0aGUgcGFuZWwgSUQgaXMgc2V0LCBzZXQgaXQgYXMgdXJsIHNlZ21lbnQgKGhhc2gpICovXHJcblx0XHRcdFx0XHRcdGlmIChjdXJyZW50UGFuZWxJZCkge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7IGZyYWdtZW50OiBjdXJyZW50UGFuZWxJZCwgcmVwbGFjZVVybDogdHJ1ZSB9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0LyogT3RoZXJ3aXNlIHJlbW92ZSB0aGUgc2VnbWVudCBmcm9tIHRoZSB1cmwgKi9cclxuXHRcdFx0XHRcdFx0ZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHsgcmVwbGFjZVVybDogdHJ1ZSB9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdC8qIERldGVjdCBjaGFuZ2VzICovXHJcblx0XHRcdFx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHRcdFx0XHR9KSk7XHJcblxyXG5cdFx0XHRcdC8qIERldGVjdCBjaGFuZ2VzIGZvciBjbG9zZWQgcGFuZWxzICovXHJcblx0XHRcdFx0dGhpcy5tYXRFeHBhbnNpb25QYW5lbFN1YnNjcmlwdGlvbnMucHVzaCh5LmNsb3NlZC5zdWJzY3JpYmUoXyA9PiB7XHJcblx0XHRcdFx0XHRpZiAodGhpcy5zZXRVcmxIYXNoKSB7XHJcblx0XHRcdFx0XHRcdC8qIEdldCB0aGUgaWQgb2YgdGhlIGN1cnJlbnQgb3BlbmVkIHBhbmVsICovXHJcblx0XHRcdFx0XHRcdHZhciBjdXJyZW50UGFuZWxJZFBhcnRzID0geVsnX3ZpZXdDb250YWluZXJSZWYnXT8uZWxlbWVudD8ubmF0aXZlRWxlbWVudD8uaWQ/LnNwbGl0KCcuJyk7XHJcblxyXG5cdFx0XHRcdFx0XHQvKiBJZiB0aGUgcGFuZWwgSUQgaXMgc2V0LCBzZXQgaXQgYXMgdXJsIHNlZ21lbnQgKGhhc2gpICovXHJcblx0XHRcdFx0XHRcdGlmIChjdXJyZW50UGFuZWxJZFBhcnRzLmxlbmd0aCA+IDEpIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwgeyBmcmFnbWVudDogY3VycmVudFBhbmVsSWRQYXJ0cy5zbGljZSgwLCAtMSkuam9pbignLicpLCByZXBsYWNlVXJsOiB0cnVlIH0pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0LyogRGV0ZWN0IGNoYW5nZXMgKi9cclxuXHRcdFx0XHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0XHRcdH0pKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHJcblx0XHQvKiBOb3RpZnkgZXhwYW5zaW9uIHBhbmVsIGxpc3QgY2hhbmdlcyAqL1xyXG5cdFx0dGhpcy5tYXRFeHBhbnNpb25QYW5lbFF1ZXJ5TGlzdC5ub3RpZnlPbkNoYW5nZXMoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJldHJpZXZlcyBhbiBpbnN0YW5jZSBmcm9tIHRoZSBpbmplY3RvciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdG9rZW4uXHJcblx0ICogSWYgbm90IGZvdW5kOlxyXG5cdCAqIC0gVGhyb3dzIHtAbGluayBOb1Byb3ZpZGVyRXJyb3J9IGlmIG5vIGBub3RGb3VuZFZhbHVlYCB0aGF0IGlzIG5vdCBlcXVhbCB0b1xyXG5cdCAqIEluamVjdG9yLlRIUk9XX0lGX05PVF9GT1VORCBpcyBnaXZlblxyXG5cdCAqIC0gUmV0dXJucyB0aGUgYG5vdEZvdW5kVmFsdWVgIG90aGVyd2lzZVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBnZXRTZXJ2aWNlPFQ+KHRva2VuOiBUeXBlPFQ+KTogVCB7XHJcblx0XHRyZXR1cm4gU2VydmljZUxvY2F0b3IuZ2V0U2VydmljZSh0b2tlbik7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIGJhc2Ugcm91dGVcclxuXHQgKiBAcGFyYW0gc25hcHNob3QgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGdldE1haW5Sb3V0ZShzbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IEFjdGl2YXRlZFJvdXRlU25hcHNob3Qge1xyXG5cdFx0aWYgKHNuYXBzaG90ICYmICFzbmFwc2hvdC5kYXRhLm1lbnUpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuZ2V0TWFpblJvdXRlKHNuYXBzaG90LnBhcmVudCk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHNuYXBzaG90O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2hvd3MgYSBjb25maXJtIGRpYWxvZyB0byBkZWxldGUgYW4gaXRlbSBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc2hvd0RlbGV0ZUl0ZW1EaWFsb2coKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbkNvbmZpcm0oe1xyXG5cdFx0XHRtZXNzYWdlOiAkbG9jYWxpemVgOkBAZGlhbG9nLm1lc3NhZ2UuZGVsZXRlLm9uZTpBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgaXRlbT9gLFxyXG5cdFx0XHR0aXRsZTogJGxvY2FsaXplYDpAQGRpYWxvZy50aXRsZS5kZWxldGU6Q29uZmlybSBEZWxldGVgLFxyXG5cdFx0XHRjYW5jZWxCdXR0b246ICRsb2NhbGl6ZWA6QEBjYW5jZWw6Q2FuY2VsYCxcclxuXHRcdFx0YWNjZXB0QnV0dG9uOiAkbG9jYWxpemVgOkBAZGVsZXRlOkRlbGV0ZWAsXHJcblx0XHR9KS5hZnRlckNsb3NlZCgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2hvd3MgYSBjb25maXJtIGRpYWxvZyB0byBkZWxldGUgbXVsdGlwbGUgaXRlbXNcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc2hvd0RlbGV0ZUl0ZW1zRGlhbG9nKCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW5Db25maXJtKHtcclxuXHRcdFx0bWVzc2FnZTogJGxvY2FsaXplYDpAQGRpYWxvZy5tZXNzYWdlLmRlbGV0ZS5saXN0OkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhlIHNlbGVjdGVkIGl0ZW1zP2AsXHJcblx0XHRcdHRpdGxlOiAkbG9jYWxpemVgOkBAZGlhbG9nLnRpdGxlLmRlbGV0ZTpDb25maXJtIERlbGV0ZWAsXHJcblx0XHRcdGNhbmNlbEJ1dHRvbjogJGxvY2FsaXplYDpAQGNhbmNlbDpDYW5jZWxgLFxyXG5cdFx0XHRhY2NlcHRCdXR0b246ICRsb2NhbGl6ZWA6QEBkZWxldGU6RGVsZXRlYCxcclxuXHRcdH0pLmFmdGVyQ2xvc2VkKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTaG93cyBhIGNvbmZpcm0gZGlhbG9nIHRvIHNlbmQgc29tZSBkYXRhXHJcblx0ICogQHBhcmFtIG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gZGlzcGxheVxyXG5cdCAqIEBwYXJhbSBvYnNlcnZhYmUgVGhlIG9ic2VydmFibGUgaW5zdGFuY2VcclxuXHQgKiBAcGFyYW0gc3VjY2Vzc0NhbGxiYWNrIEEgc3VjY2VzcyBjYWxsYmFja1xyXG5cdCAqIEBwYXJhbSBlcnJvckNhbGxiYWNrIEFuIGVycm9yIGNhbGxiYWNrXHJcblx0ICovXHJcblx0cHVibGljIHNob3dDb25maXJtYXRpb25EaWFsb2cobWVzc2FnZTogc3RyaW5nLCBvYnNlcnZhYmU6IE9ic2VydmFibGU8YW55Piwgc3VjY2Vzc0NhbGxiYWNrOiBGdW5jdGlvbiA9IG51bGwsIGVycm9yQ2FsbGJhY2s6IEZ1bmN0aW9uID0gbnVsbCk6IHZvaWQge1xyXG5cdFx0dGhpcy5kaWFsb2dTZXJ2aWNlXHJcblx0XHRcdC5vcGVuQ29uZmlybSh7XHJcblx0XHRcdFx0bWVzc2FnZTogbWVzc2FnZSxcclxuXHRcdFx0XHR0aXRsZTogJGxvY2FsaXplYDpAQGRpYWxvZy50aXRsZS5jb25maXJtOkNvbmZpcm1gLFxyXG5cdFx0XHRcdGNhbmNlbEJ1dHRvbjogJGxvY2FsaXplYDpAQGNhbmNlbDpDYW5jZWxgLFxyXG5cdFx0XHRcdGFjY2VwdEJ1dHRvbjogJGxvY2FsaXplYDpAQG9rOk9rYCxcclxuXHRcdFx0fSlcclxuXHRcdFx0LmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChhY2NlcHQ6IGJvb2xlYW4pID0+IHtcclxuXHRcdFx0XHRpZiAoYWNjZXB0KSB7XHJcblx0XHRcdFx0XHRvYnNlcnZhYmUuc3Vic2NyaWJlKHggPT4ge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNob3dNZXNzYWdlKCRsb2NhbGl6ZWA6QEBzbmFja2Jhci5zZW5kLnN1Y2Nlc3M6RGF0YSBzZW50IHN1Y2Nlc3NmdWxseS5gKTtcclxuXHJcblx0XHRcdFx0XHRcdGlmIChzdWNjZXNzQ2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdFx0XHRzdWNjZXNzQ2FsbGJhY2soeCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sIGVycm9ycyA9PiB7XHJcblx0XHRcdFx0XHRcdHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRcdFx0aWYgKGVycm9yQ2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdFx0XHRlcnJvckNhbGxiYWNrKGVycm9ycyk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBOYXZpZ2F0ZXMgdG8gdGhlIGFkZCBwYWdlLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBvcGVuRGlhbG9nPFQsIEQgPSBhbnk+KGRpYWxvZ1R5cGU6IFR5cGU8VD4sIGNvbmZpZzogTWF0RGlhbG9nQ29uZmlnPEQ+LCBjYWxsYmFjazogRnVuY3Rpb24pOiB2b2lkIHtcclxuXHRcdHRoaXMuZGlhbG9nLm9wZW4oZGlhbG9nVHlwZSwgT2JqZWN0LmFzc2lnbih7IHdpZHRoOiAnNjUwcHgnLCBkYXRhOiB7fSwgcGFuZWxDbGFzczogWydkaWFsb2ctZnVsbC1zY3JlZW4nXSB9LCBjb25maWcpKVxyXG5cdFx0XHQuYWZ0ZXJDbG9zZWQoKVxyXG5cdFx0XHQuc3Vic2NyaWJlKF8gPT4gY2FsbGJhY2soKSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTaG93cyBhIG1lc3NhZ2VcclxuXHQgKiBAcGFyYW0gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBkaXNwbGF5XHJcblx0ICogQHBhcmFtIHR5cGUgVGhlIHR5cGUgb2YgdGhlIG1lc3NhZ2VcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc2hvd01lc3NhZ2UobWVzc2FnZT86IHN0cmluZywgdHlwZTogTWVzc2FnZVR5cGUgPSBNZXNzYWdlVHlwZS5TdWNjZXNzKTogdm9pZCB7XHJcblx0XHR2YXIgc25hY2tCYXJDbGFzcyA9ICdwcmltYXJ5JztcclxuXHRcdHN3aXRjaCAodHlwZSkge1xyXG5cdFx0XHRjYXNlIE1lc3NhZ2VUeXBlLlN1Y2Nlc3M6XHJcblx0XHRcdFx0c25hY2tCYXJDbGFzcyA9ICdwcmltYXJ5JztcclxuXHRcdFx0XHRicmVhaztcclxuXHJcblx0XHRcdGNhc2UgTWVzc2FnZVR5cGUuV2FybmluZzpcclxuXHRcdFx0XHRzbmFja0JhckNsYXNzID0gJ3dhcm4nO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cclxuXHRcdFx0Y2FzZSBNZXNzYWdlVHlwZS5FcnJvcjpcclxuXHRcdFx0XHRzbmFja0JhckNsYXNzID0gJ2Vycm9yJztcclxuXHRcdFx0XHRicmVhaztcclxuXHJcblx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5zbmFja0JhclNlcnZpY2Uub3BlbihtZXNzYWdlIHx8ICRsb2NhbGl6ZWA6QEBzbmFja2Jhci5zZW5kLnN1Y2Nlc3M6RGF0YSBzZW50IHN1Y2Nlc3NmdWxseS5gLCBudWxsLCB7XHJcblx0XHRcdGR1cmF0aW9uOiAzMDAwLFxyXG5cdFx0XHRwYW5lbENsYXNzOiBbc25hY2tCYXJDbGFzc11cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSW5pdG9hbGl6ZXMgdGhlIHRpbnltY2UgZWRpdG9yXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGluaXRFZGl0b3IoZWRpdG9yQ29uZmlnOiBhbnkgPSB7fSkge1xyXG5cdFx0T2JqZWN0LmFzc2lnbih0aGlzLmVkaXRvckNvbmZpZywge1xyXG5cdFx0XHRzdWZmaXg6ICcubWluJyxcclxuXHRcdFx0c2tpbjogZmFsc2UsXHJcblx0XHRcdGhlaWdodDogJzE3MHB4JyxcclxuXHRcdFx0Y29udGVudF9jc3M6IGZhbHNlLFxyXG5cdFx0XHRwbHVnaW5zOiB0aGlzLmVkaXRvclBsdWdpbnMsXHJcblx0XHRcdHRvb2xiYXI6IHRoaXMuZWRpdG9yVG9vbGJhcixcclxuXHRcdFx0cGFzdGVfYXNfdGV4dDogdHJ1ZSxcclxuXHRcdFx0bGFuZ3VhZ2U6ICdkZScsXHJcblx0XHRcdGxhbmd1YWdlX3VybDogJy9hc3NldHMvdGlueW1jZS9sYW5ncy9kZS5qcycsXHJcblx0XHRcdGRvY3VtZW50X2Jhc2VfdXJsOiBgJHt0aGlzLmFwcFNldHRpbmcuYXBpVXJsfWZpbGUvYCxcclxuXHRcdFx0YXV0b21hdGljX3VwbG9hZHM6IHRydWUsXHJcblx0XHRcdHJlbGF0aXZlX3VybHM6IHRydWUsXHJcblx0XHRcdGNvbnZlcnRfdXJsczogZmFsc2UsXHJcblx0XHRcdGV4dGVuZGVkX3ZhbGlkX2VsZW1lbnRzOiAnc3BhbltpZHxjbGFzc3xzdHlsZV0sK0BbZGF0YS1vcHRpb25zXScsXHJcblx0XHRcdGFsbG93X2h0bWxfaW5fbmFtZWRfYW5jaG9yOiB0cnVlXHJcblx0XHR9LCBlZGl0b3JDb25maWcpO1xyXG5cclxuXHRcdHRoaXMuaXNFZGl0b3JJbml0aWFsemVkID0gdHJ1ZTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldHMgc3VidGl0bGUgZnJvbSBjdXJyZW4gbWVudVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBzZXRUaXRsZXMoKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5tZW51KSB7XHJcblx0XHRcdHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKHRoaXMubWVudS50aXRsZSk7XHJcblx0XHRcdHRoaXMudGl0bGUgPSB0aGlzLnRpdGxlU2VydmljZS5nZXRUaXRsZSgpO1xyXG5cclxuXHRcdFx0aWYgKCF0aGlzLm1lbnUuaXRlbXMpIHtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIEdldCBzdWJ0aXRsZSBmcm9tIHVybCBwYXJhbXMgKi9cclxuXHRcdFx0dmFyIHN1YnRpdGxlID0gdGhpcy5yb3V0ZT8uc25hcHNob3Q/LnBhcmFtTWFwPy5nZXQoJ3N1YnRpdGxlJyk7XHJcblx0XHRcdGlmIChzdWJ0aXRsZSkge1xyXG5cdFx0XHRcdHRyeSB7IHRoaXMuc3VidGl0bGUgPSBhdG9iKHN1YnRpdGxlKTsgfVxyXG5cdFx0XHRcdGNhdGNoIChlKSB7IHRoaXMuc3VidGl0bGUgPSBzdWJ0aXRsZTsgfVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdC8qIEdldCBjdXJyZW50IHJvdXRlICovXHJcblx0XHRcdFx0bGV0IGN1cnJlbnRSb3V0ZSA9IHRoaXMucm91dGVyLnVybC5zcGxpdCgnPycpWzBdPy5zcGxpdCgnOycpWzBdO1xyXG5cdFx0XHRcdHZhciBzdWJtZW51ID0gdGhpcy5tZW51Lml0ZW1zLmZpbHRlcih4ID0+IHgucGF0aCA9PSBjdXJyZW50Um91dGUpWzBdO1xyXG5cdFx0XHRcdGlmIChzdWJtZW51KSB7XHJcblx0XHRcdFx0XHR0aGlzLnN1YnRpdGxlID0gc3VibWVudS50aXRsZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIE5hdmlnYXRlIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBhcnJheSBvZiBjb21tYW5kcyBhbmQgYSBzdGFydGluZyBwb2ludC5cclxuXHQgKiBAcGFyYW0gY29tbWFuZHMgXHJcblx0ICovXHJcblx0cHVibGljIG5hdmlnYXRlKGNvbW1hbmRzOiBhbnlbXSwgcXVlcnlQYXJhbXM/OiBhbnksIGZyYWdtZW50Pzogc3RyaW5nLCBwcmVzZXJ2ZUZyYWdtZW50PzogYm9vbGVhbik6IHZvaWQge1xyXG5cdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoY29tbWFuZHMsIHtcclxuXHRcdFx0cXVlcnlQYXJhbXM6IE9iamVjdC5hc3NpZ24oeyByZXR1cm5Vcmw6IHRoaXMuY3VycmVudFJvdXRlIH0sIHF1ZXJ5UGFyYW1zIHx8IHt9KSxcclxuXHRcdFx0ZnJhZ21lbnQ6IGZyYWdtZW50LFxyXG5cdFx0XHRwcmVzZXJ2ZUZyYWdtZW50OiBwcmVzZXJ2ZUZyYWdtZW50LFxyXG5cdFx0XHRyZWxhdGl2ZVRvOiB0aGlzLnJvdXRlXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbnZlcnQgT2JqZWN0IHRvIEh0dHBIZWFkZXJzXHJcblx0ICogXHJcblx0ICogQHBhcmFtIGJvZHlcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgdG9IdHRwSGVhZGVycyhib2R5OiBPYmplY3QpOiBIdHRwSGVhZGVycyB7XHJcblx0XHRpZiAoIWJvZHkpIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBIdHRwSGVhZGVycygpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhib2R5KVxyXG5cdFx0XHQuZmlsdGVyKGtleSA9PiBib2R5W2tleV0gIT0gbnVsbCAmJiBib2R5W2tleV0gIT0gJycpXHJcblx0XHRcdC5yZWR1Y2UoKHAsIGtleSkgPT4gcC5zZXQoa2V5LCBib2R5W2tleV0pLCBuZXcgSHR0cEhlYWRlcnMoKSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBQYXJzZXMgaHR0cCByZXNwb25zZSBlcnJvcnNcclxuXHQgKiBAcGFyYW0gZXJyb3JzIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBwYXJzZUVycm9ycyhlcnJvcnM6IE9iamVjdCk6IHZvaWQge1xyXG5cdFx0dGhpcy5lcnJvcnMgPSBbXTtcclxuXHRcdHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcblx0XHR0aGlzLmlzU2F2aW5nID0gZmFsc2U7XHJcblxyXG5cdFx0aWYgKGVycm9ycykge1xyXG5cdFx0XHRPYmplY3Qua2V5cyhlcnJvcnMpLmZvckVhY2goZWwgPT4ge1xyXG5cdFx0XHRcdGxldCBlcnJvciA9IGVycm9yc1tlbF07XHJcblx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoZXJyb3IpKSB7XHJcblx0XHRcdFx0XHRlcnJvci5mb3JFYWNoKGVyciA9PiB7XHJcblx0XHRcdFx0XHRcdHRoaXMuZXJyb3JzLnB1c2goZXJyKTtcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGVycm9yID09PSBcInN0cmluZ1wiKSB7XHJcblx0XHRcdFx0XHR0aGlzLmVycm9ycy5wdXNoKGVycm9yKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSGFuZGxlIEh0dHAgb3BlcmF0aW9uIHRoYXQgZmFpbGVkLlxyXG5cdCAqIExldCB0aGUgYXBwIGNvbnRpbnVlLlxyXG5cdCAqIEBwYXJhbSBvcGVyYXRpb24gLSBuYW1lIG9mIHRoZSBvcGVyYXRpb24gdGhhdCBmYWlsZWRcclxuXHQgKiBAcGFyYW0gcmVzdWx0IC0gb3B0aW9uYWwgdmFsdWUgdG8gcmV0dXJuIGFzIHRoZSBvYnNlcnZhYmxlIHJlc3VsdFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBoYW5kbGVFcnJvcjxUPihvcGVyYXRpb24gPSAnb3BlcmF0aW9uJywgcmVzdWx0PzogVCkge1xyXG5cdFx0cmV0dXJuIChlcnJvcjogYW55KTogT2JzZXJ2YWJsZTxUPiA9PiB7XHJcblxyXG5cdFx0XHQvKiBQYXJzZSB0aGUgZXJyb3IgbWVzc2FnZXMgKi9cclxuXHRcdFx0dGhpcy5wYXJzZUVycm9ycyhlcnJvcik7XHJcblxyXG5cdFx0XHQvKiBMb2cgdG8gY29uc29sZSAqL1xyXG5cdFx0XHR0aGlzLndhcm4oYCR7b3BlcmF0aW9ufSBmYWlsZWQ6ICR7ZXJyb3IubWVzc2FnZX1gKTtcclxuXHJcblx0XHRcdC8qIExldCB0aGUgYXBwIGtlZXAgcnVubmluZyBieSByZXR1cm5pbmcgYW4gZW1wdHkgcmVzdWx0ICovXHJcblx0XHRcdHJldHVybiBvZihyZXN1bHQgYXMgVCk7XHJcblx0XHR9O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTG9nIHRvIGNvbnNvbGVcclxuXHQgKiBAcGFyYW0gbWVzc2FnZSBcclxuXHQgKiBAcGFyYW0gb3B0aW9uYWxQYXJhbXMgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGxvZyhtZXNzYWdlOiBhbnksIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSkge1xyXG5cdFx0aWYgKHRoaXMuZGVidWcpIHtcclxuXHRcdFx0Y29uc29sZS5sb2cobWVzc2FnZSwgb3B0aW9uYWxQYXJhbXMpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTG9nIHRvIGNvbnNvbGVcclxuXHQgKiBAcGFyYW0gbWVzc2FnZSBcclxuXHQgKiBAcGFyYW0gb3B0aW9uYWxQYXJhbXMgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHdhcm4obWVzc2FnZTogc3RyaW5nLCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pIHtcclxuXHRcdGlmICh0aGlzLmRlYnVnKSB7XHJcblx0XHRcdGNvbnNvbGUud2FybihtZXNzYWdlLCBvcHRpb25hbFBhcmFtcyk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDbGVhbnMgdGhlIG9iamVjdHNcclxuXHQgKiBSZW1vdmVzIGVtcHR5IHByb3BlcnRpZXNcclxuXHQgKiBAcGFyYW0gb2JqIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBjbGVhbihvYmo6IGFueSk6IGFueSB7XHJcblx0XHR0cnkge1xyXG5cdFx0XHRmb3IgKHZhciBwcm9wTmFtZSBpbiBvYmopIHtcclxuXHRcdFx0XHRpZiAob2JqW3Byb3BOYW1lXSA9PT0gbnVsbCB8fCBvYmpbcHJvcE5hbWVdID09PSB1bmRlZmluZWQgfHwgb2JqW3Byb3BOYW1lXSA9PT0gXCJcIikge1xyXG5cdFx0XHRcdFx0ZGVsZXRlIG9ialtwcm9wTmFtZV07XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9IGNhdGNoIChlcnJvcikgeyB9XHJcblxyXG5cdFx0cmV0dXJuIG9iajtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNhbml0aXplcyB0aGUgc3BlY2lmaWVkIG9iamVjdFxyXG5cdCAqIEBwYXJhbSBvYmogXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHNhbml0aXplT2JqZWN0KG9iajogYW55LCAuLi5pZ25vcmU6IHN0cmluZ1tdKTogYW55IHtcclxuXHRcdHJldHVybiBPYmplY3Qua2V5cyhvYmopXHJcblx0XHRcdC5maWx0ZXIoeCA9PiBvYmpbeF0pXHJcblx0XHRcdC5maWx0ZXIoeCA9PiAhKGlnbm9yZSB8fCBbXSkubWFwKHggPT4geC50b0xvd2VyQ2FzZSgpKS5pbmNsdWRlcyh4LnRvTG93ZXJDYXNlKCkpKVxyXG5cdFx0XHQucmVkdWNlKChyZXN1bHQsIGtleSkgPT4ge1xyXG5cdFx0XHRcdHJlc3VsdFtrZXldID0gaXNOYU4oK29ialtrZXldKSA/IG9ialtrZXldIDogK29ialtrZXldO1xyXG5cdFx0XHRcdHJldHVybiByZXN1bHQ7XHJcblx0XHRcdH0sIHt9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENoZWNrcyBpZiB0aGUgdXNlciBzZWxlY2V0ZWQgYW55IHRleHQgaW4gdGhlIGRvY3VtZW50XHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGlzVGV4dFNlbGVjdGVkID0gKCk6IGJvb2xlYW4gPT4gd2luZG93Py5nZXRTZWxlY3Rpb24oKT8udG9TdHJpbmcoKT8ubGVuZ3RoID4gMDtcclxuXHJcblx0LyoqXHJcblx0ICogQSBjYWxsYmFjayB1c2VkIGZvciBhbnkgY3VzdG9tIGNsZWFudXAgdGhhdCBuZWVkcyB0byBvY2N1clxyXG5cdCAqIHdoZW4gdGhlIGluc3RhbmNlIGlzIGRlc3Ryb3llZC5cclxuXHQgKi9cclxuXHRuZ09uRGVzdHJveSgpIHtcclxuXHRcdHRoaXMubWF0RXhwYW5zaW9uUGFuZWxTdWJzY3JpcHRpb25zLmZvckVhY2goeCA9PiB4LnVuc3Vic2NyaWJlKCkpO1xyXG5cdH1cclxufSJdfQ==
|
|
@@ -130,14 +130,15 @@ export class VdGenericFormComponent {
|
|
|
130
130
|
this.buildFields();
|
|
131
131
|
}
|
|
132
132
|
/* Get filed rows */
|
|
133
|
-
|
|
133
|
+
let fieldRows = this.fieldGroups?.filter(x => x.name?.trim() == this.groupName?.trim())[0]?.groups;
|
|
134
|
+
this.fieldRows = fieldRows.map(a => { return [...a.map(y => { return { ...y }; })]; });
|
|
134
135
|
/* Filter by field set */
|
|
135
136
|
if (this.fieldSets) {
|
|
136
137
|
this.fieldRows = this.fieldRows.map(x => x = x.filter(y => y.fieldSets?.some(z => this.fieldSets?.some(a => a?.trim()?.toLowerCase() == z?.trim()?.toLowerCase())))).filter(x => x.length);
|
|
137
138
|
}
|
|
138
139
|
/* Get all fields */
|
|
139
140
|
let fields = this.fieldRows?.reduce((a, b) => a.concat(b), []);
|
|
140
|
-
this.fields =
|
|
141
|
+
this.fields = fields.map(a => { return { ...a }; });
|
|
141
142
|
/* Subscrie to change event */
|
|
142
143
|
fields?.filter(y => y.type != FormFieldType.File && y.change)?.forEach(x => {
|
|
143
144
|
this.formGroup?.get(x.name)?.valueChanges?.subscribe(y => x.change(y, this.formGroup?.value, this.formGroup, this.context));
|
|
@@ -346,4 +347,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
|
|
|
346
347
|
type: ContentChildren,
|
|
347
348
|
args: [VdGenericFormCustomFieldDirective]
|
|
348
349
|
}] } });
|
|
349
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvZ2VuZXJpYy1mb3JtL2dlbmVyaWMtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3Jtcy9jb21wb25lbnRzL2dlbmVyaWMtZm9ybS9nZW5lcmljLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLFlBQVksRUFBaUIsV0FBVyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoTCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJM0MsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0seURBQXlELENBQUM7QUFDNUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUc5RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV0Rjs7R0FFRztBQUVILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxTQUFTO0lBQzVDLFlBQVksV0FBNkIsRUFBRSxnQkFBa0M7UUFDekUs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QUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7O3NJQXRWUSxzQkFBc0I7MEhBQXRCLHNCQUFzQiwyWEFxRmpCLGlCQUFpQiwrRUFNakIsZUFBZSwrRUFNZixlQUFlLGlGQU1mLGlCQUFpQiw2UEF1QmQsaUNBQWlDLDZCQzFMdEQsdW54QkErUE07MkZEbk1PLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDSSxpQkFBaUI7OEJBU3BCLFNBQVM7c0JBRGYsS0FBSztnQkFZQyxTQUFTO3NCQURmLEtBQUs7Z0JBT0MsY0FBYztzQkFEcEIsS0FBSztnQkFPQyxXQUFXO3NCQURqQixLQUFLO2dCQU9DLFNBQVM7c0JBRGYsS0FBSztnQkFPQyxTQUFTO3NCQURmLEtBQUs7Z0JBUUMsT0FBTztzQkFEYixLQUFLO2dCQU9DLFVBQVU7c0JBRGhCLEtBQUs7Z0JBT0MsUUFBUTtzQkFEZCxLQUFLO2dCQU9DLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFzQkMsY0FBYztzQkFEcEIsWUFBWTt1QkFBQyxpQkFBaUI7Z0JBT3hCLFlBQVk7c0JBRGxCLFlBQVk7dUJBQUMsZUFBZTtnQkFPdEIsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxlQUFlO2dCQU90QixjQUFjO3NCQURwQixZQUFZO3VCQUFDLGlCQUFpQjtnQkFZeEIsTUFBTTtzQkFEWixZQUFZO3VCQUFDLFFBQVE7Z0JBT2YsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxjQUFjO2dCQU9yQixxQkFBcUI7c0JBRDNCLGVBQWU7dUJBQUMsaUNBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ09NTUEsIEVOVEVSIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcclxuaW1wb3J0IHsgQ2RrUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBDb250ZW50Q2hpbGRyZW4sIERpcmVjdGl2ZSwgSW5wdXQsIE9uSW5pdCwgUXVlcnlMaXN0LCBTaW1wbGVDaGFuZ2UsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmLCBUeXBlLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XHJcbmltcG9ydCB7IE1hdENoaXBJbnB1dEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xyXG5pbXBvcnQgeyBNYXRDYWxlbmRhciwgTWF0RGF0ZXBpY2tlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xyXG5pbXBvcnQgeyBWZEdlbmVyaWNGb3JtQ3VzdG9tRmllbGREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3ZkLWdlbmVyaWMtZm9ybS1jdXN0b20tZmllbGQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRm9ybUZpZWxkVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL2Zvcm0tZmllbGQtdHlwZSc7XHJcbmltcG9ydCB7IGdldEZvcm1EZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IEZvcm1EZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zvcm0tZGVmaW5pdGlvbic7XHJcbmltcG9ydCB7IEZvcm1GaWVsZERlZmluaXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvZm9ybS1maWVsZC1kZWZpbml0aW9uJztcclxuaW1wb3J0IHsgRm9ybUZpZWxkR3JvdXBEZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zvcm0tZmllbGQtZ3JvdXAtZGVmaW5pdGlvbic7XHJcbmltcG9ydCB7IERhdGVQaWNrZXJIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9kYXRlcGlja2VyL2RhdGVwaWNrZXItaGVhZGVyLmNvbXBvbmVudCc7XHJcblxyXG4vKipcclxuICogVmRFZGl0b3JEaXJlY3RpdmUgY2xhc3NcclxuICovXHJcbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1t2ZC1lZGl0b3JdbmctdGVtcGxhdGUnIH0pXHJcbmV4cG9ydCBjbGFzcyBWZEVkaXRvckRpcmVjdGl2ZSBleHRlbmRzIENka1BvcnRhbCB7XHJcbiAgICBjb25zdHJ1Y3Rvcih0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Piwgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG4gICAgICAgIHN1cGVyKHRlbXBsYXRlUmVmLCB2aWV3Q29udGFpbmVyUmVmKTtcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFZkQ29kZURpcmVjdGl2ZSBjbGFzc1xyXG4gKi9cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3ZkLWNvZGVdbmctdGVtcGxhdGUnIH0pXHJcbmV4cG9ydCBjbGFzcyBWZENvZGVEaXJlY3RpdmUgZXh0ZW5kcyBDZGtQb3J0YWwge1xyXG4gICAgY29uc3RydWN0b3IodGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHtcclxuICAgICAgICBzdXBlcih0ZW1wbGF0ZVJlZiwgdmlld0NvbnRhaW5lclJlZik7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBWZEZpbGVEaXJlY3RpdmUgY2xhc3NcclxuICovXHJcbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1t2ZC1maWxlXW5nLXRlbXBsYXRlJyB9KVxyXG5leHBvcnQgY2xhc3MgVmRGaWxlRGlyZWN0aXZlIGV4dGVuZHMgQ2RrUG9ydGFsIHtcclxuICAgIGNvbnN0cnVjdG9yKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XHJcbiAgICAgICAgc3VwZXIodGVtcGxhdGVSZWYsIHZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgfVxyXG59XHJcblxyXG4vKipcclxuICogVmRDdXN0b21EaXJlY3RpdmUgY2xhc3NcclxuICovXHJcbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1t2ZC1jdXN0b21dbmctdGVtcGxhdGUnIH0pXHJcbmV4cG9ydCBjbGFzcyBWZEN1c3RvbURpcmVjdGl2ZSBleHRlbmRzIENka1BvcnRhbCB7XHJcbiAgICBjb25zdHJ1Y3Rvcih0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Piwgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG4gICAgICAgIHN1cGVyKHRlbXBsYXRlUmVmLCB2aWV3Q29udGFpbmVyUmVmKTtcclxuICAgIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3ZkLWdlbmVyaWMtZm9ybScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZ2VuZXJpYy1mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2dlbmVyaWMtZm9ybS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWZEdlbmVyaWNGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIC8qKlxyXG4gICAgICogZm9ybTogRm9ybUdyb3VwXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb3JtIHJhdyB2YWx1ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGZvcm1WYWx1ZSgpOiBhbnkgeyByZXR1cm4gdGhpcy5mb3JtR3JvdXA/LmdldFJhd1ZhbHVlKCk7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGNsYXNzVHlwZTogVHlwZTxhbnk+XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY2xhc3NUeXBlOiBUeXBlPGFueT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBmb3JtRGVmaW5pdGlvbjogRm9ybURlZmluaXRpb25cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBmb3JtRGVmaW5pdGlvbjogRm9ybURlZmluaXRpb247XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBmaWVsZEdyb3VwczogRm9ybUZpZWxkR3JvdXBbXVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGZpZWxkR3JvdXBzOiBGb3JtRmllbGRHcm91cERlZmluaXRpb25bXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdyb3VwIG5hbWVcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBncm91cE5hbWU6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpZWxkIHNldCBuYW1lXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZmllbGRTZXRzOiBzdHJpbmdbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGNvbnRleHQ6IGFueVxyXG4gICAgICogVGhlIGN1cnJlbnQgY29udGV4dFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNvbnRleHQ6IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGRlYnVnVmFsdWU6IGJvb2xlYW5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBkZWJ1Z1ZhbHVlOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogcmVhZG9ubHk6IGJvb2xlYW5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogc2VwYXJhdG9yS2V5c0NvZGVzOiBudW1iZXJbXVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNlcGFyYXRvcktleXNDb2RlczogbnVtYmVyW10gPSBbRU5URVIsIENPTU1BXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGZpZWxkUm93czogRm9ybUZpZWxkRGVmaW5pdGlvbltdW11cclxuICAgICAqL1xyXG4gICAgcHVibGljIGZpZWxkUm93czogRm9ybUZpZWxkRGVmaW5pdGlvbltdW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBmaWVsZHM6IEZvcm1GaWVsZERlZmluaXRpb25bXVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZmllbGRzOiBGb3JtRmllbGREZWZpbml0aW9uW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb3JtRmllbGRUeXBlOiB0eXBlb2YgRm9ybUZpZWxkVHlwZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgRm9ybUZpZWxkVHlwZTogdHlwZW9mIEZvcm1GaWVsZFR5cGUgPSBGb3JtRmllbGRUeXBlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRWRpdG9yIHRlbXBsYXRlXHJcbiAgICAgKi9cclxuICAgIEBDb250ZW50Q2hpbGQoVmRFZGl0b3JEaXJlY3RpdmUpXHJcbiAgICBwdWJsaWMgZWRpdG9yVGVtcGxhdGU6IFZkRWRpdG9yRGlyZWN0aXZlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29kZSB0ZW1wbGF0ZVxyXG4gICAgICovXHJcbiAgICBAQ29udGVudENoaWxkKFZkQ29kZURpcmVjdGl2ZSlcclxuICAgIHB1YmxpYyBjb2RlVGVtcGxhdGU6IFZkQ29kZURpcmVjdGl2ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpbGUgdGVtcGxhdGVcclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZChWZEZpbGVEaXJlY3RpdmUpXHJcbiAgICBwdWJsaWMgZmlsZVRlbXBsYXRlOiBWZEZpbGVEaXJlY3RpdmU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDdXN0b20gdGVtcGxhdGVcclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZChWZEN1c3RvbURpcmVjdGl2ZSlcclxuICAgIHB1YmxpYyBjdXN0b21UZW1wbGF0ZTogVmRDdXN0b21EaXJlY3RpdmU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDdXN0b21lciBkYXRlIGhlYWRlclxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGF0ZVBpY2tlckhlYWRlckNvbXBvbmVudCA9IERhdGVQaWNrZXJIZWFkZXJDb21wb25lbnQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZW1wbGF0ZSByZWYgZm9yIGN1c3RvbSBmaWVsZHMgb24gdGhlIGJvdHRvbVxyXG4gICAgICovXHJcbiAgICBAQ29udGVudENoaWxkKCdib3R0b20nKVxyXG4gICAgcHVibGljIGJvdHRvbTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbXBsYXRlIHJlZiBmb3IgY3VzdG9tIGZpZWxkc1xyXG4gICAgICovXHJcbiAgICBAQ29udGVudENoaWxkKCdjdXN0b21GaWVsZHMnKVxyXG4gICAgcHVibGljIGN1c3RvbUZpZWxkczogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbXBsYXRlIHJlZiBmb3IgY3VzdG9tIGZpZWxkcyBvbiB0aGUgYm90dG9tXHJcbiAgICAgKi9cclxuICAgIEBDb250ZW50Q2hpbGRyZW4oVmRHZW5lcmljRm9ybUN1c3RvbUZpZWxkRGlyZWN0aXZlKVxyXG4gICAgcHVibGljIGN1c3RvbUZpZWxkc1RlbXBsYXRlczogUXVlcnlMaXN0PFZkR2VuZXJpY0Zvcm1DdXN0b21GaWVsZERpcmVjdGl2ZT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaWx0ZXJkIG9wdGlvbnMgZm9yIGF1dG9jb21wbGV0ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXV0b2NvbXBsZXRlRmlsdGVyZWRPcHRpb25zOiB7fSA9IHt9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQSBjYWxsYmFjayBtZXRob2QgdGhhdCBpcyBpbnZva2VkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZVxyXG4gICAgICogZGVmYXVsdCBjaGFuZ2UgZGV0ZWN0b3IgaGFzIGNoZWNrZWQgdGhlIGRpcmVjdGl2ZSdzXHJcbiAgICAgKiBkYXRhLWJvdW5kIHByb3BlcnRpZXMgZm9yIHRoZSBmaXJzdCB0aW1lLFxyXG4gICAgICogYW5kIGJlZm9yZSBhbnkgb2YgdGhlIHZpZXcgb3IgY29udGVudCBjaGlsZHJlbiBoYXZlIGJlZW4gY2hlY2tlZC5cclxuICAgICAqIEl0IGlzIGludm9rZWQgb25seSBvbmNlIHdoZW4gdGhlIGRpcmVjdGl2ZSBpcyBpbnN0YW50aWF0ZWQuXHJcbiAgICAgKi9cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIC8qIEJ1aWxkIHRoZSBmb3JtIGZpZWxkcyAqL1xyXG4gICAgICAgIGlmICh0aGlzLmNsYXNzVHlwZSAmJiAhdGhpcy5maWVsZEdyb3Vwcykge1xyXG4gICAgICAgICAgICB0aGlzLmJ1aWxkRmllbGRzKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBHZXQgZmlsZWQgcm93cyAqL1xyXG4gICAgICAgIHRoaXMuZmllbGRSb3dzID0gdGhpcy5maWVsZEdyb3Vwcz8uZmlsdGVyKHggPT4geC5uYW1lPy50cmltKCkgPT0gdGhpcy5ncm91cE5hbWU/LnRyaW0oKSlbMF0/Lmdyb3VwcztcclxuXHJcbiAgICAgICAgLyogRmlsdGVyIGJ5IGZpZWxkIHNldCAqL1xyXG4gICAgICAgIGlmICh0aGlzLmZpZWxkU2V0cykge1xyXG4gICAgICAgICAgICB0aGlzLmZpZWxkUm93cyA9IHRoaXMuZmllbGRSb3dzLm1hcCh4ID0+IHggPSB4LmZpbHRlcih5ID0+IHkuZmllbGRTZXRzPy5zb21lKHogPT4gdGhpcy5maWVsZFNldHM/LnNvbWUoYSA9PiBhPy50cmltKCk/LnRvTG93ZXJDYXNlKCkgPT0gej8udHJpbSgpPy50b0xvd2VyQ2FzZSgpKSkpKS5maWx0ZXIoeCA9PiB4Lmxlbmd0aCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBHZXQgYWxsIGZpZWxkcyAqL1xyXG4gICAgICAgIGxldCBmaWVsZHMgPSB0aGlzLmZpZWxkUm93cz8ucmVkdWNlKChhLCBiKSA9PiBhLmNvbmNhdChiKSwgW10pO1xyXG4gICAgICAgIHRoaXMuZmllbGRzID0gWy4uLmZpZWxkc107XHJcblxyXG4gICAgICAgIC8qIFN1YnNjcmllIHRvIGNoYW5nZSBldmVudCAqL1xyXG4gICAgICAgIGZpZWxkcz8uZmlsdGVyKHkgPT4geS50eXBlICE9IEZvcm1GaWVsZFR5cGUuRmlsZSAmJiB5LmNoYW5nZSk/LmZvckVhY2goeCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwPy5nZXQoeC5uYW1lKT8udmFsdWVDaGFuZ2VzPy5zdWJzY3JpYmUoeSA9PiB4LmNoYW5nZSh5LCB0aGlzLmZvcm1Hcm91cD8udmFsdWUsIHRoaXMuZm9ybUdyb3VwLCB0aGlzLmNvbnRleHQpKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLyogVXBkYXRlIHNvbWUgdmFsdWVzIChsYWJlbCwgdHlwZSwgLi4uKSAqL1xyXG4gICAgICAgIGZpZWxkcy5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgICAgICB2YXIgb3JnRmllbGQgPSB0aGlzLmZpZWxkcy5maWx0ZXIoeSA9PiB5Lm5hbWUgPT0geC5uYW1lKVswXTtcclxuXHJcbiAgICAgICAgICAgIC8qIEdldCB0aGUgdHlwZSBhbmQgdGhlIGxhYmVsIG9mIHRoZSBmaWVsZCAqL1xyXG4gICAgICAgICAgICBsZXQgdHlwZSA9IG9yZ0ZpZWxkPy50eXBlO1xyXG4gICAgICAgICAgICBsZXQgbGFiZWwgPSBvcmdGaWVsZD8ubGFiZWw7XHJcblxyXG4gICAgICAgICAgICAvKiBSZW5kZXIgdGhlIGZpZWxkIHR5cGUgKi9cclxuICAgICAgICAgICAgeC50eXBlID0gKHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nKSA/IHR5cGUodGhpcy5mb3JtVmFsdWUsIHRoaXMuZm9ybUdyb3VwLCB0aGlzLmNvbnRleHQpIDogeC50eXBlO1xyXG5cclxuICAgICAgICAgICAgLyogUmVuZGVyIHRoZSBmaWVsZCBsYWJlbCAqL1xyXG4gICAgICAgICAgICB4LmxhYmVsID0gKHR5cGVvZiBsYWJlbCA9PT0gJ2Z1bmN0aW9uJykgPyBsYWJlbCh0aGlzLmZvcm1WYWx1ZSwgdGhpcy5mb3JtR3JvdXAsIHRoaXMuY29udGV4dCkgOiB4LmxhYmVsO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXA/LnZhbHVlQ2hhbmdlcz8uc3Vic2NyaWJlKHkgPT4ge1xyXG4gICAgICAgICAgICAgICAgLyogUmVuZGVyIHRoZSBmaWVsZCB0eXBlICovXHJcbiAgICAgICAgICAgICAgICB4LnR5cGUgPSAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpID8gdHlwZSh5LCB0aGlzLmZvcm1Hcm91cCwgdGhpcy5jb250ZXh0KSA6IHgudHlwZTtcclxuXHJcbiAgICAgICAgICAgICAgICAvKiBSZW5kZXIgdGhlIGZpZWxkIGxhYmVsICovXHJcbiAgICAgICAgICAgICAgICB4LmxhYmVsID0gKHR5cGVvZiBsYWJlbCA9PT0gJ2Z1bmN0aW9uJykgPyBsYWJlbCh5LCB0aGlzLmZvcm1Hcm91cCwgdGhpcy5jb250ZXh0KSA6IHgubGFiZWw7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGFuZGxlcyBhdXRvY29tcGxldGUgZXZlbnRcclxuICAgICAqIEBwYXJhbSBmaWVsZCBcclxuICAgICAqIEBwYXJhbSBldmVudCBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGZpbHRlckF1dG9jb21wbGV0ZShmaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbiwgZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlRmlsdGVyZWRPcHRpb25zW2ZpZWxkLm5hbWVdID0gZmllbGQub3B0aW9ucz8uZmlsdGVyKG9wdGlvbiA9PiBvcHRpb24ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnZhbHVlPy50b1N0cmluZygpPy50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGEgY2hpcCB3aGVuIGEgYXV0b2NvbXBsZXRlIHZhbHVlIGlzIHNlbGVjdGVkXHJcbiAgICAgKiBAcGFyYW0gZmllbGQgXHJcbiAgICAgKiBAcGFyYW0gZXZlbnQgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhdXRvY29tcGxldGVWYWx1ZVNlbGVjdGVkKGZpZWxkOiBGb3JtRmllbGREZWZpbml0aW9uLCBldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCwgY2hpcElucHV0RXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2FkZENoaXAoZmllbGQsIGV2ZW50Lm9wdGlvbi52aWV3VmFsdWUpO1xyXG4gICAgICAgIGNoaXBJbnB1dEV2ZW50LnZhbHVlID0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGEgY2hpcFxyXG4gICAgICogQHBhcmFtIGZpZWxkIFxyXG4gICAgICogQHBhcmFtIGV2ZW50IFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkQ2hpcChmaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbiwgZXZlbnQ6IE1hdENoaXBJbnB1dEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fYWRkQ2hpcChmaWVsZCwgZXZlbnQudmFsdWUpO1xyXG4gICAgICAgIGV2ZW50LmNoaXBJbnB1dCEuY2xlYXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZXMgYSBjaGlwXHJcbiAgICAgKiBAcGFyYW0gZmllbGQgXHJcbiAgICAgKiBAcGFyYW0gY2hpcCBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlbW92ZUNoaXAoZmllbGQ6IEZvcm1GaWVsZERlZmluaXRpb24sIGNoaXA6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIC8qIEdldCB0aGUgZm9ybSBjb250cm9sIHVzaW5nIHRoZSBmaWVsZCBuYW1lICovXHJcbiAgICAgICAgbGV0IGNvbnRyb2wgPSB0aGlzLmZvcm1Hcm91cD8uY29udHJvbHNbZmllbGQubmFtZV07XHJcblxyXG4gICAgICAgIC8qIEdldCB0aGUgaW5kZXggb2YgdGhlIGNoaXAgKi9cclxuICAgICAgICBjb25zdCBpbmRleCA9IGNvbnRyb2wudmFsdWUuaW5kZXhPZihjaGlwKTtcclxuICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICAgICAgICBjb250cm9sLnZhbHVlLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBhIGNoaXBcclxuICAgICAqIEBwYXJhbSBmaWVsZCBcclxuICAgICAqIEBwYXJhbSB2YWx1ZSBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfYWRkQ2hpcChmaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbiwgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIC8qIEdldCB0aGUgZm9ybSBjb250cm9sIHVzaW5nIHRoZSBmaWVsZCBuYW1lICovXHJcbiAgICAgICAgbGV0IGNvbnRyb2wgPSB0aGlzLmZvcm1Hcm91cD8uY29udHJvbHNbZmllbGQubmFtZV07XHJcblxyXG4gICAgICAgIC8qIEdldCB0aGUgdmFsdWUgb2YgdGhlIGNoaXAgKi9cclxuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSB8fCAnJykudHJpbSgpO1xyXG4gICAgICAgIGlmIChjb250cm9sICYmIHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAoZmllbGQuaW5wdXRUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdudW1iZXInOlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBudW1iZXIgPSBwYXJzZUludCh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG51bWJlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLnZhbHVlLnB1c2gobnVtYmVyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICAgICAgY2FzZSAnZmxvYXQnOlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBmbG9hdCA9IHBhcnNlRmxvYXQodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmbG9hdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLnZhbHVlLnB1c2goZmxvYXQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wudmFsdWUucHVzaCh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGFuZGxlcyBkYXRlIHBpY2tlciBvcGVuZWQgZXZlbnRcclxuICAgICAqIEBwYXJhbSBkYXRlUGlja2VyIFxyXG4gICAgICogQHBhcmFtIGZpZWxkIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGFuZGxlRGF0ZVBpY2tlck9wZW5lZChkYXRlUGlja2VyOiBNYXREYXRlcGlja2VyPGFueT4sIGZpZWxkOiBGb3JtRmllbGREZWZpbml0aW9uKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGZpZWxkPy5kYXRlUGlja2VyT3BlbmVkKSB7XHJcbiAgICAgICAgICAgIGZpZWxkLmRhdGVQaWNrZXJPcGVuZWQoZGF0ZVBpY2tlciwgdGhpcy5mb3JtR3JvdXA/LnZhbHVlLCB0aGlzLmZvcm1Hcm91cCwgdGhpcy5jb250ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIYW5kbGVzIGRhdGUgZmlsdGVyIGV2ZW50XHJcbiAgICAgKiBAcGFyYW0gZGF0ZVBpY2tlciBcclxuICAgICAqIEBwYXJhbSBmaWVsZCBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGhhbmRsZURhdGVQaWNrZXJGaWx0ZXJBc3luYyhkYXRlUGlja2VyOiBNYXREYXRlcGlja2VyPGFueT4sIGZpZWxkOiBGb3JtRmllbGREZWZpbml0aW9uLCBkYXRlOiBEYXRlIHwgYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGZpZWxkPy5kYXRlRmlsdGVyQXN5bmMpIHtcclxuICAgICAgICAgICAgLyogRGlzYWJsZXMgYWxsIGRhdGVzICovXHJcbiAgICAgICAgICAgIGRhdGVQaWNrZXIuZGF0ZXBpY2tlcklucHV0LmRhdGVGaWx0ZXIgPSAoZDogRGF0ZSkgPT4gZmFsc2U7XHJcbiAgICAgICAgICAgIGRhdGVQaWNrZXIubmdPbkNoYW5nZXMoPFNpbXBsZUNoYW5nZXM+eyAnZGF0ZUZpbHRlcic6IG5ldyBTaW1wbGVDaGFuZ2UoXCJcIiwgXCJcIiwgZmFsc2UpIH0pO1xyXG5cclxuICAgICAgICAgICAgLyogVmFsaWRhdGUgZGF0ZSBhc3luY2x5LiAqL1xyXG4gICAgICAgICAgICBmaWVsZC5kYXRlRmlsdGVyQXN5bmMoZGF0ZSwgdGhpcy5mb3JtR3JvdXA/LnZhbHVlLCB0aGlzLmZvcm1Hcm91cCwgdGhpcy5jb250ZXh0KS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgICAgICBkYXRlUGlja2VyLmRhdGVwaWNrZXJJbnB1dC5kYXRlRmlsdGVyID0gKGQ6IERhdGUpID0+IGQgJiYgeChkKTtcclxuICAgICAgICAgICAgICAgIGRhdGVQaWNrZXIubmdPbkNoYW5nZXMoPFNpbXBsZUNoYW5nZXM+eyAnZGF0ZUZpbHRlcic6IG5ldyBTaW1wbGVDaGFuZ2UoXCJcIiwgXCJcIiwgZmFsc2UpIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIYW5kbGVzIGNhbGVuZGFyIGZpbHRlciBldmVudFxyXG4gICAgICogQHBhcmFtIGNhbGVuZGFyIFxyXG4gICAgICogQHBhcmFtIGZpZWxkIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGFuZGxlQ2FsZW5kYXJGaWx0ZXJBc3luYyhjYWxlbmRhcjogTWF0Q2FsZW5kYXI8YW55PiwgZmllbGQ6IEZvcm1GaWVsZERlZmluaXRpb24sIGRhdGU6IERhdGUgfCBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAoZmllbGQ/LmRhdGVGaWx0ZXJBc3luYykge1xyXG4gICAgICAgICAgICAvKiBEaXNhYmxlcyBhbGwgZGF0ZXMgKi9cclxuICAgICAgICAgICAgY2FsZW5kYXIuZGF0ZUZpbHRlciA9IChkOiBEYXRlKSA9PiBmYWxzZTtcclxuICAgICAgICAgICAgY2FsZW5kYXIubmdPbkNoYW5nZXMoPFNpbXBsZUNoYW5nZXM+eyAnZGF0ZUZpbHRlcic6IG5ldyBTaW1wbGVDaGFuZ2UoXCJcIiwgXCJcIiwgZmFsc2UpIH0pO1xyXG5cclxuICAgICAgICAgICAgLyogVmFsaWRhdGUgZGF0ZSBhc3luY2x5LiAqL1xyXG4gICAgICAgICAgICB2YXIgc3Vic2NyaXB0aW9uID0gZmllbGQuZGF0ZUZpbHRlckFzeW5jKGRhdGUsIHRoaXMuZm9ybUdyb3VwPy52YWx1ZSwgdGhpcy5mb3JtR3JvdXAsIHRoaXMuY29udGV4dCkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgICAgICAgY2FsZW5kYXIuZGF0ZUZpbHRlciA9IChkOiBEYXRlKSA9PiBkICYmIHgoZCk7XHJcbiAgICAgICAgICAgICAgICBjYWxlbmRhci5uZ09uQ2hhbmdlcyg8U2ltcGxlQ2hhbmdlcz57ICdkYXRlRmlsdGVyJzogbmV3IFNpbXBsZUNoYW5nZShcIlwiLCBcIlwiLCBmYWxzZSkgfSk7XHJcbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQnVpbGRzIHRoZSBmb3JtIGZpZWxkc1xyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgYnVpbGRGaWVsZHMoKTogdm9pZCB7XHJcbiAgICAgICAgLyogR2V0IGZvcm0gZGVmaW5pdGlvbiAqL1xyXG4gICAgICAgIHRoaXMuZm9ybURlZmluaXRpb24gPSBnZXRGb3JtRGVmaW5pdGlvbihuZXcgdGhpcy5jbGFzc1R5cGUoKSk7XHJcblxyXG4gICAgICAgIC8qIENyZWF0ZSB0aGUgZnJvbSBmaWVsZHMgdXNpbmcgdGhlIGVudGl0eSB0eXBlICovXHJcbiAgICAgICAgdGhpcy5maWVsZEdyb3VwcyA9IHRoaXMuZm9ybURlZmluaXRpb24/LmZpZWxkR3JvdXBzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9nIHRvIGNvbnNvbGVcclxuICAgICAqIEBwYXJhbSBtZXNzYWdlIFxyXG4gICAgICogQHBhcmFtIG9wdGlvbmFsUGFyYW1zIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbG9nKG1lc3NhZ2U6IGFueSwgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2cobWVzc2FnZSwgb3B0aW9uYWxQYXJhbXMpO1xyXG4gICAgfVxyXG59IiwiPGRpdiAqbmdJZj1cImZvcm1Hcm91cCAmJiBmaWVsZFJvd3NcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxyXG4gICAgPCEtLSAjcmVnaW9uIEZpZWxkcyAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkcyBvZiBmaWVsZFJvd3M7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICA8ZGl2IGxheW91dC1ndC1zbT1cInJvd1wiIGxheW91dD1cImNvbHVtblwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBmaWVsZHNcIiBbbmdTd2l0Y2hdPVwiZmllbGQudHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmaWVsZC5oaWRlIHx8ICFmaWVsZC5oaWRlKGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC53cmFwcGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBUZXh0IGlucHV0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuVGV4dFwiIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIFtjbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiIGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFt0eXBlXT1cImZpZWxkLmlucHV0VHlwZVwiIFttaW5sZW5ndGhdPVwiZmllbGQubWluTGVuZ3RofHxudWxsXCIgW21heGxlbmd0aF09XCJmaWVsZC5tYXhMZW5ndGh8fG51bGxcIiBbbWluXT1cImZpZWxkLm1pblwiIFttYXhdPVwiZmllbGQubWF4XCIgbWF0SW5wdXQgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5IHx8IChmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWZmaXhCdXR0b24gb2YgZmllbGQuc3VmZml4QnV0dG9uc1wiIChjbGljayk9XCJzdWZmaXhCdXR0b24uZXZlbnQgJiYgc3VmZml4QnV0dG9uLmV2ZW50KGZvcm1WYWx1ZSwgY29udGV4dClcIiBtYXRTdWZmaXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiIXN1ZmZpeEJ1dHRvbi5oaWRlIHx8ICFzdWZmaXhCdXR0b24uaGlkZShmb3JtVmFsdWUsIGNvbnRleHQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj57e3N1ZmZpeEJ1dHRvbi5pY29ufX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJmaWVsZC5oaW50XCI+e3tmaWVsZC5oaW50fX08L21hdC1oaW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mIGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lXVsnZXJyb3JNZXNzYWdlcyddXCI+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gVGV4dGFyZWEgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiRm9ybUZpZWxkVHlwZS5UZXh0QXJlYVwiIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIFtjbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiIGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiIHJvd3M9XCJmaWVsZC5yb3dzfHwyXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5IHx8IChmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1ZmZpeEJ1dHRvbiBvZiBmaWVsZC5zdWZmaXhCdXR0b25zXCIgKGNsaWNrKT1cInN1ZmZpeEJ1dHRvbi5ldmVudCAmJiBzdWZmaXhCdXR0b24uZXZlbnQoZm9ybVZhbHVlLCBjb250ZXh0KVwiIG1hdFN1ZmZpeD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCIhc3VmZml4QnV0dG9uLmhpZGUgfHwgIXN1ZmZpeEJ1dHRvbi5oaWRlKGZvcm1WYWx1ZSwgY29udGV4dClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnt7c3VmZml4QnV0dG9uLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWVdWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBFbnVtIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuRW51bVwiIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIFtjbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiIGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZkLXNlbGVjdCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIiBbZW51bV09XCJmaWVsZC5lbnVtVHlwZVwiIFtlbnVtRmlsdGVyXT1cImZpZWxkLmVudW1GaWx0ZXIgfCBmdW5jOmZvcm1WYWx1ZTpmb3JtR3JvdXA6Y29udGV4dFwiIFtrZXldPVwiZmllbGQub3B0aW9uVmFsdWVcIiBbdGV4dF09XCJmaWVsZC5vcHRpb25UZXh0XCIgW211bHRpcGxlXT1cImZpZWxkLm11bHRpcGxlXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5IHx8IChmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpXCIgW3RyaWdnZXJDc3NDbGFzc109XCJmaWVsZC50cmlnZ2VyQ3NzQ2xhc3NcIiBbdHJpZ2dlck1vZGVdPVwiZmllbGQudHJpZ2dlck1vZGVcIiBsYXlvdXQ9XCJyb3dcIiBmbGV4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB2ZC1zZWxlY3QtdHJpZ2dlciBsZXQtdHJpZ2dlcj1cInRyaWdnZXJcIiAqbmdJZj1cImZpZWxkLnRyaWdnZXJUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImZpZWxkLnRyaWdnZXJUZW1wbGF0ZSh0cmlnZ2VyLCBmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dClcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgdmQtc2VsZWN0LW9wdGlvbiBsZXQtb3B0aW9uPVwib3B0aW9uXCIgKm5nSWY9XCJmaWVsZC5vcHRpb25UZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbb3V0ZXJIVE1MXT1cImZpZWxkLm9wdGlvblRlbXBsYXRlKG9wdGlvbiwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZkLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1ZmZpeEJ1dHRvbiBvZiBmaWVsZC5zdWZmaXhCdXR0b25zXCIgKGNsaWNrKT1cInN1ZmZpeEJ1dHRvbi5ldmVudCAmJiBzdWZmaXhCdXR0b24uZXZlbnQoZm9ybVZhbHVlLCBjb250ZXh0KVwiIG1hdFN1ZmZpeD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCIhc3VmZml4QnV0dG9uLmhpZGUgfHwgIXN1ZmZpeEJ1dHRvbi5oaWRlKGZvcm1WYWx1ZSwgY29udGV4dClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnt7c3VmZml4QnV0dG9uLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWVdWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBWZFNlbGVjdCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLlZkU2VsZWN0XCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgbGF5b3V0LW1hcmdpbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmQtc2VsZWN0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiIFtlbmRwb2ludF09XCJmaWVsZC5lbmRwb2ludCB8IGZ1bmM6Zm9ybVZhbHVlOmZvcm1Hcm91cDpjb250ZXh0XCIgW3BhcmFtc109XCJmaWVsZC5wYXJhbXMgfCBmdW5jOmZvcm1WYWx1ZTpmb3JtR3JvdXA6Y29udGV4dFwiIFtwcm9qZWN0aW9uXT1cImZpZWxkLnByb2plY3Rpb25cIiBbbWFwcGVyXT1cImZpZWxkLm1hcHBlclwiIFtjb21wYXJlV2l0aF09XCJmaWVsZC5jb21wYXJlV2l0aFwiIFtsb2FkRGF0YV09XCJmaWVsZC5mZXRjaENvbmRpdGlvbiB8IGZ1bmM6Zm9ybVZhbHVlOmZvcm1Hcm91cDpjb250ZXh0XCIgW2tleV09XCJmaWVsZC5vcHRpb25WYWx1ZVwiIFt0ZXh0XT1cImZpZWxkLm9wdGlvblRleHRcIiBbbXVsdGlwbGVdPVwiZmllbGQubXVsdGlwbGVcIiBbcmVhZG9ubHldPVwicmVhZG9ubHkgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSlcIiBbdHJpZ2dlckNzc0NsYXNzXT1cImZpZWxkLnRyaWdnZXJDc3NDbGFzc1wiIFt0cmlnZ2VyTW9kZV09XCJmaWVsZC50cmlnZ2VyTW9kZVwiIChpdGVtU2VsZWN0ZWQpPVwiZmllbGQuaXRlbVNlbGVjdCAmJiBmaWVsZC5pdGVtU2VsZWN0KCRldmVudCwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpO1wiIChpdGVtQ2hhbmdlKT1cImZpZWxkLml0ZW1DaGFuZ2UgJiYgZmllbGQuaXRlbUNoYW5nZSgkZXZlbnQsIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KTtcIiBsYXlvdXQ9XCJyb3dcIiBmbGV4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB2ZC1zZWxlY3QtdHJpZ2dlciBsZXQtdHJpZ2dlcj1cInRyaWdnZXJcIiAqbmdJZj1cImZpZWxkLnRyaWdnZXJUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImZpZWxkLnRyaWdnZXJUZW1wbGF0ZSh0cmlnZ2VyLCBmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dClcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgdmQtc2VsZWN0LXRyaWdnZXIgbGV0LXRyaWdnZXI9XCJ0cmlnZ2VyXCIgKm5nSWY9XCJmaWVsZC50cmlnZ2VyTWFwcGVyICYmIGZpZWxkLm11bHRpcGxlICYmIGZpZWxkLnRyaWdnZXJNb2RlID09ICdjaGlwJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiB0cmlnZ2VyXCIgY2xhc3M9XCJtYXQtbWRjLWNoaXAgbWF0LW1kYy1zdGFuZGFyZC1jaGlwIG1hdC1wcmltYXJ5IG1hdC1tZGMtY2hpcC1zZWxlY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJmaWVsZC50cmlnZ2VyTWFwcGVyKGl0ZW0sIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHZkLXNlbGVjdC1vcHRpb24gbGV0LW9wdGlvbj1cIm9wdGlvblwiICpuZ0lmPVwiZmllbGQub3B0aW9uVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW291dGVySFRNTF09XCJmaWVsZC5vcHRpb25UZW1wbGF0ZShvcHRpb24sIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92ZC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWZmaXhCdXR0b24gb2YgZmllbGQuc3VmZml4QnV0dG9uc1wiIChjbGljayk9XCJzdWZmaXhCdXR0b24uZXZlbnQgJiYgc3VmZml4QnV0dG9uLmV2ZW50KGZvcm1WYWx1ZSwgY29udGV4dClcIiBtYXRTdWZmaXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiIXN1ZmZpeEJ1dHRvbi5oaWRlIHx8ICFzdWZmaXhCdXR0b24uaGlkZShmb3JtVmFsdWUsIGNvbnRleHQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj57e3N1ZmZpeEJ1dHRvbi5pY29ufX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJmaWVsZC5oaW50XCI+e3tmaWVsZC5oaW50fX08L21hdC1oaW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mIGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lXVsnZXJyb3JNZXNzYWdlcyddXCI+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gVmRMaXN0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuVmRMaXN0XCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgZmxvYXRMYWJlbD1cImFsd2F5c1wiIGNsYXNzPVwiZm9ybS1maWVsZC10eXBlLWxpc3RcIiBsYXlvdXQtbWFyZ2luPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZC1saXN0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiIFtlbmRwb2ludF09XCJmaWVsZC5lbmRwb2ludCB8IGZ1bmM6Zm9ybVZhbHVlOmZvcm1Hcm91cDpjb250ZXh0XCIgW3BhcmFtc109XCJmaWVsZC5wYXJhbXMgfCBmdW5jOmZvcm1WYWx1ZTpmb3JtR3JvdXA6Y29udGV4dFwiIFtwcm9qZWN0aW9uXT1cImZpZWxkLnByb2plY3Rpb25cIiBbbWFwcGVyXT1cImZpZWxkLm1hcHBlclwiIFtjb21wYXJlV2l0aF09XCJmaWVsZC5jb21wYXJlV2l0aFwiIFtsb2FkRGF0YV09XCJmaWVsZC5mZXRjaENvbmRpdGlvbiB8IGZ1bmM6Zm9ybVZhbHVlOmZvcm1Hcm91cDpjb250ZXh0XCIgW2tleV09XCJmaWVsZC5vcHRpb25WYWx1ZVwiIFt0ZXh0XT1cImZpZWxkLm9wdGlvblRleHRcIiBbbXVsdGlwbGVdPVwiZmllbGQubXVsdGlwbGVcIiBbcmVhZG9ubHldPVwicmVhZG9ubHkgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSlcIiAoaXRlbVNlbGVjdGVkKT1cImZpZWxkLml0ZW1TZWxlY3QgJiYgZmllbGQuaXRlbVNlbGVjdCgkZXZlbnQsIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KTtcIiAoaXRlbUNoYW5nZSk9XCJmaWVsZC5pdGVtQ2hhbmdlICYmIGZpZWxkLml0ZW1DaGFuZ2UoJGV2ZW50LCBmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCk7XCIgW3N0eWxlLm1heC13aWR0aF09XCJmaWVsZC5tYXhXaWR0aFwiIFtzdHlsZS5tYXgtaGVpZ2h0XT1cImZpZWxkLm1heEhlaWdodFwiIGZsZXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHZkLWxpc3Qtb3B0aW9uIGxldC1vcHRpb249XCJvcHRpb25cIiAqbmdJZj1cImZpZWxkLm9wdGlvblRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtvdXRlckhUTUxdPVwiZmllbGQub3B0aW9uVGVtcGxhdGUob3B0aW9uLCBmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dClcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmQtbGlzdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWVdWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBDaGlwcyAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkNoaXBzXCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgbGF5b3V0LW1hcmdpbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNoaXAtZ3JpZCAjY2hpcExpc3QgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCIgW2Rpc2FibGVDb250cm9sXT1cInJlYWRvbmx5IHx8IChmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGlwLXJvdyAqbmdGb3I9XCJsZXQgY2hpcCBvZiBmb3JtR3JvdXAuY29udHJvbHNbZmllbGQubmFtZV0/LnZhbHVlXCIgKHJlbW92ZWQpPVwicmVtb3ZlQ2hpcChmaWVsZCwgY2hpcClcIiBjb2xvcj1cInByaW1hcnlcIiBzZWxlY3RhYmxlPVwidHJ1ZVwiIHNlbGVjdGVkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2NoaXB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXRDaGlwUmVtb3ZlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNhbmNlbDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNoaXAtcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbcGxhY2Vob2xkZXJdPVwiJGFueShmaWVsZC5sYWJlbClcIiAjY2hpcElucHV0IFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcExpc3RcIiBbbWF0Q2hpcElucHV0U2VwYXJhdG9yS2V5Q29kZXNdPVwic2VwYXJhdG9yS2V5c0NvZGVzXCIgW21hdEF1dG9jb21wbGV0ZV09XCJjaGlwQXV0b2NvbXBsZXRlXCIgKGlucHV0KT1cImZpbHRlckF1dG9jb21wbGV0ZShmaWVsZCwgY2hpcElucHV0KVwiIChtYXRDaGlwSW5wdXRUb2tlbkVuZCk9XCJhZGRDaGlwKGZpZWxkLCAkZXZlbnQpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jaGlwLWdyaWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWF1dG9jb21wbGV0ZSBhdXRvQWN0aXZlRmlyc3RPcHRpb24gI2NoaXBBdXRvY29tcGxldGU9XCJtYXRBdXRvY29tcGxldGVcIiBbY2xhc3NdPVwiZmllbGQuYXV0b2NvbXBsZXRlQ3NzQ2xhc3NcIiAob3B0aW9uU2VsZWN0ZWQpPVwiYXV0b2NvbXBsZXRlVmFsdWVTZWxlY3RlZChmaWVsZCwgJGV2ZW50LCBjaGlwSW5wdXQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBhdXRvY29tcGxldGVGaWx0ZXJlZE9wdGlvbnNbZmllbGQubmFtZV1cIiBbdmFsdWVdPVwib3B0aW9uLmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7b3B0aW9uLm5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1ZmZpeEJ1dHRvbiBvZiBmaWVsZC5zdWZmaXhCdXR0b25zXCIgKGNsaWNrKT1cInN1ZmZpeEJ1dHRvbi5ldmVudCAmJiBzdWZmaXhCdXR0b24uZXZlbnQoZm9ybVZhbHVlLCBjb250ZXh0KVwiIG1hdFN1ZmZpeD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCIhc3VmZml4QnV0dG9uLmhpZGUgfHwgIXN1ZmZpeEJ1dHRvbi5oaWRlKGZvcm1WYWx1ZSwgY29udGV4dClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnt7c3VmZml4QnV0dG9uLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWVdWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBWZENoaXBzIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuVmRDaGlwc1wiIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIFtjbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiIGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZkLWNoaXBzICN2ZENoaXAgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCIgW2VuZHBvaW50XT1cImZpZWxkLmVuZHBvaW50IHwgZnVuYzpmb3JtVmFsdWU6Zm9ybUdyb3VwOmNvbnRleHRcIiBbcGFyYW1zXT1cImZpZWxkLnBhcmFtcyB8IGZ1bmM6Zm9ybVZhbHVlOmZvcm1Hcm91cDpjb250ZXh0XCIgW3NlYXJjaEZpZWxkXT1cImZpZWxkLnNlYXJjaEZpZWxkXCIgW2NsYXNzVHlwZV09XCJmaWVsZC5jbGFzc1R5cGVcIiBbcHJvamVjdGlvbl09XCJmaWVsZC5wcm9qZWN0aW9uXCIgW2tleV09XCJmaWVsZC5vcHRpb25WYWx1ZVwiIFtyZWFkb25seV09XCJyZWFkb25seSB8fCAoZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpKVwiIFtyZW1vdmFibGVdPVwiIWZpZWxkLmNsZWFyXCIgW2NvbnRleHRdPVwiY29udGV4dFwiIFtzdWZmaXhCdXR0b25zXT1cImZpZWxkLnN1ZmZpeEJ1dHRvbnNcIiBbYXV0b2NvbXBsZXRlQ3NzQ2xhc3NdPVwiZmllbGQuYXV0b2NvbXBsZXRlQ3NzQ2xhc3NcIiAoaW5pdFNlbGVjdCk9XCJmaWVsZC5pdGVtU2VsZWN0ICYmIGZpZWxkLml0ZW1TZWxlY3QoJGV2ZW50LCBmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCk7XCIgKHNlbGVjdGVkKT1cImZpZWxkLml0ZW1DaGFuZ2UgJiYgZmllbGQuaXRlbUNoYW5nZSgkZXZlbnQsIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KTtcIiAoY2xlYXJlZCk9XCJmaWVsZC5jbGVhciAmJiBmaWVsZC5jbGVhcihmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCk7XCIgW2N1c3RvbVZhbHVlXT1cImZpZWxkLmN1c3RvbVZhbHVlXCIgbGF5b3V0PVwicm93XCIgZmxleD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgdmQtY2hpcCBsZXQtY2hpcD1cImNoaXBcIiAqbmdJZj1cImZpZWxkLmNoaXBUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtvdXRlckhUTUxdPVwiZmllbGQuY2hpcFRlbXBsYXRlKGNoaXAsIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHZkLWF1dG9jb21wbGV0ZS1vcHRpb24gbGV0LW9wdGlvbj1cIm9wdGlvblwiICpuZ0lmPVwiZmllbGQuYXV0b2NvbXBsZXRlVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbb3V0ZXJIVE1MXT1cImZpZWxkLmF1dG9jb21wbGV0ZVRlbXBsYXRlKG9wdGlvbiwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmQtY2hpcHM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJmaWVsZC5oaW50XCI+e3tmaWVsZC5oaW50fX08L21hdC1oaW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwidmRDaGlwLmVtcHR5UmVzdWx0XCIgY2xhc3M9XCJ0Yy1yZWQtNDAwXCIgaTE4bj1cIkBAbm9SZXN1bHRzRm91bmRcIj5ObyByZXN1bHRzIHdlcmUgZm91bmQuPC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiBmb3JtR3JvdXAuY29udHJvbHNbZmllbGQubmFtZV1bJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIFNlbGVjdCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLlNlbGVjdFwiIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIFtjbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiIGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCIgW211bHRpcGxlXT1cImZpZWxkLm11bHRpcGxlXCIgW2Rpc2FibGVDb250cm9sXT1cInJlYWRvbmx5IHx8IChmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpXCIgZmxleD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpZWxkLm9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uLmlkXCI+e3tvcHRpb24ubmFtZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3VmZml4QnV0dG9uIG9mIGZpZWxkLnN1ZmZpeEJ1dHRvbnNcIiAoY2xpY2spPVwic3VmZml4QnV0dG9uLmV2ZW50ICYmIHN1ZmZpeEJ1dHRvbi5ldmVudChmb3JtVmFsdWUsIGNvbnRleHQpXCIgbWF0U3VmZml4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIiFzdWZmaXhCdXR0b24uaGlkZSB8fCAhc3VmZml4QnV0dG9uLmhpZGUoZm9ybVZhbHVlLCBjb250ZXh0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+e3tzdWZmaXhCdXR0b24uaWNvbn19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiBmb3JtR3JvdXAuY29udHJvbHNbZmllbGQubmFtZV1bJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIEF1dG9jb21wbGV0ZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkF1dG9jb21wbGV0ZVwiIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIFtjbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiIGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCIgW21pbl09XCJmaWVsZC5taW5cIiBbbWF4XT1cImZpZWxkLm1heFwiIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiICNhdXRvY29tcGxldGVJbnB1dCAoaW5wdXQpPVwiZmlsdGVyQXV0b2NvbXBsZXRlKGZpZWxkLCBhdXRvY29tcGxldGVJbnB1dClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBbcmVhZG9ubHldPVwicmVhZG9ubHkgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlIGF1dG9BY3RpdmVGaXJzdE9wdGlvbiAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiIFtjbGFzc109XCJmaWVsZC5hdXRvY29tcGxldGVDc3NDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgYXV0b2NvbXBsZXRlRmlsdGVyZWRPcHRpb25zW2ZpZWxkLm5hbWVdXCIgW3ZhbHVlXT1cIm9wdGlvbi5pZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e29wdGlvbi5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWZmaXhCdXR0b24gb2YgZmllbGQuc3VmZml4QnV0dG9uc1wiIChjbGljayk9XCJzdWZmaXhCdXR0b24uZXZlbnQgJiYgc3VmZml4QnV0dG9uLmV2ZW50KGZvcm1WYWx1ZSwgY29udGV4dClcIiBtYXRTdWZmaXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiIXN1ZmZpeEJ1dHRvbi5oaWRlIHx8ICFzdWZmaXhCdXR0b24uaGlkZShmb3JtVmFsdWUsIGNvbnRleHQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj57e3N1ZmZpeEJ1dHRvbi5pY29ufX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJmaWVsZC5oaW50XCI+e3tmaWVsZC5oaW50fX08L21hdC1oaW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mIGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lXVsnZXJyb3JNZXNzYWdlcyddXCI+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gRGF0ZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkRhdGVcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBbY2xhc3NdPVwiZmllbGQuY3NzQ2xhc3NcIiBsYXlvdXQtbWFyZ2luPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIiBbbWluXT1cImZpZWxkLm1pblwiIFttYXhdPVwiZmllbGQubWF4XCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgW21hdERhdGVwaWNrZXJdPVwiZGF0ZVBpY2tlclwiIFttYXREYXRlcGlja2VyRmlsdGVyXT1cImZpZWxkLmRhdGVGaWx0ZXJcIiBbcmVhZG9ubHldPVwicmVhZG9ubHkgfHwgZmllbGQuZm9yY2VTZWxlY3QgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiZGF0ZVBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyICNkYXRlUGlja2VyIFtkaXNhYmxlZF09XCJyZWFkb25seSB8fCAoZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpKVwiIChtb250aFNlbGVjdGVkKT1cImhhbmRsZURhdGVQaWNrZXJGaWx0ZXJBc3luYyhkYXRlUGlja2VyLCBmaWVsZCwgJGV2ZW50IClcIiAob3BlbmVkKT1cImhhbmRsZURhdGVQaWNrZXJPcGVuZWQoZGF0ZVBpY2tlciwgZmllbGQpXCIgW2NhbGVuZGFySGVhZGVyQ29tcG9uZW50XT1cImRhdGVQaWNrZXJIZWFkZXJDb21wb25lbnRcIj48L21hdC1kYXRlcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiBmb3JtR3JvdXAuY29udHJvbHNbZmllbGQubmFtZV1bJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIENhbGVuZGFyIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuQ2FsZW5kYXJcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBbY2xhc3NdPVwiZmllbGQuY3NzQ2xhc3NcIiBmbG9hdExhYmVsPVwiYWx3YXlzXCIgY2xhc3M9XCJmb3JtLWZpZWxkLXR5cGUtY2FsZW5kYXJcIiBsYXlvdXQtbWFyZ2luPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpbnB1dD1cImhpZGRlblwiIGhpZGRlbiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2FsZW5kYXIgI2NhbGVuZGFyIFtzZWxlY3RlZF09XCJmb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpLnZhbHVlXCIgKHNlbGVjdGVkQ2hhbmdlKT1cImZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSkuc2V0VmFsdWUoJGV2ZW50KTtcIiAobW9udGhTZWxlY3RlZCk9XCJoYW5kbGVDYWxlbmRhckZpbHRlckFzeW5jKGNhbGVuZGFyLCBmaWVsZCwgJGV2ZW50IClcIiBbaGVhZGVyQ29tcG9uZW50XT1cImRhdGVQaWNrZXJIZWFkZXJDb21wb25lbnRcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPjwvbWF0LWNhbGVuZGFyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mIGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lXVsnZXJyb3JNZXNzYWdlcyddXCIgbGF5b3V0LW1hcmdpbj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIENoZWNrYm94IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuQ2hlY2tib3hcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBbY2xhc3NdPVwiZmllbGQuY3NzQ2xhc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIiBbZGlzYWJsZUNvbnRyb2xdPVwicmVhZG9ubHkgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSlcIj57e2ZpZWxkLmxhYmVsfX08L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBFZGl0b3IgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiRm9ybUZpZWxkVHlwZS5FZGl0b3JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiZWRpdG9yVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZWRpdG9yVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBmb3JtR3JvdXA6IGZvcm1Hcm91cCB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBDb2RlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuQ29kZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJjb2RlVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29kZVRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgZm9ybUdyb3VwOiBmb3JtR3JvdXAgfVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gRmlsZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkZpbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2ZC1maWxlLWlucHV0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiIChzZWxlY3QpPVwiZmllbGQuY2hhbmdlICYmIGZpZWxkLmNoYW5nZShmaWVsZCwgJGV2ZW50LCBmb3JtR3JvdXAsIGNvbnRleHQpXCIgW2FjY2VwdF09XCJmaWVsZC5maWxlRXh0ZW5zaW9uc1wiIFtkaXNhYmxlQ29udHJvbF09XCJyZWFkb25seSB8fCAoZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpKVwiIGZsZXg+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gQ3VzdG9tIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuQ3VzdG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImN1c3RvbVRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbVRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgZm9ybUdyb3VwOiBmb3JtR3JvdXAgfVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPCEtLSAjcmVnaW9uIFRlbXBsYXRlIGZvciBjdXN0b20gZmllbGRzIC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjdXN0b21GaWVsZCBvZiBjdXN0b21GaWVsZHNUZW1wbGF0ZXNcIj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImN1c3RvbUZpZWxkPy50ZW1wbGF0ZVJlZiAmJiBjdXN0b21GaWVsZC5yb3cgPT0gZmllbGRzWzBdPy5yb3cgJiYgY3VzdG9tRmllbGQuaW5saW5lXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tRmllbGQ/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntmb3JtR3JvdXA6IGZvcm1Hcm91cH1cIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tICNyZWdpb24gVGVtcGxhdGUgZm9yIGN1c3RvbSBmaWVsZHMgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21GaWVsZHNcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2Zvcm1Hcm91cDogZm9ybUdyb3VwLCByb3c6IGZpZWxkc1swXT8ucm93ICsgMX1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjdXN0b21GaWVsZCBvZiBjdXN0b21GaWVsZHNUZW1wbGF0ZXNcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiY3VzdG9tRmllbGQ/LnRlbXBsYXRlUmVmICYmIGN1c3RvbUZpZWxkLnJvdyA9PSAoZmllbGRzWzBdPy5yb3crMSkgJiYgIWN1c3RvbUZpZWxkLmlubGluZVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUZpZWxkPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Zm9ybUdyb3VwOiBmb3JtR3JvdXB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICA8IS0tICNyZWdpb24gRm9ybSBib3R0b20gLS0+XHJcbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJvdHRvbVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Zm9ybUdyb3VwOiBmb3JtR3JvdXB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgPCEtLSAjcmVnaW9uIERlYnVnIHZhbHVlIC0tPlxyXG4gICAgPGNvZGUgKm5nSWY9XCJkZWJ1Z1ZhbHVlXCI+XHJcbiAgICAgICAgPHByZT57e2Zvcm1WYWx1ZSB8IGpzb259fTwvcHJlPlxyXG4gICAgPC9jb2RlPlxyXG4gICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG48L2Rpdj4iXX0=
|
|
350
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvZ2VuZXJpYy1mb3JtL2dlbmVyaWMtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3Jtcy9jb21wb25lbnRzL2dlbmVyaWMtZm9ybS9nZW5lcmljLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLFlBQVksRUFBaUIsV0FBVyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoTCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJM0MsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0seURBQXlELENBQUM7QUFDNUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUc5RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV0Rjs7R0FFRztBQUVILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxTQUFTO0lBQzVDLFlBQVksV0FBNkIsRUFBRSxnQkFBa0M7UUFDekUs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O3VCQUFDLGlDQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENPTU1BLCBFTlRFUiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XHJcbmltcG9ydCB7IENka1BvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgQ29udGVudENoaWxkcmVuLCBEaXJlY3RpdmUsIElucHV0LCBPbkluaXQsIFF1ZXJ5TGlzdCwgU2ltcGxlQ2hhbmdlLCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiwgVHlwZSwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBNYXRDaGlwSW5wdXRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcclxuaW1wb3J0IHsgTWF0Q2FsZW5kYXIsIE1hdERhdGVwaWNrZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcclxuaW1wb3J0IHsgVmRHZW5lcmljRm9ybUN1c3RvbUZpZWxkRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy92ZC1nZW5lcmljLWZvcm0tY3VzdG9tLWZpZWxkLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEZvcm1GaWVsZFR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy9mb3JtLWZpZWxkLXR5cGUnO1xyXG5pbXBvcnQgeyBnZXRGb3JtRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBGb3JtRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLWRlZmluaXRpb24nO1xyXG5pbXBvcnQgeyBGb3JtRmllbGREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zvcm0tZmllbGQtZGVmaW5pdGlvbic7XHJcbmltcG9ydCB7IEZvcm1GaWVsZEdyb3VwRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLWZpZWxkLWdyb3VwLWRlZmluaXRpb24nO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VySGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0ZXBpY2tlci9kYXRlcGlja2VyLWhlYWRlci5jb21wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIFZkRWRpdG9yRGlyZWN0aXZlIGNsYXNzXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbdmQtZWRpdG9yXW5nLXRlbXBsYXRlJyB9KVxyXG5leHBvcnQgY2xhc3MgVmRFZGl0b3JEaXJlY3RpdmUgZXh0ZW5kcyBDZGtQb3J0YWwge1xyXG4gICAgY29uc3RydWN0b3IodGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHtcclxuICAgICAgICBzdXBlcih0ZW1wbGF0ZVJlZiwgdmlld0NvbnRhaW5lclJlZik7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBWZENvZGVEaXJlY3RpdmUgY2xhc3NcclxuICovXHJcbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1t2ZC1jb2RlXW5nLXRlbXBsYXRlJyB9KVxyXG5leHBvcnQgY2xhc3MgVmRDb2RlRGlyZWN0aXZlIGV4dGVuZHMgQ2RrUG9ydGFsIHtcclxuICAgIGNvbnN0cnVjdG9yKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XHJcbiAgICAgICAgc3VwZXIodGVtcGxhdGVSZWYsIHZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgfVxyXG59XHJcblxyXG4vKipcclxuICogVmRGaWxlRGlyZWN0aXZlIGNsYXNzXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbdmQtZmlsZV1uZy10ZW1wbGF0ZScgfSlcclxuZXhwb3J0IGNsYXNzIFZkRmlsZURpcmVjdGl2ZSBleHRlbmRzIENka1BvcnRhbCB7XHJcbiAgICBjb25zdHJ1Y3Rvcih0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Piwgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG4gICAgICAgIHN1cGVyKHRlbXBsYXRlUmVmLCB2aWV3Q29udGFpbmVyUmVmKTtcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFZkQ3VzdG9tRGlyZWN0aXZlIGNsYXNzXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbdmQtY3VzdG9tXW5nLXRlbXBsYXRlJyB9KVxyXG5leHBvcnQgY2xhc3MgVmRDdXN0b21EaXJlY3RpdmUgZXh0ZW5kcyBDZGtQb3J0YWwge1xyXG4gICAgY29uc3RydWN0b3IodGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHtcclxuICAgICAgICBzdXBlcih0ZW1wbGF0ZVJlZiwgdmlld0NvbnRhaW5lclJlZik7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZC1nZW5lcmljLWZvcm0nLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dlbmVyaWMtZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9nZW5lcmljLWZvcm0uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmRHZW5lcmljRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICAvKipcclxuICAgICAqIGZvcm06IEZvcm1Hcm91cFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRm9ybSByYXcgdmFsdWVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBmb3JtVmFsdWUoKTogYW55IHsgcmV0dXJuIHRoaXMuZm9ybUdyb3VwPy5nZXRSYXdWYWx1ZSgpOyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBjbGFzc1R5cGU6IFR5cGU8YW55PlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNsYXNzVHlwZTogVHlwZTxhbnk+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZm9ybURlZmluaXRpb246IEZvcm1EZWZpbml0aW9uXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZm9ybURlZmluaXRpb246IEZvcm1EZWZpbml0aW9uO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZmllbGRHcm91cHM6IEZvcm1GaWVsZEdyb3VwW11cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBmaWVsZEdyb3VwczogRm9ybUZpZWxkR3JvdXBEZWZpbml0aW9uW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHcm91cCBuYW1lXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZ3JvdXBOYW1lOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaWVsZCBzZXQgbmFtZVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGZpZWxkU2V0czogc3RyaW5nW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBjb250ZXh0OiBhbnlcclxuICAgICAqIFRoZSBjdXJyZW50IGNvbnRleHRcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBjb250ZXh0OiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBkZWJ1Z1ZhbHVlOiBib29sZWFuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZGVidWdWYWx1ZTogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIHJlYWRvbmx5OiBib29sZWFuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIHNlcGFyYXRvcktleXNDb2RlczogbnVtYmVyW11cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXBhcmF0b3JLZXlzQ29kZXM6IG51bWJlcltdID0gW0VOVEVSLCBDT01NQV07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBmaWVsZFJvd3M6IEZvcm1GaWVsZERlZmluaXRpb25bXVtdXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBmaWVsZFJvd3M6IEZvcm1GaWVsZERlZmluaXRpb25bXVtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZmllbGRzOiBGb3JtRmllbGREZWZpbml0aW9uW11cclxuICAgICAqL1xyXG4gICAgcHVibGljIGZpZWxkczogRm9ybUZpZWxkRGVmaW5pdGlvbltdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRm9ybUZpZWxkVHlwZTogdHlwZW9mIEZvcm1GaWVsZFR5cGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIEZvcm1GaWVsZFR5cGU6IHR5cGVvZiBGb3JtRmllbGRUeXBlID0gRm9ybUZpZWxkVHlwZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEVkaXRvciB0ZW1wbGF0ZVxyXG4gICAgICovXHJcbiAgICBAQ29udGVudENoaWxkKFZkRWRpdG9yRGlyZWN0aXZlKVxyXG4gICAgcHVibGljIGVkaXRvclRlbXBsYXRlOiBWZEVkaXRvckRpcmVjdGl2ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvZGUgdGVtcGxhdGVcclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZChWZENvZGVEaXJlY3RpdmUpXHJcbiAgICBwdWJsaWMgY29kZVRlbXBsYXRlOiBWZENvZGVEaXJlY3RpdmU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaWxlIHRlbXBsYXRlXHJcbiAgICAgKi9cclxuICAgIEBDb250ZW50Q2hpbGQoVmRGaWxlRGlyZWN0aXZlKVxyXG4gICAgcHVibGljIGZpbGVUZW1wbGF0ZTogVmRGaWxlRGlyZWN0aXZlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3VzdG9tIHRlbXBsYXRlXHJcbiAgICAgKi9cclxuICAgIEBDb250ZW50Q2hpbGQoVmRDdXN0b21EaXJlY3RpdmUpXHJcbiAgICBwdWJsaWMgY3VzdG9tVGVtcGxhdGU6IFZkQ3VzdG9tRGlyZWN0aXZlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3VzdG9tZXIgZGF0ZSBoZWFkZXJcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRhdGVQaWNrZXJIZWFkZXJDb21wb25lbnQgPSBEYXRlUGlja2VySGVhZGVyQ29tcG9uZW50O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVtcGxhdGUgcmVmIGZvciBjdXN0b20gZmllbGRzIG9uIHRoZSBib3R0b21cclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZCgnYm90dG9tJylcclxuICAgIHB1YmxpYyBib3R0b206IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZW1wbGF0ZSByZWYgZm9yIGN1c3RvbSBmaWVsZHNcclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZCgnY3VzdG9tRmllbGRzJylcclxuICAgIHB1YmxpYyBjdXN0b21GaWVsZHM6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZW1wbGF0ZSByZWYgZm9yIGN1c3RvbSBmaWVsZHMgb24gdGhlIGJvdHRvbVxyXG4gICAgICovXHJcbiAgICBAQ29udGVudENoaWxkcmVuKFZkR2VuZXJpY0Zvcm1DdXN0b21GaWVsZERpcmVjdGl2ZSlcclxuICAgIHB1YmxpYyBjdXN0b21GaWVsZHNUZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxWZEdlbmVyaWNGb3JtQ3VzdG9tRmllbGREaXJlY3RpdmU+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmlsdGVyZCBvcHRpb25zIGZvciBhdXRvY29tcGxldGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGF1dG9jb21wbGV0ZUZpbHRlcmVkT3B0aW9uczoge30gPSB7fTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEEgY2FsbGJhY2sgbWV0aG9kIHRoYXQgaXMgaW52b2tlZCBpbW1lZGlhdGVseSBhZnRlciB0aGVcclxuICAgICAqIGRlZmF1bHQgY2hhbmdlIGRldGVjdG9yIGhhcyBjaGVja2VkIHRoZSBkaXJlY3RpdmUnc1xyXG4gICAgICogZGF0YS1ib3VuZCBwcm9wZXJ0aWVzIGZvciB0aGUgZmlyc3QgdGltZSxcclxuICAgICAqIGFuZCBiZWZvcmUgYW55IG9mIHRoZSB2aWV3IG9yIGNvbnRlbnQgY2hpbGRyZW4gaGF2ZSBiZWVuIGNoZWNrZWQuXHJcbiAgICAgKiBJdCBpcyBpbnZva2VkIG9ubHkgb25jZSB3aGVuIHRoZSBkaXJlY3RpdmUgaXMgaW5zdGFudGlhdGVkLlxyXG4gICAgICovXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICAvKiBCdWlsZCB0aGUgZm9ybSBmaWVsZHMgKi9cclxuICAgICAgICBpZiAodGhpcy5jbGFzc1R5cGUgJiYgIXRoaXMuZmllbGRHcm91cHMpIHtcclxuICAgICAgICAgICAgdGhpcy5idWlsZEZpZWxkcygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogR2V0IGZpbGVkIHJvd3MgKi9cclxuICAgICAgICBsZXQgZmllbGRSb3dzID0gdGhpcy5maWVsZEdyb3Vwcz8uZmlsdGVyKHggPT4geC5uYW1lPy50cmltKCkgPT0gdGhpcy5ncm91cE5hbWU/LnRyaW0oKSlbMF0/Lmdyb3VwcztcclxuICAgICAgICB0aGlzLmZpZWxkUm93cyA9IGZpZWxkUm93cy5tYXAoYSA9PiB7IHJldHVybiBbLi4uYS5tYXAoeSA9PiB7IHJldHVybiB7IC4uLnkgfSB9KV0gfSk7XHJcblxyXG4gICAgICAgIC8qIEZpbHRlciBieSBmaWVsZCBzZXQgKi9cclxuICAgICAgICBpZiAodGhpcy5maWVsZFNldHMpIHtcclxuICAgICAgICAgICAgdGhpcy5maWVsZFJvd3MgPSB0aGlzLmZpZWxkUm93cy5tYXAoeCA9PiB4ID0geC5maWx0ZXIoeSA9PiB5LmZpZWxkU2V0cz8uc29tZSh6ID0+IHRoaXMuZmllbGRTZXRzPy5zb21lKGEgPT4gYT8udHJpbSgpPy50b0xvd2VyQ2FzZSgpID09IHo/LnRyaW0oKT8udG9Mb3dlckNhc2UoKSkpKSkuZmlsdGVyKHggPT4geC5sZW5ndGgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogR2V0IGFsbCBmaWVsZHMgKi9cclxuICAgICAgICBsZXQgZmllbGRzID0gdGhpcy5maWVsZFJvd3M/LnJlZHVjZSgoYSwgYikgPT4gYS5jb25jYXQoYiksIFtdKTtcclxuICAgICAgICB0aGlzLmZpZWxkcyA9IGZpZWxkcy5tYXAoYSA9PiB7IHJldHVybiB7IC4uLmEgfSB9KTtcclxuXHJcbiAgICAgICAgLyogU3Vic2NyaWUgdG8gY2hhbmdlIGV2ZW50ICovXHJcbiAgICAgICAgZmllbGRzPy5maWx0ZXIoeSA9PiB5LnR5cGUgIT0gRm9ybUZpZWxkVHlwZS5GaWxlICYmIHkuY2hhbmdlKT8uZm9yRWFjaCh4ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXA/LmdldCh4Lm5hbWUpPy52YWx1ZUNoYW5nZXM/LnN1YnNjcmliZSh5ID0+IHguY2hhbmdlKHksIHRoaXMuZm9ybUdyb3VwPy52YWx1ZSwgdGhpcy5mb3JtR3JvdXAsIHRoaXMuY29udGV4dCkpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvKiBVcGRhdGUgc29tZSB2YWx1ZXMgKGxhYmVsLCB0eXBlLCAuLi4pICovXHJcbiAgICAgICAgZmllbGRzLmZvckVhY2goeCA9PiB7XHJcbiAgICAgICAgICAgIHZhciBvcmdGaWVsZCA9IHRoaXMuZmllbGRzLmZpbHRlcih5ID0+IHkubmFtZSA9PSB4Lm5hbWUpWzBdO1xyXG5cclxuICAgICAgICAgICAgLyogR2V0IHRoZSB0eXBlIGFuZCB0aGUgbGFiZWwgb2YgdGhlIGZpZWxkICovXHJcbiAgICAgICAgICAgIGxldCB0eXBlID0gb3JnRmllbGQ/LnR5cGU7XHJcbiAgICAgICAgICAgIGxldCBsYWJlbCA9IG9yZ0ZpZWxkPy5sYWJlbDtcclxuXHJcbiAgICAgICAgICAgIC8qIFJlbmRlciB0aGUgZmllbGQgdHlwZSAqL1xyXG4gICAgICAgICAgICB4LnR5cGUgPSAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpID8gdHlwZSh0aGlzLmZvcm1WYWx1ZSwgdGhpcy5mb3JtR3JvdXAsIHRoaXMuY29udGV4dCkgOiB4LnR5cGU7XHJcblxyXG4gICAgICAgICAgICAvKiBSZW5kZXIgdGhlIGZpZWxkIGxhYmVsICovXHJcbiAgICAgICAgICAgIHgubGFiZWwgPSAodHlwZW9mIGxhYmVsID09PSAnZnVuY3Rpb24nKSA/IGxhYmVsKHRoaXMuZm9ybVZhbHVlLCB0aGlzLmZvcm1Hcm91cCwgdGhpcy5jb250ZXh0KSA6IHgubGFiZWw7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cD8udmFsdWVDaGFuZ2VzPy5zdWJzY3JpYmUoeSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvKiBSZW5kZXIgdGhlIGZpZWxkIHR5cGUgKi9cclxuICAgICAgICAgICAgICAgIHgudHlwZSA9ICh0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJykgPyB0eXBlKHksIHRoaXMuZm9ybUdyb3VwLCB0aGlzLmNvbnRleHQpIDogeC50eXBlO1xyXG5cclxuICAgICAgICAgICAgICAgIC8qIFJlbmRlciB0aGUgZmllbGQgbGFiZWwgKi9cclxuICAgICAgICAgICAgICAgIHgubGFiZWwgPSAodHlwZW9mIGxhYmVsID09PSAnZnVuY3Rpb24nKSA/IGxhYmVsKHksIHRoaXMuZm9ybUdyb3VwLCB0aGlzLmNvbnRleHQpIDogeC5sYWJlbDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIYW5kbGVzIGF1dG9jb21wbGV0ZSBldmVudFxyXG4gICAgICogQHBhcmFtIGZpZWxkIFxyXG4gICAgICogQHBhcmFtIGV2ZW50IFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZmlsdGVyQXV0b2NvbXBsZXRlKGZpZWxkOiBGb3JtRmllbGREZWZpbml0aW9uLCBldmVudDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVGaWx0ZXJlZE9wdGlvbnNbZmllbGQubmFtZV0gPSBmaWVsZC5vcHRpb25zPy5maWx0ZXIob3B0aW9uID0+IG9wdGlvbi5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZXZlbnQudmFsdWU/LnRvU3RyaW5nKCk/LnRvTG93ZXJDYXNlKCkpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYSBjaGlwIHdoZW4gYSBhdXRvY29tcGxldGUgdmFsdWUgaXMgc2VsZWN0ZWRcclxuICAgICAqIEBwYXJhbSBmaWVsZCBcclxuICAgICAqIEBwYXJhbSBldmVudCBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGF1dG9jb21wbGV0ZVZhbHVlU2VsZWN0ZWQoZmllbGQ6IEZvcm1GaWVsZERlZmluaXRpb24sIGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50LCBjaGlwSW5wdXRFdmVudDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fYWRkQ2hpcChmaWVsZCwgZXZlbnQub3B0aW9uLnZpZXdWYWx1ZSk7XHJcbiAgICAgICAgY2hpcElucHV0RXZlbnQudmFsdWUgPSAnJztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYSBjaGlwXHJcbiAgICAgKiBAcGFyYW0gZmllbGQgXHJcbiAgICAgKiBAcGFyYW0gZXZlbnQgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRDaGlwKGZpZWxkOiBGb3JtRmllbGREZWZpbml0aW9uLCBldmVudDogTWF0Q2hpcElucHV0RXZlbnQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9hZGRDaGlwKGZpZWxkLCBldmVudC52YWx1ZSk7XHJcbiAgICAgICAgZXZlbnQuY2hpcElucHV0IS5jbGVhcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlcyBhIGNoaXBcclxuICAgICAqIEBwYXJhbSBmaWVsZCBcclxuICAgICAqIEBwYXJhbSBjaGlwIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVtb3ZlQ2hpcChmaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbiwgY2hpcDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgLyogR2V0IHRoZSBmb3JtIGNvbnRyb2wgdXNpbmcgdGhlIGZpZWxkIG5hbWUgKi9cclxuICAgICAgICBsZXQgY29udHJvbCA9IHRoaXMuZm9ybUdyb3VwPy5jb250cm9sc1tmaWVsZC5uYW1lXTtcclxuXHJcbiAgICAgICAgLyogR2V0IHRoZSBpbmRleCBvZiB0aGUgY2hpcCAqL1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gY29udHJvbC52YWx1ZS5pbmRleE9mKGNoaXApO1xyXG4gICAgICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgICAgICAgIGNvbnRyb2wudmFsdWUuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGEgY2hpcFxyXG4gICAgICogQHBhcmFtIGZpZWxkIFxyXG4gICAgICogQHBhcmFtIHZhbHVlIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9hZGRDaGlwKGZpZWxkOiBGb3JtRmllbGREZWZpbml0aW9uLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgLyogR2V0IHRoZSBmb3JtIGNvbnRyb2wgdXNpbmcgdGhlIGZpZWxkIG5hbWUgKi9cclxuICAgICAgICBsZXQgY29udHJvbCA9IHRoaXMuZm9ybUdyb3VwPy5jb250cm9sc1tmaWVsZC5uYW1lXTtcclxuXHJcbiAgICAgICAgLyogR2V0IHRoZSB2YWx1ZSBvZiB0aGUgY2hpcCAqL1xyXG4gICAgICAgIHZhbHVlID0gKHZhbHVlIHx8ICcnKS50cmltKCk7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wgJiYgdmFsdWUpIHtcclxuICAgICAgICAgICAgc3dpdGNoIChmaWVsZC5pbnB1dFR5cGUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG51bWJlciA9IHBhcnNlSW50KHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobnVtYmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wudmFsdWUucHVzaChudW1iZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlICdmbG9hdCc6XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZsb2F0ID0gcGFyc2VGbG9hdCh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZsb2F0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wudmFsdWUucHVzaChmbG9hdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbC52YWx1ZS5wdXNoKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIYW5kbGVzIGRhdGUgcGlja2VyIG9wZW5lZCBldmVudFxyXG4gICAgICogQHBhcmFtIGRhdGVQaWNrZXIgXHJcbiAgICAgKiBAcGFyYW0gZmllbGQgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBoYW5kbGVEYXRlUGlja2VyT3BlbmVkKGRhdGVQaWNrZXI6IE1hdERhdGVwaWNrZXI8YW55PiwgZmllbGQ6IEZvcm1GaWVsZERlZmluaXRpb24pOiB2b2lkIHtcclxuICAgICAgICBpZiAoZmllbGQ/LmRhdGVQaWNrZXJPcGVuZWQpIHtcclxuICAgICAgICAgICAgZmllbGQuZGF0ZVBpY2tlck9wZW5lZChkYXRlUGlja2VyLCB0aGlzLmZvcm1Hcm91cD8udmFsdWUsIHRoaXMuZm9ybUdyb3VwLCB0aGlzLmNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhhbmRsZXMgZGF0ZSBmaWx0ZXIgZXZlbnRcclxuICAgICAqIEBwYXJhbSBkYXRlUGlja2VyIFxyXG4gICAgICogQHBhcmFtIGZpZWxkIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGFuZGxlRGF0ZVBpY2tlckZpbHRlckFzeW5jKGRhdGVQaWNrZXI6IE1hdERhdGVwaWNrZXI8YW55PiwgZmllbGQ6IEZvcm1GaWVsZERlZmluaXRpb24sIGRhdGU6IERhdGUgfCBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAoZmllbGQ/LmRhdGVGaWx0ZXJBc3luYykge1xyXG4gICAgICAgICAgICAvKiBEaXNhYmxlcyBhbGwgZGF0ZXMgKi9cclxuICAgICAgICAgICAgZGF0ZVBpY2tlci5kYXRlcGlja2VySW5wdXQuZGF0ZUZpbHRlciA9IChkOiBEYXRlKSA9PiBmYWxzZTtcclxuICAgICAgICAgICAgZGF0ZVBpY2tlci5uZ09uQ2hhbmdlcyg8U2ltcGxlQ2hhbmdlcz57ICdkYXRlRmlsdGVyJzogbmV3IFNpbXBsZUNoYW5nZShcIlwiLCBcIlwiLCBmYWxzZSkgfSk7XHJcblxyXG4gICAgICAgICAgICAvKiBWYWxpZGF0ZSBkYXRlIGFzeW5jbHkuICovXHJcbiAgICAgICAgICAgIGZpZWxkLmRhdGVGaWx0ZXJBc3luYyhkYXRlLCB0aGlzLmZvcm1Hcm91cD8udmFsdWUsIHRoaXMuZm9ybUdyb3VwLCB0aGlzLmNvbnRleHQpLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgICAgIGRhdGVQaWNrZXIuZGF0ZXBpY2tlcklucHV0LmRhdGVGaWx0ZXIgPSAoZDogRGF0ZSkgPT4gZCAmJiB4KGQpO1xyXG4gICAgICAgICAgICAgICAgZGF0ZVBpY2tlci5uZ09uQ2hhbmdlcyg8U2ltcGxlQ2hhbmdlcz57ICdkYXRlRmlsdGVyJzogbmV3IFNpbXBsZUNoYW5nZShcIlwiLCBcIlwiLCBmYWxzZSkgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhhbmRsZXMgY2FsZW5kYXIgZmlsdGVyIGV2ZW50XHJcbiAgICAgKiBAcGFyYW0gY2FsZW5kYXIgXHJcbiAgICAgKiBAcGFyYW0gZmllbGQgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBoYW5kbGVDYWxlbmRhckZpbHRlckFzeW5jKGNhbGVuZGFyOiBNYXRDYWxlbmRhcjxhbnk+LCBmaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbiwgZGF0ZTogRGF0ZSB8IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmIChmaWVsZD8uZGF0ZUZpbHRlckFzeW5jKSB7XHJcbiAgICAgICAgICAgIC8qIERpc2FibGVzIGFsbCBkYXRlcyAqL1xyXG4gICAgICAgICAgICBjYWxlbmRhci5kYXRlRmlsdGVyID0gKGQ6IERhdGUpID0+IGZhbHNlO1xyXG4gICAgICAgICAgICBjYWxlbmRhci5uZ09uQ2hhbmdlcyg8U2ltcGxlQ2hhbmdlcz57ICdkYXRlRmlsdGVyJzogbmV3IFNpbXBsZUNoYW5nZShcIlwiLCBcIlwiLCBmYWxzZSkgfSk7XHJcblxyXG4gICAgICAgICAgICAvKiBWYWxpZGF0ZSBkYXRlIGFzeW5jbHkuICovXHJcbiAgICAgICAgICAgIHZhciBzdWJzY3JpcHRpb24gPSBmaWVsZC5kYXRlRmlsdGVyQXN5bmMoZGF0ZSwgdGhpcy5mb3JtR3JvdXA/LnZhbHVlLCB0aGlzLmZvcm1Hcm91cCwgdGhpcy5jb250ZXh0KS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjYWxlbmRhci5kYXRlRmlsdGVyID0gKGQ6IERhdGUpID0+IGQgJiYgeChkKTtcclxuICAgICAgICAgICAgICAgIGNhbGVuZGFyLm5nT25DaGFuZ2VzKDxTaW1wbGVDaGFuZ2VzPnsgJ2RhdGVGaWx0ZXInOiBuZXcgU2ltcGxlQ2hhbmdlKFwiXCIsIFwiXCIsIGZhbHNlKSB9KTtcclxuICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBCdWlsZHMgdGhlIGZvcm0gZmllbGRzXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBidWlsZEZpZWxkcygpOiB2b2lkIHtcclxuICAgICAgICAvKiBHZXQgZm9ybSBkZWZpbml0aW9uICovXHJcbiAgICAgICAgdGhpcy5mb3JtRGVmaW5pdGlvbiA9IGdldEZvcm1EZWZpbml0aW9uKG5ldyB0aGlzLmNsYXNzVHlwZSgpKTtcclxuXHJcbiAgICAgICAgLyogQ3JlYXRlIHRoZSBmcm9tIGZpZWxkcyB1c2luZyB0aGUgZW50aXR5IHR5cGUgKi9cclxuICAgICAgICB0aGlzLmZpZWxkR3JvdXBzID0gdGhpcy5mb3JtRGVmaW5pdGlvbj8uZmllbGRHcm91cHM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2cgdG8gY29uc29sZVxyXG4gICAgICogQHBhcmFtIG1lc3NhZ2UgXHJcbiAgICAgKiBAcGFyYW0gb3B0aW9uYWxQYXJhbXMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBsb2cobWVzc2FnZTogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhtZXNzYWdlLCBvcHRpb25hbFBhcmFtcyk7XHJcbiAgICB9XHJcbn0iLCI8ZGl2ICpuZ0lmPVwiZm9ybUdyb3VwICYmIGZpZWxkUm93c1wiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XHJcbiAgICA8IS0tICNyZWdpb24gRmllbGRzIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGRzIG9mIGZpZWxkUm93czsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgIDxkaXYgbGF5b3V0LWd0LXNtPVwicm93XCIgbGF5b3V0PVwiY29sdW1uXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGZpZWxkc1wiIFtuZ1N3aXRjaF09XCJmaWVsZC50eXBlXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpZWxkLmhpZGUgfHwgIWZpZWxkLmhpZGUoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLndyYXBwZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIFRleHQgaW5wdXQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiRm9ybUZpZWxkVHlwZS5UZXh0XCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgbGF5b3V0LW1hcmdpbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3R5cGVdPVwiZmllbGQuaW5wdXRUeXBlXCIgW21pbmxlbmd0aF09XCJmaWVsZC5taW5MZW5ndGh8fG51bGxcIiBbbWF4bGVuZ3RoXT1cImZpZWxkLm1heExlbmd0aHx8bnVsbFwiIFttaW5dPVwiZmllbGQubWluXCIgW21heF09XCJmaWVsZC5tYXhcIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIiBbcmVhZG9ubHldPVwicmVhZG9ubHkgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1ZmZpeEJ1dHRvbiBvZiBmaWVsZC5zdWZmaXhCdXR0b25zXCIgKGNsaWNrKT1cInN1ZmZpeEJ1dHRvbi5ldmVudCAmJiBzdWZmaXhCdXR0b24uZXZlbnQoZm9ybVZhbHVlLCBjb250ZXh0KVwiIG1hdFN1ZmZpeD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCIhc3VmZml4QnV0dG9uLmhpZGUgfHwgIXN1ZmZpeEJ1dHRvbi5oaWRlKGZvcm1WYWx1ZSwgY29udGV4dClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnt7c3VmZml4QnV0dG9uLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWVdWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBUZXh0YXJlYSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLlRleHRBcmVhXCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgbGF5b3V0LW1hcmdpbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCIgcm93cz1cImZpZWxkLnJvd3N8fDJcIiBbcmVhZG9ubHldPVwicmVhZG9ubHkgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSlcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3VmZml4QnV0dG9uIG9mIGZpZWxkLnN1ZmZpeEJ1dHRvbnNcIiAoY2xpY2spPVwic3VmZml4QnV0dG9uLmV2ZW50ICYmIHN1ZmZpeEJ1dHRvbi5ldmVudChmb3JtVmFsdWUsIGNvbnRleHQpXCIgbWF0U3VmZml4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIiFzdWZmaXhCdXR0b24uaGlkZSB8fCAhc3VmZml4QnV0dG9uLmhpZGUoZm9ybVZhbHVlLCBjb250ZXh0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+e3tzdWZmaXhCdXR0b24uaWNvbn19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiBmb3JtR3JvdXAuY29udHJvbHNbZmllbGQubmFtZV1bJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIEVudW0gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiRm9ybUZpZWxkVHlwZS5FbnVtXCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgbGF5b3V0LW1hcmdpbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmQtc2VsZWN0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiIFtlbnVtXT1cImZpZWxkLmVudW1UeXBlXCIgW2VudW1GaWx0ZXJdPVwiZmllbGQuZW51bUZpbHRlciB8IGZ1bmM6Zm9ybVZhbHVlOmZvcm1Hcm91cDpjb250ZXh0XCIgW2tleV09XCJmaWVsZC5vcHRpb25WYWx1ZVwiIFt0ZXh0XT1cImZpZWxkLm9wdGlvblRleHRcIiBbbXVsdGlwbGVdPVwiZmllbGQubXVsdGlwbGVcIiBbcmVhZG9ubHldPVwicmVhZG9ubHkgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSlcIiBbdHJpZ2dlckNzc0NsYXNzXT1cImZpZWxkLnRyaWdnZXJDc3NDbGFzc1wiIFt0cmlnZ2VyTW9kZV09XCJmaWVsZC50cmlnZ2VyTW9kZVwiIGxheW91dD1cInJvd1wiIGZsZXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHZkLXNlbGVjdC10cmlnZ2VyIGxldC10cmlnZ2VyPVwidHJpZ2dlclwiICpuZ0lmPVwiZmllbGQudHJpZ2dlclRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiZmllbGQudHJpZ2dlclRlbXBsYXRlKHRyaWdnZXIsIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB2ZC1zZWxlY3Qtb3B0aW9uIGxldC1vcHRpb249XCJvcHRpb25cIiAqbmdJZj1cImZpZWxkLm9wdGlvblRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtvdXRlckhUTUxdPVwiZmllbGQub3B0aW9uVGVtcGxhdGUob3B0aW9uLCBmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dClcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3VmZml4QnV0dG9uIG9mIGZpZWxkLnN1ZmZpeEJ1dHRvbnNcIiAoY2xpY2spPVwic3VmZml4QnV0dG9uLmV2ZW50ICYmIHN1ZmZpeEJ1dHRvbi5ldmVudChmb3JtVmFsdWUsIGNvbnRleHQpXCIgbWF0U3VmZml4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIiFzdWZmaXhCdXR0b24uaGlkZSB8fCAhc3VmZml4QnV0dG9uLmhpZGUoZm9ybVZhbHVlLCBjb250ZXh0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+e3tzdWZmaXhCdXR0b24uaWNvbn19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiBmb3JtR3JvdXAuY29udHJvbHNbZmllbGQubmFtZV1bJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIFZkU2VsZWN0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuVmRTZWxlY3RcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBbY2xhc3NdPVwiZmllbGQuY3NzQ2xhc3NcIiBsYXlvdXQtbWFyZ2luPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZC1zZWxlY3QgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCIgW2VuZHBvaW50XT1cImZpZWxkLmVuZHBvaW50IHwgZnVuYzpmb3JtVmFsdWU6Zm9ybUdyb3VwOmNvbnRleHRcIiBbcGFyYW1zXT1cImZpZWxkLnBhcmFtcyB8IGZ1bmM6Zm9ybVZhbHVlOmZvcm1Hcm91cDpjb250ZXh0XCIgW3Byb2plY3Rpb25dPVwiZmllbGQucHJvamVjdGlvblwiIFttYXBwZXJdPVwiZmllbGQubWFwcGVyXCIgW2NvbXBhcmVXaXRoXT1cImZpZWxkLmNvbXBhcmVXaXRoXCIgW2xvYWREYXRhXT1cImZpZWxkLmZldGNoQ29uZGl0aW9uIHwgZnVuYzpmb3JtVmFsdWU6Zm9ybUdyb3VwOmNvbnRleHRcIiBba2V5XT1cImZpZWxkLm9wdGlvblZhbHVlXCIgW3RleHRdPVwiZmllbGQub3B0aW9uVGV4dFwiIFttdWx0aXBsZV09XCJmaWVsZC5tdWx0aXBsZVwiIFtyZWFkb25seV09XCJyZWFkb25seSB8fCAoZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpKVwiIFt0cmlnZ2VyQ3NzQ2xhc3NdPVwiZmllbGQudHJpZ2dlckNzc0NsYXNzXCIgW3RyaWdnZXJNb2RlXT1cImZpZWxkLnRyaWdnZXJNb2RlXCIgKGl0ZW1TZWxlY3RlZCk9XCJmaWVsZC5pdGVtU2VsZWN0ICYmIGZpZWxkLml0ZW1TZWxlY3QoJGV2ZW50LCBmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCk7XCIgKGl0ZW1DaGFuZ2UpPVwiZmllbGQuaXRlbUNoYW5nZSAmJiBmaWVsZC5pdGVtQ2hhbmdlKCRldmVudCwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpO1wiIGxheW91dD1cInJvd1wiIGZsZXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHZkLXNlbGVjdC10cmlnZ2VyIGxldC10cmlnZ2VyPVwidHJpZ2dlclwiICpuZ0lmPVwiZmllbGQudHJpZ2dlclRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiZmllbGQudHJpZ2dlclRlbXBsYXRlKHRyaWdnZXIsIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB2ZC1zZWxlY3QtdHJpZ2dlciBsZXQtdHJpZ2dlcj1cInRyaWdnZXJcIiAqbmdJZj1cImZpZWxkLnRyaWdnZXJNYXBwZXIgJiYgZmllbGQubXVsdGlwbGUgJiYgZmllbGQudHJpZ2dlck1vZGUgPT0gJ2NoaXAnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHRyaWdnZXJcIiBjbGFzcz1cIm1hdC1tZGMtY2hpcCBtYXQtbWRjLXN0YW5kYXJkLWNoaXAgbWF0LXByaW1hcnkgbWF0LW1kYy1jaGlwLXNlbGVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImZpZWxkLnRyaWdnZXJNYXBwZXIoaXRlbSwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgdmQtc2VsZWN0LW9wdGlvbiBsZXQtb3B0aW9uPVwib3B0aW9uXCIgKm5nSWY9XCJmaWVsZC5vcHRpb25UZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbb3V0ZXJIVE1MXT1cImZpZWxkLm9wdGlvblRlbXBsYXRlKG9wdGlvbiwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZkLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1ZmZpeEJ1dHRvbiBvZiBmaWVsZC5zdWZmaXhCdXR0b25zXCIgKGNsaWNrKT1cInN1ZmZpeEJ1dHRvbi5ldmVudCAmJiBzdWZmaXhCdXR0b24uZXZlbnQoZm9ybVZhbHVlLCBjb250ZXh0KVwiIG1hdFN1ZmZpeD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCIhc3VmZml4QnV0dG9uLmhpZGUgfHwgIXN1ZmZpeEJ1dHRvbi5oaWRlKGZvcm1WYWx1ZSwgY29udGV4dClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnt7c3VmZml4QnV0dG9uLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWVdWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBWZExpc3QgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiRm9ybUZpZWxkVHlwZS5WZExpc3RcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBbY2xhc3NdPVwiZmllbGQuY3NzQ2xhc3NcIiBmbG9hdExhYmVsPVwiYWx3YXlzXCIgY2xhc3M9XCJmb3JtLWZpZWxkLXR5cGUtbGlzdFwiIGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZkLWxpc3QgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCIgW2VuZHBvaW50XT1cImZpZWxkLmVuZHBvaW50IHwgZnVuYzpmb3JtVmFsdWU6Zm9ybUdyb3VwOmNvbnRleHRcIiBbcGFyYW1zXT1cImZpZWxkLnBhcmFtcyB8IGZ1bmM6Zm9ybVZhbHVlOmZvcm1Hcm91cDpjb250ZXh0XCIgW3Byb2plY3Rpb25dPVwiZmllbGQucHJvamVjdGlvblwiIFttYXBwZXJdPVwiZmllbGQubWFwcGVyXCIgW2NvbXBhcmVXaXRoXT1cImZpZWxkLmNvbXBhcmVXaXRoXCIgW2xvYWREYXRhXT1cImZpZWxkLmZldGNoQ29uZGl0aW9uIHwgZnVuYzpmb3JtVmFsdWU6Zm9ybUdyb3VwOmNvbnRleHRcIiBba2V5XT1cImZpZWxkLm9wdGlvblZhbHVlXCIgW3RleHRdPVwiZmllbGQub3B0aW9uVGV4dFwiIFttdWx0aXBsZV09XCJmaWVsZC5tdWx0aXBsZVwiIFtyZWFkb25seV09XCJyZWFkb25seSB8fCAoZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpKVwiIChpdGVtU2VsZWN0ZWQpPVwiZmllbGQuaXRlbVNlbGVjdCAmJiBmaWVsZC5pdGVtU2VsZWN0KCRldmVudCwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpO1wiIChpdGVtQ2hhbmdlKT1cImZpZWxkLml0ZW1DaGFuZ2UgJiYgZmllbGQuaXRlbUNoYW5nZSgkZXZlbnQsIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KTtcIiBbc3R5bGUubWF4LXdpZHRoXT1cImZpZWxkLm1heFdpZHRoXCIgW3N0eWxlLm1heC1oZWlnaHRdPVwiZmllbGQubWF4SGVpZ2h0XCIgZmxleD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgdmQtbGlzdC1vcHRpb24gbGV0LW9wdGlvbj1cIm9wdGlvblwiICpuZ0lmPVwiZmllbGQub3B0aW9uVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW291dGVySFRNTF09XCJmaWVsZC5vcHRpb25UZW1wbGF0ZShvcHRpb24sIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92ZC1saXN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiBmb3JtR3JvdXAuY29udHJvbHNbZmllbGQubmFtZV1bJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIENoaXBzIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuQ2hpcHNcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBbY2xhc3NdPVwiZmllbGQuY3NzQ2xhc3NcIiBsYXlvdXQtbWFyZ2luPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hpcC1ncmlkICNjaGlwTGlzdCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIiBbZGlzYWJsZUNvbnRyb2xdPVwicmVhZG9ubHkgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNoaXAtcm93ICpuZ0Zvcj1cImxldCBjaGlwIG9mIGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lXT8udmFsdWVcIiAocmVtb3ZlZCk9XCJyZW1vdmVDaGlwKGZpZWxkLCBjaGlwKVwiIGNvbG9yPVwicHJpbWFyeVwiIHNlbGVjdGFibGU9XCJ0cnVlXCIgc2VsZWN0ZWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7Y2hpcH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdENoaXBSZW1vdmU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2FuY2VsPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2hpcC1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtwbGFjZWhvbGRlcl09XCIkYW55KGZpZWxkLmxhYmVsKVwiICNjaGlwSW5wdXQgW21hdENoaXBJbnB1dEZvcl09XCJjaGlwTGlzdFwiIFttYXRDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2Rlc109XCJzZXBhcmF0b3JLZXlzQ29kZXNcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImNoaXBBdXRvY29tcGxldGVcIiAoaW5wdXQpPVwiZmlsdGVyQXV0b2NvbXBsZXRlKGZpZWxkLCBjaGlwSW5wdXQpXCIgKG1hdENoaXBJbnB1dFRva2VuRW5kKT1cImFkZENoaXAoZmllbGQsICRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNoaXAtZ3JpZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlIGF1dG9BY3RpdmVGaXJzdE9wdGlvbiAjY2hpcEF1dG9jb21wbGV0ZT1cIm1hdEF1dG9jb21wbGV0ZVwiIFtjbGFzc109XCJmaWVsZC5hdXRvY29tcGxldGVDc3NDbGFzc1wiIChvcHRpb25TZWxlY3RlZCk9XCJhdXRvY29tcGxldGVWYWx1ZVNlbGVjdGVkKGZpZWxkLCAkZXZlbnQsIGNoaXBJbnB1dClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGF1dG9jb21wbGV0ZUZpbHRlcmVkT3B0aW9uc1tmaWVsZC5uYW1lXVwiIFt2YWx1ZV09XCJvcHRpb24uaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvcHRpb24ubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3VmZml4QnV0dG9uIG9mIGZpZWxkLnN1ZmZpeEJ1dHRvbnNcIiAoY2xpY2spPVwic3VmZml4QnV0dG9uLmV2ZW50ICYmIHN1ZmZpeEJ1dHRvbi5ldmVudChmb3JtVmFsdWUsIGNvbnRleHQpXCIgbWF0U3VmZml4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIiFzdWZmaXhCdXR0b24uaGlkZSB8fCAhc3VmZml4QnV0dG9uLmhpZGUoZm9ybVZhbHVlLCBjb250ZXh0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+e3tzdWZmaXhCdXR0b24uaWNvbn19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiBmb3JtR3JvdXAuY29udHJvbHNbZmllbGQubmFtZV1bJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIFZkQ2hpcHMgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiRm9ybUZpZWxkVHlwZS5WZENoaXBzXCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgbGF5b3V0LW1hcmdpbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmQtY2hpcHMgI3ZkQ2hpcCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIiBbZW5kcG9pbnRdPVwiZmllbGQuZW5kcG9pbnQgfCBmdW5jOmZvcm1WYWx1ZTpmb3JtR3JvdXA6Y29udGV4dFwiIFtwYXJhbXNdPVwiZmllbGQucGFyYW1zIHwgZnVuYzpmb3JtVmFsdWU6Zm9ybUdyb3VwOmNvbnRleHRcIiBbc2VhcmNoRmllbGRdPVwiZmllbGQuc2VhcmNoRmllbGRcIiBbY2xhc3NUeXBlXT1cImZpZWxkLmNsYXNzVHlwZVwiIFtwcm9qZWN0aW9uXT1cImZpZWxkLnByb2plY3Rpb25cIiBba2V5XT1cImZpZWxkLm9wdGlvblZhbHVlXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5IHx8IChmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpXCIgW3JlbW92YWJsZV09XCIhZmllbGQuY2xlYXJcIiBbY29udGV4dF09XCJjb250ZXh0XCIgW3N1ZmZpeEJ1dHRvbnNdPVwiZmllbGQuc3VmZml4QnV0dG9uc1wiIFthdXRvY29tcGxldGVDc3NDbGFzc109XCJmaWVsZC5hdXRvY29tcGxldGVDc3NDbGFzc1wiIChpbml0U2VsZWN0KT1cImZpZWxkLml0ZW1TZWxlY3QgJiYgZmllbGQuaXRlbVNlbGVjdCgkZXZlbnQsIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KTtcIiAoc2VsZWN0ZWQpPVwiZmllbGQuaXRlbUNoYW5nZSAmJiBmaWVsZC5pdGVtQ2hhbmdlKCRldmVudCwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpO1wiIChjbGVhcmVkKT1cImZpZWxkLmNsZWFyICYmIGZpZWxkLmNsZWFyKGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KTtcIiBbY3VzdG9tVmFsdWVdPVwiZmllbGQuY3VzdG9tVmFsdWVcIiBsYXlvdXQ9XCJyb3dcIiBmbGV4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB2ZC1jaGlwIGxldC1jaGlwPVwiY2hpcFwiICpuZ0lmPVwiZmllbGQuY2hpcFRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW291dGVySFRNTF09XCJmaWVsZC5jaGlwVGVtcGxhdGUoY2hpcCwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgdmQtYXV0b2NvbXBsZXRlLW9wdGlvbiBsZXQtb3B0aW9uPVwib3B0aW9uXCIgKm5nSWY9XCJmaWVsZC5hdXRvY29tcGxldGVUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtvdXRlckhUTUxdPVwiZmllbGQuYXV0b2NvbXBsZXRlVGVtcGxhdGUob3B0aW9uLCBmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dClcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92ZC1jaGlwcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJ2ZENoaXAuZW1wdHlSZXN1bHRcIiBjbGFzcz1cInRjLXJlZC00MDBcIiBpMThuPVwiQEBub1Jlc3VsdHNGb3VuZFwiPk5vIHJlc3VsdHMgd2VyZSBmb3VuZC48L21hdC1oaW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mIGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lXVsnZXJyb3JNZXNzYWdlcyddXCI+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gU2VsZWN0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuU2VsZWN0XCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgbGF5b3V0LW1hcmdpbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIiBbbXVsdGlwbGVdPVwiZmllbGQubXVsdGlwbGVcIiBbZGlzYWJsZUNvbnRyb2xdPVwicmVhZG9ubHkgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSlcIiBmbGV4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmllbGQub3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb24uaWRcIj57e29wdGlvbi5uYW1lfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWZmaXhCdXR0b24gb2YgZmllbGQuc3VmZml4QnV0dG9uc1wiIChjbGljayk9XCJzdWZmaXhCdXR0b24uZXZlbnQgJiYgc3VmZml4QnV0dG9uLmV2ZW50KGZvcm1WYWx1ZSwgY29udGV4dClcIiBtYXRTdWZmaXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiIXN1ZmZpeEJ1dHRvbi5oaWRlIHx8ICFzdWZmaXhCdXR0b24uaGlkZShmb3JtVmFsdWUsIGNvbnRleHQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj57e3N1ZmZpeEJ1dHRvbi5pY29ufX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJmaWVsZC5oaW50XCI+e3tmaWVsZC5oaW50fX08L21hdC1oaW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mIGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lXVsnZXJyb3JNZXNzYWdlcyddXCI+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gQXV0b2NvbXBsZXRlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuQXV0b2NvbXBsZXRlXCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgbGF5b3V0LW1hcmdpbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIiBbbWluXT1cImZpZWxkLm1pblwiIFttYXhdPVwiZmllbGQubWF4XCIgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCIgI2F1dG9jb21wbGV0ZUlucHV0IChpbnB1dCk9XCJmaWx0ZXJBdXRvY29tcGxldGUoZmllbGQsIGF1dG9jb21wbGV0ZUlucHV0KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFtyZWFkb25seV09XCJyZWFkb25seSB8fCAoZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgW2NsYXNzXT1cImZpZWxkLmF1dG9jb21wbGV0ZUNzc0NsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBhdXRvY29tcGxldGVGaWx0ZXJlZE9wdGlvbnNbZmllbGQubmFtZV1cIiBbdmFsdWVdPVwib3B0aW9uLmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7b3B0aW9uLm5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1ZmZpeEJ1dHRvbiBvZiBmaWVsZC5zdWZmaXhCdXR0b25zXCIgKGNsaWNrKT1cInN1ZmZpeEJ1dHRvbi5ldmVudCAmJiBzdWZmaXhCdXR0b24uZXZlbnQoZm9ybVZhbHVlLCBjb250ZXh0KVwiIG1hdFN1ZmZpeD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCIhc3VmZml4QnV0dG9uLmhpZGUgfHwgIXN1ZmZpeEJ1dHRvbi5oaWRlKGZvcm1WYWx1ZSwgY29udGV4dClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnt7c3VmZml4QnV0dG9uLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWVdWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBEYXRlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuRGF0ZVwiIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIFtjbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiIGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiIFttaW5dPVwiZmllbGQubWluXCIgW21heF09XCJmaWVsZC5tYXhcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBbbWF0RGF0ZXBpY2tlcl09XCJkYXRlUGlja2VyXCIgW21hdERhdGVwaWNrZXJGaWx0ZXJdPVwiZmllbGQuZGF0ZUZpbHRlclwiIFtyZWFkb25seV09XCJyZWFkb25seSB8fCBmaWVsZC5mb3JjZVNlbGVjdCB8fCAoZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJkYXRlUGlja2VyXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI2RhdGVQaWNrZXIgW2Rpc2FibGVkXT1cInJlYWRvbmx5IHx8IChmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpXCIgKG1vbnRoU2VsZWN0ZWQpPVwiaGFuZGxlRGF0ZVBpY2tlckZpbHRlckFzeW5jKGRhdGVQaWNrZXIsIGZpZWxkLCAkZXZlbnQgKVwiIChvcGVuZWQpPVwiaGFuZGxlRGF0ZVBpY2tlck9wZW5lZChkYXRlUGlja2VyLCBmaWVsZClcIiBbY2FsZW5kYXJIZWFkZXJDb21wb25lbnRdPVwiZGF0ZVBpY2tlckhlYWRlckNvbXBvbmVudFwiPjwvbWF0LWRhdGVwaWNrZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJmaWVsZC5oaW50XCI+e3tmaWVsZC5oaW50fX08L21hdC1oaW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mIGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lXVsnZXJyb3JNZXNzYWdlcyddXCI+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gQ2FsZW5kYXIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiRm9ybUZpZWxkVHlwZS5DYWxlbmRhclwiIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIFtjbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiIGZsb2F0TGFiZWw9XCJhbHdheXNcIiBjbGFzcz1cImZvcm0tZmllbGQtdHlwZS1jYWxlbmRhclwiIGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlucHV0PVwiaGlkZGVuXCIgaGlkZGVuIG1hdElucHV0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jYWxlbmRhciAjY2FsZW5kYXIgW3NlbGVjdGVkXT1cImZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSkudmFsdWVcIiAoc2VsZWN0ZWRDaGFuZ2UpPVwiZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKS5zZXRWYWx1ZSgkZXZlbnQpO1wiIChtb250aFNlbGVjdGVkKT1cImhhbmRsZUNhbGVuZGFyRmlsdGVyQXN5bmMoY2FsZW5kYXIsIGZpZWxkLCAkZXZlbnQgKVwiIFtoZWFkZXJDb21wb25lbnRdPVwiZGF0ZVBpY2tlckhlYWRlckNvbXBvbmVudFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+PC9tYXQtY2FsZW5kYXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWVdWydlcnJvck1lc3NhZ2VzJ11cIiBsYXlvdXQtbWFyZ2luPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gQ2hlY2tib3ggLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiRm9ybUZpZWxkVHlwZS5DaGVja2JveFwiIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIFtjbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiIFtkaXNhYmxlQ29udHJvbF09XCJyZWFkb25seSB8fCAoZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpKVwiPnt7ZmllbGQubGFiZWx9fTwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIEVkaXRvciAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkVkaXRvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJlZGl0b3JUZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJlZGl0b3JUZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIGZvcm1Hcm91cDogZm9ybUdyb3VwIH1cIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIENvZGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiRm9ybUZpZWxkVHlwZS5Db2RlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImNvZGVUZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2RlVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBmb3JtR3JvdXA6IGZvcm1Hcm91cCB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBGaWxlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuRmlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgbGF5b3V0LW1hcmdpbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHZkLWZpbGUtaW5wdXQgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCIgKHNlbGVjdCk9XCJmaWVsZC5jaGFuZ2UgJiYgZmllbGQuY2hhbmdlKGZpZWxkLCAkZXZlbnQsIGZvcm1Hcm91cCwgY29udGV4dClcIiBbYWNjZXB0XT1cImZpZWxkLmZpbGVFeHRlbnNpb25zXCIgW2Rpc2FibGVDb250cm9sXT1cInJlYWRvbmx5IHx8IChmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpXCIgZmxleD48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBDdXN0b20gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiRm9ybUZpZWxkVHlwZS5DdXN0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiY3VzdG9tVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBmb3JtR3JvdXA6IGZvcm1Hcm91cCB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8IS0tICNyZWdpb24gVGVtcGxhdGUgZm9yIGN1c3RvbSBmaWVsZHMgLS0+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGN1c3RvbUZpZWxkIG9mIGN1c3RvbUZpZWxkc1RlbXBsYXRlc1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiY3VzdG9tRmllbGQ/LnRlbXBsYXRlUmVmICYmIGN1c3RvbUZpZWxkLnJvdyA9PSBmaWVsZHNbMF0/LnJvdyAmJiBjdXN0b21GaWVsZC5pbmxpbmVcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21GaWVsZD8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2Zvcm1Hcm91cDogZm9ybUdyb3VwfVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gI3JlZ2lvbiBUZW1wbGF0ZSBmb3IgY3VzdG9tIGZpZWxkcyAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUZpZWxkc1wiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Zm9ybUdyb3VwOiBmb3JtR3JvdXAsIHJvdzogZmllbGRzWzBdPy5yb3cgKyAxfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGN1c3RvbUZpZWxkIG9mIGN1c3RvbUZpZWxkc1RlbXBsYXRlc1wiPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJjdXN0b21GaWVsZD8udGVtcGxhdGVSZWYgJiYgY3VzdG9tRmllbGQucm93ID09IChmaWVsZHNbMF0/LnJvdysxKSAmJiAhY3VzdG9tRmllbGQuaW5saW5lXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tRmllbGQ/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntmb3JtR3JvdXA6IGZvcm1Hcm91cH1cIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgIDwhLS0gI3JlZ2lvbiBGb3JtIGJvdHRvbSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYm90dG9tXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntmb3JtR3JvdXA6IGZvcm1Hcm91cH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICA8IS0tICNyZWdpb24gRGVidWcgdmFsdWUgLS0+XHJcbiAgICA8Y29kZSAqbmdJZj1cImRlYnVnVmFsdWVcIj5cclxuICAgICAgICA8cHJlPnt7Zm9ybVZhbHVlIHwganNvbn19PC9wcmU+XHJcbiAgICA8L2NvZGU+XHJcbiAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcbjwvZGl2PiJdfQ==
|
package/fesm2015/messaia-cdk.mjs
CHANGED
|
@@ -18596,14 +18596,15 @@ class VdGenericFormComponent {
|
|
|
18596
18596
|
this.buildFields();
|
|
18597
18597
|
}
|
|
18598
18598
|
/* Get filed rows */
|
|
18599
|
-
|
|
18599
|
+
let fieldRows = (_b = (_a = this.fieldGroups) === null || _a === void 0 ? void 0 : _a.filter(x => { var _a, _b; return ((_a = x.name) === null || _a === void 0 ? void 0 : _a.trim()) == ((_b = this.groupName) === null || _b === void 0 ? void 0 : _b.trim()); })[0]) === null || _b === void 0 ? void 0 : _b.groups;
|
|
18600
|
+
this.fieldRows = fieldRows.map(a => { return [...a.map(y => { return Object.assign({}, y); })]; });
|
|
18600
18601
|
/* Filter by field set */
|
|
18601
18602
|
if (this.fieldSets) {
|
|
18602
18603
|
this.fieldRows = this.fieldRows.map(x => x = x.filter(y => { var _a; return (_a = y.fieldSets) === null || _a === void 0 ? void 0 : _a.some(z => { var _a; return (_a = this.fieldSets) === null || _a === void 0 ? void 0 : _a.some(a => { var _a, _b; return ((_a = a === null || a === void 0 ? void 0 : a.trim()) === null || _a === void 0 ? void 0 : _a.toLowerCase()) == ((_b = z === null || z === void 0 ? void 0 : z.trim()) === null || _b === void 0 ? void 0 : _b.toLowerCase()); }); }); })).filter(x => x.length);
|
|
18603
18604
|
}
|
|
18604
18605
|
/* Get all fields */
|
|
18605
18606
|
let fields = (_c = this.fieldRows) === null || _c === void 0 ? void 0 : _c.reduce((a, b) => a.concat(b), []);
|
|
18606
|
-
this.fields =
|
|
18607
|
+
this.fields = fields.map(a => { return Object.assign({}, a); });
|
|
18607
18608
|
/* Subscrie to change event */
|
|
18608
18609
|
(_d = fields === null || fields === void 0 ? void 0 : fields.filter(y => y.type != FormFieldType.File && y.change)) === null || _d === void 0 ? void 0 : _d.forEach(x => {
|
|
18609
18610
|
var _a, _b, _c;
|