@cqa-lib/cqa-ui 1.1.292 → 1.1.293
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/autocomplete/autocomplete.component.mjs +7 -3
- package/esm2020/lib/test-case-details/ai-verify-step/ai-verify-step.component.mjs +6 -5
- package/esm2020/lib/test-case-details/condition-step/condition-step.component.mjs +47 -19
- package/esm2020/lib/test-case-details/custom-code-step/custom-code-step.component.mjs +6 -5
- package/esm2020/lib/test-case-details/database-step/database-step.component.mjs +6 -5
- package/esm2020/lib/test-case-details/loop-step/loop-step.component.mjs +7 -10
- package/esm2020/lib/test-case-details/normal-step/normal-step.component.mjs +7 -5
- package/esm2020/lib/test-case-details/restore-session-step/restore-session-step.component.mjs +6 -5
- package/esm2020/lib/test-case-details/screenshot-step/screenshot-step.component.mjs +6 -5
- package/esm2020/lib/test-case-details/scroll-step/scroll-step.component.mjs +6 -5
- package/esm2020/lib/test-case-details/step-group/step-group.component.mjs +12 -13
- package/esm2020/lib/test-case-details/test-case-details-renderer/test-case-details-renderer.component.mjs +2 -3
- package/esm2020/lib/test-case-details/upload-step/upload-step.component.mjs +6 -5
- package/esm2020/lib/test-case-details/verify-url-step/verify-url-step.component.mjs +6 -5
- package/fesm2015/cqa-lib-cqa-ui.mjs +119 -79
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +116 -79
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/autocomplete/autocomplete.component.d.ts +3 -1
- package/lib/test-case-details/ai-verify-step/ai-verify-step.component.d.ts +2 -1
- package/lib/test-case-details/condition-step/condition-step.component.d.ts +9 -1
- package/lib/test-case-details/custom-code-step/custom-code-step.component.d.ts +2 -1
- package/lib/test-case-details/database-step/database-step.component.d.ts +2 -1
- package/lib/test-case-details/loop-step/loop-step.component.d.ts +3 -2
- package/lib/test-case-details/normal-step/normal-step.component.d.ts +3 -1
- package/lib/test-case-details/restore-session-step/restore-session-step.component.d.ts +2 -1
- package/lib/test-case-details/screenshot-step/screenshot-step.component.d.ts +2 -1
- package/lib/test-case-details/scroll-step/scroll-step.component.d.ts +2 -1
- package/lib/test-case-details/step-group/step-group.component.d.ts +5 -2
- package/lib/test-case-details/upload-step/upload-step.component.d.ts +2 -1
- package/lib/test-case-details/verify-url-step/verify-url-step.component.d.ts +2 -1
- package/package.json +1 -1
- package/styles.css +1 -1
|
@@ -157,6 +157,7 @@ export class TestCaseDetailsRendererComponent {
|
|
|
157
157
|
const instance = this.componentRef.instance;
|
|
158
158
|
instance.config = this.step;
|
|
159
159
|
instance.stepNumber = this.step.stepNumber;
|
|
160
|
+
instance.index = this.index; // Correct edit-in-depth for all step types (stepNumber "10.3" parses wrong)
|
|
160
161
|
instance.isNested = this.isNested;
|
|
161
162
|
instance.isInsideLoop = this.isInsideLoop;
|
|
162
163
|
instance.isInsideStepGroup = this.isInsideStepGroup;
|
|
@@ -187,13 +188,11 @@ export class TestCaseDetailsRendererComponent {
|
|
|
187
188
|
if (isLoopStepConfig(this.step)) {
|
|
188
189
|
instance.naturalTextActionsOptions = this.naturalTextActionsOptions;
|
|
189
190
|
instance.setConditionTemplateVariables = this.setConditionTemplateVariables;
|
|
190
|
-
instance.index = this.index; // Correct edit-in-depth (stepNumber "10.3" parses to 10 - wrong)
|
|
191
191
|
}
|
|
192
192
|
// Pass natural text actions options and template variables function to condition steps
|
|
193
193
|
if (isConditionStepConfig(this.step)) {
|
|
194
194
|
instance.naturalTextActionsOptions = this.naturalTextActionsOptions;
|
|
195
195
|
instance.setConditionTemplateVariables = this.setConditionTemplateVariables;
|
|
196
|
-
instance.index = this.index; // Correct edit-in-depth (stepNumber "10.3" parses to 10 - wrong)
|
|
197
196
|
}
|
|
198
197
|
this.wireOutputs(instance);
|
|
199
198
|
this.cdr.detectChanges();
|
|
@@ -488,4 +487,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
488
487
|
}], editInDepth: [{
|
|
489
488
|
type: Output
|
|
490
489
|
}] } });
|
|
491
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1jYXNlLWRldGFpbHMtcmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0LWNhc2UtZGV0YWlscy90ZXN0LWNhc2UtZGV0YWlscy1yZW5kZXJlci90ZXN0LWNhc2UtZGV0YWlscy1yZW5kZXJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3Rlc3QtY2FzZS1kZXRhaWxzLXJlbmRlcmVyL3Rlc3QtY2FzZS1kZXRhaWxzLXJlbmRlcmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxFQUNULGdCQUFnQixFQUdoQixNQUFNLEdBS1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLDRCQUE0QixFQUE0QixNQUFNLG9DQUFvQyxDQUFDO0FBQzVHLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQiwwQkFBMEIsRUFDMUIsc0JBQXNCLEdBR3ZCLE1BQU0sMEJBQTBCLENBQUM7OztBQU9sQyxNQUFNLE9BQU8sZ0NBQWdDO0lBNkUzQyxZQUNnRCxZQUFzQyxFQUM1RSxHQUFzQjtRQURnQixpQkFBWSxHQUFaLFlBQVksQ0FBMEI7UUFDNUUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUExRXZCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDdkMsdUdBQXVHO1FBQzlGLHNCQUFpQixHQUFZLEtB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cUJBQXFCO3NCQUE3QixLQUFLO2dCQUVHLHlCQUF5QjtzQkFBakMsS0FBSztnQkFFRyw2QkFBNkI7c0JBQXJDLEtBQUs7Z0JBRUksb0JBQW9CO3NCQUE3QixNQUFNO2dCQUVHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFFRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFFRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBJbmplY3QsXG4gIEFmdGVyVmlld0luaXQsXG4gIE9uRGVzdHJveSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBURVNUX0NBU0VfU1RFUF9DT01QT05FTlRfTUFQLCBUZXN0Q2FzZVN0ZXBDb21wb25lbnRNYXAgfSBmcm9tICcuLi90ZXN0LWNhc2Utc3RlcC1jb21wb25lbnRzLnRva2VuJztcbmltcG9ydCB7XG4gIFRlc3RDYXNlU3RlcENvbmZpZyxcbiAgaXNTdGVwR3JvdXBDb25maWcsXG4gIGlzQ29uZGl0aW9uU3RlcENvbmZpZyxcbiAgaXNMb29wU3RlcENvbmZpZyxcbiAgaXNOb3JtYWxTdGVwQ29uZmlnLFxuICBpc0FwaVN0ZXBDb25maWcsXG4gIGlzRGF0YWJhc2VTdGVwQ29uZmlnLFxuICBpc0FpQWdlbnRTdGVwQ29uZmlnLFxuICBpc0FpVmVyaWZ5U3RlcENvbmZpZyxcbiAgaXNVcGxvYWRTdGVwQ29uZmlnLFxuICBpc1NjcmVlbnNob3RTdGVwQ29uZmlnLFxuICBpc1Njcm9sbFN0ZXBDb25maWcsXG4gIGlzVmVyaWZ5VXJsU3RlcENvbmZpZyxcbiAgaXNSZXN0b3JlU2Vzc2lvblN0ZXBDb25maWcsXG4gIGlzQ3VzdG9tQ29kZVN0ZXBDb25maWcsXG4gIENvbmRpdGlvbkJyYW5jaCxcbiAgTG9vcFN0ZXBDb25maWcsXG59IGZyb20gJy4uL3Rlc3QtY2FzZS1zdGVwLm1vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS10ZXN0LWNhc2UtZGV0YWlscy1yZW5kZXJlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXN0LWNhc2UtZGV0YWlscy1yZW5kZXJlci5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHsgY2xhc3M6ICdjcWEtdWktcm9vdCcgfSxcbn0pXG5leHBvcnQgY2xhc3MgVGVzdENhc2VEZXRhaWxzUmVuZGVyZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ3N0ZXBIb3N0JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIHN0ZXBIb3N0ITogVmlld0NvbnRhaW5lclJlZjtcblxuICBASW5wdXQoKSBzdGVwITogVGVzdENhc2VTdGVwQ29uZmlnO1xuICBASW5wdXQoKSBpbmRleCE6IG51bWJlcjtcbiAgQElucHV0KCkgaXNOZXN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaXNJbnNpZGVMb29wOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBXaGVuIHRydWUsIHN0ZXAgaXMgcmVuZGVyZWQgaW5zaWRlIGEgc3RlcC1ncm91cDsgcm93IGFjdGlvbnMgKEVkaXQvRHVwbGljYXRlL0RlbGV0ZSkgYXJlIGhpZGRlbi4gKi9cbiAgQElucHV0KCkgaXNJbnNpZGVTdGVwR3JvdXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqIFdoZW4gcmVuZGVyaW5nIGEgc3RlcCBpbnNpZGUgYSBjb25kaXRpb24gYnJhbmNoLCB0aGUgYnJhbmNoIGNvbnRleHQgKGZvciBhZGRTdGVwRm9yQnJhbmNoIC8gZGVsZXRlU3RlcFdpdGhCcmFuY2gpLiAqL1xuICBASW5wdXQoKSBicmFuY2g/OiBDb25kaXRpb25CcmFuY2g7XG4gIC8qKiBXaGVuIHRydWUsIGVuYWJsZXMgZHJhZy1hbmQtZHJvcCByZW9yZGVyaW5nIGFuZCBzaG93cyBkcmFnIGhhbmRsZSBpY29uIGluc3RlYWQgb2YgY2hlY2tib3ggKi9cbiAgQElucHV0KCkgaXNSZW9yZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBDdXJyZW50IHNlbGVjdGlvbiBzdGF0ZTsgd2hlbiBjaGFuZ2VkIChlLmcuIGZyb20gU2VsZWN0IGFsbCksIHRoZSBjcmVhdGVkIHN0ZXAgY29tcG9uZW50IGlzIHVwZGF0ZWQgc28gdGhlIGNoZWNrYm94IHJlZmxlY3RzIGl0ICovXG4gIEBJbnB1dCgpIHNlbGVjdGVkPzogYm9vbGVhbjtcbiAgLyoqIFNob3cgXCJBZGQgU3RlcCBCZXR3ZWVuXCIgYnV0dG9uIGFib3ZlIHRoZSBzdGVwICovXG4gIEBJbnB1dCgpIGFkZFN0ZXBCZXR3ZWVuQWJvdmU6IGJvb2xlYW4gPSB0cnVlO1xuICAvKiogU2hvdyBcIkFkZCBTdGVwIEJldHdlZW5cIiBidXR0b24gYmVsb3cgdGhlIHN0ZXAgKi9cbiAgQElucHV0KCkgYWRkU3RlcEJldHdlZW5CZWxvdzogYm9vbGVhbiA9IHRydWU7XG4gIC8qKiBAZGVwcmVjYXRlZCBVc2UgYWRkU3RlcEJldHdlZW5BYm92ZSBhbmQgYWRkU3RlcEJldHdlZW5CZWxvdyBpbnN0ZWFkLiBJZiBzZXQsIGFwcGxpZXMgdG8gYm90aCBidXR0b25zLiAqL1xuICBASW5wdXQoKSBhZGRTdGVwQmV0d2VlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBuZXN0ZWRTdGVwQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZzsgaW5kZXg6IG51bWJlciB9PigpO1xuICBAT3V0cHV0KCkgYWRkU3RlcCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGRlbGV0ZVN0ZXAgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIHRvZ2dsZUV4cGFuZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuIHwge2NvbmZpZzogVGVzdENhc2VTdGVwQ29uZmlnLCBleHBhbmRlZDogYm9vbGVhbn0+KCk7XG4gIEBPdXRwdXQoKSBncm91cE5hbWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIGRlc2NyaXB0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSByZXVzYWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIG9wZW5FeHRlcm5hbCA9IG5ldyBFdmVudEVtaXR0ZXI8e3N0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZ30+KCk7XG4gIEBPdXRwdXQoKSBlZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjx7c3RlcDogVGVzdENhc2VTdGVwQ29uZmlnLCBpbmRleDogbnVtYmVyfT4oKTtcbiAgQE91dHB1dCgpIGxpbmsgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBkdXBsaWNhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgc3RlcDogVGVzdENhc2VTdGVwQ29uZmlnIH0gfCB2b2lkPigpO1xuICBAT3V0cHV0KCkgdmlld0RldGFpbHMgPSBuZXcgRXZlbnRFbWl0dGVyPGltcG9ydCgnLi4vc3RlcC1kZXRhaWxzLW1vZGFsL3N0ZXAtZGV0YWlscy1tb2RhbC1kYXRhJykuVmlld0RldGFpbHNQYXlsb2FkPigpO1xuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgY29uZGl0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBicmFuY2hTdGVwQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGJyYW5jaDogQ29uZGl0aW9uQnJhbmNoOyBzdGVwOiBUZXN0Q2FzZVN0ZXBDb25maWc7IHN0ZXBJbmRleDogbnVtYmVyIH0+KCk7XG4gIEBPdXRwdXQoKSBhZGRTdGVwRm9yQnJhbmNoID0gbmV3IEV2ZW50RW1pdHRlcjx7IGJyYW5jaDogQ29uZGl0aW9uQnJhbmNoIH0+KCk7XG4gIC8qKiBFbWl0dGVkIHdoZW4gZW1wdHkgbG9vcCBzdGVwIHBsdXMgaXMgY2xpY2tlZDsgc2FtZSBiZWhhdmlvdXIgYXMgYWRkLXN0ZXAtYmV0d2VlbiAocGFyZW50SWQgPSBsb29wIHN0ZXAgaWQpLiAqL1xuICBAT3V0cHV0KCkgYWRkU3RlcEZvckxvb3AgPSBuZXcgRXZlbnRFbWl0dGVyPHsgbG9vcFN0ZXBDb25maWc6IExvb3BTdGVwQ29uZmlnIH0+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGVTdGVwV2l0aEJyYW5jaCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBicmFuY2g6IENvbmRpdGlvbkJyYW5jaDsgc3RlcEluZGV4OiBudW1iZXIgfT4oKTtcbiAgQE91dHB1dCgpIGFkZEJyYW5jaCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgLyoqIEVtaXR0ZWQgd2hlbiB1c2VyIGNsaWNrcyBcIkFkZCBFbHNlXCIgaW4gYSBjb25kaXRpb24gc3RlcDsgcGFyZW50IHNob3VsZCBjYWxsIFBPU1QgdGVzdF9zdGVwcyB3aXRoIGNvbmRpdGlvblR5cGUgQ09ORElUSU9OX0VMU0UgKi9cbiAgQE91dHB1dCgpIGFkZEVsc2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsgY29uZGl0aW9uU3RlcENvbmZpZzogVGVzdENhc2VTdGVwQ29uZmlnIH0+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGVCcmFuY2ggPSBuZXcgRXZlbnRFbWl0dGVyPENvbmRpdGlvbkJyYW5jaD4oKTtcbiAgQE91dHB1dCgpIHRlc3REYXRhUHJvZmlsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgc3RhcnRTdGVwQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBlbmRTdGVwQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBtYXhJdGVyYXRpb25zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBldmVudFR5cGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHBhcmFtZXRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgY2xpY2tBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgZXZlbnQ6IE1vdXNlRXZlbnQ7IHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZyB9PigpO1xuICAvKiogRW1pdHRlZCB3aGVuIGEgc3RlcCBpcyBkcm9wcGVkIGluIGEgbmVzdGVkIGRyb3B6b25lIChzdGVwLWdyb3VwLCBsb29wLCBjb25kaXRpb24pLiBQYXlsb2FkOiB7IGV2ZW50LCB0YXJnZXRMaXN0IH0uICovXG4gIEBPdXRwdXQoKSBkbmREcm9wSW5ab25lID0gbmV3IEV2ZW50RW1pdHRlcjx7IGV2ZW50OiBhbnk7IHRhcmdldExpc3Q6IFRlc3RDYXNlU3RlcENvbmZpZ1tdIH0+KCk7XG4gIC8qKiBEYXRhIHByb2ZpbGUgb3B0aW9ucyBmb3IgbG9vcCBzdGVwcyAqL1xuICBASW5wdXQoKSBkYXRhUHJvZmlsZU9wdGlvbnM6IGFueVtdID0gW107XG4gIC8qKiBJbmRpY2F0ZXMgaWYgbW9yZSBkYXRhIHByb2ZpbGVzIGFyZSBhdmFpbGFibGUgZm9yIGxvYWRpbmcgKi9cbiAgQElucHV0KCkgaGFzTW9yZURhdGFQcm9maWxlczogYm9vbGVhbiA9IGZhbHNlO1xuICAvKiogTG9hZGluZyBzdGF0ZSBmb3IgZGF0YSBwcm9maWxlcyAqL1xuICBASW5wdXQoKSBpc0xvYWRpbmdEYXRhUHJvZmlsZXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqIE5hdHVyYWwgdGV4dCBhY3Rpb25zIG9wdGlvbnMgZm9yIHdoaWxlIGxvb3AgY29uZGl0aW9uICovXG4gIEBJbnB1dCgpIG5hdHVyYWxUZXh0QWN0aW9uc09wdGlvbnM6IGFueVtdID0gW107XG4gIC8qKiBGdW5jdGlvbiB0byBwcm9jZXNzIHRlbXBsYXRlIHZhcmlhYmxlcyBmb3IgY29uZGl0aW9uIHN0ZXBzICovXG4gIEBJbnB1dCgpIHNldENvbmRpdGlvblRlbXBsYXRlVmFyaWFibGVzOiAodGVtcGxhdGU6IGFueSkgPT4gYW55W10gPSAoKSA9PiBbXTtcbiAgLyoqIEVtaXQgd2hlbiBtb3JlIGRhdGEgcHJvZmlsZXMgbmVlZCB0byBiZSBsb2FkZWQgKi9cbiAgQE91dHB1dCgpIGxvYWRNb3JlRGF0YVByb2ZpbGVzID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIC8qKiBFbWl0IHdoZW4gZGF0YSBwcm9maWxlIHNlYXJjaCBxdWVyeSBjaGFuZ2VzICovXG4gIEBPdXRwdXQoKSBzZWFyY2hEYXRhUHJvZmlsZXMgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgLyoqIEVtaXQgd2hlbiBhIHN0ZXAgaXMgdXBkYXRlZCAoZS5nLiwgQXBwbHkgYnV0dG9uIGNsaWNrZWQgaW4gbG9vcC1zdGVwIGVkaXQgbW9kZSkgKi9cbiAgQE91dHB1dCgpIHN0ZXBVcGRhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPFRlc3RDYXNlU3RlcENvbmZpZz4oKTtcbiAgQE91dHB1dCgpIGFkZFN0ZXBCZXR3ZWVuQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHtzdGVwOiBUZXN0Q2FzZVN0ZXBDb25maWcsIGluZGV4OiBudW1iZXIsIHBvc2l0aW9uOiAnQUJPVkUnIHwgJ0JFTE9XJ30+KCk7XG4gIC8qKiBFbWl0IHdoZW4gdXNlciBjbGlja3MgXCJFZGl0IEluIGRlcHRoXCIgaW4gY29uZGl0aW9uLXN0ZXAgKG9yIG90aGVyIHN0ZXBzIHRoYXQgc3VwcG9ydCBpdCkgKi9cbiAgQE91dHB1dCgpIGVkaXRJbkRlcHRoID0gbmV3IEV2ZW50RW1pdHRlcjx7IHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZzsgaW5kZXg6IG51bWJlcjsgdGVtcGxhdGVPdmVycmlkZT86IGFueSB9PigpO1xuXG4gIHByaXZhdGUgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoVEVTVF9DQVNFX1NURVBfQ09NUE9ORU5UX01BUCkgcHJpdmF0ZSBjb21wb25lbnRNYXA6IFRlc3RDYXNlU3RlcENvbXBvbmVudE1hcCxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlclN0ZXAoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCBzdHJ1Y3R1cmFsQ2hhbmdlID0gY2hhbmdlc1snc3RlcCddIHx8IGNoYW5nZXNbJ2luZGV4J10gfHwgY2hhbmdlc1snaXNOZXN0ZWQnXSB8fCBjaGFuZ2VzWydpc0luc2lkZUxvb3AnXSB8fFxuICAgICAgICBjaGFuZ2VzWydpc0luc2lkZVN0ZXBHcm91cCddIHx8IGNoYW5nZXNbJ2lzUmVvcmRlciddO1xuICAgIGNvbnN0IG9wdGlvbnNPbmx5Q2hhbmdlID0gKGNoYW5nZXNbJ2RhdGFQcm9maWxlT3B0aW9ucyddIHx8IGNoYW5nZXNbJ2hhc01vcmVEYXRhUHJvZmlsZXMnXSB8fCBjaGFuZ2VzWydpc0xvYWRpbmdEYXRhUHJvZmlsZXMnXSB8fFxuICAgICAgICBjaGFuZ2VzWyduYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zJ10gfHwgY2hhbmdlc1snc2V0Q29uZGl0aW9uVGVtcGxhdGVWYXJpYWJsZXMnXSkgJiYgIXN0cnVjdHVyYWxDaGFuZ2U7XG5cbiAgICBpZiAoc3RydWN0dXJhbENoYW5nZSkge1xuICAgICAgdGhpcy5yZW5kZXJTdGVwKCk7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zT25seUNoYW5nZSAmJiB0aGlzLmNvbXBvbmVudFJlZj8uaW5zdGFuY2UgIT0gbnVsbCAmJiB0aGlzLnN0ZXAgIT0gbnVsbCkge1xuICAgICAgLy8gVXBkYXRlIG9ubHkgcHJvZmlsZS9vcHRpb25zIGlucHV0cyBzbyB3ZSBkb24ndCBkZXN0cm95IHRoZSBzdGVwIChlLmcuIG9wZW5pbmcgZGF0YSBwcm9maWxlIGRyb3Bkb3duXG4gICAgICAvLyBsb2FkcyBvcHRpb25zIGFuZCB3b3VsZCBvdGhlcndpc2UgcmVjcmVhdGUgdGhlIGNvbXBvbmVudCBhbmQgY29sbGFwc2UgaW5saW5lIGVkaXQpXG4gICAgICB0aGlzLnVwZGF0ZU9wdGlvbnNJbnB1dHModGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0gZWxzZSBpZiAoY2hhbmdlc1snc2VsZWN0ZWQnXSAmJiB0aGlzLmNvbXBvbmVudFJlZj8uaW5zdGFuY2UgIT0gbnVsbCkge1xuICAgICAgKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIGFueSkuc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBVcGRhdGUgb25seSBkYXRhIHByb2ZpbGUgLyBvcHRpb25zIGlucHV0cyBvbiBleGlzdGluZyBpbnN0YW5jZSAoYXZvaWRzIGZ1bGwgcmVjcmVhdGUgYW5kIGxvc2luZyBpc0VkaXRpbmcpLiAqL1xuICBwcml2YXRlIHVwZGF0ZU9wdGlvbnNJbnB1dHMoaW5zdGFuY2U6IGFueSk6IHZvaWQge1xuICAgIGlmIChpc0xvb3BTdGVwQ29uZmlnKHRoaXMuc3RlcCEpIHx8IGlzQ29uZGl0aW9uU3RlcENvbmZpZyh0aGlzLnN0ZXAhKSB8fCBpc1N0ZXBHcm91cENvbmZpZyh0aGlzLnN0ZXAhKSkge1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuZGF0YVByb2ZpbGVPcHRpb25zID0gdGhpcy5kYXRhUHJvZmlsZU9wdGlvbnM7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5oYXNNb3JlRGF0YVByb2ZpbGVzID0gdGhpcy5oYXNNb3JlRGF0YVByb2ZpbGVzO1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuaXNMb2FkaW5nRGF0YVByb2ZpbGVzID0gdGhpcy5pc0xvYWRpbmdEYXRhUHJvZmlsZXM7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5uYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zID0gdGhpcy5uYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zO1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuYWRkU3RlcEJldHdlZW5BYm92ZSA9IHRoaXMuYWRkU3RlcEJldHdlZW5BYm92ZTtcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLmFkZFN0ZXBCZXR3ZWVuQmVsb3cgPSB0aGlzLmFkZFN0ZXBCZXR3ZWVuQmVsb3c7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5hZGRTdGVwQmV0d2VlbiA9IHRoaXMuYWRkU3RlcEJldHdlZW47XG4gICAgfVxuICAgIGlmIChpc0xvb3BTdGVwQ29uZmlnKHRoaXMuc3RlcCEpKSB7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5uYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zID0gdGhpcy5uYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zO1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuc2V0Q29uZGl0aW9uVGVtcGxhdGVWYXJpYWJsZXMgPSB0aGlzLnNldENvbmRpdGlvblRlbXBsYXRlVmFyaWFibGVzO1xuICAgIH1cbiAgICBpZiAoaXNDb25kaXRpb25TdGVwQ29uZmlnKHRoaXMuc3RlcCEpKSB7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5uYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zID0gdGhpcy5uYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zO1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuc2V0Q29uZGl0aW9uVGVtcGxhdGVWYXJpYWJsZXMgPSB0aGlzLnNldENvbmRpdGlvblRlbXBsYXRlVmFyaWFibGVzO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29tcG9uZW50VHlwZShzdGVwOiBUZXN0Q2FzZVN0ZXBDb25maWcpOiBhbnkge1xuICAgIGlmIChpc1N0ZXBHcm91cENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLnN0ZXBHcm91cDtcbiAgICBpZiAoaXNDb25kaXRpb25TdGVwQ29uZmlnKHN0ZXApKSByZXR1cm4gdGhpcy5jb21wb25lbnRNYXAuY29uZGl0aW9uU3RlcDtcbiAgICBpZiAoaXNMb29wU3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLmxvb3BTdGVwO1xuICAgIGlmIChpc0FwaVN0ZXBDb25maWcoc3RlcCkpIHJldHVybiB0aGlzLmNvbXBvbmVudE1hcC5hcGlTdGVwO1xuICAgIGlmIChpc0RhdGFiYXNlU3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLmRhdGFiYXNlU3RlcDtcbiAgICBpZiAoaXNBaUFnZW50U3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLmFpQWdlbnRTdGVwO1xuICAgIGlmIChpc0FpVmVyaWZ5U3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLmFpVmVyaWZ5U3RlcDtcbiAgICBpZiAoaXNVcGxvYWRTdGVwQ29uZmlnKHN0ZXApKSByZXR1cm4gdGhpcy5jb21wb25lbnRNYXAudXBsb2FkU3RlcDtcbiAgICBpZiAoaXNTY3JlZW5zaG90U3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLnNjcmVlbnNob3RTdGVwO1xuICAgIGlmIChpc1Njcm9sbFN0ZXBDb25maWcoc3RlcCkpIHJldHVybiB0aGlzLmNvbXBvbmVudE1hcC5zY3JvbGxTdGVwO1xuICAgIGlmIChpc1ZlcmlmeVVybFN0ZXBDb25maWcoc3RlcCkpIHJldHVybiB0aGlzLmNvbXBvbmVudE1hcC52ZXJpZnlVcmxTdGVwO1xuICAgIGlmIChpc1Jlc3RvcmVTZXNzaW9uU3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLnJlc3RvcmVTZXNzaW9uU3RlcDtcbiAgICBpZiAoaXNDdXN0b21Db2RlU3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLmN1c3RvbUNvZGVTdGVwO1xuICAgIGlmIChpc05vcm1hbFN0ZXBDb25maWcoc3RlcCkpIHJldHVybiB0aGlzLmNvbXBvbmVudE1hcC5ub3JtYWxTdGVwO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJTdGVwKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zdGVwSG9zdCB8fCAhdGhpcy5zdGVwKSByZXR1cm47XG5cbiAgICBjb25zdCBjb21wb25lbnRUeXBlID0gdGhpcy5nZXRDb21wb25lbnRUeXBlKHRoaXMuc3RlcCk7XG4gICAgaWYgKCFjb21wb25lbnRUeXBlKSByZXR1cm47XG5cbiAgICB0aGlzLnN0ZXBIb3N0LmNsZWFyKCk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLnN0ZXBIb3N0LmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRUeXBlKTtcbiAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlO1xuXG4gICAgaW5zdGFuY2UuY29uZmlnID0gdGhpcy5zdGVwO1xuICAgIGluc3RhbmNlLnN0ZXBOdW1iZXIgPSAodGhpcy5zdGVwIGFzIGFueSkuc3RlcE51bWJlcjtcbiAgICBpbnN0YW5jZS5pc05lc3RlZCA9IHRoaXMuaXNOZXN0ZWQ7XG4gICAgaW5zdGFuY2UuaXNJbnNpZGVMb29wID0gdGhpcy5pc0luc2lkZUxvb3A7XG4gICAgaW5zdGFuY2UuaXNJbnNpZGVTdGVwR3JvdXAgPSB0aGlzLmlzSW5zaWRlU3RlcEdyb3VwO1xuICAgIGluc3RhbmNlLmlzUmVvcmRlciA9IHRoaXMuaXNSZW9yZGVyO1xuICAgIE9iamVjdC5rZXlzKHRoaXMuc3RlcCkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBpZiAoa2V5ICE9PSAnc3RlcFR5cGUnICYmIGtleSAhPT0gJ25lc3RlZFN0ZXBzJyAmJiBrZXkgIT09ICdicmFuY2hlcycpIHtcbiAgICAgICAgKGluc3RhbmNlIGFzIGFueSlba2V5XSA9ICh0aGlzLnN0ZXAgYXMgYW55KVtrZXldO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICgodGhpcy5zdGVwIGFzIGFueSkubmVzdGVkU3RlcHMpIChpbnN0YW5jZSBhcyBhbnkpLm5lc3RlZFN0ZXBzID0gKHRoaXMuc3RlcCBhcyBhbnkpLm5lc3RlZFN0ZXBzO1xuICAgIGlmICgodGhpcy5zdGVwIGFzIGFueSkuYnJhbmNoZXMpIChpbnN0YW5jZSBhcyBhbnkpLmJyYW5jaGVzID0gKHRoaXMuc3RlcCBhcyBhbnkpLmJyYW5jaGVzO1xuXG4gICAgLy8gUGFzcyBkYXRhIHByb2ZpbGUgaW5wdXRzIHRvIHN0ZXAgaW5zdGFuY2VzIHRoYXQgY2FuIGNvbnRhaW4gbmVzdGVkIGxvb3Agc3RlcHNcbiAgICBpZiAoaXNMb29wU3RlcENvbmZpZyh0aGlzLnN0ZXApIHx8IGlzQ29uZGl0aW9uU3RlcENvbmZpZyh0aGlzLnN0ZXApIHx8IGlzU3RlcEdyb3VwQ29uZmlnKHRoaXMuc3RlcCkpIHtcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLmRhdGFQcm9maWxlT3B0aW9ucyA9IHRoaXMuZGF0YVByb2ZpbGVPcHRpb25zO1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuaGFzTW9yZURhdGFQcm9maWxlcyA9IHRoaXMuaGFzTW9yZURhdGFQcm9maWxlcztcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLmlzTG9hZGluZ0RhdGFQcm9maWxlcyA9IHRoaXMuaXNMb2FkaW5nRGF0YVByb2ZpbGVzO1xuICAgICAgLy8gQWxzbyBwYXNzIG5hdHVyYWwgdGV4dCBhY3Rpb25zIG9wdGlvbnMgKGZvciBuZXN0ZWQgbG9vcCBzdGVwcyB3aXRoIHdoaWxlIGxvb3AgYW5kIGNvbmRpdGlvbiBzdGVwcylcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLm5hdHVyYWxUZXh0QWN0aW9uc09wdGlvbnMgPSB0aGlzLm5hdHVyYWxUZXh0QWN0aW9uc09wdGlvbnM7XG4gICAgICAvLyBQYXNzIGFkZFN0ZXBCZXR3ZWVuIGlucHV0cyB0byBuZXN0ZWQgc3RlcCBjb21wb25lbnRzXG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5hZGRTdGVwQmV0d2VlbkFib3ZlID0gdGhpcy5hZGRTdGVwQmV0d2VlbkFib3ZlO1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuYWRkU3RlcEJldHdlZW5CZWxvdyA9IHRoaXMuYWRkU3RlcEJldHdlZW5CZWxvdztcbiAgICAgIC8vIEtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIGRlcHJlY2F0ZWQgYWRkU3RlcEJldHdlZW5cbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLmFkZFN0ZXBCZXR3ZWVuID0gdGhpcy5hZGRTdGVwQmV0d2VlbjtcbiAgICB9XG4gICAgXG4gICAgLy8gUGFzcyBuYXR1cmFsIHRleHQgYWN0aW9ucyBvcHRpb25zIGFuZCB0ZW1wbGF0ZSB2YXJpYWJsZXMgZnVuY3Rpb24gdG8gbG9vcCBzdGVwcyAoZm9yIHdoaWxlIGxvb3AgY29uZGl0aW9uLCBzYW1lIGFzIGNvbmRpdGlvbi1zdGVwKVxuICAgIGlmIChpc0xvb3BTdGVwQ29uZmlnKHRoaXMuc3RlcCkpIHtcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLm5hdHVyYWxUZXh0QWN0aW9uc09wdGlvbnMgPSB0aGlzLm5hdHVyYWxUZXh0QWN0aW9uc09wdGlvbnM7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5zZXRDb25kaXRpb25UZW1wbGF0ZVZhcmlhYmxlcyA9IHRoaXMuc2V0Q29uZGl0aW9uVGVtcGxhdGVWYXJpYWJsZXM7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5pbmRleCA9IHRoaXMuaW5kZXg7IC8vIENvcnJlY3QgZWRpdC1pbi1kZXB0aCAoc3RlcE51bWJlciBcIjEwLjNcIiBwYXJzZXMgdG8gMTAgLSB3cm9uZylcbiAgICB9XG4gICAgXG4gICAgLy8gUGFzcyBuYXR1cmFsIHRleHQgYWN0aW9ucyBvcHRpb25zIGFuZCB0ZW1wbGF0ZSB2YXJpYWJsZXMgZnVuY3Rpb24gdG8gY29uZGl0aW9uIHN0ZXBzXG4gICAgaWYgKGlzQ29uZGl0aW9uU3RlcENvbmZpZyh0aGlzLnN0ZXApKSB7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5uYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zID0gdGhpcy5uYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zO1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuc2V0Q29uZGl0aW9uVGVtcGxhdGVWYXJpYWJsZXMgPSB0aGlzLnNldENvbmRpdGlvblRlbXBsYXRlVmFyaWFibGVzO1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuaW5kZXggPSB0aGlzLmluZGV4OyAvLyBDb3JyZWN0IGVkaXQtaW4tZGVwdGggKHN0ZXBOdW1iZXIgXCIxMC4zXCIgcGFyc2VzIHRvIDEwIC0gd3JvbmcpXG4gICAgfVxuXG4gICAgdGhpcy53aXJlT3V0cHV0cyhpbnN0YW5jZSk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSB3aXJlT3V0cHV0cyhpbnN0YW5jZTogYW55KTogdm9pZCB7XG4gICAgLy8gU3RvcmUgc3Vic2NyaXB0aW9ucyBvbiB0aGUgaW5zdGFuY2UgdG8gcHJldmVudCBkdXBsaWNhdGVzXG4gICAgaWYgKCEoaW5zdGFuY2UgYXMgYW55KS5fY3FhU3Vic2NyaXB0aW9ucykge1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuX2NxYVN1YnNjcmlwdGlvbnMgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuICAgIH1cbiAgICBjb25zdCBzdWJzY3JpcHRpb25zID0gKGluc3RhbmNlIGFzIGFueSkuX2NxYVN1YnNjcmlwdGlvbnM7XG4gICAgXG4gICAgY29uc3Qgd2lyZSA9IChrZXk6IHN0cmluZywgZW1pdHRlcjogRXZlbnRFbWl0dGVyPGFueT4pID0+IHtcbiAgICAgIGlmIChpbnN0YW5jZVtrZXldICYmIHR5cGVvZiBpbnN0YW5jZVtrZXldLnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyBVbnN1YnNjcmliZSBmcm9tIHByZXZpb3VzIHN1YnNjcmlwdGlvbiBpZiBleGlzdHNcbiAgICAgICAgY29uc3QgZXhpc3RpbmdTdWIgPSBzdWJzY3JpcHRpb25zLmdldChrZXkpO1xuICAgICAgICBpZiAoZXhpc3RpbmdTdWIpIHtcbiAgICAgICAgICBleGlzdGluZ1N1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBDcmVhdGUgbmV3IHN1YnNjcmlwdGlvblxuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBpbnN0YW5jZVtrZXldLnN1YnNjcmliZSgodjogYW55KSA9PiB7XG4gICAgICAgICAgZW1pdHRlci5lbWl0KHYpO1xuICAgICAgICB9KTtcbiAgICAgICAgc3Vic2NyaXB0aW9ucy5zZXQoa2V5LCBzdWJzY3JpcHRpb24pO1xuICAgICAgfVxuICAgIH07XG4gICAgd2lyZSgnbmVzdGVkU3RlcENoYW5nZScsIHRoaXMubmVzdGVkU3RlcENoYW5nZSBhcyBhbnkpO1xuICAgIHdpcmUoJ2FkZFN0ZXAnLCB7XG4gICAgICBlbWl0OiAodjogYW55KSA9PiB7XG4gICAgICAgIGlmICh2ICE9IG51bGwgJiYgdHlwZW9mIHYgPT09ICdvYmplY3QnICYmICdicmFuY2gnIGluIHYpIHRoaXMuYWRkU3RlcEZvckJyYW5jaC5lbWl0KHYpO1xuICAgICAgICBlbHNlIGlmICh2ICE9IG51bGwgJiYgdHlwZW9mIHYgPT09ICdvYmplY3QnICYmICdsb29wU3RlcENvbmZpZycgaW4gdikgdGhpcy5hZGRTdGVwRm9yTG9vcC5lbWl0KHYpO1xuICAgICAgICBlbHNlIHRoaXMuYWRkU3RlcC5lbWl0KHYpO1xuICAgICAgfSxcbiAgICB9IGFzIGFueSk7XG4gICAgd2lyZSgnZGVsZXRlU3RlcCcsIHtcbiAgICAgIGVtaXQ6ICh2OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHYgIT0gbnVsbCAmJiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgJ2JyYW5jaCcgaW4gdiAmJiAnc3RlcEluZGV4JyBpbiB2KSB0aGlzLmRlbGV0ZVN0ZXBXaXRoQnJhbmNoLmVtaXQodik7XG4gICAgICAgIGVsc2UgdGhpcy5kZWxldGVTdGVwLmVtaXQodik7XG4gICAgICB9LFxuICAgIH0gYXMgYW55KTtcbiAgICB3aXJlKCd0b2dnbGVFeHBhbmRlZCcsIHtcbiAgICAgIGVtaXQ6ICh2OiBhbnkpID0+IHtcbiAgICAgICAgLy8gSGFuZGxlIGJvdGggYm9vbGVhbiBhbmQgb2JqZWN0IGZvcm1hdHNcbiAgICAgICAgLy8gSWYgaXQncyBhbiBvYmplY3Qgd2l0aCBjb25maWcgYW5kIGV4cGFuZGVkLCBlbWl0IGl0IGFzLWlzXG4gICAgICAgIC8vIElmIGl0J3MganVzdCBhIGJvb2xlYW4sIGVtaXQgaXQgYXMtaXNcbiAgICAgICAgdGhpcy50b2dnbGVFeHBhbmRlZC5lbWl0KHYpO1xuICAgICAgfSxcbiAgICB9IGFzIGFueSk7XG4gICAgd2lyZSgnZ3JvdXBOYW1lQ2hhbmdlJywgdGhpcy5ncm91cE5hbWVDaGFuZ2UgYXMgYW55KTtcbiAgICB3aXJlKCdkZXNjcmlwdGlvbkNoYW5nZScsIHRoaXMuZGVzY3JpcHRpb25DaGFuZ2UgYXMgYW55KTtcbiAgICB3aXJlKCdyZXVzYWJsZUNoYW5nZScsIHRoaXMucmV1c2FibGVDaGFuZ2UgYXMgYW55KTtcbiAgICB3aXJlKCdvcGVuRXh0ZXJuYWwnLCB0aGlzLm9wZW5FeHRlcm5hbCBhcyBhbnkpO1xuICAgIHdpcmUoJ2VkaXQnLCB7XG4gICAgICBlbWl0OiAodjogYW55KSA9PiB7XG4gICAgICAgIC8vIElmIGNoaWxkIGNvbXBvbmVudCBlbWl0cyB2b2lkIG9yIG5vdGhpbmcsIHVzZSBjdXJyZW50IHN0ZXAgYW5kIGluZGV4XG4gICAgICAgIC8vIElmIGNoaWxkIGNvbXBvbmVudCBhbHJlYWR5IGVtaXRzIGFuIG9iamVjdCwgbWVyZ2UgaXQgd2l0aCBzdGVwIGFuZCBpbmRleFxuICAgICAgICBpZiAodiAhPSBudWxsICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiAnc3RlcCcgaW4gdiAmJiAnaW5kZXgnIGluIHYpIHtcbiAgICAgICAgICAvLyBBbHJlYWR5IGhhcyBzdGVwIGFuZCBpbmRleCwgZW1pdCBhcy1pc1xuICAgICAgICAgIHRoaXMuZWRpdC5lbWl0KHYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEVtaXQgd2l0aCBjdXJyZW50IHN0ZXAgYW5kIGluZGV4XG4gICAgICAgICAgdGhpcy5lZGl0LmVtaXQoeyBzdGVwOiB0aGlzLnN0ZXAsIGluZGV4OiB0aGlzLmluZGV4IH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0gYXMgYW55KTtcbiAgICB3aXJlKCdsaW5rJywgdGhpcy5saW5rIGFzIGFueSk7XG4gICAgd2lyZSgnZHVwbGljYXRlJywgdGhpcy5kdXBsaWNhdGUgYXMgYW55KTtcbiAgICAvLyBXaXJlIGRlbGV0ZSBldmVudCAtIGludGVyY2VwdCBhbmQgZW1pdCB3aXRoIHN0ZXAgZGF0YSAoZm9yd2FyZCBwYXlsb2FkIHdoZW4gY2hpbGQgZW1pdHMgeyBzdGVwIH0gZm9yIG5lc3RlZCBkZWxldGVzKVxuICAgIGlmIChpbnN0YW5jZS5kZWxldGUgJiYgdHlwZW9mIGluc3RhbmNlLmRlbGV0ZS5zdWJzY3JpYmUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nU3ViID0gc3Vic2NyaXB0aW9ucy5nZXQoJ2RlbGV0ZScpO1xuICAgICAgaWYgKGV4aXN0aW5nU3ViKSB7XG4gICAgICAgIGV4aXN0aW5nU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBkZWxldGVTdWIgPSBpbnN0YW5jZS5kZWxldGUuc3Vic2NyaWJlKCh2OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuYnJhbmNoICE9IG51bGwgJiYgdGhpcy5pbmRleCAhPSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5kZWxldGVTdGVwV2l0aEJyYW5jaC5lbWl0KHsgYnJhbmNoOiB0aGlzLmJyYW5jaCwgc3RlcEluZGV4OiB0aGlzLmluZGV4IH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHYgIT0gbnVsbCAmJiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgdi5zdGVwKSB7XG4gICAgICAgICAgdGhpcy5kZWxldGUuZW1pdCh2KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRlbGV0ZS5lbWl0KHsgc3RlcDogdGhpcy5zdGVwIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHN1YnNjcmlwdGlvbnMuc2V0KCdkZWxldGUnLCBkZWxldGVTdWIpO1xuICAgIH1cbiAgICB3aXJlKCd2aWV3RGV0YWlscycsIHRoaXMudmlld0RldGFpbHMgYXMgYW55KTtcbiAgICB3aXJlKCdzZWxlY3Rpb25DaGFuZ2UnLCB0aGlzLnNlbGVjdGlvbkNoYW5nZSBhcyBhbnkpO1xuICAgIHdpcmUoJ2NvbmRpdGlvbkNoYW5nZScsIHRoaXMuY29uZGl0aW9uQ2hhbmdlIGFzIGFueSk7XG4gICAgd2lyZSgnYnJhbmNoU3RlcENoYW5nZScsIHRoaXMuYnJhbmNoU3RlcENoYW5nZSBhcyBhbnkpO1xuICAgIHdpcmUoJ2FkZFN0ZXBGb3JCcmFuY2gnLCB0aGlzLmFkZFN0ZXBGb3JCcmFuY2ggYXMgYW55KTtcbiAgICB3aXJlKCdkZWxldGVTdGVwV2l0aEJyYW5jaCcsIHRoaXMuZGVsZXRlU3RlcFdpdGhCcmFuY2ggYXMgYW55KTtcbiAgICB3aXJlKCdhZGRCcmFuY2gnLCB0aGlzLmFkZEJyYW5jaCBhcyBhbnkpO1xuICAgIHdpcmUoJ2FkZEVsc2UnLCB0aGlzLmFkZEVsc2UgYXMgYW55KTtcbiAgICB3aXJlKCdkZWxldGVCcmFuY2gnLCB0aGlzLmRlbGV0ZUJyYW5jaCBhcyBhbnkpO1xuICAgIHdpcmUoJ2FkZFN0ZXBGb3JMb29wJywgdGhpcy5hZGRTdGVwRm9yTG9vcCBhcyBhbnkpO1xuICAgIHdpcmUoJ3Rlc3REYXRhUHJvZmlsZUNoYW5nZScsIHRoaXMudGVzdERhdGFQcm9maWxlQ2hhbmdlIGFzIGFueSk7XG4gICAgd2lyZSgnc3RhcnRTdGVwQ2hhbmdlJywgdGhpcy5zdGFydFN0ZXBDaGFuZ2UgYXMgYW55KTtcbiAgICB3aXJlKCdlbmRTdGVwQ2hhbmdlJywgdGhpcy5lbmRTdGVwQ2hhbmdlIGFzIGFueSk7XG4gICAgd2lyZSgnbWF4SXRlcmF0aW9uc0NoYW5nZScsIHRoaXMubWF4SXRlcmF0aW9uc0NoYW5nZSBhcyBhbnkpO1xuICAgIHdpcmUoJ2V2ZW50VHlwZUNoYW5nZScsIHRoaXMuZXZlbnRUeXBlQ2hhbmdlIGFzIGFueSk7XG4gICAgd2lyZSgncGFyYW1ldGVyQ2hhbmdlJywgdGhpcy5wYXJhbWV0ZXJDaGFuZ2UgYXMgYW55KTtcbiAgICAvLyBXaXJlIGNsaWNrQWN0aW9uIC0gd3JhcCBNb3VzZUV2ZW50IHdpdGggc3RlcCBkYXRhXG4gICAgaWYgKGluc3RhbmNlLmNsaWNrQWN0aW9uICYmIHR5cGVvZiBpbnN0YW5jZS5jbGlja0FjdGlvbi5zdWJzY3JpYmUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nU3ViID0gc3Vic2NyaXB0aW9ucy5nZXQoJ2NsaWNrQWN0aW9uJyk7XG4gICAgICBpZiAoZXhpc3RpbmdTdWIpIHtcbiAgICAgICAgZXhpc3RpbmdTdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNsaWNrQWN0aW9uU3ViID0gaW5zdGFuY2UuY2xpY2tBY3Rpb24uc3Vic2NyaWJlKCh2OiBhbnkpID0+IHtcbiAgICAgICAgLy8gSWYgY2hpbGQgY29tcG9uZW50IGVtaXRzIGFuIG9iamVjdCB3aXRoIGV2ZW50IGFuZCBzdGVwLCB1c2UgaXQ7IG90aGVyd2lzZSB3cmFwIE1vdXNlRXZlbnQgd2l0aCBjdXJyZW50IHN0ZXBcbiAgICAgICAgaWYgKHYgIT0gbnVsbCAmJiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgJ2V2ZW50JyBpbiB2ICYmICdzdGVwJyBpbiB2KSB7XG4gICAgICAgICAgdGhpcy5jbGlja0FjdGlvbi5lbWl0KHYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEFzc3VtZSB2IGlzIGEgTW91c2VFdmVudCwgd3JhcCBpdCB3aXRoIGN1cnJlbnQgc3RlcFxuICAgICAgICAgIHRoaXMuY2xpY2tBY3Rpb24uZW1pdCh7IGV2ZW50OiB2IGFzIE1vdXNlRXZlbnQsIHN0ZXA6IHRoaXMuc3RlcCB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBzdWJzY3JpcHRpb25zLnNldCgnY2xpY2tBY3Rpb24nLCBjbGlja0FjdGlvblN1Yik7XG4gICAgfVxuICAgIHdpcmUoJ2RuZERyb3BJblpvbmUnLCB0aGlzLmRuZERyb3BJblpvbmUgYXMgYW55KTtcbiAgICB3aXJlKCdsb2FkTW9yZURhdGFQcm9maWxlcycsIHRoaXMubG9hZE1vcmVEYXRhUHJvZmlsZXMgYXMgYW55KTtcbiAgICB3aXJlKCdzZWFyY2hEYXRhUHJvZmlsZXMnLCB0aGlzLnNlYXJjaERhdGFQcm9maWxlcyBhcyBhbnkpO1xuICAgIHdpcmUoJ2FkZFN0ZXBCZXR3ZWVuQ2xpY2snLCB0aGlzLmFkZFN0ZXBCZXR3ZWVuQ2xpY2sgYXMgYW55KTtcbiAgICAvLyBXaXJlIGVkaXRJbkRlcHRoIC0gY2hlY2sgaWYgaXQgZXhpc3RzIG9uIGluc3RhbmNlXG4gICAgaWYgKGluc3RhbmNlLmVkaXRJbkRlcHRoICYmIHR5cGVvZiBpbnN0YW5jZS5lZGl0SW5EZXB0aC5zdWJzY3JpYmUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nU3ViID0gc3Vic2NyaXB0aW9ucy5nZXQoJ2VkaXRJbkRlcHRoJyk7XG4gICAgICBpZiAoZXhpc3RpbmdTdWIpIHtcbiAgICAgICAgZXhpc3RpbmdTdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVkaXRJbkRlcHRoU3ViID0gaW5zdGFuY2UuZWRpdEluRGVwdGguc3Vic2NyaWJlKCh2OiBhbnkpID0+IHtcbiAgICAgICAgLy8gSWYgY2hpbGQgY29tcG9uZW50IGVtaXRzIGFuIG9iamVjdCB3aXRoIHN0ZXAsIHVzZSBpdDsgb3RoZXJ3aXNlIHVzZSBjdXJyZW50IHN0ZXAgYW5kIGluZGV4XG4gICAgICAgIGlmICh2ICE9IG51bGwgJiYgdHlwZW9mIHYgPT09ICdvYmplY3QnICYmICdzdGVwJyBpbiB2KSB7XG4gICAgICAgICAgY29uc3QgcGF5bG9hZDogeyBzdGVwOiBUZXN0Q2FzZVN0ZXBDb25maWc7IGluZGV4OiBudW1iZXI7IHRlbXBsYXRlT3ZlcnJpZGU/OiBhbnkgfSA9IHtcbiAgICAgICAgICAgIHN0ZXA6IHYuc3RlcCxcbiAgICAgICAgICAgIGluZGV4OiB2LmluZGV4ID8/IHRoaXMuaW5kZXgsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAodi50ZW1wbGF0ZU92ZXJyaWRlKSB7XG4gICAgICAgICAgICBwYXlsb2FkLnRlbXBsYXRlT3ZlcnJpZGUgPSB2LnRlbXBsYXRlT3ZlcnJpZGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZWRpdEluRGVwdGguZW1pdChwYXlsb2FkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmVkaXRJbkRlcHRoLmVtaXQoeyBzdGVwOiB0aGlzLnN0ZXAsIGluZGV4OiB0aGlzLmluZGV4IH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHN1YnNjcmlwdGlvbnMuc2V0KCdlZGl0SW5EZXB0aCcsIGVkaXRJbkRlcHRoU3ViKTtcbiAgICB9XG4gICAgLy8gV2lyZSBzdGVwVXBkYXRlIC0gY2hlY2sgaWYgaXQgZXhpc3RzIG9uIGluc3RhbmNlXG4gICAgaWYgKGluc3RhbmNlLnN0ZXBVcGRhdGUpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdSZW5kZXJlcjogRm91bmQgc3RlcFVwZGF0ZSBFdmVudEVtaXR0ZXIsIHdpcmluZyBpdCcpO1xuICAgICAgd2lyZSgnc3RlcFVwZGF0ZScsIHRoaXMuc3RlcFVwZGF0ZSBhcyBhbnkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1JlbmRlcmVyOiBzdGVwVXBkYXRlIEV2ZW50RW1pdHRlciBub3QgZm91bmQgb24gaW5zdGFuY2UgZHVyaW5nIHdpcmVPdXRwdXRzJywge1xuICAgICAgICBzdGVwSWQ6IHRoaXMuc3RlcD8uaWQsXG4gICAgICAgIHN0ZXBUeXBlOiB0aGlzLnN0ZXA/LnN0ZXBUeXBlLFxuICAgICAgICBpbnN0YW5jZUtleXM6IE9iamVjdC5rZXlzKGluc3RhbmNlKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy8gQ2xlYW4gdXAgc3Vic2NyaXB0aW9ucyB3aGVuIGNvbXBvbmVudCBpcyBkZXN0cm95ZWRcbiAgICBpZiAodGhpcy5jb21wb25lbnRSZWY/Lmluc3RhbmNlKSB7XG4gICAgICBjb25zdCBzdWJzY3JpcHRpb25zID0gKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIGFueSkuX2NxYVN1YnNjcmlwdGlvbnM7XG4gICAgICBpZiAoc3Vic2NyaXB0aW9ucykge1xuICAgICAgICBzdWJzY3JpcHRpb25zLmZvckVhY2goKHN1YjogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHN1YiAmJiB0eXBlb2Ygc3ViLnVuc3Vic2NyaWJlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBzdWJzY3JpcHRpb25zLmNsZWFyKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbiIsIjxkaXYgY2xhc3M9XCJjcWEtcmVsYXRpdmUgY3FhLXN0ZXAtcmVuZGVyZXItaG92ZXItY29udGFpbmVyXCI+XG4gICAgPGJ1dHRvbiAqbmdJZj1cIiFpc1Jlb3JkZXIgJiYgKGFkZFN0ZXBCZXR3ZWVuQWJvdmUgJiYgYWRkU3RlcEJldHdlZW4pXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtYWJzb2x1dGUgY3FhLXRvcC1bY2FsYygwIC0gMTJweCldIGNxYS1sZWZ0LVs1MCVdIGNxYS10cmFuc2xhdGUteC1bLTUwJV0gY3FhLXAtMCBjcWEtei1bMV0gY3FhLWFkZC1zdGVwLWJldHdlZW4tYnRuXCJcbiAgICAgICAgc3R5bGU9XCJ0b3A6IC0xMnB4O1wiIChjbGljayk9XCJhZGRTdGVwQmV0d2VlbkNsaWNrLmVtaXQoe3N0ZXA6IHN0ZXAsIGluZGV4OiBpbmRleCwgcG9zaXRpb246ICdBQk9WRSd9KVwiPlxuICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgIDxyZWN0IHg9XCIxXCIgeT1cIjFcIiB3aWR0aD1cIjIxLjE4MjJcIiBoZWlnaHQ9XCIyMlwiIHJ4PVwiMTAuNTkxMVwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PVwiMVwiIHk9XCIxXCIgd2lkdGg9XCIyMS4xODIyXCIgaGVpZ2h0PVwiMjJcIiByeD1cIjEwLjU5MTFcIiBzdHJva2U9XCIjM0Y0M0VFXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTguNSAxMkgxNS41XCIgc3Ryb2tlPVwiIzNGNDNFRVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDguNVYxNS41XCIgc3Ryb2tlPVwiIzNGNDNFRVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgIDwvYnV0dG9uPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtc3RlcC1ob3N0LXdyYXBwZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAjc3RlcEhvc3Q+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGJ1dHRvbiAqbmdJZj1cIiFpc1Jlb3JkZXIgJiYgKGFkZFN0ZXBCZXR3ZWVuQmVsb3cgJiYgYWRkU3RlcEJldHdlZW4pXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtYWJzb2x1dGUgY3FhLXRvcC1bY2FsYygxMDAlLTEycHgpXSBjcWEtbGVmdC1bNTAlXSBjcWEtdHJhbnNsYXRlLXgtWy01MCVdIGNxYS1wLTAgY3FhLXotWzFdIGNxYS1hZGQtc3RlcC1iZXR3ZWVuLWJ0blwiXG4gICAgICAgIChjbGljayk9XCJhZGRTdGVwQmV0d2VlbkNsaWNrLmVtaXQoe3N0ZXA6IHN0ZXAsIGluZGV4OiBpbmRleCwgcG9zaXRpb246ICdCRUxPVyd9KVwiPlxuICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgIDxyZWN0IHg9XCIxXCIgeT1cIjFcIiB3aWR0aD1cIjIxLjE4MjJcIiBoZWlnaHQ9XCIyMlwiIHJ4PVwiMTAuNTkxMVwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PVwiMVwiIHk9XCIxXCIgd2lkdGg9XCIyMS4xODIyXCIgaGVpZ2h0PVwiMjJcIiByeD1cIjEwLjU5MTFcIiBzdHJva2U9XCIjM0Y0M0VFXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTguNSAxMkgxNS41XCIgc3Ryb2tlPVwiIzNGNDNFRVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDguNVYxNS41XCIgc3Ryb2tlPVwiIzNGNDNFRVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgIDwvYnV0dG9uPlxuPC9kaXY+Il19
|
|
490
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1jYXNlLWRldGFpbHMtcmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0LWNhc2UtZGV0YWlscy90ZXN0LWNhc2UtZGV0YWlscy1yZW5kZXJlci90ZXN0LWNhc2UtZGV0YWlscy1yZW5kZXJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3Rlc3QtY2FzZS1kZXRhaWxzLXJlbmRlcmVyL3Rlc3QtY2FzZS1kZXRhaWxzLXJlbmRlcmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxFQUNULGdCQUFnQixFQUdoQixNQUFNLEdBS1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLDRCQUE0QixFQUE0QixNQUFNLG9DQUFvQyxDQUFDO0FBQzVHLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQiwwQkFBMEIsRUFDMUIsc0JBQXNCLEdBR3ZCLE1BQU0sMEJBQTBCLENBQUM7OztBQU9sQyxNQUFNLE9BQU8sZ0NBQWdDO0lBNkUzQyxZQUNnRCxZQUFzQyxFQUM1RSxHQUFzQjtRQURnQixpQkFBWSxHQUFaLFlBQVksQ0FBMEI7UUFDNUUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUExRXZCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDdkMsdUdBQXVHO1FBQzlGLHNCQUFpQixHQUFZLEtB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QUFyQyxLQUFLO2dCQUVJLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFFRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBRUcsVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBRUcsV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgSW5qZWN0LFxuICBBZnRlclZpZXdJbml0LFxuICBPbkRlc3Ryb3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVEVTVF9DQVNFX1NURVBfQ09NUE9ORU5UX01BUCwgVGVzdENhc2VTdGVwQ29tcG9uZW50TWFwIH0gZnJvbSAnLi4vdGVzdC1jYXNlLXN0ZXAtY29tcG9uZW50cy50b2tlbic7XG5pbXBvcnQge1xuICBUZXN0Q2FzZVN0ZXBDb25maWcsXG4gIGlzU3RlcEdyb3VwQ29uZmlnLFxuICBpc0NvbmRpdGlvblN0ZXBDb25maWcsXG4gIGlzTG9vcFN0ZXBDb25maWcsXG4gIGlzTm9ybWFsU3RlcENvbmZpZyxcbiAgaXNBcGlTdGVwQ29uZmlnLFxuICBpc0RhdGFiYXNlU3RlcENvbmZpZyxcbiAgaXNBaUFnZW50U3RlcENvbmZpZyxcbiAgaXNBaVZlcmlmeVN0ZXBDb25maWcsXG4gIGlzVXBsb2FkU3RlcENvbmZpZyxcbiAgaXNTY3JlZW5zaG90U3RlcENvbmZpZyxcbiAgaXNTY3JvbGxTdGVwQ29uZmlnLFxuICBpc1ZlcmlmeVVybFN0ZXBDb25maWcsXG4gIGlzUmVzdG9yZVNlc3Npb25TdGVwQ29uZmlnLFxuICBpc0N1c3RvbUNvZGVTdGVwQ29uZmlnLFxuICBDb25kaXRpb25CcmFuY2gsXG4gIExvb3BTdGVwQ29uZmlnLFxufSBmcm9tICcuLi90ZXN0LWNhc2Utc3RlcC5tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtdGVzdC1jYXNlLWRldGFpbHMtcmVuZGVyZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGVzdC1jYXNlLWRldGFpbHMtcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH0sXG59KVxuZXhwb3J0IGNsYXNzIFRlc3RDYXNlRGV0YWlsc1JlbmRlcmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCdzdGVwSG9zdCcsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBzdGVwSG9zdCE6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgQElucHV0KCkgc3RlcCE6IFRlc3RDYXNlU3RlcENvbmZpZztcbiAgQElucHV0KCkgaW5kZXghOiBudW1iZXI7XG4gIEBJbnB1dCgpIGlzTmVzdGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzSW5zaWRlTG9vcDogYm9vbGVhbiA9IGZhbHNlO1xuICAvKiogV2hlbiB0cnVlLCBzdGVwIGlzIHJlbmRlcmVkIGluc2lkZSBhIHN0ZXAtZ3JvdXA7IHJvdyBhY3Rpb25zIChFZGl0L0R1cGxpY2F0ZS9EZWxldGUpIGFyZSBoaWRkZW4uICovXG4gIEBJbnB1dCgpIGlzSW5zaWRlU3RlcEdyb3VwOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBXaGVuIHJlbmRlcmluZyBhIHN0ZXAgaW5zaWRlIGEgY29uZGl0aW9uIGJyYW5jaCwgdGhlIGJyYW5jaCBjb250ZXh0IChmb3IgYWRkU3RlcEZvckJyYW5jaCAvIGRlbGV0ZVN0ZXBXaXRoQnJhbmNoKS4gKi9cbiAgQElucHV0KCkgYnJhbmNoPzogQ29uZGl0aW9uQnJhbmNoO1xuICAvKiogV2hlbiB0cnVlLCBlbmFibGVzIGRyYWctYW5kLWRyb3AgcmVvcmRlcmluZyBhbmQgc2hvd3MgZHJhZyBoYW5kbGUgaWNvbiBpbnN0ZWFkIG9mIGNoZWNrYm94ICovXG4gIEBJbnB1dCgpIGlzUmVvcmRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICAvKiogQ3VycmVudCBzZWxlY3Rpb24gc3RhdGU7IHdoZW4gY2hhbmdlZCAoZS5nLiBmcm9tIFNlbGVjdCBhbGwpLCB0aGUgY3JlYXRlZCBzdGVwIGNvbXBvbmVudCBpcyB1cGRhdGVkIHNvIHRoZSBjaGVja2JveCByZWZsZWN0cyBpdCAqL1xuICBASW5wdXQoKSBzZWxlY3RlZD86IGJvb2xlYW47XG4gIC8qKiBTaG93IFwiQWRkIFN0ZXAgQmV0d2VlblwiIGJ1dHRvbiBhYm92ZSB0aGUgc3RlcCAqL1xuICBASW5wdXQoKSBhZGRTdGVwQmV0d2VlbkFib3ZlOiBib29sZWFuID0gdHJ1ZTtcbiAgLyoqIFNob3cgXCJBZGQgU3RlcCBCZXR3ZWVuXCIgYnV0dG9uIGJlbG93IHRoZSBzdGVwICovXG4gIEBJbnB1dCgpIGFkZFN0ZXBCZXR3ZWVuQmVsb3c6IGJvb2xlYW4gPSB0cnVlO1xuICAvKiogQGRlcHJlY2F0ZWQgVXNlIGFkZFN0ZXBCZXR3ZWVuQWJvdmUgYW5kIGFkZFN0ZXBCZXR3ZWVuQmVsb3cgaW5zdGVhZC4gSWYgc2V0LCBhcHBsaWVzIHRvIGJvdGggYnV0dG9ucy4gKi9cbiAgQElucHV0KCkgYWRkU3RlcEJldHdlZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgbmVzdGVkU3RlcENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBzdGVwOiBUZXN0Q2FzZVN0ZXBDb25maWc7IGluZGV4OiBudW1iZXIgfT4oKTtcbiAgQE91dHB1dCgpIGFkZFN0ZXAgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGVTdGVwID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSB0b2dnbGVFeHBhbmRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbiB8IHtjb25maWc6IFRlc3RDYXNlU3RlcENvbmZpZywgZXhwYW5kZWQ6IGJvb2xlYW59PigpO1xuICBAT3V0cHV0KCkgZ3JvdXBOYW1lQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBkZXNjcmlwdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgcmV1c2FibGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBvcGVuRXh0ZXJuYWwgPSBuZXcgRXZlbnRFbWl0dGVyPHtzdGVwOiBUZXN0Q2FzZVN0ZXBDb25maWd9PigpO1xuICBAT3V0cHV0KCkgZWRpdCA9IG5ldyBFdmVudEVtaXR0ZXI8e3N0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZywgaW5kZXg6IG51bWJlcn0+KCk7XG4gIEBPdXRwdXQoKSBsaW5rID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgZHVwbGljYXRlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgZGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZyB9IHwgdm9pZD4oKTtcbiAgQE91dHB1dCgpIHZpZXdEZXRhaWxzID0gbmV3IEV2ZW50RW1pdHRlcjxpbXBvcnQoJy4uL3N0ZXAtZGV0YWlscy1tb2RhbC9zdGVwLWRldGFpbHMtbW9kYWwtZGF0YScpLlZpZXdEZXRhaWxzUGF5bG9hZD4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIGNvbmRpdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgYnJhbmNoU3RlcENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBicmFuY2g6IENvbmRpdGlvbkJyYW5jaDsgc3RlcDogVGVzdENhc2VTdGVwQ29uZmlnOyBzdGVwSW5kZXg6IG51bWJlciB9PigpO1xuICBAT3V0cHV0KCkgYWRkU3RlcEZvckJyYW5jaCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBicmFuY2g6IENvbmRpdGlvbkJyYW5jaCB9PigpO1xuICAvKiogRW1pdHRlZCB3aGVuIGVtcHR5IGxvb3Agc3RlcCBwbHVzIGlzIGNsaWNrZWQ7IHNhbWUgYmVoYXZpb3VyIGFzIGFkZC1zdGVwLWJldHdlZW4gKHBhcmVudElkID0gbG9vcCBzdGVwIGlkKS4gKi9cbiAgQE91dHB1dCgpIGFkZFN0ZXBGb3JMb29wID0gbmV3IEV2ZW50RW1pdHRlcjx7IGxvb3BTdGVwQ29uZmlnOiBMb29wU3RlcENvbmZpZyB9PigpO1xuICBAT3V0cHV0KCkgZGVsZXRlU3RlcFdpdGhCcmFuY2ggPSBuZXcgRXZlbnRFbWl0dGVyPHsgYnJhbmNoOiBDb25kaXRpb25CcmFuY2g7IHN0ZXBJbmRleDogbnVtYmVyIH0+KCk7XG4gIEBPdXRwdXQoKSBhZGRCcmFuY2ggPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIC8qKiBFbWl0dGVkIHdoZW4gdXNlciBjbGlja3MgXCJBZGQgRWxzZVwiIGluIGEgY29uZGl0aW9uIHN0ZXA7IHBhcmVudCBzaG91bGQgY2FsbCBQT1NUIHRlc3Rfc3RlcHMgd2l0aCBjb25kaXRpb25UeXBlIENPTkRJVElPTl9FTFNFICovXG4gIEBPdXRwdXQoKSBhZGRFbHNlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGNvbmRpdGlvblN0ZXBDb25maWc6IFRlc3RDYXNlU3RlcENvbmZpZyB9PigpO1xuICBAT3V0cHV0KCkgZGVsZXRlQnJhbmNoID0gbmV3IEV2ZW50RW1pdHRlcjxDb25kaXRpb25CcmFuY2g+KCk7XG4gIEBPdXRwdXQoKSB0ZXN0RGF0YVByb2ZpbGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHN0YXJ0U3RlcENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBAT3V0cHV0KCkgZW5kU3RlcENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBAT3V0cHV0KCkgbWF4SXRlcmF0aW9uc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBAT3V0cHV0KCkgZXZlbnRUeXBlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBwYXJhbWV0ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGNsaWNrQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx7IGV2ZW50OiBNb3VzZUV2ZW50OyBzdGVwOiBUZXN0Q2FzZVN0ZXBDb25maWcgfT4oKTtcbiAgLyoqIEVtaXR0ZWQgd2hlbiBhIHN0ZXAgaXMgZHJvcHBlZCBpbiBhIG5lc3RlZCBkcm9wem9uZSAoc3RlcC1ncm91cCwgbG9vcCwgY29uZGl0aW9uKS4gUGF5bG9hZDogeyBldmVudCwgdGFyZ2V0TGlzdCB9LiAqL1xuICBAT3V0cHV0KCkgZG5kRHJvcEluWm9uZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBldmVudDogYW55OyB0YXJnZXRMaXN0OiBUZXN0Q2FzZVN0ZXBDb25maWdbXSB9PigpO1xuICAvKiogRGF0YSBwcm9maWxlIG9wdGlvbnMgZm9yIGxvb3Agc3RlcHMgKi9cbiAgQElucHV0KCkgZGF0YVByb2ZpbGVPcHRpb25zOiBhbnlbXSA9IFtdO1xuICAvKiogSW5kaWNhdGVzIGlmIG1vcmUgZGF0YSBwcm9maWxlcyBhcmUgYXZhaWxhYmxlIGZvciBsb2FkaW5nICovXG4gIEBJbnB1dCgpIGhhc01vcmVEYXRhUHJvZmlsZXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqIExvYWRpbmcgc3RhdGUgZm9yIGRhdGEgcHJvZmlsZXMgKi9cbiAgQElucHV0KCkgaXNMb2FkaW5nRGF0YVByb2ZpbGVzOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBOYXR1cmFsIHRleHQgYWN0aW9ucyBvcHRpb25zIGZvciB3aGlsZSBsb29wIGNvbmRpdGlvbiAqL1xuICBASW5wdXQoKSBuYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zOiBhbnlbXSA9IFtdO1xuICAvKiogRnVuY3Rpb24gdG8gcHJvY2VzcyB0ZW1wbGF0ZSB2YXJpYWJsZXMgZm9yIGNvbmRpdGlvbiBzdGVwcyAqL1xuICBASW5wdXQoKSBzZXRDb25kaXRpb25UZW1wbGF0ZVZhcmlhYmxlczogKHRlbXBsYXRlOiBhbnkpID0+IGFueVtdID0gKCkgPT4gW107XG4gIC8qKiBFbWl0IHdoZW4gbW9yZSBkYXRhIHByb2ZpbGVzIG5lZWQgdG8gYmUgbG9hZGVkICovXG4gIEBPdXRwdXQoKSBsb2FkTW9yZURhdGFQcm9maWxlcyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAvKiogRW1pdCB3aGVuIGRhdGEgcHJvZmlsZSBzZWFyY2ggcXVlcnkgY2hhbmdlcyAqL1xuICBAT3V0cHV0KCkgc2VhcmNoRGF0YVByb2ZpbGVzID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIC8qKiBFbWl0IHdoZW4gYSBzdGVwIGlzIHVwZGF0ZWQgKGUuZy4sIEFwcGx5IGJ1dHRvbiBjbGlja2VkIGluIGxvb3Atc3RlcCBlZGl0IG1vZGUpICovXG4gIEBPdXRwdXQoKSBzdGVwVXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxUZXN0Q2FzZVN0ZXBDb25maWc+KCk7XG4gIEBPdXRwdXQoKSBhZGRTdGVwQmV0d2VlbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7c3RlcDogVGVzdENhc2VTdGVwQ29uZmlnLCBpbmRleDogbnVtYmVyLCBwb3NpdGlvbjogJ0FCT1ZFJyB8ICdCRUxPVyd9PigpO1xuICAvKiogRW1pdCB3aGVuIHVzZXIgY2xpY2tzIFwiRWRpdCBJbiBkZXB0aFwiIGluIGNvbmRpdGlvbi1zdGVwIChvciBvdGhlciBzdGVwcyB0aGF0IHN1cHBvcnQgaXQpICovXG4gIEBPdXRwdXQoKSBlZGl0SW5EZXB0aCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBzdGVwOiBUZXN0Q2FzZVN0ZXBDb25maWc7IGluZGV4OiBudW1iZXI7IHRlbXBsYXRlT3ZlcnJpZGU/OiBhbnkgfT4oKTtcblxuICBwcml2YXRlIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT4gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFRFU1RfQ0FTRV9TVEVQX0NPTVBPTkVOVF9NQVApIHByaXZhdGUgY29tcG9uZW50TWFwOiBUZXN0Q2FzZVN0ZXBDb21wb25lbnRNYXAsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJTdGVwKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3Qgc3RydWN0dXJhbENoYW5nZSA9IGNoYW5nZXNbJ3N0ZXAnXSB8fCBjaGFuZ2VzWydpbmRleCddIHx8IGNoYW5nZXNbJ2lzTmVzdGVkJ10gfHwgY2hhbmdlc1snaXNJbnNpZGVMb29wJ10gfHxcbiAgICAgICAgY2hhbmdlc1snaXNJbnNpZGVTdGVwR3JvdXAnXSB8fCBjaGFuZ2VzWydpc1Jlb3JkZXInXTtcbiAgICBjb25zdCBvcHRpb25zT25seUNoYW5nZSA9IChjaGFuZ2VzWydkYXRhUHJvZmlsZU9wdGlvbnMnXSB8fCBjaGFuZ2VzWydoYXNNb3JlRGF0YVByb2ZpbGVzJ10gfHwgY2hhbmdlc1snaXNMb2FkaW5nRGF0YVByb2ZpbGVzJ10gfHxcbiAgICAgICAgY2hhbmdlc1snbmF0dXJhbFRleHRBY3Rpb25zT3B0aW9ucyddIHx8IGNoYW5nZXNbJ3NldENvbmRpdGlvblRlbXBsYXRlVmFyaWFibGVzJ10pICYmICFzdHJ1Y3R1cmFsQ2hhbmdlO1xuXG4gICAgaWYgKHN0cnVjdHVyYWxDaGFuZ2UpIHtcbiAgICAgIHRoaXMucmVuZGVyU3RlcCgpO1xuICAgIH0gZWxzZSBpZiAob3B0aW9uc09ubHlDaGFuZ2UgJiYgdGhpcy5jb21wb25lbnRSZWY/Lmluc3RhbmNlICE9IG51bGwgJiYgdGhpcy5zdGVwICE9IG51bGwpIHtcbiAgICAgIC8vIFVwZGF0ZSBvbmx5IHByb2ZpbGUvb3B0aW9ucyBpbnB1dHMgc28gd2UgZG9uJ3QgZGVzdHJveSB0aGUgc3RlcCAoZS5nLiBvcGVuaW5nIGRhdGEgcHJvZmlsZSBkcm9wZG93blxuICAgICAgLy8gbG9hZHMgb3B0aW9ucyBhbmQgd291bGQgb3RoZXJ3aXNlIHJlY3JlYXRlIHRoZSBjb21wb25lbnQgYW5kIGNvbGxhcHNlIGlubGluZSBlZGl0KVxuICAgICAgdGhpcy51cGRhdGVPcHRpb25zSW5wdXRzKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZXNbJ3NlbGVjdGVkJ10gJiYgdGhpcy5jb21wb25lbnRSZWY/Lmluc3RhbmNlICE9IG51bGwpIHtcbiAgICAgICh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBhbnkpLnNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZDtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICAvKiogVXBkYXRlIG9ubHkgZGF0YSBwcm9maWxlIC8gb3B0aW9ucyBpbnB1dHMgb24gZXhpc3RpbmcgaW5zdGFuY2UgKGF2b2lkcyBmdWxsIHJlY3JlYXRlIGFuZCBsb3NpbmcgaXNFZGl0aW5nKS4gKi9cbiAgcHJpdmF0ZSB1cGRhdGVPcHRpb25zSW5wdXRzKGluc3RhbmNlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoaXNMb29wU3RlcENvbmZpZyh0aGlzLnN0ZXAhKSB8fCBpc0NvbmRpdGlvblN0ZXBDb25maWcodGhpcy5zdGVwISkgfHwgaXNTdGVwR3JvdXBDb25maWcodGhpcy5zdGVwISkpIHtcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLmRhdGFQcm9maWxlT3B0aW9ucyA9IHRoaXMuZGF0YVByb2ZpbGVPcHRpb25zO1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuaGFzTW9yZURhdGFQcm9maWxlcyA9IHRoaXMuaGFzTW9yZURhdGFQcm9maWxlcztcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLmlzTG9hZGluZ0RhdGFQcm9maWxlcyA9IHRoaXMuaXNMb2FkaW5nRGF0YVByb2ZpbGVzO1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkubmF0dXJhbFRleHRBY3Rpb25zT3B0aW9ucyA9IHRoaXMubmF0dXJhbFRleHRBY3Rpb25zT3B0aW9ucztcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLmFkZFN0ZXBCZXR3ZWVuQWJvdmUgPSB0aGlzLmFkZFN0ZXBCZXR3ZWVuQWJvdmU7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5hZGRTdGVwQmV0d2VlbkJlbG93ID0gdGhpcy5hZGRTdGVwQmV0d2VlbkJlbG93O1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuYWRkU3RlcEJldHdlZW4gPSB0aGlzLmFkZFN0ZXBCZXR3ZWVuO1xuICAgIH1cbiAgICBpZiAoaXNMb29wU3RlcENvbmZpZyh0aGlzLnN0ZXAhKSkge1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkubmF0dXJhbFRleHRBY3Rpb25zT3B0aW9ucyA9IHRoaXMubmF0dXJhbFRleHRBY3Rpb25zT3B0aW9ucztcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLnNldENvbmRpdGlvblRlbXBsYXRlVmFyaWFibGVzID0gdGhpcy5zZXRDb25kaXRpb25UZW1wbGF0ZVZhcmlhYmxlcztcbiAgICB9XG4gICAgaWYgKGlzQ29uZGl0aW9uU3RlcENvbmZpZyh0aGlzLnN0ZXAhKSkge1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkubmF0dXJhbFRleHRBY3Rpb25zT3B0aW9ucyA9IHRoaXMubmF0dXJhbFRleHRBY3Rpb25zT3B0aW9ucztcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLnNldENvbmRpdGlvblRlbXBsYXRlVmFyaWFibGVzID0gdGhpcy5zZXRDb25kaXRpb25UZW1wbGF0ZVZhcmlhYmxlcztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldENvbXBvbmVudFR5cGUoc3RlcDogVGVzdENhc2VTdGVwQ29uZmlnKTogYW55IHtcbiAgICBpZiAoaXNTdGVwR3JvdXBDb25maWcoc3RlcCkpIHJldHVybiB0aGlzLmNvbXBvbmVudE1hcC5zdGVwR3JvdXA7XG4gICAgaWYgKGlzQ29uZGl0aW9uU3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLmNvbmRpdGlvblN0ZXA7XG4gICAgaWYgKGlzTG9vcFN0ZXBDb25maWcoc3RlcCkpIHJldHVybiB0aGlzLmNvbXBvbmVudE1hcC5sb29wU3RlcDtcbiAgICBpZiAoaXNBcGlTdGVwQ29uZmlnKHN0ZXApKSByZXR1cm4gdGhpcy5jb21wb25lbnRNYXAuYXBpU3RlcDtcbiAgICBpZiAoaXNEYXRhYmFzZVN0ZXBDb25maWcoc3RlcCkpIHJldHVybiB0aGlzLmNvbXBvbmVudE1hcC5kYXRhYmFzZVN0ZXA7XG4gICAgaWYgKGlzQWlBZ2VudFN0ZXBDb25maWcoc3RlcCkpIHJldHVybiB0aGlzLmNvbXBvbmVudE1hcC5haUFnZW50U3RlcDtcbiAgICBpZiAoaXNBaVZlcmlmeVN0ZXBDb25maWcoc3RlcCkpIHJldHVybiB0aGlzLmNvbXBvbmVudE1hcC5haVZlcmlmeVN0ZXA7XG4gICAgaWYgKGlzVXBsb2FkU3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLnVwbG9hZFN0ZXA7XG4gICAgaWYgKGlzU2NyZWVuc2hvdFN0ZXBDb25maWcoc3RlcCkpIHJldHVybiB0aGlzLmNvbXBvbmVudE1hcC5zY3JlZW5zaG90U3RlcDtcbiAgICBpZiAoaXNTY3JvbGxTdGVwQ29uZmlnKHN0ZXApKSByZXR1cm4gdGhpcy5jb21wb25lbnRNYXAuc2Nyb2xsU3RlcDtcbiAgICBpZiAoaXNWZXJpZnlVcmxTdGVwQ29uZmlnKHN0ZXApKSByZXR1cm4gdGhpcy5jb21wb25lbnRNYXAudmVyaWZ5VXJsU3RlcDtcbiAgICBpZiAoaXNSZXN0b3JlU2Vzc2lvblN0ZXBDb25maWcoc3RlcCkpIHJldHVybiB0aGlzLmNvbXBvbmVudE1hcC5yZXN0b3JlU2Vzc2lvblN0ZXA7XG4gICAgaWYgKGlzQ3VzdG9tQ29kZVN0ZXBDb25maWcoc3RlcCkpIHJldHVybiB0aGlzLmNvbXBvbmVudE1hcC5jdXN0b21Db2RlU3RlcDtcbiAgICBpZiAoaXNOb3JtYWxTdGVwQ29uZmlnKHN0ZXApKSByZXR1cm4gdGhpcy5jb21wb25lbnRNYXAubm9ybWFsU3RlcDtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyU3RlcCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3RlcEhvc3QgfHwgIXRoaXMuc3RlcCkgcmV0dXJuO1xuXG4gICAgY29uc3QgY29tcG9uZW50VHlwZSA9IHRoaXMuZ2V0Q29tcG9uZW50VHlwZSh0aGlzLnN0ZXApO1xuICAgIGlmICghY29tcG9uZW50VHlwZSkgcmV0dXJuO1xuXG4gICAgdGhpcy5zdGVwSG9zdC5jbGVhcigpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy5zdGVwSG9zdC5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50VHlwZSk7XG4gICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZTtcblxuICAgIGluc3RhbmNlLmNvbmZpZyA9IHRoaXMuc3RlcDtcbiAgICBpbnN0YW5jZS5zdGVwTnVtYmVyID0gKHRoaXMuc3RlcCBhcyBhbnkpLnN0ZXBOdW1iZXI7XG4gICAgKGluc3RhbmNlIGFzIGFueSkuaW5kZXggPSB0aGlzLmluZGV4OyAvLyBDb3JyZWN0IGVkaXQtaW4tZGVwdGggZm9yIGFsbCBzdGVwIHR5cGVzIChzdGVwTnVtYmVyIFwiMTAuM1wiIHBhcnNlcyB3cm9uZylcbiAgICBpbnN0YW5jZS5pc05lc3RlZCA9IHRoaXMuaXNOZXN0ZWQ7XG4gICAgaW5zdGFuY2UuaXNJbnNpZGVMb29wID0gdGhpcy5pc0luc2lkZUxvb3A7XG4gICAgaW5zdGFuY2UuaXNJbnNpZGVTdGVwR3JvdXAgPSB0aGlzLmlzSW5zaWRlU3RlcEdyb3VwO1xuICAgIGluc3RhbmNlLmlzUmVvcmRlciA9IHRoaXMuaXNSZW9yZGVyO1xuICAgIE9iamVjdC5rZXlzKHRoaXMuc3RlcCkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBpZiAoa2V5ICE9PSAnc3RlcFR5cGUnICYmIGtleSAhPT0gJ25lc3RlZFN0ZXBzJyAmJiBrZXkgIT09ICdicmFuY2hlcycpIHtcbiAgICAgICAgKGluc3RhbmNlIGFzIGFueSlba2V5XSA9ICh0aGlzLnN0ZXAgYXMgYW55KVtrZXldO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICgodGhpcy5zdGVwIGFzIGFueSkubmVzdGVkU3RlcHMpIChpbnN0YW5jZSBhcyBhbnkpLm5lc3RlZFN0ZXBzID0gKHRoaXMuc3RlcCBhcyBhbnkpLm5lc3RlZFN0ZXBzO1xuICAgIGlmICgodGhpcy5zdGVwIGFzIGFueSkuYnJhbmNoZXMpIChpbnN0YW5jZSBhcyBhbnkpLmJyYW5jaGVzID0gKHRoaXMuc3RlcCBhcyBhbnkpLmJyYW5jaGVzO1xuXG4gICAgLy8gUGFzcyBkYXRhIHByb2ZpbGUgaW5wdXRzIHRvIHN0ZXAgaW5zdGFuY2VzIHRoYXQgY2FuIGNvbnRhaW4gbmVzdGVkIGxvb3Agc3RlcHNcbiAgICBpZiAoaXNMb29wU3RlcENvbmZpZyh0aGlzLnN0ZXApIHx8IGlzQ29uZGl0aW9uU3RlcENvbmZpZyh0aGlzLnN0ZXApIHx8IGlzU3RlcEdyb3VwQ29uZmlnKHRoaXMuc3RlcCkpIHtcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLmRhdGFQcm9maWxlT3B0aW9ucyA9IHRoaXMuZGF0YVByb2ZpbGVPcHRpb25zO1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuaGFzTW9yZURhdGFQcm9maWxlcyA9IHRoaXMuaGFzTW9yZURhdGFQcm9maWxlcztcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLmlzTG9hZGluZ0RhdGFQcm9maWxlcyA9IHRoaXMuaXNMb2FkaW5nRGF0YVByb2ZpbGVzO1xuICAgICAgLy8gQWxzbyBwYXNzIG5hdHVyYWwgdGV4dCBhY3Rpb25zIG9wdGlvbnMgKGZvciBuZXN0ZWQgbG9vcCBzdGVwcyB3aXRoIHdoaWxlIGxvb3AgYW5kIGNvbmRpdGlvbiBzdGVwcylcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLm5hdHVyYWxUZXh0QWN0aW9uc09wdGlvbnMgPSB0aGlzLm5hdHVyYWxUZXh0QWN0aW9uc09wdGlvbnM7XG4gICAgICAvLyBQYXNzIGFkZFN0ZXBCZXR3ZWVuIGlucHV0cyB0byBuZXN0ZWQgc3RlcCBjb21wb25lbnRzXG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5hZGRTdGVwQmV0d2VlbkFib3ZlID0gdGhpcy5hZGRTdGVwQmV0d2VlbkFib3ZlO1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuYWRkU3RlcEJldHdlZW5CZWxvdyA9IHRoaXMuYWRkU3RlcEJldHdlZW5CZWxvdztcbiAgICAgIC8vIEtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIGRlcHJlY2F0ZWQgYWRkU3RlcEJldHdlZW5cbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLmFkZFN0ZXBCZXR3ZWVuID0gdGhpcy5hZGRTdGVwQmV0d2VlbjtcbiAgICB9XG4gICAgXG4gICAgLy8gUGFzcyBuYXR1cmFsIHRleHQgYWN0aW9ucyBvcHRpb25zIGFuZCB0ZW1wbGF0ZSB2YXJpYWJsZXMgZnVuY3Rpb24gdG8gbG9vcCBzdGVwcyAoZm9yIHdoaWxlIGxvb3AgY29uZGl0aW9uLCBzYW1lIGFzIGNvbmRpdGlvbi1zdGVwKVxuICAgIGlmIChpc0xvb3BTdGVwQ29uZmlnKHRoaXMuc3RlcCkpIHtcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLm5hdHVyYWxUZXh0QWN0aW9uc09wdGlvbnMgPSB0aGlzLm5hdHVyYWxUZXh0QWN0aW9uc09wdGlvbnM7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5zZXRDb25kaXRpb25UZW1wbGF0ZVZhcmlhYmxlcyA9IHRoaXMuc2V0Q29uZGl0aW9uVGVtcGxhdGVWYXJpYWJsZXM7XG4gICAgfVxuICAgIFxuICAgIC8vIFBhc3MgbmF0dXJhbCB0ZXh0IGFjdGlvbnMgb3B0aW9ucyBhbmQgdGVtcGxhdGUgdmFyaWFibGVzIGZ1bmN0aW9uIHRvIGNvbmRpdGlvbiBzdGVwc1xuICAgIGlmIChpc0NvbmRpdGlvblN0ZXBDb25maWcodGhpcy5zdGVwKSkge1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkubmF0dXJhbFRleHRBY3Rpb25zT3B0aW9ucyA9IHRoaXMubmF0dXJhbFRleHRBY3Rpb25zT3B0aW9ucztcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLnNldENvbmRpdGlvblRlbXBsYXRlVmFyaWFibGVzID0gdGhpcy5zZXRDb25kaXRpb25UZW1wbGF0ZVZhcmlhYmxlcztcbiAgICB9XG5cbiAgICB0aGlzLndpcmVPdXRwdXRzKGluc3RhbmNlKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIHdpcmVPdXRwdXRzKGluc3RhbmNlOiBhbnkpOiB2b2lkIHtcbiAgICAvLyBTdG9yZSBzdWJzY3JpcHRpb25zIG9uIHRoZSBpbnN0YW5jZSB0byBwcmV2ZW50IGR1cGxpY2F0ZXNcbiAgICBpZiAoIShpbnN0YW5jZSBhcyBhbnkpLl9jcWFTdWJzY3JpcHRpb25zKSB7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5fY3FhU3Vic2NyaXB0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gICAgfVxuICAgIGNvbnN0IHN1YnNjcmlwdGlvbnMgPSAoaW5zdGFuY2UgYXMgYW55KS5fY3FhU3Vic2NyaXB0aW9ucztcbiAgICBcbiAgICBjb25zdCB3aXJlID0gKGtleTogc3RyaW5nLCBlbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PikgPT4ge1xuICAgICAgaWYgKGluc3RhbmNlW2tleV0gJiYgdHlwZW9mIGluc3RhbmNlW2tleV0uc3Vic2NyaWJlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIC8vIFVuc3Vic2NyaWJlIGZyb20gcHJldmlvdXMgc3Vic2NyaXB0aW9uIGlmIGV4aXN0c1xuICAgICAgICBjb25zdCBleGlzdGluZ1N1YiA9IHN1YnNjcmlwdGlvbnMuZ2V0KGtleSk7XG4gICAgICAgIGlmIChleGlzdGluZ1N1Yikge1xuICAgICAgICAgIGV4aXN0aW5nU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIENyZWF0ZSBuZXcgc3Vic2NyaXB0aW9uXG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IGluc3RhbmNlW2tleV0uc3Vic2NyaWJlKCh2OiBhbnkpID0+IHtcbiAgICAgICAgICBlbWl0dGVyLmVtaXQodik7XG4gICAgICAgIH0pO1xuICAgICAgICBzdWJzY3JpcHRpb25zLnNldChrZXksIHN1YnNjcmlwdGlvbik7XG4gICAgICB9XG4gICAgfTtcbiAgICB3aXJlKCduZXN0ZWRTdGVwQ2hhbmdlJywgdGhpcy5uZXN0ZWRTdGVwQ2hhbmdlIGFzIGFueSk7XG4gICAgd2lyZSgnYWRkU3RlcCcsIHtcbiAgICAgIGVtaXQ6ICh2OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHYgIT0gbnVsbCAmJiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgJ2JyYW5jaCcgaW4gdikgdGhpcy5hZGRTdGVwRm9yQnJhbmNoLmVtaXQodik7XG4gICAgICAgIGVsc2UgaWYgKHYgIT0gbnVsbCAmJiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgJ2xvb3BTdGVwQ29uZmlnJyBpbiB2KSB0aGlzLmFkZFN0ZXBGb3JMb29wLmVtaXQodik7XG4gICAgICAgIGVsc2UgdGhpcy5hZGRTdGVwLmVtaXQodik7XG4gICAgICB9LFxuICAgIH0gYXMgYW55KTtcbiAgICB3aXJlKCdkZWxldGVTdGVwJywge1xuICAgICAgZW1pdDogKHY6IGFueSkgPT4ge1xuICAgICAgICBpZiAodiAhPSBudWxsICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiAnYnJhbmNoJyBpbiB2ICYmICdzdGVwSW5kZXgnIGluIHYpIHRoaXMuZGVsZXRlU3RlcFdpdGhCcmFuY2guZW1pdCh2KTtcbiAgICAgICAgZWxzZSB0aGlzLmRlbGV0ZVN0ZXAuZW1pdCh2KTtcbiAgICAgIH0sXG4gICAgfSBhcyBhbnkpO1xuICAgIHdpcmUoJ3RvZ2dsZUV4cGFuZGVkJywge1xuICAgICAgZW1pdDogKHY6IGFueSkgPT4ge1xuICAgICAgICAvLyBIYW5kbGUgYm90aCBib29sZWFuIGFuZCBvYmplY3QgZm9ybWF0c1xuICAgICAgICAvLyBJZiBpdCdzIGFuIG9iamVjdCB3aXRoIGNvbmZpZyBhbmQgZXhwYW5kZWQsIGVtaXQgaXQgYXMtaXNcbiAgICAgICAgLy8gSWYgaXQncyBqdXN0IGEgYm9vbGVhbiwgZW1pdCBpdCBhcy1pc1xuICAgICAgICB0aGlzLnRvZ2dsZUV4cGFuZGVkLmVtaXQodik7XG4gICAgICB9LFxuICAgIH0gYXMgYW55KTtcbiAgICB3aXJlKCdncm91cE5hbWVDaGFuZ2UnLCB0aGlzLmdyb3VwTmFtZUNoYW5nZSBhcyBhbnkpO1xuICAgIHdpcmUoJ2Rlc2NyaXB0aW9uQ2hhbmdlJywgdGhpcy5kZXNjcmlwdGlvbkNoYW5nZSBhcyBhbnkpO1xuICAgIHdpcmUoJ3JldXNhYmxlQ2hhbmdlJywgdGhpcy5yZXVzYWJsZUNoYW5nZSBhcyBhbnkpO1xuICAgIHdpcmUoJ29wZW5FeHRlcm5hbCcsIHRoaXMub3BlbkV4dGVybmFsIGFzIGFueSk7XG4gICAgd2lyZSgnZWRpdCcsIHtcbiAgICAgIGVtaXQ6ICh2OiBhbnkpID0+IHtcbiAgICAgICAgLy8gSWYgY2hpbGQgY29tcG9uZW50IGVtaXRzIHZvaWQgb3Igbm90aGluZywgdXNlIGN1cnJlbnQgc3RlcCBhbmQgaW5kZXhcbiAgICAgICAgLy8gSWYgY2hpbGQgY29tcG9uZW50IGFscmVhZHkgZW1pdHMgYW4gb2JqZWN0LCBtZXJnZSBpdCB3aXRoIHN0ZXAgYW5kIGluZGV4XG4gICAgICAgIGlmICh2ICE9IG51bGwgJiYgdHlwZW9mIHYgPT09ICdvYmplY3QnICYmICdzdGVwJyBpbiB2ICYmICdpbmRleCcgaW4gdikge1xuICAgICAgICAgIC8vIEFscmVhZHkgaGFzIHN0ZXAgYW5kIGluZGV4LCBlbWl0IGFzLWlzXG4gICAgICAgICAgdGhpcy5lZGl0LmVtaXQodik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRW1pdCB3aXRoIGN1cnJlbnQgc3RlcCBhbmQgaW5kZXhcbiAgICAgICAgICB0aGlzLmVkaXQuZW1pdCh7IHN0ZXA6IHRoaXMuc3RlcCwgaW5kZXg6IHRoaXMuaW5kZXggfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSBhcyBhbnkpO1xuICAgIHdpcmUoJ2xpbmsnLCB0aGlzLmxpbmsgYXMgYW55KTtcbiAgICB3aXJlKCdkdXBsaWNhdGUnLCB0aGlzLmR1cGxpY2F0ZSBhcyBhbnkpO1xuICAgIC8vIFdpcmUgZGVsZXRlIGV2ZW50IC0gaW50ZXJjZXB0IGFuZCBlbWl0IHdpdGggc3RlcCBkYXRhIChmb3J3YXJkIHBheWxvYWQgd2hlbiBjaGlsZCBlbWl0cyB7IHN0ZXAgfSBmb3IgbmVzdGVkIGRlbGV0ZXMpXG4gICAgaWYgKGluc3RhbmNlLmRlbGV0ZSAmJiB0eXBlb2YgaW5zdGFuY2UuZGVsZXRlLnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgZXhpc3RpbmdTdWIgPSBzdWJzY3JpcHRpb25zLmdldCgnZGVsZXRlJyk7XG4gICAgICBpZiAoZXhpc3RpbmdTdWIpIHtcbiAgICAgICAgZXhpc3RpbmdTdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRlbGV0ZVN1YiA9IGluc3RhbmNlLmRlbGV0ZS5zdWJzY3JpYmUoKHY6IGFueSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5icmFuY2ggIT0gbnVsbCAmJiB0aGlzLmluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmRlbGV0ZVN0ZXBXaXRoQnJhbmNoLmVtaXQoeyBicmFuY2g6IHRoaXMuYnJhbmNoLCBzdGVwSW5kZXg6IHRoaXMuaW5kZXggfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodiAhPSBudWxsICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiB2LnN0ZXApIHtcbiAgICAgICAgICB0aGlzLmRlbGV0ZS5lbWl0KHYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZGVsZXRlLmVtaXQoeyBzdGVwOiB0aGlzLnN0ZXAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgc3Vic2NyaXB0aW9ucy5zZXQoJ2RlbGV0ZScsIGRlbGV0ZVN1Yik7XG4gICAgfVxuICAgIHdpcmUoJ3ZpZXdEZXRhaWxzJywgdGhpcy52aWV3RGV0YWlscyBhcyBhbnkpO1xuICAgIHdpcmUoJ3NlbGVjdGlvbkNoYW5nZScsIHRoaXMuc2VsZWN0aW9uQ2hhbmdlIGFzIGFueSk7XG4gICAgd2lyZSgnY29uZGl0aW9uQ2hhbmdlJywgdGhpcy5jb25kaXRpb25DaGFuZ2UgYXMgYW55KTtcbiAgICB3aXJlKCdicmFuY2hTdGVwQ2hhbmdlJywgdGhpcy5icmFuY2hTdGVwQ2hhbmdlIGFzIGFueSk7XG4gICAgd2lyZSgnYWRkU3RlcEZvckJyYW5jaCcsIHRoaXMuYWRkU3RlcEZvckJyYW5jaCBhcyBhbnkpO1xuICAgIHdpcmUoJ2RlbGV0ZVN0ZXBXaXRoQnJhbmNoJywgdGhpcy5kZWxldGVTdGVwV2l0aEJyYW5jaCBhcyBhbnkpO1xuICAgIHdpcmUoJ2FkZEJyYW5jaCcsIHRoaXMuYWRkQnJhbmNoIGFzIGFueSk7XG4gICAgd2lyZSgnYWRkRWxzZScsIHRoaXMuYWRkRWxzZSBhcyBhbnkpO1xuICAgIHdpcmUoJ2RlbGV0ZUJyYW5jaCcsIHRoaXMuZGVsZXRlQnJhbmNoIGFzIGFueSk7XG4gICAgd2lyZSgnYWRkU3RlcEZvckxvb3AnLCB0aGlzLmFkZFN0ZXBGb3JMb29wIGFzIGFueSk7XG4gICAgd2lyZSgndGVzdERhdGFQcm9maWxlQ2hhbmdlJywgdGhpcy50ZXN0RGF0YVByb2ZpbGVDaGFuZ2UgYXMgYW55KTtcbiAgICB3aXJlKCdzdGFydFN0ZXBDaGFuZ2UnLCB0aGlzLnN0YXJ0U3RlcENoYW5nZSBhcyBhbnkpO1xuICAgIHdpcmUoJ2VuZFN0ZXBDaGFuZ2UnLCB0aGlzLmVuZFN0ZXBDaGFuZ2UgYXMgYW55KTtcbiAgICB3aXJlKCdtYXhJdGVyYXRpb25zQ2hhbmdlJywgdGhpcy5tYXhJdGVyYXRpb25zQ2hhbmdlIGFzIGFueSk7XG4gICAgd2lyZSgnZXZlbnRUeXBlQ2hhbmdlJywgdGhpcy5ldmVudFR5cGVDaGFuZ2UgYXMgYW55KTtcbiAgICB3aXJlKCdwYXJhbWV0ZXJDaGFuZ2UnLCB0aGlzLnBhcmFtZXRlckNoYW5nZSBhcyBhbnkpO1xuICAgIC8vIFdpcmUgY2xpY2tBY3Rpb24gLSB3cmFwIE1vdXNlRXZlbnQgd2l0aCBzdGVwIGRhdGFcbiAgICBpZiAoaW5zdGFuY2UuY2xpY2tBY3Rpb24gJiYgdHlwZW9mIGluc3RhbmNlLmNsaWNrQWN0aW9uLnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgZXhpc3RpbmdTdWIgPSBzdWJzY3JpcHRpb25zLmdldCgnY2xpY2tBY3Rpb24nKTtcbiAgICAgIGlmIChleGlzdGluZ1N1Yikge1xuICAgICAgICBleGlzdGluZ1N1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgICAgY29uc3QgY2xpY2tBY3Rpb25TdWIgPSBpbnN0YW5jZS5jbGlja0FjdGlvbi5zdWJzY3JpYmUoKHY6IGFueSkgPT4ge1xuICAgICAgICAvLyBJZiBjaGlsZCBjb21wb25lbnQgZW1pdHMgYW4gb2JqZWN0IHdpdGggZXZlbnQgYW5kIHN0ZXAsIHVzZSBpdDsgb3RoZXJ3aXNlIHdyYXAgTW91c2VFdmVudCB3aXRoIGN1cnJlbnQgc3RlcFxuICAgICAgICBpZiAodiAhPSBudWxsICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiAnZXZlbnQnIGluIHYgJiYgJ3N0ZXAnIGluIHYpIHtcbiAgICAgICAgICB0aGlzLmNsaWNrQWN0aW9uLmVtaXQodik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQXNzdW1lIHYgaXMgYSBNb3VzZUV2ZW50LCB3cmFwIGl0IHdpdGggY3VycmVudCBzdGVwXG4gICAgICAgICAgdGhpcy5jbGlja0FjdGlvbi5lbWl0KHsgZXZlbnQ6IHYgYXMgTW91c2VFdmVudCwgc3RlcDogdGhpcy5zdGVwIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHN1YnNjcmlwdGlvbnMuc2V0KCdjbGlja0FjdGlvbicsIGNsaWNrQWN0aW9uU3ViKTtcbiAgICB9XG4gICAgd2lyZSgnZG5kRHJvcEluWm9uZScsIHRoaXMuZG5kRHJvcEluWm9uZSBhcyBhbnkpO1xuICAgIHdpcmUoJ2xvYWRNb3JlRGF0YVByb2ZpbGVzJywgdGhpcy5sb2FkTW9yZURhdGFQcm9maWxlcyBhcyBhbnkpO1xuICAgIHdpcmUoJ3NlYXJjaERhdGFQcm9maWxlcycsIHRoaXMuc2VhcmNoRGF0YVByb2ZpbGVzIGFzIGFueSk7XG4gICAgd2lyZSgnYWRkU3RlcEJldHdlZW5DbGljaycsIHRoaXMuYWRkU3RlcEJldHdlZW5DbGljayBhcyBhbnkpO1xuICAgIC8vIFdpcmUgZWRpdEluRGVwdGggLSBjaGVjayBpZiBpdCBleGlzdHMgb24gaW5zdGFuY2VcbiAgICBpZiAoaW5zdGFuY2UuZWRpdEluRGVwdGggJiYgdHlwZW9mIGluc3RhbmNlLmVkaXRJbkRlcHRoLnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgZXhpc3RpbmdTdWIgPSBzdWJzY3JpcHRpb25zLmdldCgnZWRpdEluRGVwdGgnKTtcbiAgICAgIGlmIChleGlzdGluZ1N1Yikge1xuICAgICAgICBleGlzdGluZ1N1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgICAgY29uc3QgZWRpdEluRGVwdGhTdWIgPSBpbnN0YW5jZS5lZGl0SW5EZXB0aC5zdWJzY3JpYmUoKHY6IGFueSkgPT4ge1xuICAgICAgICAvLyBJZiBjaGlsZCBjb21wb25lbnQgZW1pdHMgYW4gb2JqZWN0IHdpdGggc3RlcCwgdXNlIGl0OyBvdGhlcndpc2UgdXNlIGN1cnJlbnQgc3RlcCBhbmQgaW5kZXhcbiAgICAgICAgaWYgKHYgIT0gbnVsbCAmJiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgJ3N0ZXAnIGluIHYpIHtcbiAgICAgICAgICBjb25zdCBwYXlsb2FkOiB7IHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZzsgaW5kZXg6IG51bWJlcjsgdGVtcGxhdGVPdmVycmlkZT86IGFueSB9ID0ge1xuICAgICAgICAgICAgc3RlcDogdi5zdGVwLFxuICAgICAgICAgICAgaW5kZXg6IHYuaW5kZXggPz8gdGhpcy5pbmRleCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmICh2LnRlbXBsYXRlT3ZlcnJpZGUpIHtcbiAgICAgICAgICAgIHBheWxvYWQudGVtcGxhdGVPdmVycmlkZSA9IHYudGVtcGxhdGVPdmVycmlkZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5lZGl0SW5EZXB0aC5lbWl0KHBheWxvYWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZWRpdEluRGVwdGguZW1pdCh7IHN0ZXA6IHRoaXMuc3RlcCwgaW5kZXg6IHRoaXMuaW5kZXggfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgc3Vic2NyaXB0aW9ucy5zZXQoJ2VkaXRJbkRlcHRoJywgZWRpdEluRGVwdGhTdWIpO1xuICAgIH1cbiAgICAvLyBXaXJlIHN0ZXBVcGRhdGUgLSBjaGVjayBpZiBpdCBleGlzdHMgb24gaW5zdGFuY2VcbiAgICBpZiAoaW5zdGFuY2Uuc3RlcFVwZGF0ZSkge1xuICAgICAgY29uc29sZS5sb2coJ1JlbmRlcmVyOiBGb3VuZCBzdGVwVXBkYXRlIEV2ZW50RW1pdHRlciwgd2lyaW5nIGl0Jyk7XG4gICAgICB3aXJlKCdzdGVwVXBkYXRlJywgdGhpcy5zdGVwVXBkYXRlIGFzIGFueSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybignUmVuZGVyZXI6IHN0ZXBVcGRhdGUgRXZlbnRFbWl0dGVyIG5vdCBmb3VuZCBvbiBpbnN0YW5jZSBkdXJpbmcgd2lyZU91dHB1dHMnLCB7XG4gICAgICAgIHN0ZXBJZDogdGhpcy5zdGVwPy5pZCxcbiAgICAgICAgc3RlcFR5cGU6IHRoaXMuc3RlcD8uc3RlcFR5cGUsXG4gICAgICAgIGluc3RhbmNlS2V5czogT2JqZWN0LmtleXMoaW5zdGFuY2UpXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAvLyBDbGVhbiB1cCBzdWJzY3JpcHRpb25zIHdoZW4gY29tcG9uZW50IGlzIGRlc3Ryb3llZFxuICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZj8uaW5zdGFuY2UpIHtcbiAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbnMgPSAodGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgYW55KS5fY3FhU3Vic2NyaXB0aW9ucztcbiAgICAgIGlmIChzdWJzY3JpcHRpb25zKSB7XG4gICAgICAgIHN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoc3ViICYmIHR5cGVvZiBzdWIudW5zdWJzY3JpYmUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHN1YnNjcmlwdGlvbnMuY2xlYXIoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuIiwiPGRpdiBjbGFzcz1cImNxYS1yZWxhdGl2ZSBjcWEtc3RlcC1yZW5kZXJlci1ob3Zlci1jb250YWluZXJcIj5cbiAgICA8YnV0dG9uICpuZ0lmPVwiIWlzUmVvcmRlciAmJiAoYWRkU3RlcEJldHdlZW5BYm92ZSAmJiBhZGRTdGVwQmV0d2VlbilcIlxuICAgICAgICBjbGFzcz1cImNxYS1hYnNvbHV0ZSBjcWEtdG9wLVtjYWxjKDAgLSAxMnB4KV0gY3FhLWxlZnQtWzUwJV0gY3FhLXRyYW5zbGF0ZS14LVstNTAlXSBjcWEtcC0wIGNxYS16LVsxXSBjcWEtYWRkLXN0ZXAtYmV0d2Vlbi1idG5cIlxuICAgICAgICBzdHlsZT1cInRvcDogLTEycHg7XCIgKGNsaWNrKT1cImFkZFN0ZXBCZXR3ZWVuQ2xpY2suZW1pdCh7c3RlcDogc3RlcCwgaW5kZXg6IGluZGV4LCBwb3NpdGlvbjogJ0FCT1ZFJ30pXCI+XG4gICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgPHJlY3QgeD1cIjFcIiB5PVwiMVwiIHdpZHRoPVwiMjEuMTgyMlwiIGhlaWdodD1cIjIyXCIgcng9XCIxMC41OTExXCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9XCIxXCIgeT1cIjFcIiB3aWR0aD1cIjIxLjE4MjJcIiBoZWlnaHQ9XCIyMlwiIHJ4PVwiMTAuNTkxMVwiIHN0cm9rZT1cIiMzRjQzRUVcIiBzdHJva2Utd2lkdGg9XCIyXCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC41IDEySDE1LjVcIiBzdHJva2U9XCIjM0Y0M0VFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgOC41VjE1LjVcIiBzdHJva2U9XCIjM0Y0M0VFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgPC9idXR0b24+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1zdGVwLWhvc3Qtd3JhcHBlclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICNzdGVwSG9zdD48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uICpuZ0lmPVwiIWlzUmVvcmRlciAmJiAoYWRkU3RlcEJldHdlZW5CZWxvdyAmJiBhZGRTdGVwQmV0d2VlbilcIlxuICAgICAgICBjbGFzcz1cImNxYS1hYnNvbHV0ZSBjcWEtdG9wLVtjYWxjKDEwMCUtMTJweCldIGNxYS1sZWZ0LVs1MCVdIGNxYS10cmFuc2xhdGUteC1bLTUwJV0gY3FhLXAtMCBjcWEtei1bMV0gY3FhLWFkZC1zdGVwLWJldHdlZW4tYnRuXCJcbiAgICAgICAgKGNsaWNrKT1cImFkZFN0ZXBCZXR3ZWVuQ2xpY2suZW1pdCh7c3RlcDogc3RlcCwgaW5kZXg6IGluZGV4LCBwb3NpdGlvbjogJ0JFTE9XJ30pXCI+XG4gICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgPHJlY3QgeD1cIjFcIiB5PVwiMVwiIHdpZHRoPVwiMjEuMTgyMlwiIGhlaWdodD1cIjIyXCIgcng9XCIxMC41OTExXCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9XCIxXCIgeT1cIjFcIiB3aWR0aD1cIjIxLjE4MjJcIiBoZWlnaHQ9XCIyMlwiIHJ4PVwiMTAuNTkxMVwiIHN0cm9rZT1cIiMzRjQzRUVcIiBzdHJva2Utd2lkdGg9XCIyXCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC41IDEySDE1LjVcIiBzdHJva2U9XCIjM0Y0M0VFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgOC41VjE1LjVcIiBzdHJva2U9XCIjM0Y0M0VFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgPC9idXR0b24+XG48L2Rpdj4iXX0=
|
|
@@ -37,9 +37,8 @@ export class TestCaseUploadStepComponent {
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
onEdit() {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
this.editInDepth.emit({ step: this.config, index: isNaN(index) ? 0 : index });
|
|
40
|
+
const idx = typeof this.index === 'number' ? this.index : (typeof this.stepNumber === 'number' ? this.stepNumber - 1 : (typeof this.stepNumber === 'string' ? parseInt(this.stepNumber, 10) - 1 : 0));
|
|
41
|
+
this.editInDepth.emit({ step: this.config, index: isNaN(idx) ? 0 : idx });
|
|
43
42
|
this.edit.emit();
|
|
44
43
|
}
|
|
45
44
|
onLink() { this.link.emit(); }
|
|
@@ -65,7 +64,7 @@ export class TestCaseUploadStepComponent {
|
|
|
65
64
|
onSelectionChange(checked) { this.selected = checked; this.selectionChange.emit(checked); }
|
|
66
65
|
}
|
|
67
66
|
TestCaseUploadStepComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TestCaseUploadStepComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
68
|
-
TestCaseUploadStepComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: TestCaseUploadStepComponent, selector: "cqa-test-case-upload-step", inputs: { config: "config", stepNumber: "stepNumber", selector: "selector", fileName: "fileName", source: "source", sourcePath: "sourcePath", description: "description", selected: "selected", disabled: "disabled", isNested: "isNested", isInsideStepGroup: "isInsideStepGroup", isInsideLoop: "isInsideLoop", isReorder: "isReorder" }, outputs: { edit: "edit", editInDepth: "editInDepth", link: "link", duplicate: "duplicate", delete: "delete", moreOptions: "moreOptions", viewDetails: "viewDetails", selectionChange: "selectionChange" }, host: { classAttribute: "cqa-ui-root" }, viewQueries: [{ propertyName: "viewDetailsTrigger", first: true, predicate: ["viewDetailsTrigger"], descendants: true }], ngImport: i0, template: "<div [class]=\"'step-row cqa-flex cqa-items-center cqa-gap-3 cqa-py-[12.5px] ' + (isInsideLoop && isInsideStepGroup ? 'cqa-pl-20 cqa-pr-4' : (isInsideLoop || isInsideStepGroup) ? 'cqa-pl-10 cqa-pr-4' : 'cqa-px-4')\" style=\"border-top: 1px solid #E5E7EB;\">\n <div class=\"cqa-inline-flex cqa-items-center\">\n <!-- Drag Handle Icon (when isReorder is true and not inside step group - steps inside step groups cannot be reordered) -->\n <div *ngIf=\"isReorder && !isInsideStepGroup\" class=\"cqa-mr-2 cqa-cursor-move cqa-text-[#6B7280] hover:cqa-text-[#111827]\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"3\" cy=\"3\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"8\" cy=\"3\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"13\" cy=\"3\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"3\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"8\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"13\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"3\" cy=\"13\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"8\" cy=\"13\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"13\" cy=\"13\" r=\"1.5\" fill=\"currentColor\"/>\n </svg>\n </div>\n <!-- Checkbox (when isReorder is false or inside step group - steps inside step groups cannot be reordered) -->\n <label *ngIf=\"!isReorder || isInsideStepGroup\" class=\"cqa-flex cqa-items-center cqa-cursor-pointer cqa-relative cqa-mr-2\">\n <input type=\"checkbox\"\n [ngModel]=\"selected\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onSelectionChange($event)\"\n class=\"cqa-h-4 cqa-w-4 cqa-cursor-pointer cqa-transition-all cqa-appearance-none cqa-rounded shadow hover:cqa-shadow-md cqa-border cqa-border-solid cqa-border-slate-300 cqa-flex-shrink-0\"\n [class.cqa-bg-[#3F43EE]]=\"selected\"\n [class.cqa-border-[#3F43EE]]=\"selected\"\n id=\"check\" />\n <span class=\"cqa-absolute cqa-text-white cqa-top-1/2 cqa-left-1/2 cqa--translate-x-1/2 cqa--translate-y-1/2 cqa-pointer-events-none cqa-flex cqa-items-center cqa-justify-center\"\n [class.cqa-opacity-0]=\"!selected\"\n [class.cqa-opacity-100]=\"selected\">\n <svg width=\"12\" height=\"13\" viewBox=\"0 0 12 13\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10 3.125L4.5 8.625L2 6.125\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </span>\n </label>\n </div>\n <span class=\"cqa-text-[#6B7280] cqa-text-[14px] cqa-leading-[18px] cqa-min-w-[32px]\">{{ stepNumber }}</span>\n <span title=\"Upload\" class=\"cqa-w-8 cqa-h-8 cqa-rounded-lg cqa-flex cqa-items-center cqa-justify-center cqa-flex-shrink-0 cqa-bg-[#DBEAFE] cqa-text-[#2563EB]\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.25 8.75V11.0833C12.25 11.3928 12.1271 11.6895 11.9083 11.9083C11.6895 12.1271 11.3928 12.25 11.0833 12.25H2.91667C2.60725 12.25 2.3105 12.1271 2.09171 11.9083C1.87292 11.6895 1.75 11.3928 1.75 11.0833V8.75\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M9.91667 4.66667L7 1.75L4.08333 4.66667\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7 1.75V8.75\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </span>\n <span class=\"cqa-text-[#111827] cqa-text-[14px] cqa-leading-[18px]\">Upload file to</span>\n <span class=\"cqa-py-0.5 cqa-px-2 cqa-text-[#2563EB] cqa-text-[14px] cqa-leading-[17px] cqa-font-semibold cqa-border cqa-border-solid cqa-border-[#93C5FD] cqa-rounded cqa-bg-[#DBEAFE]\">{{ selector }}</span>\n <span class=\"cqa-text-[#6B7280] cqa-text-[14px] cqa-leading-[18px]\">File:</span>\n <span class=\"cqa-text-[#111827] cqa-text-[14px] cqa-leading-[18px]\">{{ fileName }}</span>\n <span class=\"cqa-text-[#6B7280] cqa-text-[14px] cqa-leading-[18px]\">Source:</span>\n <span class=\"cqa-text-[#111827] cqa-text-[14px] cqa-leading-[18px]\">{{ source }}</span>\n <span class=\"cqa-text-[#6B7280] cqa-text-[14px] cqa-leading-[18px]\">{{ sourcePath }}</span>\n <div class=\"cqa-flex-grow\"></div>\n <div class=\"cqa-flex cqa-items-center cqa-gap-3\">\n <!-- View Details Link (show only if description is not empty) -->\n <a *ngIf=\"config.description && config.description.trim() !== ''\" #viewDetailsTrigger href=\"#\" (click)=\"onViewDetails($event)\" class=\"cqa-text-[#3F43EE] cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-flex cqa-items-center cqa-gap-2 cqa-no-underline\">View Details<svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.03809 6.74329L2.62809 7.33329L5.96142 3.99996L2.62809 0.666626L2.03809 1.25663L4.78142 3.99996L2.03809 6.74329Z\" fill=\"#3F43EE\"/></svg></a>\n <div *ngIf=\"!isInsideStepGroup && !isReorder\" class=\"step-actions cqa-flex cqa-items-center cqa-gap-3 cqa-px-[7px]\">\n <button type=\"button\" (click)=\"onEdit(); $event.stopPropagation()\" title=\"Edit\" class=\"cqa-p-0 cqa-text-[#99A1Af] hover:cqa-text-[#1447E6]\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M7 11.6666H12.25\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M9.55208 2.1128C9.7843 1.88058 10.0993 1.75012 10.4277 1.75012C10.7561 1.75012 11.071 1.88058 11.3033 2.1128C11.5355 2.34502 11.6659 2.65998 11.6659 2.98838C11.6659 3.31679 11.5355 3.63175 11.3033 3.86397L4.29742 10.8704C4.15864 11.0092 3.9871 11.1107 3.79867 11.1656L2.12333 11.6544C2.07314 11.669 2.01993 11.6699 1.96928 11.6569C1.91863 11.6439 1.8724 11.6176 1.83543 11.5806C1.79846 11.5437 1.7721 11.4974 1.75913 11.4468C1.74615 11.3961 1.74703 11.3429 1.76167 11.2927L2.2505 9.61738C2.30546 9.42916 2.40698 9.25783 2.54567 9.11922L9.55208 2.1128Z\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg></button>\n <!-- <button type=\"button\" (click)=\"onLink(); $event.stopPropagation()\" title=\"Link\" class=\"cqa-p-0 cqa-text-[#99A1Af] hover:cqa-text-[#1447E6]\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.00065 9.91671H3.66732C2.78326 9.91671 1.93542 9.60942 1.3103 9.06244C0.685174 8.51545 0.333984 7.77359 0.333984 7.00004C0.333984 6.22649 0.685174 5.48463 1.3103 4.93765C1.93542 4.39066 2.78326 4.08337 3.66732 4.08337H5.00065\" stroke=\"currentColor\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M9 4.08337H10.3333C11.2174 4.08337 12.0652 4.39066 12.6904 4.93765C13.3155 5.48463 13.6667 6.22649 13.6667 7.00004C13.6667 7.77359 13.3155 8.51545 12.6904 9.06244C12.0652 9.60942 11.2174 9.91671 10.3333 9.91671H9\" stroke=\"currentColor\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M4.33398 7H9.66732\" stroke=\"currentColor\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg></button> -->\n <button type=\"button\" (click)=\"onDuplicate(); $event.stopPropagation()\" title=\"Duplicate\" class=\"cqa-p-0 cqa-text-[#99A1Af] hover:cqa-text-[#1447E6]\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.666 4.66663H5.83268C5.18835 4.66663 4.66602 5.18896 4.66602 5.83329V11.6666C4.66602 12.311 5.18835 12.8333 5.83268 12.8333H11.666C12.3103 12.8333 12.8327 12.311 12.8327 11.6666V5.83329C12.8327 5.18896 12.3103 4.66663 11.666 4.66663Z\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M2.33268 9.33329C1.69102 9.33329 1.16602 8.80829 1.16602 8.16663V2.33329C1.16602 1.69163 1.69102 1.16663 2.33268 1.16663H8.16602C8.80768 1.16663 9.33268 1.69163 9.33268 2.33329\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg></button>\n <button type=\"button\" (click)=\"onDelete(); $event.stopPropagation()\" title=\"Delete\" class=\"cqa-p-0 cqa-text-[#ff6467] hover:cqa-text-[#C63535]\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M1.75 3.5H12.25\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.0827 3.5V11.6667C11.0827 12.25 10.4993 12.8333 9.91602 12.8333H4.08268C3.49935 12.8333 2.91602 12.25 2.91602 11.6667V3.5\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M4.66602 3.49996V2.33329C4.66602 1.74996 5.24935 1.16663 5.83268 1.16663H8.16602C8.74935 1.16663 9.33268 1.74996 9.33268 2.33329V3.49996\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M5.83398 6.41663V9.91663\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8.16602 6.41663V9.91663\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg></button>\n </div>\n <!-- Created Date (from API) - last so aligned across all steps, format: 25 Feb 2026 -->\n <span *ngIf=\"config.createdDate\" class=\"cqa-text-[#6B7280] cqa-text-[12px] cqa-leading-[15px] cqa-ml-auto cqa-flex-shrink-0\">\n {{ config.createdDate | date:'d MMM yyyy' }}\n </span>\n </div>\n</div>\n", styles: [".step-actions{opacity:0;transition:opacity .15s ease}.step-row:hover .step-actions{opacity:1}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "date": i1.DatePipe } });
|
|
67
|
+
TestCaseUploadStepComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: TestCaseUploadStepComponent, selector: "cqa-test-case-upload-step", inputs: { config: "config", stepNumber: "stepNumber", index: "index", selector: "selector", fileName: "fileName", source: "source", sourcePath: "sourcePath", description: "description", selected: "selected", disabled: "disabled", isNested: "isNested", isInsideStepGroup: "isInsideStepGroup", isInsideLoop: "isInsideLoop", isReorder: "isReorder" }, outputs: { edit: "edit", editInDepth: "editInDepth", link: "link", duplicate: "duplicate", delete: "delete", moreOptions: "moreOptions", viewDetails: "viewDetails", selectionChange: "selectionChange" }, host: { classAttribute: "cqa-ui-root" }, viewQueries: [{ propertyName: "viewDetailsTrigger", first: true, predicate: ["viewDetailsTrigger"], descendants: true }], ngImport: i0, template: "<div [class]=\"'step-row cqa-flex cqa-items-center cqa-gap-3 cqa-py-[12.5px] ' + (isInsideLoop && isInsideStepGroup ? 'cqa-pl-20 cqa-pr-4' : (isInsideLoop || isInsideStepGroup) ? 'cqa-pl-10 cqa-pr-4' : 'cqa-px-4')\" style=\"border-top: 1px solid #E5E7EB;\">\n <div class=\"cqa-inline-flex cqa-items-center\">\n <!-- Drag Handle Icon (when isReorder is true and not inside step group - steps inside step groups cannot be reordered) -->\n <div *ngIf=\"isReorder && !isInsideStepGroup\" class=\"cqa-mr-2 cqa-cursor-move cqa-text-[#6B7280] hover:cqa-text-[#111827]\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"3\" cy=\"3\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"8\" cy=\"3\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"13\" cy=\"3\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"3\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"8\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"13\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"3\" cy=\"13\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"8\" cy=\"13\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"13\" cy=\"13\" r=\"1.5\" fill=\"currentColor\"/>\n </svg>\n </div>\n <!-- Checkbox (when isReorder is false or inside step group - steps inside step groups cannot be reordered) -->\n <label *ngIf=\"!isReorder || isInsideStepGroup\" class=\"cqa-flex cqa-items-center cqa-cursor-pointer cqa-relative cqa-mr-2\">\n <input type=\"checkbox\"\n [ngModel]=\"selected\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onSelectionChange($event)\"\n class=\"cqa-h-4 cqa-w-4 cqa-cursor-pointer cqa-transition-all cqa-appearance-none cqa-rounded shadow hover:cqa-shadow-md cqa-border cqa-border-solid cqa-border-slate-300 cqa-flex-shrink-0\"\n [class.cqa-bg-[#3F43EE]]=\"selected\"\n [class.cqa-border-[#3F43EE]]=\"selected\"\n id=\"check\" />\n <span class=\"cqa-absolute cqa-text-white cqa-top-1/2 cqa-left-1/2 cqa--translate-x-1/2 cqa--translate-y-1/2 cqa-pointer-events-none cqa-flex cqa-items-center cqa-justify-center\"\n [class.cqa-opacity-0]=\"!selected\"\n [class.cqa-opacity-100]=\"selected\">\n <svg width=\"12\" height=\"13\" viewBox=\"0 0 12 13\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10 3.125L4.5 8.625L2 6.125\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </span>\n </label>\n </div>\n <span class=\"cqa-text-[#6B7280] cqa-text-[14px] cqa-leading-[18px] cqa-min-w-[32px]\">{{ stepNumber }}</span>\n <span title=\"Upload\" class=\"cqa-w-8 cqa-h-8 cqa-rounded-lg cqa-flex cqa-items-center cqa-justify-center cqa-flex-shrink-0 cqa-bg-[#DBEAFE] cqa-text-[#2563EB]\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.25 8.75V11.0833C12.25 11.3928 12.1271 11.6895 11.9083 11.9083C11.6895 12.1271 11.3928 12.25 11.0833 12.25H2.91667C2.60725 12.25 2.3105 12.1271 2.09171 11.9083C1.87292 11.6895 1.75 11.3928 1.75 11.0833V8.75\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M9.91667 4.66667L7 1.75L4.08333 4.66667\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7 1.75V8.75\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </span>\n <span class=\"cqa-text-[#111827] cqa-text-[14px] cqa-leading-[18px]\">Upload file to</span>\n <span class=\"cqa-py-0.5 cqa-px-2 cqa-text-[#2563EB] cqa-text-[14px] cqa-leading-[17px] cqa-font-semibold cqa-border cqa-border-solid cqa-border-[#93C5FD] cqa-rounded cqa-bg-[#DBEAFE]\">{{ selector }}</span>\n <span class=\"cqa-text-[#6B7280] cqa-text-[14px] cqa-leading-[18px]\">File:</span>\n <span class=\"cqa-text-[#111827] cqa-text-[14px] cqa-leading-[18px]\">{{ fileName }}</span>\n <span class=\"cqa-text-[#6B7280] cqa-text-[14px] cqa-leading-[18px]\">Source:</span>\n <span class=\"cqa-text-[#111827] cqa-text-[14px] cqa-leading-[18px]\">{{ source }}</span>\n <span class=\"cqa-text-[#6B7280] cqa-text-[14px] cqa-leading-[18px]\">{{ sourcePath }}</span>\n <div class=\"cqa-flex-grow\"></div>\n <div class=\"cqa-flex cqa-items-center cqa-gap-3\">\n <!-- View Details Link (show only if description is not empty) -->\n <a *ngIf=\"config.description && config.description.trim() !== ''\" #viewDetailsTrigger href=\"#\" (click)=\"onViewDetails($event)\" class=\"cqa-text-[#3F43EE] cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-flex cqa-items-center cqa-gap-2 cqa-no-underline\">View Details<svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.03809 6.74329L2.62809 7.33329L5.96142 3.99996L2.62809 0.666626L2.03809 1.25663L4.78142 3.99996L2.03809 6.74329Z\" fill=\"#3F43EE\"/></svg></a>\n <div *ngIf=\"!isInsideStepGroup && !isReorder\" class=\"step-actions cqa-flex cqa-items-center cqa-gap-3 cqa-px-[7px]\">\n <button type=\"button\" (click)=\"onEdit(); $event.stopPropagation()\" title=\"Edit\" class=\"cqa-p-0 cqa-text-[#99A1Af] hover:cqa-text-[#1447E6]\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M7 11.6666H12.25\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M9.55208 2.1128C9.7843 1.88058 10.0993 1.75012 10.4277 1.75012C10.7561 1.75012 11.071 1.88058 11.3033 2.1128C11.5355 2.34502 11.6659 2.65998 11.6659 2.98838C11.6659 3.31679 11.5355 3.63175 11.3033 3.86397L4.29742 10.8704C4.15864 11.0092 3.9871 11.1107 3.79867 11.1656L2.12333 11.6544C2.07314 11.669 2.01993 11.6699 1.96928 11.6569C1.91863 11.6439 1.8724 11.6176 1.83543 11.5806C1.79846 11.5437 1.7721 11.4974 1.75913 11.4468C1.74615 11.3961 1.74703 11.3429 1.76167 11.2927L2.2505 9.61738C2.30546 9.42916 2.40698 9.25783 2.54567 9.11922L9.55208 2.1128Z\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg></button>\n <!-- <button type=\"button\" (click)=\"onLink(); $event.stopPropagation()\" title=\"Link\" class=\"cqa-p-0 cqa-text-[#99A1Af] hover:cqa-text-[#1447E6]\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.00065 9.91671H3.66732C2.78326 9.91671 1.93542 9.60942 1.3103 9.06244C0.685174 8.51545 0.333984 7.77359 0.333984 7.00004C0.333984 6.22649 0.685174 5.48463 1.3103 4.93765C1.93542 4.39066 2.78326 4.08337 3.66732 4.08337H5.00065\" stroke=\"currentColor\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M9 4.08337H10.3333C11.2174 4.08337 12.0652 4.39066 12.6904 4.93765C13.3155 5.48463 13.6667 6.22649 13.6667 7.00004C13.6667 7.77359 13.3155 8.51545 12.6904 9.06244C12.0652 9.60942 11.2174 9.91671 10.3333 9.91671H9\" stroke=\"currentColor\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M4.33398 7H9.66732\" stroke=\"currentColor\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg></button> -->\n <button type=\"button\" (click)=\"onDuplicate(); $event.stopPropagation()\" title=\"Duplicate\" class=\"cqa-p-0 cqa-text-[#99A1Af] hover:cqa-text-[#1447E6]\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.666 4.66663H5.83268C5.18835 4.66663 4.66602 5.18896 4.66602 5.83329V11.6666C4.66602 12.311 5.18835 12.8333 5.83268 12.8333H11.666C12.3103 12.8333 12.8327 12.311 12.8327 11.6666V5.83329C12.8327 5.18896 12.3103 4.66663 11.666 4.66663Z\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M2.33268 9.33329C1.69102 9.33329 1.16602 8.80829 1.16602 8.16663V2.33329C1.16602 1.69163 1.69102 1.16663 2.33268 1.16663H8.16602C8.80768 1.16663 9.33268 1.69163 9.33268 2.33329\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg></button>\n <button type=\"button\" (click)=\"onDelete(); $event.stopPropagation()\" title=\"Delete\" class=\"cqa-p-0 cqa-text-[#ff6467] hover:cqa-text-[#C63535]\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M1.75 3.5H12.25\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.0827 3.5V11.6667C11.0827 12.25 10.4993 12.8333 9.91602 12.8333H4.08268C3.49935 12.8333 2.91602 12.25 2.91602 11.6667V3.5\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M4.66602 3.49996V2.33329C4.66602 1.74996 5.24935 1.16663 5.83268 1.16663H8.16602C8.74935 1.16663 9.33268 1.74996 9.33268 2.33329V3.49996\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M5.83398 6.41663V9.91663\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8.16602 6.41663V9.91663\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg></button>\n </div>\n <!-- Created Date (from API) - last so aligned across all steps, format: 25 Feb 2026 -->\n <span *ngIf=\"config.createdDate\" class=\"cqa-text-[#6B7280] cqa-text-[12px] cqa-leading-[15px] cqa-ml-auto cqa-flex-shrink-0\">\n {{ config.createdDate | date:'d MMM yyyy' }}\n </span>\n </div>\n</div>\n", styles: [".step-actions{opacity:0;transition:opacity .15s ease}.step-row:hover .step-actions{opacity:1}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "date": i1.DatePipe } });
|
|
69
68
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TestCaseUploadStepComponent, decorators: [{
|
|
70
69
|
type: Component,
|
|
71
70
|
args: [{ selector: 'cqa-test-case-upload-step', host: { class: 'cqa-ui-root' }, styles: [STEP_ROW_ACTIONS_STYLES], template: "<div [class]=\"'step-row cqa-flex cqa-items-center cqa-gap-3 cqa-py-[12.5px] ' + (isInsideLoop && isInsideStepGroup ? 'cqa-pl-20 cqa-pr-4' : (isInsideLoop || isInsideStepGroup) ? 'cqa-pl-10 cqa-pr-4' : 'cqa-px-4')\" style=\"border-top: 1px solid #E5E7EB;\">\n <div class=\"cqa-inline-flex cqa-items-center\">\n <!-- Drag Handle Icon (when isReorder is true and not inside step group - steps inside step groups cannot be reordered) -->\n <div *ngIf=\"isReorder && !isInsideStepGroup\" class=\"cqa-mr-2 cqa-cursor-move cqa-text-[#6B7280] hover:cqa-text-[#111827]\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"3\" cy=\"3\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"8\" cy=\"3\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"13\" cy=\"3\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"3\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"8\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"13\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"3\" cy=\"13\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"8\" cy=\"13\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"13\" cy=\"13\" r=\"1.5\" fill=\"currentColor\"/>\n </svg>\n </div>\n <!-- Checkbox (when isReorder is false or inside step group - steps inside step groups cannot be reordered) -->\n <label *ngIf=\"!isReorder || isInsideStepGroup\" class=\"cqa-flex cqa-items-center cqa-cursor-pointer cqa-relative cqa-mr-2\">\n <input type=\"checkbox\"\n [ngModel]=\"selected\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onSelectionChange($event)\"\n class=\"cqa-h-4 cqa-w-4 cqa-cursor-pointer cqa-transition-all cqa-appearance-none cqa-rounded shadow hover:cqa-shadow-md cqa-border cqa-border-solid cqa-border-slate-300 cqa-flex-shrink-0\"\n [class.cqa-bg-[#3F43EE]]=\"selected\"\n [class.cqa-border-[#3F43EE]]=\"selected\"\n id=\"check\" />\n <span class=\"cqa-absolute cqa-text-white cqa-top-1/2 cqa-left-1/2 cqa--translate-x-1/2 cqa--translate-y-1/2 cqa-pointer-events-none cqa-flex cqa-items-center cqa-justify-center\"\n [class.cqa-opacity-0]=\"!selected\"\n [class.cqa-opacity-100]=\"selected\">\n <svg width=\"12\" height=\"13\" viewBox=\"0 0 12 13\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10 3.125L4.5 8.625L2 6.125\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </span>\n </label>\n </div>\n <span class=\"cqa-text-[#6B7280] cqa-text-[14px] cqa-leading-[18px] cqa-min-w-[32px]\">{{ stepNumber }}</span>\n <span title=\"Upload\" class=\"cqa-w-8 cqa-h-8 cqa-rounded-lg cqa-flex cqa-items-center cqa-justify-center cqa-flex-shrink-0 cqa-bg-[#DBEAFE] cqa-text-[#2563EB]\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.25 8.75V11.0833C12.25 11.3928 12.1271 11.6895 11.9083 11.9083C11.6895 12.1271 11.3928 12.25 11.0833 12.25H2.91667C2.60725 12.25 2.3105 12.1271 2.09171 11.9083C1.87292 11.6895 1.75 11.3928 1.75 11.0833V8.75\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M9.91667 4.66667L7 1.75L4.08333 4.66667\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7 1.75V8.75\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </span>\n <span class=\"cqa-text-[#111827] cqa-text-[14px] cqa-leading-[18px]\">Upload file to</span>\n <span class=\"cqa-py-0.5 cqa-px-2 cqa-text-[#2563EB] cqa-text-[14px] cqa-leading-[17px] cqa-font-semibold cqa-border cqa-border-solid cqa-border-[#93C5FD] cqa-rounded cqa-bg-[#DBEAFE]\">{{ selector }}</span>\n <span class=\"cqa-text-[#6B7280] cqa-text-[14px] cqa-leading-[18px]\">File:</span>\n <span class=\"cqa-text-[#111827] cqa-text-[14px] cqa-leading-[18px]\">{{ fileName }}</span>\n <span class=\"cqa-text-[#6B7280] cqa-text-[14px] cqa-leading-[18px]\">Source:</span>\n <span class=\"cqa-text-[#111827] cqa-text-[14px] cqa-leading-[18px]\">{{ source }}</span>\n <span class=\"cqa-text-[#6B7280] cqa-text-[14px] cqa-leading-[18px]\">{{ sourcePath }}</span>\n <div class=\"cqa-flex-grow\"></div>\n <div class=\"cqa-flex cqa-items-center cqa-gap-3\">\n <!-- View Details Link (show only if description is not empty) -->\n <a *ngIf=\"config.description && config.description.trim() !== ''\" #viewDetailsTrigger href=\"#\" (click)=\"onViewDetails($event)\" class=\"cqa-text-[#3F43EE] cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-flex cqa-items-center cqa-gap-2 cqa-no-underline\">View Details<svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.03809 6.74329L2.62809 7.33329L5.96142 3.99996L2.62809 0.666626L2.03809 1.25663L4.78142 3.99996L2.03809 6.74329Z\" fill=\"#3F43EE\"/></svg></a>\n <div *ngIf=\"!isInsideStepGroup && !isReorder\" class=\"step-actions cqa-flex cqa-items-center cqa-gap-3 cqa-px-[7px]\">\n <button type=\"button\" (click)=\"onEdit(); $event.stopPropagation()\" title=\"Edit\" class=\"cqa-p-0 cqa-text-[#99A1Af] hover:cqa-text-[#1447E6]\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M7 11.6666H12.25\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M9.55208 2.1128C9.7843 1.88058 10.0993 1.75012 10.4277 1.75012C10.7561 1.75012 11.071 1.88058 11.3033 2.1128C11.5355 2.34502 11.6659 2.65998 11.6659 2.98838C11.6659 3.31679 11.5355 3.63175 11.3033 3.86397L4.29742 10.8704C4.15864 11.0092 3.9871 11.1107 3.79867 11.1656L2.12333 11.6544C2.07314 11.669 2.01993 11.6699 1.96928 11.6569C1.91863 11.6439 1.8724 11.6176 1.83543 11.5806C1.79846 11.5437 1.7721 11.4974 1.75913 11.4468C1.74615 11.3961 1.74703 11.3429 1.76167 11.2927L2.2505 9.61738C2.30546 9.42916 2.40698 9.25783 2.54567 9.11922L9.55208 2.1128Z\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg></button>\n <!-- <button type=\"button\" (click)=\"onLink(); $event.stopPropagation()\" title=\"Link\" class=\"cqa-p-0 cqa-text-[#99A1Af] hover:cqa-text-[#1447E6]\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.00065 9.91671H3.66732C2.78326 9.91671 1.93542 9.60942 1.3103 9.06244C0.685174 8.51545 0.333984 7.77359 0.333984 7.00004C0.333984 6.22649 0.685174 5.48463 1.3103 4.93765C1.93542 4.39066 2.78326 4.08337 3.66732 4.08337H5.00065\" stroke=\"currentColor\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M9 4.08337H10.3333C11.2174 4.08337 12.0652 4.39066 12.6904 4.93765C13.3155 5.48463 13.6667 6.22649 13.6667 7.00004C13.6667 7.77359 13.3155 8.51545 12.6904 9.06244C12.0652 9.60942 11.2174 9.91671 10.3333 9.91671H9\" stroke=\"currentColor\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M4.33398 7H9.66732\" stroke=\"currentColor\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg></button> -->\n <button type=\"button\" (click)=\"onDuplicate(); $event.stopPropagation()\" title=\"Duplicate\" class=\"cqa-p-0 cqa-text-[#99A1Af] hover:cqa-text-[#1447E6]\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.666 4.66663H5.83268C5.18835 4.66663 4.66602 5.18896 4.66602 5.83329V11.6666C4.66602 12.311 5.18835 12.8333 5.83268 12.8333H11.666C12.3103 12.8333 12.8327 12.311 12.8327 11.6666V5.83329C12.8327 5.18896 12.3103 4.66663 11.666 4.66663Z\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M2.33268 9.33329C1.69102 9.33329 1.16602 8.80829 1.16602 8.16663V2.33329C1.16602 1.69163 1.69102 1.16663 2.33268 1.16663H8.16602C8.80768 1.16663 9.33268 1.69163 9.33268 2.33329\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg></button>\n <button type=\"button\" (click)=\"onDelete(); $event.stopPropagation()\" title=\"Delete\" class=\"cqa-p-0 cqa-text-[#ff6467] hover:cqa-text-[#C63535]\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M1.75 3.5H12.25\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M11.0827 3.5V11.6667C11.0827 12.25 10.4993 12.8333 9.91602 12.8333H4.08268C3.49935 12.8333 2.91602 12.25 2.91602 11.6667V3.5\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M4.66602 3.49996V2.33329C4.66602 1.74996 5.24935 1.16663 5.83268 1.16663H8.16602C8.74935 1.16663 9.33268 1.74996 9.33268 2.33329V3.49996\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M5.83398 6.41663V9.91663\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8.16602 6.41663V9.91663\" stroke=\"currentColor\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg></button>\n </div>\n <!-- Created Date (from API) - last so aligned across all steps, format: 25 Feb 2026 -->\n <span *ngIf=\"config.createdDate\" class=\"cqa-text-[#6B7280] cqa-text-[12px] cqa-leading-[15px] cqa-ml-auto cqa-flex-shrink-0\">\n {{ config.createdDate | date:'d MMM yyyy' }}\n </span>\n </div>\n</div>\n" }]
|
|
@@ -73,6 +72,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
73
72
|
type: Input
|
|
74
73
|
}], stepNumber: [{
|
|
75
74
|
type: Input
|
|
75
|
+
}], index: [{
|
|
76
|
+
type: Input
|
|
76
77
|
}], selector: [{
|
|
77
78
|
type: Input
|
|
78
79
|
}], fileName: [{
|
|
@@ -115,4 +116,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
115
116
|
}], selectionChange: [{
|
|
116
117
|
type: Output
|
|
117
118
|
}] } });
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLXN0ZXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0LWNhc2UtZGV0YWlscy91cGxvYWQtc3RlcC91cGxvYWQtc3RlcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3VwbG9hZC1zdGVwL3VwbG9hZC1zdGVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQVUsU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBRXRHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBU3JFLE1BQU0sT0FBTywyQkFBMkI7SUEwQnRDO1FBdkJTLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFDdEIsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUN0QixXQUFNLEdBQXFDLGNBQWMsQ0FBQztRQUMxRCxlQUFVLEdBQVcsRUFBRSxDQUFDO1FBRXhCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBSTFCLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ2hDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQStDLENBQUM7UUFDOUUsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDaEMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDckMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDbEMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFB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QUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDOzt3SEFyRS9GLDJCQUEyQjs0R0FBM0IsMkJBQTJCLDJ2QkNYeEMsNmpUQTREQTsyRkRqRGEsMkJBQTJCO2tCQU52QyxTQUFTOytCQUNFLDJCQUEyQixRQUUvQixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsVUFDdEIsQ0FBQyx1QkFBdUIsQ0FBQzswRUFHeEIsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFOEMsa0JBQWtCO3NCQUFyRSxTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFeEMsSUFBSTtzQkFBYixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVcGxvYWRTdGVwQ29uZmlnLCBUZXN0Q2FzZVN0ZXBDb25maWcgfSBmcm9tICcuLi90ZXN0LWNhc2Utc3RlcC5tb2RlbHMnO1xuaW1wb3J0IHsgU1RFUF9ST1dfQUNUSU9OU19TVFlMRVMgfSBmcm9tICcuLi9zdGVwLXJvdy1hY3Rpb25zLnN0eWxlcyc7XG5pbXBvcnQgeyBWaWV3RGV0YWlsc1BheWxvYWQgfSBmcm9tICcuLi9zdGVwLWRldGFpbHMtbW9kYWwvc3RlcC1kZXRhaWxzLW1vZGFsLWRhdGEnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtdGVzdC1jYXNlLXVwbG9hZC1zdGVwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3VwbG9hZC1zdGVwLmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9LFxuICBzdHlsZXM6IFtTVEVQX1JPV19BQ1RJT05TX1NUWUxFU10sXG59KVxuZXhwb3J0IGNsYXNzIFRlc3RDYXNlVXBsb2FkU3RlcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGNvbmZpZyE6IFVwbG9hZFN0ZXBDb25maWc7XG4gIEBJbnB1dCgpIHN0ZXBOdW1iZXIhOiBudW1iZXIgfCBzdHJpbmc7XG4gIEBJbnB1dCgpIHNlbGVjdG9yOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZmlsZU5hbWU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzb3VyY2U6ICdEYXRhIExpYnJhcnknIHwgJ0xvY2FsJyB8ICdVUkwnID0gJ0RhdGEgTGlicmFyeSc7XG4gIEBJbnB1dCgpIHNvdXJjZVBhdGg6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgQElucHV0KCkgc2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaXNOZXN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaXNJbnNpZGVTdGVwR3JvdXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaXNJbnNpZGVMb29wOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzUmVvcmRlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ3ZpZXdEZXRhaWxzVHJpZ2dlcicsIHsgc3RhdGljOiBmYWxzZSB9KSB2aWV3RGV0YWlsc1RyaWdnZXI/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBAT3V0cHV0KCkgZWRpdCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGVkaXRJbkRlcHRoID0gbmV3IEV2ZW50RW1pdHRlcjx7IHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZzsgaW5kZXg6IG51bWJlciB9PigpO1xuICBAT3V0cHV0KCkgbGluayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGR1cGxpY2F0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGRlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIG1vcmVPcHRpb25zID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgdmlld0RldGFpbHMgPSBuZXcgRXZlbnRFbWl0dGVyPFZpZXdEZXRhaWxzUGF5bG9hZD4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnKSB7XG4gICAgICB0aGlzLnN0ZXBOdW1iZXIgPSB0aGlzLmNvbmZpZy5zdGVwTnVtYmVyO1xuICAgICAgdGhpcy5zZWxlY3RvciA9IHRoaXMuY29uZmlnLnNlbGVjdG9yO1xuICAgICAgdGhpcy5maWxlTmFtZSA9IHRoaXMuY29uZmlnLmZpbGVOYW1lO1xuICAgICAgdGhpcy5zb3VyY2UgPSB0aGlzLmNvbmZpZy5zb3VyY2U7XG4gICAgICB0aGlzLnNvdXJjZVBhdGggPSB0aGlzLmNvbmZpZy5zb3VyY2VQYXRoO1xuICAgICAgdGhpcy5kZXNjcmlwdGlvbiA9IHRoaXMuY29uZmlnLmRlc2NyaXB0aW9uO1xuICAgICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMuY29uZmlnLnNlbGVjdGVkIHx8IGZhbHNlO1xuICAgICAgdGhpcy5kaXNhYmxlZCA9IHRoaXMuY29uZmlnLmRpc2FibGVkIHx8IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIG9uRWRpdCgpOiB2b2lkIHtcbiAgICAvLyBFbWl0IGVkaXRJbkRlcHRoIGZvciBVcGxvYWQgc3RlcHMgKGV4Y2VwdCBjb25kaXRpb24gYW5kIGxvb3Agd2hpY2ggaGFuZGxlIGl0IGRpZmZlcmVudGx5KVxuICAgIGNvbnN0IGluZGV4ID0gdHlwZW9mIHRoaXMuc3RlcE51bWJlciA9PT0gJ251bWJlcicgPyB0aGlzLnN0ZXBOdW1iZXIgLSAxIDogKHR5cGVvZiB0aGlzLnN0ZXBOdW1iZXIgPT09ICdzdHJpbmcnID8gcGFyc2VJbnQodGhpcy5zdGVwTnVtYmVyLCAxMCkgLSAxIDogMCk7XG4gICAgdGhpcy5lZGl0SW5EZXB0aC5lbWl0KHsgc3RlcDogdGhpcy5jb25maWcgYXMgVGVzdENhc2VTdGVwQ29uZmlnLCBpbmRleDogaXNOYU4oaW5kZXgpID8gMCA6IGluZGV4IH0pO1xuICAgIHRoaXMuZWRpdC5lbWl0KCk7XG4gIH1cbiAgb25MaW5rKCk6IHZvaWQgeyB0aGlzLmxpbmsuZW1pdCgpOyB9XG4gIG9uRHVwbGljYXRlKCk6IHZvaWQgeyB0aGlzLmR1cGxpY2F0ZS5lbWl0KCk7IH1cbiAgb25EZWxldGUoKTogdm9pZCB7IHRoaXMuZGVsZXRlLmVtaXQoKTsgfVxuICBvbk1vcmVPcHRpb25zKCk6IHZvaWQgeyB0aGlzLm1vcmVPcHRpb25zLmVtaXQoKTsgfVxuICBvblZpZXdEZXRhaWxzKGV2ZW50PzogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgICBcbiAgICBpZiAoIXRoaXMuY29uZmlnLmRlc2NyaXB0aW9uIHx8IHRoaXMuY29uZmlnLmRlc2NyaXB0aW9uLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIHRoaXMudmlld0RldGFpbHMuZW1pdCh7XG4gICAgICAgIGV2ZW50LFxuICAgICAgICB0aXRsZTogJ1VwbG9hZCBTdGVwIERldGFpbHMnLFxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5jb25maWcuZGVzY3JpcHRpb24sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgb25TZWxlY3Rpb25DaGFuZ2UoY2hlY2tlZDogYm9vbGVhbik6IHZvaWQgeyB0aGlzLnNlbGVjdGVkID0gY2hlY2tlZDsgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChjaGVja2VkKTsgfVxufVxuIiwiPGRpdiBbY2xhc3NdPVwiJ3N0ZXAtcm93IGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zIGNxYS1weS1bMTIuNXB4XSAnICsgKGlzSW5zaWRlTG9vcCAmJiBpc0luc2lkZVN0ZXBHcm91cCA/ICdjcWEtcGwtMjAgY3FhLXByLTQnIDogKGlzSW5zaWRlTG9vcCB8fCBpc0luc2lkZVN0ZXBHcm91cCkgPyAnY3FhLXBsLTEwIGNxYS1wci00JyA6ICdjcWEtcHgtNCcpXCIgc3R5bGU9XCJib3JkZXItdG9wOiAxcHggc29saWQgI0U1RTdFQjtcIj5cbiAgPGRpdiBjbGFzcz1cImNxYS1pbmxpbmUtZmxleCBjcWEtaXRlbXMtY2VudGVyXCI+XG4gICAgPCEtLSBEcmFnIEhhbmRsZSBJY29uICh3aGVuIGlzUmVvcmRlciBpcyB0cnVlIGFuZCBub3QgaW5zaWRlIHN0ZXAgZ3JvdXAgLSBzdGVwcyBpbnNpZGUgc3RlcCBncm91cHMgY2Fubm90IGJlIHJlb3JkZXJlZCkgLS0+XG4gICAgPGRpdiAqbmdJZj1cImlzUmVvcmRlciAmJiAhaXNJbnNpZGVTdGVwR3JvdXBcIiBjbGFzcz1cImNxYS1tci0yIGNxYS1jdXJzb3ItbW92ZSBjcWEtdGV4dC1bIzZCNzI4MF0gaG92ZXI6Y3FhLXRleHQtWyMxMTE4MjddXCI+XG4gICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgPGNpcmNsZSBjeD1cIjNcIiBjeT1cIjNcIiByPVwiMS41XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiLz5cbiAgICAgICAgPGNpcmNsZSBjeD1cIjhcIiBjeT1cIjNcIiByPVwiMS41XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiLz5cbiAgICAgICAgPGNpcmNsZSBjeD1cIjEzXCIgY3k9XCIzXCIgcj1cIjEuNVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIi8+XG4gICAgICAgIDxjaXJjbGUgY3g9XCIzXCIgY3k9XCI4XCIgcj1cIjEuNVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIi8+XG4gICAgICAgIDxjaXJjbGUgY3g9XCI4XCIgY3k9XCI4XCIgcj1cIjEuNVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIi8+XG4gICAgICAgIDxjaXJjbGUgY3g9XCIxM1wiIGN5PVwiOFwiIHI9XCIxLjVcIiBmaWxsPVwiY3VycmVudENvbG9yXCIvPlxuICAgICAgICA8Y2lyY2xlIGN4PVwiM1wiIGN5PVwiMTNcIiByPVwiMS41XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiLz5cbiAgICAgICAgPGNpcmNsZSBjeD1cIjhcIiBjeT1cIjEzXCIgcj1cIjEuNVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIi8+XG4gICAgICAgIDxjaXJjbGUgY3g9XCIxM1wiIGN5PVwiMTNcIiByPVwiMS41XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gQ2hlY2tib3ggKHdoZW4gaXNSZW9yZGVyIGlzIGZhbHNlIG9yIGluc2lkZSBzdGVwIGdyb3VwIC0gc3RlcHMgaW5zaWRlIHN0ZXAgZ3JvdXBzIGNhbm5vdCBiZSByZW9yZGVyZWQpIC0tPlxuICAgIDxsYWJlbCAqbmdJZj1cIiFpc1Jlb3JkZXIgfHwgaXNJbnNpZGVTdGVwR3JvdXBcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWN1cnNvci1wb2ludGVyIGNxYS1yZWxhdGl2ZSBjcWEtbXItMlwiPlxuICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgIFtuZ01vZGVsXT1cInNlbGVjdGVkXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIGNsYXNzPVwiY3FhLWgtNCBjcWEtdy00IGNxYS1jdXJzb3ItcG9pbnRlciBjcWEtdHJhbnNpdGlvbi1hbGwgY3FhLWFwcGVhcmFuY2Utbm9uZSBjcWEtcm91bmRlZCBzaGFkb3cgaG92ZXI6Y3FhLXNoYWRvdy1tZCBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1zbGF0ZS0zMDAgY3FhLWZsZXgtc2hyaW5rLTBcIlxuICAgICAgICBbY2xhc3MuY3FhLWJnLVsjM0Y0M0VFXV09XCJzZWxlY3RlZFwiXG4gICAgICAgIFtjbGFzcy5jcWEtYm9yZGVyLVsjM0Y0M0VFXV09XCJzZWxlY3RlZFwiXG4gICAgICAgIGlkPVwiY2hlY2tcIiAvPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtYWJzb2x1dGUgY3FhLXRleHQtd2hpdGUgY3FhLXRvcC0xLzIgY3FhLWxlZnQtMS8yIGNxYS0tdHJhbnNsYXRlLXgtMS8yIGNxYS0tdHJhbnNsYXRlLXktMS8yIGNxYS1wb2ludGVyLWV2ZW50cy1ub25lIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyXCJcbiAgICAgICAgW2NsYXNzLmNxYS1vcGFjaXR5LTBdPVwiIXNlbGVjdGVkXCJcbiAgICAgICAgW2NsYXNzLmNxYS1vcGFjaXR5LTEwMF09XCJzZWxlY3RlZFwiPlxuICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxM1wiIHZpZXdCb3g9XCIwIDAgMTIgMTNcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTEwIDMuMTI1TDQuNSA4LjYyNUwyIDYuMTI1XCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG4gIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyM2QjcyODBdIGNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMThweF0gY3FhLW1pbi13LVszMnB4XVwiPnt7IHN0ZXBOdW1iZXIgfX08L3NwYW4+XG4gIDxzcGFuIHRpdGxlPVwiVXBsb2FkXCIgY2xhc3M9XCJjcWEtdy04IGNxYS1oLTggY3FhLXJvdW5kZWQtbGcgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWZsZXgtc2hyaW5rLTAgY3FhLWJnLVsjREJFQUZFXSBjcWEtdGV4dC1bIzI1NjNFQl1cIj5cbiAgICA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTEyLjI1IDguNzVWMTEuMDgzM0MxMi4yNSAxMS4zOTI4IDEyLjEyNzEgMTEuNjg5NSAxMS45MDgzIDExLjkwODNDMTEuNjg5NSAxMi4xMjcxIDExLjM5MjggMTIuMjUgMTEuMDgzMyAxMi4yNUgyLjkxNjY3QzIuNjA3MjUgMTIuMjUgMi4zMTA1IDEyLjEyNzEgMi4wOTE3MSAxMS45MDgzQzEuODcyOTIgMTEuNjg5NSAxLjc1IDExLjM5MjggMS43NSAxMS4wODMzVjguNzVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNOS45MTY2NyA0LjY2NjY3TDcgMS43NUw0LjA4MzMzIDQuNjY2NjdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNyAxLjc1VjguNzVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICA8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyMxMTE4MjddIGNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMThweF1cIj5VcGxvYWQgZmlsZSB0bzwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJjcWEtcHktMC41IGNxYS1weC0yIGNxYS10ZXh0LVsjMjU2M0VCXSBjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzE3cHhdIGNxYS1mb250LXNlbWlib2xkIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjOTNDNUZEXSBjcWEtcm91bmRlZCBjcWEtYmctWyNEQkVBRkVdXCI+e3sgc2VsZWN0b3IgfX08L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyM2QjcyODBdIGNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMThweF1cIj5GaWxlOjwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bIzExMTgyN10gY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsxOHB4XVwiPnt7IGZpbGVOYW1lIH19PC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsjNkI3MjgwXSBjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzE4cHhdXCI+U291cmNlOjwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bIzExMTgyN10gY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsxOHB4XVwiPnt7IHNvdXJjZSB9fTwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bIzZCNzI4MF0gY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsxOHB4XVwiPnt7IHNvdXJjZVBhdGggfX08L3NwYW4+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleC1ncm93XCI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtM1wiPlxuICAgIDwhLS0gVmlldyBEZXRhaWxzIExpbmsgKHNob3cgb25seSBpZiBkZXNjcmlwdGlvbiBpcyBub3QgZW1wdHkpIC0tPlxuICAgIDxhICpuZ0lmPVwiY29uZmlnLmRlc2NyaXB0aW9uICYmIGNvbmZpZy5kZXNjcmlwdGlvbi50cmltKCkgIT09ICcnXCIgI3ZpZXdEZXRhaWxzVHJpZ2dlciBocmVmPVwiI1wiIChjbGljayk9XCJvblZpZXdEZXRhaWxzKCRldmVudClcIiBjbGFzcz1cImNxYS10ZXh0LVsjM0Y0M0VFXSBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtbm8tdW5kZXJsaW5lXCI+VmlldyBEZXRhaWxzPHN2ZyB3aWR0aD1cIjhcIiBoZWlnaHQ9XCI4XCIgdmlld0JveD1cIjAgMCA4IDhcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTIuMDM4MDkgNi43NDMyOUwyLjYyODA5IDcuMzMzMjlMNS45NjE0MiAzLjk5OTk2TDIuNjI4MDkgMC42NjY2MjZMMi4wMzgwOSAxLjI1NjYzTDQuNzgxNDIgMy45OTk5NkwyLjAzODA5IDYuNzQzMjlaXCIgZmlsbD1cIiMzRjQzRUVcIi8+PC9zdmc+PC9hPlxuICAgIDxkaXYgKm5nSWY9XCIhaXNJbnNpZGVTdGVwR3JvdXAgJiYgIWlzUmVvcmRlclwiIGNsYXNzPVwic3RlcC1hY3Rpb25zIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zIGNxYS1weC1bN3B4XVwiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkVkaXQoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgdGl0bGU9XCJFZGl0XCIgY2xhc3M9XCJjcWEtcC0wIGNxYS10ZXh0LVsjOTlBMUFmXSBob3ZlcjpjcWEtdGV4dC1bIzE0NDdFNl1cIj48c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTcgMTEuNjY2NkgxMi4yNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk05LjU1MjA4IDIuMTEyOEM5Ljc4NDMgMS44ODA1OCAxMC4wOTkzIDEuNzUwMTIgMTAuNDI3NyAxLjc1MDEyQzEwLjc1NjEgMS43NTAxMiAxMS4wNzEgMS44ODA1OCAxMS4zMDMzIDIuMTEyOEMxMS41MzU1IDIuMzQ1MDIgMTEuNjY1OSAyLjY1OTk4IDExLjY2NTkgMi45ODgzOEMxMS42NjU5IDMuMzE2NzkgMTEuNTM1NSAzLjYzMTc1IDExLjMwMzMgMy44NjM5N0w0LjI5NzQyIDEwLjg3MDRDNC4xNTg2NCAxMS4wMDkyIDMuOTg3MSAxMS4xMTA3IDMuNzk4NjcgMTEuMTY1NkwyLjEyMzMzIDExLjY1NDRDMi4wNzMxNCAxMS42NjkgMi4wMTk5MyAxMS42Njk5IDEuOTY5MjggMTEuNjU2OUMxLjkxODYzIDExLjY0MzkgMS44NzI0IDExLjYxNzYgMS44MzU0MyAxMS41ODA2QzEuNzk4NDYgMTEuNTQzNyAxLjc3MjEgMTEuNDk3NCAxLjc1OTEzIDExLjQ0NjhDMS43NDYxNSAxMS4zOTYxIDEuNzQ3MDMgMTEuMzQyOSAxLjc2MTY3IDExLjI5MjdMMi4yNTA1IDkuNjE3MzhDMi4zMDU0NiA5LjQyOTE2IDIuNDA2OTggOS4yNTc4MyAyLjU0NTY3IDkuMTE5MjJMOS41NTIwOCAyLjExMjhaXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz48L2J1dHRvbj5cbiAgICA8IS0tIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkxpbmsoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgdGl0bGU9XCJMaW5rXCIgY2xhc3M9XCJjcWEtcC0wIGNxYS10ZXh0LVsjOTlBMUFmXSBob3ZlcjpjcWEtdGV4dC1bIzE0NDdFNl1cIj48c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTUuMDAwNjUgOS45MTY3MUgzLjY2NzMyQzIuNzgzMjYgOS45MTY3MSAxLjkzNTQyIDkuNjA5NDIgMS4zMTAzIDkuMDYyNDRDMC42ODUxNzQgOC41MTU0NSAwLjMzMzk4NCA3Ljc3MzU5IDAuMzMzOTg0IDcuMDAwMDRDMC4zMzM5ODQgNi4yMjY0OSAwLjY4NTE3NCA1LjQ4NDYzIDEuMzEwMyA0LjkzNzY1QzEuOTM1NDIgNC4zOTA2NiAyLjc4MzI2IDQuMDgzMzcgMy42NjczMiA0LjA4MzM3SDUuMDAwNjVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNOSA0LjA4MzM3SDEwLjMzMzNDMTEuMjE3NCA0LjA4MzM3IDEyLjA2NTIgNC4zOTA2NiAxMi42OTA0IDQuOTM3NjVDMTMuMzE1NSA1LjQ4NDYzIDEzLjY2NjcgNi4yMjY0OSAxMy42NjY3IDcuMDAwMDRDMTMuNjY2NyA3Ljc3MzU5IDEzLjMxNTUgOC41MTU0NSAxMi42OTA0IDkuMDYyNDRDMTIuMDY1MiA5LjYwOTQyIDExLjIxNzQgOS45MTY3MSAxMC4zMzMzIDkuOTE2NzFIOVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk00LjMzMzk4IDdIOS42NjczMlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+PC9idXR0b24+IC0tPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkR1cGxpY2F0ZSgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiB0aXRsZT1cIkR1cGxpY2F0ZVwiIGNsYXNzPVwiY3FhLXAtMCBjcWEtdGV4dC1bIzk5QTFBZl0gaG92ZXI6Y3FhLXRleHQtWyMxNDQ3RTZdXCI+PHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xMS42NjYgNC42NjY2M0g1LjgzMjY4QzUuMTg4MzUgNC42NjY2MyA0LjY2NjAyIDUuMTg4OTYgNC42NjYwMiA1LjgzMzI5VjExLjY2NjZDNC42NjYwMiAxMi4zMTEgNS4xODgzNSAxMi44MzMzIDUuODMyNjggMTIuODMzM0gxMS42NjZDMTIuMzEwMyAxMi44MzMzIDEyLjgzMjcgMTIuMzExIDEyLjgzMjcgMTEuNjY2NlY1LjgzMzI5QzEyLjgzMjcgNS4xODg5NiAxMi4zMTAzIDQuNjY2NjMgMTEuNjY2IDQuNjY2NjNaXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTIuMzMyNjggOS4zMzMyOUMxLjY5MTAyIDkuMzMzMjkgMS4xNjYwMiA4LjgwODI5IDEuMTY2MDIgOC4xNjY2M1YyLjMzMzI5QzEuMTY2MDIgMS42OTE2MyAxLjY5MTAyIDEuMTY2NjMgMi4zMzI2OCAxLjE2NjYzSDguMTY2MDJDOC44MDc2OCAxLjE2NjYzIDkuMzMyNjggMS42OTE2MyA5LjMzMjY4IDIuMzMzMjlcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPjwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkRlbGV0ZSgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiB0aXRsZT1cIkRlbGV0ZVwiIGNsYXNzPVwiY3FhLXAtMCBjcWEtdGV4dC1bI2ZmNjQ2N10gaG92ZXI6Y3FhLXRleHQtWyNDNjM1MzVdXCI+PHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xLjc1IDMuNUgxMi4yNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk0xMS4wODI3IDMuNVYxMS42NjY3QzExLjA4MjcgMTIuMjUgMTAuNDk5MyAxMi44MzMzIDkuOTE2MDIgMTIuODMzM0g0LjA4MjY4QzMuNDk5MzUgMTIuODMzMyAyLjkxNjAyIDEyLjI1IDIuOTE2MDIgMTEuNjY2N1YzLjVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNC42NjYwMiAzLjQ5OTk2VjIuMzMzMjlDNC42NjYwMiAxLjc0OTk2IDUuMjQ5MzUgMS4xNjY2MyA1LjgzMjY4IDEuMTY2NjNIOC4xNjYwMkM4Ljc0OTM1IDEuMTY2NjMgOS4zMzI2OCAxLjc0OTk2IDkuMzMyNjggMi4zMzMyOVYzLjQ5OTk2XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTUuODMzOTggNi40MTY2M1Y5LjkxNjYzXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTguMTY2MDIgNi40MTY2M1Y5LjkxNjYzXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz48L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIENyZWF0ZWQgRGF0ZSAoZnJvbSBBUEkpIC0gbGFzdCBzbyBhbGlnbmVkIGFjcm9zcyBhbGwgc3RlcHMsIGZvcm1hdDogMjUgRmViIDIwMjYgLS0+XG4gICAgPHNwYW4gKm5nSWY9XCJjb25maWcuY3JlYXRlZERhdGVcIiBjbGFzcz1cImNxYS10ZXh0LVsjNkI3MjgwXSBjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1tbC1hdXRvIGNxYS1mbGV4LXNocmluay0wXCI+XG4gICAgICB7eyBjb25maWcuY3JlYXRlZERhdGUgfCBkYXRlOidkIE1NTSB5eXl5JyB9fVxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLXN0ZXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0LWNhc2UtZGV0YWlscy91cGxvYWQtc3RlcC91cGxvYWQtc3RlcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3VwbG9hZC1zdGVwL3VwbG9hZC1zdGVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQVUsU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBRXRHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBU3JFLE1BQU0sT0FBTywyQkFBMkI7SUEyQnRDO1FBdkJTLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFDdEIsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUN0QixXQUFNLEdBQXFDLGNBQWMsQ0FBQztRQUMxRCxlQUFVLEdBQVcsRUFBRSxDQUFDO1FBRXhCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBSTFCLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ2hDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQStDLENBQUM7UUFDOUUsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDaEMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDckMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDbEMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFB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Q0FBQyxPQUFnQixJQUFVLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDOzt3SEFyRS9GLDJCQUEyQjs0R0FBM0IsMkJBQTJCLDJ3QkNYeEMsNmpUQTREQTsyRkRqRGEsMkJBQTJCO2tCQU52QyxTQUFTOytCQUNFLDJCQUEyQixRQUUvQixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsVUFDdEIsQ0FBQyx1QkFBdUIsQ0FBQzswRUFHeEIsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRThDLGtCQUFrQjtzQkFBckUsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRXhDLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVXBsb2FkU3RlcENvbmZpZywgVGVzdENhc2VTdGVwQ29uZmlnIH0gZnJvbSAnLi4vdGVzdC1jYXNlLXN0ZXAubW9kZWxzJztcbmltcG9ydCB7IFNURVBfUk9XX0FDVElPTlNfU1RZTEVTIH0gZnJvbSAnLi4vc3RlcC1yb3ctYWN0aW9ucy5zdHlsZXMnO1xuaW1wb3J0IHsgVmlld0RldGFpbHNQYXlsb2FkIH0gZnJvbSAnLi4vc3RlcC1kZXRhaWxzLW1vZGFsL3N0ZXAtZGV0YWlscy1tb2RhbC1kYXRhJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLXRlc3QtY2FzZS11cGxvYWQtc3RlcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi91cGxvYWQtc3RlcC5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHsgY2xhc3M6ICdjcWEtdWktcm9vdCcgfSxcbiAgc3R5bGVzOiBbU1RFUF9ST1dfQUNUSU9OU19TVFlMRVNdLFxufSlcbmV4cG9ydCBjbGFzcyBUZXN0Q2FzZVVwbG9hZFN0ZXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBjb25maWchOiBVcGxvYWRTdGVwQ29uZmlnO1xuICBASW5wdXQoKSBzdGVwTnVtYmVyITogbnVtYmVyIHwgc3RyaW5nO1xuICBASW5wdXQoKSBpbmRleD86IG51bWJlcjtcbiAgQElucHV0KCkgc2VsZWN0b3I6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBmaWxlTmFtZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHNvdXJjZTogJ0RhdGEgTGlicmFyeScgfCAnTG9jYWwnIHwgJ1VSTCcgPSAnRGF0YSBMaWJyYXJ5JztcbiAgQElucHV0KCkgc291cmNlUGF0aDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBASW5wdXQoKSBzZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpc05lc3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpc0luc2lkZVN0ZXBHcm91cDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpc0luc2lkZUxvb3A6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaXNSZW9yZGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgndmlld0RldGFpbHNUcmlnZ2VyJywgeyBzdGF0aWM6IGZhbHNlIH0pIHZpZXdEZXRhaWxzVHJpZ2dlcj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBPdXRwdXQoKSBlZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgZWRpdEluRGVwdGggPSBuZXcgRXZlbnRFbWl0dGVyPHsgc3RlcDogVGVzdENhc2VTdGVwQ29uZmlnOyBpbmRleDogbnVtYmVyIH0+KCk7XG4gIEBPdXRwdXQoKSBsaW5rID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgZHVwbGljYXRlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgZGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgbW9yZU9wdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSB2aWV3RGV0YWlscyA9IG5ldyBFdmVudEVtaXR0ZXI8Vmlld0RldGFpbHNQYXlsb2FkPigpO1xuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maWcpIHtcbiAgICAgIHRoaXMuc3RlcE51bWJlciA9IHRoaXMuY29uZmlnLnN0ZXBOdW1iZXI7XG4gICAgICB0aGlzLnNlbGVjdG9yID0gdGhpcy5jb25maWcuc2VsZWN0b3I7XG4gICAgICB0aGlzLmZpbGVOYW1lID0gdGhpcy5jb25maWcuZmlsZU5hbWU7XG4gICAgICB0aGlzLnNvdXJjZSA9IHRoaXMuY29uZmlnLnNvdXJjZTtcbiAgICAgIHRoaXMuc291cmNlUGF0aCA9IHRoaXMuY29uZmlnLnNvdXJjZVBhdGg7XG4gICAgICB0aGlzLmRlc2NyaXB0aW9uID0gdGhpcy5jb25maWcuZGVzY3JpcHRpb247XG4gICAgICB0aGlzLnNlbGVjdGVkID0gdGhpcy5jb25maWcuc2VsZWN0ZWQgfHwgZmFsc2U7XG4gICAgICB0aGlzLmRpc2FibGVkID0gdGhpcy5jb25maWcuZGlzYWJsZWQgfHwgZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgb25FZGl0KCk6IHZvaWQge1xuICAgIGNvbnN0IGlkeCA9IHR5cGVvZiB0aGlzLmluZGV4ID09PSAnbnVtYmVyJyA/IHRoaXMuaW5kZXggOiAodHlwZW9mIHRoaXMuc3RlcE51bWJlciA9PT0gJ251bWJlcicgPyB0aGlzLnN0ZXBOdW1iZXIgLSAxIDogKHR5cGVvZiB0aGlzLnN0ZXBOdW1iZXIgPT09ICdzdHJpbmcnID8gcGFyc2VJbnQodGhpcy5zdGVwTnVtYmVyLCAxMCkgLSAxIDogMCkpO1xuICAgIHRoaXMuZWRpdEluRGVwdGguZW1pdCh7IHN0ZXA6IHRoaXMuY29uZmlnIGFzIFRlc3RDYXNlU3RlcENvbmZpZywgaW5kZXg6IGlzTmFOKGlkeCBhcyBudW1iZXIpID8gMCA6IChpZHggYXMgbnVtYmVyKSB9KTtcbiAgICB0aGlzLmVkaXQuZW1pdCgpO1xuICB9XG4gIG9uTGluaygpOiB2b2lkIHsgdGhpcy5saW5rLmVtaXQoKTsgfVxuICBvbkR1cGxpY2F0ZSgpOiB2b2lkIHsgdGhpcy5kdXBsaWNhdGUuZW1pdCgpOyB9XG4gIG9uRGVsZXRlKCk6IHZvaWQgeyB0aGlzLmRlbGV0ZS5lbWl0KCk7IH1cbiAgb25Nb3JlT3B0aW9ucygpOiB2b2lkIHsgdGhpcy5tb3JlT3B0aW9ucy5lbWl0KCk7IH1cbiAgb25WaWV3RGV0YWlscyhldmVudD86IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgXG4gICAgaWYgKCF0aGlzLmNvbmZpZy5kZXNjcmlwdGlvbiB8fCB0aGlzLmNvbmZpZy5kZXNjcmlwdGlvbi50cmltKCkgPT09ICcnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICB0aGlzLnZpZXdEZXRhaWxzLmVtaXQoe1xuICAgICAgICBldmVudCxcbiAgICAgICAgdGl0bGU6ICdVcGxvYWQgU3RlcCBEZXRhaWxzJyxcbiAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuY29uZmlnLmRlc2NyaXB0aW9uLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIG9uU2VsZWN0aW9uQ2hhbmdlKGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHsgdGhpcy5zZWxlY3RlZCA9IGNoZWNrZWQ7IHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoY2hlY2tlZCk7IH1cbn1cbiIsIjxkaXYgW2NsYXNzXT1cIidzdGVwLXJvdyBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMyBjcWEtcHktWzEyLjVweF0gJyArIChpc0luc2lkZUxvb3AgJiYgaXNJbnNpZGVTdGVwR3JvdXAgPyAnY3FhLXBsLTIwIGNxYS1wci00JyA6IChpc0luc2lkZUxvb3AgfHwgaXNJbnNpZGVTdGVwR3JvdXApID8gJ2NxYS1wbC0xMCBjcWEtcHItNCcgOiAnY3FhLXB4LTQnKVwiIHN0eWxlPVwiYm9yZGVyLXRvcDogMXB4IHNvbGlkICNFNUU3RUI7XCI+XG4gIDxkaXYgY2xhc3M9XCJjcWEtaW5saW5lLWZsZXggY3FhLWl0ZW1zLWNlbnRlclwiPlxuICAgIDwhLS0gRHJhZyBIYW5kbGUgSWNvbiAod2hlbiBpc1Jlb3JkZXIgaXMgdHJ1ZSBhbmQgbm90IGluc2lkZSBzdGVwIGdyb3VwIC0gc3RlcHMgaW5zaWRlIHN0ZXAgZ3JvdXBzIGNhbm5vdCBiZSByZW9yZGVyZWQpIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJpc1Jlb3JkZXIgJiYgIWlzSW5zaWRlU3RlcEdyb3VwXCIgY2xhc3M9XCJjcWEtbXItMiBjcWEtY3Vyc29yLW1vdmUgY3FhLXRleHQtWyM2QjcyODBdIGhvdmVyOmNxYS10ZXh0LVsjMTExODI3XVwiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgIDxjaXJjbGUgY3g9XCIzXCIgY3k9XCIzXCIgcj1cIjEuNVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIi8+XG4gICAgICAgIDxjaXJjbGUgY3g9XCI4XCIgY3k9XCIzXCIgcj1cIjEuNVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIi8+XG4gICAgICAgIDxjaXJjbGUgY3g9XCIxM1wiIGN5PVwiM1wiIHI9XCIxLjVcIiBmaWxsPVwiY3VycmVudENvbG9yXCIvPlxuICAgICAgICA8Y2lyY2xlIGN4PVwiM1wiIGN5PVwiOFwiIHI9XCIxLjVcIiBmaWxsPVwiY3VycmVudENvbG9yXCIvPlxuICAgICAgICA8Y2lyY2xlIGN4PVwiOFwiIGN5PVwiOFwiIHI9XCIxLjVcIiBmaWxsPVwiY3VycmVudENvbG9yXCIvPlxuICAgICAgICA8Y2lyY2xlIGN4PVwiMTNcIiBjeT1cIjhcIiByPVwiMS41XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiLz5cbiAgICAgICAgPGNpcmNsZSBjeD1cIjNcIiBjeT1cIjEzXCIgcj1cIjEuNVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIi8+XG4gICAgICAgIDxjaXJjbGUgY3g9XCI4XCIgY3k9XCIxM1wiIHI9XCIxLjVcIiBmaWxsPVwiY3VycmVudENvbG9yXCIvPlxuICAgICAgICA8Y2lyY2xlIGN4PVwiMTNcIiBjeT1cIjEzXCIgcj1cIjEuNVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIi8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIENoZWNrYm94ICh3aGVuIGlzUmVvcmRlciBpcyBmYWxzZSBvciBpbnNpZGUgc3RlcCBncm91cCAtIHN0ZXBzIGluc2lkZSBzdGVwIGdyb3VwcyBjYW5ub3QgYmUgcmVvcmRlcmVkKSAtLT5cbiAgICA8bGFiZWwgKm5nSWY9XCIhaXNSZW9yZGVyIHx8IGlzSW5zaWRlU3RlcEdyb3VwXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1jdXJzb3ItcG9pbnRlciBjcWEtcmVsYXRpdmUgY3FhLW1yLTJcIj5cbiAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICBbbmdNb2RlbF09XCJzZWxlY3RlZFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBjbGFzcz1cImNxYS1oLTQgY3FhLXctNCBjcWEtY3Vyc29yLXBvaW50ZXIgY3FhLXRyYW5zaXRpb24tYWxsIGNxYS1hcHBlYXJhbmNlLW5vbmUgY3FhLXJvdW5kZWQgc2hhZG93IGhvdmVyOmNxYS1zaGFkb3ctbWQgY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItc2xhdGUtMzAwIGNxYS1mbGV4LXNocmluay0wXCJcbiAgICAgICAgW2NsYXNzLmNxYS1iZy1bIzNGNDNFRV1dPVwic2VsZWN0ZWRcIlxuICAgICAgICBbY2xhc3MuY3FhLWJvcmRlci1bIzNGNDNFRV1dPVwic2VsZWN0ZWRcIlxuICAgICAgICBpZD1cImNoZWNrXCIgLz5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWFic29sdXRlIGNxYS10ZXh0LXdoaXRlIGNxYS10b3AtMS8yIGNxYS1sZWZ0LTEvMiBjcWEtLXRyYW5zbGF0ZS14LTEvMiBjcWEtLXRyYW5zbGF0ZS15LTEvMiBjcWEtcG9pbnRlci1ldmVudHMtbm9uZSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlclwiXG4gICAgICAgIFtjbGFzcy5jcWEtb3BhY2l0eS0wXT1cIiFzZWxlY3RlZFwiXG4gICAgICAgIFtjbGFzcy5jcWEtb3BhY2l0eS0xMDBdPVwic2VsZWN0ZWRcIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTNcIiB2aWV3Qm94PVwiMCAwIDEyIDEzXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xMCAzLjEyNUw0LjUgOC42MjVMMiA2LjEyNVwiIHN0cm9rZT1cIndoaXRlXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsjNkI3MjgwXSBjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzE4cHhdIGNxYS1taW4tdy1bMzJweF1cIj57eyBzdGVwTnVtYmVyIH19PC9zcGFuPlxuICA8c3BhbiB0aXRsZT1cIlVwbG9hZFwiIGNsYXNzPVwiY3FhLXctOCBjcWEtaC04IGNxYS1yb3VuZGVkLWxnIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1mbGV4LXNocmluay0wIGNxYS1iZy1bI0RCRUFGRV0gY3FhLXRleHQtWyMyNTYzRUJdXCI+XG4gICAgPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xMi4yNSA4Ljc1VjExLjA4MzNDMTIuMjUgMTEuMzkyOCAxMi4xMjcxIDExLjY4OTUgMTEuOTA4MyAxMS45MDgzQzExLjY4OTUgMTIuMTI3MSAxMS4zOTI4IDEyLjI1IDExLjA4MzMgMTIuMjVIMi45MTY2N0MyLjYwNzI1IDEyLjI1IDIuMzEwNSAxMi4xMjcxIDIuMDkxNzEgMTEuOTA4M0MxLjg3MjkyIDExLjY4OTUgMS43NSAxMS4zOTI4IDEuNzUgMTEuMDgzM1Y4Ljc1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTkuOTE2NjcgNC42NjY2N0w3IDEuNzVMNC4wODMzMyA0LjY2NjY3XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTcgMS43NVY4Ljc1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsjMTExODI3XSBjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzE4cHhdXCI+VXBsb2FkIGZpbGUgdG88L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwiY3FhLXB5LTAuNSBjcWEtcHgtMiBjcWEtdGV4dC1bIzI1NjNFQl0gY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsxN3B4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bIzkzQzVGRF0gY3FhLXJvdW5kZWQgY3FhLWJnLVsjREJFQUZFXVwiPnt7IHNlbGVjdG9yIH19PC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsjNkI3MjgwXSBjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzE4cHhdXCI+RmlsZTo8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyMxMTE4MjddIGNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMThweF1cIj57eyBmaWxlTmFtZSB9fTwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bIzZCNzI4MF0gY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsxOHB4XVwiPlNvdXJjZTo8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyMxMTE4MjddIGNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMThweF1cIj57eyBzb3VyY2UgfX08L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyM2QjcyODBdIGNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMThweF1cIj57eyBzb3VyY2VQYXRoIH19PC9zcGFuPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXgtZ3Jvd1wiPjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTNcIj5cbiAgICA8IS0tIFZpZXcgRGV0YWlscyBMaW5rIChzaG93IG9ubHkgaWYgZGVzY3JpcHRpb24gaXMgbm90IGVtcHR5KSAtLT5cbiAgICA8YSAqbmdJZj1cImNvbmZpZy5kZXNjcmlwdGlvbiAmJiBjb25maWcuZGVzY3JpcHRpb24udHJpbSgpICE9PSAnJ1wiICN2aWV3RGV0YWlsc1RyaWdnZXIgaHJlZj1cIiNcIiAoY2xpY2spPVwib25WaWV3RGV0YWlscygkZXZlbnQpXCIgY2xhc3M9XCJjcWEtdGV4dC1bIzNGNDNFRV0gY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTIgY3FhLW5vLXVuZGVybGluZVwiPlZpZXcgRGV0YWlsczxzdmcgd2lkdGg9XCI4XCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgOCA4XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0yLjAzODA5IDYuNzQzMjlMMi42MjgwOSA3LjMzMzI5TDUuOTYxNDIgMy45OTk5NkwyLjYyODA5IDAuNjY2NjI2TDIuMDM4MDkgMS4yNTY2M0w0Ljc4MTQyIDMuOTk5OTZMMi4wMzgwOSA2Ljc0MzI5WlwiIGZpbGw9XCIjM0Y0M0VFXCIvPjwvc3ZnPjwvYT5cbiAgICA8ZGl2ICpuZ0lmPVwiIWlzSW5zaWRlU3RlcEdyb3VwICYmICFpc1Jlb3JkZXJcIiBjbGFzcz1cInN0ZXAtYWN0aW9ucyBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMyBjcWEtcHgtWzdweF1cIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25FZGl0KCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIHRpdGxlPVwiRWRpdFwiIGNsYXNzPVwiY3FhLXAtMCBjcWEtdGV4dC1bIzk5QTFBZl0gaG92ZXI6Y3FhLXRleHQtWyMxNDQ3RTZdXCI+PHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk03IDExLjY2NjZIMTIuMjVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNOS41NTIwOCAyLjExMjhDOS43ODQzIDEuODgwNTggMTAuMDk5MyAxLjc1MDEyIDEwLjQyNzcgMS43NTAxMkMxMC43NTYxIDEuNzUwMTIgMTEuMDcxIDEuODgwNTggMTEuMzAzMyAyLjExMjhDMTEuNTM1NSAyLjM0NTAyIDExLjY2NTkgMi42NTk5OCAxMS42NjU5IDIuOTg4MzhDMTEuNjY1OSAzLjMxNjc5IDExLjUzNTUgMy42MzE3NSAxMS4zMDMzIDMuODYzOTdMNC4yOTc0MiAxMC44NzA0QzQuMTU4NjQgMTEuMDA5MiAzLjk4NzEgMTEuMTEwNyAzLjc5ODY3IDExLjE2NTZMMi4xMjMzMyAxMS42NTQ0QzIuMDczMTQgMTEuNjY5IDIuMDE5OTMgMTEuNjY5OSAxLjk2OTI4IDExLjY1NjlDMS45MTg2MyAxMS42NDM5IDEuODcyNCAxMS42MTc2IDEuODM1NDMgMTEuNTgwNkMxLjc5ODQ2IDExLjU0MzcgMS43NzIxIDExLjQ5NzQgMS43NTkxMyAxMS40NDY4QzEuNzQ2MTUgMTEuMzk2MSAxLjc0NzAzIDExLjM0MjkgMS43NjE2NyAxMS4yOTI3TDIuMjUwNSA5LjYxNzM4QzIuMzA1NDYgOS40MjkxNiAyLjQwNjk4IDkuMjU3ODMgMi41NDU2NyA5LjExOTIyTDkuNTUyMDggMi4xMTI4WlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+PC9idXR0b24+XG4gICAgPCEtLSA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25MaW5rKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIHRpdGxlPVwiTGlua1wiIGNsYXNzPVwiY3FhLXAtMCBjcWEtdGV4dC1bIzk5QTFBZl0gaG92ZXI6Y3FhLXRleHQtWyMxNDQ3RTZdXCI+PHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk01LjAwMDY1IDkuOTE2NzFIMy42NjczMkMyLjc4MzI2IDkuOTE2NzEgMS45MzU0MiA5LjYwOTQyIDEuMzEwMyA5LjA2MjQ0QzAuNjg1MTc0IDguNTE1NDUgMC4zMzM5ODQgNy43NzM1OSAwLjMzMzk4NCA3LjAwMDA0QzAuMzMzOTg0IDYuMjI2NDkgMC42ODUxNzQgNS40ODQ2MyAxLjMxMDMgNC45Mzc2NUMxLjkzNTQyIDQuMzkwNjYgMi43ODMyNiA0LjA4MzM3IDMuNjY3MzIgNC4wODMzN0g1LjAwMDY1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTkgNC4wODMzN0gxMC4zMzMzQzExLjIxNzQgNC4wODMzNyAxMi4wNjUyIDQuMzkwNjYgMTIuNjkwNCA0LjkzNzY1QzEzLjMxNTUgNS40ODQ2MyAxMy42NjY3IDYuMjI2NDkgMTMuNjY2NyA3LjAwMDA0QzEzLjY2NjcgNy43NzM1OSAxMy4zMTU1IDguNTE1NDUgMTIuNjkwNCA5LjA2MjQ0QzEyLjA2NTIgOS42MDk0MiAxMS4yMTc0IDkuOTE2NzEgMTAuMzMzMyA5LjkxNjcxSDlcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNC4zMzM5OCA3SDkuNjY3MzJcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPjwvYnV0dG9uPiAtLT5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25EdXBsaWNhdGUoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgdGl0bGU9XCJEdXBsaWNhdGVcIiBjbGFzcz1cImNxYS1wLTAgY3FhLXRleHQtWyM5OUExQWZdIGhvdmVyOmNxYS10ZXh0LVsjMTQ0N0U2XVwiPjxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMTEuNjY2IDQuNjY2NjNINS44MzI2OEM1LjE4ODM1IDQuNjY2NjMgNC42NjYwMiA1LjE4ODk2IDQuNjY2MDIgNS44MzMyOVYxMS42NjY2QzQuNjY2MDIgMTIuMzExIDUuMTg4MzUgMTIuODMzMyA1LjgzMjY4IDEyLjgzMzNIMTEuNjY2QzEyLjMxMDMgMTIuODMzMyAxMi44MzI3IDEyLjMxMSAxMi44MzI3IDExLjY2NjZWNS44MzMyOUMxMi44MzI3IDUuMTg4OTYgMTIuMzEwMyA0LjY2NjYzIDExLjY2NiA0LjY2NjYzWlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk0yLjMzMjY4IDkuMzMzMjlDMS42OTEwMiA5LjMzMzI5IDEuMTY2MDIgOC44MDgyOSAxLjE2NjAyIDguMTY2NjNWMi4zMzMyOUMxLjE2NjAyIDEuNjkxNjMgMS42OTEwMiAxLjE2NjYzIDIuMzMyNjggMS4xNjY2M0g4LjE2NjAyQzguODA3NjggMS4xNjY2MyA5LjMzMjY4IDEuNjkxNjMgOS4zMzI2OCAyLjMzMzI5XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz48L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25EZWxldGUoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgdGl0bGU9XCJEZWxldGVcIiBjbGFzcz1cImNxYS1wLTAgY3FhLXRleHQtWyNmZjY0NjddIGhvdmVyOmNxYS10ZXh0LVsjQzYzNTM1XVwiPjxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMS43NSAzLjVIMTIuMjVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjE2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNMTEuMDgyNyAzLjVWMTEuNjY2N0MxMS4wODI3IDEyLjI1IDEwLjQ5OTMgMTIuODMzMyA5LjkxNjAyIDEyLjgzMzNINC4wODI2OEMzLjQ5OTM1IDEyLjgzMzMgMi45MTYwMiAxMi4yNSAyLjkxNjAyIDExLjY2NjdWMy41XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4xNjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTQuNjY2MDIgMy40OTk5NlYyLjMzMzI5QzQuNjY2MDIgMS43NDk5NiA1LjI0OTM1IDEuMTY2NjMgNS44MzI2OCAxLjE2NjYzSDguMTY2MDJDOC43NDkzNSAxLjE2NjYzIDkuMzMyNjggMS43NDk5NiA5LjMzMjY4IDIuMzMzMjlWMy40OTk5NlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk01LjgzMzk4IDYuNDE2NjNWOS45MTY2M1wiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk04LjE2NjAyIDYuNDE2NjNWOS45MTY2M1wiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMTY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+PC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBDcmVhdGVkIERhdGUgKGZyb20gQVBJKSAtIGxhc3Qgc28gYWxpZ25lZCBhY3Jvc3MgYWxsIHN0ZXBzLCBmb3JtYXQ6IDI1IEZlYiAyMDI2IC0tPlxuICAgIDxzcGFuICpuZ0lmPVwiY29uZmlnLmNyZWF0ZWREYXRlXCIgY2xhc3M9XCJjcWEtdGV4dC1bIzZCNzI4MF0gY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtbWwtYXV0byBjcWEtZmxleC1zaHJpbmstMFwiPlxuICAgICAge3sgY29uZmlnLmNyZWF0ZWREYXRlIHwgZGF0ZTonZCBNTU0geXl5eScgfX1cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|