@pega/angular-sdk-components 0.23.8 → 0.23.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/_components/infra/Containers/base-components/flow-container-base.component.mjs +18 -0
- package/esm2022/lib/_components/infra/Containers/base-components/helper.mjs +71 -0
- package/esm2022/lib/_components/infra/Containers/flow-container/flow-container.component.mjs +20 -20
- package/esm2022/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.mjs +37 -8
- package/esm2022/lib/_components/infra/assignment/assignment.component.mjs +40 -21
- package/esm2022/lib/_components/infra/view/view.component.mjs +2 -2
- package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +2 -4
- package/esm2022/lib/_components/widget/todo/todo.component.mjs +2 -2
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/pega-angular-sdk-components.mjs +213 -81
- package/fesm2022/pega-angular-sdk-components.mjs.map +1 -1
- package/lib/_components/infra/Containers/base-components/flow-container-base.component.d.ts +8 -0
- package/lib/_components/infra/Containers/base-components/helper.d.ts +1 -0
- package/lib/_components/infra/Containers/flow-container/flow-container.component.d.ts +5 -6
- package/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.d.ts +2 -1
- package/lib/_components/infra/assignment/assignment.component.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -3,6 +3,7 @@ import { CommonModule } from '@angular/common';
|
|
|
3
3
|
import isEqual from 'fast-deep-equal';
|
|
4
4
|
import { ComponentMapperComponent } from '../../../../_bridge/component-mapper/component-mapper.component';
|
|
5
5
|
import { getBanners } from '../../../../_helpers/case-utils';
|
|
6
|
+
import { ReferenceComponent } from '../../reference/reference.component';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "../../../../_bridge/angular-pconnect";
|
|
8
9
|
import * as i2 from "../../../../_messages/progress-spinner.service";
|
|
@@ -148,7 +149,7 @@ export class ModalViewContainerComponent {
|
|
|
148
149
|
}
|
|
149
150
|
}
|
|
150
151
|
createView(routingInfo, currentItem, latestItem, key) {
|
|
151
|
-
const configObject = this.getConfigObject(currentItem,
|
|
152
|
+
const configObject = this.getConfigObject(currentItem, null, false);
|
|
152
153
|
const newComp = configObject?.getPConnect();
|
|
153
154
|
// const newCompName = newComp.getComponentName();
|
|
154
155
|
// @ts-ignore - parameter “contextName” for getDataObject method should be optional
|
|
@@ -186,8 +187,15 @@ export class ModalViewContainerComponent {
|
|
|
186
187
|
isDataObject || this.isMultiRecord
|
|
187
188
|
? this.getModalHeading(dataObjectAction)
|
|
188
189
|
: this.determineModalHeaderByAction(actionName, caseTypeName, ID, `${theNewCaseInfo?.getClassName()}!CASE!${theNewCaseInfo.getName()}`.toUpperCase());
|
|
189
|
-
|
|
190
|
-
|
|
190
|
+
const bIsRefComponent = this.checkIfRefComponent(newComp);
|
|
191
|
+
if (bIsRefComponent) {
|
|
192
|
+
const newPConn = ReferenceComponent.normalizePConn(newComp);
|
|
193
|
+
this.arChildren$ = ReferenceComponent.normalizePConnArray(newPConn.getChildren());
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
// update children with new view's children
|
|
197
|
+
this.arChildren$ = newComp.getChildren();
|
|
198
|
+
}
|
|
191
199
|
this.bShowModal$ = true;
|
|
192
200
|
// for when non modal
|
|
193
201
|
this.modalVisibleChange.emit(this.bShowModal$);
|
|
@@ -210,22 +218,43 @@ export class ModalViewContainerComponent {
|
|
|
210
218
|
this.oCaseInfo = {};
|
|
211
219
|
});
|
|
212
220
|
}
|
|
213
|
-
getConfigObject(item, pConnect) {
|
|
221
|
+
getConfigObject(item, pConnect, isReverseCoexistence = false) {
|
|
222
|
+
let config;
|
|
223
|
+
if (isReverseCoexistence) {
|
|
224
|
+
config = {
|
|
225
|
+
options: {
|
|
226
|
+
pageReference: pConnect?.getPageReference(),
|
|
227
|
+
hasForm: true,
|
|
228
|
+
containerName: pConnect?.getContainerName() || PCore.getConstants().MODAL
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
return PCore.createPConnect(config);
|
|
232
|
+
}
|
|
214
233
|
if (item) {
|
|
215
|
-
const { context, view } = item;
|
|
216
|
-
const
|
|
234
|
+
const { context, view, isBulkAction } = item;
|
|
235
|
+
const target = PCore.getContainerUtils().getTargetFromContainerItemID(context);
|
|
236
|
+
config = {
|
|
217
237
|
meta: view,
|
|
218
238
|
options: {
|
|
219
239
|
context,
|
|
220
240
|
pageReference: view.config.context || pConnect.getPageReference(),
|
|
221
241
|
hasForm: true,
|
|
222
|
-
|
|
242
|
+
...(isBulkAction && { isBulkAction }),
|
|
243
|
+
containerName: pConnect?.getContainerName() || PCore.getConstants().MODAL,
|
|
244
|
+
target
|
|
223
245
|
}
|
|
224
246
|
};
|
|
225
247
|
return PCore.createPConnect(config);
|
|
226
248
|
}
|
|
227
249
|
return null;
|
|
228
250
|
}
|
|
251
|
+
checkIfRefComponent(thePConn) {
|
|
252
|
+
let bReturn = false;
|
|
253
|
+
if (thePConn && thePConn.getComponentName() == 'reference') {
|
|
254
|
+
bReturn = true;
|
|
255
|
+
}
|
|
256
|
+
return bReturn;
|
|
257
|
+
}
|
|
229
258
|
onAlertState(bData) {
|
|
230
259
|
this.bAlertState = bData;
|
|
231
260
|
this.bShowCancelAlert$ = false;
|
|
@@ -311,4 +340,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
311
340
|
}], modalVisibleChange: [{
|
|
312
341
|
type: Output
|
|
313
342
|
}] } });
|
|
314
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtdmlldy1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvbW9kYWwtdmlldy1jb250YWluZXIvbW9kYWwtdmlldy1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvbW9kYWwtdmlldy1jb250YWluZXIvbW9kYWwtdmlldy1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBVSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sT0FBTyxNQUFNLGlCQUFpQixDQUFDO0FBR3RDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7O0FBRTdEOzs7O0dBSUc7QUFTSCxNQUFNLE9BQU8sMkJBQTJCO0lBeUN0QyxZQUNVLGVBQXVDLEVBQ3ZDLE1BQWMsRUFDZCxTQUFpQyxFQUNqQyxFQUFlO1FBSGYsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxjQUFTLEdBQVQsU0FBUyxDQUF3QjtRQUNqQyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBekN6QixxQkFBcUI7UUFDWCx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFD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QUFDLHdCQUF3QixDQUFDLENBQUM7aU1BRzFELE1BQU07c0JBQWQsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdJLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE5nWm9uZSwgZm9yd2FyZFJlZiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbCc7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9fbWVzc2FnZXMvcHJvZ3Jlc3Mtc3Bpbm5lci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL19icmlkZ2UvY29tcG9uZW50LW1hcHBlci9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBnZXRCYW5uZXJzIH0gZnJvbSAnLi4vLi4vLi4vLi4vX2hlbHBlcnMvY2FzZS11dGlscyc7XG5cbi8qKlxuICogV0FSTklORzogIEl0IGlzIG5vdCBleHBlY3RlZCB0aGF0IHRoaXMgZmlsZSBzaG91bGQgYmUgbW9kaWZpZWQuICBJdCBpcyBwYXJ0IG9mIGluZnJhc3RydWN0dXJlIGNvZGUgdGhhdCB3b3JrcyB3aXRoXG4gKiBSZWR1eCBhbmQgY3JlYXRpb24vdXBkYXRlIG9mIFJlZHV4IGNvbnRhaW5lcnMgYW5kIFBDb25uZWN0LiAgTW9kaWZ5aW5nIHRoaXMgY29kZSBjb3VsZCBoYXZlIHVuZGVzaXJlYWJsZSByZXN1bHRzIGFuZFxuICogaXMgdG90YWxseSBhdCB5b3VyIG93biByaXNrLlxuICovXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1tb2RhbC12aWV3LWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC12aWV3LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZGFsLXZpZXctY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIGZvcndhcmRSZWYoKCkgPT4gQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50KV1cbn0pXG5leHBvcnQgY2xhc3MgTW9kYWxWaWV3Q29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcbiAgQElucHV0KCkgZGlzcGxheU9ubHlGQSQ6IGJvb2xlYW47XG5cbiAgLy8gZm9yIHdoZW4gbm9uIG1vZGFsXG4gIEBPdXRwdXQoKSBtb2RhbFZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgLy8gVXNlZCB3aXRoIEFuZ3VsYXJQQ29ubmVjdFxuICBhbmd1bGFyUENvbm5lY3REYXRhOiBBbmd1bGFyUENvbm5lY3REYXRhID0ge307XG5cbiAgYXJDaGlsZHJlbiQ6IGFueVtdO1xuICBzdGF0ZVByb3BzJDogT2JqZWN0O1xuICBiYW5uZXJzOiBhbnk7XG4gIHRlbXBsYXRlTmFtZSQ6IHN0cmluZztcbiAgYnVpbGROYW1lJDogc3RyaW5nO1xuICBjb250ZXh0JDogc3RyaW5nO1xuICB0aXRsZSQgPSAnJztcbiAgYlNob3dNb2RhbCQgPSBmYWxzZTtcbiAgYlNob3dBc01vZGFsJCA9IHRydWU7XG4gIGl0ZW1LZXkkOiBzdHJpbmc7XG4gIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcbiAgb0Nhc2VJbmZvOiBPYmplY3QgPSB7fTtcblxuICAvLyBmb3IgY2F1c2luZyBhIGNoYW5nZSBvbiBhc3NpZ25tZW50XG4gIHVwZGF0ZVRva2VuJCA9IDA7XG5cbiAgcm91dGluZ0luZm9SZWY6IGFueSA9IHt9O1xuXG4gIC8vIGNyZWF0ZWQgb2JqZWN0IGlzIG5vdyBhIFZpZXcgd2l0aCBhIFRlbXBsYXRlXG4gIC8vICBVc2UgaXRzIFBDb25uZWN0IHRvIHJlbmRlciB0aGUgQ2FzZVZpZXc7IERPTidUIHJlcGxhY2UgdGhpcy5wQ29ubiRcbiAgY3JlYXRlZFZpZXdQQ29ubiQ6IGFueTtcblxuICBiU3Vic2NyaWJlZCA9IGZhbHNlO1xuICBjYW5jZWxQQ29ubiQ/OiB0eXBlb2YgUENvbm5lY3Q7XG4gIGJTaG93Q2FuY2VsQWxlcnQkID0gZmFsc2U7XG4gIGJBbGVydFN0YXRlOiBib29sZWFuO1xuICBsb2NhbGl6ZWRWYWw6IEZ1bmN0aW9uO1xuICBsb2NhbGVDYXRlZ29yeSA9ICdEYXRhIE9iamVjdCc7XG4gIGlzTXVsdGlSZWNvcmQgPSBmYWxzZTtcbiAgYWN0aW9uc0RpYWxvZyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBwc1NlcnZpY2U6IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXJcbiAgKSB7XG4gICAgLy8gY3JlYXRlIHRoZSBmb3JtR3JvdXBcbiAgICB0aGlzLmZvcm1Hcm91cCQgPSBmYi5ncm91cCh7IGhpZGVSZXF1aXJlZDogZmFsc2UgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNwbGF5T25seUZBJCkge1xuICAgICAgLy8gZm9yIHdoZW4gbm9uIG1vZGFsXG4gICAgICB0aGlzLmJTaG93QXNNb2RhbCQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBGaXJzdCB0aGluZyBpbiBpbml0aWFsaXphdGlvbiBpcyByZWdpc3RlcmluZyBhbmQgc3Vic2NyaWJpbmcgdG8gdGhlIEFuZ3VsYXJQQ29ubmVjdCBzZXJ2aWNlXG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhID0gdGhpcy5hbmd1bGFyUENvbm5lY3QucmVnaXN0ZXJBbmRTdWJzY3JpYmVDb21wb25lbnQodGhpcywgdGhpcy5vblN0YXRlQ2hhbmdlKTtcblxuICAgIGNvbnN0IGJhc2VDb250ZXh0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICBjb25zdCBhY05hbWUgPSB0aGlzLnBDb25uJC5nZXRDb250YWluZXJOYW1lKCk7XG5cbiAgICAvLyBmb3Igbm93LCBpbiBnZW5lcmFsIHRoaXMgc2hvdWxkIGJlIG92ZXJyaWRkZW4gYnkgdXBkYXRlU2VsZigpLCBhbmQgbm90IGJlIGJsYW5rXG4gICAgaWYgKHRoaXMuaXRlbUtleSQgPT09ICcnKSB7XG4gICAgICB0aGlzLml0ZW1LZXkkID0gYmFzZUNvbnRleHQuY29uY2F0KCcvJykuY29uY2F0KGFjTmFtZSk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyTWdyOiBhbnkgPSB0aGlzLnBDb25uJC5nZXRDb250YWluZXJNYW5hZ2VyKCk7XG5cbiAgICBjb250YWluZXJNZ3IuaW5pdGlhbGl6ZUNvbnRhaW5lcnMoe1xuICAgICAgdHlwZTogJ211bHRpcGxlJ1xuICAgIH0pO1xuXG4gICAgLy8gY29uc3QgeyBDT05UQUlORVJfVFlQRSwgUFVCX1NVQl9FVkVOVFMgfSA9IFBDb3JlLmdldENvbnN0YW50cygpO1xuXG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKHRoaXMpO1xuICAgIHRoaXMubG9jYWxpemVkVmFsID0gUENvcmUuZ2V0TG9jYWxlVXRpbHMoKS5nZXRMb2NhbGVWYWx1ZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbikge1xuICAgICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4oKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IFBVQl9TVUJfRVZFTlRTIH0gPSBQQ29yZS5nZXRDb25zdGFudHMoKTtcblxuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkudW5zdWJzY3JpYmUoXG4gICAgICBQVUJfU1VCX0VWRU5UUy5FVkVOVF9TSE9XX0NBTkNFTF9BTEVSVCxcbiAgICAgIFBVQl9TVUJfRVZFTlRTLkVWRU5UX1NIT1dfQ0FOQ0VMX0FMRVJUIC8qIFNob3VsZCBiZSBzYW1lIHVuaXF1ZSBzdHJpbmcgcGFzc2VkIGR1cmluZyBzdWJzY3JpcHRpb24gKi9cbiAgICApO1xuICAgIHRoaXMuYlN1YnNjcmliZWQgPSBmYWxzZTtcbiAgfVxuXG4gIC8vIENhbGxiYWNrIHBhc3NlZCB3aGVuIHN1YnNjcmliaW5nIHRvIHN0b3JlIGNoYW5nZVxuICBvblN0YXRlQ2hhbmdlKCkge1xuICAgIC8vIFNob3VsZCBhbHdheXMgY2hlY2sgdGhlIGJyaWRnZSB0byBzZWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGRcbiAgICAvLyB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAgY29uc3QgYlVwZGF0ZVNlbGYgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIGlmIChiVXBkYXRlU2VsZikge1xuICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmJTaG93TW9kYWwkKSB7XG4gICAgICAvLyByaWdodCBub3cgb25sdSBnZXQgb25lIHVwZGF0ZWQgd2hlbiBpbml0aWFsIGRpYXBsYXkuICBTbywgb25jZSBtb2RhbCBpcyB1cFxuICAgICAgLy8gbGV0IGZhbGwgdGhyb3VnaCBhbmQgZG8gYSBjaGVjayB3aXRoIFwiY29tcGFyZUNhc2VJbmZvSXNEaWZmZXJlbnRcIiB1bnRpbCBmaXhlZFxuICAgICAgLy8gdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gdXBkYXRlU2VsZlxuICB1cGRhdGVTZWxmKCk6IHZvaWQge1xuICAgIC8vIHJvdXRpbmdJbmZvIHdhcyBhZGRlZCBhcyBjb21wb25lbnQgcHJvcCBpbiBwb3B1bGF0ZUFkZGl0aW9uYWxQcm9wc1xuICAgIGNvbnN0IHJvdXRpbmdJbmZvID0gdGhpcy5hbmd1bGFyUENvbm5lY3QuZ2V0Q29tcG9uZW50UHJvcCh0aGlzLCAncm91dGluZ0luZm8nKTtcbiAgICB0aGlzLnJvdXRpbmdJbmZvUmVmLmN1cnJlbnQgPSByb3V0aW5nSW5mbztcblxuICAgIGxldCBsb2FkaW5nSW5mbztcbiAgICB0cnkge1xuICAgICAgLy8gQHRzLWlnbm9yZSAtIFByb3BlcnR5ICdnZXRMb2FkaW5nU3RhdHVzJyBpcyBwcml2YXRlIGFuZCBvbmx5IGFjY2Vzc2libGUgd2l0aGluIGNsYXNzICdDMTFuRW52J1xuICAgICAgbG9hZGluZ0luZm8gPSB0aGlzLnBDb25uJC5nZXRMb2FkaW5nU3RhdHVzKCk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIC8qIGVtcHR5ICovXG4gICAgfVxuICAgIC8vIGNvbnN0IGNvbmZpZ1Byb3BzID0gdGhpcy5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkpO1xuICAgIHRoaXMuc3RhdGVQcm9wcyQgPSB0aGlzLnBDb25uJC5nZXRTdGF0ZVByb3BzKCk7XG4gICAgdGhpcy5iYW5uZXJzID0gdGhpcy5nZXRCYW5uZXJzKCk7XG5cbiAgICBpZiAoIWxvYWRpbmdJbmZvKSB7XG4gICAgICAvLyB0dXJuIG9mZiBzcGlubmVyXG4gICAgICAvLyB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG4gICAgfVxuXG4gICAgaWYgKHJvdXRpbmdJbmZvICYmICFsb2FkaW5nSW5mbyAvKiAmJiB0aGlzLmJVcGRhdGUgKi8pIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRPcmRlciA9IHJvdXRpbmdJbmZvLmFjY2Vzc2VkT3JkZXI7XG5cbiAgICAgIGlmICh1bmRlZmluZWQgPT0gY3VycmVudE9yZGVyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY3VycmVudEl0ZW1zID0gcm91dGluZ0luZm8uaXRlbXM7XG5cbiAgICAgIGNvbnN0IHsga2V5LCBsYXRlc3RJdGVtIH0gPSB0aGlzLmdldEtleUFuZExhdGVzdEl0ZW0ocm91dGluZ0luZm8pO1xuXG4gICAgICBpZiAoY3VycmVudE9yZGVyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKGN1cnJlbnRJdGVtc1trZXldICYmIGN1cnJlbnRJdGVtc1trZXldLnZpZXcgJiYgT2JqZWN0LmtleXMoY3VycmVudEl0ZW1zW2tleV0udmlldykubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gY3VycmVudEl0ZW1zW2tleV07XG4gICAgICAgICAgY29uc3Qgcm9vdFZpZXcgPSBjdXJyZW50SXRlbS52aWV3O1xuICAgICAgICAgIGNvbnN0IHsgY29udGV4dCB9ID0gcm9vdFZpZXcuY29uZmlnO1xuICAgICAgICAgIGNvbnN0IGNvbmZpZzogYW55ID0geyBtZXRhOiByb290VmlldyB9O1xuICAgICAgICAgIGNvbmZpZy5vcHRpb25zID0ge1xuICAgICAgICAgICAgY29udGV4dDogY3VycmVudEl0ZW0uY29udGV4dCxcbiAgICAgICAgICAgIGhhc0Zvcm06IHRydWUsXG4gICAgICAgICAgICBwYWdlUmVmZXJlbmNlOiBjb250ZXh0IHx8IHRoaXMucENvbm4kLmdldFBhZ2VSZWZlcmVuY2UoKVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBpZiAoIXRoaXMuYlN1YnNjcmliZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYlN1YnNjcmliZWQgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgeyBQVUJfU1VCX0VWRU5UUyB9ID0gUENvcmUuZ2V0Q29uc3RhbnRzKCk7XG4gICAgICAgICAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgUFVCX1NVQl9FVkVOVFMuRVZFTlRfU0hPV19DQU5DRUxfQUxFUlQsXG4gICAgICAgICAgICAgIHBheWxvYWQgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0FsZXJ0KHBheWxvYWQpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBQVUJfU1VCX0VWRU5UUy5FVkVOVF9TSE9XX0NBTkNFTF9BTEVSVFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBsZXQgY29uZmlnT2JqZWN0ID0gUENvcmUuY3JlYXRlUENvbm5lY3QoY29uZmlnKTtcblxuICAgICAgICAgIC8vIFRISVMgaXMgd2hlcmUgdGhlIFZpZXdDb250YWluZXIgY3JlYXRlcyBhIFZpZXdcbiAgICAgICAgICAvLyBUaGUgY29uZmlnIGhhcyBtZXRhLmNvbmZpZy50eXBlID0gXCJ2aWV3XCJcbiAgICAgICAgICB0aGlzLmNyZWF0ZVZpZXcocm91dGluZ0luZm8sIGN1cnJlbnRJdGVtLCBsYXRlc3RJdGVtLCBrZXkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmhpZGVNb2RhbCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZVZpZXcocm91dGluZ0luZm8sIGN1cnJlbnRJdGVtLCBsYXRlc3RJdGVtLCBrZXkpIHtcbiAgICBjb25zdCBjb25maWdPYmplY3QgPSB0aGlzLmdldENvbmZpZ09iamVjdChjdXJyZW50SXRlbSwgdGhpcy5wQ29ubiQpO1xuICAgIGNvbnN0IG5ld0NvbXAgPSBjb25maWdPYmplY3Q/LmdldFBDb25uZWN0KCk7XG4gICAgLy8gY29uc3QgbmV3Q29tcE5hbWUgPSBuZXdDb21wLmdldENvbXBvbmVudE5hbWUoKTtcbiAgICAvLyBAdHMtaWdub3JlIC0gcGFyYW1ldGVyIOKAnGNvbnRleHROYW1l4oCdIGZvciBnZXREYXRhT2JqZWN0IG1ldGhvZCBzaG91bGQgYmUgb3B0aW9uYWxcbiAgICBjb25zdCBjYXNlSW5mbyA9IG5ld0NvbXAgJiYgbmV3Q29tcC5nZXREYXRhT2JqZWN0KCkgJiYgbmV3Q29tcC5nZXREYXRhT2JqZWN0KCkuY2FzZUluZm8gPyBuZXdDb21wLmdldERhdGFPYmplY3QoKS5jYXNlSW5mbyA6IG51bGw7XG4gICAgLy8gVGhlIG1ldGFkYXRhIGZvciBweURldGFpbHMgY2hhbmdlZCBzdWNoIHRoYXQgdGhlIFwidGVtcGxhdGVcIjogXCJDYXNlVmlld1wiXG4gICAgLy8gIGlzIG5vIGxvbmdlciBhIGNoaWxkIG9mIHRoZSBjcmVhdGVkIFZpZXcgYnV0IGlzIGluIHRoZSBjcmVhdGVkIFZpZXcnc1xuICAgIC8vICBjb25maWcuIFNvLCB3ZSBET04nVCB3YW50IHRvIHJlcGxhY2UgdGhpcy5wQ29ubiQgc2luY2UgdGhlIGNyZWF0ZWRcbiAgICAvLyAgY29tcG9uZW50IGlzIGEgVmlldyAoYW5kIG5vdCBhIFZpZXdDb250YWluZXIpLiBXZSBub3cgbG9vayBmb3IgdGhlXG4gICAgLy8gIFwidGVtcGxhdGVcIiB0eXBlIGRpcmVjdGx5IGluIHRoZSBjcmVhdGVkIGNvbXBvbmVudCAobmV3Q29tcCkgYW5kIE5PVFxuICAgIC8vICBhcyBhIGNoaWxkIG9mIHRoZSBuZXdseSBjcmVhdGVkIGNvbXBvbmVudC5cbiAgICAvLyBjb25zb2xlLmxvZyhgLS0tPiBNb2RhbFZpZXdDb250YWluZXIgY3JlYXRlZCBuZXcgJHtuZXdDb21wTmFtZX1gKTtcblxuICAgIC8vIFVzZSB0aGUgbmV3bHkgY3JlYXRlZCBjb21wb25lbnQgKFZpZXcpIGluZm8gYnV0IERPIE5PVCByZXBsYWNlXG4gICAgLy8gIHRoaXMgTW9kYWxWaWV3Q29udGFpbmVyJ3MgcENvbm4kLCBldGMuXG4gICAgLy8gIE5vdGUgdGhhdCB3ZSdyZSBub3cgdXNpbmcgdGhlIG5ld2x5IGNyZWF0ZWQgVmlldydzIFBDb25uZWN0IGluIHRoZVxuICAgIC8vICBWaWV3Q29udGFpbmVyIEhUTUwgdGVtcGxhdGUgdG8gZ3VpZGUgd2hhdCdzIHJlbmRlcmVkIHNpbWlsYXIgdG8gd2hhdFxuICAgIC8vICB0aGUgTmVidWxhL0NvbnN0ZWxsYXRpb24gcmV0dXJuIG9mIFJlYWN0LkZyYWdtZW50IGRvZXNcblxuICAgIC8vIHJpZ2h0IG5vdyBuZWVkIHRvIGNoZWNrIGNhc2VJbmZvIGZvciBjaGFuZ2VzLCB0byB0cmlnZ2VyIHJlZHJhdywgbm90IGdldHRpbmdcbiAgICAvLyBjaGFuZ2VzIGZyb20gYW5ndWxhclBjb25uZWN0IGV4Y2VwdCBmb3IgZmlyc3QgZHJhd1xuICAgIGlmIChuZXdDb21wICYmIGNhc2VJbmZvICYmIHRoaXMuY29tcGFyZUNhc2VJbmZvSXNEaWZmZXJlbnQoY2FzZUluZm8pKSB7XG4gICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG5cbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMuY3JlYXRlZFZpZXdQQ29ubiQgPSBuZXdDb21wO1xuICAgICAgICBjb25zdCBuZXdDb25maWdQcm9wcyA9IG5ld0NvbXAuZ2V0Q29uZmlnUHJvcHMoKTtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZU5hbWUkID0gJ3RlbXBsYXRlJyBpbiBuZXdDb25maWdQcm9wcyA/IChuZXdDb25maWdQcm9wcy50ZW1wbGF0ZSBhcyBzdHJpbmcpIDogJyc7XG5cbiAgICAgICAgY29uc3QgeyBhY3Rpb25OYW1lIH0gPSBsYXRlc3RJdGVtO1xuICAgICAgICBjb25zdCB0aGVOZXdDYXNlSW5mbyA9IG5ld0NvbXAuZ2V0Q2FzZUluZm8oKTtcbiAgICAgICAgLy8gY29uc3QgY2FzZU5hbWUgPSB0aGVOZXdDYXNlSW5mby5nZXROYW1lKCk7XG4gICAgICAgIGNvbnN0IElEID0gdGhlTmV3Q2FzZUluZm8uZ2V0QnVzaW5lc3NJRCgpIHx8IHRoZU5ld0Nhc2VJbmZvLmdldElEKCk7XG5cbiAgICAgICAgY29uc3QgY2FzZVR5cGVOYW1lID0gdGhlTmV3Q2FzZUluZm8uZ2V0Q2FzZVR5cGVOYW1lKCk7XG4gICAgICAgIGNvbnN0IGlzRGF0YU9iamVjdCA9IHJvdXRpbmdJbmZvLml0ZW1zW2xhdGVzdEl0ZW0uY29udGV4dF0ucmVzb3VyY2VUeXBlID09PSBQQ29yZS5nZXRDb25zdGFudHMoKS5SRVNPVVJDRV9UWVBFUy5EQVRBO1xuICAgICAgICBjb25zdCBkYXRhT2JqZWN0QWN0aW9uID0gcm91dGluZ0luZm8uaXRlbXNbbGF0ZXN0SXRlbS5jb250ZXh0XS5yZXNvdXJjZVN0YXR1cztcbiAgICAgICAgdGhpcy5pc011bHRpUmVjb3JkID0gcm91dGluZ0luZm8uaXRlbXNbbGF0ZXN0SXRlbS5jb250ZXh0XS5pc011bHRpUmVjb3JkRGF0YTtcbiAgICAgICAgdGhpcy5jb250ZXh0JCA9IGxhdGVzdEl0ZW0uY29udGV4dDtcbiAgICAgICAgdGhpcy50aXRsZSQgPVxuICAgICAgICAgIGlzRGF0YU9iamVjdCB8fCB0aGlzLmlzTXVsdGlSZWNvcmRcbiAgICAgICAgICAgID8gdGhpcy5nZXRNb2RhbEhlYWRpbmcoZGF0YU9iamVjdEFjdGlvbilcbiAgICAgICAgICAgIDogdGhpcy5kZXRlcm1pbmVNb2RhbEhlYWRlckJ5QWN0aW9uKFxuICAgICAgICAgICAgICAgIGFjdGlvbk5hbWUsXG4gICAgICAgICAgICAgICAgY2FzZVR5cGVOYW1lLFxuICAgICAgICAgICAgICAgIElELFxuICAgICAgICAgICAgICAgIGAke3RoZU5ld0Nhc2VJbmZvPy5nZXRDbGFzc05hbWUoKX0hQ0FTRSEke3RoZU5ld0Nhc2VJbmZvLmdldE5hbWUoKX1gLnRvVXBwZXJDYXNlKClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgLy8gLy8gdXBkYXRlIGNoaWxkcmVuIHdpdGggbmV3IHZpZXcncyBjaGlsZHJlblxuICAgICAgICB0aGlzLmFyQ2hpbGRyZW4kID0gbmV3Q29tcC5nZXRDaGlsZHJlbigpIGFzIGFueVtdO1xuICAgICAgICB0aGlzLmJTaG93TW9kYWwkID0gdHJ1ZTtcblxuICAgICAgICAvLyBmb3Igd2hlbiBub24gbW9kYWxcbiAgICAgICAgdGhpcy5tb2RhbFZpc2libGVDaGFuZ2UuZW1pdCh0aGlzLmJTaG93TW9kYWwkKTtcblxuICAgICAgICAvLyBzYXZlIG9mZiBpdGVtS2V5IHRvIGJlIHVzZWQgZm9yIGZpbmlzaEFzc2lnbm1lbnQsIGV0Yy5cbiAgICAgICAgdGhpcy5pdGVtS2V5JCA9IGtleTtcblxuICAgICAgICAvLyBjYXVzZSBhIGNoYW5nZSBmb3IgYXNzaWdubWVudFxuICAgICAgICB0aGlzLnVwZGF0ZVRva2VuJCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaGlkZU1vZGFsKCkge1xuICAgIGlmICh0aGlzLmJTaG93TW9kYWwkKSB7XG4gICAgICAvLyBvdGhlciBjb2RlIGluIE5lYnVsYS9Db25zdGVsbGF0aW9uIG5vdCBuZWVkZWQgY3VycmVudGx5LCBidXQgaWYgc28gbGF0ZXIsXG4gICAgICAvLyBzaG91bGQgcHV0IGhlcmVcbiAgICB9XG5cbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5iU2hvd01vZGFsJCA9IGZhbHNlO1xuXG4gICAgICAvLyBmb3Igd2hlbiBub24gbW9kYWxcbiAgICAgIHRoaXMubW9kYWxWaXNpYmxlQ2hhbmdlLmVtaXQodGhpcy5iU2hvd01vZGFsJCk7XG5cbiAgICAgIHRoaXMub0Nhc2VJbmZvID0ge307XG4gICAgfSk7XG4gIH1cblxuICBnZXRDb25maWdPYmplY3QoaXRlbSwgcENvbm5lY3QpIHtcbiAgICBpZiAoaXRlbSkge1xuICAgICAgY29uc3QgeyBjb250ZXh0LCB2aWV3IH0gPSBpdGVtO1xuICAgICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgICBtZXRhOiB2aWV3LFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICBwYWdlUmVmZXJlbmNlOiB2aWV3LmNvbmZpZy5jb250ZXh0IHx8IHBDb25uZWN0LmdldFBhZ2VSZWZlcmVuY2UoKSxcbiAgICAgICAgICBoYXNGb3JtOiB0cnVlLFxuICAgICAgICAgIGNvbnRhaW5lck5hbWU6IHBDb25uZWN0Py5nZXRDb250YWluZXJOYW1lKCkgfHwgUENvcmUuZ2V0Q29uc3RhbnRzKCkuTU9EQUxcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHJldHVybiBQQ29yZS5jcmVhdGVQQ29ubmVjdChjb25maWcpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIG9uQWxlcnRTdGF0ZShiRGF0YTogYm9vbGVhbikge1xuICAgIHRoaXMuYkFsZXJ0U3RhdGUgPSBiRGF0YTtcbiAgICB0aGlzLmJTaG93Q2FuY2VsQWxlcnQkID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuYkFsZXJ0U3RhdGUpIHtcbiAgICAgIHRoaXMuaGlkZU1vZGFsKCk7XG4gICAgfVxuICB9XG5cbiAgc2hvd0FsZXJ0KHBheWxvYWQpIHtcbiAgICBjb25zdCB7IGxhdGVzdEl0ZW0gfSA9IHRoaXMuZ2V0S2V5QW5kTGF0ZXN0SXRlbSh0aGlzLnJvdXRpbmdJbmZvUmVmLmN1cnJlbnQpO1xuICAgIGNvbnN0IHsgaXNNb2RhbEFjdGlvbiB9ID0gcGF5bG9hZDtcblxuICAgIC8qXG4gICAgICBJZiB3ZSBhcmUgaW4gY3JlYXRlIHN0YWdlIGZ1bGwgcGFnZSBtb2RlLCBjcmVhdGVkIGEgbmV3IGNhc2UgYW5kIHRyeWluZyB0byBjbGljayBvbiBjYW5jZWwgYnV0dG9uXG4gICAgICBpdCB3aWxsIHNob3cgdHdvIGFsZXJ0IGRpYWxvZ3Mgd2hpY2ggaXMgbm90IGV4cGVjdGVkLiBIZW5jZSBpc01vZGFsQWN0aW9uIGZsYWcgdG8gYXZvaWQgdGhhdC5cbiAgICAqL1xuICAgIGlmIChsYXRlc3RJdGVtICYmIGlzTW9kYWxBY3Rpb24gJiYgIXRoaXMuYWN0aW9uc0RpYWxvZykge1xuICAgICAgY29uc3QgY29uZmlnT2JqZWN0ID0gdGhpcy5nZXRDb25maWdPYmplY3QobGF0ZXN0SXRlbSwgdGhpcy5wQ29ubiQpO1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5jYW5jZWxQQ29ubiQgPSBjb25maWdPYmplY3Q/LmdldFBDb25uZWN0KCk7XG4gICAgICAgIHRoaXMuYlNob3dDYW5jZWxBbGVydCQgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaGFzQ29udGFpbmVySXRlbXMocm91dGluZ0luZm8pIHtcbiAgICBpZiAocm91dGluZ0luZm8pIHtcbiAgICAgIGNvbnN0IHsgYWNjZXNzZWRPcmRlciwgaXRlbXMgfSA9IHJvdXRpbmdJbmZvO1xuICAgICAgcmV0dXJuIGFjY2Vzc2VkT3JkZXIgJiYgYWNjZXNzZWRPcmRlci5sZW5ndGggPiAwICYmIGl0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXRLZXlBbmRMYXRlc3RJdGVtKHJvdXRpbmdpbmZvKSB7XG4gICAgaWYgKHRoaXMuaGFzQ29udGFpbmVySXRlbXMocm91dGluZ2luZm8pKSB7XG4gICAgICBjb25zdCB7IGFjY2Vzc2VkT3JkZXIsIGl0ZW1zIH0gPSByb3V0aW5naW5mbztcbiAgICAgIGNvbnN0IGtleSA9IGFjY2Vzc2VkT3JkZXJbYWNjZXNzZWRPcmRlci5sZW5ndGggLSAxXTtcbiAgICAgIGNvbnN0IGxhdGVzdEl0ZW0gPSBpdGVtc1trZXldO1xuICAgICAgcmV0dXJuIHsga2V5LCBsYXRlc3RJdGVtIH07XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbXBhcmVDYXNlSW5mb0lzRGlmZmVyZW50KG9DdXJyZW50Q2FzZUluZm86IE9iamVjdCk6IGJvb2xlYW4ge1xuICAgIGxldCBiUmV0ID0gZmFsc2U7XG5cbiAgICAvLyBmYXN0LWRlZXAtZXF1YWwgdmVyc2lvblxuICAgIGlmIChpc0VxdWFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGJSZXQgPSAhaXNFcXVhbCh0aGlzLm9DYXNlSW5mbywgb0N1cnJlbnRDYXNlSW5mbyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNDdXJybmVudENhc2VJbmZvID0gSlNPTi5zdHJpbmdpZnkob0N1cnJlbnRDYXNlSW5mbyk7XG4gICAgICBjb25zdCBzT2xkQ2FzZUluZm8gPSBKU09OLnN0cmluZ2lmeSh0aGlzLm9DYXNlSW5mbyk7XG4gICAgICAvLyBzdHJpbmdpZnkgY29tcGFyZSB2ZXJzaW9uXG4gICAgICBpZiAoc0N1cnJuZW50Q2FzZUluZm8gIT0gc09sZENhc2VJbmZvKSB7XG4gICAgICAgIGJSZXQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGlmIGRpZmZlcmVudCwgc2F2ZSBvZmYgbmV3IGNhc2UgaW5mb1xuICAgIGlmIChiUmV0KSB7XG4gICAgICB0aGlzLm9DYXNlSW5mbyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob0N1cnJlbnRDYXNlSW5mbykpO1xuICAgIH1cblxuICAgIHJldHVybiBiUmV0O1xuICB9XG5cbiAgZ2V0QmFubmVycygpIHtcbiAgICByZXR1cm4gZ2V0QmFubmVycyh7IHRhcmdldDogdGhpcy5pdGVtS2V5JCwgLi4udGhpcy5zdGF0ZVByb3BzJCB9KTtcbiAgfVxuXG4gIGdldE1vZGFsSGVhZGluZyhkYXRhT2JqZWN0QWN0aW9uKSB7XG4gICAgcmV0dXJuIGRhdGFPYmplY3RBY3Rpb24gPT09IFBDb3JlLmdldENvbnN0YW50cygpLlJFU09VUkNFX1NUQVRVUy5DUkVBVEVcbiAgICAgID8gdGhpcy5sb2NhbGl6ZWRWYWwoJ0FkZCBSZWNvcmQnLCB0aGlzLmxvY2FsZUNhdGVnb3J5KVxuICAgICAgOiB0aGlzLmxvY2FsaXplZFZhbCgnRWRpdCBSZWNvcmQnLCB0aGlzLmxvY2FsZUNhdGVnb3J5KTtcbiAgfVxuXG4gIGRldGVybWluZU1vZGFsSGVhZGVyQnlBY3Rpb24oYWN0aW9uTmFtZSwgY2FzZVR5cGVOYW1lLCBJRCwgY2FzZUxvY2FsZVJlZikge1xuICAgIGlmIChhY3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGl6ZWRWYWwoYWN0aW9uTmFtZSwgdGhpcy5sb2NhbGVDYXRlZ29yeSk7XG4gICAgfVxuICAgIHJldHVybiBgJHt0aGlzLmxvY2FsaXplZFZhbCgnQ3JlYXRlJywgdGhpcy5sb2NhbGVDYXRlZ29yeSl9ICR7dGhpcy5sb2NhbGl6ZWRWYWwoY2FzZVR5cGVOYW1lLCB1bmRlZmluZWQsIGNhc2VMb2NhbGVSZWYpfSAoJHtJRH0pYDtcbiAgfVxuXG4gIGNsb3NlQWN0aW9uc0RpYWxvZyA9ICgpID0+IHtcbiAgICB0aGlzLmFjdGlvbnNEaWFsb2cgPSB0cnVlO1xuICAgIC8vIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgdGhpcy5iU2hvd01vZGFsJCA9IGZhbHNlO1xuXG4gICAgLy8gZm9yIHdoZW4gbm9uIG1vZGFsXG4gICAgdGhpcy5tb2RhbFZpc2libGVDaGFuZ2UuZW1pdCh0aGlzLmJTaG93TW9kYWwkKTtcblxuICAgIHRoaXMub0Nhc2VJbmZvID0ge307XG4gICAgLy8gfSk7XG4gIH07XG59XG4iLCI8ZGl2IGlkPVwiZGlhbG9nXCIgKm5nSWY9XCJiU2hvd01vZGFsJCAmJiBiU2hvd0FzTW9kYWwkXCIgY2xhc3M9XCJwc2RrLWRpYWxvZy1iYWNrZ3JvdW5kXCI+XG4gIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLXZpZXctY29udGFpbmVyLXRvcFwiIGlkPVwie3sgYnVpbGROYW1lJCB9fVwiPlxuICAgIDxoMyAqbmdJZj1cInRpdGxlJCAhPSAnJ1wiPnt7IHRpdGxlJCB9fTwvaDM+XG4gICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgIG5hbWU9XCJBc3NpZ25tZW50XCJcbiAgICAgIFtwcm9wc109XCJ7IHBDb25uJDogY3JlYXRlZFZpZXdQQ29ubiQsIGZvcm1Hcm91cCQsIGFyQ2hpbGRyZW4kLCBpdGVtS2V5JCwgaXNDcmVhdGVTdGFnZSQ6IHRydWUsIHVwZGF0ZVRva2VuJCwgaXNJbk1vZGFsJDogdHJ1ZSwgYmFubmVycyB9XCJcbiAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDxkaXYgKm5nSWY9XCJpc011bHRpUmVjb3JkXCI+XG4gICAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgICBuYW1lPVwiTGlzdFZpZXdBY3Rpb25CdXR0b25zXCJcbiAgICAgICAgW3Byb3BzXT1cInsgcENvbm4kOiBjcmVhdGVkVmlld1BDb25uJCwgY29udGV4dCQgfVwiXG4gICAgICAgIFtvdXRwdXRFdmVudHNdPVwieyBjbG9zZUFjdGlvbnNEaWFsb2c6IGNsb3NlQWN0aW9uc0RpYWxvZyB9XCJcbiAgICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJiU2hvd01vZGFsJCAmJiAhYlNob3dBc01vZGFsJFwiPlxuICA8ZGl2IGlkPVwie3sgYnVpbGROYW1lJCB9fVwiPlxuICAgIDxoMyAqbmdJZj1cInRpdGxlJCAhPSAnJ1wiPnt7IHRpdGxlJCB9fTwvaDM+XG4gICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgIG5hbWU9XCJBc3NpZ25tZW50XCJcbiAgICAgIFtwcm9wc109XCJ7IHBDb25uJDogY3JlYXRlZFZpZXdQQ29ubiQsIGZvcm1Hcm91cCQsIGFyQ2hpbGRyZW4kLCBpdGVtS2V5JCwgaXNDcmVhdGVTdGFnZSQ6IHRydWUsIHVwZGF0ZVRva2VuJCB9XCJcbiAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiYlNob3dDYW5jZWxBbGVydCRcIj5cbiAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICBuYW1lPVwiQ2FuY2VsQWxlcnRcIlxuICAgIFtwcm9wc109XCJ7IGJTaG93QWxlcnQkOiBiU2hvd0NhbmNlbEFsZXJ0JCwgcENvbm4kOiBjYW5jZWxQQ29ubiQgfVwiXG4gICAgW3BhcmVudF09XCJ0aGlzXCJcbiAgICBbb3V0cHV0RXZlbnRzXT1cInsgb25BbGVydFN0YXRlJDogb25BbGVydFN0YXRlIH1cIlxuICA+PC9jb21wb25lbnQtbWFwcGVyPlxuPC9kaXY+XG4iXX0=
|
|
343
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtdmlldy1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvbW9kYWwtdmlldy1jb250YWluZXIvbW9kYWwtdmlldy1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvbW9kYWwtdmlldy1jb250YWluZXIvbW9kYWwtdmlldy1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBVSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sT0FBTyxNQUFNLGlCQUFpQixDQUFDO0FBR3RDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7O0FBRXpFOzs7O0dBSUc7QUFTSCxNQUFNLE9BQU8sMkJBQTJCO0lBeUN0QyxZQUNVLGVBQXVDLEVBQ3ZDLE1BQWMsRUFDZCxTQUFpQyxFQUNqQyxFQUFlO1FBSGYsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxjQUFTLEdBQVQsU0FBUyxDQUF3QjtRQUNqQyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBekN6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QXdCLENBQUMsQ0FBQztpTUFHMUQsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR0ksa0JBQWtCO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgTmdab25lLCBmb3J3YXJkUmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnZmFzdC1kZWVwLWVxdWFsJztcbmltcG9ydCB7IEFuZ3VsYXJQQ29ubmVjdERhdGEsIEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9fYnJpZGdlL2FuZ3VsYXItcGNvbm5lY3QnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NTcGlubmVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL19tZXNzYWdlcy9wcm9ncmVzcy1zcGlubmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IGdldEJhbm5lcnMgfSBmcm9tICcuLi8uLi8uLi8uLi9faGVscGVycy9jYXNlLXV0aWxzJztcbmltcG9ydCB7IFJlZmVyZW5jZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZS9yZWZlcmVuY2UuY29tcG9uZW50JztcblxuLyoqXG4gKiBXQVJOSU5HOiAgSXQgaXMgbm90IGV4cGVjdGVkIHRoYXQgdGhpcyBmaWxlIHNob3VsZCBiZSBtb2RpZmllZC4gIEl0IGlzIHBhcnQgb2YgaW5mcmFzdHJ1Y3R1cmUgY29kZSB0aGF0IHdvcmtzIHdpdGhcbiAqIFJlZHV4IGFuZCBjcmVhdGlvbi91cGRhdGUgb2YgUmVkdXggY29udGFpbmVycyBhbmQgUENvbm5lY3QuICBNb2RpZnlpbmcgdGhpcyBjb2RlIGNvdWxkIGhhdmUgdW5kZXNpcmVhYmxlIHJlc3VsdHMgYW5kXG4gKiBpcyB0b3RhbGx5IGF0IHlvdXIgb3duIHJpc2suXG4gKi9cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLW1vZGFsLXZpZXctY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGFsLXZpZXctY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW9kYWwtdmlldy1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBNb2RhbFZpZXdDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuICBASW5wdXQoKSBkaXNwbGF5T25seUZBJDogYm9vbGVhbjtcblxuICAvLyBmb3Igd2hlbiBub24gbW9kYWxcbiAgQE91dHB1dCgpIG1vZGFsVmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAvLyBVc2VkIHdpdGggQW5ndWxhclBDb25uZWN0XG4gIGFuZ3VsYXJQQ29ubmVjdERhdGE6IEFuZ3VsYXJQQ29ubmVjdERhdGEgPSB7fTtcblxuICBhckNoaWxkcmVuJDogYW55W107XG4gIHN0YXRlUHJvcHMkOiBPYmplY3Q7XG4gIGJhbm5lcnM6IGFueTtcbiAgdGVtcGxhdGVOYW1lJDogc3RyaW5nO1xuICBidWlsZE5hbWUkOiBzdHJpbmc7XG4gIGNvbnRleHQkOiBzdHJpbmc7XG4gIHRpdGxlJCA9ICcnO1xuICBiU2hvd01vZGFsJCA9IGZhbHNlO1xuICBiU2hvd0FzTW9kYWwkID0gdHJ1ZTtcbiAgaXRlbUtleSQ6IHN0cmluZztcbiAgZm9ybUdyb3VwJDogRm9ybUdyb3VwO1xuICBvQ2FzZUluZm86IE9iamVjdCA9IHt9O1xuXG4gIC8vIGZvciBjYXVzaW5nIGEgY2hhbmdlIG9uIGFzc2lnbm1lbnRcbiAgdXBkYXRlVG9rZW4kID0gMDtcblxuICByb3V0aW5nSW5mb1JlZjogYW55ID0ge307XG5cbiAgLy8gY3JlYXRlZCBvYmplY3QgaXMgbm93IGEgVmlldyB3aXRoIGEgVGVtcGxhdGVcbiAgLy8gIFVzZSBpdHMgUENvbm5lY3QgdG8gcmVuZGVyIHRoZSBDYXNlVmlldzsgRE9OJ1QgcmVwbGFjZSB0aGlzLnBDb25uJFxuICBjcmVhdGVkVmlld1BDb25uJDogYW55O1xuXG4gIGJTdWJzY3JpYmVkID0gZmFsc2U7XG4gIGNhbmNlbFBDb25uJD86IHR5cGVvZiBQQ29ubmVjdDtcbiAgYlNob3dDYW5jZWxBbGVydCQgPSBmYWxzZTtcbiAgYkFsZXJ0U3RhdGU6IGJvb2xlYW47XG4gIGxvY2FsaXplZFZhbDogRnVuY3Rpb247XG4gIGxvY2FsZUNhdGVnb3J5ID0gJ0RhdGEgT2JqZWN0JztcbiAgaXNNdWx0aVJlY29yZCA9IGZhbHNlO1xuICBhY3Rpb25zRGlhbG9nID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbmd1bGFyUENvbm5lY3Q6IEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIHBzU2VydmljZTogUHJvZ3Jlc3NTcGlubmVyU2VydmljZSxcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlclxuICApIHtcbiAgICAvLyBjcmVhdGUgdGhlIGZvcm1Hcm91cFxuICAgIHRoaXMuZm9ybUdyb3VwJCA9IGZiLmdyb3VwKHsgaGlkZVJlcXVpcmVkOiBmYWxzZSB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc3BsYXlPbmx5RkEkKSB7XG4gICAgICAvLyBmb3Igd2hlbiBub24gbW9kYWxcbiAgICAgIHRoaXMuYlNob3dBc01vZGFsJCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIEZpcnN0IHRoaW5nIGluIGluaXRpYWxpemF0aW9uIGlzIHJlZ2lzdGVyaW5nIGFuZCBzdWJzY3JpYmluZyB0byB0aGUgQW5ndWxhclBDb25uZWN0IHNlcnZpY2VcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5yZWdpc3RlckFuZFN1YnNjcmliZUNvbXBvbmVudCh0aGlzLCB0aGlzLm9uU3RhdGVDaGFuZ2UpO1xuXG4gICAgY29uc3QgYmFzZUNvbnRleHQgPSB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuICAgIGNvbnN0IGFjTmFtZSA9IHRoaXMucENvbm4kLmdldENvbnRhaW5lck5hbWUoKTtcblxuICAgIC8vIGZvciBub3csIGluIGdlbmVyYWwgdGhpcyBzaG91bGQgYmUgb3ZlcnJpZGRlbiBieSB1cGRhdGVTZWxmKCksIGFuZCBub3QgYmUgYmxhbmtcbiAgICBpZiAodGhpcy5pdGVtS2V5JCA9PT0gJycpIHtcbiAgICAgIHRoaXMuaXRlbUtleSQgPSBiYXNlQ29udGV4dC5jb25jYXQoJy8nKS5jb25jYXQoYWNOYW1lKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZXJNZ3I6IGFueSA9IHRoaXMucENvbm4kLmdldENvbnRhaW5lck1hbmFnZXIoKTtcblxuICAgIGNvbnRhaW5lck1nci5pbml0aWFsaXplQ29udGFpbmVycyh7XG4gICAgICB0eXBlOiAnbXVsdGlwbGUnXG4gICAgfSk7XG5cbiAgICAvLyBjb25zdCB7IENPTlRBSU5FUl9UWVBFLCBQVUJfU1VCX0VWRU5UUyB9ID0gUENvcmUuZ2V0Q29uc3RhbnRzKCk7XG5cbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG4gICAgdGhpcy5sb2NhbGl6ZWRWYWwgPSBQQ29yZS5nZXRMb2NhbGVVdGlscygpLmdldExvY2FsZVZhbHVlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cblxuICAgIGNvbnN0IHsgUFVCX1NVQl9FVkVOVFMgfSA9IFBDb3JlLmdldENvbnN0YW50cygpO1xuXG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS51bnN1YnNjcmliZShcbiAgICAgIFBVQl9TVUJfRVZFTlRTLkVWRU5UX1NIT1dfQ0FOQ0VMX0FMRVJULFxuICAgICAgUFVCX1NVQl9FVkVOVFMuRVZFTlRfU0hPV19DQU5DRUxfQUxFUlQgLyogU2hvdWxkIGJlIHNhbWUgdW5pcXVlIHN0cmluZyBwYXNzZWQgZHVyaW5nIHN1YnNjcmlwdGlvbiAqL1xuICAgICk7XG4gICAgdGhpcy5iU3Vic2NyaWJlZCA9IGZhbHNlO1xuICB9XG5cbiAgLy8gQ2FsbGJhY2sgcGFzc2VkIHdoZW4gc3Vic2NyaWJpbmcgdG8gc3RvcmUgY2hhbmdlXG4gIG9uU3RhdGVDaGFuZ2UoKSB7XG4gICAgLy8gU2hvdWxkIGFsd2F5cyBjaGVjayB0aGUgYnJpZGdlIHRvIHNlZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZFxuICAgIC8vIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcilcbiAgICBjb25zdCBiVXBkYXRlU2VsZiA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcblxuICAgIC8vIE9OTFkgY2FsbCB1cGRhdGVTZWxmIHdoZW4gdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlXG4gICAgaWYgKGJVcGRhdGVTZWxmKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYlNob3dNb2RhbCQpIHtcbiAgICAgIC8vIHJpZ2h0IG5vdyBvbmx1IGdldCBvbmUgdXBkYXRlZCB3aGVuIGluaXRpYWwgZGlhcGxheS4gIFNvLCBvbmNlIG1vZGFsIGlzIHVwXG4gICAgICAvLyBsZXQgZmFsbCB0aHJvdWdoIGFuZCBkbyBhIGNoZWNrIHdpdGggXCJjb21wYXJlQ2FzZUluZm9Jc0RpZmZlcmVudFwiIHVudGlsIGZpeGVkXG4gICAgICAvLyB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICB9XG4gIH1cblxuICAvLyB1cGRhdGVTZWxmXG4gIHVwZGF0ZVNlbGYoKTogdm9pZCB7XG4gICAgLy8gcm91dGluZ0luZm8gd2FzIGFkZGVkIGFzIGNvbXBvbmVudCBwcm9wIGluIHBvcHVsYXRlQWRkaXRpb25hbFByb3BzXG4gICAgY29uc3Qgcm91dGluZ0luZm8gPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5nZXRDb21wb25lbnRQcm9wKHRoaXMsICdyb3V0aW5nSW5mbycpO1xuICAgIHRoaXMucm91dGluZ0luZm9SZWYuY3VycmVudCA9IHJvdXRpbmdJbmZvO1xuXG4gICAgbGV0IGxvYWRpbmdJbmZvO1xuICAgIHRyeSB7XG4gICAgICAvLyBAdHMtaWdub3JlIC0gUHJvcGVydHkgJ2dldExvYWRpbmdTdGF0dXMnIGlzIHByaXZhdGUgYW5kIG9ubHkgYWNjZXNzaWJsZSB3aXRoaW4gY2xhc3MgJ0MxMW5FbnYnXG4gICAgICBsb2FkaW5nSW5mbyA9IHRoaXMucENvbm4kLmdldExvYWRpbmdTdGF0dXMoKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgLyogZW1wdHkgKi9cbiAgICB9XG4gICAgLy8gY29uc3QgY29uZmlnUHJvcHMgPSB0aGlzLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSk7XG4gICAgdGhpcy5zdGF0ZVByb3BzJCA9IHRoaXMucENvbm4kLmdldFN0YXRlUHJvcHMoKTtcbiAgICB0aGlzLmJhbm5lcnMgPSB0aGlzLmdldEJhbm5lcnMoKTtcblxuICAgIGlmICghbG9hZGluZ0luZm8pIHtcbiAgICAgIC8vIHR1cm4gb2ZmIHNwaW5uZXJcbiAgICAgIC8vIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcbiAgICB9XG5cbiAgICBpZiAocm91dGluZ0luZm8gJiYgIWxvYWRpbmdJbmZvIC8qICYmIHRoaXMuYlVwZGF0ZSAqLykge1xuICAgICAgY29uc3QgY3VycmVudE9yZGVyID0gcm91dGluZ0luZm8uYWNjZXNzZWRPcmRlcjtcblxuICAgICAgaWYgKHVuZGVmaW5lZCA9PSBjdXJyZW50T3JkZXIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjdXJyZW50SXRlbXMgPSByb3V0aW5nSW5mby5pdGVtcztcblxuICAgICAgY29uc3QgeyBrZXksIGxhdGVzdEl0ZW0gfSA9IHRoaXMuZ2V0S2V5QW5kTGF0ZXN0SXRlbShyb3V0aW5nSW5mbyk7XG5cbiAgICAgIGlmIChjdXJyZW50T3JkZXIubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAoY3VycmVudEl0ZW1zW2tleV0gJiYgY3VycmVudEl0ZW1zW2tleV0udmlldyAmJiBPYmplY3Qua2V5cyhjdXJyZW50SXRlbXNba2V5XS52aWV3KS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgY3VycmVudEl0ZW0gPSBjdXJyZW50SXRlbXNba2V5XTtcbiAgICAgICAgICBjb25zdCByb290VmlldyA9IGN1cnJlbnRJdGVtLnZpZXc7XG4gICAgICAgICAgY29uc3QgeyBjb250ZXh0IH0gPSByb290Vmlldy5jb25maWc7XG4gICAgICAgICAgY29uc3QgY29uZmlnOiBhbnkgPSB7IG1ldGE6IHJvb3RWaWV3IH07XG4gICAgICAgICAgY29uZmlnLm9wdGlvbnMgPSB7XG4gICAgICAgICAgICBjb250ZXh0OiBjdXJyZW50SXRlbS5jb250ZXh0LFxuICAgICAgICAgICAgaGFzRm9ybTogdHJ1ZSxcbiAgICAgICAgICAgIHBhZ2VSZWZlcmVuY2U6IGNvbnRleHQgfHwgdGhpcy5wQ29ubiQuZ2V0UGFnZVJlZmVyZW5jZSgpXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGlmICghdGhpcy5iU3Vic2NyaWJlZCkge1xuICAgICAgICAgICAgdGhpcy5iU3Vic2NyaWJlZCA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCB7IFBVQl9TVUJfRVZFTlRTIH0gPSBQQ29yZS5nZXRDb25zdGFudHMoKTtcbiAgICAgICAgICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICBQVUJfU1VCX0VWRU5UUy5FVkVOVF9TSE9XX0NBTkNFTF9BTEVSVCxcbiAgICAgICAgICAgICAgcGF5bG9hZCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93QWxlcnQocGF5bG9hZCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFBVQl9TVUJfRVZFTlRTLkVWRU5UX1NIT1dfQ0FOQ0VMX0FMRVJUXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIGxldCBjb25maWdPYmplY3QgPSBQQ29yZS5jcmVhdGVQQ29ubmVjdChjb25maWcpO1xuXG4gICAgICAgICAgLy8gVEhJUyBpcyB3aGVyZSB0aGUgVmlld0NvbnRhaW5lciBjcmVhdGVzIGEgVmlld1xuICAgICAgICAgIC8vIFRoZSBjb25maWcgaGFzIG1ldGEuY29uZmlnLnR5cGUgPSBcInZpZXdcIlxuICAgICAgICAgIHRoaXMuY3JlYXRlVmlldyhyb3V0aW5nSW5mbywgY3VycmVudEl0ZW0sIGxhdGVzdEl0ZW0sIGtleSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaGlkZU1vZGFsKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlVmlldyhyb3V0aW5nSW5mbywgY3VycmVudEl0ZW0sIGxhdGVzdEl0ZW0sIGtleSkge1xuICAgIGNvbnN0IGNvbmZpZ09iamVjdCA9IHRoaXMuZ2V0Q29uZmlnT2JqZWN0KGN1cnJlbnRJdGVtLCBudWxsLCBmYWxzZSk7XG4gICAgY29uc3QgbmV3Q29tcCA9IGNvbmZpZ09iamVjdD8uZ2V0UENvbm5lY3QoKTtcbiAgICAvLyBjb25zdCBuZXdDb21wTmFtZSA9IG5ld0NvbXAuZ2V0Q29tcG9uZW50TmFtZSgpO1xuICAgIC8vIEB0cy1pZ25vcmUgLSBwYXJhbWV0ZXIg4oCcY29udGV4dE5hbWXigJ0gZm9yIGdldERhdGFPYmplY3QgbWV0aG9kIHNob3VsZCBiZSBvcHRpb25hbFxuICAgIGNvbnN0IGNhc2VJbmZvID0gbmV3Q29tcCAmJiBuZXdDb21wLmdldERhdGFPYmplY3QoKSAmJiBuZXdDb21wLmdldERhdGFPYmplY3QoKS5jYXNlSW5mbyA/IG5ld0NvbXAuZ2V0RGF0YU9iamVjdCgpLmNhc2VJbmZvIDogbnVsbDtcbiAgICAvLyBUaGUgbWV0YWRhdGEgZm9yIHB5RGV0YWlscyBjaGFuZ2VkIHN1Y2ggdGhhdCB0aGUgXCJ0ZW1wbGF0ZVwiOiBcIkNhc2VWaWV3XCJcbiAgICAvLyAgaXMgbm8gbG9uZ2VyIGEgY2hpbGQgb2YgdGhlIGNyZWF0ZWQgVmlldyBidXQgaXMgaW4gdGhlIGNyZWF0ZWQgVmlldydzXG4gICAgLy8gIGNvbmZpZy4gU28sIHdlIERPTidUIHdhbnQgdG8gcmVwbGFjZSB0aGlzLnBDb25uJCBzaW5jZSB0aGUgY3JlYXRlZFxuICAgIC8vICBjb21wb25lbnQgaXMgYSBWaWV3IChhbmQgbm90IGEgVmlld0NvbnRhaW5lcikuIFdlIG5vdyBsb29rIGZvciB0aGVcbiAgICAvLyAgXCJ0ZW1wbGF0ZVwiIHR5cGUgZGlyZWN0bHkgaW4gdGhlIGNyZWF0ZWQgY29tcG9uZW50IChuZXdDb21wKSBhbmQgTk9UXG4gICAgLy8gIGFzIGEgY2hpbGQgb2YgdGhlIG5ld2x5IGNyZWF0ZWQgY29tcG9uZW50LlxuICAgIC8vIGNvbnNvbGUubG9nKGAtLS0+IE1vZGFsVmlld0NvbnRhaW5lciBjcmVhdGVkIG5ldyAke25ld0NvbXBOYW1lfWApO1xuXG4gICAgLy8gVXNlIHRoZSBuZXdseSBjcmVhdGVkIGNvbXBvbmVudCAoVmlldykgaW5mbyBidXQgRE8gTk9UIHJlcGxhY2VcbiAgICAvLyAgdGhpcyBNb2RhbFZpZXdDb250YWluZXIncyBwQ29ubiQsIGV0Yy5cbiAgICAvLyAgTm90ZSB0aGF0IHdlJ3JlIG5vdyB1c2luZyB0aGUgbmV3bHkgY3JlYXRlZCBWaWV3J3MgUENvbm5lY3QgaW4gdGhlXG4gICAgLy8gIFZpZXdDb250YWluZXIgSFRNTCB0ZW1wbGF0ZSB0byBndWlkZSB3aGF0J3MgcmVuZGVyZWQgc2ltaWxhciB0byB3aGF0XG4gICAgLy8gIHRoZSBOZWJ1bGEvQ29uc3RlbGxhdGlvbiByZXR1cm4gb2YgUmVhY3QuRnJhZ21lbnQgZG9lc1xuXG4gICAgLy8gcmlnaHQgbm93IG5lZWQgdG8gY2hlY2sgY2FzZUluZm8gZm9yIGNoYW5nZXMsIHRvIHRyaWdnZXIgcmVkcmF3LCBub3QgZ2V0dGluZ1xuICAgIC8vIGNoYW5nZXMgZnJvbSBhbmd1bGFyUGNvbm5lY3QgZXhjZXB0IGZvciBmaXJzdCBkcmF3XG4gICAgaWYgKG5ld0NvbXAgJiYgY2FzZUluZm8gJiYgdGhpcy5jb21wYXJlQ2FzZUluZm9Jc0RpZmZlcmVudChjYXNlSW5mbykpIHtcbiAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcblxuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5jcmVhdGVkVmlld1BDb25uJCA9IG5ld0NvbXA7XG4gICAgICAgIGNvbnN0IG5ld0NvbmZpZ1Byb3BzID0gbmV3Q29tcC5nZXRDb25maWdQcm9wcygpO1xuICAgICAgICB0aGlzLnRlbXBsYXRlTmFtZSQgPSAndGVtcGxhdGUnIGluIG5ld0NvbmZpZ1Byb3BzID8gKG5ld0NvbmZpZ1Byb3BzLnRlbXBsYXRlIGFzIHN0cmluZykgOiAnJztcblxuICAgICAgICBjb25zdCB7IGFjdGlvbk5hbWUgfSA9IGxhdGVzdEl0ZW07XG4gICAgICAgIGNvbnN0IHRoZU5ld0Nhc2VJbmZvID0gbmV3Q29tcC5nZXRDYXNlSW5mbygpO1xuICAgICAgICAvLyBjb25zdCBjYXNlTmFtZSA9IHRoZU5ld0Nhc2VJbmZvLmdldE5hbWUoKTtcbiAgICAgICAgY29uc3QgSUQgPSB0aGVOZXdDYXNlSW5mby5nZXRCdXNpbmVzc0lEKCkgfHwgdGhlTmV3Q2FzZUluZm8uZ2V0SUQoKTtcblxuICAgICAgICBjb25zdCBjYXNlVHlwZU5hbWUgPSB0aGVOZXdDYXNlSW5mby5nZXRDYXNlVHlwZU5hbWUoKTtcbiAgICAgICAgY29uc3QgaXNEYXRhT2JqZWN0ID0gcm91dGluZ0luZm8uaXRlbXNbbGF0ZXN0SXRlbS5jb250ZXh0XS5yZXNvdXJjZVR5cGUgPT09IFBDb3JlLmdldENvbnN0YW50cygpLlJFU09VUkNFX1RZUEVTLkRBVEE7XG4gICAgICAgIGNvbnN0IGRhdGFPYmplY3RBY3Rpb24gPSByb3V0aW5nSW5mby5pdGVtc1tsYXRlc3RJdGVtLmNvbnRleHRdLnJlc291cmNlU3RhdHVzO1xuICAgICAgICB0aGlzLmlzTXVsdGlSZWNvcmQgPSByb3V0aW5nSW5mby5pdGVtc1tsYXRlc3RJdGVtLmNvbnRleHRdLmlzTXVsdGlSZWNvcmREYXRhO1xuICAgICAgICB0aGlzLmNvbnRleHQkID0gbGF0ZXN0SXRlbS5jb250ZXh0O1xuICAgICAgICB0aGlzLnRpdGxlJCA9XG4gICAgICAgICAgaXNEYXRhT2JqZWN0IHx8IHRoaXMuaXNNdWx0aVJlY29yZFxuICAgICAgICAgICAgPyB0aGlzLmdldE1vZGFsSGVhZGluZyhkYXRhT2JqZWN0QWN0aW9uKVxuICAgICAgICAgICAgOiB0aGlzLmRldGVybWluZU1vZGFsSGVhZGVyQnlBY3Rpb24oXG4gICAgICAgICAgICAgICAgYWN0aW9uTmFtZSxcbiAgICAgICAgICAgICAgICBjYXNlVHlwZU5hbWUsXG4gICAgICAgICAgICAgICAgSUQsXG4gICAgICAgICAgICAgICAgYCR7dGhlTmV3Q2FzZUluZm8/LmdldENsYXNzTmFtZSgpfSFDQVNFISR7dGhlTmV3Q2FzZUluZm8uZ2V0TmFtZSgpfWAudG9VcHBlckNhc2UoKVxuICAgICAgICAgICAgICApO1xuICAgICAgICBjb25zdCBiSXNSZWZDb21wb25lbnQgPSB0aGlzLmNoZWNrSWZSZWZDb21wb25lbnQobmV3Q29tcCk7XG5cbiAgICAgICAgaWYgKGJJc1JlZkNvbXBvbmVudCkge1xuICAgICAgICAgIGNvbnN0IG5ld1BDb25uID0gUmVmZXJlbmNlQ29tcG9uZW50Lm5vcm1hbGl6ZVBDb25uKG5ld0NvbXApO1xuICAgICAgICAgIHRoaXMuYXJDaGlsZHJlbiQgPSBSZWZlcmVuY2VDb21wb25lbnQubm9ybWFsaXplUENvbm5BcnJheShuZXdQQ29ubi5nZXRDaGlsZHJlbigpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB1cGRhdGUgY2hpbGRyZW4gd2l0aCBuZXcgdmlldydzIGNoaWxkcmVuXG4gICAgICAgICAgdGhpcy5hckNoaWxkcmVuJCA9IG5ld0NvbXAuZ2V0Q2hpbGRyZW4oKSBhcyBhbnk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJTaG93TW9kYWwkID0gdHJ1ZTtcblxuICAgICAgICAvLyBmb3Igd2hlbiBub24gbW9kYWxcbiAgICAgICAgdGhpcy5tb2RhbFZpc2libGVDaGFuZ2UuZW1pdCh0aGlzLmJTaG93TW9kYWwkKTtcblxuICAgICAgICAvLyBzYXZlIG9mZiBpdGVtS2V5IHRvIGJlIHVzZWQgZm9yIGZpbmlzaEFzc2lnbm1lbnQsIGV0Yy5cbiAgICAgICAgdGhpcy5pdGVtS2V5JCA9IGtleTtcblxuICAgICAgICAvLyBjYXVzZSBhIGNoYW5nZSBmb3IgYXNzaWdubWVudFxuICAgICAgICB0aGlzLnVwZGF0ZVRva2VuJCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaGlkZU1vZGFsKCkge1xuICAgIGlmICh0aGlzLmJTaG93TW9kYWwkKSB7XG4gICAgICAvLyBvdGhlciBjb2RlIGluIE5lYnVsYS9Db25zdGVsbGF0aW9uIG5vdCBuZWVkZWQgY3VycmVudGx5LCBidXQgaWYgc28gbGF0ZXIsXG4gICAgICAvLyBzaG91bGQgcHV0IGhlcmVcbiAgICB9XG5cbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5iU2hvd01vZGFsJCA9IGZhbHNlO1xuXG4gICAgICAvLyBmb3Igd2hlbiBub24gbW9kYWxcbiAgICAgIHRoaXMubW9kYWxWaXNpYmxlQ2hhbmdlLmVtaXQodGhpcy5iU2hvd01vZGFsJCk7XG5cbiAgICAgIHRoaXMub0Nhc2VJbmZvID0ge307XG4gICAgfSk7XG4gIH1cblxuICBnZXRDb25maWdPYmplY3QoaXRlbSwgcENvbm5lY3QsIGlzUmV2ZXJzZUNvZXhpc3RlbmNlID0gZmFsc2UpIHtcbiAgICBsZXQgY29uZmlnO1xuICAgIGlmIChpc1JldmVyc2VDb2V4aXN0ZW5jZSkge1xuICAgICAgY29uZmlnID0ge1xuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgcGFnZVJlZmVyZW5jZTogcENvbm5lY3Q/LmdldFBhZ2VSZWZlcmVuY2UoKSxcbiAgICAgICAgICBoYXNGb3JtOiB0cnVlLFxuICAgICAgICAgIGNvbnRhaW5lck5hbWU6IHBDb25uZWN0Py5nZXRDb250YWluZXJOYW1lKCkgfHwgUENvcmUuZ2V0Q29uc3RhbnRzKCkuTU9EQUxcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHJldHVybiBQQ29yZS5jcmVhdGVQQ29ubmVjdChjb25maWcpO1xuICAgIH1cbiAgICBpZiAoaXRlbSkge1xuICAgICAgY29uc3QgeyBjb250ZXh0LCB2aWV3LCBpc0J1bGtBY3Rpb24gfSA9IGl0ZW07XG4gICAgICBjb25zdCB0YXJnZXQgPSBQQ29yZS5nZXRDb250YWluZXJVdGlscygpLmdldFRhcmdldEZyb21Db250YWluZXJJdGVtSUQoY29udGV4dCk7XG4gICAgICBjb25maWcgPSB7XG4gICAgICAgIG1ldGE6IHZpZXcsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIHBhZ2VSZWZlcmVuY2U6IHZpZXcuY29uZmlnLmNvbnRleHQgfHwgcENvbm5lY3QuZ2V0UGFnZVJlZmVyZW5jZSgpLFxuICAgICAgICAgIGhhc0Zvcm06IHRydWUsXG4gICAgICAgICAgLi4uKGlzQnVsa0FjdGlvbiAmJiB7IGlzQnVsa0FjdGlvbiB9KSxcbiAgICAgICAgICBjb250YWluZXJOYW1lOiBwQ29ubmVjdD8uZ2V0Q29udGFpbmVyTmFtZSgpIHx8IFBDb3JlLmdldENvbnN0YW50cygpLk1PREFMLFxuICAgICAgICAgIHRhcmdldFxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgcmV0dXJuIFBDb3JlLmNyZWF0ZVBDb25uZWN0KGNvbmZpZyk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY2hlY2tJZlJlZkNvbXBvbmVudCh0aGVQQ29ubjogYW55KTogYm9vbGVhbiB7XG4gICAgbGV0IGJSZXR1cm4gPSBmYWxzZTtcbiAgICBpZiAodGhlUENvbm4gJiYgdGhlUENvbm4uZ2V0Q29tcG9uZW50TmFtZSgpID09ICdyZWZlcmVuY2UnKSB7XG4gICAgICBiUmV0dXJuID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYlJldHVybjtcbiAgfVxuXG4gIG9uQWxlcnRTdGF0ZShiRGF0YTogYm9vbGVhbikge1xuICAgIHRoaXMuYkFsZXJ0U3RhdGUgPSBiRGF0YTtcbiAgICB0aGlzLmJTaG93Q2FuY2VsQWxlcnQkID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuYkFsZXJ0U3RhdGUpIHtcbiAgICAgIHRoaXMuaGlkZU1vZGFsKCk7XG4gICAgfVxuICB9XG5cbiAgc2hvd0FsZXJ0KHBheWxvYWQpIHtcbiAgICBjb25zdCB7IGxhdGVzdEl0ZW0gfSA9IHRoaXMuZ2V0S2V5QW5kTGF0ZXN0SXRlbSh0aGlzLnJvdXRpbmdJbmZvUmVmLmN1cnJlbnQpO1xuICAgIGNvbnN0IHsgaXNNb2RhbEFjdGlvbiB9ID0gcGF5bG9hZDtcblxuICAgIC8qXG4gICAgICBJZiB3ZSBhcmUgaW4gY3JlYXRlIHN0YWdlIGZ1bGwgcGFnZSBtb2RlLCBjcmVhdGVkIGEgbmV3IGNhc2UgYW5kIHRyeWluZyB0byBjbGljayBvbiBjYW5jZWwgYnV0dG9uXG4gICAgICBpdCB3aWxsIHNob3cgdHdvIGFsZXJ0IGRpYWxvZ3Mgd2hpY2ggaXMgbm90IGV4cGVjdGVkLiBIZW5jZSBpc01vZGFsQWN0aW9uIGZsYWcgdG8gYXZvaWQgdGhhdC5cbiAgICAqL1xuICAgIGlmIChsYXRlc3RJdGVtICYmIGlzTW9kYWxBY3Rpb24gJiYgIXRoaXMuYWN0aW9uc0RpYWxvZykge1xuICAgICAgY29uc3QgY29uZmlnT2JqZWN0ID0gdGhpcy5nZXRDb25maWdPYmplY3QobGF0ZXN0SXRlbSwgdGhpcy5wQ29ubiQpO1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5jYW5jZWxQQ29ubiQgPSBjb25maWdPYmplY3Q/LmdldFBDb25uZWN0KCk7XG4gICAgICAgIHRoaXMuYlNob3dDYW5jZWxBbGVydCQgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaGFzQ29udGFpbmVySXRlbXMocm91dGluZ0luZm8pIHtcbiAgICBpZiAocm91dGluZ0luZm8pIHtcbiAgICAgIGNvbnN0IHsgYWNjZXNzZWRPcmRlciwgaXRlbXMgfSA9IHJvdXRpbmdJbmZvO1xuICAgICAgcmV0dXJuIGFjY2Vzc2VkT3JkZXIgJiYgYWNjZXNzZWRPcmRlci5sZW5ndGggPiAwICYmIGl0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXRLZXlBbmRMYXRlc3RJdGVtKHJvdXRpbmdpbmZvKSB7XG4gICAgaWYgKHRoaXMuaGFzQ29udGFpbmVySXRlbXMocm91dGluZ2luZm8pKSB7XG4gICAgICBjb25zdCB7IGFjY2Vzc2VkT3JkZXIsIGl0ZW1zIH0gPSByb3V0aW5naW5mbztcbiAgICAgIGNvbnN0IGtleSA9IGFjY2Vzc2VkT3JkZXJbYWNjZXNzZWRPcmRlci5sZW5ndGggLSAxXTtcbiAgICAgIGNvbnN0IGxhdGVzdEl0ZW0gPSBpdGVtc1trZXldO1xuICAgICAgcmV0dXJuIHsga2V5LCBsYXRlc3RJdGVtIH07XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbXBhcmVDYXNlSW5mb0lzRGlmZmVyZW50KG9DdXJyZW50Q2FzZUluZm86IE9iamVjdCk6IGJvb2xlYW4ge1xuICAgIGxldCBiUmV0ID0gZmFsc2U7XG5cbiAgICAvLyBmYXN0LWRlZXAtZXF1YWwgdmVyc2lvblxuICAgIGlmIChpc0VxdWFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGJSZXQgPSAhaXNFcXVhbCh0aGlzLm9DYXNlSW5mbywgb0N1cnJlbnRDYXNlSW5mbyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNDdXJybmVudENhc2VJbmZvID0gSlNPTi5zdHJpbmdpZnkob0N1cnJlbnRDYXNlSW5mbyk7XG4gICAgICBjb25zdCBzT2xkQ2FzZUluZm8gPSBKU09OLnN0cmluZ2lmeSh0aGlzLm9DYXNlSW5mbyk7XG4gICAgICAvLyBzdHJpbmdpZnkgY29tcGFyZSB2ZXJzaW9uXG4gICAgICBpZiAoc0N1cnJuZW50Q2FzZUluZm8gIT0gc09sZENhc2VJbmZvKSB7XG4gICAgICAgIGJSZXQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGlmIGRpZmZlcmVudCwgc2F2ZSBvZmYgbmV3IGNhc2UgaW5mb1xuICAgIGlmIChiUmV0KSB7XG4gICAgICB0aGlzLm9DYXNlSW5mbyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob0N1cnJlbnRDYXNlSW5mbykpO1xuICAgIH1cblxuICAgIHJldHVybiBiUmV0O1xuICB9XG5cbiAgZ2V0QmFubmVycygpIHtcbiAgICByZXR1cm4gZ2V0QmFubmVycyh7IHRhcmdldDogdGhpcy5pdGVtS2V5JCwgLi4udGhpcy5zdGF0ZVByb3BzJCB9KTtcbiAgfVxuXG4gIGdldE1vZGFsSGVhZGluZyhkYXRhT2JqZWN0QWN0aW9uKSB7XG4gICAgcmV0dXJuIGRhdGFPYmplY3RBY3Rpb24gPT09IFBDb3JlLmdldENvbnN0YW50cygpLlJFU09VUkNFX1NUQVRVUy5DUkVBVEVcbiAgICAgID8gdGhpcy5sb2NhbGl6ZWRWYWwoJ0FkZCBSZWNvcmQnLCB0aGlzLmxvY2FsZUNhdGVnb3J5KVxuICAgICAgOiB0aGlzLmxvY2FsaXplZFZhbCgnRWRpdCBSZWNvcmQnLCB0aGlzLmxvY2FsZUNhdGVnb3J5KTtcbiAgfVxuXG4gIGRldGVybWluZU1vZGFsSGVhZGVyQnlBY3Rpb24oYWN0aW9uTmFtZSwgY2FzZVR5cGVOYW1lLCBJRCwgY2FzZUxvY2FsZVJlZikge1xuICAgIGlmIChhY3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGl6ZWRWYWwoYWN0aW9uTmFtZSwgdGhpcy5sb2NhbGVDYXRlZ29yeSk7XG4gICAgfVxuICAgIHJldHVybiBgJHt0aGlzLmxvY2FsaXplZFZhbCgnQ3JlYXRlJywgdGhpcy5sb2NhbGVDYXRlZ29yeSl9ICR7dGhpcy5sb2NhbGl6ZWRWYWwoY2FzZVR5cGVOYW1lLCB1bmRlZmluZWQsIGNhc2VMb2NhbGVSZWYpfSAoJHtJRH0pYDtcbiAgfVxuXG4gIGNsb3NlQWN0aW9uc0RpYWxvZyA9ICgpID0+IHtcbiAgICB0aGlzLmFjdGlvbnNEaWFsb2cgPSB0cnVlO1xuICAgIC8vIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgdGhpcy5iU2hvd01vZGFsJCA9IGZhbHNlO1xuXG4gICAgLy8gZm9yIHdoZW4gbm9uIG1vZGFsXG4gICAgdGhpcy5tb2RhbFZpc2libGVDaGFuZ2UuZW1pdCh0aGlzLmJTaG93TW9kYWwkKTtcblxuICAgIHRoaXMub0Nhc2VJbmZvID0ge307XG4gICAgLy8gfSk7XG4gIH07XG59XG4iLCI8ZGl2IGlkPVwiZGlhbG9nXCIgKm5nSWY9XCJiU2hvd01vZGFsJCAmJiBiU2hvd0FzTW9kYWwkXCIgY2xhc3M9XCJwc2RrLWRpYWxvZy1iYWNrZ3JvdW5kXCI+XG4gIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLXZpZXctY29udGFpbmVyLXRvcFwiIGlkPVwie3sgYnVpbGROYW1lJCB9fVwiPlxuICAgIDxoMyAqbmdJZj1cInRpdGxlJCAhPSAnJ1wiPnt7IHRpdGxlJCB9fTwvaDM+XG4gICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgIG5hbWU9XCJBc3NpZ25tZW50XCJcbiAgICAgIFtwcm9wc109XCJ7IHBDb25uJDogY3JlYXRlZFZpZXdQQ29ubiQsIGZvcm1Hcm91cCQsIGFyQ2hpbGRyZW4kLCBpdGVtS2V5JCwgaXNDcmVhdGVTdGFnZSQ6IHRydWUsIHVwZGF0ZVRva2VuJCwgaXNJbk1vZGFsJDogdHJ1ZSwgYmFubmVycyB9XCJcbiAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDxkaXYgKm5nSWY9XCJpc011bHRpUmVjb3JkXCI+XG4gICAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgICBuYW1lPVwiTGlzdFZpZXdBY3Rpb25CdXR0b25zXCJcbiAgICAgICAgW3Byb3BzXT1cInsgcENvbm4kOiBjcmVhdGVkVmlld1BDb25uJCwgY29udGV4dCQgfVwiXG4gICAgICAgIFtvdXRwdXRFdmVudHNdPVwieyBjbG9zZUFjdGlvbnNEaWFsb2c6IGNsb3NlQWN0aW9uc0RpYWxvZyB9XCJcbiAgICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJiU2hvd01vZGFsJCAmJiAhYlNob3dBc01vZGFsJFwiPlxuICA8ZGl2IGlkPVwie3sgYnVpbGROYW1lJCB9fVwiPlxuICAgIDxoMyAqbmdJZj1cInRpdGxlJCAhPSAnJ1wiPnt7IHRpdGxlJCB9fTwvaDM+XG4gICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgIG5hbWU9XCJBc3NpZ25tZW50XCJcbiAgICAgIFtwcm9wc109XCJ7IHBDb25uJDogY3JlYXRlZFZpZXdQQ29ubiQsIGZvcm1Hcm91cCQsIGFyQ2hpbGRyZW4kLCBpdGVtS2V5JCwgaXNDcmVhdGVTdGFnZSQ6IHRydWUsIHVwZGF0ZVRva2VuJCB9XCJcbiAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiYlNob3dDYW5jZWxBbGVydCRcIj5cbiAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICBuYW1lPVwiQ2FuY2VsQWxlcnRcIlxuICAgIFtwcm9wc109XCJ7IGJTaG93QWxlcnQkOiBiU2hvd0NhbmNlbEFsZXJ0JCwgcENvbm4kOiBjYW5jZWxQQ29ubiQgfVwiXG4gICAgW3BhcmVudF09XCJ0aGlzXCJcbiAgICBbb3V0cHV0RXZlbnRzXT1cInsgb25BbGVydFN0YXRlJDogb25BbGVydFN0YXRlIH1cIlxuICA+PC9jb21wb25lbnQtbWFwcGVyPlxuPC9kaXY+XG4iXX0=
|
|
@@ -10,6 +10,13 @@ import * as i2 from "../../../_messages/progress-spinner.service";
|
|
|
10
10
|
import * as i3 from "../../../_messages/error-messages.service";
|
|
11
11
|
import * as i4 from "@angular/material/snack-bar";
|
|
12
12
|
import * as i5 from "@angular/common";
|
|
13
|
+
function getRefreshProps(refreshConditions) {
|
|
14
|
+
// refreshConditions cuurently supports only "Changes" event
|
|
15
|
+
if (!refreshConditions) {
|
|
16
|
+
return [];
|
|
17
|
+
}
|
|
18
|
+
return refreshConditions.filter(item => item.event && item.event === 'Changes').map(item => [item.field, item.field?.substring(1)]) || [];
|
|
19
|
+
}
|
|
13
20
|
export class AssignmentComponent {
|
|
14
21
|
constructor(angularPConnect, psService, erService, ngZone, snackBar) {
|
|
15
22
|
this.angularPConnect = angularPConnect;
|
|
@@ -20,7 +27,6 @@ export class AssignmentComponent {
|
|
|
20
27
|
this.isInModal$ = false;
|
|
21
28
|
// For interaction with AngularPConnect
|
|
22
29
|
this.angularPConnectData = {};
|
|
23
|
-
this.bIsRefComponent = false;
|
|
24
30
|
this.bInitialized = false;
|
|
25
31
|
this.bHasNavigation$ = false;
|
|
26
32
|
this.bIsVertical$ = false;
|
|
@@ -72,18 +78,12 @@ export class AssignmentComponent {
|
|
|
72
78
|
}
|
|
73
79
|
}
|
|
74
80
|
updateChanges() {
|
|
75
|
-
this.
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
this.
|
|
80
|
-
|
|
81
|
-
if (this.bIsRefComponent) {
|
|
82
|
-
// this.arChildren$ = ReferenceComponent.normalizePConnArray(this.pConn$.getChildren());
|
|
83
|
-
this.arChildren$ = ReferenceComponent.normalizePConnArray(this.newPConn$.getChildren());
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
this.createButtons();
|
|
81
|
+
this.registerForRefresh();
|
|
82
|
+
// pConn$ may be a 'reference' component, so normalize it
|
|
83
|
+
this.newPConn$ = ReferenceComponent.normalizePConn(this.pConn$);
|
|
84
|
+
if (this.arChildren$) {
|
|
85
|
+
this.createButtons();
|
|
86
|
+
}
|
|
87
87
|
}
|
|
88
88
|
checkIfRefComponent(thePConn) {
|
|
89
89
|
let bReturn = false;
|
|
@@ -93,15 +93,9 @@ export class AssignmentComponent {
|
|
|
93
93
|
return bReturn;
|
|
94
94
|
}
|
|
95
95
|
initComponent() {
|
|
96
|
-
this.bIsRefComponent = this.checkIfRefComponent(this.pConn$);
|
|
97
96
|
// pConn$ may be a 'reference' component, so normalize it
|
|
98
97
|
// this.pConn$ = ReferenceComponent.normalizePConn(this.pConn$);
|
|
99
98
|
this.newPConn$ = ReferenceComponent.normalizePConn(this.pConn$);
|
|
100
|
-
// If 'reference' so we need to get the children of the normalized pConn
|
|
101
|
-
if (this.bIsRefComponent) {
|
|
102
|
-
// this.arChildren$ = ReferenceComponent.normalizePConnArray(this.pConn$.getChildren());
|
|
103
|
-
this.arChildren$ = ReferenceComponent.normalizePConnArray(this.newPConn$.getChildren());
|
|
104
|
-
}
|
|
105
99
|
// prevent re-intializing with flowContainer update unless an action is taken
|
|
106
100
|
this.bReInit = false;
|
|
107
101
|
this.bHasNavigation$ = false;
|
|
@@ -132,7 +126,9 @@ export class AssignmentComponent {
|
|
|
132
126
|
this.cancelAssignment = actionsAPI.cancelAssignment.bind(actionsAPI);
|
|
133
127
|
this.showPage = actionsAPI.showPage.bind(actionsAPI);
|
|
134
128
|
this.cancelCreateStageAssignment = actionsAPI.cancelCreateStageAssignment.bind(actionsAPI);
|
|
135
|
-
this.
|
|
129
|
+
if (this.arChildren$) {
|
|
130
|
+
this.createButtons();
|
|
131
|
+
}
|
|
136
132
|
}
|
|
137
133
|
createButtons() {
|
|
138
134
|
// let oData = this.pConn$.getDataObject();
|
|
@@ -361,6 +357,29 @@ export class AssignmentComponent {
|
|
|
361
357
|
control.markAsTouched();
|
|
362
358
|
});
|
|
363
359
|
}
|
|
360
|
+
registerForRefresh() {
|
|
361
|
+
// @ts-ignore - Property 'getActionRefreshConditions' is private and only accessible within class 'CaseInfo'
|
|
362
|
+
const refreshConditions = this.pConn$.getCaseInfo()?.getActionRefreshConditions();
|
|
363
|
+
const pageReference = this.pConn$.getPageReference();
|
|
364
|
+
const context = this.pConn$.getContextName();
|
|
365
|
+
// refresh api de-registration
|
|
366
|
+
PCore.getRefreshManager().deRegisterForRefresh(context);
|
|
367
|
+
// refresh api registration
|
|
368
|
+
const refreshProps = getRefreshProps(refreshConditions);
|
|
369
|
+
const caseKey = this.pConn$.getCaseInfo().getKey();
|
|
370
|
+
const refreshOptions = {
|
|
371
|
+
autoDetectRefresh: true,
|
|
372
|
+
preserveClientChanges: false
|
|
373
|
+
};
|
|
374
|
+
if (refreshProps.length > 0) {
|
|
375
|
+
refreshProps.forEach(prop => {
|
|
376
|
+
PCore.getRefreshManager().registerForRefresh('PROP_CHANGE', this.pConn$.getActionsApi().refreshCaseView.bind(this.pConn$.getActionsApi(), caseKey, null, pageReference, {
|
|
377
|
+
...refreshOptions,
|
|
378
|
+
refreshFor: prop[0]
|
|
379
|
+
}), `${pageReference}.${prop[1]}`, `${context}/${pageReference}`, context);
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
}
|
|
364
383
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AssignmentComponent, deps: [{ token: i1.AngularPConnectService }, { token: i2.ProgressSpinnerService }, { token: i3.ErrorMessagesService }, { token: i0.NgZone }, { token: i4.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
365
384
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AssignmentComponent, isStandalone: true, selector: "app-assignment", inputs: { pConn$: "pConn$", formGroup$: "formGroup$", arChildren$: "arChildren$", itemKey$: "itemKey$", isCreateStage$: "isCreateStage$", updateToken$: "updateToken$", isInModal$: "isInModal$", banners: "banners" }, usesOnChanges: true, ngImport: i0, template: "<div>\n <div><component-mapper name=\"AlertBanner\" [props]=\"{ banners }\" [parent]=\"this\"></component-mapper></div>\n <div *ngIf=\"bHasNavigation$\" class=\"psdk-stepper\">\n <component-mapper\n name=\"MultiStep\"\n [props]=\"{\n pConn$: newPConn$,\n formGroup$,\n arChildren$,\n arMainButtons$,\n arSecondaryButtons$,\n bIsVertical$,\n arCurrentStepIndicies$,\n arNavigationSteps$\n }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n </div>\n <div *ngIf=\"!bHasNavigation$\">\n <component-mapper\n name=\"AssignmentCard\"\n [props]=\"{ pConn$: newPConn$, formGroup$, arChildren$, arMainButtons$, arSecondaryButtons$, updateToken$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i5.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatSnackBarModule; }) }, { kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
|
|
366
385
|
}
|
|
@@ -384,4 +403,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
384
403
|
}], banners: [{
|
|
385
404
|
type: Input
|
|
386
405
|
}] } });
|
|
387
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWdubWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvaW5mcmEvYXNzaWdubWVudC9hc3NpZ25tZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9pbmZyYS9hc3NpZ25tZW50L2Fzc2lnbm1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseUNBQXlDO0FBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFVLFVBQVUsRUFBd0IsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBZSxNQUFNLDZCQUE2QixDQUFDO0FBSzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7Ozs7O0FBY3hHLE1BQU0sT0FBTyxtQkFBbUI7SUErQzlCLFlBQ1UsZUFBdUMsRUFDdkMsU0FBaUMsRUFDakMsU0FBK0IsRUFDL0IsTUFBYyxFQUNkLFFBQXFCO1FBSnJCLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQUN2QyxjQUFTLEdBQVQsU0FBUyxDQUF3QjtRQUNqQyxjQUFTLEdBQVQsU0FBUyxDQUFzQjtRQUMvQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQTdDdEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUc1Qix1Q0FBdUM7UUFDdkMsd0JBQW1CLEdBQXdCLEVBQUUsQ0FBQztRQU05QyxvQkFBZSxHQUFHLEtBQUss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RCwwREFBMEQ7SUFDMUQsY0FBYztRQUNaLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTtZQUMvRCxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQXRiVSxtQkFBbUI7bUdBQW5CLG1CQUFtQix1VEN2QmhDLGs3QkE0QkEsNEZEUFksWUFBWSxnTkFBRSxpQkFBaUIsc0VBQW1CLHdCQUF3Qjs7NEZBRXpFLG1CQUFtQjtrQkFQL0IsU0FBUzsrQkFDRSxnQkFBZ0IsY0FHZCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUM7b09BRzdFLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jYXNlLWRlY2xhcmF0aW9ucyAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBOZ1pvbmUsIGZvcndhcmRSZWYsIE9uRGVzdHJveSwgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0U25hY2tCYXJNb2R1bGUsIE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFuZ3VsYXJQQ29ubmVjdERhdGEsIEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2FuZ3VsYXItcGNvbm5lY3QnO1xuaW1wb3J0IHsgRXJyb3JNZXNzYWdlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWVzc2FnZXMvZXJyb3ItbWVzc2FnZXMuc2VydmljZSc7XG5pbXBvcnQgeyBQcm9ncmVzc1NwaW5uZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX21lc3NhZ2VzL3Byb2dyZXNzLXNwaW5uZXIuc2VydmljZSc7XG5pbXBvcnQgeyBSZWZlcmVuY2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9pbmZyYS9yZWZlcmVuY2UvcmVmZXJlbmNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21wb25lbnRNYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2NvbXBvbmVudC1tYXBwZXIvY29tcG9uZW50LW1hcHBlci5jb21wb25lbnQnO1xuXG5pbnRlcmZhY2UgQXNzaWdubWVudFByb3BzIHtcbiAgLy8gSWYgYW55LCBlbnRlciBhZGRpdGlvbmFsIHByb3BzIHRoYXQgb25seSBleGlzdCBvbiB0aGlzIGNvbXBvbmVudFxuICB0ZW1wbGF0ZTogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYXNzaWdubWVudCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hc3NpZ25tZW50LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXNzaWdubWVudC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRTbmFja0Jhck1vZHVsZSwgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBBc3NpZ25tZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuICBASW5wdXQoKSBmb3JtR3JvdXAkOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIGFyQ2hpbGRyZW4kOiBhbnlbXTtcbiAgQElucHV0KCkgaXRlbUtleSQ6IHN0cmluZztcbiAgQElucHV0KCkgaXNDcmVhdGVTdGFnZSQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHVwZGF0ZVRva2VuJDogbnVtYmVyO1xuICBASW5wdXQoKSBpc0luTW9kYWwkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGJhbm5lcnM7XG5cbiAgLy8gRm9yIGludGVyYWN0aW9uIHdpdGggQW5ndWxhclBDb25uZWN0XG4gIGFuZ3VsYXJQQ29ubmVjdERhdGE6IEFuZ3VsYXJQQ29ubmVjdERhdGEgPSB7fTtcbiAgY29uZmlnUHJvcHMkOiBBc3NpZ25tZW50UHJvcHM7XG5cbiAgbmV3UENvbm4kOiBhbnk7XG4gIGNvbnRhaW5lck5hbWUkOiBzdHJpbmc7XG5cbiAgYklzUmVmQ29tcG9uZW50ID0gZmFsc2U7XG4gIGJJbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIHRlbXBsYXRlTmFtZSQ6IHN0cmluZztcblxuICBhck1haW5CdXR0b25zJDogYW55W107XG4gIGFyU2Vjb25kYXJ5QnV0dG9ucyQ6IGFueVtdO1xuXG4gIGFjdGlvbnNBUEk6IGFueTtcblxuICBiSGFzTmF2aWdhdGlvbiQgPSBmYWxzZTtcbiAgYklzVmVydGljYWwkID0gZmFsc2U7XG4gIGFyQ3VycmVudFN0ZXBJbmRpY2llcyQ6IG51bWJlcltdID0gW107XG4gIGFyTmF2aWdhdGlvblN0ZXBzJDogYW55W10gPSBbXTtcblxuICBpbml0OiBib29sZWFuO1xuICBmaW5pc2hBc3NpZ25tZW50OiBhbnk7XG4gIG5hdmlnYXRlVG9TdGVwOiBhbnk7XG4gIHNhdmVBc3NpZ25tZW50OiBhbnk7XG4gIGNhbmNlbEFzc2lnbm1lbnQ6IGFueTtcbiAgY2FuY2VsQ3JlYXRlU3RhZ2VBc3NpZ25tZW50OiBhbnk7XG4gIHNob3dQYWdlOiBhbnk7XG5cbiAgLy8gaXRlbUtleTogc3RyaW5nID0gXCJcIjsgICAvLyBKQSAtIHRoaXMgaXMgd2hhdCBOZWJ1bGEvQ29uc3RlbGxhdGlvbiB1c2VzIHRvIHBhc3MgdG8gZmluaXNoQXNzaWdubWVudCwgbmF2aWdhdGVUb1N0ZXBcblxuICBiUmVJbml0ID0gZmFsc2U7XG4gIGxvY2FsaXplZFZhbDtcbiAgbG9jYWxlQ2F0ZWdvcnkgPSAnQXNzaWdubWVudCc7XG4gIGxvY2FsZVJlZmVyZW5jZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFuZ3VsYXJQQ29ubmVjdDogQW5ndWxhclBDb25uZWN0U2VydmljZSxcbiAgICBwcml2YXRlIHBzU2VydmljZTogUHJvZ3Jlc3NTcGlubmVyU2VydmljZSxcbiAgICBwcml2YXRlIGVyU2VydmljZTogRXJyb3JNZXNzYWdlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0JhclxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gRmlyc3QgdGhpbmcgaW4gaW5pdGlhbGl6YXRpb24gaXMgcmVnaXN0ZXJpbmcgYW5kIHN1YnNjcmliaW5nIHRvIHRoZSBBbmd1bGFyUENvbm5lY3Qgc2VydmljZVxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YSA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnJlZ2lzdGVyQW5kU3Vic2NyaWJlQ29tcG9uZW50KHRoaXMsIHRoaXMub25TdGF0ZUNoYW5nZSk7XG5cbiAgICB0aGlzLmluaXRDb21wb25lbnQoKTtcblxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcblxuICAgIHRoaXMuYkluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB0aGlzLmxvY2FsaXplZFZhbCA9IFBDb3JlLmdldExvY2FsZVV0aWxzKCkuZ2V0TG9jYWxlVmFsdWU7XG4gICAgdGhpcy5sb2NhbGVSZWZlcmVuY2UgPSBgJHt0aGlzLnBDb25uJC5nZXRDYXNlSW5mbygpLmdldENsYXNzTmFtZSgpfSFDQVNFISR7dGhpcy5wQ29ubiQuZ2V0Q2FzZUluZm8oKS5nZXROYW1lKCl9YC50b1VwcGVyQ2FzZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENhbGxiYWNrIHBhc3NlZCB3aGVuIHN1YnNjcmliaW5nIHRvIHN0b3JlIGNoYW5nZVxuICBvblN0YXRlQ2hhbmdlKCkge1xuICAgIHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcbiAgfVxuXG4gIGNoZWNrQW5kVXBkYXRlKCkge1xuICAgIC8vIFNob3VsZCBhbHdheXMgY2hlY2sgdGhlIGJyaWRnZSB0byBzZWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlIGl0c2VsZiAocmUtcmVuZGVyKVxuICAgIGNvbnN0IGJVcGRhdGVTZWxmID0gdGhpcy5hbmd1bGFyUENvbm5lY3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKHRoaXMpO1xuXG4gICAgLy8gT05MWSBjYWxsIHVwZGF0ZVNlbGYgd2hlbiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGVcbiAgICAvLyAgICBBTkQgcmVtb3ZpbmcgdGhlIFwiZ2F0ZVwiIHRoYXQgd2FzIHB1dCB0aGVyZSBzaW5jZSBzaG91bGRDb21wb25lbnRVcGRhdGVcbiAgICAvLyAgICAgIHNob3VsZCBiZSB0aGUgcmVhbCBcImdhdGVcIlxuICAgIGlmIChiVXBkYXRlU2VsZikge1xuICAgICAgbGV0IGxvYWRpbmdJbmZvO1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gbG9hZGluZ0luZm8gPSB0aGlzLnBDb25uJC5nZXRMb2FkaW5nU3RhdHVzKCk7XG4gICAgICAgIGxvYWRpbmdJbmZvID0gdGhpcy5uZXdQQ29ubiQuZ2V0TG9hZGluZ1N0YXR1cygpO1xuXG4gICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGxvYWRpbmdJbmZvKTtcbiAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgIC8qIGVtcHR5ICovXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgaWYgKHRoaXMuYkluaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVDaGFuZ2VzKCkge1xuICAgIHRoaXMuYklzUmVmQ29tcG9uZW50ID0gdGhpcy5jaGVja0lmUmVmQ29tcG9uZW50KHRoaXMucENvbm4kKTtcblxuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAvLyBwQ29ubiQgbWF5IGJlIGEgJ3JlZmVyZW5jZScgY29tcG9uZW50LCBzbyBub3JtYWxpemUgaXRcbiAgICAgIC8vIHRoaXMucENvbm4kID0gUmVmZXJlbmNlQ29tcG9uZW50Lm5vcm1hbGl6ZVBDb25uKHRoaXMucENvbm4kKTtcbiAgICAgIHRoaXMubmV3UENvbm4kID0gUmVmZXJlbmNlQ29tcG9uZW50Lm5vcm1hbGl6ZVBDb25uKHRoaXMucENvbm4kKTtcblxuICAgICAgLy8gIElmICdyZWZlcmVuY2UnIHNvIHdlIG5lZWQgdG8gZ2V0IHRoZSBjaGlsZHJlbiBvZiB0aGUgbm9ybWFsaXplZCBwQ29ublxuICAgICAgaWYgKHRoaXMuYklzUmVmQ29tcG9uZW50KSB7XG4gICAgICAgIC8vIHRoaXMuYXJDaGlsZHJlbiQgPSBSZWZlcmVuY2VDb21wb25lbnQubm9ybWFsaXplUENvbm5BcnJheSh0aGlzLnBDb25uJC5nZXRDaGlsZHJlbigpKTtcbiAgICAgICAgdGhpcy5hckNoaWxkcmVuJCA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubkFycmF5KHRoaXMubmV3UENvbm4kLmdldENoaWxkcmVuKCkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5jcmVhdGVCdXR0b25zKCk7XG4gIH1cblxuICBjaGVja0lmUmVmQ29tcG9uZW50KHRoZVBDb25uOiBhbnkpOiBib29sZWFuIHtcbiAgICBsZXQgYlJldHVybiA9IGZhbHNlO1xuICAgIGlmICh0aGVQQ29ubiAmJiB0aGVQQ29ubi5nZXRDb21wb25lbnROYW1lKCkgPT0gJ3JlZmVyZW5jZScpIHtcbiAgICAgIGJSZXR1cm4gPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBiUmV0dXJuO1xuICB9XG5cbiAgaW5pdENvbXBvbmVudCgpIHtcbiAgICB0aGlzLmJJc1JlZkNvbXBvbmVudCA9IHRoaXMuY2hlY2tJZlJlZkNvbXBvbmVudCh0aGlzLnBDb25uJCk7XG5cbiAgICAvLyBwQ29ubiQgbWF5IGJlIGEgJ3JlZmVyZW5jZScgY29tcG9uZW50LCBzbyBub3JtYWxpemUgaXRcbiAgICAvLyB0aGlzLnBDb25uJCA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubih0aGlzLnBDb25uJCk7XG4gICAgdGhpcy5uZXdQQ29ubiQgPSBSZWZlcmVuY2VDb21wb25lbnQubm9ybWFsaXplUENvbm4odGhpcy5wQ29ubiQpO1xuXG4gICAgLy8gSWYgJ3JlZmVyZW5jZScgc28gd2UgbmVlZCB0byBnZXQgdGhlIGNoaWxkcmVuIG9mIHRoZSBub3JtYWxpemVkIHBDb25uXG4gICAgaWYgKHRoaXMuYklzUmVmQ29tcG9uZW50KSB7XG4gICAgICAvLyB0aGlzLmFyQ2hpbGRyZW4kID0gUmVmZXJlbmNlQ29tcG9uZW50Lm5vcm1hbGl6ZVBDb25uQXJyYXkodGhpcy5wQ29ubiQuZ2V0Q2hpbGRyZW4oKSk7XG4gICAgICB0aGlzLmFyQ2hpbGRyZW4kID0gUmVmZXJlbmNlQ29tcG9uZW50Lm5vcm1hbGl6ZVBDb25uQXJyYXkodGhpcy5uZXdQQ29ubiQuZ2V0Q2hpbGRyZW4oKSk7XG4gICAgfVxuXG4gICAgLy8gcHJldmVudCByZS1pbnRpYWxpemluZyB3aXRoIGZsb3dDb250YWluZXIgdXBkYXRlIHVubGVzcyBhbiBhY3Rpb24gaXMgdGFrZW5cbiAgICB0aGlzLmJSZUluaXQgPSBmYWxzZTtcbiAgICB0aGlzLmJIYXNOYXZpZ2F0aW9uJCA9IGZhbHNlO1xuXG4gICAgLy8gdGhpcy5jb25maWdQcm9wcyQgPSB0aGlzLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSk7XG4gICAgdGhpcy5jb25maWdQcm9wcyQgPSB0aGlzLm5ld1BDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5uZXdQQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSk7XG5cbiAgICB0aGlzLnRlbXBsYXRlTmFtZSQgPSB0aGlzLmNvbmZpZ1Byb3BzJC50ZW1wbGF0ZTtcblxuICAgIC8vIGNyZWF0ZSBwb2ludGVycyB0byBmdW5jdGlvbnNcbiAgICAvKlxuICAgIGxldCBjb250YWluZXJNZ3IgPSB0aGlzLnBDb25uJC5nZXRDb250YWluZXJNYW5hZ2VyKCk7XG4gICAgbGV0IGFjdGlvbnNBUEkgPSB0aGlzLnBDb25uJC5nZXRBY3Rpb25zQXBpKCk7XG4gICAgbGV0IGJhc2VDb250ZXh0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICBsZXQgYWNOYW1lID0gdGhpcy5wQ29ubiQuZ2V0Q29udGFpbmVyTmFtZSgpO1xuICAgICovXG5cbiAgICBjb25zdCBhY3Rpb25zQVBJID0gdGhpcy5uZXdQQ29ubiQuZ2V0QWN0aW9uc0FwaSgpO1xuICAgIGNvbnN0IGJhc2VDb250ZXh0ID0gdGhpcy5uZXdQQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICBjb25zdCBhY05hbWUgPSB0aGlzLm5ld1BDb25uJC5nZXRDb250YWluZXJOYW1lKCk7XG5cbiAgICAvLyBmb3Igbm93LCBpbiBnZW5lcmFsIHRoaXMgc2hvdWxkIGJlIG92ZXJyaWRkZW4gYnkgdXBkYXRlU2VsZigpLCBhbmQgbm90IGJlIGJsYW5rXG4gICAgaWYgKHRoaXMuaXRlbUtleSQgPT09ICcnKSB7XG4gICAgICB0aGlzLml0ZW1LZXkkID0gYmFzZUNvbnRleHQuY29uY2F0KCcvJykuY29uY2F0KGFjTmFtZSk7XG4gICAgfVxuXG4gICAgLy8gdGhpcy5wQ29ubiQuaXNCb3VuZFRvU3RhdGUoKTtcbiAgICB0aGlzLm5ld1BDb25uJC5pc0JvdW5kVG9TdGF0ZSgpO1xuXG4gICAgdGhpcy5pbml0ID0gZmFsc2U7XG5cbiAgICAvLyBzdG9yZSBvZmYgYm91bmQgZnVuY3Rpb25zIHRvIGFib3ZlIHBvaW50ZXJzXG4gICAgdGhpcy5maW5pc2hBc3NpZ25tZW50ID0gYWN0aW9uc0FQSS5maW5pc2hBc3NpZ25tZW50LmJpbmQoYWN0aW9uc0FQSSk7XG4gICAgdGhpcy5uYXZpZ2F0ZVRvU3RlcCA9IGFjdGlvbnNBUEkubmF2aWdhdGVUb1N0ZXAuYmluZChhY3Rpb25zQVBJKTtcbiAgICB0aGlzLnNhdmVBc3NpZ25tZW50ID0gYWN0aW9uc0FQSS5zYXZlQXNzaWdubWVudC5iaW5kKGFjdGlvbnNBUEkpO1xuICAgIHRoaXMuY2FuY2VsQXNzaWdubWVudCA9IGFjdGlvbnNBUEkuY2FuY2VsQXNzaWdubWVudC5iaW5kKGFjdGlvbnNBUEkpO1xuICAgIHRoaXMuc2hvd1BhZ2UgPSBhY3Rpb25zQVBJLnNob3dQYWdlLmJpbmQoYWN0aW9uc0FQSSk7XG5cbiAgICB0aGlzLmNhbmNlbENyZWF0ZVN0YWdlQXNzaWdubWVudCA9IGFjdGlvbnNBUEkuY2FuY2VsQ3JlYXRlU3RhZ2VBc3NpZ25tZW50LmJpbmQoYWN0aW9uc0FQSSk7XG5cbiAgICB0aGlzLmNyZWF0ZUJ1dHRvbnMoKTtcbiAgfVxuXG4gIGNyZWF0ZUJ1dHRvbnMoKSB7XG4gICAgLy8gbGV0IG9EYXRhID0gdGhpcy5wQ29ubiQuZ2V0RGF0YU9iamVjdCgpO1xuICAgIGNvbnN0IG9EYXRhID0gdGhpcy5uZXdQQ29ubiQuZ2V0RGF0YU9iamVjdCgpO1xuXG4gICAgLy8gaW5zaWRlXG4gICAgLy8gZ2V0IGZpc3Qga2lkLCBnZXQgdGhlIG5hbWUgYW5kIGRpc3BsYVxuICAgIC8vIHBhc3MgZmlyc3Qga2lkIHRvIGEgdmlldyBjb250YWluZXIsIHdoaWNoIHdpbGwgZGlzcGVyc2UgaXQgdG8gYSB2aWV3IHdoaWNoIHdpbGwgdXNlIG9uZSBjb2x1bW4sIHR3byBjb2x1bW4sIGV0Yy5cbiAgICBjb25zdCBvV29ya0l0ZW0gPSB0aGlzLmFyQ2hpbGRyZW4kWzBdLmdldFBDb25uZWN0KCk7XG4gICAgY29uc3Qgb1dvcmtEYXRhID0gb1dvcmtJdGVtLmdldERhdGFPYmplY3QoKTtcblxuICAgIGlmIChvV29ya0RhdGEpIHtcbiAgICAgIHRoaXMuYWN0aW9uc0FQSSA9IG9Xb3JrSXRlbS5nZXRBY3Rpb25zQXBpKCk7XG5cbiAgICAgIC8vIHRoaXMuY29udGFpbmVyTmFtZSQgPSBvV29ya01ldGFbXCJuYW1lXCJdO1xuXG4gICAgICBpZiAob1dvcmtEYXRhLmNhc2VJbmZvICYmIG9Xb3JrRGF0YS5jYXNlSW5mby5hc3NpZ25tZW50cyAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLmNvbnRhaW5lck5hbWUkID0gb1dvcmtEYXRhLmNhc2VJbmZvLmFzc2lnbm1lbnRzPy5bMF0ubmFtZTtcblxuICAgICAgICAvLyBnZXQgY2FzZUluZm9cbiAgICAgICAgY29uc3Qgb0Nhc2VJbmZvID0gb0RhdGEuY2FzZUluZm87XG5cbiAgICAgICAgaWYgKG9DYXNlSW5mbyAmJiBvQ2FzZUluZm8uYWN0aW9uQnV0dG9ucykge1xuICAgICAgICAgIHRoaXMuYXJNYWluQnV0dG9ucyQgPSBvQ2FzZUluZm8uYWN0aW9uQnV0dG9ucy5tYWluO1xuICAgICAgICAgIHRoaXMuYXJTZWNvbmRhcnlCdXR0b25zJCA9IG9DYXNlSW5mby5hY3Rpb25CdXR0b25zLnNlY29uZGFyeTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvQ2FzZUluZm8ubmF2aWdhdGlvbiAhPSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5jcmVhdGVCdXR0b25zRm9yTXVsdGlTdGVwRm9ybShvQ2FzZUluZm8pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuYkhhc05hdmlnYXRpb24kID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjcmVhdGVCdXR0b25zRm9yTXVsdGlTdGVwRm9ybShvQ2FzZUluZm8pIHtcbiAgICB0aGlzLmJIYXNOYXZpZ2F0aW9uJCA9IHRydWU7XG5cbiAgICBpZiAoKG9DYXNlSW5mby5uYXZpZ2F0aW9uLnRlbXBsYXRlICYmIG9DYXNlSW5mby5uYXZpZ2F0aW9uLnRlbXBsYXRlLnRvTG93ZXJDYXNlKCkgPT09ICdzdGFuZGFyZCcpIHx8IG9DYXNlSW5mbz8ubmF2aWdhdGlvbj8uc3RlcHM/Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5iSGFzTmF2aWdhdGlvbiQgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKG9DYXNlSW5mby5uYXZpZ2F0aW9uLnRlbXBsYXRlICYmIG9DYXNlSW5mby5uYXZpZ2F0aW9uLnRlbXBsYXRlLnRvTG93ZXJDYXNlKCkgPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgIHRoaXMuYklzVmVydGljYWwkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5iSXNWZXJ0aWNhbCQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBpdGVyYXRlIHRocm91Z2ggc3RlcHMgdG8gZmluZCBjdXJyZW50IG9uZShzKVxuICAgIC8vIGltbXV0YWJsZSwgc28gd2Ugd2FudCB0byBjaGFuZ2UgdGhlIGxvY2FsIGNvcHksIHNvIG5lZWQgdG8gbWFrZSBhIGNvcHlcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgLy8gd2hhdCBjb21lcyBiYWNrIG5vdyBpbiBjb25maWdPYmplY3QgaXMgdGhlIGNoaWxkcmVuIG9mIHRoZSBmbG93Q29udGFpbmVyXG4gICAgICB0aGlzLmFyTmF2aWdhdGlvblN0ZXBzJCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob0Nhc2VJbmZvLm5hdmlnYXRpb24uc3RlcHMpKTtcbiAgICAgIHRoaXMuYXJOYXZpZ2F0aW9uU3RlcHMkLmZvckVhY2goc3RlcCA9PiB7XG4gICAgICAgIGlmIChzdGVwLm5hbWUpIHtcbiAgICAgICAgICBzdGVwLm5hbWUgPSBQQ29yZS5nZXRMb2NhbGVVdGlscygpLmdldExvY2FsZVZhbHVlKHN0ZXAubmFtZSwgdW5kZWZpbmVkLCB0aGlzLmxvY2FsZVJlZmVyZW5jZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5hckN1cnJlbnRTdGVwSW5kaWNpZXMkID0gW107XG4gICAgICB0aGlzLmFyQ3VycmVudFN0ZXBJbmRpY2llcyQgPSB0aGlzLmZpbmRDdXJyZW50SW5kaWNpZXModGhpcy5hck5hdmlnYXRpb25TdGVwcyQsIHRoaXMuYXJDdXJyZW50U3RlcEluZGljaWVzJCwgMCk7XG4gICAgfSk7XG4gIH1cblxuICBmaW5kQ3VycmVudEluZGljaWVzKGFyU3RlcHBlclN0ZXBzOiBhbnlbXSwgYXJJbmRpY2llczogbnVtYmVyW10sIGRlcHRoOiBudW1iZXIpOiBudW1iZXJbXSB7XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICBhclN0ZXBwZXJTdGVwcy5mb3JFYWNoKHN0ZXAgPT4ge1xuICAgICAgaWYgKHN0ZXAudmlzaXRlZF9zdGF0dXMgPT0gJ2N1cnJlbnQnKSB7XG4gICAgICAgIGFySW5kaWNpZXNbZGVwdGhdID0gY291bnQ7XG5cbiAgICAgICAgLy8gYWRkIGluXG4gICAgICAgIHN0ZXAuc3RlcF9zdGF0dXMgPSAnJztcbiAgICAgIH0gZWxzZSBpZiAoc3RlcC52aXNpdGVkX3N0YXR1cyA9PSAnc3VjY2VzcycpIHtcbiAgICAgICAgY291bnQrKztcbiAgICAgICAgc3RlcC5zdGVwX3N0YXR1cyA9ICdjb21wbGV0ZWQnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY291bnQrKztcbiAgICAgICAgc3RlcC5zdGVwX3N0YXR1cyA9ICcnO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RlcC5zdGVwcykge1xuICAgICAgICBhckluZGljaWVzID0gdGhpcy5maW5kQ3VycmVudEluZGljaWVzKHN0ZXAuc3RlcHMsIGFySW5kaWNpZXMsIGRlcHRoICsgMSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXJJbmRpY2llcztcbiAgfVxuXG4gIG9uU2F2ZUFjdGlvblN1Y2Nlc3MoZGF0YSkge1xuICAgIHRoaXMuYWN0aW9uc0FQSS5jYW5jZWxBc3NpZ25tZW50KHRoaXMuaXRlbUtleSQpLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5wdWJsaXNoKFBDb3JlLmdldENvbnN0YW50cygpLlBVQl9TVUJfRVZFTlRTLkNBU0VfRVZFTlRTLkNSRUFURV9TVEFHRV9TQVZFRCwgZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICBvbkFjdGlvbkJ1dHRvbkNsaWNrKG9EYXRhOiBhbnkpIHtcbiAgICB0aGlzLmJ1dHRvbkNsaWNrKG9EYXRhLmFjdGlvbiwgb0RhdGEuYnV0dG9uVHlwZSk7XG4gIH1cblxuICBidXR0b25DbGljayhzQWN0aW9uLCBzQnV0dG9uVHlwZSkge1xuICAgIC8vIHJpZ2h0IG5vdywgZG9uZSBvbiBhbiBpbmRpdmlkdWFsIGJhc2lzLCBzZXR0aW5nIGJSZUluaXQgdG8gdHJ1ZVxuICAgIC8vIHVwb24gdGhlIG5leHQgZmxvdyBjb250YWluZXIgc3RhdGUgY2hhbmdlLCB3aWxsIGNhdXNlIHRoZSBmbG93IGNvbnRhaW5lclxuICAgIC8vIHRvIHJlLWluaXRpYWxpemVcbiAgICAvLyB0aGlzLmJSZUluaXQgPXRydWU7XG5cbiAgICAvKlxuICAgIGxldCBiYXNlQ29udGV4dCA9IHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCk7XG4gICAgbGV0IGFjTmFtZSA9IHRoaXMucENvbm4kLmdldENvbnRhaW5lck5hbWUoKTtcbiAgICBsZXQgaXRlbUlEID0gYmFzZUNvbnRleHQuY29uY2F0KFwiL1wiKS5jb25jYXQoYWNOYW1lKTtcbiAgICAqL1xuXG4gICAgLy8gY29uc3QgYmFzZUNvbnRleHQgPSB0aGlzLm5ld1BDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuICAgIC8vIGNvbnN0IGFjTmFtZSA9IHRoaXMubmV3UENvbm4kLmdldENvbnRhaW5lck5hbWUoKTtcbiAgICAvLyBjb25zdCBpdGVtSUQgPSBiYXNlQ29udGV4dC5jb25jYXQoJy8nKS5jb25jYXQoYWNOYW1lKTtcblxuICAgIGlmIChzQnV0dG9uVHlwZSA9PSAnc2Vjb25kYXJ5Jykge1xuICAgICAgLy8gY29uc3Qgc3RlcElEID0gJyc7IC8vID8/P1xuXG4gICAgICAvLyBuZWVkIHRvIGhhbmRsZSBjYW5jZWwgYXMgdGhpcy5jYW5jZWwoZGlzcGF0Y2hJbmZvKVxuICAgICAgLy8gdGhpcy5hY3Rpb25zQVBJW3NBY3Rpb25dKGRpc3BhdGNoSW5mbyk7XG4gICAgICBzd2l0Y2ggKHNBY3Rpb24pIHtcbiAgICAgICAgY2FzZSAnbmF2aWdhdGVUb1N0ZXAnOlxuICAgICAgICAgIHRoaXMuZXJTZXJ2aWNlLnNlbmRNZXNzYWdlKCdwdWJsaXNoJywgJycpO1xuICAgICAgICAgIGlmICh0aGlzLmZvcm1WYWxpZCgpKSB7XG4gICAgICAgICAgICB0aGlzLmJSZUluaXQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UodHJ1ZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IG5hdmlnYXRlUHJvbWlzZSA9IHRoaXMubmF2aWdhdGVUb1N0ZXAoJ3ByZXZpb3VzJywgdGhpcy5pdGVtS2V5JCk7XG4gICAgICAgICAgICBuYXZpZ2F0ZVByb21pc2VcbiAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKGAke3RoaXMubG9jYWxpemVkVmFsKCdOYXZpZ2F0aW9uIGZhaWxlZCEnLCB0aGlzLmxvY2FsZUNhdGVnb3J5KX1gLCAnT2snKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3NhdmVBc3NpZ25tZW50Jzoge1xuICAgICAgICAgIGNvbnN0IGNhc2VJRCA9IHRoaXMucENvbm4kLmdldENhc2VJbmZvKCkuZ2V0S2V5KCk7XG4gICAgICAgICAgY29uc3QgYXNzaWdubWVudElEID0gdGhpcy5wQ29ubiQuZ2V0Q2FzZUluZm8oKS5nZXRBc3NpZ25tZW50SUQoKTtcbiAgICAgICAgICBjb25zdCBzYXZlUHJvbWlzZSA9IHRoaXMuc2F2ZUFzc2lnbm1lbnQodGhpcy5pdGVtS2V5JCk7XG5cbiAgICAgICAgICBzYXZlUHJvbWlzZVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBjYXNlVHlwZSA9IHRoaXMucENvbm4kLmdldENhc2VJbmZvKCkuYzExbkVudi5nZXRWYWx1ZShQQ29yZS5nZXRDb25zdGFudHMoKS5DQVNFX0lORk8uQ0FTRV9UWVBFX0lEKTtcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSAtIHNlY29uZCBwYXJhbWV0ZXIg4oCccGF5bG9hZOKAnSBmb3IgcHVibGlzaCBtZXRob2Qgc2hvdWxkIGJlIG9wdGlvbmFsXG4gICAgICAgICAgICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkucHVibGlzaCgnY2FuY2VsUHJlc3NlZCcpO1xuICAgICAgICAgICAgICB0aGlzLm9uU2F2ZUFjdGlvblN1Y2Nlc3MoeyBjYXNlVHlwZSwgY2FzZUlELCBhc3NpZ25tZW50SUQgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oYCR7dGhpcy5sb2NhbGl6ZWRWYWwoJ1NhdmUgZmFpbGVkJywgdGhpcy5sb2NhbGVDYXRlZ29yeSl9YCwgJ09rJyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSAnY2FuY2VsQXNzaWdubWVudCc6XG4gICAgICAgICAgdGhpcy5iUmVJbml0ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmVyU2VydmljZS5zZW5kTWVzc2FnZSgnZGlzbWlzcycsICcnKTtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlIC0gUHJvcGVydHkgJ2lzQXNzaWdubWVudEluQ3JlYXRlU3RhZ2UnIGlzIHByaXZhdGUgYW5kIG9ubHkgYWNjZXNzaWJsZSB3aXRoaW4gY2xhc3MgJ0Nhc2VJbmZvJ1xuICAgICAgICAgIGNvbnN0IGlzQXNzaWdubWVudEluQ3JlYXRlU3RhZ2UgPSB0aGlzLnBDb25uJC5nZXRDYXNlSW5mbygpLmlzQXNzaWdubWVudEluQ3JlYXRlU3RhZ2UoKTtcbiAgICAgICAgICBjb25zdCBpc0xvY2FsQWN0aW9uID1cbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgLSBQcm9wZXJ0eSAnaXNMb2NhbEFjdGlvbicgaXMgcHJpdmF0ZSBhbmQgb25seSBhY2Nlc3NpYmxlIHdpdGhpbiBjbGFzcyAnQ2FzZUluZm8nLlxuICAgICAgICAgICAgdGhpcy5wQ29ubiQuZ2V0Q2FzZUluZm8oKS5pc0xvY2FsQWN0aW9uKCkgfHxcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgLSBzZWNvbmQgcGFyYW1ldGVyIHBhZ2VSZWZlcmVuY2UgZm9yIGdldFZhbHVlIG1ldGhvZCBzaG91bGQgYmUgb3B0aW9uYWxcbiAgICAgICAgICAgIChQQ29yZS5nZXRDb25zdGFudHMoKS5DQVNFX0lORk8uSVNfTE9DQUxfQUNUSU9OICYmIHRoaXMucENvbm4kLmdldFZhbHVlKFBDb3JlLmdldENvbnN0YW50cygpLkNBU0VfSU5GTy5JU19MT0NBTF9BQ1RJT04pKTtcbiAgICAgICAgICAvLyBjaGVjayBpZiBjcmVhdGUgc3RhZ2UgKG1vZGFsKVxuICAgICAgICAgIGlmIChpc0Fzc2lnbm1lbnRJbkNyZWF0ZVN0YWdlICYmIHRoaXMuaXNJbk1vZGFsJCAmJiAhaXNMb2NhbEFjdGlvbikge1xuICAgICAgICAgICAgY29uc3QgY2FuY2VsUHJvbWlzZSA9IHRoaXMuY2FuY2VsQ3JlYXRlU3RhZ2VBc3NpZ25tZW50KHRoaXMuaXRlbUtleSQpO1xuICAgICAgICAgICAgY2FuY2VsUHJvbWlzZVxuICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIC8vIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkucHVibGlzaChcbiAgICAgICAgICAgICAgICAvLyAgIFBDb3JlLmdldENvbnN0YW50cygpLlBVQl9TVUJfRVZFTlRTLkVWRU5UX0NBTkNFTCk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihgJHt0aGlzLmxvY2FsaXplZFZhbCgnQ2FuY2VsIGZhaWxlZCEnLCB0aGlzLmxvY2FsZUNhdGVnb3J5KX1gLCAnT2snKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKHRydWUpO1xuXG4gICAgICAgICAgICAvLyBwdWJsaXNoIGJlZm9yZSBjYW5jZWwgcHJlc3NlZCwgYmVjYXVzZVxuICAgICAgICAgICAgLy8gY2FuY2VsIGFzc2lnbm1lbnQgaGFwcGVucyBcImFmdGVyXCIgY2FuY2VsIGFzc2lnbm1lbnQgaGFwcGVuc1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSAtIHNlY29uZCBwYXJhbWV0ZXIg4oCccGF5bG9hZOKAnSBmb3IgcHVibGlzaCBtZXRob2Qgc2hvdWxkIGJlIG9wdGlvbmFsXG4gICAgICAgICAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnB1Ymxpc2goJ2NhbmNlbFByZXNzZWQnKTtcblxuICAgICAgICAgICAgY29uc3QgY2FuY2VsUHJvbWlzZSA9IHRoaXMuY2FuY2VsQXNzaWdubWVudCh0aGlzLml0ZW1LZXkkKTtcbiAgICAgICAgICAgIGNhbmNlbFByb21pc2VcbiAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIC0gc2Vjb25kIHBhcmFtZXRlciDigJxwYXlsb2Fk4oCdIGZvciBwdWJsaXNoIG1ldGhvZCBzaG91bGQgYmUgb3B0aW9uYWxcbiAgICAgICAgICAgICAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnB1Ymxpc2goUENvcmUuZ2V0Q29uc3RhbnRzKCkuUFVCX1NVQl9FVkVOVFMuRVZFTlRfQ0FOQ0VMKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKGAke3RoaXMubG9jYWxpemVkVmFsKCdDYW5jZWwgZmFpbGVkIScsIHRoaXMubG9jYWxlQ2F0ZWdvcnkpfWAsICdPaycpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHNCdXR0b25UeXBlID09ICdwcmltYXJ5Jykge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNvbmFyanMvbm8tc21hbGwtc3dpdGNoXG4gICAgICBzd2l0Y2ggKHNBY3Rpb24pIHtcbiAgICAgICAgY2FzZSAnZmluaXNoQXNzaWdubWVudCc6XG4gICAgICAgICAgdGhpcy5lclNlcnZpY2Uuc2VuZE1lc3NhZ2UoJ3B1Ymxpc2gnLCAnJyk7XG4gICAgICAgICAgaWYgKHRoaXMuZm9ybVZhbGlkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuYlJlSW5pdCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZSh0cnVlKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbmlzaFByb21pc2UgPSB0aGlzLmZpbmlzaEFzc2lnbm1lbnQodGhpcy5pdGVtS2V5JCk7IC8vIEpBIC0gd2FzIGl0ZW1JRCBidXQgTmVidWxhL0NvbnN0ZWxsYXRpb24gdXNlcyBpdGVtS2V5XG4gICAgICAgICAgICBmaW5pc2hQcm9taXNlXG4gICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihgJHt0aGlzLmxvY2FsaXplZFZhbCgnU3VibWl0IGZhaWxlZCEnLCB0aGlzLmxvY2FsZUNhdGVnb3J5KX1gLCAnT2snKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGxldCBzbmFja0JhclJlZiA9IHRoaXMuc25hY2tCYXIub3BlbihcIlBsZWFzZSBmaXggZXJyb3JzIG9uIGZvcm0uXCIsICBcIk9rXCIpO1xuICAgICAgICAgICAgdGhpcy5lclNlcnZpY2Uuc2VuZE1lc3NhZ2UoJ3Nob3cnLCB0aGlzLmxvY2FsaXplZFZhbCgnUGxlYXNlIGZpeCBlcnJvcnMgb24gZm9ybS4nLCB0aGlzLmxvY2FsZUNhdGVnb3J5KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZvcm1WYWxpZCgpOiBib29sZWFuIHtcbiAgICB0aGlzLnRvdWNoQWxsKCk7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwJC52YWxpZDtcbiAgfVxuXG4gIHRvdWNoQWxsKCk6IHZvaWQge1xuICAgIE9iamVjdC52YWx1ZXModGhpcy5mb3JtR3JvdXAkLmNvbnRyb2xzKS5mb3JFYWNoKChjb250cm9sOiBhbnkpID0+IHtcbiAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNvbmFyanMvbm8taWRlbnRpY2FsLWZ1bmN0aW9uc1xuICB0b3BWaWV3UmVmcmVzaCgpOiB2b2lkIHtcbiAgICBPYmplY3QudmFsdWVzKHRoaXMuZm9ybUdyb3VwJC5jb250cm9scykuZm9yRWFjaCgoY29udHJvbDogYW55KSA9PiB7XG4gICAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdj5cbiAgPGRpdj48Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiQWxlcnRCYW5uZXJcIiBbcHJvcHNdPVwieyBiYW5uZXJzIH1cIiBbcGFyZW50XT1cInRoaXNcIj48L2NvbXBvbmVudC1tYXBwZXI+PC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJiSGFzTmF2aWdhdGlvbiRcIiBjbGFzcz1cInBzZGstc3RlcHBlclwiPlxuICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICBuYW1lPVwiTXVsdGlTdGVwXCJcbiAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgIHBDb25uJDogbmV3UENvbm4kLFxuICAgICAgICBmb3JtR3JvdXAkLFxuICAgICAgICBhckNoaWxkcmVuJCxcbiAgICAgICAgYXJNYWluQnV0dG9ucyQsXG4gICAgICAgIGFyU2Vjb25kYXJ5QnV0dG9ucyQsXG4gICAgICAgIGJJc1ZlcnRpY2FsJCxcbiAgICAgICAgYXJDdXJyZW50U3RlcEluZGljaWVzJCxcbiAgICAgICAgYXJOYXZpZ2F0aW9uU3RlcHMkXG4gICAgICB9XCJcbiAgICAgIFtwYXJlbnRdPVwidGhpc1wiXG4gICAgICBbb3V0cHV0RXZlbnRzXT1cInsgYWN0aW9uQnV0dG9uQ2xpY2s6IG9uQWN0aW9uQnV0dG9uQ2xpY2sgfVwiXG4gICAgPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCIhYkhhc05hdmlnYXRpb24kXCI+XG4gICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgIG5hbWU9XCJBc3NpZ25tZW50Q2FyZFwiXG4gICAgICBbcHJvcHNdPVwieyBwQ29ubiQ6IG5ld1BDb25uJCwgZm9ybUdyb3VwJCwgYXJDaGlsZHJlbiQsIGFyTWFpbkJ1dHRvbnMkLCBhclNlY29uZGFyeUJ1dHRvbnMkLCB1cGRhdGVUb2tlbiQgfVwiXG4gICAgICBbcGFyZW50XT1cInRoaXNcIlxuICAgICAgW291dHB1dEV2ZW50c109XCJ7IGFjdGlvbkJ1dHRvbkNsaWNrOiBvbkFjdGlvbkJ1dHRvbkNsaWNrIH1cIlxuICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
406
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWdubWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvaW5mcmEvYXNzaWdubWVudC9hc3NpZ25tZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9pbmZyYS9hc3NpZ25tZW50L2Fzc2lnbm1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseUNBQXlDO0FBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFVLFVBQVUsRUFBd0IsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBZSxNQUFNLDZCQUE2QixDQUFDO0FBSzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7Ozs7O0FBRXhHLFNBQVMsZUFBZSxDQUFDLGlCQUFpQjtJQUN4Qyw0REFBNEQ7SUFDNUQsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1FBQ3RCLE9BQU8sRUFBRSxDQUFDO0tBQ1g7SUFDRCxPQUFPLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUM1SSxDQUFDO0FBY0QsTUFBTSxPQUFPLG1CQUFtQjtJQThDOUIsWUFDVSxlQUF1QyxFQUN2QyxTQUFpQyxFQUNqQyxTQUErQixFQUMvQixNQUFjLEVBQ2QsUUFBcUI7UUFKckIsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZDLGNBQVMsR0FBVCxTQUFTLENBQXdCO1FBQ2pDLGNBQVMsR0FBVCxTQUFTLENBQXNCO1FBQy9CLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBNUN0QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRzVCLHVDQUF1QztRQUN2Qyx3QkFBbUIsR0FBd0IsRUFBRSxDQUFDO1FBTTlDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBU3JCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLDJCQUFzQixHQUFhLEVBQUUsQ0FBQztRQUN0Qyx1QkFBa0IsR0FBVSxFQUFFLENBQUM7UUFVL0IscUhBQXFIO1FBRXJILFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFaEIsbUJBQWMsR0FBRyxZQUFZLENBQUM7SUFTM0IsQ0FBQztJQUVKLFFBQVE7UUFDTiw4RkFBOEY7UUFDOUYsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsNkJBQTZCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV4RyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFckIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVqRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQyxjQUFjLENBQUM7UUFDMUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsWUFBWSxFQUFFLFNBQVMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2pJLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxFQUFFO1lBQzFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUMxQztJQUNILENBQUM7SUFFRCxtREFBbUQ7SUFDbkQsYUFBYTtRQUNYLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsY0FBYztRQUNaLDBGQUEwRjtRQUMxRixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJFLHdEQUF3RDtRQUN4RCw0RUFBNEU7UUFDNUUsaUNBQWlDO1FBQ2pDLElBQUksV0FBVyxFQUFFO1lBQ2YsSUFBSSxXQUFXLENBQUM7WUFDaEIsSUFBSTtnQkFDRixnREFBZ0Q7Z0JBQ2hELFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBRWhELElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ3pDO1lBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsV0FBVzthQUNaO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDdEI7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRTFCLHlEQUF5RDtRQUN6RCxJQUFJLENBQUMsU0FBUyxHQUFHLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFaEUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN0QjtJQUNILENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxRQUFhO1FBQy9CLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxXQUFXLEVBQUU7WUFDMUQsT0FBTyxHQUFHLElBQUksQ0FBQztTQUNoQjtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxhQUFhO1FBQ1gseURBQXlEO1FBQ3pELGdFQUFnRTtRQUNoRSxJQUFJLENBQUMsU0FBUyxHQUFHLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFaEUsNkVBQTZFO1FBQzdFLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBRTdCLG9GQUFvRjtRQUNwRixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBRXZGLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFFaEQsK0JBQStCO1FBQy9COzs7OztVQUtFO1FBRUYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNsRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUVqRCxrRkFBa0Y7UUFDbEYsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEVBQUUsRUFBRTtZQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3hEO1FBRUQsZ0NBQWdDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFaEMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFFbEIsOENBQThDO1FBQzlDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXJELElBQUksQ0FBQywyQkFBMkIsR0FBRyxVQUFVLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTNGLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDdEI7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLDJDQUEyQztRQUMzQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRTdDLFNBQVM7UUFDVCx3Q0FBd0M7UUFDeEMsbUhBQW1IO1FBQ25ILE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEQsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRTVDLElBQUksU0FBUyxFQUFFO1lBQ2IsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsYUFBYSxFQUFFLENBQUM7WUFFNUMsMkNBQTJDO1lBRTNDLElBQUksU0FBUyxDQUFDLFFBQVEsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsS0FBSyxJQUFJLEVBQUU7Z0JBQ2pFLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBRS9ELGVBQWU7Z0JBQ2YsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztnQkFFakMsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLGFBQWEsRUFBRTtvQkFDeEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztvQkFDbkQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO2lCQUM5RDtnQkFFRCxJQUFJLFNBQVMsQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFO29CQUNoQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQy9DO3FCQUFNO29CQUNMLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO2lCQUM5QjthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsNkJBQTZCLENBQUMsU0FBUztRQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUU1QixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxRQUFRLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEtBQUssVUFBVSxDQUFDLElBQUksU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUMvSSxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztTQUM5QjthQUFNLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxRQUFRLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEtBQUssVUFBVSxFQUFFO1lBQ3RHLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1NBQzFCO2FBQU07WUFDTCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztTQUMzQjtRQUVELCtDQUErQztRQUMvQyx5RUFBeUU7UUFDekUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ25CLDJFQUEyRTtZQUMzRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNqRixJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNyQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7b0JBQ2IsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztpQkFDL0Y7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxzQkFBc0IsR0FBRyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG1CQUFtQixDQUFDLGNBQXFCLEVBQUUsVUFBb0IsRUFBRSxLQUFhO1FBQzVFLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDNUIsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLFNBQVMsRUFBRTtnQkFDcEMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFFMUIsU0FBUztnQkFDVCxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQzthQUN2QjtpQkFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksU0FBUyxFQUFFO2dCQUMzQyxLQUFLLEVBQUUsQ0FBQztnQkFDUixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQzthQUNoQztpQkFBTTtnQkFDTCxLQUFLLEVBQUUsQ0FBQztnQkFDUixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQzthQUN2QjtZQUVELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDZCxVQUFVLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQzthQUMxRTtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQUk7UUFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUN4RCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNHLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQVU7UUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQU8sRUFBRSxXQUFXO1FBQzlCLGtFQUFrRTtRQUNsRSwyRUFBMkU7UUFDM0UsbUJBQW1CO1FBQ25CLHNCQUFzQjtRQUV0Qjs7OztVQUlFO1FBRUYsdURBQXVEO1FBQ3ZELG9EQUFvRDtRQUNwRCx5REFBeUQ7UUFFekQsSUFBSSxXQUFXLElBQUksV0FBVyxFQUFFO1lBQzlCLDRCQUE0QjtZQUU1QixxREFBcUQ7WUFDckQsMENBQTBDO1lBQzFDLFFBQVEsT0FBTyxFQUFFO2dCQUNmLEtBQUssZ0JBQWdCO29CQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQzFDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFO3dCQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQzt3QkFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBRWpDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFDdkUsZUFBZTs2QkFDWixJQUFJLENBQUMsR0FBRyxFQUFFOzRCQUNULElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzs0QkFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ3BDLENBQUMsQ0FBQzs2QkFDRCxLQUFLLENBQUMsR0FBRyxFQUFFOzRCQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7d0JBQzlGLENBQUMsQ0FBQyxDQUFDO3FCQUNOO29CQUNELE1BQU07Z0JBRVIsS0FBSyxnQkFBZ0IsQ0FBQyxDQUFDO29CQUNyQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNsRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUNqRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFFdkQsV0FBVzt5QkFDUixJQUFJLENBQUMsR0FBRyxFQUFFO3dCQUNULE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO3dCQUN6RyxnRkFBZ0Y7d0JBQ2hGLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7d0JBQ2hELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztvQkFDL0QsQ0FBQyxDQUFDO3lCQUNELEtBQUssQ0FBQyxHQUFHLEVBQUU7d0JBQ1YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ3ZGLENBQUMsQ0FBQyxDQUFDO29CQUVMLE1BQU07aUJBQ1A7Z0JBRUQsS0FBSyxrQkFBa0I7b0JBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO29CQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQzFDLDJHQUEyRztvQkFDM0csTUFBTSx5QkFBeUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLHlCQUF5QixFQUFFLENBQUM7b0JBQ3hGLE1BQU0sYUFBYTtvQkFDakIsZ0dBQWdHO29CQUNoRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLGFBQWEsRUFBRTt3QkFDekMscUZBQXFGO3dCQUNyRixDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztvQkFDM0gsZ0NBQWdDO29CQUNoQyxJQUFJLHlCQUF5QixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxhQUFhLEVBQUU7d0JBQ2xFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQ3RFLGFBQWE7NkJBQ1YsSUFBSSxDQUFDLEdBQUcsRUFBRTs0QkFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQzs0QkFDbEMsa0NBQWtDOzRCQUNsQyx1REFBdUQ7d0JBQ3pELENBQUMsQ0FBQzs2QkFDRCxLQUFLLENBQUMsR0FBRyxFQUFFOzRCQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7d0JBQzFGLENBQUMsQ0FBQyxDQUFDO3FCQUNOO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUVqQyx5Q0FBeUM7d0JBQ3pDLDhEQUE4RDt3QkFDOUQsZ0ZBQWdGO3dCQUNoRixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO3dCQUVoRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3dCQUMzRCxhQUFhOzZCQUNWLElBQUksQ0FBQyxHQUFHLEVBQUU7NEJBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ2xDLGdGQUFnRjs0QkFDaEYsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO3dCQUNuRixDQUFDLENBQUM7NkJBQ0QsS0FBSyxDQUFDLEdBQUcsRUFBRTs0QkFDVixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQzs0QkFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO3dCQUMxRixDQUFDLENBQUMsQ0FBQztxQkFDTjtvQkFDRCxNQUFNO2dCQUVSO29CQUNFLE1BQU07YUFDVDtTQUNGO2FBQU0sSUFBSSxXQUFXLElBQUksU0FBUyxFQUFFO1lBQ25DLG1EQUFtRDtZQUNuRCxRQUFRLE9BQU8sRUFBRTtnQkFDZixLQUFLLGtCQUFrQjtvQkFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUMxQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRTt3QkFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7d0JBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNqQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsd0RBQXdEO3dCQUNwSCxhQUFhOzZCQUNWLElBQUksQ0FBQyxHQUFHLEVBQUU7NEJBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ2xDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzt3QkFDdkIsQ0FBQyxDQUFDOzZCQUNELEtBQUssQ0FBQyxHQUFHLEVBQUU7NEJBQ1YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQzt3QkFDMUYsQ0FBQyxDQUFDLENBQUM7cUJBQ047eUJBQU07d0JBQ0wsNkVBQTZFO3dCQUM3RSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyw0QkFBNEIsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztxQkFDMUc7b0JBQ0QsTUFBTTtnQkFDUjtvQkFDRSxNQUFNO2FBQ1Q7U0FDRjtJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVELFFBQVE7UUFDTixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7WUFDL0QsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDBEQUEwRDtJQUMxRCxjQUFjO1FBQ1osTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO1lBQy9ELE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsNEdBQTRHO1FBQzVHLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsRUFBRSwwQkFBMEIsRUFBRSxDQUFDO1FBQ2xGLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNyRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRTdDLDhCQUE4QjtRQUM5QixLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4RCwyQkFBMkI7UUFDM0IsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDeEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNuRCxNQUFNLGNBQWMsR0FBRztZQUNyQixpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLHFCQUFxQixFQUFFLEtBQUs7U0FDN0IsQ0FBQztRQUNGLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDM0IsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDMUIsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUMsa0JBQWtCLENBQzFDLGFBQWEsRUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRTtvQkFDMUcsR0FBRyxjQUFjO29CQUNqQixVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFDcEIsQ0FBQyxFQUNGLEdBQUcsYUFBYSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUM3QixHQUFHLE9BQU8sSUFBSSxhQUFhLEVBQUUsRUFDN0IsT0FBTyxDQUNSLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzsrR0F4Y1UsbUJBQW1CO21HQUFuQixtQkFBbUIsdVRDL0JoQyxrN0JBNEJBLDRGRENZLFlBQVksZ05BQUUsaUJBQWlCLHNFQUFtQix3QkFBd0I7OzRGQUV6RSxtQkFBbUI7a0JBUC9CLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBR2QsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO29PQUc3RSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY2FzZS1kZWNsYXJhdGlvbnMgKi9cbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgTmdab25lLCBmb3J3YXJkUmVmLCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyTW9kdWxlLCBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IEVycm9yTWVzc2FnZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX21lc3NhZ2VzL2Vycm9yLW1lc3NhZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NTcGlubmVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXNzYWdlcy9wcm9ncmVzcy1zcGlubmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVmZXJlbmNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaW5mcmEvcmVmZXJlbmNlL3JlZmVyZW5jZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcblxuZnVuY3Rpb24gZ2V0UmVmcmVzaFByb3BzKHJlZnJlc2hDb25kaXRpb25zKSB7XG4gIC8vIHJlZnJlc2hDb25kaXRpb25zIGN1dXJlbnRseSBzdXBwb3J0cyBvbmx5IFwiQ2hhbmdlc1wiIGV2ZW50XG4gIGlmICghcmVmcmVzaENvbmRpdGlvbnMpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgcmV0dXJuIHJlZnJlc2hDb25kaXRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0uZXZlbnQgJiYgaXRlbS5ldmVudCA9PT0gJ0NoYW5nZXMnKS5tYXAoaXRlbSA9PiBbaXRlbS5maWVsZCwgaXRlbS5maWVsZD8uc3Vic3RyaW5nKDEpXSkgfHwgW107XG59XG5cbmludGVyZmFjZSBBc3NpZ25tZW50UHJvcHMge1xuICAvLyBJZiBhbnksIGVudGVyIGFkZGl0aW9uYWwgcHJvcHMgdGhhdCBvbmx5IGV4aXN0IG9uIHRoaXMgY29tcG9uZW50XG4gIHRlbXBsYXRlOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1hc3NpZ25tZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Fzc2lnbm1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hc3NpZ25tZW50LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdFNuYWNrQmFyTW9kdWxlLCBmb3J3YXJkUmVmKCgpID0+IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCldXG59KVxuZXhwb3J0IGNsYXNzIEFzc2lnbm1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgYXJDaGlsZHJlbiQ6IGFueVtdO1xuICBASW5wdXQoKSBpdGVtS2V5JDogc3RyaW5nO1xuICBASW5wdXQoKSBpc0NyZWF0ZVN0YWdlJDogYm9vbGVhbjtcbiAgQElucHV0KCkgdXBkYXRlVG9rZW4kOiBudW1iZXI7XG4gIEBJbnB1dCgpIGlzSW5Nb2RhbCQgPSBmYWxzZTtcbiAgQElucHV0KCkgYmFubmVycztcblxuICAvLyBGb3IgaW50ZXJhY3Rpb24gd2l0aCBBbmd1bGFyUENvbm5lY3RcbiAgYW5ndWxhclBDb25uZWN0RGF0YTogQW5ndWxhclBDb25uZWN0RGF0YSA9IHt9O1xuICBjb25maWdQcm9wcyQ6IEFzc2lnbm1lbnRQcm9wcztcblxuICBuZXdQQ29ubiQ6IGFueTtcbiAgY29udGFpbmVyTmFtZSQ6IHN0cmluZztcblxuICBiSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICB0ZW1wbGF0ZU5hbWUkOiBzdHJpbmc7XG5cbiAgYXJNYWluQnV0dG9ucyQ6IGFueVtdO1xuICBhclNlY29uZGFyeUJ1dHRvbnMkOiBhbnlbXTtcblxuICBhY3Rpb25zQVBJOiBhbnk7XG5cbiAgYkhhc05hdmlnYXRpb24kID0gZmFsc2U7XG4gIGJJc1ZlcnRpY2FsJCA9IGZhbHNlO1xuICBhckN1cnJlbnRTdGVwSW5kaWNpZXMkOiBudW1iZXJbXSA9IFtdO1xuICBhck5hdmlnYXRpb25TdGVwcyQ6IGFueVtdID0gW107XG5cbiAgaW5pdDogYm9vbGVhbjtcbiAgZmluaXNoQXNzaWdubWVudDogYW55O1xuICBuYXZpZ2F0ZVRvU3RlcDogYW55O1xuICBzYXZlQXNzaWdubWVudDogYW55O1xuICBjYW5jZWxBc3NpZ25tZW50OiBhbnk7XG4gIGNhbmNlbENyZWF0ZVN0YWdlQXNzaWdubWVudDogYW55O1xuICBzaG93UGFnZTogYW55O1xuXG4gIC8vIGl0ZW1LZXk6IHN0cmluZyA9IFwiXCI7ICAgLy8gSkEgLSB0aGlzIGlzIHdoYXQgTmVidWxhL0NvbnN0ZWxsYXRpb24gdXNlcyB0byBwYXNzIHRvIGZpbmlzaEFzc2lnbm1lbnQsIG5hdmlnYXRlVG9TdGVwXG5cbiAgYlJlSW5pdCA9IGZhbHNlO1xuICBsb2NhbGl6ZWRWYWw7XG4gIGxvY2FsZUNhdGVnb3J5ID0gJ0Fzc2lnbm1lbnQnO1xuICBsb2NhbGVSZWZlcmVuY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbmd1bGFyUENvbm5lY3Q6IEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwc1NlcnZpY2U6IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlclNlcnZpY2U6IEVycm9yTWVzc2FnZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXJcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEZpcnN0IHRoaW5nIGluIGluaXRpYWxpemF0aW9uIGlzIHJlZ2lzdGVyaW5nIGFuZCBzdWJzY3JpYmluZyB0byB0aGUgQW5ndWxhclBDb25uZWN0IHNlcnZpY2VcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5yZWdpc3RlckFuZFN1YnNjcmliZUNvbXBvbmVudCh0aGlzLCB0aGlzLm9uU3RhdGVDaGFuZ2UpO1xuXG4gICAgdGhpcy5pbml0Q29tcG9uZW50KCk7XG5cbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICB0aGlzLmJJbml0aWFsaXplZCA9IHRydWU7XG4gICAgdGhpcy5sb2NhbGl6ZWRWYWwgPSBQQ29yZS5nZXRMb2NhbGVVdGlscygpLmdldExvY2FsZVZhbHVlO1xuICAgIHRoaXMubG9jYWxlUmVmZXJlbmNlID0gYCR7dGhpcy5wQ29ubiQuZ2V0Q2FzZUluZm8oKS5nZXRDbGFzc05hbWUoKX0hQ0FTRSEke3RoaXMucENvbm4kLmdldENhc2VJbmZvKCkuZ2V0TmFtZSgpfWAudG9VcHBlckNhc2UoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbikge1xuICAgICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4oKTtcbiAgICB9XG4gIH1cblxuICAvLyBDYWxsYmFjayBwYXNzZWQgd2hlbiBzdWJzY3JpYmluZyB0byBzdG9yZSBjaGFuZ2VcbiAgb25TdGF0ZUNoYW5nZSgpIHtcbiAgICB0aGlzLmNoZWNrQW5kVXBkYXRlKCk7XG4gIH1cblxuICBjaGVja0FuZFVwZGF0ZSgpIHtcbiAgICAvLyBTaG91bGQgYWx3YXlzIGNoZWNrIHRoZSBicmlkZ2UgdG8gc2VlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcilcbiAgICBjb25zdCBiVXBkYXRlU2VsZiA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcblxuICAgIC8vIE9OTFkgY2FsbCB1cGRhdGVTZWxmIHdoZW4gdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlXG4gICAgLy8gICAgQU5EIHJlbW92aW5nIHRoZSBcImdhdGVcIiB0aGF0IHdhcyBwdXQgdGhlcmUgc2luY2Ugc2hvdWxkQ29tcG9uZW50VXBkYXRlXG4gICAgLy8gICAgICBzaG91bGQgYmUgdGhlIHJlYWwgXCJnYXRlXCJcbiAgICBpZiAoYlVwZGF0ZVNlbGYpIHtcbiAgICAgIGxldCBsb2FkaW5nSW5mbztcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIGxvYWRpbmdJbmZvID0gdGhpcy5wQ29ubiQuZ2V0TG9hZGluZ1N0YXR1cygpO1xuICAgICAgICBsb2FkaW5nSW5mbyA9IHRoaXMubmV3UENvbm4kLmdldExvYWRpbmdTdGF0dXMoKTtcblxuICAgICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShsb2FkaW5nSW5mbyk7XG4gICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICAvKiBlbXB0eSAqL1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIGlmICh0aGlzLmJJbml0aWFsaXplZCkge1xuICAgICAgdGhpcy51cGRhdGVDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQ2hhbmdlcygpIHtcbiAgICB0aGlzLnJlZ2lzdGVyRm9yUmVmcmVzaCgpO1xuXG4gICAgLy8gcENvbm4kIG1heSBiZSBhICdyZWZlcmVuY2UnIGNvbXBvbmVudCwgc28gbm9ybWFsaXplIGl0XG4gICAgdGhpcy5uZXdQQ29ubiQgPSBSZWZlcmVuY2VDb21wb25lbnQubm9ybWFsaXplUENvbm4odGhpcy5wQ29ubiQpO1xuXG4gICAgaWYgKHRoaXMuYXJDaGlsZHJlbiQpIHtcbiAgICAgIHRoaXMuY3JlYXRlQnV0dG9ucygpO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrSWZSZWZDb21wb25lbnQodGhlUENvbm46IGFueSk6IGJvb2xlYW4ge1xuICAgIGxldCBiUmV0dXJuID0gZmFsc2U7XG4gICAgaWYgKHRoZVBDb25uICYmIHRoZVBDb25uLmdldENvbXBvbmVudE5hbWUoKSA9PSAncmVmZXJlbmNlJykge1xuICAgICAgYlJldHVybiA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJSZXR1cm47XG4gIH1cblxuICBpbml0Q29tcG9uZW50KCkge1xuICAgIC8vIHBDb25uJCBtYXkgYmUgYSAncmVmZXJlbmNlJyBjb21wb25lbnQsIHNvIG5vcm1hbGl6ZSBpdFxuICAgIC8vIHRoaXMucENvbm4kID0gUmVmZXJlbmNlQ29tcG9uZW50Lm5vcm1hbGl6ZVBDb25uKHRoaXMucENvbm4kKTtcbiAgICB0aGlzLm5ld1BDb25uJCA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubih0aGlzLnBDb25uJCk7XG5cbiAgICAvLyBwcmV2ZW50IHJlLWludGlhbGl6aW5nIHdpdGggZmxvd0NvbnRhaW5lciB1cGRhdGUgdW5sZXNzIGFuIGFjdGlvbiBpcyB0YWtlblxuICAgIHRoaXMuYlJlSW5pdCA9IGZhbHNlO1xuICAgIHRoaXMuYkhhc05hdmlnYXRpb24kID0gZmFsc2U7XG5cbiAgICAvLyB0aGlzLmNvbmZpZ1Byb3BzJCA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKTtcbiAgICB0aGlzLmNvbmZpZ1Byb3BzJCA9IHRoaXMubmV3UENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLm5ld1BDb25uJC5nZXRDb25maWdQcm9wcygpKTtcblxuICAgIHRoaXMudGVtcGxhdGVOYW1lJCA9IHRoaXMuY29uZmlnUHJvcHMkLnRlbXBsYXRlO1xuXG4gICAgLy8gY3JlYXRlIHBvaW50ZXJzIHRvIGZ1bmN0aW9uc1xuICAgIC8qXG4gICAgbGV0IGNvbnRhaW5lck1nciA9IHRoaXMucENvbm4kLmdldENvbnRhaW5lck1hbmFnZXIoKTtcbiAgICBsZXQgYWN0aW9uc0FQSSA9IHRoaXMucENvbm4kLmdldEFjdGlvbnNBcGkoKTtcbiAgICBsZXQgYmFzZUNvbnRleHQgPSB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuICAgIGxldCBhY05hbWUgPSB0aGlzLnBDb25uJC5nZXRDb250YWluZXJOYW1lKCk7XG4gICAgKi9cblxuICAgIGNvbnN0IGFjdGlvbnNBUEkgPSB0aGlzLm5ld1BDb25uJC5nZXRBY3Rpb25zQXBpKCk7XG4gICAgY29uc3QgYmFzZUNvbnRleHQgPSB0aGlzLm5ld1BDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuICAgIGNvbnN0IGFjTmFtZSA9IHRoaXMubmV3UENvbm4kLmdldENvbnRhaW5lck5hbWUoKTtcblxuICAgIC8vIGZvciBub3csIGluIGdlbmVyYWwgdGhpcyBzaG91bGQgYmUgb3ZlcnJpZGRlbiBieSB1cGRhdGVTZWxmKCksIGFuZCBub3QgYmUgYmxhbmtcbiAgICBpZiAodGhpcy5pdGVtS2V5JCA9PT0gJycpIHtcbiAgICAgIHRoaXMuaXRlbUtleSQgPSBiYXNlQ29udGV4dC5jb25jYXQoJy8nKS5jb25jYXQoYWNOYW1lKTtcbiAgICB9XG5cbiAgICAvLyB0aGlzLnBDb25uJC5pc0JvdW5kVG9TdGF0ZSgpO1xuICAgIHRoaXMubmV3UENvbm4kLmlzQm91bmRUb1N0YXRlKCk7XG5cbiAgICB0aGlzLmluaXQgPSBmYWxzZTtcblxuICAgIC8vIHN0b3JlIG9mZiBib3VuZCBmdW5jdGlvbnMgdG8gYWJvdmUgcG9pbnRlcnNcbiAgICB0aGlzLmZpbmlzaEFzc2lnbm1lbnQgPSBhY3Rpb25zQVBJLmZpbmlzaEFzc2lnbm1lbnQuYmluZChhY3Rpb25zQVBJKTtcbiAgICB0aGlzLm5hdmlnYXRlVG9TdGVwID0gYWN0aW9uc0FQSS5uYXZpZ2F0ZVRvU3RlcC5iaW5kKGFjdGlvbnNBUEkpO1xuICAgIHRoaXMuc2F2ZUFzc2lnbm1lbnQgPSBhY3Rpb25zQVBJLnNhdmVBc3NpZ25tZW50LmJpbmQoYWN0aW9uc0FQSSk7XG4gICAgdGhpcy5jYW5jZWxBc3NpZ25tZW50ID0gYWN0aW9uc0FQSS5jYW5jZWxBc3NpZ25tZW50LmJpbmQoYWN0aW9uc0FQSSk7XG4gICAgdGhpcy5zaG93UGFnZSA9IGFjdGlvbnNBUEkuc2hvd1BhZ2UuYmluZChhY3Rpb25zQVBJKTtcblxuICAgIHRoaXMuY2FuY2VsQ3JlYXRlU3RhZ2VBc3NpZ25tZW50ID0gYWN0aW9uc0FQSS5jYW5jZWxDcmVhdGVTdGFnZUFzc2lnbm1lbnQuYmluZChhY3Rpb25zQVBJKTtcblxuICAgIGlmICh0aGlzLmFyQ2hpbGRyZW4kKSB7XG4gICAgICB0aGlzLmNyZWF0ZUJ1dHRvbnMoKTtcbiAgICB9XG4gIH1cblxuICBjcmVhdGVCdXR0b25zKCkge1xuICAgIC8vIGxldCBvRGF0YSA9IHRoaXMucENvbm4kLmdldERhdGFPYmplY3QoKTtcbiAgICBjb25zdCBvRGF0YSA9IHRoaXMubmV3UENvbm4kLmdldERhdGFPYmplY3QoKTtcblxuICAgIC8vIGluc2lkZVxuICAgIC8vIGdldCBmaXN0IGtpZCwgZ2V0IHRoZSBuYW1lIGFuZCBkaXNwbGFcbiAgICAvLyBwYXNzIGZpcnN0IGtpZCB0byBhIHZpZXcgY29udGFpbmVyLCB3aGljaCB3aWxsIGRpc3BlcnNlIGl0IHRvIGEgdmlldyB3aGljaCB3aWxsIHVzZSBvbmUgY29sdW1uLCB0d28gY29sdW1uLCBldGMuXG4gICAgY29uc3Qgb1dvcmtJdGVtID0gdGhpcy5hckNoaWxkcmVuJFswXS5nZXRQQ29ubmVjdCgpO1xuICAgIGNvbnN0IG9Xb3JrRGF0YSA9IG9Xb3JrSXRlbS5nZXREYXRhT2JqZWN0KCk7XG5cbiAgICBpZiAob1dvcmtEYXRhKSB7XG4gICAgICB0aGlzLmFjdGlvbnNBUEkgPSBvV29ya0l0ZW0uZ2V0QWN0aW9uc0FwaSgpO1xuXG4gICAgICAvLyB0aGlzLmNvbnRhaW5lck5hbWUkID0gb1dvcmtNZXRhW1wibmFtZVwiXTtcblxuICAgICAgaWYgKG9Xb3JrRGF0YS5jYXNlSW5mbyAmJiBvV29ya0RhdGEuY2FzZUluZm8uYXNzaWdubWVudHMgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5jb250YWluZXJOYW1lJCA9IG9Xb3JrRGF0YS5jYXNlSW5mby5hc3NpZ25tZW50cz8uWzBdLm5hbWU7XG5cbiAgICAgICAgLy8gZ2V0IGNhc2VJbmZvXG4gICAgICAgIGNvbnN0IG9DYXNlSW5mbyA9IG9EYXRhLmNhc2VJbmZvO1xuXG4gICAgICAgIGlmIChvQ2FzZUluZm8gJiYgb0Nhc2VJbmZvLmFjdGlvbkJ1dHRvbnMpIHtcbiAgICAgICAgICB0aGlzLmFyTWFpbkJ1dHRvbnMkID0gb0Nhc2VJbmZvLmFjdGlvbkJ1dHRvbnMubWFpbjtcbiAgICAgICAgICB0aGlzLmFyU2Vjb25kYXJ5QnV0dG9ucyQgPSBvQ2FzZUluZm8uYWN0aW9uQnV0dG9ucy5zZWNvbmRhcnk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob0Nhc2VJbmZvLm5hdmlnYXRpb24gIT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuY3JlYXRlQnV0dG9uc0Zvck11bHRpU3RlcEZvcm0ob0Nhc2VJbmZvKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmJIYXNOYXZpZ2F0aW9uJCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlQnV0dG9uc0Zvck11bHRpU3RlcEZvcm0ob0Nhc2VJbmZvKSB7XG4gICAgdGhpcy5iSGFzTmF2aWdhdGlvbiQgPSB0cnVlO1xuXG4gICAgaWYgKChvQ2FzZUluZm8ubmF2aWdhdGlvbi50ZW1wbGF0ZSAmJiBvQ2FzZUluZm8ubmF2aWdhdGlvbi50ZW1wbGF0ZS50b0xvd2VyQ2FzZSgpID09PSAnc3RhbmRhcmQnKSB8fCBvQ2FzZUluZm8/Lm5hdmlnYXRpb24/LnN0ZXBzPy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHRoaXMuYkhhc05hdmlnYXRpb24kID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChvQ2FzZUluZm8ubmF2aWdhdGlvbi50ZW1wbGF0ZSAmJiBvQ2FzZUluZm8ubmF2aWdhdGlvbi50ZW1wbGF0ZS50b0xvd2VyQ2FzZSgpID09PSAndmVydGljYWwnKSB7XG4gICAgICB0aGlzLmJJc1ZlcnRpY2FsJCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYklzVmVydGljYWwkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gaXRlcmF0ZSB0aHJvdWdoIHN0ZXBzIHRvIGZpbmQgY3VycmVudCBvbmUocylcbiAgICAvLyBpbW11dGFibGUsIHNvIHdlIHdhbnQgdG8gY2hhbmdlIHRoZSBsb2NhbCBjb3B5LCBzbyBuZWVkIHRvIG1ha2UgYSBjb3B5XG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIC8vIHdoYXQgY29tZXMgYmFjayBub3cgaW4gY29uZmlnT2JqZWN0IGlzIHRoZSBjaGlsZHJlbiBvZiB0aGUgZmxvd0NvbnRhaW5lclxuICAgICAgdGhpcy5hck5hdmlnYXRpb25TdGVwcyQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9DYXNlSW5mby5uYXZpZ2F0aW9uLnN0ZXBzKSk7XG4gICAgICB0aGlzLmFyTmF2aWdhdGlvblN0ZXBzJC5mb3JFYWNoKHN0ZXAgPT4ge1xuICAgICAgICBpZiAoc3RlcC5uYW1lKSB7XG4gICAgICAgICAgc3RlcC5uYW1lID0gUENvcmUuZ2V0TG9jYWxlVXRpbHMoKS5nZXRMb2NhbGVWYWx1ZShzdGVwLm5hbWUsIHVuZGVmaW5lZCwgdGhpcy5sb2NhbGVSZWZlcmVuY2UpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuYXJDdXJyZW50U3RlcEluZGljaWVzJCA9IFtdO1xuICAgICAgdGhpcy5hckN1cnJlbnRTdGVwSW5kaWNpZXMkID0gdGhpcy5maW5kQ3VycmVudEluZGljaWVzKHRoaXMuYXJOYXZpZ2F0aW9uU3RlcHMkLCB0aGlzLmFyQ3VycmVudFN0ZXBJbmRpY2llcyQsIDApO1xuICAgIH0pO1xuICB9XG5cbiAgZmluZEN1cnJlbnRJbmRpY2llcyhhclN0ZXBwZXJTdGVwczogYW55W10sIGFySW5kaWNpZXM6IG51bWJlcltdLCBkZXB0aDogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgIGxldCBjb3VudCA9IDA7XG4gICAgYXJTdGVwcGVyU3RlcHMuZm9yRWFjaChzdGVwID0+IHtcbiAgICAgIGlmIChzdGVwLnZpc2l0ZWRfc3RhdHVzID09ICdjdXJyZW50Jykge1xuICAgICAgICBhckluZGljaWVzW2RlcHRoXSA9IGNvdW50O1xuXG4gICAgICAgIC8vIGFkZCBpblxuICAgICAgICBzdGVwLnN0ZXBfc3RhdHVzID0gJyc7XG4gICAgICB9IGVsc2UgaWYgKHN0ZXAudmlzaXRlZF9zdGF0dXMgPT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICAgIGNvdW50Kys7XG4gICAgICAgIHN0ZXAuc3RlcF9zdGF0dXMgPSAnY29tcGxldGVkJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvdW50Kys7XG4gICAgICAgIHN0ZXAuc3RlcF9zdGF0dXMgPSAnJztcbiAgICAgIH1cblxuICAgICAgaWYgKHN0ZXAuc3RlcHMpIHtcbiAgICAgICAgYXJJbmRpY2llcyA9IHRoaXMuZmluZEN1cnJlbnRJbmRpY2llcyhzdGVwLnN0ZXBzLCBhckluZGljaWVzLCBkZXB0aCArIDEpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFySW5kaWNpZXM7XG4gIH1cblxuICBvblNhdmVBY3Rpb25TdWNjZXNzKGRhdGEpIHtcbiAgICB0aGlzLmFjdGlvbnNBUEkuY2FuY2VsQXNzaWdubWVudCh0aGlzLml0ZW1LZXkkKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcbiAgICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkucHVibGlzaChQQ29yZS5nZXRDb25zdGFudHMoKS5QVUJfU1VCX0VWRU5UUy5DQVNFX0VWRU5UUy5DUkVBVEVfU1RBR0VfU0FWRUQsIGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgb25BY3Rpb25CdXR0b25DbGljayhvRGF0YTogYW55KSB7XG4gICAgdGhpcy5idXR0b25DbGljayhvRGF0YS5hY3Rpb24sIG9EYXRhLmJ1dHRvblR5cGUpO1xuICB9XG5cbiAgYnV0dG9uQ2xpY2soc0FjdGlvbiwgc0J1dHRvblR5cGUpIHtcbiAgICAvLyByaWdodCBub3csIGRvbmUgb24gYW4gaW5kaXZpZHVhbCBiYXNpcywgc2V0dGluZyBiUmVJbml0IHRvIHRydWVcbiAgICAvLyB1cG9uIHRoZSBuZXh0IGZsb3cgY29udGFpbmVyIHN0YXRlIGNoYW5nZSwgd2lsbCBjYXVzZSB0aGUgZmxvdyBjb250YWluZXJcbiAgICAvLyB0byByZS1pbml0aWFsaXplXG4gICAgLy8gdGhpcy5iUmVJbml0ID10cnVlO1xuXG4gICAgLypcbiAgICBsZXQgYmFzZUNvbnRleHQgPSB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuICAgIGxldCBhY05hbWUgPSB0aGlzLnBDb25uJC5nZXRDb250YWluZXJOYW1lKCk7XG4gICAgbGV0IGl0ZW1JRCA9IGJhc2VDb250ZXh0LmNvbmNhdChcIi9cIikuY29uY2F0KGFjTmFtZSk7XG4gICAgKi9cblxuICAgIC8vIGNvbnN0IGJhc2VDb250ZXh0ID0gdGhpcy5uZXdQQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICAvLyBjb25zdCBhY05hbWUgPSB0aGlzLm5ld1BDb25uJC5nZXRDb250YWluZXJOYW1lKCk7XG4gICAgLy8gY29uc3QgaXRlbUlEID0gYmFzZUNvbnRleHQuY29uY2F0KCcvJykuY29uY2F0KGFjTmFtZSk7XG5cbiAgICBpZiAoc0J1dHRvblR5cGUgPT0gJ3NlY29uZGFyeScpIHtcbiAgICAgIC8vIGNvbnN0IHN0ZXBJRCA9ICcnOyAvLyA/Pz9cblxuICAgICAgLy8gbmVlZCB0byBoYW5kbGUgY2FuY2VsIGFzIHRoaXMuY2FuY2VsKGRpc3BhdGNoSW5mbylcbiAgICAgIC8vIHRoaXMuYWN0aW9uc0FQSVtzQWN0aW9uXShkaXNwYXRjaEluZm8pO1xuICAgICAgc3dpdGNoIChzQWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ25hdmlnYXRlVG9TdGVwJzpcbiAgICAgICAgICB0aGlzLmVyU2VydmljZS5zZW5kTWVzc2FnZSgncHVibGlzaCcsICcnKTtcbiAgICAgICAgICBpZiAodGhpcy5mb3JtVmFsaWQoKSkge1xuICAgICAgICAgICAgdGhpcy5iUmVJbml0ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKHRydWUpO1xuXG4gICAgICAgICAgICBjb25zdCBuYXZpZ2F0ZVByb21pc2UgPSB0aGlzLm5hdmlnYXRlVG9TdGVwKCdwcmV2aW91cycsIHRoaXMuaXRlbUtleSQpO1xuICAgICAgICAgICAgbmF2aWdhdGVQcm9taXNlXG4gICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihgJHt0aGlzLmxvY2FsaXplZFZhbCgnTmF2aWdhdGlvbiBmYWlsZWQhJywgdGhpcy5sb2NhbGVDYXRlZ29yeSl9YCwgJ09rJyk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdzYXZlQXNzaWdubWVudCc6IHtcbiAgICAgICAgICBjb25zdCBjYXNlSUQgPSB0aGlzLnBDb25uJC5nZXRDYXNlSW5mbygpLmdldEtleSgpO1xuICAgICAgICAgIGNvbnN0IGFzc2lnbm1lbnRJRCA9IHRoaXMucENvbm4kLmdldENhc2VJbmZvKCkuZ2V0QXNzaWdubWVudElEKCk7XG4gICAgICAgICAgY29uc3Qgc2F2ZVByb21pc2UgPSB0aGlzLnNhdmVBc3NpZ25tZW50KHRoaXMuaXRlbUtleSQpO1xuXG4gICAgICAgICAgc2F2ZVByb21pc2VcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgY2FzZVR5cGUgPSB0aGlzLnBDb25uJC5nZXRDYXNlSW5mbygpLmMxMW5FbnYuZ2V0VmFsdWUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLkNBU0VfVFlQRV9JRCk7XG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgLSBzZWNvbmQgcGFyYW1ldGVyIOKAnHBheWxvYWTigJ0gZm9yIHB1Ymxpc2ggbWV0aG9kIHNob3VsZCBiZSBvcHRpb25hbFxuICAgICAgICAgICAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnB1Ymxpc2goJ2NhbmNlbFByZXNzZWQnKTtcbiAgICAgICAgICAgICAgdGhpcy5vblNhdmVBY3Rpb25TdWNjZXNzKHsgY2FzZVR5cGUsIGNhc2VJRCwgYXNzaWdubWVudElEIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKGAke3RoaXMubG9jYWxpemVkVmFsKCdTYXZlIGZhaWxlZCcsIHRoaXMubG9jYWxlQ2F0ZWdvcnkpfWAsICdPaycpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ2NhbmNlbEFzc2lnbm1lbnQnOlxuICAgICAgICAgIHRoaXMuYlJlSW5pdCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5lclNlcnZpY2Uuc2VuZE1lc3NhZ2UoJ2Rpc21pc3MnLCAnJyk7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZSAtIFByb3BlcnR5ICdpc0Fzc2lnbm1lbnRJbkNyZWF0ZVN0YWdlJyBpcyBwcml2YXRlIGFuZCBvbmx5IGFjY2Vzc2libGUgd2l0aGluIGNsYXNzICdDYXNlSW5mbydcbiAgICAgICAgICBjb25zdCBpc0Fzc2lnbm1lbnRJbkNyZWF0ZVN0YWdlID0gdGhpcy5wQ29ubiQuZ2V0Q2FzZUluZm8oKS5pc0Fzc2lnbm1lbnRJbkNyZWF0ZVN0YWdlKCk7XG4gICAgICAgICAgY29uc3QgaXNMb2NhbEFjdGlvbiA9XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlIC0gUHJvcGVydHkgJ2lzTG9jYWxBY3Rpb24nIGlzIHByaXZhdGUgYW5kIG9ubHkgYWNjZXNzaWJsZSB3aXRoaW4gY2xhc3MgJ0Nhc2VJbmZvJy5cbiAgICAgICAgICAgIHRoaXMucENvbm4kLmdldENhc2VJbmZvKCkuaXNMb2NhbEFjdGlvbigpIHx8XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlIC0gc2Vjb25kIHBhcmFtZXRlciBwYWdlUmVmZXJlbmNlIGZvciBnZXRWYWx1ZSBtZXRob2Qgc2hvdWxkIGJlIG9wdGlvbmFsXG4gICAgICAgICAgICAoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLklTX0xPQ0FMX0FDVElPTiAmJiB0aGlzLnBDb25uJC5nZXRWYWx1ZShQQ29yZS5nZXRDb25zdGFudHMoKS5DQVNFX0lORk8uSVNfTE9DQUxfQUNUSU9OKSk7XG4gICAgICAgICAgLy8gY2hlY2sgaWYgY3JlYXRlIHN0YWdlIChtb2RhbClcbiAgICAgICAgICBpZiAoaXNBc3NpZ25tZW50SW5DcmVhdGVTdGFnZSAmJiB0aGlzLmlzSW5Nb2RhbCQgJiYgIWlzTG9jYWxBY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbmNlbFByb21pc2UgPSB0aGlzLmNhbmNlbENyZWF0ZVN0YWdlQXNzaWdubWVudCh0aGlzLml0ZW1LZXkkKTtcbiAgICAgICAgICAgIGNhbmNlbFByb21pc2VcbiAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAvLyBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnB1Ymxpc2goXG4gICAgICAgICAgICAgICAgLy8gICBQQ29yZS5nZXRDb25zdGFudHMoKS5QVUJfU1VCX0VWRU5UUy5FVkVOVF9DQU5DRUwpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oYCR7dGhpcy5sb2NhbGl6ZWRWYWwoJ0NhbmNlbCBmYWlsZWQhJywgdGhpcy5sb2NhbGVDYXRlZ29yeSl9YCwgJ09rJyk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZSh0cnVlKTtcblxuICAgICAgICAgICAgLy8gcHVibGlzaCBiZWZvcmUgY2FuY2VsIHByZXNzZWQsIGJlY2F1c2VcbiAgICAgICAgICAgIC8vIGNhbmNlbCBhc3NpZ25tZW50IGhhcHBlbnMgXCJhZnRlclwiIGNhbmNlbCBhc3NpZ25tZW50IGhhcHBlbnNcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgLSBzZWNvbmQgcGFyYW1ldGVyIOKAnHBheWxvYWTigJ0gZm9yIHB1Ymxpc2ggbWV0aG9kIHNob3VsZCBiZSBvcHRpb25hbFxuICAgICAgICAgICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5wdWJsaXNoKCdjYW5jZWxQcmVzc2VkJyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGNhbmNlbFByb21pc2UgPSB0aGlzLmNhbmNlbEFzc2lnbm1lbnQodGhpcy5pdGVtS2V5JCk7XG4gICAgICAgICAgICBjYW5jZWxQcm9taXNlXG4gICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSAtIHNlY29uZCBwYXJhbWV0ZXIg4oCccGF5bG9hZOKAnSBmb3IgcHVibGlzaCBtZXRob2Qgc2hvdWxkIGJlIG9wdGlvbmFsXG4gICAgICAgICAgICAgICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5wdWJsaXNoKFBDb3JlLmdldENvbnN0YW50cygpLlBVQl9TVUJfRVZFTlRTLkVWRU5UX0NBTkNFTCk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihgJHt0aGlzLmxvY2FsaXplZFZhbCgnQ2FuY2VsIGZhaWxlZCEnLCB0aGlzLmxvY2FsZUNhdGVnb3J5KX1gLCAnT2snKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzQnV0dG9uVHlwZSA9PSAncHJpbWFyeScpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzb25hcmpzL25vLXNtYWxsLXN3aXRjaFxuICAgICAgc3dpdGNoIChzQWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ2ZpbmlzaEFzc2lnbm1lbnQnOlxuICAgICAgICAgIHRoaXMuZXJTZXJ2aWNlLnNlbmRNZXNzYWdlKCdwdWJsaXNoJywgJycpO1xuICAgICAgICAgIGlmICh0aGlzLmZvcm1WYWxpZCgpKSB7XG4gICAgICAgICAgICB0aGlzLmJSZUluaXQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UodHJ1ZSk7XG4gICAgICAgICAgICBjb25zdCBmaW5pc2hQcm9taXNlID0gdGhpcy5maW5pc2hBc3NpZ25tZW50KHRoaXMuaXRlbUtleSQpOyAvLyBKQSAtIHdhcyBpdGVtSUQgYnV0IE5lYnVsYS9Db25zdGVsbGF0aW9uIHVzZXMgaXRlbUtleVxuICAgICAgICAgICAgZmluaXNoUHJvbWlzZVxuICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hhbmdlcygpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oYCR7dGhpcy5sb2NhbGl6ZWRWYWwoJ1N1Ym1pdCBmYWlsZWQhJywgdGhpcy5sb2NhbGVDYXRlZ29yeSl9YCwgJ09rJyk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBsZXQgc25hY2tCYXJSZWYgPSB0aGlzLnNuYWNrQmFyLm9wZW4oXCJQbGVhc2UgZml4IGVycm9ycyBvbiBmb3JtLlwiLCAgXCJPa1wiKTtcbiAgICAgICAgICAgIHRoaXMuZXJTZXJ2aWNlLnNlbmRNZXNzYWdlKCdzaG93JywgdGhpcy5sb2NhbGl6ZWRWYWwoJ1BsZWFzZSBmaXggZXJyb3JzIG9uIGZvcm0uJywgdGhpcy5sb2NhbGVDYXRlZ29yeSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3JtVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgdGhpcy50b3VjaEFsbCgpO1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cCQudmFsaWQ7XG4gIH1cblxuICB0b3VjaEFsbCgpOiB2b2lkIHtcbiAgICBPYmplY3QudmFsdWVzKHRoaXMuZm9ybUdyb3VwJC5jb250cm9scykuZm9yRWFjaCgoY29udHJvbDogYW55KSA9PiB7XG4gICAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzb25hcmpzL25vLWlkZW50aWNhbC1mdW5jdGlvbnNcbiAgdG9wVmlld1JlZnJlc2goKTogdm9pZCB7XG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLmZvcm1Hcm91cCQuY29udHJvbHMpLmZvckVhY2goKGNvbnRyb2w6IGFueSkgPT4ge1xuICAgICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgfSk7XG4gIH1cblxuICByZWdpc3RlckZvclJlZnJlc2goKSB7XG4gICAgLy8gQHRzLWlnbm9yZSAtIFByb3BlcnR5ICdnZXRBY3Rpb25SZWZyZXNoQ29uZGl0aW9ucycgaXMgcHJpdmF0ZSBhbmQgb25seSBhY2Nlc3NpYmxlIHdpdGhpbiBjbGFzcyAnQ2FzZUluZm8nXG4gICAgY29uc3QgcmVmcmVzaENvbmRpdGlvbnMgPSB0aGlzLnBDb25uJC5nZXRDYXNlSW5mbygpPy5nZXRBY3Rpb25SZWZyZXNoQ29uZGl0aW9ucygpO1xuICAgIGNvbnN0IHBhZ2VSZWZlcmVuY2UgPSB0aGlzLnBDb25uJC5nZXRQYWdlUmVmZXJlbmNlKCk7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCk7XG5cbiAgICAvLyByZWZyZXNoIGFwaSBkZS1yZWdpc3RyYXRpb25cbiAgICBQQ29yZS5nZXRSZWZyZXNoTWFuYWdlcigpLmRlUmVnaXN0ZXJGb3JSZWZyZXNoKGNvbnRleHQpO1xuXG4gICAgLy8gcmVmcmVzaCBhcGkgcmVnaXN0cmF0aW9uXG4gICAgY29uc3QgcmVmcmVzaFByb3BzID0gZ2V0UmVmcmVzaFByb3BzKHJlZnJlc2hDb25kaXRpb25zKTtcbiAgICBjb25zdCBjYXNlS2V5ID0gdGhpcy5wQ29ubiQuZ2V0Q2FzZUluZm8oKS5nZXRLZXkoKTtcbiAgICBjb25zdCByZWZyZXNoT3B0aW9ucyA9IHtcbiAgICAgIGF1dG9EZXRlY3RSZWZyZXNoOiB0cnVlLFxuICAgICAgcHJlc2VydmVDbGllbnRDaGFuZ2VzOiBmYWxzZVxuICAgIH07XG4gICAgaWYgKHJlZnJlc2hQcm9wcy5sZW5ndGggPiAwKSB7XG4gICAgICByZWZyZXNoUHJvcHMuZm9yRWFjaChwcm9wID0+IHtcbiAgICAgICAgUENvcmUuZ2V0UmVmcmVzaE1hbmFnZXIoKS5yZWdpc3RlckZvclJlZnJlc2goXG4gICAgICAgICAgJ1BST1BfQ0hBTkdFJyxcbiAgICAgICAgICB0aGlzLnBDb25uJC5nZXRBY3Rpb25zQXBpKCkucmVmcmVzaENhc2VWaWV3LmJpbmQodGhpcy5wQ29ubiQuZ2V0QWN0aW9uc0FwaSgpLCBjYXNlS2V5LCBudWxsLCBwYWdlUmVmZXJlbmNlLCB7XG4gICAgICAgICAgICAuLi5yZWZyZXNoT3B0aW9ucyxcbiAgICAgICAgICAgIHJlZnJlc2hGb3I6IHByb3BbMF1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBgJHtwYWdlUmVmZXJlbmNlfS4ke3Byb3BbMV19YCxcbiAgICAgICAgICBgJHtjb250ZXh0fS8ke3BhZ2VSZWZlcmVuY2V9YCxcbiAgICAgICAgICBjb250ZXh0XG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXY+XG4gIDxkaXY+PGNvbXBvbmVudC1tYXBwZXIgbmFtZT1cIkFsZXJ0QmFubmVyXCIgW3Byb3BzXT1cInsgYmFubmVycyB9XCIgW3BhcmVudF09XCJ0aGlzXCI+PC9jb21wb25lbnQtbWFwcGVyPjwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiYkhhc05hdmlnYXRpb24kXCIgY2xhc3M9XCJwc2RrLXN0ZXBwZXJcIj5cbiAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgbmFtZT1cIk11bHRpU3RlcFwiXG4gICAgICBbcHJvcHNdPVwie1xuICAgICAgICBwQ29ubiQ6IG5ld1BDb25uJCxcbiAgICAgICAgZm9ybUdyb3VwJCxcbiAgICAgICAgYXJDaGlsZHJlbiQsXG4gICAgICAgIGFyTWFpbkJ1dHRvbnMkLFxuICAgICAgICBhclNlY29uZGFyeUJ1dHRvbnMkLFxuICAgICAgICBiSXNWZXJ0aWNhbCQsXG4gICAgICAgIGFyQ3VycmVudFN0ZXBJbmRpY2llcyQsXG4gICAgICAgIGFyTmF2aWdhdGlvblN0ZXBzJFxuICAgICAgfVwiXG4gICAgICBbcGFyZW50XT1cInRoaXNcIlxuICAgICAgW291dHB1dEV2ZW50c109XCJ7IGFjdGlvbkJ1dHRvbkNsaWNrOiBvbkFjdGlvbkJ1dHRvbkNsaWNrIH1cIlxuICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiIWJIYXNOYXZpZ2F0aW9uJFwiPlxuICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICBuYW1lPVwiQXNzaWdubWVudENhcmRcIlxuICAgICAgW3Byb3BzXT1cInsgcENvbm4kOiBuZXdQQ29ubiQsIGZvcm1Hcm91cCQsIGFyQ2hpbGRyZW4kLCBhck1haW5CdXR0b25zJCwgYXJTZWNvbmRhcnlCdXR0b25zJCwgdXBkYXRlVG9rZW4kIH1cIlxuICAgICAgW3BhcmVudF09XCJ0aGlzXCJcbiAgICAgIFtvdXRwdXRFdmVudHNdPVwieyBhY3Rpb25CdXR0b25DbGljazogb25BY3Rpb25CdXR0b25DbGljayB9XCJcbiAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|