raise-common-lib 0.0.194 → 0.0.195

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.
@@ -182,6 +182,9 @@ export class DrawerFormComponent {
182
182
  const date = moment(value);
183
183
  this.dateForm[field.formKey] = date.isValid() ? date.toDate() : null;
184
184
  }
185
+ else {
186
+ this.dateForm[field.formKey] = null;
187
+ }
185
188
  }
186
189
  /**
187
190
  * @param {?} sections
@@ -198,27 +201,31 @@ export class DrawerFormComponent {
198
201
  * @return {?}
199
202
  */
200
203
  (field) => {
201
- if (this.form[field.formKey] === undefined) {
202
- switch (field.fieldFormType) {
203
- case "Text":
204
- case "Email":
205
- case "Textarea":
204
+ switch (field.fieldFormType) {
205
+ case "Text":
206
+ case "Email":
207
+ case "Textarea":
208
+ if (this.form[field.formKey] === undefined) {
206
209
  this.form[field.formKey] = "";
207
- break;
208
- case "Tags":
209
- case "Checkbox":
210
- case "MultiSelect":
210
+ }
211
+ break;
212
+ case "Tags":
213
+ case "Checkbox":
214
+ case "MultiSelect":
215
+ if (!Array.isArray(this.form[field.formKey])) {
211
216
  this.form[field.formKey] = [];
212
- break;
213
- case "Switch":
214
- this.form[field.formKey] = false;
215
- break;
216
- case "Datepicker":
217
- this.syncFormToDateForm(field, this.form[field.formKey]);
218
- break;
219
- default:
217
+ }
218
+ break;
219
+ case "Switch":
220
+ this.form[field.formKey] = !!this.form[field.formKey];
221
+ break;
222
+ case "Datepicker":
223
+ this.syncFormToDateForm(field, this.form[field.formKey]);
224
+ break;
225
+ default:
226
+ if (this.form[field.formKey] === undefined) {
220
227
  this.form[field.formKey] = null;
221
- }
228
+ }
222
229
  }
223
230
  }));
224
231
  }));
@@ -655,4 +662,4 @@ if (false) {
655
662
  */
656
663
  DrawerFormComponent.prototype.ref;
657
664
  }
