@tsi-developpement/tsi-shared-ui 1.9.8 → 1.9.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/end-points/endpoints.mjs +2 -2
- package/esm2022/lib/models/entity-info/entity-info.mjs +1 -1
- package/esm2022/lib/tsi-components/create-or-edit-entity-informations/create-or-edit-entity-informations.component.mjs +3 -3
- package/esm2022/lib/tsi-components/input-components/tsi-search-combo/tsi-search-combo.component.mjs +11 -1
- package/esm2022/lib/tsi-components/tsi-action-erp-create-or-edit/tsi-action-erp-create-or-edit.component.mjs +52 -32
- package/esm2022/lib/tsi-components/tsi-action-erp-list/tsi-action-erp-list.component.mjs +5 -5
- package/esm2022/lib/tsi-components/tsi-generic-crud/tsi-generic-crud.component.mjs +2 -2
- package/fesm2022/tsi-developpement-tsi-shared-ui.mjs +81 -52
- package/fesm2022/tsi-developpement-tsi-shared-ui.mjs.map +1 -1
- package/lib/end-points/endpoints.d.ts +1 -1
- package/lib/models/entity-info/entity-info.d.ts +1 -0
- package/lib/providers/shared-ui-tsi.provider.d.ts +1 -1
- package/lib/tsi-components/manage-reporting/add-report-popup/add-report-popup.component.d.ts +1 -1
- package/lib/tsi-components/tsi-action-erp-create-or-edit/tsi-action-erp-create-or-edit.component.d.ts +5 -1
- package/lib/tsi-components/tsi-upload-fiche/tsi-upload-fiche.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -122,7 +122,7 @@ export class TsiActionErpListComponent extends TsiListBaseComponent {
|
|
|
122
122
|
{
|
|
123
123
|
labelValue: 'actionerp_dateHeureDebutPrev_du',
|
|
124
124
|
field: 'dateHeureDebutPrev',
|
|
125
|
-
type: InputTypes.
|
|
125
|
+
type: InputTypes.DATE,
|
|
126
126
|
minValue: dateDebut,
|
|
127
127
|
styleClass: 'col-4',
|
|
128
128
|
inputStyleClass: 'col-6',
|
|
@@ -132,7 +132,7 @@ export class TsiActionErpListComponent extends TsiListBaseComponent {
|
|
|
132
132
|
{
|
|
133
133
|
labelValue: 'actionerp_dateHeureFinPrev_au',
|
|
134
134
|
field: 'dateHeureFinPrev',
|
|
135
|
-
type: InputTypes.
|
|
135
|
+
type: InputTypes.DATE,
|
|
136
136
|
maxValue: dateFin,
|
|
137
137
|
styleClass: 'col-4',
|
|
138
138
|
inputStyleClass: 'col-6',
|
|
@@ -142,7 +142,7 @@ export class TsiActionErpListComponent extends TsiListBaseComponent {
|
|
|
142
142
|
{
|
|
143
143
|
labelValue: 'actionerp_dateHeureDebutRealisee_du',
|
|
144
144
|
field: 'dateHeureDebutRealisee',
|
|
145
|
-
type: InputTypes.
|
|
145
|
+
type: InputTypes.DATE,
|
|
146
146
|
minValue: dateDebut,
|
|
147
147
|
styleClass: 'col-4',
|
|
148
148
|
inputStyleClass: 'col-6',
|
|
@@ -152,7 +152,7 @@ export class TsiActionErpListComponent extends TsiListBaseComponent {
|
|
|
152
152
|
{
|
|
153
153
|
labelValue: 'actionerp_dateHeureFinRealisee_au',
|
|
154
154
|
field: 'dateHeureFinRealisee',
|
|
155
|
-
type: InputTypes.
|
|
155
|
+
type: InputTypes.DATE,
|
|
156
156
|
maxValue: dateFin,
|
|
157
157
|
styleClass: 'col-4',
|
|
158
158
|
inputStyleClass: 'col-6',
|
|
@@ -192,4 +192,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
192
192
|
type: Component,
|
|
193
193
|
args: [{ selector: 'lib-tsi-action-erp-list', providers: [...appProviders], template: "<Tsi-Generic-Crud \r\n[cudComponent]=\"comp\" \r\n[header]=\"titleComponent\" \r\n[columns]=\"columns\" \r\n[crudService]=\"actionservice\"\r\n[modalSize]=\"modalSize\"\r\n[showUploadButton]=\"false\"\r\n[showNoteButton]=\"false\"\r\npresentationDesigner [id]=\"'lib-tsi-action-erp-list'\" \r\n[searchFields]=\"searchFields\" \r\n[modalData]=\"modalData\"\r\n[businessClass]=\"businessClass\"></Tsi-Generic-Crud>\r\n" }]
|
|
194
194
|
}], ctorParameters: () => [{ type: i1.IdentityManagerService }, { type: i1.ActionErpService }, { type: i2.DynamicDialogConfig }, { type: i2.DynamicDialogRef }] });
|
|
195
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWFjdGlvbi1lcnAtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvdHNpLWFjdGlvbi1lcnAtbGlzdC90c2ktYWN0aW9uLWVycC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktYWN0aW9uLWVycC1saXN0L3RzaS1hY3Rpb24tZXJwLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDdkcsT0FBTyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRzFGLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLElBQUksQ0FBQztBQUN2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsU0FBUyxFQUFrQixNQUFNLGtDQUFrQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7QUFPdkUsTUFBTSxPQUFPLHlCQUEwQixTQUFRLG9CQUFvQjtJQW9FakUsWUFDVyx1QkFBK0MsRUFDakQsYUFBK0IsRUFDdEIsTUFBNEIsRUFFNUIsZ0JBQW1DO1FBRW5ELEtBQUssQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQU52Qiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXdCO1FBQ2pE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QVUsRUFBRSxJQUFJO2dCQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLFNBQVM7Z0JBQ25ELFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxLQUFLO2FBQ25DO1NBQ0YsQ0FBQTtJQUNILENBQUM7SUFDUSxRQUFRO1FBQ2hCLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsSUFBSSxHQUFHLGlDQUFpQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxjQUFjLEdBQUcseUJBQXlCLENBQUM7UUFDaEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFDLEtBQUssRUFBRyxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBRy9GLENBQUM7K0dBdExVLHlCQUF5QjttR0FBekIseUJBQXlCLGtEQUZ6QixDQUFDLEdBQUcsWUFBWSxDQUFDLGlEQ2Y5QixrYUFZQTs7NEZES2EseUJBQXlCO2tCQU5yQyxTQUFTOytCQUNFLHlCQUF5QixhQUd4QixDQUFDLEdBQUcsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGFwcFByb3ZpZGVycyB9IGZyb20gJy4uLy4uL2NvbnN0cy9hcHAtcHJvdmlkZXJzJztcclxuaW1wb3J0IHsgVHNpTGlzdEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi90c2ktYmFzZS9jb21wb25lbnRzL3RzaS1saXN0LWJhc2UvdHNpLWxpc3QtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEaXNwbGF5VHlwZXMsIEZpbHRlck9wZXJhdG9yVHlwZSwgSW5wdXRUeXBlcywgTW9kYWxTaXplRW51bSB9IGZyb20gJy4uLy4uL2VudW1zJztcclxuaW1wb3J0IHsgR3JpZENvbHVtbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBBY3Rpb25FcnBTZXJ2aWNlLCBJZGVudGl0eU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBUc2lBY3Rpb25FcnBDcmVhdGVPckVkaXRDb21wb25lbnQgfSBmcm9tICcuLic7XHJcbmltcG9ydCB7IEFkbWluaXN0cmF0aW9uRW5kcG9pbnRzIH0gZnJvbSAnLi4vLi4vZW5kLXBvaW50cyc7XHJcbmltcG9ydCB7IER5bmFtaWNEaWFsb2dDb25maWcsIER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5pbXBvcnQgeyBBY3Rpb25FUlAsIG9jY3VyZW5jZUluZm9zIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FjdGlvbkVycC9hY3Rpb25FcnAnO1xyXG5pbXBvcnQgeyBCdXNpbmVzc0NsYXNzTmFtZXMgfSBmcm9tICcuLi8uLi9jb25zdHMvYnVzaW5lc3MtY2xhc3MtbmFtZXMnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi10c2ktYWN0aW9uLWVycC1saXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHNpLWFjdGlvbi1lcnAtbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3RzaS1hY3Rpb24tZXJwLWxpc3QuY29tcG9uZW50LmNzcycsXHJcbiAgcHJvdmlkZXJzOiBbLi4uYXBwUHJvdmlkZXJzXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHNpQWN0aW9uRXJwTGlzdENvbXBvbmVudCBleHRlbmRzIFRzaUxpc3RCYXNlQ29tcG9uZW50IHtcclxuXHJcbiAgaXNMb2FkQ3VycmVudFVzZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWxlY3RlZERlbWFuZGV1cjogYW55ID0gbnVsbDtcclxuICBzZWxlY3RlZEFzc2lnbmU6IGFueSA9IG51bGw7XHJcbiAgbW9kYWxEYXRhOiBhbnkgPSB7fTtcclxuICBhY3Rpb24gPSBuZXcgQWN0aW9uRVJQKCk7XHJcbiAgdXNlcnM6IGFueVtdID0gW107XHJcbiAgb3ZlcnJpZGUgY29sdW1uczogQXJyYXk8R3JpZENvbHVtbj4gPSBbXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25fc3RhdHV0JyxcclxuICAgICAgZmllbGQ6ICdzdGF0dXQnLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbl91dGlsaXNhdGV1ckRlbWFuZGV1cicsXHJcbiAgICAgIGZpZWxkOiAndXRpbGlzYXRldXJEZW1hbmRldXJOb21Db21wbGV0JyxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25fdXRpbGlzYXRldXJBc3NpZ25lJyxcclxuICAgICAgZmllbGQ6ICd1dGlsaXNhdGV1ckFzc2lnbmVOb21Db21wbGV0JyxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25fbnVtZXJvJyxcclxuICAgICAgZmllbGQ6ICdudW1lcm8nLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbl9vYmpldCcsXHJcbiAgICAgIGZpZWxkOiAnb2JqZXQnLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbl9yZXN1bHRhdCcsXHJcbiAgICAgIGZpZWxkOiAncmVzdWx0YXQnLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbl9wcmlvcml0ZScsXHJcbiAgICAgIGZpZWxkOiAncHJpb3JpdGUnLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbl9saWV1JyxcclxuICAgICAgZmllbGQ6ICdsaWV1JyxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogJ2FjdGlvbl9kYXRlRGVidXRQcmV2JyxcclxuICAgICAgZmllbGQ6ICdkYXRlSGV1cmVEZWJ1dFByZXYnLFxyXG4gICAgICB0eXBlOiBEaXNwbGF5VHlwZXMuREFURVRJTUVfRElTUExBWSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogJ2FjdGlvbl9kYXRlRmluUHJldicsXHJcbiAgICAgIGZpZWxkOiAnZGF0ZUhldXJlRmluUHJldicsXHJcbiAgICAgIHR5cGU6IERpc3BsYXlUeXBlcy5EQVRFVElNRV9ESVNQTEFZLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiAnYWN0aW9uX2RhdGVEZWJ1dFJlYWxpc2VlJyxcclxuICAgICAgZmllbGQ6ICdkYXRlSGV1cmVEZWJ1dFJlYWxpc2VlJyxcclxuICAgICAgdHlwZTogRGlzcGxheVR5cGVzLkRBVEVUSU1FX0RJU1BMQVksXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6ICdhY3Rpb25fZGF0ZUZpblJlYWxpc2VlJyxcclxuICAgICAgZmllbGQ6ICdkYXRlSGV1cmVGaW5SZWFsaXNlZScsXHJcbiAgICAgIHR5cGU6IERpc3BsYXlUeXBlcy5EQVRFVElNRV9ESVNQTEFZLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbl9hbGVydGUnLFxyXG4gICAgICBmaWVsZDogJ2FsZXJ0ZScsXHJcbiAgICAgIHR5cGU6IERpc3BsYXlUeXBlcy5DSEVDS0JPWF9ESVNQTEFZLFxyXG4gICAgfVxyXG5cclxuICBdO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSAgX2lkZW50aXR5TWFuYWdlclNlcnZpY2U6IElkZW50aXR5TWFuYWdlclNlcnZpY2UsXHJcbiAgICBwdWJsaWMgYWN0aW9uc2VydmljZTogQWN0aW9uRXJwU2VydmljZSxcclxuICAgIHB1YmxpYyBvdmVycmlkZSBjb25maWc/OiBEeW5hbWljRGlhbG9nQ29uZmlnLFxyXG5cclxuICAgIHB1YmxpYyBvdmVycmlkZSBfZGlhbG9nUmVmZXJlbmNlPzogRHluYW1pY0RpYWxvZ1JlZlxyXG4gICkge1xyXG4gICAgc3VwZXIoY29uZmlnLCBfZGlhbG9nUmVmZXJlbmNlKTtcclxuICAgIHRoaXMuYnVzaW5lc3NDbGFzcyA9IEJ1c2luZXNzQ2xhc3NOYW1lcy5BY3Rpb25FUlA7XHJcblxyXG4gICAgaWYgKGNvbmZpZyAmJiBjb25maWcuZGF0YSAmJiBjb25maWcuZGF0YS5vY2N1cmVuY2VJbmZvcykge1xyXG4gICAgICBsZXQgb2NjdXJlbmNlSW5mb3MgPSBjb25maWcuZGF0YS5vY2N1cmVuY2VJbmZvcyBhcyBvY2N1cmVuY2VJbmZvcztcclxuICAgICAgdGhpcy5tb2RhbERhdGEgPSB7IG9jY3VyZW5jZUluZm9zOiBvY2N1cmVuY2VJbmZvcyB9O1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBkYXRlRGVidXQgPSBuZXcgRGF0ZShuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCksIDAsIDEpO1xyXG4gICAgdmFyIGRhdGVGaW4gPSBuZXcgRGF0ZShuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCksIDExLCAzMSwgMjMsIDU5LCA1OSk7XHJcbiAgICB0aGlzLnNlYXJjaEZpZWxkcyA9IFtcclxuICAgICAge1xyXG5cclxuICAgICAgICBmaWVsZDogJ3V0aWxpc2F0ZXVyRGVtYW5kZXVyJyxcclxuICAgICAgICBsYWJlbFZhbHVlOiAnZmlsdHJlX2RlbWFuZGV1cicsXHJcbiAgICAgICAgdHlwZTogSW5wdXRUeXBlcy5TRUFSQ0hfQ09NQk8sXHJcbiAgICAgICAgZWxlbWVudFNvdXJjZVVybDogQWRtaW5pc3RyYXRpb25FbmRwb2ludHMuZ2V0VXRpbGlzYXRldXJNaW5pbWFsKCksXHJcbiAgICAgICAgbGlzdFNvdXJjZVVybDogQWRtaW5pc3RyYXRpb25FbmRwb2ludHMuZ2V0QWxsVXRpbGlzYXRldXJNaW5pbWFsKCksXHJcbiAgICAgICAgbGFiZWxGaWVsZDogJ25vbVByZW5vbScsXHJcbiAgICAgICAgaWRGaWVsZDogJ3VpZCcsXHJcbiAgICAgICAgc3R5bGVDbGFzczogJ2NvbC00JyxcclxuICAgICAgICBpbnB1dFN0eWxlQ2xhc3M6ICdjb2wtNicsXHJcbiAgICAgICAgbGFiZWxTdHlsZUNsYXNzOiAnY29sLTQnLFxyXG4gICAgICAgIGlzRmlsdGVyZWQ6IHRydWUsXHJcbiAgICAgICAgdmFsdWU6ICBfaWRlbnRpdHlNYW5hZ2VyU2VydmljZS5wYXJzZU15QXV0aFRva2VuKCk/LnByaW1hcnlzaWQ/LnRvTG93ZXJDYXNlKCksXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBmaWVsZDogJ3V0aWxpc2F0ZXVyQXNzaWduZScsXHJcbiAgICAgICAgbGFiZWxWYWx1ZTogJ2ZpbHRlcl9hc3NnbmUnLFxyXG4gICAgICAgIHR5cGU6IElucHV0VHlwZXMuU0VBUkNIX0NPTUJPLFxyXG4gICAgICAgIGVsZW1lbnRTb3VyY2VVcmw6IEFkbWluaXN0cmF0aW9uRW5kcG9pbnRzLmdldFV0aWxpc2F0ZXVyTWluaW1hbCgpLFxyXG4gICAgICAgIGxpc3RTb3VyY2VVcmw6IEFkbWluaXN0cmF0aW9uRW5kcG9pbnRzLmdldEFsbFV0aWxpc2F0ZXVyTWluaW1hbCgpLFxyXG4gICAgICAgIGxhYmVsRmllbGQ6ICdub21QcmVub20nLFxyXG4gICAgICAgIGlkRmllbGQ6ICd1aWQnLFxyXG4gICAgICAgIHN0eWxlQ2xhc3M6ICdjb2wtNCcsXHJcbiAgICAgICAgaW5wdXRTdHlsZUNsYXNzOiAnY29sLTYnLFxyXG4gICAgICAgIGxhYmVsU3R5bGVDbGFzczogJ2NvbC00JyxcclxuICAgICAgICBpc0ZpbHRlcmVkOiB0cnVlLFxyXG4gICAgICAgIHZhbHVlOiAgX2lkZW50aXR5TWFuYWdlclNlcnZpY2UucGFyc2VNeUF1dGhUb2tlbigpPy5wcmltYXJ5c2lkPy50b0xvd2VyQ2FzZSgpLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbGFiZWxWYWx1ZTogJ2FjdGlvbmVycF9kYXRlSGV1cmVEZWJ1dFByZXZfZHUnLFxyXG4gICAgICAgIGZpZWxkOiAnZGF0ZUhldXJlRGVidXRQcmV2JyxcclxuICAgICAgICB0eXBlOiBJbnB1dFR5cGVzLkRBVEVUSU1FLFxyXG4gICAgICAgIG1pblZhbHVlOiBkYXRlRGVidXQsXHJcbiAgICAgICAgc3R5bGVDbGFzczogJ2NvbC00JyxcclxuICAgICAgICBpbnB1dFN0eWxlQ2xhc3M6ICdjb2wtNicsXHJcbiAgICAgICAgbGFiZWxTdHlsZUNsYXNzOiAnY29sLTQnLFxyXG4gICAgICAgIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvclR5cGUuR1JFQVRFUk9SRVFVQUwsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbFZhbHVlOiAnYWN0aW9uZXJwX2RhdGVIZXVyZUZpblByZXZfYXUnLFxyXG4gICAgICAgIGZpZWxkOiAnZGF0ZUhldXJlRmluUHJldicsXHJcbiAgICAgICAgdHlwZTogSW5wdXRUeXBlcy5EQVRFVElNRSxcclxuICAgICAgICBtYXhWYWx1ZTogZGF0ZUZpbixcclxuICAgICAgICBzdHlsZUNsYXNzOiAnY29sLTQnLFxyXG4gICAgICAgIGlucHV0U3R5bGVDbGFzczogJ2NvbC02JyxcclxuICAgICAgICBsYWJlbFN0eWxlQ2xhc3M6ICdjb2wtNCcsXHJcbiAgICAgICAgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yVHlwZS5MRVNTT1JFUVVBTCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGxhYmVsVmFsdWU6ICdhY3Rpb25lcnBfZGF0ZUhldXJlRGVidXRSZWFsaXNlZV9kdScsXHJcbiAgICAgICAgZmllbGQ6ICdkYXRlSGV1cmVEZWJ1dFJlYWxpc2VlJyxcclxuICAgICAgICB0eXBlOiBJbnB1dFR5cGVzLkRBVEVUSU1FLFxyXG4gICAgICAgIG1pblZhbHVlOiBkYXRlRGVidXQsXHJcbiAgICAgICAgc3R5bGVDbGFzczogJ2NvbC00JyxcclxuICAgICAgICBpbnB1dFN0eWxlQ2xhc3M6ICdjb2wtNicsXHJcbiAgICAgICAgbGFiZWxTdHlsZUNsYXNzOiAnY29sLTQnLFxyXG4gICAgICAgIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvclR5cGUuR1JFQVRFUk9SRVFVQUwsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbFZhbHVlOiAnYWN0aW9uZXJwX2RhdGVIZXVyZUZpblJlYWxpc2VlX2F1JyxcclxuICAgICAgICBmaWVsZDogJ2RhdGVIZXVyZUZpblJlYWxpc2VlJyxcclxuICAgICAgICB0eXBlOiBJbnB1dFR5cGVzLkRBVEVUSU1FLFxyXG4gICAgICAgIG1heFZhbHVlOiBkYXRlRmluLFxyXG4gICAgICAgIHN0eWxlQ2xhc3M6ICdjb2wtNCcsXHJcbiAgICAgICAgaW5wdXRTdHlsZUNsYXNzOiAnY29sLTYnLFxyXG4gICAgICAgIGxhYmVsU3R5bGVDbGFzczogJ2NvbC00JyxcclxuICAgICAgICBvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3JUeXBlLkxFU1NPUkVRVUFMLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbGFiZWxWYWx1ZTogJycsXHJcbiAgICAgICAgZmllbGQ6ICdjbGFzc2UnLFxyXG4gICAgICAgIHR5cGU6IElucHV0VHlwZXMuVEVYVF9CT1gsXHJcbiAgICAgICAgc3R5bGVDbGFzczogJ2hpZGRlbicsXHJcbiAgICAgICAgaXNGaWx0ZXJlZDogdHJ1ZSxcclxuICAgICAgICB2YWx1ZTogdGhpcy5jb25maWc/LmRhdGE/Lm9jY3VyZW5jZUluZm9zPy5idXNpbmVzc2NsYXNzLFxyXG4gICAgICAgIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvclR5cGUuRVFVQUxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGxhYmVsVmFsdWU6ICcnLFxyXG4gICAgICAgIGZpZWxkOiAnb2NjdXJlbmNlJyxcclxuICAgICAgICB0eXBlOiBJbnB1dFR5cGVzLlRFWFRfQk9YLFxyXG4gICAgICAgIHN0eWxlQ2xhc3M6ICdoaWRkZW4nLFxyXG4gICAgICAgIGlzRmlsdGVyZWQ6IHRydWUsXHJcbiAgICAgICAgdmFsdWU6IHRoaXMuY29uZmlnPy5kYXRhPy5vY2N1cmVuY2VJbmZvcz8ub2NjdXJlbmNlLFxyXG4gICAgICAgIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvclR5cGUuRVFVQUxcclxuICAgICAgfVxyXG4gICAgXVxyXG4gIH1cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIHRoaXMuY29tcCA9IFRzaUFjdGlvbkVycENyZWF0ZU9yRWRpdENvbXBvbmVudDtcclxuICAgIHRoaXMudGl0bGVDb21wb25lbnQgPSAnc2hhcmVkX0FjdGlvbkVycF9BY3Rpb24nO1xyXG4gICAgdGhpcy5zZXRNb2RhbFNpemUoe3dpZHRoIDogTW9kYWxTaXplRW51bS5NZWRpdW0ud2lkdGgsIGhlaWdodDogTW9kYWxTaXplRW51bS5MYXJnZS5oZWlnaHQgfSk7XHJcblxyXG4gXHJcbiAgfVxyXG5cclxufVxyXG5cclxuIiwiPFRzaS1HZW5lcmljLUNydWQgXHJcbltjdWRDb21wb25lbnRdPVwiY29tcFwiIFxyXG5baGVhZGVyXT1cInRpdGxlQ29tcG9uZW50XCIgXHJcbltjb2x1bW5zXT1cImNvbHVtbnNcIiBcclxuW2NydWRTZXJ2aWNlXT1cImFjdGlvbnNlcnZpY2VcIlxyXG5bbW9kYWxTaXplXT1cIm1vZGFsU2l6ZVwiXHJcbltzaG93VXBsb2FkQnV0dG9uXT1cImZhbHNlXCJcclxuW3Nob3dOb3RlQnV0dG9uXT1cImZhbHNlXCJcclxucHJlc2VudGF0aW9uRGVzaWduZXIgW2lkXT1cIidsaWItdHNpLWFjdGlvbi1lcnAtbGlzdCdcIiBcclxuW3NlYXJjaEZpZWxkc109XCJzZWFyY2hGaWVsZHNcIiBcclxuW21vZGFsRGF0YV09XCJtb2RhbERhdGFcIlxyXG5bYnVzaW5lc3NDbGFzc109XCJidXNpbmVzc0NsYXNzXCI+PC9Uc2ktR2VuZXJpYy1DcnVkPlxyXG4iXX0=
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWFjdGlvbi1lcnAtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvdHNpLWFjdGlvbi1lcnAtbGlzdC90c2ktYWN0aW9uLWVycC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktYWN0aW9uLWVycC1saXN0L3RzaS1hY3Rpb24tZXJwLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDdkcsT0FBTyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRzFGLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLElBQUksQ0FBQztBQUN2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsU0FBUyxFQUFrQixNQUFNLGtDQUFrQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7QUFPdkUsTUFBTSxPQUFPLHlCQUEwQixTQUFRLG9CQUFvQjtJQW9FakUsWUFDVyx1QkFBK0MsRUFDakQsYUFBK0IsRUFDdEIsTUFBNEIsRUFFNUIsZ0JBQW1DO1FBRW5ELEtBQUssQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQU52Qiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXdCO1FBQ2pE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QVUsRUFBRSxJQUFJO2dCQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLFNBQVM7Z0JBQ25ELFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxLQUFLO2FBQ25DO1NBQ0YsQ0FBQTtJQUNILENBQUM7SUFDUSxRQUFRO1FBQ2hCLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsSUFBSSxHQUFHLGlDQUFpQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxjQUFjLEdBQUcseUJBQXlCLENBQUM7UUFDaEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFDLEtBQUssRUFBRyxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBRy9GLENBQUM7K0dBdExVLHlCQUF5QjttR0FBekIseUJBQXlCLGtEQUZ6QixDQUFDLEdBQUcsWUFBWSxDQUFDLGlEQ2Y5QixrYUFZQTs7NEZES2EseUJBQXlCO2tCQU5yQyxTQUFTOytCQUNFLHlCQUF5QixhQUd4QixDQUFDLEdBQUcsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGFwcFByb3ZpZGVycyB9IGZyb20gJy4uLy4uL2NvbnN0cy9hcHAtcHJvdmlkZXJzJztcclxuaW1wb3J0IHsgVHNpTGlzdEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi90c2ktYmFzZS9jb21wb25lbnRzL3RzaS1saXN0LWJhc2UvdHNpLWxpc3QtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEaXNwbGF5VHlwZXMsIEZpbHRlck9wZXJhdG9yVHlwZSwgSW5wdXRUeXBlcywgTW9kYWxTaXplRW51bSB9IGZyb20gJy4uLy4uL2VudW1zJztcclxuaW1wb3J0IHsgR3JpZENvbHVtbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBBY3Rpb25FcnBTZXJ2aWNlLCBJZGVudGl0eU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBUc2lBY3Rpb25FcnBDcmVhdGVPckVkaXRDb21wb25lbnQgfSBmcm9tICcuLic7XHJcbmltcG9ydCB7IEFkbWluaXN0cmF0aW9uRW5kcG9pbnRzIH0gZnJvbSAnLi4vLi4vZW5kLXBvaW50cyc7XHJcbmltcG9ydCB7IER5bmFtaWNEaWFsb2dDb25maWcsIER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5pbXBvcnQgeyBBY3Rpb25FUlAsIG9jY3VyZW5jZUluZm9zIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FjdGlvbkVycC9hY3Rpb25FcnAnO1xyXG5pbXBvcnQgeyBCdXNpbmVzc0NsYXNzTmFtZXMgfSBmcm9tICcuLi8uLi9jb25zdHMvYnVzaW5lc3MtY2xhc3MtbmFtZXMnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi10c2ktYWN0aW9uLWVycC1saXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHNpLWFjdGlvbi1lcnAtbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3RzaS1hY3Rpb24tZXJwLWxpc3QuY29tcG9uZW50LmNzcycsXHJcbiAgcHJvdmlkZXJzOiBbLi4uYXBwUHJvdmlkZXJzXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHNpQWN0aW9uRXJwTGlzdENvbXBvbmVudCBleHRlbmRzIFRzaUxpc3RCYXNlQ29tcG9uZW50IHtcclxuXHJcbiAgaXNMb2FkQ3VycmVudFVzZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWxlY3RlZERlbWFuZGV1cjogYW55ID0gbnVsbDtcclxuICBzZWxlY3RlZEFzc2lnbmU6IGFueSA9IG51bGw7XHJcbiAgbW9kYWxEYXRhOiBhbnkgPSB7fTtcclxuICBhY3Rpb24gPSBuZXcgQWN0aW9uRVJQKCk7XHJcbiAgdXNlcnM6IGFueVtdID0gW107XHJcbiAgb3ZlcnJpZGUgY29sdW1uczogQXJyYXk8R3JpZENvbHVtbj4gPSBbXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25fc3RhdHV0JyxcclxuICAgICAgZmllbGQ6ICdzdGF0dXQnLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbl91dGlsaXNhdGV1ckRlbWFuZGV1cicsXHJcbiAgICAgIGZpZWxkOiAndXRpbGlzYXRldXJEZW1hbmRldXJOb21Db21wbGV0JyxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25fdXRpbGlzYXRldXJBc3NpZ25lJyxcclxuICAgICAgZmllbGQ6ICd1dGlsaXNhdGV1ckFzc2lnbmVOb21Db21wbGV0JyxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25fbnVtZXJvJyxcclxuICAgICAgZmllbGQ6ICdudW1lcm8nLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbl9vYmpldCcsXHJcbiAgICAgIGZpZWxkOiAnb2JqZXQnLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbl9yZXN1bHRhdCcsXHJcbiAgICAgIGZpZWxkOiAncmVzdWx0YXQnLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbl9wcmlvcml0ZScsXHJcbiAgICAgIGZpZWxkOiAncHJpb3JpdGUnLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbl9saWV1JyxcclxuICAgICAgZmllbGQ6ICdsaWV1JyxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogJ2FjdGlvbl9kYXRlRGVidXRQcmV2JyxcclxuICAgICAgZmllbGQ6ICdkYXRlSGV1cmVEZWJ1dFByZXYnLFxyXG4gICAgICB0eXBlOiBEaXNwbGF5VHlwZXMuREFURVRJTUVfRElTUExBWSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogJ2FjdGlvbl9kYXRlRmluUHJldicsXHJcbiAgICAgIGZpZWxkOiAnZGF0ZUhldXJlRmluUHJldicsXHJcbiAgICAgIHR5cGU6IERpc3BsYXlUeXBlcy5EQVRFVElNRV9ESVNQTEFZLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiAnYWN0aW9uX2RhdGVEZWJ1dFJlYWxpc2VlJyxcclxuICAgICAgZmllbGQ6ICdkYXRlSGV1cmVEZWJ1dFJlYWxpc2VlJyxcclxuICAgICAgdHlwZTogRGlzcGxheVR5cGVzLkRBVEVUSU1FX0RJU1BMQVksXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6ICdhY3Rpb25fZGF0ZUZpblJlYWxpc2VlJyxcclxuICAgICAgZmllbGQ6ICdkYXRlSGV1cmVGaW5SZWFsaXNlZScsXHJcbiAgICAgIHR5cGU6IERpc3BsYXlUeXBlcy5EQVRFVElNRV9ESVNQTEFZLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbl9hbGVydGUnLFxyXG4gICAgICBmaWVsZDogJ2FsZXJ0ZScsXHJcbiAgICAgIHR5cGU6IERpc3BsYXlUeXBlcy5DSEVDS0JPWF9ESVNQTEFZLFxyXG4gICAgfVxyXG5cclxuICBdO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSAgX2lkZW50aXR5TWFuYWdlclNlcnZpY2U6IElkZW50aXR5TWFuYWdlclNlcnZpY2UsXHJcbiAgICBwdWJsaWMgYWN0aW9uc2VydmljZTogQWN0aW9uRXJwU2VydmljZSxcclxuICAgIHB1YmxpYyBvdmVycmlkZSBjb25maWc/OiBEeW5hbWljRGlhbG9nQ29uZmlnLFxyXG5cclxuICAgIHB1YmxpYyBvdmVycmlkZSBfZGlhbG9nUmVmZXJlbmNlPzogRHluYW1pY0RpYWxvZ1JlZlxyXG4gICkge1xyXG4gICAgc3VwZXIoY29uZmlnLCBfZGlhbG9nUmVmZXJlbmNlKTtcclxuICAgIHRoaXMuYnVzaW5lc3NDbGFzcyA9IEJ1c2luZXNzQ2xhc3NOYW1lcy5BY3Rpb25FUlA7XHJcblxyXG4gICAgaWYgKGNvbmZpZyAmJiBjb25maWcuZGF0YSAmJiBjb25maWcuZGF0YS5vY2N1cmVuY2VJbmZvcykge1xyXG4gICAgICBsZXQgb2NjdXJlbmNlSW5mb3MgPSBjb25maWcuZGF0YS5vY2N1cmVuY2VJbmZvcyBhcyBvY2N1cmVuY2VJbmZvcztcclxuICAgICAgdGhpcy5tb2RhbERhdGEgPSB7IG9jY3VyZW5jZUluZm9zOiBvY2N1cmVuY2VJbmZvcyB9O1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBkYXRlRGVidXQgPSBuZXcgRGF0ZShuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCksIDAsIDEpO1xyXG4gICAgdmFyIGRhdGVGaW4gPSBuZXcgRGF0ZShuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCksIDExLCAzMSwgMjMsIDU5LCA1OSk7XHJcbiAgICB0aGlzLnNlYXJjaEZpZWxkcyA9IFtcclxuICAgICAge1xyXG5cclxuICAgICAgICBmaWVsZDogJ3V0aWxpc2F0ZXVyRGVtYW5kZXVyJyxcclxuICAgICAgICBsYWJlbFZhbHVlOiAnZmlsdHJlX2RlbWFuZGV1cicsXHJcbiAgICAgICAgdHlwZTogSW5wdXRUeXBlcy5TRUFSQ0hfQ09NQk8sXHJcbiAgICAgICAgZWxlbWVudFNvdXJjZVVybDogQWRtaW5pc3RyYXRpb25FbmRwb2ludHMuZ2V0VXRpbGlzYXRldXJNaW5pbWFsKCksXHJcbiAgICAgICAgbGlzdFNvdXJjZVVybDogQWRtaW5pc3RyYXRpb25FbmRwb2ludHMuZ2V0QWxsVXRpbGlzYXRldXJNaW5pbWFsKCksXHJcbiAgICAgICAgbGFiZWxGaWVsZDogJ25vbVByZW5vbScsXHJcbiAgICAgICAgaWRGaWVsZDogJ3VpZCcsXHJcbiAgICAgICAgc3R5bGVDbGFzczogJ2NvbC00JyxcclxuICAgICAgICBpbnB1dFN0eWxlQ2xhc3M6ICdjb2wtNicsXHJcbiAgICAgICAgbGFiZWxTdHlsZUNsYXNzOiAnY29sLTQnLFxyXG4gICAgICAgIGlzRmlsdGVyZWQ6IHRydWUsXHJcbiAgICAgICAgdmFsdWU6ICBfaWRlbnRpdHlNYW5hZ2VyU2VydmljZS5wYXJzZU15QXV0aFRva2VuKCk/LnByaW1hcnlzaWQ/LnRvTG93ZXJDYXNlKCksXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBmaWVsZDogJ3V0aWxpc2F0ZXVyQXNzaWduZScsXHJcbiAgICAgICAgbGFiZWxWYWx1ZTogJ2ZpbHRlcl9hc3NnbmUnLFxyXG4gICAgICAgIHR5cGU6IElucHV0VHlwZXMuU0VBUkNIX0NPTUJPLFxyXG4gICAgICAgIGVsZW1lbnRTb3VyY2VVcmw6IEFkbWluaXN0cmF0aW9uRW5kcG9pbnRzLmdldFV0aWxpc2F0ZXVyTWluaW1hbCgpLFxyXG4gICAgICAgIGxpc3RTb3VyY2VVcmw6IEFkbWluaXN0cmF0aW9uRW5kcG9pbnRzLmdldEFsbFV0aWxpc2F0ZXVyTWluaW1hbCgpLFxyXG4gICAgICAgIGxhYmVsRmllbGQ6ICdub21QcmVub20nLFxyXG4gICAgICAgIGlkRmllbGQ6ICd1aWQnLFxyXG4gICAgICAgIHN0eWxlQ2xhc3M6ICdjb2wtNCcsXHJcbiAgICAgICAgaW5wdXRTdHlsZUNsYXNzOiAnY29sLTYnLFxyXG4gICAgICAgIGxhYmVsU3R5bGVDbGFzczogJ2NvbC00JyxcclxuICAgICAgICBpc0ZpbHRlcmVkOiB0cnVlLFxyXG4gICAgICAgIHZhbHVlOiAgX2lkZW50aXR5TWFuYWdlclNlcnZpY2UucGFyc2VNeUF1dGhUb2tlbigpPy5wcmltYXJ5c2lkPy50b0xvd2VyQ2FzZSgpLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbGFiZWxWYWx1ZTogJ2FjdGlvbmVycF9kYXRlSGV1cmVEZWJ1dFByZXZfZHUnLFxyXG4gICAgICAgIGZpZWxkOiAnZGF0ZUhldXJlRGVidXRQcmV2JyxcclxuICAgICAgICB0eXBlOiBJbnB1dFR5cGVzLkRBVEUsXHJcbiAgICAgICAgbWluVmFsdWU6IGRhdGVEZWJ1dCxcclxuICAgICAgICBzdHlsZUNsYXNzOiAnY29sLTQnLFxyXG4gICAgICAgIGlucHV0U3R5bGVDbGFzczogJ2NvbC02JyxcclxuICAgICAgICBsYWJlbFN0eWxlQ2xhc3M6ICdjb2wtNCcsXHJcbiAgICAgICAgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yVHlwZS5HUkVBVEVST1JFUVVBTCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGxhYmVsVmFsdWU6ICdhY3Rpb25lcnBfZGF0ZUhldXJlRmluUHJldl9hdScsXHJcbiAgICAgICAgZmllbGQ6ICdkYXRlSGV1cmVGaW5QcmV2JyxcclxuICAgICAgICB0eXBlOiBJbnB1dFR5cGVzLkRBVEUsXHJcbiAgICAgICAgbWF4VmFsdWU6IGRhdGVGaW4sXHJcbiAgICAgICAgc3R5bGVDbGFzczogJ2NvbC00JyxcclxuICAgICAgICBpbnB1dFN0eWxlQ2xhc3M6ICdjb2wtNicsXHJcbiAgICAgICAgbGFiZWxTdHlsZUNsYXNzOiAnY29sLTQnLFxyXG4gICAgICAgIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvclR5cGUuTEVTU09SRVFVQUwsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbFZhbHVlOiAnYWN0aW9uZXJwX2RhdGVIZXVyZURlYnV0UmVhbGlzZWVfZHUnLFxyXG4gICAgICAgIGZpZWxkOiAnZGF0ZUhldXJlRGVidXRSZWFsaXNlZScsXHJcbiAgICAgICAgdHlwZTogSW5wdXRUeXBlcy5EQVRFLFxyXG4gICAgICAgIG1pblZhbHVlOiBkYXRlRGVidXQsXHJcbiAgICAgICAgc3R5bGVDbGFzczogJ2NvbC00JyxcclxuICAgICAgICBpbnB1dFN0eWxlQ2xhc3M6ICdjb2wtNicsXHJcbiAgICAgICAgbGFiZWxTdHlsZUNsYXNzOiAnY29sLTQnLFxyXG4gICAgICAgIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvclR5cGUuR1JFQVRFUk9SRVFVQUwsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbFZhbHVlOiAnYWN0aW9uZXJwX2RhdGVIZXVyZUZpblJlYWxpc2VlX2F1JyxcclxuICAgICAgICBmaWVsZDogJ2RhdGVIZXVyZUZpblJlYWxpc2VlJyxcclxuICAgICAgICB0eXBlOiBJbnB1dFR5cGVzLkRBVEUsXHJcbiAgICAgICAgbWF4VmFsdWU6IGRhdGVGaW4sXHJcbiAgICAgICAgc3R5bGVDbGFzczogJ2NvbC00JyxcclxuICAgICAgICBpbnB1dFN0eWxlQ2xhc3M6ICdjb2wtNicsXHJcbiAgICAgICAgbGFiZWxTdHlsZUNsYXNzOiAnY29sLTQnLFxyXG4gICAgICAgIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvclR5cGUuTEVTU09SRVFVQUwsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbFZhbHVlOiAnJyxcclxuICAgICAgICBmaWVsZDogJ2NsYXNzZScsXHJcbiAgICAgICAgdHlwZTogSW5wdXRUeXBlcy5URVhUX0JPWCxcclxuICAgICAgICBzdHlsZUNsYXNzOiAnaGlkZGVuJyxcclxuICAgICAgICBpc0ZpbHRlcmVkOiB0cnVlLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLmNvbmZpZz8uZGF0YT8ub2NjdXJlbmNlSW5mb3M/LmJ1c2luZXNzY2xhc3MsXHJcbiAgICAgICAgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yVHlwZS5FUVVBTFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbGFiZWxWYWx1ZTogJycsXHJcbiAgICAgICAgZmllbGQ6ICdvY2N1cmVuY2UnLFxyXG4gICAgICAgIHR5cGU6IElucHV0VHlwZXMuVEVYVF9CT1gsXHJcbiAgICAgICAgc3R5bGVDbGFzczogJ2hpZGRlbicsXHJcbiAgICAgICAgaXNGaWx0ZXJlZDogdHJ1ZSxcclxuICAgICAgICB2YWx1ZTogdGhpcy5jb25maWc/LmRhdGE/Lm9jY3VyZW5jZUluZm9zPy5vY2N1cmVuY2UsXHJcbiAgICAgICAgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yVHlwZS5FUVVBTFxyXG4gICAgICB9XHJcbiAgICBdXHJcbiAgfVxyXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgdGhpcy5jb21wID0gVHNpQWN0aW9uRXJwQ3JlYXRlT3JFZGl0Q29tcG9uZW50O1xyXG4gICAgdGhpcy50aXRsZUNvbXBvbmVudCA9ICdzaGFyZWRfQWN0aW9uRXJwX0FjdGlvbic7XHJcbiAgICB0aGlzLnNldE1vZGFsU2l6ZSh7d2lkdGggOiBNb2RhbFNpemVFbnVtLk1lZGl1bS53aWR0aCwgaGVpZ2h0OiBNb2RhbFNpemVFbnVtLkxhcmdlLmhlaWdodCB9KTtcclxuXHJcbiBcclxuICB9XHJcblxyXG59XHJcblxyXG4iLCI8VHNpLUdlbmVyaWMtQ3J1ZCBcclxuW2N1ZENvbXBvbmVudF09XCJjb21wXCIgXHJcbltoZWFkZXJdPVwidGl0bGVDb21wb25lbnRcIiBcclxuW2NvbHVtbnNdPVwiY29sdW1uc1wiIFxyXG5bY3J1ZFNlcnZpY2VdPVwiYWN0aW9uc2VydmljZVwiXHJcblttb2RhbFNpemVdPVwibW9kYWxTaXplXCJcclxuW3Nob3dVcGxvYWRCdXR0b25dPVwiZmFsc2VcIlxyXG5bc2hvd05vdGVCdXR0b25dPVwiZmFsc2VcIlxyXG5wcmVzZW50YXRpb25EZXNpZ25lciBbaWRdPVwiJ2xpYi10c2ktYWN0aW9uLWVycC1saXN0J1wiIFxyXG5bc2VhcmNoRmllbGRzXT1cInNlYXJjaEZpZWxkc1wiIFxyXG5bbW9kYWxEYXRhXT1cIm1vZGFsRGF0YVwiXHJcbltidXNpbmVzc0NsYXNzXT1cImJ1c2luZXNzQ2xhc3NcIj48L1RzaS1HZW5lcmljLUNydWQ+XHJcbiJdfQ==
|
|
@@ -494,7 +494,7 @@ export class TsiGenericCrudComponent {
|
|
|
494
494
|
}
|
|
495
495
|
async handleButtonColumnClicked(event) {
|
|
496
496
|
let itemKey = event.selectKeyOnly ? event.key : event.key[this.key];
|
|
497
|
-
const excluded = ["Notes", "
|
|
497
|
+
const excluded = ["Notes", "Fichier"];
|
|
498
498
|
if (this.businessClass && !excluded.includes(this.businessClass)) {
|
|
499
499
|
this.dialogDataService.setData({ id: itemKey, class: this.businessClass });
|
|
500
500
|
}
|
|
@@ -1075,4 +1075,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1075
1075
|
type: HostListener,
|
|
1076
1076
|
args: ['window:keydown', ['$event']]
|
|
1077
1077
|
}] } });
|
|
1078
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWdlbmVyaWMtY3J1ZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvdHNpLWdlbmVyaWMtY3J1ZC90c2ktZ2VuZXJpYy1jcnVkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktZ2VuZXJpYy1jcnVkL3RzaS1nZW5lcmljLWNydWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUdMLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSw2QkFBNkIsRUFBRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUV4SSxPQUFPLEVBQUUscUNBQXFDLEVBQW9ELE1BQU0sY0FBYyxDQUFDO0FBZXZILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxN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QUFNO2dCQUNHLDBCQUEwQjtzQkFBbkMsTUFBTTtnQkFpMUJQLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge1xyXG4gIEFmdGVyQ29udGVudENoZWNrZWQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVudmlyb25tZW50SW5qZWN0b3IsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWVudUl0ZW0sIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBEeW5hbWljRGlhbG9nQ29uZmlnLCBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRfTW9kZXMsIE1vZGFsU2l6ZUVudW0sIE1vZGVzIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xyXG5pbXBvcnQgeyBBY3Rpb25QbGFjZW1lbnQgfSBmcm9tICcuLi8uLi9lbnVtcy9hY3Rpb24tcGxhY2VtZW50JztcclxuaW1wb3J0IHsgQnV0dG9uVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL2J1dHRvbi10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBHcmlkU2VsZWN0aW9uTW9kZSB9IGZyb20gJy4uLy4uL2VudW1zL2dyaWQtc2VsZWN0aW9uLW1vZGUnO1xyXG5pbXBvcnQgeyBHcmlkU2l6aW5nTW9kZSB9IGZyb20gJy4uLy4uL2VudW1zL2dyaWQtc2l6aW5nLW1vZGUnO1xyXG5pbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tICcuLi8uLi9lbnVtcy90b29sdGlwUG9zaXRpb24uZW51bSc7XHJcbmltcG9ydCB7IG9wZW5BY3Rpb25MaXN0LCBvcGVuRHluYW1pY0Zvcm1Nb2RhbENvbXBvbmVudCwgb3Blbk1vZGFsVXBsb2FkR3JpZCwgb3Blbk5vdGVzTGlzdCB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9tb2RhbC1vcGVuLmZ1bmN0aW9uJztcclxuaW1wb3J0IHsgQnV0dG9uQ2xpY2tSZXN1bHQsIEdyaWRDb2x1bW4sIElHcmlkQ29uZmlndXJhdGlvbiwgSU1vZGFsU2l6ZSwgSVBhZ2UsIElQYWdlZFJlcXVlc3QsIElQYWdlZFJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEdldFdvcmtmbG93SW5zdGFuY2VJbmZvcm1hdGlvblJlcXVlc3QsIFNlYXJjaEZpZWxkLCB3b3JrZmxvd0luc3RhbmNlSW5mb3JtYXRpb25SZXNwb25zZSB9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IG9jY3VyZW5jZUluZm9zIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FjdGlvbkVycC9hY3Rpb25FcnAnO1xyXG5pbXBvcnQgeyBFdmVudFNjaGVtYSB9IGZyb20gJy4uLy4uL21vZGVscy9jb21tb24vZXZlbnQtc2NoZW1hJztcclxuaW1wb3J0IHsgRW50aXR5SW5mbyB9IGZyb20gJy4uLy4uL21vZGVscy9lbnRpdHktaW5mby9lbnRpdHktaW5mbyc7XHJcbmltcG9ydCB7IE5vdGVzR3JvdXBlZEJ5VXNlclJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL05vdGVzL05vdGUnO1xyXG5pbXBvcnQgeyBQcmVzZW50YXRpb25TZXR0aW5nIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3ByZXNlbnRhdGlvbi1zZXR0aW5ncy9wcmVzZW50YXRpb24tc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBEaXNjcmltaW5hdG9yUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2hhcmVkL2Rpc2NyaW1pbmF0b3ItcmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBMb2NhbGl6ZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9sb2NhbGl6ZS5waXBlJztcclxuaW1wb3J0IHsgQ3J1ZEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYmFzZS9jcnVkLWJhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IERpc2NyaW1pbmF0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29uZmlndXJhdGlvbi9kaXNjcmltaW5hdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnRpdHlDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbmZpZ3VyYXRpb24vZW50aXR5LWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IERpYWxvZ0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGlhbG9nLWRhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpY2hpZXJVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmljaGllci9maWNoaWVyLXVwbG9hZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHNpTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbW9kYWwvdHNpLW1vZGFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOb3RlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL05vdGUvTm90ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHNpTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi90c2ktbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZWNvcmRJbmZvUG9wdXBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVjb3JkLWluZm8tcG9wdXAuc2VydmljZSc7XHJcbmltcG9ydCB7IFdvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy93b3JrZmxvdy93b3JrZmxvdy1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUeXBlUmVnaXN0cnlIZWxwZXIgfSBmcm9tICcuLi8uLi90c2ktaGVscGVycy90eXBlLXJlZ2lzdHJ5LmhlbHBlcic7XHJcbmltcG9ydCB7IFRzaUdlbmVyaWNHcmlkQ29tcG9uZW50IH0gZnJvbSAnLi4vb3V0cHV0LWNvbXBvbmVudHMvdHNpLWdlbmVyaWMtZ3JpZC90c2ktZ2VuZXJpYy1ncmlkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRzaUZvcm1Nb2RhbEZvb3RlckNvbXBvbmVudCB9IGZyb20gJy4uL3RzaS1mb3JtLW1vZGFsLWZvb3Rlci90c2ktZm9ybS1tb2RhbC1mb290ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHNpTm90ZXNBdmVydGlyQ29tcG9uZW50IH0gZnJvbSAnLi4vdHNpLW5vdGVzLWF2ZXJ0aXIvdHNpLW5vdGVzLWF2ZXJ0aXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHNpUG9wdXBUZXh0Vmlld2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vdHNpLXBvcHVwLXRleHQtdmlld2VyL3RzaS1wb3B1cC10ZXh0LXZpZXdlci5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdUc2ktR2VuZXJpYy1DcnVkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHNpLWdlbmVyaWMtY3J1ZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHNpLWdlbmVyaWMtY3J1ZC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1RzaU5vdGlmaWNhdGlvblNlcnZpY2VdLFxyXG59KSAvKiwgT25DaGFuZ2VzKi9cclxuZXhwb3J0IGNsYXNzIFRzaUdlbmVyaWNDcnVkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRDaGVja2VkIHtcclxuICAvLyNyZWdpb24gbG9jYWwgdmFyc1xyXG4gIHByaXZhdGUgX2RpYWxvZ1JlZj86IER5bmFtaWNEaWFsb2dSZWY7XHJcbiAgcHJpdmF0ZSBfZm9ybUVuZHBvaW50OiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgcHJvdGVjdGVkIGZpbHRlckljb24gPSAncGkgcGktZmlsdGVyJztcclxuICBwcm90ZWN0ZWQgZmlsdGVyVG9vbHRpcCA9ICdzaG93X2ZpbHRlcic7XHJcbiAgcHJpdmF0ZSBfaXNXb3JrZmxvd0V0YXRGb3JtTG9hZGVkOiBib29sZWFuID0gZmFsc2VcclxuICBidXR0b25UeXBlID0gQnV0dG9uVHlwZTtcclxuICB0b29sdGlwUG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb247XHJcbiAgY29uZmlnTW9kZUJ1dHRvbklkOiBzdHJpbmcgPSBcImNvbmZnLW1vZGUtYnV0dG9uLWZyb20tbGlzdFwiXHJcbiAgc2F2ZVByb3BlcnRpZXNCdXR0b25DbGFzc05hbWUgPSBcImNvbmZnLW1vZGUtYnV0dG9uLWZyb20tbGlzdC1zYXZlLXByb3BlcnRpZXNcIjtcclxuICBASW5wdXQoKSBlbnRpdHlJbmZvOiBFbnRpdHlJbmZvIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXHJcblxyXG4gIGl0ZW1zPzogYW55W107XHJcblxyXG4gIHBhZ2VkUmVxdWVzdDogSVBhZ2VkUmVxdWVzdCA9IHt9O1xyXG5cclxuICBwYWdlOiBJUGFnZTxhbnk+ID0ge1xyXG4gICAgaXRlbXM6IFtdLFxyXG4gICAgcGFnZVNpemU6IDEwLFxyXG4gICAgcGFnZU51bWJlcjogMSxcclxuICAgIHRvdGFsQ291bnQ6IDAsXHJcbiAgICB0b3RhbFBhZ2VzOiAwLFxyXG4gICAgc3VtbWFyaWVzOiBbXSxcclxuICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gIH07XHJcblxyXG4gIGZpcnN0OiBudW1iZXIgPSAwO1xyXG4gIHJvd3MgPSAxO1xyXG4gIGZvcm1FbmRwb2ludEJvZHk6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBmaWx0ZXJzSHRtbFRlbXBsYXRlPzogc3RyaW5nID0gJyc7XHJcbiAgc2VsZWN0ZWRDb2x1bW5zOiBHcmlkQ29sdW1uW10gPSBbXTtcclxuICBfc2VhcmNoT25Jbml0OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgcHJpdmF0ZSBfbW9kYWxEYXRhOiBhbnk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoVHNpR2VuZXJpY0dyaWRDb21wb25lbnQpIGdlbmVyaWNHcmlkQ29tcG9uZW50PzogVHNpR2VuZXJpY0dyaWRDb21wb25lbnQ7XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gSW5wdXRzXHJcbiAgQElucHV0KCkgc2V0IG1vZGFsRGF0YSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLl9tb2RhbERhdGEgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGNvbHVtbnM6IEdyaWRDb2x1bW5bXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGdyaWRDb25maWd1cmF0aW9uPzogSUdyaWRDb25maWd1cmF0aW9uO1xyXG4gIEBJbnB1dCgpIGN1ZENvbXBvbmVudDogYW55O1xyXG4gIEBJbnB1dCgpIGNydWRTZXJ2aWNlPzogQ3J1ZEJhc2VTZXJ2aWNlPGFueSwgYW55LCBhbnksIGFueT47XHJcbiAgQElucHV0KCkgaGVhZGVyOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBtb2RhbFNpemU/OiBJTW9kYWxTaXplO1xyXG4gIEBJbnB1dCgpIGRlc2NyaW1pbmF0b3JWYWx1ZT86IHN0cmluZ1xyXG4gIEBJbnB1dCgpIHByZXNlbnRhdGlvblNldHRpbmdzPzogUHJlc2VudGF0aW9uU2V0dGluZ1xyXG4gIEBJbnB1dCgpIHByZXZlbnRBZGRFdmVudD86IGJvb2xlYW4gPSBmYWxzZVxyXG4gIEBJbnB1dCgpIHNldCBmb3JtRW5kcG9pbnQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX2Zvcm1FbmRwb2ludCA9IGAke3ZhbHVlfS9nZXRhbGxwYWdlZGA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBmb3JtRW5kcG9pbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZm9ybUVuZHBvaW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZm9ybU5hbWU/OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGZvcm1OYW1lKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZm9ybU5hbWU7XHJcbiAgfVxyXG5cclxuICBzZXQgZm9ybU5hbWUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fZm9ybU5hbWUgPSB2YWx1ZTtcclxuICAgIC8vIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaXNTZWFyY2hCdXR0b25EaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgaXNTZWFyY2hCdXR0b25EaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5faXNTZWFyY2hCdXR0b25EaXNhYmxlZCA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc1NlYXJjaEJ1dHRvbkRpc2FibGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzU2VhcmNoQnV0dG9uRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICAvLyBASW5wdXQoKSBmb3JtTmFtZT86IHN0cmluZztcclxuICBASW5wdXQoKSBzaG93SGVhZGVyRmlsdGVyczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dFZGl0QnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93RGVsZXRlQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93QWRkQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93Q29uc3VsdEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dVcGxvYWRCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dOb3RlQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93RG93bmxvYWRCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93SW5mb0J1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0R1cGxpY2F0ZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0Zvcm1CdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dDYWxlbmRlclZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93Q2FyZFZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93SW1wb3J0RnJvbU91dGxvb2tCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93S2FuYmFuVmlldzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dLYW5iYW5WaWV3T2ZXb3JrRmxvd0V0YXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93U2VhcmNoRmllbGQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNlYXJjaEZpZWxkczogU2VhcmNoRmllbGRbXSB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBjYWxlbmRlclNjaGVtYTogRXZlbnRTY2hlbWEgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgc2hvd0FjdGlvbkJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2l6aW5nTW9kZTogR3JpZFNpemluZ01vZGUgPSBHcmlkU2l6aW5nTW9kZS5GaWxsO1xyXG5cclxuICAvL2dyaWQgc2VsZWN0aW9uXHJcbiAgQElucHV0KCkgc2VsZWN0S2V5T25seTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2VsZWN0aW9uTW9kZTogR3JpZFNlbGVjdGlvbk1vZGUgPSBHcmlkU2VsZWN0aW9uTW9kZS5Ob25lO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbXM6IEFycmF5PGFueT4gPSBbXTtcclxuICBASW5wdXQoKSBrZXk6IHN0cmluZyA9ICd1aWQnO1xyXG4gIEBJbnB1dCgpIGlkPzogc3RyaW5nO1xyXG5cclxuICBfYnVzaW5lc3NDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGdldCBidXNpbmVzc0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2J1c2luZXNzQ2xhc3M7XHJcbiAgfVxyXG5cclxuICBzZXQgYnVzaW5lc3NDbGFzcyh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9idXNpbmVzc0NsYXNzID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5fYnVzaW5lc3NDbGFzcykge1xyXG4gICAgICB0aGlzLmdldFdvcmtmbG93RXRhdEZvcm1Gb3JDdXJyZW50QnVzaW5lc3NDbGFzcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IHNlYXJjaE9uSW5pdCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgaWYgKHZhbHVlID09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX3NlYXJjaE9uSW5pdCA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9zZWFyY2hPbkluaXQgPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHNlYXJjaE9uSW5pdCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWFyY2hPbkluaXQ7XHJcbiAgfVxyXG5cclxuXHJcbiAgQElucHV0KCkgc2hvd0dsb2JhbFNlYXJjaDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0V4cG9ydEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd1JlcG9ydGluZzogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gT3V0cHV0c1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW1zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QXJyYXk8YW55Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PGFueT4+KCk7XHJcbiAgQE91dHB1dCgpIHNlYXJjaEZpZWxkc1ZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFycmF5PFNlYXJjaEZpZWxkPj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PFNlYXJjaEZpZWxkPj4oKTtcclxuICBAT3V0cHV0KCkgYnV0dG9uQ29sdW1uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPEJ1dHRvbkNsaWNrUmVzdWx0PiA9IG5ldyBFdmVudEVtaXR0ZXI8QnV0dG9uQ2xpY2tSZXN1bHQ+KCk7XHJcbiAgQE91dHB1dCgpIG9uSW1wb3J0RnJvbU91dGxvb2tDbGlja2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIC8vI2VuZHJlZ2lvbiBPdXRwdXRzXHJcbiAgaXNDdXN0b21Db2x1bW5SZW5kZXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNsaWNrQ291bnQgPSAxO1xyXG4gIGN1cnJlbnRJY29uID0gXCJwaSBwaS1hbGlnbi1qdXN0aWZ5XCI7XHJcbiAgY3VycmVudFRvb2x0aXAgPSBcInNoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfbGlzdF92aWV3XCI7XHJcblxyXG4gIHZpZXdPcHRpb25zOiBNZW51SXRlbVtdID0gW107XHJcblxyXG4gIHBhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX21lc3NhZ2VTZXJ2aWNlOiBUc2lOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtc2dTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RzaU1vZGFsU2VydmljZTogVHNpTW9kYWxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBsb2NhbGl6ZTogTG9jYWxpemVQaXBlLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2dEYXRhU2VydmljZTogRGlhbG9nRGF0YVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZpY2hpZXJTZXJ2aWNlOiBGaWNoaWVyVXBsb2FkU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVjb3JkSW5mb1BvcHVwU2VydmljZTogUmVjb3JkSW5mb1BvcHVwU2VydmljZSxcclxuICAgIHByaXZhdGUgX3dvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2U6IFdvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9lbnRpdHlDb25maWdTZXJ2aWNlOiBFbnRpdHlDb25maWd1cmF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgbm90ZXNTZXJ2aWNlOiBOb3RlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2luamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yLFxyXG4gICAgcHJpdmF0ZSBfZGlzY3JpbWluYXRvclNlcnZpY2U6IERpc2NyaW1pbmF0b3JTZXJ2aWNlLFxyXG4gICkgeyB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8vICNyZWdpb24gZ3JpZCBzdGF0ZVxyXG5cclxuICBnZXRTdGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLmdlbmVyaWNHcmlkQ29tcG9uZW50KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdlbmVyaWNHcmlkQ29tcG9uZW50LmdldFN0YXRlKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbFxyXG4gIH1cclxuXHJcbiAgcmVzdG9yZVN0YXRlKGNvbmZpZ3VyYXRpb246IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuZ2VuZXJpY0dyaWRDb21wb25lbnQpIHtcclxuICAgICAgdGhpcy5nZW5lcmljR3JpZENvbXBvbmVudC5yZXN0b3JlU3RhdGUoY29uZmlndXJhdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldFNlbGVjdGVkQ29sdW1ucyhjb25maWd1cmF0aW9uOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmdlbmVyaWNHcmlkQ29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuZ2VuZXJpY0dyaWRDb21wb25lbnQucmVzZXRTZWxlY3RlZENvbHVtbnMoY29uZmlndXJhdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uXHJcblxyXG4gIC8vIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAvLyB9XHJcblxyXG4gIC8vIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAvLyB9XHJcblxyXG4gIGFzeW5jIGdldFdvcmtmbG93RXRhdEZvcm1Gb3JDdXJyZW50QnVzaW5lc3NDbGFzcygpIHtcclxuICAgIGlmICh0aGlzLmJ1c2luZXNzQ2xhc3MgJiYgIXRoaXMuX2lzV29ya2Zsb3dFdGF0Rm9ybUxvYWRlZCkge1xyXG4gICAgICB0aGlzLl9pc1dvcmtmbG93RXRhdEZvcm1Mb2FkZWQgPSB0cnVlXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZS5nZXRXb3JrZmxvd0V0YXRGb3JtQnlDbGFzc05hbWUodGhpcy5idXNpbmVzc0NsYXNzKSk7XHJcbiAgICAgICAgdGhpcy5fd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZS53b3JrZmxvd0V0YXRGb3JtRm9yQ3VycmVudEZvcm0gPSByZXN1bHRcclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyB3b3JrZmxvdyBzdGF0ZSBmb3JtOicsIGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0V29ya2Zsb3dFbnRpdHlJbmZvcm1hdGlvbihidXNpbmVzc0NsYXNzOiBzdHJpbmcsIHVpZE9iamVjdD86IHN0cmluZykge1xyXG4gICAgbGV0IHJlc3VsdDogd29ya2Zsb3dJbnN0YW5jZUluZm9ybWF0aW9uUmVzcG9uc2UgfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCByZXF1ZXN0OiBHZXRXb3JrZmxvd0luc3RhbmNlSW5mb3JtYXRpb25SZXF1ZXN0ID0gbmV3IEdldFdvcmtmbG93SW5zdGFuY2VJbmZvcm1hdGlvblJlcXVlc3QoKTtcclxuICAgICAgcmVxdWVzdC5jbGFzc05hbWUgPSBidXNpbmVzc0NsYXNzXHJcbiAgICAgIHJlcXVlc3QudWlkT2JqZXQgPSB1aWRPYmplY3Q7XHJcbiAgICAgIHJlcXVlc3QuZGlzY3JpbWluYXRvckNsYXNzTmFtZSA9IHRoaXMuZW50aXR5SW5mbz8uZGlzY3JpbWluYXRvckNsYXNzTmFtZVxyXG4gICAgICByZXF1ZXN0LmRpc2NyaW1pbmF0b3JQcm9wZXJ0eU5hbWUgPSB0aGlzLmVudGl0eUluZm8/LmRpc2NyaW1pbmF0b3JQcm9wZXJ0eU5hbWVcclxuICAgICAgcmVxdWVzdC5kaXNjcmltaW5hdG9yVmFsdWUgPSB0aGlzLmRlc2NyaW1pbmF0b3JWYWx1ZVxyXG4gICAgICByZXN1bHQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl93b3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldEN1cnJlbnRFbnRpdHlXb3JrbGZvd0luc3RhbmNlSW5mb3JtYXRpb24ocmVxdWVzdCkpXHJcbiAgICAgIC8vIGlmIChyZXN1bHQpIHtcclxuICAgICAgLy8gICBsZXQgd29ya2Zsb3dFdGF0Rm9ybSA9IHRoaXMuX3dvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2Uud29ya2Zsb3dFdGF0Rm9ybUZvckN1cnJlbnRGb3JtXHJcbiAgICAgIC8vICAgICA/LmZpbmQoeCA9PiB4LnVpZCA9PSByZXN1bHQ/LndvcmtmbG93RXRhdClcclxuICAgICAgLy8gICBpZiAod29ya2Zsb3dFdGF0Rm9ybSkge1xyXG4gICAgICAvLyAgICAgLy8gdGhpcy5fd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZS53b3JrZmxvd0V0YXRGb3JGb3JDdXJyZW50RW50aXR5Rm9ybSA9XHJcbiAgICAgIC8vICAgICAvLyAgIHRoaXMuX3dvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2UubWFwV29ya2Zsb3dFdGF0Rm9ybVRvUHJlc2VudGF0aW9uU2V0dGluZyh3b3JrZmxvd0V0YXRGb3JtLndvcmtmbG93RXRhdHNGb3JtcylcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdFxyXG4gIH1cclxuXHJcbiAgc2VhcmNoRmllbGRWYWx1ZUNoYW5nZXMobmV3U2VhcmNoRmllbGRWYWx1ZXM6IEFycmF5PFNlYXJjaEZpZWxkPikge1xyXG4gICAgdGhpcy5zZWFyY2hGaWVsZHNWYWx1ZUNoYW5nZWQuZW1pdChuZXdTZWFyY2hGaWVsZFZhbHVlcyk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmdldEVudGl0eUluZm8oKTtcclxuICAgIHRoaXMuaW5pdGlhbGlzZVNob3dLYW5iYW5WaWV3T2ZXb3JrRmxvd0V0YXQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5zaG93SGVhZGVyRmlsdGVycyA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmZpbHRlclRvb2x0aXAgPSAnaGlkZV9maWx0ZXInO1xyXG4gICAgICB0aGlzLmZpbHRlckljb24gPSAncGkgcGktZmlsdGVyLXNsYXNoJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyVG9vbHRpcCA9ICdzaG93X2ZpbHRlcic7XHJcbiAgICAgIHRoaXMuZmlsdGVySWNvbiA9ICdwaSBwaS1maWx0ZXInO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvbHVtbnMgPT0gbnVsbCAmJiB0aGlzLmNvbHVtbnMgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAnY29sdW1ucyBjYW50IGJlIG51bGwgb3IgdW5kZWZpbmVkLCBkZXZlbG9wcGVyIG11c3Qgc2V0IGNvbHVtbnMgb2YgZ3JpZCAhJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gWy4uLnRoaXMuY29sdW1uc107XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvd0luZm9CdXR0b24gPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXI6ICdzaGFyZWRfYWN0aW9uc19pbmZvJyxcclxuICAgICAgICAgIGZpZWxkOiAnaW5mbycsXHJcbiAgICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1pbmZvJyxcclxuICAgICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IGhvdmVyOnNoYWRvdy04JyxcclxuICAgICAgICAgIGlzRnJvemVuOiB0cnVlLFxyXG4gICAgICAgICAgb3JkZXI6IDMsXHJcbiAgICAgICAgICB0b29sVGlwVGV4dDogJ3NoYXJlZF9hY3Rpb25zX2luZm8nLFxyXG4gICAgICAgICAgaXNJY29uQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYWN0aW9uRGlzcGxheTogQWN0aW9uUGxhY2VtZW50Lk92ZXJmbG93LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGhpcy5zZWxlY3RlZENvbHVtbnMsXHJcbiAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvd0Rvd25sb2FkQnV0dG9uID09IHRydWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbnNfZG93bmxvYWQnLFxyXG4gICAgICAgICAgZmllbGQ6ICdkb3dubG9hZCcsXHJcbiAgICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1kb3dubG9hZCcsXHJcbiAgICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBob3ZlcjpzaGFkb3ctOCcsXHJcbiAgICAgICAgICBpc0Zyb3plbjogdHJ1ZSxcclxuICAgICAgICAgIG9yZGVyOiAyLFxyXG4gICAgICAgICAgdG9vbFRpcFRleHQ6ICdUw6lsw6ljaGFyZ2VyJyxcclxuICAgICAgICAgIGlzSWNvbkJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGFjdGlvbkRpc3BsYXk6IEFjdGlvblBsYWNlbWVudC5PdmVyZmxvdyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRDb2x1bW5zLFxyXG4gICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNob3dVcGxvYWRCdXR0b24gPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXI6ICdzaGFyZWRfYWN0aW9uc19hdHRhY2htZW50JyxcclxuICAgICAgICAgIGZpZWxkOiAndXBsb2FkJyxcclxuICAgICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLXBhcGVyY2xpcCcsXHJcbiAgICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBob3ZlcjpzaGFkb3ctOCcsXHJcbiAgICAgICAgICBpc0Zyb3plbjogdHJ1ZSxcclxuICAgICAgICAgIG9yZGVyOiA0LFxyXG4gICAgICAgICAgdG9vbFRpcFRleHQ6ICdzaGFyZWRfYWN0aW9uc19hdHRhY2htZW50JyxcclxuICAgICAgICAgIGlzSWNvbkJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGFjdGlvbkRpc3BsYXk6IEFjdGlvblBsYWNlbWVudC5PdmVyZmxvdyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRDb2x1bW5zLFxyXG4gICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNob3dOb3RlQnV0dG9uKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25zX25vdGVzJyxcclxuICAgICAgICAgIGJ1dHRvbkxhYmVsOiAnJyxcclxuICAgICAgICAgIGZpZWxkOiAnbm90ZXMnLFxyXG4gICAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgICBidXR0b25JY29uOiAncGkgcGktY29tbWVudCcsXHJcbiAgICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBob3ZlcjpzaGFkb3ctOCcsXHJcbiAgICAgICAgICBpc0Zyb3plbjogdHJ1ZSxcclxuICAgICAgICAgIG9yZGVyOiA1LFxyXG4gICAgICAgICAgdG9vbFRpcFRleHQ6ICdzaGFyZWRfYWN0aW9uc19ub3RlcycsXHJcbiAgICAgICAgICBpc0ljb25CdXR0b246IHRydWUsXHJcbiAgICAgICAgICBhY3Rpb25EaXNwbGF5OiBBY3Rpb25QbGFjZW1lbnQuT3ZlcmZsb3csXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucyxcclxuICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zaG93QWN0aW9uQnV0dG9uKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25zX2FjdGlvbicsXHJcbiAgICAgICAgICBidXR0b25MYWJlbDogJycsXHJcbiAgICAgICAgICBmaWVsZDogJ0FjdGlvbkVSUCcsXHJcbiAgICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1ib2x0JyxcclxuICAgICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IGhvdmVyOnNoYWRvdy04JyxcclxuICAgICAgICAgIGlzRnJvemVuOiB0cnVlLFxyXG4gICAgICAgICAgb3JkZXI6IDEwLFxyXG4gICAgICAgICAgdG9vbFRpcFRleHQ6ICdzaGFyZWRfYWN0aW9uc19hY3Rpb24nLFxyXG4gICAgICAgICAgaXNJY29uQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYWN0aW9uRGlzcGxheTogQWN0aW9uUGxhY2VtZW50Lk92ZXJmbG93LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGhpcy5zZWxlY3RlZENvbHVtbnMsXHJcbiAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvd0Zvcm1CdXR0b24pIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbnNfZm9ybScsXHJcbiAgICAgICAgICBmaWVsZDogJ2Zvcm0nLFxyXG4gICAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgICBidXR0b25JY29uOiAncGkgcGktYm9vaycsXHJcbiAgICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBob3ZlcjpzaGFkb3ctOCcsXHJcbiAgICAgICAgICBpY29uU3R5bGVDbGFzczogJ3RleHQtaW5kaWdvLTUwMCcsXHJcbiAgICAgICAgICBpc0Zyb3plbjogdHJ1ZSxcclxuICAgICAgICAgIG9yZGVyOiA4LFxyXG4gICAgICAgICAgdG9vbFRpcFRleHQ6ICdzaGFyZWRfYWN0aW9uc19mb3JtJyxcclxuICAgICAgICAgIGlzSWNvbkJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGFjdGlvbkRpc3BsYXk6IEFjdGlvblBsYWNlbWVudC5PdmVyZmxvdyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRDb2x1bW5zLFxyXG4gICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNob3dEZWxldGVCdXR0b24gPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXI6ICdzaGFyZWRfYWN0aW9uc19kZWxldGUnLFxyXG4gICAgICAgICAgZmllbGQ6ICdkZWxldGUnLFxyXG4gICAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgICBidXR0b25JY29uOiAncGkgcGktdHJhc2gnLFxyXG4gICAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgaG92ZXI6c2hhZG93LTggcC1idXR0b24tZGFuZ2VyJyxcclxuICAgICAgICAgIGljb25TdHlsZUNsYXNzOiAndGV4dC1yZWQtNTAwJyxcclxuICAgICAgICAgIGlzRnJvemVuOiB0cnVlLFxyXG4gICAgICAgICAgb3JkZXI6IDEsXHJcbiAgICAgICAgICB0b29sVGlwVGV4dDogJ0RlbGV0ZScsXHJcbiAgICAgICAgICBidXR0b25UeXBlOiBCdXR0b25UeXBlLlN1Ym1pdCxcclxuICAgICAgICAgIGlzSWNvbkJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGFjdGlvbkRpc3BsYXk6IEFjdGlvblBsYWNlbWVudC5PdmVyZmxvdyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRDb2x1bW5zLFxyXG4gICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNob3dFZGl0QnV0dG9uID09IHRydWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbnNfZWRpdCcsXHJcbiAgICAgICAgICBmaWVsZDogJ2VkaXQnLFxyXG4gICAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgICBidXR0b25JY29uOiAncGkgcGktcGVuY2lsJyxcclxuICAgICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IGhvdmVyOnNoYWRvdy04JyxcclxuICAgICAgICAgIGlzRnJvemVuOiB0cnVlLFxyXG4gICAgICAgICAgb3JkZXI6IDYsXHJcbiAgICAgICAgICB0b29sVGlwVGV4dDogJ3NoYXJlZF9hY3Rpb25zX2VkaXQnLFxyXG4gICAgICAgICAgYnV0dG9uVHlwZTogQnV0dG9uVHlwZS5TdWJtaXQsXHJcbiAgICAgICAgICBpc0ljb25CdXR0b246IHRydWUsXHJcbiAgICAgICAgICBhY3Rpb25EaXNwbGF5OiBBY3Rpb25QbGFjZW1lbnQuSW5saW5lXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucyxcclxuICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zaG93Q29uc3VsdEJ1dHRvbiA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25zX2NvbnN1bHQnLFxyXG4gICAgICAgICAgZmllbGQ6ICdjb25zdWx0JyxcclxuICAgICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWV5ZScsXHJcbiAgICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBob3ZlcjpzaGFkb3ctOCcsXHJcbiAgICAgICAgICBpY29uU3R5bGVDbGFzczogJ3RleHQtYmx1ZS01MDAnLFxyXG4gICAgICAgICAgaXNGcm96ZW46IHRydWUsXHJcbiAgICAgICAgICBvcmRlcjogMCxcclxuICAgICAgICAgIHRvb2xUaXBUZXh0OiAnQ29uc3VsdGVyJyxcclxuICAgICAgICAgIGlzSWNvbkJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGFjdGlvbkRpc3BsYXk6IEFjdGlvblBsYWNlbWVudC5PdmVyZmxvdyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRDb2x1bW5zLFxyXG4gICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNob3dEdXBsaWNhdGVCdXR0b24gPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXI6ICdzaGFyZWRfYWN0aW9uc19kdXBsaWNhdGUnLFxyXG4gICAgICAgICAgZmllbGQ6ICdkdXBsaWNhdGUnLFxyXG4gICAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgICBidXR0b25JY29uOiAncGkgcGktY2xvbmUnLFxyXG4gICAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgaG92ZXI6c2hhZG93LTgnLFxyXG4gICAgICAgICAgaWNvblN0eWxlQ2xhc3M6ICd0ZXh0LXB1cnBsZS01MDAnLFxyXG4gICAgICAgICAgaXNGcm96ZW46IHRydWUsXHJcbiAgICAgICAgICBvcmRlcjogNyxcclxuICAgICAgICAgIHRvb2xUaXBUZXh0OiAnRHVwbGlxdWVyJyxcclxuICAgICAgICAgIGlzSWNvbkJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGFjdGlvbkRpc3BsYXk6IEFjdGlvblBsYWNlbWVudC5PdmVyZmxvdyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRDb2x1bW5zLFxyXG4gICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gW1xyXG4gICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1uc1xyXG4gICAgICAgIC5maWx0ZXIoY29sID0+IGNvbC5vcmRlciAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLm9yZGVyISAtIGIub3JkZXIhKSxcclxuICAgICAgLi4udGhpcy5zZWxlY3RlZENvbHVtbnMuZmlsdGVyKGNvbCA9PiBjb2wub3JkZXIgPT09IHVuZGVmaW5lZCksXHJcbiAgICBdO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zLm1hcChcclxuICAgICAgKGNvbHVtbikgPT5cclxuICAgICAgKGNvbHVtbi50cmFuc2xhdGVkSGVhZGVyID0gY29sdW1uLmhlYWRlclxyXG4gICAgICAgID8gdGhpcy5sb2NhbGl6ZS50cmFuc2Zvcm0oY29sdW1uLmhlYWRlcilcclxuICAgICAgICA6IGNvbHVtbi5oZWFkZXIpXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMudmlld09wdGlvbnMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbDogdGhpcy5sb2NhbGl6ZS50cmFuc2Zvcm0oJ3NoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfbGlzdF92aWV3JyksXHJcbiAgICAgICAgaWNvbjogJ3BpIHBpLWFsaWduLWp1c3RpZnknLFxyXG4gICAgICAgIGNvbW1hbmQ6ICgpID0+IHRoaXMudG9nZ2xlTGlzdFZpZXcoKVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbGFiZWw6IHRoaXMubG9jYWxpemUudHJhbnNmb3JtKFwic2hhcmVkX3RzaV9jb21wb25lbnRfZ3JpZF9jYWxlbmRlcl92aWV3XCIpLFxyXG4gICAgICAgIGljb246ICdwaSBwaS1jYWxlbmRhcicsXHJcbiAgICAgICAgY29tbWFuZDogKCkgPT4gdGhpcy50b2dnbGVDYWxlbmRlclZpZXcoKVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbGFiZWw6IHRoaXMubG9jYWxpemUudHJhbnNmb3JtKCdzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2NhcmRfdmlldycpLFxyXG4gICAgICAgIGljb246ICdwaSBwaS1pZC1jYXJkJyxcclxuICAgICAgICBjb21tYW5kOiAoKSA9PiB0aGlzLnRvZ2dsZUNhcmRWaWV3KClcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGxhYmVsOiB0aGlzLmxvY2FsaXplLnRyYW5zZm9ybSgnc2hhcmVkX3RzaV9jb21wb25lbnRfZ3JpZF9rYW5iYW5fdmlldycpLFxyXG4gICAgICAgIGljb246ICdwaSBwaS10aC1sYXJnZScsXHJcbiAgICAgICAgY29tbWFuZDogKCkgPT4gdGhpcy50b2dnbGVLYW5iYW5WaWV3KClcclxuICAgICAgfVxyXG4gICAgXTtcclxuXHJcbiAgICB0aGlzLl9pbml0TW9kZWxzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyogdG9nZ2xlSGVhZGVyRmlsdGVycygpe1xyXG4gICAgaWYodGhpcy5zaG93SGVhZGVyRmlsdGVycyA9PT0gdHJ1ZSl7XHJcbiAgICAgIHRoaXMuc2hvd0hlYWRlckZpbHRlcnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5maWx0ZXJJY29uID0gXCJwaSBwaS1maWx0ZXJcIjtcclxuICAgICAgdGhpcy5maWx0ZXJUb29sdGlwID0gXCJzaG93X2ZpbHRlclwiO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7IC8vdGhpcy5zaG93SGVhZGVyRmlsdGVycyA9PT0gZmFsc2VcclxuICAgICAgdGhpcy5zaG93SGVhZGVyRmlsdGVycyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZmlsdGVySWNvbiA9IFwicGkgcGktZmlsdGVyLXNsYXNoXCI7XHJcbiAgICAgIHRoaXMuZmlsdGVyVG9vbHRpcCA9IFwiaGlkZV9maWx0ZXJcIjtcclxuXHJcbiAgICB9XHJcbiAgfSAqL1xyXG5cclxuICBpc0xhc3RQYWdlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucGFnZVxyXG4gICAgICA/IHRoaXMucGFnZS5wYWdlTnVtYmVyID09PSB0aGlzLnBhZ2UudG90YWxDb3VudCAtIHRoaXMucGFnZS5wYWdlU2l6ZVxyXG4gICAgICA6IHRydWU7XHJcbiAgfVxyXG5cclxuICBpc0ZpcnN0UGFnZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnBhZ2UgPyB0aGlzLnBhZ2UucGFnZU51bWJlciA9PT0gMCA6IHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMYXp5TG9hZFxyXG4gICAqL1xyXG4gIC8vZmlyc3QgPT0+IHBhZ2UucGFnZU51bWJlclxyXG4gIC8vcm93cyA9PT4gcGFnZS5wYWdlU2l6ZVxyXG4gIC8vdGhpcy5wYWdlLml0ZW1zLmxlbmd0aCA9PT4gdG90YWwgY291bnRcclxuXHJcbiAgb3Blbk5ldygpIHtcclxuICAgIGlmICghdGhpcy5wcmV2ZW50QWRkRXZlbnQpIHtcclxuICAgICAgdGhpcy5fb3Blbk1vZGFsKENvbXBvbmVudF9Nb2Rlcy5DUkVBVEUsIG51bGwsIHRoaXMuX21vZGFsRGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5idXR0b25Db2x1bW5DbGlja2VkLmVtaXQoe1xyXG4gICAgICBrZXk6IHVuZGVmaW5lZCxcclxuICAgICAgZmllbGQ6ICdhZGQnLFxyXG4gICAgICBzZWxlY3RLZXlPbmx5OiB0aGlzLnNlbGVjdEtleU9ubHksXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGhhbmRsZUJ1dHRvbkNvbHVtbkNsaWNrZWQoZXZlbnQ6IEJ1dHRvbkNsaWNrUmVzdWx0KSB7XHJcblxyXG4gICAgbGV0IGl0ZW1LZXk6IGFueSA9IGV2ZW50LnNlbGVjdEtleU9ubHkgPyBldmVudC5rZXkgOiBldmVudC5rZXlbdGhpcy5rZXldO1xyXG5cclxuICAgIGNvbnN0IGV4Y2x1ZGVkID0gW1wiTm90ZXNcIixcIkFjdGlvbkVSUFwiLCBcIkZpY2hpZXJcIl07XHJcbiAgICBpZiAodGhpcy5idXNpbmVzc0NsYXNzICYmICFleGNsdWRlZC5pbmNsdWRlcyh0aGlzLmJ1c2luZXNzQ2xhc3MpKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nRGF0YVNlcnZpY2Uuc2V0RGF0YSh7IGlkOiBpdGVtS2V5LCBjbGFzczogdGhpcy5idXNpbmVzc0NsYXNzIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChldmVudC5maWVsZCA9PSAnZWRpdCcpIHtcclxuICAgICAgdGhpcy5fZWRpdFJvdyhpdGVtS2V5KTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQuZmllbGQgPT0gJ2RlbGV0ZScpIHtcclxuICAgICAgdGhpcy5fZGVsZXRlUm93KGl0ZW1LZXkpO1xyXG4gICAgfSBlbHNlIGlmIChldmVudC5maWVsZCA9PSAnY29uc3VsdCcpIHtcclxuICAgICAgdGhpcy5fY29uc3VsdFJvdyhpdGVtS2V5KTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQuZmllbGQgPT0gJ2R1cGxpY2F0ZScpIHtcclxuXHJcbiAgICAgIGlmICghdGhpcy5idXNpbmVzc0NsYXNzKSB7XHJcbiAgICAgICAgdGhyb3cgRXJyb3IoXCJCdXNzaW5lc3MgY2xhc3MgaXMgbm90IGRlZmluZWQgIVwiKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5fZHVwbGljYXRlUm93KGl0ZW1LZXkpO1xyXG5cclxuICAgIH0gZWxzZSBpZiAoZXZlbnQuZmllbGQgPT0gJ3VwbG9hZCcpIHtcclxuICAgICAgY29uc3QgY29uZiA9IHtcclxuICAgICAgICBkYXRhOiB7fSxcclxuICAgICAgICBzdHlsZUNsYXNzOiAnJyxcclxuICAgICAgICB3aWR0aDogdGhpcy5tb2RhbFNpemUhLndpZHRoLFxyXG4gICAgICAgIGhlaWdodDogdGhpcy5tb2RhbFNpemUhLmhlaWdodCxcclxuICAgICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAgICAgfVxyXG4gICAgICBjb25zdCByZWYgPSBhd2FpdCBvcGVuTW9kYWxVcGxvYWRHcmlkKHRoaXMuX2luamVjdG9yLCBjb25mKVxyXG5cclxuICAgICAgcmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKCh2YWw/OiBhbnkpID0+IHRoaXMuX2Nsb3NlTW9kYWwodmFsKSk7XHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmZpZWxkID09ICdub3RlcycpIHtcclxuXHJcbiAgICAgIGNvbnN0IHJlZiA9IGF3YWl0IG9wZW5Ob3Rlc0xpc3QodGhpcy5faW5qZWN0b3IpO1xyXG5cclxuICAgICAgcmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKCh2YWw/OiBhbnkpID0+IHRoaXMuX2Nsb3NlTW9kYWwodmFsKSk7XHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmZpZWxkID09ICdkb3dubG9hZCcpIHtcclxuXHJcbiAgICAgIHRoaXMuZmljaGllclNlcnZpY2UuZ2V0QnlJZChpdGVtS2V5KS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKGRhdGEpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2F2ZUZpbGUoZGF0YS5jb250ZW51LCBkYXRhLm5vbUZpY2hpZXJDb21wbGV0ISk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcblxyXG4gICAgfSBlbHNlIGlmIChldmVudC5maWVsZCA9PSAnaW5mbycpIHtcclxuXHJcbiAgICAgIHRoaXMucmVjb3JkSW5mb1BvcHVwU2VydmljZVxyXG4gICAgICAgIC5nZXRJbmZvKHRoaXMuYnVzaW5lc3NDbGFzcyEsIGl0ZW1LZXkpXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBtb2RhbFNpemUgPSBNb2RhbFNpemVFbnVtLkV4dHJhTGFyZ2U7XHJcbiAgICAgICAgICAgIGxldCB0ZXh0ID1cclxuICAgICAgICAgICAgICAnVUlEIDogICcgK1xyXG4gICAgICAgICAgICAgIGl0ZW1LZXkgK1xyXG4gICAgICAgICAgICAgICc8QlI+Q3JlYXRlZCBieSA6ICAnICtcclxuICAgICAgICAgICAgICBkYXRhLmNyZWF0aW9uVXNlciArXHJcbiAgICAgICAgICAgICAgJzxCUj5Nb2RpZmllZCBieSA6ICcgK1xyXG4gICAgICAgICAgICAgIGRhdGEubW9kaWZVc2VyICtcclxuICAgICAgICAgICAgICAnPEJSPkNyZWF0ZWQgb24gOiAnICtcclxuICAgICAgICAgICAgICBkYXRhLmRhdGVTYWlzaWUgK1xyXG4gICAgICAgICAgICAgICc8QlI+TW9kaWZpZWQgb24gOiAnICtcclxuICAgICAgICAgICAgICBkYXRhLmRhdGVNb2RpZjtcclxuXHJcbiAgICAgICAgICAgIGxldCBjb25mOiBEeW5hbWljRGlhbG9nQ29uZmlnID0ge1xyXG4gICAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgIFVpZDogaXRlbUtleSxcclxuICAgICAgICAgICAgICAgIGJ1c2luZXNzQ2xhc3M6IHRoaXMuYnVzaW5lc3NDbGFzcyxcclxuICAgICAgICAgICAgICAgIGNyZWF0aW9uVXNlcjogZGF0YS5jcmVhdGlvblVzZXIsXHJcbiAgICAgICAgICAgICAgICBtb2RpZlVzZXI6IGRhdGEubW9kaWZVc2VyLFxyXG4gICAgICAgICAgICAgICAgZGF0ZVNhaXNpZTogZGF0YS5kYXRlU2Fpc2llLFxyXG4gICAgICAgICAgICAgICAgZGF0ZU1vZGlmOiBkYXRhLmRhdGVNb2RpZixcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIG1heGltaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgIHdpZHRoOiAnOTByZW0nLFxyXG4gICAgICAgICAgICAgIGhlaWdodDogJzgwcmVtJyxcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZiA9IHRoaXMuX3RzaU1vZGFsU2VydmljZS5vcGVuKFxyXG4gICAgICAgICAgICAgIFRzaVBvcHVwVGV4dFZpZXdlckNvbXBvbmVudCxcclxuICAgICAgICAgICAgICBjb25mXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5vbkNsb3NlLnN1YnNjcmliZSgodmFsPzogYW55KSA9PlxyXG4gICAgICAgICAgICAgIHRoaXMuX2Nsb3NlTW9kYWwodmFsKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGV2ZW50LmZpZWxkID09ICdmb3JtJyl7XHJcbiAgICAgIGlmKCF0aGlzLmJ1c2luZXNzQ2xhc3MpXHJcbiAgICAgIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBmb3JtRGVzY3JpbWluYXRvclZhbHVlOiBhbnkgPSBudWxsO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZGVzY3JpbWluYXRvclZhbHVlKVxyXG4gICAgICB7XHJcbiAgICAgICAgZm9ybURlc2NyaW1pbmF0b3JWYWx1ZSA9IHRoaXMuZGVzY3JpbWluYXRvclZhbHVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIWZvcm1EZXNjcmltaW5hdG9yVmFsdWUpXHJcbiAgICAgIHtcclxuICAgICAgICBsZXQgZGlzY3JpbWluYXRvclJlc3BvbnNlID0gYXdhaXQgdGhpcy5nZXREaXNjcmltaW5hdG9yKHRoaXMuYnVzaW5lc3NDbGFzcywgaXRlbUtleSk7XHJcbiAgICAgICAgZm9ybURlc2NyaW1pbmF0b3JWYWx1ZSA9IGRpc2NyaW1pbmF0b3JSZXNwb25zZT8uZGlzY3JpbWluYXRvcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgbW9kYWxDb25maWcgPSB7XHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgc291cmNlQnVzaW5lc3NDbGFzczoge1xyXG4gICAgICAgICAgICBidXNpbmVzc0NsYXNzOiB0aGlzLmJ1c2luZXNzQ2xhc3MsXHJcbiAgICAgICAgICAgIGRpc2NyaW1pbmF0b3JWYWx1ZTogZm9ybURlc2NyaW1pbmF0b3JWYWx1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc3R5bGVDbGFzczogJycsXHJcbiAgICAgICAgd2lkdGg6IHRoaXMubW9kYWxTaXplIS53aWR0aCxcclxuICAgICAgICBoZWlnaHQ6IHRoaXMubW9kYWxTaXplIS5oZWlnaHQsXHJcbiAgICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcmVmID0gYXdhaXQgb3BlbkR5bmFtaWNGb3JtTW9kYWxDb21wb25lbnQodGhpcy5faW5qZWN0b3IsIG1vZGFsQ29uZmlnKVxyXG5cclxuICAgICAgcmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKCh2YWw/OiBhbnkpID0+IHRoaXMuX2Nsb3NlTW9kYWwodmFsKSk7XHJcbiAgICB9ZWxzZSBpZiAoZXZlbnQuZmllbGQgPT0gJ0FjdGlvbkVSUCcpIHtcclxuXHJcbiAgICAgIGxldCBvY2N1cmVuY2VJbmZvczogb2NjdXJlbmNlSW5mb3MgPSB7XHJcbiAgICAgICAgYnVzaW5lc3NjbGFzczogdGhpcy5idXNpbmVzc0NsYXNzID8/ICcnLFxyXG4gICAgICAgIG9jY3VyZW5jZTogaXRlbUtleVxyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCByZWYgPSBhd2FpdCBvcGVuQWN0aW9uTGlzdCh0aGlzLl9pbmplY3RvciwgeyBvY2N1cmVuY2VJbmZvczogb2NjdXJlbmNlSW5mb3MgfSk7XHJcblxyXG4gICAgICByZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT4gdGhpcy5fY2xvc2VNb2RhbCh2YWwpKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmJ1dHRvbkNvbHVtbkNsaWNrZWQuZW1pdCh7XHJcbiAgICAgICAga2V5OiBldmVudC5rZXksXHJcbiAgICAgICAgZmllbGQ6IGV2ZW50LmZpZWxkLFxyXG4gICAgICAgIHNlbGVjdEtleU9ubHk6IHRoaXMuc2VsZWN0S2V5T25seSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzYXZlRmlsZShiYXNlNjREYXRhOiBhbnksIGZpbGVOYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGJ5dGVDaGFyYWN0ZXJzID0gYXRvYihiYXNlNjREYXRhKTtcclxuICAgIGNvbnN0IGJ5dGVOdW1iZXJzID0gbmV3IEFycmF5KGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aCk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGJ5dGVOdW1iZXJzW2ldID0gYnl0ZUNoYXJhY3RlcnMuY2hhckNvZGVBdChpKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ5dGVOdW1iZXJzKTtcclxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnl0ZUFycmF5XSwgeyB0eXBlOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyB9KTtcclxuXHJcbiAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuXHJcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcclxuICAgIGEuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgIGEuaHJlZiA9IHVybDtcclxuICAgIGEuZG93bmxvYWQgPSBmaWxlTmFtZTtcclxuICAgIGEuY2xpY2soKTtcclxuXHJcbiAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xyXG4gIH1cclxuXHJcbiAgbG9hZChldmVudDogeyByZXF1ZXN0OiBJUGFnZWRSZXF1ZXN0OyBpc0ZvckNhbGVuZGFyOiBib29sZWFuIH0pIHtcclxuICAgIHRoaXMucGFnZWRSZXF1ZXN0ID0gZXZlbnQucmVxdWVzdDtcclxuICAgIHRoaXMuX3NldGZvcm1FbmRwb2ludEJvZHkoKTtcclxuICAgIHRoaXMuX2xvYWREUyhldmVudC5pc0ZvckNhbGVuZGFyKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ZWRJdGVtc0NoYW5nZShldmVudDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIHByaXZhdGUgbWV0aG9kc1xyXG4gIHByaXZhdGUgX3NldGZvcm1FbmRwb2ludEJvZHkoKTogdm9pZCB7XHJcbiAgICBsZXQgb3g6IGFueSA9IHRoaXMuX2Nsb25lUGFnZWRSZXF1ZXN0KHRoaXMucGFnZWRSZXF1ZXN0KTtcclxuICAgIG94WydnZXRBbGxEYXRhJ10gPSB0cnVlO1xyXG4gICAgdGhpcy5mb3JtRW5kcG9pbnRCb2R5ID0gSlNPTi5zdHJpbmdpZnkob3gpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdE1vZGVscygpIHtcclxuXHJcbiAgICB0aGlzLnBhZ2UgPSB7XHJcbiAgICAgIGl0ZW1zOiBbXSxcclxuICAgICAgcGFnZVNpemU6IDEwLFxyXG4gICAgICBwYWdlTnVtYmVyOiAxLFxyXG4gICAgICB0b3RhbENvdW50OiAwLFxyXG4gICAgICB0b3RhbFBhZ2VzOiAwLFxyXG4gICAgICBzdW1tYXJpZXM6IFtdLFxyXG4gICAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5wYWdlZFJlcXVlc3QgPSB7XHJcbiAgICAgIG1heFJlc3VsdENvdW50OiAxMCxcclxuICAgICAgc2tpcENvdW50OiAwLFxyXG4gICAgICBzb3J0aW5nOiBbXSxcclxuICAgICAga2V5d29yZDogJycsXHJcbiAgICAgIGZpbHRlcnM6IFtdLFxyXG4gICAgICBnZXRBbGxEYXRhOiBmYWxzZSxcclxuICAgICAgc3VtbWFyaWVzOiBbXSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2FkRFMoaXNGb3JDYWxlbmRlcjogYm9vbGVhbiA9IGZhbHNlKSB7XHJcblxyXG4gICAgdGhpcy5wYWdlLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5wYWdlJC5uZXh0KHRoaXMucGFnZSk7XHJcbiAgICB0aGlzLnBhZ2VkUmVxdWVzdCA9IHtcclxuICAgICAgLi4udGhpcy5wYWdlZFJlcXVlc3QsXHJcbiAgICAgIGdldEFsbERhdGE6IGlzRm9yQ2FsZW5kZXIsXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLmNydWRTZXJ2aWNlICE9IG51bGwgJiYgdGhpcy5jcnVkU2VydmljZSAhPSB1bmRlZmluZWQpIHtcclxuXHJcbiAgICAgIHRoaXMuY3J1ZFNlcnZpY2UuZ2V0QWxsUGFnZWQodGhpcy5wYWdlZFJlcXVlc3QpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHZhbHVlOiBJUGFnZWRSZXNwb25zZTxhbnk+KSA9PiB7XHJcbiAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5wYWdlID0ge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMucGFnZSxcclxuICAgICAgICAgICAgICBpdGVtcyA6IHZhbHVlLml0ZW1zLFxyXG4gICAgICAgICAgICAgIHRvdGFsQ291bnQgOiB2YWx1ZS50b3RhbENvdW50LFxyXG4gICAgICAgICAgICAgIHN1bW1hcmllcyA6IHZhbHVlLnN1bW1hcmllcyA/IHZhbHVlLnN1bW1hcmllcyA6IFtdLFxyXG4gICAgICAgICAgICAgIHRvdGFsUGFnZXMgOiAodGhpcy5wYWdlLnRvdGFsQ291bnQgLSAgKHRoaXMucGFnZS50b3RhbENvdW50ICUgdGhpcy5wYWdlLnBhZ2VTaXplKSkgLyB0aGlzLnBhZ2UucGFnZVNpemUgKyAxLFxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuc2hvd05vdGVCdXR0b24pIHtcclxuICAgICAgICAgICAgICB0aGlzLmxvYWROb3Rlc0NvdW50cygpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZih0aGlzLmlzQ3VzdG9tQ29sdW1uUmVuZGVyZWQgPT0gZmFsc2UgJiYgdmFsdWUuY3VzdG9tQ29sdW1uU2NoZW1hICYmIHZhbHVlLmN1c3RvbUNvbHVtblNjaGVtYS5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgLy8gQWRkIGN1c3RvbSBjb2x1bW5zIHRvIHRoZSBncmlkXHJcbiAgICAgICAgICAgICAgdmFsdWUuY3VzdG9tQ29sdW1uU2NoZW1hLmZvckVhY2goY2NzID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBjdXN0b21Db2x1bW5HcmlkOiBHcmlkQ29sdW1uID0ge1xyXG4gICAgICAgICAgICAgICAgICBoZWFkZXI6IGNjcy5jb2x1bW5OYW1lLFxyXG4gICAgICAgICAgICAgICAgICBmaWVsZDogY2NzLmNvbHVtbk5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIGZpbHRlcklucHV0VHlwZTogY2NzLnR5cGUsXHJcbiAgICAgICAgICAgICAgICAgIGlzQ3VzdG9tQ29sdW1uOiB0cnVlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucy5wdXNoKGN1c3RvbUNvbHVtbkdyaWQpXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB0aGlzLmlzQ3VzdG9tQ29sdW1uUmVuZGVyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnBhZ2UubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5wYWdlJC5uZXh0KHZhbHVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5lcnJvcihlcnJvci5tZXNzYWdlKTtcclxuICAgICAgICAgIHRoaXMucGFnZS5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWROb3Rlc0NvdW50cygpIHtcclxuICAgIGNvbnN0IGlkcyA9IHRoaXMucGFnZS5pdGVtcy5tYXAoeCA9PiB4W3RoaXMua2V5XSlcclxuICAgICAgLmZpbHRlcih4ID0+IHggIT09IG51bGwgJiYgeCAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAubWFwKHggPT4gU3RyaW5nKHgpKTtcclxuXHJcbiAgICBpZiAoIWlkcy5sZW5ndGggfHwgIXRoaXMuYnVzaW5lc3NDbGFzcykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5ub3Rlc1NlcnZpY2VcclxuICAgICAgLmdldE5vdGVzQ291bnRCeVJvd3ModGhpcy5idXNpbmVzc0NsYXNzLCBpZHMpXHJcbiAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuXHJcbiAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oXHJcbiAgICAgICAgICByZXN1bHQubWFwKHggPT4gW3gucm93VWlkLCB4LmNvdW50XSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLnBhZ2UuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgIGNvbnN0IGtleSA9IFN0cmluZyhpdGVtW3RoaXMua2V5XSk7XHJcbiAgICAgICAgICBjb25zdCBjb3VudCA9IG1hcC5nZXQoa2V5KTtcclxuICAgICAgICAgIChpdGVtIGFzIGFueSkubm90ZXNDb3VudCA9IHR5cGVvZiBjb3VudCA9PT0gJ251bWJlcicgPyBjb3VudCA6IDA7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZWRpdFJvdyhpdGVtS2V5OiBhbnkpIHtcclxuICAgIHRoaXMuX2hhbmRsZUFjdGlvbldpdGhBbGVydENoZWNrKENvbXBvbmVudF9Nb2Rlcy5FRElULCBpdGVtS2V5KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2RlbGV0ZVJvdyhpdGVtS2V5OiBhbnkpIHtcclxuICAgIHRoaXMuX2hhbmRsZUFjdGlvbldpdGhBbGVydENoZWNrKENvbXBvbmVudF9Nb2Rlcy5ERUxFVEUsIGl0ZW1LZXkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY29uc3VsdFJvdyhpdGVtS2V5OiBhbnkpIHtcclxuICAgIHRoaXMuX2hhbmRsZUFjdGlvbldpdGhBbGVydENoZWNrKENvbXBvbmVudF9Nb2Rlcy5DT05TVUxULCBpdGVtS2V5KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZHVwbGljYXRlUm93KGl0ZW1LZXk6IGFueSkge1xyXG4gICAgdGhpcy5faGFuZGxlQWN0aW9uV2l0aEFsZXJ0Q2hlY2soQ29tcG9uZW50X01vZGVzLkRVUExJQ0FURSwgaXRlbUtleSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGdldEVudGl0eUluZm8oKSB7XHJcbiAgICBpZiAodGhpcy5idXNpbmVzc0NsYXNzKSB7XHJcbiAgICAgIHRoaXMuZW50aXR5SW5mbyA9IGF3YWl0IHRoaXMuX2VudGl0eUNvbmZpZ1NlcnZpY2UuZ2V0RW50aXR5SW5mb0Zyb21DYWNoZSh0aGlzLmJ1c2luZXNzQ2xhc3MpO1xyXG4gICAgICBpZiAoIXRoaXMuZW50aXR5SW5mbykge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihgTm8gZW50aXR5IGluZm8gZm91bmQgZm9yICR7dGhpcy5idXNpbmVzc0NsYXNzfWApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9vcGVuTW9kYWwobW9kZTogc3RyaW5nLCBpdGVtS2V5OiBhbnksIGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5jcnVkU2VydmljZSEuaXNEdXBsaWNhdGUgPSBtb2RlID09PSBNb2Rlcy5kdXBsaWNhdGU7XHJcbiAgICBsZXQgd29ya2Zsb3dFbnRpdHlJbmZvcm1hdGlvbjogd29ya2Zsb3dJbnN0YW5jZUluZm9ybWF0aW9uUmVzcG9uc2UgfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcclxuXHJcbiAgICBpZiAodGhpcy5idXNpbmVzc0NsYXNzKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgdGhpcy5lbnRpdHlJbmZvID0gYXdhaXQgdGhpcy5fZW50aXR5Q29uZmlnU2VydmljZS5nZXRFbnRpdHlJbmZvRnJvbUNhY2hlKHRoaXMuYnVzaW5lc3NDbGFzcylcclxuICAgICAgICB3b3JrZmxvd0VudGl0eUluZm9ybWF0aW9uID0gYXdhaXQgdGhpcy5nZXRXb3JrZmxvd0VudGl0eUluZm9ybWF0aW9uKHRoaXMuYnVzaW5lc3NDbGFzcywgaXRlbUtleSk7XHJcbiAgICAgIH1cclxuICAgICAgY2F0Y2ggKGVycm9yKXtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGNvbmY6IER5bmFtaWNEaWFsb2dDb25maWc7XHJcblxyXG4gICAgaWYgKHRoaXMubW9kYWxTaXplICE9IG51bGwgJiYgdGhpcy5tb2RhbFNpemUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGNvbmYgPSB7XHJcbiAgICAgICAgZGF0YTogeyBpZDogaXRlbUtleSwgbW9kZTogbW9kZSwgY3VzdG9tRGF0YTogZGF0YSwgd29ya2Zsb3dJbmZvcm1hdGlvbjogd29ya2Zsb3dFbnRpdHlJbmZvcm1hdGlvbiwgZW50aXR5SW5mbzogdGhpcy5lbnRpdHlJbmZvIH0sXHJcbiAgICAgICAgc3R5bGVDbGFzczogJycsXHJcbiAgICAgICAgd2lkdGg6IHRoaXMubW9kYWxTaXplLndpZHRoLFxyXG4gICAgICAgIGhlaWdodDogdGhpcy5tb2RhbFNpemUuaGVpZ2h0LFxyXG4gICAgICAgIG1heGltaXphYmxlOiB0cnVlLFxyXG4gICAgICAgIHRlbXBsYXRlczoge1xyXG4gICAgICAgICAgZm9vdGVyOiBUc2lGb3JtTW9kYWxGb290ZXJDb21wb25lbnQsXHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uZiA9IHtcclxuICAgICAgICBkYXRhOiB7IGlkOiBpdGVtS2V5LCBtb2RlOiBtb2RlLCBjdXN0b21EYXRhOiBkYXRhLCB3b3JrZmxvd0luZm9ybWF0aW9uOiB3b3JrZmxvd0VudGl0eUluZm9ybWF0aW9uIH0sXHJcbiAgICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGVvZiB0aGlzLmN1ZENvbXBvbmVudCA9PSAnc3RyaW5nJykge1xyXG4gICAgICB0aGlzLmN1ZENvbXBvbmVudCA9IFR5cGVSZWdpc3RyeUhlbHBlci5nZXRUeXBlKHRoaXMuY3VkQ29tcG9uZW50KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9kaWFsb2dSZWYgPSB0aGlzLl90c2lNb2RhbFNlcnZpY2Uub3Blbih0aGlzLmN1ZENvbXBvbmVudCwgY29uZik7XHJcblxyXG4gICAgdGhpcy5fZGlhbG9nUmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKCh2YWw/OiBhbnkpID0+IHRoaXMuX2Nsb3NlTW9kYWwoY29uZikpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2xvc2VNb2RhbChjb25mPzogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoY29uZiAmJiBjb25mPy5kYXRhPy5yZWZyZXNoTGlzdCkge1xyXG4gICAgICB0aGlzLl9sb2FkRFMoKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2RpYWxvZ1JlZj8uZGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2xvbmVQYWdlZFJlcXVlc3QocmVxdWVzdDogSVBhZ2VkUmVxdWVzdCk6IElQYWdlZFJlcXVlc3Qge1xyXG4gICAgbGV0IGNsb25lOiBJUGFnZWRSZXF1ZXN0ID0ge1xyXG4gICAgICBtYXhSZXN1bHRDb3VudDogcmVxdWVzdC5tYXhSZXN1bHRDb3VudCxcclxuICAgICAgc2tpcENvdW50OiByZXF1ZXN0LnNraXBDb3VudCxcclxuICAgICAgc29ydGluZzogcmVxdWVzdC5zb3J0aW5nLFxyXG4gICAgICBrZXl3b3JkOiByZXF1ZXN0LmtleXdvcmQsXHJcbiAgICAgIGZpbHRlcnM6IHJlcXVlc3QuZmlsdGVycyxcclxuICAgICAgZ2V0QWxsRGF0YTogcmVxdWVzdC5nZXRBbGxEYXRhLFxyXG4gICAgICBzdW1tYXJpZXM6IHJlcXVlc3Quc3VtbWFyaWVzLFxyXG4gICAgfTtcclxuICAgIHJldHVybiBjbG9uZTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2goZGF0YTogYW55KSB7XHJcbiAgICBpZiAoZGF0YSA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuX2xvYWREUygpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgZGlzcGxheVNlYXJjaEZpZWxkcygpIHtcclxuICAgIHRoaXMuc2hvd1NlYXJjaEZpZWxkID0gIXRoaXMuc2hvd1NlYXJjaEZpZWxkO1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIGNhbGVuZGVyXHJcbiAgaGFuZGxlQ2FsZW5kYXJFdmVudENsaWNrKGl0ZW06IGFueSkge1xyXG4gICAgc3dpdGNoIChpdGVtLm1vZGUpIHtcclxuICAgICAgY2FzZSBDb21wb25lbnRfTW9kZXMuQ09OU1VMVDpcclxuICAgICAgICB0aGlzLl9jb25zdWx0Um93KGl0ZW0uaWQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbXBvbmVudF9Nb2Rlcy5DUkVBVEU6XHJcbiAgICAgICAgdGhpcy5fb3Blbk1vZGFsKENvbXBvbmVudF9Nb2Rlcy5DUkVBVEUsIG51bGwsIGl0ZW0uZGF0ZURlYnV0KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb21wb25lbnRfTW9kZXMuRURJVDpcclxuICAgICAgICB0aGlzLl9lZGl0Um93KGl0ZW0uaWQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAnaW5mbyc6XHJcbiAgICAgICAgdGhpcy5oYW5kbGVCdXR0b25Db2x1bW5DbGlja2VkKHsgZmllbGQ6ICdpbmZvJywga2V5OiBpdGVtLmlkLCBzZWxlY3RLZXlPbmx5OiB0cnVlIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdkb3dubG9hZCc6XHJcbiAgICAgICAgdGhpcy5oYW5kbGVCdXR0b25Db2x1bW5DbGlja2VkKHsgZmllbGQ6ICdkb3dubG9hZCcsIGtleTogaXRlbS5pZCwgc2VsZWN0S2V5T25seTogdHJ1ZSB9KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAndXBsb2FkJzpcclxuICAgICAgICB0aGlzLmhhbmRsZUJ1dHRvbkNvbHVtbkNsaWNrZWQoeyBmaWVsZDogJ3VwbG9hZCcsIGtleTogaXRlbS5pZCwgc2VsZWN0S2V5T25seTogdHJ1ZSB9KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbm90ZXMnOlxyXG4gICAgICAgIHRoaXMuaGFuZGxlQnV0dG9uQ29sdW1uQ2xpY2tlZCh7IGZpZWxkOiAnbm90ZXMnLCBrZXk6IGl0ZW0uaWQsIHNlbGVjdEtleU9ubHk6IHRydWUgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0FjdGlvbkVSUCc6XHJcbiAgICAgICAgdGhpcy5oYW5kbGVCdXR0b25Db2x1bW5DbGlja2VkKHsgZmllbGQ6ICdBY3Rpb25FUlAnLCBrZXk6IGl0ZW0uaWQsIHNlbGVjdEtleU9ubHk6IHRydWUgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvZ2dsZUxpc3RWaWV3KCkge1xyXG4gICAgdGhpcy5zaG93Q2FyZFZpZXcgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0NhbGVuZGVyVmlldyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93S2FuYmFuVmlldyA9IGZhbHNlO1xyXG4gICAgdGhpcy5fbG9hZERTKCk7XHJcbiAgICB0aGlzLmN1cnJlbnRJY29uID0gXCJwaSBwaS1hbGlnbi1qdXN0aWZ5XCI7XHJcbiAgICB0aGlzLmN1cnJlbnRUb29sdGlwID0gXCJzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2xpc3Rfdmlld1wiO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b2dnbGVDYWxlbmRlclZpZXcoKSB7XHJcbiAgICB0aGlzLnNob3dDYWxlbmRlclZpZXcgPSAhdGhpcy5zaG93Q2FsZW5kZXJWaWV3O1xyXG4gICAgdGhpcy5zaG93Q2FyZFZpZXcgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0thbmJhblZpZXcgPSBmYWxzZTtcclxuICAgIHRoaXMuX2xvYWREUyh0aGlzLnNob3dDYWxlbmRlclZpZXcpO1xyXG4gICAgdGhpcy5jdXJyZW50SWNvbiA9IFwicGkgcGktY2FsZW5kYXJcIjtcclxuICAgIHRoaXMuY3VycmVudFRvb2x0aXAgPSBcInNoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfY2FsZW5kZXJfdmlld1wiO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b2dnbGVDYXJkVmlldygpIHtcclxuICAgIHRoaXMuc2hvd0NhcmRWaWV3ID0gIXRoaXMuc2hvd0NhcmRWaWV3O1xyXG4gICAgdGhpcy5zaG93Q2FsZW5kZXJWaWV3ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dLYW5iYW5WaWV3ID0gZmFsc2U7XHJcbiAgICAvLyB0aGlzLl9sb2FkRFModGhpcy5zaG93Q2FyZFZpZXcpO1xyXG4gICAgdGhpcy5jdXJyZW50SWNvbiA9IFwicGkgcGktaWQtY2FyZFwiO1xyXG4gICAgdGhpcy5jdXJyZW50VG9vbHRpcCA9IFwic2hhcmVkX3RzaV9jb21wb25lbnRfZ3JpZF9jYXJkX3ZpZXdcIjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9nZ2xlS2FuYmFuVmlldygpIHtcclxuICAgIHRoaXMuc2hvd0thbmJhblZpZXcgPSAhdGhpcy5zaG93S2FuYmFuVmlldztcclxuICAgIHRoaXMuc2hvd0NhcmRWaWV3ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dDYWxlbmRlclZpZXcgPSBmYWxzZTtcclxuICAgIHRoaXMuX2xvYWREUygpO1xyXG4gICAgdGhpcy5jdXJyZW50SWNvbiA9IFwicGkgcGktdGgtbGFyZ2VcIjtcclxuICAgIHRoaXMuY3VycmVudFRvb2x0aXAgPSBcInNoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfa2FuYmFuX3ZpZXdcIjtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRjQnKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMub3Blbk5ldygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGhhbmRsZUFjdGlvblZpZXdDbGljaygpIHtcclxuICAgIHRoaXMuY2xpY2tDb3VudCsrO1xyXG5cclxuICAgIHN3aXRjaCAodGhpcy5jbGlja0NvdW50KSB7XHJcbiAgICAgIGNhc2UgMTpcclxuICAgICAgICB0aGlzLnRvZ2dsZUxpc3RWaWV3KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIDI6XHJcbiAgICAgICAgdGhpcy50b2dnbGVDYWxlbmRlclZpZXcoKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgMzpcclxuICAgICAgICB0aGlzLnRvZ2dsZUNhcmRWaWV3KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIDQ6XHJcbiAgICAgICAgdGhpcy50b2dnbGVLYW5iYW5WaWV3KCk7XHJcbiAgICAgICAgdGhpcy5jbGlja0NvdW50ID0gMDtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhpcy5jbGlja0NvdW50ID0gMDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIF9oYW5kbGVBY3Rpb25XaXRoQWxlcnRDaGVjayhtb2RlOiBDb21wb25lbnRfTW9kZXMsIGl0ZW1LZXk6IGFueSkge1xyXG4gICAgLy8gVE9ETyBATWVkQWxpIHRvIGJlIGZpeGVkXHJcbiAgICBpZiAodGhpcy5idXNpbmVzc0NsYXNzICYmIHRoaXMuYnVzaW5lc3NDbGFzcyAhPT0gXCJOb3Rlc1wiKSB7XHJcbiAgICAgIHRoaXMubm90ZXNTZXJ2aWNlLmdldEFsZXJ0Tm90ZXMoaXRlbUtleT8udG9TdHJpbmcoKSwgdGhpcy5idXNpbmVzc0NsYXNzKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZTogTm90ZXNHcm91cGVkQnlVc2VyUmVzcG9uc2VbXSkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFyZXNwb25zZSB8fCByZXNwb25zZS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5fb3Blbk1vZGFsKG1vZGUsIGl0ZW1LZXksIHRoaXMuX21vZGFsRGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgcmVmID0gdGhpcy5fdHNpTW9kYWxTZXJ2aWNlLm9wZW4oVHNpTm90ZXNBdmVydGlyQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgZGF0YTogeyBncm91cGVkTm90ZXM6IHJlc3BvbnNlIH0sXHJcbiAgICAgICAgICAgICAgc3R5bGVDbGFzczogJycsXHJcbiAgICAgICAgICAgICAgd2lkdGg6IE1vZGFsU2l6ZUVudW0uU21hbGwud2lkdGgsXHJcbiAgICAgICAgICAgICAgaGVpZ2h0OiBNb2RhbFNpemVFbnVtLlNtYWxsLmhlaWdodCxcclxuICAgICAgICAgICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICByZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuX2Nsb3NlTW9kYWwodmFsKTtcclxuICAgICAgICAgICAgICB0aGlzLl9vcGVuTW9kYWwobW9kZSwgaXRlbUtleSwgdGhpcy5fbW9kYWxEYXRhKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBub3RlcyBmb3IgYWxlcnQnLCBlcnIpO1xyXG4gICAgICAgICAgdGhpcy5fb3Blbk1vZGFsKG1vZGUsIGl0ZW1LZXksIHRoaXMuX21vZGFsRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLl9vcGVuTW9kYWwobW9kZSwgaXRlbUtleSwgdGhpcy5fbW9kYWxEYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU3RhdHVzRmlsdGVyQ2hhbmdlZChldnQ6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coZXZ0KVxyXG4gIH1cclxuXHJcbiAgb25JbXBvcnRDbGlja2VkKCl7XHJcbiAgICB0aGlzLm9uSW1wb3J0RnJvbU91dGxvb2tDbGlja2VkLmVtaXQoe1xyXG4gICAgICBidXNpbmVzc0NsYXNzOiB0aGlzLmJ1c2luZXNzQ2xhc3MsXHJcbiAgICAgIHNlYXJjaEZpZWxkczogdGhpcy5zZWFyY2hGaWVsZHNcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXNlU2hvd0thbmJhblZpZXdPZldvcmtGbG93RXRhdCgpXHJcbiAge1xyXG4gICAgaWYodGhpcy5idXNpbmVzc0NsYXNzKVxyXG4gICAge1xyXG4gICAgICB0aGlzLl93b3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldFdvcmtmbG93RXRhdEJ5Q2xhc3NOYW1lQW5kRGVzY3JpbWluYXRvcih0aGlzLmJ1c2luZXNzQ2xhc3MsIHRoaXMuZGVzY3JpbWluYXRvclZhbHVlKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIGlmKGRhdGEgIT0gbnVsbCAmJiBkYXRhLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5zaG93S2FuYmFuVmlld09mV29ya0Zsb3dFdGF0ID0gdHJ1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGdldERpc2NyaW1pbmF0b3IoYnVzaW5lc3NDbGFzczogc3RyaW5nLCBpZDogc3RyaW5nKTogUHJvbWlzZTxEaXNjcmltaW5hdG9yUmVzcG9uc2UgfCBudWxsPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBsZXQgZGlzY3JpbWluYXRvclJlc3BvbnNlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fZGlzY3JpbWluYXRvclNlcnZpY2UuZ2V0RGlzY3JpbWluYXRvcihidXNpbmVzc0NsYXNzLCBpZCkpXHJcblxyXG4gICAgICBpZiAoZGlzY3JpbWluYXRvclJlc3BvbnNlKSB7XHJcbiAgICAgICAgcmV0dXJuIGRpc2NyaW1pbmF0b3JSZXNwb25zZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNhdGNoKGVycm9yKVxyXG4gICAge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gIFxyXG4gIDxwLXRvb2xiYXIgc3R5bGVDbGFzcz1cImJvcmRlci1yYWRpdXMtNyBtYi0xIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIG5vLXBhZFwiIFxyXG4gICAgKm5nSWY9XCIoc2hvd0FkZEJ1dHRvbiB8fCBzZWFyY2hGaWVsZHMgfHwgZm9ybUVuZHBvaW50IHx8IGJ1c2luZXNzQ2xhc3MpICYmIHNob3dSZXBvcnRpbmdcIj5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwibGVmdFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMiBteC0yXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dBZGRCdXR0b25cIiBwcmVzZW50YXRpb25EZXNpZ25lckJhc2U9XCJhZGRfYnV0dG9uXCI+XHJcbiAgICAgICAgICA8VHNpLUJ1dHRvbiBpY29uPVwicGkgcGktcGx1c1wiIFxyXG4gICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIiBcclxuICAgICAgICAgICAgdG9vbHRpcFRleHQ9XCJzaGFyZWRfdHNpX2NvbXBvbmVudF9hZGRfdmlld1wiIFxyXG4gICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24tc3VjY2VzcyBob3ZlcjpzaGFkb3ctNiBoLTJyZW0gcC1idXR0b24taWNvbi1vbmx5XCIgXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuTmV3KClcIj5cclxuICAgICAgICAgIDwvVHNpLUJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2VhcmNoRmllbGRzXCIgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwic2hvd19zZWFyY2hfZmllbGRzX2J1dHRvblwiPlxyXG4gICAgICAgICAgPFRzaS1CdXR0b24gaWNvbj1cInBpIHBpLXNsaWRlcnMtaFwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiXHJcbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PVwic2hhcmVkX3RzaV9jb21wb25lbnRfbWVudVwiXHJcbiAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJoLTJyZW0gcC1idXR0b24taWNvbi1vbmx5IGhvdmVyOnNoYWRvdy02IHt7IHNob3dTZWFyY2hGaWVsZCA/ICdwLWJ1dHRvbi1zZWNvbmRhcnknIDogJ3AtYnV0dG9uLXN1Y2Nlc3MnIH19XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImRpc3BsYXlTZWFyY2hGaWVsZHMoKVwiPlxyXG4gICAgICAgICAgPC9Uc2ktQnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0ltcG9ydEZyb21PdXRsb29rQnV0dG9uXCIgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwiaW1wb3J0RnJvbU91dGxvb2tfYnV0dG9uXCI+XHJcbiAgICAgICAgICA8VHNpLUJ1dHRvbiBpY29uPVwicGkgcGktZW52ZWxvcGVcIiBcclxuICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb24uVG9wXCIgXHJcbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PVwic2hhcmVkX3RzaV9jb21wb25lbnRfaW1wb3J0X2Zyb21fb3V0bG9va1wiIFxyXG4gICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24taW5mbyBob3ZlcjpzaGFkb3ctNiBoLTJyZW0gcC1idXR0b24taWNvbi1vbmx5XCIgXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkltcG9ydENsaWNrZWQoKVwiPiBcclxuICAgICAgICAgIDwvVHNpLUJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiAgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwidG9nZ2xlX2FjdGlvbnNfdmlld19idXR0b25cIj5cclxuICAgICAgICAgIDxwLXNwbGl0QnV0dG9uXHJcbiAgICAgICAgICAgIFtpY29uXT1cImN1cnJlbnRJY29uXCJcclxuICAgICAgICAgICAgW21vZGVsXT1cInZpZXdPcHRpb25zXCJcclxuICAgICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlQWN0aW9uVmlld0NsaWNrKClcIlxyXG4gICAgICAgICAgICBbdG9vbHRpcF09XCJjdXJyZW50VG9vbHRpcCB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1pY29uLW9ubHkgcC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi1wcmltYXJ5IGgtMnJlbSBob3ZlcjpzaGFkb3ctNlwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPCEtLSA8VHNpLUJ1dHRvblxyXG4gICAgICAgICAgICBbaWNvbl09XCJjdXJyZW50SWNvblwiXHJcbiAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJwLWVsZW1lbnQgcC1idXR0b24tcHJpbWFyeSAgaC0ycmVtIHAtYnV0dG9uIHAtY29tcG9uZW50IHAtYnV0dG9uLWljb24tb25seVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVBY3Rpb25WaWV3Q2xpY2soKVwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwVGV4dF09XCJjdXJyZW50VG9vbHRpcCB8IGxvY2FsaXplXCI+XHJcbiAgICAgICAgICA8L1RzaS1CdXR0b24+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICBcclxuXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwicmlnaHRcIj5cclxuICAgICAgICA8YXBwLXJlcG9ydGluZyAqbmdJZj1cIihmb3JtRW5kcG9pbnQgfHwgYnVzaW5lc3NDbGFzcylcIiBcclxuICAgICAgICAgIFtmb3JtRW5kcG9pbnRdPVwiZm9ybUVuZHBvaW50XCIgXHJcbiAgICAgICAgICBbZm9ybU5hbWVdPVwiZm9ybU5hbWVcIlxyXG4gICAgICAgICAgW2Zvcm1FbmRwb2ludEJvZHldPVwiZm9ybUVuZHBvaW50Qm9keVwiIFxyXG4gICAgICAgICAgW2lzRm9ybUVuZHBvaW50UGFnZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbYnVzaW5lc3NDbGFzc109XCJidXNpbmVzc0NsYXNzXCJcclxuICAgICAgICAgIFtyZXBvcnREaXNjcmltaW5hdG9yXT1cImRlc2NyaW1pbmF0b3JWYWx1ZVwiXHJcbiAgICAgICAgICAocmVmcmVzaERhdGEpPVwicmVmcmVzaCgkZXZlbnQpXCJcclxuICAgICAgICAgIFtmaWx0ZXJzSHRtbFRlbXBsYXRlXT1cImZpbHRlcnNIdG1sVGVtcGxhdGVcIlxyXG4gICAgICAgICAgW3BhZ2VkUmVxdWVzdF09XCJwYWdlZFJlcXVlc3RcIlxyXG4gICAgICAgICAgW2N1ZENvbXBvbmVudF09XCJjdWRDb21wb25lbnRcIiBcclxuICAgICAgICAgIFtjb25maWdNb2RlQnV0dG9uSWRdPVwiY29uZmlnTW9kZUJ1dHRvbklkXCJcclxuICAgICAgICAgIFtzaG93Tm90ZUJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbc2hvd0FjdGlvbkJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbc2hvd0luZm9CdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW3Nob3dVcGxvYWRCdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgID48L2FwcC1yZXBvcnRpbmc+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC10b29sYmFyPlxyXG5cclxuICA8ZGl2PlxyXG5cclxuICAgIDxUc2ktR2VuZXJpYy1HcmlkXHJcbiAgICAgIFtmb3JtTmFtZV09XCJmb3JtTmFtZVwiXHJcbiAgICAgIFtjcnVkU2VydmljZV09XCJjcnVkU2VydmljZVwiXHJcbiAgICAgIFtzaG93U2VhcmNoRmllbGRdPVwic2hvd1NlYXJjaEZpZWxkXCJcclxuICAgICAgW3NlYXJjaEZpZWxkc109XCJzZWFyY2hGaWVsZHNcIlxyXG4gICAgICBbZGVzY3JpbWluYXRvclZhbHVlXT1cImRlc2NyaW1pbmF0b3JWYWx1ZVwiXHJcbiAgICAgIFtoZWFkZXJdPVwiaGVhZGVyXCJcclxuICAgICAgW3BhZ2VdPVwicGFnZVwiXHJcbiAgICAgIFtwYWdlZFJlcXVlc3RdPVwicGFnZWRSZXF1ZXN0XCJcclxuICAgICAgW2NvbHVtbnNdPVwic2VsZWN0ZWRDb2x1bW5zXCJcclxuICAgICAgW3Nob3dIZWFkZXJGaWx0ZXJzXT1cInNob3dIZWFkZXJGaWx0ZXJzXCJcclxuICAgICAgWyhmaWx0ZXJzSHRtbFRlbXBsYXRlKV09XCJmaWx0ZXJzSHRtbFRlbXBsYXRlXCJcclxuICAgICAgW3ByZXNlbnRhdGlvblNldHRpbmdzXT1cInByZXNlbnRhdGlvblNldHRpbmdzXCJcclxuICAgICAgKGxvYWQpPVwibG9hZCgkZXZlbnQpXCJcclxuICAgICAgKGJ1dHRvbkNvbHVtbkNsaWNrZWQpPVwiaGFuZGxlQnV0dG9uQ29sdW1uQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgICAgW3NlbGVjdEtleU9ubHldPVwic2VsZWN0S2V5T25seVwiXHJcbiAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cInNlbGVjdGlvbk1vZGVcIlxyXG4gICAgICBba2V5XT1cImtleVwiXHJcbiAgICAgIFsoc2VsZWN0ZWRJdGVtcyldPVwic2VsZWN0ZWRJdGVtc1wiXHJcbiAgICAgIChzZWxlY3RlZEl0ZW1zQ2hhbmdlKT1cIm9uU2VsZWN0ZWRJdGVtc0NoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgKHNlYXJjaEZpZWxkc1ZhbHVlQ2hhbmdlZCk9XCJzZWFyY2hGaWVsZFZhbHVlQ2hhbmdlcygkZXZlbnQpXCJcclxuICAgICAgW3NlYXJjaE9uSW5pdF09XCJzZWFyY2hPbkluaXRcIlxyXG4gICAgICBbc2hvd0V4cG9ydEJ1dHRvbl09XCJzaG93RXhwb3J0QnV0dG9uXCJcclxuICAgICAgW3Nob3dHbG9iYWxTZWFyY2hdPVwic2hvd0dsb2JhbFNlYXJjaFwiXHJcbiAgICAgIFtpc1NlYXJjaEJ1dHRvbkRpc2FibGVkXT1cImlzU2VhcmNoQnV0dG9uRGlzYWJsZWRcIlxyXG4gICAgICBbc2hvd0NhbGVuZGVyVmlld109XCJzaG93Q2FsZW5kZXJWaWV3XCJcclxuICAgICAgW3Nob3dDYXJkVmlld109XCJzaG93Q2FyZFZpZXdcIlxyXG4gICAgICBbc2hvd0thbmJhblZpZXddPVwic2hvd0thbmJhblZpZXdcIlxyXG4gICAgICBbc2hvd0thbmJhblZpZXdPZldvcmtGbG93RXRhdF09XCJzaG93S2FuYmFuVmlld09mV29ya0Zsb3dFdGF0XCJcclxuICAgICAgW2J1c2luZXNzQ2xhc3NdPVwiYnVzaW5lc3NDbGFzc1wiXHJcbiAgICAgIFtjdWRDb21wb25lbnRdPVwiY3VkQ29tcG9uZW50XCIgXHJcbiAgICAgIFttb2RhbFNpemVdPVwibW9kYWxTaXplXCIgXHJcbiAgICAgIFtpZF09XCJpZFwiXHJcbiAgICAgIFtwYWdlJF09XCJwYWdlJFwiXHJcbiAgICAgIFtlbnRpdHlJbmZvXT1cImVudGl0eUluZm9cIlxyXG4gICAgICAoY2FsZW5kYXJFdmVudENsaWNrKT1cImhhbmRsZUNhbGVuZGFyRXZlbnRDbGljaygkZXZlbnQpXCJcclxuICAgICAgKHN0YXR1c0ZpbHRlckNoYW5nZWQpPVwib25TdGF0dXNGaWx0ZXJDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICBbc2hvd0luZm9CdXR0b25dPVwidHJ1ZVwiXHJcbiAgICAgIFtzaG93RG93bmxvYWRCdXR0b25dPVwidHJ1ZVwiXHJcbiAgICAgIFtzaG93VXBsb2FkQnV0dG9uXT1cInRydWVcIlxyXG4gICAgICBbc2hvd05vdGVCdXR0b25dPVwidHJ1ZVwiXHJcbiAgICAgIFtzaG93QWN0aW9uQnV0dG9uXT1cInRydWVcIlxyXG4gICAgICBbc2l6aW5nTW9kZV09XCJzaXppbmdNb2RlXCJcclxuICAgID48L1RzaS1HZW5lcmljLUdyaWQ+XHJcbiAgPC9kaXY+XHJcbiAgXHJcbjwvZGl2PlxyXG4iXX0=
|
|
1078
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWdlbmVyaWMtY3J1ZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvdHNpLWdlbmVyaWMtY3J1ZC90c2ktZ2VuZXJpYy1jcnVkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktZ2VuZXJpYy1jcnVkL3RzaS1nZW5lcmljLWNydWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUdMLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSw2QkFBNkIsRUFBRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUV4SSxPQUFPLEVBQUUscUNBQXFDLEVBQW9ELE1BQU0sY0FBYyxDQUFDO0FBZXZILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxN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MEJBQTBCO3NCQUFuQyxNQUFNO2dCQWkxQlAsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7XHJcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRW52aXJvbm1lbnRJbmplY3RvcixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNZW51SXRlbSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IER5bmFtaWNEaWFsb2dDb25maWcsIER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbXBvbmVudF9Nb2RlcywgTW9kYWxTaXplRW51bSwgTW9kZXMgfSBmcm9tICcuLi8uLi9lbnVtcyc7XHJcbmltcG9ydCB7IEFjdGlvblBsYWNlbWVudCB9IGZyb20gJy4uLy4uL2VudW1zL2FjdGlvbi1wbGFjZW1lbnQnO1xyXG5pbXBvcnQgeyBCdXR0b25UeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvYnV0dG9uLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IEdyaWRTZWxlY3Rpb25Nb2RlIH0gZnJvbSAnLi4vLi4vZW51bXMvZ3JpZC1zZWxlY3Rpb24tbW9kZSc7XHJcbmltcG9ydCB7IEdyaWRTaXppbmdNb2RlIH0gZnJvbSAnLi4vLi4vZW51bXMvZ3JpZC1zaXppbmctbW9kZSc7XHJcbmltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4uLy4uL2VudW1zL3Rvb2x0aXBQb3NpdGlvbi5lbnVtJztcclxuaW1wb3J0IHsgb3BlbkFjdGlvbkxpc3QsIG9wZW5EeW5hbWljRm9ybU1vZGFsQ29tcG9uZW50LCBvcGVuTW9kYWxVcGxvYWRHcmlkLCBvcGVuTm90ZXNMaXN0IH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL21vZGFsLW9wZW4uZnVuY3Rpb24nO1xyXG5pbXBvcnQgeyBCdXR0b25DbGlja1Jlc3VsdCwgR3JpZENvbHVtbiwgSUdyaWRDb25maWd1cmF0aW9uLCBJTW9kYWxTaXplLCBJUGFnZSwgSVBhZ2VkUmVxdWVzdCwgSVBhZ2VkUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgR2V0V29ya2Zsb3dJbnN0YW5jZUluZm9ybWF0aW9uUmVxdWVzdCwgU2VhcmNoRmllbGQsIHdvcmtmbG93SW5zdGFuY2VJbmZvcm1hdGlvblJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgb2NjdXJlbmNlSW5mb3MgfSBmcm9tICcuLi8uLi9tb2RlbHMvYWN0aW9uRXJwL2FjdGlvbkVycCc7XHJcbmltcG9ydCB7IEV2ZW50U2NoZW1hIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvbW1vbi9ldmVudC1zY2hlbWEnO1xyXG5pbXBvcnQgeyBFbnRpdHlJbmZvIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VudGl0eS1pbmZvL2VudGl0eS1pbmZvJztcclxuaW1wb3J0IHsgTm90ZXNHcm91cGVkQnlVc2VyUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvTm90ZXMvTm90ZSc7XHJcbmltcG9ydCB7IFByZXNlbnRhdGlvblNldHRpbmcgfSBmcm9tICcuLi8uLi9tb2RlbHMvcHJlc2VudGF0aW9uLXNldHRpbmdzL3ByZXNlbnRhdGlvbi1zZXR0aW5ncyc7XHJcbmltcG9ydCB7IERpc2NyaW1pbmF0b3JSZXNwb25zZSB9IGZyb20gJy4uLy4uL21vZGVscy9zaGFyZWQvZGlzY3JpbWluYXRvci1yZXNwb25zZSc7XHJcbmltcG9ydCB7IExvY2FsaXplUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2xvY2FsaXplLnBpcGUnO1xyXG5pbXBvcnQgeyBDcnVkQmFzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9iYXNlL2NydWQtYmFzZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlzY3JpbWluYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb25maWd1cmF0aW9uL2Rpc2NyaW1pbmF0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudGl0eUNvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29uZmlndXJhdGlvbi9lbnRpdHktY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kaWFsb2ctZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmljaGllclVwbG9hZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9maWNoaWVyL2ZpY2hpZXItdXBsb2FkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUc2lNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tb2RhbC90c2ktbW9kYWwuc2VydmljZSc7XHJcbmltcG9ydCB7IE5vdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvTm90ZS9Ob3RlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUc2lOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbm90aWZpY2F0aW9uL3RzaS1ub3RpZmljYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFJlY29yZEluZm9Qb3B1cFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZWNvcmQtaW5mby1wb3B1cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3dvcmtmbG93L3dvcmtmbG93LWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFR5cGVSZWdpc3RyeUhlbHBlciB9IGZyb20gJy4uLy4uL3RzaS1oZWxwZXJzL3R5cGUtcmVnaXN0cnkuaGVscGVyJztcclxuaW1wb3J0IHsgVHNpR2VuZXJpY0dyaWRDb21wb25lbnQgfSBmcm9tICcuLi9vdXRwdXQtY29tcG9uZW50cy90c2ktZ2VuZXJpYy1ncmlkL3RzaS1nZW5lcmljLWdyaWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHNpRm9ybU1vZGFsRm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vdHNpLWZvcm0tbW9kYWwtZm9vdGVyL3RzaS1mb3JtLW1vZGFsLWZvb3Rlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUc2lOb3Rlc0F2ZXJ0aXJDb21wb25lbnQgfSBmcm9tICcuLi90c2ktbm90ZXMtYXZlcnRpci90c2ktbm90ZXMtYXZlcnRpci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUc2lQb3B1cFRleHRWaWV3ZXJDb21wb25lbnQgfSBmcm9tICcuLi90c2ktcG9wdXAtdGV4dC12aWV3ZXIvdHNpLXBvcHVwLXRleHQtdmlld2VyLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ1RzaS1HZW5lcmljLUNydWQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90c2ktZ2VuZXJpYy1jcnVkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90c2ktZ2VuZXJpYy1jcnVkLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbVHNpTm90aWZpY2F0aW9uU2VydmljZV0sXHJcbn0pIC8qLCBPbkNoYW5nZXMqL1xyXG5leHBvcnQgY2xhc3MgVHNpR2VuZXJpY0NydWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudENoZWNrZWQge1xyXG4gIC8vI3JlZ2lvbiBsb2NhbCB2YXJzXHJcbiAgcHJpdmF0ZSBfZGlhbG9nUmVmPzogRHluYW1pY0RpYWxvZ1JlZjtcclxuICBwcml2YXRlIF9mb3JtRW5kcG9pbnQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICBwcm90ZWN0ZWQgZmlsdGVySWNvbiA9ICdwaSBwaS1maWx0ZXInO1xyXG4gIHByb3RlY3RlZCBmaWx0ZXJUb29sdGlwID0gJ3Nob3dfZmlsdGVyJztcclxuICBwcml2YXRlIF9pc1dvcmtmbG93RXRhdEZvcm1Mb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZVxyXG4gIGJ1dHRvblR5cGUgPSBCdXR0b25UeXBlO1xyXG4gIHRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbjtcclxuICBjb25maWdNb2RlQnV0dG9uSWQ6IHN0cmluZyA9IFwiY29uZmctbW9kZS1idXR0b24tZnJvbS1saXN0XCJcclxuICBzYXZlUHJvcGVydGllc0J1dHRvbkNsYXNzTmFtZSA9IFwiY29uZmctbW9kZS1idXR0b24tZnJvbS1saXN0LXNhdmUtcHJvcGVydGllc1wiO1xyXG4gIEBJbnB1dCgpIGVudGl0eUluZm86IEVudGl0eUluZm8gfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcclxuXHJcbiAgaXRlbXM/OiBhbnlbXTtcclxuXHJcbiAgcGFnZWRSZXF1ZXN0OiBJUGFnZWRSZXF1ZXN0ID0ge307XHJcblxyXG4gIHBhZ2U6IElQYWdlPGFueT4gPSB7XHJcbiAgICBpdGVtczogW10sXHJcbiAgICBwYWdlU2l6ZTogMTAsXHJcbiAgICBwYWdlTnVtYmVyOiAxLFxyXG4gICAgdG90YWxDb3VudDogMCxcclxuICAgIHRvdGFsUGFnZXM6IDAsXHJcbiAgICBzdW1tYXJpZXM6IFtdLFxyXG4gICAgbG9hZGluZzogZmFsc2UsXHJcbiAgfTtcclxuXHJcbiAgZmlyc3Q6IG51bWJlciA9IDA7XHJcbiAgcm93cyA9IDE7XHJcbiAgZm9ybUVuZHBvaW50Qm9keTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIGZpbHRlcnNIdG1sVGVtcGxhdGU/OiBzdHJpbmcgPSAnJztcclxuICBzZWxlY3RlZENvbHVtbnM6IEdyaWRDb2x1bW5bXSA9IFtdO1xyXG4gIF9zZWFyY2hPbkluaXQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIF9tb2RhbERhdGE6IGFueTtcclxuXHJcbiAgQFZpZXdDaGlsZChUc2lHZW5lcmljR3JpZENvbXBvbmVudCkgZ2VuZXJpY0dyaWRDb21wb25lbnQ/OiBUc2lHZW5lcmljR3JpZENvbXBvbmVudDtcclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBJbnB1dHNcclxuICBASW5wdXQoKSBzZXQgbW9kYWxEYXRhKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuX21vZGFsRGF0YSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgY29sdW1uczogR3JpZENvbHVtbltdID0gW107XHJcbiAgQElucHV0KCkgZ3JpZENvbmZpZ3VyYXRpb24/OiBJR3JpZENvbmZpZ3VyYXRpb247XHJcbiAgQElucHV0KCkgY3VkQ29tcG9uZW50OiBhbnk7XHJcbiAgQElucHV0KCkgY3J1ZFNlcnZpY2U/OiBDcnVkQmFzZVNlcnZpY2U8YW55LCBhbnksIGFueSwgYW55PjtcclxuICBASW5wdXQoKSBoZWFkZXI6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIG1vZGFsU2l6ZT86IElNb2RhbFNpemU7XHJcbiAgQElucHV0KCkgZGVzY3JpbWluYXRvclZhbHVlPzogc3RyaW5nXHJcbiAgQElucHV0KCkgcHJlc2VudGF0aW9uU2V0dGluZ3M/OiBQcmVzZW50YXRpb25TZXR0aW5nXHJcbiAgQElucHV0KCkgcHJldmVudEFkZEV2ZW50PzogYm9vbGVhbiA9IGZhbHNlXHJcbiAgQElucHV0KCkgc2V0IGZvcm1FbmRwb2ludCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5fZm9ybUVuZHBvaW50ID0gYCR7dmFsdWV9L2dldGFsbHBhZ2VkYDtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGZvcm1FbmRwb2ludCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9mb3JtRW5kcG9pbnQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9mb3JtTmFtZT86IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgZm9ybU5hbWUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9mb3JtTmFtZTtcclxuICB9XHJcblxyXG4gIHNldCBmb3JtTmFtZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9mb3JtTmFtZSA9IHZhbHVlO1xyXG4gICAgLy8gdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pc1NlYXJjaEJ1dHRvbkRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHNldCBpc1NlYXJjaEJ1dHRvbkRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pc1NlYXJjaEJ1dHRvbkRpc2FibGVkID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzU2VhcmNoQnV0dG9uRGlzYWJsZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNTZWFyY2hCdXR0b25EaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIC8vIEBJbnB1dCgpIGZvcm1OYW1lPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNob3dIZWFkZXJGaWx0ZXJzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd0VkaXRCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dEZWxldGVCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dBZGRCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dDb25zdWx0QnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd1VwbG9hZEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd05vdGVCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dEb3dubG9hZEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dJbmZvQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93RHVwbGljYXRlQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93Rm9ybUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0NhbGVuZGVyVmlldzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dDYXJkVmlldzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dJbXBvcnRGcm9tT3V0bG9va0J1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dLYW5iYW5WaWV3OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd0thbmJhblZpZXdPZldvcmtGbG93RXRhdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dTZWFyY2hGaWVsZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2VhcmNoRmllbGRzOiBTZWFyY2hGaWVsZFtdIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGNhbGVuZGVyU2NoZW1hOiBFdmVudFNjaGVtYSB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBzaG93QWN0aW9uQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaXppbmdNb2RlOiBHcmlkU2l6aW5nTW9kZSA9IEdyaWRTaXppbmdNb2RlLkZpbGw7XHJcblxyXG4gIC8vZ3JpZCBzZWxlY3Rpb25cclxuICBASW5wdXQoKSBzZWxlY3RLZXlPbmx5OiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzZWxlY3Rpb25Nb2RlOiBHcmlkU2VsZWN0aW9uTW9kZSA9IEdyaWRTZWxlY3Rpb25Nb2RlLk5vbmU7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIEBJbnB1dCgpIGtleTogc3RyaW5nID0gJ3VpZCc7XHJcbiAgQElucHV0KCkgaWQ/OiBzdHJpbmc7XHJcblxyXG4gIF9idXNpbmVzc0NsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgZ2V0IGJ1c2luZXNzQ2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYnVzaW5lc3NDbGFzcztcclxuICB9XHJcblxyXG4gIHNldCBidXNpbmVzc0NsYXNzKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2J1c2luZXNzQ2xhc3MgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLl9idXNpbmVzc0NsYXNzKSB7XHJcbiAgICAgIHRoaXMuZ2V0V29ya2Zsb3dFdGF0Rm9ybUZvckN1cnJlbnRCdXNpbmVzc0NsYXNzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgc2VhcmNoT25Jbml0KHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICBpZiAodmFsdWUgPT0gdW5kZWZpbmVkIHx8IHZhbHVlID09IG51bGwpIHtcclxuICAgICAgdGhpcy5fc2VhcmNoT25Jbml0ID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX3NlYXJjaE9uSW5pdCA9IHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgc2VhcmNoT25Jbml0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaE9uSW5pdDtcclxuICB9XHJcblxyXG5cclxuICBASW5wdXQoKSBzaG93R2xvYmFsU2VhcmNoOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93RXhwb3J0QnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93UmVwb3J0aW5nOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBPdXRwdXRzXHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxBcnJheTxhbnk+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8YW55Pj4oKTtcclxuICBAT3V0cHV0KCkgc2VhcmNoRmllbGRzVmFsdWVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QXJyYXk8U2VhcmNoRmllbGQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8U2VhcmNoRmllbGQ+PigpO1xyXG4gIEBPdXRwdXQoKSBidXR0b25Db2x1bW5DbGlja2VkOiBFdmVudEVtaXR0ZXI8QnV0dG9uQ2xpY2tSZXN1bHQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxCdXR0b25DbGlja1Jlc3VsdD4oKTtcclxuICBAT3V0cHV0KCkgb25JbXBvcnRGcm9tT3V0bG9va0NsaWNrZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgLy8jZW5kcmVnaW9uIE91dHB1dHNcclxuICBpc0N1c3RvbUNvbHVtblJlbmRlcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY2xpY2tDb3VudCA9IDE7XHJcbiAgY3VycmVudEljb24gPSBcInBpIHBpLWFsaWduLWp1c3RpZnlcIjtcclxuICBjdXJyZW50VG9vbHRpcCA9IFwic2hhcmVkX3RzaV9jb21wb25lbnRfZ3JpZF9saXN0X3ZpZXdcIjtcclxuXHJcbiAgdmlld09wdGlvbnM6IE1lbnVJdGVtW10gPSBbXTtcclxuXHJcbiAgcGFnZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfbWVzc2FnZVNlcnZpY2U6IFRzaU5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1zZ1NlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHNpTW9kYWxTZXJ2aWNlOiBUc2lNb2RhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGxvY2FsaXplOiBMb2NhbGl6ZVBpcGUsXHJcbiAgICBwcml2YXRlIGRpYWxvZ0RhdGFTZXJ2aWNlOiBEaWFsb2dEYXRhU2VydmljZSxcclxuICAgIHByaXZhdGUgZmljaGllclNlcnZpY2U6IEZpY2hpZXJVcGxvYWRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWNvcmRJbmZvUG9wdXBTZXJ2aWNlOiBSZWNvcmRJbmZvUG9wdXBTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZTogV29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2VudGl0eUNvbmZpZ1NlcnZpY2U6IEVudGl0eUNvbmZpZ3VyYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBub3Rlc1NlcnZpY2U6IE5vdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIF9kaXNjcmltaW5hdG9yU2VydmljZTogRGlzY3JpbWluYXRvclNlcnZpY2UsXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLy8gI3JlZ2lvbiBncmlkIHN0YXRlXHJcblxyXG4gIGdldFN0YXRlKCkge1xyXG4gICAgaWYgKHRoaXMuZ2VuZXJpY0dyaWRDb21wb25lbnQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJpY0dyaWRDb21wb25lbnQuZ2V0U3RhdGUoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsXHJcbiAgfVxyXG5cclxuICByZXN0b3JlU3RhdGUoY29uZmlndXJhdGlvbjogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5nZW5lcmljR3JpZENvbXBvbmVudCkge1xyXG4gICAgICB0aGlzLmdlbmVyaWNHcmlkQ29tcG9uZW50LnJlc3RvcmVTdGF0ZShjb25maWd1cmF0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0U2VsZWN0ZWRDb2x1bW5zKGNvbmZpZ3VyYXRpb246IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuZ2VuZXJpY0dyaWRDb21wb25lbnQpIHtcclxuICAgICAgdGhpcy5nZW5lcmljR3JpZENvbXBvbmVudC5yZXNldFNlbGVjdGVkQ29sdW1ucyhjb25maWd1cmF0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb25cclxuXHJcbiAgLy8gbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIC8vIH1cclxuXHJcbiAgYXN5bmMgZ2V0V29ya2Zsb3dFdGF0Rm9ybUZvckN1cnJlbnRCdXNpbmVzc0NsYXNzKCkge1xyXG4gICAgaWYgKHRoaXMuYnVzaW5lc3NDbGFzcyAmJiAhdGhpcy5faXNXb3JrZmxvd0V0YXRGb3JtTG9hZGVkKSB7XHJcbiAgICAgIHRoaXMuX2lzV29ya2Zsb3dFdGF0Rm9ybUxvYWRlZCA9IHRydWVcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl93b3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldFdvcmtmbG93RXRhdEZvcm1CeUNsYXNzTmFtZSh0aGlzLmJ1c2luZXNzQ2xhc3MpKTtcclxuICAgICAgICB0aGlzLl93b3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLndvcmtmbG93RXRhdEZvcm1Gb3JDdXJyZW50Rm9ybSA9IHJlc3VsdFxyXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHdvcmtmbG93IHN0YXRlIGZvcm06JywgZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRXb3JrZmxvd0VudGl0eUluZm9ybWF0aW9uKGJ1c2luZXNzQ2xhc3M6IHN0cmluZywgdWlkT2JqZWN0Pzogc3RyaW5nKSB7XHJcbiAgICBsZXQgcmVzdWx0OiB3b3JrZmxvd0luc3RhbmNlSW5mb3JtYXRpb25SZXNwb25zZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IHJlcXVlc3Q6IEdldFdvcmtmbG93SW5zdGFuY2VJbmZvcm1hdGlvblJlcXVlc3QgPSBuZXcgR2V0V29ya2Zsb3dJbnN0YW5jZUluZm9ybWF0aW9uUmVxdWVzdCgpO1xyXG4gICAgICByZXF1ZXN0LmNsYXNzTmFtZSA9IGJ1c2luZXNzQ2xhc3NcclxuICAgICAgcmVxdWVzdC51aWRPYmpldCA9IHVpZE9iamVjdDtcclxuICAgICAgcmVxdWVzdC5kaXNjcmltaW5hdG9yQ2xhc3NOYW1lID0gdGhpcy5lbnRpdHlJbmZvPy5kaXNjcmltaW5hdG9yQ2xhc3NOYW1lXHJcbiAgICAgIHJlcXVlc3QuZGlzY3JpbWluYXRvclByb3BlcnR5TmFtZSA9IHRoaXMuZW50aXR5SW5mbz8uZGlzY3JpbWluYXRvclByb3BlcnR5TmFtZVxyXG4gICAgICByZXF1ZXN0LmRpc2NyaW1pbmF0b3JWYWx1ZSA9IHRoaXMuZGVzY3JpbWluYXRvclZhbHVlXHJcbiAgICAgIHJlc3VsdCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX3dvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2UuZ2V0Q3VycmVudEVudGl0eVdvcmtsZm93SW5zdGFuY2VJbmZvcm1hdGlvbihyZXF1ZXN0KSlcclxuICAgICAgLy8gaWYgKHJlc3VsdCkge1xyXG4gICAgICAvLyAgIGxldCB3b3JrZmxvd0V0YXRGb3JtID0gdGhpcy5fd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZS53b3JrZmxvd0V0YXRGb3JtRm9yQ3VycmVudEZvcm1cclxuICAgICAgLy8gICAgID8uZmluZCh4ID0+IHgudWlkID09IHJlc3VsdD8ud29ya2Zsb3dFdGF0KVxyXG4gICAgICAvLyAgIGlmICh3b3JrZmxvd0V0YXRGb3JtKSB7XHJcbiAgICAgIC8vICAgICAvLyB0aGlzLl93b3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLndvcmtmbG93RXRhdEZvckZvckN1cnJlbnRFbnRpdHlGb3JtID1cclxuICAgICAgLy8gICAgIC8vICAgdGhpcy5fd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZS5tYXBXb3JrZmxvd0V0YXRGb3JtVG9QcmVzZW50YXRpb25TZXR0aW5nKHdvcmtmbG93RXRhdEZvcm0ud29ya2Zsb3dFdGF0c0Zvcm1zKVxyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0XHJcbiAgfVxyXG5cclxuICBzZWFyY2hGaWVsZFZhbHVlQ2hhbmdlcyhuZXdTZWFyY2hGaWVsZFZhbHVlczogQXJyYXk8U2VhcmNoRmllbGQ+KSB7XHJcbiAgICB0aGlzLnNlYXJjaEZpZWxkc1ZhbHVlQ2hhbmdlZC5lbWl0KG5ld1NlYXJjaEZpZWxkVmFsdWVzKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZ2V0RW50aXR5SW5mbygpO1xyXG4gICAgdGhpcy5pbml0aWFsaXNlU2hvd0thbmJhblZpZXdPZldvcmtGbG93RXRhdCgpO1xyXG5cclxuICAgIGlmICh0aGlzLnNob3dIZWFkZXJGaWx0ZXJzID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyVG9vbHRpcCA9ICdoaWRlX2ZpbHRlcic7XHJcbiAgICAgIHRoaXMuZmlsdGVySWNvbiA9ICdwaSBwaS1maWx0ZXItc2xhc2gnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWx0ZXJUb29sdGlwID0gJ3Nob3dfZmlsdGVyJztcclxuICAgICAgdGhpcy5maWx0ZXJJY29uID0gJ3BpIHBpLWZpbHRlcic7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY29sdW1ucyA9PSBudWxsICYmIHRoaXMuY29sdW1ucyA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICdjb2x1bW5zIGNhbnQgYmUgbnVsbCBvciB1bmRlZmluZWQsIGRldmVsb3BwZXIgbXVzdCBzZXQgY29sdW1ucyBvZiBncmlkICEnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbLi4udGhpcy5jb2x1bW5zXTtcclxuXHJcbiAgICBpZiAodGhpcy5zaG93SW5mb0J1dHRvbiA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25zX2luZm8nLFxyXG4gICAgICAgICAgZmllbGQ6ICdpbmZvJyxcclxuICAgICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWluZm8nLFxyXG4gICAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgaG92ZXI6c2hhZG93LTgnLFxyXG4gICAgICAgICAgaXNGcm96ZW46IHRydWUsXHJcbiAgICAgICAgICBvcmRlcjogMyxcclxuICAgICAgICAgIHRvb2xUaXBUZXh0OiAnc2hhcmVkX2FjdGlvbnNfaW5mbycsXHJcbiAgICAgICAgICBpc0ljb25CdXR0b246IHRydWUsXHJcbiAgICAgICAgICBhY3Rpb25EaXNwbGF5OiBBY3Rpb25QbGFjZW1lbnQuT3ZlcmZsb3csXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucyxcclxuICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zaG93RG93bmxvYWRCdXR0b24gPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXI6ICdzaGFyZWRfYWN0aW9uc19kb3dubG9hZCcsXHJcbiAgICAgICAgICBmaWVsZDogJ2Rvd25sb2FkJyxcclxuICAgICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWRvd25sb2FkJyxcclxuICAgICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IGhvdmVyOnNoYWRvdy04JyxcclxuICAgICAgICAgIGlzRnJvemVuOiB0cnVlLFxyXG4gICAgICAgICAgb3JkZXI6IDIsXHJcbiAgICAgICAgICB0b29sVGlwVGV4dDogJ1TDqWzDqWNoYXJnZXInLFxyXG4gICAgICAgICAgaXNJY29uQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYWN0aW9uRGlzcGxheTogQWN0aW9uUGxhY2VtZW50Lk92ZXJmbG93LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGhpcy5zZWxlY3RlZENvbHVtbnMsXHJcbiAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvd1VwbG9hZEJ1dHRvbiA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25zX2F0dGFjaG1lbnQnLFxyXG4gICAgICAgICAgZmllbGQ6ICd1cGxvYWQnLFxyXG4gICAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgICBidXR0b25JY29uOiAncGkgcGktcGFwZXJjbGlwJyxcclxuICAgICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IGhvdmVyOnNoYWRvdy04JyxcclxuICAgICAgICAgIGlzRnJvemVuOiB0cnVlLFxyXG4gICAgICAgICAgb3JkZXI6IDQsXHJcbiAgICAgICAgICB0b29sVGlwVGV4dDogJ3NoYXJlZF9hY3Rpb25zX2F0dGFjaG1lbnQnLFxyXG4gICAgICAgICAgaXNJY29uQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYWN0aW9uRGlzcGxheTogQWN0aW9uUGxhY2VtZW50Lk92ZXJmbG93LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGhpcy5zZWxlY3RlZENvbHVtbnMsXHJcbiAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvd05vdGVCdXR0b24pIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbnNfbm90ZXMnLFxyXG4gICAgICAgICAgYnV0dG9uTGFiZWw6ICcnLFxyXG4gICAgICAgICAgZmllbGQ6ICdub3RlcycsXHJcbiAgICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1jb21tZW50JyxcclxuICAgICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IGhvdmVyOnNoYWRvdy04JyxcclxuICAgICAgICAgIGlzRnJvemVuOiB0cnVlLFxyXG4gICAgICAgICAgb3JkZXI6IDUsXHJcbiAgICAgICAgICB0b29sVGlwVGV4dDogJ3NoYXJlZF9hY3Rpb25zX25vdGVzJyxcclxuICAgICAgICAgIGlzSWNvbkJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGFjdGlvbkRpc3BsYXk6IEFjdGlvblBsYWNlbWVudC5PdmVyZmxvdyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRDb2x1bW5zLFxyXG4gICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNob3dBY3Rpb25CdXR0b24pIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbnNfYWN0aW9uJyxcclxuICAgICAgICAgIGJ1dHRvbkxhYmVsOiAnJyxcclxuICAgICAgICAgIGZpZWxkOiAnQWN0aW9uRVJQJyxcclxuICAgICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWJvbHQnLFxyXG4gICAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgaG92ZXI6c2hhZG93LTgnLFxyXG4gICAgICAgICAgaXNGcm96ZW46IHRydWUsXHJcbiAgICAgICAgICBvcmRlcjogMTAsXHJcbiAgICAgICAgICB0b29sVGlwVGV4dDogJ3NoYXJlZF9hY3Rpb25zX2FjdGlvbicsXHJcbiAgICAgICAgICBpc0ljb25CdXR0b246IHRydWUsXHJcbiAgICAgICAgICBhY3Rpb25EaXNwbGF5OiBBY3Rpb25QbGFjZW1lbnQuT3ZlcmZsb3csXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucyxcclxuICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zaG93Rm9ybUJ1dHRvbikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXI6ICdzaGFyZWRfYWN0aW9uc19mb3JtJyxcclxuICAgICAgICAgIGZpZWxkOiAnZm9ybScsXHJcbiAgICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1ib29rJyxcclxuICAgICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IGhvdmVyOnNoYWRvdy04JyxcclxuICAgICAgICAgIGljb25TdHlsZUNsYXNzOiAndGV4dC1pbmRpZ28tNTAwJyxcclxuICAgICAgICAgIGlzRnJvemVuOiB0cnVlLFxyXG4gICAgICAgICAgb3JkZXI6IDgsXHJcbiAgICAgICAgICB0b29sVGlwVGV4dDogJ3NoYXJlZF9hY3Rpb25zX2Zvcm0nLFxyXG4gICAgICAgICAgaXNJY29uQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYWN0aW9uRGlzcGxheTogQWN0aW9uUGxhY2VtZW50Lk92ZXJmbG93LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGhpcy5zZWxlY3RlZENvbHVtbnMsXHJcbiAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvd0RlbGV0ZUJ1dHRvbiA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25zX2RlbGV0ZScsXHJcbiAgICAgICAgICBmaWVsZDogJ2RlbGV0ZScsXHJcbiAgICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS10cmFzaCcsXHJcbiAgICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBob3ZlcjpzaGFkb3ctOCBwLWJ1dHRvbi1kYW5nZXInLFxyXG4gICAgICAgICAgaWNvblN0eWxlQ2xhc3M6ICd0ZXh0LXJlZC01MDAnLFxyXG4gICAgICAgICAgaXNGcm96ZW46IHRydWUsXHJcbiAgICAgICAgICBvcmRlcjogMSxcclxuICAgICAgICAgIHRvb2xUaXBUZXh0OiAnRGVsZXRlJyxcclxuICAgICAgICAgIGJ1dHRvblR5cGU6IEJ1dHRvblR5cGUuU3VibWl0LFxyXG4gICAgICAgICAgaXNJY29uQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYWN0aW9uRGlzcGxheTogQWN0aW9uUGxhY2VtZW50Lk92ZXJmbG93LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGhpcy5zZWxlY3RlZENvbHVtbnMsXHJcbiAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvd0VkaXRCdXR0b24gPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXI6ICdzaGFyZWRfYWN0aW9uc19lZGl0JyxcclxuICAgICAgICAgIGZpZWxkOiAnZWRpdCcsXHJcbiAgICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1wZW5jaWwnLFxyXG4gICAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgaG92ZXI6c2hhZG93LTgnLFxyXG4gICAgICAgICAgaXNGcm96ZW46IHRydWUsXHJcbiAgICAgICAgICBvcmRlcjogNixcclxuICAgICAgICAgIHRvb2xUaXBUZXh0OiAnc2hhcmVkX2FjdGlvbnNfZWRpdCcsXHJcbiAgICAgICAgICBidXR0b25UeXBlOiBCdXR0b25UeXBlLlN1Ym1pdCxcclxuICAgICAgICAgIGlzSWNvbkJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGFjdGlvbkRpc3BsYXk6IEFjdGlvblBsYWNlbWVudC5JbmxpbmVcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRDb2x1bW5zLFxyXG4gICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNob3dDb25zdWx0QnV0dG9uID09IHRydWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyOiAnc2hhcmVkX2FjdGlvbnNfY29uc3VsdCcsXHJcbiAgICAgICAgICBmaWVsZDogJ2NvbnN1bHQnLFxyXG4gICAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgICBidXR0b25JY29uOiAncGkgcGktZXllJyxcclxuICAgICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IGhvdmVyOnNoYWRvdy04JyxcclxuICAgICAgICAgIGljb25TdHlsZUNsYXNzOiAndGV4dC1ibHVlLTUwMCcsXHJcbiAgICAgICAgICBpc0Zyb3plbjogdHJ1ZSxcclxuICAgICAgICAgIG9yZGVyOiAwLFxyXG4gICAgICAgICAgdG9vbFRpcFRleHQ6ICdDb25zdWx0ZXInLFxyXG4gICAgICAgICAgaXNJY29uQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYWN0aW9uRGlzcGxheTogQWN0aW9uUGxhY2VtZW50Lk92ZXJmbG93LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGhpcy5zZWxlY3RlZENvbHVtbnMsXHJcbiAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvd0R1cGxpY2F0ZUJ1dHRvbiA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcjogJ3NoYXJlZF9hY3Rpb25zX2R1cGxpY2F0ZScsXHJcbiAgICAgICAgICBmaWVsZDogJ2R1cGxpY2F0ZScsXHJcbiAgICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1jbG9uZScsXHJcbiAgICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBob3ZlcjpzaGFkb3ctOCcsXHJcbiAgICAgICAgICBpY29uU3R5bGVDbGFzczogJ3RleHQtcHVycGxlLTUwMCcsXHJcbiAgICAgICAgICBpc0Zyb3plbjogdHJ1ZSxcclxuICAgICAgICAgIG9yZGVyOiA3LFxyXG4gICAgICAgICAgdG9vbFRpcFRleHQ6ICdEdXBsaXF1ZXInLFxyXG4gICAgICAgICAgaXNJY29uQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgYWN0aW9uRGlzcGxheTogQWN0aW9uUGxhY2VtZW50Lk92ZXJmbG93LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGhpcy5zZWxlY3RlZENvbHVtbnMsXHJcbiAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbXHJcbiAgICAgIC4uLnRoaXMuc2VsZWN0ZWRDb2x1bW5zXHJcbiAgICAgICAgLmZpbHRlcihjb2wgPT4gY29sLm9yZGVyICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEub3JkZXIhIC0gYi5vcmRlciEpLFxyXG4gICAgICAuLi50aGlzLnNlbGVjdGVkQ29sdW1ucy5maWx0ZXIoY29sID0+IGNvbC5vcmRlciA9PT0gdW5kZWZpbmVkKSxcclxuICAgIF07XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbnMubWFwKFxyXG4gICAgICAoY29sdW1uKSA9PlxyXG4gICAgICAoY29sdW1uLnRyYW5zbGF0ZWRIZWFkZXIgPSBjb2x1bW4uaGVhZGVyXHJcbiAgICAgICAgPyB0aGlzLmxvY2FsaXplLnRyYW5zZm9ybShjb2x1bW4uaGVhZGVyKVxyXG4gICAgICAgIDogY29sdW1uLmhlYWRlcilcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy52aWV3T3B0aW9ucyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGxhYmVsOiB0aGlzLmxvY2FsaXplLnRyYW5zZm9ybSgnc2hhcmVkX3RzaV9jb21wb25lbnRfZ3JpZF9saXN0X3ZpZXcnKSxcclxuICAgICAgICBpY29uOiAncGkgcGktYWxpZ24tanVzdGlmeScsXHJcbiAgICAgICAgY29tbWFuZDogKCkgPT4gdGhpcy50b2dnbGVMaXN0VmlldygpXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbDogdGhpcy5sb2NhbGl6ZS50cmFuc2Zvcm0oXCJzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2NhbGVuZGVyX3ZpZXdcIiksXHJcbiAgICAgICAgaWNvbjogJ3BpIHBpLWNhbGVuZGFyJyxcclxuICAgICAgICBjb21tYW5kOiAoKSA9PiB0aGlzLnRvZ2dsZUNhbGVuZGVyVmlldygpXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbDogdGhpcy5sb2NhbGl6ZS50cmFuc2Zvcm0oJ3NoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfY2FyZF92aWV3JyksXHJcbiAgICAgICAgaWNvbjogJ3BpIHBpLWlkLWNhcmQnLFxyXG4gICAgICAgIGNvbW1hbmQ6ICgpID0+IHRoaXMudG9nZ2xlQ2FyZFZpZXcoKVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbGFiZWw6IHRoaXMubG9jYWxpemUudHJhbnNmb3JtKCdzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2thbmJhbl92aWV3JyksXHJcbiAgICAgICAgaWNvbjogJ3BpIHBpLXRoLWxhcmdlJyxcclxuICAgICAgICBjb21tYW5kOiAoKSA9PiB0aGlzLnRvZ2dsZUthbmJhblZpZXcoKVxyXG4gICAgICB9XHJcbiAgICBdO1xyXG5cclxuICAgIHRoaXMuX2luaXRNb2RlbHMoKTtcclxuICB9XHJcblxyXG5cclxuICAvKiB0b2dnbGVIZWFkZXJGaWx0ZXJzKCl7XHJcbiAgICBpZih0aGlzLnNob3dIZWFkZXJGaWx0ZXJzID09PSB0cnVlKXtcclxuICAgICAgdGhpcy5zaG93SGVhZGVyRmlsdGVycyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmZpbHRlckljb24gPSBcInBpIHBpLWZpbHRlclwiO1xyXG4gICAgICB0aGlzLmZpbHRlclRvb2x0aXAgPSBcInNob3dfZmlsdGVyXCI7XHJcbiAgICB9XHJcbiAgICBlbHNlIHsgLy90aGlzLnNob3dIZWFkZXJGaWx0ZXJzID09PSBmYWxzZVxyXG4gICAgICB0aGlzLnNob3dIZWFkZXJGaWx0ZXJzID0gdHJ1ZTtcclxuICAgICAgdGhpcy5maWx0ZXJJY29uID0gXCJwaSBwaS1maWx0ZXItc2xhc2hcIjtcclxuICAgICAgdGhpcy5maWx0ZXJUb29sdGlwID0gXCJoaWRlX2ZpbHRlclwiO1xyXG5cclxuICAgIH1cclxuICB9ICovXHJcblxyXG4gIGlzTGFzdFBhZ2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5wYWdlXHJcbiAgICAgID8gdGhpcy5wYWdlLnBhZ2VOdW1iZXIgPT09IHRoaXMucGFnZS50b3RhbENvdW50IC0gdGhpcy5wYWdlLnBhZ2VTaXplXHJcbiAgICAgIDogdHJ1ZTtcclxuICB9XHJcblxyXG4gIGlzRmlyc3RQYWdlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucGFnZSA/IHRoaXMucGFnZS5wYWdlTnVtYmVyID09PSAwIDogdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExhenlMb2FkXHJcbiAgICovXHJcbiAgLy9maXJzdCA9PT4gcGFnZS5wYWdlTnVtYmVyXHJcbiAgLy9yb3dzID09PiBwYWdlLnBhZ2VTaXplXHJcbiAgLy90aGlzLnBhZ2UuaXRlbXMubGVuZ3RoID09PiB0b3RhbCBjb3VudFxyXG5cclxuICBvcGVuTmV3KCkge1xyXG4gICAgaWYgKCF0aGlzLnByZXZlbnRBZGRFdmVudCkge1xyXG4gICAgICB0aGlzLl9vcGVuTW9kYWwoQ29tcG9uZW50X01vZGVzLkNSRUFURSwgbnVsbCwgdGhpcy5fbW9kYWxEYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmJ1dHRvbkNvbHVtbkNsaWNrZWQuZW1pdCh7XHJcbiAgICAgIGtleTogdW5kZWZpbmVkLFxyXG4gICAgICBmaWVsZDogJ2FkZCcsXHJcbiAgICAgIHNlbGVjdEtleU9ubHk6IHRoaXMuc2VsZWN0S2V5T25seSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgaGFuZGxlQnV0dG9uQ29sdW1uQ2xpY2tlZChldmVudDogQnV0dG9uQ2xpY2tSZXN1bHQpIHtcclxuXHJcbiAgICBsZXQgaXRlbUtleTogYW55ID0gZXZlbnQuc2VsZWN0S2V5T25seSA/IGV2ZW50LmtleSA6IGV2ZW50LmtleVt0aGlzLmtleV07XHJcblxyXG4gICAgY29uc3QgZXhjbHVkZWQgPSBbXCJOb3Rlc1wiLCBcIkZpY2hpZXJcIl07XHJcbiAgICBpZiAodGhpcy5idXNpbmVzc0NsYXNzICYmICFleGNsdWRlZC5pbmNsdWRlcyh0aGlzLmJ1c2luZXNzQ2xhc3MpKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nRGF0YVNlcnZpY2Uuc2V0RGF0YSh7IGlkOiBpdGVtS2V5LCBjbGFzczogdGhpcy5idXNpbmVzc0NsYXNzIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChldmVudC5maWVsZCA9PSAnZWRpdCcpIHtcclxuICAgICAgdGhpcy5fZWRpdFJvdyhpdGVtS2V5KTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQuZmllbGQgPT0gJ2RlbGV0ZScpIHtcclxuICAgICAgdGhpcy5fZGVsZXRlUm93KGl0ZW1LZXkpO1xyXG4gICAgfSBlbHNlIGlmIChldmVudC5maWVsZCA9PSAnY29uc3VsdCcpIHtcclxuICAgICAgdGhpcy5fY29uc3VsdFJvdyhpdGVtS2V5KTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQuZmllbGQgPT0gJ2R1cGxpY2F0ZScpIHtcclxuXHJcbiAgICAgIGlmICghdGhpcy5idXNpbmVzc0NsYXNzKSB7XHJcbiAgICAgICAgdGhyb3cgRXJyb3IoXCJCdXNzaW5lc3MgY2xhc3MgaXMgbm90IGRlZmluZWQgIVwiKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5fZHVwbGljYXRlUm93KGl0ZW1LZXkpO1xyXG5cclxuICAgIH0gZWxzZSBpZiAoZXZlbnQuZmllbGQgPT0gJ3VwbG9hZCcpIHtcclxuICAgICAgY29uc3QgY29uZiA9IHtcclxuICAgICAgICBkYXRhOiB7fSxcclxuICAgICAgICBzdHlsZUNsYXNzOiAnJyxcclxuICAgICAgICB3aWR0aDogdGhpcy5tb2RhbFNpemUhLndpZHRoLFxyXG4gICAgICAgIGhlaWdodDogdGhpcy5tb2RhbFNpemUhLmhlaWdodCxcclxuICAgICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAgICAgfVxyXG4gICAgICBjb25zdCByZWYgPSBhd2FpdCBvcGVuTW9kYWxVcGxvYWRHcmlkKHRoaXMuX2luamVjdG9yLCBjb25mKVxyXG5cclxuICAgICAgcmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKCh2YWw/OiBhbnkpID0+IHRoaXMuX2Nsb3NlTW9kYWwodmFsKSk7XHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmZpZWxkID09ICdub3RlcycpIHtcclxuXHJcbiAgICAgIGNvbnN0IHJlZiA9IGF3YWl0IG9wZW5Ob3Rlc0xpc3QodGhpcy5faW5qZWN0b3IpO1xyXG5cclxuICAgICAgcmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKCh2YWw/OiBhbnkpID0+IHRoaXMuX2Nsb3NlTW9kYWwodmFsKSk7XHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmZpZWxkID09ICdkb3dubG9hZCcpIHtcclxuXHJcbiAgICAgIHRoaXMuZmljaGllclNlcnZpY2UuZ2V0QnlJZChpdGVtS2V5KS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKGRhdGEpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2F2ZUZpbGUoZGF0YS5jb250ZW51LCBkYXRhLm5vbUZpY2hpZXJDb21wbGV0ISk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcblxyXG4gICAgfSBlbHNlIGlmIChldmVudC5maWVsZCA9PSAnaW5mbycpIHtcclxuXHJcbiAgICAgIHRoaXMucmVjb3JkSW5mb1BvcHVwU2VydmljZVxyXG4gICAgICAgIC5nZXRJbmZvKHRoaXMuYnVzaW5lc3NDbGFzcyEsIGl0ZW1LZXkpXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBtb2RhbFNpemUgPSBNb2RhbFNpemVFbnVtLkV4dHJhTGFyZ2U7XHJcbiAgICAgICAgICAgIGxldCB0ZXh0ID1cclxuICAgICAgICAgICAgICAnVUlEIDogICcgK1xyXG4gICAgICAgICAgICAgIGl0ZW1LZXkgK1xyXG4gICAgICAgICAgICAgICc8QlI+Q3JlYXRlZCBieSA6ICAnICtcclxuICAgICAgICAgICAgICBkYXRhLmNyZWF0aW9uVXNlciArXHJcbiAgICAgICAgICAgICAgJzxCUj5Nb2RpZmllZCBieSA6ICcgK1xyXG4gICAgICAgICAgICAgIGRhdGEubW9kaWZVc2VyICtcclxuICAgICAgICAgICAgICAnPEJSPkNyZWF0ZWQgb24gOiAnICtcclxuICAgICAgICAgICAgICBkYXRhLmRhdGVTYWlzaWUgK1xyXG4gICAgICAgICAgICAgICc8QlI+TW9kaWZpZWQgb24gOiAnICtcclxuICAgICAgICAgICAgICBkYXRhLmRhdGVNb2RpZjtcclxuXHJcbiAgICAgICAgICAgIGxldCBjb25mOiBEeW5hbWljRGlhbG9nQ29uZmlnID0ge1xyXG4gICAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgIFVpZDogaXRlbUtleSxcclxuICAgICAgICAgICAgICAgIGJ1c2luZXNzQ2xhc3M6IHRoaXMuYnVzaW5lc3NDbGFzcyxcclxuICAgICAgICAgICAgICAgIGNyZWF0aW9uVXNlcjogZGF0YS5jcmVhdGlvblVzZXIsXHJcbiAgICAgICAgICAgICAgICBtb2RpZlVzZXI6IGRhdGEubW9kaWZVc2VyLFxyXG4gICAgICAgICAgICAgICAgZGF0ZVNhaXNpZTogZGF0YS5kYXRlU2Fpc2llLFxyXG4gICAgICAgICAgICAgICAgZGF0ZU1vZGlmOiBkYXRhLmRhdGVNb2RpZixcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIG1heGltaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgIHdpZHRoOiAnOTByZW0nLFxyXG4gICAgICAgICAgICAgIGhlaWdodDogJzgwcmVtJyxcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZiA9IHRoaXMuX3RzaU1vZGFsU2VydmljZS5vcGVuKFxyXG4gICAgICAgICAgICAgIFRzaVBvcHVwVGV4dFZpZXdlckNvbXBvbmVudCxcclxuICAgICAgICAgICAgICBjb25mXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5vbkNsb3NlLnN1YnNjcmliZSgodmFsPzogYW55KSA9PlxyXG4gICAgICAgICAgICAgIHRoaXMuX2Nsb3NlTW9kYWwodmFsKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGV2ZW50LmZpZWxkID09ICdmb3JtJyl7XHJcbiAgICAgIGlmKCF0aGlzLmJ1c2luZXNzQ2xhc3MpXHJcbiAgICAgIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBmb3JtRGVzY3JpbWluYXRvclZhbHVlOiBhbnkgPSBudWxsO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZGVzY3JpbWluYXRvclZhbHVlKVxyXG4gICAgICB7XHJcbiAgICAgICAgZm9ybURlc2NyaW1pbmF0b3JWYWx1ZSA9IHRoaXMuZGVzY3JpbWluYXRvclZhbHVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIWZvcm1EZXNjcmltaW5hdG9yVmFsdWUpXHJcbiAgICAgIHtcclxuICAgICAgICBsZXQgZGlzY3JpbWluYXRvclJlc3BvbnNlID0gYXdhaXQgdGhpcy5nZXREaXNjcmltaW5hdG9yKHRoaXMuYnVzaW5lc3NDbGFzcywgaXRlbUtleSk7XHJcbiAgICAgICAgZm9ybURlc2NyaW1pbmF0b3JWYWx1ZSA9IGRpc2NyaW1pbmF0b3JSZXNwb25zZT8uZGlzY3JpbWluYXRvcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgbW9kYWxDb25maWcgPSB7XHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgc291cmNlQnVzaW5lc3NDbGFzczoge1xyXG4gICAgICAgICAgICBidXNpbmVzc0NsYXNzOiB0aGlzLmJ1c2luZXNzQ2xhc3MsXHJcbiAgICAgICAgICAgIGRpc2NyaW1pbmF0b3JWYWx1ZTogZm9ybURlc2NyaW1pbmF0b3JWYWx1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc3R5bGVDbGFzczogJycsXHJcbiAgICAgICAgd2lkdGg6IHRoaXMubW9kYWxTaXplIS53aWR0aCxcclxuICAgICAgICBoZWlnaHQ6IHRoaXMubW9kYWxTaXplIS5oZWlnaHQsXHJcbiAgICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcmVmID0gYXdhaXQgb3BlbkR5bmFtaWNGb3JtTW9kYWxDb21wb25lbnQodGhpcy5faW5qZWN0b3IsIG1vZGFsQ29uZmlnKVxyXG5cclxuICAgICAgcmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKCh2YWw/OiBhbnkpID0+IHRoaXMuX2Nsb3NlTW9kYWwodmFsKSk7XHJcbiAgICB9ZWxzZSBpZiAoZXZlbnQuZmllbGQgPT0gJ0FjdGlvbkVSUCcpIHtcclxuXHJcbiAgICAgIGxldCBvY2N1cmVuY2VJbmZvczogb2NjdXJlbmNlSW5mb3MgPSB7XHJcbiAgICAgICAgYnVzaW5lc3NjbGFzczogdGhpcy5idXNpbmVzc0NsYXNzID8/ICcnLFxyXG4gICAgICAgIG9jY3VyZW5jZTogaXRlbUtleVxyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCByZWYgPSBhd2FpdCBvcGVuQWN0aW9uTGlzdCh0aGlzLl9pbmplY3RvciwgeyBvY2N1cmVuY2VJbmZvczogb2NjdXJlbmNlSW5mb3MgfSk7XHJcblxyXG4gICAgICByZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT4gdGhpcy5fY2xvc2VNb2RhbCh2YWwpKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmJ1dHRvbkNvbHVtbkNsaWNrZWQuZW1pdCh7XHJcbiAgICAgICAga2V5OiBldmVudC5rZXksXHJcbiAgICAgICAgZmllbGQ6IGV2ZW50LmZpZWxkLFxyXG4gICAgICAgIHNlbGVjdEtleU9ubHk6IHRoaXMuc2VsZWN0S2V5T25seSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzYXZlRmlsZShiYXNlNjREYXRhOiBhbnksIGZpbGVOYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGJ5dGVDaGFyYWN0ZXJzID0gYXRvYihiYXNlNjREYXRhKTtcclxuICAgIGNvbnN0IGJ5dGVOdW1iZXJzID0gbmV3IEFycmF5KGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aCk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGJ5dGVOdW1iZXJzW2ldID0gYnl0ZUNoYXJhY3RlcnMuY2hhckNvZGVBdChpKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ5dGVOdW1iZXJzKTtcclxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnl0ZUFycmF5XSwgeyB0eXBlOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyB9KTtcclxuXHJcbiAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuXHJcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcclxuICAgIGEuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgIGEuaHJlZiA9IHVybDtcclxuICAgIGEuZG93bmxvYWQgPSBmaWxlTmFtZTtcclxuICAgIGEuY2xpY2soKTtcclxuXHJcbiAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xyXG4gIH1cclxuXHJcbiAgbG9hZChldmVudDogeyByZXF1ZXN0OiBJUGFnZWRSZXF1ZXN0OyBpc0ZvckNhbGVuZGFyOiBib29sZWFuIH0pIHtcclxuICAgIHRoaXMucGFnZWRSZXF1ZXN0ID0gZXZlbnQucmVxdWVzdDtcclxuICAgIHRoaXMuX3NldGZvcm1FbmRwb2ludEJvZHkoKTtcclxuICAgIHRoaXMuX2xvYWREUyhldmVudC5pc0ZvckNhbGVuZGFyKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ZWRJdGVtc0NoYW5nZShldmVudDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIHByaXZhdGUgbWV0aG9kc1xyXG4gIHByaXZhdGUgX3NldGZvcm1FbmRwb2ludEJvZHkoKTogdm9pZCB7XHJcbiAgICBsZXQgb3g6IGFueSA9IHRoaXMuX2Nsb25lUGFnZWRSZXF1ZXN0KHRoaXMucGFnZWRSZXF1ZXN0KTtcclxuICAgIG94WydnZXRBbGxEYXRhJ10gPSB0cnVlO1xyXG4gICAgdGhpcy5mb3JtRW5kcG9pbnRCb2R5ID0gSlNPTi5zdHJpbmdpZnkob3gpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdE1vZGVscygpIHtcclxuXHJcbiAgICB0aGlzLnBhZ2UgPSB7XHJcbiAgICAgIGl0ZW1zOiBbXSxcclxuICAgICAgcGFnZVNpemU6IDEwLFxyXG4gICAgICBwYWdlTnVtYmVyOiAxLFxyXG4gICAgICB0b3RhbENvdW50OiAwLFxyXG4gICAgICB0b3RhbFBhZ2VzOiAwLFxyXG4gICAgICBzdW1tYXJpZXM6IFtdLFxyXG4gICAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5wYWdlZFJlcXVlc3QgPSB7XHJcbiAgICAgIG1heFJlc3VsdENvdW50OiAxMCxcclxuICAgICAgc2tpcENvdW50OiAwLFxyXG4gICAgICBzb3J0aW5nOiBbXSxcclxuICAgICAga2V5d29yZDogJycsXHJcbiAgICAgIGZpbHRlcnM6IFtdLFxyXG4gICAgICBnZXRBbGxEYXRhOiBmYWxzZSxcclxuICAgICAgc3VtbWFyaWVzOiBbXSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2FkRFMoaXNGb3JDYWxlbmRlcjogYm9vbGVhbiA9IGZhbHNlKSB7XHJcblxyXG4gICAgdGhpcy5wYWdlLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5wYWdlJC5uZXh0KHRoaXMucGFnZSk7XHJcbiAgICB0aGlzLnBhZ2VkUmVxdWVzdCA9IHtcclxuICAgICAgLi4udGhpcy5wYWdlZFJlcXVlc3QsXHJcbiAgICAgIGdldEFsbERhdGE6IGlzRm9yQ2FsZW5kZXIsXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLmNydWRTZXJ2aWNlICE9IG51bGwgJiYgdGhpcy5jcnVkU2VydmljZSAhPSB1bmRlZmluZWQpIHtcclxuXHJcbiAgICAgIHRoaXMuY3J1ZFNlcnZpY2UuZ2V0QWxsUGFnZWQodGhpcy5wYWdlZFJlcXVlc3QpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHZhbHVlOiBJUGFnZWRSZXNwb25zZTxhbnk+KSA9PiB7XHJcbiAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5wYWdlID0ge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMucGFnZSxcclxuICAgICAgICAgICAgICBpdGVtcyA6IHZhbHVlLml0ZW1zLFxyXG4gICAgICAgICAgICAgIHRvdGFsQ291bnQgOiB2YWx1ZS50b3RhbENvdW50LFxyXG4gICAgICAgICAgICAgIHN1bW1hcmllcyA6IHZhbHVlLnN1bW1hcmllcyA/IHZhbHVlLnN1bW1hcmllcyA6IFtdLFxyXG4gICAgICAgICAgICAgIHRvdGFsUGFnZXMgOiAodGhpcy5wYWdlLnRvdGFsQ291bnQgLSAgKHRoaXMucGFnZS50b3RhbENvdW50ICUgdGhpcy5wYWdlLnBhZ2VTaXplKSkgLyB0aGlzLnBhZ2UucGFnZVNpemUgKyAxLFxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuc2hvd05vdGVCdXR0b24pIHtcclxuICAgICAgICAgICAgICB0aGlzLmxvYWROb3Rlc0NvdW50cygpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZih0aGlzLmlzQ3VzdG9tQ29sdW1uUmVuZGVyZWQgPT0gZmFsc2UgJiYgdmFsdWUuY3VzdG9tQ29sdW1uU2NoZW1hICYmIHZhbHVlLmN1c3RvbUNvbHVtblNjaGVtYS5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgLy8gQWRkIGN1c3RvbSBjb2x1bW5zIHRvIHRoZSBncmlkXHJcbiAgICAgICAgICAgICAgdmFsdWUuY3VzdG9tQ29sdW1uU2NoZW1hLmZvckVhY2goY2NzID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBjdXN0b21Db2x1bW5HcmlkOiBHcmlkQ29sdW1uID0ge1xyXG4gICAgICAgICAgICAgICAgICBoZWFkZXI6IGNjcy5jb2x1bW5OYW1lLFxyXG4gICAgICAgICAgICAgICAgICBmaWVsZDogY2NzLmNvbHVtbk5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIGZpbHRlcklucHV0VHlwZTogY2NzLnR5cGUsXHJcbiAgICAgICAgICAgICAgICAgIGlzQ3VzdG9tQ29sdW1uOiB0cnVlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucy5wdXNoKGN1c3RvbUNvbHVtbkdyaWQpXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB0aGlzLmlzQ3VzdG9tQ29sdW1uUmVuZGVyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnBhZ2UubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5wYWdlJC5uZXh0KHZhbHVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5lcnJvcihlcnJvci5tZXNzYWdlKTtcclxuICAgICAgICAgIHRoaXMucGFnZS5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWROb3Rlc0NvdW50cygpIHtcclxuICAgIGNvbnN0IGlkcyA9IHRoaXMucGFnZS5pdGVtcy5tYXAoeCA9PiB4W3RoaXMua2V5XSlcclxuICAgICAgLmZpbHRlcih4ID0+IHggIT09IG51bGwgJiYgeCAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAubWFwKHggPT4gU3RyaW5nKHgpKTtcclxuXHJcbiAgICBpZiAoIWlkcy5sZW5ndGggfHwgIXRoaXMuYnVzaW5lc3NDbGFzcykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5ub3Rlc1NlcnZpY2VcclxuICAgICAgLmdldE5vdGVzQ291bnRCeVJvd3ModGhpcy5idXNpbmVzc0NsYXNzLCBpZHMpXHJcbiAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuXHJcbiAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oXHJcbiAgICAgICAgICByZXN1bHQubWFwKHggPT4gW3gucm93VWlkLCB4LmNvdW50XSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLnBhZ2UuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgIGNvbnN0IGtleSA9IFN0cmluZyhpdGVtW3RoaXMua2V5XSk7XHJcbiAgICAgICAgICBjb25zdCBjb3VudCA9IG1hcC5nZXQoa2V5KTtcclxuICAgICAgICAgIChpdGVtIGFzIGFueSkubm90ZXNDb3VudCA9IHR5cGVvZiBjb3VudCA9PT0gJ251bWJlcicgPyBjb3VudCA6IDA7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZWRpdFJvdyhpdGVtS2V5OiBhbnkpIHtcclxuICAgIHRoaXMuX2hhbmRsZUFjdGlvbldpdGhBbGVydENoZWNrKENvbXBvbmVudF9Nb2Rlcy5FRElULCBpdGVtS2V5KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2RlbGV0ZVJvdyhpdGVtS2V5OiBhbnkpIHtcclxuICAgIHRoaXMuX2hhbmRsZUFjdGlvbldpdGhBbGVydENoZWNrKENvbXBvbmVudF9Nb2Rlcy5ERUxFVEUsIGl0ZW1LZXkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY29uc3VsdFJvdyhpdGVtS2V5OiBhbnkpIHtcclxuICAgIHRoaXMuX2hhbmRsZUFjdGlvbldpdGhBbGVydENoZWNrKENvbXBvbmVudF9Nb2Rlcy5DT05TVUxULCBpdGVtS2V5KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZHVwbGljYXRlUm93KGl0ZW1LZXk6IGFueSkge1xyXG4gICAgdGhpcy5faGFuZGxlQWN0aW9uV2l0aEFsZXJ0Q2hlY2soQ29tcG9uZW50X01vZGVzLkRVUExJQ0FURSwgaXRlbUtleSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGdldEVudGl0eUluZm8oKSB7XHJcbiAgICBpZiAodGhpcy5idXNpbmVzc0NsYXNzKSB7XHJcbiAgICAgIHRoaXMuZW50aXR5SW5mbyA9IGF3YWl0IHRoaXMuX2VudGl0eUNvbmZpZ1NlcnZpY2UuZ2V0RW50aXR5SW5mb0Zyb21DYWNoZSh0aGlzLmJ1c2luZXNzQ2xhc3MpO1xyXG4gICAgICBpZiAoIXRoaXMuZW50aXR5SW5mbykge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihgTm8gZW50aXR5IGluZm8gZm91bmQgZm9yICR7dGhpcy5idXNpbmVzc0NsYXNzfWApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9vcGVuTW9kYWwobW9kZTogc3RyaW5nLCBpdGVtS2V5OiBhbnksIGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5jcnVkU2VydmljZSEuaXNEdXBsaWNhdGUgPSBtb2RlID09PSBNb2Rlcy5kdXBsaWNhdGU7XHJcbiAgICBsZXQgd29ya2Zsb3dFbnRpdHlJbmZvcm1hdGlvbjogd29ya2Zsb3dJbnN0YW5jZUluZm9ybWF0aW9uUmVzcG9uc2UgfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcclxuXHJcbiAgICBpZiAodGhpcy5idXNpbmVzc0NsYXNzKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgdGhpcy5lbnRpdHlJbmZvID0gYXdhaXQgdGhpcy5fZW50aXR5Q29uZmlnU2VydmljZS5nZXRFbnRpdHlJbmZvRnJvbUNhY2hlKHRoaXMuYnVzaW5lc3NDbGFzcylcclxuICAgICAgICB3b3JrZmxvd0VudGl0eUluZm9ybWF0aW9uID0gYXdhaXQgdGhpcy5nZXRXb3JrZmxvd0VudGl0eUluZm9ybWF0aW9uKHRoaXMuYnVzaW5lc3NDbGFzcywgaXRlbUtleSk7XHJcbiAgICAgIH1cclxuICAgICAgY2F0Y2ggKGVycm9yKXtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGNvbmY6IER5bmFtaWNEaWFsb2dDb25maWc7XHJcblxyXG4gICAgaWYgKHRoaXMubW9kYWxTaXplICE9IG51bGwgJiYgdGhpcy5tb2RhbFNpemUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGNvbmYgPSB7XHJcbiAgICAgICAgZGF0YTogeyBpZDogaXRlbUtleSwgbW9kZTogbW9kZSwgY3VzdG9tRGF0YTogZGF0YSwgd29ya2Zsb3dJbmZvcm1hdGlvbjogd29ya2Zsb3dFbnRpdHlJbmZvcm1hdGlvbiwgZW50aXR5SW5mbzogdGhpcy5lbnRpdHlJbmZvIH0sXHJcbiAgICAgICAgc3R5bGVDbGFzczogJycsXHJcbiAgICAgICAgd2lkdGg6IHRoaXMubW9kYWxTaXplLndpZHRoLFxyXG4gICAgICAgIGhlaWdodDogdGhpcy5tb2RhbFNpemUuaGVpZ2h0LFxyXG4gICAgICAgIG1heGltaXphYmxlOiB0cnVlLFxyXG4gICAgICAgIHRlbXBsYXRlczoge1xyXG4gICAgICAgICAgZm9vdGVyOiBUc2lGb3JtTW9kYWxGb290ZXJDb21wb25lbnQsXHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uZiA9IHtcclxuICAgICAgICBkYXRhOiB7IGlkOiBpdGVtS2V5LCBtb2RlOiBtb2RlLCBjdXN0b21EYXRhOiBkYXRhLCB3b3JrZmxvd0luZm9ybWF0aW9uOiB3b3JrZmxvd0VudGl0eUluZm9ybWF0aW9uIH0sXHJcbiAgICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGVvZiB0aGlzLmN1ZENvbXBvbmVudCA9PSAnc3RyaW5nJykge1xyXG4gICAgICB0aGlzLmN1ZENvbXBvbmVudCA9IFR5cGVSZWdpc3RyeUhlbHBlci5nZXRUeXBlKHRoaXMuY3VkQ29tcG9uZW50KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9kaWFsb2dSZWYgPSB0aGlzLl90c2lNb2RhbFNlcnZpY2Uub3Blbih0aGlzLmN1ZENvbXBvbmVudCwgY29uZik7XHJcblxyXG4gICAgdGhpcy5fZGlhbG9nUmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKCh2YWw/OiBhbnkpID0+IHRoaXMuX2Nsb3NlTW9kYWwoY29uZikpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2xvc2VNb2RhbChjb25mPzogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoY29uZiAmJiBjb25mPy5kYXRhPy5yZWZyZXNoTGlzdCkge1xyXG4gICAgICB0aGlzLl9sb2FkRFMoKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2RpYWxvZ1JlZj8uZGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2xvbmVQYWdlZFJlcXVlc3QocmVxdWVzdDogSVBhZ2VkUmVxdWVzdCk6IElQYWdlZFJlcXVlc3Qge1xyXG4gICAgbGV0IGNsb25lOiBJUGFnZWRSZXF1ZXN0ID0ge1xyXG4gICAgICBtYXhSZXN1bHRDb3VudDogcmVxdWVzdC5tYXhSZXN1bHRDb3VudCxcclxuICAgICAgc2tpcENvdW50OiByZXF1ZXN0LnNraXBDb3VudCxcclxuICAgICAgc29ydGluZzogcmVxdWVzdC5zb3J0aW5nLFxyXG4gICAgICBrZXl3b3JkOiByZXF1ZXN0LmtleXdvcmQsXHJcbiAgICAgIGZpbHRlcnM6IHJlcXVlc3QuZmlsdGVycyxcclxuICAgICAgZ2V0QWxsRGF0YTogcmVxdWVzdC5nZXRBbGxEYXRhLFxyXG4gICAgICBzdW1tYXJpZXM6IHJlcXVlc3Quc3VtbWFyaWVzLFxyXG4gICAgfTtcclxuICAgIHJldHVybiBjbG9uZTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2goZGF0YTogYW55KSB7XHJcbiAgICBpZiAoZGF0YSA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuX2xvYWREUygpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgZGlzcGxheVNlYXJjaEZpZWxkcygpIHtcclxuICAgIHRoaXMuc2hvd1NlYXJjaEZpZWxkID0gIXRoaXMuc2hvd1NlYXJjaEZpZWxkO1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIGNhbGVuZGVyXHJcbiAgaGFuZGxlQ2FsZW5kYXJFdmVudENsaWNrKGl0ZW06IGFueSkge1xyXG4gICAgc3dpdGNoIChpdGVtLm1vZGUpIHtcclxuICAgICAgY2FzZSBDb21wb25lbnRfTW9kZXMuQ09OU1VMVDpcclxuICAgICAgICB0aGlzLl9jb25zdWx0Um93KGl0ZW0uaWQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbXBvbmVudF9Nb2Rlcy5DUkVBVEU6XHJcbiAgICAgICAgdGhpcy5fb3Blbk1vZGFsKENvbXBvbmVudF9Nb2Rlcy5DUkVBVEUsIG51bGwsIGl0ZW0uZGF0ZURlYnV0KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb21wb25lbnRfTW9kZXMuRURJVDpcclxuICAgICAgICB0aGlzLl9lZGl0Um93KGl0ZW0uaWQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAnaW5mbyc6XHJcbiAgICAgICAgdGhpcy5oYW5kbGVCdXR0b25Db2x1bW5DbGlja2VkKHsgZmllbGQ6ICdpbmZvJywga2V5OiBpdGVtLmlkLCBzZWxlY3RLZXlPbmx5OiB0cnVlIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdkb3dubG9hZCc6XHJcbiAgICAgICAgdGhpcy5oYW5kbGVCdXR0b25Db2x1bW5DbGlja2VkKHsgZmllbGQ6ICdkb3dubG9hZCcsIGtleTogaXRlbS5pZCwgc2VsZWN0S2V5T25seTogdHJ1ZSB9KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAndXBsb2FkJzpcclxuICAgICAgICB0aGlzLmhhbmRsZUJ1dHRvbkNvbHVtbkNsaWNrZWQoeyBmaWVsZDogJ3VwbG9hZCcsIGtleTogaXRlbS5pZCwgc2VsZWN0S2V5T25seTogdHJ1ZSB9KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbm90ZXMnOlxyXG4gICAgICAgIHRoaXMuaGFuZGxlQnV0dG9uQ29sdW1uQ2xpY2tlZCh7IGZpZWxkOiAnbm90ZXMnLCBrZXk6IGl0ZW0uaWQsIHNlbGVjdEtleU9ubHk6IHRydWUgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0FjdGlvbkVSUCc6XHJcbiAgICAgICAgdGhpcy5oYW5kbGVCdXR0b25Db2x1bW5DbGlja2VkKHsgZmllbGQ6ICdBY3Rpb25FUlAnLCBrZXk6IGl0ZW0uaWQsIHNlbGVjdEtleU9ubHk6IHRydWUgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvZ2dsZUxpc3RWaWV3KCkge1xyXG4gICAgdGhpcy5zaG93Q2FyZFZpZXcgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0NhbGVuZGVyVmlldyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93S2FuYmFuVmlldyA9IGZhbHNlO1xyXG4gICAgdGhpcy5fbG9hZERTKCk7XHJcbiAgICB0aGlzLmN1cnJlbnRJY29uID0gXCJwaSBwaS1hbGlnbi1qdXN0aWZ5XCI7XHJcbiAgICB0aGlzLmN1cnJlbnRUb29sdGlwID0gXCJzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2xpc3Rfdmlld1wiO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b2dnbGVDYWxlbmRlclZpZXcoKSB7XHJcbiAgICB0aGlzLnNob3dDYWxlbmRlclZpZXcgPSAhdGhpcy5zaG93Q2FsZW5kZXJWaWV3O1xyXG4gICAgdGhpcy5zaG93Q2FyZFZpZXcgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0thbmJhblZpZXcgPSBmYWxzZTtcclxuICAgIHRoaXMuX2xvYWREUyh0aGlzLnNob3dDYWxlbmRlclZpZXcpO1xyXG4gICAgdGhpcy5jdXJyZW50SWNvbiA9IFwicGkgcGktY2FsZW5kYXJcIjtcclxuICAgIHRoaXMuY3VycmVudFRvb2x0aXAgPSBcInNoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfY2FsZW5kZXJfdmlld1wiO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b2dnbGVDYXJkVmlldygpIHtcclxuICAgIHRoaXMuc2hvd0NhcmRWaWV3ID0gIXRoaXMuc2hvd0NhcmRWaWV3O1xyXG4gICAgdGhpcy5zaG93Q2FsZW5kZXJWaWV3ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dLYW5iYW5WaWV3ID0gZmFsc2U7XHJcbiAgICAvLyB0aGlzLl9sb2FkRFModGhpcy5zaG93Q2FyZFZpZXcpO1xyXG4gICAgdGhpcy5jdXJyZW50SWNvbiA9IFwicGkgcGktaWQtY2FyZFwiO1xyXG4gICAgdGhpcy5jdXJyZW50VG9vbHRpcCA9IFwic2hhcmVkX3RzaV9jb21wb25lbnRfZ3JpZF9jYXJkX3ZpZXdcIjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9nZ2xlS2FuYmFuVmlldygpIHtcclxuICAgIHRoaXMuc2hvd0thbmJhblZpZXcgPSAhdGhpcy5zaG93S2FuYmFuVmlldztcclxuICAgIHRoaXMuc2hvd0NhcmRWaWV3ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dDYWxlbmRlclZpZXcgPSBmYWxzZTtcclxuICAgIHRoaXMuX2xvYWREUygpO1xyXG4gICAgdGhpcy5jdXJyZW50SWNvbiA9IFwicGkgcGktdGgtbGFyZ2VcIjtcclxuICAgIHRoaXMuY3VycmVudFRvb2x0aXAgPSBcInNoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfa2FuYmFuX3ZpZXdcIjtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRjQnKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMub3Blbk5ldygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGhhbmRsZUFjdGlvblZpZXdDbGljaygpIHtcclxuICAgIHRoaXMuY2xpY2tDb3VudCsrO1xyXG5cclxuICAgIHN3aXRjaCAodGhpcy5jbGlja0NvdW50KSB7XHJcbiAgICAgIGNhc2UgMTpcclxuICAgICAgICB0aGlzLnRvZ2dsZUxpc3RWaWV3KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIDI6XHJcbiAgICAgICAgdGhpcy50b2dnbGVDYWxlbmRlclZpZXcoKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgMzpcclxuICAgICAgICB0aGlzLnRvZ2dsZUNhcmRWaWV3KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIDQ6XHJcbiAgICAgICAgdGhpcy50b2dnbGVLYW5iYW5WaWV3KCk7XHJcbiAgICAgICAgdGhpcy5jbGlja0NvdW50ID0gMDtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhpcy5jbGlja0NvdW50ID0gMDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIF9oYW5kbGVBY3Rpb25XaXRoQWxlcnRDaGVjayhtb2RlOiBDb21wb25lbnRfTW9kZXMsIGl0ZW1LZXk6IGFueSkge1xyXG4gICAgLy8gVE9ETyBATWVkQWxpIHRvIGJlIGZpeGVkXHJcbiAgICBpZiAodGhpcy5idXNpbmVzc0NsYXNzICYmIHRoaXMuYnVzaW5lc3NDbGFzcyAhPT0gXCJOb3Rlc1wiKSB7XHJcbiAgICAgIHRoaXMubm90ZXNTZXJ2aWNlLmdldEFsZXJ0Tm90ZXMoaXRlbUtleT8udG9TdHJpbmcoKSwgdGhpcy5idXNpbmVzc0NsYXNzKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZTogTm90ZXNHcm91cGVkQnlVc2VyUmVzcG9uc2VbXSkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFyZXNwb25zZSB8fCByZXNwb25zZS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5fb3Blbk1vZGFsKG1vZGUsIGl0ZW1LZXksIHRoaXMuX21vZGFsRGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgcmVmID0gdGhpcy5fdHNpTW9kYWxTZXJ2aWNlLm9wZW4oVHNpTm90ZXNBdmVydGlyQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgZGF0YTogeyBncm91cGVkTm90ZXM6IHJlc3BvbnNlIH0sXHJcbiAgICAgICAgICAgICAgc3R5bGVDbGFzczogJycsXHJcbiAgICAgICAgICAgICAgd2lkdGg6IE1vZGFsU2l6ZUVudW0uU21hbGwud2lkdGgsXHJcbiAgICAgICAgICAgICAgaGVpZ2h0OiBNb2RhbFNpemVFbnVtLlNtYWxsLmhlaWdodCxcclxuICAgICAgICAgICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICByZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuX2Nsb3NlTW9kYWwodmFsKTtcclxuICAgICAgICAgICAgICB0aGlzLl9vcGVuTW9kYWwobW9kZSwgaXRlbUtleSwgdGhpcy5fbW9kYWxEYXRhKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBub3RlcyBmb3IgYWxlcnQnLCBlcnIpO1xyXG4gICAgICAgICAgdGhpcy5fb3Blbk1vZGFsKG1vZGUsIGl0ZW1LZXksIHRoaXMuX21vZGFsRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLl9vcGVuTW9kYWwobW9kZSwgaXRlbUtleSwgdGhpcy5fbW9kYWxEYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU3RhdHVzRmlsdGVyQ2hhbmdlZChldnQ6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coZXZ0KVxyXG4gIH1cclxuXHJcbiAgb25JbXBvcnRDbGlja2VkKCl7XHJcbiAgICB0aGlzLm9uSW1wb3J0RnJvbU91dGxvb2tDbGlja2VkLmVtaXQoe1xyXG4gICAgICBidXNpbmVzc0NsYXNzOiB0aGlzLmJ1c2luZXNzQ2xhc3MsXHJcbiAgICAgIHNlYXJjaEZpZWxkczogdGhpcy5zZWFyY2hGaWVsZHNcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXNlU2hvd0thbmJhblZpZXdPZldvcmtGbG93RXRhdCgpXHJcbiAge1xyXG4gICAgaWYodGhpcy5idXNpbmVzc0NsYXNzKVxyXG4gICAge1xyXG4gICAgICB0aGlzLl93b3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldFdvcmtmbG93RXRhdEJ5Q2xhc3NOYW1lQW5kRGVzY3JpbWluYXRvcih0aGlzLmJ1c2luZXNzQ2xhc3MsIHRoaXMuZGVzY3JpbWluYXRvclZhbHVlKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIGlmKGRhdGEgIT0gbnVsbCAmJiBkYXRhLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5zaG93S2FuYmFuVmlld09mV29ya0Zsb3dFdGF0ID0gdHJ1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGdldERpc2NyaW1pbmF0b3IoYnVzaW5lc3NDbGFzczogc3RyaW5nLCBpZDogc3RyaW5nKTogUHJvbWlzZTxEaXNjcmltaW5hdG9yUmVzcG9uc2UgfCBudWxsPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBsZXQgZGlzY3JpbWluYXRvclJlc3BvbnNlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fZGlzY3JpbWluYXRvclNlcnZpY2UuZ2V0RGlzY3JpbWluYXRvcihidXNpbmVzc0NsYXNzLCBpZCkpXHJcblxyXG4gICAgICBpZiAoZGlzY3JpbWluYXRvclJlc3BvbnNlKSB7XHJcbiAgICAgICAgcmV0dXJuIGRpc2NyaW1pbmF0b3JSZXNwb25zZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNhdGNoKGVycm9yKVxyXG4gICAge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gIFxyXG4gIDxwLXRvb2xiYXIgc3R5bGVDbGFzcz1cImJvcmRlci1yYWRpdXMtNyBtYi0xIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIG5vLXBhZFwiIFxyXG4gICAgKm5nSWY9XCIoc2hvd0FkZEJ1dHRvbiB8fCBzZWFyY2hGaWVsZHMgfHwgZm9ybUVuZHBvaW50IHx8IGJ1c2luZXNzQ2xhc3MpICYmIHNob3dSZXBvcnRpbmdcIj5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwibGVmdFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMiBteC0yXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dBZGRCdXR0b25cIiBwcmVzZW50YXRpb25EZXNpZ25lckJhc2U9XCJhZGRfYnV0dG9uXCI+XHJcbiAgICAgICAgICA8VHNpLUJ1dHRvbiBpY29uPVwicGkgcGktcGx1c1wiIFxyXG4gICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIiBcclxuICAgICAgICAgICAgdG9vbHRpcFRleHQ9XCJzaGFyZWRfdHNpX2NvbXBvbmVudF9hZGRfdmlld1wiIFxyXG4gICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24tc3VjY2VzcyBob3ZlcjpzaGFkb3ctNiBoLTJyZW0gcC1idXR0b24taWNvbi1vbmx5XCIgXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuTmV3KClcIj5cclxuICAgICAgICAgIDwvVHNpLUJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2VhcmNoRmllbGRzXCIgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwic2hvd19zZWFyY2hfZmllbGRzX2J1dHRvblwiPlxyXG4gICAgICAgICAgPFRzaS1CdXR0b24gaWNvbj1cInBpIHBpLXNsaWRlcnMtaFwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiXHJcbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PVwic2hhcmVkX3RzaV9jb21wb25lbnRfbWVudVwiXHJcbiAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJoLTJyZW0gcC1idXR0b24taWNvbi1vbmx5IGhvdmVyOnNoYWRvdy02IHt7IHNob3dTZWFyY2hGaWVsZCA/ICdwLWJ1dHRvbi1zZWNvbmRhcnknIDogJ3AtYnV0dG9uLXN1Y2Nlc3MnIH19XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImRpc3BsYXlTZWFyY2hGaWVsZHMoKVwiPlxyXG4gICAgICAgICAgPC9Uc2ktQnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0ltcG9ydEZyb21PdXRsb29rQnV0dG9uXCIgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwiaW1wb3J0RnJvbU91dGxvb2tfYnV0dG9uXCI+XHJcbiAgICAgICAgICA8VHNpLUJ1dHRvbiBpY29uPVwicGkgcGktZW52ZWxvcGVcIiBcclxuICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb24uVG9wXCIgXHJcbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PVwic2hhcmVkX3RzaV9jb21wb25lbnRfaW1wb3J0X2Zyb21fb3V0bG9va1wiIFxyXG4gICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24taW5mbyBob3ZlcjpzaGFkb3ctNiBoLTJyZW0gcC1idXR0b24taWNvbi1vbmx5XCIgXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkltcG9ydENsaWNrZWQoKVwiPiBcclxuICAgICAgICAgIDwvVHNpLUJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiAgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwidG9nZ2xlX2FjdGlvbnNfdmlld19idXR0b25cIj5cclxuICAgICAgICAgIDxwLXNwbGl0QnV0dG9uXHJcbiAgICAgICAgICAgIFtpY29uXT1cImN1cnJlbnRJY29uXCJcclxuICAgICAgICAgICAgW21vZGVsXT1cInZpZXdPcHRpb25zXCJcclxuICAgICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlQWN0aW9uVmlld0NsaWNrKClcIlxyXG4gICAgICAgICAgICBbdG9vbHRpcF09XCJjdXJyZW50VG9vbHRpcCB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1pY29uLW9ubHkgcC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi1wcmltYXJ5IGgtMnJlbSBob3ZlcjpzaGFkb3ctNlwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPCEtLSA8VHNpLUJ1dHRvblxyXG4gICAgICAgICAgICBbaWNvbl09XCJjdXJyZW50SWNvblwiXHJcbiAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJwLWVsZW1lbnQgcC1idXR0b24tcHJpbWFyeSAgaC0ycmVtIHAtYnV0dG9uIHAtY29tcG9uZW50IHAtYnV0dG9uLWljb24tb25seVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVBY3Rpb25WaWV3Q2xpY2soKVwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiXHJcbiAgICAgICAgICAgIFt0b29sdGlwVGV4dF09XCJjdXJyZW50VG9vbHRpcCB8IGxvY2FsaXplXCI+XHJcbiAgICAgICAgICA8L1RzaS1CdXR0b24+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICBcclxuXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwicmlnaHRcIj5cclxuICAgICAgICA8YXBwLXJlcG9ydGluZyAqbmdJZj1cIihmb3JtRW5kcG9pbnQgfHwgYnVzaW5lc3NDbGFzcylcIiBcclxuICAgICAgICAgIFtmb3JtRW5kcG9pbnRdPVwiZm9ybUVuZHBvaW50XCIgXHJcbiAgICAgICAgICBbZm9ybU5hbWVdPVwiZm9ybU5hbWVcIlxyXG4gICAgICAgICAgW2Zvcm1FbmRwb2ludEJvZHldPVwiZm9ybUVuZHBvaW50Qm9keVwiIFxyXG4gICAgICAgICAgW2lzRm9ybUVuZHBvaW50UGFnZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbYnVzaW5lc3NDbGFzc109XCJidXNpbmVzc0NsYXNzXCJcclxuICAgICAgICAgIFtyZXBvcnREaXNjcmltaW5hdG9yXT1cImRlc2NyaW1pbmF0b3JWYWx1ZVwiXHJcbiAgICAgICAgICAocmVmcmVzaERhdGEpPVwicmVmcmVzaCgkZXZlbnQpXCJcclxuICAgICAgICAgIFtmaWx0ZXJzSHRtbFRlbXBsYXRlXT1cImZpbHRlcnNIdG1sVGVtcGxhdGVcIlxyXG4gICAgICAgICAgW3BhZ2VkUmVxdWVzdF09XCJwYWdlZFJlcXVlc3RcIlxyXG4gICAgICAgICAgW2N1ZENvbXBvbmVudF09XCJjdWRDb21wb25lbnRcIiBcclxuICAgICAgICAgIFtjb25maWdNb2RlQnV0dG9uSWRdPVwiY29uZmlnTW9kZUJ1dHRvbklkXCJcclxuICAgICAgICAgIFtzaG93Tm90ZUJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbc2hvd0FjdGlvbkJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbc2hvd0luZm9CdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW3Nob3dVcGxvYWRCdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgID48L2FwcC1yZXBvcnRpbmc+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC10b29sYmFyPlxyXG5cclxuICA8ZGl2PlxyXG5cclxuICAgIDxUc2ktR2VuZXJpYy1HcmlkXHJcbiAgICAgIFtmb3JtTmFtZV09XCJmb3JtTmFtZVwiXHJcbiAgICAgIFtjcnVkU2VydmljZV09XCJjcnVkU2VydmljZVwiXHJcbiAgICAgIFtzaG93U2VhcmNoRmllbGRdPVwic2hvd1NlYXJjaEZpZWxkXCJcclxuICAgICAgW3NlYXJjaEZpZWxkc109XCJzZWFyY2hGaWVsZHNcIlxyXG4gICAgICBbZGVzY3JpbWluYXRvclZhbHVlXT1cImRlc2NyaW1pbmF0b3JWYWx1ZVwiXHJcbiAgICAgIFtoZWFkZXJdPVwiaGVhZGVyXCJcclxuICAgICAgW3BhZ2VdPVwicGFnZVwiXHJcbiAgICAgIFtwYWdlZFJlcXVlc3RdPVwicGFnZWRSZXF1ZXN0XCJcclxuICAgICAgW2NvbHVtbnNdPVwic2VsZWN0ZWRDb2x1bW5zXCJcclxuICAgICAgW3Nob3dIZWFkZXJGaWx0ZXJzXT1cInNob3dIZWFkZXJGaWx0ZXJzXCJcclxuICAgICAgWyhmaWx0ZXJzSHRtbFRlbXBsYXRlKV09XCJmaWx0ZXJzSHRtbFRlbXBsYXRlXCJcclxuICAgICAgW3ByZXNlbnRhdGlvblNldHRpbmdzXT1cInByZXNlbnRhdGlvblNldHRpbmdzXCJcclxuICAgICAgKGxvYWQpPVwibG9hZCgkZXZlbnQpXCJcclxuICAgICAgKGJ1dHRvbkNvbHVtbkNsaWNrZWQpPVwiaGFuZGxlQnV0dG9uQ29sdW1uQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgICAgW3NlbGVjdEtleU9ubHldPVwic2VsZWN0S2V5T25seVwiXHJcbiAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cInNlbGVjdGlvbk1vZGVcIlxyXG4gICAgICBba2V5XT1cImtleVwiXHJcbiAgICAgIFsoc2VsZWN0ZWRJdGVtcyldPVwic2VsZWN0ZWRJdGVtc1wiXHJcbiAgICAgIChzZWxlY3RlZEl0ZW1zQ2hhbmdlKT1cIm9uU2VsZWN0ZWRJdGVtc0NoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgKHNlYXJjaEZpZWxkc1ZhbHVlQ2hhbmdlZCk9XCJzZWFyY2hGaWVsZFZhbHVlQ2hhbmdlcygkZXZlbnQpXCJcclxuICAgICAgW3NlYXJjaE9uSW5pdF09XCJzZWFyY2hPbkluaXRcIlxyXG4gICAgICBbc2hvd0V4cG9ydEJ1dHRvbl09XCJzaG93RXhwb3J0QnV0dG9uXCJcclxuICAgICAgW3Nob3dHbG9iYWxTZWFyY2hdPVwic2hvd0dsb2JhbFNlYXJjaFwiXHJcbiAgICAgIFtpc1NlYXJjaEJ1dHRvbkRpc2FibGVkXT1cImlzU2VhcmNoQnV0dG9uRGlzYWJsZWRcIlxyXG4gICAgICBbc2hvd0NhbGVuZGVyVmlld109XCJzaG93Q2FsZW5kZXJWaWV3XCJcclxuICAgICAgW3Nob3dDYXJkVmlld109XCJzaG93Q2FyZFZpZXdcIlxyXG4gICAgICBbc2hvd0thbmJhblZpZXddPVwic2hvd0thbmJhblZpZXdcIlxyXG4gICAgICBbc2hvd0thbmJhblZpZXdPZldvcmtGbG93RXRhdF09XCJzaG93S2FuYmFuVmlld09mV29ya0Zsb3dFdGF0XCJcclxuICAgICAgW2J1c2luZXNzQ2xhc3NdPVwiYnVzaW5lc3NDbGFzc1wiXHJcbiAgICAgIFtjdWRDb21wb25lbnRdPVwiY3VkQ29tcG9uZW50XCIgXHJcbiAgICAgIFttb2RhbFNpemVdPVwibW9kYWxTaXplXCIgXHJcbiAgICAgIFtpZF09XCJpZFwiXHJcbiAgICAgIFtwYWdlJF09XCJwYWdlJFwiXHJcbiAgICAgIFtlbnRpdHlJbmZvXT1cImVudGl0eUluZm9cIlxyXG4gICAgICAoY2FsZW5kYXJFdmVudENsaWNrKT1cImhhbmRsZUNhbGVuZGFyRXZlbnRDbGljaygkZXZlbnQpXCJcclxuICAgICAgKHN0YXR1c0ZpbHRlckNoYW5nZWQpPVwib25TdGF0dXNGaWx0ZXJDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICBbc2hvd0luZm9CdXR0b25dPVwidHJ1ZVwiXHJcbiAgICAgIFtzaG93RG93bmxvYWRCdXR0b25dPVwidHJ1ZVwiXHJcbiAgICAgIFtzaG93VXBsb2FkQnV0dG9uXT1cInRydWVcIlxyXG4gICAgICBbc2hvd05vdGVCdXR0b25dPVwidHJ1ZVwiXHJcbiAgICAgIFtzaG93QWN0aW9uQnV0dG9uXT1cInRydWVcIlxyXG4gICAgICBbc2l6aW5nTW9kZV09XCJzaXppbmdNb2RlXCJcclxuICAgID48L1RzaS1HZW5lcmljLUdyaWQ+XHJcbiAgPC9kaXY+XHJcbiAgXHJcbjwvZGl2PlxyXG4iXX0=
|