658
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mb3JtL2RyYXdlci1mb3JtL2RyYXdlci1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBRVQsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3QyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUNMLFlBQVksRUFFWixpQkFBaUIsR0FFbEIsTUFBTSxhQUFhLENBQUM7O01BRWYsY0FBYyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDO0FBTy9DLE1BQU0sT0FBTyxtQkFBbUI7Ozs7SUE0QzlCLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBM0MzQixVQUFLLEdBQXdCLEVBQUUsQ0FBQztRQUM1QixjQUFTLEdBQWtCLEVBQUUsQ0FBQztRQUM1QixlQUFVLEdBQTBCLEVBQUUsQ0FBQztRQUN6QyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVuQixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBS2hCLGlCQUFZLEdBQUc7WUFDcEMsSUFBSSxFQUFFLE1BQU07WUFDWixLQUFLLEVBQUUsTUFBTTtZQUNiLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQztRQUN5QixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFFNUIsZUFBVSxHQUFHLFlBQVksQ0FBQztRQUV6QixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7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Qyx1Q0FBb0M7O0lBQ3BDLDJDQUEyQzs7SUFnVDNDLHlDQUNrRDs7SUFDbEQsMENBQWdCOztJQUNoQiw0Q0FBc0I7Ozs7O0lBalRWLGtDQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZpbHRlcmluZ0V2ZW50QXJncyB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1kcm9wZG93bnNcIjtcclxuaW1wb3J0IHsgUXVlcnkgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWRhdGFcIjtcclxuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XHJcbmltcG9ydCB7XHJcbiAgRW1haWxQYXR0ZXJuLFxyXG4gIEZpZWxkSXRlbSxcclxuICBmaWx0ZXJTaG93U2VjdGlvbixcclxuICBTZWN0aW9uSXRlbSxcclxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuXHJcbmNvbnN0IEZPUk1fUFJPWFlfVEFHID0gU3ltYm9sLmZvcihcImZvcm0tcHJveHlcIik7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJycy1kcmF3ZXItZm9ybVwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vZHJhd2VyLWZvcm0uY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vZHJhd2VyLWZvcm0uY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcmF3ZXJGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dChcImZvcm1cIikgX2Zvcm06IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICBASW5wdXQoXCJzZWN0aW9uc1wiKSBfc2VjdGlvbnM6IFNlY3Rpb25JdGVtW10gPSBbXTtcclxuICBASW5wdXQoXCJvcHRpb25zTWFwXCIpIG9wdGlvbnNNYXA6IFJlY29yZDxzdHJpbmcsIGFueVtdPiA9IHt9O1xyXG4gIEBJbnB1dChcImRpc2FibGVkXCIpIGZvcm1EaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoXCJzaG93QW5jaG9yXCIpIHNob3dBbmNob3IgPSB0cnVlO1xyXG4gIEBJbnB1dChcImN1c3RvbVRlbXBsYXRlXCIpIGN1c3RvbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBJbnB1dChcImN1c3RvbVNlY3Rpb25UZW1wbGF0ZVwiKVxyXG4gIGN1c3RvbVNlY3Rpb25UZW1wbGF0ZTogUmVjb3JkPHN0cmluZywgVGVtcGxhdGVSZWY8YW55Pj47XHJcblxyXG4gIEBJbnB1dChcIm9wdGlvbkZpZWxkc1wiKSBvcHRpb25GaWVsZHMgPSB7XHJcbiAgICB0ZXh0OiBcInRleHRcIixcclxuICAgIHZhbHVlOiBcImNvZGVcIixcclxuICAgIGRpc2FibGVkOiBcImRpc2FibGVkXCIsXHJcbiAgICBncm91cEJ5OiBudWxsLFxyXG4gIH07XHJcbiAgQElucHV0KFwic2hvd0ZpbHRlck51bWJlclwiKSBzaG93RmlsdGVyTnVtYmVyID0gMTA7XHJcbiAgQElucHV0KFwibnVtYmVyRm9ybWF0XCIpIG51bWJlckZvcm1hdDogc3RyaW5nO1xyXG4gIEBJbnB1dChcImRhdGVGb3JtYXRcIikgZGF0ZUZvcm1hdCA9IFwieXl5eS1NTS1kZFwiO1xyXG5cclxuICBAT3V0cHV0KFwiZm9ybUNoYW5nZVwiKSBmb3JtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ8c3RyaW5nLCBhbnk+PigpO1xyXG4gIEBPdXRwdXQoXCJmaWVsZENoYW5nZVwiKSBmaWVsZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgZmllbGQ6IEZpZWxkSXRlbTtcclxuICAgIHZhbHVlOiBhbnk7XHJcbiAgfT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZChcImRyYXdlckZvcm1FbFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICByb290RWw6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICAvLyDoh6rlrprkuYkgZmllbGQg5qih5p2/5ZKM6Ieq5a6a5LmJIHNlY3Rpb24g5qih5p2/55qE5a655ZmoXHJcbiAgQFZpZXdDaGlsZHJlbihcImN1c3RvbVRlbXBsYXRlQ29udGFpbmVyXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxyXG4gIHByaXZhdGUgY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+O1xyXG4gIEBWaWV3Q2hpbGRyZW4oXCJjdXN0b21TZWN0aW9uQ29udGFpbmVyXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxyXG4gIHByaXZhdGUgc2VjdGlvbkNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPjtcclxuXHJcbiAgc2VjdGlvbnM6IFNlY3Rpb25JdGVtW10gPSBbXTtcclxuICBmb3JtOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcbiAgZmllbGRWYWxpZE1hcDogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcclxuXHJcbiAgLy8g5a2Y5YKoIGRhdGVwaWNrZXIg55qE5YC8XHJcbiAgZGF0ZUZvcm06IFJlY29yZDxzdHJpbmcsIERhdGU+ID0ge307XHJcbiAgZGF0ZVZhbGlkTWFwOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMuX2Zvcm0pIHtcclxuICAgICAgaWYgKCFjaGFuZ2VzLl9mb3JtLmN1cnJlbnRWYWx1ZVtGT1JNX1BST1hZX1RBR10pIHtcclxuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmdldEZvcm1Qcm94eShjaGFuZ2VzLl9mb3JtLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgdGhpcy5mb3JtQ2hhbmdlLmVtaXQodGhpcy5mb3JtKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIWNoYW5nZXMuX2Zvcm0uZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgICB0aGlzLmNoZWNrRm9ybUNoYW5nZShcclxuICAgICAgICAgIGNoYW5nZXMuX2Zvcm0ucHJldmlvdXNWYWx1ZSxcclxuICAgICAgICAgIGNoYW5nZXMuX2Zvcm0uY3VycmVudFZhbHVlXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXMuX3NlY3Rpb25zKSB7XHJcbiAgICAgIHRoaXMuc2VjdGlvbnMgPSBmaWx0ZXJTaG93U2VjdGlvbihjaGFuZ2VzLl9zZWN0aW9ucy5jdXJyZW50VmFsdWUpO1xyXG4gICAgICB0aGlzLmZvcm1hdEZvcm0odGhpcy5zZWN0aW9ucyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmN1c3RvbVRlbXBsYXRlUmVuZGVyKHRoaXMuY29udGFpbmVycyk7XHJcbiAgICB0aGlzLmN1c3RvbVNlY3Rpb25SZW5kZXIodGhpcy5zZWN0aW9uQ29udGFpbmVycyk7XHJcbiAgICB0aGlzLmNvbnRhaW5lcnMuY2hhbmdlcy5zdWJzY3JpYmUoXHJcbiAgICAgIChjb250YWluZXJzOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj4pID0+IHtcclxuICAgICAgICB0aGlzLmNvbnRhaW5lcnMgPSBjb250YWluZXJzO1xyXG4gICAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVSZW5kZXIoY29udGFpbmVycyk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLnNlY3Rpb25Db250YWluZXJzLmNoYW5nZXMuc3Vic2NyaWJlKFxyXG4gICAgICAoY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZWN0aW9uQ29udGFpbmVycyA9IGNvbnRhaW5lcnM7XHJcbiAgICAgICAgdGhpcy5jdXN0b21TZWN0aW9uUmVuZGVyKGNvbnRhaW5lcnMpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgaWYgKHRoaXMuc2hvd0FuY2hvcikge1xyXG4gICAgICB0aGlzLmluaXRBbmNob3JTY3JvbGxIYW5kbGVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjdXN0b21UZW1wbGF0ZVJlbmRlcihjb250YWluZXJzOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj4pIHtcclxuICAgIGlmICh0aGlzLmN1c3RvbVRlbXBsYXRlICYmIGNvbnRhaW5lcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBjdXN0b21GaWVsZHMgPSBbXTtcclxuICAgICAgdGhpcy5zZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XHJcbiAgICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICAgIGlmIChmaWVsZC5maWVsZEZvcm1UeXBlID09PSBcIkN1c3RvbVwiKSB7XHJcbiAgICAgICAgICAgIGN1c3RvbUZpZWxkcy5wdXNoKGZpZWxkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnRhaW5lcnMuZm9yRWFjaCgoY29udGFpbmVyLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGNvbnRhaW5lci5jbGVhcigpO1xyXG4gICAgICAgIGNvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5jdXN0b21UZW1wbGF0ZSwge1xyXG4gICAgICAgICAgJGltcGxpY2l0OiBjdXN0b21GaWVsZHNbaW5kZXhdLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGN1c3RvbVNlY3Rpb25SZW5kZXIoY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+KSB7XHJcbiAgICBpZiAodGhpcy5jdXN0b21TZWN0aW9uVGVtcGxhdGUgJiYgY29udGFpbmVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGN1c3RvbVNlY3Rpb25zID0gdGhpcy5zZWN0aW9ucy5maWx0ZXIoXHJcbiAgICAgICAgKHNlY3Rpb24pID0+IHNlY3Rpb24uY3VzdG9tS2V5XHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnRhaW5lcnMuZm9yRWFjaCgoY29udGFpbmVyLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGNvbnRhaW5lci5jbGVhcigpO1xyXG4gICAgICAgIGNvbnN0IGN1c3RvbUtleSA9IGN1c3RvbVNlY3Rpb25zW2luZGV4XS5jdXN0b21LZXk7XHJcbiAgICAgICAgY29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLmN1c3RvbVNlY3Rpb25UZW1wbGF0ZVtjdXN0b21LZXldLCB7XHJcbiAgICAgICAgICAkaW1wbGljaXQ6IGN1c3RvbVNlY3Rpb25zW2luZGV4XSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja0Zvcm1DaGFuZ2UocHJldmlvdXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGN1cnJlbnQ6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcclxuICAgIE9iamVjdC5lbnRyaWVzKGN1cnJlbnQpLmZvckVhY2goKFtrZXksIGN1cnJlbnRWYWx1ZV0pID0+IHtcclxuICAgICAgaWYgKHByZXZpb3VzW2tleV0gIT09IGN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5nZXRGaWVsZChrZXkpO1xyXG4gICAgICAgIGlmIChmaWVsZCkge1xyXG4gICAgICAgICAgdGhpcy5mb3JtSXRlbVZhbGlkYXRvcihmaWVsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN5bmNGb3JtVG9EYXRlRm9ybShmaWVsZDogRmllbGRJdGVtLCB2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudCh2YWx1ZSk7XHJcbiAgICAgIHRoaXMuZGF0ZUZvcm1bZmllbGQuZm9ybUtleV0gPSBkYXRlLmlzVmFsaWQoKSA/IGRhdGUudG9EYXRlKCkgOiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9ybWF0Rm9ybShzZWN0aW9uczogU2VjdGlvbkl0ZW1bXSkge1xyXG4gICAgc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbjogU2VjdGlvbkl0ZW0pID0+IHtcclxuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5mb3JtW2ZpZWxkLmZvcm1LZXldID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHN3aXRjaCAoZmllbGQuZmllbGRGb3JtVHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIFwiVGV4dFwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiRW1haWxcIjpcclxuICAgICAgICAgICAgY2FzZSBcIlRleHRhcmVhXCI6XHJcbiAgICAgICAgICAgICAgdGhpcy5mb3JtW2ZpZWxkLmZvcm1LZXldID0gXCJcIjtcclxuICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgIGNhc2UgXCJUYWdzXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJDaGVja2JveFwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiTXVsdGlTZWxlY3RcIjpcclxuICAgICAgICAgICAgICB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPSBbXTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgIGNhc2UgXCJTd2l0Y2hcIjpcclxuICAgICAgICAgICAgICB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgIGNhc2UgXCJEYXRlcGlja2VyXCI6XHJcbiAgICAgICAgICAgICAgdGhpcy5zeW5jRm9ybVRvRGF0ZUZvcm0oZmllbGQsIHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XSk7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XSA9IG51bGw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rm9ybVByb3h5KGZvcm06IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcclxuICAgIC8vIOeOsOWcqOmZpOS6hiB0YWcg5LmL5aSW5LiN5pSv5oyB5bWM5aWXIGZvcm0g5bGe5oCn77yM5Y+q5a+55rWF5bGC6L+b6KGM5aSE55CGXHJcbiAgICBjb25zdCBwcm94eUZvcm0gPSBuZXcgUHJveHkoZm9ybSwge1xyXG4gICAgICBzZXQ6ICh0YXJnZXQsIHByb3A6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgIHRhcmdldFtwcm9wXSA9IHZhbHVlO1xyXG5cclxuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuZ2V0RmllbGQocHJvcCk7XHJcbiAgICAgICAgaWYgKGZpZWxkICYmIGZpZWxkLmZpZWxkRm9ybVR5cGUgPT09IFwiRGF0ZXBpY2tlclwiKSB7XHJcbiAgICAgICAgICB0aGlzLnN5bmNGb3JtVG9EYXRlRm9ybShmaWVsZCwgdmFsdWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJveHlGb3JtLCBGT1JNX1BST1hZX1RBRywge1xyXG4gICAgICB2YWx1ZTogdHJ1ZSxcclxuICAgICAgd3JpdGFibGU6IGZhbHNlLFxyXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHByb3h5Rm9ybTtcclxuICB9XHJcblxyXG4gIC8vIOihqOWNleaPkOS6pOWJjeS8muinpuWPkei/meS4quWHveaVsFxyXG4gIHVwZGF0ZUZvcm0odmFsdWU6IGFueSwgZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgdGhpcy5mb3JtW2ZpZWxkLmZvcm1LZXldID0gdmFsdWU7XHJcbiAgICB0aGlzLmZvcm1DaGFuZ2UuZW1pdCh0aGlzLmZvcm0pO1xyXG4gICAgdGhpcy5maWVsZENoYW5nZS5lbWl0KHsgZmllbGQsIHZhbHVlIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9ybUl0ZW1WYWxpZGF0b3IoZmllbGQ6IEZpZWxkSXRlbSwgaXNBdXRvID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5mb3JtW2ZpZWxkLmZvcm1LZXldO1xyXG4gICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xyXG4gICAgaWYgKGZpZWxkLnJlcXVpcmVkKSB7XHJcbiAgICAgIGlzVmFsaWQgPSBBcnJheS5pc0FycmF5KHZhbHVlKVxyXG4gICAgICAgID8gdmFsdWUubGVuZ3RoICE9PSAwXHJcbiAgICAgICAgOiAhW251bGwsIHVuZGVmaW5lZCwgXCJcIl0uaW5jbHVkZXModmFsdWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgZmllbGQuZmllbGRGb3JtVHlwZSA9PT0gXCJFbWFpbFwiICYmIHZhbHVlKSB7XHJcbiAgICAgIGlzVmFsaWQgPSBFbWFpbFBhdHRlcm4udGVzdCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiBmaWVsZC5tYXhsZW5ndGgpIHtcclxuICAgICAgaXNWYWxpZCA9IFN0cmluZyh2YWx1ZSkubGVuZ3RoIDw9IGZpZWxkLm1heGxlbmd0aDtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIGZpZWxkLm1pbmxlbmd0aCkge1xyXG4gICAgICBpc1ZhbGlkID0gU3RyaW5nKHZhbHVlKS5sZW5ndGggPj0gZmllbGQubWlubGVuZ3RoO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgZmllbGQubWF4KSB7XHJcbiAgICAgIGlzVmFsaWQgPSB2YWx1ZSA8PSBmaWVsZC5tYXg7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiBmaWVsZC5taW4pIHtcclxuICAgICAgaXNWYWxpZCA9IHZhbHVlID49IGZpZWxkLm1pbjtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIHR5cGVvZiBmaWVsZC52YWxpZGF0b3IgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICBpc1ZhbGlkID0gZmllbGQudmFsaWRhdG9yLmNhbGwobnVsbCwgdmFsdWUsIGZpZWxkKTtcclxuICAgIH1cclxuICAgIGlmICghaXNBdXRvKSB7XHJcbiAgICAgIHRoaXMuZmllbGRWYWxpZE1hcFtmaWVsZC5mb3JtS2V5XSA9IGlzVmFsaWQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNWYWxpZDtcclxuICB9XHJcblxyXG4gIHByZUNoZWNrRm9ybUlzVmFsaWQoKSB7XHJcbiAgICBsZXQgZm9ybUlzVmFsaWQgPSB0cnVlO1xyXG4gICAgdGhpcy5zZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uKSA9PlxyXG4gICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgIGZvcm1Jc1ZhbGlkID0gdGhpcy5mb3JtSXRlbVZhbGlkYXRvcihmaWVsZCkgJiYgZm9ybUlzVmFsaWQ7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIGZvcm1Jc1ZhbGlkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZvcm1Jc1ZhbGlkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VjdGlvbnMuZXZlcnkoKHNlY3Rpb24pID0+XHJcbiAgICAgIHNlY3Rpb24uZmllbGRzLmV2ZXJ5KChmaWVsZCkgPT4gdGhpcy5mb3JtSXRlbVZhbGlkYXRvcihmaWVsZCwgdHJ1ZSkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmllbGQoZm9ybUtleTogc3RyaW5nKSB7XHJcbiAgICBsZXQgZmllbGRJdGVtOiBGaWVsZEl0ZW0gPSBudWxsO1xyXG4gICAgdGhpcy5zZWN0aW9ucy5maW5kKChzZWN0aW9uKSA9PiB7XHJcbiAgICAgIGZpZWxkSXRlbSA9IHNlY3Rpb24uZmllbGRzLmZpbmQoKGZpZWxkKSA9PiBmaWVsZC5mb3JtS2V5ID09PSBmb3JtS2V5KTtcclxuICAgICAgcmV0dXJuIGZpZWxkSXRlbTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGZpZWxkSXRlbTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2FsbEZ1bmN0aW9uKGZuOiBGdW5jdGlvbiwgLi4uYXJnczogYW55W10pIHtcclxuICAgIHRoaXMuZm9ybUl0ZW1WYWxpZGF0b3IoYXJnc1sxXSB8fCBhcmdzWzBdKTtcclxuICAgIGlmICh0eXBlb2YgZm4gPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICBmbi5hcHBseShudWxsLCBhcmdzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uSW5wdXQodmFsdWU6IHN0cmluZywgZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgdGhpcy5jYWxsRnVuY3Rpb24oZmllbGQub25JbnB1dCwgdmFsdWUsIGZpZWxkKTtcclxuICB9XHJcblxyXG4gIG9uQ29tcG9uZW50Q2hhbmdlKGV2ZW50OiBhbnksIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIGlmICghZXZlbnQuaXNJbnRlcmFjdGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChmaWVsZC5maWVsZEZvcm1UeXBlICE9PSBcIkRhdGVwaWNrZXJcIikge1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKGV2ZW50LnZhbHVlLCBmaWVsZCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKFwiY2hhbmdlXCIsIGV2ZW50KTtcclxuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudmFsdWUgPyBtb21lbnQoZXZlbnQudmFsdWUpLmZvcm1hdChcIllZWVktTU0tRERcIikgOiBudWxsO1xyXG4gICAgdGhpcy5kYXRlRm9ybVtmaWVsZC5mb3JtS2V5XSA9IGV2ZW50LnZhbHVlO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSwgZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2UodmFsdWU6IGFueSwgZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgdGhpcy51cGRhdGVGb3JtKHZhbHVlLCBmaWVsZCk7XHJcbiAgICB0aGlzLmNhbGxGdW5jdGlvbihmaWVsZC5vbkNoYW5nZSwgdmFsdWUsIGZpZWxkKTtcclxuICB9XHJcblxyXG4gIG9uRGF0ZVBpY2tlckJsdXIoZXZlbnQ6IGFueSwgZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgdGhpcy5vbkJsdXIoZmllbGQpO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCAkaW5wdXQgPSBldmVudC5tb2RlbC5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKTtcclxuICAgICAgaWYgKCRpbnB1dCAmJiAkaW5wdXQudmFsdWUgJiYgIXRoaXMuZGF0ZUZvcm1bZmllbGQuZm9ybUtleV0pIHtcclxuICAgICAgICB0aGlzLmRhdGVWYWxpZE1hcFtmaWVsZC5mb3JtS2V5XSA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLmRhdGVWYWxpZE1hcFtmaWVsZC5mb3JtS2V5XTtcclxuICAgICAgfVxyXG4gICAgfSwgNTApO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cyhmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICB0aGlzLmNhbGxGdW5jdGlvbihmaWVsZC5vbkZvY3VzLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgdGhpcy5jYWxsRnVuY3Rpb24oZmllbGQub25CbHVyLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkZpbHRlcmluZyhldmVudDogRmlsdGVyaW5nRXZlbnRBcmdzLCBmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBjb25zdCBxdWVyeSA9IG5ldyBRdWVyeSgpO1xyXG4gICAgaWYgKGV2ZW50LnRleHQpIHtcclxuICAgICAgcXVlcnkud2hlcmUodGhpcy5vcHRpb25GaWVsZHMudGV4dCwgXCJjb250YWluc1wiLCBldmVudC50ZXh0LCB0cnVlKTtcclxuICAgIH1cclxuICAgIGV2ZW50LnVwZGF0ZURhdGEodGhpcy5nZXRPcHRpb25zKGZpZWxkKSwgcXVlcnkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3B0aW9ucyhmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLm9wdGlvbnNNYXBbZmllbGQub3B0aW9uS2V5XSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMub3B0aW9uc01hcFtmaWVsZC5vcHRpb25LZXldO1xyXG4gICAgfVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5vcHRpb25zTWFwW2ZpZWxkLmZvcm1LZXldKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zTWFwW2ZpZWxkLmZvcm1LZXldO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGlzYWJsZWQoZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgaWYgKHRoaXMuZm9ybURpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBmaWVsZC5kaXNhYmxlZCA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgIHJldHVybiBmaWVsZC5kaXNhYmxlZCgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZpZWxkLmRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3B0aW9uRmllbGRzKGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIGlmIChbXCJEcm9wZG93blwiLCBcIkF1dG9Db21wbGV0ZVwiXS5pbmNsdWRlcyhmaWVsZC5maWVsZEZvcm1UeXBlKSkge1xyXG4gICAgICByZXR1cm4geyAuLi50aGlzLm9wdGlvbkZpZWxkcywgZ3JvdXBCeTogZmllbGQuZ3JvdXBLZXkgfHwgbnVsbCB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9uRmllbGRzO1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZHJlbihcInNlY3Rpb25FbFwiKVxyXG4gIHNlY3Rpb25FbHM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj47XHJcbiAgc2Nyb2xsSW5kZXggPSAwO1xyXG4gIGlzQ2xpY2tBbmNob3IgPSBmYWxzZTtcclxuXHJcbiAgb25DbGlja0FuY2hvcihpbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBzZWN0aW9uSXRlbXMgPSB0aGlzLnNlY3Rpb25FbHMudG9BcnJheSgpO1xyXG4gICAgc2VjdGlvbkl0ZW1zW2luZGV4XS5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHRydWUpO1xyXG4gICAgdGhpcy5zY3JvbGxJbmRleCA9IGluZGV4O1xyXG4gICAgdGhpcy5pc0NsaWNrQW5jaG9yID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGZpbmRTY3JvbGxWaWV3RWwoZWw6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQge1xyXG4gICAgaWYgKGVsID09PSBkb2N1bWVudC5ib2R5KSB7XHJcbiAgICAgIHJldHVybiBlbDtcclxuICAgIH1cclxuICAgIGlmIChlbC5zY3JvbGxIZWlnaHQgJiYgZWwuc2Nyb2xsSGVpZ2h0ICE9PSBlbC5vZmZzZXRIZWlnaHQpIHtcclxuICAgICAgcmV0dXJuIGVsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZmluZFNjcm9sbFZpZXdFbChlbC5wYXJlbnRFbGVtZW50KTtcclxuICB9XHJcblxyXG4gIGluaXRBbmNob3JTY3JvbGxIYW5kbGVyKCkge1xyXG4gICAgY29uc3Qgc2Nyb2xsVmlld0VsID0gdGhpcy5maW5kU2Nyb2xsVmlld0VsKHRoaXMucm9vdEVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgY29uc3Qgc2Nyb2xsSGVpZ2h0ID0gc2Nyb2xsVmlld0VsLnNjcm9sbEhlaWdodCAtIHNjcm9sbFZpZXdFbC5vZmZzZXRIZWlnaHQ7XHJcbiAgICBjb25zdCBzZWN0aW9uVmlld1JhdGlvID0gdGhpcy5zZWN0aW9uRWxzLnRvQXJyYXkoKS5tYXAoKHNlY3Rpb24pID0+IHtcclxuICAgICAgY29uc3QgcmF0aW8gPVxyXG4gICAgICAgIHNlY3Rpb24ubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgLyBzY3JvbGxWaWV3RWwuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgICByZXR1cm4gc2Nyb2xsSGVpZ2h0ICogcmF0aW87XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBvblNjcm9sbCA9ICgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuaXNDbGlja0FuY2hvcikge1xyXG4gICAgICAgIHRoaXMuaXNDbGlja0FuY2hvciA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBzY3JvbGxUb3AgPVxyXG4gICAgICAgIHNjcm9sbFZpZXdFbC5zY3JvbGxUb3AgPiBzY3JvbGxIZWlnaHRcclxuICAgICAgICAgID8gc2Nyb2xsSGVpZ2h0XHJcbiAgICAgICAgICA6IHNjcm9sbFZpZXdFbC5zY3JvbGxUb3A7XHJcbiAgICAgIGxldCByYWRpb1Njcm9sbEhlaWdodCA9IDA7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBzZWN0aW9uVmlld1JhdGlvLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIHJhZGlvU2Nyb2xsSGVpZ2h0ICs9IHNlY3Rpb25WaWV3UmF0aW9baW5kZXhdO1xyXG4gICAgICAgIGlmIChyYWRpb1Njcm9sbEhlaWdodCA+PSBzY3JvbGxUb3ApIHtcclxuICAgICAgICAgIHRoaXMuc2Nyb2xsSW5kZXggPSBpbmRleDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB3aGlsZSAoXHJcbiAgICAgICAgdGhpcy5zZWN0aW9uc1t0aGlzLnNjcm9sbEluZGV4XSAmJlxyXG4gICAgICAgICF0aGlzLnNlY3Rpb25zW3RoaXMuc2Nyb2xsSW5kZXhdLnRpdGxlXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2Nyb2xsSW5kZXgrKztcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH07XHJcblxyXG4gICAgb25TY3JvbGwoKTtcclxuICAgIHNjcm9sbFZpZXdFbC5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIG9uU2Nyb2xsKTtcclxuICB9XHJcbn1cclxuIl19
665
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mb3JtL2RyYXdlci1mb3JtL2RyYXdlci1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBRVQsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3QyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUNMLFlBQVksRUFFWixpQkFBaUIsR0FFbEIsTUFBTSxhQUFhLENBQUM7O01BRWYsY0FBYyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDO0FBTy9DLE1BQU0sT0FBTyxtQkFBbUI7Ozs7SUE0QzlCLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBM0MzQixVQUFLLEdBQXdCLEVBQUUsQ0FBQztRQUM1QixjQUFTLEdBQWtCLEVBQUUsQ0FBQztRQUM1QixlQUFVLEdBQTBCLEVBQUUsQ0FBQztRQUN6QyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVuQixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBS2hCLGlCQUFZLEdBQUc7WUFDcEMsSUFBSSxFQUFFLE1BQU07WUFDWixLQUFLLEVBQUUsTUFBTTtZQUNiLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQztRQUN5QixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFFNUIsZUFBVSxHQUFHLFlBQVksQ0FBQztRQUV6QixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7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LFdBQVc7Ozs7SUEvVnpCLG9DQUErQzs7SUFDL0Msd0NBQWlEOztJQUNqRCx5Q0FBNEQ7O0lBQzVELDJDQUF3Qzs7SUFFeEMseUNBQXVDOztJQUN2Qyw2Q0FBMEQ7O0lBQzFELG9EQUN3RDs7SUFFeEQsMkNBS0U7O0lBQ0YsK0NBQWlEOztJQUNqRCwyQ0FBNEM7O0lBQzVDLHlDQUErQzs7SUFFL0MseUNBQTJFOztJQUMzRSwwQ0FHSzs7SUFFTCxxQ0FDbUM7Ozs7O0lBR25DLHlDQUNnRDs7Ozs7SUFDaEQsZ0RBQ3VEOztJQUV2RCx1Q0FBNkI7O0lBQzdCLG1DQUErQjs7SUFDL0IsNENBQTRDOztJQUc1Qyx1Q0FBb0M7O0lBQ3BDLDJDQUEyQzs7SUFzVDNDLHlDQUNrRDs7SUFDbEQsMENBQWdCOztJQUNoQiw0Q0FBc0I7Ozs7O0lBdlRWLGtDQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZpbHRlcmluZ0V2ZW50QXJncyB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1kcm9wZG93bnNcIjtcclxuaW1wb3J0IHsgUXVlcnkgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWRhdGFcIjtcclxuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XHJcbmltcG9ydCB7XHJcbiAgRW1haWxQYXR0ZXJuLFxyXG4gIEZpZWxkSXRlbSxcclxuICBmaWx0ZXJTaG93U2VjdGlvbixcclxuICBTZWN0aW9uSXRlbSxcclxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuXHJcbmNvbnN0IEZPUk1fUFJPWFlfVEFHID0gU3ltYm9sLmZvcihcImZvcm0tcHJveHlcIik7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJycy1kcmF3ZXItZm9ybVwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vZHJhd2VyLWZvcm0uY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vZHJhd2VyLWZvcm0uY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcmF3ZXJGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dChcImZvcm1cIikgX2Zvcm06IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICBASW5wdXQoXCJzZWN0aW9uc1wiKSBfc2VjdGlvbnM6IFNlY3Rpb25JdGVtW10gPSBbXTtcclxuICBASW5wdXQoXCJvcHRpb25zTWFwXCIpIG9wdGlvbnNNYXA6IFJlY29yZDxzdHJpbmcsIGFueVtdPiA9IHt9O1xyXG4gIEBJbnB1dChcImRpc2FibGVkXCIpIGZvcm1EaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoXCJzaG93QW5jaG9yXCIpIHNob3dBbmNob3IgPSB0cnVlO1xyXG4gIEBJbnB1dChcImN1c3RvbVRlbXBsYXRlXCIpIGN1c3RvbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBJbnB1dChcImN1c3RvbVNlY3Rpb25UZW1wbGF0ZVwiKVxyXG4gIGN1c3RvbVNlY3Rpb25UZW1wbGF0ZTogUmVjb3JkPHN0cmluZywgVGVtcGxhdGVSZWY8YW55Pj47XHJcblxyXG4gIEBJbnB1dChcIm9wdGlvbkZpZWxkc1wiKSBvcHRpb25GaWVsZHMgPSB7XHJcbiAgICB0ZXh0OiBcInRleHRcIixcclxuICAgIHZhbHVlOiBcImNvZGVcIixcclxuICAgIGRpc2FibGVkOiBcImRpc2FibGVkXCIsXHJcbiAgICBncm91cEJ5OiBudWxsLFxyXG4gIH07XHJcbiAgQElucHV0KFwic2hvd0ZpbHRlck51bWJlclwiKSBzaG93RmlsdGVyTnVtYmVyID0gMTA7XHJcbiAgQElucHV0KFwibnVtYmVyRm9ybWF0XCIpIG51bWJlckZvcm1hdDogc3RyaW5nO1xyXG4gIEBJbnB1dChcImRhdGVGb3JtYXRcIikgZGF0ZUZvcm1hdCA9IFwieXl5eS1NTS1kZFwiO1xyXG5cclxuICBAT3V0cHV0KFwiZm9ybUNoYW5nZVwiKSBmb3JtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ8c3RyaW5nLCBhbnk+PigpO1xyXG4gIEBPdXRwdXQoXCJmaWVsZENoYW5nZVwiKSBmaWVsZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgZmllbGQ6IEZpZWxkSXRlbTtcclxuICAgIHZhbHVlOiBhbnk7XHJcbiAgfT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZChcImRyYXdlckZvcm1FbFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICByb290RWw6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICAvLyDoh6rlrprkuYkgZmllbGQg5qih5p2/5ZKM6Ieq5a6a5LmJIHNlY3Rpb24g5qih5p2/55qE5a655ZmoXHJcbiAgQFZpZXdDaGlsZHJlbihcImN1c3RvbVRlbXBsYXRlQ29udGFpbmVyXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxyXG4gIHByaXZhdGUgY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+O1xyXG4gIEBWaWV3Q2hpbGRyZW4oXCJjdXN0b21TZWN0aW9uQ29udGFpbmVyXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxyXG4gIHByaXZhdGUgc2VjdGlvbkNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPjtcclxuXHJcbiAgc2VjdGlvbnM6IFNlY3Rpb25JdGVtW10gPSBbXTtcclxuICBmb3JtOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcbiAgZmllbGRWYWxpZE1hcDogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcclxuXHJcbiAgLy8g5a2Y5YKoIGRhdGVwaWNrZXIg55qE5YC8XHJcbiAgZGF0ZUZvcm06IFJlY29yZDxzdHJpbmcsIERhdGU+ID0ge307XHJcbiAgZGF0ZVZhbGlkTWFwOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMuX2Zvcm0pIHtcclxuICAgICAgaWYgKCFjaGFuZ2VzLl9mb3JtLmN1cnJlbnRWYWx1ZVtGT1JNX1BST1hZX1RBR10pIHtcclxuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmdldEZvcm1Qcm94eShjaGFuZ2VzLl9mb3JtLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgdGhpcy5mb3JtQ2hhbmdlLmVtaXQodGhpcy5mb3JtKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIWNoYW5nZXMuX2Zvcm0uZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgICB0aGlzLmNoZWNrRm9ybUNoYW5nZShcclxuICAgICAgICAgIGNoYW5nZXMuX2Zvcm0ucHJldmlvdXNWYWx1ZSxcclxuICAgICAgICAgIGNoYW5nZXMuX2Zvcm0uY3VycmVudFZhbHVlXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXMuX3NlY3Rpb25zKSB7XHJcbiAgICAgIHRoaXMuc2VjdGlvbnMgPSBmaWx0ZXJTaG93U2VjdGlvbihjaGFuZ2VzLl9zZWN0aW9ucy5jdXJyZW50VmFsdWUpO1xyXG4gICAgICB0aGlzLmZvcm1hdEZvcm0odGhpcy5zZWN0aW9ucyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmN1c3RvbVRlbXBsYXRlUmVuZGVyKHRoaXMuY29udGFpbmVycyk7XHJcbiAgICB0aGlzLmN1c3RvbVNlY3Rpb25SZW5kZXIodGhpcy5zZWN0aW9uQ29udGFpbmVycyk7XHJcbiAgICB0aGlzLmNvbnRhaW5lcnMuY2hhbmdlcy5zdWJzY3JpYmUoXHJcbiAgICAgIChjb250YWluZXJzOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj4pID0+IHtcclxuICAgICAgICB0aGlzLmNvbnRhaW5lcnMgPSBjb250YWluZXJzO1xyXG4gICAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVSZW5kZXIoY29udGFpbmVycyk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLnNlY3Rpb25Db250YWluZXJzLmNoYW5nZXMuc3Vic2NyaWJlKFxyXG4gICAgICAoY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZWN0aW9uQ29udGFpbmVycyA9IGNvbnRhaW5lcnM7XHJcbiAgICAgICAgdGhpcy5jdXN0b21TZWN0aW9uUmVuZGVyKGNvbnRhaW5lcnMpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgaWYgKHRoaXMuc2hvd0FuY2hvcikge1xyXG4gICAgICB0aGlzLmluaXRBbmNob3JTY3JvbGxIYW5kbGVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjdXN0b21UZW1wbGF0ZVJlbmRlcihjb250YWluZXJzOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj4pIHtcclxuICAgIGlmICh0aGlzLmN1c3RvbVRlbXBsYXRlICYmIGNvbnRhaW5lcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBjdXN0b21GaWVsZHMgPSBbXTtcclxuICAgICAgdGhpcy5zZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XHJcbiAgICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICAgIGlmIChmaWVsZC5maWVsZEZvcm1UeXBlID09PSBcIkN1c3RvbVwiKSB7XHJcbiAgICAgICAgICAgIGN1c3RvbUZpZWxkcy5wdXNoKGZpZWxkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnRhaW5lcnMuZm9yRWFjaCgoY29udGFpbmVyLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGNvbnRhaW5lci5jbGVhcigpO1xyXG4gICAgICAgIGNvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5jdXN0b21UZW1wbGF0ZSwge1xyXG4gICAgICAgICAgJGltcGxpY2l0OiBjdXN0b21GaWVsZHNbaW5kZXhdLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGN1c3RvbVNlY3Rpb25SZW5kZXIoY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+KSB7XHJcbiAgICBpZiAodGhpcy5jdXN0b21TZWN0aW9uVGVtcGxhdGUgJiYgY29udGFpbmVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGN1c3RvbVNlY3Rpb25zID0gdGhpcy5zZWN0aW9ucy5maWx0ZXIoXHJcbiAgICAgICAgKHNlY3Rpb24pID0+IHNlY3Rpb24uY3VzdG9tS2V5XHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnRhaW5lcnMuZm9yRWFjaCgoY29udGFpbmVyLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGNvbnRhaW5lci5jbGVhcigpO1xyXG4gICAgICAgIGNvbnN0IGN1c3RvbUtleSA9IGN1c3RvbVNlY3Rpb25zW2luZGV4XS5jdXN0b21LZXk7XHJcbiAgICAgICAgY29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLmN1c3RvbVNlY3Rpb25UZW1wbGF0ZVtjdXN0b21LZXldLCB7XHJcbiAgICAgICAgICAkaW1wbGljaXQ6IGN1c3RvbVNlY3Rpb25zW2luZGV4XSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja0Zvcm1DaGFuZ2UocHJldmlvdXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGN1cnJlbnQ6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcclxuICAgIE9iamVjdC5lbnRyaWVzKGN1cnJlbnQpLmZvckVhY2goKFtrZXksIGN1cnJlbnRWYWx1ZV0pID0+IHtcclxuICAgICAgaWYgKHByZXZpb3VzW2tleV0gIT09IGN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5nZXRGaWVsZChrZXkpO1xyXG4gICAgICAgIGlmIChmaWVsZCkge1xyXG4gICAgICAgICAgdGhpcy5mb3JtSXRlbVZhbGlkYXRvcihmaWVsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN5bmNGb3JtVG9EYXRlRm9ybShmaWVsZDogRmllbGRJdGVtLCB2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudCh2YWx1ZSk7XHJcbiAgICAgIHRoaXMuZGF0ZUZvcm1bZmllbGQuZm9ybUtleV0gPSBkYXRlLmlzVmFsaWQoKSA/IGRhdGUudG9EYXRlKCkgOiBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kYXRlRm9ybVtmaWVsZC5mb3JtS2V5XSA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb3JtYXRGb3JtKHNlY3Rpb25zOiBTZWN0aW9uSXRlbVtdKSB7XHJcbiAgICBzZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uOiBTZWN0aW9uSXRlbSkgPT4ge1xyXG4gICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAoZmllbGQuZmllbGRGb3JtVHlwZSkge1xyXG4gICAgICAgICAgY2FzZSBcIlRleHRcIjpcclxuICAgICAgICAgIGNhc2UgXCJFbWFpbFwiOlxyXG4gICAgICAgICAgY2FzZSBcIlRleHRhcmVhXCI6XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XSA9IFwiXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBcIlRhZ3NcIjpcclxuICAgICAgICAgIGNhc2UgXCJDaGVja2JveFwiOlxyXG4gICAgICAgICAgY2FzZSBcIk11bHRpU2VsZWN0XCI6XHJcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0pKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5mb3JtW2ZpZWxkLmZvcm1LZXldID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBcIlN3aXRjaFwiOlxyXG4gICAgICAgICAgICB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPSAhIXRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBcIkRhdGVwaWNrZXJcIjpcclxuICAgICAgICAgICAgdGhpcy5zeW5jRm9ybVRvRGF0ZUZvcm0oZmllbGQsIHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRGb3JtUHJveHkoZm9ybTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG4gICAgLy8g546w5Zyo6Zmk5LqGIHRhZyDkuYvlpJbkuI3mlK/mjIHltYzlpZcgZm9ybSDlsZ7mgKfvvIzlj6rlr7nmtYXlsYLov5vooYzlpITnkIZcclxuICAgIGNvbnN0IHByb3h5Rm9ybSA9IG5ldyBQcm94eShmb3JtLCB7XHJcbiAgICAgIHNldDogKHRhcmdldCwgcHJvcDogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgdGFyZ2V0W3Byb3BdID0gdmFsdWU7XHJcblxyXG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5nZXRGaWVsZChwcm9wKTtcclxuICAgICAgICBpZiAoZmllbGQgJiYgZmllbGQuZmllbGRGb3JtVHlwZSA9PT0gXCJEYXRlcGlja2VyXCIpIHtcclxuICAgICAgICAgIHRoaXMuc3luY0Zvcm1Ub0RhdGVGb3JtKGZpZWxkLCB2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG5cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm94eUZvcm0sIEZPUk1fUFJPWFlfVEFHLCB7XHJcbiAgICAgIHZhbHVlOiB0cnVlLFxyXG4gICAgICB3cml0YWJsZTogZmFsc2UsXHJcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcHJveHlGb3JtO1xyXG4gIH1cclxuXHJcbiAgLy8g6KGo5Y2V5o+Q5Lqk5YmN5Lya6Kem5Y+R6L+Z5Liq5Ye95pWwXHJcbiAgdXBkYXRlRm9ybSh2YWx1ZTogYW55LCBmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPSB2YWx1ZTtcclxuICAgIHRoaXMuZm9ybUNoYW5nZS5lbWl0KHRoaXMuZm9ybSk7XHJcbiAgICB0aGlzLmZpZWxkQ2hhbmdlLmVtaXQoeyBmaWVsZCwgdmFsdWUgfSk7XHJcbiAgfVxyXG5cclxuICBmb3JtSXRlbVZhbGlkYXRvcihmaWVsZDogRmllbGRJdGVtLCBpc0F1dG8gPSBmYWxzZSkge1xyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV07XHJcbiAgICBsZXQgaXNWYWxpZCA9IHRydWU7XHJcbiAgICBpZiAoZmllbGQucmVxdWlyZWQpIHtcclxuICAgICAgaXNWYWxpZCA9IEFycmF5LmlzQXJyYXkodmFsdWUpXHJcbiAgICAgICAgPyB2YWx1ZS5sZW5ndGggIT09IDBcclxuICAgICAgICA6ICFbbnVsbCwgdW5kZWZpbmVkLCBcIlwiXS5pbmNsdWRlcyh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiBmaWVsZC5maWVsZEZvcm1UeXBlID09PSBcIkVtYWlsXCIgJiYgdmFsdWUpIHtcclxuICAgICAgaXNWYWxpZCA9IEVtYWlsUGF0dGVybi50ZXN0KHZhbHVlKTtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIGZpZWxkLm1heGxlbmd0aCkge1xyXG4gICAgICBpc1ZhbGlkID0gU3RyaW5nKHZhbHVlKS5sZW5ndGggPD0gZmllbGQubWF4bGVuZ3RoO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgZmllbGQubWlubGVuZ3RoKSB7XHJcbiAgICAgIGlzVmFsaWQgPSBTdHJpbmcodmFsdWUpLmxlbmd0aCA+PSBmaWVsZC5taW5sZW5ndGg7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiBmaWVsZC5tYXgpIHtcclxuICAgICAgaXNWYWxpZCA9IHZhbHVlIDw9IGZpZWxkLm1heDtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIGZpZWxkLm1pbikge1xyXG4gICAgICBpc1ZhbGlkID0gdmFsdWUgPj0gZmllbGQubWluO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgdHlwZW9mIGZpZWxkLnZhbGlkYXRvciA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgIGlzVmFsaWQgPSBmaWVsZC52YWxpZGF0b3IuY2FsbChudWxsLCB2YWx1ZSwgZmllbGQpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpc0F1dG8pIHtcclxuICAgICAgdGhpcy5maWVsZFZhbGlkTWFwW2ZpZWxkLmZvcm1LZXldID0gaXNWYWxpZDtcclxuICAgIH1cclxuICAgIHJldHVybiBpc1ZhbGlkO1xyXG4gIH1cclxuXHJcbiAgcHJlQ2hlY2tGb3JtSXNWYWxpZCgpIHtcclxuICAgIGxldCBmb3JtSXNWYWxpZCA9IHRydWU7XHJcbiAgICB0aGlzLnNlY3Rpb25zLmZvckVhY2goKHNlY3Rpb24pID0+XHJcbiAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgZm9ybUlzVmFsaWQgPSB0aGlzLmZvcm1JdGVtVmFsaWRhdG9yKGZpZWxkKSAmJiBmb3JtSXNWYWxpZDtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICByZXR1cm4gZm9ybUlzVmFsaWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgZm9ybUlzVmFsaWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWN0aW9ucy5ldmVyeSgoc2VjdGlvbikgPT5cclxuICAgICAgc2VjdGlvbi5maWVsZHMuZXZlcnkoKGZpZWxkKSA9PiB0aGlzLmZvcm1JdGVtVmFsaWRhdG9yKGZpZWxkLCB0cnVlKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaWVsZChmb3JtS2V5OiBzdHJpbmcpIHtcclxuICAgIGxldCBmaWVsZEl0ZW06IEZpZWxkSXRlbSA9IG51bGw7XHJcbiAgICB0aGlzLnNlY3Rpb25zLmZpbmQoKHNlY3Rpb24pID0+IHtcclxuICAgICAgZmllbGRJdGVtID0gc2VjdGlvbi5maWVsZHMuZmluZCgoZmllbGQpID0+IGZpZWxkLmZvcm1LZXkgPT09IGZvcm1LZXkpO1xyXG4gICAgICByZXR1cm4gZmllbGRJdGVtO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZmllbGRJdGVtO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYWxsRnVuY3Rpb24oZm46IEZ1bmN0aW9uLCAuLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgdGhpcy5mb3JtSXRlbVZhbGlkYXRvcihhcmdzWzFdIHx8IGFyZ3NbMF0pO1xyXG4gICAgaWYgKHR5cGVvZiBmbiA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgIGZuLmFwcGx5KG51bGwsIGFyZ3MpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25JbnB1dCh2YWx1ZTogc3RyaW5nLCBmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICB0aGlzLmNhbGxGdW5jdGlvbihmaWVsZC5vbklucHV0LCB2YWx1ZSwgZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgb25Db21wb25lbnRDaGFuZ2UoZXZlbnQ6IGFueSwgZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgaWYgKCFldmVudC5pc0ludGVyYWN0ZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGZpZWxkLmZpZWxkRm9ybVR5cGUgIT09IFwiRGF0ZXBpY2tlclwiKSB7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UoZXZlbnQudmFsdWUsIGZpZWxkKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2coXCJjaGFuZ2VcIiwgZXZlbnQpO1xyXG4gICAgY29uc3QgdmFsdWUgPSBldmVudC52YWx1ZSA/IG1vbWVudChldmVudC52YWx1ZSkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKSA6IG51bGw7XHJcbiAgICB0aGlzLmRhdGVGb3JtW2ZpZWxkLmZvcm1LZXldID0gZXZlbnQudmFsdWU7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZSh2YWx1ZTogYW55LCBmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICB0aGlzLnVwZGF0ZUZvcm0odmFsdWUsIGZpZWxkKTtcclxuICAgIHRoaXMuY2FsbEZ1bmN0aW9uKGZpZWxkLm9uQ2hhbmdlLCB2YWx1ZSwgZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgb25EYXRlUGlja2VyQmx1cihldmVudDogYW55LCBmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICB0aGlzLm9uQmx1cihmaWVsZCk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0ICRpbnB1dCA9IGV2ZW50Lm1vZGVsLmVsZW1lbnQucXVlcnlTZWxlY3RvcihcImlucHV0XCIpO1xyXG4gICAgICBpZiAoJGlucHV0ICYmICRpbnB1dC52YWx1ZSAmJiAhdGhpcy5kYXRlRm9ybVtmaWVsZC5mb3JtS2V5XSkge1xyXG4gICAgICAgIHRoaXMuZGF0ZVZhbGlkTWFwW2ZpZWxkLmZvcm1LZXldID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZGVsZXRlIHRoaXMuZGF0ZVZhbGlkTWFwW2ZpZWxkLmZvcm1LZXldO1xyXG4gICAgICB9XHJcbiAgICB9LCA1MCk7XHJcbiAgfVxyXG5cclxuICBvbkZvY3VzKGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMuY2FsbEZ1bmN0aW9uKGZpZWxkLm9uRm9jdXMsIGZpZWxkKTtcclxuICB9XHJcblxyXG4gIG9uQmx1cihmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICB0aGlzLmNhbGxGdW5jdGlvbihmaWVsZC5vbkJsdXIsIGZpZWxkKTtcclxuICB9XHJcblxyXG4gIG9uRmlsdGVyaW5nKGV2ZW50OiBGaWx0ZXJpbmdFdmVudEFyZ3MsIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIGNvbnN0IHF1ZXJ5ID0gbmV3IFF1ZXJ5KCk7XHJcbiAgICBpZiAoZXZlbnQudGV4dCkge1xyXG4gICAgICBxdWVyeS53aGVyZSh0aGlzLm9wdGlvbkZpZWxkcy50ZXh0LCBcImNvbnRhaW5zXCIsIGV2ZW50LnRleHQsIHRydWUpO1xyXG4gICAgfVxyXG4gICAgZXZlbnQudXBkYXRlRGF0YSh0aGlzLmdldE9wdGlvbnMoZmllbGQpLCBxdWVyeSk7XHJcbiAgfVxyXG5cclxuICBnZXRPcHRpb25zKGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMub3B0aW9uc01hcFtmaWVsZC5vcHRpb25LZXldKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zTWFwW2ZpZWxkLm9wdGlvbktleV07XHJcbiAgICB9XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLm9wdGlvbnNNYXBbZmllbGQuZm9ybUtleV0pKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNNYXBbZmllbGQuZm9ybUtleV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG5cclxuICBnZXREaXNhYmxlZChmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtRGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIGZpZWxkLmRpc2FibGVkID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgcmV0dXJuIGZpZWxkLmRpc2FibGVkKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmllbGQuZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBnZXRPcHRpb25GaWVsZHMoZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgaWYgKFtcIkRyb3Bkb3duXCIsIFwiQXV0b0NvbXBsZXRlXCJdLmluY2x1ZGVzKGZpZWxkLmZpZWxkRm9ybVR5cGUpKSB7XHJcbiAgICAgIHJldHVybiB7IC4uLnRoaXMub3B0aW9uRmllbGRzLCBncm91cEJ5OiBmaWVsZC5ncm91cEtleSB8fCBudWxsIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25GaWVsZHM7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkcmVuKFwic2VjdGlvbkVsXCIpXHJcbiAgc2VjdGlvbkVsczogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PjtcclxuICBzY3JvbGxJbmRleCA9IDA7XHJcbiAgaXNDbGlja0FuY2hvciA9IGZhbHNlO1xyXG5cclxuICBvbkNsaWNrQW5jaG9yKGluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHNlY3Rpb25JdGVtcyA9IHRoaXMuc2VjdGlvbkVscy50b0FycmF5KCk7XHJcbiAgICBzZWN0aW9uSXRlbXNbaW5kZXhdLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcodHJ1ZSk7XHJcbiAgICB0aGlzLnNjcm9sbEluZGV4ID0gaW5kZXg7XHJcbiAgICB0aGlzLmlzQ2xpY2tBbmNob3IgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZmluZFNjcm9sbFZpZXdFbChlbDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XHJcbiAgICBpZiAoZWwgPT09IGRvY3VtZW50LmJvZHkpIHtcclxuICAgICAgcmV0dXJuIGVsO1xyXG4gICAgfVxyXG4gICAgaWYgKGVsLnNjcm9sbEhlaWdodCAmJiBlbC5zY3JvbGxIZWlnaHQgIT09IGVsLm9mZnNldEhlaWdodCkge1xyXG4gICAgICByZXR1cm4gZWw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5maW5kU2Nyb2xsVmlld0VsKGVsLnBhcmVudEVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgaW5pdEFuY2hvclNjcm9sbEhhbmRsZXIoKSB7XHJcbiAgICBjb25zdCBzY3JvbGxWaWV3RWwgPSB0aGlzLmZpbmRTY3JvbGxWaWV3RWwodGhpcy5yb290RWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICBjb25zdCBzY3JvbGxIZWlnaHQgPSBzY3JvbGxWaWV3RWwuc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVmlld0VsLm9mZnNldEhlaWdodDtcclxuICAgIGNvbnN0IHNlY3Rpb25WaWV3UmF0aW8gPSB0aGlzLnNlY3Rpb25FbHMudG9BcnJheSgpLm1hcCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBjb25zdCByYXRpbyA9XHJcbiAgICAgICAgc2VjdGlvbi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAvIHNjcm9sbFZpZXdFbC5zY3JvbGxIZWlnaHQ7XHJcbiAgICAgIHJldHVybiBzY3JvbGxIZWlnaHQgKiByYXRpbztcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IG9uU2Nyb2xsID0gKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5pc0NsaWNrQW5jaG9yKSB7XHJcbiAgICAgICAgdGhpcy5pc0NsaWNrQW5jaG9yID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9XHJcbiAgICAgICAgc2Nyb2xsVmlld0VsLnNjcm9sbFRvcCA+IHNjcm9sbEhlaWdodFxyXG4gICAgICAgICAgPyBzY3JvbGxIZWlnaHRcclxuICAgICAgICAgIDogc2Nyb2xsVmlld0VsLnNjcm9sbFRvcDtcclxuICAgICAgbGV0IHJhZGlvU2Nyb2xsSGVpZ2h0ID0gMDtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHNlY3Rpb25WaWV3UmF0aW8ubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgcmFkaW9TY3JvbGxIZWlnaHQgKz0gc2VjdGlvblZpZXdSYXRpb1tpbmRleF07XHJcbiAgICAgICAgaWYgKHJhZGlvU2Nyb2xsSGVpZ2h0ID49IHNjcm9sbFRvcCkge1xyXG4gICAgICAgICAgdGhpcy5zY3JvbGxJbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHdoaWxlIChcclxuICAgICAgICB0aGlzLnNlY3Rpb25zW3RoaXMuc2Nyb2xsSW5kZXhdICYmXHJcbiAgICAgICAgIXRoaXMuc2VjdGlvbnNbdGhpcy5zY3JvbGxJbmRleF0udGl0bGVcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxJbmRleCsrO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfTtcclxuXHJcbiAgICBvblNjcm9sbCgpO1xyXG4gICAgc2Nyb2xsVmlld0VsLmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgb25TY3JvbGwpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -213,6 +213,9 @@ var DrawerFormComponent = /** @class */ (function () {
213
213
  var date = moment(value);
214
214
  this.dateForm[field.formKey] = date.isValid() ? date.toDate() : null;
215
215
  }
216
+ else {
217
+ this.dateForm[field.formKey] = null;
218
+ }
216
219
  };
217
220
  /**
218
221
  * @param {?} sections
@@ -234,27 +237,31 @@ var DrawerFormComponent = /** @class */ (function () {
234
237
  * @return {?}
235
238
  */
236
239
  function (field) {
237
- if (_this.form[field.formKey] === undefined) {
238
- switch (field.fieldFormType) {
239
- case "Text":
240
- case "Email":
241
- case "Textarea":
240
+ switch (field.fieldFormType) {
241
+ case "Text":
242
+ case "Email":
243
+ case "Textarea":
244
+ if (_this.form[field.formKey] === undefined) {
242
245
  _this.form[field.formKey] = "";
243
- break;
244
- case "Tags":
245
- case "Checkbox":
246
- case "MultiSelect":
246
+ }
247
+ break;
248
+ case "Tags":
249
+ case "Checkbox":
250
+ case "MultiSelect":
251
+ if (!Array.isArray(_this.form[field.formKey])) {
247
252
  _this.form[field.formKey] = [];
248
- break;
249
- case "Switch":
250
- _this.form[field.formKey] = false;
251
- break;
252
- case "Datepicker":
253
- _this.syncFormToDateForm(field, _this.form[field.formKey]);
254
- break;
255
- default:
253
+ }
254
+ break;
255
+ case "Switch":
256
+ _this.form[field.formKey] = !!_this.form[field.formKey];
257
+ break;
258
+ case "Datepicker":
259
+ _this.syncFormToDateForm(field, _this.form[field.formKey]);
260
+ break;
261
+ default:
262
+ if (_this.form[field.formKey] === undefined) {
256
263
  _this.form[field.formKey] = null;
257
- }
264
+ }
258
265
  }
259
266
  }));
260
267
  }));
@@ -797,4 +804,4 @@ if (false) {
797
804
  */
798
805
  DrawerFormComponent.prototype.ref;
799
806
  }
800
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mb3JtL2RyYXdlci1mb3JtL2RyYXdlci1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0MsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFDTCxZQUFZLEVBRVosaUJBQWlCLEdBRWxCLE1BQU0sYUFBYSxDQUFDOztJQUVmLGNBQWMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQztBQUUvQztJQWlERSw2QkFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUEzQzNCLFVBQUssR0FBd0IsRUFBRSxDQUFDO1FBQzVCLGNBQVMsR0FBa0IsRUFBRSxDQUFDO1FBQzVCLGVBQVUsR0FBMEIsRUFBRSxDQUFDO1FBQ3pDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRW5CLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFLaEIsaUJBQVksR0FBRztZQUNwQyxJQUFJLEVBQUUsTUFBTTtZQUNaLEtBQUssRUFBRSxNQUFNO1lBQ2IsUUFBUSxFQUFFLFVBQVU7WUFDcEIsT0FBTyxFQUFFLElBQUk7U0FDZCxDQUFDO1FBQ3lCLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUU1QixlQUFVLEdBQUcsWUFBWSxDQUFDO1FBRXpCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUNwRCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUdqRCxDQUFDO1FBV0wsYUFBUSxHQUFrQixFQUFFLENBQUM7UUFDN0IsU0FBSSxHQUF3QixFQUFFLENBQUM7UUFDL0Isa0JBQWEsR0FBNEIsRUFBRSxDQUFDOztRQUc1QyxhQUFRLEdBQXlCLEVBQUUsQ0FBQztRQUNwQyxpQkFBWSxHQUE0QixFQUFFLENBQUM7UUFrVDNDLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO0lBalR1QixDQUFDOzs7O0lBRTlDLHNDQUFROzs7SUFBUixjQUFZLENBQUM7Ozs7O0lBRWIseUNBQVc7Ozs7SUFBWCxVQUFZLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtZQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLEVBQUU7Z0JBQy9DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUMxRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDakM7WUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxlQUFlLENBQ2xCLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUMzQixPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FDM0IsQ0FBQzthQUNIO1NBQ0Y7UUFDRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQzs7OztJQUVELDZDQUFlOzs7SUFBZjtRQUFBLGlCQWtCQztRQWpCQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTOzs7O1FBQy9CLFVBQUMsVUFBdUM7WUFDdEMsS0FBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7WUFDN0IsS0FBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsRUFDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxTQUFTOzs7O1FBQ3RDLFVBQUMsVUFBdUM7WUFDdEMsS0FBSSxDQUFDLGlCQUFpQixHQUFHLFVBQVUsQ0FBQztZQUNwQyxLQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxFQUNGLENBQUM7UUFDRixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7U0FDaEM7SUFDSCxDQUFDOzs7OztJQUVELGtEQUFvQjs7OztJQUFwQixVQUFxQixVQUF1QztRQUE1RCxpQkFpQkM7UUFoQkMsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFOztnQkFDMUMsY0FBWSxHQUFHLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPOzs7O1lBQUMsVUFBQyxPQUFPO2dCQUM1QixPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU87Ozs7Z0JBQUMsVUFBQyxLQUFLO29CQUMzQixJQUFJLEtBQUssQ0FBQyxhQUFhLEtBQUssUUFBUSxFQUFFO3dCQUNwQyxjQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUMxQjtnQkFDSCxDQUFDLEVBQUMsQ0FBQztZQUNMLENBQUMsRUFBQyxDQUFDO1lBQ0gsVUFBVSxDQUFDLE9BQU87Ozs7O1lBQUMsVUFBQyxTQUFTLEVBQUUsS0FBSztnQkFDbEMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNsQixTQUFTLENBQUMsa0JBQWtCLENBQUMsS0FBSSxDQUFDLGNBQWMsRUFBRTtvQkFDaEQsU0FBUyxFQUFFLGNBQVksQ0FBQyxLQUFLLENBQUM7aUJBQy9CLENBQUMsQ0FBQztZQUNMLENBQUMsRUFBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOzs7OztJQUVELGlEQUFtQjs7OztJQUFuQixVQUFvQixVQUF1QztRQUEzRCxpQkFhQztRQVpDLElBQUksSUFBSSxDQUFDLHFCQUFxQixJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFOztnQkFDakQsZ0JBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU07Ozs7WUFDekMsVUFBQyxPQUFPLElBQUssT0FBQSxPQUFPLENBQUMsU0FBUyxFQUFqQixDQUFpQixFQUMvQjtZQUNELFVBQVUsQ0FBQyxPQUFPOzs7OztZQUFDLFVBQUMsU0FBUyxFQUFFLEtBQUs7Z0JBQ2xDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQzs7b0JBQ1osU0FBUyxHQUFHLGdCQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUztnQkFDakQsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEtBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsRUFBRTtvQkFDbEUsU0FBUyxFQUFFLGdCQUFjLENBQUMsS0FBSyxDQUFDO2lCQUNqQyxDQUFDLENBQUM7WUFDTCxDQUFDLEVBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzs7Ozs7O0lBRUQsNkNBQWU7Ozs7O0lBQWYsVUFBZ0IsUUFBNkIsRUFBRSxPQUE0QjtRQUEzRSxpQkFTQztRQVJDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTzs7OztRQUFDLFVBQUMsRUFBbUI7Z0JBQW5CLDBCQUFtQixFQUFsQixXQUFHLEVBQUUsb0JBQVk7WUFDakQsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssWUFBWSxFQUFFOztvQkFDNUIsS0FBSyxHQUFHLEtBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO2dCQUNoQyxJQUFJLEtBQUssRUFBRTtvQkFDVCxLQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQy9CO2FBQ0Y7UUFDSCxDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUM7Ozs7OztJQUVELGdEQUFrQjs7Ozs7SUFBbEIsVUFBbUIsS0FBZ0IsRUFBRSxLQUFVO1FBQzdDLElBQUksS0FBSyxFQUFFOztnQkFDSCxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ3RFO0lBQ0gsQ0FBQzs7Ozs7SUFFRCx3Q0FBVTs7OztJQUFWLFVBQVcsUUFBdUI7UUFBbEMsaUJBK0JDO1FBOUJDLFFBQVEsQ0FBQyxPQUFPOzs7O1FBQUMsVUFBQyxPQUFvQjtZQUNwQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU87Ozs7WUFBQyxVQUFDLEtBQUs7Z0JBQzNCLElBQUksS0FBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssU0FBUyxFQUFFO29CQUMxQyxRQUFRLEtBQUssQ0FBQyxhQUFhLEVBQUU7d0JBQzNCLEtBQUssTUFBTSxDQUFDO3dCQUNaLEtBQUssT0FBTyxDQUFDO3dCQUNiLEtBQUssVUFBVTs0QkFDYixLQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7NEJBQzlCLE1BQU07d0JBRVIsS0FBSyxNQUFNLENBQUM7d0JBQ1osS0FBSyxVQUFVLENBQUM7d0JBQ2hCLEtBQUssYUFBYTs0QkFDaEIsS0FBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDOzRCQUM5QixNQUFNO3dCQUVSLEtBQUssUUFBUTs0QkFDWCxLQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUM7NEJBQ2pDLE1BQU07d0JBRVIsS0FBSyxZQUFZOzRCQUNmLEtBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsS0FBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzs0QkFDekQsTUFBTTt3QkFFUjs0QkFDRSxLQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUM7cUJBQ25DO2lCQUNGO1lBQ0gsQ0FBQyxFQUFDLENBQUM7UUFDTCxDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUM7Ozs7O0lBRUQsMENBQVk7Ozs7SUFBWixVQUFhLElBQXlCO1FBQXRDLGlCQXNCQzs7O1lBcEJPLFNBQVMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDaEMsR0FBRzs7Ozs7O1lBQUUsVUFBQyxNQUFNLEVBQUUsSUFBWSxFQUFFLEtBQVU7Z0JBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7O29CQUVmLEtBQUssR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDakMsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLGFBQWEsS0FBSyxZQUFZLEVBQUU7b0JBQ2pELEtBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7aUJBQ3ZDO2dCQUVELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQyxDQUFBO1NBQ0YsQ0FBQztRQUVGLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLGNBQWMsRUFBRTtZQUMvQyxLQUFLLEVBQUUsSUFBSTtZQUNYLFFBQVEsRUFBRSxLQUFLO1lBQ2YsVUFBVSxFQUFFLEtBQUs7WUFDakIsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELGVBQWU7Ozs7Ozs7SUFDZix3Q0FBVTs7Ozs7OztJQUFWLFVBQVcsS0FBVSxFQUFFLEtBQWdCO1FBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLE9BQUEsRUFBRSxLQUFLLE9BQUEsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQzs7Ozs7O0lBRUQsK0NBQWlCOzs7OztJQUFqQixVQUFrQixLQUFnQixFQUFFLE1BQWM7UUFBZCx1QkFBQSxFQUFBLGNBQWM7O1lBQzFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7O1lBQ2xDLE9BQU8sR0FBRyxJQUFJO1FBQ2xCLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUNsQixPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQzVCLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQ3BCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUM7UUFDRCxJQUFJLE9BQU8sSUFBSSxLQUFLLENBQUMsYUFBYSxLQUFLLE9BQU8sSUFBSSxLQUFLLEVBQUU7WUFDdkQsT0FBTyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDcEM7UUFDRCxJQUFJLE9BQU8sSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFO1lBQzlCLE9BQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUM7U0FDbkQ7UUFDRCxJQUFJLE9BQU8sSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFO1lBQzlCLE9BQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUM7U0FDbkQ7UUFDRCxJQUFJLE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ3hCLE9BQU8sR0FBRyxLQUFLLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQztTQUM5QjtRQUNELElBQUksT0FBTyxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDeEIsT0FBTyxHQUFHLEtBQUssSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxPQUFPLElBQUksT0FBTyxLQUFLLENBQUMsU0FBUyxLQUFLLFVBQVUsRUFBRTtZQUNwRCxPQUFPLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNwRDtRQUNELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxPQUFPLENBQUM7U0FDN0M7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOzs7O0lBRUQsaURBQW1COzs7SUFBbkI7UUFBQSxpQkFRQzs7WUFQSyxXQUFXLEdBQUcsSUFBSTtRQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU87Ozs7UUFBQyxVQUFDLE9BQU87WUFDNUIsT0FBQSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU87Ozs7WUFBQyxVQUFDLEtBQUs7Z0JBQzNCLFdBQVcsR0FBRyxLQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksV0FBVyxDQUFDO1lBQzdELENBQUMsRUFBQztRQUZGLENBRUUsRUFDSCxDQUFDO1FBQ0YsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELHNCQUFJLDRDQUFXOzs7O1FBQWY7WUFBQSxpQkFJQztZQUhDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLOzs7O1lBQUMsVUFBQyxPQUFPO2dCQUNqQyxPQUFBLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSzs7OztnQkFBQyxVQUFDLEtBQUssSUFBSyxPQUFBLEtBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQW5DLENBQW1DLEVBQUM7WUFBcEUsQ0FBb0UsRUFDckUsQ0FBQztRQUNKLENBQUM7OztPQUFBOzs7OztJQUVELHNDQUFROzs7O0lBQVIsVUFBUyxPQUFlOztZQUNsQixTQUFTLEdBQWMsSUFBSTtRQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7Ozs7UUFBQyxVQUFDLE9BQU87WUFDekIsU0FBUyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSTs7OztZQUFDLFVBQUMsS0FBSyxJQUFLLE9BQUEsS0FBSyxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQXpCLENBQXlCLEVBQUMsQ0FBQztZQUN0RSxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDLEVBQUMsQ0FBQztRQUNILE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7Ozs7Ozs7SUFFTywwQ0FBWTs7Ozs7O0lBQXBCLFVBQXFCLEVBQVk7UUFBRSxjQUFjO2FBQWQsVUFBYyxFQUFkLHFCQUFjLEVBQWQsSUFBYztZQUFkLDZCQUFjOztRQUMvQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNDLElBQUksT0FBTyxFQUFFLEtBQUssVUFBVSxFQUFFO1lBQzVCLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQzs7Ozs7O0lBRUQscUNBQU87Ozs7O0lBQVAsVUFBUSxLQUFhLEVBQUUsS0FBZ0I7UUFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDOzs7Ozs7SUFFRCwrQ0FBaUI7Ozs7O0lBQWpCLFVBQWtCLEtBQVUsRUFBRSxLQUFnQjtRQUM1QyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRTtZQUN2QixPQUFPO1NBQ1I7UUFDRCxJQUFJLEtBQUssQ0FBQyxhQUFhLEtBQUssWUFBWSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNsQyxPQUFPO1NBQ1I7UUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQzs7WUFDdkIsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO1FBQzNFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQzs7Ozs7O0lBRUQsc0NBQVE7Ozs7O0lBQVIsVUFBUyxLQUFVLEVBQUUsS0FBZ0I7UUFDbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNsRCxDQUFDOzs7Ozs7SUFFRCw4Q0FBZ0I7Ozs7O0lBQWhCLFVBQWlCLEtBQVUsRUFBRSxLQUFnQjtRQUE3QyxpQkFXQztRQVZDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbkIsVUFBVTs7O1FBQUM7O2dCQUNILE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDO1lBQ3pELElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDM0QsS0FBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDO2FBQzFDO2lCQUFNO2dCQUNMLE9BQU8sS0FBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDekM7UUFDSCxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUM7SUFDVCxDQUFDOzs7OztJQUVELHFDQUFPOzs7O0lBQVAsVUFBUSxLQUFnQjtRQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQzs7Ozs7SUFFRCxvQ0FBTTs7OztJQUFOLFVBQU8sS0FBZ0I7UUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7Ozs7OztJQUVELHlDQUFXOzs7OztJQUFYLFVBQVksS0FBeUIsRUFBRSxLQUFnQjs7WUFDL0MsS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFO1FBQ3pCLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtZQUNkLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDbkU7UUFDRCxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQzs7Ozs7SUFFRCx3Q0FBVTs7OztJQUFWLFVBQVcsS0FBZ0I7UUFDekIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUU7WUFDbkQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN6QztRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFO1lBQ2pELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDdkM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7Ozs7O0lBRUQseUNBQVc7Ozs7SUFBWCxVQUFZLEtBQWdCO1FBQzFCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsSUFBSSxPQUFPLEtBQUssQ0FBQyxRQUFRLEtBQUssVUFBVSxFQUFFO1lBQ3hDLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3pCO1FBQ0QsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQ3hCLENBQUM7Ozs7O0lBRUQsNkNBQWU7Ozs7SUFBZixVQUFnQixLQUFnQjtRQUM5QixJQUFJLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDOUQsNEJBQVksSUFBSSxDQUFDLFlBQVksSUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLElBQUc7U0FDbEU7UUFDRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQzs7Ozs7SUFPRCwyQ0FBYTs7OztJQUFiLFVBQWMsS0FBYTs7WUFDbkIsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFO1FBQzlDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzVCLENBQUM7Ozs7O0lBRUQsOENBQWdCOzs7O0lBQWhCLFVBQWlCLEVBQWU7UUFDOUIsSUFBSSxFQUFFLEtBQUssUUFBUSxDQUFDLElBQUksRUFBRTtZQUN4QixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsSUFBSSxFQUFFLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxZQUFZLEtBQUssRUFBRSxDQUFDLFlBQVksRUFBRTtZQUMxRCxPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2pELENBQUM7Ozs7SUFFRCxxREFBdUI7OztJQUF2QjtRQUFBLGlCQXFDQzs7WUFwQ08sWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQzs7WUFDL0QsWUFBWSxHQUFHLFlBQVksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDLFlBQVk7O1lBQ3BFLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRzs7OztRQUFDLFVBQUMsT0FBTzs7Z0JBQ3ZELEtBQUssR0FDVCxPQUFPLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUMsWUFBWTtZQUNoRSxPQUFPLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDOUIsQ0FBQyxFQUFDOztZQUVJLFFBQVE7OztRQUFHO1lBQ2YsSUFBSSxLQUFJLENBQUMsYUFBYSxFQUFFO2dCQUN0QixLQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztnQkFDM0IsT0FBTzthQUNSOztnQkFDSyxTQUFTLEdBQ2IsWUFBWSxDQUFDLFNBQVMsR0FBRyxZQUFZO2dCQUNuQyxDQUFDLENBQUMsWUFBWTtnQkFDZCxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVM7O2dCQUN4QixpQkFBaUIsR0FBRyxDQUFDO1lBQ3pCLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQzVELGlCQUFpQixJQUFJLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLGlCQUFpQixJQUFJLFNBQVMsRUFBRTtvQkFDbEMsS0FBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7b0JBQ3pCLE1BQU07aUJBQ1A7YUFDRjtZQUNELE9BQ0UsS0FBSSxDQUFDLFFBQVEsQ0FBQyxLQUFJLENBQUMsV0FBVyxDQUFDO2dCQUMvQixDQUFDLEtBQUksQ0FBQyxRQUFRLENBQUMsS0FBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssRUFDdEM7Z0JBQ0EsS0FBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3BCO1lBQ0QsS0FBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUE7UUFFRCxRQUFRLEVBQUUsQ0FBQztRQUNYLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7Z0JBMVpGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixzcFNBQTJDOztpQkFFNUM7Ozs7Z0JBL0JDLGlCQUFpQjs7O3dCQWlDaEIsS0FBSyxTQUFDLE1BQU07NEJBQ1osS0FBSyxTQUFDLFVBQVU7NkJBQ2hCLEtBQUssU0FBQyxZQUFZOytCQUNsQixLQUFLLFNBQUMsVUFBVTs2QkFFaEIsS0FBSyxTQUFDLFlBQVk7aUNBQ2xCLEtBQUssU0FBQyxnQkFBZ0I7d0NBQ3RCLEtBQUssU0FBQyx1QkFBdUI7K0JBRzdCLEtBQUssU0FBQyxjQUFjO21DQU1wQixLQUFLLFNBQUMsa0JBQWtCOytCQUN4QixLQUFLLFNBQUMsY0FBYzs2QkFDcEIsS0FBSyxTQUFDLFlBQVk7NkJBRWxCLE1BQU0sU0FBQyxZQUFZOzhCQUNuQixNQUFNLFNBQUMsYUFBYTt5QkFLcEIsU0FBUyxTQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7NkJBSTNDLFlBQVksU0FBQyx5QkFBeUIsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtvQ0FFbEUsWUFBWSxTQUFDLHdCQUF3QixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFOzZCQXlUakUsWUFBWSxTQUFDLFdBQVc7O0lBNEQzQiwwQkFBQztDQUFBLEFBM1pELElBMlpDO1NBdFpZLG1CQUFtQjs7O0lBQzlCLG9DQUErQzs7SUFDL0Msd0NBQWlEOztJQUNqRCx5Q0FBNEQ7O0lBQzVELDJDQUF3Qzs7SUFFeEMseUNBQXVDOztJQUN2Qyw2Q0FBMEQ7O0lBQzFELG9EQUN3RDs7SUFFeEQsMkNBS0U7O0lBQ0YsK0NBQWlEOztJQUNqRCwyQ0FBNEM7O0lBQzVDLHlDQUErQzs7SUFFL0MseUNBQTJFOztJQUMzRSwwQ0FHSzs7SUFFTCxxQ0FDbUM7Ozs7O0lBR25DLHlDQUNnRDs7Ozs7SUFDaEQsZ0RBQ3VEOztJQUV2RCx1Q0FBNkI7O0lBQzdCLG1DQUErQjs7SUFDL0IsNENBQTRDOztJQUc1Qyx1Q0FBb0M7O0lBQ3BDLDJDQUEyQzs7SUFnVDNDLHlDQUNrRDs7SUFDbEQsMENBQWdCOztJQUNoQiw0Q0FBc0I7Ozs7O0lBalRWLGtDQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZpbHRlcmluZ0V2ZW50QXJncyB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1kcm9wZG93bnNcIjtcclxuaW1wb3J0IHsgUXVlcnkgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWRhdGFcIjtcclxuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XHJcbmltcG9ydCB7XHJcbiAgRW1haWxQYXR0ZXJuLFxyXG4gIEZpZWxkSXRlbSxcclxuICBmaWx0ZXJTaG93U2VjdGlvbixcclxuICBTZWN0aW9uSXRlbSxcclxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuXHJcbmNvbnN0IEZPUk1fUFJPWFlfVEFHID0gU3ltYm9sLmZvcihcImZvcm0tcHJveHlcIik7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJycy1kcmF3ZXItZm9ybVwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vZHJhd2VyLWZvcm0uY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vZHJhd2VyLWZvcm0uY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcmF3ZXJGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dChcImZvcm1cIikgX2Zvcm06IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICBASW5wdXQoXCJzZWN0aW9uc1wiKSBfc2VjdGlvbnM6IFNlY3Rpb25JdGVtW10gPSBbXTtcclxuICBASW5wdXQoXCJvcHRpb25zTWFwXCIpIG9wdGlvbnNNYXA6IFJlY29yZDxzdHJpbmcsIGFueVtdPiA9IHt9O1xyXG4gIEBJbnB1dChcImRpc2FibGVkXCIpIGZvcm1EaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoXCJzaG93QW5jaG9yXCIpIHNob3dBbmNob3IgPSB0cnVlO1xyXG4gIEBJbnB1dChcImN1c3RvbVRlbXBsYXRlXCIpIGN1c3RvbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBJbnB1dChcImN1c3RvbVNlY3Rpb25UZW1wbGF0ZVwiKVxyXG4gIGN1c3RvbVNlY3Rpb25UZW1wbGF0ZTogUmVjb3JkPHN0cmluZywgVGVtcGxhdGVSZWY8YW55Pj47XHJcblxyXG4gIEBJbnB1dChcIm9wdGlvbkZpZWxkc1wiKSBvcHRpb25GaWVsZHMgPSB7XHJcbiAgICB0ZXh0OiBcInRleHRcIixcclxuICAgIHZhbHVlOiBcImNvZGVcIixcclxuICAgIGRpc2FibGVkOiBcImRpc2FibGVkXCIsXHJcbiAgICBncm91cEJ5OiBudWxsLFxyXG4gIH07XHJcbiAgQElucHV0KFwic2hvd0ZpbHRlck51bWJlclwiKSBzaG93RmlsdGVyTnVtYmVyID0gMTA7XHJcbiAgQElucHV0KFwibnVtYmVyRm9ybWF0XCIpIG51bWJlckZvcm1hdDogc3RyaW5nO1xyXG4gIEBJbnB1dChcImRhdGVGb3JtYXRcIikgZGF0ZUZvcm1hdCA9IFwieXl5eS1NTS1kZFwiO1xyXG5cclxuICBAT3V0cHV0KFwiZm9ybUNoYW5nZVwiKSBmb3JtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ8c3RyaW5nLCBhbnk+PigpO1xyXG4gIEBPdXRwdXQoXCJmaWVsZENoYW5nZVwiKSBmaWVsZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgZmllbGQ6IEZpZWxkSXRlbTtcclxuICAgIHZhbHVlOiBhbnk7XHJcbiAgfT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZChcImRyYXdlckZvcm1FbFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICByb290RWw6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICAvLyDoh6rlrprkuYkgZmllbGQg5qih5p2/5ZKM6Ieq5a6a5LmJIHNlY3Rpb24g5qih5p2/55qE5a655ZmoXHJcbiAgQFZpZXdDaGlsZHJlbihcImN1c3RvbVRlbXBsYXRlQ29udGFpbmVyXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxyXG4gIHByaXZhdGUgY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+O1xyXG4gIEBWaWV3Q2hpbGRyZW4oXCJjdXN0b21TZWN0aW9uQ29udGFpbmVyXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxyXG4gIHByaXZhdGUgc2VjdGlvbkNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPjtcclxuXHJcbiAgc2VjdGlvbnM6IFNlY3Rpb25JdGVtW10gPSBbXTtcclxuICBmb3JtOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcbiAgZmllbGRWYWxpZE1hcDogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcclxuXHJcbiAgLy8g5a2Y5YKoIGRhdGVwaWNrZXIg55qE5YC8XHJcbiAgZGF0ZUZvcm06IFJlY29yZDxzdHJpbmcsIERhdGU+ID0ge307XHJcbiAgZGF0ZVZhbGlkTWFwOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMuX2Zvcm0pIHtcclxuICAgICAgaWYgKCFjaGFuZ2VzLl9mb3JtLmN1cnJlbnRWYWx1ZVtGT1JNX1BST1hZX1RBR10pIHtcclxuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmdldEZvcm1Qcm94eShjaGFuZ2VzLl9mb3JtLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgdGhpcy5mb3JtQ2hhbmdlLmVtaXQodGhpcy5mb3JtKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIWNoYW5nZXMuX2Zvcm0uZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgICB0aGlzLmNoZWNrRm9ybUNoYW5nZShcclxuICAgICAgICAgIGNoYW5nZXMuX2Zvcm0ucHJldmlvdXNWYWx1ZSxcclxuICAgICAgICAgIGNoYW5nZXMuX2Zvcm0uY3VycmVudFZhbHVlXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXMuX3NlY3Rpb25zKSB7XHJcbiAgICAgIHRoaXMuc2VjdGlvbnMgPSBmaWx0ZXJTaG93U2VjdGlvbihjaGFuZ2VzLl9zZWN0aW9ucy5jdXJyZW50VmFsdWUpO1xyXG4gICAgICB0aGlzLmZvcm1hdEZvcm0odGhpcy5zZWN0aW9ucyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmN1c3RvbVRlbXBsYXRlUmVuZGVyKHRoaXMuY29udGFpbmVycyk7XHJcbiAgICB0aGlzLmN1c3RvbVNlY3Rpb25SZW5kZXIodGhpcy5zZWN0aW9uQ29udGFpbmVycyk7XHJcbiAgICB0aGlzLmNvbnRhaW5lcnMuY2hhbmdlcy5zdWJzY3JpYmUoXHJcbiAgICAgIChjb250YWluZXJzOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj4pID0+IHtcclxuICAgICAgICB0aGlzLmNvbnRhaW5lcnMgPSBjb250YWluZXJzO1xyXG4gICAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVSZW5kZXIoY29udGFpbmVycyk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLnNlY3Rpb25Db250YWluZXJzLmNoYW5nZXMuc3Vic2NyaWJlKFxyXG4gICAgICAoY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZWN0aW9uQ29udGFpbmVycyA9IGNvbnRhaW5lcnM7XHJcbiAgICAgICAgdGhpcy5jdXN0b21TZWN0aW9uUmVuZGVyKGNvbnRhaW5lcnMpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgaWYgKHRoaXMuc2hvd0FuY2hvcikge1xyXG4gICAgICB0aGlzLmluaXRBbmNob3JTY3JvbGxIYW5kbGVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjdXN0b21UZW1wbGF0ZVJlbmRlcihjb250YWluZXJzOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj4pIHtcclxuICAgIGlmICh0aGlzLmN1c3RvbVRlbXBsYXRlICYmIGNvbnRhaW5lcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBjdXN0b21GaWVsZHMgPSBbXTtcclxuICAgICAgdGhpcy5zZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XHJcbiAgICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICAgIGlmIChmaWVsZC5maWVsZEZvcm1UeXBlID09PSBcIkN1c3RvbVwiKSB7XHJcbiAgICAgICAgICAgIGN1c3RvbUZpZWxkcy5wdXNoKGZpZWxkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnRhaW5lcnMuZm9yRWFjaCgoY29udGFpbmVyLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGNvbnRhaW5lci5jbGVhcigpO1xyXG4gICAgICAgIGNvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5jdXN0b21UZW1wbGF0ZSwge1xyXG4gICAgICAgICAgJGltcGxpY2l0OiBjdXN0b21GaWVsZHNbaW5kZXhdLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGN1c3RvbVNlY3Rpb25SZW5kZXIoY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+KSB7XHJcbiAgICBpZiAodGhpcy5jdXN0b21TZWN0aW9uVGVtcGxhdGUgJiYgY29udGFpbmVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGN1c3RvbVNlY3Rpb25zID0gdGhpcy5zZWN0aW9ucy5maWx0ZXIoXHJcbiAgICAgICAgKHNlY3Rpb24pID0+IHNlY3Rpb24uY3VzdG9tS2V5XHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnRhaW5lcnMuZm9yRWFjaCgoY29udGFpbmVyLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGNvbnRhaW5lci5jbGVhcigpO1xyXG4gICAgICAgIGNvbnN0IGN1c3RvbUtleSA9IGN1c3RvbVNlY3Rpb25zW2luZGV4XS5jdXN0b21LZXk7XHJcbiAgICAgICAgY29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLmN1c3RvbVNlY3Rpb25UZW1wbGF0ZVtjdXN0b21LZXldLCB7XHJcbiAgICAgICAgICAkaW1wbGljaXQ6IGN1c3RvbVNlY3Rpb25zW2luZGV4XSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja0Zvcm1DaGFuZ2UocHJldmlvdXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGN1cnJlbnQ6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcclxuICAgIE9iamVjdC5lbnRyaWVzKGN1cnJlbnQpLmZvckVhY2goKFtrZXksIGN1cnJlbnRWYWx1ZV0pID0+IHtcclxuICAgICAgaWYgKHByZXZpb3VzW2tleV0gIT09IGN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5nZXRGaWVsZChrZXkpO1xyXG4gICAgICAgIGlmIChmaWVsZCkge1xyXG4gICAgICAgICAgdGhpcy5mb3JtSXRlbVZhbGlkYXRvcihmaWVsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN5bmNGb3JtVG9EYXRlRm9ybShmaWVsZDogRmllbGRJdGVtLCB2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudCh2YWx1ZSk7XHJcbiAgICAgIHRoaXMuZGF0ZUZvcm1bZmllbGQuZm9ybUtleV0gPSBkYXRlLmlzVmFsaWQoKSA/IGRhdGUudG9EYXRlKCkgOiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9ybWF0Rm9ybShzZWN0aW9uczogU2VjdGlvbkl0ZW1bXSkge1xyXG4gICAgc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbjogU2VjdGlvbkl0ZW0pID0+IHtcclxuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5mb3JtW2ZpZWxkLmZvcm1LZXldID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHN3aXRjaCAoZmllbGQuZmllbGRGb3JtVHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIFwiVGV4dFwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiRW1haWxcIjpcclxuICAgICAgICAgICAgY2FzZSBcIlRleHRhcmVhXCI6XHJcbiAgICAgICAgICAgICAgdGhpcy5mb3JtW2ZpZWxkLmZvcm1LZXldID0gXCJcIjtcclxuICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgIGNhc2UgXCJUYWdzXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJDaGVja2JveFwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiTXVsdGlTZWxlY3RcIjpcclxuICAgICAgICAgICAgICB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPSBbXTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgIGNhc2UgXCJTd2l0Y2hcIjpcclxuICAgICAgICAgICAgICB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgIGNhc2UgXCJEYXRlcGlja2VyXCI6XHJcbiAgICAgICAgICAgICAgdGhpcy5zeW5jRm9ybVRvRGF0ZUZvcm0oZmllbGQsIHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XSk7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XSA9IG51bGw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rm9ybVByb3h5KGZvcm06IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcclxuICAgIC8vIOeOsOWcqOmZpOS6hiB0YWcg5LmL5aSW5LiN5pSv5oyB5bWM5aWXIGZvcm0g5bGe5oCn77yM5Y+q5a+55rWF5bGC6L+b6KGM5aSE55CGXHJcbiAgICBjb25zdCBwcm94eUZvcm0gPSBuZXcgUHJveHkoZm9ybSwge1xyXG4gICAgICBzZXQ6ICh0YXJnZXQsIHByb3A6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgIHRhcmdldFtwcm9wXSA9IHZhbHVlO1xyXG5cclxuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuZ2V0RmllbGQocHJvcCk7XHJcbiAgICAgICAgaWYgKGZpZWxkICYmIGZpZWxkLmZpZWxkRm9ybVR5cGUgPT09IFwiRGF0ZXBpY2tlclwiKSB7XHJcbiAgICAgICAgICB0aGlzLnN5bmNGb3JtVG9EYXRlRm9ybShmaWVsZCwgdmFsdWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJveHlGb3JtLCBGT1JNX1BST1hZX1RBRywge1xyXG4gICAgICB2YWx1ZTogdHJ1ZSxcclxuICAgICAgd3JpdGFibGU6IGZhbHNlLFxyXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHByb3h5Rm9ybTtcclxuICB9XHJcblxyXG4gIC8vIOihqOWNleaPkOS6pOWJjeS8muinpuWPkei/meS4quWHveaVsFxyXG4gIHVwZGF0ZUZvcm0odmFsdWU6IGFueSwgZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgdGhpcy5mb3JtW2ZpZWxkLmZvcm1LZXldID0gdmFsdWU7XHJcbiAgICB0aGlzLmZvcm1DaGFuZ2UuZW1pdCh0aGlzLmZvcm0pO1xyXG4gICAgdGhpcy5maWVsZENoYW5nZS5lbWl0KHsgZmllbGQsIHZhbHVlIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9ybUl0ZW1WYWxpZGF0b3IoZmllbGQ6IEZpZWxkSXRlbSwgaXNBdXRvID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5mb3JtW2ZpZWxkLmZvcm1LZXldO1xyXG4gICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xyXG4gICAgaWYgKGZpZWxkLnJlcXVpcmVkKSB7XHJcbiAgICAgIGlzVmFsaWQgPSBBcnJheS5pc0FycmF5KHZhbHVlKVxyXG4gICAgICAgID8gdmFsdWUubGVuZ3RoICE9PSAwXHJcbiAgICAgICAgOiAhW251bGwsIHVuZGVmaW5lZCwgXCJcIl0uaW5jbHVkZXModmFsdWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgZmllbGQuZmllbGRGb3JtVHlwZSA9PT0gXCJFbWFpbFwiICYmIHZhbHVlKSB7XHJcbiAgICAgIGlzVmFsaWQgPSBFbWFpbFBhdHRlcm4udGVzdCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiBmaWVsZC5tYXhsZW5ndGgpIHtcclxuICAgICAgaXNWYWxpZCA9IFN0cmluZyh2YWx1ZSkubGVuZ3RoIDw9IGZpZWxkLm1heGxlbmd0aDtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIGZpZWxkLm1pbmxlbmd0aCkge1xyXG4gICAgICBpc1ZhbGlkID0gU3RyaW5nKHZhbHVlKS5sZW5ndGggPj0gZmllbGQubWlubGVuZ3RoO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgZmllbGQubWF4KSB7XHJcbiAgICAgIGlzVmFsaWQgPSB2YWx1ZSA8PSBmaWVsZC5tYXg7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiBmaWVsZC5taW4pIHtcclxuICAgICAgaXNWYWxpZCA9IHZhbHVlID49IGZpZWxkLm1pbjtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIHR5cGVvZiBmaWVsZC52YWxpZGF0b3IgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICBpc1ZhbGlkID0gZmllbGQudmFsaWRhdG9yLmNhbGwobnVsbCwgdmFsdWUsIGZpZWxkKTtcclxuICAgIH1cclxuICAgIGlmICghaXNBdXRvKSB7XHJcbiAgICAgIHRoaXMuZmllbGRWYWxpZE1hcFtmaWVsZC5mb3JtS2V5XSA9IGlzVmFsaWQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNWYWxpZDtcclxuICB9XHJcblxyXG4gIHByZUNoZWNrRm9ybUlzVmFsaWQoKSB7XHJcbiAgICBsZXQgZm9ybUlzVmFsaWQgPSB0cnVlO1xyXG4gICAgdGhpcy5zZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uKSA9PlxyXG4gICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgIGZvcm1Jc1ZhbGlkID0gdGhpcy5mb3JtSXRlbVZhbGlkYXRvcihmaWVsZCkgJiYgZm9ybUlzVmFsaWQ7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIGZvcm1Jc1ZhbGlkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZvcm1Jc1ZhbGlkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VjdGlvbnMuZXZlcnkoKHNlY3Rpb24pID0+XHJcbiAgICAgIHNlY3Rpb24uZmllbGRzLmV2ZXJ5KChmaWVsZCkgPT4gdGhpcy5mb3JtSXRlbVZhbGlkYXRvcihmaWVsZCwgdHJ1ZSkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmllbGQoZm9ybUtleTogc3RyaW5nKSB7XHJcbiAgICBsZXQgZmllbGRJdGVtOiBGaWVsZEl0ZW0gPSBudWxsO1xyXG4gICAgdGhpcy5zZWN0aW9ucy5maW5kKChzZWN0aW9uKSA9PiB7XHJcbiAgICAgIGZpZWxkSXRlbSA9IHNlY3Rpb24uZmllbGRzLmZpbmQoKGZpZWxkKSA9PiBmaWVsZC5mb3JtS2V5ID09PSBmb3JtS2V5KTtcclxuICAgICAgcmV0dXJuIGZpZWxkSXRlbTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGZpZWxkSXRlbTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2FsbEZ1bmN0aW9uKGZuOiBGdW5jdGlvbiwgLi4uYXJnczogYW55W10pIHtcclxuICAgIHRoaXMuZm9ybUl0ZW1WYWxpZGF0b3IoYXJnc1sxXSB8fCBhcmdzWzBdKTtcclxuICAgIGlmICh0eXBlb2YgZm4gPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICBmbi5hcHBseShudWxsLCBhcmdzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uSW5wdXQodmFsdWU6IHN0cmluZywgZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgdGhpcy5jYWxsRnVuY3Rpb24oZmllbGQub25JbnB1dCwgdmFsdWUsIGZpZWxkKTtcclxuICB9XHJcblxyXG4gIG9uQ29tcG9uZW50Q2hhbmdlKGV2ZW50OiBhbnksIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIGlmICghZXZlbnQuaXNJbnRlcmFjdGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChmaWVsZC5maWVsZEZvcm1UeXBlICE9PSBcIkRhdGVwaWNrZXJcIikge1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKGV2ZW50LnZhbHVlLCBmaWVsZCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKFwiY2hhbmdlXCIsIGV2ZW50KTtcclxuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudmFsdWUgPyBtb21lbnQoZXZlbnQudmFsdWUpLmZvcm1hdChcIllZWVktTU0tRERcIikgOiBudWxsO1xyXG4gICAgdGhpcy5kYXRlRm9ybVtmaWVsZC5mb3JtS2V5XSA9IGV2ZW50LnZhbHVlO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSwgZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2UodmFsdWU6IGFueSwgZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgdGhpcy51cGRhdGVGb3JtKHZhbHVlLCBmaWVsZCk7XHJcbiAgICB0aGlzLmNhbGxGdW5jdGlvbihmaWVsZC5vbkNoYW5nZSwgdmFsdWUsIGZpZWxkKTtcclxuICB9XHJcblxyXG4gIG9uRGF0ZVBpY2tlckJsdXIoZXZlbnQ6IGFueSwgZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgdGhpcy5vbkJsdXIoZmllbGQpO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCAkaW5wdXQgPSBldmVudC5tb2RlbC5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKTtcclxuICAgICAgaWYgKCRpbnB1dCAmJiAkaW5wdXQudmFsdWUgJiYgIXRoaXMuZGF0ZUZvcm1bZmllbGQuZm9ybUtleV0pIHtcclxuICAgICAgICB0aGlzLmRhdGVWYWxpZE1hcFtmaWVsZC5mb3JtS2V5XSA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLmRhdGVWYWxpZE1hcFtmaWVsZC5mb3JtS2V5XTtcclxuICAgICAgfVxyXG4gICAgfSwgNTApO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cyhmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICB0aGlzLmNhbGxGdW5jdGlvbihmaWVsZC5vbkZvY3VzLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgdGhpcy5jYWxsRnVuY3Rpb24oZmllbGQub25CbHVyLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkZpbHRlcmluZyhldmVudDogRmlsdGVyaW5nRXZlbnRBcmdzLCBmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBjb25zdCBxdWVyeSA9IG5ldyBRdWVyeSgpO1xyXG4gICAgaWYgKGV2ZW50LnRleHQpIHtcclxuICAgICAgcXVlcnkud2hlcmUodGhpcy5vcHRpb25GaWVsZHMudGV4dCwgXCJjb250YWluc1wiLCBldmVudC50ZXh0LCB0cnVlKTtcclxuICAgIH1cclxuICAgIGV2ZW50LnVwZGF0ZURhdGEodGhpcy5nZXRPcHRpb25zKGZpZWxkKSwgcXVlcnkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3B0aW9ucyhmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLm9wdGlvbnNNYXBbZmllbGQub3B0aW9uS2V5XSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMub3B0aW9uc01hcFtmaWVsZC5vcHRpb25LZXldO1xyXG4gICAgfVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5vcHRpb25zTWFwW2ZpZWxkLmZvcm1LZXldKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zTWFwW2ZpZWxkLmZvcm1LZXldO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGlzYWJsZWQoZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgaWYgKHRoaXMuZm9ybURpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBmaWVsZC5kaXNhYmxlZCA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgIHJldHVybiBmaWVsZC5kaXNhYmxlZCgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZpZWxkLmRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3B0aW9uRmllbGRzKGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIGlmIChbXCJEcm9wZG93blwiLCBcIkF1dG9Db21wbGV0ZVwiXS5pbmNsdWRlcyhmaWVsZC5maWVsZEZvcm1UeXBlKSkge1xyXG4gICAgICByZXR1cm4geyAuLi50aGlzLm9wdGlvbkZpZWxkcywgZ3JvdXBCeTogZmllbGQuZ3JvdXBLZXkgfHwgbnVsbCB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9uRmllbGRzO1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZHJlbihcInNlY3Rpb25FbFwiKVxyXG4gIHNlY3Rpb25FbHM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj47XHJcbiAgc2Nyb2xsSW5kZXggPSAwO1xyXG4gIGlzQ2xpY2tBbmNob3IgPSBmYWxzZTtcclxuXHJcbiAgb25DbGlja0FuY2hvcihpbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBzZWN0aW9uSXRlbXMgPSB0aGlzLnNlY3Rpb25FbHMudG9BcnJheSgpO1xyXG4gICAgc2VjdGlvbkl0ZW1zW2luZGV4XS5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHRydWUpO1xyXG4gICAgdGhpcy5zY3JvbGxJbmRleCA9IGluZGV4O1xyXG4gICAgdGhpcy5pc0NsaWNrQW5jaG9yID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGZpbmRTY3JvbGxWaWV3RWwoZWw6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQge1xyXG4gICAgaWYgKGVsID09PSBkb2N1bWVudC5ib2R5KSB7XHJcbiAgICAgIHJldHVybiBlbDtcclxuICAgIH1cclxuICAgIGlmIChlbC5zY3JvbGxIZWlnaHQgJiYgZWwuc2Nyb2xsSGVpZ2h0ICE9PSBlbC5vZmZzZXRIZWlnaHQpIHtcclxuICAgICAgcmV0dXJuIGVsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZmluZFNjcm9sbFZpZXdFbChlbC5wYXJlbnRFbGVtZW50KTtcclxuICB9XHJcblxyXG4gIGluaXRBbmNob3JTY3JvbGxIYW5kbGVyKCkge1xyXG4gICAgY29uc3Qgc2Nyb2xsVmlld0VsID0gdGhpcy5maW5kU2Nyb2xsVmlld0VsKHRoaXMucm9vdEVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgY29uc3Qgc2Nyb2xsSGVpZ2h0ID0gc2Nyb2xsVmlld0VsLnNjcm9sbEhlaWdodCAtIHNjcm9sbFZpZXdFbC5vZmZzZXRIZWlnaHQ7XHJcbiAgICBjb25zdCBzZWN0aW9uVmlld1JhdGlvID0gdGhpcy5zZWN0aW9uRWxzLnRvQXJyYXkoKS5tYXAoKHNlY3Rpb24pID0+IHtcclxuICAgICAgY29uc3QgcmF0aW8gPVxyXG4gICAgICAgIHNlY3Rpb24ubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgLyBzY3JvbGxWaWV3RWwuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgICByZXR1cm4gc2Nyb2xsSGVpZ2h0ICogcmF0aW87XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBvblNjcm9sbCA9ICgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuaXNDbGlja0FuY2hvcikge1xyXG4gICAgICAgIHRoaXMuaXNDbGlja0FuY2hvciA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBzY3JvbGxUb3AgPVxyXG4gICAgICAgIHNjcm9sbFZpZXdFbC5zY3JvbGxUb3AgPiBzY3JvbGxIZWlnaHRcclxuICAgICAgICAgID8gc2Nyb2xsSGVpZ2h0XHJcbiAgICAgICAgICA6IHNjcm9sbFZpZXdFbC5zY3JvbGxUb3A7XHJcbiAgICAgIGxldCByYWRpb1Njcm9sbEhlaWdodCA9IDA7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBzZWN0aW9uVmlld1JhdGlvLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIHJhZGlvU2Nyb2xsSGVpZ2h0ICs9IHNlY3Rpb25WaWV3UmF0aW9baW5kZXhdO1xyXG4gICAgICAgIGlmIChyYWRpb1Njcm9sbEhlaWdodCA+PSBzY3JvbGxUb3ApIHtcclxuICAgICAgICAgIHRoaXMuc2Nyb2xsSW5kZXggPSBpbmRleDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB3aGlsZSAoXHJcbiAgICAgICAgdGhpcy5zZWN0aW9uc1t0aGlzLnNjcm9sbEluZGV4XSAmJlxyXG4gICAgICAgICF0aGlzLnNlY3Rpb25zW3RoaXMuc2Nyb2xsSW5kZXhdLnRpdGxlXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2Nyb2xsSW5kZXgrKztcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH07XHJcblxyXG4gICAgb25TY3JvbGwoKTtcclxuICAgIHNjcm9sbFZpZXdFbC5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIG9uU2Nyb2xsKTtcclxuICB9XHJcbn1cclxuIl19
807
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mb3JtL2RyYXdlci1mb3JtL2RyYXdlci1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0MsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFDTCxZQUFZLEVBRVosaUJBQWlCLEdBRWxCLE1BQU0sYUFBYSxDQUFDOztJQUVmLGNBQWMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQztBQUUvQztJQWlERSw2QkFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUEzQzNCLFVBQUssR0FBd0IsRUFBRSxDQUFDO1FBQzVCLGNBQVMsR0FBa0IsRUFBRSxDQUFDO1FBQzVCLGVBQVUsR0FBMEIsRUFBRSxDQUFDO1FBQ3pDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRW5CLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFLaEIsaUJBQVksR0FBRztZQUNwQyxJQUFJLEVBQUUsTUFBTTtZQUNaLEtBQUssRUFBRSxNQUFNO1lBQ2IsUUFBUSxFQUFFLFVBQVU7WUFDcEIsT0FBTyxFQUFFLElBQUk7U0FDZCxDQUFDO1FBQ3lCLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUU1QixlQUFVLEdBQUcsWUFBWSxDQUFDO1FBRXpCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUNwRCxnQkFBVyxHQUFHLElB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QUssU0FBQyxnQkFBZ0I7d0NBQ3RCLEtBQUssU0FBQyx1QkFBdUI7K0JBRzdCLEtBQUssU0FBQyxjQUFjO21DQU1wQixLQUFLLFNBQUMsa0JBQWtCOytCQUN4QixLQUFLLFNBQUMsY0FBYzs2QkFDcEIsS0FBSyxTQUFDLFlBQVk7NkJBRWxCLE1BQU0sU0FBQyxZQUFZOzhCQUNuQixNQUFNLFNBQUMsYUFBYTt5QkFLcEIsU0FBUyxTQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7NkJBSTNDLFlBQVksU0FBQyx5QkFBeUIsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtvQ0FFbEUsWUFBWSxTQUFDLHdCQUF3QixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFOzZCQStUakUsWUFBWSxTQUFDLFdBQVc7O0lBNEQzQiwwQkFBQztDQUFBLEFBamFELElBaWFDO1NBNVpZLG1CQUFtQjs7O0lBQzlCLG9DQUErQzs7SUFDL0Msd0NBQWlEOztJQUNqRCx5Q0FBNEQ7O0lBQzVELDJDQUF3Qzs7SUFFeEMseUNBQXVDOztJQUN2Qyw2Q0FBMEQ7O0lBQzFELG9EQUN3RDs7SUFFeEQsMkNBS0U7O0lBQ0YsK0NBQWlEOztJQUNqRCwyQ0FBNEM7O0lBQzVDLHlDQUErQzs7SUFFL0MseUNBQTJFOztJQUMzRSwwQ0FHSzs7SUFFTCxxQ0FDbUM7Ozs7O0lBR25DLHlDQUNnRDs7Ozs7SUFDaEQsZ0RBQ3VEOztJQUV2RCx1Q0FBNkI7O0lBQzdCLG1DQUErQjs7SUFDL0IsNENBQTRDOztJQUc1Qyx1Q0FBb0M7O0lBQ3BDLDJDQUEyQzs7SUFzVDNDLHlDQUNrRDs7SUFDbEQsMENBQWdCOztJQUNoQiw0Q0FBc0I7Ozs7O0lBdlRWLGtDQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZpbHRlcmluZ0V2ZW50QXJncyB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1kcm9wZG93bnNcIjtcclxuaW1wb3J0IHsgUXVlcnkgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWRhdGFcIjtcclxuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XHJcbmltcG9ydCB7XHJcbiAgRW1haWxQYXR0ZXJuLFxyXG4gIEZpZWxkSXRlbSxcclxuICBmaWx0ZXJTaG93U2VjdGlvbixcclxuICBTZWN0aW9uSXRlbSxcclxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuXHJcbmNvbnN0IEZPUk1fUFJPWFlfVEFHID0gU3ltYm9sLmZvcihcImZvcm0tcHJveHlcIik7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJycy1kcmF3ZXItZm9ybVwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vZHJhd2VyLWZvcm0uY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vZHJhd2VyLWZvcm0uY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcmF3ZXJGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dChcImZvcm1cIikgX2Zvcm06IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICBASW5wdXQoXCJzZWN0aW9uc1wiKSBfc2VjdGlvbnM6IFNlY3Rpb25JdGVtW10gPSBbXTtcclxuICBASW5wdXQoXCJvcHRpb25zTWFwXCIpIG9wdGlvbnNNYXA6IFJlY29yZDxzdHJpbmcsIGFueVtdPiA9IHt9O1xyXG4gIEBJbnB1dChcImRpc2FibGVkXCIpIGZvcm1EaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoXCJzaG93QW5jaG9yXCIpIHNob3dBbmNob3IgPSB0cnVlO1xyXG4gIEBJbnB1dChcImN1c3RvbVRlbXBsYXRlXCIpIGN1c3RvbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBJbnB1dChcImN1c3RvbVNlY3Rpb25UZW1wbGF0ZVwiKVxyXG4gIGN1c3RvbVNlY3Rpb25UZW1wbGF0ZTogUmVjb3JkPHN0cmluZywgVGVtcGxhdGVSZWY8YW55Pj47XHJcblxyXG4gIEBJbnB1dChcIm9wdGlvbkZpZWxkc1wiKSBvcHRpb25GaWVsZHMgPSB7XHJcbiAgICB0ZXh0OiBcInRleHRcIixcclxuICAgIHZhbHVlOiBcImNvZGVcIixcclxuICAgIGRpc2FibGVkOiBcImRpc2FibGVkXCIsXHJcbiAgICBncm91cEJ5OiBudWxsLFxyXG4gIH07XHJcbiAgQElucHV0KFwic2hvd0ZpbHRlck51bWJlclwiKSBzaG93RmlsdGVyTnVtYmVyID0gMTA7XHJcbiAgQElucHV0KFwibnVtYmVyRm9ybWF0XCIpIG51bWJlckZvcm1hdDogc3RyaW5nO1xyXG4gIEBJbnB1dChcImRhdGVGb3JtYXRcIikgZGF0ZUZvcm1hdCA9IFwieXl5eS1NTS1kZFwiO1xyXG5cclxuICBAT3V0cHV0KFwiZm9ybUNoYW5nZVwiKSBmb3JtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ8c3RyaW5nLCBhbnk+PigpO1xyXG4gIEBPdXRwdXQoXCJmaWVsZENoYW5nZVwiKSBmaWVsZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgZmllbGQ6IEZpZWxkSXRlbTtcclxuICAgIHZhbHVlOiBhbnk7XHJcbiAgfT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZChcImRyYXdlckZvcm1FbFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICByb290RWw6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICAvLyDoh6rlrprkuYkgZmllbGQg5qih5p2/5ZKM6Ieq5a6a5LmJIHNlY3Rpb24g5qih5p2/55qE5a655ZmoXHJcbiAgQFZpZXdDaGlsZHJlbihcImN1c3RvbVRlbXBsYXRlQ29udGFpbmVyXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxyXG4gIHByaXZhdGUgY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+O1xyXG4gIEBWaWV3Q2hpbGRyZW4oXCJjdXN0b21TZWN0aW9uQ29udGFpbmVyXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxyXG4gIHByaXZhdGUgc2VjdGlvbkNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPjtcclxuXHJcbiAgc2VjdGlvbnM6IFNlY3Rpb25JdGVtW10gPSBbXTtcclxuICBmb3JtOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcbiAgZmllbGRWYWxpZE1hcDogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcclxuXHJcbiAgLy8g5a2Y5YKoIGRhdGVwaWNrZXIg55qE5YC8XHJcbiAgZGF0ZUZvcm06IFJlY29yZDxzdHJpbmcsIERhdGU+ID0ge307XHJcbiAgZGF0ZVZhbGlkTWFwOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMuX2Zvcm0pIHtcclxuICAgICAgaWYgKCFjaGFuZ2VzLl9mb3JtLmN1cnJlbnRWYWx1ZVtGT1JNX1BST1hZX1RBR10pIHtcclxuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmdldEZvcm1Qcm94eShjaGFuZ2VzLl9mb3JtLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgdGhpcy5mb3JtQ2hhbmdlLmVtaXQodGhpcy5mb3JtKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIWNoYW5nZXMuX2Zvcm0uZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgICB0aGlzLmNoZWNrRm9ybUNoYW5nZShcclxuICAgICAgICAgIGNoYW5nZXMuX2Zvcm0ucHJldmlvdXNWYWx1ZSxcclxuICAgICAgICAgIGNoYW5nZXMuX2Zvcm0uY3VycmVudFZhbHVlXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXMuX3NlY3Rpb25zKSB7XHJcbiAgICAgIHRoaXMuc2VjdGlvbnMgPSBmaWx0ZXJTaG93U2VjdGlvbihjaGFuZ2VzLl9zZWN0aW9ucy5jdXJyZW50VmFsdWUpO1xyXG4gICAgICB0aGlzLmZvcm1hdEZvcm0odGhpcy5zZWN0aW9ucyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmN1c3RvbVRlbXBsYXRlUmVuZGVyKHRoaXMuY29udGFpbmVycyk7XHJcbiAgICB0aGlzLmN1c3RvbVNlY3Rpb25SZW5kZXIodGhpcy5zZWN0aW9uQ29udGFpbmVycyk7XHJcbiAgICB0aGlzLmNvbnRhaW5lcnMuY2hhbmdlcy5zdWJzY3JpYmUoXHJcbiAgICAgIChjb250YWluZXJzOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj4pID0+IHtcclxuICAgICAgICB0aGlzLmNvbnRhaW5lcnMgPSBjb250YWluZXJzO1xyXG4gICAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVSZW5kZXIoY29udGFpbmVycyk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLnNlY3Rpb25Db250YWluZXJzLmNoYW5nZXMuc3Vic2NyaWJlKFxyXG4gICAgICAoY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZWN0aW9uQ29udGFpbmVycyA9IGNvbnRhaW5lcnM7XHJcbiAgICAgICAgdGhpcy5jdXN0b21TZWN0aW9uUmVuZGVyKGNvbnRhaW5lcnMpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgaWYgKHRoaXMuc2hvd0FuY2hvcikge1xyXG4gICAgICB0aGlzLmluaXRBbmNob3JTY3JvbGxIYW5kbGVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjdXN0b21UZW1wbGF0ZVJlbmRlcihjb250YWluZXJzOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj4pIHtcclxuICAgIGlmICh0aGlzLmN1c3RvbVRlbXBsYXRlICYmIGNvbnRhaW5lcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBjdXN0b21GaWVsZHMgPSBbXTtcclxuICAgICAgdGhpcy5zZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XHJcbiAgICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICAgIGlmIChmaWVsZC5maWVsZEZvcm1UeXBlID09PSBcIkN1c3RvbVwiKSB7XHJcbiAgICAgICAgICAgIGN1c3RvbUZpZWxkcy5wdXNoKGZpZWxkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnRhaW5lcnMuZm9yRWFjaCgoY29udGFpbmVyLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGNvbnRhaW5lci5jbGVhcigpO1xyXG4gICAgICAgIGNvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5jdXN0b21UZW1wbGF0ZSwge1xyXG4gICAgICAgICAgJGltcGxpY2l0OiBjdXN0b21GaWVsZHNbaW5kZXhdLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGN1c3RvbVNlY3Rpb25SZW5kZXIoY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+KSB7XHJcbiAgICBpZiAodGhpcy5jdXN0b21TZWN0aW9uVGVtcGxhdGUgJiYgY29udGFpbmVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGN1c3RvbVNlY3Rpb25zID0gdGhpcy5zZWN0aW9ucy5maWx0ZXIoXHJcbiAgICAgICAgKHNlY3Rpb24pID0+IHNlY3Rpb24uY3VzdG9tS2V5XHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnRhaW5lcnMuZm9yRWFjaCgoY29udGFpbmVyLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGNvbnRhaW5lci5jbGVhcigpO1xyXG4gICAgICAgIGNvbnN0IGN1c3RvbUtleSA9IGN1c3RvbVNlY3Rpb25zW2luZGV4XS5jdXN0b21LZXk7XHJcbiAgICAgICAgY29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLmN1c3RvbVNlY3Rpb25UZW1wbGF0ZVtjdXN0b21LZXldLCB7XHJcbiAgICAgICAgICAkaW1wbGljaXQ6IGN1c3RvbVNlY3Rpb25zW2luZGV4XSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja0Zvcm1DaGFuZ2UocHJldmlvdXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGN1cnJlbnQ6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcclxuICAgIE9iamVjdC5lbnRyaWVzKGN1cnJlbnQpLmZvckVhY2goKFtrZXksIGN1cnJlbnRWYWx1ZV0pID0+IHtcclxuICAgICAgaWYgKHByZXZpb3VzW2tleV0gIT09IGN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5nZXRGaWVsZChrZXkpO1xyXG4gICAgICAgIGlmIChmaWVsZCkge1xyXG4gICAgICAgICAgdGhpcy5mb3JtSXRlbVZhbGlkYXRvcihmaWVsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN5bmNGb3JtVG9EYXRlRm9ybShmaWVsZDogRmllbGRJdGVtLCB2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudCh2YWx1ZSk7XHJcbiAgICAgIHRoaXMuZGF0ZUZvcm1bZmllbGQuZm9ybUtleV0gPSBkYXRlLmlzVmFsaWQoKSA/IGRhdGUudG9EYXRlKCkgOiBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kYXRlRm9ybVtmaWVsZC5mb3JtS2V5XSA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb3JtYXRGb3JtKHNlY3Rpb25zOiBTZWN0aW9uSXRlbVtdKSB7XHJcbiAgICBzZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uOiBTZWN0aW9uSXRlbSkgPT4ge1xyXG4gICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAoZmllbGQuZmllbGRGb3JtVHlwZSkge1xyXG4gICAgICAgICAgY2FzZSBcIlRleHRcIjpcclxuICAgICAgICAgIGNhc2UgXCJFbWFpbFwiOlxyXG4gICAgICAgICAgY2FzZSBcIlRleHRhcmVhXCI6XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XSA9IFwiXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBcIlRhZ3NcIjpcclxuICAgICAgICAgIGNhc2UgXCJDaGVja2JveFwiOlxyXG4gICAgICAgICAgY2FzZSBcIk11bHRpU2VsZWN0XCI6XHJcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0pKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5mb3JtW2ZpZWxkLmZvcm1LZXldID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBcIlN3aXRjaFwiOlxyXG4gICAgICAgICAgICB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPSAhIXRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBcIkRhdGVwaWNrZXJcIjpcclxuICAgICAgICAgICAgdGhpcy5zeW5jRm9ybVRvRGF0ZUZvcm0oZmllbGQsIHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRGb3JtUHJveHkoZm9ybTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG4gICAgLy8g546w5Zyo6Zmk5LqGIHRhZyDkuYvlpJbkuI3mlK/mjIHltYzlpZcgZm9ybSDlsZ7mgKfvvIzlj6rlr7nmtYXlsYLov5vooYzlpITnkIZcclxuICAgIGNvbnN0IHByb3h5Rm9ybSA9IG5ldyBQcm94eShmb3JtLCB7XHJcbiAgICAgIHNldDogKHRhcmdldCwgcHJvcDogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgdGFyZ2V0W3Byb3BdID0gdmFsdWU7XHJcblxyXG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5nZXRGaWVsZChwcm9wKTtcclxuICAgICAgICBpZiAoZmllbGQgJiYgZmllbGQuZmllbGRGb3JtVHlwZSA9PT0gXCJEYXRlcGlja2VyXCIpIHtcclxuICAgICAgICAgIHRoaXMuc3luY0Zvcm1Ub0RhdGVGb3JtKGZpZWxkLCB2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG5cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm94eUZvcm0sIEZPUk1fUFJPWFlfVEFHLCB7XHJcbiAgICAgIHZhbHVlOiB0cnVlLFxyXG4gICAgICB3cml0YWJsZTogZmFsc2UsXHJcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcHJveHlGb3JtO1xyXG4gIH1cclxuXHJcbiAgLy8g6KGo5Y2V5o+Q5Lqk5YmN5Lya6Kem5Y+R6L+Z5Liq5Ye95pWwXHJcbiAgdXBkYXRlRm9ybSh2YWx1ZTogYW55LCBmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPSB2YWx1ZTtcclxuICAgIHRoaXMuZm9ybUNoYW5nZS5lbWl0KHRoaXMuZm9ybSk7XHJcbiAgICB0aGlzLmZpZWxkQ2hhbmdlLmVtaXQoeyBmaWVsZCwgdmFsdWUgfSk7XHJcbiAgfVxyXG5cclxuICBmb3JtSXRlbVZhbGlkYXRvcihmaWVsZDogRmllbGRJdGVtLCBpc0F1dG8gPSBmYWxzZSkge1xyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV07XHJcbiAgICBsZXQgaXNWYWxpZCA9IHRydWU7XHJcbiAgICBpZiAoZmllbGQucmVxdWlyZWQpIHtcclxuICAgICAgaXNWYWxpZCA9IEFycmF5LmlzQXJyYXkodmFsdWUpXHJcbiAgICAgICAgPyB2YWx1ZS5sZW5ndGggIT09IDBcclxuICAgICAgICA6ICFbbnVsbCwgdW5kZWZpbmVkLCBcIlwiXS5pbmNsdWRlcyh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiBmaWVsZC5maWVsZEZvcm1UeXBlID09PSBcIkVtYWlsXCIgJiYgdmFsdWUpIHtcclxuICAgICAgaXNWYWxpZCA9IEVtYWlsUGF0dGVybi50ZXN0KHZhbHVlKTtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIGZpZWxkLm1heGxlbmd0aCkge1xyXG4gICAgICBpc1ZhbGlkID0gU3RyaW5nKHZhbHVlKS5sZW5ndGggPD0gZmllbGQubWF4bGVuZ3RoO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgZmllbGQubWlubGVuZ3RoKSB7XHJcbiAgICAgIGlzVmFsaWQgPSBTdHJpbmcodmFsdWUpLmxlbmd0aCA+PSBmaWVsZC5taW5sZW5ndGg7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiBmaWVsZC5tYXgpIHtcclxuICAgICAgaXNWYWxpZCA9IHZhbHVlIDw9IGZpZWxkLm1heDtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIGZpZWxkLm1pbikge1xyXG4gICAgICBpc1ZhbGlkID0gdmFsdWUgPj0gZmllbGQubWluO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgdHlwZW9mIGZpZWxkLnZhbGlkYXRvciA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgIGlzVmFsaWQgPSBmaWVsZC52YWxpZGF0b3IuY2FsbChudWxsLCB2YWx1ZSwgZmllbGQpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpc0F1dG8pIHtcclxuICAgICAgdGhpcy5maWVsZFZhbGlkTWFwW2ZpZWxkLmZvcm1LZXldID0gaXNWYWxpZDtcclxuICAgIH1cclxuICAgIHJldHVybiBpc1ZhbGlkO1xyXG4gIH1cclxuXHJcbiAgcHJlQ2hlY2tGb3JtSXNWYWxpZCgpIHtcclxuICAgIGxldCBmb3JtSXNWYWxpZCA9IHRydWU7XHJcbiAgICB0aGlzLnNlY3Rpb25zLmZvckVhY2goKHNlY3Rpb24pID0+XHJcbiAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgZm9ybUlzVmFsaWQgPSB0aGlzLmZvcm1JdGVtVmFsaWRhdG9yKGZpZWxkKSAmJiBmb3JtSXNWYWxpZDtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICByZXR1cm4gZm9ybUlzVmFsaWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgZm9ybUlzVmFsaWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWN0aW9ucy5ldmVyeSgoc2VjdGlvbikgPT5cclxuICAgICAgc2VjdGlvbi5maWVsZHMuZXZlcnkoKGZpZWxkKSA9PiB0aGlzLmZvcm1JdGVtVmFsaWRhdG9yKGZpZWxkLCB0cnVlKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaWVsZChmb3JtS2V5OiBzdHJpbmcpIHtcclxuICAgIGxldCBmaWVsZEl0ZW06IEZpZWxkSXRlbSA9IG51bGw7XHJcbiAgICB0aGlzLnNlY3Rpb25zLmZpbmQoKHNlY3Rpb24pID0+IHtcclxuICAgICAgZmllbGRJdGVtID0gc2VjdGlvbi5maWVsZHMuZmluZCgoZmllbGQpID0+IGZpZWxkLmZvcm1LZXkgPT09IGZvcm1LZXkpO1xyXG4gICAgICByZXR1cm4gZmllbGRJdGVtO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZmllbGRJdGVtO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYWxsRnVuY3Rpb24oZm46IEZ1bmN0aW9uLCAuLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgdGhpcy5mb3JtSXRlbVZhbGlkYXRvcihhcmdzWzFdIHx8IGFyZ3NbMF0pO1xyXG4gICAgaWYgKHR5cGVvZiBmbiA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgIGZuLmFwcGx5KG51bGwsIGFyZ3MpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25JbnB1dCh2YWx1ZTogc3RyaW5nLCBmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICB0aGlzLmNhbGxGdW5jdGlvbihmaWVsZC5vbklucHV0LCB2YWx1ZSwgZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgb25Db21wb25lbnRDaGFuZ2UoZXZlbnQ6IGFueSwgZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgaWYgKCFldmVudC5pc0ludGVyYWN0ZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGZpZWxkLmZpZWxkRm9ybVR5cGUgIT09IFwiRGF0ZXBpY2tlclwiKSB7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UoZXZlbnQudmFsdWUsIGZpZWxkKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2coXCJjaGFuZ2VcIiwgZXZlbnQpO1xyXG4gICAgY29uc3QgdmFsdWUgPSBldmVudC52YWx1ZSA/IG1vbWVudChldmVudC52YWx1ZSkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKSA6IG51bGw7XHJcbiAgICB0aGlzLmRhdGVGb3JtW2ZpZWxkLmZvcm1LZXldID0gZXZlbnQudmFsdWU7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZSh2YWx1ZTogYW55LCBmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICB0aGlzLnVwZGF0ZUZvcm0odmFsdWUsIGZpZWxkKTtcclxuICAgIHRoaXMuY2FsbEZ1bmN0aW9uKGZpZWxkLm9uQ2hhbmdlLCB2YWx1ZSwgZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgb25EYXRlUGlja2VyQmx1cihldmVudDogYW55LCBmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICB0aGlzLm9uQmx1cihmaWVsZCk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0ICRpbnB1dCA9IGV2ZW50Lm1vZGVsLmVsZW1lbnQucXVlcnlTZWxlY3RvcihcImlucHV0XCIpO1xyXG4gICAgICBpZiAoJGlucHV0ICYmICRpbnB1dC52YWx1ZSAmJiAhdGhpcy5kYXRlRm9ybVtmaWVsZC5mb3JtS2V5XSkge1xyXG4gICAgICAgIHRoaXMuZGF0ZVZhbGlkTWFwW2ZpZWxkLmZvcm1LZXldID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZGVsZXRlIHRoaXMuZGF0ZVZhbGlkTWFwW2ZpZWxkLmZvcm1LZXldO1xyXG4gICAgICB9XHJcbiAgICB9LCA1MCk7XHJcbiAgfVxyXG5cclxuICBvbkZvY3VzKGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMuY2FsbEZ1bmN0aW9uKGZpZWxkLm9uRm9jdXMsIGZpZWxkKTtcclxuICB9XHJcblxyXG4gIG9uQmx1cihmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICB0aGlzLmNhbGxGdW5jdGlvbihmaWVsZC5vbkJsdXIsIGZpZWxkKTtcclxuICB9XHJcblxyXG4gIG9uRmlsdGVyaW5nKGV2ZW50OiBGaWx0ZXJpbmdFdmVudEFyZ3MsIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIGNvbnN0IHF1ZXJ5ID0gbmV3IFF1ZXJ5KCk7XHJcbiAgICBpZiAoZXZlbnQudGV4dCkge1xyXG4gICAgICBxdWVyeS53aGVyZSh0aGlzLm9wdGlvbkZpZWxkcy50ZXh0LCBcImNvbnRhaW5zXCIsIGV2ZW50LnRleHQsIHRydWUpO1xyXG4gICAgfVxyXG4gICAgZXZlbnQudXBkYXRlRGF0YSh0aGlzLmdldE9wdGlvbnMoZmllbGQpLCBxdWVyeSk7XHJcbiAgfVxyXG5cclxuICBnZXRPcHRpb25zKGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMub3B0aW9uc01hcFtmaWVsZC5vcHRpb25LZXldKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zTWFwW2ZpZWxkLm9wdGlvbktleV07XHJcbiAgICB9XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLm9wdGlvbnNNYXBbZmllbGQuZm9ybUtleV0pKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNNYXBbZmllbGQuZm9ybUtleV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG5cclxuICBnZXREaXNhYmxlZChmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtRGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIGZpZWxkLmRpc2FibGVkID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgcmV0dXJuIGZpZWxkLmRpc2FibGVkKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmllbGQuZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBnZXRPcHRpb25GaWVsZHMoZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgaWYgKFtcIkRyb3Bkb3duXCIsIFwiQXV0b0NvbXBsZXRlXCJdLmluY2x1ZGVzKGZpZWxkLmZpZWxkRm9ybVR5cGUpKSB7XHJcbiAgICAgIHJldHVybiB7IC4uLnRoaXMub3B0aW9uRmllbGRzLCBncm91cEJ5OiBmaWVsZC5ncm91cEtleSB8fCBudWxsIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25GaWVsZHM7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkcmVuKFwic2VjdGlvbkVsXCIpXHJcbiAgc2VjdGlvbkVsczogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PjtcclxuICBzY3JvbGxJbmRleCA9IDA7XHJcbiAgaXNDbGlja0FuY2hvciA9IGZhbHNlO1xyXG5cclxuICBvbkNsaWNrQW5jaG9yKGluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHNlY3Rpb25JdGVtcyA9IHRoaXMuc2VjdGlvbkVscy50b0FycmF5KCk7XHJcbiAgICBzZWN0aW9uSXRlbXNbaW5kZXhdLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcodHJ1ZSk7XHJcbiAgICB0aGlzLnNjcm9sbEluZGV4ID0gaW5kZXg7XHJcbiAgICB0aGlzLmlzQ2xpY2tBbmNob3IgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZmluZFNjcm9sbFZpZXdFbChlbDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XHJcbiAgICBpZiAoZWwgPT09IGRvY3VtZW50LmJvZHkpIHtcclxuICAgICAgcmV0dXJuIGVsO1xyXG4gICAgfVxyXG4gICAgaWYgKGVsLnNjcm9sbEhlaWdodCAmJiBlbC5zY3JvbGxIZWlnaHQgIT09IGVsLm9mZnNldEhlaWdodCkge1xyXG4gICAgICByZXR1cm4gZWw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5maW5kU2Nyb2xsVmlld0VsKGVsLnBhcmVudEVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgaW5pdEFuY2hvclNjcm9sbEhhbmRsZXIoKSB7XHJcbiAgICBjb25zdCBzY3JvbGxWaWV3RWwgPSB0aGlzLmZpbmRTY3JvbGxWaWV3RWwodGhpcy5yb290RWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICBjb25zdCBzY3JvbGxIZWlnaHQgPSBzY3JvbGxWaWV3RWwuc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVmlld0VsLm9mZnNldEhlaWdodDtcclxuICAgIGNvbnN0IHNlY3Rpb25WaWV3UmF0aW8gPSB0aGlzLnNlY3Rpb25FbHMudG9BcnJheSgpLm1hcCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBjb25zdCByYXRpbyA9XHJcbiAgICAgICAgc2VjdGlvbi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAvIHNjcm9sbFZpZXdFbC5zY3JvbGxIZWlnaHQ7XHJcbiAgICAgIHJldHVybiBzY3JvbGxIZWlnaHQgKiByYXRpbztcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IG9uU2Nyb2xsID0gKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5pc0NsaWNrQW5jaG9yKSB7XHJcbiAgICAgICAgdGhpcy5pc0NsaWNrQW5jaG9yID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9XHJcbiAgICAgICAgc2Nyb2xsVmlld0VsLnNjcm9sbFRvcCA+IHNjcm9sbEhlaWdodFxyXG4gICAgICAgICAgPyBzY3JvbGxIZWlnaHRcclxuICAgICAgICAgIDogc2Nyb2xsVmlld0VsLnNjcm9sbFRvcDtcclxuICAgICAgbGV0IHJhZGlvU2Nyb2xsSGVpZ2h0ID0gMDtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHNlY3Rpb25WaWV3UmF0aW8ubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgcmFkaW9TY3JvbGxIZWlnaHQgKz0gc2VjdGlvblZpZXdSYXRpb1tpbmRleF07XHJcbiAgICAgICAgaWYgKHJhZGlvU2Nyb2xsSGVpZ2h0ID49IHNjcm9sbFRvcCkge1xyXG4gICAgICAgICAgdGhpcy5zY3JvbGxJbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHdoaWxlIChcclxuICAgICAgICB0aGlzLnNlY3Rpb25zW3RoaXMuc2Nyb2xsSW5kZXhdICYmXHJcbiAgICAgICAgIXRoaXMuc2VjdGlvbnNbdGhpcy5zY3JvbGxJbmRleF0udGl0bGVcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxJbmRleCsrO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfTtcclxuXHJcbiAgICBvblNjcm9sbCgpO1xyXG4gICAgc2Nyb2xsVmlld0VsLmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgb25TY3JvbGwpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -21634,6 +21634,9 @@ class DrawerFormComponent {
21634
21634
  const date = moment(value);
21635
21635
  this.dateForm[field.formKey] = date.isValid() ? date.toDate() : null;
21636
21636
  }
21637
+ else {
21638
+ this.dateForm[field.formKey] = null;
21639
+ }
21637
21640
  }
21638
21641
  /**
21639
21642
  * @param {?} sections
@@ -21650,27 +21653,31 @@ class DrawerFormComponent {
21650
21653
  * @return {?}
21651
21654
  */
21652
21655
  (field) => {
21653
- if (this.form[field.formKey] === undefined) {
21654
- switch (field.fieldFormType) {
21655
- case "Text":
21656
- case "Email":
21657
- case "Textarea":
21656
+ switch (field.fieldFormType) {
21657
+ case "Text":
21658
+ case "Email":
21659
+ case "Textarea":
21660
+ if (this.form[field.formKey] === undefined) {
21658
21661
  this.form[field.formKey] = "";
21659
- break;
21660
- case "Tags":
21661
- case "Checkbox":
21662
- case "MultiSelect":
21662
+ }
21663
+ break;
21664
+ case "Tags":
21665
+ case "Checkbox":
21666
+ case "MultiSelect":
21667
+ if (!Array.isArray(this.form[field.formKey])) {
21663
21668
  this.form[field.formKey] = [];
21664
- break;
21665
- case "Switch":
21666
- this.form[field.formKey] = false;
21667
- break;
21668
- case "Datepicker":
21669
- this.syncFormToDateForm(field, this.form[field.formKey]);
21670
- break;
21671
- default:
21669
+ }
21670
+ break;
21671
+ case "Switch":
21672
+ this.form[field.formKey] = !!this.form[field.formKey];
21673
+ break;
21674
+ case "Datepicker":
21675
+ this.syncFormToDateForm(field, this.form[field.formKey]);
21676
+ break;
21677
+ default:
21678
+ if (this.form[field.formKey] === undefined) {
21672
21679
  this.form[field.formKey] = null;
21673
- }
21680
+ }
21674
21681
  }
21675
21682
  }));
21676
21683
  }));